From 411893eba26df4d2226967a72916b6976bd5a136 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Fri, 13 Oct 2023 21:58:16 +0200 Subject: [PATCH] feat: add validate transactions function (#5010) --- crates/transaction-pool/src/validate/eth.rs | 11 +++++++++-- crates/transaction-pool/src/validate/mod.rs | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/crates/transaction-pool/src/validate/eth.rs b/crates/transaction-pool/src/validate/eth.rs index 3a0af31ba2..1c26cb3d02 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 1cfef0bbfa..9debb7b605 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).