Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Spesifikasi versi. Semua demo TypeScript menargetkan @raydium-io/raydium-sdk-v2@0.2.42-alpha terhadap Solana mainnet-beta, terverifikasi 2026-04. Skeleton CPI Rust menargetkan raydium-cp-swap pada branch master, Anchor 0.30.x. ID program diambil melalui konstanta dari reference/program-addresses.

Prasyarat

Setiap demo di halaman ini mencerminkan file dalam raydium-sdk-V2-demo/src/cpmm; tautan GitHub disertakan di sebelah setiap bagian. Bootstrap mengikuti file config.ts.template dari repo demo (sumber):
Instance Raydium adalah facade SDK — setiap demo di bawah menggunakannya. Ia secara lazy mengambil daftar token dan konfigurasi biaya dari api-v3.raydium.io; Anda dapat menyeedinya dengan data Anda sendiri di lingkungan offline.

Buat pool CPMM

Sumber: src/cpmm/createCpmmPool.ts
Beberapa hal yang SDK tangani secara diam-diam:
  • Mengurutkan mint ke urutan token0/token1 sebelum menurunkan PDA.
  • Membayar create_pool_fee sekali ke poolFeeAccount.
  • Membuat akun token terkait pemanggil jika tidak ada.
  • Memilih program token yang tepat (SPL Token vs Token-2022) per sisi.
Setelah konfirmasi Anda dapat mengambil status pool live dengan:

Swap (base-input)

Sumber: src/cpmm/swap.ts
Catatan: SDK selalu mengambil kembali status pool dari RPC di dalam getPoolInfoFromRpc. Jangan kuotasi dari api-v3.raydium.io untuk transaksi yang akan Anda tandatangani — kuotasi yang tertinggal satu blok dapat terpeleset ke ExceededSlippage saat waktu pendaratan.

Swap (base-output)

Sumber: src/cpmm/swapBaseOut.ts

Setorkan likuiditas

Sumber: src/cpmm/deposit.ts
SDK mengonversi lpAmount menjadi needed_token_0 dan needed_token_1 menggunakan reserve pool saat ini, menambah setiap satu dengan 1 + slippage untuk argumen maximum_* instruksi, dan membangun pembuatan ATA jika perlu.

Tarik likuiditas

Sumber: src/cpmm/withdraw.ts

Kumpulkan biaya protokol/dana/kreator

Sumber: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts Instruksi ini dijaga admin atau kreator dan biasanya dipanggil dari penandatangan yang dipegang oleh multisig Raydium atau kreator pool. SDK menyajikan mereka sebagai pembangun mentah:
Off-chain Anda dapat membaca biaya yang terkumpul langsung dari PoolState:

Skeleton CPI Rust

Jika Anda ingin memanggil CPMM dari program Anchor Anda sendiri — misalnya, vault yang swap atas nama deposan — konteks CPI terlihat seperti ini. Urutan akun mengikuti products/cpmm/instructions.
Jika CPI Anda menandatangani sebagai PDA (misalnya, Anda mengelola vault atas nama deposan), tukar CpiContext::new dengan CpiContext::new_with_signer dan teruskan seed Anda.

Jebakan umum

Daftar periksa singkat sebelum membuka tiket dukungan:
  • Mint yang diurutkan. Jika PDA poolState yang Anda turunkan tidak cocok dengan pool on-chain, Anda mungkin lupa mengurutkan mint.
  • Kuotasi API yang usang. Jangan pernah meneruskan nilai reserve dari api-v3.raydium.io ke CurveCalculator.swap. Ambil dari RPC.
  • Program token yang salah. Vault mint Token-2022 dimiliki oleh program Token-2022, bukan SPL Token. Selalu gunakan field token_0_program / token_1_program pool.
  • Slippage kurang didenominasikan untuk mint transfer-fee. Jika salah satu sisi pool adalah mint transfer-fee Token-2022, minimum_amount_out Anda harus didenominasikan dalam apa yang benar-benar diterima pengguna, bukan dalam apa yang dikirim vault.
  • NotApproved pada swap. Periksa PoolState.status — admin mungkin telah menjeda swap pada pool tersebut. Lihat products/cpmm/instructions untuk bitmask status.

Ke mana berikutnya

Sumber: