From b311fa1dde4679024bb71c560877fda23cec14cc Mon Sep 17 00:00:00 2001 From: Kenil shah Date: Tue, 24 Mar 2026 00:01:07 +0530 Subject: [PATCH 1/3] perf: remove unnecessary clone in transaction execution loop --- crates/stateless-core/src/executor.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/stateless-core/src/executor.rs b/crates/stateless-core/src/executor.rs index c30d40a..5864335 100644 --- a/crates/stateless-core/src/executor.rs +++ b/crates/stateless-core/src/executor.rs @@ -357,16 +357,15 @@ fn execute_transactions( where E: BlockExecutor, E::Receipt: Encodable2718 + TxReceipt, - T: Clone, OpTransaction: TransactionResponse, for<'a> Recovered<&'a T>: ExecutableTx, { executor.apply_pre_execution_changes().map_err(ValidationError::BlockReplayFailed)?; for tx in transactions { - let tx_envelope = tx.inner.clone().into_inner(); - let recovered_tx = Recovered::new_unchecked(&tx_envelope, tx.from()); - executor.execute_transaction(recovered_tx).map_err(ValidationError::BlockReplayFailed)?; + executor + .execute_transaction(tx.inner.inner.as_recovered_ref()) + .map_err(ValidationError::BlockReplayFailed)?; } let execution_result = From e071b75fa6d3203e0b4dcd1d674c61463bd5ffb7 Mon Sep 17 00:00:00 2001 From: "liquan.eth" Date: Thu, 9 Apr 2026 07:29:37 +0800 Subject: [PATCH 2/3] add test --- crates/stateless-core/src/executor.rs | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/crates/stateless-core/src/executor.rs b/crates/stateless-core/src/executor.rs index 5864335..ef19fc3 100644 --- a/crates/stateless-core/src/executor.rs +++ b/crates/stateless-core/src/executor.rs @@ -601,4 +601,38 @@ mod tests { .unwrap_or_else(|e| panic!("validate_block failed for {number} ({hash}): {e:?}")); } } + + /// Verifies that `replay_block` (which exercises `execute_transactions`) produces + /// receipts root, logs bloom, and gas used that match the block header. + #[test] + fn replay_block_output_matches_header() { + let fx = TestFixtures::mainnet(); + let chain_spec = ChainSpec::from_genesis(fx.load_genesis().unwrap()); + let paired = fx.paired_blocks(); + let (_num, hash) = paired.first().expect("no paired mainnet fixtures"); + + let block = &fx.blocks[hash]; + let salt_witness = fx.salt_witnesses[hash].clone(); + + let ext_env = WitnessExternalEnv::new(&salt_witness, block.header.number).unwrap(); + let witness = salt::Witness::from(salt_witness); + witness.verify().unwrap(); + + let witness_db = + WitnessDatabase { header: &block.header, witness: &witness, contracts: &fx.contracts }; + + let (_accounts, output) = replay_block( + &chain_spec, + block, + &witness_db, + ext_env, + #[cfg(feature = "std")] + None, + ) + .unwrap(); + + assert_eq!(output.receipts_root, block.header.receipts_root, "receipts root mismatch"); + assert_eq!(output.logs_bloom, block.header.logs_bloom, "logs bloom mismatch"); + assert_eq!(output.gas_used, block.header.gas_used, "gas used mismatch"); + } } From 7ee0fe49dca944f0fa2011e0f49738e4ce3dd5f5 Mon Sep 17 00:00:00 2001 From: "liquan.eth" Date: Thu, 14 May 2026 15:30:12 +0800 Subject: [PATCH 3/3] del test --- crates/stateless-core/src/executor.rs | 34 --------------------------- 1 file changed, 34 deletions(-) diff --git a/crates/stateless-core/src/executor.rs b/crates/stateless-core/src/executor.rs index ef19fc3..5864335 100644 --- a/crates/stateless-core/src/executor.rs +++ b/crates/stateless-core/src/executor.rs @@ -601,38 +601,4 @@ mod tests { .unwrap_or_else(|e| panic!("validate_block failed for {number} ({hash}): {e:?}")); } } - - /// Verifies that `replay_block` (which exercises `execute_transactions`) produces - /// receipts root, logs bloom, and gas used that match the block header. - #[test] - fn replay_block_output_matches_header() { - let fx = TestFixtures::mainnet(); - let chain_spec = ChainSpec::from_genesis(fx.load_genesis().unwrap()); - let paired = fx.paired_blocks(); - let (_num, hash) = paired.first().expect("no paired mainnet fixtures"); - - let block = &fx.blocks[hash]; - let salt_witness = fx.salt_witnesses[hash].clone(); - - let ext_env = WitnessExternalEnv::new(&salt_witness, block.header.number).unwrap(); - let witness = salt::Witness::from(salt_witness); - witness.verify().unwrap(); - - let witness_db = - WitnessDatabase { header: &block.header, witness: &witness, contracts: &fx.contracts }; - - let (_accounts, output) = replay_block( - &chain_spec, - block, - &witness_db, - ext_env, - #[cfg(feature = "std")] - None, - ) - .unwrap(); - - assert_eq!(output.receipts_root, block.header.receipts_root, "receipts root mismatch"); - assert_eq!(output.logs_bloom, block.header.logs_bloom, "logs bloom mismatch"); - assert_eq!(output.gas_used, block.header.gas_used, "gas used mismatch"); - } }