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 →
Ini adalah changelog dokumentasi — catatan pembaruan halaman-halaman ini sejak peluncuran proyek. Untuk garis waktu historis protokol itu sendiri, lihat introduction/history-and-milestones. Setiap entri di sini memiliki tanggal, daftar bab yang terpengaruh, pemicu, dan tanggal verifikasi yang mencatat kapan status on-chain dan sumber program terakhir dikonfirmasi silang dengan konten yang ditulis.

2026-05-18 — CLMM: limit orders, single-sided fee, dynamic fee

Rilis CLMM berikutnya menambahkan tiga kemampuan tingkat pool. Keduanya bersifat opt-in saat pembuatan pool dan kompatibel mundur dengan pool dan posisi yang sudah ada.

TL;DR untuk integrator

  • Limit orders kini merupakan primitif CLMM tingkat satu. LP dapat membuka order single-tick pada pool yang mendukungnya; order diisi FIFO ketika swap melintasi tick, dan keeper off-chain (limit_order_admin) dapat menyelesaikan output yang diisi tanpa pemilik harus online. Tujuh metode SDK baru (openLimitOrder, increaseLimitOrder, decreaseLimitOrder, settleLimitOrder, closeLimitOrder, closeAllLimitOrder, settleAllLimitOrder) dan tiga endpoint Temp API baru di bawah /limit-order/ (active orders, per-user history, per-PDA event log) mencakup alur lengkap.
  • Single-sided fee (CollectFeeOn) memungkinkan pool mengumpulkan biaya swap dari sisi input (legacy, mode 0), atau selalu dari token_0 (mode 1), atau selalu dari token_1 (mode 2). Berguna ketika satu sisi pasangan adalah token akuntansi kanonik.
  • Dynamic fee memungkinkan pool memilih surcharge pelacakan volatilitas yang meningkat dengan pergerakan tick cepat dan meluruh seiring waktu, dikalibrasi oleh DynamicFeeConfig per-tier dan DynamicFeeInfo per-pool. Endpoint baru /main/clmm-dynamic-config menampilkan daftar tier.
  • Instruksi baru, CreateCustomizablePool, mengekspos ketiga kontrol saat pembuatan pool. CreatePool klasik terus berfungsi untuk pool tanpa-limit-order dengan biaya default.
  • Breaking change indexer: penghitung volume per-arah (swap_in_amount_token_{0,1}, swap_out_amount_token_{0,1}) dan penghitung biaya seumur hidup (total_fees_token_{0,1}, total_fees_claimed_token_{0,1}) pada PoolState dipensiunkan menjadi padding untuk memberi ruang bagi fee_on dan dynamic_fee_info. Indexer yang membaca field tersebut secara langsung harus migrasi ke ring Observation on-chain atau API.

Mengapa hal ini penting (untuk trader, LP, dan integrator)

  • Trader mendapat kutipan lebih ketat pada pasangan long-tail dan event-driven: dynamic fee memungkinkan pool menyerap surcharge volatilitas dari taker tanpa LP harus secara aktif memperlebar range, dan limit-order ladder memperdalam likuiditas on-chain pada harga spesifik tanpa berkomitmen pada modal range-wide.
  • LP mendapat strategi ketiga bersama concentrated range dan full-range positions: parkir order exact-price, dapatkan diisi ketika harga mengunjungi, selesaikan menjadi quote token. Tidak ada rebalancing aktif yang diperlukan untuk portion yang diisi.
  • Integrator dapat memodelkan dynamic-fee pool secara deterministik — algoritma dan parameter sepenuhnya on-chain, tier kalibrasi dapat dikueri, dan jalur swap tidak berubah dalam bentuk (hanya biaya per langkah yang bervariasi).

Apa yang berubah dalam program

