-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
149 lines (135 loc) · 9.07 KB
/
Copy pathCargo.toml
File metadata and controls
149 lines (135 loc) · 9.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
[workspace]
resolver = "3"
members = [
"harness",
"input-gen",
"fuzzer",
"convert-fixtures",
"trace-mutation",
"arguzz-plus",
]
# trace-mutation and arguzz-plus pull the zkVM prover SDKs and cannot build
# alongside each other (conflicting global symbols), so they are left out of the
# default build. `cargo build`/`cargo test` at the root builds only the core
# crates; build the soundness crates explicitly, one backend at a time, e.g.
# `cargo build -p arguzz-plus` or `cargo test -p trace-mutation --features sp1`.
default-members = [
"harness",
"input-gen",
"fuzzer",
"convert-fixtures",
]
exclude = [
"guest",
"zkvms/risc0-v2",
"zkvms/risc0-v3",
"zkrustsmith/outRust",
"rust_corpus",
"risc_experiments/sp1-executor",
"risc_experiments/lean_generator/risc0_utils/r0bf_packer",
"risc_experiments/lean_generator/risc0_utils/risc0_template",
"risc_experiments/lean_generator/openvm_utils/openvm_template",
"risc_experiments/lean_generator/openvm_utils/elf_transpiler",
"risc_experiments/pico-executor",
]
[workspace.package]
version = "0.1.0"
edition = "2024"
license = "MIT"
repository = "https://github.com/zksecurity/zkvmblast"
authors = ["zkSecurity"]
description = "zkVM-agnostic differential fuzzer for RISC-V zkVMs"
[workspace.dependencies]
# Internal crates
zkvmblast-harness = { path = "./harness" }
zkvmblast-input-gen = { path = "./input-gen" }
zkvmblast-fuzzer = { path = "./fuzzer" }
# Shared dependencies across workspace members
anyhow = "1.0.86"
clap = { version = "4.5", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
rayon = "1.10"
rand = "0.9.2"
syn = { version = "2.0.111", features = ["full"] }
quote = "1.0.38"
toml = "0.9.8"
pathdiff = "0.2.1"
tempfile = "3.13"
gag = "1.0"
csv = "1.3"
regex = "1.10"
chrono = { version = "0.4", features = ["serde"] }
# OpenVM: the varunthakore fork (varun/zks-audit) carries the fault-injection
# hooks and `fuzzer_utils` that arguzz-plus needs. trace-mutation's openvm
# support is optional (off by default) and resolves against the same source, so
# a single fork keeps the openvm crates from resolving to duplicate instances.
openvm-sdk = { git = "https://github.com/varunthakore/openvm.git", branch = "varun/zks-audit", package = "openvm-sdk" }
openvm-sdk-config = { git = "https://github.com/varunthakore/openvm.git", branch = "varun/zks-audit", package = "openvm-sdk-config", default-features = false }
openvm-circuit = { git = "https://github.com/varunthakore/openvm.git", branch = "varun/zks-audit", package = "openvm-circuit" }
openvm-transpiler = { git = "https://github.com/varunthakore/openvm.git", branch = "varun/zks-audit", package = "openvm-transpiler" }
openvm-build = { git = "https://github.com/varunthakore/openvm.git", branch = "varun/zks-audit", package = "openvm-build" }
# stark-backend lives in a separate repo; branch (not rev) must match openvm's
# own source specifier or Cargo creates duplicate crate instances.
openvm-stark-backend = { git = "https://github.com/openvm-org/stark-backend.git", branch = "develop-v2", default-features = false }
openvm-stark-sdk = { git = "https://github.com/openvm-org/stark-backend.git", branch = "develop-v2", default-features = false }
openvm_fuzzer_utils = { git = "https://github.com/varunthakore/openvm.git", branch = "varun/zks-audit", package = "fuzzer_utils" }
# SP1 dependencies (v6.0.1)
sp1-core-executor = { git = "https://github.com/succinctlabs/sp1.git", tag = "v6.0.1" }
sp1-core-machine = { git = "https://github.com/succinctlabs/sp1.git", tag = "v6.0.1" }
sp1-hypercube = { git = "https://github.com/succinctlabs/sp1.git", tag = "v6.0.1" }
sp1-primitives = { git = "https://github.com/succinctlabs/sp1.git", tag = "v6.0.1" }
sp1-build = { git = "https://github.com/succinctlabs/sp1.git", tag = "v6.0.1" }
slop-algebra = { git = "https://github.com/succinctlabs/sp1.git", tag = "v6.0.1" }
slop-alloc = { git = "https://github.com/succinctlabs/sp1.git", tag = "v6.0.1" }
slop-challenger = { git = "https://github.com/succinctlabs/sp1.git", tag = "v6.0.1" }
slop-multilinear = { git = "https://github.com/succinctlabs/sp1.git", tag = "v6.0.1" }
# RISC0 v2.0.0 dependencies (from local fork submodule for trace-level mutation)
# Aliased with "-v2" suffix so risc0-latest can coexist in the future.
# In Rust source: `use risc0_v2_zkvm`, `use risc0_v2_binfmt`, etc.
risc0-v2-binfmt = { package = "risc0-binfmt", default-features = false, path = "zkvms/risc0-v2/risc0/binfmt" }
risc0-v2-build = { package = "risc0-build", default-features = false, path = "zkvms/risc0-v2/risc0/build" }
risc0-v2-circuit-rv32im = { package = "risc0-circuit-rv32im", default-features = false, path = "zkvms/risc0-v2/risc0/circuit/rv32im" }
risc0-v2-circuit-rv32im-sys = { package = "risc0-circuit-rv32im-sys", default-features = false, path = "zkvms/risc0-v2/risc0/circuit/rv32im-sys" }
risc0-v2-zkp = { package = "risc0-zkp", default-features = false, path = "zkvms/risc0-v2/risc0/zkp" }
risc0-v2-zkvm = { package = "risc0-zkvm", default-features = false, path = "zkvms/risc0-v2/risc0/zkvm" }
# RISC0 v3.0.5 dependencies (from local fork submodule for trace-level mutation)
# Aliased with "-v3" suffix to coexist with risc0-v2.
# In Rust source: `use risc0_v3_zkvm`, `use risc0_v3_binfmt`, etc.
risc0-v3-binfmt = { package = "risc0-binfmt", default-features = false, path = "zkvms/risc0-v3/risc0/binfmt" }
risc0-v3-build = { package = "risc0-build", default-features = false, path = "zkvms/risc0-v3/risc0/build" }
risc0-v3-circuit-rv32im = { package = "risc0-circuit-rv32im", default-features = false, path = "zkvms/risc0-v3/risc0/circuit/rv32im" }
risc0-v3-circuit-rv32im-sys = { package = "risc0-circuit-rv32im-sys", default-features = false, path = "zkvms/risc0-v3/risc0/circuit/rv32im-sys" }
risc0-v3-zkp = { package = "risc0-zkp", default-features = false, path = "zkvms/risc0-v3/risc0/zkp" }
risc0-v3-zkvm = { package = "risc0-zkvm", default-features = false, path = "zkvms/risc0-v3/risc0/zkvm" }
# Pico v1.3.0 dependencies
pico-vm = { git = "https://github.com/brevis-network/pico.git", tag = "v1.3.0", package = "pico-vm" }
# Plonky3 fork used by pico (same rev as pico workspace)
p3-field = { git = "https://github.com/brevis-network/Plonky3.git", rev = "f5056c9" }
p3-koala-bear = { git = "https://github.com/brevis-network/Plonky3.git", rev = "f5056c9", features = ["nightly-features"] }
p3-matrix = { git = "https://github.com/brevis-network/Plonky3.git", rev = "f5056c9" }
# Jolt v0.3.0-alpha dependencies (SNARK-based zkVM: Spartan + Dory PCS over BN254)
jolt-core = { git = "https://github.com/a16z/jolt.git", tag = "v0.3.0-alpha", features = ["host", "prover"] }
jolt-tracer = { package = "tracer", git = "https://github.com/a16z/jolt.git", tag = "v0.3.0-alpha" }
jolt-common = { package = "common", git = "https://github.com/a16z/jolt.git", tag = "v0.3.0-alpha", features = ["std"] }
ark-bn254 = { version = "0.5.0", default-features = false }
ark-serialize = { version = "0.5.0", default-features = false }
# Async runtime
tokio = { version = "1.42", features = ["rt-multi-thread", "sync"] }
# ERE dependencies
ere-zkvm-interface = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15d36aa0a5d552a5159087884e7bea9ea74c745", package = "ere-zkvm-interface" }
ere-dockerized = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15d36aa0a5d552a5159087884e7bea9ea74c745", package = "ere-dockerized" }
ere-io = { git = "https://github.com/eth-applied-research-group/ere", rev = "d15d36aa0a5d552a5159087884e7bea9ea74c745", package = "ere-io" }
ere-reth-guest = { git = "https://github.com/eth-act/zkevm-benchmark-workload.git", rev = "e3ac2ded0678377ec09d781f1331159e3c36633d", package = "reth-guest" }
ere-guest-libs = { git = "https://github.com/eth-act/zkevm-benchmark-workload.git", rev = "e3ac2ded0678377ec09d781f1331159e3c36633d", package = "guest-libs" }
ere-witness-generator = { git = "https://github.com/eth-act/zkevm-benchmark-workload.git", rev = "e3ac2ded0678377ec09d781f1331159e3c36633d", package = "witness-generator" }
# Jolt requires a forked arkworks (a16z/arkworks-algebra feat/fewer-reductions branch).
# These patches redirect crates-io versions to the fork so Jolt's crypto primitives
# resolve correctly.
[patch.crates-io]
ark-ff = { git = "https://github.com/a16z/arkworks-algebra", branch = "feat/fewer-reductions" }
ark-ec = { git = "https://github.com/a16z/arkworks-algebra", branch = "feat/fewer-reductions" }
ark-serialize = { git = "https://github.com/a16z/arkworks-algebra", branch = "feat/fewer-reductions" }
ark-bn254 = { git = "https://github.com/a16z/arkworks-algebra", branch = "feat/fewer-reductions" }
jolt-optimizations = { git = "https://github.com/a16z/arkworks-algebra", branch = "feat/fewer-reductions" }
allocative = { git = "https://github.com/facebookexperimental/allocative", rev = "85b773d85d526d068ce94724ff7a7b81203fc95e" }