페어(거래쌍) 생성하기
개요(Overview)
이 가이드는 Saros DLMM 풀에서 새로운 토큰 페어를 프론트엔드를 통해 생성하는 방법을 설명합니다. 모든 과정은 하나의 사용자 트랜잭션에 캡슐화되며 다음 단계를 포함합니다:
필요한 PDA(Program Derived Address) 파생
Quote Asset Badge 생성
풀 페어 초기화
Bin 배열 설정
PDA 파생(Deriving PDAs)
페어를 생성하기 전에 다음과 같은 여러 PDA를 파생해야 합니다:
import { PublicKey } from "@solana/web3.js";
import { BN } from "@project-serum/anchor";
import { utils } from "@coral-xyz/anchor";
// Configuration PDA
const config = new PublicKey("address");
// Token mints
const tokenX = new PublicKey("address");
const tokenY = new PublicKey("address");
const BIN_STEP = 20;
const BIN_ARRAY_INDEX = 0; // Example value
const ACTIVE_ID = 8388608; // Example value (2^23)
// Derive bin step config PDA
const [binStepConfig] = PublicKey.findProgramAddressSync(
[
Buffer.from(utils.bytes.utf8.encode("bin_step_config")),
config.toBuffer(),
new Uint8Array([BIN_STEP]),
],
program.programId
);
// Derive quote asset badge PDA
const [quoteAssetBadge] = PublicKey.findProgramAddressSync(
[
Buffer.from(utils.bytes.utf8.encode("quote_asset_badge")),
config.toBuffer(),
tokenY.toBuffer(),
],
program.programId
);
// Derive pair PDA
const [pair] = PublicKey.findProgramAddressSync(
[
Buffer.from(utils.bytes.utf8.encode("pair")),
config.toBuffer(),
tokenX.toBuffer(),
tokenY.toBuffer(),
new Uint8Array([BIN_STEP]),
],
program.programId
);
// Derive bin array PDAs
const [binArrayLower] = PublicKey.findProgramAddressSync(
[
Buffer.from(utils.bytes.utf8.encode("bin_array")),
pair.toBuffer(),
new BN(BIN_ARRAY_INDEX).toArrayLike(Buffer, "le", 4),
],
program.programId
);
const [binArrayUpper] = PublicKey.findProgramAddressSync(
[
Buffer.from(utils.bytes.utf8.encode("bin_array")),
pair.toBuffer(),
new BN(BIN_ARRAY_INDEX + 1).toArrayLike(Buffer, "le", 4),
],
program.programId
);
토큰 볼트 생성(Creating Token Vaults)
거래쌍이 정상적으로 작동하려면 두 토큰 각각에 대한 토큰 볼트(Token Vault) 를 생성해야 합니다:
Quote Asset Badge 초기화(Initializing the Quote Asset Badge)
Quote Asset Badge는 어떤 토큰이 쿼트 자산(Token Y) 인지를 식별하는 역할을 합니다:
페어 초기화(Initializing the Pair)
지정한 액티브 binitializeConfigD를 사용하여 페어를 초기화할 수 있습니다:
Bin 배열 초기화(Initializing Bin Arrays)
마지막으로, 해당 페어에 대한 Bin 배열(Bin Arrays) 을 초기화해야 합니다:
완전한 엔드 투 엔드 예시(Complete End-to-End Example)
아래는 앞서 설명한 모든 절차를 하나로 통합한 스크립트 예시입니다:
Last updated