@@ -9,9 +9,7 @@ use reth_evm::{
99 execute:: { BasicBlockExecutor , BlockExecutorProvider , Executor } ,
1010 ConfigureEvm , Evm ,
1111} ;
12- use reth_evm_ethereum:: {
13- execute:: EthExecutorProvider , EthEvmConfig
14- } ;
12+ use reth_evm_ethereum:: { execute:: EthExecutorProvider , EthEvmConfig } ;
1513use reth_node_types:: NodeTypesWithDB ;
1614use reth_primitives:: Block ;
1715use reth_primitives_traits:: block:: RecoveredBlock ;
@@ -20,12 +18,12 @@ use tracing::{debug, error, info, trace};
2018use reth_provider:: {
2119 providers:: ProviderNodeTypes , ChainSpecProvider as _, ExecutionOutcome , ProviderFactory ,
2220} ;
23- use reth_revm:: { context:: TxEnv , db:: { states:: bundle_state:: BundleRetention , StateBuilder } } ;
24-
2521use reth_revm:: {
26- database :: StateProviderDatabase ,
27- DatabaseCommit ,
22+ context :: TxEnv ,
23+ db :: { states :: bundle_state :: BundleRetention , StateBuilder } ,
2824} ;
25+
26+ use reth_revm:: { database:: StateProviderDatabase , DatabaseCommit } ;
2927use reth_rpc_eth_types:: { cache:: db:: StateProviderTraitObjWrapper , StateCacheDb } ;
3028use reth_trie:: { HashedPostState , KeccakKeyHasher , StateRoot } ;
3129use reth_trie_db:: DatabaseStateRoot ;
4846impl < C , DB > BitfinityBlockConfirmation < C , DB >
4947where
5048 C : Client ,
51- DB : NodeTypesWithDB < ChainSpec = reth_chainspec:: ChainSpec > + ProviderNodeTypes + Clone ,
49+ DB : NodeTypesWithDB < ChainSpec = reth_chainspec:: ChainSpec > + ProviderNodeTypes + Clone ,
5250{
5351 /// Create a new [`BitfinityBlockConfirmation`].
5452 pub const fn new (
@@ -149,7 +147,8 @@ where
149147 "Executing {} blocks" , blocks. len( )
150148 ) ;
151149 let executor = self . executor ( ) ;
152- let blocks_with_senders: eyre:: Result < Vec < _ > > = blocks. iter ( ) . map ( Self :: convert_block) . collect ( ) ;
150+ let blocks_with_senders: eyre:: Result < Vec < _ > > =
151+ blocks. iter ( ) . map ( Self :: convert_block) . collect ( ) ;
153152 let blocks_with_senders = blocks_with_senders?;
154153
155154 let output = executor. execute_batch ( & blocks_with_senders) ?;
@@ -172,25 +171,31 @@ where
172171 . enumerate ( )
173172 . map ( |( index, tx) | {
174173 tx. recover_signer ( ) . map_err ( |err| {
175- eyre ! ( "Failed to recover sender for transaction {index} with hash {:?}" , tx. hash( ) ) . wrap_err ( err)
174+ eyre ! (
175+ "Failed to recover sender for transaction {index} with hash {:?}" ,
176+ tx. hash( )
177+ )
178+ . wrap_err ( err)
176179 } )
177180 } )
178181 . collect ( ) ;
179182 let senders = senders?;
180183
181- Ok ( RecoveredBlock :: new_unhashed ( block. clone ( ) , senders ) )
184+ Ok ( RecoveredBlock :: new_unhashed ( block. clone ( ) , senders) )
182185 }
183186
184187 /// Get the block executor for the latest block.
185188 fn executor (
186189 & self ,
187- ) -> BasicBlockExecutor < EthEvmConfig , StateProviderDatabase < reth_chain_state:: MemoryOverlayStateProviderRef < ' _ > > > {
188-
190+ ) -> BasicBlockExecutor <
191+ EthEvmConfig ,
192+ StateProviderDatabase < reth_chain_state:: MemoryOverlayStateProviderRef < ' _ > > ,
193+ > {
189194 let historical = self . provider_factory . latest ( ) . expect ( "no latest provider" ) ;
190195 let db = MemoryOverlayStateProvider :: new ( historical, Vec :: new ( ) ) ;
191196
192197 EthExecutorProvider :: ethereum ( self . provider_factory . chain_spec ( ) )
193- . executor ( StateProviderDatabase :: new ( db) )
198+ . executor ( StateProviderDatabase :: new ( db) )
194199 }
195200
196201 /// Calculates POW hash
@@ -235,17 +240,13 @@ where
235240 let pow_tx =
236241 did:: utils:: block_confirmation_pow_transaction ( from. clone ( ) , base_fee, None , None ) ;
237242
238- // Simple transaction
239- let kind = match pow_tx. to {
240- Some ( to) => TxKind :: Call ( to. 0 ) ,
241- None => TxKind :: Create ,
242- } ;
243243 let tx = TxEnv {
244244 caller : pow_tx. from . into ( ) ,
245245 gas_limit : pow_tx. gas . 0 . to ( ) ,
246246 gas_price : pow_tx. gas_price . unwrap_or_default ( ) . 0 . to ( ) ,
247- kind : kind ,
247+ kind : TxKind :: from ( pow_tx . to . map ( Into :: into ) ) ,
248248 value : pow_tx. value . 0 ,
249+ gas_priority_fee : None ,
249250 ..Default :: default ( )
250251 } ;
251252
@@ -258,10 +259,7 @@ where
258259 let chain_spec = self . provider_factory . chain_spec ( ) ;
259260 let evm_config = EthEvmConfig :: new ( chain_spec) ;
260261 let evm_env = evm_config. evm_env ( & block. header ) ;
261- let mut evm = evm_config. evm_with_env (
262- & mut state,
263- evm_env,
264- ) ;
262+ let mut evm = evm_config. evm_with_env ( & mut state, evm_env) ;
265263
266264 debug ! (
267265 target: "bitfinity_block_confirmation::BitfinityBlockConfirmation" ,
@@ -315,15 +313,23 @@ where
315313
316314#[ cfg( test) ]
317315mod tests {
318-
319316 use alloy_consensus:: { BlockHeader , Header , SignableTransaction , TxEip2930 } ;
320317 use alloy_genesis:: { Genesis , GenesisAccount } ;
321318
322319 use alloy_network:: TxSignerSync ;
323320 use alloy_primitives:: { hex:: FromHex , Address } ;
324321
325322 use alloy_signer:: Signer ;
326- use did:: { constant:: EIP1559_INITIAL_BASE_FEE , rpc:: { id:: Id , request:: RpcRequest , response:: { Response , RpcResponse , Success } , version:: Version } , U256 } ;
323+ use did:: {
324+ constant:: EIP1559_INITIAL_BASE_FEE ,
325+ rpc:: {
326+ id:: Id ,
327+ request:: RpcRequest ,
328+ response:: { Response , RpcResponse , Success } ,
329+ version:: Version ,
330+ } ,
331+ U256 ,
332+ } ;
327333
328334 use reth_chain_state:: test_utils:: TestBlockBuilder ;
329335 use reth_chainspec:: {
@@ -340,9 +346,7 @@ mod tests {
340346 use super :: * ;
341347
342348 use reth_node_types:: { AnyNodeTypesWithEngine , FullNodePrimitives , NodeTypesWithDBAdapter } ;
343- use reth_primitives:: {
344- Block , BlockBody , EthPrimitives , Receipt , TransactionSigned
345- } ;
349+ use reth_primitives:: { Block , BlockBody , EthPrimitives , Receipt , TransactionSigned } ;
346350 use reth_provider:: {
347351 test_utils:: create_test_provider_factory_with_chain_spec, BlockExecutionOutput ,
348352 BlockReader , BlockWriter , DatabaseProviderFactory , EthStorage , HashedPostStateProvider ,
@@ -368,7 +372,7 @@ mod tests {
368372 fn send_rpc_request (
369373 & self ,
370374 _request : RpcRequest ,
371- ) -> std:: pin:: Pin < Box < dyn Future < Output = anyhow:: Result < RpcResponse > > + Send > > {
375+ ) -> std:: pin:: Pin < Box < dyn Future < Output = anyhow:: Result < RpcResponse > > + Send > > {
372376 let genesis_accounts = self . genesis_accounts . clone ( ) ;
373377
374378 Box :: pin ( async move {
@@ -391,7 +395,7 @@ mod tests {
391395 transactions : Vec < TransactionSigned > ,
392396 ) -> eyre:: Result < RecoveredBlock < Block > >
393397 where
394- DB : NodeTypesWithDB < ChainSpec = reth_chainspec:: ChainSpec > + ProviderNodeTypes + Clone ,
398+ DB : NodeTypesWithDB < ChainSpec = reth_chainspec:: ChainSpec > + ProviderNodeTypes + Clone ,
395399 {
396400 use reth_primitives_traits:: Block as _;
397401 let parent_block = provider_factory
@@ -420,8 +424,8 @@ mod tests {
420424 } ,
421425 body : BlockBody { transactions, ..Default :: default ( ) } ,
422426 }
423- . try_into_recovered ( )
424- . expect ( "failed to recover senders" ) ;
427+ . try_into_recovered ( )
428+ . expect ( "failed to recover senders" ) ;
425429
426430 Ok ( block)
427431 }
@@ -433,7 +437,7 @@ mod tests {
433437 provider_factory : & ProviderFactory < DB > ,
434438 ) -> eyre:: Result < RecoveredBlock < Block > >
435439 where
436- DB : NodeTypesWithDB < ChainSpec = reth_chainspec:: ChainSpec > + ProviderNodeTypes + Clone ,
440+ DB : NodeTypesWithDB < ChainSpec = reth_chainspec:: ChainSpec > + ProviderNodeTypes + Clone ,
437441 {
438442 make_block ( block_number, parent_hash, provider_factory, 0 , vec ! [ ] )
439443 }
@@ -446,7 +450,7 @@ mod tests {
446450 nonce : u64 ,
447451 ) -> eyre:: Result < RecoveredBlock < Block > >
448452 where
449- DB : NodeTypesWithDB < ChainSpec = reth_chainspec:: ChainSpec > + ProviderNodeTypes + Clone ,
453+ DB : NodeTypesWithDB < ChainSpec = reth_chainspec:: ChainSpec > + ProviderNodeTypes + Clone ,
450454 {
451455 let chain_spec = provider_factory. chain_spec ( ) ;
452456 let mut signer = alloy_signer_local:: PrivateKeySigner :: from_slice ( & [ 1 ; 32 ] ) ?;
@@ -491,9 +495,9 @@ mod tests {
491495 where
492496 N : ProviderNodeTypes <
493497 Primitives : FullNodePrimitives <
494- Block = reth_primitives:: Block ,
495- BlockBody = reth_primitives:: BlockBody ,
496- Receipt = reth_primitives:: Receipt ,
498+ Block = reth_primitives:: Block ,
499+ BlockBody = reth_primitives:: BlockBody ,
500+ Receipt = reth_primitives:: Receipt ,
497501 > ,
498502 > ,
499503 {
@@ -534,7 +538,20 @@ mod tests {
534538 fn setup_test_block_validator (
535539 extended_genesis : Option < ( Address , did:: U256 ) > ,
536540 ) -> (
537- BitfinityBlockConfirmation < MockClient , NodeTypesWithDBAdapter < AnyNodeTypesWithEngine < EthPrimitives , EthEngineTypes , ChainSpec , MerklePatriciaTrie , EthStorage , EthEngineTypes > , Arc < TempDatabase < DatabaseEnv > > > > ,
541+ BitfinityBlockConfirmation <
542+ MockClient ,
543+ NodeTypesWithDBAdapter <
544+ AnyNodeTypesWithEngine <
545+ EthPrimitives ,
546+ EthEngineTypes ,
547+ ChainSpec ,
548+ MerklePatriciaTrie ,
549+ EthStorage ,
550+ EthEngineTypes ,
551+ > ,
552+ Arc < TempDatabase < DatabaseEnv > > ,
553+ > ,
554+ > ,
538555 RecoveredBlock < Block > ,
539556 ) {
540557 // EVM genesis accounts (similar to the test genesis in EVM)
@@ -616,13 +633,11 @@ mod tests {
616633 genesis_block. hash_slow ( ) . into ( ) ,
617634 & block_validator. provider_factory ,
618635 )
619- . unwrap ( ) ;
636+ . unwrap ( ) ;
620637
621638 // Insert the test block into the database.
622639 let provider_rw = block_validator. provider_factory . database_provider_rw ( ) . unwrap ( ) ;
623- provider_rw
624- . insert_block ( test_block. clone ( ) , StorageLocation :: Database )
625- . unwrap ( ) ;
640+ provider_rw. insert_block ( test_block. clone ( ) , StorageLocation :: Database ) . unwrap ( ) ;
626641 provider_rw. commit ( ) . unwrap ( ) ;
627642
628643 test_block
@@ -634,8 +649,10 @@ mod tests {
634649 . unwrap ( ) ;
635650
636651 // Calculate the POW hash.
637- let pow =
638- block_validator. compute_pow_hash ( & block1. clone_block ( ) , ExecutionOutcome :: default ( ) ) . await . unwrap ( ) ;
652+ let pow = block_validator
653+ . compute_pow_hash ( & block1. clone_block ( ) , ExecutionOutcome :: default ( ) )
654+ . await
655+ . unwrap ( ) ;
639656
640657 assert_ne ! ( pow. 0 , KECCAK_EMPTY , "Proof of work hash should not be empty" ) ;
641658
@@ -658,7 +675,9 @@ mod tests {
658675 . get_executed_block_with_number ( genesis_block. number + 1 , genesis_block. hash_slow ( ) ) ;
659676
660677 let outcome = block. execution_outcome ( ) ;
661- let pow_res = block_validator. compute_pow_hash ( & block. recovered_block ( ) . clone_block ( ) , outcome. clone ( ) ) . await ;
678+ let pow_res = block_validator
679+ . compute_pow_hash ( & block. recovered_block ( ) . clone_block ( ) , outcome. clone ( ) )
680+ . await ;
662681
663682 assert ! ( pow_res. is_ok( ) ) ;
664683
@@ -675,8 +694,14 @@ mod tests {
675694 let outcome = block. execution_outcome ( ) ;
676695
677696 // Compute POW hash twice with the same input
678- let pow1 = block_validator. compute_pow_hash ( & block. recovered_block ( ) . clone_block ( ) , outcome. clone ( ) ) . await . unwrap ( ) ;
679- let pow2 = block_validator. compute_pow_hash ( & block. recovered_block ( ) . clone_block ( ) , outcome. clone ( ) ) . await . unwrap ( ) ;
697+ let pow1 = block_validator
698+ . compute_pow_hash ( & block. recovered_block ( ) . clone_block ( ) , outcome. clone ( ) )
699+ . await
700+ . unwrap ( ) ;
701+ let pow2 = block_validator
702+ . compute_pow_hash ( & block. recovered_block ( ) . clone_block ( ) , outcome. clone ( ) )
703+ . await
704+ . unwrap ( ) ;
680705
681706 // Results should be deterministic
682707 assert_eq ! ( pow1, pow2, "POW hash computation should be deterministic" ) ;
@@ -721,7 +746,7 @@ mod tests {
721746 let expected_pow_hash = did:: H256 :: from_hex_str (
722747 "0xe66caa3a5bf8a22c38c33e5fb4cab1bd1b34e9734526a8723c615e9d36ccc45b" ,
723748 )
724- . unwrap ( ) ;
749+ . unwrap ( ) ;
725750
726751 let ( block_validator, genesis_block) = setup_test_block_validator ( None ) ;
727752
@@ -731,13 +756,13 @@ mod tests {
731756 genesis_block. hash_slow ( ) . into ( ) ,
732757 & block_validator. provider_factory ,
733758 )
734- . unwrap ( ) ;
759+ . unwrap ( ) ;
735760 execute_block_and_commit_to_database (
736761 & block_validator. provider_factory ,
737762 block_validator. provider_factory . chain_spec ( ) . clone ( ) ,
738763 & block,
739764 )
740- . unwrap ( ) ;
765+ . unwrap ( ) ;
741766
742767 block
743768 } ;
@@ -752,7 +777,7 @@ mod tests {
752777 block_validator. provider_factory . chain_spec ( ) . clone ( ) ,
753778 & block,
754779 )
755- . unwrap ( ) ;
780+ . unwrap ( ) ;
756781
757782 block
758783 } ;
@@ -766,7 +791,7 @@ mod tests {
766791 block_validator. provider_factory . chain_spec ( ) . clone ( ) ,
767792 & block,
768793 )
769- . unwrap ( ) ;
794+ . unwrap ( ) ;
770795 let outcome = to_execution_outcome ( block. number , & block_output) ;
771796
772797 // Compute POW hash for two different blocks
@@ -785,7 +810,7 @@ mod tests {
785810 let expected_pow_hash = did:: H256 :: from_hex_str (
786811 "0xa349b3ca25925decd1c225b8bc3a133c436f3989eb8048e93ee1389c78a1d6a4" ,
787812 )
788- . unwrap ( ) ;
813+ . unwrap ( ) ;
789814
790815 let signer = alloy_signer_local:: PrivateKeySigner :: from_slice ( & [ 1 ; 32 ] ) . unwrap ( ) ;
791816
@@ -799,13 +824,13 @@ mod tests {
799824 & block_validator. provider_factory ,
800825 0 ,
801826 )
802- . unwrap ( ) ;
827+ . unwrap ( ) ;
803828 execute_block_and_commit_to_database (
804829 & block_validator. provider_factory ,
805830 block_validator. provider_factory . chain_spec ( ) . clone ( ) ,
806831 & block,
807832 )
808- . unwrap ( ) ;
833+ . unwrap ( ) ;
809834
810835 block
811836 } ;
@@ -817,13 +842,13 @@ mod tests {
817842 & block_validator. provider_factory ,
818843 1 ,
819844 )
820- . unwrap ( ) ;
845+ . unwrap ( ) ;
821846 let out = execute_block_and_commit_to_database (
822847 & block_validator. provider_factory ,
823848 block_validator. provider_factory . chain_spec ( ) . clone ( ) ,
824849 & block,
825850 )
826- . unwrap ( ) ;
851+ . unwrap ( ) ;
827852
828853 to_execution_outcome ( block. number , & out) ;
829854 block
@@ -835,13 +860,13 @@ mod tests {
835860 & block_validator. provider_factory ,
836861 2 ,
837862 )
838- . unwrap ( ) ;
863+ . unwrap ( ) ;
839864 let block_output = execute_block_and_commit_to_database (
840865 & block_validator. provider_factory ,
841866 block_validator. provider_factory . chain_spec ( ) . clone ( ) ,
842867 & block,
843868 )
844- . unwrap ( ) ;
869+ . unwrap ( ) ;
845870
846871 let outcome = to_execution_outcome ( block. number , & block_output) ;
847872
0 commit comments