Langsung ke konten utama

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →

Instalasi

npm install @raydium-io/raydium-sdk-v2 @solana/web3.js @solana/spl-token
# atau
pnpm add @raydium-io/raydium-sdk-v2 @solana/web3.js @solana/spl-token
SDK ditulis dalam TypeScript dan dilengkapi .d.ts bersama artefak JS-nya. Persyaratan minimum: Node 18+, TypeScript 5.0+, moduleResolution: "bundler" atau "node16".

Inisialisasi

Titik masuk adalah Raydium.load:
import { Raydium } from "@raydium-io/raydium-sdk-v2";
import { Connection, Keypair, clusterApiUrl } from "@solana/web3.js";

const connection = new Connection(process.env.RPC_URL ?? clusterApiUrl("mainnet-beta"));
const owner      = Keypair.fromSecretKey(/* ... */);

const raydium = await Raydium.load({
  owner,
  connection,
  cluster: "mainnet",           // "mainnet" | "devnet"
  disableFeatureCheck: true,    // lewati API deteksi fitur SDK saat startup
  blockhashCommitment: "confirmed",
});
Raydium.load bersifat async karena ia mengambil muatan /config kecil dari api-v3.raydium.io saat startup (yang mencantumkan akun AmmConfig saat ini, tier biaya, dll). Tetapkan disableFeatureCheck: true di lingkungan offline; Anda harus memberikan nilai tersebut secara manual ke beberapa builder.

Empat modul facade

Setelah dimuat, objek raydium mengekspos empat modul facade, satu per permukaan produk:
raydium.cpmm       // Pool CPMM: createPool, addLiquidity, withdrawLiquidity, swap, ...
raydium.clmm       // Pool CLMM: createPool, openPositionFromBase, increasePositionFromBase,
                   //            decreaseLiquidity, harvestAllRewards, swap, ...
raydium.liquidity  // Pool AMM v4: computeAmountOut, swap, addLiquidity, removeLiquidity, ...
raydium.farm       // Farm v3/v5/v6: deposit, withdraw, harvestAllRewards, create, setRewards
raydium.launchpad  // LaunchLab: createLaunchpad, buyExactIn, sellExactIn, graduate, ...
raydium.trade      // Routing multi-pool: quotes, route-execution (beta di 0.2.41)
raydium.token      // Helpers: ambil token list, metadata, pembuatan ATA
(Ya, lima facade secara total — “empat” adalah cara Raydium mengelompokkannya secara publik, dengan trade dan token sebagai utilitas pendukung.)

Builder transaksi

Setiap fungsi mutasi mengembalikan builder daripada mengeksekusi segera:
const { execute, builder, transaction, innerTransactions, extInfo } =
  await raydium.cpmm.addLiquidity({
    poolInfo,
    amountInA,
    amountInB,
    slippage: 0.005,
    txVersion: TxVersion.V0,
  });
Bidang yang dikembalikan:
  • execute — fungsi kenyamanan yang menandatangani + mengirim. Setara dengan builder.execute.
  • builder — instans TxBuilder dengan semua instruksi dan penanda tangan terakumulasi. Panggil .build() untuk mendapatkan VersionedTransaction[]; berguna saat Anda perlu menyuntikkan instruksi sendiri atau menandatangani dengan penanda tangan eksternal.
  • transaction / innerTransactions — larik instruksi mentah. Gunakan saat membangun transaksi multi-program yang disusun.
  • extInfo — extras khusus produk. Misalnya, createPool mengembalikan extInfo.poolId; createLaunchpad mengembalikan PDA status peluncuran baru.
txVersion mengontrol format transaksi legacy vs V0. V0 (address lookup tables) adalah rekomendasi default — memungkinkan swap yang lebih besar muat dalam satu transaksi.

Mengapa async builders?

Hampir setiap builder secara internal mengambil state on-chain: info pool (untuk quotes), kepemilikan program token (untuk Token-2022 vs routing SPL), rent-exemption akun (untuk pembuatan ATA), dll. SDK menyimpan cache secara agresif tetapi panggilan pertama untuk pool baru melibatkan round-trip RPC. Pertahankan instans raydium yang hidup lama untuk menghindari pengambilan ulang.

Penambahan modul CLMM (rilis terbaru)

Facade CLMM mendapatkan permukaan untuk fitur dynamic-fee baru, single-sided-fee, dan limit-order:
  • raydium.clmm.createCustomizablePool — superset dari createPool yang menerima collectFeeOn, enableDynamicFee, dan dynamicFeeConfigId. Gunakan ini untuk pool baru apa pun yang memerlukan knob baru; createPool klasik terus bekerja untuk pool dengan biaya default.
  • raydium.clmm.openLimitOrder — buka limit order single-tick pada pool yang mendukungnya. Mengambil poolInfo, poolKeys, limitOrderConfig (dari /main/clmm-limit-order-config), inputMint, inputAmount, dan tick target.
  • raydium.clmm.increaseLimitOrder / decreaseLimitOrder — sesuaikan bagian unfilled dari order yang ada. Menurun kembali pada order fully-filled dengan InvalidOrderPhase.
  • raydium.clmm.settleLimitOrder / settleAllLimitOrder — pindahkan output yang terisi ke ATA pemilik. Baik pemilik order maupun penjaga limit_order_admin pool dapat memanggilnya.
  • raydium.clmm.closeLimitOrder / closeAllLimitOrder — tutup order yang fully-settled untuk memulihkan rent.
  • raydium.api.getClmmDynamicConfigs() / getClmmLimitOrderConfigs() — helper REST yang mengenai endpoint /main/clmm-dynamic-config dan /main/clmm-limit-order-config baru.
