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 proyek diluncurkan. Untuk linimasa historis protokol itu sendiri, lihat introduction/history-and-milestones. Setiap entri memuat tanggal, daftar bab yang terpengaruh, pemicu perubahan, dan tanggal verifikasi yang menunjukkan kapan status on-chain dan kode sumber program terakhir dicocokkan dengan konten tertulis.

Belum Dirilis — CLMM: limit order, single-sided fee, dynamic fee

Rilis CLMM berikutnya menambahkan tiga kemampuan di tingkat pool. Ketiganya bersifat opt-in saat pembuatan pool dan kompatibel ke belakang dengan pool dan posisi yang sudah ada.

Ringkasan untuk integrator

  • Limit order kini menjadi primitif CLMM kelas pertama. LP dapat membuka order single-tick pada pool yang mendukungnya; order diisi secara FIFO saat swap melewati tick, dan off-chain keeper (limit_order_admin) dapat menyelesaikan output yang sudah terisi 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/ (order aktif, riwayat per-user, log event per-PDA) mencakup seluruh alur.
  • Single-sided fee (CollectFeeOn) memungkinkan pool memungut biaya swap dari sisi input (mode lama, mode 0), atau selalu dari token_0 (mode 1), atau selalu dari token_1 (mode 2). Berguna ketika salah satu sisi pasangan adalah token akuntansi kanonik.
  • Dynamic fee memungkinkan pool memilih surcharge pelacak volatilitas yang naik seiring pergerakan tick yang 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 parameter tersebut saat pembuatan pool. CreatePool klasik tetap berfungsi untuk pool dengan fee default dan tanpa limit order.
  • Perubahan breaking bagi indexer: penghitung volume per-arah (swap_in_amount_token_{0,1}, swap_out_amount_token_{0,1}) dan penghitung fee seumur hidup (total_fees_token_{0,1}, total_fees_claimed_token_{0,1}) pada PoolState dihapus ke padding untuk memberi ruang bagi fee_on dan dynamic_fee_info. Indexer yang membaca field tersebut secara langsung harus berpindah ke ring Observation on-chain atau API.

Mengapa ini penting (bagi trader, LP, dan integrator)

  • Trader mendapatkan kuotasi yang lebih ketat pada pasangan long-tail dan berbasis peristiwa: dynamic fee memungkinkan pool menyerap surcharge volatilitas dari taker tanpa LP harus secara aktif memperlebar rentang, dan tangga limit order memperdalam likuiditas on-chain pada harga tertentu tanpa mengomit modal sekitar rentang.
  • LP mendapatkan strategi ketiga di samping rentang terkonsentrasi dan posisi full-range: tempatkan order pada harga tepat, isi saat harga menyentuhnya, selesaikan ke token kuotasi. Tidak diperlukan rebalancing aktif untuk bagian yang sudah terisi.
  • Integrator dapat memodelkan pool dynamic-fee secara deterministik — algoritma dan parameternya sepenuhnya on-chain, tier kalibrasi dapat di-query, dan jalur swap tidak berubah bentuk (hanya fee per langkah yang bervariasi).

Perubahan pada program

Akun baru

  • DynamicFeeConfig — catatan kalibrasi per-tier (filter period, decay period, reduction factor, dynamic-fee control, max volatility accumulator). Dibuat oleh CreateDynamicFeeConfig (admin), direferensikan oleh CreateCustomizablePool saat dynamic fee diaktifkan.
  • LimitOrderState — akun per-order (PDA seeds: [owner, limit_order_nonce, order_nonce]) yang menyimpan pool, tick, sisi, jumlah input, rasio yang belum terisi, FIFO cohort phase, dan snapshot pembukuan. Siklus hidupnya bersifat implisit (filled_amount vs total_amount, ditambah keberadaan akun): Open → Filled → Settled → Closed.
  • LimitOrderNonce — penghitung inkremental monoton per-(owner, nonce_index) yang menjadi seed PDA limit-order. nonce_index: u8 memungkinkan pemilik yang sama mempartisi order ke dalam hingga 256 aliran nonce independen.
Lihat Akun → DynamicFeeConfig dan DynamicFeeInfo dan Akun → LimitOrderState.

