reth_rpc/eth/helpers/
types.rs1use alloy_network::Ethereum;
4use reth_evm_ethereum::EthEvmConfig;
5use reth_rpc_convert::RpcConverter;
6use reth_rpc_eth_types::receipt::EthReceiptConverter;
7
8pub type EthRpcConverter<ChainSpec> =
10 RpcConverter<Ethereum, EthEvmConfig, EthReceiptConverter<ChainSpec>>;
11
12#[cfg(test)]
14mod tests {
15 use super::*;
16 use alloy_consensus::{Transaction, TxType};
17 use alloy_rpc_types_eth::TransactionRequest;
18 use reth_chainspec::MAINNET;
19 use reth_rpc_eth_types::simulate::resolve_transaction;
20 use revm::database::CacheDB;
21
22 #[test]
23 fn test_resolve_transaction_empty_request() {
24 let builder = EthRpcConverter::new(EthReceiptConverter::new(MAINNET.clone()));
25 let mut db = CacheDB::<reth_revm::db::EmptyDBTyped<reth_errors::ProviderError>>::default();
26 let tx = TransactionRequest::default();
27 let result = resolve_transaction(tx, 21000, 0, 1, &mut db, &builder).unwrap();
28
29 let tx = result.into_inner();
31 assert_eq!(tx.max_fee_per_gas(), 0);
32 assert_eq!(tx.max_priority_fee_per_gas(), Some(0));
33 assert_eq!(tx.gas_price(), None);
34 }
35
36 #[test]
37 fn test_resolve_transaction_legacy() {
38 let mut db = CacheDB::<reth_revm::db::EmptyDBTyped<reth_errors::ProviderError>>::default();
39 let builder = EthRpcConverter::new(EthReceiptConverter::new(MAINNET.clone()));
40
41 let tx = TransactionRequest { gas_price: Some(100), ..Default::default() };
42
43 let tx = resolve_transaction(tx, 21000, 0, 1, &mut db, &builder).unwrap();
44
45 assert_eq!(tx.tx_type(), TxType::Legacy);
46
47 let tx = tx.into_inner();
48 assert_eq!(tx.gas_price(), Some(100));
49 assert_eq!(tx.max_priority_fee_per_gas(), None);
50 }
51
52 #[test]
53 fn test_resolve_transaction_partial_eip1559() {
54 let mut db = CacheDB::<reth_revm::db::EmptyDBTyped<reth_errors::ProviderError>>::default();
55 let rpc_converter = EthRpcConverter::new(EthReceiptConverter::new(MAINNET.clone()));
56
57 let tx = TransactionRequest {
58 max_fee_per_gas: Some(200),
59 max_priority_fee_per_gas: Some(10),
60 ..Default::default()
61 };
62
63 let result = resolve_transaction(tx, 21000, 0, 1, &mut db, &rpc_converter).unwrap();
64
65 assert_eq!(result.tx_type(), TxType::Eip1559);
66 let tx = result.into_inner();
67 assert_eq!(tx.max_fee_per_gas(), 200);
68 assert_eq!(tx.max_priority_fee_per_gas(), Some(10));
69 assert_eq!(tx.gas_price(), None);
70 }
71}