Skip to main content

TransactionTr

Trait TransactionTr 

pub trait TransactionTr {
Show 19 methods // Required methods fn tx_type(&self) -> u8; fn caller(&self) -> Address; fn gas_limit(&self) -> u64; fn value(&self) -> Uint<256, 4>; fn input(&self) -> &Bytes; fn nonce(&self) -> u64; fn kind(&self) -> TxKind; fn chain_id(&self) -> Option<u64>; fn gas_price(&self) -> u128; fn blob_versioned_hashes(&self) -> &[FixedBytes<32>]; fn max_fee_per_blob_gas(&self) -> u128; fn total_blob_gas(&self) -> u64; fn calc_max_data_fee(&self) -> Uint<256, 4>; fn authorization_list_len(&self) -> usize; fn max_fee_per_gas(&self) -> u128; fn max_priority_fee_per_gas(&self) -> Option<u128>; fn effective_gas_price(&self, base_fee: u128) -> u128; fn max_balance_spending(&self) -> Result<Uint<256, 4>, InvalidTransaction>; fn effective_balance_spending( &self, base_fee: u128, blob_price: u128, ) -> Result<Uint<256, 4>, InvalidTransaction>;
}
Available on crate feature evm only.
Expand description

Dyn-compatible wrapper around revm::context::Transaction.

revm::context::Transaction is not dyn-compatible because of methods returning associated types (e.g. access_list, authorization_list). This trait mirrors the dyn-compatible subset of those methods, allowing transaction data to be accessed through &dyn TransactionTr in EvmInternals.

Required Methods§

fn tx_type(&self) -> u8

Returns the transaction type.

Depending on this field other functions should be called.

fn caller(&self) -> Address

Caller aka Author aka transaction signer.

Note : Common field for all transactions.

fn gas_limit(&self) -> u64

The maximum amount of gas the transaction can use.

Note : Common field for all transactions.

fn value(&self) -> Uint<256, 4>

The value sent to the receiver of TxKind::Call.

Note : Common field for all transactions.

fn input(&self) -> &Bytes

Returns the input data of the transaction.

Note : Common field for all transactions.

fn nonce(&self) -> u64

The nonce of the transaction.

Note : Common field for all transactions.

fn kind(&self) -> TxKind

Transaction kind. It can be Call or Create.

Kind is applicable for: Legacy, EIP-2930, EIP-1559 And is Call for EIP-4844 and EIP-7702 transactions.

fn chain_id(&self) -> Option<u64>

Chain Id is optional for legacy transactions.

As it was introduced in EIP-155.

fn gas_price(&self) -> u128

Gas price for the transaction. It is only applicable for Legacy and EIP-2930 transactions. For Eip1559 it is max_fee_per_gas.

fn blob_versioned_hashes(&self) -> &[FixedBytes<32>]

Returns vector of fixed size hash(32 bytes)

Note : EIP-4844 transaction field.

fn max_fee_per_blob_gas(&self) -> u128

Max fee per data gas

Note : EIP-4844 transaction field.

fn total_blob_gas(&self) -> u64

Total gas for all blobs. Max number of blocks is already checked so we dont need to check for overflow.

fn calc_max_data_fee(&self) -> Uint<256, 4>

Calculates the maximum [EIP-4844] data_fee of the transaction.

This is used for ensuring that the user has at least enough funds to pay the max_fee_per_blob_gas * total_blob_gas, on top of regular gas costs.

See EIP-4844: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4844.md#execution-layer-validation

fn authorization_list_len(&self) -> usize

Returns length of the authorization list.

§Note

Transaction is considered invalid if list is empty.

fn max_fee_per_gas(&self) -> u128

Returns maximum fee that can be paid for the transaction.

fn max_priority_fee_per_gas(&self) -> Option<u128>

Maximum priority fee per gas.

fn effective_gas_price(&self, base_fee: u128) -> u128

Returns effective gas price is gas price field for Legacy and Eip2930 transaction.

While for transactions after Eip1559 it is minimum of max_fee and base + max_priority_fee.

fn max_balance_spending(&self) -> Result<Uint<256, 4>, InvalidTransaction>

Returns the maximum balance that can be spent by the transaction.

Return U256 or error if all values overflow U256 number.

fn effective_balance_spending( &self, base_fee: u128, blob_price: u128, ) -> Result<Uint<256, 4>, InvalidTransaction>

Returns the effective balance that is going to be spent that depends on base_fee Multiplication for gas are done in u128 type (saturated) and value is added as U256 type.

§Reason

This is done for performance reasons and it is known to be safe as there is no more that u128::MAX value of eth in existence.

This is always strictly less than Self::max_balance_spending.

Return U256 or error if all values overflow U256 number.

Implementors§

§

impl<T> TransactionTr for T
where T: Transaction,