diff --git a/Cargo.lock b/Cargo.lock index ecd5e52d..f8f7bbc4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7847,7 +7847,7 @@ checksum = "6b3789b30bd25ba102de4beabd95d21ac45b69b1be7d14522bab988c526d6799" [[package]] name = "reth-basic-payload-builder" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7871,7 +7871,7 @@ dependencies = [ [[package]] name = "reth-chain-state" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7902,7 +7902,7 @@ dependencies = [ [[package]] name = "reth-chainspec" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-chains", "alloy-consensus", @@ -7922,7 +7922,7 @@ dependencies = [ [[package]] name = "reth-cli" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-genesis", "clap", @@ -7936,7 +7936,7 @@ dependencies = [ [[package]] name = "reth-cli-commands" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-chains", "alloy-consensus", @@ -8011,7 +8011,7 @@ dependencies = [ [[package]] name = "reth-cli-runner" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "reth-tasks", "tokio", @@ -8021,7 +8021,7 @@ dependencies = [ [[package]] name = "reth-cli-util" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-primitives", @@ -8038,7 +8038,7 @@ dependencies = [ [[package]] name = "reth-codecs" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8058,7 +8058,7 @@ dependencies = [ [[package]] name = "reth-codecs-derive" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "proc-macro2", "quote", @@ -8068,7 +8068,7 @@ dependencies = [ [[package]] name = "reth-config" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "eyre", "humantime-serde", @@ -8083,7 +8083,7 @@ dependencies = [ [[package]] name = "reth-consensus" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -8096,7 +8096,7 @@ dependencies = [ [[package]] name = "reth-consensus-common" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8108,7 +8108,7 @@ dependencies = [ [[package]] name = "reth-consensus-debug-client" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8134,7 +8134,7 @@ dependencies = [ [[package]] name = "reth-db" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "derive_more", @@ -8160,7 +8160,7 @@ dependencies = [ [[package]] name = "reth-db-api" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -8189,7 +8189,7 @@ dependencies = [ [[package]] name = "reth-db-common" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -8219,7 +8219,7 @@ dependencies = [ [[package]] name = "reth-db-models" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-primitives", @@ -8234,7 +8234,7 @@ dependencies = [ [[package]] name = "reth-discv4" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -8260,7 +8260,7 @@ dependencies = [ [[package]] name = "reth-discv5" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -8284,7 +8284,7 @@ dependencies = [ [[package]] name = "reth-dns-discovery" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "data-encoding", @@ -8308,7 +8308,7 @@ dependencies = [ [[package]] name = "reth-downloaders" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8343,7 +8343,7 @@ dependencies = [ [[package]] name = "reth-e2e-test-utils" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8401,7 +8401,7 @@ dependencies = [ [[package]] name = "reth-ecies" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "aes", "alloy-primitives", @@ -8432,7 +8432,7 @@ dependencies = [ [[package]] name = "reth-engine-local" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -8455,7 +8455,7 @@ dependencies = [ [[package]] name = "reth-engine-primitives" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8480,7 +8480,7 @@ dependencies = [ [[package]] name = "reth-engine-service" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "futures", "pin-project", @@ -8502,7 +8502,7 @@ dependencies = [ [[package]] name = "reth-engine-tree" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8557,7 +8557,7 @@ dependencies = [ [[package]] name = "reth-engine-util" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -8585,7 +8585,7 @@ dependencies = [ [[package]] name = "reth-era" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8601,7 +8601,7 @@ dependencies = [ [[package]] name = "reth-era-downloader" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "bytes", @@ -8616,7 +8616,7 @@ dependencies = [ [[package]] name = "reth-era-utils" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -8638,7 +8638,7 @@ dependencies = [ [[package]] name = "reth-errors" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "reth-consensus", "reth-execution-errors", @@ -8649,7 +8649,7 @@ dependencies = [ [[package]] name = "reth-eth-wire" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-chains", "alloy-primitives", @@ -8677,7 +8677,7 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-chains", "alloy-consensus", @@ -8698,7 +8698,7 @@ dependencies = [ [[package]] name = "reth-ethereum-consensus" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8714,7 +8714,7 @@ dependencies = [ [[package]] name = "reth-ethereum-engine-primitives" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-primitives", @@ -8732,7 +8732,7 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eip2124", "alloy-hardforks", @@ -8746,7 +8746,7 @@ dependencies = [ [[package]] name = "reth-ethereum-payload-builder" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8775,7 +8775,7 @@ dependencies = [ [[package]] name = "reth-ethereum-primitives" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8795,7 +8795,7 @@ dependencies = [ [[package]] name = "reth-etl" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "rayon", "reth-db-api", @@ -8805,7 +8805,7 @@ dependencies = [ [[package]] name = "reth-evm" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8829,7 +8829,7 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8849,7 +8849,7 @@ dependencies = [ [[package]] name = "reth-execution-errors" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-evm", "alloy-primitives", @@ -8862,7 +8862,7 @@ dependencies = [ [[package]] name = "reth-execution-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8880,7 +8880,7 @@ dependencies = [ [[package]] name = "reth-exex" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8918,7 +8918,7 @@ dependencies = [ [[package]] name = "reth-exex-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-primitives", @@ -8932,7 +8932,7 @@ dependencies = [ [[package]] name = "reth-fs-util" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "serde", "serde_json", @@ -8942,7 +8942,7 @@ dependencies = [ [[package]] name = "reth-invalid-block-hooks" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -8970,7 +8970,7 @@ dependencies = [ [[package]] name = "reth-ipc" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "bytes", "futures", @@ -8990,7 +8990,7 @@ dependencies = [ [[package]] name = "reth-libmdbx" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "bitflags 2.10.0", "byteorder", @@ -9006,7 +9006,7 @@ dependencies = [ [[package]] name = "reth-mdbx-sys" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "bindgen 0.71.1", "cc", @@ -9015,7 +9015,7 @@ dependencies = [ [[package]] name = "reth-metrics" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "futures", "metrics", @@ -9027,7 +9027,7 @@ dependencies = [ [[package]] name = "reth-net-banlist" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", ] @@ -9035,7 +9035,7 @@ dependencies = [ [[package]] name = "reth-net-nat" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "futures-util", "if-addrs", @@ -9049,7 +9049,7 @@ dependencies = [ [[package]] name = "reth-network" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9104,7 +9104,7 @@ dependencies = [ [[package]] name = "reth-network-api" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9130,7 +9130,7 @@ dependencies = [ [[package]] name = "reth-network-p2p" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9153,7 +9153,7 @@ dependencies = [ [[package]] name = "reth-network-peers" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -9168,7 +9168,7 @@ dependencies = [ [[package]] name = "reth-network-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eip2124", "humantime-serde", @@ -9182,7 +9182,7 @@ dependencies = [ [[package]] name = "reth-nippy-jar" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "anyhow", "bincode", @@ -9199,7 +9199,7 @@ dependencies = [ [[package]] name = "reth-node-api" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-rpc-types-engine", "eyre", @@ -9223,7 +9223,7 @@ dependencies = [ [[package]] name = "reth-node-builder" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9291,7 +9291,7 @@ dependencies = [ [[package]] name = "reth-node-core" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9343,7 +9343,7 @@ dependencies = [ [[package]] name = "reth-node-ethereum" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-network", @@ -9381,7 +9381,7 @@ dependencies = [ [[package]] name = "reth-node-ethstats" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9405,7 +9405,7 @@ dependencies = [ [[package]] name = "reth-node-events" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9429,7 +9429,7 @@ dependencies = [ [[package]] name = "reth-node-metrics" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "eyre", "http 1.3.1", @@ -9449,7 +9449,7 @@ dependencies = [ [[package]] name = "reth-node-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "reth-chainspec", "reth-db-api", @@ -9461,7 +9461,7 @@ dependencies = [ [[package]] name = "reth-optimism-primitives" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9481,7 +9481,7 @@ dependencies = [ [[package]] name = "reth-payload-builder" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9502,7 +9502,7 @@ dependencies = [ [[package]] name = "reth-payload-builder-primitives" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "pin-project", "reth-payload-primitives", @@ -9514,7 +9514,7 @@ dependencies = [ [[package]] name = "reth-payload-primitives" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9535,7 +9535,7 @@ dependencies = [ [[package]] name = "reth-payload-util" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9545,7 +9545,7 @@ dependencies = [ [[package]] name = "reth-payload-validator" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -9555,7 +9555,7 @@ dependencies = [ [[package]] name = "reth-primitives" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "c-kzg", @@ -9569,7 +9569,7 @@ dependencies = [ [[package]] name = "reth-primitives-traits" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9603,7 +9603,7 @@ dependencies = [ [[package]] name = "reth-provider" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9647,7 +9647,7 @@ dependencies = [ [[package]] name = "reth-prune" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9675,7 +9675,7 @@ dependencies = [ [[package]] name = "reth-prune-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "arbitrary", @@ -9689,7 +9689,7 @@ dependencies = [ [[package]] name = "reth-revm" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "reth-primitives-traits", @@ -9702,7 +9702,7 @@ dependencies = [ [[package]] name = "reth-rpc" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -9782,7 +9782,7 @@ dependencies = [ [[package]] name = "reth-rpc-api" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-genesis", @@ -9810,7 +9810,7 @@ dependencies = [ [[package]] name = "reth-rpc-builder" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-network", "alloy-provider", @@ -9849,7 +9849,7 @@ dependencies = [ [[package]] name = "reth-rpc-convert" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-json-rpc", @@ -9876,7 +9876,7 @@ dependencies = [ [[package]] name = "reth-rpc-engine-api" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9906,7 +9906,7 @@ dependencies = [ [[package]] name = "reth-rpc-eth-api" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -9951,7 +9951,7 @@ dependencies = [ [[package]] name = "reth-rpc-eth-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9998,7 +9998,7 @@ dependencies = [ [[package]] name = "reth-rpc-layer" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-rpc-types-engine", "http 1.3.1", @@ -10012,7 +10012,7 @@ dependencies = [ [[package]] name = "reth-rpc-server-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-primitives", @@ -10028,7 +10028,7 @@ dependencies = [ [[package]] name = "reth-scroll-chainspec" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-chains", "alloy-consensus", @@ -10053,7 +10053,7 @@ dependencies = [ [[package]] name = "reth-scroll-cli" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "clap", "eyre", @@ -10077,7 +10077,7 @@ dependencies = [ [[package]] name = "reth-scroll-consensus" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10097,7 +10097,7 @@ dependencies = [ [[package]] name = "reth-scroll-engine-primitives" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10122,7 +10122,7 @@ dependencies = [ [[package]] name = "reth-scroll-evm" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10152,7 +10152,7 @@ dependencies = [ [[package]] name = "reth-scroll-forks" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-chains", "alloy-primitives", @@ -10166,7 +10166,7 @@ dependencies = [ [[package]] name = "reth-scroll-node" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -10220,7 +10220,7 @@ dependencies = [ [[package]] name = "reth-scroll-payload" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10251,7 +10251,7 @@ dependencies = [ [[package]] name = "reth-scroll-primitives" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10271,7 +10271,7 @@ dependencies = [ [[package]] name = "reth-scroll-rpc" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10312,7 +10312,7 @@ dependencies = [ [[package]] name = "reth-scroll-txpool" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10337,7 +10337,7 @@ dependencies = [ [[package]] name = "reth-stages" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10385,7 +10385,7 @@ dependencies = [ [[package]] name = "reth-stages-api" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-primitives", @@ -10412,7 +10412,7 @@ dependencies = [ [[package]] name = "reth-stages-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "arbitrary", @@ -10426,7 +10426,7 @@ dependencies = [ [[package]] name = "reth-static-file" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "parking_lot 0.12.5", @@ -10446,7 +10446,7 @@ dependencies = [ [[package]] name = "reth-static-file-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "clap", @@ -10458,7 +10458,7 @@ dependencies = [ [[package]] name = "reth-storage-api" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10481,7 +10481,7 @@ dependencies = [ [[package]] name = "reth-storage-errors" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-eips", "alloy-primitives", @@ -10497,7 +10497,7 @@ dependencies = [ [[package]] name = "reth-tasks" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "auto_impl", "dyn-clone", @@ -10515,7 +10515,7 @@ dependencies = [ [[package]] name = "reth-testing-utils" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10531,7 +10531,7 @@ dependencies = [ [[package]] name = "reth-tokio-util" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "tokio", "tokio-stream", @@ -10541,7 +10541,7 @@ dependencies = [ [[package]] name = "reth-tracing" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "clap", "eyre", @@ -10556,7 +10556,7 @@ dependencies = [ [[package]] name = "reth-transaction-pool" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10597,7 +10597,7 @@ dependencies = [ [[package]] name = "reth-trie" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -10622,7 +10622,7 @@ dependencies = [ [[package]] name = "reth-trie-common" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -10647,7 +10647,7 @@ dependencies = [ [[package]] name = "reth-trie-db" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "reth-db-api", @@ -10660,7 +10660,7 @@ dependencies = [ [[package]] name = "reth-trie-parallel" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -10687,7 +10687,7 @@ dependencies = [ [[package]] name = "reth-trie-sparse" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -10706,7 +10706,7 @@ dependencies = [ [[package]] name = "reth-trie-sparse-parallel" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -10724,7 +10724,7 @@ dependencies = [ [[package]] name = "reth-zstd-compressors" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "zstd", ] @@ -11747,7 +11747,7 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scroll-alloy-consensus" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11766,7 +11766,7 @@ dependencies = [ [[package]] name = "scroll-alloy-evm" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11784,7 +11784,7 @@ dependencies = [ [[package]] name = "scroll-alloy-hardforks" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-hardforks", "auto_impl", @@ -11794,7 +11794,7 @@ dependencies = [ [[package]] name = "scroll-alloy-network" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-network", @@ -11809,7 +11809,7 @@ dependencies = [ [[package]] name = "scroll-alloy-provider" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "alloy-provider", @@ -11835,7 +11835,7 @@ dependencies = [ [[package]] name = "scroll-alloy-rpc-types" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-consensus", "alloy-eips", @@ -11852,7 +11852,7 @@ dependencies = [ [[package]] name = "scroll-alloy-rpc-types-engine" version = "1.8.2" -source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.4#079764e909be74219f32796342c4dd911fdd30a9" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.5#b4a1fc55be599ede642a9db6b5be07ae74543307" dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", @@ -12040,6 +12040,7 @@ dependencies = [ "reth-network-api", "reth-scroll-primitives", "rollup-node-signer", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", diff --git a/Cargo.toml b/Cargo.toml index e3ef83ac..4a07a675 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -140,59 +140,59 @@ alloy-signer-local = { version = "1.0.37", default-features = false } alloy-transport = { version = "1.0.37", default-features = false } # scroll-alloy -scroll-alloy-consensus = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -scroll-alloy-hardforks = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -scroll-alloy-network = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -scroll-alloy-provider = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -scroll-alloy-evm = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -scroll-alloy-rpc-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -scroll-alloy-rpc-types-engine = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } +scroll-alloy-consensus = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +scroll-alloy-hardforks = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +scroll-alloy-network = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +scroll-alloy-provider = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +scroll-alloy-evm = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +scroll-alloy-rpc-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +scroll-alloy-rpc-types-engine = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } # reth -reth-chainspec = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-e2e-test-utils = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4" } -reth-eth-wire = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-eth-wire-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-network = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-network-api = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-network-p2p = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-network-peers = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-network-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-node-builder = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-node-core = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-node-api = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-node-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-payload-primitives = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-primitives = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-primitives-traits = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-provider = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-rpc-api = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-rpc-eth-api = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-rpc-eth-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-rpc-layer = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-rpc-server-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-storage-api = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-tasks = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-tokio-util = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-tracing = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-transaction-pool = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-trie-db = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-testing-utils = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-revm = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-evm = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-engine-local = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-cli-util = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } +reth-chainspec = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-e2e-test-utils = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5" } +reth-eth-wire = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-eth-wire-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-network = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-network-api = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-network-p2p = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-network-peers = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-network-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-node-builder = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-node-core = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-node-api = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-node-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-payload-primitives = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-primitives = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-primitives-traits = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-provider = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-rpc-api = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-rpc-eth-api = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-rpc-eth-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-rpc-layer = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-rpc-server-types = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-storage-api = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-tasks = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-tokio-util = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-tracing = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-transaction-pool = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-trie-db = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-testing-utils = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-revm = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-evm = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-engine-local = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-cli-util = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } # reth-scroll -reth-scroll-chainspec = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-scroll-consensus = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-scroll-cli = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-scroll-evm = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-scroll-rpc = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-scroll-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-scroll-forks = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-scroll-node = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } -reth-scroll-primitives = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.4", default-features = false } +reth-scroll-chainspec = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-scroll-consensus = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-scroll-cli = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-scroll-evm = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-scroll-rpc = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-scroll-engine-primitives = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-scroll-forks = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-scroll-node = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } +reth-scroll-primitives = { git = "https://github.com/scroll-tech/reth.git", tag = "scroll-v91.5", default-features = false } # rollup node rollup-node = { path = "crates/node" } diff --git a/Makefile b/Makefile index 7da521fe..f6ac364c 100644 --- a/Makefile +++ b/Makefile @@ -99,7 +99,7 @@ export-sample-test-data: .PHONY: docs docs: - cargo docs --document-private-items --exclude rollup-node-chain-orchestrator + cargo +$(NIGHTLY_TOOLCHAIN) docs --document-private-items --exclude rollup-node-chain-orchestrator .PHONY: pr pr: lint test docs diff --git a/crates/chain-orchestrator/src/event.rs b/crates/chain-orchestrator/src/event.rs index 027dc118..2c061f20 100644 --- a/crates/chain-orchestrator/src/event.rs +++ b/crates/chain-orchestrator/src/event.rs @@ -14,6 +14,8 @@ use scroll_network::NewBlockWithPeer; pub enum ChainOrchestratorEvent { /// A received block failed the consensus checks. BlockFailedConsensusChecks(B256, PeerId), + /// A finalized block was received from a peer. + L2FinalizedBlockReceived(B256, PeerId), /// A new block has been received from the network but we have insufficient data to process it /// due to being in optimistic mode. InsufficientDataForReceivedBlock(B256), diff --git a/crates/chain-orchestrator/src/lib.rs b/crates/chain-orchestrator/src/lib.rs index acec7ef3..5edb9791 100644 --- a/crates/chain-orchestrator/src/lib.rs +++ b/crates/chain-orchestrator/src/lib.rs @@ -946,6 +946,17 @@ impl< ) -> Result, ChainOrchestratorError> { tracing::debug!(target: "scroll::chain_orchestrator", block_hash = ?block_with_peer.block.header.hash_slow(), block_number = ?block_with_peer.block.number, peer_id = ?block_with_peer.peer_id, "Received new block from peer"); + // Check we are not handling a finalized block. + if block_with_peer.block.header.number <= self.engine.fcs().finalized_block_info().number { + self.network + .handle() + .block_import_outcome(BlockImportOutcome::finalized_block(block_with_peer.peer_id)); + return Ok(Some(ChainOrchestratorEvent::L2FinalizedBlockReceived( + block_with_peer.block.header.hash_slow(), + block_with_peer.peer_id, + ))); + } + if let Err(err) = self.consensus.validate_new_block(&block_with_peer.block, &block_with_peer.signature) { diff --git a/crates/network/src/import.rs b/crates/network/src/import.rs index 281998b7..df723eb4 100644 --- a/crates/network/src/import.rs +++ b/crates/network/src/import.rs @@ -17,6 +17,11 @@ pub struct BlockImportOutcome { } impl BlockImportOutcome { + /// Creates a new `BlockImportOutcome` instance for a finalized block with the given peer ID. + pub fn finalized_block(peer: PeerId) -> Self { + Self { peer, result: Err(BlockImportError::L2FinalizedBlockReceived(peer)) } + } + /// Creates a new `BlockImportOutcome` instance for an invalid block with the given peer ID. pub fn invalid_block(peer: PeerId) -> Self { Self { peer, result: Err(BlockImportError::Validation(BlockValidationError::InvalidBlock)) } @@ -56,6 +61,8 @@ pub enum BlockImportError { Consensus(ConsensusError), /// An error occurred during block validation. Validation(BlockValidationError), + /// A finalized block was received from a peer. + L2FinalizedBlockReceived(PeerId), } /// A consensus related error that can occur during block import. diff --git a/crates/network/src/manager.rs b/crates/network/src/manager.rs index f1353ac5..2ab7e6f1 100644 --- a/crates/network/src/manager.rs +++ b/crates/network/src/manager.rs @@ -4,15 +4,15 @@ use super::{ BlockImportOutcome, BlockValidation, NetworkHandleMessage, NewBlockWithPeer, ScrollNetworkHandle, ScrollNetworkManagerEvent, }; -use alloy_primitives::{Address, FixedBytes, Signature, B256, U128}; -use futures::{Future, FutureExt, StreamExt}; +use alloy_primitives::{Address, Signature, B256, U128}; +use futures::StreamExt; use reth_chainspec::EthChainSpec; use reth_eth_wire_types::NewBlock as EthWireNewBlock; use reth_network::{ cache::LruCache, NetworkConfig as RethNetworkConfig, NetworkHandle as RethNetworkHandle, NetworkManager as RethNetworkManager, }; -use reth_network_api::{block::NewBlockWithPeer as RethNewBlockWithPeer, FullNetwork}; +use reth_network_api::{block::NewBlockWithPeer as RethNewBlockWithPeer, FullNetwork, PeerId}; use reth_scroll_node::ScrollNetworkPrimitives; use reth_scroll_primitives::ScrollBlock; use reth_storage_api::BlockNumReader as BlockNumReaderT; @@ -23,11 +23,7 @@ use scroll_wire::{ NewBlock, ScrollWireConfig, ScrollWireEvent, ScrollWireManager, ScrollWireProtocolHandler, LRU_CACHE_SIZE, }; -use std::{ - pin::Pin, - sync::Arc, - task::{Context, Poll}, -}; +use std::{collections::HashMap, sync::Arc}; use tokio::sync::mpsc::{self, UnboundedReceiver}; use tokio_stream::wrappers::UnboundedReceiverStream; use tracing::trace; @@ -60,6 +56,8 @@ pub struct ScrollNetworkManager { pub scroll_wire: ScrollWireManager, /// The LRU cache used to track already seen (block,signature) pair. pub blocks_seen: LruCache<(B256, Signature)>, + /// Tracks block hashes received from each peer for duplicate detection. + peer_state: HashMap>, /// The constant value that must be added to the block number to get the total difficulty. td_constant: U128, /// The authorized signer for the network. @@ -105,6 +103,7 @@ impl let scroll_wire = ScrollWireManager::new(events); let blocks_seen = LruCache::new(LRU_CACHE_SIZE); + let peer_state = HashMap::new(); // Spawn the inner network manager. tokio::spawn(inner_network_manager); @@ -116,6 +115,7 @@ impl from_handle_rx: from_handle_rx.into(), scroll_wire, blocks_seen, + peer_state, eth_wire_listener, td_constant, authorized_signer, @@ -155,6 +155,7 @@ impl< let event_sender = EventSender::new(EVENT_CHANNEL_SIZE); let blocks_seen = LruCache::new(LRU_CACHE_SIZE); + let peer_state = HashMap::new(); ( Self { @@ -163,6 +164,7 @@ impl< from_handle_rx: from_handle_rx.into(), scroll_wire, blocks_seen, + peer_state, eth_wire_listener, td_constant, authorized_signer, @@ -174,61 +176,142 @@ impl< ) } + /// Checks if a peer has already seen a specific block. + fn peer_has_seen_block(&self, peer_id: &PeerId, block_hash: &B256) -> bool { + self.peer_state.get(peer_id).is_some_and(|state| state.contains(block_hash)) + } + + /// Marks a block as seen by a peer, returning `true` if this is a duplicate. + fn mark_block_seen(&mut self, peer_id: PeerId, block_hash: B256) -> bool { + let state = self.peer_state.entry(peer_id).or_insert_with(|| LruCache::new(LRU_CACHE_SIZE)); + if state.contains(&block_hash) { + return true; + } + state.insert(block_hash); + false + } + + /// Main execution loop for the [`ScrollNetworkManager`]. + pub async fn run(mut self) { + loop { + tokio::select! { + biased; + + // Handle messages from the network handle. + message = self.from_handle_rx.next() => { + match message { + Some(message) => { + self.on_handle_message(message).await; + } + // All network handles have been dropped so we can shutdown the network. + None => { + trace!(target: "scroll::network::manager", "Network handle channel closed, shutting down network manager"); + return; + } + } + } + + // Handle scroll-wire events. + event = &mut self.scroll_wire => { + if let Some(event) = self.on_scroll_wire_event(event) { + self.event_sender.notify(event); + } + } + + // Handle blocks received from the eth-wire protocol. + Some(block) = Self::next_eth_wire_block(&mut self.eth_wire_listener) => { + if let Some(event) = self.handle_eth_wire_block(block) { + self.event_sender.notify(event); + } + } + } + } + } + + async fn next_eth_wire_block( + eth_wire_listener: &mut Option< + EventStream>, + >, + ) -> Option> { + match eth_wire_listener.as_mut() { + Some(listener) => listener.next().await, + None => std::future::pending().await, + } + } + /// Announces a new block to the network. - fn announce_block(&mut self, block: NewBlock) { + async fn announce_block(&mut self, block: NewBlock) { #[cfg(feature = "test-utils")] if !self.gossip { return; } - // Compute the block hash. let hash = block.block.hash_slow(); - // Filter the peers that have not seen this block hash. - let peers: Vec> = self - .scroll_wire - .state() - .iter() - .filter_map(|(peer_id, blocks)| (!blocks.contains(&hash)).then_some(*peer_id)) - .collect(); + let peers = match self.inner_network_handle.get_all_peers().await { + Ok(peers) => peers, + Err(e) => { + tracing::error!(target: "scroll::network::manager", "Failed to get all peers: {}", e); + return; + } + }; // TODO: remove this once we deprecate l2geth. - // Determine if we should announce via eth wire - let should_announce_eth_wire = if let Some(authorized_signer) = self.authorized_signer { - // Only announce if the block signature matches the authorized signer - let sig_hash = sig_encode_hash(&block.block.header); - if let Ok(signature) = Signature::from_raw(&block.signature) { - if let Ok(recovered_signer) = - reth_primitives_traits::crypto::secp256k1::recover_signer(&signature, sig_hash) - { - authorized_signer == recovered_signer - } else { - false + let should_announce_eth_wire = self.verify_block_signature(&block); + + // Lazily build eth-wire block only if needed + let mut eth_wire_new_block = None; + + for peer in peers { + // Skip peers that have already seen this block + if self.peer_has_seen_block(&peer.remote_id, &hash) { + continue; + } + + // Announce via scroll-wire if peer supports it + if self.scroll_wire.is_connected(peer.remote_id) { + if let Err(e) = self.scroll_wire.announce_block(peer.remote_id, &block) { + trace!(target: "scroll::network::manager", peer_id = %peer.remote_id, block_number = %block.block.header.number, block_hash = %hash, error = ?e, "Failed to announce block to peer via scroll-wire"); + self.peer_state.remove(&peer.remote_id); } - } else { - false + } else if should_announce_eth_wire { + // Build eth-wire block on first use + let eth_wire_block = eth_wire_new_block.get_or_insert_with(|| { + let td = compute_td(self.td_constant, block.block.header.number); + let mut eth_wire_block = block.block.clone(); + eth_wire_block.header.extra_data = block.signature.clone().into(); + EthWireNewBlock { block: eth_wire_block, td } + }); + + trace!(target: "scroll::network::manager", peer_id = %peer.remote_id, block_number = %block.block.header.number, block_hash = %hash, "Announcing new block to peer via eth-wire"); + self.inner_network_handle.eth_wire_announce_block_to_peer( + peer.remote_id, + eth_wire_block.clone(), + hash, + ); } - } else { - // If no authorized signer is set, always announce - true + } + } + + /// Verifies the block signature against the authorized signer. + /// + /// Returns true if the signature is valid or if no authorized signer is configured. + fn verify_block_signature(&self, block: &NewBlock) -> bool { + let Some(authorized_signer) = self.authorized_signer else { + return true; }; - // Announce via eth wire if allowed - if should_announce_eth_wire { - let eth_wire_new_block = { - let td = compute_td(self.td_constant, block.block.header.number); - let mut eth_wire_block = block.block.clone(); - eth_wire_block.header.extra_data = block.signature.clone().into(); - EthWireNewBlock { block: eth_wire_block, td } - }; - self.inner_network_handle.eth_wire_announce_block(eth_wire_new_block, hash); - } + let sig_hash = sig_encode_hash(&block.block.header); + let Ok(signature) = Signature::from_raw(&block.signature) else { + return false; + }; + let Ok(recovered_signer) = + reth_primitives_traits::crypto::secp256k1::recover_signer(&signature, sig_hash) + else { + return false; + }; - // Announce block to the filtered set of peers - for peer_id in peers { - trace!(target: "scroll::network::manager", peer_id = %peer_id, block_number = %block.block.header.number, block_hash = %hash, "Announcing new block to peer"); - self.scroll_wire.announce_block(peer_id, &block, hash); - } + authorized_signer == recovered_signer } /// Handler for received events from the [`ScrollWireManager`]. @@ -240,17 +323,23 @@ impl< ScrollWireEvent::NewBlock { peer_id, block, signature } => { let block_hash = block.hash_slow(); trace!(target: "scroll::network::manager", peer_id = ?peer_id, block = ?block_hash, signature = ?signature, "Received new block"); + + // Check if we have already received this block via scroll-wire from this peer, if + // so penalize it. + if self.mark_block_seen(peer_id, block_hash) { + tracing::warn!(target: "scroll::network::manager", peer_id = ?peer_id, block = ?block_hash, "Peer sent duplicate block via scroll-wire, penalizing"); + self.inner_network_handle.reputation_change( + peer_id, + reth_network_api::ReputationChangeKind::BadBlock, + ); + return None; + } + if self.blocks_seen.contains(&(block_hash, signature)) { None } else { - // Update the state of the peer cache i.e. peer has seen this block. - self.scroll_wire - .state_mut() - .entry(peer_id) - .or_insert_with(|| LruCache::new(LRU_CACHE_SIZE)) - .insert(block_hash); // Update the state of the block cache i.e. we have seen this block. - self.blocks_seen.insert((block.hash_slow(), signature)); + self.blocks_seen.insert((block_hash, signature)); Some(ScrollNetworkManagerEvent::NewBlock(NewBlockWithPeer { peer_id, @@ -267,13 +356,13 @@ impl< } /// Handler for received messages from the [`ScrollNetworkHandle`]. - fn on_handle_message(&mut self, message: NetworkHandleMessage) { + async fn on_handle_message(&mut self, message: NetworkHandleMessage) { match message { NetworkHandleMessage::AnnounceBlock { block, signature } => { - self.announce_block(NewBlock::new(signature, block)) + self.announce_block(NewBlock::new(signature, block)).await } NetworkHandleMessage::BlockImportOutcome(outcome) => { - self.on_block_import_result(outcome); + self.on_block_import_result(outcome).await; } NetworkHandleMessage::Shutdown(tx) => { tx.send(()).unwrap() @@ -292,13 +381,13 @@ impl< } /// Handler for the result of a block import. - fn on_block_import_result(&mut self, outcome: BlockImportOutcome) { + async fn on_block_import_result(&mut self, outcome: BlockImportOutcome) { let BlockImportOutcome { peer, result } = outcome; match result { Ok(BlockValidation::ValidBlock { new_block: msg }) | Ok(BlockValidation::ValidHeader { new_block: msg }) => { trace!(target: "scroll::network::manager", peer_id = ?peer, block = %Into::::into(&msg.block), "Block import successful - announcing block to network"); - self.announce_block(msg); + self.announce_block(msg).await; } Err(BlockImportError::Consensus(err)) => { trace!(target: "scroll::network::manager", peer_id = ?peer, ?err, "Block import failed - consensus error - penalizing peer"); @@ -310,6 +399,11 @@ impl< self.inner_network_handle .reputation_change(peer, reth_network_api::ReputationChangeKind::BadBlock); } + Err(BlockImportError::L2FinalizedBlockReceived(peer)) => { + trace!(target: "scroll::network::manager", peer_id = ?peer, "Block import failed - finalized block received - penalizing peer"); + self.inner_network_handle + .reputation_change(peer, reth_network_api::ReputationChangeKind::BadBlock); + } } } @@ -339,25 +433,29 @@ impl< .and_then(|i| Signature::from_raw(&extra_data[i..]).ok()) { let block_hash = block.hash_slow(); - if self.blocks_seen.contains(&(block_hash, signature)) { + + // Check if we have already received this block from this peer via eth-wire, if so, + // penalize the peer. + if self.mark_block_seen(peer_id, block_hash) { + tracing::warn!(target: "scroll::bridge::import", peer_id = ?peer_id, block = ?block_hash, "Peer sent duplicate block via eth-wire, penalizing"); + self.inner_network_handle + .reputation_change(peer_id, reth_network_api::ReputationChangeKind::BadBlock); return None; } - trace!(target: "scroll::bridge::import", peer_id = %peer_id, block_hash = %block_hash, signature = %signature.to_string(), extra_data = %extra_data.to_string(), "Received new block from eth-wire protocol"); - - // Update the state of the peer cache i.e. peer has seen this block. - self.scroll_wire - .state_mut() - .entry(peer_id) - .or_insert_with(|| LruCache::new(LRU_CACHE_SIZE)) - .insert(block_hash); - - // Update the state of the block cache i.e. we have seen this block. - self.blocks_seen.insert((block_hash, signature)); - Some(ScrollNetworkManagerEvent::NewBlock(NewBlockWithPeer { - peer_id, - block, - signature, - })) + + if self.blocks_seen.contains(&(block_hash, signature)) { + None + } else { + trace!(target: "scroll::bridge::import", peer_id = %peer_id, block_hash = %block_hash, signature = %signature.to_string(), extra_data = %extra_data.to_string(), "Received new block from eth-wire protocol"); + + // Update the state of the block cache i.e. we have seen this block. + self.blocks_seen.insert((block_hash, signature)); + Some(ScrollNetworkManagerEvent::NewBlock(NewBlockWithPeer { + peer_id, + block, + signature, + })) + } } else { tracing::warn!(target: "scroll::bridge::import", peer_id = %peer_id, "Failed to extract signature from block extra data, penalizing peer"); self.inner_network_handle @@ -367,52 +465,6 @@ impl< } } -impl< - N: FullNetwork, - CS: ScrollHardforks + EthChainSpec + Send + Sync + 'static, - > Future for ScrollNetworkManager -{ - type Output = (); - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let this = self.get_mut(); - - // We handle the messages from the network handle. - loop { - match this.from_handle_rx.poll_next_unpin(cx) { - // A message has been received from the network handle. - Poll::Ready(Some(message)) => { - this.on_handle_message(message); - } - // All network handles have been dropped so we can shutdown the network. - Poll::Ready(None) => { - return Poll::Ready(()); - } - // No additional messages exist break. - Poll::Pending => break, - } - } - - // Next we handle the scroll-wire events. - while let Poll::Ready(event) = this.scroll_wire.poll_unpin(cx) { - if let Some(event) = this.on_scroll_wire_event(event) { - this.event_sender.notify(event); - } - } - - // Handle blocks received from the eth-wire protocol. - while let Some(Poll::Ready(Some(block))) = - this.eth_wire_listener.as_mut().map(|new_block_rx| new_block_rx.poll_next_unpin(cx)) - { - if let Some(event) = this.handle_eth_wire_block(block) { - this.event_sender.notify(event); - } - } - - Poll::Pending - } -} - /// Compute totally difficulty for a given block number. fn compute_td(td_constant: U128, block_number: u64) -> U128 { td_constant.saturating_add(U128::from(block_number)) diff --git a/crates/node/src/args.rs b/crates/node/src/args.rs index 9d482225..f7456b0c 100644 --- a/crates/node/src/args.rs +++ b/crates/node/src/args.rs @@ -364,7 +364,7 @@ impl ScrollRollupNodeConfig { td_constant(chain_spec.chain().named()), authorized_signer, ); - ctx.task_executor.spawn(scroll_network_manager); + ctx.task_executor.spawn(scroll_network_manager.run()); tracing::info!(target: "scroll::node::args", fcs = ?fcs, payload_building_duration = ?self.sequencer_args.payload_building_duration, "Starting engine driver"); let engine = Engine::new(Arc::new(engine_api), fcs); diff --git a/crates/node/src/node.rs b/crates/node/src/node.rs index e2bc8a69..4086ebcd 100644 --- a/crates/node/src/node.rs +++ b/crates/node/src/node.rs @@ -69,6 +69,17 @@ where *self.scroll_wire_events.try_lock().unwrap() = Some(events); + let mut network_builder = ScrollNetworkBuilder::new( + self.config.database.clone().expect("database is set via hydration"), + ) + .with_signer(self.config.network_args.signer_address); + + // Only add scroll-wire sub-protocol if enabled + if self.config.network_args.enable_scroll_wire { + network_builder = + network_builder.with_sub_protocol(scroll_wire_handler.into_rlpx_sub_protocol()); + } + ScrollNode::components() .payload(BasicPayloadServiceBuilder::new(ScrollPayloadBuilderBuilder { payload_building_time_limit: Duration::from_millis( @@ -77,13 +88,7 @@ where best_transactions: (), block_da_size_limit: Some(constants::DEFAULT_PAYLOAD_SIZE_LIMIT), })) - .network( - ScrollNetworkBuilder::new( - self.config.database.clone().expect("database is set via hydration"), - ) - .with_sub_protocol(scroll_wire_handler.into_rlpx_sub_protocol()) - .with_signer(self.config.network_args.signer_address), - ) + .network(network_builder) } fn add_ons(&self) -> Self::AddOns { diff --git a/crates/node/tests/e2e.rs b/crates/node/tests/e2e.rs index 70922a85..c77589ba 100644 --- a/crates/node/tests/e2e.rs +++ b/crates/node/tests/e2e.rs @@ -284,6 +284,101 @@ async fn can_penalize_peer_for_invalid_signature() -> eyre::Result<()> { Ok(()) } +/// Tests that peers are penalized for sending duplicate unfinalized blocks via scroll-wire. +#[tokio::test] +async fn can_penalize_peer_for_duplicate_block_via_scroll_wire() -> eyre::Result<()> { + reth_tracing::init_test_tracing(); + + // Create 2 nodes with scroll-wire enabled + let mut fixture = TestFixture::builder() + .sequencer() + .followers(1) + .block_time(0) + .allow_empty_blocks(true) + .payload_building_duration(1000) + .build() + .await?; + + // Set the L1 to synced on the sequencer node + fixture.l1().for_node(0).sync().await?; + fixture.expect_event_on(0).l1_synced().await?; + + // Build a block + let block = fixture.build_block().expect_tx_count(0).build_and_await_block().await?; + + // Wait for node1 to receive the block + fixture.expect_event_on(1).new_block_received().await?; + + // Check initial reputation of node 0 from node 1's perspective + fixture.check_reputation_on(1).of_node(0).await?.equals(0).await?; + + // Send the same block again (duplicate) + fixture + .network_on(0) + .announce_block(block.clone(), Signature::new(U256::from(1), U256::from(1), false)) + .await?; + + // Wait for reputation to decrease due to duplicate block detection + fixture + .check_reputation_on(1) + .of_node(0) + .await? + .with_timeout(Duration::from_secs(5)) + .with_poll_interval(Duration::from_millis(10)) + .eventually_less_than(0) + .await?; + + Ok(()) +} + +/// Tests that peers are penalized for sending duplicate unfinalized blocks via eth-wire. +#[tokio::test] +async fn can_penalize_peer_for_duplicate_block_via_eth_wire() -> eyre::Result<()> { + reth_tracing::init_test_tracing(); + + // Create 2 nodes with scroll-wire disabled + let mut fixture = TestFixture::builder() + .sequencer() + .followers(1) + .block_time(0) + .allow_empty_blocks(true) + .with_scroll_wire(false) + .payload_building_duration(1000) + .build() + .await?; + + // Set the L1 to synced on the sequencer node + fixture.l1().for_node(0).sync().await?; + fixture.expect_event_on(0).l1_synced().await?; + + // Build a block + let block = fixture.build_block().expect_tx_count(0).build_and_await_block().await?; + + // Wait for node1 to receive the block + fixture.expect_event_on(1).new_block_received().await?; + + // Check initial reputation of node 0 from node 1's perspective + fixture.check_reputation_on(1).of_node(0).await?.equals(0).await?; + + // Send the same block again (duplicate) + fixture + .network_on(0) + .announce_block(block.clone(), Signature::new(U256::from(1), U256::from(1), false)) + .await?; + + // Wait for reputation to decrease due to duplicate block detection + fixture + .check_reputation_on(1) + .of_node(0) + .await? + .with_timeout(Duration::from_secs(5)) + .with_poll_interval(Duration::from_millis(10)) + .eventually_less_than(0) + .await?; + + Ok(()) +} + #[allow(clippy::large_stack_frames)] #[tokio::test] async fn can_forward_tx_to_sequencer() -> eyre::Result<()> { @@ -498,7 +593,7 @@ async fn can_bridge_blocks() -> eyre::Result<()> { None, ) .await; - tokio::spawn(scroll_network); + tokio::spawn(scroll_network.run()); let mut scroll_network_events = scroll_network_handle.event_listener().await; // Connect the scroll-wire node to the scroll NetworkManager. @@ -1814,6 +1909,7 @@ async fn can_gossip_over_eth_wire() -> eyre::Result<()> { .followers(1) .with_sequencer_auto_start(true) .block_time(40) + .with_scroll_wire(false) .build() .await?; diff --git a/crates/scroll-wire/Cargo.toml b/crates/scroll-wire/Cargo.toml index d98dd7f4..56904800 100644 --- a/crates/scroll-wire/Cargo.toml +++ b/crates/scroll-wire/Cargo.toml @@ -25,6 +25,7 @@ rollup-node-signer.workspace = true # misc futures.workspace = true +thiserror.workspace = true tokio = { workspace = true, features = ["full"] } tokio-stream.workspace = true tracing.workspace = true diff --git a/crates/scroll-wire/src/error.rs b/crates/scroll-wire/src/error.rs new file mode 100644 index 00000000..8b54f7c2 --- /dev/null +++ b/crates/scroll-wire/src/error.rs @@ -0,0 +1,12 @@ +use reth_network_api::PeerId; + +/// Errors that can occur when announcing a block. +#[derive(Debug, Clone, thiserror::Error)] +pub enum AnnounceBlockError { + /// The peer is not connected. + #[error("Peer {0} is not connected")] + PeerNotConnected(PeerId), + /// Failed to send the block to the peer. + #[error("Failed to send block to peer {0}")] + SendFailed(PeerId), +} diff --git a/crates/scroll-wire/src/lib.rs b/crates/scroll-wire/src/lib.rs index 886b06ba..8612e04d 100644 --- a/crates/scroll-wire/src/lib.rs +++ b/crates/scroll-wire/src/lib.rs @@ -4,6 +4,10 @@ mod config; pub use config::ScrollWireConfig; mod connection; + +mod error; +pub use error::AnnounceBlockError; + mod manager; pub use manager::{ScrollWireManager, LRU_CACHE_SIZE}; diff --git a/crates/scroll-wire/src/manager.rs b/crates/scroll-wire/src/manager.rs index 10a6b1dd..ac14a5c5 100644 --- a/crates/scroll-wire/src/manager.rs +++ b/crates/scroll-wire/src/manager.rs @@ -1,7 +1,8 @@ -use crate::protocol::{NewBlock, ScrollMessage, ScrollWireEvent}; -use alloy_primitives::B256; +use crate::{ + error::AnnounceBlockError, + protocol::{NewBlock, ScrollMessage, ScrollWireEvent}, +}; use futures::StreamExt; -use reth_network::cache::LruCache; use reth_network_api::PeerId; use std::{ collections::{hash_map::Entry, HashMap}, @@ -23,46 +24,43 @@ pub struct ScrollWireManager { events: UnboundedReceiverStream, /// A map of connections to peers. connections: HashMap>, - /// A map of the state of the scroll wire protocol. Currently the state for each peer - /// is just a cache of the last 100 blocks seen by each peer. - state: HashMap>, } impl ScrollWireManager { /// Creates a new [`ScrollWireManager`] instance. pub fn new(events: UnboundedReceiver) -> Self { trace!(target: "scroll::wire::manager", "Creating new ScrollWireManager instance"); - Self { events: events.into(), connections: HashMap::new(), state: HashMap::new() } + Self { events: events.into(), connections: HashMap::new() } } /// Announces a new block to the specified peer. - pub fn announce_block(&mut self, peer_id: PeerId, block: &NewBlock, hash: B256) { - if let Entry::Occupied(to_connection) = self.connections.entry(peer_id) { - // We send the block to the peer. If we receive an error we remove the peer from the - // connections map and delete its state as the connection is no longer valid. - if to_connection.get().send(ScrollMessage::new_block(block.clone())).is_err() { - trace!(target: "scroll::wire::manager", peer_id = %peer_id, "Failed to send block to peer - dropping peer."); - self.state.remove(&peer_id); - to_connection.remove(); - } else { - // Upon successful sending of the block we update the state of the peer. - trace!(target: "scroll::wire::manager", peer_id = %peer_id, "Announced block to peer"); - self.state - .entry(peer_id) - .or_insert_with(|| LruCache::new(LRU_CACHE_SIZE)) - .insert(hash); - } + pub fn announce_block( + &mut self, + peer_id: PeerId, + block: &NewBlock, + ) -> Result<(), AnnounceBlockError> { + let Entry::Occupied(to_connection) = self.connections.entry(peer_id) else { + return Err(AnnounceBlockError::PeerNotConnected(peer_id)); + }; + + if to_connection.get().send(ScrollMessage::new_block(block.clone())).is_err() { + trace!(target: "scroll::wire::manager", peer_id = %peer_id, "Failed to send block to peer - dropping peer."); + to_connection.remove(); + return Err(AnnounceBlockError::SendFailed(peer_id)); } + + trace!(target: "scroll::wire::manager", peer_id = %peer_id, "Announced block to peer"); + Ok(()) } - /// Returns the state of the `ScrollWire` protocol. - pub const fn state(&self) -> &HashMap> { - &self.state + /// Returns an iterator over the connected peer IDs. + pub fn connected_peers(&self) -> impl Iterator { + self.connections.keys() } - /// Returns a mutable reference to the state of the `ScrollWire` protocol. - pub const fn state_mut(&mut self) -> &mut HashMap> { - &mut self.state + /// Checks if a peer is connected to the manager via scroll-wire. + pub fn is_connected(&self, peer_id: PeerId) -> bool { + self.connections.contains_key(&peer_id) } } @@ -94,7 +92,6 @@ impl Future for ScrollWireManager { direction ); this.connections.insert(peer_id, to_connection); - this.state.insert(peer_id, LruCache::new(100)); } None => break, }