Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Banner versi. Halaman ini mendokumentasikan @raydium-io/raydium-sdk-v2@0.2.64-alpha, versi yang digunakan setiap demo kode di situs ini. SDK masih pre-1.0 dan permukaan tipe telah berkembang di berbagai rilis — pastikan Anda menentukan versi.Versi diperbarui dari 0.2.42-alpha pada 2026-09-09 bersamaan dengan upgrade program: 0.2.64-alpha adalah rilis terkini SDK. Repo raydium-sdk-V2-demo yang ditautkan di halaman demo kode menginstal 0.2.62-alpha, jadi tentukan salah satu jika Anda mengikuti demo secara persis. Demo di halaman ini terakhir dijalankan terhadap 0.2.42-alpha (2026-04); tanda tangan panggilan mereka diperiksa ulang terhadap sumber 0.2.64-alpha pada 2026-09-09, tetapi perlakukan ketidaksesuaian apa pun sebagai bug dokumentasi dan buka issue.

Instalasi

SDK ditulis dalam TypeScript dan mengirimkan .d.ts bersama artefak JS-nya. Toolchain minimum: Node 18+, TypeScript 5.0+, moduleResolution: "bundler" atau "node16".

Inisialisasi

Titik masuk adalah Raydium.load:
Raydium.load bersifat async karena, secara default, ia memuat daftar token (raydium.token.load()) dari api-v3.raydium.io. Berikan disableLoadToken: true untuk melewati pengambilan tersebut. Feature-check ketersediaan adalah panggilan terpisah ke /v3/main/AvailabilityCheckAPI dan sudah dilewati kecuali Anda secara eksplisit memberikan disableFeatureCheck: false. Konfigurasi biaya tidak diambil pada waktu load sama sekali — semuanya datang secara lazy dari raydium.api.getCpmmConfigs() / getClmmConfigs() saat pertama kali dipakai.

Modul facade

Setelah dimuat, objek raydium mengekspos sepuluh modul facade ditambah satu klien API:

Builder transaksi

Setiap fungsi yang mengubah state mengembalikan builder daripada mengeksekusi segera:
Bidang yang dikembalikan:
  • execute — fungsi kenyamanan yang menandatangani + mengirim. Setara dengan builder.execute.
  • builder — instance TxBuilder dengan semua instruksi dan penandatangan terakumulasi. builder.build() mengembalikan sebuah TxBuildData yang transaction-nya adalah satu Transaction legacy; builder.buildV0() mengembalikan TxV0BuildData dengan satu VersionedTransaction. Hanya buildMultiTx / buildMultiTxV0 yang menghasilkan array.
  • transaction — Transaction / VersionedTransaction yang sudah dibangun.
  • instructionTypes / signers — label instruksi dan set penandatangan yang terakumulasi.
  • extInfo — tambahan spesifik produk. Misalnya, cpmm.createPool mengembalikan extInfo.address.{poolId, lpMint, vaultA, vaultB}; launchpad.createLaunchpad mengembalikan extInfo.address (sebuah LaunchpadPoolInfo ditambah poolId).
Tidak ada bidang innerTransactions pada tipe pengembaliannya — melakukan destructuring atasnya adalah error TypeScript. Builder yang tipe pengembaliannya MakeMultiTxData (misalnya clmm.harvestAllRewards, farm.harvestAllRewards, tradeV2.swap, launchpad.createLaunchpad) justru mengekspos transactions, dan execute-nya memerlukan { sequentially: boolean } serta menghasilkan { txIds } alih-alih { txId }.
txVersion mengontrol format transaksi legacy vs V0. V0 (tabel pencarian alamat) adalah rekomendasi default — memungkinkan swap yang lebih besar masuk dalam satu transaksi.

Mengapa builder async?

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

Penambahan modul CLMM (rilis terbaru)

