diff --git a/crates/blockifier/src/transaction/transactions.rs b/crates/blockifier/src/transaction/transactions.rs index 947182cd88..8ee1412eec 100644 --- a/crates/blockifier/src/transaction/transactions.rs +++ b/crates/blockifier/src/transaction/transactions.rs @@ -425,8 +425,7 @@ impl TransactionInfoCreator for DeployAccountTransaction { #[derive(Debug, Clone)] pub struct InvokeTransaction { - pub tx: starknet_api::transaction::InvokeTransaction, - pub tx_hash: TransactionHash, + pub tx: starknet_api::executable_transaction::InvokeTransaction, // Indicates the presence of the only_query bit in the version. pub only_query: bool, } @@ -436,14 +435,20 @@ impl InvokeTransaction { invoke_tx: starknet_api::transaction::InvokeTransaction, tx_hash: TransactionHash, ) -> Self { - Self { tx: invoke_tx, tx_hash, only_query: false } + Self { + tx: starknet_api::executable_transaction::InvokeTransaction { tx: invoke_tx, tx_hash }, + only_query: false, + } } pub fn new_for_query( invoke_tx: starknet_api::transaction::InvokeTransaction, tx_hash: TransactionHash, ) -> Self { - Self { tx: invoke_tx, tx_hash, only_query: true } + Self { + tx: starknet_api::executable_transaction::InvokeTransaction { tx: invoke_tx, tx_hash }, + only_query: true, + } } implement_inner_tx_getter_calls!( @@ -451,11 +456,12 @@ impl InvokeTransaction { (nonce, Nonce), (signature, TransactionSignature), (sender_address, ContractAddress), + (tx_hash, TransactionHash), (version, TransactionVersion) ); - pub fn tx_hash(&self) -> TransactionHash { - self.tx_hash + pub fn tx(&self) -> &starknet_api::transaction::InvokeTransaction { + self.tx.tx() } } @@ -467,7 +473,7 @@ impl Executable for InvokeTransaction { context: &mut EntryPointExecutionContext, remaining_gas: &mut u64, ) -> TransactionExecutionResult> { - let entry_point_selector = match &self.tx { + let entry_point_selector = match &self.tx.tx { starknet_api::transaction::InvokeTransaction::V0(tx) => tx.entry_point_selector, starknet_api::transaction::InvokeTransaction::V1(_) | starknet_api::transaction::InvokeTransaction::V3(_) => { @@ -513,7 +519,7 @@ impl TransactionInfoCreator for InvokeTransaction { only_query: self.only_query, }; - match &self.tx { + match &self.tx() { starknet_api::transaction::InvokeTransaction::V0(tx) => { TransactionInfo::Deprecated(DeprecatedTransactionInfo { common_fields, diff --git a/crates/gateway/src/utils.rs b/crates/gateway/src/utils.rs index cbb7cd614f..ccf6abbdcd 100644 --- a/crates/gateway/src/utils.rs +++ b/crates/gateway/src/utils.rs @@ -130,7 +130,7 @@ pub fn get_sender_address(tx: &AccountTransaction) -> ContractAddress { _ => panic!("Unsupported transaction version"), }, AccountTransaction::DeployAccount(tx) => tx.contract_address(), - AccountTransaction::Invoke(tx) => match &tx.tx { + AccountTransaction::Invoke(tx) => match &tx.tx() { starknet_api::transaction::InvokeTransaction::V3(tx) => tx.sender_address, _ => panic!("Unsupported transaction version"), }, diff --git a/crates/starknet_api/src/executable_transaction.rs b/crates/starknet_api/src/executable_transaction.rs index 349d5fe40c..ed3e3d288c 100644 --- a/crates/starknet_api/src/executable_transaction.rs +++ b/crates/starknet_api/src/executable_transaction.rs @@ -144,3 +144,18 @@ pub struct InvokeTransaction { pub tx: crate::transaction::InvokeTransaction, pub tx_hash: TransactionHash, } + +impl InvokeTransaction { + implement_inner_tx_getter_calls!( + (calldata, Calldata), + (nonce, Nonce), + (signature, TransactionSignature), + (sender_address, ContractAddress), + (version, TransactionVersion) + ); + implement_getter_calls!((tx_hash, TransactionHash)); + + pub fn tx(&self) -> &crate::transaction::InvokeTransaction { + &self.tx + } +}