diff --git a/etherlink/kernel_evm/kernel/src/block.rs b/etherlink/kernel_evm/kernel/src/block.rs index 97a4a6ad5539cb77042b7ca8a80d246717f4148a..331a1de160513b2684ee90e094bf35f015b5dddb 100644 --- a/etherlink/kernel_evm/kernel/src/block.rs +++ b/etherlink/kernel_evm/kernel/src/block.rs @@ -286,10 +286,8 @@ fn compute_bip( host: &mut Host, outbox_queue: &OutboxQueue<'_, impl Path>, mut block_in_progress: BlockInProgress, - current_block_number: &mut U256, - current_block_parent_hash: &mut H256, - previous_receipts_root: &mut Vec, - previous_transactions_root: &mut Vec, + previous_receipts_root: &[u8], + previous_transactions_root: &[u8], precompiles: &PrecompileBTreeMap, evm_account_storage: &mut EthereumAccountStorage, tick_counter: &mut TickCounter, @@ -336,18 +334,14 @@ fn compute_bip( crate::gas_price::register_block(host, &block_in_progress)?; *tick_counter = TickCounter::finalize(block_in_progress.estimated_ticks_in_run); - let new_block = block_in_progress + let _new_block = block_in_progress .finalize_and_store( host, &constants, - previous_receipts_root.clone(), - previous_transactions_root.clone(), + previous_receipts_root, + previous_transactions_root, ) .context("Failed to finalize the block in progress")?; - *current_block_number = new_block.number + 1; - *current_block_parent_hash = new_block.hash; - *previous_receipts_root = new_block.receipts_root; - *previous_transactions_root = new_block.transactions_root; } } Ok(result) @@ -443,10 +437,10 @@ pub fn produce( let coinbase = sequencer_pool_address.unwrap_or_default(); let ( - mut current_block_number, - mut current_block_parent_hash, - mut previous_receipts_root, - mut previous_transactions_root, + current_block_number, + current_block_parent_hash, + previous_receipts_root, + previous_transactions_root, ) = match block_storage::read_current(host) { Ok(block) => ( block.number + 1, @@ -514,10 +508,8 @@ pub fn produce( &mut safe_host, &outbox_queue, block_in_progress, - &mut current_block_number, - &mut current_block_parent_hash, - &mut previous_receipts_root, - &mut previous_transactions_root, + &previous_receipts_root, + &previous_transactions_root, &precompiles, &mut evm_account_storage, &mut tick_counter, diff --git a/etherlink/kernel_evm/kernel/src/block_in_progress.rs b/etherlink/kernel_evm/kernel/src/block_in_progress.rs index 00452ee4dae282654c04c9cc290dd245f13463e2..32670f99833bdbfed74e70d13f9b3c80905c5f87 100644 --- a/etherlink/kernel_evm/kernel/src/block_in_progress.rs +++ b/etherlink/kernel_evm/kernel/src/block_in_progress.rs @@ -364,17 +364,17 @@ impl BlockInProgress { fn receipts_root( &self, host: &mut impl Runtime, - previous_receipts_root: Vec, + previous_receipts_root: &[u8], ) -> anyhow::Result> { if self.valid_txs.is_empty() { - Ok(previous_receipts_root) + Ok(previous_receipts_root.to_vec()) } else { for hash in &self.valid_txs { let receipt_path = receipt_path(hash)?; let new_receipt_path = concat(&Self::RECEIPTS, &receipt_path)?; host.store_copy(&receipt_path, &new_receipt_path)?; } - host.store_write_all(&Self::RECEIPTS_PREVIOUS_ROOT, &previous_receipts_root)?; + host.store_write_all(&Self::RECEIPTS_PREVIOUS_ROOT, previous_receipts_root)?; let receipts_root = Self::safe_store_get_hash(host, &Self::RECEIPTS)?; host.store_delete(&Self::RECEIPTS)?; Ok(receipts_root) @@ -388,10 +388,10 @@ impl BlockInProgress { fn transactions_root( &self, host: &mut impl Runtime, - previous_transactions_root: Vec, + previous_transactions_root: &[u8], ) -> anyhow::Result> { if self.valid_txs.is_empty() { - Ok(previous_transactions_root) + Ok(previous_transactions_root.to_vec()) } else { for hash in &self.valid_txs { let object_path = object_path(hash)?; @@ -400,7 +400,7 @@ impl BlockInProgress { } host.store_write_all( &Self::OBJECTS_PREVIOUS_ROOT, - &previous_transactions_root, + previous_transactions_root, )?; let objects_root = Self::safe_store_get_hash(host, &Self::OBJECTS)?; host.store_delete(&Self::OBJECTS)?; @@ -413,8 +413,8 @@ impl BlockInProgress { self, host: &mut Host, block_constants: &BlockConstants, - previous_receipts_root: Vec, - previous_transactions_root: Vec, + previous_receipts_root: &[u8], + previous_transactions_root: &[u8], ) -> Result { let state_root = Self::safe_store_get_hash(host, &EVM_ACCOUNTS_PATH)?; let receipts_root = self.receipts_root(host, previous_receipts_root)?; diff --git a/etherlink/kernel_evm/kernel/src/gas_price.rs b/etherlink/kernel_evm/kernel/src/gas_price.rs index 8d79fec4f7596d40c625fb4630e6f8fc589a3caf..c74e18669bcdae451a483840d06c471729dfef53 100644 --- a/etherlink/kernel_evm/kernel/src/gas_price.rs +++ b/etherlink/kernel_evm/kernel/src/gas_price.rs @@ -209,7 +209,7 @@ mod test { register_block(&mut host, &bip).unwrap(); bip.clone() - .finalize_and_store(&mut host, &dummy_block_constants, vec![], vec![]) + .finalize_and_store(&mut host, &dummy_block_constants, &[], &[]) .unwrap(); // At tolerance, gas price should be min. @@ -222,7 +222,7 @@ mod test { // register more blocks - now double tolerance bip.number = 1.into(); register_block(&mut host, &bip).unwrap(); - bip.finalize_and_store(&mut host, &dummy_block_constants, vec![], vec![]) + bip.finalize_and_store(&mut host, &dummy_block_constants, &[], &[]) .unwrap(); let gas_price_now = base_fee_per_gas(&host, timestamp.into(), min);