[package]
name = "orchard"
version = "0.14.0"
authors = [
    "Sean Bowe <ewillbefull@gmail.com>",
    "Jack Grigg <thestr4d@gmail.com>",
    "Daira-Emma Hopwood <daira@jacaranda.org>",
    "Ying Tong Lai",
    "Kris Nuttycombe <kris@nutty.land>",
]
edition = "2021"
rust-version = "1.85.1"
description = "The Orchard shielded transaction protocol"
license = "MIT OR Apache-2.0"
repository = "https://github.com/zcash/orchard"
documentation = "https://docs.rs/orchard"
readme = "README.md"
categories = ["cryptography::cryptocurrencies"]
keywords = ["zcash"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs", "--html-in-header", "katex-header.html"]

[dependencies]
aes = "0.8"
bitvec = { version = "1", default-features = false }
blake2b_simd = { version = "1", default-features = false }
ff = { version = "0.13", default-features = false }
fpe = { version = "0.6", default-features = false, features = ["alloc"] }
group = "0.13"
hex = { version = "0.4", default-features = false, features = ["alloc"] }
lazy_static = "1"
memuse = { version = "0.2.2", default-features = false }
pasta_curves = "0.5"
proptest = { version = ">=1.0.0, <1.7.0", optional = true }
rand = { version = "0.8", default-features = false }
rand_core = { version = "0.6", default-features = false }
reddsa = { version = "0.5", default-features = false }
nonempty = { version = "0.11", default-features = false }
poseidon = { package = "halo2_poseidon", version = "0.1" }
serde = { version = "1.0", default-features = false, features = ["derive"] }
sinsemilla = "0.1"
subtle = { version = "2.6", default-features = false }
zcash_note_encryption = "0.4"
incrementalmerkletree = "0.8.1"
zcash_spec = "0.2.1"
zip32 = { version = "0.2.0", default-features = false }
visibility = "0.1.1"

# Circuit
halo2_gadgets = { version = "0.5", optional = true, default-features = false }
halo2_proofs = { version = "0.3", optional = true, default-features = false, features = ["batch", "floor-planner-v1-legacy-pdqsort"] }

# Boilerplate
getset = "0.1"

# Logging
tracing = { version = "0.1", default-features = false }

# No-std support
corez = { version = "0.1.1", default-features = false, features = ["alloc"] }

# Developer tooling dependencies
image = { version = "0.24", optional = true }
plotters = { version = "0.3.0", optional = true }

[dev-dependencies]
criterion = "0.4" # 0.5 depends on clap 4 which has MSRV 1.70
halo2_gadgets = { version = "0.5", features = ["test-dependencies"] }
hex = "0.4"
proptest = ">=1.0.0, <1.7.0"
zcash_note_encryption = { version = "0.4", features = ["pre-zip-212"] }
incrementalmerkletree = { version = "0.8.1", features = ["test-dependencies"] }
shardtree = "0.6"

[target.'cfg(unix)'.dev-dependencies]
inferno = { version = "0.11", default-features = false, features = ["multithreaded", "nameattr"] }
pprof = { version = "0.11", features = ["criterion", "flamegraph"] }

[lib]
bench = false

[features]
default = ["circuit", "multicore", "std"]
std = ["corez/std", "group/wnaf-memuse", "reddsa/std"]
circuit = ["dep:halo2_gadgets", "dep:halo2_proofs", "std"]
unstable-frost = []
unstable-voting-circuits = []
multicore = ["halo2_proofs?/multicore"]
dev-graph = ["halo2_proofs?/dev-graph", "image", "plotters"]
test-dependencies = ["proptest", "rand/std"]

[[bench]]
name = "note_decryption"
harness = false
required-features = ["circuit"]

[[bench]]
name = "small"
harness = false

[[bench]]
name = "circuit"
harness = false
required-features = ["circuit"]

[profile.release]
debug = true

[profile.bench]
debug = true
