Skip to content

Commit

Permalink
replace more execute fns
Browse files Browse the repository at this point in the history
  • Loading branch information
barnjamin committed Jun 19, 2024
1 parent 4cf3221 commit 4900191
Show file tree
Hide file tree
Showing 4 changed files with 100 additions and 181 deletions.
10 changes: 3 additions & 7 deletions solana/ts/src/matchingEngine/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1860,9 +1860,7 @@ export class MatchingEngineProgram {
initialOfferToken?: PublicKey;
initialParticipant?: PublicKey;
},
opts: {
targetChain?: ChainId;
} = {},
opts: { targetChain?: ChainId } = {},
) {
const connection = this.program.provider.connection;

Expand All @@ -1882,10 +1880,8 @@ export class MatchingEngineProgram {
if (targetChain === undefined) {
fastVaaAccount ??= await VaaAccount.fetch(connection, fastVaa);

const { fastMarketOrder } = LiquidityLayerMessage.decode(fastVaaAccount.payload());
if (fastMarketOrder === undefined) {
throw new Error("Message not FastMarketOrder");
}
const { payload: fastMarketOrder } = fastVaaAccount.vaa("FastTransfer:FastMarketOrder");

targetChain ??= toChainId(fastMarketOrder.targetChain);
}

Expand Down
40 changes: 35 additions & 5 deletions solana/ts/src/protocol/matchingEngine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -196,18 +196,48 @@ export class SolanaMatchingEngine<N extends Network, C extends SolanaChains>
yield this.createUnsignedTx({ transaction }, "MatchingEngine.improveOffer");
}

async *executeFastOrder(sender: AnySolanaAddress, vaa: FastTransfer.VAA) {
async *executeFastOrder(
sender: AnySolanaAddress,
vaa: FastTransfer.VAA,
participant?: AnySolanaAddress,
) {
if (vaa.payloadLiteral !== "FastTransfer:FastMarketOrder") throw new Error("Invalid VAA");

const payer = new SolanaAddress(sender).unwrap();

const initialParticipant = participant
? new SolanaAddress(participant).unwrap()
: undefined;

const fastVaa = coreUtils.derivePostedVaaKey(
this.coreBridgeProgramId(),
Buffer.from(vaa.hash),
);

const ix = await this.executeFastOrderCctpIx({
payer,
fastVaa,
});
const digest = keccak256(vaa.hash);
const auction = this.auctionAddress(digest);
const reservedSequence = this.reservedFastFillSequenceAddress(digest);

const { targetChain } = vaa.payload;

const ix =
targetChain === "Solana"
? await this.executeFastOrderLocalIx({
payer,
fastVaa,
auction,
reservedSequence,
initialParticipant,
})
: await this.executeFastOrderCctpIx(
{
payer,
fastVaa,
auction,
initialParticipant,
},
{ targetChain: toChainId(targetChain) },
);

const computeIx = ComputeBudgetProgram.setComputeUnitLimit({
units: 300_000,
Expand Down
10 changes: 5 additions & 5 deletions solana/ts/src/testing/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ import {
TransactionMessage,
VersionedTransaction,
} from "@solana/web3.js";
import { Network } from "@wormhole-foundation/sdk-base";
import { SignAndSendSigner as SdkSigner, signAndSendWait } from "@wormhole-foundation/sdk-connect";
import { UniversalAddress, VAA } from "@wormhole-foundation/sdk-definitions";
import { SolanaSendSigner, SolanaUnsignedTransaction } from "@wormhole-foundation/sdk-solana";
import { SolanaWormholeCore, utils as coreUtils } from "@wormhole-foundation/sdk-solana-core";
import { expect } from "chai";
import { execSync } from "child_process";
import { Err, Ok } from "ts-results";
import { CORE_BRIDGE_PID, USDC_MINT_ADDRESS } from "./consts";
import { SolanaSendSigner, SolanaUnsignedTransaction } from "@wormhole-foundation/sdk-solana";
import { SolanaWormholeCore, utils as coreUtils } from "@wormhole-foundation/sdk-solana-core";
import { SignAndSendSigner as SdkSigner, signAndSendWait } from "@wormhole-foundation/sdk-connect";
import { UniversalAddress, VAA, deserialize } from "@wormhole-foundation/sdk-definitions";
import { Chain, Network } from "@wormhole-foundation/sdk-base";

export function toUniversalAddress(address: number[] | Buffer | Array<number>): UniversalAddress {
return new UniversalAddress(new Uint8Array(address));
Expand Down
Loading

0 comments on commit 4900191

Please sign in to comment.