diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 994c0ef2..dfbe25dd 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -23,9 +23,8 @@ jobs: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - name: Install toolchain - uses: dtolnay/rust-toolchain@master + uses: dtolnay/rust-toolchain@nightly with: - toolchain: nightly-2025-04-24 components: clippy rustfmt llvm-tools-preview - name: Set up rust cache diff --git a/Cargo.lock b/Cargo.lock index 9d490b55..a908a370 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,6 +28,41 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array 0.14.9", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "aggchain-proof-builder" version = "0.1.0" @@ -71,7 +106,7 @@ dependencies = [ "alloy", "async-trait", "eyre", - "jsonrpsee", + "jsonrpsee 0.24.10", "mockall 0.13.1", "mockito", "prover-alloy", @@ -183,11 +218,11 @@ dependencies = [ "hex", "http 1.3.1", "hyper-util", - "jsonrpsee", + "jsonrpsee 0.24.10", "mockall 0.13.1", "proposer-client", "proposer-service", - "prost", + "prost 0.13.5", "prover-config", "prover-engine", "prover-executor", @@ -230,7 +265,7 @@ dependencies = [ "alloy-primitives", "eyre", "pbjson 0.7.0", - "prost", + "prost 0.13.5", "prover-elf-utils", "serde", "sp1-sdk", @@ -293,7 +328,7 @@ dependencies = [ "agglayer-interop-types", "bincode", "pbjson 0.9.0", - "prost", + "prost 0.13.5", "serde", "thiserror 2.0.17", "tonic-types", @@ -343,9 +378,9 @@ dependencies = [ "buildstructor", "futures", "lazy_static", - "opentelemetry", + "opentelemetry 0.29.1", "opentelemetry-prometheus", - "opentelemetry_sdk", + "opentelemetry_sdk 0.29.0", "prometheus", "thiserror 2.0.17", "tokio", @@ -387,6 +422,21 @@ dependencies = [ "memchr", ] +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + [[package]] name = "allocator-api2" version = "0.2.21" @@ -590,6 +640,29 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "alloy-evm" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08e9e656d58027542447c1ca5aa4ca96293f09e6920c4651953b7451a7c35e4e" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-hardforks", + "alloy-op-hardforks", + "alloy-primitives", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-sol-types", + "auto_impl", + "derive_more 2.1.1", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm 11.3.0", + "revm 30.2.0", + "thiserror 2.0.17", +] + [[package]] name = "alloy-evm" version = "0.23.2" @@ -608,8 +681,8 @@ dependencies = [ "derive_more 2.1.1", "op-alloy-consensus", "op-alloy-rpc-types-engine", - "op-revm", - "revm", + "op-revm 12.0.1", + "revm 31.0.1", "thiserror 2.0.17", ] @@ -639,6 +712,7 @@ dependencies = [ "alloy-primitives", "auto_impl", "dyn-clone", + "serde", ] [[package]] @@ -707,6 +781,24 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-op-evm" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "593ce78cea49e4700b4d9061fb16a5455265176541eeba91265f548659d33229" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.22.6", + "alloy-op-hardforks", + "alloy-primitives", + "auto_impl", + "op-alloy-consensus", + "op-revm 11.3.0", + "revm 30.2.0", + "thiserror 2.0.17", +] + [[package]] name = "alloy-op-evm" version = "0.23.2" @@ -715,13 +807,13 @@ checksum = "3ad8f3a679eb44ee21481edabd628d191c9a42d182ed29923b4d43a27a0f2cc8" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.2", "alloy-op-hardforks", "alloy-primitives", "auto_impl", "op-alloy-consensus", - "op-revm", - "revm", + "op-revm 12.0.1", + "revm 31.0.1", "thiserror 2.0.17", ] @@ -735,6 +827,7 @@ dependencies = [ "alloy-hardforks", "alloy-primitives", "auto_impl", + "serde", ] [[package]] @@ -749,6 +842,7 @@ dependencies = [ "const-hex", "derive_more 2.1.1", "foldhash 0.2.0", + "getrandom 0.3.4", "hashbrown 0.16.0", "indexmap 2.12.0", "itoa", @@ -782,6 +876,7 @@ dependencies = [ "alloy-rpc-client", "alloy-rpc-types-anvil", "alloy-rpc-types-debug", + "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-rpc-types-trace", "alloy-rpc-types-txpool", @@ -800,7 +895,7 @@ dependencies = [ "futures-utils-wasm", "lru 0.13.0", "parking_lot", - "pin-project", + "pin-project 1.1.10", "reqwest", "serde", "serde_json", @@ -869,7 +964,7 @@ dependencies = [ "alloy-transport-ipc", "alloy-transport-ws", "futures", - "pin-project", + "pin-project 1.1.10", "reqwest", "serde", "serde_json", @@ -921,6 +1016,22 @@ dependencies = [ "alloy-serde", ] +[[package]] +name = "alloy-rpc-types-beacon" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32598a2443750a2e884c1b48efccaeeaae75e7eb4e0f13df9146b78107b4c301" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "derive_more 2.1.1", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.17", +] + [[package]] name = "alloy-rpc-types-debug" version = "1.2.1" @@ -947,6 +1058,7 @@ dependencies = [ "derive_more 2.1.1", "ethereum_ssz", "ethereum_ssz_derive", + "jsonwebtoken", "rand 0.8.5", "serde", "strum 0.27.2", @@ -1044,6 +1156,24 @@ dependencies = [ "tracing", ] +[[package]] +name = "alloy-signer-gcp" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3fe5d26c2e1144aa89d65a0f1d1faec4dbf4c3ea1f7375888274c6609de2234" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "gcloud-sdk", + "k256 0.13.4", + "spki 0.7.3", + "thiserror 2.0.17", + "tracing", +] + [[package]] name = "alloy-signer-local" version = "1.2.1" @@ -1163,11 +1293,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64b722073c76f2de7e118d546ee1921c50710f97feb32aed50db94cfa5b663e1" dependencies = [ "alloy-json-rpc", + "alloy-rpc-types-engine", "alloy-transport", + "http-body-util", + "hyper 1.7.0", + "hyper-tls", + "hyper-util", + "jsonwebtoken", + "opentelemetry 0.31.0", + "opentelemetry-http", "reqwest", "serde_json", "tower 0.5.2", "tracing", + "tracing-opentelemetry 0.32.0", "url", ] @@ -1183,7 +1322,7 @@ dependencies = [ "bytes", "futures", "interprocess", - "pin-project", + "pin-project 1.1.10", "serde", "serde_json", "tokio", @@ -1615,6 +1754,51 @@ dependencies = [ "serde", ] +[[package]] +name = "asn1-rs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror 2.0.17", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", + "synstructure 0.13.2", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "asn1_der" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "155a5a185e42c6b77ac7b88a15143d930a9e9727a5b7b77eed417404ab15c247" + [[package]] name = "assert-json-diff" version = "2.0.2" @@ -1625,6 +1809,48 @@ dependencies = [ "serde_json", ] +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-compression" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" +dependencies = [ + "compression-codecs", + "compression-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -1669,12 +1895,46 @@ dependencies = [ "rustc_version 0.4.1", ] +[[package]] +name = "asynchronous-codec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a860072022177f903e59730004fb5dc13db9275b79bb2aef7ba8ce831956c233" +dependencies = [ + "bytes", + "futures-sink", + "futures-util", + "memchr", + "pin-project-lite", +] + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + [[package]] name = "atomic-waker" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "attohttpc" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e2cdb6d5ed835199484bb92bb8b3edd526effe995c61732580439c1a67e2e9" +dependencies = [ + "base64 0.22.1", + "http 1.3.1", + "log", + "url", +] + [[package]] name = "aurora-engine-modexp" version = "1.2.0" @@ -2082,6 +2342,34 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +dependencies = [ + "async-trait", + "axum-core 0.3.4", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "itoa", + "matchit 0.7.3", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 0.1.2", + "tower 0.4.13", + "tower-layer", + "tower-service", +] + [[package]] name = "axum" version = "0.7.9" @@ -2108,7 +2396,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tower 0.5.2", "tower-layer", @@ -2144,7 +2432,7 @@ dependencies = [ "serde_path_to_error", "serde_urlencoded", "sha1", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tokio-tungstenite 0.28.0", "tower 0.5.2", @@ -2153,6 +2441,23 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 0.2.12", + "http-body 0.4.6", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + [[package]] name = "axum-core" version = "0.4.5" @@ -2168,7 +2473,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", @@ -2187,7 +2492,7 @@ dependencies = [ "http-body-util", "mime", "pin-project-lite", - "sync_wrapper", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", @@ -2224,6 +2529,16 @@ dependencies = [ "tokio", ] +[[package]] +name = "backon" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef" +dependencies = [ + "fastrand", + "tokio", +] + [[package]] name = "backtrace" version = "0.3.76" @@ -2240,6 +2555,12 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + [[package]] name = "base16ct" version = "0.1.1" @@ -2252,6 +2573,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base256emoji" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" +dependencies = [ + "const-str", + "match-lookup", +] + [[package]] name = "base64" version = "0.13.1" @@ -2287,17 +2618,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] -name = "bimap" -version = "0.6.3" +name = "bech32" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" +checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" [[package]] -name = "bincode" -version = "1.3.3" +name = "beef" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" + +[[package]] +name = "bigdecimal" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695" +dependencies = [ + "autocfg", + "libm", + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "bimap" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ "serde", ] @@ -2307,7 +2663,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags", + "bitflags 2.10.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -2327,7 +2683,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags", + "bitflags 2.10.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -2372,6 +2728,12 @@ dependencies = [ "hex-conservative", ] +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.10.0" @@ -2454,6 +2816,18 @@ dependencies = [ "objc2", ] +[[package]] +name = "blockstore" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "509096e88e431095763b3f5ee1e1cdb09212e4d5b2eccc91ddea965deefedb7d" +dependencies = [ + "cid", + "dashmap", + "multihash 0.19.3", + "thiserror 2.0.17", +] + [[package]] name = "bls12_381" version = "0.7.1" @@ -2502,12 +2876,51 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + [[package]] name = "bs58" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "buddy_system_allocator" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0108968a3a2dab95b089c0fc3f1afa7759aa5ebe6f1d86d206d6f7ba726eb" +dependencies = [ + "spin 0.9.8", +] + [[package]] name = "buildstructor" version = "0.5.4" @@ -2535,6 +2948,35 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" +[[package]] +name = "bytecheck" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0caa33a2c0edca0419d15ac723dff03f1956f7978329b1e3b5fdaaaed9d3ca8b" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "rancor", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + [[package]] name = "bytemuck" version = "1.24.0" @@ -2580,6 +3022,16 @@ dependencies = [ "either", ] +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + [[package]] name = "c-kzg" version = "2.1.5" @@ -2604,6 +3056,41 @@ dependencies = [ "serde_core", ] +[[package]] +name = "canoe-bindings" +version = "0.1.0" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.1.0#b94690a5d7ebb68449f0b09d4b2c6c2c60aa4eac" +dependencies = [ + "alloy-sol-types", + "serde", +] + +[[package]] +name = "canoe-verifier" +version = "0.1.0" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.1.0#b94690a5d7ebb68449f0b09d4b2c6c2c60aa4eac" +dependencies = [ + "alloy-genesis", + "alloy-primitives", + "eigenda-cert", + "reth-chainspec", + "reth-evm", + "revm-primitives", + "serde", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "canoe-verifier-address-fetcher" +version = "0.1.0" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.1.0#b94690a5d7ebb68449f0b09d4b2c6c2c60aa4eac" +dependencies = [ + "alloy-primitives", + "eigenda-cert", + "thiserror 2.0.17", +] + [[package]] name = "cargo-platform" version = "0.1.9" @@ -2658,6 +3145,73 @@ dependencies = [ "shlex", ] +[[package]] +name = "celestia-proto" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a6bc833fe0048c158f4740cb4b08cbfb6f407f2bf8ff369d3f6ade932d628f" +dependencies = [ + "bytes", + "prost 0.13.5", + "prost-build", + "prost-types 0.13.5", + "protox", + "serde", + "subtle-encoding", + "tendermint-proto", +] + +[[package]] +name = "celestia-rpc" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee1c5619076e2f1aa8cbac527138594fe2835827d2eac150610efbdbfc990fc" +dependencies = [ + "base64 0.22.1", + "celestia-proto", + "celestia-types", + "http 1.3.1", + "jsonrpsee 0.26.0", + "serde", + "serde_repr", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "celestia-types" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68d248009d2b38857ad5d0b6d6c754754132b19e836ba205bdda14631065fa98" +dependencies = [ + "base64 0.22.1", + "bech32", + "bitvec", + "blockstore", + "bytes", + "celestia-proto", + "cid", + "const_format", + "enum_dispatch", + "getrandom 0.2.16", + "k256 0.13.4", + "leopard-codec", + "libp2p-identity", + "lumina-utils", + "multiaddr 0.18.2", + "multihash 0.19.3", + "nmt-rs", + "prost 0.13.5", + "rust_decimal", + "serde", + "serde_repr", + "sha2 0.10.9", + "tendermint", + "tendermint-proto", + "thiserror 2.0.17", + "time", +] + [[package]] name = "cesu8" version = "1.1.0" @@ -2685,6 +3239,30 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", +] + [[package]] name = "chrono" version = "0.4.42" @@ -2692,11 +3270,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ "iana-time-zone", + "js-sys", "num-traits", "serde", + "wasm-bindgen", "windows-link 0.2.1", ] +[[package]] +name = "cid" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3147d8272e8fa0ccd29ce51194dd98f79ddfb8191ba9e3409884e751798acf3a" +dependencies = [ + "core2", + "multibase", + "multihash 0.19.3", + "unsigned-varint 0.8.0", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + [[package]] name = "clang-sys" version = "1.8.1" @@ -2809,6 +3412,32 @@ dependencies = [ "memchr", ] +[[package]] +name = "compression-codecs" +version = "0.4.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" +dependencies = [ + "compression-core", + "flate2", + "memchr", +] + +[[package]] +name = "compression-core" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "console" version = "0.15.11" @@ -2818,7 +3447,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width", + "unicode-width 0.2.2", "windows-sys 0.59.0", ] @@ -2840,6 +3469,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-str" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" + [[package]] name = "const_format" version = "0.2.35" @@ -2934,6 +3569,15 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + [[package]] name = "critical-section" version = "1.2.0" @@ -2968,6 +3612,15 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -3011,9 +3664,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array 0.14.9", + "rand_core 0.6.4", "typenum", ] +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + [[package]] name = "ctrlc" version = "3.5.1" @@ -3021,10 +3684,50 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73736a89c4aff73035ba2ed2e565061954da00d4970fc9ac25dcc85a2a20d790" dependencies = [ "dispatch2", - "nix", + "nix 0.30.1", "windows-sys 0.61.2", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version 0.4.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "curve25519-dalek-ng" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.6.4", + "subtle-ng", + "zeroize", +] + [[package]] name = "darling" version = "0.20.11" @@ -3195,17 +3898,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] -name = "der" -version = "0.6.1" +name = "data-encoding-macro" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d" dependencies = [ - "const-oid", - "zeroize", + "data-encoding", + "data-encoding-macro-internal", ] [[package]] -name = "der" +name = "data-encoding-macro-internal" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" +dependencies = [ + "data-encoding", + "syn 2.0.109", +] + +[[package]] +name = "delay_map" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88e365f083a5cb5972d50ce8b1b2c9f125dc5ec0f50c0248cfb568ae59efcf0b" +dependencies = [ + "futures", + "tokio", + "tokio-util", +] + +[[package]] +name = "der" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "der" version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" @@ -3215,6 +3949,20 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der-parser" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint 0.4.6", + "num-traits", + "rusticata-macros", +] + [[package]] name = "deranged" version = "0.5.5" @@ -3354,7 +4102,16 @@ version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys", + "dirs-sys 0.4.1", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys 0.5.0", ] [[package]] @@ -3365,17 +4122,62 @@ checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", "option-ext", - "redox_users", + "redox_users 0.4.6", "windows-sys 0.48.0", ] +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "discv5" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4b4e7798d2ff74e29cee344dc490af947ae657d6ab5273dde35d58ce06a4d71" +dependencies = [ + "aes", + "aes-gcm", + "alloy-rlp", + "arrayvec", + "ctr", + "delay_map", + "enr 0.13.0", + "fnv", + "futures", + "hashlink 0.9.1", + "hex", + "hkdf", + "lazy_static", + "libp2p-identity", + "lru 0.12.5", + "more-asserts", + "multiaddr 0.18.2", + "parking_lot", + "rand 0.8.5", + "smallvec", + "socket2 0.5.10", + "tokio", + "tracing", + "uint 0.10.0", + "zeroize", +] + [[package]] name = "dispatch2" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" dependencies = [ - "bitflags", + "bitflags 2.10.0", "block2", "libc", "objc2", @@ -3398,6 +4200,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + [[package]] name = "dotenvy" version = "0.15.7" @@ -3416,6 +4224,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + [[package]] name = "dunce" version = "1.0.5" @@ -3455,6 +4269,44 @@ dependencies = [ "spki 0.7.3", ] +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8 0.10.2", + "signature 2.2.0", +] + +[[package]] +name = "ed25519-consensus" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8465edc8ee7436ffea81d21a019b16676ee3db267aa8d5a8d729581ecf998b" +dependencies = [ + "curve25519-dalek-ng", + "hex", + "rand_core 0.6.4", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand_core 0.6.4", + "serde", + "sha2 0.10.9", + "subtle", + "zeroize", +] + [[package]] name = "educe" version = "0.6.0" @@ -3467,6 +4319,19 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "eigenda-cert" +version = "0.1.0" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.1.0#b94690a5d7ebb68449f0b09d4b2c6c2c60aa4eac" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "anyhow", + "canoe-bindings", + "serde", + "thiserror 2.0.17", +] + [[package]] name = "either" version = "1.15.0" @@ -3546,7 +4411,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26fa0a0be8915790626d5759eb51fe47435a8eac92c2f212bd2da9aa7f30ea56" dependencies = [ "base64 0.13.1", - "bs58", + "bs58 0.4.0", "bytes", "hex", "k256 0.11.6", @@ -3558,6 +4423,37 @@ dependencies = [ "zeroize", ] +[[package]] +name = "enr" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "851bd664a3d3a3c175cff92b2f0df02df3c541b4895d0ae307611827aae46152" +dependencies = [ + "alloy-rlp", + "base64 0.22.1", + "bytes", + "ed25519-dalek", + "hex", + "k256 0.13.4", + "log", + "rand 0.8.5", + "serde", + "sha3", + "zeroize", +] + +[[package]] +name = "enum-as-inner" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.109", +] + [[package]] name = "enum-map" version = "2.7.3" @@ -3599,6 +4495,18 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "enum_dispatch" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.109", +] + [[package]] name = "env_filter" version = "0.1.4" @@ -3636,19 +4544,30 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + [[package]] name = "ethereum-consensus" version = "0.1.1" source = "git+https://github.com/succinctlabs/ethereum-consensus?branch=dev#b5ad46a41ba1866992c9d7dc068f18dc00fdb251" dependencies = [ "blst", - "bs58", + "bs58 0.4.0", "c-kzg", - "enr", + "enr 0.6.2", "hex", "integer-sqrt", - "multiaddr", - "multihash", + "multiaddr 0.14.0", + "multihash 0.16.3", "rand 0.8.5", "serde", "serde_json", @@ -3700,6 +4619,27 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + [[package]] name = "eventsource-stream" version = "0.2.3" @@ -3788,6 +4728,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + [[package]] name = "find-msvc-tools" version = "0.1.4" @@ -3806,6 +4752,42 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "flate2" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "flex-error" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c606d892c9de11507fa0dcffc116434f94e105d0bbdc4e405b61519464c49d7b" +dependencies = [ + "paste", +] + +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "futures-core", + "futures-sink", + "spin 0.9.8", +] + [[package]] name = "fnv" version = "1.0.7" @@ -3860,6 +4842,15 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + [[package]] name = "funty" version = "2.0.0" @@ -3881,6 +4872,16 @@ dependencies = [ "futures-util", ] +[[package]] +name = "futures-bounded" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91f328e7fb845fc832912fb6a34f40cf6d1888c92f974d1893a54e97b5ff542e" +dependencies = [ + "futures-timer", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.31" @@ -3906,6 +4907,18 @@ dependencies = [ "futures-core", "futures-task", "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", ] [[package]] @@ -3914,6 +4927,16 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "futures-core", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.31" @@ -3925,6 +4948,17 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "futures-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" +dependencies = [ + "futures-io", + "rustls 0.23.35", + "rustls-pki-types", +] + [[package]] name = "futures-sink" version = "0.3.31" @@ -3978,20 +5012,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" [[package]] -name = "gen_ops" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" - -[[package]] -name = "generic-array" -version = "0.14.9" +name = "gcloud-sdk" +version = "0.27.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +checksum = "c8458d2ad7741b6a16981b84e66b7e4d8026423096da721894769c6980d06ecc" dependencies = [ - "typenum", - "version_check", - "zeroize", + "async-trait", + "bytes", + "chrono", + "futures", + "hyper 1.7.0", + "jsonwebtoken", + "once_cell", + "prost 0.13.5", + "prost-types 0.13.5", + "reqwest", + "secret-vault-value", + "serde", + "serde_json", + "tokio", + "tonic 0.13.1", + "tower 0.5.2", + "tower-layer", + "tower-util", + "tracing", + "url", +] + +[[package]] +name = "gen_ops" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", + "zeroize", ] [[package]] @@ -4031,6 +5093,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gimli" version = "0.32.3" @@ -4043,7 +5115,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" dependencies = [ - "bitflags", + "bitflags 2.10.0", "libc", "libgit2-sys", "log", @@ -4068,7 +5140,7 @@ dependencies = [ "gloo-utils", "http 1.3.1", "js-sys", - "pin-project", + "pin-project 1.1.10", "serde", "serde_json", "thiserror 1.0.69", @@ -4173,6 +5245,12 @@ dependencies = [ "tracing", ] +[[package]] +name = "half" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" + [[package]] name = "halo2" version = "0.1.0-beta.2" @@ -4196,6 +5274,128 @@ dependencies = [ "rayon", ] +[[package]] +name = "hana-blobstream" +version = "0.1.0" +source = "git+https://github.com/celestiaorg/hana?tag=v1.4.0-mocha#748005ad397b4db31a9f7ee5288115bedd447e8b" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-contract", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", + "alloy-trie", + "anyhow", + "bincode", + "celestia-types", + "serde", +] + +[[package]] +name = "hana-celestia" +version = "0.1.0" +source = "git+https://github.com/celestiaorg/hana?tag=v1.4.0-mocha#748005ad397b4db31a9f7ee5288115bedd447e8b" +dependencies = [ + "alloy-primitives", + "async-trait", + "celestia-types", + "kona-derive", + "kona-protocol", + "tracing", +] + +[[package]] +name = "hana-client" +version = "0.1.0" +source = "git+https://github.com/celestiaorg/hana?tag=v1.4.0-mocha#748005ad397b4db31a9f7ee5288115bedd447e8b" +dependencies = [ + "alloy-consensus", + "alloy-evm 0.22.6", + "alloy-op-evm 0.22.6", + "alloy-primitives", + "cfg-if", + "hana-celestia", + "hana-oracle", + "kona-client", + "kona-derive", + "kona-driver", + "kona-executor", + "kona-preimage", + "kona-proof", + "kona-std-fpvm", + "kona-std-fpvm-proc", + "op-alloy-consensus", + "op-revm 11.3.0", + "revm 30.2.0", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "hana-host" +version = "0.1.0" +source = "git+https://github.com/celestiaorg/hana?tag=v1.4.0-mocha#748005ad397b4db31a9f7ee5288115bedd447e8b" +dependencies = [ + "alloy-primitives", + "alloy-provider", + "anyhow", + "async-trait", + "celestia-rpc", + "celestia-types", + "clap", + "hana-client", + "hana-oracle", + "hana-proofs", + "kona-cli", + "kona-client", + "kona-genesis", + "kona-host", + "kona-preimage", + "kona-proof", + "kona-providers-alloy", + "kona-std-fpvm", + "op-alloy-network", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "hana-oracle" +version = "0.1.0" +source = "git+https://github.com/celestiaorg/hana?tag=v1.4.0-mocha#748005ad397b4db31a9f7ee5288115bedd447e8b" +dependencies = [ + "alloy-primitives", + "async-trait", + "bincode", + "celestia-types", + "hana-blobstream", + "hana-celestia", + "kona-preimage", + "kona-proof", + "serde", + "tracing", +] + +[[package]] +name = "hana-proofs" +version = "0.1.0" +source = "git+https://github.com/celestiaorg/hana?tag=v1.4.0-mocha#748005ad397b4db31a9f7ee5288115bedd447e8b" +dependencies = [ + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-eth", + "alloy-sol-types", + "anyhow", + "celestia-rpc", + "celestia-types", + "hana-blobstream", + "tracing", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -4230,10 +5430,30 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" dependencies = [ + "allocator-api2", + "equivalent", "foldhash 0.2.0", "serde", ] +[[package]] +name = "hashlink" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +dependencies = [ + "hashbrown 0.14.5", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] + [[package]] name = "heck" version = "0.4.1" @@ -4273,6 +5493,59 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e712f64ec3850b98572bffac52e2c6f282b29fe6c5fa6d42334b30be438d95c1" +[[package]] +name = "hex_fmt" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" + +[[package]] +name = "hickory-proto" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna", + "ipnet", + "once_cell", + "rand 0.9.2", + "ring", + "socket2 0.5.10", + "thiserror 2.0.17", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "hickory-resolver" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-proto", + "ipconfig", + "moka", + "once_cell", + "parking_lot", + "rand 0.9.2", + "resolv-conf", + "smallvec", + "thiserror 2.0.17", + "tokio", + "tracing", +] + [[package]] name = "hkdf" version = "0.12.4" @@ -4291,6 +5564,120 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "hokulea-client" +version = "0.1.0" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.1.0#b94690a5d7ebb68449f0b09d4b2c6c2c60aa4eac" +dependencies = [ + "alloy-consensus", + "alloy-evm 0.22.6", + "alloy-op-evm 0.22.6", + "hokulea-eigenda", + "kona-client", + "kona-derive", + "kona-driver", + "kona-executor", + "kona-preimage", + "kona-proof", + "op-alloy-consensus", + "op-revm 11.3.0", + "revm 30.2.0", + "tracing", +] + +[[package]] +name = "hokulea-client-bin" +version = "0.1.0" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.1.0#b94690a5d7ebb68449f0b09d4b2c6c2c60aa4eac" +dependencies = [ + "alloy-evm 0.22.6", + "alloy-op-evm 0.22.6", + "cfg-if", + "hokulea-client", + "hokulea-proof", + "kona-client", + "kona-preimage", + "kona-proof", + "kona-std-fpvm", + "kona-std-fpvm-proc", + "op-alloy-consensus", + "op-revm 11.3.0", + "revm 30.2.0", +] + +[[package]] +name = "hokulea-eigenda" +version = "0.1.0" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.1.0#b94690a5d7ebb68449f0b09d4b2c6c2c60aa4eac" +dependencies = [ + "alloy-primitives", + "async-trait", + "eigenda-cert", + "kona-derive", + "kona-protocol", + "serde", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "hokulea-host-bin" +version = "0.1.0" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.1.0#b94690a5d7ebb68449f0b09d4b2c6c2c60aa4eac" +dependencies = [ + "alloy-primitives", + "anyhow", + "async-trait", + "clap", + "eigenda-cert", + "hokulea-client-bin", + "hokulea-eigenda", + "hokulea-proof", + "kona-cli", + "kona-client", + "kona-host", + "kona-preimage", + "kona-proof", + "kona-std-fpvm", + "reqwest", + "serde", + "thiserror 2.0.17", + "tokio", + "tracing", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "hokulea-proof" +version = "0.1.0" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.1.0#b94690a5d7ebb68449f0b09d4b2c6c2c60aa4eac" +dependencies = [ + "alloy-primitives", + "ark-bn254", + "ark-ff 0.5.0", + "async-trait", + "canoe-verifier", + "canoe-verifier-address-fetcher", + "eigenda-cert", + "hokulea-eigenda", + "kona-preimage", + "kona-proof", + "rust-kzg-bn254-primitives", + "rust-kzg-bn254-verifier", + "serde", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "home" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "http" version = "0.2.12" @@ -4457,6 +5844,18 @@ dependencies = [ "webpki-roots 1.0.4", ] +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper 0.14.32", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + [[package]] name = "hyper-timeout" version = "0.5.2" @@ -4645,23 +6044,77 @@ dependencies = [ ] [[package]] -name = "impl-codec" -version = "0.6.0" +name = "if-addrs" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +checksum = "cabb0019d51a643781ff15c9c8a3e5dedc365c47211270f4e8f82812fedd8f0a" dependencies = [ - "parity-scale-codec", + "libc", + "windows-sys 0.48.0", ] [[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" +name = "if-watch" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +checksum = "cdf9d64cfcf380606e64f9a0bcf493616b65331199f984151a6fa11a7b3cde38" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.109", + "async-io", + "core-foundation 0.9.4", + "fnv", + "futures", + "if-addrs", + "ipnet", + "log", + "netlink-packet-core", + "netlink-packet-route", + "netlink-proto", + "netlink-sys", + "rtnetlink", + "system-configuration", + "tokio", + "windows 0.52.0", +] + +[[package]] +name = "igd-next" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516893339c97f6011282d5825ac94fc1c7aad5cad26bdc2d0cee068c0bf97f97" +dependencies = [ + "async-trait", + "attohttpc", + "bytes", + "futures", + "http 1.3.1", + "http-body-util", + "hyper 1.7.0", + "hyper-util", + "log", + "rand 0.9.2", + "tokio", + "url", + "xmltree", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", ] [[package]] @@ -4702,10 +6155,39 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.2", "web-time", ] +[[package]] +name = "inotify" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +dependencies = [ + "bitflags 2.10.0", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array 0.14.9", +] + [[package]] name = "insta" version = "1.41.0" @@ -4755,11 +6237,26 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "ipconfig" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +dependencies = [ + "socket2 0.5.10", + "widestring", + "windows-sys 0.48.0", + "winreg", +] + [[package]] name = "ipnet" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +dependencies = [ + "serde", +] [[package]] name = "iri-string" @@ -4867,18 +6364,46 @@ version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e281ae70cc3b98dac15fced3366a880949e65fc66e345ce857a5682d152f3e62" dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-http-client", - "jsonrpsee-proc-macros", - "jsonrpsee-server", - "jsonrpsee-types", + "jsonrpsee-client-transport 0.24.10", + "jsonrpsee-core 0.24.10", + "jsonrpsee-http-client 0.24.10", + "jsonrpsee-proc-macros 0.24.10", + "jsonrpsee-server 0.24.10", + "jsonrpsee-types 0.24.10", "jsonrpsee-wasm-client", - "jsonrpsee-ws-client", + "jsonrpsee-ws-client 0.24.10", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fba77a59c4c644fd48732367624d1bcf6f409f9c9a286fbc71d2f1fc0b2ea16" +dependencies = [ + "jsonrpsee-core 0.25.1", + "jsonrpsee-proc-macros 0.25.1", + "jsonrpsee-server 0.25.1", + "jsonrpsee-types 0.25.1", "tokio", "tracing", ] +[[package]] +name = "jsonrpsee" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f3f48dc3e6b8bd21e15436c1ddd0bc22a6a54e8ec46fedd6adf3425f396ec6a" +dependencies = [ + "jsonrpsee-core 0.26.0", + "jsonrpsee-http-client 0.26.0", + "jsonrpsee-proc-macros 0.26.0", + "jsonrpsee-types 0.26.0", + "jsonrpsee-ws-client 0.26.0", + "tracing", +] + [[package]] name = "jsonrpsee-client-transport" version = "0.24.10" @@ -4890,8 +6415,8 @@ dependencies = [ "futures-util", "gloo-net", "http 1.3.1", - "jsonrpsee-core", - "pin-project", + "jsonrpsee-core 0.24.10", + "pin-project 1.1.10", "rustls 0.23.35", "rustls-pki-types", "rustls-platform-verifier", @@ -4904,6 +6429,29 @@ dependencies = [ "url", ] +[[package]] +name = "jsonrpsee-client-transport" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf36eb27f8e13fa93dcb50ccb44c417e25b818cfa1a481b5470cd07b19c60b98" +dependencies = [ + "base64 0.22.1", + "futures-util", + "http 1.3.1", + "jsonrpsee-core 0.26.0", + "pin-project 1.1.10", + "rustls 0.23.35", + "rustls-pki-types", + "rustls-platform-verifier", + "soketto", + "thiserror 2.0.17", + "tokio", + "tokio-rustls 0.26.4", + "tokio-util", + "tracing", + "url", +] + [[package]] name = "jsonrpsee-core" version = "0.24.10" @@ -4917,9 +6465,9 @@ dependencies = [ "http 1.3.1", "http-body 1.0.1", "http-body-util", - "jsonrpsee-types", + "jsonrpsee-types 0.24.10", "parking_lot", - "pin-project", + "pin-project 1.1.10", "rand 0.8.5", "rustc-hash 2.1.1", "serde", @@ -4931,6 +6479,58 @@ dependencies = [ "wasm-bindgen-futures", ] +[[package]] +name = "jsonrpsee-core" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693c93cbb7db25f4108ed121304b671a36002c2db67dff2ee4391a688c738547" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "jsonrpsee-types 0.25.1", + "parking_lot", + "pin-project 1.1.10", + "rand 0.9.2", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tower 0.5.2", + "tracing", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "316c96719901f05d1137f19ba598b5fe9c9bc39f4335f67f6be8613921946480" +dependencies = [ + "async-trait", + "bytes", + "futures-timer", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "jsonrpsee-types 0.26.0", + "parking_lot", + "pin-project 1.1.10", + "rand 0.9.2", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tower 0.5.2", + "tracing", +] + [[package]] name = "jsonrpsee-http-client" version = "0.24.10" @@ -4943,8 +6543,8 @@ dependencies = [ "hyper 1.7.0", "hyper-rustls 0.27.7", "hyper-util", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-core 0.24.10", + "jsonrpsee-types 0.24.10", "rustls 0.23.35", "rustls-platform-verifier", "serde", @@ -4956,6 +6556,29 @@ dependencies = [ "url", ] +[[package]] +name = "jsonrpsee-http-client" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790bedefcec85321e007ff3af84b4e417540d5c87b3c9779b9e247d1bcc3dab8" +dependencies = [ + "base64 0.22.1", + "http-body 1.0.1", + "hyper 1.7.0", + "hyper-rustls 0.27.7", + "hyper-util", + "jsonrpsee-core 0.26.0", + "jsonrpsee-types 0.26.0", + "rustls 0.23.35", + "rustls-platform-verifier", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tower 0.5.2", + "url", +] + [[package]] name = "jsonrpsee-proc-macros" version = "0.24.10" @@ -4969,6 +6592,32 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fa4f5daed39f982a1bb9d15449a28347490ad42b212f8eaa2a2a344a0dce9e9" +dependencies = [ + "heck 0.5.0", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da3f8ab5ce1bb124b6d082e62dffe997578ceaf0aeb9f3174a214589dc00f07" +dependencies = [ + "heck 0.5.0", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.109", +] + [[package]] name = "jsonrpsee-server" version = "0.24.10" @@ -4981,9 +6630,9 @@ dependencies = [ "http-body-util", "hyper 1.7.0", "hyper-util", - "jsonrpsee-core", - "jsonrpsee-types", - "pin-project", + "jsonrpsee-core 0.24.10", + "jsonrpsee-types 0.24.10", + "pin-project 1.1.10", "route-recognizer", "serde", "serde_json", @@ -4996,6 +6645,33 @@ dependencies = [ "tracing", ] +[[package]] +name = "jsonrpsee-server" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38b0bcf407ac68d241f90e2d46041e6a06988f97fe1721fb80b91c42584fae6" +dependencies = [ + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.7.0", + "hyper-util", + "jsonrpsee-core 0.25.1", + "jsonrpsee-types 0.25.1", + "pin-project 1.1.10", + "route-recognizer", + "serde", + "serde_json", + "soketto", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tokio-util", + "tower 0.5.2", + "tracing", +] + [[package]] name = "jsonrpsee-types" version = "0.24.10" @@ -5008,15 +6684,39 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "jsonrpsee-types" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66df7256371c45621b3b7d2fb23aea923d577616b9c0e9c0b950a6ea5c2be0ca" +dependencies = [ + "http 1.3.1", + "serde", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc88ff4688e43cc3fa9883a8a95c6fa27aa2e76c96e610b737b6554d650d7fd5" +dependencies = [ + "http 1.3.1", + "serde", + "serde_json", + "thiserror 2.0.17", +] + [[package]] name = "jsonrpsee-wasm-client" version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9d745e4f543fc10fc0e2b11aa1f3be506b1e475d412167e7191a65ecd239f1c" dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-client-transport 0.24.10", + "jsonrpsee-core 0.24.10", + "jsonrpsee-types 0.24.10", ] [[package]] @@ -5026,12 +6726,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78fc744f17e7926d57f478cf9ca6e1ee5d8332bf0514860b1a3cdf1742e614cc" dependencies = [ "http 1.3.1", - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", + "jsonrpsee-client-transport 0.24.10", + "jsonrpsee-core 0.24.10", + "jsonrpsee-types 0.24.10", + "url", +] + +[[package]] +name = "jsonrpsee-ws-client" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6fceceeb05301cc4c065ab3bd2fa990d41ff4eb44e4ca1b30fa99c057c3e79" +dependencies = [ + "http 1.3.1", + "jsonrpsee-client-transport 0.26.0", + "jsonrpsee-core 0.26.0", + "jsonrpsee-types 0.26.0", + "tower 0.5.2", "url", ] +[[package]] +name = "jsonwebtoken" +version = "9.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" +dependencies = [ + "base64 0.22.1", + "js-sys", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + [[package]] name = "jubjub" version = "0.9.0" @@ -5093,60 +6822,1096 @@ dependencies = [ ] [[package]] -name = "kzg-rs" -version = "0.2.7" +name = "kona-cli" +version = "0.3.2" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-chains", + "alloy-primitives", + "clap", + "kona-genesis", + "kona-registry", + "libc", + "metrics-exporter-prometheus 0.17.2", + "metrics-process", + "serde", + "thiserror 2.0.17", + "tracing", + "tracing-appender", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "kona-client" +version = "1.0.2" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.22.6", + "alloy-op-evm 0.22.6", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "async-trait", + "cfg-if", + "kona-derive", + "kona-driver", + "kona-executor", + "kona-genesis", + "kona-interop", + "kona-mpt", + "kona-preimage", + "kona-proof", + "kona-proof-interop", + "kona-protocol", + "kona-registry", + "kona-std-fpvm", + "kona-std-fpvm-proc", + "lru 0.16.3", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm 11.3.0", + "revm 30.2.0", + "serde", + "serde_json", + "spin 0.10.0", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "kona-derive" +version = "0.4.5" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "async-trait", + "kona-genesis", + "kona-hardforks", + "kona-macros", + "kona-protocol", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "kona-disc" +version = "0.1.2" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-rlp", + "backon", + "derive_more 2.1.1", + "discv5", + "kona-genesis", + "kona-macros", + "kona-peers", + "libp2p", + "rand 0.9.2", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "kona-driver" +version = "0.4.0" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-evm 0.22.6", + "alloy-primitives", + "alloy-rlp", + "async-trait", + "kona-derive", + "kona-executor", + "kona-genesis", + "kona-protocol", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "spin 0.10.0", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "kona-engine" +version = "0.1.2" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-client", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-transport", + "alloy-transport-http", + "async-trait", + "derive_more 2.1.1", + "http-body-util", + "kona-genesis", + "kona-macros", + "kona-protocol", + "kona-sources", + "op-alloy-consensus", + "op-alloy-network", + "op-alloy-provider", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tokio-util", + "tower 0.5.2", + "tracing", + "url", +] + +[[package]] +name = "kona-executor" +version = "0.4.0" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.22.6", + "alloy-op-evm 0.22.6", + "alloy-op-hardforks", + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "kona-genesis", + "kona-mpt", + "kona-protocol", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm 11.3.0", + "revm 30.2.0", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "kona-genesis" +version = "0.4.5" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-hardforks", + "alloy-op-hardforks", + "alloy-primitives", + "alloy-sol-types", + "derive_more 2.1.1", + "op-revm 11.3.0", + "serde", + "serde_repr", + "thiserror 2.0.17", +] + +[[package]] +name = "kona-gossip" +version = "0.1.2" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "derive_more 2.1.1", + "discv5", + "futures", + "ipnet", + "kona-disc", + "kona-genesis", + "kona-macros", + "kona-peers", + "lazy_static", + "libp2p", + "libp2p-identity", + "libp2p-stream", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "openssl", + "serde", + "serde_repr", + "snap", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "kona-hardforks" +version = "0.4.5" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "kona-protocol", + "op-alloy-consensus", +] + +[[package]] +name = "kona-host" +version = "1.0.2" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-op-evm 0.22.6", + "alloy-primitives", + "alloy-provider", + "alloy-rlp", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-rpc-types-beacon", + "alloy-serde", + "alloy-transport", + "alloy-transport-http", + "anyhow", + "ark-ff 0.5.0", + "async-trait", + "clap", + "kona-cli", + "kona-client", + "kona-derive", + "kona-driver", + "kona-executor", + "kona-genesis", + "kona-mpt", + "kona-preimage", + "kona-proof", + "kona-proof-interop", + "kona-protocol", + "kona-providers-alloy", + "kona-registry", + "kona-std-fpvm", + "op-alloy-network", + "op-alloy-rpc-types-engine", + "reqwest", + "revm 30.2.0", + "rocksdb", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tracing", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "kona-interop" +version = "0.4.5" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "async-trait", + "derive_more 2.1.1", + "kona-genesis", + "kona-protocol", + "kona-registry", + "op-alloy-consensus", + "serde", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "kona-macros" +version = "0.1.2" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" + +[[package]] +name = "kona-mpt" +version = "0.3.0" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "op-alloy-rpc-types-engine", + "thiserror 2.0.17", +] + +[[package]] +name = "kona-peers" +version = "0.1.2" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more 2.1.1", + "dirs 6.0.0", + "discv5", + "kona-registry", + "lazy_static", + "libp2p", + "libp2p-identity", + "secp256k1 0.31.1", + "serde", + "serde_json", + "thiserror 2.0.17", + "tracing", + "unsigned-varint 0.8.0", + "url", +] + +[[package]] +name = "kona-preimage" +version = "0.3.0" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-primitives", + "async-channel", + "async-trait", + "rkyv", + "serde", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "kona-proof" +version = "0.3.0" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.22.6", + "alloy-op-evm 0.22.6", + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "ark-bls12-381", + "ark-ff 0.5.0", + "async-trait", + "kona-derive", + "kona-driver", + "kona-executor", + "kona-genesis", + "kona-mpt", + "kona-preimage", + "kona-protocol", + "kona-registry", + "lazy_static", + "lru 0.16.3", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm 11.3.0", + "serde", + "serde_json", + "spin 0.10.0", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "kona-proof-interop" +version = "0.2.0" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.22.6", + "alloy-op-evm 0.22.6", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "async-trait", + "kona-executor", + "kona-genesis", + "kona-interop", + "kona-mpt", + "kona-preimage", + "kona-proof", + "kona-protocol", + "kona-registry", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm 11.3.0", + "revm 30.2.0", + "serde", + "serde_json", + "spin 0.10.0", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "kona-protocol" +version = "0.4.5" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloc-no-stdlib", + "alloy-consensus", + "alloy-eips", + "alloy-hardforks", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-serde", + "async-trait", + "brotli", + "derive_more 2.1.1", + "kona-genesis", + "miniz_oxide", + "op-alloy-consensus", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", + "serde", + "spin 0.10.0", + "thiserror 2.0.17", + "tracing", + "tracing-subscriber 0.3.20", + "unsigned-varint 0.8.0", +] + +[[package]] +name = "kona-providers-alloy" +version = "0.3.3" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-client", + "alloy-rpc-types-beacon", + "alloy-rpc-types-engine", + "alloy-serde", + "alloy-transport", + "alloy-transport-http", + "async-trait", + "c-kzg", + "http-body-util", + "kona-derive", + "kona-genesis", + "kona-macros", + "kona-protocol", + "lru 0.16.3", + "op-alloy-consensus", + "op-alloy-network", + "reqwest", + "serde", + "thiserror 2.0.17", + "tower 0.5.2", +] + +[[package]] +name = "kona-registry" +version = "0.4.5" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-chains", + "alloy-eips", + "alloy-genesis", + "alloy-hardforks", + "alloy-op-hardforks", + "alloy-primitives", + "kona-genesis", + "lazy_static", + "serde", + "serde_json", + "tabled", + "toml 0.8.23", +] + +[[package]] +name = "kona-rpc" +version = "0.3.2" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rpc-types-engine", + "async-trait", + "backon", + "derive_more 2.1.1", + "getrandom 0.3.4", + "ipnet", + "jsonrpsee 0.25.1", + "kona-engine", + "kona-genesis", + "kona-gossip", + "kona-macros", + "kona-protocol", + "libp2p", + "op-alloy-consensus", + "op-alloy-rpc-jsonrpsee", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", + "serde", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "kona-sources" +version = "0.1.2" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-client", + "alloy-signer", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "derive_more 2.1.1", + "kona-genesis", + "kona-protocol", + "notify", + "op-alloy-network", + "op-alloy-rpc-types-engine", + "reqwest", + "rustls 0.23.35", + "rustls-pemfile 2.2.0", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "kona-std-fpvm" +version = "0.2.0" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "async-trait", + "buddy_system_allocator", + "cfg-if", + "kona-preimage", + "thiserror 2.0.17", +] + +[[package]] +name = "kona-std-fpvm-proc" +version = "0.2.0" +source = "git+https://github.com/op-rs/kona?tag=kona-client%2Fv1.2.2#daa3535ab312b50eb2fd64cb42700d598e06b001" +dependencies = [ + "cfg-if", + "kona-std-fpvm", + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "kqueue" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "kzg-rs" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9201effeea3fcc93b587904ae2df9ce97e433184b9d6d299e9ebc9830a546636" +dependencies = [ + "ff 0.13.1", + "hex", + "rkyv", + "serde", + "serde_arrays", + "sha2 0.10.9", + "sp1_bls12_381", + "spin 0.9.8", +] + +[[package]] +name = "kzg-rs" +version = "0.2.7" source = "git+https://github.com/succinctlabs/kzg-rs#15bdc9bfdb31859acd4e7a6558f84fae5eab71c8" dependencies = [ - "ff 0.13.1", - "hex", - "serde_arrays", + "ff 0.13.1", + "hex", + "serde_arrays", + "sha2 0.10.9", + "sp1_bls12_381", + "spin 0.9.8", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] + +[[package]] +name = "leopard-codec" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b397c7217467c5e5582fe413bc2f0e9f804367af8bc0f0374dc966f99d00f9c" +dependencies = [ + "bytes", + "thiserror 2.0.17", +] + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "libgit2-sys" +version = "0.18.2+1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link 0.2.1", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libp2p" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce71348bf5838e46449ae240631117b487073d5f347c06d434caddcb91dceb5a" +dependencies = [ + "bytes", + "either", + "futures", + "futures-timer", + "getrandom 0.2.16", + "libp2p-allow-block-list", + "libp2p-connection-limits", + "libp2p-core", + "libp2p-dns", + "libp2p-gossipsub", + "libp2p-identify", + "libp2p-identity", + "libp2p-mdns", + "libp2p-metrics", + "libp2p-noise", + "libp2p-ping", + "libp2p-quic", + "libp2p-swarm", + "libp2p-tcp", + "libp2p-upnp", + "libp2p-yamux", + "multiaddr 0.18.2", + "pin-project 1.1.10", + "rw-stream-sink", + "thiserror 2.0.17", +] + +[[package]] +name = "libp2p-allow-block-list" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16ccf824ee859ca83df301e1c0205270206223fd4b1f2e512a693e1912a8f4a" +dependencies = [ + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", +] + +[[package]] +name = "libp2p-connection-limits" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18b8b607cf3bfa2f8c57db9c7d8569a315d5cc0a282e6bfd5ebfc0a9840b2a0" +dependencies = [ + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", +] + +[[package]] +name = "libp2p-core" +version = "0.43.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "249128cd37a2199aff30a7675dffa51caf073b51aa612d2f544b19932b9aebca" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "libp2p-identity", + "multiaddr 0.18.2", + "multihash 0.19.3", + "multistream-select", + "parking_lot", + "pin-project 1.1.10", + "quick-protobuf", + "rand 0.8.5", + "rw-stream-sink", + "thiserror 2.0.17", + "tracing", + "unsigned-varint 0.8.0", + "web-time", +] + +[[package]] +name = "libp2p-dns" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b770c1c8476736ca98c578cba4b505104ff8e842c2876b528925f9766379f9a" +dependencies = [ + "async-trait", + "futures", + "hickory-resolver", + "libp2p-core", + "libp2p-identity", + "parking_lot", + "smallvec", + "tracing", +] + +[[package]] +name = "libp2p-gossipsub" +version = "0.49.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f58e37d8d6848e5c4c9e3c35c6f61133235bff2960c9c00a663b0849301221" +dependencies = [ + "async-channel", + "asynchronous-codec", + "base64 0.22.1", + "byteorder", + "bytes", + "either", + "fnv", + "futures", + "futures-timer", + "getrandom 0.2.16", + "hashlink 0.9.1", + "hex_fmt", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "quick-protobuf", + "quick-protobuf-codec", + "rand 0.8.5", + "regex", "sha2 0.10.9", - "sp1_bls12_381", - "spin", + "tracing", + "web-time", ] [[package]] -name = "lazy_static" -version = "1.5.0" +name = "libp2p-identify" +version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "8ab792a8b68fdef443a62155b01970c81c3aadab5e659621b063ef252a8e65e8" +dependencies = [ + "asynchronous-codec", + "either", + "futures", + "futures-bounded", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "quick-protobuf", + "quick-protobuf-codec", + "smallvec", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "libp2p-identity" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c7892c221730ba55f7196e98b0b8ba5e04b4155651736036628e9f73ed6fc3" dependencies = [ - "spin", + "asn1_der", + "bs58 0.5.1", + "ed25519-dalek", + "hkdf", + "k256 0.13.4", + "multihash 0.19.3", + "quick-protobuf", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 2.0.17", + "tracing", + "zeroize", ] [[package]] -name = "libc" -version = "0.2.177" +name = "libp2p-mdns" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "c66872d0f1ffcded2788683f76931be1c52e27f343edb93bc6d0bcd8887be443" +dependencies = [ + "futures", + "hickory-proto", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "smallvec", + "socket2 0.5.10", + "tokio", + "tracing", +] [[package]] -name = "libgit2-sys" -version = "0.18.2+1.9.1" +name = "libp2p-metrics" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222" +checksum = "805a555148522cb3414493a5153451910cb1a146c53ffbf4385708349baf62b7" dependencies = [ - "cc", + "futures", + "libp2p-core", + "libp2p-gossipsub", + "libp2p-identify", + "libp2p-identity", + "libp2p-ping", + "libp2p-swarm", + "pin-project 1.1.10", + "prometheus-client", + "web-time", +] + +[[package]] +name = "libp2p-noise" +version = "0.46.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc73eacbe6462a0eb92a6527cac6e63f02026e5407f8831bde8293f19217bfbf" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures", + "libp2p-core", + "libp2p-identity", + "multiaddr 0.18.2", + "multihash 0.19.3", + "quick-protobuf", + "rand 0.8.5", + "snow", + "static_assertions", + "thiserror 2.0.17", + "tracing", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "libp2p-ping" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74bb7fcdfd9fead4144a3859da0b49576f171a8c8c7c0bfc7c541921d25e60d3" +dependencies = [ + "futures", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "tracing", + "web-time", +] + +[[package]] +name = "libp2p-quic" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dc448b2de9f4745784e3751fe8bc6c473d01b8317edd5ababcb0dec803d843f" +dependencies = [ + "futures", + "futures-timer", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-tls", + "quinn", + "rand 0.8.5", + "ring", + "rustls 0.23.35", + "socket2 0.5.10", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-stream" +version = "0.4.0-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6bd8025c80205ec2810cfb28b02f362ab48a01bee32c50ab5f12761e033464" +dependencies = [ + "futures", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "tracing", +] + +[[package]] +name = "libp2p-swarm" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aa762e5215919a34e31c35d4b18bf2e18566ecab7f8a3d39535f4a3068f8b62" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm-derive", + "lru 0.12.5", + "multistream-select", + "rand 0.8.5", + "smallvec", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "libp2p-swarm-derive" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd297cf53f0cb3dee4d2620bb319ae47ef27c702684309f682bdb7e55a18ae9c" +dependencies = [ + "heck 0.5.0", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "libp2p-tcp" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65b4e030c52c46c8d01559b2b8ca9b7c4185f10576016853129ca1fe5cd1a644" +dependencies = [ + "futures", + "futures-timer", + "if-watch", "libc", - "libz-sys", - "pkg-config", + "libp2p-core", + "socket2 0.5.10", + "tokio", + "tracing", ] [[package]] -name = "libloading" -version = "0.8.9" +name = "libp2p-tls" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +checksum = "96ff65a82e35375cbc31ebb99cacbbf28cb6c4fefe26bf13756ddcf708d40080" dependencies = [ - "cfg-if", - "windows-link 0.2.1", + "futures", + "futures-rustls", + "libp2p-core", + "libp2p-identity", + "rcgen", + "ring", + "rustls 0.23.35", + "rustls-webpki 0.103.8", + "thiserror 2.0.17", + "x509-parser", + "yasna", ] [[package]] -name = "libm" -version = "0.2.15" +name = "libp2p-upnp" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "4757e65fe69399c1a243bbb90ec1ae5a2114b907467bf09f3575e899815bb8d3" +dependencies = [ + "futures", + "futures-timer", + "igd-next", + "libp2p-core", + "libp2p-swarm", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-yamux" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f15df094914eb4af272acf9adaa9e287baa269943f32ea348ba29cfb9bfc60d8" +dependencies = [ + "either", + "futures", + "libp2p-core", + "thiserror 2.0.17", + "tracing", + "yamux 0.12.1", + "yamux 0.13.8", +] + +[[package]] +name = "libproc" +version = "0.14.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a54ad7278b8bc5301d5ffd2a94251c004feb971feba96c971ea4063645990757" +dependencies = [ + "bindgen 0.72.1", + "errno", + "libc", +] [[package]] name = "libredox" @@ -5154,8 +7919,32 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags", + "bitflags 2.10.0", + "libc", + "redox_syscall", +] + +[[package]] +name = "librocksdb-sys" +version = "0.17.3+10.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef2a00ee60fe526157c9023edab23943fae1ce2ab6f4abb2a807c1746835de9" +dependencies = [ + "bindgen 0.72.1", + "bzip2-sys", + "cc", "libc", + "libz-sys", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "pkg-config", + "vcpkg", ] [[package]] @@ -5201,7 +7990,41 @@ dependencies = [ name = "log" version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "logos" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff472f899b4ec2d99161c51f60ff7075eeb3097069a36050d8037a6325eb8154" +dependencies = [ + "logos-derive", +] + +[[package]] +name = "logos-codegen" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "192a3a2b90b0c05b27a0b2c43eecdb7c415e29243acc3f89cc8247a5b693045c" +dependencies = [ + "beef", + "fnv", + "lazy_static", + "proc-macro2", + "quote", + "regex-syntax", + "rustc_version 0.4.1", + "syn 2.0.109", +] + +[[package]] +name = "logos-derive" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "605d9697bcd5ef3a42d38efc51541aa3d6a4a25f7ab6d1ed0da5ac632a26b470" +dependencies = [ + "logos-codegen", +] [[package]] name = "lru" @@ -5221,12 +8044,39 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "lru" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" +dependencies = [ + "hashbrown 0.16.0", +] + [[package]] name = "lru-slab" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +[[package]] +name = "lumina-utils" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6be0fedf4b4ddbdd34a2541f36b63daa004064b5465b7b9f52ebdc5fe1c64187" +dependencies = [ + "js-sys", +] + +[[package]] +name = "mach2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea" +dependencies = [ + "libc", +] + [[package]] name = "macro-string" version = "0.1.4" @@ -5238,6 +8088,17 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "match-lookup" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "757aee279b8bdbb9f9e676796fd459e4207a1f986e87886700abf589f5abf771" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", +] + [[package]] name = "matchers" version = "0.2.0" @@ -5259,6 +8120,16 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + [[package]] name = "memchr" version = "2.7.6" @@ -5271,12 +8142,143 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" +[[package]] +name = "metrics" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5312e9ba3771cfa961b585728215e3d972c950a3eed9252aa093d6301277e8" +dependencies = [ + "ahash", + "portable-atomic", +] + +[[package]] +name = "metrics-exporter-prometheus" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd7399781913e5393588a8d8c6a2867bf85fb38eaf2502fdce465aad2dc6f034" +dependencies = [ + "base64 0.22.1", + "http-body-util", + "hyper 1.7.0", + "hyper-rustls 0.27.7", + "hyper-util", + "indexmap 2.12.0", + "ipnet", + "metrics", + "metrics-util 0.19.1", + "quanta", + "thiserror 1.0.69", + "tokio", + "tracing", +] + +[[package]] +name = "metrics-exporter-prometheus" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b166dea96003ee2531cf14833efedced545751d800f03535801d833313f8c15" +dependencies = [ + "base64 0.22.1", + "http-body-util", + "hyper 1.7.0", + "hyper-util", + "indexmap 2.12.0", + "ipnet", + "metrics", + "metrics-util 0.20.1", + "quanta", + "thiserror 2.0.17", + "tokio", + "tracing", +] + +[[package]] +name = "metrics-process" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f615e08e049bd14a44c4425415782efb9bcd479fc1e19ddeb971509074c060d0" +dependencies = [ + "libc", + "libproc", + "mach2", + "metrics", + "once_cell", + "procfs", + "rlimit", + "windows 0.62.2", +] + +[[package]] +name = "metrics-util" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8496cc523d1f94c1385dd8f0f0c2c480b2b8aeccb5b7e4485ad6365523ae376" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.15.5", + "metrics", + "quanta", + "rand 0.9.2", + "rand_xoshiro", + "sketches-ddsketch", +] + +[[package]] +name = "metrics-util" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdfb1365fea27e6dd9dc1dbc19f570198bc86914533ad639dae939635f096be4" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.16.0", + "metrics", + "quanta", + "rand 0.9.2", + "rand_xoshiro", + "sketches-ddsketch", +] + +[[package]] +name = "miette" +version = "7.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" +dependencies = [ + "cfg-if", + "miette-derive", + "unicode-width 0.1.14", +] + +[[package]] +name = "miette-derive" +version = "7.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", +] + [[package]] name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -5290,6 +8292,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -5299,6 +8302,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", + "log", "wasi", "windows-sys 0.61.2", ] @@ -5400,6 +8404,29 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "moka" +version = "0.12.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3dec6bd31b08944e08b58fd99373893a6c17054d6f3ea5006cc894f4f4eee2a" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "equivalent", + "parking_lot", + "portable-atomic", + "smallvec", + "tagptr", + "uuid", +] + +[[package]] +name = "more-asserts" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" + [[package]] name = "multiaddr" version = "0.14.0" @@ -5407,17 +8434,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261" dependencies = [ "arrayref", - "bs58", + "bs58 0.4.0", + "byteorder", + "data-encoding", + "multihash 0.16.3", + "percent-encoding", + "serde", + "static_assertions", + "unsigned-varint 0.7.2", + "url", +] + +[[package]] +name = "multiaddr" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" +dependencies = [ + "arrayref", "byteorder", "data-encoding", - "multihash", + "libp2p-identity", + "multibase", + "multihash 0.19.3", "percent-encoding", "serde", "static_assertions", - "unsigned-varint", + "unsigned-varint 0.8.0", "url", ] +[[package]] +name = "multibase" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" +dependencies = [ + "base-x", + "base256emoji", + "data-encoding", + "data-encoding-macro", +] + [[package]] name = "multihash" version = "0.16.3" @@ -5428,38 +8486,163 @@ dependencies = [ "digest 0.10.7", "multihash-derive", "sha2 0.10.9", - "unsigned-varint", + "unsigned-varint 0.7.2", +] + +[[package]] +name = "multihash" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" +dependencies = [ + "core2", + "unsigned-varint 0.8.0", +] + +[[package]] +name = "multihash-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db" +dependencies = [ + "proc-macro-crate 1.1.3", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure 0.12.6", +] + +[[package]] +name = "multimap" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" + +[[package]] +name = "multistream-select" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19" +dependencies = [ + "bytes", + "futures", + "log", + "pin-project 1.1.10", + "smallvec", + "unsigned-varint 0.7.2", +] + +[[package]] +name = "munge" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e17401f259eba956ca16491461b6e8f72913a0a114e39736ce404410f915a0c" +dependencies = [ + "munge_macro", +] + +[[package]] +name = "munge_macro" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "netlink-packet-core" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4" +dependencies = [ + "anyhow", + "byteorder", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-route" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66" +dependencies = [ + "anyhow", + "bitflags 1.3.2", + "byteorder", + "libc", + "netlink-packet-core", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-utils" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34" +dependencies = [ + "anyhow", + "byteorder", + "paste", + "thiserror 1.0.69", +] + +[[package]] +name = "netlink-proto" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72452e012c2f8d612410d89eea01e2d9b56205274abb35d53f60200b2ec41d60" +dependencies = [ + "bytes", + "futures", + "log", + "netlink-packet-core", + "netlink-sys", + "thiserror 2.0.17", ] [[package]] -name = "multihash-derive" -version = "0.8.1" +name = "netlink-sys" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db" +checksum = "16c903aa70590cb93691bf97a767c8d1d6122d2cc9070433deb3bbf36ce8bd23" dependencies = [ - "proc-macro-crate 1.1.3", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure 0.12.6", + "bytes", + "futures", + "libc", + "log", + "tokio", ] [[package]] -name = "native-tls" -version = "0.2.14" +name = "nix" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ + "bitflags 1.3.2", + "cfg-if", "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", ] [[package]] @@ -5468,12 +8651,24 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "libc", ] +[[package]] +name = "nmt-rs" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d9149cb486570ac43944740ac8ea83d309d44d6a2cd2cd856606f43e40c6429" +dependencies = [ + "borsh", + "bytes", + "serde", + "sha2 0.10.9", +] + [[package]] name = "nohash-hasher" version = "0.2.0" @@ -5490,6 +8685,30 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "notify" +version = "8.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" +dependencies = [ + "bitflags 2.10.0", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "notify-types", + "walkdir", + "windows-sys 0.60.2", +] + +[[package]] +name = "notify-types" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" + [[package]] name = "ntapi" version = "0.4.1" @@ -5543,6 +8762,22 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" +dependencies = [ + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.5", + "smallvec", + "zeroize", +] + [[package]] name = "num-complex" version = "0.4.6" @@ -5558,6 +8793,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec", + "itoa", +] + [[package]] name = "num-integer" version = "0.1.46" @@ -5720,6 +8965,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "oid-registry" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" +dependencies = [ + "asn1-rs", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -5744,8 +8998,10 @@ checksum = "e42e9de945efe3c2fbd207e69720c9c1af2b8caa6872aee0e216450c25a3ca70" dependencies = [ "alloy-consensus", "alloy-eips", + "alloy-network", "alloy-primitives", "alloy-rlp", + "alloy-rpc-types-eth", "alloy-serde", "derive_more 2.1.1", "serde", @@ -5753,6 +9009,47 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "op-alloy-network" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9da49a2812a0189dd05e81e4418c3ae13fd607a92654107f02ebad8e91ed9e" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-eth", + "alloy-signer", + "op-alloy-consensus", + "op-alloy-rpc-types", +] + +[[package]] +name = "op-alloy-provider" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ef7a7c6bfa366b29c44af9abe6e176c32ce54ed700ec1edd7526c469dcd28c" +dependencies = [ + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-engine", + "alloy-transport", + "async-trait", + "op-alloy-rpc-types-engine", +] + +[[package]] +name = "op-alloy-rpc-jsonrpsee" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ef9114426b16172254555aad34a8ea96c01895e40da92f5d12ea680a1baeaa7" +dependencies = [ + "alloy-primitives", + "jsonrpsee 0.26.0", +] + [[package]] name = "op-alloy-rpc-types" version = "0.22.0" @@ -5773,40 +9070,280 @@ dependencies = [ ] [[package]] -name = "op-alloy-rpc-types-engine" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5429622150d18d8e6847a701135082622413e2451b64d03f979415d764566bef" +name = "op-alloy-rpc-types-engine" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5429622150d18d8e6847a701135082622413e2451b64d03f979415d764566bef" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "alloy-serde", + "derive_more 2.1.1", + "ethereum_ssz", + "ethereum_ssz_derive", + "op-alloy-consensus", + "serde", + "snap", + "thiserror 2.0.17", +] + +[[package]] +name = "op-revm" +version = "11.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f68e30e34902f61fc053ea3094229d0bf7c78ed1d24e6d0d89306c2d2db1687" +dependencies = [ + "auto_impl", + "revm 30.2.0", + "serde", +] + +[[package]] +name = "op-revm" +version = "12.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcd8cb3274e87936b595eb2247ad3bda146695fceb7159afa76010529af53553" +dependencies = [ + "auto_impl", + "revm 31.0.1", + "serde", +] + +[[package]] +name = "op-succinct-build-utils" +version = "3.4.0-rc.1" +source = "git+https://github.com/agglayer/op-succinct.git?tag=v3.4.0-rc.1-agglayer#7cf3d416bd52057eeb47f6e3a4bdf56de755f121" +dependencies = [ + "cargo_metadata", + "sp1-build", +] + +[[package]] +name = "op-succinct-client-utils" +version = "3.4.0-rc.1" +source = "git+https://github.com/agglayer/op-succinct.git?tag=v3.4.0-rc.1-agglayer#7cf3d416bd52057eeb47f6e3a4bdf56de755f121" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm 0.22.6", + "alloy-op-evm 0.22.6", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", + "anyhow", + "async-trait", + "cfg-if", + "kona-derive", + "kona-driver", + "kona-executor", + "kona-genesis", + "kona-preimage", + "kona-proof", + "kona-protocol", + "kzg-rs 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "op-alloy-consensus", + "op-revm 11.3.0", + "revm 30.2.0", + "revm-precompile 28.1.1", + "rkyv", + "serde", + "serde_json", + "sha2 0.10.9", + "spin 0.10.0", + "tracing", +] + +[[package]] +name = "op-succinct-elfs" +version = "3.4.0-rc.1" +source = "git+https://github.com/agglayer/op-succinct.git?tag=v3.4.0-rc.1-agglayer#7cf3d416bd52057eeb47f6e3a4bdf56de755f121" + +[[package]] +name = "op-succinct-ethereum-client-utils" +version = "3.4.0-rc.1" +source = "git+https://github.com/agglayer/op-succinct.git?tag=v3.4.0-rc.1-agglayer#7cf3d416bd52057eeb47f6e3a4bdf56de755f121" +dependencies = [ + "anyhow", + "async-trait", + "kona-derive", + "kona-driver", + "kona-executor", + "kona-genesis", + "kona-preimage", + "kona-proof", + "op-succinct-client-utils", + "spin 0.10.0", +] + +[[package]] +name = "op-succinct-ethereum-host-utils" +version = "3.4.0-rc.1" +source = "git+https://github.com/agglayer/op-succinct.git?tag=v3.4.0-rc.1-agglayer#7cf3d416bd52057eeb47f6e3a4bdf56de755f121" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "anyhow", + "async-trait", + "kona-derive", + "kona-host", + "kona-preimage", + "kona-proof", + "op-succinct-client-utils", + "op-succinct-ethereum-client-utils", + "op-succinct-host-utils", + "rkyv", + "sp1-sdk", +] + +[[package]] +name = "op-succinct-grpc" +version = "0.1.0" +source = "git+https://github.com/agglayer/op-succinct-grpc?tag=v1.0.0#c282906cc89269875dc2f4b331c6b4957f16ab9b" +dependencies = [ + "bincode", + "bytes", + "pbjson 0.7.0", + "pbjson-types", + "prost 0.13.5", + "serde", + "tonic 0.12.3", + "tonic-build", + "tracing", +] + +[[package]] +name = "op-succinct-host-utils" +version = "3.4.0-rc.1" +source = "git+https://github.com/agglayer/op-succinct.git?tag=v3.4.0-rc.1-agglayer#7cf3d416bd52057eeb47f6e3a4bdf56de755f121" +dependencies = [ + "alloy-consensus", + "alloy-contract", + "alloy-eips", + "alloy-primitives", + "alloy-provider", + "alloy-rlp", + "alloy-sol-types", + "anyhow", + "async-trait", + "c-kzg", + "cargo_metadata", + "cfg-if", + "futures", + "hana-host", + "hokulea-host-bin", + "kona-derive", + "kona-genesis", + "kona-host", + "kona-preimage", + "kona-proof", + "kona-protocol", + "kona-registry", + "kona-rpc", + "kzg-rs 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "metrics", + "metrics-exporter-prometheus 0.16.2", + "metrics-process", + "num-format", + "op-alloy-consensus", + "op-alloy-network", + "op-succinct-client-utils", + "op-succinct-elfs", + "opentelemetry 0.23.0", + "opentelemetry-appender-tracing", + "opentelemetry-otlp", + "opentelemetry-stdout", + "opentelemetry_sdk 0.23.0", + "reqwest", + "rkyv", + "serde", + "serde_cbor", + "serde_json", + "sp1-sdk", + "strum 0.27.2", + "tokio", + "tracing", + "tracing-opentelemetry 0.24.0", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "op-succinct-proof-utils" +version = "3.4.0-rc.1" +source = "git+https://github.com/agglayer/op-succinct.git?tag=v3.4.0-rc.1-agglayer#7cf3d416bd52057eeb47f6e3a4bdf56de755f121" +dependencies = [ + "cfg-if", + "op-succinct-elfs", + "op-succinct-ethereum-host-utils", + "op-succinct-host-utils", + "tracing", +] + +[[package]] +name = "op-succinct-signer-utils" +version = "3.4.0-rc.1" +source = "git+https://github.com/agglayer/op-succinct.git?tag=v3.4.0-rc.1-agglayer#7cf3d416bd52057eeb47f6e3a4bdf56de755f121" dependencies = [ "alloy-consensus", "alloy-eips", + "alloy-network", "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "derive_more 2.1.1", - "ethereum_ssz", - "ethereum_ssz_derive", - "op-alloy-consensus", - "snap", - "thiserror 2.0.17", + "alloy-provider", + "alloy-rpc-types-eth", + "alloy-signer", + "alloy-signer-gcp", + "alloy-signer-local", + "alloy-transport-http", + "anyhow", + "gcloud-sdk", + "rustls 0.23.35", + "tokio", ] [[package]] -name = "op-revm" -version = "12.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcd8cb3274e87936b595eb2247ad3bda146695fceb7159afa76010529af53553" +name = "op-succinct-validity" +version = "3.4.0-rc.1" +source = "git+https://github.com/agglayer/op-succinct.git?tag=v3.4.0-rc.1-agglayer#7cf3d416bd52057eeb47f6e3a4bdf56de755f121" dependencies = [ - "auto_impl", - "revm", + "alloy-eips", + "alloy-primitives", + "alloy-provider", + "alloy-signer-local", + "alloy-sol-types", + "anyhow", + "base64 0.22.1", + "bincode", + "chrono", + "clap", + "dotenv", + "futures-util", + "op-succinct-build-utils", + "op-succinct-client-utils", + "op-succinct-elfs", + "op-succinct-grpc", + "op-succinct-host-utils", + "op-succinct-proof-utils", + "op-succinct-signer-utils", + "prost 0.13.5", + "reqwest", + "rustls 0.23.35", "serde", + "serde_json", + "serde_repr", + "sp1-sdk", + "sqlx", + "strum 0.27.2", + "strum_macros 0.27.2", + "tikv-jemallocator", + "tokio", + "tonic 0.12.3", + "tonic-build", + "tracing", ] -[[package]] -name = "op-succinct-elfs" -version = "3.4.0-rc.1" -source = "git+https://github.com/agglayer/op-succinct.git?tag=v3.4.0-rc.1-agglayer#7cf3d416bd52057eeb47f6e3a4bdf56de755f121" - [[package]] name = "opaque-debug" version = "0.3.1" @@ -5819,7 +9356,7 @@ version = "0.10.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" dependencies = [ - "bitflags", + "bitflags 2.10.0", "cfg-if", "foreign-types", "libc", @@ -5845,6 +9382,15 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-src" +version = "300.5.4+3.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.110" @@ -5853,10 +9399,41 @@ checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] +[[package]] +name = "opentelemetry" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e32339a5dc40459130b3bd269e9892439f55b33e772d2a9d402a789baaf4e8a" +dependencies = [ + "futures-core", + "futures-sink", + "indexmap 2.12.0", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror 1.0.69", + "urlencoding", +] + +[[package]] +name = "opentelemetry" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b69a91d4893e713e06f724597ad630f1fa76057a5e1026c0ca67054a9032a76" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror 1.0.69", +] + [[package]] name = "opentelemetry" version = "0.29.1" @@ -5871,6 +9448,63 @@ dependencies = [ "tracing", ] +[[package]] +name = "opentelemetry" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "opentelemetry-appender-tracing" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be314095f27dde46fca7038b023457d2b3459e1c39033dacc2ec1b31df11a61c" +dependencies = [ + "once_cell", + "opentelemetry 0.23.0", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "opentelemetry-http" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" +dependencies = [ + "async-trait", + "bytes", + "http 1.3.1", + "opentelemetry 0.31.0", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a94c69209c05319cdf7460c6d4c055ed102be242a0a6245835d7bc42c6ec7f54" +dependencies = [ + "async-trait", + "futures-core", + "http 0.2.12", + "opentelemetry 0.23.0", + "opentelemetry-proto", + "opentelemetry_sdk 0.23.0", + "prost 0.12.6", + "thiserror 1.0.69", + "tokio", + "tonic 0.11.0", +] + [[package]] name = "opentelemetry-prometheus" version = "0.29.1" @@ -5878,12 +9512,81 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "098a71a4430bb712be6130ed777335d2e5b19bc8566de5f2edddfce906def6ab" dependencies = [ "once_cell", - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.29.1", + "opentelemetry_sdk 0.29.0", "prometheus", "tracing", ] +[[package]] +name = "opentelemetry-proto" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "984806e6cf27f2b49282e2a05e288f30594f3dbc74eb7a6e99422bc48ed78162" +dependencies = [ + "opentelemetry 0.23.0", + "opentelemetry_sdk 0.23.0", + "prost 0.12.6", + "tonic 0.11.0", +] + +[[package]] +name = "opentelemetry-stdout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13b2df4cd59c176099ac82806725ba340c8fa7b1a7004c0912daad30470f63e" +dependencies = [ + "chrono", + "futures-util", + "opentelemetry 0.21.0", + "opentelemetry_sdk 0.21.2", + "ordered-float", + "serde", + "serde_json", +] + +[[package]] +name = "opentelemetry_sdk" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f16aec8a98a457a52664d69e0091bac3a0abd18ead9b641cb00202ba4e0efe4" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "once_cell", + "opentelemetry 0.21.0", + "ordered-float", + "percent-encoding", + "rand 0.8.5", + "thiserror 1.0.69", +] + +[[package]] +name = "opentelemetry_sdk" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae312d58eaa90a82d2e627fd86e075cf5230b3f11794e2ed74199ebbe572d4fd" +dependencies = [ + "async-trait", + "futures-channel", + "futures-executor", + "futures-util", + "glob", + "lazy_static", + "once_cell", + "opentelemetry 0.23.0", + "ordered-float", + "percent-encoding", + "rand 0.8.5", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-stream", +] + [[package]] name = "opentelemetry_sdk" version = "0.29.0" @@ -5894,7 +9597,7 @@ dependencies = [ "futures-executor", "futures-util", "glob", - "opentelemetry", + "opentelemetry 0.29.1", "percent-encoding", "rand 0.9.2", "serde_json", @@ -5902,12 +9605,36 @@ dependencies = [ "tracing", ] +[[package]] +name = "opentelemetry_sdk" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd" +dependencies = [ + "futures-channel", + "futures-executor", + "futures-util", + "opentelemetry 0.31.0", + "percent-encoding", + "rand 0.9.2", + "thiserror 2.0.17", +] + [[package]] name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + [[package]] name = "outref" version = "0.5.2" @@ -6198,6 +9925,17 @@ dependencies = [ "group 0.13.0", ] +[[package]] +name = "papergrid" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" +dependencies = [ + "bytecount", + "fnv", + "unicode-width 0.2.2", +] + [[package]] name = "parity-scale-codec" version = "3.7.5" @@ -6226,6 +9964,12 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.12.5" @@ -6311,6 +10055,43 @@ dependencies = [ "serde", ] +[[package]] +name = "pbjson-build" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eea3058763d6e656105d1403cb04e0a41b7bbac6362d413e7c33be0c32279c9" +dependencies = [ + "heck 0.5.0", + "itertools 0.13.0", + "prost 0.13.5", + "prost-types 0.13.5", +] + +[[package]] +name = "pbjson-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e54e5e7bfb1652f95bc361d76f3c780d8e526b134b85417e774166ee941f0887" +dependencies = [ + "bytes", + "chrono", + "pbjson 0.7.0", + "pbjson-build", + "prost 0.13.5", + "prost-build", + "serde", +] + +[[package]] +name = "pem" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" +dependencies = [ + "base64 0.22.1", + "serde_core", +] + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -6369,6 +10150,16 @@ dependencies = [ "sha2 0.10.9", ] +[[package]] +name = "petgraph" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +dependencies = [ + "fixedbitset", + "indexmap 2.12.0", +] + [[package]] name = "pharos" version = "0.5.3" @@ -6414,12 +10205,21 @@ dependencies = [ ] [[package]] -name = "phf_shared" -version = "0.13.1" +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a" dependencies = [ - "siphasher", + "pin-project-internal 0.4.30", ] [[package]] @@ -6428,7 +10228,18 @@ version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ - "pin-project-internal", + "pin-project-internal 1.1.10", +] + +[[package]] +name = "pin-project-internal" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -6454,6 +10265,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der 0.7.10", + "pkcs8 0.10.2", + "spki 0.7.3", +] + [[package]] name = "pkcs8" version = "0.9.0" @@ -6480,6 +10302,43 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "portable-atomic" version = "1.11.1" @@ -6573,7 +10432,7 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", - "uint", + "uint 0.9.5", ] [[package]] @@ -6650,6 +10509,27 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "procfs" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" +dependencies = [ + "bitflags 2.10.0", + "procfs-core", + "rustix", +] + +[[package]] +name = "procfs-core" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" +dependencies = [ + "bitflags 2.10.0", + "hex", +] + [[package]] name = "prometheus" version = "0.14.0" @@ -6665,6 +10545,29 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "prometheus-client" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf41c1a7c32ed72abe5082fb19505b969095c12da9f5732a4bc9878757fd087c" +dependencies = [ + "dtoa", + "itoa", + "parking_lot", + "prometheus-client-derive-encode", +] + +[[package]] +name = "prometheus-client-derive-encode" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", +] + [[package]] name = "proposer-client" version = "0.1.0" @@ -6678,12 +10581,12 @@ dependencies = [ "eyre", "hex", "insta", - "jsonrpsee", + "jsonrpsee 0.24.10", "mockall 0.13.1", "mockito", "pbjson 0.7.0", "proposer-client", - "prost", + "prost 0.13.5", "prover-executor", "prover-utils", "serde", @@ -6699,6 +10602,20 @@ dependencies = [ "url", ] +[[package]] +name = "proposer-db-client" +version = "0.1.0" +dependencies = [ + "chrono", + "op-succinct-validity", + "serde", + "serde_json", + "sqlx", + "thiserror 2.0.17", + "tokio", + "url", +] + [[package]] name = "proposer-elfs" version = "0.1.0" @@ -6717,28 +10634,40 @@ dependencies = [ name = "proposer-service" version = "0.1.0" dependencies = [ + "aggchain-proof-contracts", "aggchain-proof-core", "aggkit-prover-types", "agglayer-evm-client", + "agglayer-interop", + "agglayer-interop-types", + "agglayer-primitives", "alloy-primitives", "alloy-sol-types", "anyhow", + "async-trait", "base64 0.22.1", + "bincode", + "chrono", "clap", "color-eyre", "educe", "eyre", "futures", + "jsonrpsee 0.24.10", "mockall 0.13.1", + "op-succinct-validity", "proposer-client", + "proposer-db-client", "proposer-elfs", "prover-alloy", "prover-executor", "prover-logger", "serde", + "serde_json", "sp1-core-executor", "sp1-prover", "sp1-sdk", + "sqlx", "thiserror 2.0.17", "tokio", "tower 0.4.13", @@ -6754,7 +10683,7 @@ checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set", "bit-vec", - "bitflags", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -6765,6 +10694,16 @@ dependencies = [ "unarray", ] +[[package]] +name = "prost" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +dependencies = [ + "bytes", + "prost-derive 0.12.6", +] + [[package]] name = "prost" version = "0.13.5" @@ -6772,7 +10711,50 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.13.5", +] + +[[package]] +name = "prost" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" +dependencies = [ + "bytes", + "prost-derive 0.14.3", +] + +[[package]] +name = "prost-build" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" +dependencies = [ + "heck 0.5.0", + "itertools 0.14.0", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost 0.13.5", + "prost-types 0.13.5", + "regex", + "syn 2.0.109", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn 2.0.109", ] [[package]] @@ -6788,13 +10770,47 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "prost-derive" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "prost-reflect" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37587d5a8a1b3dc9863403d084fc2254b91ab75a702207098837950767e2260b" +dependencies = [ + "logos", + "miette", + "prost 0.13.5", + "prost-types 0.13.5", +] + [[package]] name = "prost-types" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" dependencies = [ - "prost", + "prost 0.13.5", +] + +[[package]] +name = "prost-types" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" +dependencies = [ + "prost 0.14.3", ] [[package]] @@ -6817,6 +10833,33 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "protox" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "424c2bd294b69c49b949f3619362bc3c5d28298cd1163b6d1a62df37c16461aa" +dependencies = [ + "bytes", + "miette", + "prost 0.13.5", + "prost-reflect", + "prost-types 0.13.5", + "protox-parse", + "thiserror 2.0.17", +] + +[[package]] +name = "protox-parse" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57927f9dbeeffcce7192404deee6157a640cbb3fe8ac11eabbe571565949ab75" +dependencies = [ + "logos", + "miette", + "prost-types 0.13.5", + "thiserror 2.0.17", +] + [[package]] name = "prover-alloy" version = "0.1.0" @@ -6922,12 +10965,69 @@ dependencies = [ "toml 0.8.23", ] +[[package]] +name = "ptr_meta" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9a0cf95a1196af61d4f1cbdab967179516d9a4a4312af1f31948f8f6224a79" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "quanta" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" +dependencies = [ + "crossbeam-utils", + "libc", + "once_cell", + "raw-cpuid", + "wasi", + "web-sys", + "winapi", +] + [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +[[package]] +name = "quick-protobuf" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" +dependencies = [ + "byteorder", +] + +[[package]] +name = "quick-protobuf-codec" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a0580ab32b169745d7a39db2ba969226ca16738931be152a3209b409de2474" +dependencies = [ + "asynchronous-codec", + "bytes", + "quick-protobuf", + "thiserror 1.0.69", + "unsigned-varint 0.8.0", +] + [[package]] name = "quinn" version = "0.11.9" @@ -6936,6 +11036,7 @@ checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", + "futures-io", "pin-project-lite", "quinn-proto", "quinn-udp", @@ -7004,6 +11105,15 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "rancor" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a063ea72381527c2a0561da9c80000ef822bdd7c3241b1cc1b12100e3df081ee" +dependencies = [ + "ptr_meta", +] + [[package]] name = "rand" version = "0.8.5" @@ -7075,6 +11185,15 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rand_xoshiro" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" +dependencies = [ + "rand_core 0.9.3", +] + [[package]] name = "range-set-blaze" version = "0.1.16" @@ -7096,6 +11215,15 @@ dependencies = [ "rustversion", ] +[[package]] +name = "raw-cpuid" +version = "11.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +dependencies = [ + "bitflags 2.10.0", +] + [[package]] name = "rayon" version = "1.11.0" @@ -7125,6 +11253,19 @@ dependencies = [ "rayon", ] +[[package]] +name = "rcgen" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" +dependencies = [ + "pem", + "ring", + "rustls-pki-types", + "time", + "yasna", +] + [[package]] name = "recvmsg" version = "1.0.0" @@ -7137,18 +11278,29 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags", + "bitflags 2.10.0", ] [[package]] name = "redox_users" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 1.0.69", + "thiserror 2.0.17", ] [[package]] @@ -7212,12 +11364,22 @@ version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" +[[package]] +name = "rend" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6" +dependencies = [ + "bytecheck", +] + [[package]] name = "reqwest" version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ + "async-compression", "base64 0.22.1", "bytes", "encoding_rs", @@ -7235,16 +11397,18 @@ dependencies = [ "js-sys", "log", "mime", + "mime_guess", "native-tls", "percent-encoding", "pin-project-lite", "quinn", "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tokio-native-tls", "tokio-rustls 0.26.4", @@ -7275,6 +11439,12 @@ dependencies = [ "tower-service", ] +[[package]] +name = "resolv-conf" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" + [[package]] name = "reth-chainspec" version = "1.9.1" @@ -7283,7 +11453,7 @@ dependencies = [ "alloy-chains", "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.2", "alloy-genesis", "alloy-primitives", "alloy-trie", @@ -7425,7 +11595,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.2", "alloy-primitives", "auto_impl", "derive_more 2.1.1", @@ -7436,7 +11606,7 @@ dependencies = [ "reth-storage-api", "reth-storage-errors", "reth-trie-common", - "revm", + "revm 31.0.1", ] [[package]] @@ -7446,7 +11616,7 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.2", "alloy-primitives", "alloy-rpc-types-engine", "derive_more 2.1.1", @@ -7457,7 +11627,7 @@ dependencies = [ "reth-execution-types", "reth-primitives-traits", "reth-storage-errors", - "revm", + "revm 31.0.1", ] [[package]] @@ -7465,7 +11635,7 @@ name = "reth-execution-errors" version = "1.9.1" source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ - "alloy-evm", + "alloy-evm 0.23.2", "alloy-primitives", "alloy-rlp", "nybbles", @@ -7480,13 +11650,13 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.2", "alloy-primitives", "derive_more 2.1.1", "reth-ethereum-primitives", "reth-primitives-traits", "reth-trie-common", - "revm", + "revm 31.0.1", "serde", "serde_with", ] @@ -7547,7 +11717,7 @@ dependencies = [ "reth-storage-api", "reth-storage-errors", "reth-trie-common", - "revm", + "revm 31.0.1", "thiserror 2.0.17", "tracing", ] @@ -7559,12 +11729,12 @@ source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5 dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", - "alloy-op-evm", + "alloy-evm 0.23.2", + "alloy-op-evm 0.23.2", "alloy-primitives", "op-alloy-consensus", "op-alloy-rpc-types-engine", - "op-revm", + "op-revm 12.0.1", "reth-chainspec", "reth-evm", "reth-execution-errors", @@ -7575,7 +11745,7 @@ dependencies = [ "reth-optimism-primitives", "reth-primitives-traits", "reth-storage-errors", - "revm", + "revm 31.0.1", "thiserror 2.0.17", ] @@ -7788,6 +11958,25 @@ dependencies = [ "zstd", ] +[[package]] +name = "revm" +version = "30.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76df793c6ef3bef8f88f05b3873ebebce1494385a3ce8f58ad2e2e111aa0de11" +dependencies = [ + "revm-bytecode", + "revm-context 10.1.2", + "revm-context-interface 11.1.2", + "revm-database", + "revm-database-interface", + "revm-handler 11.2.0", + "revm-inspector 11.2.0", + "revm-interpreter 28.0.0", + "revm-precompile 28.1.1", + "revm-primitives", + "revm-state", +] + [[package]] name = "revm" version = "31.0.1" @@ -7795,14 +11984,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93df0ff5eb70facbc872f82da4b815d7bd8e36b7ee525c637cabcb2a6af8a708" dependencies = [ "revm-bytecode", - "revm-context", - "revm-context-interface", + "revm-context 11.0.1", + "revm-context-interface 12.0.1", "revm-database", "revm-database-interface", - "revm-handler", - "revm-inspector", - "revm-interpreter", - "revm-precompile", + "revm-handler 12.0.1", + "revm-inspector 12.0.1", + "revm-interpreter 29.0.1", + "revm-precompile 29.0.1", "revm-primitives", "revm-state", ] @@ -7819,6 +12008,23 @@ dependencies = [ "serde", ] +[[package]] +name = "revm-context" +version = "10.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7adcce0c14cf59b7128de34185a0fbf8f63309539b9263b35ead870d73584114" +dependencies = [ + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode", + "revm-context-interface 11.1.2", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", +] + [[package]] name = "revm-context" version = "11.0.1" @@ -7829,7 +12035,23 @@ dependencies = [ "cfg-if", "derive-where", "revm-bytecode", - "revm-context-interface", + "revm-context-interface 12.0.1", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-context-interface" +version = "11.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d620a9725e443c171fb195a074331fa4a745fa5cbb0018b4bbf42619e64b563" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", "revm-database-interface", "revm-primitives", "revm-state", @@ -7879,6 +12101,25 @@ dependencies = [ "serde", ] +[[package]] +name = "revm-handler" +version = "11.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d8049b2fbff6636150f4740c95369aa174e41b0383034e0e256cfdffcfcd23" +dependencies = [ + "auto_impl", + "derive-where", + "revm-bytecode", + "revm-context 10.1.2", + "revm-context-interface 11.1.2", + "revm-database-interface", + "revm-interpreter 28.0.0", + "revm-precompile 28.1.1", + "revm-primitives", + "revm-state", + "serde", +] + [[package]] name = "revm-handler" version = "12.0.1" @@ -7888,14 +12129,32 @@ dependencies = [ "auto_impl", "derive-where", "revm-bytecode", - "revm-context", - "revm-context-interface", + "revm-context 11.0.1", + "revm-context-interface 12.0.1", + "revm-database-interface", + "revm-interpreter 29.0.1", + "revm-precompile 29.0.1", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-inspector" +version = "11.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a21dd773b654ec7e080025eecef4ac84c711150d1bd36acadf0546f471329a" +dependencies = [ + "auto_impl", + "either", + "revm-context 10.1.2", "revm-database-interface", - "revm-interpreter", - "revm-precompile", + "revm-handler 11.2.0", + "revm-interpreter 28.0.0", "revm-primitives", "revm-state", "serde", + "serde_json", ] [[package]] @@ -7906,16 +12165,29 @@ checksum = "57afb06e5985dbd2e8a48a3e6727cb0dd45148e4e6e028ac8222e262e440d3de" dependencies = [ "auto_impl", "either", - "revm-context", + "revm-context 11.0.1", "revm-database-interface", - "revm-handler", - "revm-interpreter", + "revm-handler 12.0.1", + "revm-interpreter 29.0.1", "revm-primitives", "revm-state", "serde", "serde_json", ] +[[package]] +name = "revm-interpreter" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1de5c790122f8ded67992312af8acd41ccfcee629b25b819e10c5b1f69caf57" +dependencies = [ + "revm-bytecode", + "revm-context-interface 11.1.2", + "revm-primitives", + "revm-state", + "serde", +] + [[package]] name = "revm-interpreter" version = "29.0.1" @@ -7923,12 +12195,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22789ce92c5808c70185e3bc49732f987dc6fd907f77828c8d3470b2299c9c65" dependencies = [ "revm-bytecode", - "revm-context-interface", + "revm-context-interface 12.0.1", "revm-primitives", "revm-state", "serde", ] +[[package]] +name = "revm-precompile" +version = "28.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57aadd7a2087705f653b5aaacc8ad4f8e851f5d330661e3f4c43b5475bbceae" +dependencies = [ + "ark-bls12-381", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "arrayref", + "aurora-engine-modexp", + "blst", + "c-kzg", + "cfg-if", + "k256 0.13.4", + "p256", + "revm-primitives", + "ripemd", + "rug", + "secp256k1 0.31.1", + "sha2 0.10.9", + "substrate-bn", +] + [[package]] name = "revm-precompile" version = "29.0.1" @@ -7972,7 +12270,7 @@ version = "8.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d8be953b7e374dbdea0773cf360debed8df394ea8d82a8b240a6b5da37592fc" dependencies = [ - "bitflags", + "bitflags 2.10.0", "revm-bytecode", "revm-primitives", "serde", @@ -8022,6 +12320,46 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "rkyv" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "360b333c61ae24e5af3ae7c8660bd6b21ccd8200dbbc5d33c2454421e85b9c69" +dependencies = [ + "bytecheck", + "bytes", + "hashbrown 0.15.5", + "hashbrown 0.16.0", + "indexmap 2.12.0", + "munge", + "ptr_meta", + "rancor", + "rend", + "rkyv_derive", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02f8cdd12b307ab69fe0acf4cd2249c7460eb89dce64a0febadf934ebb6a9e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "rlimit" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7043b63bd0cd1aaa628e476b80e6d4023a3b50eb32789f2728908107bd0c793a" +dependencies = [ + "libc", +] + [[package]] name = "rlp" version = "0.5.2" @@ -8032,6 +12370,16 @@ dependencies = [ "rustc-hex", ] +[[package]] +name = "rocksdb" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddb7af00d2b17dbd07d82c0063e25411959748ff03e8d4f96134c2ff41fce34f" +dependencies = [ + "libc", + "librocksdb-sys", +] + [[package]] name = "route-recognizer" version = "0.3.1" @@ -8049,18 +12397,38 @@ dependencies = [ "paste", ] +[[package]] +name = "rsa" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" +dependencies = [ + "const-oid", + "digest 0.10.7", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "signature 2.2.0", + "spki 0.7.3", + "subtle", + "zeroize", +] + [[package]] name = "rsp-client-executor" version = "0.1.0" source = "git+https://github.com/succinctlabs/rsp?tag=reth-1.9.1b#1ddb68b4bcf7060af7eb4930e79a17f927c99c93" dependencies = [ "alloy-consensus", - "alloy-evm", + "alloy-evm 0.23.2", "alloy-network", "alloy-primitives", "alloy-rpc-types", "itertools 0.13.0", - "kzg-rs", + "kzg-rs 0.2.7 (git+https://github.com/succinctlabs/kzg-rs)", "reth-chainspec", "reth-consensus", "reth-consensus-common", @@ -8072,7 +12440,7 @@ dependencies = [ "reth-execution-types", "reth-primitives-traits", "reth-trie", - "revm", + "revm 31.0.1", "revm-primitives", "rsp-mpt", "rsp-primitives", @@ -8183,6 +12551,24 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "rtnetlink" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0" +dependencies = [ + "futures", + "log", + "netlink-packet-core", + "netlink-packet-route", + "netlink-packet-utils", + "netlink-proto", + "netlink-sys", + "nix 0.26.4", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "rug" version = "1.28.0" @@ -8229,6 +12615,47 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" +[[package]] +name = "rust-kzg-bn254-primitives" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/rust-kzg-bn254.git?rev=4d1d6a84910a3fc1e5e8927f694e4fc10ac5dd9d#4d1d6a84910a3fc1e5e8927f694e4fc10ac5dd9d" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-poly", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "libm", + "num-traits", + "serde", + "sha2 0.10.9", + "thiserror 2.0.17", +] + +[[package]] +name = "rust-kzg-bn254-verifier" +version = "0.1.2" +source = "git+https://github.com/Layr-Labs/rust-kzg-bn254.git?rev=4d1d6a84910a3fc1e5e8927f694e4fc10ac5dd9d#4d1d6a84910a3fc1e5e8927f694e4fc10ac5dd9d" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "rust-kzg-bn254-primitives", +] + +[[package]] +name = "rust_decimal" +version = "1.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f703d19852dbf87cbc513643fa81428361eb6940f1ac14fd58155d295a3eb0" +dependencies = [ + "arrayvec", + "num-traits", + "serde", +] + [[package]] name = "rustc-demangle" version = "0.1.26" @@ -8271,13 +12698,22 @@ dependencies = [ "semver 1.0.27", ] +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + [[package]] name = "rustix" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", @@ -8431,6 +12867,17 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "rw-stream-sink" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" +dependencies = [ + "futures", + "pin-project 1.1.10", + "static_assertions", +] + [[package]] name = "ryu" version = "1.0.20" @@ -8604,13 +13051,26 @@ dependencies = [ "cc", ] +[[package]] +name = "secret-vault-value" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662c7f8e99d46c9d3a87561d771a970c29efaccbab4bbdc6ab65d099d2358077" +dependencies = [ + "prost 0.14.3", + "prost-types 0.14.3", + "serde", + "serde_json", + "zeroize", +] + [[package]] name = "security-framework" version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -8623,7 +13083,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -8699,6 +13159,26 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_cbor" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +dependencies = [ + "half", + "serde", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -8744,6 +13224,17 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", +] + [[package]] name = "serde_spanned" version = "0.6.9" @@ -8942,12 +13433,36 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "similar" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" +[[package]] +name = "simple_asn1" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.17", + "time", +] + [[package]] name = "siphasher" version = "1.0.1" @@ -8960,6 +13475,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" +[[package]] +name = "sketches-ddsketch" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" + [[package]] name = "slab" version = "0.4.11" @@ -8981,6 +13502,23 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" +[[package]] +name = "snow" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "850948bee068e713b8ab860fe1adc4d109676ab4c3b621fd8147f06b261f2f85" +dependencies = [ + "aes-gcm", + "blake2", + "chacha20poly1305", + "curve25519-dalek", + "rand_core 0.6.4", + "ring", + "rustc_version 0.4.1", + "sha2 0.10.9", + "subtle", +] + [[package]] name = "snowbridge-amcl" version = "1.0.2" @@ -9037,7 +13575,7 @@ dependencies = [ "cargo_metadata", "chrono", "clap", - "dirs", + "dirs 5.0.1", "sp1-prover", ] @@ -9048,8 +13586,8 @@ source = "git+https://github.com/succinctlabs/sp1-contract-call/?tag=reth-1.9.1b dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", - "alloy-op-evm", + "alloy-evm 0.23.2", + "alloy-op-evm 0.23.2", "alloy-primitives", "alloy-rpc-types", "alloy-rpc-types-eth", @@ -9057,7 +13595,7 @@ dependencies = [ "alloy-sol-types", "alloy-trie", "eyre", - "op-revm", + "op-revm 12.0.1", "reth-chainspec", "reth-consensus", "reth-ethereum-consensus", @@ -9068,7 +13606,7 @@ dependencies = [ "reth-optimism-evm", "reth-optimism-primitives", "reth-primitives", - "revm", + "revm 31.0.1", "revm-primitives", "rsp-client-executor", "rsp-mpt", @@ -9088,7 +13626,7 @@ source = "git+https://github.com/succinctlabs/sp1-contract-call/?tag=reth-1.9.1b dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-evm", + "alloy-evm 0.23.2", "alloy-primitives", "alloy-provider", "alloy-rpc-types", @@ -9102,7 +13640,7 @@ dependencies = [ "reth-chainspec", "reth-optimism-primitives", "reth-primitives", - "revm", + "revm 31.0.1", "revm-primitives", "rsp-client-executor", "rsp-mpt", @@ -9220,7 +13758,7 @@ checksum = "e3552cda9c153e7604ba9ec53822214e32975dc9e484eff832ccddbc018524fb" dependencies = [ "bincode", "ctrlc", - "prost", + "prost 0.13.5", "serde", "sp1-core-machine", "sp1-prover", @@ -9302,7 +13840,7 @@ dependencies = [ "anyhow", "bincode", "clap", - "dirs", + "dirs 5.0.1", "enum-map", "eyre", "hashbrown 0.14.5", @@ -9493,7 +14031,7 @@ dependencies = [ "backoff", "bincode", "cfg-if", - "dirs", + "dirs 5.0.1", "eventsource-stream", "futures", "hashbrown 0.14.5", @@ -9504,7 +14042,7 @@ dependencies = [ "p3-baby-bear", "p3-field", "p3-fri", - "prost", + "prost 0.13.5", "reqwest", "reqwest-middleware", "rustls 0.23.35", @@ -9616,6 +14154,18 @@ name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +dependencies = [ + "lock_api", +] [[package]] name = "spki" @@ -9637,6 +14187,203 @@ dependencies = [ "der 0.7.10", ] +[[package]] +name = "sqlx" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" +dependencies = [ + "sqlx-core", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" +dependencies = [ + "base64 0.22.1", + "bigdecimal", + "bytes", + "chrono", + "crc", + "crossbeam-queue", + "either", + "event-listener", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashbrown 0.15.5", + "hashlink 0.10.0", + "indexmap 2.12.0", + "log", + "memchr", + "native-tls", + "once_cell", + "percent-encoding", + "serde", + "serde_json", + "sha2 0.10.9", + "smallvec", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tracing", + "url", +] + +[[package]] +name = "sqlx-macros" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn 2.0.109", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" +dependencies = [ + "dotenvy", + "either", + "heck 0.5.0", + "hex", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "sqlx-core", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn 2.0.109", + "tokio", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" +dependencies = [ + "atoi", + "base64 0.22.1", + "bigdecimal", + "bitflags 2.10.0", + "byteorder", + "bytes", + "chrono", + "crc", + "digest 0.10.7", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array 0.14.9", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand 0.8.5", + "rsa", + "serde", + "sha1", + "sha2 0.10.9", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror 2.0.17", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" +dependencies = [ + "atoi", + "base64 0.22.1", + "bigdecimal", + "bitflags 2.10.0", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "itoa", + "log", + "md-5", + "memchr", + "num-bigint 0.4.6", + "once_cell", + "rand 0.8.5", + "serde", + "serde_json", + "sha2 0.10.9", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror 2.0.17", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" +dependencies = [ + "atoi", + "chrono", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "serde_urlencoded", + "sqlx-core", + "thiserror 2.0.17", + "tracing", + "url", +] + [[package]] name = "ssz_rs" version = "0.9.0" @@ -9681,6 +14428,17 @@ dependencies = [ "regex", ] +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + [[package]] name = "strsim" version = "0.11.1" @@ -9778,6 +14536,21 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "subtle-encoding" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +dependencies = [ + "zeroize", +] + +[[package]] +name = "subtle-ng" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" + [[package]] name = "syn" version = "1.0.109" @@ -9812,6 +14585,12 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "sync_wrapper" version = "1.0.2" @@ -9856,7 +14635,7 @@ dependencies = [ "ntapi", "once_cell", "rayon", - "windows", + "windows 0.52.0", ] [[package]] @@ -9865,7 +14644,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags", + "bitflags 2.10.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -9880,6 +14659,36 @@ dependencies = [ "libc", ] +[[package]] +name = "tabled" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" +dependencies = [ + "papergrid", + "tabled_derive", + "testing_table", +] + +[[package]] +name = "tabled_derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" +dependencies = [ + "heck 0.5.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + [[package]] name = "tap" version = "1.0.1" @@ -9899,6 +14708,51 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "tendermint" +version = "0.40.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc997743ecfd4864bbca8170d68d9b2bee24653b034210752c2d883ef4b838b1" +dependencies = [ + "bytes", + "digest 0.10.7", + "ed25519", + "ed25519-consensus", + "flex-error", + "futures", + "k256 0.13.4", + "num-traits", + "once_cell", + "prost 0.13.5", + "ripemd", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "sha2 0.10.9", + "signature 2.2.0", + "subtle", + "subtle-encoding", + "tendermint-proto", + "time", + "zeroize", +] + +[[package]] +name = "tendermint-proto" +version = "0.40.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c40e13d39ca19082d8a7ed22de7595979350319833698f8b1080f29620a094" +dependencies = [ + "bytes", + "flex-error", + "prost 0.13.5", + "serde", + "serde_bytes", + "subtle-encoding", + "time", +] + [[package]] name = "termtree" version = "0.5.1" @@ -9927,6 +14781,15 @@ dependencies = [ "syn 2.0.109", ] +[[package]] +name = "testing_table" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" +dependencies = [ + "unicode-width 0.2.2", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -9985,6 +14848,26 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "tikv-jemalloc-sys" +version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + [[package]] name = "time" version = "0.3.44" @@ -10069,6 +14952,16 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "tokio-io-timeout" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bd86198d9ee903fedd2f9a2e72014287c0d9167e4ae43b5853007205dda1b76" +dependencies = [ + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-macros" version = "2.6.0" @@ -10161,6 +15054,7 @@ dependencies = [ "futures-io", "futures-sink", "pin-project-lite", + "slab", "tokio", ] @@ -10244,6 +15138,33 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +[[package]] +name = "tonic" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +dependencies = [ + "async-stream", + "async-trait", + "axum 0.6.20", + "base64 0.21.7", + "bytes", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-timeout 0.4.1", + "percent-encoding", + "pin-project 1.1.10", + "prost 0.12.6", + "tokio", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tonic" version = "0.12.3" @@ -10260,11 +15181,11 @@ dependencies = [ "http-body 1.0.1", "http-body-util", "hyper 1.7.0", - "hyper-timeout", + "hyper-timeout 0.5.2", "hyper-util", "percent-encoding", - "pin-project", - "prost", + "pin-project 1.1.10", + "prost 0.13.5", "rustls-native-certs 0.8.2", "rustls-pemfile 2.2.0", "socket2 0.5.10", @@ -10292,13 +15213,15 @@ dependencies = [ "http-body 1.0.1", "http-body-util", "hyper 1.7.0", - "hyper-timeout", + "hyper-timeout 0.5.2", "hyper-util", "percent-encoding", - "pin-project", - "prost", + "pin-project 1.1.10", + "prost 0.13.5", + "rustls-native-certs 0.8.2", "socket2 0.5.10", "tokio", + "tokio-rustls 0.26.4", "tokio-stream", "tower 0.5.2", "tower-layer", @@ -10307,13 +15230,27 @@ dependencies = [ "zstd", ] +[[package]] +name = "tonic-build" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "prost-types 0.13.5", + "quote", + "syn 2.0.109", +] + [[package]] name = "tonic-health" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb87334d340313fefa513b6e60794d44a86d5f039b523229c99c323e4e19ca4b" dependencies = [ - "prost", + "prost 0.13.5", "tokio", "tokio-stream", "tonic 0.13.1", @@ -10325,8 +15262,8 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9687bd5bfeafebdded2356950f278bba8226f0b32109537c4253406e09aafe1" dependencies = [ - "prost", - "prost-types", + "prost 0.13.5", + "prost-types 0.13.5", "tokio", "tokio-stream", "tonic 0.13.1", @@ -10338,8 +15275,8 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07439468da24d5f211d3f3bd7b63665d8f45072804457e838a87414a478e2db8" dependencies = [ - "prost", - "prost-types", + "prost 0.13.5", + "prost-types 0.13.5", "tonic 0.13.1", ] @@ -10352,7 +15289,7 @@ dependencies = [ "futures-core", "futures-util", "indexmap 1.9.3", - "pin-project", + "pin-project 1.1.10", "pin-project-lite", "rand 0.8.5", "slab", @@ -10374,7 +15311,7 @@ dependencies = [ "indexmap 2.12.0", "pin-project-lite", "slab", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tokio-util", "tower-layer", @@ -10388,7 +15325,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags", + "bitflags 2.10.0", "bytes", "futures-util", "http 1.3.1", @@ -10412,6 +15349,18 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" +[[package]] +name = "tower-util" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1093c19826d33807c72511e68f73b4a0469a3f22c2bd5f7d5212178b4b89674" +dependencies = [ + "futures-core", + "futures-util", + "pin-project 0.4.30", + "tower-service", +] + [[package]] name = "tracing" version = "0.1.41" @@ -10491,6 +15440,43 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-opentelemetry" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f68803492bf28ab40aeccaecc7021096bd256baf7ca77c3d425d89b35a7be4e4" +dependencies = [ + "js-sys", + "once_cell", + "opentelemetry 0.23.0", + "opentelemetry_sdk 0.23.0", + "smallvec", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber 0.3.20", + "web-time", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6e5658463dd88089aba75c7791e1d3120633b1bfde22478b28f625a9bb1b8e" +dependencies = [ + "js-sys", + "opentelemetry 0.31.0", + "opentelemetry_sdk 0.31.0", + "rustversion", + "smallvec", + "thiserror 2.0.17", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber 0.3.20", + "web-time", +] + [[package]] name = "tracing-serde" version = "0.2.0" @@ -10605,7 +15591,7 @@ dependencies = [ "http 1.3.1", "http-body-util", "hyper 1.7.0", - "prost", + "prost 0.13.5", "reqwest", "serde", "serde_json", @@ -10639,24 +15625,69 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + [[package]] name = "unarray" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + [[package]] name = "unicode-ident" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "unicode-normalization" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" + [[package]] name = "unicode-segmentation" version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + [[package]] name = "unicode-width" version = "0.2.2" @@ -10684,12 +15715,28 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + [[package]] name = "unsigned-varint" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" +[[package]] +name = "unsigned-varint" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" + [[package]] name = "untrusted" version = "0.9.0" @@ -10738,6 +15785,7 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ + "getrandom 0.3.4", "js-sys", "wasm-bindgen", ] @@ -10857,6 +15905,12 @@ dependencies = [ "wit-bindgen", ] +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + [[package]] name = "wasm-bindgen" version = "0.2.105" @@ -10998,6 +16052,16 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "whoami" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" +dependencies = [ + "libredox", + "wasite", +] + [[package]] name = "widestring" version = "1.2.1" @@ -11045,6 +16109,27 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections", + "windows-core 0.62.2", + "windows-future", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core 0.62.2", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -11067,6 +16152,17 @@ dependencies = [ "windows-strings 0.5.1", ] +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", + "windows-threading", +] + [[package]] name = "windows-implement" version = "0.60.2" @@ -11101,6 +16197,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", +] + [[package]] name = "windows-registry" version = "0.5.3" @@ -11265,6 +16371,15 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -11454,6 +16569,16 @@ dependencies = [ "memchr", ] +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "wit-bindgen" version = "0.46.0" @@ -11494,12 +16619,56 @@ dependencies = [ "tap", ] +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core 0.6.4", + "serde", + "zeroize", +] + +[[package]] +name = "x509-parser" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460" +dependencies = [ + "asn1-rs", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror 2.0.17", + "time", +] + +[[package]] +name = "xml-rs" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" + [[package]] name = "xmlparser" version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" +[[package]] +name = "xmltree" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb" +dependencies = [ + "xml-rs", +] + [[package]] name = "yaml-rust" version = "0.4.5" @@ -11509,12 +16678,52 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "yamux" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed0164ae619f2dc144909a9f082187ebb5893693d8c0196e8085283ccd4b776" +dependencies = [ + "futures", + "log", + "nohash-hasher", + "parking_lot", + "pin-project 1.1.10", + "rand 0.8.5", + "static_assertions", +] + +[[package]] +name = "yamux" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deab71f2e20691b4728b349c6cee8fc7223880fa67b6b4f92225ec32225447e5" +dependencies = [ + "futures", + "log", + "nohash-hasher", + "parking_lot", + "pin-project 1.1.10", + "rand 0.9.2", + "static_assertions", + "web-time", +] + [[package]] name = "yansi" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time", +] + [[package]] name = "yoke" version = "0.8.1" diff --git a/Cargo.toml b/Cargo.toml index 51afe2b0..56d9dce9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ aggkit-prover = { path = "crates/aggkit-prover" } aggkit-prover-config = { path = "crates/aggkit-prover-config" } aggkit-prover-types = { path = "crates/aggkit-prover-types" } proposer-client = { path = "crates/proposer-client" } +proposer-db-client = { path = "crates/proposer-db-client" } proposer-elfs = { path = "crates/proposer-elfs" } proposer-service = { path = "crates/proposer-service" } prover-alloy = { path = "crates/prover-alloy" } @@ -50,6 +51,7 @@ unified-bridge = "0.13.0" # Ecosystem dependencies op-succinct-elfs = { git = "https://github.com/agglayer/op-succinct.git", tag = "v3.4.0-rc.1-agglayer" } +op-succinct-validity = { git = "https://github.com/agglayer/op-succinct.git", tag = "v3.4.0-rc.1-agglayer" } # SP1 dependencies # Please check if the toolchain image at the top `scripts/make/Makefile.elf.toml` could also be @@ -80,6 +82,7 @@ alloy-primitives = { version = "1.5.2", features = ["serde", "k256"] } anyhow = "1.0" arc-swap = "1.7" async-trait = "0.1.82" +chrono = { version = "0.4", features = ["serde"] } base64 = "0.22" buildstructor = "0.5.4" bytes = "1.10" @@ -121,6 +124,7 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde_with = "3.14" sha2 = "0.10.8" +sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "chrono", "json", "bigdecimal"] } test-log = "0.2.16" thiserror = "2.0" tiny-keccak = { version = "2.0", features = ["keccak"] } diff --git a/Dockerfile b/Dockerfile index fd872594..9e31b805 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,7 +24,7 @@ FROM --platform=${BUILDPLATFORM} golang:1.22 AS go-builder FROM chef AS builder RUN apt-get update && \ - apt-get --no-install-recommends install -y clang cmake curl libssl-dev tar pkg-config unzip && \ + apt-get --no-install-recommends install -y make clang cmake curl libssl-dev tar pkg-config unzip && \ rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* RUN ARCHITECTURE=$(uname -m | sed -e "s/arm64/arm_64/g" | sed -e "s/aarch64/aarch_64/g") \ diff --git a/crates/aggchain-proof-contracts/src/contracts.rs b/crates/aggchain-proof-contracts/src/contracts.rs index 7d860d1e..6720aa1e 100644 --- a/crates/aggchain-proof-contracts/src/contracts.rs +++ b/crates/aggchain-proof-contracts/src/contracts.rs @@ -67,6 +67,15 @@ pub trait L1OpSuccinctConfigFetcher { async fn get_op_succinct_config(&self) -> Result; } +/// Trait for fetching chain IDs from RPC providers. +pub trait ChainIdProvider { + /// Returns the L1 chain ID. + fn l1_chain_id(&self) -> u64; + + /// Returns the L2 chain ID. + fn l2_chain_id(&self) -> u64; +} + #[async_trait::async_trait] pub trait GetTrustedSequencerAddress { async fn get_trusted_sequencer_address(&self) -> Result; diff --git a/crates/aggchain-proof-contracts/src/error.rs b/crates/aggchain-proof-contracts/src/error.rs index 1ccef52d..ba61df81 100644 --- a/crates/aggchain-proof-contracts/src/error.rs +++ b/crates/aggchain-proof-contracts/src/error.rs @@ -78,6 +78,9 @@ pub enum Error { #[error("Invalid op succinct config name input: {0}")] InvalidOpSuccinctConfigName(String), + #[error("Unable to retrieve chain ID from RPC provider")] + ChainIdRetrievalError(#[source] alloy::transports::TransportError), + #[error(transparent)] Other(eyre::Report), } diff --git a/crates/aggchain-proof-contracts/src/lib.rs b/crates/aggchain-proof-contracts/src/lib.rs index 7e198fbb..89a4a685 100644 --- a/crates/aggchain-proof-contracts/src/lib.rs +++ b/crates/aggchain-proof-contracts/src/lib.rs @@ -84,10 +84,26 @@ pub struct AggchainContractsRpcClient { /// Aggchain FEP opSuccinctConfig name. op_succinct_config_name: agglayer_primitives::alloy_primitives::FixedBytes<32>, + + /// L1 chain ID fetched from the RPC provider. + l1_chain_id: u64, + + /// L2 chain ID fetched from the RPC provider. + l2_chain_id: u64, } impl AggchainContractsClient for AggchainContractsRpcClient {} +impl contracts::ChainIdProvider for AggchainContractsRpcClient { + fn l1_chain_id(&self) -> u64 { + self.l1_chain_id + } + + fn l2_chain_id(&self) -> u64 { + self.l2_chain_id + } +} + #[async_trait::async_trait] impl L2LocalExitRootFetcher for AggchainContractsRpcClient where @@ -450,10 +466,23 @@ impl AggchainContractsRpcClient { .await .map_err(Error::SelectedOpSuccinctConfigRetrievalError)?; + // Fetch chain IDs from the L1 and L2 providers + let l1_chain_id = l1_client + .get_chain_id() + .await + .map_err(Error::ChainIdRetrievalError)?; + + let l2_chain_id = l2_el_client + .get_chain_id() + .await + .map_err(Error::ChainIdRetrievalError)?; + info!(global_exit_root_manager_l2=%config.global_exit_root_manager_v2_sovereign_chain, polygon_zkevm_bridge_v2=%polygon_zkevm_bridge_v2.address(), polygon_rollup_manager=%config.polygon_rollup_manager, aggchain_fep=%aggchain_fep.address(), + %l1_chain_id, + %l2_chain_id, "Aggchain proof contracts client created successfully"); Ok(Self { @@ -466,6 +495,8 @@ impl AggchainContractsRpcClient { static_call_caller_address: config.static_call_caller_address, evm_sketch_genesis: config::parse_evm_sketch_genesis(&config.evm_sketch_genesis)?, op_succinct_config_name, + l1_chain_id, + l2_chain_id, }) } } diff --git a/crates/aggchain-proof-contracts/src/tests/mod.rs b/crates/aggchain-proof-contracts/src/tests/mod.rs index a3df37e3..9836c18a 100644 --- a/crates/aggchain-proof-contracts/src/tests/mod.rs +++ b/crates/aggchain-proof-contracts/src/tests/mod.rs @@ -42,6 +42,11 @@ mod aggchain_contracts_rpc_client { let mut server_l2_el = mockito::Server::new_async().await; let server_l2_cl = mockito::Server::new_async().await; + // Mock eth_chainId for L1 + let mock_l1_chain_id = mock_chain_id(&mut server_l1, 1); + // Mock eth_chainId for L2 + let mock_l2_chain_id = mock_chain_id(&mut server_l2_el, 10); + // We ask the global exit root manager contract for the PolygonZkEVMBridgeV2 // contract address with the "bridgeAddress()" call let bridge_address_expected_body = serde_json::json!({ @@ -122,6 +127,8 @@ mod aggchain_contracts_rpc_client { mock_l2.assert_async().await; mock_l1.assert_async().await; + mock_l1_chain_id.assert_async().await; + mock_l2_chain_id.assert_async().await; mock_l1_trusted_sequencer.assert_async().await; mock_l1_selected_op_succinct_config_name .assert_async() @@ -136,6 +143,25 @@ mod aggchain_contracts_rpc_client { )) } + fn mock_chain_id(server: &mut ServerGuard, chain_id: u64) -> mockito::Mock { + server + .mock("POST", "/") + .with_status(200) + .with_header("content-type", "text/javascript") + .match_body(mockito::Matcher::PartialJson(json!({ + "method": "eth_chainId" + }))) + .with_body( + json!({ + "jsonrpc": "2.0", + "id": 0, + "result": format!("0x{:x}", chain_id) + }) + .to_string(), + ) + .create() + } + fn mock_trusted_sequencer_call(server_l1: &mut ServerGuard) -> mockito::Mock { let trusted_sequencer_expected_body = serde_json::json!( { @@ -217,8 +243,6 @@ mod aggchain_contracts_rpc_client { "to": "0x8e80ffe6dc044f4a766afd6e5a8732fe0977a493", "input": format!("0x{}", hex::encode(calldata)), }, "latest"], - "id": 3, - "jsonrpc": "2.0", }); // Return three bytes32 values (aggregationVkey, rangeVkeyCommitment, @@ -237,7 +261,7 @@ mod aggchain_contracts_rpc_client { let result_tuple = (aggregation_vkey, range_vkey_commitment, rollup_config_hash); let result = json!({ "jsonrpc": "2.0", - "id": 3, + "id": 0, "result": format!("0x{}", hex::encode(alloy::sol_types::SolValue::abi_encode(&result_tuple))) }).to_string(); @@ -245,7 +269,7 @@ mod aggchain_contracts_rpc_client { .mock("POST", "/") .with_status(200) .with_header("content-type", "text/javascript") - .match_body(mockito::Matcher::Json(expected_body)) + .match_body(mockito::Matcher::PartialJson(expected_body)) .with_body(result) .create() } @@ -345,18 +369,16 @@ mod aggchain_contracts_rpc_client { "input":"0x5ca1e165", }, "0xa"], - "id": 1, - "jsonrpc": "2.0", }); let mock_l2 = server_l2_el .mock("POST", "/") .with_status(200) .with_header("content-type", "text/javascript") - .match_body(mockito::Matcher::Json(get_local_exit_root_body)) + .match_body(mockito::Matcher::PartialJson(get_local_exit_root_body)) .with_body( json!({ - "id": 1, + "id": 0, "jsonrpc": "2.0", "result": "0x27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d757" }) @@ -394,18 +416,16 @@ mod aggchain_contracts_rpc_client { "input":"0x5ca1e165", }, "0xa"], - "id": 1, - "jsonrpc": "2.0", }); let mock_l2 = server_l2_el .mock("POST", "/") .with_status(200) .with_header("content-type", "text/javascript") - .match_body(mockito::Matcher::Json(get_local_exit_root_body)) + .match_body(mockito::Matcher::PartialJson(get_local_exit_root_body)) .with_body( json!({ - "id": 1, + "id": 0, "jsonrpc": "2.0", "result": "0x27ae5ba08d7291c96c8cbddcc" }) diff --git a/crates/aggchain-proof-service/src/service.rs b/crates/aggchain-proof-service/src/service.rs index 26bc9f67..1d90bf84 100644 --- a/crates/aggchain-proof-service/src/service.rs +++ b/crates/aggchain-proof-service/src/service.rs @@ -110,17 +110,25 @@ impl AggchainProofService { let proposer_service = if config.proposer_service.mock { tower::ServiceBuilder::new() .service( - ProposerService::new_mock(&config.proposer_service, l1_rpc_client) - .await - .map_err(Error::ProposerServiceInitFailed)?, + ProposerService::new_mock( + &config.proposer_service, + l1_rpc_client, + contract_l1_client.clone(), + ) + .await + .map_err(Error::ProposerServiceInitFailed)?, ) .boxed_clone() } else { tower::ServiceBuilder::new() .service( - ProposerService::new_network(&config.proposer_service, l1_rpc_client) - .await - .map_err(Error::ProposerServiceInitFailed)?, + ProposerService::new_network( + &config.proposer_service, + l1_rpc_client, + contract_l1_client.clone(), + ) + .await + .map_err(Error::ProposerServiceInitFailed)?, ) .boxed_clone() }; diff --git a/crates/aggkit-prover-config/tests/snapshots/validate_deserialize__empty_rpcs.snap b/crates/aggkit-prover-config/tests/snapshots/validate_deserialize__empty_rpcs.snap index 525306c0..c3af9c88 100644 --- a/crates/aggkit-prover-config/tests/snapshots/validate_deserialize__empty_rpcs.snap +++ b/crates/aggkit-prover-config/tests/snapshots/validate_deserialize__empty_rpcs.snap @@ -1,6 +1,8 @@ --- source: crates/aggkit-prover-config/tests/validate_deserialize.rs +assertion_line: 13 expression: config +snapshot_kind: text --- grpc-endpoint = "127.0.0.1:8081" @@ -35,6 +37,7 @@ evm-sketch-genesis = "mainnet" [aggchain-proof-service.proposer-service] mock = false l1-rpc-endpoint = "http://anvil-mock-l1-rpc:8545/" +l2-consensus-layer-rpc-endpoint = "http://rollup-node-mock-l2-rpc:8545/" [aggchain-proof-service.proposer-service.client] proposer-endpoint = "http://proposer-mock-rpc:3000/" diff --git a/crates/aggkit-prover-config/tests/snapshots/validate_deserialize__prover_grpc_max_decoding_message_size.snap b/crates/aggkit-prover-config/tests/snapshots/validate_deserialize__prover_grpc_max_decoding_message_size.snap index 6a125b17..4eaaa129 100644 --- a/crates/aggkit-prover-config/tests/snapshots/validate_deserialize__prover_grpc_max_decoding_message_size.snap +++ b/crates/aggkit-prover-config/tests/snapshots/validate_deserialize__prover_grpc_max_decoding_message_size.snap @@ -1,6 +1,8 @@ --- source: crates/aggkit-prover-config/tests/validate_deserialize.rs +assertion_line: 32 expression: config +snapshot_kind: text --- grpc-endpoint = "127.0.0.1:8081" @@ -38,6 +40,7 @@ evm-sketch-genesis = "mainnet" [aggchain-proof-service.proposer-service] mock = false l1-rpc-endpoint = "http://anvil-mock-l1-rpc:8545/" +l2-consensus-layer-rpc-endpoint = "http://rollup-node-mock-l2-rpc:8545/" [aggchain-proof-service.proposer-service.client] proposer-endpoint = "http://proposer-mock-rpc:3000/" diff --git a/crates/proposer-db-client/Cargo.toml b/crates/proposer-db-client/Cargo.toml new file mode 100644 index 00000000..ad048703 --- /dev/null +++ b/crates/proposer-db-client/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "proposer-db-client" +version.workspace = true +edition.workspace = true +license.workspace = true + +[dependencies] +sqlx = { workspace = true } +chrono = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +thiserror = { workspace = true } +tokio = { workspace = true } +url = { workspace = true } + +op-succinct-validity = { workspace = true } diff --git a/crates/proposer-db-client/src/client.rs b/crates/proposer-db-client/src/client.rs new file mode 100644 index 00000000..7b61912f --- /dev/null +++ b/crates/proposer-db-client/src/client.rs @@ -0,0 +1,218 @@ +use sqlx::{PgPool, Row}; + +use crate::{ + error::Error, + types::{OPSuccinctRequest, RequestStatus, RequestType}, +}; + +#[derive(Clone)] +pub struct ProposerDBClient { + pool: PgPool, +} + +impl ProposerDBClient { + pub async fn new(database_url: &url::Url) -> Result { + let pool = PgPool::connect(database_url.as_str()).await?; + Ok(Self { pool }) + } + + pub async fn insert_request(&self, request: &OPSuccinctRequest) -> Result { + let id = sqlx::query( + r#" + INSERT INTO requests ( + status, req_type, mode, start_block, end_block, created_at, + updated_at, proof_request_id, proof_request_time, + checkpointed_l1_block_number, checkpointed_l1_block_hash, + execution_statistics, witnessgen_duration, execution_duration, + prove_duration, range_vkey_commitment, aggregation_vkey_hash, + rollup_config_hash, relay_tx_hash, proof, total_nb_transactions, + total_eth_gas_used, total_l1_fees, total_tx_fees, l1_chain_id, + l2_chain_id, contract_address, prover_address, l1_head_block_number + ) VALUES ( + $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 + ) + RETURNING id + "#, + ) + .bind(request.status) + .bind(request.req_type) + .bind(request.mode) + .bind(request.start_block) + .bind(request.end_block) + .bind(request.created_at) + .bind(request.updated_at) + .bind(request.proof_request_id.as_deref()) + .bind(request.proof_request_time) + .bind(request.checkpointed_l1_block_number) + .bind(request.checkpointed_l1_block_hash.as_deref()) + .bind(&request.execution_statistics) + .bind(request.witnessgen_duration) + .bind(request.execution_duration) + .bind(request.prove_duration) + .bind(&request.range_vkey_commitment) + .bind(request.aggregation_vkey_hash.as_deref()) + .bind(&request.rollup_config_hash) + .bind(request.relay_tx_hash.as_deref()) + .bind(request.proof.as_deref()) + .bind(request.total_nb_transactions) + .bind(request.total_eth_gas_used) + .bind(&request.total_l1_fees) + .bind(&request.total_tx_fees) + .bind(request.l1_chain_id) + .bind(request.l2_chain_id) + .bind(request.contract_address.as_deref()) + .bind(request.prover_address.as_deref()) + .bind(request.l1_head_block_number) + .fetch_one(&self.pool) + .await? + .try_get("id")?; + + Ok(id) + } + + pub async fn get_consecutive_complete_range_proofs( + &self, + start_block: i64, + end_block: i64, + range_vkey_commitment: &[u8], + rollup_config_hash: &[u8], + l1_chain_id: i64, + l2_chain_id: i64, + ) -> Result, Error> { + let requests = sqlx::query_as::<_, OPSuccinctRequest>( + r#" + SELECT * FROM requests + WHERE range_vkey_commitment = $1 + AND rollup_config_hash = $2 + AND status = $3 + AND req_type = $4 + AND start_block >= $5 + AND end_block <= $6 + AND l1_chain_id = $7 + AND l2_chain_id = $8 + ORDER BY start_block ASC + "#, + ) + .bind(range_vkey_commitment) + .bind(rollup_config_hash) + .bind(RequestStatus::Complete) + .bind(RequestType::Range) + .bind(start_block) + .bind(end_block) + .bind(l1_chain_id) + .bind(l2_chain_id) + .fetch_all(&self.pool) + .await?; + + if requests.is_empty() { + return Err(Error::NoRangeProofsFound); + } + + Ok(requests) + } + + pub async fn get_agg_proof_by_id(&self, proof_id: i64) -> Result, Error> { + let row = sqlx::query( + r#" + SELECT proof FROM requests WHERE id = $1 + "#, + ) + .bind(proof_id) + .fetch_one(&self.pool) + .await?; + + let proof: Option> = row.try_get("proof")?; + proof.ok_or(Error::ProofNotFound) + } + + pub async fn get_request_by_id(&self, id: i64) -> Result { + let request = sqlx::query_as::<_, OPSuccinctRequest>( + r#" + SELECT * FROM requests WHERE id = $1 + "#, + ) + .bind(id) + .fetch_one(&self.pool) + .await?; + + Ok(request) + } + + /// Polls the database until the request reaches Execution status with a + /// valid proof_request_id. Returns the proof_request_id bytes once + /// available. + pub async fn wait_for_proof_request_id( + &self, + request_id: i64, + poll_interval_ms: u64, + max_retries: u32, + ) -> Result, Error> { + let mut retries = 0; + + loop { + let request = self.get_request_by_id(request_id).await?; + + match request.status { + RequestStatus::Failed => return Err(Error::ProofGenerationFailed(request_id)), + RequestStatus::Cancelled => { + return Err(Error::ProofGenerationCancelled(request_id)) + } + // Once we reach Execution (or beyond), proof_request_id should be set + RequestStatus::Execution + | RequestStatus::Prove + | RequestStatus::Complete + | RequestStatus::Relayed => { + if let Some(proof_request_id) = request.proof_request_id { + return Ok(proof_request_id); + } + // proof_request_id not yet set, keep waiting + } + // Still in earlier stages (Unrequested, WitnessGeneration) + _ => {} + } + + if retries >= max_retries { + return Err(Error::ProofGenerationTimeout(request_id)); + } + retries += 1; + tokio::time::sleep(tokio::time::Duration::from_millis(poll_interval_ms)).await; + } + } + + /// Polls the database until the request reaches Complete status. + /// Returns the proof bytes once available. + pub async fn wait_for_proof_completion( + &self, + request_id: i64, + poll_interval_ms: u64, + max_retries: u32, + ) -> Result, Error> { + let mut retries = 0; + + loop { + let request = self.get_request_by_id(request_id).await?; + + match request.status { + RequestStatus::Failed => return Err(Error::ProofGenerationFailed(request_id)), + RequestStatus::Cancelled => { + return Err(Error::ProofGenerationCancelled(request_id)) + } + RequestStatus::Complete | RequestStatus::Relayed => { + if let Some(proof) = request.proof { + return Ok(proof); + } + return Err(Error::ProofNotFound); + } + // Still in progress (Unrequested, WitnessGeneration, Execution, Prove) + _ => {} + } + + if retries >= max_retries { + return Err(Error::ProofGenerationTimeout(request_id)); + } + retries += 1; + tokio::time::sleep(tokio::time::Duration::from_millis(poll_interval_ms)).await; + } + } +} diff --git a/crates/proposer-db-client/src/config.rs b/crates/proposer-db-client/src/config.rs new file mode 100644 index 00000000..a0c69c77 --- /dev/null +++ b/crates/proposer-db-client/src/config.rs @@ -0,0 +1,62 @@ +use serde::{Deserialize, Serialize}; +use url::Url; + +const DEFAULT_DATABASE_URL: &str = "postgresql://localhost:5432/proposer"; +const DEFAULT_MAX_CONNECTIONS: u32 = 10; +const DEFAULT_MIN_CONNECTIONS: u32 = 2; + +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "kebab-case")] +pub struct ProposerDBConfig { + #[serde(default = "default_database_url")] + pub database_url: Url, + + #[serde(default = "default_max_connections")] + pub max_connections: u32, + + #[serde(default = "default_min_connections")] + pub min_connections: u32, + + /// Polling interval in milliseconds for checking proof completion status + #[serde(default = "default_poll_interval_ms")] + pub poll_interval_ms: u64, + + /// Maximum number of polling retries before timing out + #[serde(default = "default_max_retries")] + pub max_retries: u32, +} + +impl Default for ProposerDBConfig { + fn default() -> Self { + Self { + database_url: default_database_url(), + max_connections: default_max_connections(), + min_connections: default_min_connections(), + poll_interval_ms: default_poll_interval_ms(), + max_retries: default_max_retries(), + } + } +} + +fn default_database_url() -> Url { + std::env::var("PROVER_DATABASE_URL") + .ok() + .and_then(|s| Url::parse(&s).ok()) + .unwrap_or_else(|| Url::parse(DEFAULT_DATABASE_URL).expect("Invalid default database URL")) +} + +const fn default_max_connections() -> u32 { + DEFAULT_MAX_CONNECTIONS +} + +const fn default_min_connections() -> u32 { + DEFAULT_MIN_CONNECTIONS +} + +const fn default_poll_interval_ms() -> u64 { + 5000 // 5 seconds +} + +const fn default_max_retries() -> u32 { + 720 // 720 * 5s = 1 hour +} diff --git a/crates/proposer-db-client/src/error.rs b/crates/proposer-db-client/src/error.rs new file mode 100644 index 00000000..a81c53f1 --- /dev/null +++ b/crates/proposer-db-client/src/error.rs @@ -0,0 +1,22 @@ +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum Error { + #[error("Database connection error: {0}")] + Connection(#[from] sqlx::Error), + + #[error("Proof not found for the given ID")] + ProofNotFound, + + #[error("No consecutive complete range proofs found")] + NoRangeProofsFound, + + #[error("Proof generation failed for request {0}")] + ProofGenerationFailed(i64), + + #[error("Proof generation cancelled for request {0}")] + ProofGenerationCancelled(i64), + + #[error("Proof generation timeout for request {0}")] + ProofGenerationTimeout(i64), +} diff --git a/crates/proposer-db-client/src/lib.rs b/crates/proposer-db-client/src/lib.rs new file mode 100644 index 00000000..81c1902f --- /dev/null +++ b/crates/proposer-db-client/src/lib.rs @@ -0,0 +1,9 @@ +pub mod client; +pub mod config; +pub mod error; +pub mod types; + +pub use client::ProposerDBClient; +pub use config::ProposerDBConfig; +pub use error::Error; +pub use types::{OPSuccinctRequest, RequestMode, RequestStatus, RequestType}; diff --git a/crates/proposer-db-client/src/types.rs b/crates/proposer-db-client/src/types.rs new file mode 100644 index 00000000..87df7228 --- /dev/null +++ b/crates/proposer-db-client/src/types.rs @@ -0,0 +1,2 @@ +// Re-export types from op-succinct-validity +pub use op_succinct_validity::{OPSuccinctRequest, RequestMode, RequestStatus, RequestType}; diff --git a/crates/proposer-service/Cargo.toml b/crates/proposer-service/Cargo.toml index 7b44bbfb..71c989e7 100644 --- a/crates/proposer-service/Cargo.toml +++ b/crates/proposer-service/Cargo.toml @@ -12,12 +12,14 @@ path = "src/tests/proposer_service_test_program.rs" workspace = true [dependencies] +aggchain-proof-contracts.workspace = true aggchain-proof-core.workspace = true aggkit-prover-types = { workspace = true, features = ["sp1"] } agglayer-evm-client.workspace = true color-eyre.workspace = true eyre.workspace = true proposer-client.workspace = true +proposer-db-client.workspace = true prover-alloy.workspace = true prover-executor.workspace = true prover-logger.workspace = true @@ -26,22 +28,40 @@ proposer-elfs.workspace = true alloy-primitives.workspace = true alloy-sol-types.workspace = true anyhow.workspace = true +async-trait.workspace = true +jsonrpsee.workspace = true base64.workspace = true +bincode = "1.3" +chrono.workspace = true clap.workspace = true educe.workspace = true futures.workspace = true serde.workspace = true +serde_json.workspace = true sp1-core-executor.workspace = true sp1-prover.workspace = true sp1-sdk.workspace = true +sqlx.workspace = true thiserror.workspace = true tokio.workspace = true tower = { workspace = true, features = ["timeout"] } tracing.workspace = true url.workspace = true +mockall = { workspace = true, optional = true } + +op-succinct-validity.workspace = true + +# Ecosystem dependencies +agglayer-interop-types.workspace = true + +[features] +testutils = ["mockall"] + [dev-dependencies] agglayer-evm-client = { workspace = true, features = ["testutils"] } +agglayer-interop.workspace = true +agglayer-primitives.workspace = true proposer-client = { workspace = true, features = ["testutils"] } prover-alloy = { workspace = true, features = ["testutils"] } diff --git a/crates/proposer-service/src/config.rs b/crates/proposer-service/src/config.rs index e9404328..61a25df0 100644 --- a/crates/proposer-service/src/config.rs +++ b/crates/proposer-service/src/config.rs @@ -1,15 +1,39 @@ use proposer_client::config::ProposerClientConfig; +use proposer_db_client::ProposerDBConfig; use prover_alloy::L1RpcEndpoint; use serde::{Deserialize, Serialize}; +use url::Url; -#[derive(Serialize, Deserialize, Debug, Default, PartialEq, Eq, Clone)] +#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)] #[serde(rename_all = "kebab-case")] pub struct ProposerServiceConfig { #[serde(default)] // bool::default() is false pub mock: bool, + #[serde(default)] pub client: ProposerClientConfig, /// JSON-RPC endpoint of the l1 node. + #[serde(default)] pub l1_rpc_endpoint: L1RpcEndpoint, + + /// JSON-RPC endpoint of the L2 consensus layer (rollup node). + #[serde(default = "prover_alloy::default_l2_consensus_layer_url")] + pub l2_consensus_layer_rpc_endpoint: Url, + + /// Optional database configuration for persisting proof requests. + #[serde(default)] + pub database: Option, +} + +impl Default for ProposerServiceConfig { + fn default() -> Self { + Self { + mock: false, + client: ProposerClientConfig::default(), + l1_rpc_endpoint: L1RpcEndpoint::default(), + l2_consensus_layer_rpc_endpoint: prover_alloy::default_l2_consensus_layer_url(), + database: None, + } + } } diff --git a/crates/proposer-service/src/error.rs b/crates/proposer-service/src/error.rs index 958f9186..e8ba92dd 100644 --- a/crates/proposer-service/src/error.rs +++ b/crates/proposer-service/src/error.rs @@ -1,4 +1,5 @@ use proposer_client::error::Error as ProposerClientError; +use proposer_db_client::Error as ProposerDBError; #[derive(Debug, thiserror::Error)] pub enum Error { @@ -8,12 +9,21 @@ pub enum Error { #[error("Proposer client error: {0}")] Client(#[from] ProposerClientError), + #[error("Database operation failed: {0}")] + Database(#[from] ProposerDBError), + #[error("Unsupported aggregation proof mode {0:?}")] UnsupportedAggregationProofMode(sp1_sdk::SP1ProofMode), #[error("Failure on the deserialization of the FEP public values")] FepPublicValuesDeserializeFailure(#[source] alloy_sol_types::Error), + #[error("Failed to initialize L2 consensus layer client")] + L2ConsensusLayerClientInit(#[source] jsonrpsee::core::client::Error), + + #[error("Failed to fetch safe head at L1 block")] + L2SafeHeadFetch(#[source] jsonrpsee::core::client::Error), + #[error(transparent)] Other(eyre::Error), } diff --git a/crates/proposer-service/src/l2_rpc.rs b/crates/proposer-service/src/l2_rpc.rs new file mode 100644 index 00000000..82e8cb03 --- /dev/null +++ b/crates/proposer-service/src/l2_rpc.rs @@ -0,0 +1,96 @@ +use std::sync::Arc; + +use alloy_primitives::{B256, U64}; +use jsonrpsee::{core::client::ClientT, http_client::HttpClient, rpc_params}; +use serde::{Deserialize, Serialize}; +use url::Url; + +use crate::error::Error; + +/// A block identifier containing hash and number. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BlockId { + pub hash: B256, + pub number: U64, +} + +/// Response from the `optimism_safeHeadAtL1Block` RPC method. +/// +/// This method returns the safe L2 block that was derived from data up to and +/// including the specified L1 block. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SafeHeadAtL1Block { + /// The L1 block that was queried. + pub l1_block: BlockId, + /// The safe L2 head at this L1 block. + pub safe_head: BlockId, +} + +/// Trait for fetching the safe L2 head at a given L1 block. +#[async_trait::async_trait] +pub trait L2SafeHeadFetcher: Send + Sync { + /// Returns the safe L2 block that was derived from data up to and including + /// the specified L1 block number. + async fn get_safe_head_at_l1_block( + &self, + l1_block_number: u64, + ) -> Result; +} + +/// Client for interacting with the L2 consensus layer (rollup node) RPC. +pub struct L2ConsensusLayerClient { + client: HttpClient, +} + +impl L2ConsensusLayerClient { + /// Creates a new L2 consensus layer client. + pub fn new(endpoint: &Url) -> Result { + let client = HttpClient::builder() + .build(endpoint.as_str()) + .map_err(Error::L2ConsensusLayerClientInit)?; + + Ok(Self { client }) + } +} + +#[async_trait::async_trait] +impl L2SafeHeadFetcher for L2ConsensusLayerClient { + async fn get_safe_head_at_l1_block( + &self, + l1_block_number: u64, + ) -> Result { + let params = rpc_params![format!("0x{l1_block_number:x}")]; + let response: SafeHeadAtL1Block = self + .client + .request("optimism_safeHeadAtL1Block", params) + .await + .map_err(Error::L2SafeHeadFetch)?; + + Ok(response) + } +} + +#[async_trait::async_trait] +impl L2SafeHeadFetcher for Arc { + async fn get_safe_head_at_l1_block( + &self, + l1_block_number: u64, + ) -> Result { + (**self).get_safe_head_at_l1_block(l1_block_number).await + } +} + +#[cfg(any(test, feature = "testutils"))] +mockall::mock! { + /// Mock implementation of [`L2SafeHeadFetcher`] for testing. + pub L2SafeHeadFetcher {} + + #[async_trait::async_trait] + impl L2SafeHeadFetcher for L2SafeHeadFetcher { + async fn get_safe_head_at_l1_block( + &self, + l1_block_number: u64, + ) -> Result; + } +} diff --git a/crates/proposer-service/src/lib.rs b/crates/proposer-service/src/lib.rs index ebf2add3..b354b9ba 100644 --- a/crates/proposer-service/src/lib.rs +++ b/crates/proposer-service/src/lib.rs @@ -3,6 +3,7 @@ use std::{ task::{Context, Poll}, }; +use aggchain_proof_contracts::contracts::{GetTrustedSequencerAddress, L1OpSuccinctConfigFetcher}; use aggchain_proof_core::full_execution_proof::AggregationProofPublicValues; use agglayer_evm_client::GetBlockNumber; use alloy_sol_types::SolType; @@ -11,7 +12,6 @@ pub use error::Error; use eyre::Context as _; use futures::{future::BoxFuture, FutureExt}; use proposer_client::{ - aggregation_prover::AggregationProver, mock_grpc_prover::MockGrpcProver, network_prover::new_network_prover, rpc::{AggregationProofProposerRequest, ProposerRpcClient}, @@ -19,10 +19,13 @@ use proposer_client::{ }; use prover_executor::sp1_fast; use sp1_prover::SP1VerifyingKey; -use sp1_sdk::NetworkProver; -use tracing::{debug, info}; +use sp1_sdk::{CpuProver, NetworkProver, Prover as _}; +use tracing::{debug, error, info}; -use crate::config::ProposerServiceConfig; +use crate::{ + config::ProposerServiceConfig, + l2_rpc::{L2ConsensusLayerClient, L2SafeHeadFetcher}, +}; type AggregationProof = Box>; @@ -36,122 +39,274 @@ pub struct ProposerResponse { pub mod config; pub mod error; +pub mod l2_rpc; #[cfg(test)] mod tests; pub const AGGREGATION_ELF: &[u8] = proposer_elfs::aggregation::ELF; +/// Number of L1 blocks to look back when querying for the safe L2 head. +const L1_SAFE_HEAD_LOOKBACK: u64 = 20; + +/// Backend for proof generation - either gRPC client or database. +#[derive(Educe)] +#[educe(Clone(bound()))] +pub enum ProofBackend { + /// Use gRPC client to request proofs from the proposer service. + Grpc { + client: Arc, + poll_interval_ms: u64, + max_retries: u32, + }, + /// Use database to insert proof requests and poll for completion. + Database { + db_client: Arc, + poll_interval_ms: u64, + max_retries: u32, + }, +} + #[derive(Educe)] #[educe(Clone(bound()))] -pub struct ProposerService { - pub client: Arc, +pub struct ProposerService { + /// Backend for proof generation (gRPC or database). + pub backend: ProofBackend, pub l1_rpc: Arc, + /// Client for fetching L2 safe head information from the rollup node. + pub l2_rpc: Arc, + + /// Contracts client for fetching L1 contract configuration. + pub contracts_client: Arc, + /// Aggregated span proof verification key. aggregation_vkey: SP1VerifyingKey, + + /// L1 chain ID for filtering range proofs + l1_chain_id: i64, + + /// L2 chain ID for filtering range proofs + l2_chain_id: i64, + + /// Whether the service is running in mock mode + mock: bool, +} + +impl + ProposerService +{ + /// Creates a new ProposerService with the specified backend. + #[allow(clippy::too_many_arguments)] + pub fn new( + backend: ProofBackend, + l1_rpc: Arc, + l2_rpc: Arc, + contracts_client: Arc, + aggregation_vkey: SP1VerifyingKey, + l1_chain_id: i64, + l2_chain_id: i64, + mock: bool, + ) -> Self { + Self { + backend, + l1_rpc, + l2_rpc, + contracts_client, + aggregation_vkey, + l1_chain_id, + l2_chain_id, + mock, + } + } } -impl - ProposerService> +impl + ProposerService< + L1Rpc, + L2ConsensusLayerClient, + proposer_client::client::Client, + ContractsClient, + > where - Prover: AggregationProver, + ContractsClient: aggchain_proof_contracts::contracts::ChainIdProvider, { - pub async fn new( - prover: Prover, + pub async fn new_network( config: &ProposerServiceConfig, l1_rpc: Arc, + contracts_client: Arc, ) -> Result { - let proposer_rpc_client = Arc::new( - ProposerRpcClient::new( - config.client.proposer_endpoint.clone(), - config.client.request_timeout, - ) - .await?, + assert!( + !config.mock, + "Building a network proposer service with a mock config" ); + let l2_rpc = Arc::new(L2ConsensusLayerClient::new( + &config.l2_consensus_layer_rpc_endpoint, + )?); + + let l1_chain_id = contracts_client.l1_chain_id() as i64; + let l2_chain_id = contracts_client.l2_chain_id() as i64; + + let prover = + new_network_prover(&config.client.sp1_cluster_endpoint).map_err(Error::Other)?; + let aggregation_vkey = Self::extract_aggregation_vkey(&prover, AGGREGATION_ELF) .await .context("Retrieving aggregation vkey") .map_err(Error::Other)?; - Ok(Self { - l1_rpc, - client: Arc::new(proposer_client::client::Client::new( + let backend = if let Some(db_config) = &config.database { + let db_client = + proposer_db_client::ProposerDBClient::new(&db_config.database_url).await?; + + ProofBackend::Database { + db_client: Arc::new(db_client), + poll_interval_ms: db_config.poll_interval_ms, + max_retries: db_config.max_retries, + } + } else { + let proposer_rpc_client = Arc::new( + ProposerRpcClient::new( + config.client.proposer_endpoint.clone(), + config.client.request_timeout, + ) + .await?, + ); + + let client = Arc::new(proposer_client::client::Client::new( proposer_rpc_client, prover, Some(config.client.proving_timeout), - )?), + )?); + + ProofBackend::Grpc { + client, + poll_interval_ms: 5000, + max_retries: 720, + } + }; + + Ok(Self::new( + backend, + l1_rpc, + l2_rpc, + contracts_client, aggregation_vkey, - }) + l1_chain_id, + l2_chain_id, + config.mock, + )) } async fn extract_aggregation_vkey( - prover: &Prover, + prover: &NetworkProver, elf: &[u8], ) -> eyre::Result { - let (_pkey, vkey) = prover.compute_pkey_vkey(elf).await?; + let (_pkey, vkey) = prover.setup(elf); Ok(vkey) } } -impl - ProposerService> -{ - pub async fn new_network( - config: &ProposerServiceConfig, - l1_rpc: Arc, - ) -> Result { - assert!( - !config.mock, - "Building a network proposer service with a mock config" - ); - Self::new( - new_network_prover(&config.client.sp1_cluster_endpoint).map_err(Error::Other)?, - config, - l1_rpc, - ) - .await - } -} - -impl +impl ProposerService< L1Rpc, + L2ConsensusLayerClient, proposer_client::client::Client>, + ContractsClient, > +where + ContractsClient: aggchain_proof_contracts::contracts::ChainIdProvider, { pub async fn new_mock( config: &ProposerServiceConfig, l1_rpc: Arc, + contracts_client: Arc, ) -> Result { assert!( config.mock, "Building a mock proposer service with a non-mock config" ); - let proposer_rpc_client = Arc::new( - ProposerRpcClient::new( - config.client.proposer_endpoint.clone(), - config.client.request_timeout, - ) - .await?, - ); - Self::new(MockGrpcProver::new(proposer_rpc_client), config, l1_rpc).await + let l2_rpc = Arc::new(L2ConsensusLayerClient::new( + &config.l2_consensus_layer_rpc_endpoint, + )?); + + let l1_chain_id = contracts_client.l1_chain_id() as i64; + let l2_chain_id = contracts_client.l2_chain_id() as i64; + + let prover = sp1_sdk::ProverClient::builder().mock().build(); + + let aggregation_vkey = Self::extract_aggregation_vkey(&prover, AGGREGATION_ELF) + .await + .context("Retrieving aggregation vkey") + .map_err(Error::Other)?; + + let backend = if let Some(db_config) = &config.database { + let db_client = + proposer_db_client::ProposerDBClient::new(&db_config.database_url).await?; + + ProofBackend::Database { + db_client: Arc::new(db_client), + poll_interval_ms: db_config.poll_interval_ms, + max_retries: db_config.max_retries, + } + } else { + let proposer_rpc_client = Arc::new( + ProposerRpcClient::new( + config.client.proposer_endpoint.clone(), + config.client.request_timeout, + ) + .await?, + ); + + let mock_grpc_prover = MockGrpcProver::new(proposer_rpc_client.clone()); + + let client = Arc::new(proposer_client::client::Client::new( + proposer_rpc_client, + mock_grpc_prover, + Some(config.client.proving_timeout), + )?); + + ProofBackend::Grpc { + client, + poll_interval_ms: 5000, + max_retries: 720, + } + }; + + Ok(Self::new( + backend, + l1_rpc, + l2_rpc, + contracts_client, + aggregation_vkey, + l1_chain_id, + l2_chain_id, + config.mock, + )) + } + + async fn extract_aggregation_vkey( + prover: &CpuProver, + elf: &[u8], + ) -> eyre::Result { + let (_pkey, vkey) = prover.setup(elf); + Ok(vkey) } } -impl tower::Service - for ProposerService +impl tower::Service + for ProposerService where L1Rpc: GetBlockNumber> + Send + Sync + 'static, + L2Rpc: L2SafeHeadFetcher + Send + Sync + 'static, ProposerClient: proposer_client::ProposerClient + Send + Sync + 'static, + ContractsClient: L1OpSuccinctConfigFetcher + GetTrustedSequencerAddress + Send + Sync + 'static, { type Response = ProposerResponse; - type Error = Error; - type Future = BoxFuture<'static, Result>; fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { @@ -166,64 +321,310 @@ where l1_block_hash, }: FepProposerRequest, ) -> Self::Future { - let client = self.client.clone(); + let backend = self.backend.clone(); let l1_rpc = self.l1_rpc.clone(); + let l2_rpc = self.l2_rpc.clone(); let aggregation_vkey = self.aggregation_vkey.clone(); + let contracts_client = self.contracts_client.clone(); + let l1_chain_id = self.l1_chain_id; + let l2_chain_id = self.l2_chain_id; + let mock = self.mock; async move { - info!(%last_proven_block, %requested_end_block, "Requesting fep aggregation proof"); + debug!("Starting FEP proposer request"); + let l1_block_number = l1_rpc .get_block_number(l1_block_hash.into()) .await .map_err(|e| { - Error::AlloyProviderError( + let err = Error::AlloyProviderError( e.into() .wrap_err(format!("Getting the block number for hash {l1_block_hash}")), - ) + ); + error!(%l1_block_hash, "Failed to get L1 block number: {}", err); + err })?; - // Request the AggregationProof generation from the proposer. - let response = client - .request_agg_proof(AggregationProofProposerRequest { - last_proven_block, - requested_end_block, - l1_block_number, - l1_block_hash, - }) - .await?; - let request_id = response.request_id; - let end_block = response.end_block; - let last_proven_block = response.last_proven_block; - debug!(%last_proven_block, %end_block, %request_id, "Aggregation proof request submitted"); - - // Wait for the prover to finish aggregating span proofs - let proof_with_pv = client.wait_for_proof(request_id.clone()).await?; + let l1_limited_end_block = + limit_end_block_to_safe_head(&l2_rpc, requested_end_block, l1_block_number).await?; + + // Check if the requested end block is less or equal than the requested start block + if l1_limited_end_block <= last_proven_block { + error!( + %l1_limited_end_block, + %last_proven_block, + "Requested end block is less than or equal to the last proven block" + ); + return Err(Error::Other( + eyre::eyre!("Requested end block is less than or equal to the requested start block") + )); + } + + // Fetch op_succinct_config from contracts (needed for rollup_config_hash) + let op_succinct_config = contracts_client + .get_op_succinct_config() + .await + .map_err(|e| { + let err = Error::Other(eyre::eyre!("Failed to fetch op_succinct_config from contracts: {}", e)); + error!("Failed to fetch op_succinct_config from contracts: {}", err); + err + })?; - let public_values = - AggregationProofPublicValues::abi_decode(proof_with_pv.public_values.as_slice()) - .map_err(Error::FepPublicValuesDeserializeFailure)?; + let trusted_sequencer = contracts_client + .get_trusted_sequencer_address() + .await + .map_err(|e| { + let err = Error::Other(eyre::eyre!("Failed to fetch trusted sequencer address from contracts: {}", e)); + error!("Failed to fetch trusted sequencer address from contracts: {}", err); + err + })?; - debug!(%last_proven_block, %end_block, %request_id, "Aggregation proof received from the proposer"); + // Limit according to the existing span proofs range (only when database backend is configured) + let limited_end_block = if let ProofBackend::Database { db_client, .. } = backend.clone() { + info!("Fetching range proofs from database: start_block={}, end_block={}, l1_chain_id={}, l2_chain_id={}", + last_proven_block, l1_limited_end_block, l1_chain_id, l2_chain_id); + + let range_proofs = db_client + .get_consecutive_complete_range_proofs( + last_proven_block as i64, + l1_limited_end_block as i64, + &proposer_elfs::range::VKEY_COMMITMENT, + &op_succinct_config.rollup_config_hash.0, + l1_chain_id, + l2_chain_id, + ) + .await + .map_err(|e| { + let err = Error::Other(eyre::eyre!("Failed to fetch range proofs: {}", e)); + error!( + %last_proven_block, + %l1_limited_end_block, + %l1_chain_id, + %l2_chain_id, + "Failed to fetch range proofs from database: {}", err + ); + err + })?; + + // Limit end block to the last available range proof + if let Some(last_range_proof) = range_proofs.last() { + let range_limited_end_block = last_range_proof.end_block as u64; + if range_limited_end_block < l1_limited_end_block { + debug!( + %l1_limited_end_block, + %range_limited_end_block, + "Limiting end block to last available range proof" + ); + range_limited_end_block + } else { + l1_limited_end_block + } + } else { + error!( + %last_proven_block, + %l1_limited_end_block, + %l1_chain_id, + %l2_chain_id, + "No range proofs found for the requested range" + ); + return Err(Error::Other(eyre::eyre!( + "No range proofs found for the requested range" + ))); + } + } else { + l1_limited_end_block + }; + + info!(%last_proven_block, %limited_end_block, "Requesting fep aggregation proof"); + + // Get proof based on backend type + let proof_with_pv: sp1_sdk::SP1ProofWithPublicValues = match backend { + ProofBackend::Database { db_client, poll_interval_ms, max_retries } => { + use chrono::Utc; + use proposer_db_client::{OPSuccinctRequest, RequestStatus, RequestType, RequestMode}; + use serde_json::json; + use sqlx::types::BigDecimal; + + // Insert request with Unrequested status + let request = OPSuccinctRequest { + id: 0, // Will be set by database + status: RequestStatus::Unrequested, + req_type: RequestType::Aggregation, + mode: if mock { RequestMode::Mock } else { RequestMode::Real }, + start_block: last_proven_block as i64, + end_block: limited_end_block as i64, + created_at: Utc::now().naive_utc(), + updated_at: Utc::now().naive_utc(), + proof_request_id: None, + proof_request_time: None, + checkpointed_l1_block_number: Some(l1_block_number as i64), + checkpointed_l1_block_hash: Some(l1_block_hash.0.to_vec()), + execution_statistics: json!({}), + witnessgen_duration: None, + execution_duration: None, + prove_duration: None, + range_vkey_commitment: op_succinct_config.range_vkey_commitment.0.to_vec(), + aggregation_vkey_hash: Some(op_succinct_config.aggregation_vkey_hash.0.to_vec()), + rollup_config_hash: op_succinct_config.rollup_config_hash.0.to_vec(), + relay_tx_hash: None, + proof: None, + total_nb_transactions: 0, + total_eth_gas_used: 0, + total_l1_fees: BigDecimal::from(0), + total_tx_fees: BigDecimal::from(0), + l1_chain_id, + l2_chain_id, + contract_address: None, + prover_address: Some(trusted_sequencer.as_slice().to_vec()), + l1_head_block_number: Some(l1_block_number as i64), + }; + + let db_request_id = db_client.insert_request(&request).await.map_err(|e| { + error!(%last_proven_block, %limited_end_block, "Failed to insert aggregation proof request into database: {}", e); + e + })?; + info!(%db_request_id, %last_proven_block, %limited_end_block, "Inserted aggregation proof request into database"); + + // Poll database until proof is complete + debug!(%db_request_id, "Polling database for proof completion"); + let proof_bytes = db_client + .wait_for_proof_completion(db_request_id, poll_interval_ms, max_retries) + .await + .map_err(|e| { + error!(%db_request_id, "Failed to wait for proof completion: {}", e); + e + })?; + + // Deserialize proof using bincode + let proof_with_pv: sp1_sdk::SP1ProofWithPublicValues = + sp1_fast(|| agglayer_interop_types::bincode::default().deserialize(&proof_bytes)) + .map_err(|e| { + error!(%db_request_id, "Failed during proof deserialization (panic): {}", e); + Error::Other(e) + })? + .map_err(|e| { + error!(%db_request_id, "Failed to deserialize proof from database: {}", e); + Error::Other(eyre::eyre!("Failed to deserialize proof from database: {}", e)) + })?; + + info!(%db_request_id, "Proof retrieved and deserialized from database"); + + // Verify the proof + use std::panic::AssertUnwindSafe; + let prover = sp1_sdk::ProverClient::builder().mock().build(); + sp1_fast(AssertUnwindSafe(|| prover.verify(&proof_with_pv, &aggregation_vkey))) + .map_err(Error::Other)? + .map_err(|e| { + let err = Error::Other(eyre::eyre!("Failed to verify proof from database: {}", e)); + error!(%db_request_id, "Failed to verify proof from database: {}", err); + err + })?; + + debug!(%db_request_id, "Aggregation proof verified successfully"); + proof_with_pv + } + ProofBackend::Grpc { client, .. } => { + // gRPC workflow: request proof generation from proposer + info!("Using gRPC workflow"); + + let response = client + .request_agg_proof(AggregationProofProposerRequest { + last_proven_block, + requested_end_block, + l1_block_number, + l1_block_hash, + }) + .await + .map_err(|e| { + error!(%last_proven_block, %requested_end_block, "Failed to request aggregation proof via gRPC: {}", e); + e + })?; + debug!(%last_proven_block, end_block = %response.end_block, request_id = %response.request_id, "Aggregation proof request response received"); + + // Wait for the prover to finish aggregating span proofs + let proof_with_pv = client.wait_for_proof(response.request_id.clone()).await.map_err(|e| { + error!(request_id = %response.request_id, "Failed to wait for proof via gRPC: {}", e); + e + })?; + debug!(%response.request_id, "Aggregation proof received from the proposer"); + + // Verify received proof + client.verify_agg_proof(response.request_id.clone(), &proof_with_pv, &aggregation_vkey).map_err(|e| { + error!(request_id = %response.request_id, "Failed to verify aggregation proof via gRPC: {}", e); + e + })?; + debug!(%response.request_id, "Aggregation proof verified successfully"); + + proof_with_pv + } + }; - // Verify received proof - client.verify_agg_proof(request_id.clone(), &proof_with_pv, &aggregation_vkey)?; + let public_values = + AggregationProofPublicValues::abi_decode(proof_with_pv.public_values.as_slice()) + .map_err(|e| { + error!("Failed to decode aggregation proof public values: {}", e); + Error::FepPublicValuesDeserializeFailure(e) + })?; - debug!(%last_proven_block, %end_block, %request_id, "Aggregation proof verified successfully"); + debug!("Aggregation proof public values decoded successfully"); - let proof_mode: sp1_sdk::SP1ProofMode = sp1_fast(|| (&proof_with_pv.proof).into()).map_err(Error::Other)?; + let proof_mode: sp1_sdk::SP1ProofMode = + sp1_fast(|| (&proof_with_pv.proof).into()).map_err(|e| { + error!("Failed to get proof mode: {}", e); + Error::Other(e) + })?; let aggregation_proof = sp1_fast(|| proof_with_pv.proof.clone().try_as_compressed()) - .map_err(Error::Other)? - .ok_or_else(|| Error::UnsupportedAggregationProofMode(proof_mode))?; + .map_err(|e| { + error!("Failed to convert proof to compressed format: {}", e); + Error::Other(e) + })? + .ok_or_else(|| { + error!(?proof_mode, "Unsupported aggregation proof mode"); + Error::UnsupportedAggregationProofMode(proof_mode) + })?; + + // Get the actual end_block from the proof's public values + let end_block = public_values.l2_block_number; - info!(%last_proven_block, %end_block, %request_id, "Aggregation proof successfully acquired"); + info!(%last_proven_block, %end_block, "Aggregation proof successfully acquired"); Ok(ProposerResponse { aggregation_proof, - last_proven_block: response.last_proven_block, - end_block: response.end_block, + last_proven_block, + end_block, public_values, }) } .boxed() } } + +/// Limits the requested end block to the safe L2 head derived from L1 data. +/// +/// This ensures we don't request proofs for L2 blocks that haven't been safely +/// derived from L1 yet. We look back `L1_SAFE_HEAD_LOOKBACK` blocks from the +/// current L1 block to account for reorg safety. +async fn limit_end_block_to_safe_head( + l2_rpc: &L2Rpc, + requested_end_block: u64, + l1_block_number: u64, +) -> Result { + let safe_l1_block = l1_block_number.saturating_sub(L1_SAFE_HEAD_LOOKBACK); + let safe_head_response = l2_rpc.get_safe_head_at_l1_block(safe_l1_block).await.map_err(|e| { + error!(%safe_l1_block, %l1_block_number, "Failed to fetch safe head at L1 block: {}", e); + e + })?; + let safe_head: u64 = safe_head_response.safe_head.number.to(); + + if safe_head < requested_end_block { + debug!( + %requested_end_block, + %safe_head, + %l1_block_number, + "Limiting requested end block to safe head" + ); + return Ok(safe_head); + } + + Ok(requested_end_block) +} diff --git a/crates/proposer-service/src/tests/mod.rs b/crates/proposer-service/src/tests/mod.rs index 8cb773c9..a36e90bc 100644 --- a/crates/proposer-service/src/tests/mod.rs +++ b/crates/proposer-service/src/tests/mod.rs @@ -1,14 +1,42 @@ use std::sync::Arc; +use aggchain_proof_contracts::contracts::{ + ChainIdProvider, GetTrustedSequencerAddress, L1OpSuccinctConfigFetcher, OpSuccinctConfig, +}; use agglayer_evm_client::MockRpc; -use alloy_primitives::FixedBytes; +use agglayer_interop::types::Digest; +use agglayer_primitives::Address; +use alloy_primitives::{FixedBytes, U64}; +use mockall::mock; use proposer_client::{ rpc::AggregationProofProposerRequest, FepProposerRequest, MockProposerClient, RequestId, }; use sp1_sdk::{Prover as _, SP1PublicValues, SP1_CIRCUIT_VERSION}; use tower::Service as _; -use crate::{Error, ProposerService}; +use crate::{ + l2_rpc::{BlockId, MockL2SafeHeadFetcher, SafeHeadAtL1Block}, + Error, ProofBackend, ProposerService, +}; + +mock! { + pub ContractsClient {} + + #[async_trait::async_trait] + impl L1OpSuccinctConfigFetcher for ContractsClient { + async fn get_op_succinct_config(&self) -> Result; + } + + #[async_trait::async_trait] + impl GetTrustedSequencerAddress for ContractsClient { + async fn get_trusted_sequencer_address(&self) -> Result; + } + + impl ChainIdProvider for ContractsClient { + fn l1_chain_id(&self) -> u64; + fn l2_chain_id(&self) -> u64; + } +} const ELF: &[u8] = include_bytes!("../../../prover-dummy-program/elf/riscv32im-succinct-zkvm-elf"); @@ -86,11 +114,51 @@ async fn test_proposer_service() { let client = Arc::new(client); let l1_rpc = Arc::new(l1_rpc); - let mut proposer_service = ProposerService { - client, + + let mut l2_rpc = MockL2SafeHeadFetcher::new(); + l2_rpc.expect_get_safe_head_at_l1_block().returning(|_| { + Ok(SafeHeadAtL1Block { + l1_block: BlockId { + number: U64::from(10), + hash: Default::default(), + }, + safe_head: BlockId { + number: U64::from(100), + hash: Default::default(), + }, + }) + }); + let l2_rpc = Arc::new(l2_rpc); + + let mut contracts_client = MockContractsClient::new(); + contracts_client + .expect_get_op_succinct_config() + .returning(|| { + Ok(OpSuccinctConfig { + range_vkey_commitment: Digest::default(), + aggregation_vkey_hash: Digest::default(), + rollup_config_hash: Digest::default(), + }) + }); + contracts_client + .expect_get_trusted_sequencer_address() + .returning(|| Ok(Address::new([0u8; 20]))); + let contracts_client = Arc::new(contracts_client); + + let mut proposer_service = ProposerService::new( + ProofBackend::Grpc { + client, + poll_interval_ms: 5000, + max_retries: 720, + }, l1_rpc, - aggregation_vkey: vkey, - }; + l2_rpc, + contracts_client, + vkey, + 0, + 0, + false, + ); let request = FepProposerRequest { last_proven_block: 0, @@ -116,11 +184,51 @@ async fn unable_to_fetch_block_hash() { let client = Arc::new(client); let l1_rpc = Arc::new(l1_rpc); - let mut proposer_service = ProposerService { - client, + + let mut l2_rpc = MockL2SafeHeadFetcher::new(); + l2_rpc.expect_get_safe_head_at_l1_block().returning(|_| { + Ok(SafeHeadAtL1Block { + l1_block: BlockId { + number: U64::from(10), + hash: Default::default(), + }, + safe_head: BlockId { + number: U64::from(100), + hash: Default::default(), + }, + }) + }); + let l2_rpc = Arc::new(l2_rpc); + + let mut contracts_client = MockContractsClient::new(); + contracts_client + .expect_get_op_succinct_config() + .returning(|| { + Ok(OpSuccinctConfig { + range_vkey_commitment: Digest::default(), + aggregation_vkey_hash: Digest::default(), + rollup_config_hash: Digest::default(), + }) + }); + contracts_client + .expect_get_trusted_sequencer_address() + .returning(|| Ok(Address::new([0u8; 20]))); + let contracts_client = Arc::new(contracts_client); + + let mut proposer_service = ProposerService::new( + ProofBackend::Grpc { + client, + poll_interval_ms: 5000, + max_retries: 720, + }, l1_rpc, - aggregation_vkey: vkey, - }; + l2_rpc, + contracts_client, + vkey, + 0, + 0, + false, + ); let request = FepProposerRequest { last_proven_block: 0, diff --git a/crates/proposer-service/src/tests/proposer_service_test_program.rs b/crates/proposer-service/src/tests/proposer_service_test_program.rs index d0e419ac..9b53cb2e 100644 --- a/crates/proposer-service/src/tests/proposer_service_test_program.rs +++ b/crates/proposer-service/src/tests/proposer_service_test_program.rs @@ -1,5 +1,6 @@ use std::{str::FromStr, sync::Arc}; +use aggchain_proof_contracts::{config::AggchainProofContractsConfig, AggchainContractsRpcClient}; use alloy_primitives::B256; use clap::Parser; use proposer_client::{config::ProposerClientConfig, FepProposerRequest, GrpcUri}; @@ -41,6 +42,10 @@ struct Cli { /// Run in mock mode? #[arg(long)] pub mock: bool, + + /// Network ID for the rollup + #[arg(short, long, default_value = "1")] + pub network_id: u32, } #[tokio::main] @@ -63,6 +68,15 @@ pub async fn main() -> eyre::Result<()> { info!("L1 RPC client initialized"); + // Setup the contracts client + let contracts_config = AggchainProofContractsConfig { + l1_rpc_endpoint: cli.l1_rpc_endpoint.clone(), + ..Default::default() + }; + let contracts_client = + Arc::new(AggchainContractsRpcClient::new(cli.network_id, &contracts_config).await?); + info!("Contracts client initialized"); + // Setup the proposer service let propser_service_config = ProposerServiceConfig { mock: cli.mock, @@ -73,14 +87,26 @@ pub async fn main() -> eyre::Result<()> { proving_timeout: proposer_client::config::default_proving_timeout(), }, l1_rpc_endpoint: cli.l1_rpc_endpoint, + l2_consensus_layer_rpc_endpoint: prover_alloy::default_l2_consensus_layer_url(), + database: None, }; let mut proposer_service = if cli.mock { tower::ServiceBuilder::new() - .service(ProposerService::new_mock(&propser_service_config, l1_rpc_client).await?) + .service( + ProposerService::new_mock(&propser_service_config, l1_rpc_client, contracts_client) + .await?, + ) .boxed_clone() } else { tower::ServiceBuilder::new() - .service(ProposerService::new_network(&propser_service_config, l1_rpc_client).await?) + .service( + ProposerService::new_network( + &propser_service_config, + l1_rpc_client, + contracts_client, + ) + .await?, + ) .boxed_clone() }; info!("ProposerService initialized");