Facade CLMM mendapatkan permukaan untuk fitur dynamic-fee, single-sided-fee, dan limit-order baru:
  • raydium.clmm.createCustomizablePool — superset dari createPool yang menerima collectFeeOn dan dynamicFeeConfig (PublicKey dari akun config-nya). Menyediakan dynamicFeeConfig itulah yang mengaktifkan dynamic fee; tidak ada flag enableDynamicFee terpisah dan tidak ada dynamicFeeConfigId. createPool klasik terus bekerja untuk pool dengan biaya default.
  • raydium.clmm.openLimitOrder — buka limit order single-tick. Mengambil poolInfo, baseIn (arah), orderTick, amount, dan secara opsional tickArrayBitmap, noneIndex, ownerInfo. Gunakan helper terekspor getOrderTick({ baseIn, mintADecimal, mintBDecimal, tickSpacing, price }) untuk mengkuantisasi tick.
  • raydium.clmm.increaseLimitOrder / decreaseLimitOrder — sesuaikan bagian yang belum terisi dari order yang ada. Keduanya mengambil { poolInfo, limitOrder, amount }; decreaseLimitOrder menambahkan slippage opsional. Menurunkan akan revert pada order yang sepenuhnya terisi dengan InvalidOrderPhase.
  • raydium.clmm.settleLimitOrder / settleAllLimitOrder — sapukan output yang terisi ke ATA pemilik. settleLimitOrder hanya mengambil { limitOrder } — tanpa poolInfo. Baik pemilik order maupun keeper limit_order_admin milik program dapat memanggilnya.
  • raydium.clmm.closeLimitOrder / closeAllLimitOrder — tutup order yang sepenuhnya diselesaikan untuk memulihkan rent.
  • raydium.api.getClmmDynamicConfigs() — helper REST yang mengenai endpoint baru /main/clmm-dynamic-config. (Tidak ada helper atau endpoint limit-order-config: limit order dikunci berdasarkan tick, bukan berdasarkan akun config per-pool.)
Paket ini tidak mendeklarasikan subpath export, jadi @raydium-io/raydium-sdk-v2/<anything> tidak ter-resolve dalam ejaan apa pun — impor semuanya dari barrel tingkat atas. (Secara internal, src/raydium/clmm/utils/ diganti nama menjadi src/raydium/clmm/libraries/, tetapi itu tidak pernah menjadi entry point publik.) Panduan walkthrough TypeScript end-to-end tersedia di products/clmm/code-demos.

Jebakan umum

1. Ketidaksesuaian cluster

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

2. Lupa membuat ATA sebelumnya

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

3. poolInfo basi

poolInfo adalah snapshot cache. Jika state pool telah berubah sejak Anda mengambilnya (perdagangan besar menggerakkan harga, misalnya), minAmountOut swap mungkin dihitung terhadap state lama dan jatuh di bawah amount-out on-chain, revert. Ambil ulang poolInfo segera sebelum membangun transaksi bernilai tinggi, atau gunakan computeAmountOut SDK yang melakukan re-query reserve.

4. Priority fees

SDK tidak menambahkan harga compute-unit secara default. Di jendela volume tinggi (peluncuran pool baru, acara meme-coin) ini berarti transaksi Anda bersaing dengan banyak orang lain dan mungkin tidak mendarat. Sediakan computeBudgetConfig eksplisit:
Lihat integration-guides/priority-fee-tuning untuk panduan sizing.

5. Toleransi slippage harus cocok dengan tipe pool

CPMM dan AMM v4 adalah matematika CPMM (dampak rendah pada perdagangan normal). CLMM adalah piecewise (dampak melompat di crossing tick). 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; ukur toleransi Anda di atasnya.

6. BN vs number

Semua bidang jumlah dalam SDK adalah instance BN bn.js — tidak pernah JavaScript number. Mengonversi nilai jumlah melalui .toNumber() secara senyap memotong di 2^53; untuk nilai apa pun di atas ~9 kuadriliun (tidak jarang pada mint 9-desimal), 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, demo, dan panduan integrasi menargetkannya.
  • Paket v1 yang lebih lama (@raydium-io/raydium-sdk) ada di npm untuk alasan historis. Pemeliharaan berakhir setelah CPMM dan LaunchLab dikirim (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 dimungkinkan; tentukan versi yang telah Anda verifikasi dan periksa catatan rilis GitHub saat upgrade.

Upgrade

Saat upgrade antara versi minor SDK:
  1. Periksa ulang tipe pengembalian setiap panggilan yang mengubah state — perubahan bentuk (misalnya extInfo) sering terjadi.
  2. Regenerasi tanda tangan 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 berbagai rilis.
  4. Jika Anda menggunakan raydium.tradeV2 (routing), verifikasi ulang bentuk route — ini adalah bagian paling tidak stabil dari permukaan tersebut. Perhatikan bahwa facade-nya diganti nama dari trade menjadi tradeV2; nama lama tidak lagi ada.

Mendapatkan bantuan

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

Pointer

Sumber: