Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Banner versi.
  • SDK: @raydium-io/raydium-sdk-v2@0.2.64-alpha
  • Cluster: Solana mainnet-beta
  • ID program Stable AMM: 5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h (lihat reference/program-addresses)
  • Terakhir diverifikasi: 2026-09-09 terhadap SDK 0.2.64-alpha source dan demo amm/trade raydium-sdk-V2-demo
Modul liquidity SDK menangani pool Stable AMM secara native. Pool stabil muncul sebagai version: 5 (atau pooltype: "StablePool") pada ApiV3PoolInfoStandardItem; helper addLiquidity / removeLiquidity / swap yang sama bekerja untuk mereka seperti untuk pool constant-product AMM v4 (version: 4) — SDK mendeteksi varian dan memancarkan instruksi yang benar secara otomatis. Matematika kurva stabil off-chain berada di src/raydium/liquidity/stable.ts.

Setup

initLayout() tidak opsional untuk pool Stable. liquidity.computeAmountOut bercabang pada poolInfo.version: untuk versi 4 menggunakan formula constant-product, dan untuk yang lain membaca this.stableLayout.stableModelData dan menginterpolasi tabel lookup. Cache itu kosong sampai initLayout() berjalan, jadi quoting pool v5 tanpanya menghasilkan sampah daripada error. Ini idempoten dan murah — panggil sekali saat startup.Pembangun transaksi (builders) (swap, addLiquidity, removeLiquidity) tidak membutuhkannya: mereka dispatch pada pooltype.includes("StablePool") dan memancarkan instruksi AmmV5*, dan batas jumlah yang Anda berikan sudah dihitung.
liquidity.computeAmountIn tidak mendukung pool Stable. Tidak seperti computeAmountOut, tidak ada cabang versi — selalu menerapkan inverse constant-product, jadi pada pool v5 mengembalikan maxAmountIn yang salah. Untuk swap exact-output terhadap pool Stable, balikkan dengan getDxByDyBaseIn sendiri (lihat Helper quote off-chain di bawah) dan berikan hasilnya ke swap dengan fixedSide: "out".

Mengidentifikasi pool Stable

Dua sinyal setara pada ApiV3PoolInfoStandardItem:
Baik AMM v4 (version: 4, constant-product) maupun Stable AMM (version: 5) mengalir melalui API LiquidityModule yang sama pada SDK. Secara internal modul dispatch ke:
  • InstructionType.AmmV4AddLiquidity / AmmV4RemoveLiquidity untuk pool v4
  • InstructionType.AmmV5AddLiquidity / AmmV5RemoveLiquidity untuk pool v5 (Stable)
programId pool (dikembalikan dengan kunci pool) memberi tahu SDK program mana yang akan di-CPI; Anda tidak perlu hardcode-nya.

Temukan pool berdasarkan pasangan mint

Jika pasangan mint memiliki pool v4 (constant-product) dan pool v5 (stable), respons menyertakan keduanya — pilih yang dibutuhkan alur Anda, atau serahkan ke program AMM Routing dan biarkan memilih rute terbaik.

Swap melalui pool Stable

Alur LiquidityModule.swap memiliki bentuk yang sama seperti pool v4 — cukup berikan objek pool v5. Dua detail mudah salah: computeAmountOut membutuhkan reserve live pool yang digabungkan ke info pool (item API saja tidak membawanya), dan slippage-nya adalah angka biasa, bukan Percent:
SDK membaca programId pool dari kunci pool dan dispatch ke program Stable AMM. Tidak ada argumen programId khusus yang diperlukan.

Tambah dan hapus likuiditas

addLiquidity dan removeLiquidity bekerja identik di pool v4 dan v5:
Secara internal SDK memancarkan InstructionType.AmmV5AddLiquidity karena pooltype.includes("StablePool") benar. Alur removeLiquidity yang sesuai simetris — berikan lpAmount dan jumlah minimum yang akan Anda terima di setiap sisi.

Helper quote off-chain (stable.ts)

Untuk quoting server-side atau backtesting, SDK mengekspos matematika kurva stabil yang mendasar:
Ini adalah fungsi murni — tidak ada RPC, tidak ada penandatanganan. ModelDataInfo on-chain diambil sekali oleh initLayout() dan di-cache di dalam raydium.liquidity.stableLayout, dapat dibaca sebagai .stableModelData. initStableModelLayout() idempoten: hanya re-fetch saat validDataCount === 0, jadi memanggil initLayout() lagi gratis. Berikan reserve saat ini (x, y) dan helper menghitung dengan binary-searching tabel lookup dan linear interpolating antara dua baris DataElement sekitarnya. Lihat products/stable/math untuk algoritma yang mendasar.

Routing melalui AMM Routing (multi-hop / harga terbaik)

Jika Anda tidak ingin memilih venue sendiri, program AMM Routing akan mempertimbangkan setiap AMM Raydium (v4 / CPMM / CLMM / Stable) dan routing melalui kombinasi mana pun yang terbaik: Router adalah pipeline lima-panggilan daripada swap() tunggal, dan ditulis sepenuhnya — dengan saran caching yang membuatnya dapat digunakan dalam produksi — pada products/routing/code-demos. Bentuknya adalah:
Tidak ada raydium.tradeV2.fetchRoutes, dan tradeV2.swap tidak menerima inputMint / outputMint / slippage — ia mengambil swapInfo yang sudah dihitung dari getAllRouteComputeAmountOut. Untuk pool tunggal yang diketahui, gunakan pembangun tipe pool itu sendiri (raydium.liquidity.swap untuk AMM v4 dan Stable, raydium.cpmm.swap, raydium.clmm.swap) seperti yang ditunjukkan sebelumnya di halaman ini.
Ini adalah jalur yang direkomendasikan untuk swapper dan agregator produksi — Anda tidak perlu memutuskan secara manual apakah pool Stable ada atau apakah itu venue yang lebih baik hari ini.

Rekomendasi

  1. Untuk swap end-user, lebih suka alur routing tradeV2. Ini menangani setiap tipe pool Raydium termasuk Stable.
  2. Untuk operasi pool-spesifik (LP tambah / hapus pada pool Stable yang diketahui), gunakan LiquidityModule secara langsung — ia auto-detects pool v5.
  3. Untuk quoting off-chain / analytics, panggil getStablePrice / getDyByDxBaseIn / getDxByDyBaseIn setelah initLayout(). Tidak ada traffic RPC per quote setelah data model di-cache.
  4. Jangan hand-encode instruksi SwapBaseIn raw. Upgrade 2026-06-22 menghapus akun OpenBook yang mati, jadi layout swap baru mengambil 9 akun (layout 18-akun lama masih parse untuk kompatibilitas mundur). Deposit sekarang 12 akun (lama 14 kompatibel), Withdraw 12 (lama 21/22 kompatibel), dan WithdrawPnl 10 dengan tidak ada jalur kompatibilitas. Helper pre-built SDK memilih layout dan urutan yang benar untuk Anda; rolling your own error-prone. Lihat products/stable/instructions untuk tabel akun lengkap.

Ke mana selanjutnya

  • Math — bagaimana interpolasi tabel lookup bekerja.
  • Instructions — referensi instruksi lengkap.
  • AMM Routing — routing multi-pool di seluruh AMM v4, CPMM, CLMM, Stable.
Sumber: