@@ -406,15 +406,10 @@ async fn test_alloy_flashbots_mainnet() {
406
406
407
407
let block = mainnet. get_block ( BlockId :: latest ( ) ) . await . unwrap ( ) . unwrap ( ) ;
408
408
let target_block = block. number ( ) + 1 ;
409
- dbg ! ( "preparing bundle for" , target_block) ;
410
-
411
- let target_block = block. number ( ) + 1 ;
412
- dbg ! ( "preparing bundle for" , target_block) ;
413
-
414
409
let SendableTx :: Envelope ( tx) = mainnet. fill ( req. clone ( ) ) . await . unwrap ( ) else {
415
410
panic ! ( "expected filled tx" ) ;
416
411
} ;
417
- dbg ! ( "prepared transaction request" , tx. clone( ) ) ;
412
+ dbg ! ( "prepared transaction request" , tx. clone( ) , target_block ) ;
418
413
let tx_bytes = tx. encoded_2718 ( ) ;
419
414
420
415
let bundle = EthSendBundle {
@@ -474,6 +469,101 @@ pub async fn test_send_single_tx_sepolia() {
474
469
dbg ! ( pending_tx) ;
475
470
}
476
471
472
+ #[ tokio:: test]
473
+ #[ ignore = "integration test" ]
474
+ pub async fn test_send_single_tx_hoodi ( ) {
475
+ setup_logging ( ) ;
476
+
477
+ let raw_key = env:: var ( "BUILDER_KEY" ) . expect ( "BUILDER_KEY must be set" ) ;
478
+ let builder_key = LocalOrAws :: load ( & raw_key, Some ( 560048 ) )
479
+ . await
480
+ . expect ( "failed to load builder key" ) ;
481
+
482
+ let req = TransactionRequest :: default ( )
483
+ . to ( builder_key. address ( ) )
484
+ . value ( U256 :: from ( 0u64 ) )
485
+ . gas_limit ( 21_000 )
486
+ . max_fee_per_gas ( ( 50 * GWEI_TO_WEI ) . into ( ) )
487
+ . max_priority_fee_per_gas ( ( 2 * GWEI_TO_WEI ) . into ( ) )
488
+ . from ( builder_key. address ( ) ) ;
489
+
490
+ let hoodi = ProviderBuilder :: new ( )
491
+ . wallet ( builder_key. clone ( ) )
492
+ . connect_http ( "https://ethereum-hoodi-rpc.publicnode.com" . parse ( ) . unwrap ( ) ) ;
493
+
494
+ let SendableTx :: Envelope ( tx) = hoodi. fill ( req. clone ( ) ) . await . unwrap ( ) else {
495
+ panic ! ( "expected filled tx" ) ;
496
+ } ;
497
+ dbg ! ( "prepared transaction request" , tx. clone( ) ) ;
498
+ let tx_bytes = tx. encoded_2718 ( ) ;
499
+
500
+ let pending_tx = hoodi
501
+ . send_raw_transaction ( & tx_bytes)
502
+ . await
503
+ . expect ( "should send tx" )
504
+ . watch ( )
505
+ . await
506
+ . unwrap ( ) ;
507
+ dbg ! ( pending_tx) ;
508
+ }
509
+
510
+ #[ tokio:: test]
511
+ #[ ignore = "integration test" ]
512
+ async fn test_send_valid_bundle_hoodi ( ) {
513
+ setup_logging ( ) ;
514
+
515
+ let raw_key = env:: var ( "BUILDER_KEY" ) . expect ( "BUILDER_KEY must be set" ) ;
516
+ let builder_key = LocalOrAws :: load ( & raw_key, Some ( 560048 ) )
517
+ . await
518
+ . expect ( "failed to load builder key" ) ;
519
+
520
+ let flashbots = ProviderBuilder :: new ( )
521
+ . wallet ( builder_key. clone ( ) )
522
+ . connect_http ( "https://boost-relay-hoodi.flashbots.net" . parse ( ) . unwrap ( ) ) ;
523
+
524
+ let hoodi = ProviderBuilder :: new ( )
525
+ . wallet ( builder_key. clone ( ) )
526
+ . connect_http ( "https://ethereum-hoodi-rpc.publicnode.com" . parse ( ) . unwrap ( ) ) ;
527
+
528
+ let req = TransactionRequest :: default ( )
529
+ . to ( builder_key. address ( ) )
530
+ . value ( U256 :: from ( 0u64 ) )
531
+ . gas_limit ( 21_000 )
532
+ . max_fee_per_gas ( ( 50 * GWEI_TO_WEI ) . into ( ) )
533
+ . max_priority_fee_per_gas ( ( 2 * GWEI_TO_WEI ) . into ( ) )
534
+ . from ( builder_key. address ( ) ) ;
535
+
536
+ let SendableTx :: Envelope ( tx) = hoodi. fill ( req. clone ( ) ) . await . unwrap ( ) else {
537
+ panic ! ( "expected filled tx" ) ;
538
+ } ;
539
+ dbg ! ( "prepared transaction request" , tx. clone( ) ) ;
540
+ let tx_bytes = tx. encoded_2718 ( ) ;
541
+
542
+ let block = hoodi. get_block ( BlockId :: latest ( ) ) . await . unwrap ( ) . unwrap ( ) ;
543
+ let target_block = block. number ( ) + 1 ;
544
+ dbg ! ( "preparing bundle for" , target_block) ;
545
+
546
+ // let call_bundle = EthCallBundle {
547
+ // txs: vec![tx_bytes.clone().into()],
548
+ // block_number: target_block,
549
+ // ..Default::default()
550
+ // };
551
+
552
+ // let sim = flashbots
553
+ // .call_bundle(call_bundle)
554
+ // .with_auth(builder_key.clone());
555
+ // dbg!(sim.await.unwrap());
556
+
557
+ let bundle = EthSendBundle {
558
+ txs : vec ! [ tx_bytes. clone( ) . into( ) ] ,
559
+ block_number : target_block,
560
+ ..Default :: default ( )
561
+ } ;
562
+
563
+ let result = flashbots. send_bundle ( bundle) . with_auth ( builder_key. clone ( ) ) ;
564
+ dbg ! ( result. await . unwrap( ) ) ;
565
+ }
566
+
477
567
/// Asserts that a tx was included in Sepolia within `deadline` seconds.
478
568
async fn assert_tx_included ( sepolia : & SepoliaProvider , tx_hash : B256 , deadline : u64 ) {
479
569
let now = Instant :: now ( ) ;
0 commit comments