Skip to content

Commit 2e0cf1c

Browse files
author
Bengt Lofgren
committed
fully refactored, all tests pass
1 parent c8321b0 commit 2e0cf1c

File tree

15 files changed

+1220
-1178
lines changed

15 files changed

+1220
-1178
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,9 +226,9 @@ pub fn prepare_order_response_cctp_shim(
226226
let receive_message_args = data.to_receive_message_args();
227227
let finalized_vaa_message = data.finalized_vaa_message;
228228
// Load accounts
229+
let fast_market_order_account_data = fast_market_order.data.borrow();
229230
let fast_market_order_zero_copy =
230-
FastMarketOrderState::try_deserialize(&mut &fast_market_order.data.borrow()[..])
231-
.map(Box::new)?;
231+
FastMarketOrderState::try_read(&fast_market_order_account_data[..])?;
232232
// Create pdas for addresses that need to be created
233233
// Check the prepared order response account is valid
234234
// TODO: Pass the digest so it isn't recomputed

solana/programs/matching-engine/src/state/fast_market_order.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use anchor_lang::prelude::*;
2+
use anchor_lang::Discriminator;
23
use solana_program::keccak;
34

45
/// An account that represents a fast market order vaa. It is created by the signer of the transaction, and owned by the matching engine program.
@@ -139,4 +140,18 @@ impl FastMarketOrder {
139140
.try_into()
140141
.unwrap()
141142
}
143+
144+
/// Read from an account info
145+
pub fn try_read(data: &[u8]) -> Result<&Self> {
146+
if data.len() < 8 {
147+
return Err(ErrorCode::AccountDiscriminatorNotFound.into());
148+
}
149+
let discriminator: [u8; 8] = data[0..8].try_into().unwrap();
150+
if discriminator != Self::discriminator() {
151+
return Err(ErrorCode::AccountDiscriminatorMismatch.into());
152+
}
153+
let byte_muck_data = &data[8..];
154+
let fast_market_order = bytemuck::from_bytes::<Self>(byte_muck_data);
155+
Ok(fast_market_order)
156+
}
142157
}

0 commit comments

Comments
 (0)