From 342b5967c02c4d566ccb8cb260ddb01766cd1695 Mon Sep 17 00:00:00 2001 From: Soubhik Singha Mahapatra Date: Sun, 18 Jan 2026 18:02:48 +0530 Subject: [PATCH 1/8] chore: copy and add bal changes --- Cargo.toml | 12 ++++++++++++ crates/evm/Cargo.toml | 13 +++++-------- crates/evm/src/block/mod.rs | 5 ++++- crates/evm/src/block/state_changes.rs | 6 ++---- crates/evm/src/eth/block.rs | 26 +++++++++++++++++++++++++- crates/op-evm/src/block/mod.rs | 1 + 6 files changed, 49 insertions(+), 14 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 886edccb..197a6545 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,6 +39,9 @@ alloy-evm = { version = "0.26.3", path = "crates/evm", default-features = false alloy-op-evm = { version = "0.26.3", path = "crates/op-evm", default-features = false } # alloy + +alloy-eip7928 = { version = "0.3.0", default-features = false } + alloy-eip2124 = { version = "0.2", default-features = false } alloy-chains = { version = "0.2.0", default-features = false } alloy-eips = { version = "1.0.34", default-features = false } @@ -65,4 +68,13 @@ derive_more = { version = "2", default-features = false, features = ["full"] } serde = { version = "1", default-features = false, features = ["derive"] } thiserror = { version = "2.0.0", default-features = false } serde_json = "1" +tracing = { version = "0.1.41", default-features = false } test-case = "3" + +[patch.crates-io] +# revm = { git = "https://github.com/bluealloy/revm.git", branch = "rakita/bal" } +# op-revm = { git = "https://github.com/bluealloy/revm.git", branch = "rakita/bal" } +alloy-eips = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-1" } +alloy-consensus = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-1" } +alloy-rpc-types-eth = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-1" } +alloy-rpc-types-engine = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-1" } diff --git a/crates/evm/Cargo.toml b/crates/evm/Cargo.toml index 7491db42..260a1c11 100644 --- a/crates/evm/Cargo.toml +++ b/crates/evm/Cargo.toml @@ -30,6 +30,7 @@ op-alloy = { workspace = true, optional = true } auto_impl.workspace = true derive_more.workspace = true thiserror.workspace = true +tracing.workspace = true [dev-dependencies] alloy-primitives = { workspace = true, features = ["serde"] } @@ -38,10 +39,7 @@ test-case.workspace = true [features] default = ["std"] -secp256k1 = [ - "std", - "alloy-consensus/secp256k1", -] +secp256k1 = ["std", "alloy-consensus/secp256k1"] std = [ "alloy-primitives/std", "revm/std", @@ -53,11 +51,10 @@ std = [ "thiserror/std", "op-alloy?/std", "alloy-rpc-types-eth?/std", - "alloy-rpc-types-engine?/std" -] -gmp = [ - "revm/gmp", + "alloy-rpc-types-engine?/std", + "tracing/std", ] +gmp = ["revm/gmp"] op = ["op-revm", "op-alloy", "alloy-op-hardforks"] overrides = ["dep:alloy-rpc-types-eth"] call-util = ["overrides"] diff --git a/crates/evm/src/block/mod.rs b/crates/evm/src/block/mod.rs index e65ffed9..033e991d 100644 --- a/crates/evm/src/block/mod.rs +++ b/crates/evm/src/block/mod.rs @@ -2,7 +2,7 @@ use crate::{Database, Evm, EvmFactory, FromRecoveredTx, FromTxWithEncoded, RecoveredTx, ToTxEnv}; use alloc::{boxed::Box, vec::Vec}; -use alloy_eips::eip7685::Requests; +use alloy_eips::{eip7685::Requests, eip7928::BlockAccessList}; use revm::{ context::result::{ExecutionResult, ResultAndState}, database::State, @@ -37,6 +37,8 @@ pub struct BlockExecutionResult { pub gas_used: u64, /// Blob gas used by the block. pub blob_gas_used: u64, + /// Block Access List of the block + pub block_access_list: Option, } impl Default for BlockExecutionResult { @@ -46,6 +48,7 @@ impl Default for BlockExecutionResult { requests: Default::default(), gas_used: 0, blob_gas_used: 0, + block_access_list: None, } } } diff --git a/crates/evm/src/block/state_changes.rs b/crates/evm/src/block/state_changes.rs index 5587317d..06fd8acf 100644 --- a/crates/evm/src/block/state_changes.rs +++ b/crates/evm/src/block/state_changes.rs @@ -96,10 +96,8 @@ pub fn insert_post_block_withdrawals_balance_increments( if spec.is_shanghai_active_at_timestamp(block_timestamp) { if let Some(withdrawals) = withdrawals { for withdrawal in withdrawals { - if withdrawal.amount > 0 { - *balance_increments.entry(withdrawal.address).or_default() += - withdrawal.amount_wei().to::(); - } + *balance_increments.entry(withdrawal.address).or_default() += + withdrawal.amount_wei().to::(); } } } diff --git a/crates/evm/src/eth/block.rs b/crates/evm/src/eth/block.rs index 42343212..fae482c7 100644 --- a/crates/evm/src/eth/block.rs +++ b/crates/evm/src/eth/block.rs @@ -17,7 +17,9 @@ use crate::{ }; use alloc::{borrow::Cow, boxed::Box, vec::Vec}; use alloy_consensus::{Header, Transaction, TxReceipt}; -use alloy_eips::{eip4895::Withdrawals, eip7685::Requests, Encodable2718}; +use alloy_eips::{ + eip4895::Withdrawals, eip7685::Requests, eip7928::BlockAccessList, Encodable2718, +}; use alloy_hardforks::EthereumHardfork; use alloy_primitives::{Bytes, Log, B256}; use revm::{ @@ -170,6 +172,8 @@ where cumulative_gas_used: self.gas_used, })); + self.evm.db_mut().bump_bal_index(); + // Commit the state changes. self.evm.db_mut().commit(state); @@ -179,6 +183,9 @@ where fn finish( mut self, ) -> Result<(Self::Evm, BlockExecutionResult), BlockExecutionError> { + // + self.evm.db_mut().bump_bal_index(); + let requests = if self .spec .is_prague_active_at_timestamp(self.evm.block().timestamp().saturating_to()) @@ -241,6 +248,22 @@ where }) })?; + let bal = if self + .spec + .is_amsterdam_active_at_timestamp(self.evm.block().timestamp().saturating_to()) + { + if let Some(mut alloy_bal) = self.evm.db_mut().take_built_alloy_bal() { + alloy_bal.sort_by_key(|ac| ac.address); + alloy_bal + } else { + ::tracing::debug!("No Block Access List found in revm db; using default"); + BlockAccessList::default() + } + } else { + BlockAccessList::default() + } + .to_vec(); + Ok(( self.evm, BlockExecutionResult { @@ -248,6 +271,7 @@ where requests, gas_used: self.gas_used, blob_gas_used: self.blob_gas_used, + block_access_list: Some(bal), }, )) } diff --git a/crates/op-evm/src/block/mod.rs b/crates/op-evm/src/block/mod.rs index ddfe1696..bd29522c 100644 --- a/crates/op-evm/src/block/mod.rs +++ b/crates/op-evm/src/block/mod.rs @@ -341,6 +341,7 @@ where requests: Default::default(), gas_used: legacy_gas_used, blob_gas_used: self.da_footprint_used, + block_access_list: None, }, )) } From 55378f90f5c19a4c9cf22c74757c30d7bfd10507 Mon Sep 17 00:00:00 2001 From: Soubhik Singha Mahapatra Date: Tue, 20 Jan 2026 18:47:13 +0530 Subject: [PATCH 2/8] reset --- crates/evm/src/eth/block.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/evm/src/eth/block.rs b/crates/evm/src/eth/block.rs index fae482c7..8b4b88cb 100644 --- a/crates/evm/src/eth/block.rs +++ b/crates/evm/src/eth/block.rs @@ -254,6 +254,7 @@ where { if let Some(mut alloy_bal) = self.evm.db_mut().take_built_alloy_bal() { alloy_bal.sort_by_key(|ac| ac.address); + self.evm.db_mut().bal_state.bal_builder = Some(revm::state::bal::Bal::new()); alloy_bal } else { ::tracing::debug!("No Block Access List found in revm db; using default"); From ff591cb62a94a098a239f6a657706059c9ffa332 Mon Sep 17 00:00:00 2001 From: Ishika Choudhury <117741714+Rimeeeeee@users.noreply.github.com> Date: Mon, 26 Jan 2026 12:36:47 +0530 Subject: [PATCH 3/8] chore: use bal-devnet-2 branch of alloy --- Cargo.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 197a6545..2130cfa3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,7 +74,7 @@ test-case = "3" [patch.crates-io] # revm = { git = "https://github.com/bluealloy/revm.git", branch = "rakita/bal" } # op-revm = { git = "https://github.com/bluealloy/revm.git", branch = "rakita/bal" } -alloy-eips = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-1" } -alloy-consensus = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-1" } -alloy-rpc-types-eth = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-1" } -alloy-rpc-types-engine = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-1" } +alloy-eips = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-2" } +alloy-consensus = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-2" } +alloy-rpc-types-eth = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-2" } +alloy-rpc-types-engine = { git = "https://github.com/Soubhik-10/alloy", branch = "bal-devnet-2" } From 3bd340ee70393fd57dd37306010dcdf03a911cc8 Mon Sep 17 00:00:00 2001 From: Ishika Choudhury <117741714+Rimeeeeee@users.noreply.github.com> Date: Mon, 26 Jan 2026 13:04:55 +0530 Subject: [PATCH 4/8] chore: add provision for missing field in BlockOverrides --- crates/evm/src/overrides.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/evm/src/overrides.rs b/crates/evm/src/overrides.rs index a3f4ee9d..ddcf0b42 100644 --- a/crates/evm/src/overrides.rs +++ b/crates/evm/src/overrides.rs @@ -75,6 +75,7 @@ where random, base_fee, block_hash, + .. } = overrides; if let Some(block_hashes) = block_hash { From 786eecd02c9038f318ecc317ee5c7bbbf2b1f18c Mon Sep 17 00:00:00 2001 From: Ishika Choudhury <117741714+Rimeeeeee@users.noreply.github.com> Date: Mon, 26 Jan 2026 13:39:25 +0530 Subject: [PATCH 5/8] fixes: bump alloy eip7928 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 74bc91ad..dc22660c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ alloy-op-evm = { version = "0.27.0", path = "crates/op-evm", default-features = # alloy -alloy-eip7928 = { version = "0.3.0", default-features = false } +alloy-eip7928 = { version = "0.3.2", default-features = false } alloy-eip2124 = { version = "0.2", default-features = false } alloy-chains = { version = "0.2.0", default-features = false } From 360a061df03d57b97630226503b1ca8c09fe8ec2 Mon Sep 17 00:00:00 2001 From: Ishika Choudhury <117741714+Rimeeeeee@users.noreply.github.com> Date: Mon, 26 Jan 2026 15:08:40 +0530 Subject: [PATCH 6/8] fixes --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index dc22660c..74bc91ad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ alloy-op-evm = { version = "0.27.0", path = "crates/op-evm", default-features = # alloy -alloy-eip7928 = { version = "0.3.2", default-features = false } +alloy-eip7928 = { version = "0.3.0", default-features = false } alloy-eip2124 = { version = "0.2", default-features = false } alloy-chains = { version = "0.2.0", default-features = false } From 6601e9fdf33d9256c830c052d632cefd63fb4eaa Mon Sep 17 00:00:00 2001 From: Ishika Choudhury <117741714+Rimeeeeee@users.noreply.github.com> Date: Mon, 26 Jan 2026 15:54:34 +0530 Subject: [PATCH 7/8] fixes --- crates/evm/src/overrides.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/evm/src/overrides.rs b/crates/evm/src/overrides.rs index ddcf0b42..f3893934 100644 --- a/crates/evm/src/overrides.rs +++ b/crates/evm/src/overrides.rs @@ -75,7 +75,7 @@ where random, base_fee, block_hash, - .. + ..//todo } = overrides; if let Some(block_hashes) = block_hash { From 79df1abd57f9e2f6cdb6837cc1250f5191405407 Mon Sep 17 00:00:00 2001 From: Ishika Choudhury <117741714+Rimeeeeee@users.noreply.github.com> Date: Mon, 26 Jan 2026 17:41:20 +0530 Subject: [PATCH 8/8] fixes --- crates/evm/src/overrides.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/evm/src/overrides.rs b/crates/evm/src/overrides.rs index f3893934..ddcf0b42 100644 --- a/crates/evm/src/overrides.rs +++ b/crates/evm/src/overrides.rs @@ -75,7 +75,7 @@ where random, base_fee, block_hash, - ..//todo + .. } = overrides; if let Some(block_hashes) = block_hash {