Langsung ke konten utama

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Stable AMM berbagi sebagian besar permukaan instruksi dengan AMM v4. Instruksi unik adalah InitModelData dan UpdateModelData, yang mengisi dan memperbarui tabel lookup. Semua operasi lainnya (swap, deposit, withdraw, crank) mengikuti pola yang sama seperti AMM v4.

Inventaris instruksi

InstruksiKategoriCatatan
InitializeLifecycleBuat pool (memerlukan akun model-data yang sudah dialokasikan sebelumnya).
PreInitializeLifecyclePembantu pre-allocation warisan.
InitModelDataModel setupBuat dan inisialisasi tabel lookup.
UpdateModelDataModel setupIsi hingga 5 elemen tabel per pemanggilan.
DepositLiquidityTambah likuiditas, terima LP.
WithdrawLiquidityBakar LP, terima kedua sisi.
SwapBaseInSwapSwap exact-input.
SwapBaseOutSwapSwap exact-output.
MonitorStepCrankSelesaikan OpenBook, perbarui order.
SetParamsAdminUbah parameter pool.
WithdrawPnlAdminAmbil biaya protokol yang terkumpul.
WithdrawSrmLegacyAmbil rebate SRM (warisan).
SimulateInfoDiagnosticPembantu quote read-only.

Initialize

Bootstrap pool Stable AMM baru yang terikat pada pasar OpenBook yang ada dan akun ModelDataInfo yang sudah dibuat sebelumnya. Arguments
nonce: u8
open_time: u64
Accounts (writable W, signer S)
#NameWSCatatan
1token_programSPL Token.
2system_program
3rent
4ammWAkun AmmInfo pool.
5amm_authorityPDA seluruh program.
6amm_open_ordersWOpenBook OpenOrders.
7lp_mintWMint token LP yang dapat dipertukarkan.
8coin_mint
9pc_mint
10pool_coin_token_accountWVault coin pool.
11pool_pc_token_accountWVault pc pool.
12amm_target_ordersWGrid untuk order OpenBook.
13model_data_accountAkun tabel lookup.
14serum_programProgram OpenBook.
15serum_marketPasar OpenBook.
16user_dest_lp_tokenWATA LP kreator (menerima LP awal).
17user_walletWSKreator; membayar rent, mendanai deposit awal.
(opt)srm_tokenWAkun token SRM untuk diskon biaya (warisan).
Preconditions
  • model_data_account harus sudah dibuat dan diinisialisasi oleh InitModelData sebelumnya.
  • lp_mint harus kosong (pasokan nol).
  • Vault harus ada dan dimiliki oleh amm_authority.
Postconditions
  • AmmInfo diinisialisasi dengan semua referensi.
  • TargetOrders dinolkan dan siap untuk MonitorStep pertama.
  • Token LP awal dimint dan dikirim ke user_dest_lp_token.
  • Order OpenBook belum diposting; MonitorStep pertama mempostingnya.

InitModelData

Buat dan inisialisasi akun ModelDataInfo. Harus dipanggil sekali sebelum Initialize. Arguments
multiplier: u64       // scale factor (misalnya, 10^6)
Accounts (writable W, signer S)
#NameWSCatatan
1model_data_accountWAkun tabel 50k-elemen.
2amm_adminSAdmin pool (harus menandatangani untuk membuktikan otoritas).
Preconditions
  • model_data_account harus cukup besar (~1,2 MB untuk 50k × 24 bytes).
  • model_data_account harus dimiliki oleh program Stable.
Postconditions
  • status = Initialized.
  • multiplier diatur.
  • valid_data_count = 0 (tidak ada elemen yang diisi; panggil UpdateModelData untuk menambahkannya).
  • Array elements dinolkan.

UpdateModelData

Isi hingga 5 elemen tabel dalam satu pemanggilan. Harus dipanggil setelah InitModelData tetapi sebelum swap mulai menggunakan tabel. Arguments
array_data: [UpdateModelData; 5]

pub struct UpdateModelData {
  pub index: u64,
  pub data: DataElement,
}
Accounts (writable W, signer S)
#NameWSCatatan
1amm_adminSPenandatangan (harus menjadi admin pool).
2model_data_accountWAkun tabel.
Preconditions
  • amm_admin harus cocok dengan AmmInfo.amm_admin.
  • Setiap index dalam array_data harus valid (dalam 50.000).
  • Entries harus diurutkan (tidak divalidasi on-chain untuk kecepatan): x ascending, y descending, price ascending.
Postconditions
  • Elemen ditulis ke model_data_account.elements[index] untuk setiap input.
  • valid_data_count diperbarui ke indeks maksimal yang ditulis + 1.
Catatan governance: Tidak ada penegakan on-chain untuk urutan sortir atau konsistensi harga. Admin yang berbahaya atau ceroboh dapat merusak tabel dan menyebabkan quote yang salah. Dalam praktiknya, multisig Raydium mengontrol alamat ini.

Deposit