Reorganisasi kecil juga memindahkan utils/ ke libraries/. Kode yang diimpor dari @raydium-io/raydium-sdk-v2/utils/... harus beralih ke @raydium-io/raydium-sdk-v2/libraries/.... Barrel paket tingkat atas tidak berubah, jadi sebagian besar pengguna tidak pernah melihat penggantian nama. Panduan walkthrough TypeScript end-to-end tinggal di products/clmm/code-demos.

Perangkap umum

1. Ketidaksesuaian cluster

Konfigurasi startup SDK spesifik cluster. Menggabungkan cluster: "mainnet" dengan Connection devnet menyebabkan mis-routing senyap: SDK membuat quote terhadap AmmConfig mainnet tetapi mengirim ke devnet. Selalu berikan keduanya.

2. Lupa pra-membuat ATA

Pada interaksi pertama dengan mint, Associated Token Account pengguna mungkin tidak ada. SDK secara otomatis menambahkan instruksi AssociatedTokenAccount::create saat mendeteksi ATA yang hilang, yang mengorbankan sejumlah kecil rent. Jika dompet Anda rendah SOL ini akan gagal senyap. Periksa dan danai sebelum mencoba ulang.

3. poolInfo basi

poolInfo adalah snapshot yang di-cache. Jika state pool telah berubah sejak Anda mengambilnya (perdagangan besar memindahkan harga, katakanlah), minAmountOut swap mungkin dihitung terhadap state lama dan mendarat di bawah amount-out on-chain, reverting. Ambil ulang poolInfo segera sebelum membangun transaksi bernilai tinggi, atau gunakan computeAmountOut SDK yang me-query ulang reserves.

4. Priority fees

SDK tidak menambahkan compute-unit prices secara default. Di jendela volume tinggi (peluncuran pool baru, acara meme-coin) ini berarti transaksi Anda bersaing dengan banyak yang lain dan mungkin tidak landing. Berikan computeBudgetConfig eksplisit:
const { execute } = await raydium.cpmm.swap({
  poolInfo,
  inputAmount: new BN(...),
  swapResult: ...,
  slippage: 0.005,
  txVersion: TxVersion.V0,
  computeBudgetConfig: {
    units: 250_000,          // Batas CU
    microLamports: 50_000,   // Priority fee per CU
  },
});
Lihat integration-guides/priority-fee-tuning untuk panduan sizing.

5. Toleransi slippage harus sesuai tipe pool

CPMM dan AMM v4 adalah matematik CPMM (dampak rendah pada perdagangan normal). CLMM adalah piecewise (dampak melompat pada tick crossings). Jika Anda menyalin toleransi slippage 0,5% dari contoh CPMM ke swap CLMM yang melintasi beberapa tick, transaksi kemungkinan akan revert. computeAmountOut SDK mengembalikan priceImpact; ukuran toleransi Anda di atasnya.

6. BN vs number

Semua bidang amount dalam SDK adalah instans bn.js BN — tidak pernah JavaScript number. Konversi nilai amount melalui .toNumber() secara senyap memotong di 2^53; untuk nilai apa pun di atas ~9 kuadriliun (tidak jarang pada mint 9-decimal), ini menghasilkan hasil yang salah. Pertahankan semuanya dalam BN hingga render UI final.

Kebijakan versioning

  • @raydium-io/raydium-sdk-v2 adalah satu-satunya SDK yang Raydium pertahankan. Semua docs, demos, dan panduan integrasi menargetkannya.
  • Paket v1 yang lebih lama (@raydium-io/raydium-sdk) ada di npm untuk alasan historis. Maintenance berakhir setelah CPMM dan LaunchLab diluncurkan (v1 tidak pernah mendapatkan dukungan untuk keduanya), dan tidak ada rilis v1 sejak 2024. Perlakukan v1 sebagai end-of-life: jangan gunakan untuk kode baru, dan migrasikan integrasi v1 yang tersisa ke v2.
  • SDK v2 adalah pre-1.0. Perubahan breaking antara rilis minor 0.x adalah mungkin; pin versi yang telah Anda verifikasi dan periksa catatan rilis GitHub saat upgrade.

Upgrade

Saat upgrade antara versi minor SDK:
  1. Periksa kembali tipe return dari setiap panggilan mutasi — perubahan shape (misalnya extInfo) mendarat sering.
  2. Regenerasi signature pengambilan poolInfo — bidang mungkin telah diganti nama.
  3. Verifikasi ulang penanganan slippage Anda; SDK telah bergeser antara perilaku auto-bound dan opt-in bound di seluruh rilis.
  4. Jika Anda menggunakan raydium.trade (routing), verifikasi ulang bentuk route — ini adalah bagian paling tidak stabil dari permukaan.

Mendapatkan bantuan

Untuk pertanyaan SDK dan API: Untuk masalah keamanan, jangan posting di saluran publik — lihat security/disclosure.

Pointers

Sumber: