Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Banner versi. Semua demo TypeScript menargetkan @raydium-io/raydium-sdk-v2@0.2.64-alpha; terakhir dijalankan terhadap 0.2.42-alpha (2026-04) dan tanda tangan panggilan mereka diperiksa ulang terhadap sumber 0.2.64-alpha pada 2026-09-09, terhadap Solana mainnet-beta. Skeleton CPI Rust menargetkan raydium-cp-swap pada cabang chore/upgrade-anchor, Anchor 1.0.2 — master masih menetapkan 0.32.1. ID program ditarik melalui konstanta dari reference/program-addresses.

Prasyarat

Setiap demo di halaman ini mencerminkan file dalam raydium-sdk-V2-demo/src/cpmm; tautan GitHub berada di samping setiap bagian. Bootstrap mengikuti config.ts.template repo demo (sumber):
Instans Raydium adalah facade SDK — setiap demo di bawah menggunakannya. Raydium.load bersifat async karena memuat daftar token secara default; teruskan disableLoadToken: true untuk melewati pengambilan tersebut. Pemeriksaan fitur ketersediaan sudah dilewati kecuali Anda melewati disableFeatureCheck: false. Konfigurasi biaya diambil secara lazy pada penggunaan pertama melalui raydium.api.getCpmmConfigs().

Buat pool CPMM

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

Swap (base-input)

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

Swap (base-output)

Sumber: src/cpmm/swapBaseOut.ts

Deposit likuiditas

Sumber: src/cpmm/deposit.ts
SDK menurunkan jumlah berpasangan dari cadangan pool saat ini, menginflasi setiap sisi dengan slippage untuk argumen maximum_* instruksi, dan membangun kreasi ATA jika diperlukan. raydium.cpmm.computePairAmount({ ... }) mengembalikan angka yang sama jika Anda menginginkannya untuk pratinjau UI.

Withdraw likuiditas

Sumber: src/cpmm/withdraw.ts

Kumpulkan biaya protokol/dana/kreator

Sumber: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts Pengumpulan protokol dan dana tetap terkunci otoritas. Biaya kreator memiliki dua jalur: CollectCreatorFee yang ditandatangani kreator, dan CollectCreatorFeePermissionless aditif, yang dapat dipanggil oleh pembayar mana pun tetapi hanya dapat mentransfer ke ATA kanonik kreator. 0.2.64-alpha mengirimkan builder tingkat modul untuk kedua jalur kreator:
Kedua instruksi kreator mengubah daftar akun mereka dalam upgrade program 2026-09-19. Masing-masing sekarang mengambil PDA creator_fee_share di ["creator_fee_share", creator, ammConfig], dan yang tanpa izin juga mengambil amm_config — keduanya ditambahkan setelah system_program daripada disisipkan, sehingga akun yang sudah ada mempertahankan posisi mereka. Builder yang disematkan ke rilis SDK yang mendahului upgrade memancarkan daftar yang lebih pendek dan transaksi ditolak karena akun yang hilang. Periksa bahwa versi yang Anda instal membawa akun baru sebelum menggunakan helper ini terhadap program yang ditingkatkan, dan segarkan IDL jika Anda membuat klien darinya.Melewati PDA adalah wajib bahkan ketika belum pernah dibuat — turunkan dan lewati; program kembali ke AmmConfig.creator_fee_share_rate ketika akun kosong.
Kedua instruksi kreator memiliki diskriminator dan tata letak akun yang berbeda — yang tanpa izin menggantikan penandatangan kreator dengan pembayar terpisah dan kreator yang tidak menandatangani. Gunakan builder yang cocok daripada menukar akun secara manual di yang lain.Tidak ada builder biaya protokol atau dana dalam SDK (makeCollectProtocolFeeInstruction dan makeCollectFundFeeInstruction tidak ada di bawah nama apa pun) — itu adalah jalur admin, begitu juga CreateCreatorFeeShare / CloseCreatorFeeShare, yang juga tidak memiliki builder. Builder instruksi tingkat rendah yang ada adalah collectCpFeeInstruction, makeCollectCreatorFeeInstruction dan collectCreatorFeePermissionlessInInstruction.
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 penyetornya — konteks CPI terlihat seperti ini. Urutan akun mengikuti products/cpmm/instructions.
Jika CPI Anda menandatangani sebagai PDA (misalnya, Anda mengelola vault atas nama penyetor), tukar CpiContext::new dengan CpiContext::new_with_signer dan lewati 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.
  • Kutipan API usang. Jangan pernah melewati nilai cadangan 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 oleh SPL Token. Selalu gunakan bidang token_0_program / token_1_program pool.
  • Slippage kurang didenominasikan untuk mint biaya transfer. Jika salah satu sisi pool adalah mint biaya transfer 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 di pool itu. Lihat products/cpmm/instructions untuk bitmask status.

Ke mana selanjutnya

Sumber: