Skip to content

Commit 2d86bfb

Browse files
committed
Merge branch 'master' into prerelease/v1
2 parents 3fec9f4 + 159a354 commit 2d86bfb

File tree

18 files changed

+1480
-1007
lines changed

18 files changed

+1480
-1007
lines changed

Cargo.lock

Lines changed: 1104 additions & 780 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -12,73 +12,73 @@ name = "reth"
1212
path = "src/main.rs"
1313

1414
[dependencies]
15-
gnosis-primitives = { git = "https://github.com/gnosischain/gnosis-stuff.git", tag = "v0.1.8" }
15+
gnosis-primitives = { git = "https://github.com/gnosischain/gnosis-stuff.git", tag = "v0.1.91" }
1616

17-
reth = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
18-
reth-evm = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
19-
reth-revm = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
20-
reth-engine-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
21-
reth-engine-local = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
22-
reth-node-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
23-
reth-node-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
24-
reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
25-
reth-node-metrics = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
26-
reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
27-
reth-ethereum-consensus = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
28-
reth-chainspec = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
29-
reth-chain-state = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
30-
reth-consensus = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
31-
reth-cli = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
32-
reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
33-
reth-cli-runner = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
34-
reth-cli-util = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
35-
reth-prune-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
36-
reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
37-
reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
38-
reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
39-
reth-ethereum-payload-builder = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
40-
reth-ethereum-engine-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
41-
reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
42-
reth-fs-util = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
43-
reth-db = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
44-
reth-db-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
45-
reth-db-common = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
46-
reth-etl = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
47-
reth-era = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
48-
reth-era-downloader = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
49-
reth-era-utils = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
50-
reth-errors = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
51-
reth-eth-wire-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
52-
reth-network-peers = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
53-
reth-primitives = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
54-
reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
55-
reth-provider = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2", features = [
17+
reth = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
18+
reth-evm = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
19+
reth-revm = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
20+
reth-engine-primitives = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
21+
reth-engine-local = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
22+
reth-node-api = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
23+
reth-node-builder = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
24+
reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
25+
reth-node-metrics = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
26+
reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
27+
reth-ethereum-consensus = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
28+
reth-chainspec = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
29+
reth-chain-state = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
30+
reth-consensus = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
31+
reth-cli = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
32+
reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
33+
reth-cli-runner = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
34+
reth-cli-util = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
35+
reth-prune-types = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
36+
reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
37+
reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
38+
reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
39+
reth-ethereum-payload-builder = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
40+
reth-ethereum-engine-primitives = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
41+
reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
42+
reth-fs-util = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
43+
reth-db = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
44+
reth-db-api = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
45+
reth-db-common = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
46+
reth-etl = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
47+
reth-era = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
48+
reth-era-downloader = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
49+
reth-era-utils = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
50+
reth-errors = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
51+
reth-eth-wire-types = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
52+
reth-network-peers = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
53+
reth-primitives = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
54+
reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
55+
reth-provider = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis", features = [
5656
"test-utils",
5757
] }
58-
reth-rpc = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
59-
reth-stages = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
60-
reth-stages-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
61-
reth-stages-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
62-
reth-static-file-types = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
63-
reth-stateless = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
64-
reth-storage-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
65-
reth-tracing = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
66-
reth-trie = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
67-
reth-trie-db = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
68-
reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", tag = "v1.8.2" }
58+
reth-rpc = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
59+
reth-stages = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
60+
reth-stages-api = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
61+
reth-stages-types = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
62+
reth-static-file-types = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
63+
reth-stateless = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
64+
reth-storage-api = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
65+
reth-tracing = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
66+
reth-trie = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
67+
reth-trie-db = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
68+
reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", branch = "v1.9.3-gnosis" }
6969

7070
eyre = "0.6"
7171
clap = { version = "4.5.6", features = ["derive"] }
7272
derive_more = { version = "2", default-features = false, features = ["full"] }
7373

7474
# revm
75-
revm = { version = "29.0.0", features = ["std"], default-features = false }
76-
revm-database = { version = "7.0.5", default-features = false }
77-
revm-state = { version = "7.0.5", default-features = false }
78-
revm-primitives = { version = "20.2.1", features = [
75+
revm = { version = "31.0.2", features = ["std"], default-features = false }
76+
revm-database = { version = "9.0.5", default-features = false }
77+
revm-state = { version = "8.1.1", default-features = false }
78+
revm-primitives = { version = "21.0.2", features = [
7979
"std",
8080
], default-features = false }
81-
revm-inspectors = "0.29.0"
81+
revm-inspectors = "0.32.0"
8282

8383
futures-util = { version = "0.3", default-features = false }
8484
serde = { version = "1.0", features = ["derive"], default-features = false }
@@ -91,21 +91,21 @@ thiserror-no-std = { version = "2.0.2", default-features = false }
9191

9292
# eth
9393
alloy-chains = { version = "0.2.5", default-features = false }
94-
alloy-dyn-abi = "1.3.1"
95-
alloy-evm = { version = "0.21.0", default-features = false }
96-
alloy-primitives = { version = "1.3.1", default-features = false }
97-
alloy-sol-macro = "1.3.1"
98-
alloy-sol-types = "1.3.1"
94+
alloy-dyn-abi = "1.4.1"
95+
alloy-evm = { version = "0.23.0", default-features = false }
96+
alloy-primitives = { version = "1.4.1", default-features = false }
97+
alloy-sol-macro = "1.4.1"
98+
alloy-sol-types = "1.4.1"
9999

100100
alloy-rlp = { version = "0.3.10", default-features = false }
101101
alloy-trie = { version = "0.9.1", default-features = false }
102102

103-
alloy-consensus = { version = "1.0.37", default-features = false }
104-
alloy-eips = { version = "1.0.37", default-features = false }
105-
alloy-genesis = { version = "1.0.37", default-features = false }
106-
alloy-network = { version = "1.0.37", default-features = false }
107-
alloy-rpc-types-eth = { version = "1.0.37", default-features = false }
108-
alloy-serde = { version = "1.0.37", default-features = false }
103+
alloy-consensus = { version = "1.0.41", default-features = false }
104+
alloy-eips = { version = "1.0.41", default-features = false }
105+
alloy-genesis = { version = "1.0.41", default-features = false }
106+
alloy-network = { version = "1.0.41", default-features = false }
107+
alloy-rpc-types-eth = { version = "1.0.41", default-features = false }
108+
alloy-serde = { version = "1.0.41", default-features = false }
109109

110110
rayon = "1.7"
111111

scripts/chainspecs/gnosis.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"shanghaiTime": 1690889660,
1717
"cancunTime": 1710181820,
1818
"pragueTime": 1746021820,
19+
"balancerHardforkTime": 1766419900,
1920
"minBlobGasPrice": 1000000000,
2021
"maxBlobGasPerBlock": 262144,
2122
"targetBlobGasPerBlock": 131072,
@@ -24,6 +25,9 @@
2425
"19040000": "0x6BBe78ee9e474842Dbd4AB4987b3CeFE88426A92"
2526
},
2627
"blockRewardsContract": "0x481c034c6d9441db23Ea48De68BCAe812C5d39bA",
28+
"balancerHardforkBytecodes": {
29+
"0x506D1f9EFe24f0d47853aDca907EB8d89AE03207": "60806040526004361061002c575f3560e01c80638da5cb5b14610037578063b61d27f61461006157610033565b3661003357005b5f5ffd5b348015610042575f5ffd5b5061004b610091565b604051610058919061030a565b60405180910390f35b61007b600480360381019061007691906103e9565b6100a9565b60405161008891906104ca565b60405180910390f35b737be579238a6a621601eae2c346cda54d68f7dfee81565b60606100b3610247565b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011890610544565b60405180910390fd5b5f8573ffffffffffffffffffffffffffffffffffffffff163b1161017a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610171906105ac565b60405180910390fd5b5f5f8673ffffffffffffffffffffffffffffffffffffffff168686866040516101a4929190610606565b5f6040518083038185875af1925050503d805f81146101de576040519150601f19603f3d011682016040523d82523d5f602084013e6101e3565b606091505b50915091508161023a575f815111156101ff5780518060208301fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023190610668565b60405180910390fd5b8092505050949350505050565b737be579238a6a621601eae2c346cda54d68f7dfee73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c0906106d0565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102f4826102cb565b9050919050565b610304816102ea565b82525050565b5f60208201905061031d5f8301846102fb565b92915050565b5f5ffd5b5f5ffd5b610334816102ea565b811461033e575f5ffd5b50565b5f8135905061034f8161032b565b92915050565b5f819050919050565b61036781610355565b8114610371575f5ffd5b50565b5f813590506103828161035e565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126103a9576103a8610388565b5b8235905067ffffffffffffffff8111156103c6576103c561038c565b5b6020830191508360018202830111156103e2576103e1610390565b5b9250929050565b5f5f5f5f6060858703121561040157610400610323565b5b5f61040e87828801610341565b945050602061041f87828801610374565b935050604085013567ffffffffffffffff8111156104405761043f610327565b5b61044c87828801610394565b925092505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61049c8261045a565b6104a68185610464565b93506104b6818560208601610474565b6104bf81610482565b840191505092915050565b5f6020820190508181035f8301526104e28184610492565b905092915050565b5f82825260208201905092915050565b7f7a65726f207461726765740000000000000000000000000000000000000000005f82015250565b5f61052e600b836104ea565b9150610539826104fa565b602082019050919050565b5f6020820190508181035f83015261055b81610522565b9050919050565b7f6e6f74206120636f6e74726163740000000000000000000000000000000000005f82015250565b5f610596600e836104ea565b91506105a182610562565b602082019050919050565b5f6020820190508181035f8301526105c38161058a565b9050919050565b5f81905092915050565b828183375f83830152505050565b5f6105ed83856105ca565b93506105fa8385846105d4565b82840190509392505050565b5f6106128284866105e2565b91508190509392505050565b7f63616c6c206661696c65640000000000000000000000000000000000000000005f82015250565b5f610652600b836104ea565b915061065d8261061e565b602082019050919050565b5f6020820190508181035f83015261067f81610646565b9050919050565b7f6e6f74206f776e657200000000000000000000000000000000000000000000005f82015250565b5f6106ba6009836104ea565b91506106c582610686565b602082019050919050565b5f6020820190508181035f8301526106e7816106ae565b905091905056fea2646970667358221220a8334a26f31db2a806db6c1bcc4107caa8ec5cbdc7b742cfec99b4f0cca066a364736f6c634300081e0033"
30+
},
2731
"aura": {
2832
"stepDuration": 5,
2933
"blockReward": 0,

src/block.rs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ pub struct GnosisBlockExecutor<'a, Evm, R: ReceiptBuilder> {
7171
/// Total gas used by transactions in this block.
7272
gas_used: u64,
7373

74+
/// Blob gas used by the block.
75+
/// Before cancun activation, this is always 0.
76+
pub blob_gas_used: u64,
77+
7478
// Gnosis-specific fields
7579
block_rewards_address: Address,
7680
}
@@ -92,6 +96,7 @@ where
9296
ctx,
9397
receipts: Vec::new(),
9498
gas_used: 0,
99+
blob_gas_used: 0,
95100
system_caller: SystemCaller::new(spec.clone()),
96101
spec: spec.clone(),
97102
receipt_builder,
@@ -119,12 +124,12 @@ where
119124
// Set state clear flag if the block is after the Spurious Dragon hardfork.
120125
let state_clear_flag = self
121126
.spec
122-
.is_spurious_dragon_active_at_block(self.evm.block().number.saturating_to());
127+
.is_spurious_dragon_active_at_block(self.evm.block().number().saturating_to());
123128
self.evm.db_mut().set_state_clear_flag(state_clear_flag);
124129

125130
// Only apply bytecode rewrites at the hardfork activation block
126131
// (active in current block but NOT active in parent block)
127-
let current_timestamp: u64 = self.evm.block().timestamp.to();
132+
let current_timestamp: u64 = self.evm.block().timestamp().to();
128133
let is_balancer_active_now = self
129134
.spec
130135
.is_balancer_hardfork_active_at_timestamp(current_timestamp);
@@ -156,7 +161,7 @@ where
156161
) -> Result<ResultAndState<<Self::Evm as Evm>::HaltReason>, BlockExecutionError> {
157162
// The sum of the transaction's gas limit, Tg, and the gas utilized in this block prior,
158163
// must be no greater than the block's gasLimit.
159-
let block_available_gas = self.evm.block().gas_limit - self.gas_used;
164+
let block_available_gas = self.evm.block().gas_limit() - self.gas_used;
160165

161166
if tx.tx().gas_limit() > block_available_gas {
162167
return Err(
@@ -190,6 +195,16 @@ where
190195
// append gas used
191196
self.gas_used += gas_used;
192197

198+
// only determine cancun fields when active
199+
if self
200+
.spec
201+
.is_cancun_active_at_timestamp(self.evm.block().timestamp().saturating_to())
202+
{
203+
let tx_blob_gas_used = tx.tx().blob_gas_used().unwrap_or_default();
204+
205+
self.blob_gas_used = self.blob_gas_used.saturating_add(tx_blob_gas_used);
206+
}
207+
193208
// Push transaction changeset and calculate header bloom filter for receipt.
194209
self.receipts
195210
.push(self.receipt_builder.build_receipt(ReceiptBuilderCtx {
@@ -219,7 +234,7 @@ where
219234

220235
let requests = if self
221236
.spec
222-
.is_prague_active_at_timestamp(self.evm.block().timestamp.to())
237+
.is_prague_active_at_timestamp(self.evm.block().timestamp().to())
223238
{
224239
// Collect all EIP-6110 deposits
225240
let deposit_requests = parse_deposits_from_receipts(&self.spec, &self.receipts)?;
@@ -287,6 +302,7 @@ where
287302
receipts: self.receipts,
288303
requests,
289304
gas_used: self.gas_used,
305+
blob_gas_used: self.blob_gas_used,
290306
},
291307
))
292308
}

0 commit comments

Comments
 (0)