1
- use alloy:: sol_types:: { SolCall , SolEvent , SolValue } ;
2
1
use alloy_consensus:: TxEip1559 ;
3
2
use alloy_eips:: Encodable2718 ;
4
3
use alloy_evm:: Database ;
5
4
use alloy_op_evm:: OpEvm ;
6
5
use alloy_primitives:: { keccak256, map:: foldhash:: HashMap , Address , Bytes , TxKind , B256 , U256 } ;
6
+ use alloy_sol_types:: { SolCall , SolEvent , SolValue } ;
7
7
use core:: fmt:: Debug ;
8
8
use op_alloy_consensus:: OpTypedTransaction ;
9
9
use reth_evm:: { precompiles:: PrecompilesMap , ConfigureEvm , Evm , EvmError } ;
@@ -385,7 +385,7 @@ impl FlashtestationsBuilderTx {
385
385
}
386
386
}
387
387
} ;
388
- info ! ( target: "flashtestations" , "adding funding tx to builder txs" ) ;
388
+ info ! ( target: "flashtestations" , block_number = ctx . block_number ( ) , tx_hash = ?funding_tx . tx_hash ( ) , "adding funding tx to builder txs" ) ;
389
389
evm. db_mut ( ) . commit ( state) ;
390
390
Ok ( Some ( BuilderTransactionCtx {
391
391
gas_used : 21000 ,
@@ -431,7 +431,7 @@ impl FlashtestationsBuilderTx {
431
431
let da_size = op_alloy_flz:: tx_estimated_size_fjord_bytes (
432
432
register_tx. encoded_2718 ( ) . as_slice ( ) ,
433
433
) ;
434
- info ! ( target: "flashtestations" , "adding register tee tx to builder txs" ) ;
434
+ info ! ( target: "flashtestations" , block_number = ctx . block_number ( ) , tx_hash = ?register_tx . tx_hash ( ) , "adding register tee tx to builder txs" ) ;
435
435
evm. db_mut ( ) . commit ( state_changes) ;
436
436
Ok ( (
437
437
Some ( BuilderTransactionCtx {
@@ -494,7 +494,7 @@ impl FlashtestationsBuilderTx {
494
494
let da_size = op_alloy_flz:: tx_estimated_size_fjord_bytes (
495
495
verify_block_proof_tx. encoded_2718 ( ) . as_slice ( ) ,
496
496
) ;
497
- debug ! ( target: "flashtestations" , "adding verify block proof tx to builder txs" ) ;
497
+ debug ! ( target: "flashtestations" , block_number = ctx . block_number ( ) , tx_hash = ?verify_block_proof_tx . tx_hash ( ) , "adding verify block proof tx to builder txs" ) ;
498
498
Ok ( Some ( BuilderTransactionCtx {
499
499
gas_used,
500
500
da_size,
@@ -507,21 +507,47 @@ impl FlashtestationsBuilderTx {
507
507
. simulate_builder_tx ( ctx, evm. db_mut ( ) )
508
508
}
509
509
}
510
+
511
+ fn set_registered (
512
+ & self ,
513
+ state_provider : impl StateProvider + Clone ,
514
+ ctx : & OpPayloadBuilderCtx ,
515
+ ) {
516
+ let state = StateProviderDatabase :: new ( state_provider. clone ( ) ) ;
517
+ let mut simulation_state = State :: builder ( )
518
+ . with_database ( state)
519
+ . with_bundle_update ( )
520
+ . build ( ) ;
521
+ let mut evm = ctx
522
+ . evm_config
523
+ . evm_with_env ( & mut simulation_state, ctx. evm_env . clone ( ) ) ;
524
+ evm. modify_cfg ( |cfg| {
525
+ cfg. disable_balance_check = true ;
526
+ } ) ;
527
+ match self . register_tee_service_tx ( ctx, & mut evm) {
528
+ Ok ( ( _, registered) ) => {
529
+ self . registered . store ( registered, Ordering :: Relaxed ) ;
530
+ }
531
+ Err ( e) => {
532
+ debug ! ( target: "flashtestations" , error = ?e, "simulation error when checking if registered" ) ;
533
+ }
534
+ }
535
+ }
510
536
}
511
537
512
538
impl BuilderTransactions for FlashtestationsBuilderTx {
513
539
fn simulate_builder_txs < Extra : Debug + Default > (
514
540
& self ,
515
- state_provider : impl StateProvider ,
541
+ state_provider : impl StateProvider + Clone ,
516
542
info : & mut ExecutionInfo < Extra > ,
517
543
ctx : & OpPayloadBuilderCtx ,
518
544
db : & mut State < impl Database > ,
519
545
) -> Result < Vec < BuilderTransactionCtx > , BuilderTransactionError > {
520
- let state = StateProviderDatabase :: new ( state_provider) ;
546
+ let state = StateProviderDatabase :: new ( state_provider. clone ( ) ) ;
521
547
let mut simulation_state = State :: builder ( )
522
548
. with_database ( state)
523
- . with_bundle_prestate ( db. bundle_state . clone ( ) )
524
549
. with_cached_prestate ( db. cache . clone ( ) )
550
+ . with_bundle_prestate ( db. bundle_state . clone ( ) )
525
551
. with_bundle_update ( )
526
552
. build ( ) ;
527
553
@@ -535,11 +561,10 @@ impl BuilderTransactions for FlashtestationsBuilderTx {
535
561
let mut builder_txs = Vec :: < BuilderTransactionCtx > :: new ( ) ;
536
562
537
563
if !self . registered . load ( Ordering :: Relaxed ) {
564
+ info ! ( target: "flashtestations" , "tee service not registered yet, attempting to add registration tx" ) ;
565
+ self . set_registered ( state_provider, ctx) ;
538
566
builder_txs. extend ( self . fund_tee_service_tx ( ctx, & mut evm) ?) ;
539
- let ( register_tx, registered) = self . register_tee_service_tx ( ctx, & mut evm) ?;
540
- if registered {
541
- self . registered . store ( true , Ordering :: Relaxed ) ;
542
- }
567
+ let ( register_tx, _) = self . register_tee_service_tx ( ctx, & mut evm) ?;
543
568
builder_txs. extend ( register_tx) ;
544
569
}
545
570
0 commit comments