PoolInner

Struct PoolInner 

Source
pub struct PoolInner<V, T, S>{ /* private fields */ }
Expand description

Transaction pool internals.

Implementations§

Source§

impl<V, T, S> PoolInner<V, T, S>

Source

pub fn new(validator: V, ordering: T, blob_store: S, config: PoolConfig) -> Self

Create a new transaction pool instance.

Source

pub const fn blob_store(&self) -> &S

Returns the configured blob store.

Source

pub fn size(&self) -> PoolSize

Returns stats about the size of the pool.

Source

pub fn block_info(&self) -> BlockInfo

Returns the currently tracked block

Source

pub fn set_block_info(&self, info: BlockInfo)

Sets the currently tracked block

Source

pub fn get_sender_id(&self, addr: Address) -> SenderId

Returns the internal SenderId for this address

Source

pub fn get_sender_ids( &self, addrs: impl IntoIterator<Item = Address>, ) -> Vec<SenderId>

Returns the internal SenderIds for the given addresses.

Source

pub fn unique_senders(&self) -> HashSet<Address>

Returns all senders in the pool

Source

pub const fn config(&self) -> &PoolConfig

Get the config the pool was configured with.

Source

pub const fn validator(&self) -> &V

Get the validator reference.

Source

pub fn add_pending_listener( &self, kind: TransactionListenerKind, ) -> Receiver<TxHash>

Adds a new transaction listener to the pool that gets notified about every new pending transaction inserted into the pool

Source

pub fn add_new_transaction_listener( &self, kind: TransactionListenerKind, ) -> Receiver<NewTransactionEvent<T::Transaction>>

Adds a new transaction listener to the pool that gets notified about every new transaction.

Source

pub fn add_blob_sidecar_listener(&self) -> Receiver<NewBlobSidecar>

Adds a new blob sidecar listener to the pool that gets notified about every new eip4844 transaction’s blob sidecar.

Source

pub fn add_transaction_event_listener( &self, tx_hash: TxHash, ) -> Option<TransactionEvents>

If the pool contains the transaction, this adds a new listener that gets notified about transaction events.

Source

pub fn add_all_transactions_event_listener( &self, ) -> AllTransactionsEvents<T::Transaction>

Adds a listener for all transaction events.

Source

pub fn get_pool_data(&self) -> RwLockReadGuard<'_, TxPool<T>>

Returns a read lock to the pool’s data.

Source

pub fn pooled_transactions_hashes(&self) -> Vec<TxHash>

Returns hashes of transactions in the pool that can be propagated.

Source