Perubahan bentuk PoolState

Kelompok fieldTata letak lamaTata letak 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 fee 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 (tersemat)
Ukuran total akun tidak berubah. Indexer: alihkan pelacakan volume dari PoolState ke ring Observation atau API. Penghitung yang dihapus tidak dinolkan pada pool yang sudah ada (nilainya adalah data terakhir yang tersimpan), sehingga membaca ulang field tersebut setelah upgrade akan menghasilkan data basi.

Penambahan pada TickState (tanpa breaking change)

Empat field baru ditambahkan di akhir TickState, menggantikan sebagian padding ekornya:
  • order_phase: u64 — penghitung yang membedakan cohort limit-order pada tick ini.
  • orders_amount: u64 — total input yang dikomit oleh semua order terbuka pada tick ini (tidak semuanya sepenuhnya belum terisi).
  • part_filled_orders_remaining: u64 — input yang belum terisi dalam cohort yang sedang dikonsumsi oleh swap.
  • unfilled_ratio_x64: u128 — rasio Q64.64 yang digunakan untuk menghitung bagian pengisian setiap order.
Tata letak tick-array, ukuran, dan PDA seeds tidak berubah.

Instruksi baru

  • CreateDynamicFeeConfig (admin) — membuat tier DynamicFeeConfig yang telah dikalibrasi. Otoritas: multisig treasury yang sama dengan CreateAmmConfig.
  • UpdateDynamicFeeConfig (admin) — memperbarui parameter tier yang sudah ada.
  • CreateCustomizablePool — titik masuk pembuatan pool yang mengekspos collect_fee_on, enable_dynamic_fee, dan dynamic_fee_config. Berdampingan dengan CreatePool; kami merekomendasikan CreateCustomizablePool untuk pool baru yang memerlukan parameter baru.
  • OpenLimitOrder — membuka limit order single-tick. Menaikkan LimitOrderNonce, mengalokasikan LimitOrderState, memasukkan order ke cohort FIFO pada tick.
  • IncreaseLimitOrder / DecreaseLimitOrder — menyesuaikan bagian order yang belum terisi. Akan revert pada order yang sudah terisi penuh dengan InvalidOrderPhase.
  • SettleLimitOrder — menyapu output yang sudah terisi ke ATA pemilik. Pemanggil bisa berupa pemilik atau keeper limit_order_admin pool.
  • CloseLimitOrder — menutup order yang sudah diselesaikan sepenuhnya untuk mengklaim kembali rent.

Perubahan perilaku SwapV2

Jalur swap itu sendiri tidak berubah bentuk, namun tiga hal kini terjadi di sepanjang proses:
  1. Dynamic fee (bila diaktifkan): DynamicFeeInfo pool diperbarui setiap langkah (decay → accumulate → cap), dan surcharge yang dihasilkan ditambahkan di atas fee dasar untuk langkah tersebut.
  2. Pencocokan limit order (bila langkah melewati tick yang diinisialisasi dan memiliki order terbuka): sebagian input swap dikonsumsi secara FIFO untuk mengisi cohort pada tick tersebut, dengan unfilled_ratio_x64 diperbarui secara atomik.
  3. Perutean single-sided fee (bila fee_on != 0): fee diambil dari token_0 atau token_1 terlepas dari arah swap, bukan selalu dari sisi input.
Masing-masing bersifat no-op ketika pool dibuat dengan pengaturan default lama. Lihat Instruksi → SwapV2 untuk matriks perubahan status yang diperbarui.

Kode error baru

Enum ErrorCode dinomori ulang dalam rilis ini: lima varian lama (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) dihapus, dan sebelas varian baru ditambahkan. Karena Anchor menomori error berdasarkan urutan enum dari 6000, setiap kode error pada atau setelah posisi yang dihapus telah bergeser — klien yang meng-hardcode kode numerik perlu memetakan ulang. Kode-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 untuk semua error CLMM tersedia di Kode error.

Perubahan pada 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.
  • Reorganisasi internal: utils/ dipindahkan ke libraries/. Barrel paket tidak berubah; hanya impor mendalam di bawah @raydium-io/raydium-sdk-v2/utils/... yang perlu diperbarui ke …/libraries/....
