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>;
}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
fn tx_type(&self) -> u8
Returns the transaction type.
Depending on this field other functions should be called.
fn caller(&self) -> Address
fn caller(&self) -> Address
Caller aka Author aka transaction signer.
Note : Common field for all transactions.
fn gas_limit(&self) -> u64
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>
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
fn input(&self) -> &Bytes
Returns the input data of the transaction.
Note : Common field for all transactions.
fn kind(&self) -> TxKind
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>
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
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>]
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
fn max_fee_per_blob_gas(&self) -> u128
Max fee per data gas
Note : EIP-4844 transaction field.
fn total_blob_gas(&self) -> u64
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>
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 max_fee_per_gas(&self) -> u128
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>
fn max_priority_fee_per_gas(&self) -> Option<u128>
Maximum priority fee per gas.
fn effective_gas_price(&self, base_fee: u128) -> u128
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>
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>
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.