librustzcash/zcash_client_backend/Cargo.toml

179 lines
4.8 KiB
TOML

[package]
name = "zcash_client_backend"
description = "APIs for creating shielded Zcash light clients"
version = "0.12.1"
authors = [
"Jack Grigg <jack@z.cash>",
"Kris Nuttycombe <kris@electriccoin.co>"
]
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" }