2018-08-23 13:10:04 -07:00
|
|
|
[workspace]
|
|
|
|
members = [
|
2020-06-25 17:53:07 -07:00
|
|
|
"components/equihash",
|
2021-09-22 06:13:34 -07:00
|
|
|
"components/f4jumble",
|
2021-03-07 10:18:16 -08:00
|
|
|
"components/zcash_address",
|
2021-08-30 09:42:05 -07:00
|
|
|
"components/zcash_encoding",
|
2024-01-27 08:22:01 -08:00
|
|
|
"components/zcash_protocol",
|
2024-01-15 15:16:42 -08:00
|
|
|
"components/zip321",
|
2024-07-19 18:51:02 -07:00
|
|
|
"devtools",
|
2024-10-07 20:42:20 -07:00
|
|
|
"pczt",
|
2024-07-15 08:30:54 -07:00
|
|
|
"zcash",
|
2018-10-22 09:36:23 -07:00
|
|
|
"zcash_client_backend",
|
2019-03-08 18:16:00 -08:00
|
|
|
"zcash_client_sqlite",
|
2024-03-10 11:07:59 -07:00
|
|
|
"zcash_extensions",
|
2020-03-03 17:02:31 -08:00
|
|
|
"zcash_history",
|
2024-01-14 09:47:26 -08:00
|
|
|
"zcash_keys",
|
2018-08-23 15:15:22 -07:00
|
|
|
"zcash_primitives",
|
|
|
|
"zcash_proofs",
|
2024-12-14 04:48:03 -08:00
|
|
|
"zcash_transparent",
|
2018-08-23 13:10:04 -07:00
|
|
|
]
|
|
|
|
|
2023-09-26 13:12:23 -07:00
|
|
|
[workspace.package]
|
|
|
|
edition = "2021"
|
2024-10-18 15:10:40 -07:00
|
|
|
rust-version = "1.77"
|
2023-09-26 13:12:23 -07:00
|
|
|
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" }
|
2024-12-16 01:34:45 -08:00
|
|
|
zcash_address = { version = "0.6", path = "components/zcash_address", default-features = false }
|
2024-11-14 15:07:56 -08:00
|
|
|
zcash_client_backend = { version = "0.15", path = "zcash_client_backend" }
|
2024-12-13 09:02:18 -08:00
|
|
|
zcash_encoding = { version = "0.2.1", path = "components/zcash_encoding", default-features = false }
|
2024-11-14 15:04:53 -08:00
|
|
|
zcash_keys = { version = "0.5", path = "zcash_keys" }
|
2024-12-13 09:02:18 -08:00
|
|
|
zcash_protocol = { version = "0.4.1", path = "components/zcash_protocol", default-features = false }
|
2024-10-04 11:36:28 -07:00
|
|
|
zip321 = { version = "0.2", path = "components/zip321" }
|
2024-01-27 08:22:01 -08:00
|
|
|
|
2024-12-04 22:12:25 -08:00
|
|
|
zcash_note_encryption = "0.4.1"
|
2024-11-14 15:00:56 -08:00
|
|
|
zcash_primitives = { version = "0.20", path = "zcash_primitives", default-features = false }
|
2024-11-14 15:02:39 -08:00
|
|
|
zcash_proofs = { version = "0.20", path = "zcash_proofs", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
|
2024-12-04 22:12:25 -08:00
|
|
|
pczt = { version = "0.0", path = "pczt" }
|
|
|
|
|
2023-09-26 13:12:23 -07:00
|
|
|
# Shielded protocols
|
2024-07-19 18:51:02 -07:00
|
|
|
bellman = { version = "0.14", default-features = false, features = ["groth16"] }
|
2024-12-16 11:23:01 -08:00
|
|
|
ff = { version = "0.13", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
group = "0.13"
|
2024-12-16 11:23:01 -08:00
|
|
|
incrementalmerkletree = { version = "0.7.1", default-features = false }
|
2024-10-04 07:40:10 -07:00
|
|
|
shardtree = "0.5"
|
2023-12-06 16:53:18 -08:00
|
|
|
zcash_spec = "0.1"
|
2023-09-26 13:12:23 -07:00
|
|
|
|
|
|
|
# Payment protocols
|
|
|
|
# - Sapling
|
2024-12-16 11:23:01 -08:00
|
|
|
bitvec = { version = "1", default-features = false, features = ["alloc"] }
|
|
|
|
blake2s_simd = { version = "1", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
bls12_381 = "0.8"
|
|
|
|
jubjub = "0.10"
|
2024-10-09 13:20:10 -07:00
|
|
|
redjubjub = "0.7"
|
2024-10-02 10:57:14 -07:00
|
|
|
sapling = { package = "sapling-crypto", version = "0.3", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
|
|
|
|
# - Orchard
|
|
|
|
nonempty = "0.7"
|
2024-10-02 10:57:14 -07:00
|
|
|
orchard = { version = "0.10", default-features = false }
|
2024-03-07 17:00:48 -08:00
|
|
|
pasta_curves = "0.5"
|
2023-09-26 13:12:23 -07:00
|
|
|
|
|
|
|
# - Transparent
|
2024-12-03 04:50:09 -08:00
|
|
|
bip32 = { version = "0.5", default-features = false }
|
2024-12-16 01:34:45 -08:00
|
|
|
ripemd = { version = "0.1", default-features = false }
|
|
|
|
secp256k1 = { version = "0.27", default-features = false, features = ["alloc"] }
|
2024-12-14 05:01:21 -08:00
|
|
|
transparent = { package = "zcash_transparent", version = "0.0", path = "zcash_transparent", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
|
2024-12-16 11:23:01 -08:00
|
|
|
# Boilerplate & missing stdlib
|
2024-12-03 04:50:09 -08:00
|
|
|
getset = "0.1"
|
|
|
|
|
2023-09-26 13:12:23 -07:00
|
|
|
# CSPRNG
|
2024-12-16 11:23:01 -08:00
|
|
|
rand = { version = "0.8", default-features = false }
|
|
|
|
rand_core = { version = "0.6", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
|
2024-07-17 17:17:04 -07:00
|
|
|
# Currency conversions
|
|
|
|
rust_decimal = { version = "1.35", default-features = false, features = ["serde"] }
|
|
|
|
|
2023-09-26 13:12:23 -07:00
|
|
|
# Digests
|
2024-12-16 01:34:45 -08:00
|
|
|
blake2b_simd = { version = "1", default-features = false }
|
|
|
|
sha2 = { version = "0.10", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
|
2024-01-03 12:14:41 -08:00
|
|
|
# Documentation
|
|
|
|
document-features = "0.2"
|
|
|
|
|
2023-09-26 13:12:23 -07:00
|
|
|
# Encodings
|
2024-09-20 15:42:04 -07:00
|
|
|
base64 = "0.22"
|
2024-12-13 12:14:20 -08:00
|
|
|
bech32 = { version = "0.11", default-features = false, features = ["alloc"] }
|
2024-12-13 09:02:18 -08:00
|
|
|
bs58 = { version = "0.5", default-features = false, features = ["alloc", "check"] }
|
2023-09-26 13:12:23 -07:00
|
|
|
byteorder = "1"
|
2024-12-16 01:34:45 -08:00
|
|
|
hex = { version = "0.4", default-features = false, features = ["alloc"] }
|
2023-09-26 13:12:23 -07:00
|
|
|
percent-encoding = "2.1.0"
|
2024-12-04 22:12:25 -08:00
|
|
|
postcard = { version = "1", features = ["alloc"] }
|
2024-12-16 11:23:01 -08:00
|
|
|
serde = { version = "1", default-features = false, features = ["derive"] }
|
2024-06-14 04:48:18 -07:00
|
|
|
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"
|
2023-09-26 13:12:23 -07:00
|
|
|
|
|
|
|
# Logging and metrics
|
2024-12-16 11:23:01 -08:00
|
|
|
memuse = { version = "0.2.2", default-features = false }
|
|
|
|
tracing = { version = "0.1", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
|
2024-12-13 09:02:18 -08:00
|
|
|
# No-std support
|
|
|
|
core2 = { version = "0.3", default-features = false, features = ["alloc"] }
|
|
|
|
|
2023-09-26 13:12:23 -07:00
|
|
|
# Parallel processing
|
|
|
|
crossbeam-channel = "0.5"
|
|
|
|
maybe-rayon = { version = "0.1.0", default-features = false }
|
|
|
|
rayon = "1.5"
|
|
|
|
|
|
|
|
# Protobuf and gRPC
|
2024-07-10 16:48:28 -07:00
|
|
|
prost = "0.13"
|
|
|
|
tonic = { version = "0.12", default-features = false }
|
|
|
|
tonic-build = { version = "0.12", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
|
|
|
|
# Secret management
|
|
|
|
secrecy = "0.8"
|
2024-12-16 01:34:45 -08:00
|
|
|
subtle = { version = "2.2.3", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
|
2024-06-14 04:28:54 -07:00
|
|
|
# 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.
|
2024-10-18 15:41:52 -07:00
|
|
|
rusqlite = { version = "0.32", features = ["bundled"] }
|
2024-10-16 13:49:42 -07:00
|
|
|
schemerz = "0.2"
|
2024-10-18 15:41:52 -07:00
|
|
|
schemerz-rusqlite = "0.320"
|
2024-06-14 04:28:54 -07:00
|
|
|
time = "0.3.22"
|
|
|
|
uuid = "1.1"
|
|
|
|
|
2024-07-03 21:22:18 -07:00
|
|
|
# Static constants and assertions
|
2023-09-26 13:12:23 -07:00
|
|
|
lazy_static = "1"
|
2024-07-03 21:22:18 -07:00
|
|
|
static_assertions = "1"
|
2023-09-26 13:12:23 -07:00
|
|
|
|
|
|
|
# Tests and benchmarks
|
2024-09-05 13:03:49 -07:00
|
|
|
ambassador = "0.4"
|
2023-09-26 13:12:23 -07:00
|
|
|
assert_matches = "1.5"
|
2024-06-12 04:45:09 -07:00
|
|
|
criterion = "0.5"
|
2023-09-26 13:12:23 -07:00
|
|
|
proptest = "1"
|
2024-03-09 15:47:51 -08:00
|
|
|
rand_chacha = "0.3"
|
2023-09-26 13:12:23 -07:00
|
|
|
rand_xorshift = "0.3"
|
2024-10-04 07:40:10 -07:00
|
|
|
incrementalmerkletree-testing = "0.2"
|
2023-09-26 13:12:23 -07:00
|
|
|
|
2024-06-14 04:39:44 -07:00
|
|
|
# Tor
|
|
|
|
# - `arti-client` depends on `rusqlite`, and a version mismatch there causes a compilation
|
|
|
|
# failure due to incompatible `libsqlite3-sys` versions.
|
2024-10-18 15:41:52 -07:00
|
|
|
arti-client = { version = "0.23", default-features = false, features = ["compression", "rustls", "tokio"] }
|
2024-10-25 22:07:09 -07:00
|
|
|
dynosaur = "0.1.1"
|
2024-06-14 04:39:44 -07:00
|
|
|
tokio = "1"
|
2024-10-18 15:41:52 -07:00
|
|
|
tor-rtcompat = "0.23"
|
2024-07-29 16:07:02 -07:00
|
|
|
tower = "0.4"
|
2024-10-25 22:07:09 -07:00
|
|
|
trait-variant = "0.1"
|
2024-06-14 04:39:44 -07:00
|
|
|
|
2023-09-26 13:12:23 -07:00
|
|
|
# ZIP 32
|
|
|
|
aes = "0.8"
|
2024-12-16 11:23:01 -08:00
|
|
|
fpe = { version = "0.6", default-features = false, features = ["alloc"] }
|
2024-12-16 01:34:45 -08:00
|
|
|
zip32 = { version = "0.1.1", default-features = false }
|
2023-09-26 13:12:23 -07:00
|
|
|
|
2018-08-23 13:10:04 -07:00
|
|
|
[profile.release]
|
|
|
|
lto = true
|
|
|
|
panic = 'abort'
|
|
|
|
codegen-units = 1
|
2024-09-04 07:33:33 -07:00
|
|
|
|
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.
After this PR, 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`.
Times on my machine starting from `cargo clean` for each run:
* `cargo test --all-targets --all-features`:
* 484s (354s build, 130s tests)
* `cargo test --release --all-targets --all-features`:
* 541s (415s build, 126s tests)
* `cargo test --profile=dev --all-targets --all-features`:
* 1709s (146s build, 1563s tests)
* this might still be faster when running individual tests.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-11-02 10:59:03 -07:00
|
|
|
[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
|
|
|
|
|
2024-09-04 07:33:33 -07:00
|
|
|
[workspace.lints.rust]
|
|
|
|
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(zcash_unstable, values("zfuture"))'] }
|
2024-10-11 23:14:47 -07:00
|
|
|
|
|
|
|
[patch.crates-io]
|
2024-12-16 11:23:01 -08:00
|
|
|
orchard = { git = "https://github.com/zcash/orchard.git", rev = "f99b6565a78763b58dac792d7492c55067bae680" }
|
2024-12-13 10:25:00 -08:00
|
|
|
sapling-crypto = { git = "https://github.com/zcash/sapling-crypto.git", rev = "e47d57f5c9c46f05740328f8ef9601f6d697cf34" }
|