Skip to main content

Mempool

Struct Mempool 

Source
pub struct Mempool { /* private fields */ }

Implementations§

Source§

impl Mempool

Source

pub fn new(max_mempool_size: usize) -> Self

Source

pub fn with_max_blob_mempool_size(self, max_blob_mempool_size: usize) -> Self

Override the blob sub-pool capacity (defaults to MAX_BLOB_MEMPOOL_SIZE). Builder-style; intended for configuration and tests.

Source

pub fn add_transaction( &self, hash: H256, sender: Address, transaction: MempoolTransaction, ) -> Result<(), StoreError>

Add transaction to the pool without doing validity checks

Source

pub fn get_txs_for_broadcast( &self, ) -> Result<Vec<MempoolTransaction>, StoreError>

Source

pub fn remove_broadcasted_txs(&self, hashes: &[H256]) -> Result<(), StoreError>

Source

pub fn blob_txs(&self) -> Result<Vec<(H256, Address, u64)>, StoreError>

(hash, sender, nonce) for every blob tx in the pool. blobs_bundle_pool is keyed by blob-tx hash, so its keys are exactly the held blob txs.

Source

pub fn add_blobs_bundle( &self, tx_hash: H256, blobs_bundle: BlobsBundle, ) -> Result<(), StoreError>

Add a blobs bundle to the pool by its blob transaction hash

Source

pub fn get_blobs_bundle( &self, tx_hash: H256, ) -> Result<Option<BlobsBundle>, StoreError>

Get a blobs bundle to the pool given its blob transaction hash

Source

pub fn remove_transaction(&self, hash: &H256) -> Result<(), StoreError>

Remove a transaction from the pool

Source

pub fn filter_transactions( &self, filter: &PendingTxFilter, ) -> Result<FxHashMap<Address, Vec<MempoolTransaction>>, StoreError>

Applies the filter and returns a set of suitable transactions from the mempool. These transactions will be grouped by sender and sorted by nonce

Source

pub fn get_all_txs_by_sender( &self, ) -> Result<FxHashMap<Address, Vec<MempoolTransaction>>, StoreError>

Gets all the transactions in the mempool

Source

pub fn filter_transactions_with_filter_fn( &self, filter: &dyn Fn(&Transaction) -> bool, ) -> Result<FxHashMap<Address, Vec<MempoolTransaction>>, StoreError>

Applies the filter and returns a set of suitable transactions from the mempool. These transactions will be grouped by sender and sorted by nonce

Source

pub fn reserve_unknown_hashes( &self, hashes: &[H256], types: &[u8], sizes: &[usize], announcer: H256, ) -> Result<Vec<H256>, StoreError>

Filters hashes to those not already in the mempool or in-flight, and atomically marks the returned hashes as in-flight under a single write lock so that concurrent peer handlers cannot request the same hashes.

For hashes that get filtered out because they’re already in-flight from another peer, records announcer as a fallback so the request can be retried against this peer if the original responder fails. New hashes that the caller is about to request do not need an alternates entry yet: the caller is the primary, and one will be created only if some other peer later announces the same hash while it’s in-flight. Reserve hashes the caller wants to request, returning only those that are neither already in-flight nor already in the pool. Any hash filtered out because it’s in-flight from another peer is registered with the caller’s own (type, size) metadata as an alternate, so a later retry can validate the response against this announcer’s announcement.

hashes, types, and sizes must be the same length (one entry per announced hash).

Source

pub fn clear_in_flight_txs(&self, hashes: &[H256]) -> Result<(), StoreError>

Removes transaction hashes from the in-flight set, typically called when the GetPooledTransactions response arrives (or the connection drops).

Source

pub fn pop_alternate(&self, hash: H256) -> Result<Option<Alternate>, StoreError>

Pops the next alternate announcer for the given hash, if any. Returns Ok(None) when no alternates remain. The caller uses the popped Alternate to look up the peer connection and build a retry request against that peer’s own announcement metadata.

Source

pub fn prune_alternates(&self, ttl: Duration) -> Result<(), StoreError>

Drop alternates entries that haven’t been touched in the last ttl. Called periodically to bound the size of the alternates map when announced txs never make it into the pool.

Source

pub fn get_transaction_by_hash( &self, transaction_hash: H256, ) -> Result<Option<Transaction>, StoreError>

Source

pub fn get_nonce(&self, address: &Address) -> Result<Option<u64>, MempoolError>

Source

pub fn get_mempool_size(&self) -> Result<(u64, u64), MempoolError>

Source

pub fn content(&self) -> Result<Vec<Transaction>, MempoolError>

Returns all transactions currently in the pool

Source

pub fn get_blobs_bundle_pool(&self) -> Result<Vec<BlobsBundle>, MempoolError>

Returns all blobs bundles currently in the pool

Source

pub fn get_blobs_data_by_versioned_hashes( &self, versioned_hashes: &[H256], ) -> Result<Vec<Option<BlobTuple>>, MempoolError>

Returns blobs data (blob, commitment, proof) associated with the versioned hashes

Source

pub fn status(&self) -> Result<u64, MempoolError>

Returns the status of the mempool, which is the number of transactions currently in the pool. Until we add “queue” transactions.

Source

pub fn contains_sender_nonce( &self, sender: Address, nonce: u64, received_hash: H256, ) -> Result<Option<MempoolTransaction>, MempoolError>

Source

pub fn contains_tx(&self, tx_hash: H256) -> Result<bool, MempoolError>

Source

pub fn find_tx_to_replace( &self, sender: Address, nonce: u64, tx: &Transaction, ) -> Result<Option<H256>, MempoolError>

Trait Implementations§

Source§

impl Debug for Mempool

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for Mempool

Source§

fn default() -> Mempool

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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
Source§

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

Source§

fn exact_from(value: T) -> U

Source§

impl<T, U> ExactInto<U> for T
where U: ExactFrom<T>,

Source§

fn exact_into(self) -> U

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T, U> OverflowingInto<U> for T
where U: OverflowingFrom<T>,

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T, U> RoundingInto<U> for T
where U: RoundingFrom<T>,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> SaturatingInto<U> for T
where U: SaturatingFrom<T>,

Source§

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

Source§

fn to_debug_string(&self) -> String

Returns the String produced by Ts Debug implementation.

§Examples
use malachite_base::strings::ToDebugString;

assert_eq!([1, 2, 3].to_debug_string(), "[1, 2, 3]");
assert_eq!(
    [vec![2, 3], vec![], vec![4]].to_debug_string(),
    "[[2, 3], [], [4]]"
);
assert_eq!(Some(5).to_debug_string(), "Some(5)");
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.
Source§

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

Source§

fn vzip(self) -> V

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

impl<T, U> WrappingInto<U> for T
where U: WrappingFrom<T>,

Source§

fn wrapping_into(self) -> U