From 5d1d2d19ec36ed98b118a704694d3f211af4b593 Mon Sep 17 00:00:00 2001 From: Valentin Chaboche Date: Thu, 15 Jun 2023 15:41:38 +0200 Subject: [PATCH] EVM/Kernel: ignore transaction when caller is undefined --- src/kernel_evm/kernel/src/apply.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/kernel_evm/kernel/src/apply.rs b/src/kernel_evm/kernel/src/apply.rs index 190797d4ca2b..e108f6c14947 100644 --- a/src/kernel_evm/kernel/src/apply.rs +++ b/src/kernel_evm/kernel/src/apply.rs @@ -16,7 +16,7 @@ use primitive_types::{H160, H256, U256}; use tezos_ethereum::block::BlockConstants; use tezos_ethereum::signatures::EthereumTransactionCommon; use tezos_ethereum::transaction::TransactionHash; -use tezos_smart_rollup_debug::Runtime; +use tezos_smart_rollup_debug::{debug_msg, Runtime}; use crate::error::{Error, TransferError}; @@ -196,7 +196,20 @@ pub fn apply_transaction( index: u32, evm_account_storage: &mut EthereumAccountStorage, ) -> Result, Error> { - let caller = transaction.caller()?; + let caller = match transaction.caller() { + Ok(caller) => caller, + Err(err) => { + debug_msg!( + host, + "{} ignored because of {:?}\n", + hex::encode(transaction_hash), + err + ); + // Transaction with undefined caller are ignored, i.e. the caller + // could not be derived from the signature. + return Ok(None); + } + }; if !transaction.check_nonce(caller, host, evm_account_storage) { // Transactions with invalid nonces are ignored. return Ok(None); -- GitLab