[package] name = "snark-verifier" version = "0.1.7" authors = ["Privacy Scaling Explorations Team", "Intrinsic Technologies"] license = "MIT" edition = "2021" repository = "https://github.com/axiom-crypto/snark-verifier" readme = "../README.md" description = "Generic (S)NARK verifier for Rust, halo2, and EVM. This is a fork of PSE's version." rust-version = "1.73.0" [dependencies] itertools = "0.11" lazy_static = "1.4" num-bigint = "0.4" num-integer = "0.1.45" num-traits = "0.2.15" hex = "0.4" rand = "0.8" serde = { version = "1.0", features = ["derive"] } pairing = { version = "0.23" } # Use halo2-base as non-optional dependency because it re-exports halo2_proofs, halo2curves, and poseidon, using different repos based on feature flag "halo2-axiom" or "halo2-pse" halo2-base = { version = "=0.4.1", default-features = false } # halo2-base = { git = "https://github.com/axiom-crypto/halo2-lib.git", branch = "main", default-features = false } # loader_halo2 halo2-ecc = { version = "=0.4.1", default-features = false, optional = true } # halo2-ecc = { git = "https://github.com/axiom-crypto/halo2-lib.git", branch = "main", default-features = false, optional = true } # parallel rayon = { version = "1.8", optional = true } # loader_evm sha3 = { version = "=0.10", optional = true } ruint = { version = "=1.10", optional = true } # revm only used for testing smart contract execution revm = { version = "=3.5.0", optional = true } [dev-dependencies] ark-std = { version = "0.3.0", features = ["print-trace"] } paste = "1.0.7" rand_chacha = "0.3.1" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" # loader_evm crossterm = { version = "0.25" } ratatui = { version = "0.24", default-features = false, features = ["crossterm"] } [features] default = ["loader_evm", "loader_halo2", "halo2-axiom", "display"] display = ["halo2-base/display", "halo2-ecc?/display"] loader_halo2 = ["halo2-ecc"] loader_evm = ["dep:sha3", "dep:ruint"] revm = ["loader_evm", "dep:revm"] parallel = ["dep:rayon"] # EXACTLY one of halo2-pse / halo2-axiom should always be turned on; not sure how to enforce this with Cargo # halo2-pse = ["halo2-base/halo2-pse", "halo2-ecc?/halo2-pse"] halo2-axiom = ["halo2-base/halo2-axiom", "halo2-ecc?/halo2-axiom"] [[example]] name = "evm-verifier" required-features = ["loader_evm"] [[example]] name = "evm-verifier-with-accumulator" required-features = ["loader_halo2", "loader_evm"] [[example]] name = "recursion" required-features = ["loader_halo2"]