@@ -16,11 +16,13 @@ use crate::{
16
16
17
17
use super :: burn_and_post:: { burn_and_post, PostMessageAccounts } ;
18
18
19
+ const NUM_ACCOUNTS : usize = 32 ;
20
+
19
21
// TODO: Rename to "ExecuteOrderCctpV2Accounts".
20
22
#[ derive( Debug , Clone , PartialEq , Eq , Copy ) ]
21
23
pub struct ExecuteOrderShimAccounts < ' ix > {
22
24
/// The signer account.
23
- // TODO: Rename payer.
25
+ // TODO: Rename to " payer" .
24
26
pub signer : & ' ix Pubkey , // 0
25
27
/// The cctp message account. Seeds must be \["cctp-msg", auction_address.as_ref()\].
26
28
// TODO: Rename to "new_cctp_message".
@@ -142,50 +144,53 @@ impl ExecuteOrderCctpShim<'_> {
142
144
clock : _,
143
145
} = self . accounts ;
144
146
147
+ let accounts = vec ! [
148
+ AccountMeta :: new( * payer, true ) ,
149
+ AccountMeta :: new( * new_cctp_message, false ) ,
150
+ AccountMeta :: new( * custodian, false ) ,
151
+ AccountMeta :: new_readonly( * fast_market_order, false ) ,
152
+ AccountMeta :: new( * active_auction, false ) ,
153
+ AccountMeta :: new( * auction_custody, false ) ,
154
+ AccountMeta :: new_readonly( * auction_config, false ) ,
155
+ AccountMeta :: new( * auction_best_offer_token, false ) ,
156
+ AccountMeta :: new( * executor_token, false ) ,
157
+ AccountMeta :: new( * auction_initial_offer_token, false ) ,
158
+ AccountMeta :: new( * auction_initial_participant, false ) ,
159
+ AccountMeta :: new_readonly( * to_endpoint, false ) ,
160
+ AccountMeta :: new_readonly( * post_message_shim_program, false ) ,
161
+ AccountMeta :: new( * core_bridge_emitter_sequence, false ) ,
162
+ AccountMeta :: new( * shim_message, false ) ,
163
+ AccountMeta :: new_readonly( * cctp_token_messenger_minter_program, false ) ,
164
+ AccountMeta :: new( * cctp_mint, false ) ,
165
+ AccountMeta :: new_readonly( * cctp_token_messenger_minter_sender_authority, false ) ,
166
+ AccountMeta :: new( * cctp_message_transmitter_config, false ) ,
167
+ AccountMeta :: new_readonly( * cctp_token_messenger, false ) ,
168
+ AccountMeta :: new_readonly( * cctp_remote_token_messenger, false ) ,
169
+ AccountMeta :: new_readonly( * cctp_token_minter, false ) ,
170
+ AccountMeta :: new( * cctp_local_token, false ) ,
171
+ AccountMeta :: new_readonly( * cctp_token_messenger_minter_event_authority, false ) ,
172
+ AccountMeta :: new_readonly( * cctp_message_transmitter_program, false ) ,
173
+ AccountMeta :: new_readonly( * core_bridge_program, false ) ,
174
+ AccountMeta :: new( * core_bridge_config, false ) ,
175
+ AccountMeta :: new( * core_bridge_fee_collector, false ) ,
176
+ AccountMeta :: new( * post_message_shim_event_authority, false ) ,
177
+ AccountMeta :: new_readonly( solana_program:: system_program:: ID , false ) ,
178
+ AccountMeta :: new_readonly( spl_token:: ID , false ) ,
179
+ AccountMeta :: new_readonly( solana_program:: sysvar:: clock:: ID , false ) ,
180
+ ] ;
181
+ debug_assert_eq ! ( accounts. len( ) , NUM_ACCOUNTS ) ;
182
+
145
183
Instruction {
146
184
program_id : * self . program_id ,
147
- accounts : vec ! [
148
- AccountMeta :: new( * payer, true ) ,
149
- AccountMeta :: new( * new_cctp_message, false ) ,
150
- AccountMeta :: new( * custodian, false ) ,
151
- AccountMeta :: new_readonly( * fast_market_order, false ) ,
152
- AccountMeta :: new( * active_auction, false ) ,
153
- AccountMeta :: new( * auction_custody, false ) ,
154
- AccountMeta :: new_readonly( * auction_config, false ) ,
155
- AccountMeta :: new( * auction_best_offer_token, false ) ,
156
- AccountMeta :: new( * executor_token, false ) ,
157
- AccountMeta :: new( * auction_initial_offer_token, false ) ,
158
- AccountMeta :: new( * auction_initial_participant, false ) ,
159
- AccountMeta :: new_readonly( * to_endpoint, false ) ,
160
- AccountMeta :: new_readonly( * post_message_shim_program, false ) ,
161
- AccountMeta :: new( * core_bridge_emitter_sequence, false ) ,
162
- AccountMeta :: new( * shim_message, false ) ,
163
- AccountMeta :: new_readonly( * cctp_token_messenger_minter_program, false ) ,
164
- AccountMeta :: new( * cctp_mint, false ) ,
165
- AccountMeta :: new_readonly( * cctp_token_messenger_minter_sender_authority, false ) ,
166
- AccountMeta :: new( * cctp_message_transmitter_config, false ) ,
167
- AccountMeta :: new_readonly( * cctp_token_messenger, false ) ,
168
- AccountMeta :: new_readonly( * cctp_remote_token_messenger, false ) ,
169
- AccountMeta :: new_readonly( * cctp_token_minter, false ) ,
170
- AccountMeta :: new( * cctp_local_token, false ) ,
171
- AccountMeta :: new_readonly( * cctp_token_messenger_minter_event_authority, false ) ,
172
- AccountMeta :: new_readonly( * cctp_message_transmitter_program, false ) ,
173
- AccountMeta :: new_readonly( * core_bridge_program, false ) ,
174
- AccountMeta :: new( * core_bridge_config, false ) ,
175
- AccountMeta :: new( * core_bridge_fee_collector, false ) ,
176
- AccountMeta :: new( * post_message_shim_event_authority, false ) ,
177
- AccountMeta :: new_readonly( solana_program:: system_program:: ID , false ) ,
178
- AccountMeta :: new_readonly( spl_token:: ID , false ) ,
179
- AccountMeta :: new_readonly( solana_program:: sysvar:: clock:: ID , false ) ,
180
- ] ,
185
+ accounts,
181
186
data : super :: FallbackMatchingEngineInstruction :: ExecuteOrderCctpShim . to_vec ( ) ,
182
187
}
183
188
}
184
189
}
185
190
186
191
pub ( super ) fn process ( accounts : & [ AccountInfo ] ) -> Result < ( ) > {
187
192
// This saves stack space whereas having that in the body does not
188
- super :: helpers:: require_min_account_infos_len ( accounts, 31 ) ?;
193
+ super :: helpers:: require_min_account_infos_len ( accounts, NUM_ACCOUNTS ) ?;
189
194
190
195
// Get the accounts
191
196
let payer_info = & accounts[ 0 ] ;
@@ -638,3 +643,50 @@ pub(super) fn process(accounts: &[AccountInfo]) -> Result<()> {
638
643
invoke_signed_unchecked ( & close_account_ix, accounts, & [ Custodian :: SIGNER_SEEDS ] )
639
644
. map_err ( Into :: into)
640
645
}
646
+
647
+ #[ cfg( test) ]
648
+ mod test {
649
+ use super :: * ;
650
+
651
+ #[ test]
652
+ fn test_instruction ( ) {
653
+ ExecuteOrderCctpShim {
654
+ program_id : & Default :: default ( ) ,
655
+ accounts : ExecuteOrderShimAccounts {
656
+ signer : & Default :: default ( ) ,
657
+ cctp_message : & Default :: default ( ) ,
658
+ custodian : & Default :: default ( ) ,
659
+ fast_market_order : & Default :: default ( ) ,
660
+ active_auction : & Default :: default ( ) ,
661
+ active_auction_custody_token : & Default :: default ( ) ,
662
+ active_auction_config : & Default :: default ( ) ,
663
+ active_auction_best_offer_token : & Default :: default ( ) ,
664
+ executor_token : & Default :: default ( ) ,
665
+ initial_offer_token : & Default :: default ( ) ,
666
+ initial_participant : & Default :: default ( ) ,
667
+ to_router_endpoint : & Default :: default ( ) ,
668
+ post_message_shim_program : & Default :: default ( ) ,
669
+ core_bridge_emitter_sequence : & Default :: default ( ) ,
670
+ post_shim_message : & Default :: default ( ) ,
671
+ cctp_deposit_for_burn_mint : & Default :: default ( ) ,
672
+ cctp_deposit_for_burn_token_messenger_minter_sender_authority : & Default :: default ( ) ,
673
+ cctp_deposit_for_burn_message_transmitter_config : & Default :: default ( ) ,
674
+ cctp_deposit_for_burn_token_messenger : & Default :: default ( ) ,
675
+ cctp_deposit_for_burn_remote_token_messenger : & Default :: default ( ) ,
676
+ cctp_deposit_for_burn_token_minter : & Default :: default ( ) ,
677
+ cctp_deposit_for_burn_local_token : & Default :: default ( ) ,
678
+ cctp_deposit_for_burn_token_messenger_minter_event_authority : & Default :: default ( ) ,
679
+ cctp_deposit_for_burn_token_messenger_minter_program : & Default :: default ( ) ,
680
+ cctp_deposit_for_burn_message_transmitter_program : & Default :: default ( ) ,
681
+ core_bridge_program : & Default :: default ( ) ,
682
+ core_bridge_config : & Default :: default ( ) ,
683
+ core_bridge_fee_collector : & Default :: default ( ) ,
684
+ post_message_shim_event_authority : & Default :: default ( ) ,
685
+ system_program : & Default :: default ( ) ,
686
+ token_program : & Default :: default ( ) ,
687
+ clock : & Default :: default ( ) ,
688
+ } ,
689
+ }
690
+ . instruction ( ) ;
691
+ }
692
+ }
0 commit comments