1
1
use std:: io:: Cursor ;
2
2
3
3
use super :: helpers:: create_account_reliably;
4
+ use super :: place_initial_offer:: VaaMessageBodyHeader ;
4
5
use super :: FallbackMatchingEngineInstruction ;
5
6
use crate :: fallback:: helpers:: check_account_length;
7
+ use crate :: fallback:: helpers:: create_token_account_reliably;
6
8
use crate :: state:: PreparedOrderResponseInfo ;
7
9
use crate :: state:: PreparedOrderResponseSeeds ;
8
10
use crate :: state:: {
9
11
Custodian , FastMarketOrder as FastMarketOrderState , MessageProtocol , PreparedOrderResponse ,
10
12
RouterEndpoint ,
11
13
} ;
12
14
use crate :: CCTP_MINT_RECIPIENT ;
15
+ use crate :: ID ;
13
16
use anchor_lang:: prelude:: * ;
14
17
use anchor_spl:: token:: spl_token;
15
18
use common:: messages:: SlowOrderResponse ;
@@ -42,24 +45,18 @@ pub struct FinalizedVaaMessageArgs {
42
45
}
43
46
44
47
impl FinalizedVaaMessageArgs {
45
- #[ allow( clippy:: too_many_arguments) ]
46
48
pub fn digest (
47
49
& self ,
48
- sequence : u64 ,
49
- timestamp : u32 ,
50
- emitter_chain : u16 ,
51
- emitter_address : [ u8 ; 32 ] ,
52
- nonce : u32 ,
53
- consistency_level : u8 ,
50
+ vaa_message_body_header : VaaMessageBodyHeader ,
54
51
deposit_vaa_payload : Deposit ,
55
52
) -> [ u8 ; 32 ] {
56
53
let message_hash = keccak:: hashv ( & [
57
- timestamp . to_be_bytes ( ) . as_ref ( ) ,
58
- nonce. to_be_bytes ( ) . as_ref ( ) ,
59
- emitter_chain. to_be_bytes ( ) . as_ref ( ) ,
60
- & emitter_address,
61
- & sequence. to_be_bytes ( ) ,
62
- & [ consistency_level] ,
54
+ vaa_message_body_header . vaa_time . to_be_bytes ( ) . as_ref ( ) ,
55
+ vaa_message_body_header . nonce . to_be_bytes ( ) . as_ref ( ) ,
56
+ vaa_message_body_header . emitter_chain . to_be_bytes ( ) . as_ref ( ) ,
57
+ & vaa_message_body_header . emitter_address ,
58
+ & vaa_message_body_header . sequence . to_be_bytes ( ) ,
59
+ & [ vaa_message_body_header . consistency_level ] ,
63
60
deposit_vaa_payload. to_vec ( ) . as_ref ( ) ,
64
61
] ) ;
65
62
// Digest is the hash of the message
@@ -71,23 +68,9 @@ impl FinalizedVaaMessageArgs {
71
68
}
72
69
73
70
impl PrepareOrderResponseCctpShimData {
74
- pub fn new (
75
- encoded_cctp_message : Vec < u8 > ,
76
- cctp_attestation : Vec < u8 > ,
77
- finalized_vaa_message_args : FinalizedVaaMessageArgs ,
78
- ) -> Self {
79
- Self {
80
- encoded_cctp_message,
81
- cctp_attestation,
82
- finalized_vaa_message_args,
83
- }
84
- }
85
71
pub fn from_bytes ( data : & [ u8 ] ) -> Option < Self > {
86
72
Self :: try_from_slice ( data) . ok ( )
87
73
}
88
- pub fn to_bytes ( & self ) -> Vec < u8 > {
89
- self . try_to_vec ( ) . unwrap ( )
90
- }
91
74
92
75
pub fn to_receive_message_args ( & self ) -> ReceiveMessageArgs {
93
76
let mut encoded_message = Vec :: with_capacity ( self . encoded_cctp_message . len ( ) ) ;
@@ -188,7 +171,7 @@ pub fn prepare_order_response_cctp_shim(
188
171
accounts : & [ AccountInfo ] ,
189
172
data : PrepareOrderResponseCctpShimData ,
190
173
) -> Result < ( ) > {
191
- let program_id = & crate :: ID ;
174
+ let program_id = & ID ;
192
175
check_account_length ( accounts, 27 ) ?;
193
176
194
177
let signer = & accounts[ 0 ] ;
@@ -366,7 +349,6 @@ pub fn prepare_order_response_cctp_shim(
366
349
let finalised_vaa_sequence = fast_market_order_zero_copy. vaa_sequence . saturating_sub ( 1 ) ;
367
350
let finalised_vaa_emitter_chain = fast_market_order_zero_copy. vaa_emitter_chain ;
368
351
let finalised_vaa_emitter_address = fast_market_order_zero_copy. vaa_emitter_address ;
369
- let finalised_vaa_nonce = fast_market_order_zero_copy. vaa_nonce ;
370
352
let finalised_vaa_consistency_level = finalized_vaa_message_args. consistency_level ;
371
353
let slow_order_response = SlowOrderResponse {
372
354
base_fee : finalized_vaa_message_args. base_fee ,
@@ -383,12 +365,13 @@ pub fn prepare_order_response_cctp_shim(
383
365
} ;
384
366
385
367
finalized_vaa_message_args. digest (
386
- finalised_vaa_sequence,
387
- finalised_vaa_timestamp,
388
- finalised_vaa_emitter_chain,
389
- finalised_vaa_emitter_address,
390
- finalised_vaa_nonce,
391
- finalised_vaa_consistency_level,
368
+ VaaMessageBodyHeader :: new (
369
+ finalised_vaa_consistency_level,
370
+ finalised_vaa_timestamp,
371
+ finalised_vaa_sequence,
372
+ finalised_vaa_emitter_chain,
373
+ finalised_vaa_emitter_address,
374
+ ) ,
392
375
deposit_vaa_payload,
393
376
)
394
377
} ;
@@ -488,23 +471,17 @@ pub fn prepare_order_response_cctp_shim(
488
471
] ;
489
472
490
473
let prepared_custody_token_signer_seeds = & [ & create_prepared_custody_token_seeds[ ..] ] ;
491
- let prepared_custody_token_account_space = spl_token:: state:: Account :: LEN ;
492
- create_account_reliably (
474
+ create_token_account_reliably (
493
475
& signer. key ( ) ,
494
476
& prepared_custody_token_pda,
477
+ & prepared_order_response_pda,
478
+ & usdc. key ( ) ,
479
+ spl_token:: state:: Account :: LEN ,
495
480
prepared_custody_token. lamports ( ) ,
496
- prepared_custody_token_account_space,
497
481
accounts,
498
- & spl_token:: ID ,
499
482
prepared_custody_token_signer_seeds,
500
483
) ?;
501
- let init_token_account_ix = spl_token:: instruction:: initialize_account3 (
502
- & spl_token:: ID ,
503
- & prepared_custody_token_pda,
504
- & usdc. key ( ) ,
505
- & prepared_order_response_pda,
506
- ) ?;
507
- solana_program:: program:: invoke_signed_unchecked ( & init_token_account_ix, accounts, & [ ] ) ?;
484
+
508
485
// End create prepared custody token account
509
486
// ------------------------------------------------------------------------------------------------
510
487
0 commit comments