diff --git a/src/kernel_evm/kernel/src/apply.rs b/src/kernel_evm/kernel/src/apply.rs index 190797d4ca2b7152dc9bb79ba95aab096cd170c5..e108f6c1494711b9b6e4177725c165b282a7fff9 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);