[workspace] members = [ "components/equihash", "components/f4jumble", "components/zcash_address", "components/zcash_encoding", "components/zcash_protocol", "components/zip321", "devtools", "pczt", "zcash", "zcash_client_backend", "zcash_client_sqlite", "zcash_extensions", "zcash_history", "zcash_keys", "zcash_primitives", "zcash_proofs", "zcash_transparent", ] [workspace.package] edition = "2021" rust-version = "1.77" repository = "https://github.com/zcash/librustzcash" license = "MIT OR Apache-2.0" categories = ["cryptography::cryptocurrencies"] # Common dependencies across all of our crates. Dependencies used only by a single crate # (and that don't have cross-crate versioning needs) are specified by the crate itself. # # See the individual crate `Cargo.toml` files for information about which dependencies are # part of a public API, and which can be updated without a SemVer bump. [workspace.dependencies] # Intra-workspace dependencies equihash = { version = "0.2", path = "components/equihash" } zcash_address = { version = "0.6", path = "components/zcash_address", default-features = false } zcash_client_backend = { version = "0.15", path = "zcash_client_backend" } zcash_encoding = { version = "0.2.1", path = "components/zcash_encoding", default-features = false } zcash_keys = { version = "0.5", path = "zcash_keys" } zcash_protocol = { version = "0.4.1", path = "components/zcash_protocol", default-features = false } zip321 = { version = "0.2", path = "components/zip321" } zcash_note_encryption = "0.4.1" zcash_primitives = { version = "0.20", path = "zcash_primitives", default-features = false } zcash_proofs = { version = "0.20", path = "zcash_proofs", default-features = false } pczt = { version = "0.0", path = "pczt" } # Shielded protocols bellman = { version = "0.14", default-features = false, features = ["groth16"] } ff = { version = "0.13", default-features = false } group = "0.13" incrementalmerkletree = { version = "0.7.1", default-features = false } shardtree = "0.5" zcash_spec = "0.1" # Payment protocols # - Sapling bitvec = { version = "1", default-features = false, features = ["alloc"] } blake2s_simd = { version = "1", default-features = false } bls12_381 = "0.8" jubjub = "0.10" redjubjub = "0.7" sapling = { package = "sapling-crypto", version = "0.3", default-features = false } # - Orchard nonempty = "0.7" orchard = { version = "0.10", default-features = false } pasta_curves = "0.5" # - Transparent bip32 = { version = "0.5", default-features = false } ripemd = { version = "0.1", default-features = false } secp256k1 = { version = "0.27", default-features = false, features = ["alloc"] } transparent = { package = "zcash_transparent", version = "0.0", path = "zcash_transparent", default-features = false } # Boilerplate & missing stdlib getset = "0.1" # CSPRNG rand = { version = "0.8", default-features = false } rand_core = { version = "0.6", default-features = false } # Currency conversions rust_decimal = { version = "1.35", default-features = false, features = ["serde"] } # Digests blake2b_simd = { version = "1", default-features = false } sha2 = { version = "0.10", default-features = false } # Documentation document-features = "0.2" # Encodings base64 = "0.22" bech32 = { version = "0.11", default-features = false, features = ["alloc"] } bs58 = { version = "0.5", default-features = false, features = ["alloc", "check"] } byteorder = "1" hex = { version = "0.4", default-features = false, features = ["alloc"] } percent-encoding = "2.1.0" postcard = { version = "1", features = ["alloc"] } serde = { version = "1", default-features = false, features = ["derive"] } serde_json = "1" # HTTP hyper = "1" http-body-util = "0.1" hyper-util = { version = "0.1.1", features = ["tokio"] } tokio-rustls = "0.24" webpki-roots = "0.25" # Logging and metrics memuse = { version = "0.2.2", default-features = false } tracing = { version = "0.1", default-features = false } # No-std support core2 = { version = "0.3", default-features = false, features = ["alloc"] } # Parallel processing crossbeam-channel = "0.5" maybe-rayon = { version = "0.1.0", default-features = false } rayon = "1.5" # Protobuf and gRPC prost = "0.13" tonic = { version = "0.12", default-features = false } tonic-build = { version = "0.12", default-features = false } # Secret management secrecy = "0.8" subtle = { version = "2.2.3", default-features = false } # SQLite databases # - Warning: One of the downstream consumers requires that SQLite be available through # CocoaPods, due to being bound to React Native. We need to ensure that the SQLite # version required for `rusqlite` is a version that is available through CocoaPods. rusqlite = { version = "0.32", features = ["bundled"] } schemerz = "0.2" schemerz-rusqlite = "0.320" time = "0.3.22" uuid = "1.1" # Static constants and assertions lazy_static = "1" static_assertions = "1" # Tests and benchmarks ambassador = "0.4" assert_matches = "1.5" criterion = "0.5" proptest = "1" rand_chacha = "0.3" rand_xorshift = "0.3" incrementalmerkletree-testing = "0.2" # Tor # - `arti-client` depends on `rusqlite`, and a version mismatch there causes a compilation # failure due to incompatible `libsqlite3-sys` versions. arti-client = { version = "0.23", default-features = false, features = ["compression", "rustls", "tokio"] } dynosaur = "0.1.1" tokio = "1" tor-rtcompat = "0.23" tower = "0.4" trait-variant = "0.1" # ZIP 32 aes = "0.8" fpe = { version = "0.6", default-features = false, features = ["alloc"] } zip32 = { version = "0.1.1", default-features = false } [profile.release] lto = true panic = 'abort' codegen-units = 1 [profile.test] # Since we have many computationally expensive tests, this changes the test profile to # compile with optimizations by default, but keep full debug info. # # This differs from the release profile in the following ways: # - it does not set `lto = true`, which increases compile times without substantially # speeding up tests; # - it does not set `codegen-units = 1`, which increases compile times and is only # useful to improve determinism of release builds; # - it does not set `panic = 'abort'`, which is in any case ignored for tests. # # To get results as close as possible to a release build, use `cargo test --release`. # To speed up compilation and avoid optimizations potentially resulting in lower-quality # debug info, use `cargo test --profile=dev`. opt-level = 3 debug = true [workspace.lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("zfuture"))'] } [patch.crates-io] orchard = { git = "https://github.com/zcash/orchard.git", rev = "f99b6565a78763b58dac792d7492c55067bae680" } sapling-crypto = { git = "https://github.com/zcash/sapling-crypto.git", rev = "e47d57f5c9c46f05740328f8ef9601f6d697cf34" }