reth_transaction_pool/test_utils/
okvalidator.rs1use std::marker::PhantomData;
2
3use crate::{
4 validate::ValidTransaction, EthPooledTransaction, PoolTransaction, TransactionOrigin,
5 TransactionValidationOutcome, TransactionValidator,
6};
7
8#[derive(Debug)]
10#[non_exhaustive]
11pub struct OkValidator<T = EthPooledTransaction> {
12 _phantom: PhantomData<T>,
13}
14
15impl<T> Default for OkValidator<T> {
16 fn default() -> Self {
17 Self { _phantom: Default::default() }
18 }
19}
20
21impl<T> TransactionValidator for OkValidator<T>
22where
23 T: PoolTransaction,
24{
25 type Transaction = T;
26
27 async fn validate_transaction(
28 &self,
29 _origin: TransactionOrigin,
30 transaction: Self::Transaction,
31 ) -> TransactionValidationOutcome<Self::Transaction> {
32 let authorities = transaction.authorization_list().map(|auths| {
34 auths.iter().flat_map(|auth| auth.recover_authority()).collect::<Vec<_>>()
35 });
36 TransactionValidationOutcome::Valid {
37 balance: *transaction.cost(),
38 state_nonce: transaction.nonce(),
39 bytecode_hash: None,
40 transaction: ValidTransaction::Valid(transaction),
41 propagate: false,
42 authorities,
43 }
44 }
45}