pub fn pooled_transactions( &self, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns transactions in the pool that can be propagated

Source

pub fn pooled_transactions_max( &self, max: usize, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns only the first max transactions in the pool that can be propagated.

Source

pub fn get_pooled_transaction_elements( &self, tx_hashes: Vec<TxHash>, limit: GetPooledTransactionLimit, ) -> Vec<<<V as TransactionValidator>::Transaction as PoolTransaction>::Pooled>

Returns pooled transactions for the given transaction hashes that are allowed to be propagated.

Source

pub fn get_pooled_transaction_element( &self, tx_hash: TxHash, ) -> Option<Recovered<<<V as TransactionValidator>::Transaction as PoolTransaction>::Pooled>>

Returns converted pooled transaction for the given transaction hash.

Source

pub fn on_canonical_state_change<B>(&self, update: CanonicalStateUpdate<'_, B>)
where B: Block,

Updates the entire pool after a new block was executed.

Source

pub fn update_accounts(&self, accounts: Vec<ChangedAccount>)

Performs account updates on the pool.

This will either promote or discard transactions based on the new account state.

This should be invoked when the pool drifted and accounts are updated manually

Source

pub fn add_transaction_and_subscribe( &self, origin: TransactionOrigin, tx: TransactionValidationOutcome<T::Transaction>, ) -> PoolResult<TransactionEvents>

Adds a transaction and returns the event stream.

Source

pub fn add_transactions_with_origins( &self, transactions: impl IntoIterator<Item = (TransactionOrigin, TransactionValidationOutcome<T::Transaction>)>, ) -> Vec<PoolResult<AddedTransactionOutcome>>

Adds all transactions in the iterator to the pool, each with its individual origin, returning a list of results.

Note: A large batch may lock the pool for a long time that blocks important operations like updating the pool on canonical state changes. The caller should consider having a max batch size to balance transaction insertions with other updates.

Source

pub fn add_transactions( &self, origin: TransactionOrigin, transactions: impl IntoIterator<Item = TransactionValidationOutcome<T::Transaction>>, ) -> Vec<PoolResult<AddedTransactionOutcome>>

Adds all transactions in the iterator to the pool, returning a list of results.

Note: A large batch may lock the pool for a long time that blocks important operations like updating the pool on canonical state changes. The caller should consider having a max batch size to balance transaction insertions with other updates.

Source

pub fn best_transactions(&self) -> BestTransactions<T>

Returns an iterator that yields transactions that are ready to be included in the block.

Source

pub fn best_transactions_with_attributes( &self, best_transactions_attributes: BestTransactionsAttributes, ) -> Box<dyn BestTransactions<Item = Arc<ValidPoolTransaction<T::Transaction>>>>

Returns an iterator that yields transactions that are ready to be included in the block with the given base fee and optional blob fee attributes.

Source

pub fn pending_transactions_max( &self, max: usize, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns only the first max transactions in the pending pool.

Source

pub fn pending_transactions( &self, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns all transactions from the pending sub-pool

Source

pub fn queued_transactions( &self, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns all transactions from parked pools

Source

pub fn all_transactions(&self) -> AllPoolTransactions<T::Transaction>

Returns all transactions in the pool

Source

pub fn all_transaction_hashes(&self) -> Vec<TxHash>

Returns all transactions in the pool

Source

pub fn remove_transactions( &self, hashes: Vec<TxHash>, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Removes and returns all matching transactions from the pool.

This behaves as if the transactions got discarded (not mined), effectively introducing a nonce gap for the given transactions.

Source

pub fn remove_transactions_and_descendants( &self, hashes: Vec<TxHash>, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Removes and returns all matching transactions and their dependent transactions from the pool.

Source

pub fn remove_transactions_by_sender( &self, sender: Address, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Removes and returns all transactions by the specified sender from the pool.

Source

pub fn retain_unknown<A>(&self, announcement: &mut A)
where A: HandleMempoolData,

Removes and returns all transactions that are present in the pool.

Source

pub fn get( &self, tx_hash: &TxHash, ) -> Option<Arc<ValidPoolTransaction<T::Transaction>>>

Returns the transaction by hash.

Source

pub fn get_transactions_by_sender( &self, sender: Address, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns all transactions of the address

Source

pub fn get_queued_transactions_by_sender( &self, sender: Address, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns all queued transactions of the address by sender

Source

pub fn pending_transactions_with_predicate( &self, predicate: impl FnMut(&ValidPoolTransaction<T::Transaction>) -> bool, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns all pending transactions filtered by predicate

Source

pub fn get_pending_transactions_by_sender( &self, sender: Address, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns all pending transactions of the address by sender

Source

pub fn get_highest_transaction_by_sender( &self, sender: Address, ) -> Option<Arc<ValidPoolTransaction<T::Transaction>>>

Returns the highest transaction of the address

Source

pub fn get_highest_consecutive_transaction_by_sender( &self, sender: Address, on_chain_nonce: u64, ) -> Option<Arc<ValidPoolTransaction<T::Transaction>>>

Returns the transaction with the highest nonce that is executable given the on chain nonce.

Source

pub fn get_transaction_by_transaction_id( &self, transaction_id: &TransactionId, ) -> Option<Arc<ValidPoolTransaction<T::Transaction>>>

Returns the transaction given a TransactionId

Source

pub fn get_transactions_by_origin( &self, origin: TransactionOrigin, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns all transactions that where submitted with the given TransactionOrigin

Source

pub fn get_pending_transactions_by_origin( &self, origin: TransactionOrigin, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns all pending transactions filtered by TransactionOrigin

Source

pub fn get_all( &self, txs: Vec<TxHash>, ) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>>

Returns all the transactions belonging to the hashes.

If no transaction exists, it is skipped.

Source

pub fn on_propagated(&self, txs: PropagatedTransactions)

Notify about propagated transactions.

Source

pub fn len(&self) -> usize

Number of transactions in the entire pool

Source

pub fn is_empty(&self) -> bool

Whether the pool is empty

Source

pub fn is_exceeded(&self) -> bool

Returns whether or not the pool is over its configured size and transaction count limits.

Source

pub fn delete_blob(&self, blob: TxHash)

Delete a blob from the blob store

Source

pub fn delete_blobs(&self, txs: Vec<TxHash>)

Delete all blobs from the blob store

Source

pub fn cleanup_blobs(&self)

Cleans up the blob store

Trait Implementations§

Source§

impl<V, T: TransactionOrdering, S> Debug for PoolInner<V, T, S>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<V, T, S> !Freeze for PoolInner<V, T, S>

§

impl<V, T, S> !RefUnwindSafe for PoolInner<V, T, S>

§

impl<V, T, S> Send for PoolInner<V, T, S>
where V: Send, S: Send,

§

impl<V, T, S> Sync for PoolInner<V, T, S>
where V: Sync, S: Sync,

§

impl<V, T, S> Unpin for PoolInner<V, T, S>

§

impl<V, T, S> !UnwindSafe for PoolInner<V, T, S>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<TxEnv, T> FromRecoveredTx<&T> for TxEnv
where TxEnv: FromRecoveredTx<T>,

§

fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv

Builds a [TxEnv] from a transaction and a sender address.
§

impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnv
where TxEnv: FromTxWithEncoded<T>,

§

fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv

Builds a [TxEnv] from a transaction, its sender, and encoded transaction bytes.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows 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) -> R
where R: 'a,

Mutably borrows 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeDebug for T
where T: Debug,

Layout§

Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.