diff --git a/crates/transaction-pool/src/validate/eth.rs b/crates/transaction-pool/src/validate/eth.rs index 3a0af31ba..1c26cb3d0 100644 --- a/crates/transaction-pool/src/validate/eth.rs +++ b/crates/transaction-pool/src/validate/eth.rs @@ -56,9 +56,9 @@ where /// See also [Self::validate_one] pub fn validate_all( &self, - transaction: Vec<(TransactionOrigin, Tx)>, + transactions: Vec<(TransactionOrigin, Tx)>, ) -> Vec> { - transaction.into_iter().map(|(origin, tx)| self.validate_one(origin, tx)).collect() + transactions.into_iter().map(|(origin, tx)| self.validate_one(origin, tx)).collect() } } @@ -78,6 +78,13 @@ where self.validate_one(origin, transaction) } + async fn validate_transactions( + &self, + transactions: Vec<(TransactionOrigin, Self::Transaction)>, + ) -> Vec> { + self.validate_all(transactions) + } + fn on_new_head_block(&self, new_tip_block: &SealedBlock) { self.inner.on_new_head_block(new_tip_block) } diff --git a/crates/transaction-pool/src/validate/mod.rs b/crates/transaction-pool/src/validate/mod.rs index 1cfef0bbf..9debb7b60 100644 --- a/crates/transaction-pool/src/validate/mod.rs +++ b/crates/transaction-pool/src/validate/mod.rs @@ -168,6 +168,21 @@ pub trait TransactionValidator: Send + Sync { transaction: Self::Transaction, ) -> TransactionValidationOutcome; + /// Validates a batch of transactions. + /// + /// Must return all outcomes for the given transactions in the same order. + /// + /// See also [Self::validate_transaction]. + async fn validate_transactions( + &self, + transactions: Vec<(TransactionOrigin, Self::Transaction)>, + ) -> Vec> { + futures_util::future::join_all( + transactions.into_iter().map(|(origin, tx)| self.validate_transaction(origin, tx)), + ) + .await + } + /// Invoked when the head block changes. /// /// This can be used to update fork specific values (timestamp).