Skip to content

Commit b970874

Browse files
committed
FastMarketOrderParams used in instruction data builder
1 parent 7b1f933 commit b970874

File tree

12 files changed

+73
-59
lines changed

12 files changed

+73
-59
lines changed

solana/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ test-sbf:
7575
cargo build-sbf --features mainnet
7676
### Unfortunately we cannot saturate all CPUs to perform tests due to nondeterministic `RpcError`
7777
### reverts. We constrain the number of threads when we run these tests.
78-
cd modules/matching-engine-testing && cargo test-sbf --features mainnet -- --test-threads 1
78+
cd modules/matching-engine-testing && cargo test-sbf --features mainnet -- --test-threads 5
7979

8080
.PHONY: anchor-test
8181
anchor-test: anchor-test-setup

solana/modules/matching-engine-testing/tests/shimful/fast_market_order_shim.rs

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,13 @@ pub async fn initialize_fast_market_order_shimful(
5151
let program_id = &testing_context.get_matching_engine_program_id();
5252
let test_vaa_pair = current_state.get_test_vaa_pair(config.vaa_index);
5353
let fast_transfer_vaa = test_vaa_pair.fast_transfer_vaa.clone();
54-
let fast_market_order = create_fast_market_order_state_from_vaa_data(
54+
let fast_market_order_params = create_fast_market_order_params_from_vaa_data(
5555
&fast_transfer_vaa.vaa_data,
5656
config
5757
.close_account_refund_recipient
5858
.unwrap_or_else(|| testing_context.testing_actors.solvers[0].pubkey()),
5959
);
60+
let fast_market_order = FastMarketOrderState::new(&fast_market_order_params);
6061
let payer_signer = config
6162
.payer_signer
6263
.clone()
@@ -75,7 +76,7 @@ pub async fn initialize_fast_market_order_shimful(
7576
let (fast_market_order_account, fast_market_order_bump) = Pubkey::find_program_address(
7677
&[
7778
FastMarketOrderState::SEED_PREFIX,
78-
&fast_market_order.digest(),
79+
&fast_market_order.digest().as_ref(),
7980
&fast_market_order.close_account_refund_recipient.as_ref(),
8081
],
8182
program_id,
@@ -89,7 +90,7 @@ pub async fn initialize_fast_market_order_shimful(
8990
let initialize_fast_market_order_ix = initialize_fast_market_order_shimful_instruction(
9091
&payer_signer,
9192
program_id,
92-
fast_market_order,
93+
&fast_market_order_params,
9394
&guardian_signature_info,
9495
&from_endpoint,
9596
);
@@ -138,7 +139,7 @@ pub async fn initialize_fast_market_order_shimful(
138139
///
139140
/// * `payer_signer` - The payer signer keypair
140141
/// * `program_id` - The program id
141-
/// * `fast_market_order` - The fast market order state
142+
/// * `fast_market_order_params` - The fast market order params
142143
/// * `guardian_signature_info` - Information about guardian signatures
143144
///
144145
/// # Returns
@@ -147,14 +148,15 @@ pub async fn initialize_fast_market_order_shimful(
147148
pub fn initialize_fast_market_order_shimful_instruction(
148149
payer_signer: &Rc<Keypair>,
149150
program_id: &Pubkey,
150-
fast_market_order: FastMarketOrderState,
151+
fast_market_order_params: &FastMarketOrderParams,
151152
guardian_signature_info: &GuardianSignatureInfo,
152153
from_endpoint: &Pubkey,
153154
) -> solana_program::instruction::Instruction {
155+
let fast_market_order = FastMarketOrderState::new(fast_market_order_params);
154156
let fast_market_order_account = Pubkey::find_program_address(
155157
&[
156158
FastMarketOrderState::SEED_PREFIX,
157-
&fast_market_order.digest(),
159+
&fast_market_order.digest().as_ref(),
158160
&fast_market_order.close_account_refund_recipient.as_ref(),
159161
],
160162
program_id,
@@ -164,7 +166,7 @@ pub fn initialize_fast_market_order_shimful_instruction(
164166
let create_fast_market_order_accounts = InitializeFastMarketOrderFallbackAccounts {
165167
payer: &payer_signer.pubkey(),
166168
new_fast_market_order: &fast_market_order_account,
167-
guardian_set: &guardian_signature_info.guardian_set_pubkey,
169+
wormhole_guardian_set: &guardian_signature_info.guardian_set_pubkey,
168170
shim_guardian_signatures: &guardian_signature_info.guardian_signatures_pubkey,
169171
from_endpoint,
170172
verify_vaa_shim_program: &WORMHOLE_VERIFY_VAA_SHIM_PID,
@@ -174,7 +176,7 @@ pub fn initialize_fast_market_order_shimful_instruction(
174176
program_id,
175177
accounts: create_fast_market_order_accounts,
176178
data: InitializeFastMarketOrderFallbackData::new(
177-
fast_market_order,
179+
fast_market_order_params,
178180
guardian_signature_info.guardian_set_bump,
179181
),
180182
}
@@ -228,9 +230,9 @@ pub async fn close_fast_market_order_fallback(
228230
.await;
229231
}
230232

231-
/// Create the fast market order state from the vaa data
233+
/// Create the fast market order params from the vaa data
232234
///
233-
/// This function creates the fast market order state from the vaa data
235+
/// This function creates the fast market order params from the vaa data
234236
///
235237
/// # Arguments
236238
///
@@ -239,11 +241,11 @@ pub async fn close_fast_market_order_fallback(
239241
///
240242
/// # Returns
241243
///
242-
/// * `fast_market_order_state` - The fast market order state
243-
pub fn create_fast_market_order_state_from_vaa_data(
244+
/// * `fast_market_order_params` - The fast market order params
245+
pub fn create_fast_market_order_params_from_vaa_data(
244246
vaa_data: &utils::vaa::PostedVaaData,
245247
close_account_refund_recipient: Pubkey,
246-
) -> FastMarketOrderState {
248+
) -> FastMarketOrderParams {
247249
let vaa_message = matching_engine::fallback::place_initial_offer::VaaMessageBodyHeader::new(
248250
vaa_data.consistency_level,
249251
vaa_data.vaa_time,
@@ -267,7 +269,7 @@ pub fn create_fast_market_order_state_from_vaa_data(
267269

268270
fixed_array
269271
};
270-
let fast_market_order = FastMarketOrderState::new(FastMarketOrderParams {
272+
let fast_market_order_params = FastMarketOrderParams {
271273
amount_in: order.amount_in,
272274
min_amount_out: order.min_amount_out,
273275
deadline: order.deadline,
@@ -285,13 +287,15 @@ pub fn create_fast_market_order_state_from_vaa_data(
285287
vaa_emitter_chain: vaa_data.emitter_chain,
286288
vaa_consistency_level: vaa_data.consistency_level,
287289
vaa_emitter_address: vaa_data.emitter_address,
288-
});
290+
};
289291

290-
assert_eq!(fast_market_order.redeemer, order.redeemer);
292+
assert_eq!(fast_market_order_params.redeemer, order.redeemer);
291293
assert_eq!(
292-
vaa_message.digest(&fast_market_order).as_ref(),
294+
vaa_message
295+
.digest(&FastMarketOrderState::new(&fast_market_order_params))
296+
.as_ref(),
293297
vaa_data.digest().as_ref()
294298
);
295299

296-
fast_market_order
300+
fast_market_order_params
297301
}

solana/modules/matching-engine-testing/tests/shimful/shims_make_offer.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ use matching_engine::fallback::place_initial_offer::{
1111
PlaceInitialOfferCctpShimAccounts as PlaceInitialOfferCctpShimFallbackAccounts,
1212
PlaceInitialOfferCctpShimData as PlaceInitialOfferCctpShimFallbackData,
1313
};
14-
use matching_engine::state::Auction;
14+
use matching_engine::state::{Auction, FastMarketOrder};
1515
use solana_program_test::ProgramTestContext;
1616

17-
use super::fast_market_order_shim::create_fast_market_order_state_from_vaa_data;
17+
use super::fast_market_order_shim::create_fast_market_order_params_from_vaa_data;
1818
use solana_sdk::{pubkey::Pubkey, signer::Signer};
1919

2020
/// Places an initial offer using the fallback program. The vaa is constructed from a passed in PostedVaaData struct. The nonce is forced to 0.
@@ -295,7 +295,10 @@ impl PlaceInitialOfferShimfulAccounts {
295295
.fast_transfer_vaa;
296296
let vaa_data = fast_transfer_vaa.get_vaa_data();
297297
let fast_market_order_state =
298-
create_fast_market_order_state_from_vaa_data(vaa_data, close_account_refund_recipient);
298+
FastMarketOrder::new(&create_fast_market_order_params_from_vaa_data(
299+
vaa_data,
300+
close_account_refund_recipient,
301+
));
299302
let offer_actor = config.actor.get_actor(&testing_context.testing_actors);
300303
let offer_token = match &config.custom_accounts {
301304
Some(custom_accounts) => match custom_accounts.offer_token_address {
@@ -309,7 +312,10 @@ impl PlaceInitialOfferShimfulAccounts {
309312
.unwrap(),
310313
};
311314
let auction = Pubkey::find_program_address(
312-
&[Auction::SEED_PREFIX, &fast_market_order_state.digest()],
315+
&[
316+
Auction::SEED_PREFIX,
317+
&fast_market_order_state.digest().as_ref(),
318+
],
313319
&program_id,
314320
)
315321
.0;

solana/modules/matching-engine-testing/tests/shimful/shims_prepare_order_response.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ impl PrepareOrderResponseShimAccountsHelper {
384384
let fast_market_order_digest = data.fast_market_order.digest();
385385
let prepared_order_response_seeds = [
386386
PreparedOrderResponse::SEED_PREFIX,
387-
&fast_market_order_digest,
387+
&fast_market_order_digest.as_ref(),
388388
];
389389

390390
let (prepared_order_response_pda, _prepared_order_response_bump) =

solana/modules/matching-engine-testing/tests/test_scenarios/make_offer.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ pub async fn test_place_initial_offer_shimful() {
8383
.fast_market_order()
8484
.unwrap()
8585
.fast_market_order
86-
.digest(),
86+
.digest()
87+
.as_ref(),
8788
final_state
8889
.base()
8990
.vaas

solana/modules/matching-engine-testing/tests/testing_engine/config.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use std::{
2121
};
2222

2323
use crate::{
24-
shimful::fast_market_order_shim::create_fast_market_order_state_from_vaa_data,
24+
shimful::fast_market_order_shim::create_fast_market_order_params_from_vaa_data,
2525
shimless::initialize::AuctionParametersConfig,
2626
utils::{
2727
auction::{ActiveAuctionState, AuctionAccounts},
@@ -657,14 +657,15 @@ impl CombinedInstructionConfig {
657657
) -> Self {
658658
let test_vaa_pair = current_state.get_test_vaa_pair(0);
659659
let fast_transfer_vaa = test_vaa_pair.fast_transfer_vaa.clone();
660-
let fast_market_order = create_fast_market_order_state_from_vaa_data(
660+
let fast_market_order_params = create_fast_market_order_params_from_vaa_data(
661661
&fast_transfer_vaa.vaa_data,
662662
testing_actors.solvers[0].pubkey(),
663663
);
664+
let fast_market_order = FastMarketOrderState::new(&fast_market_order_params);
664665
let (fast_market_order_address, _fast_market_order_bump) = Pubkey::find_program_address(
665666
&[
666667
FastMarketOrderState::SEED_PREFIX,
667-
&fast_market_order.digest(),
668+
&fast_market_order.digest().as_ref(),
668669
&fast_market_order.close_account_refund_recipient.as_ref(),
669670
],
670671
program_id,

solana/modules/matching-engine-testing/tests/testing_engine/engine.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use super::setup::TestingContext;
3333
use super::{config::*, state::*};
3434
use crate::shimful;
3535
use crate::shimful::fast_market_order_shim::{
36-
create_fast_market_order_state_from_vaa_data, initialize_fast_market_order_shimful,
36+
create_fast_market_order_params_from_vaa_data, initialize_fast_market_order_shimful,
3737
initialize_fast_market_order_shimful_instruction,
3838
};
3939
use crate::shimful::shims_make_offer::{
@@ -858,12 +858,13 @@ impl TestingEngine {
858858
let test_vaa_pair =
859859
current_state.get_test_vaa_pair(create_fast_market_order_config.vaa_index);
860860
let fast_transfer_vaa = test_vaa_pair.fast_transfer_vaa.clone();
861-
let fast_market_order = create_fast_market_order_state_from_vaa_data(
861+
let fast_market_order_params = create_fast_market_order_params_from_vaa_data(
862862
&fast_transfer_vaa.vaa_data,
863863
create_fast_market_order_config
864864
.close_account_refund_recipient
865865
.unwrap_or_else(|| self.testing_context.testing_actors.solvers[0].pubkey()),
866866
);
867+
let fast_market_order = FastMarketOrder::new(&fast_market_order_params);
867868
let create_fast_market_order_payer_signer = create_fast_market_order_config
868869
.payer_signer
869870
.clone()
@@ -881,7 +882,7 @@ impl TestingEngine {
881882
let (fast_market_order_account, fast_market_order_bump) = Pubkey::find_program_address(
882883
&[
883884
FastMarketOrder::SEED_PREFIX,
884-
&fast_market_order.digest(),
885+
&fast_market_order.digest().as_ref(),
885886
&fast_market_order.close_account_refund_recipient.as_ref(),
886887
],
887888
program_id,
@@ -895,7 +896,7 @@ impl TestingEngine {
895896
let create_fast_market_order_instruction = initialize_fast_market_order_shimful_instruction(
896897
&create_fast_market_order_payer_signer,
897898
program_id,
898-
fast_market_order,
899+
&fast_market_order_params,
899900
&guardian_signature_info,
900901
&from_endpoint_pubkey,
901902
);

solana/programs/matching-engine/src/fallback/processor/execute_order.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ pub(super) fn process(accounts: &[AccountInfo]) -> Result<()> {
213213
let active_auction_inner_info = active_auction.info.as_ref().unwrap();
214214

215215
require!(
216-
active_auction.vaa_hash == fast_market_order.digest(),
216+
active_auction.vaa_hash == fast_market_order.digest().as_ref(),
217217
MatchingEngineError::VaaMismatch
218218
);
219219

solana/programs/matching-engine/src/fallback/processor/initialize_fast_market_order.rs

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
use anchor_lang::{prelude::*, Discriminator};
22
use bytemuck::{Pod, Zeroable};
3-
use solana_program::{instruction::Instruction, keccak};
3+
use solana_program::instruction::Instruction;
44

5-
use crate::{error::MatchingEngineError, state::FastMarketOrder, ID};
5+
use crate::{
6+
error::MatchingEngineError,
7+
state::{FastMarketOrder, FastMarketOrderParams},
8+
ID,
9+
};
610

711
const NUM_ACCOUNTS: usize = 7;
812

@@ -11,19 +15,18 @@ pub struct InitializeFastMarketOrderAccounts<'ix> {
1115
/// order account. This account will be the only authority allowed to
1216
/// close this account.
1317
pub payer: &'ix Pubkey, // 0
14-
1518
/// The from router endpoint account for the hash of the fast market order
16-
pub from_endpoint: &'ix Pubkey,
19+
pub from_endpoint: &'ix Pubkey, // 1
20+
/// The verify VAA shim program account
21+
pub verify_vaa_shim_program: &'ix Pubkey, // 2
1722
/// Wormhole guardian set account used to check recovered pubkeys using
1823
/// [Self::guardian_set_signatures].
19-
// TODO: Rename to "wormhole_guardian_set"
20-
pub verify_vaa_shim_program: &'ix Pubkey, // 1
21-
pub guardian_set: &'ix Pubkey, // 2
24+
pub wormhole_guardian_set: &'ix Pubkey, // 3
2225
/// The guardian set signatures of fast market order VAA.
23-
pub shim_guardian_signatures: &'ix Pubkey, // 3
26+
pub shim_guardian_signatures: &'ix Pubkey, // 4
2427
/// The fast market order account pubkey (that is created by the
2528
/// instruction).
26-
pub new_fast_market_order: &'ix Pubkey, // 4
29+
pub new_fast_market_order: &'ix Pubkey, // 5
2730
}
2831

2932
#[derive(Debug, Copy, Clone, Pod, Zeroable)]
@@ -39,10 +42,9 @@ pub struct InitializeFastMarketOrderData {
3942

4043
impl InitializeFastMarketOrderData {
4144
// Adds the padding to the InitializeFastMarketOrderData
42-
// TODO: change FastMarketOrder to FastMarketOrderParams.
43-
pub fn new(fast_market_order: FastMarketOrder, guardian_set_bump: u8) -> Self {
45+
pub fn new(fast_market_order_params: &FastMarketOrderParams, guardian_set_bump: u8) -> Self {
4446
Self {
45-
fast_market_order,
47+
fast_market_order: FastMarketOrder::new(fast_market_order_params),
4648
guardian_set_bump,
4749
_padding: Default::default(),
4850
}
@@ -70,7 +72,7 @@ impl InitializeFastMarketOrder<'_> {
7072
new_fast_market_order,
7173
from_endpoint,
7274

73-
guardian_set: wormhole_guardian_set,
75+
wormhole_guardian_set,
7476
shim_guardian_signatures,
7577
verify_vaa_shim_program,
7678
} = self.accounts;
@@ -129,7 +131,7 @@ pub(super) fn process(
129131
3, // wormhole_guardian_set_index
130132
4, // shim_guardian_signatures_index
131133
data.guardian_set_bump,
132-
keccak::Hash(fast_market_order_vaa_digest),
134+
fast_market_order_vaa_digest,
133135
accounts,
134136
)?;
135137

@@ -140,7 +142,7 @@ pub(super) fn process(
140142
let (expected_fast_market_order_key, fast_market_order_bump) = Pubkey::find_program_address(
141143
&[
142144
FastMarketOrder::SEED_PREFIX,
143-
&fast_market_order_vaa_digest,
145+
&fast_market_order_vaa_digest.as_ref(),
144146
fast_market_order.close_account_refund_recipient.as_ref(),
145147
],
146148
&ID,
@@ -159,7 +161,7 @@ pub(super) fn process(
159161
&ID,
160162
&[&[
161163
FastMarketOrder::SEED_PREFIX,
162-
&fast_market_order_vaa_digest,
164+
&fast_market_order_vaa_digest.as_ref(),
163165
// TODO: Replace with payer_info.key.
164166
fast_market_order.close_account_refund_recipient.as_ref(),
165167
&[fast_market_order_bump],
@@ -193,11 +195,11 @@ mod test {
193195
new_fast_market_order: &Default::default(),
194196
from_endpoint: &Default::default(),
195197
verify_vaa_shim_program: &Default::default(),
196-
guardian_set: &Default::default(),
198+
wormhole_guardian_set: &Default::default(),
197199
shim_guardian_signatures: &Default::default(),
198200
},
199201
data: InitializeFastMarketOrderData::new(
200-
FastMarketOrder::new(FastMarketOrderParams {
202+
&FastMarketOrderParams {
201203
amount_in: Default::default(),
202204
min_amount_out: Default::default(),
203205
deadline: Default::default(),
@@ -215,7 +217,7 @@ mod test {
215217
vaa_emitter_chain: Default::default(),
216218
vaa_consistency_level: Default::default(),
217219
vaa_emitter_address: Default::default(),
218-
}),
220+
},
219221
Default::default(),
220222
),
221223
}

solana/programs/matching-engine/src/fallback/processor/place_initial_offer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ mod tests {
344344

345345
#[test]
346346
fn test_bytemuck() {
347-
let test_fast_market_order = FastMarketOrder::new(FastMarketOrderParams {
347+
let test_fast_market_order = FastMarketOrder::new(&FastMarketOrderParams {
348348
amount_in: 1000000000000000000,
349349
min_amount_out: 1000000000000000000,
350350
deadline: 1000000000,

0 commit comments

Comments
 (0)