From 174ae3244e2dd370e8f9107c40731a885e95a6c3 Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Tue, 17 Feb 2026 12:17:30 +0000 Subject: [PATCH] fix(evm): remove system tx presence check from executor finish() System transaction presence is already validated by TempoConsensus in validate_block_pre_execution(). The redundant check in TempoBlockExecutor::finish() broke eth_simulateV1 because simulated blocks never include end-of-block system transactions. Amp-Thread-ID: https://ampcode.com/threads/T-019c6b81-2dfa-729c-be92-a812fb16e22c Co-authored-by: Amp --- crates/evm/src/block.rs | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/crates/evm/src/block.rs b/crates/evm/src/block.rs index 337809ec01..27d1314536 100644 --- a/crates/evm/src/block.rs +++ b/crates/evm/src/block.rs @@ -466,15 +466,6 @@ where fn finish( self, ) -> Result<(Self::Evm, BlockExecutionResult), BlockExecutionError> { - if self.section - != (BlockSection::System { - seen_subblocks_signatures: true, - }) - { - return Err( - BlockValidationError::msg("end-of-block system transactions not seen").into(), - ); - } self.inner.finish() } @@ -1103,28 +1094,9 @@ mod tests { fn test_finish() { let chainspec = test_chainspec(); let mut db = State::builder().with_bundle_update().build(); - - // Set section to System with seen_subblocks_signatures - let executor = TestExecutorBuilder::default() - .with_section(BlockSection::System { - seen_subblocks_signatures: true, - }) - .build(&mut db, &chainspec); - - let result = executor.finish(); - assert!(result.is_ok()); - } - - #[test] - fn test_finish_system_tx_not_seen() { - let chainspec = test_chainspec(); - let mut db = State::builder().with_bundle_update().build(); let executor = TestExecutorBuilder::default().build(&mut db, &chainspec); - // Section is StartOfBlock, so system tx not seen let result = executor.finish(); - assert!(result.is_err()); - let err = result.err().unwrap(); - assert_eq!(err.to_string(), "end-of-block system transactions not seen"); + assert!(result.is_ok()); } }