mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-01-27 16:18:08 -05:00
feat: add method in txpool for handling pending transactions (#10303)
This commit is contained in:
@@ -523,6 +523,14 @@ where
|
||||
) -> Result<Vec<BlobTransactionSidecar>, BlobStoreError> {
|
||||
self.pool.blob_store().get_exact(tx_hashes)
|
||||
}
|
||||
|
||||
/// Returns all pending transactions filtered by [`TransactionOrigin`]
|
||||
fn get_pending_transactions_by_origin(
|
||||
&self,
|
||||
origin: TransactionOrigin,
|
||||
) -> Vec<Arc<ValidPoolTransaction<Self::Transaction>>> {
|
||||
self.pool.get_pending_transactions_by_origin(origin)
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, T, S> TransactionPoolExt for Pool<V, T, S>
|
||||
|
||||
@@ -242,6 +242,13 @@ impl TransactionPool for NoopTransactionPool {
|
||||
}
|
||||
Err(BlobStoreError::MissingSidecar(tx_hashes[0]))
|
||||
}
|
||||
|
||||
fn get_pending_transactions_by_origin(
|
||||
&self,
|
||||
_origin: TransactionOrigin,
|
||||
) -> Vec<Arc<ValidPoolTransaction<Self::Transaction>>> {
|
||||
vec![]
|
||||
}
|
||||
}
|
||||
|
||||
/// A [`TransactionValidator`] that does nothing.
|
||||
|
||||
@@ -734,6 +734,14 @@ where
|
||||
self.get_pool_data().all().transactions_iter().filter(|tx| tx.origin == origin).collect()
|
||||
}
|
||||
|
||||
/// Returns all pending transactions filted by [`TransactionOrigin`]
|
||||
pub(crate) fn get_pending_transactions_by_origin(
|
||||
&self,
|
||||
origin: TransactionOrigin,
|
||||
) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>> {
|
||||
self.get_pool_data().pending_transactions_iter().filter(|tx| tx.origin == origin).collect()
|
||||
}
|
||||
|
||||
/// Returns all the transactions belonging to the hashes.
|
||||
///
|
||||
/// If no transaction exists, it is skipped.
|
||||
|
||||
@@ -321,6 +321,12 @@ impl<T: TransactionOrdering> TxPool<T> {
|
||||
pub(crate) fn pending_transactions(&self) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>> {
|
||||
self.pending_pool.all().collect()
|
||||
}
|
||||
/// Returns an iterator over all transactions from the pending sub-pool
|
||||
pub(crate) fn pending_transactions_iter(
|
||||
&self,
|
||||
) -> impl Iterator<Item = Arc<ValidPoolTransaction<T::Transaction>>> + '_ {
|
||||
self.pending_pool.all()
|
||||
}
|
||||
|
||||
/// Returns all transactions from parked pools
|
||||
pub(crate) fn queued_transactions(&self) -> Vec<Arc<ValidPoolTransaction<T::Transaction>>> {
|
||||
|
||||
@@ -344,6 +344,12 @@ pub trait TransactionPool: Send + Sync + Clone {
|
||||
origin: TransactionOrigin,
|
||||
) -> Vec<Arc<ValidPoolTransaction<Self::Transaction>>>;
|
||||
|
||||
/// Returns all pending transactions filtered by [`TransactionOrigin`]
|
||||
fn get_pending_transactions_by_origin(
|
||||
&self,
|
||||
origin: TransactionOrigin,
|
||||
) -> Vec<Arc<ValidPoolTransaction<Self::Transaction>>>;
|
||||
|
||||
/// Returns all transactions that where submitted as [TransactionOrigin::Local]
|
||||
fn get_local_transactions(&self) -> Vec<Arc<ValidPoolTransaction<Self::Transaction>>> {
|
||||
self.get_transactions_by_origin(TransactionOrigin::Local)
|
||||
@@ -359,6 +365,25 @@ pub trait TransactionPool: Send + Sync + Clone {
|
||||
self.get_transactions_by_origin(TransactionOrigin::External)
|
||||
}
|
||||
|
||||
/// Returns all pending transactions that where submitted as [TransactionOrigin::Local]
|
||||
fn get_local_pending_transactions(&self) -> Vec<Arc<ValidPoolTransaction<Self::Transaction>>> {
|
||||
self.get_transactions_by_origin(TransactionOrigin::Local)
|
||||
}
|
||||
|
||||
/// Returns all pending transactions that where submitted as [TransactionOrigin::Private]
|
||||
fn get_private_pending_transactions(
|
||||
&self,
|
||||
) -> Vec<Arc<ValidPoolTransaction<Self::Transaction>>> {
|
||||
self.get_pending_transactions_by_origin(TransactionOrigin::Private)
|
||||
}
|
||||
|
||||
/// Returns all pending transactions that where submitted as [TransactionOrigin::External]
|
||||
fn get_external_pending_transactions(
|
||||
&self,
|
||||
) -> Vec<Arc<ValidPoolTransaction<Self::Transaction>>> {
|
||||
self.get_pending_transactions_by_origin(TransactionOrigin::External)
|
||||
}
|
||||
|
||||
/// Returns a set of all senders of transactions in the pool
|
||||
fn unique_senders(&self) -> HashSet<Address>;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user