Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Sejak upgrade program 2026-07, ketergantungan OpenBook / Serum AMM v4 telah dihapus. Instruksi v1
SwapBaseIn / SwapBaseOut, Deposit, dan Withdraw yang lama mempertahankan tata letak akun lama untuk kompatibilitas mundur: akun pasar masih diterima di posisi lama mereka, tetapi mereka tidak lagi divalidasi atau digunakan (tidak ada CPI yang dikeluarkan). Integrasi baru harus menggunakan titik masuk swap V2, yang menghilangkan akun pasar sepenuhnya. Beberapa instruksi telah dihapus dan sekarang kembali — lihat entri changelog. Daftar akun di bawah menggunakan nama bidang dari Raydium SDK; IDL yang mendasar kadang-kadang menggunakan awalan serum_*.Upgrade program 2026-09 menambahkan satu instruksi admin, WithdrawExcessLamports (tag 18), dan menghapus rent sysvar dari CreateConfigAccount. Semua yang dipanggil trader atau LP tidak berubah. Lihat entri changelog 2026-09-09.Inventaris instruksi
SDK mengekspos builder hanya untuk instruksi yang menghadap pengguna. Instruksi pemeliharaan biasanya dipanggil oleh keeper Raydium.
Dihapus / tidak lagi dapat dipanggil (builder klien mereka dihapus):
Initialize (tag 0, gunakan Initialize2), MonitorStep (2), MigrateToOpenBook (5), WithdrawSrm (8), PreInitialize (10, gunakan Initialize2), SimulateInfo (12), AdminCancelOrders (13).
Transaksi yang membawa salah satu tag ini gagal; program tidak pernah mengeksekusi instruksi. Perlakukan ketujuh sebagai hilang daripada sebagai jalur kesalahan untuk ditangani.
Initialize2
Bootstrap pool AMM v4 baru yang terikat ke pasar OpenBook yang ada.
Argumen
W, penandatangan S)
Dua tata letak yang diterima. Daftar 19-akun di atas adalah yang direkomendasikan. Untuk
kompatibilitas mundur program juga membaca tata letak warisan 21-akun, yang menyisipkan
amm_open_orders yang diabaikan pada posisi 7 dan market_program yang diabaikan pada posisi
16 — inilah yang masih dipancarkan oleh instruction builder initialize2 di dalam repo. Panjang
lain apa pun akan diurai secara posisional terhadap tata letak warisan dan akan gagal.- LP yang di-mint ke kreator =
sqrt(init_coin_amount × init_pc_amount) − 10^coin_mint.decimals. Desimal LP sama dengancoin_mint.decimals, sehingga jumlah yang dikurangi tepat satu token LP utuh; jumlah itu tidak pernah di-mint dan permanen berada di luar sirkulasi. Jikasqrt(...)berada di bawah nilai itu, instruksi dibatalkan denganInitLpAmountTooLess. AmmInfo.lp_amountmenyimpansqrt(...)penuh, bukan jumlah yang di-mint — sehinggalp_mint.supplypermanen lebih rendah satu token LP utuh dibandingamm.lp_amount. Semua matematika pro-rata memakaiamm.lp_amount.- Tidak ada pesanan OpenBook yang diposting (grid order-book telah dihapus).
AmmInfo.marketmencatat akun yang dilewatkan pada slot 15, tetapiAmmInfo.open_ordersdanAmmInfo.market_programkeduanya ditulis sebagaiPubkey::default(), dancoin_lot_size/pc_lot_size/min_sizediinisialisasi ke0. Pada tata letak warisan 21-akun, akun tambahanamm_open_ordersdanmarket_programdibaca lalu dibuang.
InvalidCoinMint (mint coin dan pc identik), InvalidConfigAccount (PDA amm_config salah), InvalidFee (tujuan biaya pembuatan pool salah), InvalidProgramAddress (amm_authority salah atau nonce salah), RepeatCreateAmm (pool sudah ada untuk pasar ini), InitLpAmountTooLess, InvalidSupply (salah satu jumlah init adalah 0, atau LP mint sudah memiliki supply), AlreadyInUse.
Deposit
Tambah likuiditas.
Argumen
Matematika — pro-rata standar. Menggunakan cadangan efektif pool (vault + on-book), SDK menghitung pasangan coin/pc yang menghasilkan jumlah LP yang diberikan dan memeriksanya terhadap
max_*. Kembali dengan ExceededSlippage jika salah satu sisi melebihi batas.
Withdraw
Bakar LP, terima kedua sisi.
Argumen
Tidak ada lagi langkah settle-from-OpenBook — matematika pro-rata menggunakan saldo vault secara langsung.
SwapBaseIn
Swap input-tepat. Selalu swap jalur AMM (tidak merutekan melalui pencocokan OpenBook).
Gunakan varian V2 untuk kode baru. Karena ketergantungan OpenBook AMM v4 telah dihapus, titik masuk V1 (
SwapBaseIn, SwapBaseOut) masih mengharapkan daftar akun lengkap 17 (atau 18 dengan akun target-orders opsional), tetapi akun OpenBook/pasar sekarang diterima secara posisional dan diabaikan — mereka tidak divalidasi dan tidak ada CPI yang dikeluarkan. Melewatkan jumlah akun yang salah masih kembali dengan WrongAccountsNumber, tetapi isi akun pasar tidak lagi diperiksa. 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.
Matematika — lihat
products/amm-v4/math.
Kondisi pra
AmmStatus::from_u64(amm.status).swap_permission()bernilai true — artinya,statusadalah1(Initialized),6(SwapOnly) atau7(WaitingTrade).statusadalah nilai enum, bukan bitmask; lihatproducts/amm-v4/accounts.amm.state_data.pool_open_time <= now.amount_in > 0.user_source_token_accountmemegang setidaknyaamount_in.
- Pengguna kehilangan
amount_indari token sumber, mendapatkanamount_out ≥ minimum_amount_outdari token tujuan. - Biaya swap tetap berada di vault, menaikkan invariant
k. Penghitungneed_take_pnl_*tidak disentuh oleh swap — PnL protokol dihitung ulang dari deltakpadaDeposit,WithdrawatauWithdrawPnlberikutnya (Processor::calc_take_pnl). - Catatan: penghitung analitik
state_data.swap_*_in_amount/swap_*_out_amounttidak lagi diperbarui — nilainya dibekukan. Gunakan log perdagangan untuk analitik volume.
ExceededSlippage, InvalidInput, InvalidStatus, NotAllowed (mint coin/pc identik).
SwapBaseOut
Output-tepat, kebalikan dari SwapBaseIn. Akun yang sama.
Argumen
SwapBaseInV2 / SwapBaseOutV2
Varian titik masuk swap (tag 16 / 17) yang melewatkan akun OpenBook sepenuhnya. Matematika identik dengan jalur V1, tetapi daftar akun menyusut menjadi hanya sisi AMM dan pengguna — 8 akun, dan amm_open_orders tidak dilewatkan:
Cadangan pool sekarang adalah saldo vault (minus PnL yang tertunda), jadi matematika quote sederhana dan identik dengan jalur v1. Gunakan V2 untuk menghemat compute dan menghindari melewatkan akun pasar (sekarang diabaikan). 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 dan instruksi dihapus lainnya
Secara historis, MonitorStep menggerakkan interaksi OpenBook pool: ia menyelesaikan pesanan yang diisi (memindahkan hasil dari vault pasar ke vault pool melalui CPI OpenBook), membatalkan pesanan basi, dan memposting pesanan baru untuk menutup celah antara target_orders dan amm_open_orders. Dengan ketergantungan OpenBook dihapus, tidak ada yang perlu dikgerakkan dan instruksi hilang. Setiap keeper atau integrasi yang masih memanggilnya harus menghapus panggilan.
WithdrawPnl / TakePnl
Kumpulan admin biaya protokol yang terkumpul.
Argumen
WithdrawPnltidak mengambil argumen; ia membacaneed_take_pnl_*dan memindahkan jumlah yang tepat.
Efek
- Mentransfer
need_take_pnl_coindaripool_coin_token_accountkepnl_coin_token_account. - Sama untuk pc.
- Mengosongkan
need_take_pnl_coindanneed_take_pnl_pc. - Perubahan logika: jika saldo vault tidak cukup untuk menutupi PnL yang terkumpul, instruksi mengembalikan
TakePnlErrorsecara langsung (tidak lagi memanipulasi status order-book).
SetParams
Perubahan parameter admin, dipanggil oleh multisig Raydium. Argumen adalah tag param: u8 + payload.
CreateConfigAccount / UpdateConfigAccount
Manajemen admin PDA AmmConfig tingkat program (seed ["amm_config_account_seed"]). Akun ini menyimpan tepat tiga bidang bermakna — pnl_owner, cancel_owner dan create_pool_fee — ditambah dua wilayah padding cadangan; tidak ada flag pembuatan pool. UpdateConfigAccount menetapkan pnl_owner dengan param = 0, cancel_owner dengan param = 1, dan create_pool_fee dengan param = 2.
Berubah di 2026-09, dan kompatibel mundur.
CreateConfigAccount tidak lagi membaca rent sysvar. Daftar akun sekarang 4 akun, turun dari 5:Program membaca parameter sewa dari
Rent::get() alih-alih mendeserialisasi akun sysvar yang dilewatkan — apa yang membuat bump ketergantungan Solana 3.0 alami.Akun yang dihapus adalah terakhir dalam daftar, dan handler membaca akun secara posisional melalui next_account_info tanpa pemeriksaan panjang. Alat admin yang ada yang masih melewatkan daftar 5-akun lama karena itu terus bekerja: akun sewa trailing tidak pernah dibaca. Perbarui ketika nyaman, bukan mendesak. UpdateConfigAccount tidak berubah.Initialize2 menyimpan rent sysvar di posisi 3, dan masih menggunakannya: program berhenti memanggil Rent::from_account_info padanya, tetapi masih diteruskan ke CPI spl_token::initialize_account dan initialize_mint yang membuat vault dan LP mint pool. Jangan hapus dari daftar akun.
WithdrawExcessLamports
Kumpulan admin lamport yang duduk di atas minimum bebas sewa pada akun yang dikendalikan program. Ditambahkan dalam upgrade 2026-09 untuk memulihkan over-funding yang SIMD-0437 rent reduction tinggalkan pada akun yang dibuat sebelum setiap langkah.
Ini hanya memindahkan kelebihan. Saldo token, data akun, pemilik, dan status pool tidak tersentuh, dan instruksi adalah no-op pada akun yang sudah di minimum — jadi aman untuk menjalankan berulang kali dan lagi setelah setiap langkah rollout.
Argumen — tidak ada. Payload adalah byte tag tunggal 18.
Akun
Bagaimana setiap akun sumber ditangani
Program mengirim pada pemilik akun sumber:
Kesalahan umum —
InvalidSignAccount (penandatangan salah), InvalidSplTokenProgram (program salah di slot 3), InvalidProgramAddress (amm_authority salah), LamportsCalculateError (kode kustom 60; putaran wSOL tidak nol), dan InsufficientFunds dari jalur yang dikendalikan program ketika akun memegang kurang dari minimum sewa sendiri.
Tidak ada builder SDK. @raydium-io/raydium-sdk-v2 tidak mengirimkan builder untuk instruksi ini, begitu juga repo raydium-sdk-V2-demo — ini adalah jalur admin. Enkode dengan tangan, cara yang dilakukan sweep sisi dompet di solana-fundamentals/rent-and-reclaimable-rent untuk instruksi program token.
Matriks perubahan status
Kolom OpenBook hilang — tidak ada instruksi yang menyentuh order book lagi.Ke mana selanjutnya
products/amm-v4/code-demos— Contoh TypeScript untuk alur swap dan LP.products/amm-v4/fees— DetailWithdrawPnldan pembagian biaya.reference/error-codes— Tabel referensi maju (kesalahan AMM v4 tercantum di halaman itu).
- Program Raydium AMM —
raydium-io/raydium-amm - Modul
LiquidityRaydium SDK v2 - Program OpenBook — validasi akun di sisi pasar

