pub trait PoolTransaction:
Debug
+ Send
+ Sync
+ Clone {
type TryFromConsensusError;
type Consensus: From<Self> + TryInto<Self, Error = Self::TryFromConsensusError>;
type Pooled: Into<Self>;
Show 25 methods
// Required methods
fn hash(&self) -> &TxHash;
fn sender(&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 input(&self) -> &[u8] ⓘ;
fn size(&self) -> usize;
fn tx_type(&self) -> u8;
fn encoded_length(&self) -> usize;
fn chain_id(&self) -> Option<u64>;
// Provided methods
fn try_from_consensus(
tx: Self::Consensus,
) -> Result<Self, Self::TryFromConsensusError> { ... }
fn into_consensus(self) -> Self::Consensus { ... }
fn from_pooled(pooled: Self::Pooled) -> Self { ... }
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
Required Associated Types§
Sourcetype TryFromConsensusError
type TryFromConsensusError
Associated error type for the try_from_consensus
method.
Sourcetype Consensus: From<Self> + TryInto<Self, Error = Self::TryFromConsensusError>
type Consensus: From<Self> + TryInto<Self, Error = Self::TryFromConsensusError>
Associated type representing the raw consensus variant of the transaction.
Required Methods§
Sourcefn cost(&self) -> U256
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
.
Sourcefn gas_limit(&self) -> u64
fn gas_limit(&self) -> u64
Amount of gas that should be used in executing this transaction. This is paid up-front.
Sourcefn max_fee_per_gas(&self) -> u128
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
).
Sourcefn access_list(&self) -> Option<&AccessList>
fn access_list(&self) -> Option<&AccessList>
Returns the access_list
for the particular transaction type.
For Legacy transactions, returns default.
Sourcefn max_priority_fee_per_gas(&self) -> Option<u128>
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
Sourcefn max_fee_per_blob_gas(&self) -> Option<u128>
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
Sourcefn effective_tip_per_gas(&self, base_fee: u64) -> Option<u128>
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
.
Sourcefn priority_fee_or_price(&self) -> u128
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.
Sourcefn kind(&self) -> TxKind
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.
Sourcefn size(&self) -> usize
fn size(&self) -> usize
Returns a measurement of the heap usage of this type and all its internals.
Sourcefn encoded_length(&self) -> usize
fn encoded_length(&self) -> usize
Returns the length of the rlp encoded transaction object
Note: Implementations should cache this value.
Provided Methods§
Sourcefn try_from_consensus(
tx: Self::Consensus,
) -> Result<Self, Self::TryFromConsensusError>
fn try_from_consensus( tx: Self::Consensus, ) -> Result<Self, Self::TryFromConsensusError>
Define a method to convert from the Consensus
type to Self
Sourcefn into_consensus(self) -> Self::Consensus
fn into_consensus(self) -> Self::Consensus
Define a method to convert from the Self
type to Consensus
Sourcefn from_pooled(pooled: Self::Pooled) -> Self
fn from_pooled(pooled: Self::Pooled) -> Self
Define a method to convert from the Pooled
type to Self
Sourcefn to(&self) -> Option<Address>
fn to(&self) -> Option<Address>
Returns the recipient of the transaction if it is not a [TxKind::Create
]
transaction.
Sourcefn is_eip1559(&self) -> bool
fn is_eip1559(&self) -> bool
Returns true if the transaction is an EIP-1559 transaction.
Sourcefn is_eip4844(&self) -> bool
fn is_eip4844(&self) -> bool
Returns true if the transaction is an EIP-4844 transaction.
Sourcefn is_eip7702(&self) -> bool
fn is_eip7702(&self) -> bool
Returns true if the transaction is an EIP-7702 transaction.
Sourcefn ensure_max_init_code_size(
&self,
max_init_code_size: usize,
) -> Result<(), InvalidPoolTransactionError>
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.
impl PoolTransaction for MockTransaction
test-utils
only.