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.
Instruksi AMM v4 secara seragam mengharapkan baik sisi pool (akun program AMM v4) maupun sisi market (akun OpenBook untuk market yang terikat). Menghilangkan atau tidak cocok dengan kedua set akan mengakibatkan pengembalian. Daftar akun di bawah menggunakan nama field dari SDK Raydium untuk kejelasan; IDL yang mendasar kadang menggunakan prefiks serum_*.
Inventaris instruksi
| Grup | Instruksi | Catatan |
|---|
| Siklus hidup pool | Initialize2 | Instruksi pembuatan pool saat ini (masih berfungsi; UI standar ke CPMM untuk pool baru). |
| Likuiditas | Deposit | Tambah likuiditas, terima LP. |
| Likuiditas | Withdraw | Bakar LP, terima kedua sisi secara pro-rata. |
| Swap | SwapBaseIn | Swap input-pasti (jalur penuh: vault + OpenBook). |
| Swap | SwapBaseOut | Swap output-pasti (jalur penuh). |
| Swap | SwapBaseInV2 | Swap input-pasti yang melewati OpenBook — vault saja, lebih sedikit akun. |
| Swap | SwapBaseOutV2 | Swap output-pasti yang melewati OpenBook. |
| Pemeliharaan | SetParams | Admin: ubah parameter pool. |
| Pemeliharaan | WithdrawPnl | Bersihkan PnL protokol yang terkumpul ke akun pemilik PnL. |
| Pemeliharaan | CreateConfigAccount | Admin: inisialisasi PDA AmmConfig tingkat program. |
| Pemeliharaan | UpdateConfigAccount | Admin: ubah parameter konfigurasi tingkat program. |
SDK mengekspos builder untuk instruksi yang menghadap pengguna saja. Instruksi pemeliharaan biasanya dijalankan oleh penjaga Raydium.
Initialize2
Bootstrap pool AMM v4 baru yang terikat ke market OpenBook yang ada.
Argumen
nonce: u8
open_time: u64
init_pc_amount: u64
init_coin_amount: u64
Akun (dapat ditulis W, penanda tangan S)
| # | Nama | W | S | Catatan |
|---|
| 1 | token_program | | | SPL Token. |
| 2 | system_program | | | |
| 3 | rent | | | |
| 4 | amm | W | | Akun AmmInfo (kunci berdasarkan seed). |
| 5 | amm_authority | | | PDA program. |
| 6 | amm_open_orders | W | | OpenBook OpenOrders (berdasarkan seed). |
| 7 | lp_mint | W | | |
| 8 | coin_mint | | | |
| 9 | pc_mint | | | |
| 10 | pool_coin_token_account | W | | |
| 11 | pool_pc_token_account | W | | |
| 12 | pool_withdraw_queue | W | | |
| 13 | pool_target_orders_account | W | | |
| 14 | pool_lp_token_account | W | | ATA LP pembuat. |
| 15 | pool_temp_lp_token_account | W | | Akun awal. |
| 16 | market_program | | | Program OpenBook. |
| 17 | market | | | Market OpenBook. |
| 18 | user_wallet | W | S | Pembuat. Membayar rent dan mendanai deposit awal. |
| 19 | user_token_coin | W | | |
| 20 | user_token_pc | W | | |
Kondisi pasca
lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, di mana INIT_BURN ≈ 100 unit LP disimpan dari peredaran.
- Pesanan OpenBook belum diposting;
MonitorStep pertama memposting grid awal.
Kesalahan umum — InvalidInput (desimal tidak cocok, tidak terurut), NotApproved, sisi OpenBook InvalidMarketState.
Deposit
Tambah likuiditas.
Argumen
max_coin_amount: u64
max_pc_amount: u64
base_side: u64 // 0 = basis pada coin, 1 = basis pada pc
// (beberapa varian SDK juga menerima other_amount_min)
Akun (singkat)
| # | Nama | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | amm_target_orders | W | |
| 6 | lp_mint | W | |
| 7 | pool_coin_token_account | W | |
| 8 | pool_pc_token_account | W | |
| 9 | market | | |
| 10 | user_coin_token_account | W | |
| 11 | user_pc_token_account | W | |
| 12 | user_lp_token_account | W | |
| 13 | user_owner | | S |
Matemat — pro-rata standar. Menggunakan reserve efektif pool (vault + on-book), SDK menghitung pasangan coin/pc yang menghasilkan jumlah LP yang diberikan dan memeriksanya terhadap max_*. Mengembalikan dengan ExceededSlippage jika salah satu sisi melampaui batas.
Withdraw
Bakar LP, terima kedua sisi.
Argumen
amount: u64 // LP untuk dibakar
Akun — seperti Deposit dengan arah terbalik; lp_mint dapat ditulis untuk pembakaran, ATA pengguna adalah penerima. Langkah mirip MonitorStep settlement-dari-OpenBook terjadi secara internal sebelum matemat pro-rata sehingga penebusan menggunakan reserve segar.
SwapBaseIn
Swap input-pasti. Selalu swap jalur AMM (tidak merutekan melalui pencocokan OpenBook).
Gunakan varian V2 untuk kode baru. Karena AMM v4 tidak lagi berbagi likuiditas ke OpenBook, entrypoint V1 (SwapBaseIn, SwapBaseOut) — yang masih memerlukan set lengkap akun OpenBook untuk validasi — secara fungsional berlebihan. Integrasi baru harus menggunakan SwapBaseInV2 / SwapBaseOutV2, yang mengambil daftar akun yang jauh lebih kecil dan mewakili jalur eksekusi kanonik hari ini. Bentuk V1 didokumentasikan di sini untuk kelengkapan dan untuk membaca transaksi on-chain yang ada.
Argumen
amount_in: u64
minimum_amount_out: u64
Akun (singkat)
| # | Nama | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | W | |
| 5 | amm_target_orders | W | |
| 6 | pool_coin_token_account | W | |
| 7 | pool_pc_token_account | W | |
| 8 | market_program | | |
| 9 | market | W | |
| 10 | market_bids | W | |
| 11 | market_asks | W | |
| 12 | market_event_queue | W | |
| 13 | market_coin_vault | W | |
| 14 | market_pc_vault | W | |
| 15 | market_vault_signer | | |
| 16 | user_source_token_account | W | |
| 17 | user_dest_token_account | W | |
| 18 | user_owner | | S |
Matemat — lihat products/amm-v4/math.
Kondisi pra
amm.status mengizinkan swap (bit 0 dari bitmask status tidak ditetapkan).
amm.state_data.pool_open_time <= now.
amount_in > 0.
user_source_token_account memegang setidaknya amount_in.
Kondisi pasca
- Pengguna kehilangan
amount_in dari token sumber, memperoleh amount_out ≥ minimum_amount_out dari token tujuan.
state_data.swap_*_in_amount dan swap_*_out_amount ditambah (untuk analitik).
need_take_pnl_* ditambah dengan bagian biaya protokol.
Kesalahan umum — ExceededSlippage, InvalidInput, InvalidStatus, InvalidMarket.
SwapBaseOut
Output-pasti, kebalikan dari SwapBaseIn. Akun yang sama.
Argumen
max_amount_in: u64
amount_out: u64
SwapBaseInV2 / SwapBaseOutV2
Varian entrypoint swap yang melewati akun OpenBook sepenuhnya. Matemat identik dengan jalur V1, tetapi daftar akun menyusut ke sisi AMM saja:
| # | Nama | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | pool_coin_token_account | W | |
| 6 | pool_pc_token_account | W | |
| 7 | user_source_token_account | W | |
| 8 | user_dest_token_account | W | |
| 9 | user_owner | | S |
Reserve efektif pool masih memperhitungkan token yang diposting di OpenBook, jadi matemat kuotasi tidak berubah. Gunakan V2 untuk menghemat komputasi dan menghindari melewatkan akun market ketika Anda tidak memerlukan crank OpenBook dalam transaksi yang sama. Router Raydium selalu menggunakan bentuk V2 saat merutekan melalui AMM v4.
Argumen sama dengan bentuk V1 (amount_in / minimum_amount_out untuk SwapBaseInV2; max_amount_in / amount_out untuk SwapBaseOutV2).
MonitorStep (warisan / inert)
Tidak lagi dikerjakan. AMM v4 tidak lagi berbagi likuiditas ke OpenBook, jadi MonitorStep tidak ada yang harus dilakukan — pool tidak memiliki pesanan yang diposting untuk diselesaikan, dibatalkan, atau diganti. Instruksi tetap berada di program on-chain untuk kompatibilitas kebelakangan tetapi penjaga Raydium tidak lagi memanggilnya. Memanggilnya secara manual pada dasarnya adalah no-op (selain dari menyegarkan state yang dinolkan) dan seharusnya tidak diperlukan oleh integrator.
Awalnya instruksi ini melakukan crank pada interaksi OpenBook pool.
Argumen
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
Akun — semuanya di atas untuk swap, ditambah akun administratif OpenBook.
Efek asli (tidak lagi relevan dalam praktik):
- Menyelesaikan pesanan apa pun yang diisi (hasilnya dipindahkan dari
market_coin_vault/market_pc_vault ke vault pool melalui OpenBook CPI).
- Membatalkan pesanan basi yang harganya atau ukurannya tidak lagi cocok dengan
target_orders.
- Memposting pesanan baru untuk menutup celah antara
target_orders dan amm_open_orders.
Tanpa izin. Akun apa pun dapat memanggilnya; secara historis penjaga Raydium melakukannya secara rutin.
WithdrawPnl / TakePnl
Pembersihan admin biaya protokol yang terkumpul.
Argumen
WithdrawPnl tidak mengambil arg; membaca need_take_pnl_* dan memindahkan jumlah yang tepat.
Akun (singkat)
| # | Nama | W | S | |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_config | | | |
| 5 | amm_open_orders | W | | |
| 6 | pool_coin_token_account | W | | |
| 7 | pool_pc_token_account | W | | |
| 8 | pnl_coin_token_account | W | | Penerima, disimpan di AmmConfig. |
| 9 | pnl_pc_token_account | W | | |
| 10 | pnl_owner | | S | Multisig admin. |
| 11 | market_program | | | |
| 12 | market | W | | |
| 13 | market_event_queue | W | | |
| 14 | market_coin_vault | W | | |
| 15 | market_pc_vault | W | | |
| 16 | market_vault_signer | | | |
Efek
- Mentransfer
need_take_pnl_coin dari pool_coin_token_account ke pnl_coin_token_account.
- Sama untuk pc.
- Mengosongkan
need_take_pnl_coin dan need_take_pnl_pc.
Tidak ada perubahan pada reserve karena PnL yang terkumpul sudah dikecualikan dari invarian.
SetParams
Perubahan parameter admin: bitmask status, kedalaman grid pemesanan, gelombang jumlah, biaya (jarang), dll. Dipanggil oleh multisig Raydium. Argumen adalah tag param: u8 + payload, serupa dengan UpdateAmmConfig CPMM.
Matriks perubahan state
| Instruksi | supply lp_mint | Vault | Penghitung PnL | OpenBook |
|---|
Initialize2 | supply init dicetak ke pembuat | + init_coin_amount, + init_pc_amount | 0 | OpenOrders dibuat |
Deposit | + | + kedua | — | selesaikan pengisian |
Withdraw | − | − kedua | — | selesaikan pengisian |
SwapBaseIn | — | + in, − out | + bagian pnl | mungkin re-post grid |
SwapBaseOut | — | + in, − out | + bagian pnl | mungkin re-post grid |
MonitorStep | — | selesaikan pengisian | — | batalkan / post |
WithdrawPnl | — | − (pnl dikumpulkan) | 0 | — |
SetParams | — | — | — | — |
Ke mana selanjutnya
Sumber: