Trait PoolTransaction

Source
pub trait PoolTransaction:
    Debug
    + Send
    + Sync
    + Clone
    + TryFrom<RecoveredTx<Self::Consensus>, Error = Self::TryFromConsensusError>
    + Into<RecoveredTx<Self::Consensus>>
    + From<RecoveredTx<Self::Pooled>> {
    type TryFromConsensusError: Display;
    type Consensus: From<Self::Pooled>;
    type Pooled: SignedTransaction;

Show 32 methods // Required methods fn try_consensus_into_pooled( tx: RecoveredTx<Self::Consensus>, ) -> Result<RecoveredTx<Self::Pooled>, Self::TryFromConsensusError>; fn hash(&self) -> &TxHash; fn sender(&self) -> Address; fn sender_ref(&self) -> &Address; fn nonce(&self) -> u64; fn cost(&self) -> &U256; fn gas_limit(&self) -> u64; fn max_fee_per_gas(&self) -> u128; fn access_list(&self) -> Option<&AccessList>; fn max_priority_fee_per_gas(&self) -> Option<u128>; fn max_fee_per_blob_gas(&self) -> Option<u128>; fn effective_tip_per_gas(&self, base_fee: u64) -> Option<u128>; fn priority_fee_or_price(&self) -> u128; fn kind(&self) -> TxKind; fn is_create(&self) -> bool; fn input(&self) -> &[u8] ; fn size(&self) -> usize; fn tx_type(&self) -> u8; fn encoded_length(&self) -> usize; fn chain_id(&self) -> Option<u64>; fn seismic_elements(&self) -> Option<&TxSeismicElements>; // Provided methods fn try_from_consensus( tx: RecoveredTx<Self::Consensus>, ) -> Result<Self, Self::TryFromConsensusError> { ... } fn clone_into_consensus(&self) -> RecoveredTx<Self::Consensus> { ... } fn into_consensus(self) -> RecoveredTx<Self::Consensus> { ... } fn from_pooled(pooled: RecoveredTx<Self::Pooled>) -> Self { ... } fn try_into_pooled( self, ) -> Result<RecoveredTx<Self::Pooled>, Self::TryFromConsensusError> { ... } fn pooled_into_consensus(tx: Self::Pooled) -> Self::Consensus { ... } fn to(&self) -> Option<Address> { ... } fn is_eip1559(&self) -> bool { ... } fn is_eip4844(&self) -> bool { ... } fn is_eip7702(&self) -> bool { ... } fn ensure_max_init_code_size( &self, max_init_code_size: usize, ) -> Result<(), InvalidPoolTransactionError> { ... }
}
Expand description

Trait for transaction types used inside the pool.

This supports two transaction formats

  • Consensus format: the form the transaction takes when it is included in a block.
  • Pooled format: the form the transaction takes when it is gossiping around the network.

This distinction is necessary for the EIP-4844 blob transactions, which require an additional sidecar when they are gossiped around the network. It is expected that the Consensus format is a subset of the Pooled format.

Required Associated Types§

Source

type TryFromConsensusError: Display

Associated error type for the try_from_consensus method.

Source

type Consensus: From<Self::Pooled>

Associated type representing the raw consensus variant of the transaction.

Source

type Pooled: SignedTransaction

Associated type representing the recovered pooled variant of the transaction.

Required Methods§

Source

fn try_consensus_into_pooled( tx: RecoveredTx<Self::Consensus>, ) -> Result<RecoveredTx<Self::Pooled>, Self::TryFromConsensusError>

Tries to convert the Consensus type into the Pooled type.

Source

fn hash(&self) -> &TxHash

Hash of the transaction.

Source

fn sender(&self) -> Address

The Sender of the transaction.

Source

fn sender_ref(&self) -> &Address

Reference to the Sender of the transaction.

Source

fn nonce(&self) -> u64

Returns the nonce for this transaction.

Source

fn cost(&self) -> &U256

Returns the cost that this transaction is allowed to consume:

For EIP-1559 transactions: max_fee_per_gas * gas_limit + tx_value. For legacy transactions: gas_price * gas_limit + tx_value. For EIP-4844 blob transactions: max_fee_per_gas * gas_limit + tx_value + max_blob_fee_per_gas * blob_gas_used.

Source

fn gas_limit(&self) -> u64

Amount of gas that should be used in executing this transaction. This is paid up-front.

