diff --git a/crates/contracts/src/kakarot_core/eth_rpc.cairo b/crates/contracts/src/kakarot_core/eth_rpc.cairo index 62ea780d..9c5ffbec 100644 --- a/crates/contracts/src/kakarot_core/eth_rpc.cairo +++ b/crates/contracts/src/kakarot_core/eth_rpc.cairo @@ -175,14 +175,6 @@ pub impl EthRPC< fn eth_send_transaction( ref self: TContractState, mut tx: Transaction ) -> (bool, Span, u64) { - panic!("unimplemented") - } - - fn eth_send_raw_unsigned_tx( - ref self: TContractState, mut tx_data: Span - ) -> (bool, Span, u64) { - let tx = TransactionTrait::decode_enveloped(ref tx_data).expect('EOA: could not decode tx'); - let mut kakarot_state = KakarotState::get_state(); let intrinsic_gas = validate_eth_tx(@kakarot_state, tx); @@ -197,6 +189,15 @@ pub impl EthRPC< starknet_backend::commit(ref state).expect('Committing state failed'); (success, return_data, gas_used) } + + //TODO: we can't really unit-test this with foundry because we can't generate the RLP-encoding + //in Cairo Find another way - perhaps test-data gen with python? + fn eth_send_raw_unsigned_tx( + ref self: TContractState, mut tx_data: Span + ) -> (bool, Span, u64) { + let tx = TransactionTrait::decode_enveloped(ref tx_data).expect('EOA: could not decode tx'); + Self::eth_send_transaction(ref self, tx) + } } trait IEthRPCInternal { diff --git a/crates/contracts/src/kakarot_core/interface.cairo b/crates/contracts/src/kakarot_core/interface.cairo index 4bce029d..826ffdf7 100644 --- a/crates/contracts/src/kakarot_core/interface.cairo +++ b/crates/contracts/src/kakarot_core/interface.cairo @@ -88,6 +88,10 @@ pub trait IExtendedKakarotCore { /// Executes an EVM transaction and possibly modifies the state fn eth_send_transaction(ref self: TContractState, tx: Transaction) -> (bool, Span, u64); + fn eth_send_raw_unsigned_tx( + ref self: TContractState, encoded_tx_data: Span + ) -> (bool, Span, u64); + // Returns the transaction count (nonce) of the specified address fn eth_get_transaction_count(self: @TContractState, address: EthAddress) -> u64; diff --git a/crates/contracts/tests/test_kakarot_core.cairo b/crates/contracts/tests/test_kakarot_core.cairo index 45fde481..971a8811 100644 --- a/crates/contracts/tests/test_kakarot_core.cairo +++ b/crates/contracts/tests/test_kakarot_core.cairo @@ -315,7 +315,8 @@ fn test_eth_send_transaction_deploy_tx() { let value = 0; // When - // Set the contract address to the EOA address, so that the caller of the `eth_send_transaction` + // Set the contract address to the EOA address, so that the caller of the + // `eth_send_transaction` // is an eoa let tx = TxLegacy { chain_id: Option::Some(chain_id()),