pub enum PooledTransactionsElement {
Legacy {
transaction: TxLegacy,
signature: Signature,
hash: TxHash,
},
Eip2930 {
transaction: TxEip2930,
signature: Signature,
hash: TxHash,
},
Eip1559 {
transaction: TxEip1559,
signature: Signature,
hash: TxHash,
},
Eip7702 {
transaction: TxEip7702,
signature: Signature,
hash: TxHash,
},
BlobTransaction(BlobTransaction),
}
Expand description
A response to GetPooledTransactions
. This can include either a blob transaction, or a
non-4844 signed transaction.
Variants§
Legacy
A legacy transaction
Fields
Eip2930
An EIP-2930 typed transaction
Fields
Eip1559
An EIP-1559 typed transaction
Fields
Eip7702
An EIP-7702 typed transaction
Fields
BlobTransaction(BlobTransaction)
A blob transaction, which includes the transaction, blob data, commitments, and proofs.
Implementations§
source§impl PooledTransactionsElement
impl PooledTransactionsElement
sourcepub fn try_from_broadcast(
tx: TransactionSigned,
) -> Result<Self, TransactionSigned>
pub fn try_from_broadcast( tx: TransactionSigned, ) -> Result<Self, TransactionSigned>
Tries to convert a TransactionSigned
into a PooledTransactionsElement
.
This function used as a helper to convert from a decoded p2p broadcast message to
PooledTransactionsElement
. Since BlobTransaction
is disallowed to be broadcasted on
p2p, return an err if tx
is Transaction::Eip4844
.
sourcepub fn try_from_blob_transaction(
tx: TransactionSigned,
sidecar: BlobTransactionSidecar,
) -> Result<Self, TransactionSigned>
pub fn try_from_blob_transaction( tx: TransactionSigned, sidecar: BlobTransactionSidecar, ) -> Result<Self, TransactionSigned>
Converts from an EIP-4844 TransactionSignedEcRecovered
to a
PooledTransactionsElementEcRecovered
with the given sidecar.
Returns an Err
containing the original TransactionSigned
if the transaction is not
EIP-4844.
sourcepub fn signature_hash(&self) -> B256
pub fn signature_hash(&self) -> B256
Heavy operation that return signature hash over rlp encoded transaction. It is only for signature signing or signer recovery.
sourcepub const fn hash(&self) -> &TxHash
pub const fn hash(&self) -> &TxHash
Reference to transaction hash. Used to identify transaction.
sourcepub fn recover_signer(&self) -> Option<Address>
pub fn recover_signer(&self) -> Option<Address>
Recover signer from signature and hash.
Returns None
if the transaction’s signature is invalid, see also Self::recover_signer
.
sourcepub fn try_into_ecrecovered(
self,
) -> Result<PooledTransactionsElementEcRecovered, Self>
pub fn try_into_ecrecovered( self, ) -> Result<PooledTransactionsElementEcRecovered, Self>
Tries to recover signer and return PooledTransactionsElementEcRecovered
.
Returns Err(Self)
if the transaction’s signature is invalid, see also
Self::recover_signer
.
sourcepub fn decode_enveloped(data: &mut &[u8]) -> Result<Self>
pub fn decode_enveloped(data: &mut &[u8]) -> Result<Self>
Decodes the “raw” format of transaction (e.g. eth_sendRawTransaction
).
This should be used for eth_sendRawTransaction
, for any transaction type. Blob
transactions must include the blob sidecar as part of the raw encoding.
This method can not be used for decoding the transactions
field of engine_newPayload
,
because EIP-4844 transactions for that method do not include the blob sidecar. The blobs
are supplied in an argument separate from the payload.
A raw transaction is either a legacy transaction or EIP-2718 typed transaction, with a special case for EIP-4844 transactions.
For legacy transactions, the format is encoded as: rlp(tx)
. This format will start with a
RLP list header.
For EIP-2718 typed transactions, the format is encoded as the type of the transaction
followed by the rlp of the transaction: type || rlp(tx)
.
For EIP-4844 transactions, the format includes a blob sidecar (the blobs, commitments, and
proofs) after the transaction:
type || rlp([tx_payload_body, blobs, commitments, proofs])
Where tx_payload_body
is encoded as a RLP list:
[chain_id, nonce, max_priority_fee_per_gas, ..., y_parity, r, s]
sourcepub fn into_ecrecovered_transaction(
self,
signer: Address,
) -> TransactionSignedEcRecovered
pub fn into_ecrecovered_transaction( self, signer: Address, ) -> TransactionSignedEcRecovered
Create TransactionSignedEcRecovered
by converting this transaction into
TransactionSigned
and Address
of the signer.
sourcepub fn into_transaction(self) -> TransactionSigned
pub fn into_transaction(self) -> TransactionSigned
Returns the inner TransactionSigned
.
sourcepub fn length_without_header(&self) -> usize
pub fn length_without_header(&self) -> usize
Returns the length without an RLP header - this is used for eth/68 sizes.
sourcepub fn envelope_encoded(&self) -> Bytes
pub fn envelope_encoded(&self) -> Bytes
Returns the enveloped encoded transactions.
See also TransactionSigned::encode_enveloped
sourcepub fn encode_enveloped(&self, out: &mut dyn BufMut)
pub fn encode_enveloped(&self, out: &mut dyn BufMut)
Encodes the transaction into the “raw” format (e.g. eth_sendRawTransaction
).
This format is also referred to as “binary” encoding.
For legacy transactions, it encodes the RLP of the transaction into the buffer:
rlp(tx-data)
For EIP-2718 typed it encodes the type of the transaction followed by the rlp of the
transaction: tx-type || rlp(tx-data)
sourcepub const fn is_eip4844(&self) -> bool
pub const fn is_eip4844(&self) -> bool
Returns true if the transaction is an EIP-4844 transaction.
sourcepub const fn as_legacy(&self) -> Option<&TxLegacy>
pub const fn as_legacy(&self) -> Option<&TxLegacy>
Returns the TxLegacy
variant if the transaction is a legacy transaction.
sourcepub const fn as_eip2930(&self) -> Option<&TxEip2930>
pub const fn as_eip2930(&self) -> Option<&TxEip2930>
Returns the TxEip2930
variant if the transaction is an EIP-2930 transaction.
sourcepub const fn as_eip1559(&self) -> Option<&TxEip1559>
pub const fn as_eip1559(&self) -> Option<&TxEip1559>
Returns the TxEip1559
variant if the transaction is an EIP-1559 transaction.
sourcepub const fn as_eip4844(&self) -> Option<&TxEip4844>
pub const fn as_eip4844(&self) -> Option<&TxEip4844>
Returns the TxEip4844
variant if the transaction is an EIP-4844 transaction.
sourcepub const fn as_eip7702(&self) -> Option<&TxEip7702>
pub const fn as_eip7702(&self) -> Option<&TxEip7702>
Returns the TxEip7702
variant if the transaction is an EIP-7702 transaction.
sourcepub fn blob_gas_used(&self) -> Option<u64>
pub fn blob_gas_used(&self) -> Option<u64>
Returns the blob gas used for all blobs of the EIP-4844 transaction if it is an EIP-4844 transaction.
This is the number of blobs times the
DATA_GAS_PER_BLOB
a single blob consumes.
sourcepub const fn max_fee_per_blob_gas(&self) -> Option<u128>
pub const fn max_fee_per_blob_gas(&self) -> Option<u128>
Max fee per blob gas for eip4844 transaction TxEip4844
.
Returns None
for non-eip4844 transactions.
This is also commonly referred to as the “Blob Gas Fee Cap” (BlobGasFeeCap
).
sourcepub const fn max_priority_fee_per_gas(&self) -> Option<u128>
pub const fn max_priority_fee_per_gas(&self) -> Option<u128>
Max priority fee per gas for eip1559 transaction, for legacy and eip2930 transactions this
is None
This is also commonly referred to as the “Gas Tip Cap” (GasTipCap
).
sourcepub const fn max_fee_per_gas(&self) -> u128
pub const fn max_fee_per_gas(&self) -> u128
Max fee per gas for eip1559 transaction, for legacy transactions this is gas_price
.
This is also commonly referred to as the “Gas Fee Cap” (GasFeeCap
).
Trait Implementations§
source§impl<'a> Arbitrary<'a> for PooledTransactionsElement
Available on crate feature arbitrary
only.
impl<'a> Arbitrary<'a> for PooledTransactionsElement
arbitrary
only.source§fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self>
fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self>
Generates an arbitrary PooledTransactionsElement
.
This function generates an arbitrary PooledTransactionsElement
by creating a transaction
and, if applicable, generating a sidecar for blob transactions.
It handles the generation of sidecars and constructs the resulting
PooledTransactionsElement
.
§fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>
fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>
Self
from the entirety of the given
unstructured data. Read moresource§impl AsRef<PooledTransactionsElement> for PooledTransactionsElementEcRecovered
impl AsRef<PooledTransactionsElement> for PooledTransactionsElementEcRecovered
source§fn as_ref(&self) -> &PooledTransactionsElement
fn as_ref(&self) -> &PooledTransactionsElement
source§impl Clone for PooledTransactionsElement
impl Clone for PooledTransactionsElement
source§fn clone(&self) -> PooledTransactionsElement
fn clone(&self) -> PooledTransactionsElement
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PooledTransactionsElement
impl Debug for PooledTransactionsElement
source§impl Decodable for PooledTransactionsElement
impl Decodable for PooledTransactionsElement
source§fn decode(buf: &mut &[u8]) -> Result<Self>
fn decode(buf: &mut &[u8]) -> Result<Self>
Decodes an enveloped post EIP-4844 PooledTransactionsElement
.
CAUTION: this expects that buf
is rlp(tx_type || rlp(tx-data))
source§impl<'de> Deserialize<'de> for PooledTransactionsElement
impl<'de> Deserialize<'de> for PooledTransactionsElement
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl Encodable for PooledTransactionsElement
impl Encodable for PooledTransactionsElement
source§fn encode(&self, out: &mut dyn BufMut)
fn encode(&self, out: &mut dyn BufMut)
Encodes an enveloped post EIP-4844 PooledTransactionsElement
.
For legacy transactions, this encodes the transaction as rlp(tx-data)
.
For EIP-2718 transactions, this encodes the transaction as rlp(tx_type || rlp(tx-data)))
,
_including the RLP-header for the entire transaction.
source§impl TryFrom<TransactionSigned> for PooledTransactionsElement
impl TryFrom<TransactionSigned> for PooledTransactionsElement
source§type Error = TransactionConversionError
type Error = TransactionConversionError
impl Eq for PooledTransactionsElement
impl StructuralPartialEq for PooledTransactionsElement
Auto Trait Implementations§
impl !Freeze for PooledTransactionsElement
impl RefUnwindSafe for PooledTransactionsElement
impl Send for PooledTransactionsElement
impl Sync for PooledTransactionsElement
impl Unpin for PooledTransactionsElement
impl UnwindSafe for PooledTransactionsElement
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<A> ArbInterop for A
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> MaybeDebug for Twhere
T: Debug,
impl<T> RpcObject for Twhere
T: RpcParam + RpcReturn,
impl<T> RpcParam for T
impl<T> RpcReturn for T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 432 bytes
Size for each variant:
Legacy
: 248 bytesEip2930
: 264 bytesEip1559
: 280 bytesEip7702
: 312 bytesBlobTransaction
: 424 bytes