diff --git a/crates/transaction-pool/src/noop.rs b/crates/transaction-pool/src/noop.rs index 37005019da..920a98b0d6 100644 --- a/crates/transaction-pool/src/noop.rs +++ b/crates/transaction-pool/src/noop.rs @@ -188,7 +188,11 @@ impl TransactionValidator for MockTransactionValidator { balance: Default::default(), state_nonce: 0, transaction, - propagate: if origin.is_local() { self.propagate_local } else { true }, + propagate: match origin { + TransactionOrigin::External => true, + TransactionOrigin::Local => self.propagate_local, + TransactionOrigin::Private => false, + }, } } } diff --git a/crates/transaction-pool/src/traits.rs b/crates/transaction-pool/src/traits.rs index fe5dcddc15..9bcda6ec40 100644 --- a/crates/transaction-pool/src/traits.rs +++ b/crates/transaction-pool/src/traits.rs @@ -404,6 +404,11 @@ pub enum TransactionOrigin { /// This is usually considered an "untrusted" source, for example received from another in the /// network. External, + /// Transaction is originated locally and is intended to remain private. + /// + /// This type of transaction should not be propagated to the network. It's meant for + /// private usage within the local node only. + Private, } // === impl TransactionOrigin === diff --git a/crates/transaction-pool/src/validate/eth.rs b/crates/transaction-pool/src/validate/eth.rs index bfcf04028a..168546a71a 100644 --- a/crates/transaction-pool/src/validate/eth.rs +++ b/crates/transaction-pool/src/validate/eth.rs @@ -461,8 +461,11 @@ where state_nonce: account.nonce, transaction, // by this point assume all external transactions should be propagated - propagate: matches!(origin, TransactionOrigin::External) || - self.propagate_local_transactions, + propagate: match origin { + TransactionOrigin::External => true, + TransactionOrigin::Local => self.propagate_local_transactions, + TransactionOrigin::Private => false, + }, } } }