Akun baru

  • DynamicFeeConfig — catatan kalibrasi per-tier (periode filter, periode decay, faktor reduksi, kontrol dynamic-fee, akumulator volatilitas maksimal). Dibuat oleh CreateDynamicFeeConfig (admin), direferensikan oleh CreateCustomizablePool ketika dynamic fee diaktifkan.
  • LimitOrderState — akun per-order (PDA seeds: [owner, limit_order_nonce, order_nonce]) yang memegang pool, tick, side, jumlah input, rasio unfilled, fase cohort FIFO, dan snapshot book-keeping. Siklus hidup bersifat implisit (filled_amount vs total_amount, plus keberadaan akun): Open → Filled → Settled → Closed.
  • LimitOrderNonce — per-(owner, nonce_index) penghitung yang monotonically-incrementing yang mendapat PDA seeds limit-order. nonce_index: u8 memungkinkan pemilik yang sama mempartisi order menjadi hingga 256 aliran nonce independen.
Lihat Accounts → DynamicFeeConfig and DynamicFeeInfo dan Accounts → LimitOrderState.

Reshape PoolState

Kelompok FieldLayout LamaLayout Baru
Penghitung volume per-arahswap_in_amount_token_0, swap_out_amount_token_0, swap_in_amount_token_1, swap_out_amount_token_1Dilipat ke padding5: [u128; 4]
Penghitung biaya seumur hiduptotal_fees_token_0, total_fees_claimed_token_0, total_fees_token_1, total_fees_claimed_token_1Dilipat ke padding6: [u64; 4]
Single-sided feefee_on: u8 (0 = FromInput, 1 = Token0Only, 2 = Token1Only)
Dynamic feedynamic_fee_info: DynamicFeeInfo (embedded)
Ukuran akun total tidak berubah. Indexer: matikan pelacakan volume dari PoolState dan beralih ke ring Observation atau API. Penghitung yang dipensiunkan tidak dinolkan pada pool yang sudah ada (mereka menyimpan data apapun yang terjadi terakhir dibawa), jadi membaca ulang mereka setelah upgrade akan mengembalikan data basi.

Penambahan TickState (tidak ada breaking change)

Empat field baru ditambahkan di akhir TickState, menggantikan beberapa tail padding-nya:
  • order_phase: u64 — penghitung yang membedakan limit-order cohort di tick ini.
  • orders_amount: u64 — total input yang berkomitmen oleh semua open order di tick ini (tidak semuanya fully unfilled).
  • part_filled_orders_remaining: u64 — input yang masih unfilled dalam cohort yang sedang dikonsumsi oleh swap.
  • unfilled_ratio_x64: u128 — rasio Q64.64 yang digunakan untuk menghitung share pengisian setiap order.
Layout tick-array, sizing, dan PDA seeds tidak berubah.

Instruksi baru

  • CreateDynamicFeeConfig (admin) — buat tier DynamicFeeConfig yang dikalibrasi. Authority: multisig treasury yang sama dengan CreateAmmConfig.
  • UpdateDynamicFeeConfig (admin) — perbarui parameter tier yang sudah ada.
  • CreateCustomizablePool — titik masuk pembuatan pool yang mengekspos collect_fee_on, enable_dynamic_fee, dan dynamic_fee_config. Koeksistensi dengan CreatePool; kami rekomendasikan CreateCustomizablePool untuk pool baru apa pun yang memerlukan kontrol baru.
  • OpenLimitOrder — buka single-tick limit order. Bump LimitOrderNonce, alokasikan LimitOrderState, slot order ke FIFO cohort di tick.
  • IncreaseLimitOrder / DecreaseLimitOrder — sesuaikan unfilled portion order. Kembali pada fully-filled order dengan InvalidOrderPhase.
  • SettleLimitOrder — kemudikan filled output ke ATA pemilik. Pemanggil dapat berupa pemilik atau keeper limit_order_admin pool.
  • CloseLimitOrder — tutup fully-settled order untuk mengklaim kembali rent.

Perubahan perilaku SwapV2

