@@ -508,6 +508,7 @@ where
508
508
async fn construct_tx < S : Signers > (
509
509
& self ,
510
510
token_instructions : & [ Instruction ] ,
511
+ additional_compute_budget : Option < u32 > ,
511
512
signing_keypairs : & S ,
512
513
) -> TokenResult < Transaction > {
513
514
let mut instructions = vec ! [ ] ;
@@ -532,6 +533,14 @@ where
532
533
533
534
instructions. extend_from_slice ( token_instructions) ;
534
535
536
+ if let Some ( additional_compute_budget) = additional_compute_budget {
537
+ instructions. push (
538
+ solana_sdk:: compute_budget:: ComputeBudgetInstruction :: set_compute_unit_limit (
539
+ additional_compute_budget,
540
+ ) ,
541
+ ) ;
542
+ }
543
+
535
544
let ( message, blockhash) =
536
545
if let ( Some ( nonce_account) , Some ( nonce_authority) , Some ( nonce_blockhash) ) = (
537
546
self . nonce_account ,
@@ -581,7 +590,7 @@ where
581
590
signing_keypairs : & S ,
582
591
) -> TokenResult < T :: SimulationOutput > {
583
592
let transaction = self
584
- . construct_tx ( token_instructions, signing_keypairs)
593
+ . construct_tx ( token_instructions, None , signing_keypairs)
585
594
. await ?;
586
595
587
596
self . client
@@ -596,7 +605,27 @@ where
596
605
signing_keypairs : & S ,
597
606
) -> TokenResult < T :: Output > {
598
607
let transaction = self
599
- . construct_tx ( token_instructions, signing_keypairs)
608
+ . construct_tx ( token_instructions, None , signing_keypairs)
609
+ . await ?;
610
+
611
+ self . client
612
+ . send_transaction ( & transaction)
613
+ . await
614
+ . map_err ( TokenError :: Client )
615
+ }
616
+
617
+ pub async fn process_ixs_with_additional_compute_budget < S : Signers > (
618
+ & self ,
619
+ token_instructions : & [ Instruction ] ,
620
+ additional_compute_budget : u32 ,
621
+ signing_keypairs : & S ,
622
+ ) -> TokenResult < T :: Output > {
623
+ let transaction = self
624
+ . construct_tx (
625
+ token_instructions,
626
+ Some ( additional_compute_budget) ,
627
+ signing_keypairs,
628
+ )
600
629
. await ?;
601
630
602
631
self . client
@@ -2653,7 +2682,10 @@ where
2653
2682
. new_decryptable_available_balance ( transfer_amount, source_aes_key)
2654
2683
. map_err ( |_| TokenError :: AccountDecryption ) ?;
2655
2684
2656
- self . process_ixs (
2685
+ // additional compute budget required for `VerifyTransferWithFee`
2686
+ const TRANSFER_WITH_FEE_COMPUTE_BUDGET : u32 = 500_000 ;
2687
+
2688
+ self . process_ixs_with_additional_compute_budget (
2657
2689
& confidential_transfer:: instruction:: transfer_with_fee (
2658
2690
& self . program_id ,
2659
2691
source_account,
@@ -2664,6 +2696,7 @@ where
2664
2696
& multisig_signers,
2665
2697
proof_location,
2666
2698
) ?,
2699
+ TRANSFER_WITH_FEE_COMPUTE_BUDGET ,
2667
2700
signing_keypairs,
2668
2701
)
2669
2702
. await
0 commit comments