[package]
name = "synor-zk"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
description = "Zero-knowledge proof system for Synor L2 rollups"

[dependencies]
synor-types = { path = "../synor-types" }
synor-crypto = { path = "../synor-crypto" }

# ZK Proof System - Using arkworks for flexibility
# (Can be swapped for Halo2, Plonky2, or other backends)
ark-ff = "0.4"
ark-ec = "0.4"
ark-poly = "0.4"
ark-serialize = "0.4"
ark-std = "0.4"
ark-bn254 = "0.4"
ark-groth16 = "0.4"
ark-snark = "0.4"
ark-relations = "0.4"
ark-r1cs-std = "0.4"

# Merkle tree for state management
rs_merkle = "1.4"

# Hashing
sha3 = { workspace = true }
blake3 = { workspace = true }

# Serialization
serde = { workspace = true }
borsh = { workspace = true }

# Utilities
thiserror = { workspace = true }
hex = { workspace = true }
parking_lot = { workspace = true }
rand = { workspace = true }

# Async runtime and logging (for binaries)
tokio = { version = "1", features = ["full"], optional = true }
tracing = { version = "0.1", optional = true }
tracing-subscriber = { version = "0.3", features = ["env-filter"], optional = true }

[features]
default = []
node = ["tokio", "tracing", "tracing-subscriber"]

[[bin]]
name = "zk-sequencer"
path = "src/bin/zk-sequencer.rs"
required-features = ["node"]

[dev-dependencies]
criterion = { workspace = true }
proptest = { workspace = true }
tempfile = { workspace = true }

# [[bench]]
# name = "zk_bench"
# harness = false
