[package] name = "zebra-rpc" version = "1.0.0-beta.42" authors = ["Zcash Foundation "] description = "A Zebra JSON Remote Procedure Call (JSON-RPC) interface" 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 categories = [ "asynchronous", "cryptography::cryptocurrencies", "encoding", "network-programming", ] [features] indexer-rpcs = [ "tonic-build", "tonic", "tonic-reflection", "prost", "tokio-stream", ] # Production features that activate extra dependencies, or extra features in dependencies # Mining RPC support getblocktemplate-rpcs = [ "zcash_address", "zebra-consensus/getblocktemplate-rpcs", "zebra-state/getblocktemplate-rpcs", "zebra-node-services/getblocktemplate-rpcs", "zebra-chain/getblocktemplate-rpcs", ] # Experimental internal miner support internal-miner = [] # Test-only features proptest-impl = [ "proptest", "zebra-consensus/proptest-impl", "zebra-state/proptest-impl", "zebra-network/proptest-impl", "zebra-chain/proptest-impl", ] [dependencies] chrono = { version = "0.4.38", default-features = false, features = [ "clock", "std", ] } futures = "0.3.31" jsonrpc-core = "18.0.0" jsonrpc-derive = "18.0.0" jsonrpc-http-server = "18.0.0" # zebra-rpc needs the preserve_order feature in serde_json, which is a dependency of jsonrpc-core serde_json = { version = "1.0.132", features = ["preserve_order"] } indexmap = { version = "2.6.0", features = ["serde"] } # RPC endpoint basic auth base64 = "0.22.1" rand = "0.8.5" # Error handling color-eyre = "0.6.3" tokio = { version = "1.41.0", features = [ "time", "rt-multi-thread", "macros", "tracing", ] } tower = "0.4.13" # indexer-rpcs dependencies tonic = { version = "0.12.3", optional = true } tonic-reflection = { version = "0.12.3", optional = true } prost = { version = "0.13.3", optional = true } tokio-stream = { version = "0.1.16", optional = true } tracing = "0.1.39" hex = { version = "0.4.3", features = ["serde"] } serde = { version = "1.0.211", features = ["serde_derive"] } # For the `stop` RPC method. nix = { version = "0.29.0", features = ["signal"] } zcash_primitives = { workspace = true, features = ["transparent-inputs"] } # ECC deps used by getblocktemplate-rpcs feature zcash_address = { workspace = true, optional = true} # Test-only feature proptest-impl proptest = { version = "1.4.0", optional = true } zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.42", features = [ "json-conversion", ] } zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.42" } zebra-network = { path = "../zebra-network", version = "1.0.0-beta.42" } zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.42", features = [ "rpc-client", ] } zebra-script = { path = "../zebra-script", version = "1.0.0-beta.42" } zebra-state = { path = "../zebra-state", version = "1.0.0-beta.42" } [build-dependencies] tonic-build = { version = "0.12.3", optional = true } [dev-dependencies] insta = { version = "1.40.0", features = ["redactions", "json", "ron"] } proptest = "1.4.0" thiserror = "1.0.64" tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.42", features = [ "proptest-impl", ] } zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.42", features = [ "proptest-impl", ] } zebra-network = { path = "../zebra-network", version = "1.0.0-beta.42", features = [ "proptest-impl", ] } zebra-state = { path = "../zebra-state", version = "1.0.0-beta.42", features = [ "proptest-impl", ] } zebra-test = { path = "../zebra-test", version = "1.0.0-beta.42" }