토큰 스왑하기
개요(Overview)
스왑 유형 (Swap Types)
스왑 방향 (Swap Direction)
코드 예시 (Example Code)
import { PublicKey } from "@solana/web3.js";
import { BN } from "@project-serum/anchor";
import { TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID } from "@solana/spl-token";
// Define the amount of tokens to swap in
const amountIn = new BN(1000000); // Amount of token X or Y to swap in
// Define the minimum amount of tokens to receive (0 for no minimum)
const otherAmountThreshold = new BN(0);
// Set the swap direction (true for X to Y, false for Y to X)
const swapForY = true;
// Derive bin array PDAs
const [binArrayLowerPda] = PublicKey.findProgramAddressSync(
[Buffer.from("bin_array"), pairPda.toBuffer(), Buffer.from([0])],
program.programId
);
const [binArrayUpperPda] = PublicKey.findProgramAddressSync(
[Buffer.from("bin_array"), pairPda.toBuffer(), Buffer.from([1])],
program.programId
);
await program.methods
.swap(amountIn, otherAmountThreshold, swapForY, { exactInput: {} })
.accounts({
pair: pairPda,
binArrayLower: binArrayLowerPda,
binArrayUpper: binArrayUpperPda,
tokenMintX: tokenMintX,
tokenMintY: tokenMintY,
tokenVaultX: tokenVaultXPda,
tokenVaultY: tokenVaultYPda,
userVaultX: userVaultXPda,
userVaultY: userVaultYPda,
tokenProgramX: TOKEN_PROGRAM_ID,
tokenProgramY: TOKEN_PROGRAM_ID,
user: wallet.publicKey,
})
.signers([wallet.payer])
.rpc();
정확한 아웃풋 스왑 (Exact Output Swap)
스왑 실행 방식 (How the Swap Executes)
Last updated