[package] # Crate metadata name = "zebrad" authors = ["Zcash Foundation "] license = "MIT OR Apache-2.0" version = "1.0.0-rc.4" 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.65, or any later stable release. rust-version = "1.65" # 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", ] sentry = ["dep:sentry", "sentry-tracing"] flamegraph = ["tracing-flame", "inferno"] journald = ["tracing-journald"] filter-reload = ["hyper"] 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", ] # 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.5" gumdrop = { version = "0.7", features = ["default_expr"]} chrono = { version = "0.4.23", default-features = false, features = ["clock", "std"] } humantime = "2.1.0" humantime-serde = "1.1.1" indexmap = "1.9.2" lazy_static = "1.4.0" serde = { version = "1.0.152", features = ["serde_derive"] } toml = "0.6.0" futures = "0.3.25" rayon = "1.6.1" tokio = { version = "1.24.2", features = ["time", "rt-multi-thread", "macros", "tracing", "signal"] } tower = { version = "0.4.13", features = ["hedge", "limit"] } pin-project = "1.0.12" 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.38" tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } tracing-appender = "0.2.2" tracing-error = "0.2.0" tracing-futures = "0.2.5" tracing = "0.1.37" metrics = "0.20.1" dirs = "4.0.0" atty = "0.2.14" num-integer = "0.1.45" rand = { version = "0.8.5", package = "rand" } # prod feature sentry sentry-tracing = { version = "0.29.2", optional = true } sentry = { version = "0.29.2", default-features = false, features = ["backtrace", "contexts", "reqwest", "rustls"], optional = true } # prod feature flamegraph tracing-flame = { version = "0.2.0", optional = true } inferno = { version = "0.11.14", default-features = false, optional = true } # prod feature journald tracing-journald = { version = "0.3.0", optional = true } # prod feature filter-reload hyper = { version = "0.14.23", features = ["http1", "http2", "server"], optional = true } # prod feature prometheus metrics-exporter-prometheus = { version = "0.11.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.17" # test feature proptest-impl proptest = { version = "0.10.1", 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 = "7.5.0", default-features = false, features = ["cargo", "git"] } # test feature lightwalletd-grpc-tests tonic-build = { version = "0.8.0", optional = true } [dev-dependencies] abscissa_core = { version = "0.5", features = ["testing"] } hex = "0.4.3" jsonrpc-core = "18.0.0" once_cell = "1.17.0" regex = "1.7.1" semver = "1.0.16" # zebra-rpc needs the preserve_order feature, it also makes test results more stable serde_json = { version = "1.0.91", features = ["preserve_order"] } tempfile = "3.3.0" hyper = { version = "0.14.23", features = ["http1", "http2", "server"]} reqwest = "0.11.14" tokio = { version = "1.24.2", features = ["full", "tracing", "test-util"] } tokio-stream = "0.1.11" # test feature lightwalletd-grpc-tests prost = "0.11.6" tonic = "0.8.0" proptest = "0.10.1" proptest-derive = "0.3.0" # enable span traces and track caller in tests color-eyre = { version = "0.6.2", features = ["issue-url"] } 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-test = { path = "../zebra-test" }