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.42-alpha terhadap Solana mainnet-beta, diverifikasi 2026-04. Skeleton CPI Rust menargetkan raydium-cp-swap di branch master, Anchor 0.30.x. ID program ditarik melalui konstanta dari reference/program-addresses.

Prasyarat

Setiap demo di halaman ini mencerminkan file di raydium-sdk-V2-demo/src/cpmm; tautan GitHub berada di samping setiap bagian. Bootstrap mengikuti config.ts.template repo demo (sumber):
Instance Raydium adalah facade SDK — setiap demo di bawah menggunakannya. Instance ini secara malas mengambil daftar token dan konfigurasi biaya dari api-v3.raydium.io; Anda dapat mengirimnya 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 dalam urutan token0/token1 sebelum menurunkan PDA.
  • Membayar create_pool_fee sekali 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 mengutip 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 mengonversi lpAmount menjadi needed_token_0 dan needed_token_1 menggunakan cadangan pool saat ini, menginflasi masing-masing dengan 1 + slippage untuk argumen maximum_* instruksi, dan membangun pembuatan ATA jika diperlukan.

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 gerbang otoritas. Biaya kreator memiliki dua jalur: CollectCreatorFee yang ditandatangani kreator yang sudah ada, dan CollectCreatorFeePermissionless aditif, yang dapat dipanggil oleh pembayar apa pun tetapi hanya dapat mentransfer ke ATA kanonik kreator. SDK yang disematkan mengekspos pembuat baku yang ada:
@raydium-io/raydium-sdk-v2@0.2.42-alpha belum mengekspos pembuat untuk CollectCreatorFeePermissionless. Sampai rilis SDK menambahkannya, bangun dari IDL CPMM yang ditingkatkan atau panggil program secara langsung. Jangan gunakan kembali makeCollectCreatorFeeInstruction: instruksi baru memiliki diskriminator berbeda dan menggantikan posisi penandatangan kreator / amm_config dengan akun payer dan creator yang tidak menandatangani secara terpisah.
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.
  • Kutipan API usang. Jangan pernah meneruskan 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 di bawah-denominasi 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: