[package]
name = "zebra-state"
version = "1.0.0-beta.30"
authors = ["Zcash Foundation <zebra@zfnd.org>"]
description = "State contextual verification and storage code for Zebra"
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", "caching", "cryptography::cryptocurrencies"]

[features]

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

progress-bar = [
    "howudoin",
]

# Experimental mining RPC support
getblocktemplate-rpcs = [
    "zebra-chain/getblocktemplate-rpcs",
]

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

# Experimental elasticsearch support
elasticsearch = [
    "dep:elasticsearch",
    "dep:serde_json",
    "zebra-chain/elasticsearch",
]

[dependencies]
bincode = "1.3.3"
chrono = { version = "0.4.31", default-features = false, features = ["clock", "std"] }
dirs = "5.0.1"
futures = "0.3.28"
hex = "0.4.3"
hex-literal = "0.4.1"
humantime-serde = "1.1.1"
indexmap = "2.0.1"
itertools = "0.11.0"
lazy_static = "1.4.0"
metrics = "0.21.1"
mset = "0.1.1"
regex = "1.10.2"
rlimit = "0.10.1"
rocksdb = { version = "0.21.0", default-features = false, features = ["lz4"] }
semver = "1.0.20"
serde = { version = "1.0.188", features = ["serde_derive"] }
tempfile = "3.8.0"
thiserror = "1.0.48"

rayon = "1.7.0"
tokio = { version = "1.33.0", features = ["rt-multi-thread", "sync", "tracing"] }
tower = { version = "0.4.13", features = ["buffer", "util"] }
tracing = "0.1.39"

# elasticsearch specific dependencies.
# Security: avoid default dependency on openssl
elasticsearch = { version = "8.5.0-alpha.1", default-features = false, features = ["rustls-tls"], optional = true }
serde_json = { version = "1.0.107", package = "serde_json", optional = true }

zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.30", features = ["async-error"] }

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

# test feature proptest-impl
zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.30", optional = true }
proptest = { version = "1.3.1", 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"] }

once_cell = "1.18.0"
spandoc = "0.2.2"

hex = { version = "0.4.3", features = ["serde"] }
insta = { version = "1.33.0", features = ["ron", "redactions"] }

proptest = "1.3.1"
proptest-derive = "0.4.0"
rand = "0.8.5"

halo2 = { package = "halo2_proofs", version = "0.3.0" }
jubjub = "0.10.0"

tokio = { version = "1.33.0", features = ["full", "tracing", "test-util"] }

zebra-chain = { path = "../zebra-chain", features = ["proptest-impl"] }
zebra-test = { path = "../zebra-test/" }
