Create a pair
Overview
Deriving PDAs
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
Initializing the Quote Asset Badge
Initializing the Pair
Initializing Bin Arrays
Complete End-to-End Example
Last updated