diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 0cfe5073..0ca11a3e 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -42,6 +42,16 @@ jobs: - name: Run fmt run: cargo fmt --all --check + check-toml: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + - name: Run dprint + uses: dprint/check@v2.2 + with: + config-path: dprint.json + udeps: runs-on: ubuntu-latest timeout-minutes: 60 @@ -117,10 +127,10 @@ jobs: include: - type: wasm target: wasm32-unknown-unknown - exclude: scroll-engine,scroll-wire,scroll-bridge,scroll-network,rollup-node-manager + exclude: scroll-engine,scroll-wire,scroll-bridge,scroll-network,rollup-node-manager,rollup-node-watcher - type: riscv target: riscv32imac-unknown-none-elf - exclude: scroll-engine,scroll-wire,scroll-bridge,scroll-network,rollup-node-manager + exclude: scroll-engine,scroll-wire,scroll-bridge,scroll-network,rollup-node-manager,rollup-node-watcher steps: - uses: actions/checkout@v4 - uses: rui314/setup-mold@v1 diff --git a/Cargo.lock b/Cargo.lock index b73db196..fa2df1cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -97,9 +97,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-chains" -version = "0.1.62" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1317fde6d2d3cd6082a15144c23230697a5e1a91a27d1facc146715d3b4b2046" +checksum = "963fc7ac17f25d92c237448632330eb87b39ba8aa0209d4b517069a05b57db62" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -112,50 +112,54 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.11.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e32ef5c74bbeb1733c37f4ac7f866f8c8af208b7b4265e21af609dcac5bd5e" +checksum = "3dc8ccab88e40f1fba5d097fecdaa5cd830858aead9b588a8d099e7faf57e97c" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", + "alloy-serde", "alloy-trie", "arbitrary", "auto_impl", "c-kzg", - "derive_more", + "derive_more 2.0.1", + "either", + "k256", + "once_cell", "rand 0.8.5", "serde", "serde_with", + "thiserror 2.0.12", ] [[package]] name = "alloy-consensus-any" -version = "0.11.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa13b7b1e1e3fedc42f0728103bfa3b4d566d3d42b606db449504d88dbdbdcf" +checksum = "24cc796a6379d3df47b4c42a447bda1871db7f134e8dddc5c724f69206b4b931" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", + "alloy-serde", "serde", ] [[package]] name = "alloy-dyn-abi" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555896f0b8578adb522b1453b6e6cc6704c3027bd0af20058befdde992cee8e9" +checksum = "00e08c581811006021970bf07f2ecf3213f6237c125f7fd99607004b23627b61" dependencies = [ "alloy-json-abi", "alloy-primitives", "alloy-sol-type-parser", "alloy-sol-types", "const-hex", - "derive_more", + "derive_more 2.0.1", "itoa", "serde", "serde_json", @@ -174,13 +178,14 @@ dependencies = [ "crc", "rand 0.8.5", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "alloy-eip2930" version = "0.1.0" -source = "git+https://github.com/scroll-tech/alloy-eips?branch=v0.3.2#8d5fc83fc257b09510dc8d76561188218d9c0c32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -191,80 +196,92 @@ dependencies = [ [[package]] name = "alloy-eip7702" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cabf647eb4650c91a9d38cb6f972bb320009e7e9d61765fb688a86f1563b33e8" +checksum = "9b15b13d38b366d01e818fe8e710d4d702ef7499eacd44926a06171dd9585d0c" dependencies = [ "alloy-primitives", "alloy-rlp", "arbitrary", - "derive_more", "k256", "rand 0.8.5", "serde", "serde_with", + "thiserror 2.0.12", ] [[package]] name = "alloy-eips" -version = "0.9.2" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52dd5869ed09e399003e0e0ec6903d981b2a92e74c5d37e6b40890bad2517526" +checksum = "d3321230d9d9813227ad26c8f5c80a74011d629823715c0ab2d1afdea1fc204d" dependencies = [ + "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.9.2", + "alloy-serde", "arbitrary", + "auto_impl", "c-kzg", - "derive_more", + "derive_more 2.0.1", + "either", + "ethereum_ssz", + "ethereum_ssz_derive", "once_cell", "serde", "sha2 0.10.8", ] [[package]] -name = "alloy-eips" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5591581ca2ab0b3e7226a4047f9a1bfcf431da1d0cce3752fda609fea3c27e37" +name = "alloy-evm" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/evm?rev=f9ed4d3#f9ed4d335b2e0002e257ead3198eb463a84c5219" dependencies = [ - "alloy-eip2124", - "alloy-eip2930", - "alloy-eip7702", + "alloy-consensus", + "alloy-eips", + "alloy-hardforks", "alloy-primitives", - "alloy-rlp", - "alloy-serde 0.11.1", - "arbitrary", + "alloy-sol-types", "auto_impl", - "c-kzg", - "derive_more", - "ethereum_ssz", - "ethereum_ssz_derive", - "once_cell", - "serde", - "sha2 0.10.8", + "derive_more 1.0.0", + "op-revm", + "revm", + "thiserror 2.0.12", ] [[package]] name = "alloy-genesis" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cded3a2d4bd7173f696458c5d4c98c18a628dfcc9f194385e80a486e412e2e0" +checksum = "96b11774716152a5204aff0e86a8c841df499ea81464e2b1f82b3f72d6a2ef32" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", - "alloy-serde 0.11.1", + "alloy-serde", "alloy-trie", "serde", ] +[[package]] +name = "alloy-hardforks" +version = "0.1.0" +source = "git+https://github.com/alloy-rs/hardforks?rev=ae4176c#ae4176c0027171d38832644f63f05f4f80861c6e" +dependencies = [ + "alloy-chains", + "alloy-eip2124", + "alloy-primitives", + "auto_impl", + "dyn-clone", + "serde", +] + [[package]] name = "alloy-json-abi" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4012581681b186ba0882007ed873987cc37f86b1b488fe6b91d5efd0b585dc41" +checksum = "125601804507fef5ae7debcbf800906b12741f19800c1c05b953d0f1b990131a" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -274,61 +291,62 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.11.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "762414662d793d7aaa36ee3af6928b6be23227df1681ce9c039f6f11daadef64" +checksum = "90ed237ef5c3910deb2ff7c9a33e856ada57ec44b58562f0354ba4640319906c" dependencies = [ "alloy-primitives", "alloy-sol-types", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] [[package]] name = "alloy-network" -version = "0.11.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be03f2ebc00cf88bd06d3c6caf387dceaa9c7e6b268216779fa68a9bf8ab4e6" +checksum = "15bb3faed4de77ebc2137d3167ef409b2300432e5fe0b191e3308d3740ff4add" dependencies = [ "alloy-consensus", "alloy-consensus-any", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-json-rpc", "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types-any", "alloy-rpc-types-eth", - "alloy-serde 0.11.1", + "alloy-serde", "alloy-signer", "alloy-sol-types", "async-trait", "auto_impl", + "derive_more 2.0.1", "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "alloy-network-primitives" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a00ce618ae2f78369918be0c20f620336381502c83b6ed62c2f7b2db27698b0" +checksum = "4c06932646544ea341f0fda48d2c0fe4fda75bc132379cb84019cdfb6ddcb0fb" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", - "alloy-serde 0.11.1", + "alloy-serde", "serde", ] [[package]] name = "alloy-primitives" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478bedf4d24e71ea48428d1bc278553bd7c6ae07c30ca063beb0b09fe58a9e74" +checksum = "8c66bb6715b7499ea755bde4c96223ae8eb74e05c014ab38b9db602879ffb825" dependencies = [ "alloy-rlp", "arbitrary", @@ -336,11 +354,11 @@ dependencies = [ "cfg-if", "const-hex", "derive_arbitrary", - "derive_more", + "derive_more 2.0.1", "foldhash", "getrandom 0.2.15", "hashbrown 0.15.2", - "indexmap 2.7.1", + "indexmap 2.8.0", "itoa", "k256", "keccak-asm", @@ -357,13 +375,13 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "0.11.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe0a2acff0c4bd1669c71251ce10fc455cbffa1b4d0a817d5ea4ba7e5bb3db7" +checksum = "b08759415890ed63d3f09a3147d5ad8333c1b2a3eb9697604a6c1d54071213d1" dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-json-rpc", "alloy-network", "alloy-network-primitives", @@ -379,7 +397,7 @@ dependencies = [ "async-stream", "async-trait", "auto_impl", - "dashmap", + "dashmap 6.1.0", "futures", "futures-utils-wasm", "lru 0.13.0", @@ -388,7 +406,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", "url", @@ -397,9 +415,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3a68996f193f542f9e29c88dfa8ed1369d6ee04fa764c1bf23dc11b2f9e4a2" +checksum = "b1cf194abddb88b034d22ab41449ed8532e5113e58699cd055bf21d98a0991ab" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -433,14 +451,14 @@ checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "alloy-rpc-client" -version = "0.11.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b37cc3c7883dc41be1b01460127ad7930466d0a4bb6ba15a02ee34d2745e2d7c" +checksum = "e9c0d94c4a8f4c094e37799d6576db2f65d1b8640fbf5c82954b13e968c9aaaf" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -464,22 +482,22 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f18e68a3882f372e045ddc89eb455469347767d17878ca492cfbac81e71a111" +checksum = "a153db94cf231b03238fe4da48f59dc6f36e01b5e4d5a2e30de33b95395380fa" dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", "alloy-rpc-types-eth", - "alloy-serde 0.11.1", + "alloy-serde", "serde", ] [[package]] name = "alloy-rpc-types-admin" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4e30339fff15d53a3a258a7add476c7d24b61d6f4a71476cc39c8b567666772" +checksum = "f5275d2e24dbdd82032c3b305db359fb2681069cc75add7feb66863ce50b5cb5" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -489,48 +507,50 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d06300df4a87d960add35909240fc72da355dd2ac926fa6999f9efafbdc5a7" +checksum = "5462937f088889c337c236c2509226e87a26301d2b01f9fafee246bd84cb0407" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", - "alloy-serde 0.11.1", + "alloy-serde", "serde", ] [[package]] name = "alloy-rpc-types-any" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "318ae46dd12456df42527c3b94c1ae9001e1ceb707f7afe2c7807ac4e49ebad9" +checksum = "2cd4ceea38ea27eeb26f021df34ed5b7b793704ad7a2a009f16137a19461e7ca" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", - "alloy-serde 0.11.1", + "alloy-serde", ] [[package]] name = "alloy-rpc-types-beacon" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799103aa44270c7bea076ec5d3d7b6c6d29557ab5485c91a74d3068327adb485" +checksum = "7c14f3c5747750f7373ec9f633230923ff149c2e31960513e31593bcfcf916be" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", "ethereum_ssz", "ethereum_ssz_derive", "serde", "serde_with", - "thiserror 2.0.11", + "thiserror 2.0.12", + "tree_hash", + "tree_hash_derive", ] [[package]] name = "alloy-rpc-types-debug" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834b7012054cb2f90ee9893b7cc97702edca340ec1ef386c30c42e55e6cd691" +checksum = "8fa8f6e27d47b4c56c627cb03dc91624c26bd814f6609bb1d1a836148b76fc9b" dependencies = [ "alloy-primitives", "serde", @@ -538,104 +558,92 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "0.11.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83dde9fcf1ccb9b815cc0c89bba26bbbbaae5150a53ae624ed0fc63cb3676c1" +checksum = "467888f02b5f70a3f12a8e5c211df5abd05895f7aebe10c2f73d51241de66b44" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", - "derive_more", + "alloy-serde", + "derive_more 2.0.1", "ethereum_ssz", "ethereum_ssz_derive", "jsonrpsee-types", "jsonwebtoken", "rand 0.8.5", "serde", - "strum 0.26.3", + "strum 0.27.1", ] [[package]] name = "alloy-rpc-types-eth" -version = "0.11.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b4dbee4d82f8a22dde18c28257bed759afeae7ba73da4a1479a039fd1445d04" +checksum = "e8e76553a98e04b20d8ac55d95cd6c8aad741958a23949132a4a5f12ca137059" dependencies = [ "alloy-consensus", "alloy-consensus-any", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-network-primitives", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", + "alloy-serde", "alloy-sol-types", "arbitrary", "itertools 0.14.0", "jsonrpsee-types", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "alloy-rpc-types-mev" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418eb6584edd695dfe496dda85a19102c1ae4838f142efce11e2463ed2288d71" +checksum = "9ec941a4b3eedf15daef2b7aeb7848dfc6e677f58b2a21eab0ac1efef1ffac62" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-eth", - "alloy-serde 0.11.1", + "alloy-serde", "serde", "serde_json", ] [[package]] name = "alloy-rpc-types-trace" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd951155515fa452a2ca4b5434d4b3ab742bcd3d1d1b9a91704bcef5b8d2604" +checksum = "5ef4bba67ec601730ceb23e542980d73ae9f718819604dfdd8289b13a506e762" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", - "alloy-serde 0.11.1", + "alloy-serde", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "alloy-rpc-types-txpool" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21d8dd5bd94993eda3d56a8c4c0d693548183a35462523ffc4385c0b020d3b0c" +checksum = "8edc8512f919feb79dd30864ef7574d2877e71b73e30b5de4925ba9bc6bd4f96" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", - "alloy-serde 0.11.1", - "serde", -] - -[[package]] -name = "alloy-serde" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae0465c71d4dced7525f408d84873aeebb71faf807d22d74c4a426430ccd9b55" -dependencies = [ - "alloy-primitives", - "arbitrary", + "alloy-serde", "serde", - "serde_json", ] [[package]] name = "alloy-serde" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8732058f5ca28c1d53d241e8504620b997ef670315d7c8afab856b3e3b80d945" +checksum = "9824e1bf92cd7848ca6fabb01c9aca15c9c5fb0ab96da5514ef0543f021c69f6" dependencies = [ "alloy-primitives", "arbitrary", @@ -645,9 +653,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f96b3526fdd779a4bd0f37319cfb4172db52a7ac24cdbb8804b72091c18e1701" +checksum = "81755ed6a6a33061302ac95e9bb7b40ebf7078e4568397168024242bc31a3e58" dependencies = [ "alloy-primitives", "async-trait", @@ -655,14 +663,14 @@ dependencies = [ "either", "elliptic-curve", "k256", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "alloy-signer-local" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe8f78cd6b7501c7e813a1eb4a087b72d23af51f5bb66d4e948dc840bdd207d8" +checksum = "aa857621a5c95c13e640e18bb9c4720f4338a666d6276f55446477a6bc3912ff" dependencies = [ "alloy-consensus", "alloy-network", @@ -673,61 +681,61 @@ dependencies = [ "coins-bip39", "k256", "rand 0.8.5", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "alloy-sol-macro" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2708e27f58d747423ae21d31b7a6625159bd8d867470ddd0256f396a68efa11" +checksum = "c7f9c3c7bc1f4e334e5c5fc59ec8dac894973a71b11da09065affc6094025049" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6b7984d7e085dec382d2c5ef022b533fcdb1fe6129200af30ebf5afddb6a361" +checksum = "46ff7aa715eb2404cb87fa94390d2c5d5addd70d9617e20b2398ee6f48cb21f0" dependencies = [ "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.7.1", + "indexmap 2.8.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d6a9fc4ed1a3c70bdb2357bec3924551c1a59f24e5a04a74472c755b37f87d" +checksum = "6f105fa700140c0cc6e2c3377adef650c389ac57b8ead8318a2e6bd52f1ae841" dependencies = [ "const-hex", "dunce", "heck", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1b3e9a48a6dd7bb052a111c8d93b5afc7956ed5e2cb4177793dc63bb1d2a36" +checksum = "c649acc6c9d3893e392c737faeadce30b4a1751eed148ae43bc2f27f29c4480c" dependencies = [ "serde", "winnow", @@ -735,9 +743,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6044800da35c38118fd4b98e18306bd3b91af5dedeb54c1b768cf1b4fb68f549" +checksum = "5f819635439ebb06aa13c96beac9b2e7360c259e90f5160a6848ae0d94d10452" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -748,16 +756,16 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.11.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a8d762eadce3e9b65eac09879430c6f4fce3736cac3cac123f9b1bf435ddd13" +checksum = "579917e55a64a5f88b2f46f21480095b0fa8c303716c0c58075a796e89ed0084" dependencies = [ "alloy-json-rpc", "base64 0.22.1", "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tower 0.5.2", "tracing", @@ -767,9 +775,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20819c4cb978fb39ce6ac31991ba90f386d595f922f42ef888b4a18be190713e" +checksum = "cfcd2f8ab2f053cd848ead5d625cb1b63716562951101588c1fa49300e3c6418" dependencies = [ "alloy-json-rpc", "alloy-rpc-types-engine", @@ -787,9 +795,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e88304aa8b796204e5e2500dfe235933ed692745e3effd94c3733643db6d218" +checksum = "e61e2b5cbf16f7588e4420848b61824f6514944773732534f4129ba6a251e059" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -807,9 +815,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9653ea9aa06d0e02fcbe2f04f1c47f35a85c378ccefa98e54ae85210bc8bbfa" +checksum = "67ddcf4b98b3448eb998e057dc5a27345997863d6544ee7f0f79957616768dd3" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -834,7 +842,7 @@ dependencies = [ "arbitrary", "arrayvec", "derive_arbitrary", - "derive_more", + "derive_more 1.0.0", "nybbles", "proptest", "proptest-derive", @@ -910,9 +918,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" [[package]] name = "aquamarine" @@ -925,7 +933,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1084,9 +1092,9 @@ checksum = "155a5a185e42c6b77ac7b88a15143d930a9e9727a5b7b77eed417404ab15c247" [[package]] name = "async-compression" -version = "0.4.18" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" +checksum = "310c9bcae737a48ef5cdee3174184e6d548b292739ede61a1f955ef76a738861" dependencies = [ "brotli", "flate2", @@ -1106,7 +1114,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1128,18 +1136,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "async-trait" -version = "0.1.86" +version = "0.1.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1177,7 +1185,7 @@ checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1243,9 +1251,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "bb97d56060ee67d285efb8001fec9d2a4c710c32efd2e14b5cbb5ba71930fc2d" [[package]] name = "bech32" @@ -1274,7 +1282,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1283,7 +1291,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1301,6 +1309,22 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -1309,11 +1333,10 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" dependencies = [ - "arbitrary", "serde", ] @@ -1332,16 +1355,15 @@ dependencies = [ [[package]] name = "blake3" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1230237285e3e10cde447185e8975408ae24deaa67205ce684805c25bc0c7937" +checksum = "675f87afced0413c9bb02843499dbbd3882a237645883f71a2b59644a6d2f753" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", - "memmap2", ] [[package]] @@ -1431,15 +1453,21 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytecount" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.21.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" [[package]] name = "byteorder" @@ -1449,9 +1477,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -1489,6 +1517,19 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo_metadata" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", +] + [[package]] name = "cargo_metadata" version = "0.18.1" @@ -1497,7 +1538,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.25", + "semver 1.0.26", "serde", "serde_json", "thiserror 1.0.69", @@ -1520,9 +1561,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.14" +version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" dependencies = [ "jobserver", "libc", @@ -1558,9 +1599,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", @@ -1568,7 +1609,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1594,9 +1635,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.30" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d" +checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" dependencies = [ "clap_builder", "clap_derive", @@ -1604,9 +1645,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.30" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c" +checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" dependencies = [ "anstream", "anstyle", @@ -1616,14 +1657,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.28" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -1787,6 +1828,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "convert_case" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -1901,11 +1951,11 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "crossterm_winapi", - "mio 1.0.3", + "mio", "parking_lot", - "rustix", + "rustix 0.38.44", "signal-hook", "signal-hook-mio", "winapi", @@ -1992,7 +2042,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2016,7 +2066,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2027,7 +2077,20 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.98", + "syn 2.0.100", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", ] [[package]] @@ -2068,7 +2131,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18e4fdb82bd54a12e42fb58a800dcae6b9e13982238ce2296dc3570b92148e1f" dependencies = [ "data-encoding", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2119,6 +2182,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-where" +version = "1.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "derive_arbitrary" version = "1.4.1" @@ -2127,7 +2201,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2136,7 +2210,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", ] [[package]] @@ -2145,10 +2228,23 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ - "convert_case", + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 2.0.100", + "unicode-xid", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "convert_case 0.7.1", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "unicode-xid", ] @@ -2223,9 +2319,9 @@ dependencies = [ [[package]] name = "discv5" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e6b70634e26c909d1edbb3142b3eaf3b89da0e52f284f00ca7c80d9901ad9e" +checksum = "c4b4e7798d2ff74e29cee344dc490af947ae657d6ab5273dde35d58ce06a4d71" dependencies = [ "aes", "aes-gcm", @@ -2262,7 +2358,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2279,9 +2375,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" [[package]] name = "ecdsa" @@ -2325,9 +2421,12 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +dependencies = [ + "serde", +] [[package]] name = "elliptic-curve" @@ -2351,19 +2450,19 @@ dependencies = [ [[package]] name = "enr" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972070166c68827e64bd1ebc8159dd8e32d9bc2da7ebe8f20b61308f7974ad30" +checksum = "851bd664a3d3a3c175cff92b2f0df02df3c541b4895d0ae307611827aae46152" dependencies = [ "alloy-rlp", - "base64 0.21.7", + "base64 0.22.1", "bytes", "ed25519-dalek", "hex", "k256", "log", "rand 0.8.5", - "secp256k1", + "secp256k1 0.30.0", "serde", "sha3", "zeroize", @@ -2378,7 +2477,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2389,7 +2488,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2408,6 +2507,26 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "error-chain" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" +dependencies = [ + "version_check", +] + +[[package]] +name = "ethereum_hashing" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c853bd72c9e5787f8aafc3df2907c2ed03cff3150c3acd94e2e53a98ab70a8ab" +dependencies = [ + "cpufeatures", + "ring", + "sha2 0.10.8", +] + [[package]] name = "ethereum_serde_utils" version = "0.7.0" @@ -2445,7 +2564,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2498,8 +2617,9 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.0" -source = "git+https://github.com/scroll-tech/ff?branch=feat/sp1#244b1098f6be1d19c5fd3f0ec60117ac2940e6ca" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "rand_core 0.6.4", "subtle", @@ -2537,9 +2657,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.35" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" dependencies = [ "crc32fast", "miniz_oxide", @@ -2637,7 +2757,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -2827,7 +2947,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.7.1", + "indexmap 2.8.0", "slab", "tokio", "tokio-util", @@ -2913,6 +3033,15 @@ dependencies = [ "serde", ] +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + [[package]] name = "hickory-proto" version = "0.25.0-alpha.5" @@ -2932,7 +3061,7 @@ dependencies = [ "once_cell", "rand 0.9.0", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tinyvec", "tokio", "tracing", @@ -2956,7 +3085,7 @@ dependencies = [ "resolv-conf", "serde", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] @@ -3013,9 +3142,9 @@ dependencies = [ [[package]] name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -3034,12 +3163,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", + "futures-core", "http", "http-body", "pin-project-lite", @@ -3053,9 +3182,9 @@ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" [[package]] name = "httparse" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -3283,7 +3412,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3340,7 +3469,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3381,9 +3510,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" dependencies = [ "arbitrary", "equivalent", @@ -3393,17 +3522,17 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.5" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" +checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" [[package]] name = "inotify" -version = "0.9.6" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.0", "inotify-sys", "libc", ] @@ -3419,9 +3548,9 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "block-padding", "generic-array", @@ -3437,14 +3566,14 @@ dependencies = [ "indoc", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "interprocess" -version = "2.2.2" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "894148491d817cb36b6f778017b8ac46b17408d522dd90f539d677ea938362eb" +checksum = "d941b405bd2322993887859a8ee6ac9134945a24ec5ec763a8a962fc64dfec2d" dependencies = [ "doctest-file", "futures-core", @@ -3518,9 +3647,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jni" @@ -3666,7 +3795,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -3812,9 +3941,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.169" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libloading" @@ -3868,7 +3997,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "libc", "redox_syscall", ] @@ -3943,11 +4072,17 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" + [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "lock_api" @@ -3962,9 +4097,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.25" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" [[package]] name = "loom" @@ -4061,7 +4196,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -4071,7 +4206,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd7399781913e5393588a8d8c6a2867bf85fb38eaf2502fdce465aad2dc6f034" dependencies = [ "base64 0.22.1", - "indexmap 2.7.1", + "indexmap 2.8.0", "metrics", "metrics-util", "quanta", @@ -4089,7 +4224,7 @@ dependencies = [ "mach2", "metrics", "once_cell", - "procfs 0.17.0", + "procfs", "rlimit", "windows 0.58.0", ] @@ -4127,30 +4262,33 @@ dependencies = [ ] [[package]] -name = "minimal-lexical" -version = "0.2.1" +name = "mini-moka" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +checksum = "c325dfab65f261f386debee8b0969da215b3fa0037e74c8a1234db7ba986d803" +dependencies = [ + "crossbeam-channel", + "crossbeam-utils", + "dashmap 5.5.3", + "skeptic", + "smallvec", + "tagptr", + "triomphe", +] [[package]] -name = "miniz_oxide" -version = "0.8.4" +name = "minimal-lexical" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b" -dependencies = [ - "adler2", -] +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] -name = "mio" -version = "0.8.11" +name = "miniz_oxide" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ - "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "adler2", ] [[package]] @@ -4263,21 +4401,30 @@ dependencies = [ [[package]] name = "notify" -version = "6.1.1" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" +checksum = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "filetime", "fsevent-sys", "inotify", "kqueue", "libc", "log", - "mio 0.8.11", - "serde", + "mio", + "notify-types", "walkdir", - "windows-sys 0.48.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "notify-types" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" +dependencies = [ + "serde", ] [[package]] @@ -4406,7 +4553,7 @@ checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -4443,9 +4590,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "cde51589ab56b20a6f686b2c68f7a0bd6add753d697abf720d63f8db3ab7b1ad" dependencies = [ "critical-section", "portable-atomic", @@ -4453,37 +4600,52 @@ dependencies = [ [[package]] name = "op-alloy-consensus" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc796860410e85a9cd881ee074c3dc0120b90696d82d09348ebb563d4ade67e4" +checksum = "d297150146a63778a29400320700e804ec6e1e4d6ec99857cdbbaf17b3de9241" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", + "alloy-serde", "arbitrary", - "derive_more", + "derive_more 1.0.0", "serde", "serde_with", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "op-alloy-rpc-types-engine" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a03ea4f6374aa13524753136eeceee76196acad6b1306399ab8f1856872384" +checksum = "955a7d0ef9161f4a2a8461ef5d784526741c325410103d654706863cf4a32736" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", - "derive_more", + "alloy-serde", + "derive_more 1.0.0", "ethereum_ssz", "op-alloy-consensus", + "serde", "snap", - "thiserror 2.0.11", + "thiserror 2.0.12", +] + +[[package]] +name = "op-revm" +version = "1.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" +dependencies = [ + "auto_impl", + "once_cell", + "revm", + "revm-inspector", + "revm-precompile", + "serde", ] [[package]] @@ -4559,7 +4721,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -4603,9 +4765,9 @@ dependencies = [ [[package]] name = "pem" -version = "3.0.4" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" dependencies = [ "base64 0.22.1", "serde", @@ -4624,7 +4786,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 2.0.11", + "thiserror 2.0.12", "ucd-trie", ] @@ -4640,22 +4802,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -4682,9 +4844,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "plain_hasher" @@ -4709,9 +4871,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" [[package]] name = "powerfmt" @@ -4721,11 +4883,11 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.7.35", + "zerocopy 0.8.23", ] [[package]] @@ -4760,9 +4922,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] @@ -4786,54 +4948,30 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] -[[package]] -name = "procfs" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731e0d9356b0c25f16f33b5be79b1c57b562f141ebfcdb0ad8ac2c13a24293b4" -dependencies = [ - "bitflags 2.8.0", - "chrono", - "flate2", - "hex", - "lazy_static", - "procfs-core 0.16.0", - "rustix", -] - [[package]] name = "procfs" version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" dependencies = [ - "bitflags 2.8.0", - "hex", - "procfs-core 0.17.0", - "rustix", -] - -[[package]] -name = "procfs-core" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29" -dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "chrono", + "flate2", "hex", + "procfs-core", + "rustix 0.38.44", ] [[package]] @@ -4842,7 +4980,8 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", + "chrono", "hex", ] @@ -4854,7 +4993,7 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.8.0", + "bitflags 2.9.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -4884,7 +5023,18 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", +] + +[[package]] +name = "pulldown-cmark" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" +dependencies = [ + "bitflags 2.9.0", + "memchr", + "unicase", ] [[package]] @@ -4930,7 +5080,7 @@ dependencies = [ "rustc-hash 2.1.1", "rustls", "socket2", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] @@ -4949,7 +5099,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.11", + "thiserror 2.0.12", "tinyvec", "tracing", "web-time", @@ -4971,9 +5121,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -5003,8 +5153,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.1", - "zerocopy 0.8.18", + "rand_core 0.9.3", + "zerocopy 0.8.23", ] [[package]] @@ -5024,7 +5174,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.1", + "rand_core 0.9.3", ] [[package]] @@ -5038,12 +5188,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88e0da7a2c97baa202165137c158d0a2e824ac465d13d81046727b34cb247d3" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ "getrandom 0.3.1", - "zerocopy 0.8.18", ] [[package]] @@ -5066,32 +5215,32 @@ dependencies = [ [[package]] name = "ratatui" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdef7f9be5c0122f890d58bdf4d964349ba6a6161f705907526d891efabba57d" +checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cassowary", "compact_str", "crossterm", + "indoc", "instability", "itertools 0.13.0", "lru 0.12.5", "paste", "strum 0.26.3", - "strum_macros 0.26.4", "unicode-segmentation", "unicode-truncate", - "unicode-width 0.1.14", + "unicode-width 0.2.0", ] [[package]] name = "raw-cpuid" -version = "11.4.0" +version = "11.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529468c1335c1c03919960dfefdb1b3648858c20d7ec2d0663e728e4a717efbc" +checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -5122,11 +5271,11 @@ checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -5186,9 +5335,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.12" +version = "0.12.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +checksum = "389a89e494bbc88bebf30e23da98742c843863a16a352647716116aa71fae80a" dependencies = [ "base64 0.22.1", "bytes", @@ -5239,17 +5388,41 @@ dependencies = [ "quick-error", ] +[[package]] +name = "reth-basic-payload-builder" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "futures-core", + "futures-util", + "metrics", + "reth-metrics", + "reth-payload-builder", + "reth-payload-builder-primitives", + "reth-payload-primitives", + "reth-primitives", + "reth-primitives-traits", + "reth-provider", + "reth-revm", + "reth-tasks", + "tokio", + "tracing", +] + [[package]] name = "reth-chain-state" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-signer", "alloy-signer-local", - "derive_more", + "derive_more 2.0.1", "metrics", "parking_lot", "pin-project", @@ -5262,7 +5435,8 @@ dependencies = [ "reth-primitives-traits", "reth-storage-api", "reth-trie", - "revm", + "revm-database", + "revm-state", "tokio", "tokio-stream", "tracing", @@ -5270,17 +5444,18 @@ dependencies = [ [[package]] name = "reth-chainspec" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", + "alloy-evm", "alloy-genesis", "alloy-primitives", "alloy-trie", "auto_impl", - "derive_more", + "derive_more 2.0.1", "reth-ethereum-forks", "reth-network-peers", "reth-primitives-traits", @@ -5289,8 +5464,8 @@ dependencies = [ [[package]] name = "reth-cli" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-genesis", "clap", @@ -5303,12 +5478,12 @@ dependencies = [ [[package]] name = "reth-cli-commands" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "ahash", "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", "backon", @@ -5319,7 +5494,7 @@ dependencies = [ "fdlimit", "futures", "human_bytes", - "itertools 0.13.0", + "itertools 0.14.0", "ratatui", "reth-chainspec", "reth-cli", @@ -5335,7 +5510,6 @@ dependencies = [ "reth-ecies", "reth-eth-wire", "reth-ethereum-cli", - "reth-ethereum-consensus", "reth-evm", "reth-exex", "reth-fs-util", @@ -5354,7 +5528,9 @@ dependencies = [ "reth-stages", "reth-static-file", "reth-static-file-types", - "secp256k1", + "reth-trie", + "reth-trie-db", + "secp256k1 0.30.0", "serde", "serde_json", "tokio", @@ -5364,8 +5540,8 @@ dependencies = [ [[package]] name = "reth-cli-runner" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "reth-tasks", "tokio", @@ -5374,28 +5550,28 @@ dependencies = [ [[package]] name = "reth-cli-util" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "cfg-if", "eyre", "libc", "rand 0.8.5", "reth-fs-util", - "secp256k1", + "secp256k1 0.30.0", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "reth-codecs" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-genesis", "alloy-primitives", "alloy-trie", @@ -5410,19 +5586,19 @@ dependencies = [ [[package]] name = "reth-codecs-derive" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "convert_case", + "convert_case 0.7.1", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "reth-config" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "eyre", "humantime-serde", @@ -5435,25 +5611,24 @@ dependencies = [ [[package]] name = "reth-consensus" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", "alloy-primitives", "auto_impl", - "derive_more", + "reth-execution-types", "reth-primitives-traits", + "thiserror 2.0.12", ] [[package]] name = "reth-consensus-common" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", - "alloy-primitives", + "alloy-eips", "reth-chainspec", "reth-consensus", "reth-primitives-traits", @@ -5461,22 +5636,21 @@ dependencies = [ [[package]] name = "reth-consensus-debug-client" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-provider", "alloy-rpc-types-engine", - "alloy-rpc-types-eth", "auto_impl", + "derive_more 2.0.1", "eyre", "futures", "reqwest", "reth-node-api", - "reth-rpc-api", - "reth-rpc-builder", + "reth-primitives-traits", "reth-tracing", "ringbuffer", "serde", @@ -5485,13 +5659,11 @@ dependencies = [ [[package]] name = "reth-db" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-consensus", "alloy-primitives", - "bytes", - "derive_more", + "derive_more 2.0.1", "eyre", "metrics", "page_size", @@ -5502,31 +5674,26 @@ dependencies = [ "reth-metrics", "reth-nippy-jar", "reth-primitives", - "reth-primitives-traits", - "reth-prune-types", - "reth-stages-types", "reth-storage-errors", "reth-tracing", - "reth-trie-common", "rustc-hash 2.1.1", - "serde", - "strum 0.26.3", + "strum 0.27.1", "sysinfo", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "reth-db-api" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "alloy-genesis", "alloy-primitives", "arbitrary", "bytes", - "derive_more", + "derive_more 2.0.1", "metrics", "modular-bitfield", "parity-scale-codec", @@ -5547,8 +5714,8 @@ dependencies = [ [[package]] name = "reth-db-common" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -5558,7 +5725,6 @@ dependencies = [ "reth-chainspec", "reth-codecs", "reth-config", - "reth-db", "reth-db-api", "reth-etl", "reth-fs-util", @@ -5570,21 +5736,20 @@ dependencies = [ "reth-trie-db", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] [[package]] name = "reth-db-models" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "arbitrary", "bytes", "modular-bitfield", - "proptest", "reth-codecs", "reth-primitives-traits", "serde", @@ -5592,15 +5757,15 @@ dependencies = [ [[package]] name = "reth-discv4" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "alloy-rlp", "discv5", "enr", "generic-array", - "itertools 0.13.0", + "itertools 0.14.0", "parking_lot", "rand 0.8.5", "reth-ethereum-forks", @@ -5608,9 +5773,9 @@ dependencies = [ "reth-net-nat", "reth-network-peers", "schnellru", - "secp256k1", + "secp256k1 0.30.0", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tracing", @@ -5618,32 +5783,32 @@ dependencies = [ [[package]] name = "reth-discv5" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "alloy-rlp", - "derive_more", + "derive_more 2.0.1", "discv5", "enr", "futures", - "itertools 0.13.0", + "itertools 0.14.0", "metrics", "rand 0.8.5", "reth-chainspec", "reth-ethereum-forks", "reth-metrics", "reth-network-peers", - "secp256k1", - "thiserror 2.0.11", + "secp256k1 0.30.0", + "thiserror 2.0.12", "tokio", "tracing", ] [[package]] name = "reth-dns-discovery" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "data-encoding", @@ -5655,10 +5820,10 @@ dependencies = [ "reth-network-peers", "reth-tokio-util", "schnellru", - "secp256k1", + "secp256k1 0.30.0", "serde", "serde_with", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tracing", @@ -5666,16 +5831,16 @@ dependencies = [ [[package]] name = "reth-downloaders" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", "futures", "futures-util", - "itertools 0.13.0", + "itertools 0.14.0", "metrics", "pin-project", "rayon", @@ -5692,7 +5857,7 @@ dependencies = [ "reth-tasks", "reth-testing-utils", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tokio-util", @@ -5701,11 +5866,11 @@ dependencies = [ [[package]] name = "reth-e2e-test-utils" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-network", "alloy-primitives", "alloy-rlp", @@ -5713,7 +5878,7 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-signer", "alloy-signer-local", - "derive_more", + "derive_more 2.0.1", "eyre", "futures-util", "jsonrpsee", @@ -5727,10 +5892,10 @@ dependencies = [ "reth-node-api", "reth-node-builder", "reth-node-core", - "reth-optimism-primitives", "reth-payload-builder", "reth-payload-builder-primitives", "reth-payload-primitives", + "reth-primitives", "reth-provider", "reth-rpc-api", "reth-rpc-eth-api", @@ -5740,6 +5905,7 @@ dependencies = [ "reth-tasks", "reth-tokio-util", "reth-tracing", + "revm", "serde_json", "tokio", "tokio-stream", @@ -5749,8 +5915,8 @@ dependencies = [ [[package]] name = "reth-ecies" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "aes", "alloy-primitives", @@ -5767,10 +5933,10 @@ dependencies = [ "pin-project", "rand 0.8.5", "reth-network-peers", - "secp256k1", + "secp256k1 0.30.0", "sha2 0.10.8", "sha3", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tokio-util", @@ -5780,8 +5946,8 @@ dependencies = [ [[package]] name = "reth-engine-local" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -5797,7 +5963,6 @@ dependencies = [ "reth-evm", "reth-node-types", "reth-payload-builder", - "reth-payload-builder-primitives", "reth-payload-primitives", "reth-provider", "reth-prune", @@ -5811,14 +5976,16 @@ dependencies = [ [[package]] name = "reth-engine-primitives" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", + "auto_impl", "futures", + "reth-chain-state", "reth-errors", "reth-execution-types", "reth-payload-builder-primitives", @@ -5826,15 +5993,16 @@ dependencies = [ "reth-primitives", "reth-primitives-traits", "reth-trie", + "reth-trie-common", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", ] [[package]] name = "reth-engine-service" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "futures", "pin-project", @@ -5851,23 +6019,25 @@ dependencies = [ "reth-prune", "reth-stages-api", "reth-tasks", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "reth-engine-tree" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", + "alloy-evm", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", - "derive_more", + "derive_more 2.0.1", "futures", "metrics", - "moka", + "mini-moka", + "parking_lot", "rayon", "reth-chain-state", "reth-chainspec", @@ -5880,7 +6050,6 @@ dependencies = [ "reth-metrics", "reth-network-p2p", "reth-payload-builder", - "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives-traits", "reth-provider", @@ -5898,39 +6067,32 @@ dependencies = [ "reth-trie-sparse", "revm-primitives", "schnellru", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] [[package]] name = "reth-engine-util" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", - "alloy-primitives", "alloy-rpc-types-engine", "eyre", "futures", - "itertools 0.13.0", + "itertools 0.14.0", "pin-project", "reth-chainspec", - "reth-consensus-common", "reth-engine-primitives", "reth-errors", - "reth-ethereum-forks", "reth-evm", "reth-fs-util", "reth-payload-primitives", - "reth-payload-validator", "reth-primitives", "reth-primitives-traits", "reth-provider", "reth-revm", - "reth-trie", - "revm-primitives", "serde", "serde_json", "tokio", @@ -5940,26 +6102,26 @@ dependencies = [ [[package]] name = "reth-errors" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "reth-consensus", "reth-execution-errors", "reth-fs-util", "reth-storage-errors", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "reth-eth-wire" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-chains", "alloy-primitives", "alloy-rlp", "bytes", - "derive_more", + "derive_more 2.0.1", "futures", "pin-project", "reth-codecs", @@ -5971,7 +6133,7 @@ dependencies = [ "reth-primitives-traits", "serde", "snap", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tokio-util", @@ -5980,29 +6142,29 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", "bytes", - "derive_more", + "derive_more 2.0.1", "reth-chainspec", "reth-codecs-derive", "reth-ethereum-forks", "reth-ethereum-primitives", "reth-primitives-traits", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "reth-ethereum-cli" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "eyre", "reth-chainspec", @@ -6011,15 +6173,16 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "reth-chainspec", "reth-consensus", "reth-consensus-common", + "reth-execution-types", "reth-primitives", "reth-primitives-traits", "tracing", @@ -6027,17 +6190,15 @@ dependencies = [ [[package]] name = "reth-ethereum-engine-primitives" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", - "reth-chainspec", "reth-engine-primitives", "reth-payload-primitives", - "reth-payload-validator", "reth-primitives", "serde", "sha2 0.10.8", @@ -6045,47 +6206,46 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-chains", "alloy-eip2124", + "alloy-hardforks", "alloy-primitives", "arbitrary", "auto_impl", - "dyn-clone", "once_cell", "rustc-hash 2.1.1", - "serde", ] [[package]] name = "reth-ethereum-primitives" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", + "alloy-evm", "alloy-primitives", "alloy-rlp", - "alloy-rpc-types", - "alloy-serde 0.11.1", + "alloy-rpc-types-eth", + "alloy-serde", "arbitrary", - "derive_more", + "derive_more 2.0.1", "modular-bitfield", "rand 0.8.5", "reth-codecs", "reth-primitives-traits", "reth-zstd-compressors", - "revm-primitives", - "secp256k1", + "revm-context", + "secp256k1 0.30.0", "serde", ] [[package]] name = "reth-etl" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "rayon", "reth-db-api", @@ -6094,74 +6254,75 @@ dependencies = [ [[package]] name = "reth-evm" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", + "alloy-evm", "alloy-primitives", "auto_impl", + "derive_more 2.0.1", "futures-util", "metrics", + "op-revm", "parking_lot", - "reth-chainspec", - "reth-consensus", - "reth-consensus-common", + "reth-ethereum-primitives", "reth-execution-errors", "reth-execution-types", "reth-metrics", - "reth-primitives", "reth-primitives-traits", - "reth-revm", + "reth-storage-api", "reth-storage-errors", + "reth-trie-common", "revm", - "revm-primitives", + "revm-database", + "scroll-alloy-evm", ] [[package]] name = "reth-execution-errors" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-evm", "alloy-primitives", "alloy-rlp", "nybbles", - "reth-consensus", - "reth-prune-types", "reth-storage-errors", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "reth-execution-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", + "alloy-evm", "alloy-primitives", - "reth-execution-errors", - "reth-primitives", + "derive_more 2.0.1", + "reth-ethereum-primitives", "reth-primitives-traits", - "reth-trie", "reth-trie-common", "revm", + "revm-database", "serde", "serde_with", ] [[package]] name = "reth-exex" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "eyre", "futures", - "itertools 0.13.0", + "itertools 0.14.0", "metrics", "parking_lot", "reth-chain-state", @@ -6173,6 +6334,7 @@ dependencies = [ "reth-metrics", "reth-node-api", "reth-node-core", + "reth-payload-builder", "reth-primitives", "reth-primitives-traits", "reth-provider", @@ -6182,7 +6344,7 @@ dependencies = [ "reth-tasks", "reth-tracing", "rmp-serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-util", "tracing", @@ -6190,10 +6352,10 @@ dependencies = [ [[package]] name = "reth-exex-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "reth-chain-state", "reth-execution-types", @@ -6205,18 +6367,18 @@ dependencies = [ [[package]] name = "reth-fs-util" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "reth-invalid-block-hooks" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -6242,8 +6404,8 @@ dependencies = [ [[package]] name = "reth-ipc" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "async-trait", "bytes", @@ -6253,7 +6415,7 @@ dependencies = [ "jsonrpsee", "pin-project", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tokio-util", @@ -6263,25 +6425,25 @@ dependencies = [ [[package]] name = "reth-libmdbx" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "byteorder", - "dashmap", - "derive_more", - "indexmap 2.7.1", + "dashmap 6.1.0", + "derive_more 2.0.1", + "indexmap 2.8.0", "parking_lot", "reth-mdbx-sys", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] [[package]] name = "reth-mdbx-sys" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "bindgen", "cc", @@ -6289,8 +6451,8 @@ dependencies = [ [[package]] name = "reth-metrics" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "futures", "metrics", @@ -6301,42 +6463,42 @@ dependencies = [ [[package]] name = "reth-net-banlist" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", ] [[package]] name = "reth-net-nat" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "futures-util", "if-addrs", "reqwest", "serde_with", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] [[package]] name = "reth-network" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", "aquamarine", "auto_impl", - "derive_more", + "derive_more 2.0.1", "discv5", "enr", "futures", - "itertools 0.13.0", + "itertools 0.14.0", "metrics", "parking_lot", "pin-project", @@ -6350,6 +6512,7 @@ dependencies = [ "reth-eth-wire", "reth-eth-wire-types", "reth-ethereum-forks", + "reth-ethereum-primitives", "reth-fs-util", "reth-metrics", "reth-net-banlist", @@ -6365,11 +6528,11 @@ dependencies = [ "reth-transaction-pool", "rustc-hash 2.1.1", "schnellru", - "secp256k1", + "secp256k1 0.30.0", "serde", "smallvec", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tokio-util", @@ -6378,13 +6541,13 @@ dependencies = [ [[package]] name = "reth-network-api" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "alloy-rpc-types-admin", "auto_impl", - "derive_more", + "derive_more 2.0.1", "enr", "futures", "reth-eth-wire-types", @@ -6394,28 +6557,28 @@ dependencies = [ "reth-network-types", "reth-tokio-util", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", ] [[package]] name = "reth-network-p2p" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "auto_impl", - "derive_more", + "derive_more 2.0.1", "futures", "parking_lot", "reth-consensus", "reth-eth-wire-types", + "reth-ethereum-primitives", "reth-network-peers", "reth-network-types", - "reth-primitives", "reth-primitives-traits", "reth-storage-errors", "tokio", @@ -6424,23 +6587,23 @@ dependencies = [ [[package]] name = "reth-network-peers" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "alloy-rlp", "enr", - "secp256k1", + "secp256k1 0.30.0", "serde_with", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "url", ] [[package]] name = "reth-network-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-eip2124", "humantime-serde", @@ -6453,28 +6616,29 @@ dependencies = [ [[package]] name = "reth-nippy-jar" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "anyhow", "bincode", - "derive_more", + "derive_more 2.0.1", "lz4_flex", "memmap2", "reth-fs-util", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "zstd", ] [[package]] name = "reth-node-api" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-rpc-types-engine", "eyre", + "reth-basic-payload-builder", "reth-consensus", "reth-db-api", "reth-engine-primitives", @@ -6482,28 +6646,32 @@ dependencies = [ "reth-network-api", "reth-node-core", "reth-node-types", + "reth-payload-builder", "reth-payload-builder-primitives", "reth-payload-primitives", "reth-provider", "reth-tasks", + "reth-tokio-util", "reth-transaction-pool", ] [[package]] name = "reth-node-builder" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types", + "alloy-rpc-types-engine", "aquamarine", "eyre", "fdlimit", "futures", "jsonrpsee", "rayon", + "reth-basic-payload-builder", "reth-chain-state", "reth-chainspec", "reth-cli-util", @@ -6545,7 +6713,7 @@ dependencies = [ "reth-tokio-util", "reth-tracing", "reth-transaction-pool", - "secp256k1", + "secp256k1 0.30.0", "tokio", "tokio-stream", "tracing", @@ -6553,15 +6721,15 @@ dependencies = [ [[package]] name = "reth-node-core" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", "clap", - "derive_more", + "derive_more 2.0.1", "dirs-next", "eyre", "futures", @@ -6590,11 +6758,11 @@ dependencies = [ "reth-storage-errors", "reth-tracing", "reth-transaction-pool", - "secp256k1", + "secp256k1 0.30.0", "serde", "shellexpand", - "strum 0.26.3", - "thiserror 2.0.11", + "strum 0.27.1", + "thiserror 2.0.12", "toml", "tracing", "vergen", @@ -6602,14 +6770,14 @@ dependencies = [ [[package]] name = "reth-node-events" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", - "derive_more", + "derive_more 2.0.1", "futures", "humantime", "pin-project", @@ -6626,8 +6794,8 @@ dependencies = [ [[package]] name = "reth-node-metrics" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "eyre", "http", @@ -6636,19 +6804,18 @@ dependencies = [ "metrics-exporter-prometheus", "metrics-process", "metrics-util", - "procfs 0.16.0", + "procfs", "reth-metrics", "reth-tasks", "tokio", "tower 0.4.13", "tracing", - "vergen", ] [[package]] name = "reth-node-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "reth-chainspec", "reth-db-api", @@ -6660,35 +6827,38 @@ dependencies = [ [[package]] name = "reth-optimism-primitives" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", + "alloy-evm", "alloy-primitives", "alloy-rlp", + "alloy-rpc-types-eth", + "alloy-serde", "arbitrary", "bytes", - "derive_more", + "derive_more 2.0.1", "op-alloy-consensus", + "op-revm", "rand 0.8.5", "reth-codecs", "reth-primitives-traits", "reth-zstd-compressors", - "revm-primitives", - "secp256k1", + "revm-context", + "secp256k1 0.30.0", "serde", ] [[package]] name = "reth-payload-builder" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "alloy-primitives", "alloy-rpc-types", - "async-trait", "futures-util", "metrics", "reth-chain-state", @@ -6705,11 +6875,9 @@ dependencies = [ [[package]] name = "reth-payload-builder-primitives" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-rpc-types-engine", - "async-trait", "pin-project", "reth-payload-primitives", "tokio", @@ -6719,12 +6887,13 @@ dependencies = [ [[package]] name = "reth-payload-primitives" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", + "auto_impl", "op-alloy-rpc-types-engine", "reth-chain-state", "reth-chainspec", @@ -6732,35 +6901,24 @@ dependencies = [ "reth-primitives", "scroll-alloy-rpc-types-engine", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", ] [[package]] name = "reth-payload-util" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "alloy-primitives", - "reth-primitives", -] - -[[package]] -name = "reth-payload-validator" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" -dependencies = [ - "alloy-rpc-types", - "reth-chainspec", - "reth-primitives", - "reth-primitives-traits", + "reth-transaction-pool", ] [[package]] name = "reth-primitives" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "arbitrary", @@ -6774,11 +6932,11 @@ dependencies = [ [[package]] name = "reth-primitives-traits" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-genesis", "alloy-primitives", "alloy-rlp", @@ -6787,7 +6945,7 @@ dependencies = [ "auto_impl", "byteorder", "bytes", - "derive_more", + "derive_more 2.0.1", "k256", "modular-bitfield", "once_cell", @@ -6796,27 +6954,29 @@ dependencies = [ "proptest-arbitrary-interop", "rayon", "reth-codecs", + "revm-bytecode", "revm-primitives", + "revm-state", "scroll-alloy-consensus", - "secp256k1", + "secp256k1 0.30.0", "serde", "serde_with", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "reth-provider" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", "auto_impl", - "dashmap", + "dashmap 6.1.0", "eyre", - "itertools 0.13.0", + "itertools 0.14.0", "metrics", "notify", "parking_lot", @@ -6843,26 +7003,26 @@ dependencies = [ "reth-storage-errors", "reth-trie", "reth-trie-db", - "revm", - "strum 0.26.3", + "revm-database", + "revm-state", + "strum 0.27.1", "tokio", "tracing", ] [[package]] name = "reth-prune" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", - "itertools 0.13.0", + "itertools 0.14.0", "metrics", "rayon", "reth-chainspec", "reth-config", - "reth-db", "reth-db-api", "reth-errors", "reth-exex-types", @@ -6873,47 +7033,49 @@ dependencies = [ "reth-static-file-types", "reth-tokio-util", "rustc-hash 2.1.1", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] [[package]] name = "reth-prune-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "arbitrary", - "derive_more", + "derive_more 2.0.1", "modular-bitfield", "reth-codecs", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "reth-revm" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", "alloy-primitives", - "reth-primitives", + "reth-primitives-traits", "reth-storage-api", "reth-storage-errors", "reth-trie", "revm", + "revm-database", + "revm-inspector", ] [[package]] name = "reth-rpc" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "alloy-dyn-abi", - "alloy-eips 0.11.1", + "alloy-eips", + "alloy-evm", "alloy-genesis", "alloy-network", "alloy-primitives", @@ -6927,11 +7089,11 @@ dependencies = [ "alloy-rpc-types-mev", "alloy-rpc-types-trace", "alloy-rpc-types-txpool", - "alloy-serde 0.11.1", + "alloy-serde", "alloy-signer", "alloy-signer-local", "async-trait", - "derive_more", + "derive_more 2.0.1", "futures", "http", "http-body", @@ -6943,7 +7105,6 @@ dependencies = [ "rand 0.8.5", "reth-chainspec", "reth-consensus", - "reth-consensus-common", "reth-engine-primitives", "reth-errors", "reth-evm", @@ -6951,6 +7112,7 @@ dependencies = [ "reth-network-api", "reth-network-peers", "reth-network-types", + "reth-node-api", "reth-primitives", "reth-primitives-traits", "reth-provider", @@ -6968,7 +7130,7 @@ dependencies = [ "revm-primitives", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tower 0.4.13", @@ -6978,10 +7140,11 @@ dependencies = [ [[package]] name = "reth-rpc-api" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", + "alloy-genesis", "alloy-json-rpc", "alloy-primitives", "alloy-rpc-types", @@ -6994,7 +7157,7 @@ dependencies = [ "alloy-rpc-types-mev", "alloy-rpc-types-trace", "alloy-rpc-types-txpool", - "alloy-serde 0.11.1", + "alloy-serde", "jsonrpsee", "reth-engine-primitives", "reth-network-peers", @@ -7003,8 +7166,8 @@ dependencies = [ [[package]] name = "reth-rpc-builder" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-network", "alloy-provider", @@ -7014,7 +7177,6 @@ dependencies = [ "pin-project", "reth-chainspec", "reth-consensus", - "reth-engine-primitives", "reth-evm", "reth-ipc", "reth-metrics", @@ -7031,7 +7193,7 @@ dependencies = [ "reth-tasks", "reth-transaction-pool", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-util", "tower 0.4.13", @@ -7041,10 +7203,10 @@ dependencies = [ [[package]] name = "reth-rpc-engine-api" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", "async-trait", @@ -7058,32 +7220,32 @@ dependencies = [ "reth-payload-builder", "reth-payload-builder-primitives", "reth-payload-primitives", + "reth-primitives-traits", "reth-rpc-api", - "reth-rpc-types-compat", "reth-storage-api", "reth-tasks", "reth-transaction-pool", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] [[package]] name = "reth-rpc-eth-api" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "alloy-dyn-abi", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-json-rpc", "alloy-network", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-eth", "alloy-rpc-types-mev", - "alloy-serde 0.11.1", + "alloy-serde", "async-trait", "auto_impl", "dyn-clone", @@ -7096,6 +7258,7 @@ dependencies = [ "reth-evm", "reth-network-api", "reth-node-api", + "reth-payload-builder", "reth-primitives", "reth-primitives-traits", "reth-provider", @@ -7115,17 +7278,17 @@ dependencies = [ [[package]] name = "reth-rpc-eth-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-eth", "alloy-sol-types", - "derive_more", + "derive_more 2.0.1", "futures", - "itertools 0.13.0", + "itertools 0.14.0", "jsonrpsee-core", "jsonrpsee-types", "metrics", @@ -7146,11 +7309,12 @@ dependencies = [ "reth-transaction-pool", "reth-trie", "revm", + "revm-database", "revm-inspectors", "revm-primitives", "schnellru", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tracing", @@ -7158,8 +7322,8 @@ dependencies = [ [[package]] name = "reth-rpc-layer" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-rpc-types-engine", "http", @@ -7172,10 +7336,10 @@ dependencies = [ [[package]] name = "reth-rpc-server-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", "jsonrpsee-core", @@ -7183,18 +7347,16 @@ dependencies = [ "reth-errors", "reth-network-api", "serde", - "strum 0.26.3", + "strum 0.27.1", ] [[package]] name = "reth-rpc-types-compat" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", "alloy-primitives", - "alloy-rpc-types-engine", "alloy-rpc-types-eth", "jsonrpsee-types", "reth-primitives", @@ -7204,16 +7366,16 @@ dependencies = [ [[package]] name = "reth-scroll-chainspec" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-genesis", "alloy-primitives", - "alloy-serde 0.11.1", - "derive_more", + "alloy-serde", + "derive_more 2.0.1", "once_cell", "reth-chainspec", "reth-ethereum-forks", @@ -7221,20 +7383,22 @@ dependencies = [ "reth-primitives-traits", "reth-scroll-forks", "reth-trie-common", + "scroll-alloy-hardforks", "serde", "serde_json", ] [[package]] name = "reth-scroll-cli" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "clap", "eyre", "reth-cli", "reth-cli-commands", "reth-cli-runner", + "reth-consensus", "reth-db", "reth-node-builder", "reth-node-core", @@ -7249,19 +7413,31 @@ dependencies = [ [[package]] name = "reth-scroll-consensus" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "revm", + "alloy-consensus", + "alloy-primitives", + "reth-chainspec", + "reth-consensus", + "reth-consensus-common", + "reth-ethereum-consensus", + "reth-execution-types", + "reth-primitives", + "reth-primitives-traits", + "reth-scroll-primitives", + "scroll-alloy-hardforks", + "thiserror 2.0.12", + "tracing", ] [[package]] name = "reth-scroll-engine-primitives" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", @@ -7273,8 +7449,8 @@ dependencies = [ "reth-primitives", "reth-primitives-traits", "reth-scroll-chainspec", - "reth-scroll-forks", "reth-scroll-primitives", + "scroll-alloy-hardforks", "scroll-alloy-rpc-types-engine", "serde", "sha2 0.10.8", @@ -7282,55 +7458,58 @@ dependencies = [ [[package]] name = "reth-scroll-evm" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", - "derive_more", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "derive_more 2.0.1", "reth-chainspec", - "reth-consensus", - "reth-ethereum-consensus", "reth-evm", + "reth-execution-types", "reth-primitives", "reth-primitives-traits", - "reth-revm", "reth-scroll-chainspec", - "reth-scroll-consensus", "reth-scroll-forks", "reth-scroll-primitives", "revm", "revm-primitives", + "revm-scroll", "scroll-alloy-consensus", - "thiserror 2.0.11", + "scroll-alloy-evm", + "scroll-alloy-hardforks", + "thiserror 2.0.12", "tracing", ] [[package]] name = "reth-scroll-forks" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-chains", "alloy-primitives", + "auto_impl", "once_cell", "reth-ethereum-forks", + "scroll-alloy-hardforks", "serde", ] [[package]] name = "reth-scroll-node" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", "eyre", - "reth-consensus", - "reth-db", - "reth-engine-local", + "reth-basic-payload-builder", + "reth-chainspec", "reth-eth-wire-types", "reth-evm", "reth-network", @@ -7343,6 +7522,7 @@ dependencies = [ "reth-provider", "reth-rpc-eth-types", "reth-scroll-chainspec", + "reth-scroll-consensus", "reth-scroll-engine-primitives", "reth-scroll-evm", "reth-scroll-payload", @@ -7353,33 +7533,39 @@ dependencies = [ "reth-trie-db", "revm", "scroll-alloy-consensus", + "scroll-alloy-evm", + "scroll-alloy-hardforks", "scroll-alloy-rpc-types-engine", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", ] [[package]] name = "reth-scroll-payload" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "futures-util", - "reth-payload-builder", + "reth-basic-payload-builder", "reth-payload-primitives", + "reth-payload-util", + "reth-primitives-traits", + "reth-scroll-engine-primitives", + "reth-transaction-pool", ] [[package]] name = "reth-scroll-primitives" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", + "alloy-evm", "alloy-primitives", "alloy-rlp", "arbitrary", "bytes", - "derive_more", + "derive_more 2.0.1", "modular-bitfield", "once_cell", "proptest", @@ -7387,19 +7573,20 @@ dependencies = [ "reth-codecs", "reth-primitives-traits", "reth-zstd-compressors", - "revm-primitives", + "revm-context", + "revm-scroll", "scroll-alloy-consensus", - "secp256k1", + "scroll-alloy-evm", + "secp256k1 0.30.0", "serde", ] [[package]] name = "reth-scroll-rpc" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", "alloy-primitives", "alloy-rpc-types-eth", "jsonrpsee-types", @@ -7416,31 +7603,31 @@ dependencies = [ "reth-rpc-eth-api", "reth-rpc-eth-types", "reth-scroll-chainspec", - "reth-scroll-evm", - "reth-scroll-forks", "reth-scroll-primitives", "reth-tasks", "reth-transaction-pool", "revm", "scroll-alloy-consensus", + "scroll-alloy-evm", + "scroll-alloy-hardforks", "scroll-alloy-network", "scroll-alloy-rpc-types", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", ] [[package]] name = "reth-stages" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "bincode", "blake3", "futures-util", - "itertools 0.13.0", + "itertools 0.14.0", "num-traits", "rayon", "reqwest", @@ -7469,17 +7656,17 @@ dependencies = [ "reth-trie-db", "serde", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] [[package]] name = "reth-stages-api" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "aquamarine", "auto_impl", @@ -7496,15 +7683,15 @@ dependencies = [ "reth-static-file", "reth-static-file-types", "reth-tokio-util", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] [[package]] name = "reth-stages-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "arbitrary", @@ -7517,8 +7704,8 @@ dependencies = [ [[package]] name = "reth-static-file" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "parking_lot", @@ -7538,61 +7725,60 @@ dependencies = [ [[package]] name = "reth-static-file-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "clap", - "derive_more", + "derive_more 2.0.1", "serde", - "strum 0.26.3", + "strum 0.27.1", ] [[package]] name = "reth-storage-api" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", "auto_impl", "reth-chainspec", - "reth-db", "reth-db-api", "reth-db-models", + "reth-ethereum-primitives", "reth-execution-types", - "reth-primitives", "reth-primitives-traits", "reth-prune-types", "reth-stages-types", "reth-storage-errors", - "reth-trie", + "reth-trie-common", "reth-trie-db", - "revm", + "revm-database", ] [[package]] name = "reth-storage-errors" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "derive_more", - "reth-fs-util", + "derive_more 2.0.1", "reth-primitives-traits", "reth-prune-types", "reth-static-file-types", - "thiserror 2.0.11", + "revm-database-interface", + "thiserror 2.0.12", ] [[package]] name = "reth-tasks" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "auto_impl", "dyn-clone", @@ -7601,7 +7787,7 @@ dependencies = [ "pin-project", "rayon", "reth-metrics", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", "tracing-futures", @@ -7609,23 +7795,23 @@ dependencies = [ [[package]] name = "reth-testing-utils" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-genesis", "alloy-primitives", "rand 0.8.5", "reth-primitives", "reth-primitives-traits", - "secp256k1", + "secp256k1 0.30.0", ] [[package]] name = "reth-tokio-util" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "tokio", "tokio-stream", @@ -7634,8 +7820,8 @@ dependencies = [ [[package]] name = "reth-tracing" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "clap", "eyre", @@ -7649,16 +7835,16 @@ dependencies = [ [[package]] name = "reth-transaction-pool" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", "aquamarine", "auto_impl", - "bitflags 2.8.0", + "bitflags 2.9.0", "futures-util", "metrics", "parking_lot", @@ -7667,21 +7853,20 @@ dependencies = [ "reth-chain-state", "reth-chainspec", "reth-eth-wire-types", + "reth-ethereum-primitives", "reth-execution-types", "reth-fs-util", "reth-metrics", - "reth-payload-util", - "reth-primitives", "reth-primitives-traits", "reth-storage-api", "reth-tasks", "revm-interpreter", - "revm-primitives", + "revm-specification", "rustc-hash 2.1.1", "schnellru", "serde", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tracing", @@ -7689,18 +7874,17 @@ dependencies = [ [[package]] name = "reth-trie" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-trie", "auto_impl", - "itertools 0.13.0", + "itertools 0.14.0", "metrics", - "rayon", "reth-execution-errors", "reth-metrics", "reth-primitives-traits", @@ -7708,50 +7892,50 @@ dependencies = [ "reth-storage-errors", "reth-trie-common", "reth-trie-sparse", - "revm", + "revm-database", "tracing", "triehash", ] [[package]] name = "reth-trie-common" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-eth", - "alloy-serde 0.11.1", + "alloy-serde", "alloy-trie", "arbitrary", "bytes", - "derive_more", + "derive_more 2.0.1", "hash-db", - "itertools 0.13.0", + "itertools 0.14.0", "nybbles", "plain_hasher", + "rayon", "reth-codecs", "reth-primitives-traits", + "revm-database", "serde", "serde_with", ] [[package]] name = "reth-trie-db" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "alloy-rlp", - "derive_more", + "derive_more 2.0.1", "metrics", - "reth-db", "reth-db-api", "reth-execution-errors", "reth-metrics", "reth-primitives-traits", - "reth-storage-errors", "reth-trie", "revm", "serde", @@ -7761,31 +7945,32 @@ dependencies = [ [[package]] name = "reth-trie-parallel" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "alloy-rlp", - "derive_more", - "itertools 0.13.0", + "derive_more 2.0.1", + "itertools 0.14.0", "metrics", "rayon", - "reth-db", "reth-execution-errors", "reth-metrics", "reth-primitives", "reth-provider", + "reth-storage-errors", "reth-trie", "reth-trie-common", "reth-trie-db", - "thiserror 2.0.11", + "thiserror 2.0.12", + "tokio", "tracing", ] [[package]] name = "reth-trie-sparse" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -7794,36 +7979,142 @@ dependencies = [ "reth-tracing", "reth-trie-common", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", +] + +[[package]] +name = "reth-zstd-compressors" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" +dependencies = [ + "zstd", +] + +[[package]] +name = "revm" +version = "20.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" +dependencies = [ + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database", + "revm-database-interface", + "revm-handler", + "revm-inspector", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-specification", + "revm-state", +] + +[[package]] +name = "revm-bytecode" +version = "1.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" +dependencies = [ + "bitvec", + "revm-primitives", + "revm-specification", + "serde", +] + +[[package]] +name = "revm-context" +version = "1.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" +dependencies = [ + "auto_impl", + "cfg-if", + "derive-where", + "revm-bytecode", + "revm-context-interface", + "revm-database-interface", + "revm-interpreter", + "revm-primitives", + "revm-specification", + "revm-state", + "serde", +] + +[[package]] +name = "revm-context-interface" +version = "1.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "revm-database-interface", + "revm-primitives", + "revm-specification", + "revm-state", + "serde", +] + +[[package]] +name = "revm-database" +version = "1.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" +dependencies = [ + "auto_impl", + "revm-bytecode", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-database-interface" +version = "1.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" +dependencies = [ + "auto_impl", + "revm-primitives", + "revm-state", + "serde", ] [[package]] -name = "reth-zstd-compressors" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +name = "revm-handler" +version = "1.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" dependencies = [ - "zstd", + "auto_impl", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database-interface", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-specification", + "revm-state", + "serde", ] [[package]] -name = "revm" -version = "19.4.0" -source = "git+https://github.com/scroll-tech/revm.git?branch=scroll-evm-executor/reth/v55#8e3fd7b8640a776bd28cc421f33b1f38949490d6" +name = "revm-inspector" +version = "1.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" dependencies = [ "auto_impl", - "cfg-if", - "dyn-clone", + "revm-context", + "revm-database-interface", + "revm-handler", "revm-interpreter", "revm-precompile", + "revm-primitives", + "revm-state", "serde", - "serde_json", ] [[package]] name = "revm-inspectors" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d87cdf1c0d878b48423f8a86232950657abaf72a2d0d14af609467542313b1a" +version = "0.16.0" +source = "git+https://github.com/paradigmxyz/revm-inspectors?rev=9219073#9219073cb04a774d6ea12b44655bba92b08c1293" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -7834,53 +8125,84 @@ dependencies = [ "revm", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "revm-interpreter" -version = "15.1.0" -source = "git+https://github.com/scroll-tech/revm.git?branch=scroll-evm-executor/reth/v55#8e3fd7b8640a776bd28cc421f33b1f38949490d6" +version = "16.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" dependencies = [ - "cfg-if", + "revm-bytecode", + "revm-context-interface", "revm-primitives", + "revm-specification", "serde", ] [[package]] name = "revm-precompile" -version = "16.0.0" -source = "git+https://github.com/scroll-tech/revm.git?branch=scroll-evm-executor/reth/v55#8e3fd7b8640a776bd28cc421f33b1f38949490d6" +version = "17.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" dependencies = [ "aurora-engine-modexp", + "blst", "c-kzg", "cfg-if", "k256", + "libsecp256k1", "once_cell", "p256", + "revm-context-interface", "revm-primitives", + "revm-specification", "ripemd", - "secp256k1", + "secp256k1 0.30.0", "sha2 0.10.8", "substrate-bn", ] [[package]] name = "revm-primitives" -version = "15.1.0" -source = "git+https://github.com/scroll-tech/revm.git?branch=scroll-evm-executor/reth/v55#8e3fd7b8640a776bd28cc421f33b1f38949490d6" +version = "16.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" dependencies = [ - "alloy-eip2930", - "alloy-eip7702", "alloy-primitives", +] + +[[package]] +name = "revm-scroll" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/scroll-revm#12557ed8a512240228d18c4fae85477bf47fbbe3" +dependencies = [ "auto_impl", - "bitflags 2.8.0", - "bitvec", - "c-kzg", - "cfg-if", - "dyn-clone", "enumn", - "hex", + "once_cell", + "revm", + "revm-inspector", + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-specification" +version = "1.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" +dependencies = [ + "enumn", + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-state" +version = "1.0.0-alpha.1" +source = "git+https://github.com/bluealloy/revm?rev=19a5f3b#19a5f3be55d633f65bcb1291670292073046cdfc" +dependencies = [ + "bitflags 2.9.0", + "revm-bytecode", + "revm-primitives", + "revm-specification", "serde", ] @@ -7896,9 +8218,9 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.9" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", @@ -7987,27 +8309,60 @@ dependencies = [ name = "rollup-node-manager" version = "0.0.1" dependencies = [ - "alloy-eips 0.9.2", + "alloy-eips", "alloy-rpc-types-engine", "futures", - "reth-engine-primitives", - "reth-network-peers", - "reth-rpc-api", - "reth-scroll-engine-primitives", "reth-scroll-primitives", - "reth-tasks", "reth-tokio-util", + "rollup-node-primitives", "scroll-alloy-network", "scroll-alloy-provider", "scroll-engine", "scroll-network", "scroll-wire", - "secp256k1", + "secp256k1 0.29.1", "tokio", "tokio-stream", "tracing", ] +[[package]] +name = "rollup-node-primitives" +version = "0.0.1" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-engine", + "derive_more 2.0.1", + "scroll-alloy-consensus", +] + +[[package]] +name = "rollup-node-watcher" +version = "0.0.1" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-eth", + "alloy-sol-types", + "alloy-transport", + "arbitrary", + "async-trait", + "derive_more 2.0.1", + "eyre", + "rand 0.9.0", + "rollup-node-primitives", + "scroll-alloy-consensus", + "scroll-l1", + "thiserror 2.0.12", + "tokio", + "tracing", + "tracing-subscriber", +] + [[package]] name = "route-recognizer" version = "0.3.1" @@ -8089,7 +8444,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.25", + "semver 1.0.26", ] [[package]] @@ -8098,10 +8453,23 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7178faa4b75a30e269c71e61c353ce2748cf3d76f0c44c393f4e60abf49b825" +dependencies = [ + "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.9.2", "windows-sys 0.59.0", ] @@ -8203,9 +8571,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "rusty-fork" @@ -8221,9 +8589,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -8268,27 +8636,53 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scroll-alloy-consensus" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-primitives", "alloy-rlp", - "alloy-serde 0.11.1", + "alloy-serde", "arbitrary", - "derive_more", + "derive_more 2.0.1", "modular-bitfield", "reth-codecs", "reth-codecs-derive", "serde", - "serde_with", +] + +[[package]] +name = "scroll-alloy-evm" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-primitives", + "auto_impl", + "revm", + "revm-scroll", + "scroll-alloy-consensus", + "scroll-alloy-hardforks", + "serde", +] + +[[package]] +name = "scroll-alloy-hardforks" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" +dependencies = [ + "alloy-hardforks", + "auto_impl", + "serde", ] [[package]] name = "scroll-alloy-network" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", "alloy-network", @@ -8301,8 +8695,8 @@ dependencies = [ [[package]] name = "scroll-alloy-provider" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "alloy-provider", @@ -8311,7 +8705,7 @@ dependencies = [ "alloy-transport", "alloy-transport-http", "async-trait", - "derive_more", + "derive_more 2.0.1", "eyre", "http-body-util", "reqwest", @@ -8322,16 +8716,16 @@ dependencies = [ [[package]] name = "scroll-alloy-rpc-types" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-consensus", - "alloy-eips 0.11.1", + "alloy-eips", "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types-eth", - "alloy-serde 0.11.1", - "derive_more", + "alloy-serde", + "derive_more 2.0.1", "scroll-alloy-consensus", "serde", "serde_json", @@ -8339,8 +8733,8 @@ dependencies = [ [[package]] name = "scroll-alloy-rpc-types-engine" -version = "1.1.5" -source = "git+https://github.com/scroll-tech/reth.git?branch=feat/add-deref-blanket-engine-api#b4bb326eaecaf33b6452ecdf013a0122cb4f4d86" +version = "1.2.2" +source = "git+https://github.com/scroll-tech/reth.git#2de81fce858e35ed374c8105c45f02831887ff0a" dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", @@ -8360,6 +8754,7 @@ dependencies = [ "futures", "reth-cli-util", "reth-e2e-test-utils", + "reth-engine-local", "reth-eth-wire-types", "reth-network", "reth-network-peers", @@ -8370,7 +8765,6 @@ dependencies = [ "reth-payload-builder", "reth-primitives", "reth-provider", - "reth-rpc-api", "reth-rpc-builder", "reth-rpc-server-types", "reth-scroll-chainspec", @@ -8383,13 +8777,12 @@ dependencies = [ "reth-transaction-pool", "rollup-node-manager", "scroll-alloy-consensus", - "scroll-alloy-network", "scroll-alloy-provider", "scroll-alloy-rpc-types-engine", "scroll-engine", "scroll-network", "scroll-wire", - "secp256k1", + "secp256k1 0.29.1", "serde_json", "tokio", "tracing", @@ -8400,28 +8793,37 @@ name = "scroll-engine" version = "0.0.1" dependencies = [ "alloy-chains", - "alloy-eips 0.9.2", + "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", "arbitrary", "async-trait", "eyre", - "reth-engine-primitives", - "reth-network-peers", "reth-payload-primitives", "reth-primitives", "reth-scroll-chainspec", "reth-scroll-engine-primitives", "reth-scroll-primitives", "reth-testing-utils", + "rollup-node-primitives", "scroll-alloy-network", "scroll-alloy-provider", "scroll-alloy-rpc-types-engine", - "serde", "tokio", "tracing", ] +[[package]] +name = "scroll-l1" +version = "0.0.1" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "arbitrary", + "derive_more 2.0.1", + "scroll-alloy-consensus", +] + [[package]] name = "scroll-network" version = "0.0.1" @@ -8429,20 +8831,17 @@ dependencies = [ "alloy-primitives", "futures", "parking_lot", - "reth-discv5", "reth-eth-wire-types", "reth-network", "reth-network-api", "reth-network-peers", "reth-network-types", - "reth-primitives", "reth-scroll-chainspec", "reth-scroll-node", "reth-scroll-primitives", "reth-storage-api", - "reth-tasks", "scroll-wire", - "secp256k1", + "secp256k1 0.29.1", "tokio", "tokio-stream", "tracing", @@ -8460,7 +8859,7 @@ dependencies = [ "reth-network-api", "reth-primitives", "reth-scroll-primitives", - "secp256k1", + "secp256k1 0.29.1", "tokio", "tokio-stream", "tracing", @@ -8492,6 +8891,18 @@ dependencies = [ "serde", ] +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.5", + "secp256k1-sys", + "serde", +] + [[package]] name = "secp256k1-sys" version = "0.10.1" @@ -8507,7 +8918,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -8521,7 +8932,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -8549,9 +8960,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] @@ -8579,31 +8990,30 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ - "indexmap 2.7.1", "itoa", "memchr", "ryu", @@ -8641,7 +9051,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.7.1", + "indexmap 2.8.0", "serde", "serde_derive", "serde_json", @@ -8658,7 +9068,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8767,7 +9177,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio 1.0.3", + "mio", "signal-hook", ] @@ -8798,10 +9208,25 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", ] +[[package]] +name = "skeptic" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" +dependencies = [ + "bytecount", + "cargo_metadata 0.14.2", + "error-chain", + "glob", + "pulldown-cmark", + "tempfile", + "walkdir", +] + [[package]] name = "sketches-ddsketch" version = "0.3.0" @@ -8921,7 +9346,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8934,7 +9359,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -8969,9 +9394,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.98" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -8980,14 +9405,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2de690018098e367beeb793991c7d4dc7270f42c9d2ac4ccc876c1368ca430" +checksum = "ac9f9798a84bca5cd4d1760db691075fda8f2c3a5d9647e8bfd29eb9b3fabb87" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9007,14 +9432,14 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "sysinfo" -version = "0.32.1" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c33cd241af0f2e9e3b5c32163b873b29956890b5342e6745b917ce9d490f4af" +checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" dependencies = [ "core-foundation-sys", "libc", @@ -9037,15 +9462,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.17.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" +checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567" dependencies = [ "cfg-if", "fastrand", "getrandom 0.3.1", "once_cell", - "rustix", + "rustix 1.0.2", "windows-sys 0.59.0", ] @@ -9060,11 +9485,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -9075,18 +9500,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9110,9 +9535,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.37" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8" dependencies = [ "deranged", "itoa", @@ -9127,15 +9552,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "e8093bc3e81c3bc5f7879de09619d06c9a5a5e45ca44dfeeb7225bae38005c5c" dependencies = [ "num-conv", "time-core", @@ -9162,9 +9587,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -9177,14 +9602,14 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.43.0" +version = "1.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "9975ea0f48b5aa3972bf2d888c238182458437cc2a19374b81b25cdf1023fb3a" dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.3", + "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -9201,14 +9626,14 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "tokio-rustls" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ "rustls", "tokio", @@ -9284,7 +9709,7 @@ version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "serde", "serde_spanned", "toml_datetime", @@ -9335,7 +9760,7 @@ checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "async-compression", "base64 0.22.1", - "bitflags 2.8.0", + "bitflags 2.9.0", "bytes", "futures-core", "futures-util", @@ -9402,7 +9827,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9490,6 +9915,31 @@ dependencies = [ "tracing-serde", ] +[[package]] +name = "tree_hash" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c58eb0f518840670270d90d97ffee702d8662d9c5494870c9e1e9e0fa00f668" +dependencies = [ + "alloy-primitives", + "ethereum_hashing", + "ethereum_ssz", + "smallvec", + "typenum", +] + +[[package]] +name = "tree_hash_derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "699e7fb6b3fdfe0c809916f251cf5132d64966858601695c3736630a87e7166a" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "triehash" version = "0.8.4" @@ -9500,6 +9950,12 @@ dependencies = [ "rlp", ] +[[package]] +name = "triomphe" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85" + [[package]] name = "try-lock" version = "0.2.5" @@ -9521,7 +9977,7 @@ dependencies = [ "rustls", "rustls-pki-types", "sha1", - "thiserror 2.0.11", + "thiserror 2.0.12", "utf-8", ] @@ -9575,9 +10031,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-segmentation" @@ -9674,9 +10130,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f41ffb7cf259f1ecc2876861a17e7142e63ead296f671f81f6ae85903e0d6" +checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" dependencies = [ "getrandom 0.3.1", ] @@ -9694,7 +10150,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" dependencies = [ "anyhow", - "cargo_metadata", + "cargo_metadata 0.18.1", "cfg-if", "regex", "rustversion", @@ -9715,7 +10171,7 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9783,7 +10239,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "wasm-bindgen-shared", ] @@ -9818,7 +10274,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -9962,7 +10418,7 @@ dependencies = [ "windows-implement 0.58.0", "windows-interface 0.58.0", "windows-result 0.2.0", - "windows-strings", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] @@ -9974,7 +10430,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9985,7 +10441,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -9996,7 +10452,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10007,18 +10463,24 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] +[[package]] +name = "windows-link" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" + [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ - "windows-result 0.2.0", - "windows-strings", - "windows-targets 0.52.6", + "windows-result 0.3.1", + "windows-strings 0.3.1", + "windows-targets 0.53.0", ] [[package]] @@ -10039,6 +10501,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06374efe858fab7e4f881500e6e86ec8bc28f9462c47e5a9941a0142ad86b189" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-strings" version = "0.1.0" @@ -10049,6 +10520,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-strings" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -10100,13 +10580,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -10119,6 +10615,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -10131,6 +10633,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -10143,12 +10651,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -10161,6 +10681,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -10173,6 +10699,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -10185,6 +10717,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -10197,11 +10735,17 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" +checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1" dependencies = [ "memchr", ] @@ -10222,7 +10766,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -10291,7 +10835,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "synstructure", ] @@ -10301,17 +10845,16 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "byteorder", "zerocopy-derive 0.7.35", ] [[package]] name = "zerocopy" -version = "0.8.18" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79386d31a42a4996e3336b0919ddb90f81112af416270cff95b5f5af22b839c2" +checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" dependencies = [ - "zerocopy-derive 0.8.18", + "zerocopy-derive 0.8.23", ] [[package]] @@ -10322,38 +10865,38 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "zerocopy-derive" -version = "0.8.18" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76331675d372f91bf8d17e13afbd5fe639200b73d01f0fc748bb059f9cca2db7" +checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", "synstructure", ] @@ -10374,7 +10917,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] @@ -10396,32 +10939,32 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.100", ] [[package]] name = "zstd" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "7.2.1" +version = "7.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +checksum = "f3051792fbdc2e1e143244dc28c60f73d8470e93f3f9cbd0ead44da5ed802722" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.14+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "8fb060d4926e4ac3a3ad15d864e99ceb5f343c6b34f5bd6d81ae6ed417311be5" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 384e0718..b3e3ca25 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,11 +7,14 @@ exclude = [".github/"] [workspace] members = [ - "bin/bridge", + "bin/bridge", "crates/engine", + "crates/l1", "crates/node", "crates/network", - "crates/scroll-wire" + "crates/primitives", + "crates/scroll-wire", + "crates/watcher", ] resolver = "2" @@ -102,55 +105,75 @@ redundant_pub_crate = "allow" significant_drop_in_scrutinee = "allow" significant_drop_tightening = "allow" too_long_first_doc_paragraph = "allow" +large_enum_variant = "allow" [workspace.dependencies] # alloy alloy-chains = { version = "0.1.32", default-features = false } -alloy-eips = { version = "0.9.2", default-features = false } -alloy-primitives = { version = "0.8.15", default-features = false } -alloy-rpc-types-engine = { version = "0.11.0", default-features = false } +alloy-consensus = { version = "0.12.2", default-features = false } +alloy-eips = { version = "0.12.2", default-features = false } +alloy-json-rpc = { version = "0.12.2", default-features = false } +alloy-network = { version = "0.12.2", default-features = false } +alloy-primitives = { version = "0.8.20", default-features = false } +alloy-provider = { version = "0.12.2", default-features = false } +alloy-rpc-types-engine = { version = "0.12.2", default-features = false } +alloy-rpc-types-eth = { version = "0.12.2", default-features = false } +alloy-sol-types = { version = "0.8.20", default-features = false } +alloy-transport = { version = "0.12.2", default-features = false } # scroll-alloy -scroll-alloy-provider = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } -scroll-alloy-network = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +scroll-alloy-consensus = { git = "https://github.com/scroll-tech/reth.git", default-features = false } +scroll-alloy-provider = { git = "https://github.com/scroll-tech/reth.git", default-features = false } +scroll-alloy-network = { git = "https://github.com/scroll-tech/reth.git", default-features = false } # reth -reth-eth-wire-types = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } -reth-network = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false } -reth-network-api = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false } -reth-network-peers = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false } -reth-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false } -reth-provider = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false } -reth-rpc-api = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false, features = ["client"] } -reth-tasks = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +reth-eth-wire-types = { git = "https://github.com/scroll-tech/reth.git" } +reth-network = { git = "https://github.com/scroll-tech/reth.git", default-features = false } +reth-network-api = { git = "https://github.com/scroll-tech/reth.git", default-features = false } +reth-network-peers = { git = "https://github.com/scroll-tech/reth.git", default-features = false } +reth-primitives = { git = "https://github.com/scroll-tech/reth.git", default-features = false } +reth-provider = { git = "https://github.com/scroll-tech/reth.git", default-features = false } +reth-tasks = { git = "https://github.com/scroll-tech/reth.git" } # reth-scroll -reth-scroll-chainspec = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false } -reth-scroll-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false } -reth-scroll-node = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false } -reth-scroll-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false } +reth-scroll-chainspec = { git = "https://github.com/scroll-tech/reth.git", default-features = false } +reth-scroll-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", default-features = false } +reth-scroll-node = { git = "https://github.com/scroll-tech/reth.git", default-features = false } +reth-scroll-primitives = { git = "https://github.com/scroll-tech/reth.git", default-features = false } # rollup node +rollup-node-manager = { path = "crates/node" } +rollup-node-primitives = { path = "crates/primitives" } +rollup-node-watcher = { path = "crates/watcher" } scroll-engine = { path = "crates/engine" } +scroll-l1 = { path = "crates/l1" } scroll-network = { path = "crates/network" } scroll-wire = { path = "crates/scroll-wire" } -rollup-node-manager = { path = "crates/node" } # misc +arbitrary = { version = "1.4", default-features = false } +async-trait = "0.1" +derive_more = { version = "2.0", default-features = false } eyre = "0.6" futures = { version = "0.3", default-features = false } secp256k1 = { version = "0.29", default-features = false } -serde = { version = "1.0", default-features = false } +thiserror = "2.0" tokio = { version = "1.39", default-features = false } tokio-stream = { version = "0.1", default-features = false } tracing = "0.1.0" [patch.crates-io] -revm = { git = "https://github.com/scroll-tech/revm.git", branch = "scroll-evm-executor/reth/v55" } -revm-primitives = { git = "https://github.com/scroll-tech/revm.git", branch = "scroll-evm-executor/reth/v55" } -revm-interpreter = { git = "https://github.com/scroll-tech/revm.git", branch = "scroll-evm-executor/reth/v55" } - -ff = { git = "https://github.com/scroll-tech/ff", branch = "feat/sp1" } - -alloy-eip2930 = { git = "https://github.com/scroll-tech/alloy-eips", branch = "v0.3.2" } +revm = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-bytecode = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-database = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-state = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-primitives = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-interpreter = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-inspector = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-context = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-context-interface = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-database-interface = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-specification = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +op-revm = { git = "https://github.com/bluealloy/revm", rev = "19a5f3b" } +revm-inspectors = { git = "https://github.com/paradigmxyz/revm-inspectors", rev = "9219073" } diff --git a/Makefile b/Makefile index 3e7330b9..0bcee135 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,16 @@ fmt: cargo +nightly fmt +.PHONY: lint-toml +lint-toml: ensure-dprint + dprint fmt + +ensure-dprint: + @if ! command -v dprint &> /dev/null; then \ + echo "dprint not found. Please install it by running the command `cargo install --locked dprint` or refer to the following link for more information: https://github.com/dprint/dprint" \ + exit 1; \ + fi + .PHONY: clippy clippy: cargo +nightly clippy \ @@ -38,7 +48,7 @@ ensure-zepter: fi .PHONY: lint -lint: fmt clippy udeps codespell zepter +lint: fmt lint-toml clippy udeps codespell zepter .PHONY: test test: diff --git a/bin/bridge/Cargo.toml b/bin/bridge/Cargo.toml index 5d1ebb3b..ee8da682 100644 --- a/bin/bridge/Cargo.toml +++ b/bin/bridge/Cargo.toml @@ -12,30 +12,30 @@ alloy-chains.workspace = true alloy-rpc-types-engine.workspace = true # scroll-alloy -scroll-alloy-consensus = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } -scroll-alloy-network = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } -scroll-alloy-rpc-types-engine= { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +scroll-alloy-consensus.workspace = true +scroll-alloy-rpc-types-engine = { git = "https://github.com/scroll-tech/reth.git" } scroll-alloy-provider.workspace = true # reth -reth-cli-util = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +reth-cli-util = { git = "https://github.com/scroll-tech/reth.git" } +# keep this import as it is needed for correct compilation. +reth-engine-local = { git = "https://github.com/scroll-tech/reth.git", features = ["scroll-alloy-traits"] } reth-eth-wire-types.workspace = true reth-network.workspace = true reth-network-peers.workspace = true -reth-node-api = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", features = ["scroll"] } -reth-node-builder = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", features = ["skip-state-root-validation"] } -reth-node-core = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } -reth-node-types = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +reth-node-api = { git = "https://github.com/scroll-tech/reth.git" } +reth-node-builder = { git = "https://github.com/scroll-tech/reth.git", features = ["skip-state-root-validation"] } +reth-node-core = { git = "https://github.com/scroll-tech/reth.git" } +reth-node-types = { git = "https://github.com/scroll-tech/reth.git" } reth-primitives.workspace = true -reth-provider = { workspace = true, features = ["scroll", "skip-state-root-validation"]} -reth-rpc-api = { workspace = true, features = ["client"] } -reth-rpc-builder = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } -reth-transaction-pool = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +reth-provider = { workspace = true, features = ["skip-state-root-validation"] } +reth-rpc-builder = { git = "https://github.com/scroll-tech/reth.git" } +reth-transaction-pool = { git = "https://github.com/scroll-tech/reth.git" } # scroll reth-scroll-chainspec.workspace = true -reth-scroll-cli = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", features = ["scroll"] } -reth-scroll-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +reth-scroll-cli = { git = "https://github.com/scroll-tech/reth.git" } +reth-scroll-engine-primitives = { git = "https://github.com/scroll-tech/reth.git" } reth-scroll-node = { workspace = true, features = ["skip-state-root-validation"] } reth-scroll-primitives = { workspace = true } scroll-wire.workspace = true @@ -48,58 +48,53 @@ rollup-node-manager.workspace = true # misc clap = { version = "4", features = ["derive", "env"] } eyre.workspace = true -futures.workspace = true -secp256k1 = { workspace = true, features = [ - "global-context", - "recovery", -] } +secp256k1 = { workspace = true, features = ["global-context", "recovery"] } tokio = { workspace = true, features = ["full"] } tracing.workspace = true [dev-dependencies] # alloy -alloy-primitives = { workspace = true, default-features = false, features = [ - "map-foldhash", -] } +alloy-primitives = { workspace = true, default-features = false, features = ["map-foldhash"] } alloy-rpc-types-engine.workspace = true # reth -reth-e2e-test-utils = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } -reth-payload-builder = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } -reth-rpc-server-types = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +reth-e2e-test-utils = { git = "https://github.com/scroll-tech/reth.git" } +reth-payload-builder = { git = "https://github.com/scroll-tech/reth.git" } +reth-rpc-server-types = { git = "https://github.com/scroll-tech/reth.git" } reth-tasks.workspace = true -reth-tracing = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +reth-tracing = { git = "https://github.com/scroll-tech/reth.git" } -# misc +# misc +futures.workspace = true serde_json = { version = "1.0.94", default-features = false, features = ["alloc"] } tokio = { workspace = true, features = ["full"] } [features] test-utils = [ - "reth-network/test-utils", - "reth-node-builder/test-utils", - "reth-primitives/test-utils", - "reth-provider/test-utils", - "reth-transaction-pool/test-utils", - "scroll-engine/test-utils", - "reth-payload-builder/test-utils", - "reth-payload-builder/test-utils" + "reth-network/test-utils", + "reth-node-builder/test-utils", + "reth-primitives/test-utils", + "reth-provider/test-utils", + "reth-transaction-pool/test-utils", + "scroll-engine/test-utils", + "reth-payload-builder/test-utils", + "reth-payload-builder/test-utils", ] serde = [ - "alloy-primitives/serde", - "alloy-rpc-types-engine/serde", - "reth-eth-wire-types/serde", - "reth-network/serde", - "reth-provider/serde", - "reth-scroll-primitives/serde", - "scroll-alloy-consensus/serde", - "scroll-alloy-rpc-types-engine/serde", - "scroll-engine/serde", - "scroll-network/serde", - "scroll-wire/serde", - "secp256k1/serde", - "rollup-node-manager/serde", - "alloy-chains/serde" + "alloy-primitives/serde", + "alloy-rpc-types-engine/serde", + "reth-eth-wire-types/serde", + "reth-network/serde", + "reth-provider/serde", + "reth-scroll-primitives/serde", + "scroll-alloy-consensus/serde", + "scroll-alloy-rpc-types-engine/serde", + "scroll-engine/serde", + "scroll-network/serde", + "scroll-wire/serde", + "secp256k1/serde", + "rollup-node-manager/serde", + "alloy-chains/serde", ] [[bin]] diff --git a/crates/engine/Cargo.toml b/crates/engine/Cargo.toml index e78a4945..e05e09f6 100644 --- a/crates/engine/Cargo.toml +++ b/crates/engine/Cargo.toml @@ -19,52 +19,52 @@ alloy-rpc-types-engine.workspace = true # scroll-alloy scroll-alloy-network.workspace = true scroll-alloy-provider.workspace = true -scroll-alloy-rpc-types-engine = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +scroll-alloy-rpc-types-engine = { git = "https://github.com/scroll-tech/reth.git" } # reth -reth-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false, features = ["scroll"] } -reth-network-peers.workspace = true -reth-payload-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +reth-payload-primitives = { git = "https://github.com/scroll-tech/reth.git" } reth-primitives = { workspace = true } # reth-scroll reth-scroll-chainspec.workspace = true -reth-scroll-primitives = { workspace = true, features = ["scroll"] } -reth-scroll-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false, features = ["scroll"] } +reth-scroll-primitives.workspace = true +reth-scroll-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", default-features = false } + +# rollup-node +rollup-node-primitives.workspace = true # misc -async-trait = "0.1.68" +async-trait.workspace = true eyre.workspace = true -serde = { workspace = true, features = ["derive"] } tokio.workspace = true tracing.workspace = true # test-utils -arbitrary = { version = "1.3", optional = true } +arbitrary = { workspace = true, optional = true } [dev-dependencies] -arbitrary = "1.3" -reth-testing-utils = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +arbitrary.workspace = true +reth-testing-utils = { git = "https://github.com/scroll-tech/reth.git" } [features] arbitrary = [ - "alloy-primitives/arbitrary", - "reth-primitives/arbitrary", - "alloy-eips/arbitrary", - "reth-scroll-primitives/arbitrary", - "scroll-alloy-rpc-types-engine/arbitrary", - "alloy-chains/arbitrary" + "alloy-primitives/arbitrary", + "reth-primitives/arbitrary", + "alloy-eips/arbitrary", + "reth-scroll-primitives/arbitrary", + "scroll-alloy-rpc-types-engine/arbitrary", + "alloy-chains/arbitrary", ] test-utils = [ - "arbitrary", - "dep:arbitrary", - "reth-primitives/test-utils" + "arbitrary", + "dep:arbitrary", + "reth-primitives/test-utils", ] serde = [ - "alloy-eips/serde", - "alloy-primitives/serde", - "alloy-rpc-types-engine/serde", - "reth-scroll-primitives/serde", - "scroll-alloy-rpc-types-engine/serde", - "alloy-chains/serde" + "alloy-eips/serde", + "alloy-primitives/serde", + "alloy-rpc-types-engine/serde", + "reth-scroll-primitives/serde", + "scroll-alloy-rpc-types-engine/serde", + "alloy-chains/serde", ] diff --git a/crates/engine/src/engine.rs b/crates/engine/src/engine.rs index a2b3ff1f..d13dba5a 100644 --- a/crates/engine/src/engine.rs +++ b/crates/engine/src/engine.rs @@ -1,7 +1,6 @@ -use crate::{block_info::BlockInfo, payload::matching_payloads}; - use super::error::EngineDriverError; -use crate::ExecutionPayloadProvider; +use crate::{payload::matching_payloads, ExecutionPayloadProvider}; + use alloy_rpc_types_engine::{ ExecutionPayload, ExecutionPayloadV1, ForkchoiceState, ForkchoiceUpdated, PayloadId, PayloadStatusEnum, @@ -9,6 +8,7 @@ use alloy_rpc_types_engine::{ use eyre::Result; use reth_payload_primitives::PayloadTypes; use reth_scroll_engine_primitives::ScrollEngineTypes; +use rollup_node_primitives::BlockInfo; use scroll_alloy_provider::ScrollEngineApi; use tokio::time::Duration; @@ -63,12 +63,13 @@ where /// Handles an execution payload: /// - Sends the payload to the EL via `engine_newPayloadV1`. /// - Sets the current fork choice for the EL via `engine_forkchoiceUpdatedV1`. - #[instrument(skip_all, level = "trace", - fields( - payload_block_hash = %execution_payload.block_hash(), - payload_block_num = %execution_payload.block_number(), - fcs = ?fcs - ))] + #[instrument(skip_all, level = "trace", + fields( + payload_block_hash = %execution_payload.block_hash(), + payload_block_num = %execution_payload.block_number(), + fcs = ?fcs + ) + )] pub async fn handle_execution_payload( &self, execution_payload: ExecutionPayload, @@ -101,7 +102,13 @@ where /// - If the execution payload matches the attributes: /// - Sets the current fork choice for the EL via `engine_forkchoiceUpdatedV1`, advancing /// the safe head by one. - #[instrument(skip_all, level = "trace", fields(safe_block_info = ?safe_block_info, fcs = ?fcs, payload_attributes = ?payload_attributes))] + #[instrument(skip_all, level = "trace", + fields( + safe_block_info = ?safe_block_info, + fcs = ?fcs, + payload_attributes = ?payload_attributes + ) + )] pub async fn handle_payload_attributes( &mut self, safe_block_info: BlockInfo, diff --git a/crates/engine/src/fcs.rs b/crates/engine/src/fcs.rs index 90133267..6e8bf3d0 100644 --- a/crates/engine/src/fcs.rs +++ b/crates/engine/src/fcs.rs @@ -1,7 +1,7 @@ -use crate::BlockInfo; use alloy_chains::NamedChain; use alloy_rpc_types_engine::ForkchoiceState as AlloyForkchoiceState; use reth_scroll_chainspec::{SCROLL_MAINNET_GENESIS_HASH, SCROLL_SEPOLIA_GENESIS_HASH}; +use rollup_node_primitives::BlockInfo; /// The fork choice state. /// diff --git a/crates/engine/src/lib.rs b/crates/engine/src/lib.rs index e2f9fcc4..1fd6ceeb 100644 --- a/crates/engine/src/lib.rs +++ b/crates/engine/src/lib.rs @@ -1,9 +1,6 @@ //! Engine Driver for the Scroll Rollup Node. The [`EngineDriver`] exposes the main interface for //! the Rollup Node to the Engine API. -mod block_info; -pub use block_info::BlockInfo; - mod engine; pub use engine::EngineDriver; diff --git a/crates/l1/Cargo.toml b/crates/l1/Cargo.toml new file mode 100644 index 00000000..31758e41 --- /dev/null +++ b/crates/l1/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "scroll-l1" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +exclude.workspace = true + +[lints] +workspace = true + +[dependencies] +# alloy +alloy-primitives.workspace = true +alloy-sol-types.workspace = true + +# scroll alloy +scroll-alloy-consensus.workspace = true + +# misc +arbitrary = { workspace = true, optional = true, features = ["derive"] } +derive_more.workspace = true + +[features] +default = ["std"] +std = ["alloy-primitives/std", "scroll-alloy-consensus/std", "alloy-sol-types/std", "derive_more/std"] +test-utils = ["std", "dep:arbitrary", "alloy-primitives/arbitrary"] diff --git a/crates/l1/src/abi/calls.rs b/crates/l1/src/abi/calls.rs new file mode 100644 index 00000000..e3423205 --- /dev/null +++ b/crates/l1/src/abi/calls.rs @@ -0,0 +1,84 @@ +use std::vec::Vec; + +use alloy_primitives::Bytes; +use alloy_sol_types::{sol, SolCall}; + +sol! { + #[cfg_attr(feature = "test-utils", derive(arbitrary::Arbitrary))] + #[derive(Debug)] + function commitBatch( + uint8 version, + bytes calldata parentBatchHeader, + bytes[] memory chunks, + bytes calldata skippedL1MessageBitmap + ) external; + + #[cfg_attr(feature = "test-utils", derive(arbitrary::Arbitrary))] + #[derive(Debug)] + function commitBatchWithBlobProof( + uint8 version, + bytes calldata parentBatchHeader, + bytes[] memory chunks, + bytes calldata skippedL1MessageBitmap, + bytes calldata blobDataProof + ) external; +} + +/// A call to commit a batch on the L1 Scroll Rollup contract. +#[derive(Debug, derive_more::From)] +pub enum CommitBatchCall { + /// A plain call to commit the batch. + CommitBatch(commitBatchCall), + /// A call to commit the batch with a blob proof. + CommitBatchWithBlobProof(commitBatchWithBlobProofCall), +} + +impl CommitBatchCall { + /// Tries to decode the calldata into a [`CommitBatchCall`]. + pub fn try_decode(calldata: &Bytes) -> Option { + match calldata.get(0..4).map(|sel| sel.try_into().expect("correct slice length")) { + Some(commitBatchCall::SELECTOR) => { + commitBatchCall::abi_decode(calldata, true).map(Into::into).ok() + } + Some(commitBatchWithBlobProofCall::SELECTOR) => { + commitBatchWithBlobProofCall::abi_decode(calldata, true).map(Into::into).ok() + } + Some(_) | None => None, + } + } + + /// Returns the version for the commit call. + pub const fn version(&self) -> u8 { + match self { + Self::CommitBatch(b) => b.version, + Self::CommitBatchWithBlobProof(b) => b.version, + } + } + + /// Returns the parent batch header for the commit call. + pub fn parent_batch_header(&self) -> Vec { + let header = match self { + Self::CommitBatch(b) => &b.parentBatchHeader, + Self::CommitBatchWithBlobProof(b) => &b.parentBatchHeader, + }; + header.to_vec() + } + + /// Returns the chunks for the commit call if any, returns None otherwise. + pub fn chunks(&self) -> Option>> { + let chunks = match self { + Self::CommitBatch(b) => &b.chunks, + Self::CommitBatchWithBlobProof(b) => &b.chunks, + }; + Some(chunks.iter().map(|c| c.to_vec()).collect()) + } + + /// Returns the skipped L1 message bitmap for the commit call if any, returns None otherwise. + pub fn skipped_l1_message_bitmap(&self) -> Option> { + let bitmap = match self { + Self::CommitBatch(b) => &b.skippedL1MessageBitmap, + Self::CommitBatchWithBlobProof(b) => &b.skippedL1MessageBitmap, + }; + Some(bitmap.to_vec()) + } +} diff --git a/crates/l1/src/abi/logs.rs b/crates/l1/src/abi/logs.rs new file mode 100644 index 00000000..4befab5b --- /dev/null +++ b/crates/l1/src/abi/logs.rs @@ -0,0 +1,42 @@ +use alloy_primitives::Log; +use alloy_sol_types::{sol, SolEvent}; +use scroll_alloy_consensus::TxL1Message; + +sol! { + #[cfg_attr(feature = "test-utils", derive(arbitrary::Arbitrary))] + event QueueTransaction( + address indexed sender, + address indexed target, + uint256 value, + uint64 queueIndex, + uint256 gasLimit, + bytes data + ); + + #[cfg_attr(feature = "test-utils", derive(arbitrary::Arbitrary))] + #[derive(Debug)] + event CommitBatch(uint256 indexed batchIndex, bytes32 indexed batchHash); + + #[cfg_attr(feature = "test-utils", derive(arbitrary::Arbitrary))] + #[derive(Debug)] + event FinalizeBatch(uint256 indexed batchIndex, bytes32 indexed batchHash, bytes32 stateRoot, bytes32 withdrawRoot); + +} + +/// Tries to decode the provided log into the type T. +pub fn try_decode_log(log: &Log) -> Option> { + T::decode_log(log, true).ok() +} + +impl From for TxL1Message { + fn from(value: QueueTransaction) -> Self { + Self { + queue_index: value.queueIndex, + gas_limit: value.gasLimit.saturating_to(), + to: value.target, + value: value.value, + sender: value.sender, + input: value.data, + } + } +} diff --git a/crates/l1/src/abi/mod.rs b/crates/l1/src/abi/mod.rs new file mode 100644 index 00000000..c2d7bee6 --- /dev/null +++ b/crates/l1/src/abi/mod.rs @@ -0,0 +1,5 @@ +/// Calls related abi. +pub mod calls; + +/// Logs related abi. +pub mod logs; diff --git a/crates/l1/src/lib.rs b/crates/l1/src/lib.rs new file mode 100644 index 00000000..3cc80f99 --- /dev/null +++ b/crates/l1/src/lib.rs @@ -0,0 +1,9 @@ +//! All L1 related primitives. + +#![cfg_attr(not(feature = "std"), no_std)] + +#[cfg(not(feature = "std"))] +extern crate alloc as std; + +/// L1 contracts Abi. +pub mod abi; diff --git a/crates/network/Cargo.toml b/crates/network/Cargo.toml index f0931ff8..cd4ac226 100644 --- a/crates/network/Cargo.toml +++ b/crates/network/Cargo.toml @@ -8,24 +8,19 @@ exclude.workspace = true [dependencies] # alloy -alloy-primitives = { workspace = true, features = [ - "map-foldhash", -] } +alloy-primitives = { workspace = true, features = ["map-foldhash"] } # reth -reth-discv5 = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } reth-eth-wire-types.workspace = true reth-network.workspace = true reth-network-api.workspace = true -reth-network-types = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +reth-network-types = { git = "https://github.com/scroll-tech/reth.git" } reth-network-peers.workspace = true -reth-primitives.workspace = true -reth-storage-api = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } -reth-tasks.workspace = true +reth-storage-api = { git = "https://github.com/scroll-tech/reth.git" } # scroll reth-scroll-chainspec.workspace = true -reth-scroll-node = { workspace = true, features = ["scroll", "skip-state-root-validation"] } +reth-scroll-node = { workspace = true, features = ["skip-state-root-validation"] } reth-scroll-primitives.workspace = true scroll-wire.workspace = true @@ -39,13 +34,13 @@ tracing.workspace = true [features] serde = [ - "alloy-primitives/serde", - "parking_lot/serde", - "reth-eth-wire-types/serde", - "reth-network/serde", - "reth-network-api/serde", - "reth-network-types/serde", - "reth-scroll-primitives/serde", - "scroll-wire/serde", - "secp256k1/serde" + "alloy-primitives/serde", + "parking_lot/serde", + "reth-eth-wire-types/serde", + "reth-network/serde", + "reth-network-api/serde", + "reth-network-types/serde", + "reth-scroll-primitives/serde", + "scroll-wire/serde", + "secp256k1/serde", ] diff --git a/crates/network/src/handle.rs b/crates/network/src/handle.rs index ddd79607..5c159e6f 100644 --- a/crates/network/src/handle.rs +++ b/crates/network/src/handle.rs @@ -1,8 +1,8 @@ -use reth_network::{NetworkHandle as RethNetworkHandle, PeersInfo}; +use reth_network::{config::SecretKey, NetworkHandle as RethNetworkHandle, PeersInfo}; use reth_network_peers::PeerId; use reth_scroll_node::ScrollNetworkPrimitives; use reth_scroll_primitives::ScrollBlock; -use secp256k1::{ecdsa::Signature, SecretKey}; +use secp256k1::ecdsa::Signature; use std::sync::Arc; use tokio::sync::{mpsc::UnboundedSender, oneshot}; diff --git a/crates/node/Cargo.toml b/crates/node/Cargo.toml index 290f8c30..e7d13797 100644 --- a/crates/node/Cargo.toml +++ b/crates/node/Cargo.toml @@ -16,14 +16,9 @@ scroll-alloy-network.workspace = true scroll-alloy-provider.workspace = true # reth -reth-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false, features = ["scroll"] } -reth-network-peers.workspace = true -reth-rpc-api.workspace = true -reth-tasks.workspace = true -reth-tokio-util = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api", default-features = false } +reth-tokio-util = { git = "https://github.com/scroll-tech/reth.git", default-features = false } # reth-scroll -reth-scroll-engine-primitives.workspace = true reth-scroll-primitives.workspace = true # scroll @@ -31,6 +26,9 @@ scroll-engine.workspace = true scroll-network.workspace = true scroll-wire.workspace = true +# rollup node +rollup-node-primitives.workspace = true + # misc futures.workspace = true secp256k1 = { workspace = true, features = ["global-context", "rand-std", "recovery"] } @@ -43,11 +41,11 @@ workspace = true [features] serde = [ - "alloy-rpc-types-engine/serde", - "reth-scroll-primitives/serde", - "scroll-engine/serde", - "scroll-network/serde", - "scroll-wire/serde", - "secp256k1/serde", - "alloy-eips/serde" + "alloy-rpc-types-engine/serde", + "reth-scroll-primitives/serde", + "scroll-engine/serde", + "scroll-network/serde", + "scroll-wire/serde", + "secp256k1/serde", + "alloy-eips/serde", ] diff --git a/crates/node/src/lib.rs b/crates/node/src/lib.rs index 8375ac32..85ee1dba 100644 --- a/crates/node/src/lib.rs +++ b/crates/node/src/lib.rs @@ -8,9 +8,7 @@ use futures::{stream::FuturesOrdered, StreamExt}; use reth_tokio_util::{EventSender, EventStream}; use scroll_alloy_network::Scroll as ScrollNetwork; use scroll_alloy_provider::ScrollEngineApi; -use scroll_engine::{ - BlockInfo, EngineDriver, EngineDriverError, ExecutionPayloadProvider, ForkchoiceState, -}; +use scroll_engine::{EngineDriver, EngineDriverError, ExecutionPayloadProvider, ForkchoiceState}; use scroll_network::{ BlockImportError, BlockImportOutcome, BlockValidation, BlockValidationError, NetworkManager, NetworkManagerEvent, NewBlockWithPeer, @@ -32,6 +30,7 @@ pub use event::RollupEvent; mod consensus; use consensus::Consensus; pub use consensus::PoAConsensus; +use rollup_node_primitives::BlockInfo; /// The size of the event channel. const EVENT_CHANNEL_SIZE: usize = 100; diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml new file mode 100644 index 00000000..6b49602d --- /dev/null +++ b/crates/primitives/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "rollup-node-primitives" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +exclude.workspace = true + +[lints] +workspace = true + +[dependencies] +# alloy +alloy-primitives.workspace = true +alloy-rpc-types-engine.workspace = true + +# scroll +scroll-alloy-consensus.workspace = true + +# misc +derive_more = { workspace = true, features = ["from"] } + +[features] +default = ["std"] +std = ["alloy-primitives/std", "alloy-rpc-types-engine/std", "scroll-alloy-consensus/std", "derive_more/std"] diff --git a/crates/primitives/src/batch.rs b/crates/primitives/src/batch.rs new file mode 100644 index 00000000..c358236e --- /dev/null +++ b/crates/primitives/src/batch.rs @@ -0,0 +1,150 @@ +use std::vec::Vec; + +use alloy_primitives::{BlockNumber, B256}; + +/// The input data for a batch. +/// +/// This is used as input for the derivation pipeline. All data remains in its raw serialized form. +/// The data is then deserialized, enriched and processed in the derivation pipeline. +#[derive(Debug, PartialEq, Eq, derive_more::From)] +pub enum BatchInput { + /// The input data for a batch. + BatchInputDataV1(BatchInputV1), + /// The input data for a batch including the L1 blob. + BatchInputDataV2(BatchInputV2), +} + +/// The input data for a batch. +#[derive(Debug, PartialEq, Eq)] +pub struct BatchInputV1 { + /// The version of the batch input data. + pub version: u8, + /// The index of the batch. + pub batch_index: u64, + /// The batch hash. + pub batch_hash: B256, + /// The L1 block number at which the batch was committed. + pub block_number: u64, + /// The parent batch header. + pub parent_batch_header: Vec, + /// The chunks in the batch. + pub chunks: Vec>, + /// The skipped L1 message bitmap. + pub skipped_l1_message_bitmap: Vec, +} + +/// The input data for a batch including the L1 blob hash. +#[derive(Debug, PartialEq, Eq)] +pub struct BatchInputV2 { + /// The base input data for the batch. + pub batch_input_data: BatchInputV1, + /// The L1 blob hash associated with the batch. + pub blob_hash: B256, +} + +/// A builder for the batch input. Determines the batch version based on the passed input. +#[derive(Debug)] +pub struct BatchInputBuilder { + /// The version of the batch input data. + version: u8, + /// The index of the batch. + batch_index: u64, + /// The batch hash. + batch_hash: B256, + /// The L1 block number at which the batch was committed. + block_number: u64, + /// The parent batch header. + parent_batch_header: Vec, + /// The chunks in the batch. + chunks: Option>>, + /// The skipped L1 message bitmap. + skipped_l1_message_bitmap: Option>, + /// The L1 blob hashes for the batch + blob_hashes: Option>, +} + +impl BatchInputBuilder { + /// Returns a new instance of the builder. + pub const fn new( + version: u8, + index: u64, + hash: B256, + block_number: BlockNumber, + parent_batch_header: Vec, + ) -> Self { + Self { + version, + batch_index: index, + batch_hash: hash, + block_number, + parent_batch_header, + chunks: None, + skipped_l1_message_bitmap: None, + blob_hashes: None, + } + } + + /// Adds chunks to the builder. + pub fn with_chunks(mut self, chunks: Option>>) -> Self { + self.chunks = chunks; + self + } + + /// Adds skipped l1 message bitmap to the builder. + pub fn with_skipped_l1_message_bitmap( + mut self, + skipped_l1_message_bitmap: Option>, + ) -> Self { + self.skipped_l1_message_bitmap = skipped_l1_message_bitmap; + self + } + + /// Adds a blob hash to the builder. + pub fn with_blob_hashes(mut self, blob_hashes: Option>) -> Self { + self.blob_hashes = blob_hashes; + self + } + + /// Build the [`BatchInput`], returning [`None`] if fields haven't been correctly set. + pub fn try_build(self) -> Option { + // handle fields required for all batch inputs. + let version = self.version; + let batch_index = self.batch_index; + let batch_hash = self.batch_hash; + let block_number = self.block_number; + let parent_batch_header = self.parent_batch_header; + + match (self.chunks, self.skipped_l1_message_bitmap, self.blob_hashes) { + (Some(chunks), Some(skipped_l1_message_bitmap), None) => Some( + BatchInputV1 { + version, + batch_index, + batch_hash, + block_number, + parent_batch_header, + chunks, + skipped_l1_message_bitmap, + } + .into(), + ), + (Some(chunks), Some(skipped_l1_message_bitmap), Some(blob)) => { + let batch_input_data = BatchInputV1 { + version, + batch_index, + batch_hash, + block_number, + parent_batch_header, + chunks, + skipped_l1_message_bitmap, + }; + let blob_hash = blob.first().copied()?; + Some(BatchInputV2 { batch_input_data, blob_hash }.into()) + } + (None, None, Some(_blobs)) => { + // TODO(greg): for now None but this will be used in Euclid. + None + } + _ => None, + } + } +} diff --git a/crates/engine/src/block_info.rs b/crates/primitives/src/block.rs similarity index 72% rename from crates/engine/src/block_info.rs rename to crates/primitives/src/block.rs index f4e72ea1..66d14bc6 100644 --- a/crates/engine/src/block_info.rs +++ b/crates/primitives/src/block.rs @@ -2,7 +2,7 @@ use alloy_primitives::B256; use alloy_rpc_types_engine::ExecutionPayload; /// Information about a block. -#[derive(Debug, Copy, Clone)] +#[derive(Debug, Default, Copy, Clone)] pub struct BlockInfo { /// The block number. pub number: u64, @@ -10,6 +10,13 @@ pub struct BlockInfo { pub hash: B256, } +impl BlockInfo { + /// Returns a new instance of [`BlockInfo`]. + pub const fn new(number: u64, hash: B256) -> Self { + Self { number, hash } + } +} + impl From for BlockInfo { fn from(value: ExecutionPayload) -> Self { (&value).into() diff --git a/crates/primitives/src/bounded_vec.rs b/crates/primitives/src/bounded_vec.rs new file mode 100644 index 00000000..a2f15434 --- /dev/null +++ b/crates/primitives/src/bounded_vec.rs @@ -0,0 +1,102 @@ +//! A bounded vector implementation. + +use core::ops::{Deref, RangeBounds}; +use std::{ + collections::{vec_deque::Drain, VecDeque}, + vec::Vec, +}; + +/// A bounded vec implementation using [`VecDeque`]. The structure will overwrite the oldest data +/// that was pushed in when it reaches capacity. +#[derive(Debug, Clone, Default, PartialEq, Eq)] +pub struct BoundedVec { + data: VecDeque, +} + +impl BoundedVec { + /// Returns a new instance of the ring buffer with the provided capacity. + pub fn new(capacity: usize) -> Self { + Self { data: VecDeque::with_capacity(capacity) } + } + + /// Pushes a value at the back of the buffer. If the buffer is full, + pub fn push(&mut self, elem: T) { + if self.is_full() { + self.data.pop_front(); + } + + self.data.push_back(elem) + } + + /// Pops the last element from the structure and returns it if any. + pub fn pop(&mut self) -> Option { + self.data.pop_back() + } + + /// Returns the last element in the vector, if any. + pub fn last(&self) -> Option<&T> { + self.data.back() + } + + /// Clears the structure by removing all the elements. + pub fn clear(&mut self) { + self.data.clear() + } + + /// Drains the structure by removing the provided range of elements. + pub fn drain(&mut self, range: R) -> Drain<'_, T> + where + R: RangeBounds, + { + self.data.drain(range) + } + + #[inline] + fn is_full(&self) -> bool { + self.data.len() == self.data.capacity() + } +} + +impl Extend for BoundedVec { + fn extend>(&mut self, iter: I) { + let iter = iter.into_iter(); + + // if size hint returns an upper bound, skip values until whole iterator can fit in the + // bounded vec. + let iter = if let (_, Some(upper_bound)) = iter.size_hint() { + iter.skip(upper_bound.saturating_sub(self.data.capacity())) + } else { + #[allow(clippy::iter_skip_zero)] + iter.skip(0) + }; + + for elem in iter { + self.push(elem) + } + } +} + +impl From> for BoundedVec { + fn from(value: Vec) -> Self { + // the final bounded vec will have twice the capacity as the vec. + let mut bounded = Self::new(0); + let capacity = value.capacity(); + bounded.data = value.into(); + bounded.data.reserve_exact(capacity); + bounded + } +} + +impl PartialEq> for BoundedVec { + fn eq(&self, other: &Vec) -> bool { + self.data == other.as_slice() + } +} + +impl Deref for BoundedVec { + type Target = VecDeque; + + fn deref(&self) -> &Self::Target { + &self.data + } +} diff --git a/crates/primitives/src/lib.rs b/crates/primitives/src/lib.rs new file mode 100644 index 00000000..a28217ad --- /dev/null +++ b/crates/primitives/src/lib.rs @@ -0,0 +1,17 @@ +//! Primitive types for the Rollup Node. + +#![cfg_attr(not(feature = "std"), no_std)] +#[cfg(not(feature = "std"))] +extern crate alloc as std; + +pub use block::BlockInfo; +mod block; + +pub use batch::{BatchInput, BatchInputBuilder, BatchInputV1, BatchInputV2}; +mod batch; + +pub use bounded_vec::BoundedVec; +mod bounded_vec; + +pub use transaction::L1MessageWithBlockNumber; +mod transaction; diff --git a/crates/primitives/src/transaction.rs b/crates/primitives/src/transaction.rs new file mode 100644 index 00000000..9a0c2cef --- /dev/null +++ b/crates/primitives/src/transaction.rs @@ -0,0 +1,17 @@ +use scroll_alloy_consensus::TxL1Message; + +/// A L1 message that is part of the L1 message queue. +#[derive(Debug, PartialEq, Eq)] +pub struct L1MessageWithBlockNumber { + /// The L1 block number at which the L1 message was generated. + pub block_number: u64, + /// The L1 transaction. + pub transaction: TxL1Message, +} + +impl L1MessageWithBlockNumber { + /// Returns a new [`L1MessageWithBlockNumber`]. + pub const fn new(block_number: u64, transaction: TxL1Message) -> Self { + Self { block_number, transaction } + } +} diff --git a/crates/scroll-wire/Cargo.toml b/crates/scroll-wire/Cargo.toml index 494cd7ae..1d2a1d90 100644 --- a/crates/scroll-wire/Cargo.toml +++ b/crates/scroll-wire/Cargo.toml @@ -11,13 +11,11 @@ workspace = true [dependencies] # alloy -alloy-primitives = { workspace = true, features = [ - "map-foldhash", -] } +alloy-primitives = { workspace = true, features = ["map-foldhash"] } alloy-rlp = { version = "0.3.10", default-features = false } # reth -reth-eth-wire = { git = "https://github.com/scroll-tech/reth.git", branch = "feat/add-deref-blanket-engine-api" } +reth-eth-wire = { git = "https://github.com/scroll-tech/reth.git" } reth-network.workspace = true reth-network-api.workspace = true reth-primitives.workspace = true @@ -27,20 +25,17 @@ reth-scroll-primitives = { workspace = true, features = ["serde"] } # misc futures.workspace = true -secp256k1 = { workspace = true, features = [ - "global-context", - "recovery", -] } +secp256k1 = { workspace = true, features = ["global-context", "recovery"] } tokio = { workspace = true, features = ["full"] } tokio-stream.workspace = true tracing.workspace = true [features] serde = [ - "alloy-primitives/serde", - "reth-eth-wire/serde", - "reth-network/serde", - "reth-network-api/serde", - "reth-scroll-primitives/serde", - "secp256k1/serde" + "alloy-primitives/serde", + "reth-eth-wire/serde", + "reth-network/serde", + "reth-network-api/serde", + "reth-scroll-primitives/serde", + "secp256k1/serde", ] diff --git a/crates/watcher/Cargo.toml b/crates/watcher/Cargo.toml new file mode 100644 index 00000000..af886574 --- /dev/null +++ b/crates/watcher/Cargo.toml @@ -0,0 +1,60 @@ +[package] +name = "rollup-node-watcher" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +exclude.workspace = true + +[lints] +workspace = true + +[dependencies] +# alloy +alloy-consensus.workspace = true +alloy-eips = { workspace = true, optional = true } +alloy-json-rpc.workspace = true +alloy-network.workspace = true +alloy-primitives.workspace = true +alloy-provider.workspace = true +alloy-rpc-types-eth.workspace = true +alloy-sol-types.workspace = true +alloy-transport.workspace = true + +# rollup +rollup-node-primitives.workspace = true +scroll-l1.workspace = true + +# scroll +scroll-alloy-consensus.workspace = true + +# misc +arbitrary = { workspace = true, optional = true } +async-trait.workspace = true +derive_more = { workspace = true, features = ["from"] } +rand = { version = "0.9", optional = true } +thiserror.workspace = true +tokio = { workspace = true, features = ["full"] } +tracing.workspace = true + +[dev-dependencies] +alloy-consensus = { workspace = true, features = ["arbitrary", "k256"] } +alloy-eips.workspace = true +alloy-rpc-types-eth = { workspace = true, features = ["arbitrary"] } +arbitrary.workspace = true +eyre.workspace = true +rand = "0.9" +scroll-l1 = { workspace = true, features = ["test-utils"] } +tracing-subscriber = "0.3" + +[features] +test-utils = ["arbitrary", "alloy-eips", "rand", "scroll-l1/test-utils"] +arbitrary = [ + "dep:arbitrary", + "alloy-consensus/arbitrary", + "alloy-eips/arbitrary", + "alloy-primitives/arbitrary", + "alloy-rpc-types-eth/arbitrary", + "scroll-alloy-consensus/arbitrary", + "alloy-sol-types/arbitrary", +] diff --git a/crates/watcher/src/constants.rs b/crates/watcher/src/constants.rs new file mode 100644 index 00000000..f444fba6 --- /dev/null +++ b/crates/watcher/src/constants.rs @@ -0,0 +1,20 @@ +use std::sync::LazyLock; + +use alloy_primitives::{address, Address}; +use alloy_rpc_types_eth::Filter; +use alloy_sol_types::SolEvent; +use scroll_l1::abi::logs::{CommitBatch, QueueTransaction}; + +/// The address of the Scroll Rollup contract on the L1. +pub const ROLLUP_CONTRACT_ADDRESS: Address = address!("0xa13BAF47339d63B743e7Da8741db5456DAc1E556"); + +/// The address of the Scroll L1 message queue contract on the L1. +pub const L1_MESSAGE_QUEUE_CONTRACT_ADDRESS: Address = + address!("0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B"); + +/// The [`Filter`] used by the [`crate::L1Watcher`] to index events relevant to the rollup node. +pub static L1_WATCHER_LOG_FILTER: LazyLock = LazyLock::new(|| { + Filter::new() + .address(vec![ROLLUP_CONTRACT_ADDRESS, L1_MESSAGE_QUEUE_CONTRACT_ADDRESS]) + .event_signature(vec![QueueTransaction::SIGNATURE_HASH, CommitBatch::SIGNATURE_HASH]) +}); diff --git a/crates/watcher/src/error.rs b/crates/watcher/src/error.rs new file mode 100644 index 00000000..8b0b94ab --- /dev/null +++ b/crates/watcher/src/error.rs @@ -0,0 +1,42 @@ +use alloy_json_rpc::RpcError; +use alloy_primitives::B256; +use alloy_transport::TransportErrorKind; + +/// A [`Result`] that uses [`L1WatcherError`] as the error type. +pub(crate) type L1WatcherResult = Result; + +/// An error that occurred with the L1 watcher. +#[derive(Debug, thiserror::Error)] +pub enum L1WatcherError { + /// A Provider error at the RPC level. + #[error("execution provider rpc error: {0:?}")] + ProviderRpc(#[from] RpcError), + /// An Ethereum request error. + #[error("failed Ethereum JSON RPC request: {0:?}")] + EthRequest(#[from] EthRequestError), + /// An error related to logs in the L1 watcher. + #[error(transparent)] + Logs(#[from] FilterLogError), +} + +/// An error occurred during a request to the Ethereum JSON RPC provider. +#[derive(Debug, thiserror::Error)] +pub enum EthRequestError { + /// The requested block does not exist. + #[error("unknown block {0}")] + MissingBlock(u64), + /// The requested transaction hash does not exist. + #[error("unknown transaction {0}")] + MissingTransactionHash(B256), +} + +/// An error that occurred when filtering logs. +#[derive(Debug, thiserror::Error)] +pub enum FilterLogError { + /// The log is missing a block number. + #[error("missing block number for log")] + MissingBlockNumber, + /// The log is missing a transaction hash. + #[error("unknown transaction hash for log")] + MissingTransactionHash, +} diff --git a/crates/watcher/src/lib.rs b/crates/watcher/src/lib.rs new file mode 100644 index 00000000..e007d187 --- /dev/null +++ b/crates/watcher/src/lib.rs @@ -0,0 +1,821 @@ +//! L1 watcher for the Scroll Rollup Node. + +pub use constants::{ + L1_MESSAGE_QUEUE_CONTRACT_ADDRESS, L1_WATCHER_LOG_FILTER, ROLLUP_CONTRACT_ADDRESS, +}; +mod constants; + +pub use error::{EthRequestError, FilterLogError, L1WatcherError}; +mod error; + +#[cfg(any(test, feature = "test-utils"))] +/// Common test helpers +pub mod test_utils; + +use std::{sync::Arc, time::Duration}; + +use alloy_network::Ethereum; +use alloy_primitives::{BlockNumber, B256}; +use alloy_provider::{Network, Provider}; +use alloy_rpc_types_eth::{BlockNumberOrTag, Log, TransactionTrait}; +use error::L1WatcherResult; +use rollup_node_primitives::{BatchInput, BatchInputBuilder, BoundedVec, L1MessageWithBlockNumber}; +use scroll_alloy_consensus::TxL1Message; +use scroll_l1::abi::{ + calls::CommitBatchCall, + logs::{try_decode_log, CommitBatch, FinalizeBatch, QueueTransaction}, +}; +use tokio::sync::mpsc; + +/// The block range used to fetch L1 logs. +pub const LOGS_QUERY_BLOCK_RANGE: u64 = 1000; +/// The maximum count of unfinalized blocks we can have in Ethereum. +pub const MAX_UNFINALIZED_BLOCK_COUNT: usize = 96; + +/// The main loop interval when L1 watcher is synced to the tip of the L1. +#[cfg(any(test, feature = "test-utils"))] +pub const SLOW_SYNC_INTERVAL: Duration = Duration::from_millis(1); +/// The main loop interval when L1 watcher is synced to the tip of the L1. +#[cfg(not(any(test, feature = "test-utils")))] +pub const SLOW_SYNC_INTERVAL: Duration = Duration::from_secs(2); + +/// The maximum amount of retained headers for reorg detection. +#[cfg(any(test, feature = "test-utils"))] +pub const HEADER_CAPACITY: usize = 100 * MAX_UNFINALIZED_BLOCK_COUNT; +/// The maximum amount of retained headers for reorg detection. +#[cfg(not(any(test, feature = "test-utils")))] +pub const HEADER_CAPACITY: usize = 2 * MAX_UNFINALIZED_BLOCK_COUNT; + +/// The Ethereum L1 block response. +pub type Block = ::BlockResponse; + +/// The Ethereum L1 header response. +pub type Header = ::HeaderResponse; + +/// The state of the L1. +#[derive(Debug, Default, Clone)] +pub struct L1State { + head: u64, + finalized: u64, +} + +/// The L1 watcher indexes L1 blocks, applying a first level of filtering via log filters. +#[derive(Debug)] +pub struct L1Watcher { + /// The L1 execution node provider. The provider should implement some backoff strategy using + /// [`alloy_transport::layers::RetryBackoffLayer`], some caching strategy using + /// [`alloy_provider::layers::CacheProvider`] and some rate limiting policy with + /// [`alloy_transport::layers::RateLimitRetryPolicy`] in the client/transport in order to avoid + /// excessive queries on the RPC provider. + execution_provider: EP, + /// The buffered unfinalized chain of blocks. Used to detect reorgs of the L1. + unfinalized_blocks: BoundedVec
, + /// The L1 state info relevant to the rollup node. + l1_state: L1State, + /// The latest indexed block. + current_block_number: BlockNumber, + /// The sender part of the channel for [`L1Notification`]. + sender: mpsc::Sender>, +} + +/// The L1 notification type yielded by the [`L1Watcher`]. +#[derive(Debug, PartialEq, Eq)] +pub enum L1Notification { + /// A notification for a reorg of the L1 up to a given block number. + Reorg(u64), + /// A new batch has been committed on the L1 rollup contract. + BatchCommit(BatchInput), + /// A new batch has been finalized on the L1 rollup contract. + BatchFinalization { + /// The hash of the finalized batch. + hash: B256, + /// The block number the batch was finalized at. + block_number: BlockNumber, + }, + /// A new `L1Message` has been added to the L1 message queue. + L1Message(L1MessageWithBlockNumber), + /// A new block has been added to the L1. + NewBlock(u64), + /// A block has been finalized on the L1. + Finalized(u64), +} + +impl L1Watcher +where + EP: Provider + 'static, +{ + /// Spawn a new [`L1Watcher`], starting at `start_block`. The watcher will iterate the L1, + /// returning [`L1Notification`] in the returned channel. + pub async fn spawn( + execution_provider: EP, + start_block: BlockNumber, + ) -> mpsc::Receiver> { + let (tx, rx) = mpsc::channel(LOGS_QUERY_BLOCK_RANGE as usize); + + let fetch_block_number = async |tag: BlockNumberOrTag| { + let block = loop { + match execution_provider.get_block(tag.into()).await { + Err(err) => { + tracing::error!(target: "scroll::watcher", ?err, "failed to fetch {tag} block") + } + Ok(Some(block)) => break block, + _ => unreachable!("should always be a {tag} block"), + } + }; + block.header.number + }; + + let l1_state = L1State { + head: fetch_block_number(BlockNumberOrTag::Latest).await, + finalized: fetch_block_number(BlockNumberOrTag::Finalized).await, + }; + + let watcher = Self { + execution_provider, + unfinalized_blocks: BoundedVec::new(HEADER_CAPACITY), + current_block_number: start_block - 1, + l1_state, + sender: tx, + }; + tokio::spawn(watcher.run()); + + rx + } + + /// Main execution loop for the [`L1Watcher`]. + pub async fn run(mut self) { + loop { + // step the watcher. + let _ = self + .step() + .await + .inspect_err(|err| tracing::error!(target: "scroll::watcher", ?err)); + + // sleep if we are synced. + if self.is_synced() { + tokio::time::sleep(SLOW_SYNC_INTERVAL).await; + } + } + } + + /// A step of work for the [`L1Watcher`]. + pub async fn step(&mut self) -> L1WatcherResult<()> { + // handle the finalized block. + let finalized = self.finalized_block().await?; + self.handle_finalized_block(&finalized.header).await; + + // handle the latest block. + let latest = self.latest_block().await?; + self.handle_latest_block(&finalized.header, &latest.header).await?; + + // index the next range of blocks. + let logs = self.next_filtered_logs().await?; + + // handle all events. + self.handle_l1_messages(&logs).await?; + self.handle_batch_commits(&logs).await?; + self.handle_batch_finalization(&logs).await?; + + // update the latest block the l1 watcher has indexed. + self.update_current_block(&latest); + + Ok(()) + } + + /// Handle the finalized block: + /// - Update state and notify channel about finalization. + /// - Drain finalized blocks from state. + #[tracing::instrument( + target = "scroll::watcher", + skip_all, + fields(curr_finalized = ?self.l1_state.finalized, new_finalized = ?finalized.number) + )] + async fn handle_finalized_block(&mut self, finalized: &Header) { + // update the state and notify on channel. + if self.l1_state.finalized < finalized.number { + self.l1_state.finalized = finalized.number; + self.notify(L1Notification::Finalized(finalized.number)).await; + } + + // shortcircuit. + if self.unfinalized_blocks.is_empty() { + tracing::trace!(target: "scroll::watcher", "no unfinalized blocks"); + return + } + + let tail_block = self.unfinalized_blocks.last().expect("tail exists"); + if tail_block.number < finalized.number { + // clear, the finalized block is past the tail. + tracing::trace!(target: "scroll::watcher", tail = ?tail_block.number, finalized = ?finalized.number, "draining all unfinalized blocks"); + self.unfinalized_blocks.clear(); + return + } + + let finalized_block_position = + self.unfinalized_blocks.iter().position(|header| header.hash == finalized.hash); + + // drain all blocks up to and including the finalized block. + if let Some(position) = finalized_block_position { + tracing::trace!(target: "scroll::watcher", "draining range {:?}", 0..=position); + self.unfinalized_blocks.drain(0..=position); + } + } + + /// Handle the latest block: + /// - Skip if latest matches last unfinalized block. + /// - Add to unfinalized blocks if it extends the chain. + /// - Fetch chain of unfinalized blocks and emit potential reorg otherwise. + /// - Finally, update state and notify channel about latest block. + #[tracing::instrument(target = "scroll::watcher", skip_all, fields(latest = ?latest.number))] + async fn handle_latest_block( + &mut self, + finalized: &Header, + latest: &Header, + ) -> L1WatcherResult<()> { + let tail = self.unfinalized_blocks.last(); + + if tail.is_some_and(|h| h.hash == latest.hash) { + return Ok(()) + } else if tail.is_some_and(|h| h.hash == latest.parent_hash) { + // latest block extends the tip. + tracing::trace!(target: "scroll::watcher", number = ?latest.number, hash = ?latest.hash, "block extends chain"); + self.unfinalized_blocks.push(latest.clone()); + } else { + // chain reorged or need to backfill. + tracing::trace!(target: "scroll::watcher", number = ?latest.number, hash = ?latest.hash, "gap or reorg"); + let chain = self.fetch_unfinalized_chain(finalized, latest).await?; + + let reorg_block_number = self + .unfinalized_blocks + .iter() + .zip(chain.iter()) + .find(|(old, new)| old.hash != new.hash) + .map(|(old, _)| old.number - 1); + + // set the unfinalized chain. + self.unfinalized_blocks = chain; + + if let Some(number) = reorg_block_number { + tracing::debug!(?number, "reorg"); + // reset the current block number to the reorged block number if + // we have indexed passed the reorg. + if number < self.current_block_number { + self.current_block_number = number; + } + + // send the reorg block number on the channel. + self.notify(L1Notification::Reorg(number)).await; + } + } + + // Update the state and notify on the channel. + tracing::trace!(target: "scroll::watcher", number = ?latest.number, hash = ?latest.hash, "new block"); + self.l1_state.head = latest.number; + self.notify(L1Notification::NewBlock(latest.number)).await; + + Ok(()) + } + + /// Filters the logs into L1 messages and sends them over the channel. + #[tracing::instrument(skip_all)] + async fn handle_l1_messages(&self, logs: &[Log]) -> L1WatcherResult<()> { + let l1_messages = + logs.iter().map(|l| (&l.inner, l.block_number)).filter_map(|(log, bn)| { + try_decode_log::(log) + .map(|log| (Into::::into(log.data), bn)) + }); + + for (msg, bn) in l1_messages { + let block_number = bn.ok_or(FilterLogError::MissingBlockNumber)?; + tracing::trace!(target: "scroll::watcher", l1_message = ?msg, ?block_number); + + let notification = L1MessageWithBlockNumber::new(block_number, msg); + self.notify(L1Notification::L1Message(notification)).await; + } + Ok(()) + } + + /// Handles the batch commits events. + #[tracing::instrument(skip_all)] + async fn handle_batch_commits(&self, logs: &[Log]) -> L1WatcherResult<()> { + // filter commit logs. + let commit_logs_with_tx = + logs.iter().map(|l| (l, l.transaction_hash)).filter_map(|(log, tx_hash)| { + try_decode_log::(&log.inner) + .map(|decoded| (log, decoded.data, tx_hash)) + }); + + for (raw_log, decoded_log, maybe_tx_hash) in commit_logs_with_tx { + // fetch the commit transaction. + let tx_hash = maybe_tx_hash.ok_or(FilterLogError::MissingTransactionHash)?; + let transaction = self + .execution_provider + .get_transaction_by_hash(tx_hash) + .await? + .ok_or(EthRequestError::MissingTransactionHash(tx_hash))?; + + // decode the transaction's input into a commit batch call. + let commit_info = CommitBatchCall::try_decode(transaction.inner.input()); + if let Some(info) = commit_info { + let batch_index: u64 = decoded_log.batchIndex.saturating_to(); + let block_number = + raw_log.block_number.ok_or(FilterLogError::MissingBlockNumber)?; + let batch_hash = decoded_log.batchHash; + let blob_hashes = transaction.blob_versioned_hashes().map(|blobs| blobs.to_vec()); + tracing::trace!(target: "scroll::watcher", commit_batch = ?decoded_log, ?block_number); + + // feed all batch information to the batch input builder. + let batch_builder = BatchInputBuilder::new( + info.version(), + batch_index, + batch_hash, + block_number, + info.parent_batch_header(), + ) + .with_chunks(info.chunks()) + .with_skipped_l1_message_bitmap(info.skipped_l1_message_bitmap()) + .with_blob_hashes(blob_hashes); + + // if builder can build a batch input from data, notify via channel. + if let Some(batch_input) = batch_builder.try_build() { + self.notify(L1Notification::BatchCommit(batch_input)).await; + } + } + } + Ok(()) + } + + /// Handles the finalize batch events. + #[tracing::instrument(skip_all)] + async fn handle_batch_finalization(&self, logs: &[Log]) -> L1WatcherResult<()> { + // filter finalize logs. + let finalize_tx_hashes = + logs.iter().map(|l| (l, l.block_number)).filter_map(|(log, bn)| { + try_decode_log::(&log.inner).map(|decoded| (decoded.data, bn)) + }); + + for (decoded_log, maybe_block_number) in finalize_tx_hashes { + // fetch the commit transaction. + let block_number = maybe_block_number.ok_or(FilterLogError::MissingBlockNumber)?; + tracing::trace!(target: "scroll::watcher", finalized_batch = ?decoded_log, ?block_number); + + // send the finalization event in the channel. + let _ = self + .sender + .send(Arc::new(L1Notification::BatchFinalization { + hash: decoded_log.batchHash, + block_number, + })) + .await; + } + Ok(()) + } + + /// Fetches the chain of unfinalized blocks up to and including the latest block, ensuring no + /// gaps are present in the chain. + #[tracing::instrument(target = "scroll::watcher", skip_all)] + async fn fetch_unfinalized_chain( + &self, + finalized: &Header, + latest: &Header, + ) -> L1WatcherResult> { + let mut current_block = latest.clone(); + let mut chain = vec![current_block.clone()]; + + // loop until we find a block contained in the chain, connected to finalized or latest is + // finalized. + let (split_position, mut chain) = loop { + let pos = self.unfinalized_blocks.iter().rposition(|h| h == ¤t_block); + if pos.is_some() || + current_block.parent_hash == finalized.hash || + current_block.hash == finalized.hash + { + break (pos, chain); + } + + tracing::trace!(target: "scroll::watcher", number = ?(current_block.number - 1), "fetching block"); + let block = self + .execution_provider + .get_block((current_block.number - 1).into()) + .await? + .ok_or(EthRequestError::MissingBlock(current_block.number - 1))?; + chain.push(block.header.clone()); + current_block = block.header; + }; + + // order new chain from lowest to highest block number. + chain.reverse(); + + // combine with the available unfinalized blocks. + let split_position = split_position.unwrap_or(0); + let mut prefix = BoundedVec::new(HEADER_CAPACITY); + prefix.extend(self.unfinalized_blocks.iter().take(split_position).cloned()); + prefix.extend(chain.into_iter()); + + Ok(prefix) + } + + /// Returns true if the [`L1Watcher`] is synced to the head of the L1. + const fn is_synced(&self) -> bool { + self.current_block_number == self.l1_state.head + } + + /// Send the notification in the channel. + async fn notify(&self, notification: L1Notification) { + let _ = self.sender.send(Arc::new(notification)).await.inspect_err( + |err| tracing::error!(target: "scroll::watcher", ?err, "failed to send notification"), + ); + } + + /// Updates the current block number, saturating at the head of the chain. + fn update_current_block(&mut self, latest: &Block) { + let latest_block_number = latest.header.number; + let current_block_number = self.current_block_number + LOGS_QUERY_BLOCK_RANGE; + self.current_block_number = if current_block_number > latest_block_number { + latest_block_number + } else { + current_block_number + }; + } + + /// Returns the latest L1 block. + async fn latest_block(&self) -> L1WatcherResult { + Ok(self + .execution_provider + .get_block(BlockNumberOrTag::Latest.into()) + .await? + .expect("latest block should always exist")) + } + + /// Returns the finalized L1 block. + async fn finalized_block(&self) -> L1WatcherResult { + Ok(self + .execution_provider + .get_block(BlockNumberOrTag::Finalized.into()) + .await? + .expect("finalized block should always exist")) + } + + /// Returns the next range of logs, filtering using [`L1_WATCHER_LOG_FILTER`], + /// for the block range in \[[`current_block`](field@L1Watcher::current_block_number); + /// [`current_block`](field@L1Watcher::current_block_number) + [`LOGS_QUERY_BLOCK_RANGE`]\] + async fn next_filtered_logs(&self) -> L1WatcherResult> { + // set the block range for the query + let mut filter = L1_WATCHER_LOG_FILTER.clone(); + filter = filter + .from_block(self.current_block_number) + .to_block(self.current_block_number + LOGS_QUERY_BLOCK_RANGE); + + Ok(self.execution_provider.get_logs(&filter).await?) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + use crate::test_utils::provider::MockProvider; + use alloy_consensus::{transaction::Recovered, Signed, TxEip1559}; + use alloy_primitives::Address; + use alloy_rpc_types_eth::Transaction; + use alloy_sol_types::{SolCall, SolEvent}; + use arbitrary::Arbitrary; + use scroll_l1::abi::calls::commitBatchCall; + + // Returns a L1Watcher along with the receiver end of the L1Notifications. + fn l1_watcher( + unfinalized_blocks: Vec
, + provider_blocks: Vec
, + transactions: Vec, + finalized: Header, + latest: Header, + ) -> (L1Watcher, mpsc::Receiver>) { + let provider_blocks = + provider_blocks.into_iter().map(|h| Block { header: h, ..Default::default() }); + let finalized = Block { header: finalized, ..Default::default() }; + let latest = Block { header: latest, ..Default::default() }; + let provider = MockProvider::new( + provider_blocks, + transactions.into_iter(), + vec![finalized], + vec![latest], + ); + + let (tx, rx) = mpsc::channel(LOGS_QUERY_BLOCK_RANGE as usize); + ( + L1Watcher { + execution_provider: provider, + unfinalized_blocks: unfinalized_blocks.into(), + l1_state: L1State { head: 0, finalized: 0 }, + current_block_number: 0, + sender: tx, + }, + rx, + ) + } + + // Returns a chain of random headers of size `len`. + fn chain(len: usize) -> (Header, Header, Vec
) { + assert!(len >= 2, "chain should have a minimal length of two"); + + let mut chain = Vec::with_capacity(len); + chain.push(random!(Header)); + for i in 1..len { + let mut next = random!(Header); + next.number = chain[i - 1].number + 1; + next.parent_hash = chain[i - 1].hash; + chain.push(next); + } + + (chain.first().unwrap().clone(), chain.last().unwrap().clone(), chain) + } + + // Returns a chain of random block of size `len`, starting at the provided header. + fn chain_from(header: &Header, len: usize) -> Vec
{ + assert!(len >= 2, "fork should have a minimal length of two"); + + let mut blocks = Vec::with_capacity(len); + blocks.push(header.clone()); + + let next_header = |header: &Header| { + let mut next = random!(Header); + next.parent_hash = header.hash; + next.number = header.number + 1; + next + }; + for i in 0..len - 1 { + blocks.push(next_header(&blocks[i])); + } + blocks + } + + #[tokio::test] + async fn test_fetch_unfinalized_chain_no_reorg() -> eyre::Result<()> { + // Given + let (finalized, latest, chain) = chain(21); + let unfinalized_blocks = chain[1..11].to_vec(); + + let (watcher, _) = l1_watcher( + unfinalized_blocks, + chain.clone(), + vec![], + finalized.clone(), + latest.clone(), + ); + + // When + let unfinalized_chain = watcher.fetch_unfinalized_chain(&finalized, &latest).await?; + + // Then + assert_eq!(unfinalized_chain, chain[1..].to_vec()); + + Ok(()) + } + + #[tokio::test] + async fn test_fetch_unfinalized_chain_reorg() -> eyre::Result<()> { + // Given + let (finalized, _, chain) = chain(21); + let unfinalized_blocks = chain[1..21].to_vec(); + let mut provider_blocks = chain_from(&chain[10], 10); + let latest = provider_blocks[9].clone(); + + let (watcher, _) = l1_watcher( + unfinalized_blocks, + provider_blocks.clone(), + vec![], + finalized.clone(), + latest.clone(), + ); + + // When + let unfinalized_chain = watcher.fetch_unfinalized_chain(&finalized, &latest).await?; + + // Then + let mut reorged_chain = chain[1..10].to_vec(); + reorged_chain.append(&mut provider_blocks); + assert_eq!(unfinalized_chain, reorged_chain); + + Ok(()) + } + + #[tokio::test] + async fn test_handle_finalized_empty_state() -> eyre::Result<()> { + // Given + let (finalized, latest, _) = chain(2); + let (mut watcher, _) = l1_watcher(vec![], vec![], vec![], finalized.clone(), latest); + + // When + watcher.handle_finalized_block(&finalized).await; + + // Then + assert_eq!(watcher.unfinalized_blocks.len(), 0); + + Ok(()) + } + + #[tokio::test] + async fn test_handle_finalize_at_mid_state() -> eyre::Result<()> { + // Given + let (_, latest, chain) = chain(10); + let finalized = chain[5].clone(); + let (mut watcher, _) = l1_watcher(chain, vec![], vec![], finalized.clone(), latest); + + // When + watcher.handle_finalized_block(&finalized).await; + + // Then + assert_eq!(watcher.unfinalized_blocks.len(), 4); + + Ok(()) + } + + #[tokio::test] + async fn test_handle_finalized_at_end_state() -> eyre::Result<()> { + // Given + let (_, latest, chain) = chain(10); + let finalized = latest.clone(); + let (mut watcher, _) = l1_watcher(chain, vec![], vec![], finalized.clone(), latest); + + // When + watcher.handle_finalized_block(&finalized).await; + + // Then + assert_eq!(watcher.unfinalized_blocks.len(), 0); + + Ok(()) + } + + #[tokio::test] + async fn test_handle_latest_block_match_unfinalized_tail() -> eyre::Result<()> { + // Given + let (finalized, latest, chain) = chain(10); + let (mut watcher, _) = l1_watcher(chain, vec![], vec![], finalized.clone(), latest.clone()); + + // When + watcher.handle_latest_block(&finalized, &latest).await?; + + // Then + assert_eq!(watcher.unfinalized_blocks.len(), 10); + assert_eq!(watcher.unfinalized_blocks.pop().unwrap(), latest); + + Ok(()) + } + + #[tokio::test] + async fn test_handle_latest_block_extend_unfinalized() -> eyre::Result<()> { + // Given + let (finalized, latest, chain) = chain(10); + let unfinalized_chain = chain[..9].to_vec(); + let (mut watcher, _) = + l1_watcher(unfinalized_chain, vec![], vec![], finalized.clone(), latest.clone()); + + assert_eq!(watcher.unfinalized_blocks.len(), 9); + + // When + watcher.handle_latest_block(&finalized, &latest).await?; + + // Then + assert_eq!(watcher.unfinalized_blocks.len(), 10); + assert_eq!(watcher.unfinalized_blocks.pop().unwrap(), latest); + + Ok(()) + } + + #[tokio::test] + async fn test_handle_latest_block_missing_unfinalized_blocks() -> eyre::Result<()> { + // Given + let (finalized, latest, chain) = chain(10); + let unfinalized_chain = chain[..5].to_vec(); + let (mut watcher, mut receiver) = + l1_watcher(unfinalized_chain, chain, vec![], finalized.clone(), latest.clone()); + + // When + watcher.handle_latest_block(&finalized, &latest).await?; + + // Then + assert_eq!(watcher.unfinalized_blocks.len(), 10); + assert_eq!(watcher.unfinalized_blocks.pop().unwrap(), latest); + let notification = receiver.recv().await.unwrap(); + assert!(matches!(*notification, L1Notification::NewBlock(_))); + + Ok(()) + } + + #[tokio::test] + async fn test_handle_latest_block_reorg() -> eyre::Result<()> { + // Given + let (finalized, _, chain) = chain(10); + let reorged = chain_from(&chain[5], 10); + let latest = reorged[9].clone(); + let (mut watcher, mut receiver) = + l1_watcher(chain.clone(), reorged, vec![], finalized.clone(), latest.clone()); + + // When + watcher.current_block_number = chain[9].number; + watcher.handle_latest_block(&finalized, &latest).await?; + + // Then + assert_eq!(watcher.unfinalized_blocks.pop().unwrap(), latest); + assert_eq!(watcher.current_block_number, chain[5].number); + + let notification = receiver.recv().await.unwrap(); + assert!(matches!(*notification, L1Notification::Reorg(_))); + let notification = receiver.recv().await.unwrap(); + assert!(matches!(*notification, L1Notification::NewBlock(_))); + + Ok(()) + } + + #[tokio::test] + async fn test_handle_l1_messages() -> eyre::Result<()> { + // Given + let (finalized, latest, chain) = chain(10); + let (watcher, mut receiver) = + l1_watcher(chain, vec![], vec![], finalized.clone(), latest.clone()); + + // build test logs. + let mut logs = (0..10).map(|_| random!(Log)).collect::>(); + let mut queue_transaction = random!(Log); + let mut inner_log = random!(alloy_primitives::Log); + inner_log.data = random!(QueueTransaction).encode_log_data(); + queue_transaction.inner = inner_log; + queue_transaction.block_number = Some(random!(u64)); + logs.push(queue_transaction); + + // When + watcher.handle_l1_messages(&logs).await?; + + // Then + let notification = receiver.recv().await.unwrap(); + assert!(matches!(*notification, L1Notification::L1Message(_))); + + Ok(()) + } + + #[tokio::test] + async fn test_handle_batch_commits() -> eyre::Result<()> { + // Given + let (finalized, latest, chain) = chain(10); + + // prepare the commit batch call transaction. + let mut inner = random!(Signed); + inner.tx_mut().input = random!(commitBatchCall).abi_encode().into(); + let recovered = Recovered::new_unchecked(inner.into(), random!(Address)); + let tx = Transaction { + inner: recovered, + block_hash: None, + block_number: None, + transaction_index: None, + effective_gas_price: None, + }; + + let (watcher, mut receiver) = + l1_watcher(chain, vec![], vec![tx.clone()], finalized.clone(), latest.clone()); + + // build test logs. + let mut logs = (0..10).map(|_| random!(Log)).collect::>(); + let mut batch_commit = random!(Log); + let mut inner_log = random!(alloy_primitives::Log); + inner_log.data = random!(CommitBatch).encode_log_data(); + batch_commit.inner = inner_log; + batch_commit.transaction_hash = Some(*tx.inner.tx_hash()); + batch_commit.block_number = Some(random!(u64)); + logs.push(batch_commit); + + // When + watcher.handle_batch_commits(&logs).await?; + + // Then + let notification = receiver.recv().await.unwrap(); + assert!(matches!(*notification, L1Notification::BatchCommit(_))); + + Ok(()) + } + + #[tokio::test] + async fn test_handle_finalize_commits() -> eyre::Result<()> { + // Given + let (finalized, latest, chain) = chain(10); + let (watcher, mut receiver) = + l1_watcher(chain, vec![], vec![], finalized.clone(), latest.clone()); + + // build test logs. + let mut logs = (0..10).map(|_| random!(Log)).collect::>(); + let mut finalize_commit = random!(Log); + let mut inner_log = random!(alloy_primitives::Log); + inner_log.data = random!(FinalizeBatch).encode_log_data(); + finalize_commit.inner = inner_log; + finalize_commit.block_number = Some(random!(u64)); + logs.push(finalize_commit); + + // When + watcher.handle_batch_finalization(&logs).await?; + + // Then + let notification = receiver.recv().await.unwrap(); + assert!(matches!(*notification, L1Notification::BatchFinalization { .. })); + + Ok(()) + } +} diff --git a/crates/watcher/src/test_utils/arbitrary.rs b/crates/watcher/src/test_utils/arbitrary.rs new file mode 100644 index 00000000..60a3d839 --- /dev/null +++ b/crates/watcher/src/test_utils/arbitrary.rs @@ -0,0 +1,11 @@ +/// Returns an arbitrary instance of the passed type. +#[macro_export] +macro_rules! random { + ($typ: ty) => {{ + let mut bytes = Box::new([0u8; size_of::<$typ>()]); + let mut rng = ::rand::rng(); + ::rand::RngCore::fill_bytes(&mut rng, bytes.as_mut_slice()); + let mut u = ::arbitrary::Unstructured::new(bytes.as_slice()); + <$typ>::arbitrary(&mut u).unwrap() + }}; +} diff --git a/crates/watcher/src/test_utils/mod.rs b/crates/watcher/src/test_utils/mod.rs new file mode 100644 index 00000000..1b01e55f --- /dev/null +++ b/crates/watcher/src/test_utils/mod.rs @@ -0,0 +1,5 @@ +/// Test utils for arbitrary. +pub mod arbitrary; + +/// Test utils for provider. +pub mod provider; diff --git a/crates/watcher/src/test_utils/provider.rs b/crates/watcher/src/test_utils/provider.rs new file mode 100644 index 00000000..d9355e41 --- /dev/null +++ b/crates/watcher/src/test_utils/provider.rs @@ -0,0 +1,104 @@ +use crate::Block; +use std::{ + collections::HashMap, + sync::{Arc, Mutex}, +}; + +use alloy_eips::BlockNumberOrTag; +use alloy_json_rpc::RpcError; +use alloy_network::Ethereum; +use alloy_primitives::{BlockNumber, TxHash, B256}; +use alloy_provider::{EthGetBlock, Provider, ProviderCall, RootProvider}; +use alloy_rpc_types_eth::{BlockId, Filter, Log, Transaction}; +use alloy_transport::TransportResult; + +/// A mock implementation of the [`Provider`] trait. +#[derive(Debug)] +pub struct MockProvider { + blocks: Arc>>>, + transactions: HashMap, + finalized_blocks: Arc>>, + latest_blocks: Arc>>, +} + +impl MockProvider { + /// Returns a new [`MockProvider`] from the iterator over blocks, the finalized and the latest + /// block. + pub fn new( + blocks: impl Iterator, + transactions: impl Iterator, + finalized_blocks: Vec, + latest_blocks: Vec, + ) -> Self { + let mut b = HashMap::new(); + for block in blocks { + b.entry(block.header.number).or_insert(Vec::new()).push(block); + } + Self { + blocks: Arc::new(Mutex::new(b)), + transactions: transactions.map(|tx| (*tx.inner.tx_hash(), tx)).collect(), + finalized_blocks: Arc::new(Mutex::new(finalized_blocks)), + latest_blocks: Arc::new(Mutex::new(latest_blocks)), + } + } +} + +#[async_trait::async_trait] +impl Provider for MockProvider { + fn root(&self) -> &RootProvider { + unreachable!("unused calls") + } + + fn get_block(&self, block_id: BlockId) -> EthGetBlock { + let val = match block_id { + BlockId::Hash(_) => unimplemented!("hash query is not supported"), + BlockId::Number(number_or_tag) => match number_or_tag { + BlockNumberOrTag::Latest => { + let mut blocks = self.latest_blocks.lock().unwrap(); + if blocks.is_empty() { + None + } else { + blocks.drain(..1).next() + } + } + BlockNumberOrTag::Finalized => { + let mut blocks = self.finalized_blocks.lock().unwrap(); + if blocks.is_empty() { + None + } else { + blocks.drain(..1).next() + } + } + BlockNumberOrTag::Number(number) => { + let mut blocks = self.blocks.lock().unwrap(); + blocks.get_mut(&number).and_then(|blocks| { + if blocks.len() > 1 { + blocks.drain(..1).next() + } else { + blocks.first().cloned() + } + }) + } + _ => unimplemented!("can only query by number, latest or finalized"), + }, + }; + EthGetBlock::new_provider( + block_id, + Box::new(move |_kind| { + let val = val.clone().ok_or(RpcError::NullResp).map(Some); + ProviderCall::Ready(Some(val)) + }), + ) + } + + async fn get_logs(&self, _filter: &Filter) -> TransportResult> { + Ok(vec![]) + } + + fn get_transaction_by_hash( + &self, + hash: TxHash, + ) -> ProviderCall<(TxHash,), Option> { + ProviderCall::Ready(Some(Ok(self.transactions.get(&hash).cloned()))) + } +} diff --git a/crates/watcher/tests/reorg.rs b/crates/watcher/tests/reorg.rs new file mode 100644 index 00000000..7994eeb3 --- /dev/null +++ b/crates/watcher/tests/reorg.rs @@ -0,0 +1,175 @@ +//! Integration test of the reorg detection of the L1 watcher. +#![cfg(feature = "test-utils")] + +use alloy_rpc_types_eth::Header; +use arbitrary::Arbitrary; +use rand::Rng; +use rollup_node_watcher::{ + random, test_utils::provider::MockProvider, Block, L1Notification, L1Watcher, +}; +use tracing::{subscriber::set_global_default, Level}; + +fn setup() { + let sub = tracing_subscriber::FmtSubscriber::builder().with_max_level(Level::TRACE).finish(); + let _ = set_global_default(sub); +} + +// Generate a set blocks that will be fed to the l1 watcher. +// Every fork_cycle blocks, generates a small reorg. +fn generate_chain_with_reorgs(len: usize, fork_cycle: usize, max_fork_depth: usize) -> Vec { + assert!(fork_cycle >= 1, "fork cycle should be bigger than 1"); + + let mut blocks = Vec::with_capacity(len); + let mut rng = rand::rng(); + let next_header = |prev: &Header| { + let mut header = random!(Header); + header.number = prev.number + 1; + header.parent_hash = prev.hash; + header + }; + let mut tip = random!(Header); + while blocks.len() < len { + let mut acc = vec![tip]; + for i in 1..fork_cycle + 1 { + acc.push(next_header(&acc[i - 1])); + } + + let depth = rng.random_range(2..max_fork_depth); + let reorg = &acc[acc.len() - 1 - depth]; + tip = next_header(reorg); + + blocks.append(&mut acc); + + acc.clear(); + } + blocks.into_iter().map(|h| Block { header: h, ..Default::default() }).collect() +} + +#[tokio::test] +async fn test_reorg_detection() -> eyre::Result<()> { + // Given + setup(); + let blocks = generate_chain_with_reorgs(1000, 10, 5); + let latest_blocks = blocks.clone(); + + // finalized blocks should be 64 blocks late. + let mut finalized_blocks = std::iter::repeat(latest_blocks.first()) + .filter_map(|b| b.cloned()) + .take(64) + .chain(latest_blocks.iter().cloned()) + .collect::>(); + finalized_blocks.sort_unstable_by(|a, b| a.header.number.cmp(&b.header.number)); + + let start = latest_blocks.first().unwrap().header.number; + let mock_provider = MockProvider::new( + blocks.clone().into_iter(), + std::iter::empty(), + finalized_blocks.clone(), + latest_blocks.clone(), + ); + + // spawn the watcher and verify received notifications are consistent. + let mut l1_watcher = L1Watcher::spawn(mock_provider, start).await; + + let mut latest_number = latest_blocks.first().unwrap().header.number; + let mut finalized_number = finalized_blocks.first().unwrap().header.number; + + for (latest, finalized) in latest_blocks[1..].iter().zip(finalized_blocks[1..].iter()) { + // check finalized first. + if finalized_number < finalized.header.number { + let notification = l1_watcher.recv().await.unwrap(); + assert_eq!(notification.as_ref(), &L1Notification::Finalized(finalized.header.number)); + } + + if latest_number == latest.header.number { + continue + } + + // check latest for reorg or new block. + if latest_number > latest.header.number { + // reorg + let notification = l1_watcher.recv().await.unwrap(); + assert!(matches!(notification.as_ref(), L1Notification::Reorg(_))); + let notification = l1_watcher.recv().await.unwrap(); + assert_eq!(notification.as_ref(), &L1Notification::NewBlock(latest.header.number)); + } else { + let notification = l1_watcher.recv().await.unwrap(); + assert_eq!(notification.as_ref(), &L1Notification::NewBlock(latest.header.number)); + } + + // update finalized and latest. + finalized_number = finalized.header.number; + latest_number = latest.header.number; + } + + Ok(()) +} + +#[tokio::test] +async fn test_gap() -> eyre::Result<()> { + // Given + setup(); + let mut blocks = vec![random!(Header)]; + for i in 1..1000 { + let mut next = random!(Header); + let prev = &blocks[i - 1]; + next.number = prev.number + 1; + next.parent_hash = prev.hash; + blocks.push(next); + } + let blocks = + blocks.into_iter().map(|h| Block { header: h, ..Default::default() }).collect::>(); + + // add a gap every 20 blocks. + let latest_blocks = blocks + .iter() + .filter(|b| { + let rem = b.header.number % 20; + rem > 5 + }) + .cloned() + .collect::>(); + + // finalized blocks should be 64 blocks late. + let mut finalized_blocks = std::iter::repeat(blocks.first()) + .filter_map(|b| b.cloned()) + .take(64) + .chain(blocks.iter().cloned()) + .collect::>(); + finalized_blocks.sort_unstable_by(|a, b| a.header.number.cmp(&b.header.number)); + + let start = latest_blocks.first().unwrap().header.number; + let mock_provider = MockProvider::new( + blocks.clone().into_iter(), + std::iter::empty(), + finalized_blocks.clone(), + latest_blocks.clone(), + ); + + // spawn the watcher and verify received notifications are consistent. + let mut l1_watcher = L1Watcher::spawn(mock_provider, start).await; + + let mut latest_number = latest_blocks.first().unwrap().header.number; + let mut finalized_number = finalized_blocks.first().unwrap().header.number; + + for (latest, finalized) in latest_blocks[1..].iter().zip(finalized_blocks[1..].iter()) { + // check finalized first. + if finalized_number < finalized.header.number { + let notification = l1_watcher.recv().await.unwrap(); + assert_eq!(notification.as_ref(), &L1Notification::Finalized(finalized.header.number)); + } + + if latest_number == latest.header.number { + continue + } + + let notification = l1_watcher.recv().await.unwrap(); + assert_eq!(notification.as_ref(), &L1Notification::NewBlock(latest.header.number)); + + // update finalized and latest. + finalized_number = finalized.header.number; + latest_number = latest.header.number; + } + + Ok(()) +} diff --git a/dprint.json b/dprint.json new file mode 100644 index 00000000..dc615dbf --- /dev/null +++ b/dprint.json @@ -0,0 +1,13 @@ +{ + "toml": { + "useTabs": false, + "cargo.applyConventions": false, + "indentWidth": 4 + }, + "includes": [ + "**/*.toml" + ], + "plugins": [ + "https://plugins.dprint.dev/toml-0.6.4.wasm" + ] +}