[package] # Crate metadata name = "zebrad" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" version = "1.0.0-rc.9" repository = "https://github.com/ZcashFoundation/zebra" # Settings that impact compilation edition = "2021" # Zebra is only supported on the latest stable Rust version. Some earlier versions might work. # Zebra's code uses features introduced in Rust 1.68, or any later stable release. rust-version = "1.68" # Settings that impact runtime behaviour # make `cargo run` use `zebrad` by default # when run in the workspace directory default-run = "zebrad" [features] # In release builds, don't compile debug logging code, to improve performance. default = ["release_max_level_info"] # Production features that activate extra dependencies, or extra features in dependencies # Experimental mining RPC support getblocktemplate-rpcs = [ "zebra-rpc/getblocktemplate-rpcs", "zebra-consensus/getblocktemplate-rpcs", "zebra-state/getblocktemplate-rpcs", "zebra-node-services/getblocktemplate-rpcs", "zebra-chain/getblocktemplate-rpcs", ] elasticsearch = [ "zebra-state/elasticsearch", ] sentry = ["dep:sentry"] flamegraph = ["tracing-flame", "inferno"] journald = ["tracing-journald"] filter-reload = ["hyper"] progress-bar = [ "howudoin", "indicatif", "zebra-consensus/progress-bar", "zebra-state/progress-bar", "zebra-network/progress-bar", ] prometheus = ["metrics-exporter-prometheus"] # Production features that modify dependency behaviour # Enable additional error debugging in release builds error-debug = ["color-eyre/track-caller", "color-eyre/capture-spantrace"] # Remove verbose logging at compile-time in release or all builds. # # Release builds are defined as "cfg(not(debug_assertions))". # https://docs.rs/tracing/latest/tracing/level_filters/index.html#compile-time-filters release_max_level_warn = ["tracing/release_max_level_warn", "log/release_max_level_warn"] release_max_level_info = ["tracing/release_max_level_info", "log/release_max_level_info"] release_max_level_debug = ["tracing/release_max_level_debug", "log/release_max_level_debug"] max_level_warn = ["tracing/max_level_warn", "log/max_level_warn"] max_level_info = ["tracing/max_level_info", "log/max_level_info"] max_level_debug = ["tracing/max_level_debug", "log/max_level_debug"] # Testing features that activate extra dependencies proptest-impl = [ "proptest", "proptest-derive", "zebra-consensus/proptest-impl", "zebra-state/proptest-impl", "zebra-network/proptest-impl", "zebra-chain/proptest-impl", ] # Build the zebra-checkpoints utility for checkpoint generation tests zebra-checkpoints = [ "zebra-utils/zebra-checkpoints", ] # The gRPC tests also need an installed lightwalletd binary lightwalletd-grpc-tests = ["tonic-build"] # tokio-console support # # To activate this feature, run: # ```sh # RUSTFLAGS="--cfg tokio_unstable" cargo build --no-default-features --features="tokio-console" --bin zebrad # ``` # # The console-subscriber is incompatible with the tracing/max_level_* features. # # For more details, see: # https://github.com/tokio-rs/console/blob/main/console-subscriber/README.md#enabling-tokio-instrumentation tokio-console = ["console-subscriber"] # TODO: replace with environmental variables that skip the tests when not set (part of #2995) test_sync_to_mandatory_checkpoint_mainnet = [] test_sync_to_mandatory_checkpoint_testnet = [] test_sync_past_mandatory_checkpoint_mainnet = [] test_sync_past_mandatory_checkpoint_testnet = [] [dependencies] zebra-chain = { path = "../zebra-chain" } zebra-consensus = { path = "../zebra-consensus" } zebra-network = { path = "../zebra-network" } zebra-node-services = { path = "../zebra-node-services" } zebra-rpc = { path = "../zebra-rpc" } zebra-state = { path = "../zebra-state" } abscissa_core = "0.7.0" clap = { version = "4.3.0", features = ["cargo"] } chrono = { version = "0.4.26", default-features = false, features = ["clock", "std"] } humantime-serde = "1.1.1" indexmap = "1.9.3" lazy_static = "1.4.0" serde = { version = "1.0.163", features = ["serde_derive"] } toml = "0.7.4" futures = "0.3.28" rayon = "1.7.0" tokio = { version = "1.28.2", features = ["time", "rt-multi-thread", "macros", "tracing", "signal"] } tower = { version = "0.4.13", features = ["hedge", "limit"] } pin-project = "1.1.0" color-eyre = { version = "0.6.2", default_features = false, features = ["issue-url"] } # This is a transitive dependency via color-eyre. # Enable a feature that makes tinyvec compile much faster. tinyvec = { version = "1.6.0", features = ["rustc_1_55"] } thiserror = "1.0.40" tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } tracing-appender = "0.2.2" tracing-error = "0.2.0" tracing-futures = "0.2.5" tracing = "0.1.37" metrics = "0.21.0" dirs = "5.0.1" atty = "0.2.14" num-integer = "0.1.45" rand = { version = "0.8.5", package = "rand" } # prod feature sentry sentry = { version = "0.31.3", default-features = false, features = ["backtrace", "contexts", "reqwest", "rustls", "tracing"], optional = true } # prod feature flamegraph tracing-flame = { version = "0.2.0", optional = true } inferno = { version = "0.11.15", default-features = false, optional = true } # prod feature journald tracing-journald = { version = "0.3.0", optional = true } # prod feature filter-reload hyper = { version = "0.14.26", features = ["http1", "http2", "server"], optional = true } # prod feature prometheus metrics-exporter-prometheus = { version = "0.12.0", default-features = false, features = ["http-listener"], optional = true } # prod feature release_max_level_info # # zebrad uses tracing for logging, # we only use `log` to set and print the static log levels in transitive dependencies log = "0.4.18" # prod feature progress-bar howudoin = { version = "0.1.2", features = ["term-line"], optional = true } indicatif = { version = "0.17.5", optional = true } # test feature proptest-impl proptest = { version = "1.2.0", optional = true } proptest-derive = { version = "0.3.0", optional = true } # test feature tokio-console console-subscriber = { version = "0.1.8", optional = true } [build-dependencies] vergen = { version = "8.2.1", default-features = false, features = ["cargo", "git", "git2", "rustc"] } # test feature lightwalletd-grpc-tests tonic-build = { version = "0.9.2", optional = true } [dev-dependencies] abscissa_core = { version = "0.7.0", features = ["testing"] } hex = "0.4.3" jsonrpc-core = "18.0.0" once_cell = "1.18.0" regex = "1.8.4" semver = "1.0.17" # zebra-rpc needs the preserve_order feature, it also makes test results more stable serde_json = { version = "1.0.96", features = ["preserve_order"] } tempfile = "3.5.0" hyper = { version = "0.14.26", features = ["http1", "http2", "server"]} tracing-test = { version = "0.2.4", features = ["no-env-filter"] } tokio = { version = "1.28.2", features = ["full", "tracing", "test-util"] } tokio-stream = "0.1.14" # test feature lightwalletd-grpc-tests prost = "0.11.9" tonic = "0.9.2" proptest = "1.2.0" proptest-derive = "0.3.0" # enable span traces and track caller in tests color-eyre = { version = "0.6.2" } zebra-chain = { path = "../zebra-chain", features = ["proptest-impl"] } zebra-consensus = { path = "../zebra-consensus", features = ["proptest-impl"] } zebra-network = { path = "../zebra-network", features = ["proptest-impl"] } zebra-state = { path = "../zebra-state", features = ["proptest-impl"] } zebra-node-services = { path = "../zebra-node-services", features = ["rpc-client"] } zebra-test = { path = "../zebra-test" } # Used by the checkpoint generation tests via the zebra-checkpoints feature # (the binaries in this crate won't be built unless their features are enabled). # # Currently, we use zebra-utils/tests/build_utils_for_zebrad_tests.rs as a workaround # to build the zebra-checkpoints utility for the zebrad acceptance tests. # # When `-Z bindeps` is stabilised, enable this binary dependency instead: # https://github.com/rust-lang/cargo/issues/9096 # zebra-utils { path = "../zebra-utils", artifact = "bin:zebra-checkpoints" } zebra-utils = { path = "../zebra-utils" }