@@ -14,8 +14,8 @@ use reth_db::{DatabaseEnv, test_utils::TempDatabase};
1414use reth_optimism_chainspec:: { BASE_MAINNET , OpChainSpec , OpChainSpecBuilder } ;
1515use reth_optimism_node:: OpNode ;
1616use reth_optimism_primitives:: { OpBlock , OpBlockBody , OpTransactionSigned } ;
17- use reth_primitives_traits:: { Block as BlockT , SealedHeader } ;
18- use reth_provider:: { HeaderProvider , StateProviderFactory , providers:: BlockchainProvider } ;
17+ use reth_primitives_traits:: Block as BlockT ;
18+ use reth_provider:: { HeaderProvider , providers:: BlockchainProvider } ;
1919use reth_testing_utils:: generators:: generate_keys;
2020use reth_transaction_pool:: test_utils:: TransactionBuilder ;
2121
@@ -30,7 +30,9 @@ enum User {
3030#[ derive( Debug , Clone ) ]
3131struct TestHarness {
3232 provider : BlockchainProvider < NodeTypes > ,
33- header : SealedHeader ,
33+ genesis_header_hash : B256 ,
34+ genesis_header_number : u64 ,
35+ genesis_header_timestamp : u64 ,
3436 chain_spec : Arc < OpChainSpec > ,
3537 user_to_private_key : std:: collections:: HashMap < User , B256 > ,
3638}
@@ -83,17 +85,24 @@ fn setup_harness() -> eyre::Result<TestHarness> {
8385 . context ( "fetching genesis header" ) ?
8486 . expect ( "genesis header exists" ) ;
8587
86- Ok ( TestHarness { provider, header, chain_spec, user_to_private_key } )
88+ Ok ( TestHarness {
89+ provider,
90+ genesis_header_hash : header. hash ( ) ,
91+ genesis_header_number : header. number ( ) ,
92+ genesis_header_timestamp : header. timestamp ( ) ,
93+ chain_spec,
94+ user_to_private_key,
95+ } )
8796}
8897
8998fn create_block_with_transactions (
9099 harness : & TestHarness ,
91100 transactions : Vec < OpTransactionSigned > ,
92101) -> OpBlock {
93102 let header = Header {
94- parent_hash : harness. header . hash ( ) ,
95- number : harness. header . number ( ) + 1 ,
96- timestamp : harness. header . timestamp ( ) + 2 ,
103+ parent_hash : harness. genesis_header_hash ,
104+ number : harness. genesis_header_number + 1 ,
105+ timestamp : harness. genesis_header_timestamp + 2 ,
97106 gas_limit : 30_000_000 ,
98107 beneficiary : Address :: random ( ) ,
99108 base_fee_per_gas : Some ( 1 ) ,
@@ -113,13 +122,7 @@ fn meter_block_empty_transactions() -> eyre::Result<()> {
113122
114123 let block = create_block_with_transactions ( & harness, vec ! [ ] ) ;
115124
116- let state_provider = harness
117- . provider
118- . state_by_block_hash ( harness. header . hash ( ) )
119- . context ( "getting state provider" ) ?;
120-
121- let response =
122- meter_block ( state_provider, harness. chain_spec . clone ( ) , & block, & harness. header ) ?;
125+ let response = meter_block ( harness. provider . clone ( ) , harness. chain_spec . clone ( ) , & block) ?;
123126
124127 assert_eq ! ( response. block_hash, block. header( ) . hash_slow( ) ) ;
125128 assert_eq ! ( response. block_number, block. header( ) . number( ) ) ;
@@ -157,13 +160,7 @@ fn meter_block_single_transaction() -> eyre::Result<()> {
157160
158161 let block = create_block_with_transactions ( & harness, vec ! [ tx] ) ;
159162
160- let state_provider = harness
161- . provider
162- . state_by_block_hash ( harness. header . hash ( ) )
163- . context ( "getting state provider" ) ?;
164-
165- let response =
166- meter_block ( state_provider, harness. chain_spec . clone ( ) , & block, & harness. header ) ?;
163+ let response = meter_block ( harness. provider . clone ( ) , harness. chain_spec . clone ( ) , & block) ?;
167164
168165 assert_eq ! ( response. block_hash, block. header( ) . hash_slow( ) ) ;
169166 assert_eq ! ( response. block_number, block. header( ) . number( ) ) ;
@@ -228,13 +225,7 @@ fn meter_block_multiple_transactions() -> eyre::Result<()> {
228225
229226 let block = create_block_with_transactions ( & harness, vec ! [ tx_1, tx_2] ) ;
230227
231- let state_provider = harness
232- . provider
233- . state_by_block_hash ( harness. header . hash ( ) )
234- . context ( "getting state provider" ) ?;
235-
236- let response =
237- meter_block ( state_provider, harness. chain_spec . clone ( ) , & block, & harness. header ) ?;
228+ let response = meter_block ( harness. provider . clone ( ) , harness. chain_spec . clone ( ) , & block) ?;
238229
239230 assert_eq ! ( response. block_hash, block. header( ) . hash_slow( ) ) ;
240231 assert_eq ! ( response. block_number, block. header( ) . number( ) ) ;
@@ -292,13 +283,7 @@ fn meter_block_timing_consistency() -> eyre::Result<()> {
292283
293284 let block = create_block_with_transactions ( & harness, vec ! [ tx] ) ;
294285
295- let state_provider = harness
296- . provider
297- . state_by_block_hash ( harness. header . hash ( ) )
298- . context ( "getting state provider" ) ?;
299-
300- let response =
301- meter_block ( state_provider, harness. chain_spec . clone ( ) , & block, & harness. header ) ?;
286+ let response = meter_block ( harness. provider . clone ( ) , harness. chain_spec . clone ( ) , & block) ?;
302287
303288 // Verify timing invariants
304289 assert ! ( response. signer_recovery_time_us > 0 , "signer recovery time must be positive" ) ;
0 commit comments