Jalur swap itu sendiri tidak berubah dalam bentuk, tetapi tiga hal sekarang terjadi di sepanjang jalan:
  1. Dynamic fee (jika diaktifkan): DynamicFeeInfo pool diperbarui setiap langkah (decay → accumulate → cap), dan surcharge yang dihasilkan ditambahkan di atas biaya dasar untuk langkah itu.
  2. Limit-order matching (ketika langkah melintasi initialized tick yang memiliki open order): bagian dari input swap dikonsumsi FIFO untuk mengisi cohort di tick itu, dengan unfilled_ratio_x64 diperbarui secara atomik.
  3. Single-sided fee routing (ketika fee_on != 0): biaya diambil dari token_0 atau token_1 terlepas dari arah swap, bukan selalu dari sisi input.
Masing-masing ini adalah no-op ketika pool dibuat dengan default legacy. Lihat Instructions → SwapV2 untuk matriks perubahan state yang diperbarui.

Kode error baru

Enum ErrorCode dinomori ulang dalam rilis ini: lima varian legacy (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) dihapus, dan sebelas varian baru ditambahkan. Karena Anchor menomori error berdasarkan urutan enum dari 6000, setiap kode error di atau setelah posisi yang dihapus telah bergeser — klien yang hard-code kode numerik perlu remap. Kode baru adalah:
  • 6040 OrderAlreadyFilled
  • 6041 InvalidOrderPhase
  • 6042 InvalidLimitOrderAmount
  • 6043 OrderPhaseSaturated
  • 6044 InvalidDynamicFeeConfigParams
  • 6045 InvalidFeeOn
  • 6046 ZeroSqrtPrice
  • 6047 ZeroLiquidity
  • 6048 MissingBaseFlag
  • 6049 MissingMintAccount
  • 6050 MissingTokenProgram2022
String lengkap dan tabel pergeseran post-shift untuk semua error CLMM ada di Error codes.

Apa yang berubah dalam SDK (@raydium-io/raydium-sdk-v2)

  • Metode baru pada raydium.clmm: createCustomizablePool, openLimitOrder, increaseLimitOrder, decreaseLimitOrder, settleLimitOrder, settleAllLimitOrder, closeLimitOrder, closeAllLimitOrder.
  • Helper REST baru pada raydium.api: getClmmDynamicConfigs, getClmmLimitOrderConfigs.
  • Tipe baru: enum CollectFeeOn, DynamicFeeConfig, DynamicFeeInfo, LimitOrderState, LimitOrderConfig.
  • Reorg internal: utils/ dipindahkan ke libraries/. Package barrel tidak berubah; hanya deep import di bawah @raydium-io/raydium-sdk-v2/utils/... perlu update ke …/libraries/....
Walkthrough TypeScript end-to-end ada di products/clmm/code-demos.

Apa yang berubah dalam API

  • api-v3 — dua endpoint baru di bawah /main/:
    • GET /main/clmm-dynamic-config — daftar tier DynamicFeeConfig.
    • GET /main/clmm-limit-order-config — konfigurasi limit-order per-pool.
  • temp-api-v1 — tiga endpoint baru di bawah /limit-order/:
    • GET /limit-order/order/list?wallet=… — order yang sedang diparkir dompet (open dan partially-filled, disajikan dari cache Redis indexer; payload yang sama mencakup kedua fase via totalAmount / filledAmount / pendingSettle).
    • GET /limit-order/history/order/list-by-user?wallet=… — limit order historis dompet. Filter opsional: poolId, mint1, mint2, hideCancel. Cursor-paginated via nextPageId / size (maks 100).
    • GET /limit-order/history/event/list-by-pda?pda=… — event log per-PDA (open / increase / decrease / settle / close) untuk satu atau lebih limit-order PDA yang dipisahkan koma. Cursor-paginated via nextPageId / size (maks 100).
Semua lima didokumentasikan di tab API Reference.

