From 42a824cf95e3cfdf2a76efe90bc65daf9012f267 Mon Sep 17 00:00:00 2001 From: "lukebrich.eth" Date: Fri, 7 Jul 2023 18:32:40 -0400 Subject: [PATCH] Add propagate field to TransactionValidationOutcome (#3664) Co-authored-by: Matthias Seitz --- crates/transaction-pool/src/noop.rs | 1 + crates/transaction-pool/src/pool/mod.rs | 9 +++++++-- crates/transaction-pool/src/validate/eth.rs | 1 + crates/transaction-pool/src/validate/mod.rs | 2 ++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/crates/transaction-pool/src/noop.rs b/crates/transaction-pool/src/noop.rs index 2fec5391c1..0ccec210c1 100644 --- a/crates/transaction-pool/src/noop.rs +++ b/crates/transaction-pool/src/noop.rs @@ -170,6 +170,7 @@ impl TransactionValidator for NoopTransactionValidator { balance: Default::default(), state_nonce: 0, transaction, + propagate: true, } } } diff --git a/crates/transaction-pool/src/pool/mod.rs b/crates/transaction-pool/src/pool/mod.rs index 6b16c26470..5ae0147d64 100644 --- a/crates/transaction-pool/src/pool/mod.rs +++ b/crates/transaction-pool/src/pool/mod.rs @@ -274,7 +274,12 @@ where tx: TransactionValidationOutcome, ) -> PoolResult { match tx { - TransactionValidationOutcome::Valid { balance, state_nonce, transaction } => { + TransactionValidationOutcome::Valid { + balance, + state_nonce, + transaction, + propagate, + } => { let sender_id = self.get_sender_id(transaction.sender()); let transaction_id = TransactionId::new(sender_id, transaction.nonce()); let encoded_length = transaction.encoded_length(); @@ -282,7 +287,7 @@ where let tx = ValidPoolTransaction { transaction, transaction_id, - propagate: false, + propagate, timestamp: Instant::now(), origin, encoded_length, diff --git a/crates/transaction-pool/src/validate/eth.rs b/crates/transaction-pool/src/validate/eth.rs index 605c7d08a4..b5ca93709d 100644 --- a/crates/transaction-pool/src/validate/eth.rs +++ b/crates/transaction-pool/src/validate/eth.rs @@ -311,6 +311,7 @@ where balance: account.balance, state_nonce: account.nonce, transaction, + propagate: true, } } } diff --git a/crates/transaction-pool/src/validate/mod.rs b/crates/transaction-pool/src/validate/mod.rs index 1f7b7c5377..a3892f52ff 100644 --- a/crates/transaction-pool/src/validate/mod.rs +++ b/crates/transaction-pool/src/validate/mod.rs @@ -30,6 +30,8 @@ pub enum TransactionValidationOutcome { state_nonce: u64, /// Validated transaction. transaction: T, + /// Whether to propagate the transaction to the network. + propagate: bool, }, /// The transaction is considered invalid indefinitely: It violates constraints that prevent /// this transaction from ever becoming valid.