forked from succinctlabs/op-succinct
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCargo.toml
More file actions
281 lines (260 loc) · 14.4 KB
/
Copy pathCargo.toml
File metadata and controls
281 lines (260 loc) · 14.4 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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
[workspace]
members = [
"utils/client",
"utils/host",
"utils/build",
"utils/proof",
"utils/signer",
"utils/ethereum/client",
"utils/ethereum/host",
"programs/range/*",
"programs/aggregation",
"scripts/*",
"validity",
"bindings",
]
resolver = "2"
[workspace.package]
license = "MIT"
edition = "2021"
authors = ["ratankaliani", "zachobront", "fakedev9999", "yuwen01"]
homepage = "https://succinctlabs.github.io/op-succinct/"
repository = "https://github.com/succinctlabs/op-succinct"
version = "3.12.0"
[workspace.dependencies]
# general
anyhow = { version = "1.0.86", default-features = false }
thiserror = { version = "2.0.3" }
cfg-if = "1.0.0"
spin = { version = "0.10.0" }
lru = "0.12.3"
async-trait = "0.1.80"
sha2 = "0.10.8"
tokio = { version = "1.44.2", features = ["full"] }
clap = "4.5.9"
cargo_metadata = "0.18.1"
dotenv = "0.15.0"
num-format = "0.4.4"
futures = "0.3.30"
serde_cbor = "0.11.2"
log = "0.4.22"
itertools = "0.13.0"
reqwest = { version = "0.12", features = ["json"] }
csv = "1.3.0"
serde = { version = "1.0.219", features = ["derive"] }
serde_json = { version = "1.0.117", default-features = false }
rkyv = { version = "0.8", features = ["hashbrown-0_15", "std"] }
hex = "0.4.3"
bincode = "1.3.3"
base64 = "0.22.1"
tower-http = { version = "0.5.2", features = ["limit"] }
lazy_static = "1.5.0"
tracing = { version = "0.1.40", default-features = false }
tracing-subscriber = { version = "0.3.22", features = ["fmt", "json"] }
tracing-opentelemetry = "^0.24"
opentelemetry = { version = "^0.23.0", features = ["trace"] }
opentelemetry_sdk = { version = "^0.23.0", features = [
"trace",
"rt-tokio",
"logs_level_enabled",
] }
opentelemetry-stdout = { version = "0.2.0", features = ["trace"] }
opentelemetry-otlp = { version = "^0.16.0", features = ["default", "logs"] }
opentelemetry-appender-tracing = "0.4.0"
# [MANTLE] Aligned to 0.18 to match the version pulled transitively by kona-cli
# (kona-host). Two metrics-exporter-prometheus versions in one binary race over the
# single global `metrics` recorder, leaving the /metrics HTTP endpoint reading a
# different (frozen) registry than the one ValidityGauge::set() writes to.
metrics = "0.24.1"
metrics-exporter-prometheus = "0.18"
metrics-process = "2.4.0"
strum = "0.27.1"
strum_macros = "0.27.1"
tempfile = "3.10.1"
# vergen - pin to exact versions for rollup-boost compatibility
vergen = "=9.0.4"
vergen-git2 = "=1.0.5"
# kona
kona-mpt = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
kona-derive = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3", default-features = false }
kona-driver = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
kona-preimage = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3", features = [
"rkyv",
"serde",
] }
kona-executor = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
kona-proof = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
kona-client = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
kona-host = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
kona-providers-alloy = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
# Note: kona-rpc is NOT included to avoid rollup-boost -> reth-optimism-primitives dependency.
# RPC types are defined locally in utils/host/src/rpc_types.rs instead.
kona-protocol = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3", default-features = false }
kona-registry = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3", default-features = false }
kona-genesis = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3", default-features = false }
# op-succinct
op-succinct-prove = { path = "scripts/prove" }
op-succinct-client-utils = { path = "utils/client" }
op-succinct-host-utils = { path = "utils/host" }
op-succinct-build-utils = { path = "utils/build" }
op-succinct-elfs = { path = "utils/elfs" }
op-succinct-validity = { path = "validity" }
op-succinct-ethereum-client-utils = { path = "utils/ethereum/client" }
op-succinct-ethereum-host-utils = { path = "utils/ethereum/host" }
op-succinct-proof-utils = { path = "utils/proof" }
op-succinct-signer-utils = { path = "utils/signer" }
op-succinct-range-utils = { path = "programs/range/utils" }
op-succinct-bindings = { path = "bindings" }
# Alloy (Network)
#
# [MANTLE] Held at 2.0.4 rather than upstream v3.12.0's 2.0.5. These are caret
# requirements, so `2.0.5` lets cargo resolve the whole family to the newest 2.x
# (2.4.1 at the time of this sync). alloy-genesis >= 2.4.1 adds a `bogota_time`
# field to `ChainConfig`, which mantle-v2's vendored kona (`kona-registry`
# mantle-v1.6.3) does not initialize — the workspace fails to compile. Upstream avoids
# this only because its own lockfile pins the family lower. Our kona is pinned to
# mantle-v2, so the alloy family moves when mantle-v2's kona moves, not before.
alloy-signer-local = { version = "2.0.4" }
alloy-provider = { version = "2.0.4" }
alloy-transport = { version = "2.0.4" }
alloy-transport-http = { version = "2.0.4" }
# [MANTLE] Test-only: constructing `ErrorPayload` to pin that relay-rejection classification reads
# revert data from the `data` field and never from the client's message wording.
alloy-json-rpc = { version = "2.0.4" }
alloy-contract = { version = "2.0.4" }
alloy-network = { version = "2.0.4" }
# Alloy
alloy-rlp = { version = "0.3.13", default-features = false }
alloy-trie = { version = "0.9.4", default-features = false, features = [
"ethereum",
] }
alloy-eips = { version = "2.0.4", default-features = false }
alloy-serde = { version = "2.0.4", default-features = false }
alloy-consensus = { version = "2.0.4", default-features = false }
alloy-tx-macros = { version = "2.0.4", default-features = false }
alloy-rpc-types = { version = "2.0.4", default-features = false }
alloy-rpc-client = { version = "2.0.4", default-features = false }
alloy-node-bindings = { version = "2.0.4", default-features = false }
alloy-rpc-types-engine = { version = "2.0.4", default-features = false }
alloy-rpc-types-beacon = { version = "2.0.4", default-features = false }
alloy-rpc-types-eth = { version = "2.0.4", default-features = false }
alloy-rpc-types-trace = { version = "2.0.4", default-features = false }
alloy-signer = { version = "2.0.4", default-features = false }
alloy-signer-gcp = { version = "2.0.4", default-features = false }
alloy = { version = "2.0.4", features = [
"reqwest",
"network",
"providers",
"sol-types",
"rpc-types",
] }
# Keccak with the SHA3 patch is more efficient than the default Keccak.
alloy-primitives = { version = "1.5.6", default-features = false, features = [
"sha3-keccak",
] }
alloy-sol-types = { version = "1.5.6", default-features = false }
alloy-sol-macro = { version = "1.5.6", default-features = false }
alloy-chains = { version = "0.2.33", default-features = false }
# OP Alloy - from mantle-v2 rust workspace (aligned with kona develop + alloy 2.0.4)
op-alloy-consensus = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3", default-features = false }
op-alloy-rpc-types = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3", default-features = false }
op-alloy-rpc-types-engine = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3", default-features = false }
op-alloy-network = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3", default-features = false }
# Execution
alloy-evm = { version = "0.34.0", default-features = false }
alloy-op-evm = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3", default-features = false }
# [MANTLE] revm sourced from mantle-xyz/revm at tag v107-mantle-arsia.2 (revm v38 +
# Mantle protocol changes: ARSIA/JOVIAN, BVM_ETH, token_ratio, DA footprint,
# Arsia fee validation, and the GHSA-5vfr-x84h-hmvf fix). Aligns with the mantle-v2
# rust workspace; the tag moves in lockstep with the mantle-v2 kona tag above.
# Replaces the former mantle-xyz/revm-ghsa-5vfr-x84h-hmvf @ 99707e9f pin: that fork
# was a private stopgap carrying the GHSA fix, and being private also broke
# `just build-elfs` (the SP1 docker build cannot authenticate to it).
revm = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2", default-features = false, features = [
"bn",
] }
revm-precompile = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2", default-features = false }
op-revm = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2", default-features = false }
# SP1 v6.4.0 (Hypercube)
sp1-sdk = { version = "=6.4.0", features = ["network", "blocking", "profiling"] }
sp1-lib = { version = "=6.4.0", features = ["verify"] }
sp1-zkvm = { version = "=6.4.0", features = ["verify"] }
sp1-build = "=6.4.0"
sp1-prover = "=6.4.0"
sp1-prover-types = "=6.4.0"
sp1-core-executor = "=6.4.0"
sp1-hypercube = "=6.4.0"
sp1-primitives = "=6.4.0"
sp1-cluster-artifact = { git = "https://github.com/succinctlabs/sp1-cluster.git", tag = "v2.7.2" }
sp1-cluster-common = { git = "https://github.com/succinctlabs/sp1-cluster.git", tag = "v2.7.2" }
sp1-cluster-utils = { git = "https://github.com/succinctlabs/sp1-cluster.git", tag = "v2.7.2" }
# kzg
kzg-rs = { version = "0.2.8", features = ["rkyv", "serde"] }
c-kzg = { version = "2.1.5", default-features = false }
# Cloud dependencies
# [MANTLE] Held at 0.27 to match alloy-signer-gcp 2.0.4. Upstream v3.12.0 moved this
# to 0.29 + explicit `tls-webpki-roots` because it also moved alloy to 2.0.5; we keep
# the alloy family at 2.0.4 (see the Alloy block above), so the gcloud-sdk pin stays
# with it. Bump both together or not at all.
gcloud-sdk = "0.27"
[profile.release-client-lto]
inherits = "release"
panic = "abort"
codegen-units = 1
lto = "fat"
[patch.crates-io]
sha2 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", package = "sha2", tag = "patch-sha2-0.10.9-sp1-6.0.0" }
# [MANTLE] Held at the 0.10.8 patch tag, NOT upstream v3.12.0's 0.11.0.
#
# This tag must match the sha3 requirement of whatever `alloy-primitives` resolves to,
# because `sha3-keccak` is what routes alloy's `keccak256()` through this crate — and the
# patched fork is what turns that into an SP1 precompile syscall instead of software keccak.
# alloy-primitives 1.5.x -> sha3 "0.10.8" -> this tag
# alloy-primitives 1.6.0 -> sha3 "0.11" -> upstream's patch-sha3-0.11.0 tag
# sha3 is 0.x, so 0.11 is NOT a semver-compatible substitute for a 0.10.x requirement:
# pairing our 1.5.x-era resolution with upstream's 0.11.0 tag makes cargo report
# "patch ... was not used in the crate graph" and silently fall back to unaccelerated
# keccak. Upstream is self-consistent (1.6.0 + 0.11.0); we stay self-consistent here.
#
# We deliberately do NOT move alloy-primitives to 1.6.0: it belongs to the same version
# lockstep as the kona dependency family above, so it moves when mantle-v2's kona moves.
#
# When changing this tag, verify with: grep -c '^\[\[patch.unused\]\]' Cargo.lock # want 0
# Note cargo will not re-resolve sha3 on its own if the locked version still satisfies the
# requirement — force it with `cargo update -p sha3 --precise <version>`.
sha3 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", package = "sha3", tag = "patch-sha3-0.10.8-sp1-6.0.0" }
substrate-bn = { git = "https://github.com/sp1-patches/bn", tag = "patch-0.6.0-sp1-6.0.0-substrate-bn" }
p256 = { git = "https://github.com/sp1-patches/elliptic-curves", tag = "patch-p256-13.2-sp1-6.0.0" }
k256 = { git = "https://github.com/sp1-patches/elliptic-curves", tag = "patch-k256-13.4-sp1-6.0.0" }
tiny-keccak = { git = "https://github.com/sp1-patches/tiny-keccak", tag = "patch-2.0.2-sp1-6.0.0" }
# Patch op-alloy and alloy-op-evm to use the mantle-v2 versions
# Required so transitive deps from kona + op-alloy all resolve to the same source.
op-alloy-consensus = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
op-alloy-network = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
op-alloy-rpc-types = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
op-alloy-rpc-types-engine = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
op-alloy-provider = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
alloy-op-evm = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
alloy-op-hardforks = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
op-alloy = { git = "https://github.com/mantle-xyz/mantle-v2", tag = "mantle-v1.6.3" }
# [MANTLE] Patch every revm-family crate (including transitively-pulled ones) to
# mantle-xyz/revm @ tag v107-mantle-arsia.2. Matches the pattern in mantle-v2/rust/Cargo.toml.
# All entries must share one tag — a split leaves two revm versions in the graph and
# surfaces as OpSpecId / OpHaltReason / OpEvm type mismatches against the kona executor.
revm = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-bytecode = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-context = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-context-interface = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-database = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-database-interface = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-handler = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-inspector = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-interpreter = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-precompile = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-primitives = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
revm-state = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
op-revm = { git = "https://github.com/mantle-xyz/revm", tag = "v107-mantle-arsia.2" }
# [MANTLE] alloy-evm is intentionally NOT patched: it resolves from crates.io = upstream
# alloy-rs/evm v0.34.0. The former mantle-xyz/evm@mantle-v0.34.0 fork only added a dead-code
# `token_ratio` trait method; mantle-v2 rust dropped the fork at d2e4ebea (commit 75d90fc71),
# so we drop the patch here too to stay in lockstep. See MANTLE_CHANGES.md §2.2 / §3.1.