Permukaan Authority

limit_order_admin adalah keeper operasional off-chain, bukan multisig. Ia hanya dapat memanggil SettleLimitOrder dan CloseLimitOrder pada order yang sudah ada, dan output settle selalu mendarat di ATA pemilik. Ia tidak dapat mutasi field pool, membuka atau memodifikasi order, atau menandatangani apa pun yang lain. Lihat Admin keys and multisig → CLMM.

Halaman yang diperbarui

  • products/clmm/overview — bagian “What’s new” baru dan pointer next-step yang diperbarui.
  • products/clmm/accounts — tiga akun baru, reshape PoolState dengan peringatan migrasi, penambahan TickState, helper PDA baru.
  • products/clmm/instructions — tujuh instruksi baru, addendum perilaku SwapV2, matriks perubahan state yang diperbarui.
  • products/clmm/fees — bagian single-sided fee, bagian dynamic-fee dengan tabel parameter.
  • products/clmm/math — pseudo-code limit-order matching, derivasi dynamic-fee.
  • products/clmm/code-demos — demo createCustomizablePool, walkthrough limit-order lengkap, pitfall baru.
  • algorithms/clmm-math — referensi silang ke limit-order matching dan dynamic fee dalam loop swap multi-tick.
  • sdk-api/typescript-sdk — bagian penambahan modul CLMM, catatan migrasi utils/libraries/.
  • api-reference/openapi/api-v3.yaml — dua endpoint baru dengan schema respons.
  • api-reference/openapi/temp-api-v1.yaml — tiga endpoint limit-order baru (/limit-order/order/list, /limit-order/history/order/list-by-user, /limit-order/history/event/list-by-pda) dengan schema request dan respons mereka.
  • api-reference/api-v3/overview — catatan pada endpoint config CLMM baru.
  • api-reference/temp-api-v1/overview — catatan pada endpoint active-orders, history-by-user, dan event-by-PDA baru.
  • reference/error-codes — sebelas kode error CLMM baru (6040–6050) plus lima kode legacy yang dihapus; kode numerik setelah titik penghapusan telah bergeser.
  • security/admin-and-multisig — baris admin DynamicFeeConfig baru dan baris keeper limit_order_admin, dengan penjelasan bounded-authority.
Diverifikasi terhadap:
  • Sumber raydium-clmm.
  • Sumber @raydium-io/raydium-sdk-v2.
  • Sumber api-v3 dan temp-api-v1.

2026-04-26 — Publikasi awal

Rilis publik pertama kumpulan dokumentasi Raydium. Diverifikasi terhadap:
  • Deployment program live di Solana mainnet-beta.
  • @raydium-io/raydium-sdk-v2@0.2.42-alpha.
  • Referensi docs dan on-chain Raydium publik melalui April 2026.
Ke depannya, setiap upgrade protokol, audit, atau revisi doc mendarat sebagai entri baru dalam file ini.

Konvensi dokumentasi

  • Versioning: dokumentasi ini menggunakan versioning berbasis kalender (YYYY-MM-DD). Setiap update membuat entri baru di atas file.
  • Verified date: setiap entri mencatat kapan konten terakhir dikonfirmasi silang terhadap status on-chain / API dan sumber program. Jika tidak dinyatakan, asumsikan tanggal utama entri.
  • Breaking changes: ditandai dalam peringatan berkotak pada halaman yang terpengaruh dan ditandai dalam entri di bawah.
  • Coverage: changelog ini mencakup set dokumentasi itu sendiri. Garis waktu historis protokol itu sendiri tinggal di introduction/history-and-milestones dan merupakan sumber kebenaran untuk “kapan X terjadi di Raydium”.

Koreksi

Jika Anda menemukan kesalahan dalam dokumentasi ini, silakan buka issue atau pull request di repositori dokumentasi. Koreksi dicatat dalam changelog ini.

Pointer