Source

fn max_fee_per_gas(&self) -> u128

Returns the EIP-1559 the maximum fee per gas the caller is willing to pay.

For legacy transactions this is gas_price.

This is also commonly referred to as the “Gas Fee Cap” (GasFeeCap).

Source

fn access_list(&self) -> Option<&AccessList>

Returns the access_list for the particular transaction type. For Legacy transactions, returns default.

Source

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

Returns the EIP-1559 Priority fee the caller is paying to the block author.

This will return None for non-EIP1559 transactions

Source

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

Returns the EIP-4844 max fee per data gas

This will return None for non-EIP4844 transactions

Source

fn effective_tip_per_gas(&self, base_fee: u64) -> Option<u128>

Returns the effective tip for this transaction.

For EIP-1559 transactions: min(max_fee_per_gas - base_fee, max_priority_fee_per_gas). For legacy transactions: gas_price - base_fee.

Source

fn priority_fee_or_price(&self) -> u128

Returns the max priority fee per gas if the transaction is an EIP-1559 transaction, and otherwise returns the gas price.

Source

fn kind(&self) -> TxKind

Returns the transaction’s [TxKind], which is the address of the recipient or [TxKind::Create] if the transaction is a contract creation.

Source

fn is_create(&self) -> bool

Returns true if the transaction is a contract creation. We don’t provide a default implementation via kind as it copies the 21-byte [TxKind] for this simple check. A proper implementation shouldn’t allocate.

Source

fn input(&self) -> &[u8]

Returns the input data of this transaction.

Source

fn size(&self) -> usize

Returns a measurement of the heap usage of this type and all its internals.

Source

fn tx_type(&self) -> u8

Returns the transaction type

Source

fn encoded_length(&self) -> usize

Returns the length of the rlp encoded transaction object

Note: Implementations should cache this value.

Source

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

Returns chain_id

Source

fn seismic_elements(&self) -> Option<&TxSeismicElements>

Returns the seismic elements of the transaction (Seismic)

Provided Methods§

Source

fn try_from_consensus( tx: RecoveredTx<Self::Consensus>, ) -> Result<Self, Self::TryFromConsensusError>

Define a method to convert from the Consensus type to Self

Source

fn clone_into_consensus(&self) -> RecoveredTx<Self::Consensus>

Clone the transaction into a consensus variant.

This method is preferred when the PoolTransaction already wraps the consensus variant.

Source

fn into_consensus(self) -> RecoveredTx<Self::Consensus>

Define a method to convert from the Self type to Consensus

Source

fn from_pooled(pooled: RecoveredTx<Self::Pooled>) -> Self

Define a method to convert from the Pooled type to Self

Source

fn try_into_pooled( self, ) -> Result<RecoveredTx<Self::Pooled>, Self::TryFromConsensusError>

Tries to convert the Consensus type into the Pooled type.

Source

fn pooled_into_consensus(tx: Self::Pooled) -> Self::Consensus

Converts the Pooled type into the Consensus type.

Source

fn to(&self) -> Option<Address>

Returns the recipient of the transaction if it is not a [TxKind::Create] transaction.

Source

fn is_eip1559(&self) -> bool

Returns true if the transaction is an EIP-1559 transaction.

Source

fn is_eip4844(&self) -> bool

Returns true if the transaction is an EIP-4844 transaction.

Source

fn is_eip7702(&self) -> bool

Returns true if the transaction is an EIP-7702 transaction.

Source

fn ensure_max_init_code_size( &self, max_init_code_size: usize, ) -> Result<(), InvalidPoolTransactionError>

Ensures that the transaction’s code size does not exceed the provided max_init_code_size.

This is specifically relevant for contract creation transactions ([TxKind::Create]), where the input data contains the initialization code. If the input code size exceeds the configured limit, an InvalidPoolTransactionError::ExceedsMaxInitCodeSize error is returned.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl PoolTransaction for MockTransaction

Available on crate feature test-utils only.
Source§

type TryFromConsensusError = TryFromRecoveredTransactionError

Source§

type Consensus = TransactionSigned

Source§

type Pooled = PooledTransactionsElement

Source§

impl PoolTransaction for EthPooledTransaction

Source§

type TryFromConsensusError = TryFromRecoveredTransactionError

Source§

type Consensus = TransactionSigned

Source§

type Pooled = PooledTransactionsElement