Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Stable AMM adalah program independen dengan ID program sendiri. Ini bukan mode dari program AMM v4, dan tidak diperdagangkan “melalui” AMM v4 — program ini dideploy, diupgrade, dan dipanggil secara terpisah. Kemiripannya dengan AMM v4 hanya dalam konvensi biaya dan tata letak akun.
Upgrade 2026-06-22 — penghapusan kode OpenBook (market) yang sudah mati. Stable AMM berhenti memposting order ke OpenBook sejak lama; jalur market-making orderbook telah tidak aktif selama bertahun-tahun. Upgrade ini menghapus akun dan kode yang tersisa terkait market — ini tidak mengubah perilaku trading langsung.Dua konsekuensi untuk integrator:
  1. Tata letak akun yang lebih kecil. SwapBaseIn / SwapBaseOut (18 → 9), Deposit (14 → 12), dan Withdraw (21/22 → 12) menghapus akun Serum/market yang sudah mati. Tata letak lama masih dapat diurai untuk kompatibilitas mundur. WithdrawPnl (16 → 10) adalah perubahan breaking yang keras tanpa jalur kompatibilitas (hanya admin).
  2. Sebagian besar instruksi dihapus. Hanya SwapBaseIn, SwapBaseOut, Deposit, Withdraw, dan WithdrawPnl yang tetap dapat dipanggil. Semua instruksi lain tidak lagi dapat dipanggil.
Changelog: reference/changelog.

Inventaris instruksi

Dapat dipanggil

Dihapus (tidak lagi dapat dipanggil)

Instruksi ini dihapus dalam upgrade 2026-06-22 dan tidak lagi dapat dipanggil. Lihat Instruksi yang dihapus.

Deposit

Tambah likuiditas, terima token LP. Argumen
Akun — tata letak baru, 12 akun (dapat ditulis W, penanda tangan S) Kompatibilitas: amm_open_orders (lama #3) dan serum_market (lama #9) dihapus. Ketika 14 akun dilewatkan, instruksi diurai dengan tata letak 14-akun lama; akun Serum diabaikan. Matematika — pro-rata standar menggunakan tabel pencarian untuk menghitung rasio. SDK menghitung pasangan coin/pc untuk jumlah LP yang diinginkan dan memeriksa terhadap batas maksimal.

Withdraw

Bakar LP, terima kedua sisi secara pro-rata. Argumen
Akun — tata letak baru, 12 akun (dapat ditulis W, penanda tangan S) Kompatibilitas: sembilan akun Serum (amm_open_orders, serum_program, serum_market, serum_coin_vault, serum_pc_vault, serum_vault_signer, serum_event_q, serum_bids, serum_asks) dihapus. Tata letak lama 21- atau 22-akun masih diterima. Namun, perhatikan bahwa logika biaya referral untuk akun opsional referrer_pc_wallet ke-22 telah dihapus — akun masih dapat dilewatkan tetapi tidak lagi berlaku. Prekondisi
  • user_source_lp memegang setidaknya amount.
Postkondisi
  • amount token LP dibakar.
  • Pengguna menerima jumlah coin dan pc sesuai pro-rata saat ini, disesuaikan dengan biaya yang terkumpul.

SwapBaseIn

Swap input-pasti menggunakan tabel pencarian untuk penetapan harga. Argumen
Akun — tata letak baru, 9 akun (dapat ditulis W, penanda tangan S) Kompatibilitas: sembilan akun OpenBook (amm_open_orders, serum_program, serum_market, serum_bids, serum_asks, serum_event_queue, serum_coin_vault, serum_pc_vault, serum_vault_signer) dihapus. Jika jumlah akun yang dilewatkan bukan 9, instruksi diurai dengan tata letak 18-akun lama; akun Serum masih harus menempati posisi mereka, tetapi isinya tidak lagi divalidasi atau digunakan. Prekondisi
  • amm.status memungkinkan swap.
  • user_source_token memegang ≥ amount_in.
Postkondisi
  • Pengguna kehilangan amount_in, mendapatkan amount_out ≥ minimum_amount_out.
  • Biaya pool menambah penghitung need_take_pnl_*.
Matematika — Interpolasi tabel pencarian seperti dijelaskan dalam products/stable/math.

SwapBaseOut

Swap output-pasti (kebalikan dari SwapBaseIn). Tata letak 9-akun yang sama, arah matematika berbeda. Argumen

WithdrawPnl

Hanya admin. Kumpulkan biaya protokol yang terkumpul dari need_take_pnl_* ke akun PnL yang ditunjuk.
Perubahan breaking yang keras — tanpa jalur kompatibilitas. Instruksi ini tidak memiliki penguraian untuk tata letak lama. Mengirim tata letak lama gagal dengan kesalahan validasi seperti InvalidTokenCoin karena ketidakselarasan akun (lama #3 adalah open_orders). Alat admin yang memanggil WithdrawPnl harus diperbarui ke tata letak 10-akun baru.
Argumen — tidak ada (didorong oleh keadaan). Akun — tata letak baru, 10 akun tetap, hanya admin (dapat ditulis W, penanda tangan S) Perubahan logika: ketika dana yang tersedia di pool tidak cukup untuk menarik PnL yang terkumpul, pool tidak lagi dimasukkan ke dalam CancelAllOrdersState / Disabled; instruksi mengembalikan TakePnlError secara langsung. referrer_pc_wallet opsional juga telah dihapus. Prekondisi
  • amm_admin harus berwenang.
Postkondisi
  • need_take_pnl_coin dan need_take_pnl_pc ditransfer ke akun admin.
  • Penghitung direset ke nol.

Instruksi yang dihapus

Instruksi berikut dihapus dalam upgrade 2026-06-22 dan tidak lagi dapat dipanggil. Instruksi ini didokumentasikan di sini hanya agar integrator mengenalinya dalam transaksi dan SDK historis.
  • Initialize — sebelumnya bootstrap pool Stable AMM baru. Dihapus.
  • PreInitialize — helper pre-alokasi warisan. Dihapus.
  • InitModelData — sebelumnya membuat dan menginisialisasi tabel pencarian ModelDataInfo. Dihapus.
  • UpdateModelData — sebelumnya mengisi hingga 5 elemen tabel pencarian per panggilan. Dihapus.
  • MonitorStep — crank OpenBook yang menyelesaikan pengisian dan memposting ulang grid order. Sudah lama tidak aktif setelah pool berhenti memposting ke OpenBook; sekarang dihapus.
  • SetParams — perubahan parameter admin (status, biaya, pemilik, kunci data-model, dll.). Dihapus.
  • WithdrawSrm — mengumpulkan rabat diskon biaya SRM dari pool era Serum awal. Dihapus.
  • SimulateInfo — helper kutipan baca-saja. Dihapus; gunakan helper kurva stabil off-chain SDK untuk kutipan (lihat Demo kode).

Ke mana selanjutnya

  • Akun — untuk tata letak dan ukuran bidang akun.
  • Matematika — untuk logika interpolasi tabel pencarian.
  • Demo kode — untuk melihat cara memanggil ini dari SDK.
Sumber:
  • raydium-stable/program/src/instruction.rs (enum dan pack/unpack)
  • raydium-stable/program/src/processor.rs (logika eksekusi)