pub struct InMemoryMempool { /* private fields */ }Expand description
In-memory mempool implementation with fee-rate ordering and eviction.
All mutable state is held behind a single RwLock<MempoolInner> to
eliminate the deadlock risk from acquiring multiple independent locks
(code review finding #17).
Implementations§
Source§impl InMemoryMempool
impl InMemoryMempool
Sourcepub fn with_max_bytes(max_bytes: u64) -> Self
pub fn with_max_bytes(max_bytes: u64) -> Self
Create a new in-memory mempool with custom max size
Sourcepub async fn set_height(&self, height: u32)
pub async fn set_height(&self, height: u32)
Set the current chain height
Sourcepub async fn get_transactions_by_fee_rate(
&self,
max_weight: u32,
) -> Vec<MempoolEntry>
pub async fn get_transactions_by_fee_rate( &self, max_weight: u32, ) -> Vec<MempoolEntry>
Get transactions ordered by ancestor fee rate (CPFP-aware) for mining.
Sourcepub async fn remove_for_block(&self, transactions: &[Transaction])
pub async fn remove_for_block(&self, transactions: &[Transaction])
Remove transactions that were confirmed in a block
Trait Implementations§
Source§impl Default for InMemoryMempool
impl Default for InMemoryMempool
Source§impl MempoolPort for InMemoryMempool
impl MempoolPort for InMemoryMempool
Source§fn add_transaction<'life0, 'life1, 'async_trait>(
&'life0 self,
tx: &'life1 Transaction,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn add_transaction<'life0, 'life1, 'async_trait>(
&'life0 self,
tx: &'life1 Transaction,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Adds a transaction to the mempool. Read more
Source§fn remove_transaction<'life0, 'life1, 'async_trait>(
&'life0 self,
txid: &'life1 Txid,
recursive: bool,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove_transaction<'life0, 'life1, 'async_trait>(
&'life0 self,
txid: &'life1 Txid,
recursive: bool,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Removes a transaction from the mempool. Read more
Source§fn get_transaction<'life0, 'life1, 'async_trait>(
&'life0 self,
txid: &'life1 Txid,
) -> Pin<Box<dyn Future<Output = Result<Option<MempoolEntry>, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_transaction<'life0, 'life1, 'async_trait>(
&'life0 self,
txid: &'life1 Txid,
) -> Pin<Box<dyn Future<Output = Result<Option<MempoolEntry>, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Retrieves a transaction from the mempool. Read more
Source§fn get_all_transactions<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<MempoolEntry>, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_all_transactions<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<MempoolEntry>, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Retrieves all transactions in the mempool. Read more
Source§fn get_transaction_count<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u32, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_transaction_count<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<u32, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Gets the number of transactions in the mempool. Read more
Source§fn estimate_fee<'life0, 'async_trait>(
&'life0 self,
target_blocks: u32,
) -> Pin<Box<dyn Future<Output = Result<f64, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn estimate_fee<'life0, 'async_trait>(
&'life0 self,
target_blocks: u32,
) -> Pin<Box<dyn Future<Output = Result<f64, Box<dyn Error + Send + Sync>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Estimates the fee rate needed to confirm within target blocks. Read more
Auto Trait Implementations§
impl Freeze for InMemoryMempool
impl !RefUnwindSafe for InMemoryMempool
impl Send for InMemoryMempool
impl Sync for InMemoryMempool
impl Unpin for InMemoryMempool
impl UnsafeUnpin for InMemoryMempool
impl !UnwindSafe for InMemoryMempool
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
Mutably borrows from an owned value. Read more