Langsung ke konten utama
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

InstruksiKategoriCatatan
DepositLikuiditasTambah likuiditas, terima LP. Tata letak 12-akun baru; tata letak 14-akun lama masih kompatibel.
WithdrawLikuiditasBakar LP, terima kedua sisi. Tata letak 12-akun baru; tata letak 21/22-akun lama masih kompatibel.
SwapBaseInSwapSwap input-pasti. Tata letak 9-akun baru; tata letak 18-akun lama masih kompatibel.
SwapBaseOutSwapSwap output-pasti. Tata letak 9-akun baru; tata letak 18-akun lama masih kompatibel.
WithdrawPnlAdminKumpulkan biaya protokol yang terkumpul. Tata letak 10-akun baru (breaking keras — tanpa kompatibilitas tata letak lama).

Dihapus (tidak lagi dapat dipanggil)

Instruksi ini dihapus dalam upgrade 2026-06-22 dan tidak lagi dapat dipanggil. Lihat Instruksi yang dihapus.
InstruksiKategori sebelumnyaTujuan sebelumnya
InitializeSiklus hidupBuat pool.
PreInitializeSiklus hidupHelper pre-alokasi warisan.
InitModelDataPenyiapan modelBuat dan inisialisasi tabel pencarian.
UpdateModelDataPenyiapan modelIsi hingga 5 elemen tabel per panggilan.
MonitorStepCrankSelesaikan pengisian OpenBook, posting ulang order.
SetParamsAdminUbah parameter pool.
WithdrawSrmWarisanKumpulkan rabat diskon biaya SRM.
SimulateInfoDiagnostikHelper kutipan baca-saja.

Deposit

Tambah likuiditas, terima token LP. Argumen
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base on coin, 1 = base on pc
Akun — tata letak baru, 12 akun (dapat ditulis W, penanda tangan S)
#NamaWSCatatan
0token_programSPL Token.
1ammWAmmInfo pool.
2amm_authorityPDA lebar program.
3amm_target_ordersW
4amm_lp_mintWMint LP.
5amm_coin_vaultWVault coin pool.
6amm_pc_vaultWVault pc pool.
7model_data_accountTabel pencarian baca-saja.
8user_source_coinWInput coin pengguna.
9user_source_pcWInput pc pengguna.
10user_dest_lpWATA LP pengguna.
11user_source_ownerSPenanda tangan transaksi.
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
amount: u64            // Token LP untuk dibakar
Akun — tata letak baru, 12 akun (dapat ditulis W, penanda tangan S)
#NamaWSCatatan
0token_programSPL Token.
1ammWAmmInfo pool.
2amm_authorityPDA lebar program.
3amm_target_ordersW
4amm_lp_mintWMint LP.
5amm_coin_vaultWVault coin pool.
6amm_pc_vaultWVault pc pool.
7model_data_accountTabel pencarian baca-saja.
8user_source_lpWSumber LP pengguna.
9user_dest_coinWOutput coin pengguna.
10user_dest_pcWOutput pc pengguna.
11user_lp_ownerSPenanda tangan transaksi.
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
amount_in: u64
minimum_amount_out: u64
Akun — tata letak baru, 9 akun (dapat ditulis W, penanda tangan S)
#NamaWSCatatan
0spl_token programSPL Token.
1ammWAmmInfo pool.
2amm_authorityPDA lebar program.
3amm_coin_vaultWVault coin pool.
4amm_pc_vaultWVault pc pool.
5model_data_accountTabel pencarian baca-saja.
6user_source_tokenWAkun token input pengguna.
7user_destination_tokenWAkun token output pengguna.
8user_source_ownerSPengguna (penanda tangan transaksi).
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
max_amount_in: u64
amount_out: u64

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)
#NamaWSCatatan
0spl_token programSPL Token.
1ammWAmmInfo pool.
2amm_authorityPDA lebar program.
3amm_coin_vaultWVault coin pool.
4amm_pc_vaultWVault pc pool.
5amm_target_ordersW
6model_dataTabel pencarian.
7user_coinWAkun coin admin (menerima biaya).
8user_pcWAkun pc admin (menerima biaya).
9amm_adminSAdmin pool (penanda tangan).
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)