Tambah likuiditas, terima token LP. Arguments
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base on coin, 1 = base on pc
Accounts — seperti AMM v4, ~13 akun. Harus menyertakan model_data_account sebagai read-only. Math — pro-rata standar menggunakan tabel lookup untuk menghitung rasio. SDK menghitung pasangan coin/pc untuk jumlah LP yang diinginkan dan memeriksa terhadap batas maksimal.

Withdraw

Bakar LP, terima kedua sisi pro-rata. Arguments
amount: u64            // Token LP yang akan dibakar
Accounts — seperti AMM v4, dengan model_data_account sebagai read-only. Preconditions
  • user_lp_token_account menyimpan setidaknya amount.
Postconditions
  • amount token LP dibakar.
  • Pengguna menerima jumlah coin dan pc sesuai pro-rata saat ini, disesuaikan dengan biaya yang terkumpul.

SwapBaseIn

Swap exact-input menggunakan tabel lookup untuk pricing. Arguments
amount_in: u64
minimum_amount_out: u64
Accounts (~17 total)
#NameWSCatatan
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5amm_target_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8model_data_accountTabel lookup read-only.
9serum_program
10serum_marketW
11serum_bidsW
12serum_asksW
13serum_event_queueW
14serum_coin_vaultW
15serum_pc_vaultW
16serum_vault_signer
17user_source_tokenWAkun token input pengguna.
18user_dest_tokenWAkun token output pengguna.
19user_ownerSPengguna (penandatangan transaksi).
Preconditions
  • amm.status mengizinkan swap.
  • user_source_token menyimpan ≥ amount_in.
Postconditions
  • Pengguna kehilangan amount_in, mendapat amount_out ≥ minimum_amount_out.
  • Biaya pool menambah counter need_take_pnl_*.
  • Order OpenBook mungkin selesai jika diisi.
Math — Interpolasi tabel lookup seperti yang dijelaskan dalam products/stable/math.

SwapBaseOut

Swap exact-output (kebalikan dari SwapBaseIn). Akun yang sama, arah math berbeda. Arguments
max_amount_in: u64
amount_out: u64

MonitorStep

Crank tanpa izin: selesaikan isi OpenBook, perbarui grid limit-order. Arguments
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
Accounts (~18 total) — sama seperti AMM v4 MonitorStep ditambah model_data_account sebagai read-only. Preconditions
  • Referensi akun OpenBook harus cocok dengan pasar terikat pool.
Postconditions
  • Isi OpenBook yang tertunda diselesaikan ke dalam vault pool.
  • Order limit baru diposting ke OpenBook berdasarkan kurva tabel lookup.
  • TargetOrders diperbarui.

SetParams

Hanya admin. Ubah parameter pool (status, state, fees, owner, model-data key, dll). Arguments
param: u8              // parameter mana yang diubah (Status, State, Fees, dll)
value: Option<u64>    // nilai baru (jika param numerik)
new_pubkey: Option<Pubkey>  // alamat baru (jika param adalah kunci akun)
fees: Option<Fees>    // biaya baru (jika param adalah Fees)
Accounts — bervariasi menurut param. Selalu memerlukan amm_admin sebagai penandatangan. Param umum:
  • param = 0 (Status) — ubah bitmask operasi.
  • param = 9 (Fees) — ubah trade_fee, pembagian pnl, dll.
  • param = 11 (ModelDataKey) — rebind tabel lookup (jarang, memerlukan tindakan admin).

WithdrawPnl

Hanya admin. Ambil biaya protokol yang terkumpul dari need_take_pnl_* ke dalam akun PnL yang ditunjuk. Arguments — tidak ada (driven state). Accounts (~14 total)
#NameWSCatatan
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5pool_coin_token_accountW
6pool_pc_token_accountW
7coin_pnl_destWAkun coin admin (menerima biaya).
8pc_pnl_destWAkun pc admin (menerima biaya).
9pnl_adminSPenandatangan (harus cocok dengan kepemilikan pool).
10+Akun OpenBook (~4)Selesaikan isi yang tertunda terlebih dahulu.
Preconditions
  • pnl_admin harus berwenang.
Postconditions
  • need_take_pnl_coin dan need_take_pnl_pc ditransfer ke akun admin.
  • Counter dinolkan.

WithdrawSrm

Warisan (jangan gunakan di pool baru). Mengambil rebate token diskon biaya SRM dari pool era Serum awal. Arguments
amount: u64

SimulateInfo

Pembantu quote read-only untuk klien dan SDK. Arguments
param: u8              // PoolInfo, SwapBaseInInfo, SwapBaseOutInfo, RunCrankInfo
swap_base_in_value: Option<SwapInstructionBaseIn>
swap_base_out_value: Option<SwapInstructionBaseOut>
Usage — dipanggil via simulateTransaction untuk mendapatkan quote tanpa menjalankan swap.

Langkah berikutnya

  • Accounts — untuk tata letak dan ukuran field akun.
  • Math — untuk logika interpolasi tabel lookup.
  • Code demos — untuk melihat cara memanggil ini dari SDK.
Sources:
  • raydium-stable/program/src/instruction.rs (enum dan pack/unpack)
  • raydium-stable/program/src/processor.rs (logika eksekusi)