Panduan TypeScript end-to-end tersedia di products/clmm/code-demos.

Perubahan pada 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 oleh suatu wallet (terbuka dan sebagian terisi, disajikan dari cache Redis indexer; payload yang sama mencakup kedua fase melalui totalAmount / filledAmount / pendingSettle).
    • GET /limit-order/history/order/list-by-user?wallet=… — riwayat limit order suatu wallet. Filter opsional: poolId, mint1, mint2, hideCancel. Paginasi berbasis kursor melalui nextPageId / size (maks 100).
    • GET /limit-order/history/event/list-by-pda?pda=… — log event per-PDA (open / increase / decrease / settle / close) untuk satu atau lebih limit-order PDA yang dipisahkan koma. Paginasi berbasis kursor melalui nextPageId / size (maks 100).
Kelima endpoint didokumentasikan di tab Referensi API.

Cakupan otoritas

limit_order_admin adalah keeper operasional off-chain, bukan multisig. Ia hanya dapat memanggil SettleLimitOrder dan CloseLimitOrder pada order yang sudah ada, dan output dari settle selalu masuk ke ATA pemilik. Ia tidak dapat mengubah field pool, membuka atau memodifikasi order, atau menandatangani hal lain apa pun. Lihat Kunci admin dan multisig → CLMM.

Halaman yang diperbarui

  • products/clmm/overview — bagian “Yang baru” dan pembaruan tautan langkah berikutnya.
  • products/clmm/accounts — tiga akun baru, perubahan bentuk PoolState beserta peringatan migrasi, penambahan TickState, helper PDA baru.
  • products/clmm/instructions — tujuh instruksi baru, addendum perilaku SwapV2, matriks perubahan status yang diperbarui.
  • products/clmm/fees — bagian single-sided fee, bagian dynamic-fee dengan tabel parameter.
  • products/clmm/math — pseudo-code pencocokan limit order, derivasi dynamic-fee.
  • products/clmm/code-demos — demo createCustomizablePool, panduan limit order lengkap, pitfall baru.
  • algorithms/clmm-math — referensi silang ke pencocokan limit order 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 skema 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) beserta skema permintaan dan responnya.
  • api-reference/api-v3/overview — catatan tentang endpoint konfigurasi CLMM baru.
  • api-reference/temp-api-v1/overview — catatan tentang endpoint active-orders, history-by-user, dan event-by-PDA baru.
  • reference/error-codes — sebelas kode error CLMM baru (6040–6050) ditambah lima kode lama yang dihapus; kode numerik setelah titik penghapusan telah bergeser.
  • security/admin-and-multisig — baris admin DynamicFeeConfig baru dan baris keeper limit_order_admin baru, beserta penjelasan otoritas terbatas.
Diverifikasi terhadap:
  • Kode sumber raydium-clmm.
  • Kode sumber @raydium-io/raydium-sdk-v2.
  • Kode sumber api-v3 dan temp-api-v1.

2026-04-26 — Publikasi awal

Rilis publik pertama dari dokumentasi Raydium. Diverifikasi terhadap:
  • Deployment program langsung di Solana mainnet-beta.
  • @raydium-io/raydium-sdk-v2@0.2.42-alpha.
  • Dokumentasi publik Raydium dan referensi on-chain hingga April 2026.
Ke depannya, setiap upgrade protokol, audit, atau revisi dokumentasi akan ditambahkan sebagai entri baru dalam file ini.

Konvensi dokumentasi

  • Versi: dokumentasi ini menggunakan versi berbasis kalender (YYYY-MM-DD). Setiap pembaruan membuat entri baru di bagian atas file.
  • Tanggal verifikasi: setiap entri mencatat kapan konten terakhir dicocokkan dengan status on-chain / API dan kode sumber program. Jika tidak dinyatakan, asumsikan tanggal utama entri tersebut.
  • Breaking change: ditandai dalam kotak peringatan pada halaman yang terpengaruh dan ditandai dalam entri di bawah.
  • Cakupan: changelog ini mencakup dokumentasi itu sendiri. Linimasa historis protokol tersimpan di introduction/history-and-milestones dan menjadi 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.

Tautan referensi