[package]
name = "zebra-consensus"
version = "1.0.0-beta.34"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
description = "Implementation of Zcash consensus checks"
license = "MIT OR Apache-2.0"
repository = "https://github.com/ZcashFoundation/zebra"
edition = "2021"

readme = "../README.md"
homepage = "https://zfnd.org/zebra/"
# crates.io is limited to 5 keywords and categories
keywords = ["zebra", "zcash"]
# Must be one of <https://crates.io/category_slugs>
categories = ["asynchronous", "cryptography::cryptocurrencies"]

[features]
default = []

# Production features that activate extra dependencies, or extra features in dependencies

progress-bar = [
    "howudoin",
    "zebra-state/progress-bar",
]

# Mining RPC support
getblocktemplate-rpcs = [
     "zebra-state/getblocktemplate-rpcs",
     "zebra-node-services/getblocktemplate-rpcs",
     "zebra-chain/getblocktemplate-rpcs",
]

# Test-only features
proptest-impl = ["proptest", "proptest-derive", "zebra-chain/proptest-impl", "zebra-state/proptest-impl"]

[dependencies]
blake2b_simd = "1.0.2"
bellman = "0.14.0"
bls12_381 = "0.8.0"
halo2 = { package = "halo2_proofs", version = "0.3.0" }
jubjub = "0.10.0"
rand = "0.8.5"
rayon = "1.8.1"

chrono = { version = "0.4.34", default-features = false, features = ["clock", "std"] }
displaydoc = "0.2.4"
lazy_static = "1.4.0"
once_cell = "1.18.0"
serde = { version = "1.0.196", features = ["serde_derive"] }

futures = "0.3.30"
futures-util = "0.3.28"
metrics = "0.22.1"
thiserror = "1.0.57"
tokio = { version = "1.36.0", features = ["time", "sync", "tracing", "rt-multi-thread"] }
tower = { version = "0.4.13", features = ["timeout", "util", "buffer"] }
tracing = "0.1.39"
tracing-futures = "0.2.5"

orchard = "0.6.0"

zcash_proofs = { version = "0.13.0-rc.1", features = ["multicore" ] }
wagyu-zcash-parameters = "0.2.0"

tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.10" }
tower-batch-control = { path = "../tower-batch-control/", version = "0.2.41-beta.10" }

zebra-script = { path = "../zebra-script", version = "1.0.0-beta.34" }
zebra-state = { path = "../zebra-state", version = "1.0.0-beta.34" }
zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.34" }
zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.34" }

# prod feature progress-bar
howudoin = { version = "0.1.2", optional = true }

# Test-only dependencies
proptest = { version = "1.4.0", optional = true }
proptest-derive = { version = "0.4.0", optional = true }

[dev-dependencies]
color-eyre = "0.6.2"
# 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"] }

hex = "0.4.3"
num-integer = "0.1.46"
proptest = "1.4.0"
proptest-derive = "0.4.0"
spandoc = "0.2.2"

tokio = { version = "1.36.0", features = ["full", "tracing", "test-util"] }
tracing-error = "0.2.0"
tracing-subscriber = "0.3.18"

zebra-state = { path = "../zebra-state", version = "1.0.0-beta.34", features = ["proptest-impl"] }
zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.34", features = ["proptest-impl"] }
zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.34" }
