diff --git a/evm_loader/lib/src/types/mod.rs b/evm_loader/lib/src/types/mod.rs index bfc17cc32..996ac52d6 100644 --- a/evm_loader/lib/src/types/mod.rs +++ b/evm_loader/lib/src/types/mod.rs @@ -152,8 +152,10 @@ impl FromAddress { #[derive(Clone, Serialize, Deserialize)] pub struct TxParams { pub nonce: Option, + pub index: Option, #[serde_as(as = "DisplayFromStr")] pub from: FromAddress, + pub payer: Option
, pub to: Option
, #[serde_as(as = "Option")] pub data: Option>, @@ -245,8 +247,10 @@ impl TxParams { pub fn from_transaction(origin: Address, tx: &Transaction) -> Self { Self { from: FromAddress::Ethereum(origin), + payer: Some(tx.payer(origin)), to: tx.target(), nonce: Some(tx.nonce()), + index: tx.tree_account_index(), data: Some(tx.call_data().to_vec()), value: Some(tx.value()), gas_limit: Some(tx.gas_limit()), diff --git a/evm_loader/program/src/types/transaction.rs b/evm_loader/program/src/types/transaction.rs index ecd2f5bb5..95d8f3eec 100644 --- a/evm_loader/program/src/types/transaction.rs +++ b/evm_loader/program/src/types/transaction.rs @@ -892,6 +892,16 @@ impl Transaction { .ok_or(Error::IntegerOverflow) } + #[must_use] + pub fn payer(&self, origin: Address) -> Address { + match self.transaction { + TransactionPayload::Legacy(_) + | TransactionPayload::AccessList(_) + | TransactionPayload::DynamicFee(_) => origin, + TransactionPayload::Scheduled(ScheduledTx { payer, .. }) => payer, + } + } + #[must_use] pub fn target(&self) -> Option
{ match self.transaction {