[package] name = "zcash_client_backend" description = "APIs for creating shielded Zcash light clients" version = "0.12.1" authors = [ "Jack Grigg ", "Kris Nuttycombe " ] homepage = "https://github.com/zcash/librustzcash" repository.workspace = true readme = "README.md" license.workspace = true edition.workspace = true rust-version.workspace = true categories.workspace = true # Exclude proto files so crates.io consumers don't need protoc. exclude = ["*.proto"] [package.metadata.cargo-udeps.ignore] development = ["zcash_proofs"] [package.metadata.docs.rs] # Manually specify features while `orchard` is not in the public API. #all-features = true features = [ "lightwalletd-tonic", "transparent-inputs", "test-dependencies", "unstable", "unstable-serialization", "unstable-spanning-tree", ] rustdoc-args = ["--cfg", "docsrs"] [dependencies] zcash_address.workspace = true zcash_encoding.workspace = true zcash_keys = { workspace = true, features = ["sapling"] } zcash_note_encryption.workspace = true zcash_primitives.workspace = true zcash_protocol.workspace = true zip32.workspace = true zip321.workspace = true # Dependencies exposed in a public API: # (Breaking upgrades to these require a breaking upgrade to this crate.) # - Data Access API time = "0.3.22" nonempty.workspace = true # - CSPRNG rand_core.workspace = true # - Encodings base64.workspace = true bech32.workspace = true bs58.workspace = true # - Errors hdwallet = { workspace = true, optional = true } # - Logging and metrics memuse.workspace = true tracing.workspace = true # - Protobuf interfaces and gRPC bindings hex.workspace = true prost.workspace = true tonic = { workspace = true, optional = true, features = ["prost", "codegen"] } # - Secret management secrecy.workspace = true subtle.workspace = true # - Shielded protocols bls12_381.workspace = true group.workspace = true orchard = { workspace = true, optional = true } sapling.workspace = true # - Sync engine async-trait = { version = "0.1", optional = true } futures-util = { version = "0.3", optional = true } # - Note commitment trees incrementalmerkletree.workspace = true shardtree.workspace = true # - Test dependencies proptest = { workspace = true, optional = true } jubjub = { workspace = true, optional = true } # - ZIP 321 nom = "7" # Dependencies used internally: # (Breaking upgrades to these are usually backwards-compatible, but check MSRVs.) # - Documentation document-features.workspace = true # - Encodings byteorder = { workspace = true, optional = true } percent-encoding.workspace = true # - Scanning crossbeam-channel.workspace = true rayon.workspace = true [build-dependencies] tonic-build = { workspace = true, features = ["prost"] } which = "4" [dev-dependencies] assert_matches.workspace = true gumdrop = "0.8" incrementalmerkletree = { workspace = true, features = ["test-dependencies"] } jubjub.workspace = true proptest.workspace = true rand_core.workspace = true shardtree = { workspace = true, features = ["test-dependencies"] } zcash_proofs.workspace = true zcash_address = { workspace = true, features = ["test-dependencies"] } zcash_keys = { workspace = true, features = ["test-dependencies"] } tokio = { version = "1.21.0", features = ["rt-multi-thread"] } time = ">=0.3.22, <0.3.24" # time 0.3.24 has MSRV 1.67 [features] ## Enables the `tonic` gRPC client bindings for connecting to a `lightwalletd` server. lightwalletd-tonic = ["dep:tonic"] ## Enables the `transport` feature of `tonic` producing a fully-featured client and server implementation lightwalletd-tonic-transport = ["lightwalletd-tonic", "tonic?/transport"] ## Enables receiving transparent funds and shielding them. transparent-inputs = [ "dep:hdwallet", "zcash_keys/transparent-inputs", "zcash_primitives/transparent-inputs", ] ## Enables receiving and spending Orchard funds. orchard = ["dep:orchard", "zcash_keys/orchard"] ## Exposes a wallet synchronization function that implements the necessary state machine. sync = [ "lightwalletd-tonic", "dep:async-trait", "dep:futures-util", ] ## Exposes APIs that are useful for testing, such as `proptest` strategies. test-dependencies = [ "dep:proptest", "dep:jubjub", "orchard?/test-dependencies", "zcash_keys/test-dependencies", "zcash_primitives/test-dependencies", "incrementalmerkletree/test-dependencies", ] #! ### Experimental features ## Exposes unstable APIs. Their behaviour may change at any time. unstable = ["dep:byteorder", "zcash_keys/unstable"] ## Exposes APIs for unstable serialization formats. These may change at any time. unstable-serialization = ["dep:byteorder"] ## Exposes the [`data_api::scanning::spanning_tree`] module. unstable-spanning-tree = [] [lib] bench = false [badges] maintenance = { status = "actively-developed" }