페어(거래쌍) 생성하기

개요(Overview)

이 가이드는 Saros DLMM 풀에서 새로운 토큰 페어를 프론트엔드를 통해 생성하는 방법을 설명합니다. 모든 과정은 하나의 사용자 트랜잭션에 캡슐화되며 다음 단계를 포함합니다:

  1. 필요한 PDA(Program Derived Address) 파생

  2. Quote Asset Badge 생성

  3. 풀 페어 초기화

  4. 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