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 →
Kurva tabel pencarian
Stable AMM menggantikan formula x·y=k dengan tabel pencarian sparse berisi tuple (x, y, price). Saat menentukan harga swap, program:- Menghitung rasio pool saat ini dari cadangan.
- Mencari biner tabel untuk menemukan dua entri yang membatasi rasio tersebut.
- Menginterpolasi linear di antara keduanya untuk mendapatkan harga perantara.
- Menerapkan biaya dan mengembalikan kutipan.
Tata letak tabel dan pencarian biner
ModelDataInfo menyimpan hingga 50.000 entri DataElement, diindeks oleh admin. Hanya valid_data_count pertama yang aktif. Setiap entri:
- Hitung rasio:
target_ratio = (x_real * multiplier) / y_real. - Cari biner entri yang membatasi
(element.x * multiplier) / element.yterhadaptarget_ratio. - Ketika braket
[min_idx, max_idx]ditemukan, lakukan interpolasi.
state.rs::ModelDataInfo::get_mininum_range_by_xy_real. Invarian kunci: entri harus diurutkan (x naik, y turun, price naik) agar pencarian berfungsi.
Interpolasi linear
Setelah dua titik tabel membatasi rasio, interpolasi menghitung harga dan pasangan cadangan perantara:Penskalaan: multiplier
Cadangan pool dan harga disimpan pada skala berbeda. Bidangmultiplier pada ModelDataInfo memperhitungkan hal ini. Pola umum:
- Coin memiliki 6 desimal, PC memiliki 18 desimal.
- Multiplier = 10^6 (atau serupa).
- Entri tabel disimpan pada skala tereduksi agar sesuai dengan batas u64.
Penetapan harga swap: SwapBaseIn dan SwapBaseOut
SwapBaseIn (input pasti)
Diberikan jumlah inputamount_in:
- Dapatkan rasio saat ini dari
(coin_vault, pc_vault). - Temukan entri tabel yang membatasi dan interpolasi untuk mendapatkan rasio ruang tabel.
- Konversi input ke ruang tabel:
dx_table = amount_in * multiplier / ratio. - Kueri tabel pada koordinat X baru untuk menemukan Y baru.
dy_table = y_old - y_new.- Konversi kembali:
dy_real = dy_table * ratio / multiplier. - Terapkan biaya perdagangan:
dy_output = dy_real - (dy_real * trade_fee_numerator / trade_fee_denominator). - Kembalikan
dy_output.
SwapBaseOut (output pasti)
Simetris: diberikanamount_out yang diinginkan, selesaikan amount_in yang diperlukan.
Kedua jalur menyelesaikan pesanan OpenBook yang terisi terlebih dahulu (melalui logika seperti MonitorStep internal), sehingga cadangan efektif mencerminkan pengisian apa pun dari blok sebelumnya.
Penerapan biaya
Identik dengan AMM v4: lihatproducts/amm-v4/math untuk derivasi lengkap.
pnl_portion masuk ke need_take_pnl_* dan disapu oleh admin melalui WithdrawPnl. lp_portion tetap di vault, menginflasi k dan menguntungkan pemegang token LP.
MonitorStep dan OpenBook
Seperti AMM v4,MonitorStep adalah instruksi crank yang:
- Menyelesaikan pengisian pesanan OpenBook yang tertunda (memindahkan token dari vault ke pool).
- Memperbarui
AmmInfo.target_ordersdengan grid slot pesanan limit baru. - Memposting grid baru ke OpenBook.
MonitorStep: ~150k–180k CU (mirip dengan AMM v4).
Ringkasan: mengapa ini berfungsi
Desain tabel pencarian + interpolasi adalah efisien dan fleksibel:- Efisiensi: Pencarian biner adalah O(log 50.000) ≈ 16 iterasi, masing-masing ~ 300–500 CU. Interpolasi adalah beberapa perkalian/pembagian. Total biaya kutipan adalah ~5k–15k CU, jauh lebih murah daripada menghitung ulang formula pada setiap swap.
- Fleksibilitas: Admin dapat menyandikan kurva piecewise-linear apa pun. Pasangan stablecoin mendapat kepadatan tinggi di sekitar 1:1; pasangan yang dijaminkan mendapat kurva khusus.
- Komposabilitas OpenBook: Logika
MonitorStep/TargetOrdersyang sama dari AMM v4 berlaku. Penemuan harga melalui tabel masuk ke pembuatan grid pesanan.
raydium-stable/program/src/state.rs, metode get_data_by_x, get_data_by_y, get_dy_by_dx_base_in, dll.
Langkah berikutnya
- Akun — referensi bidang
ModelDataInfodanDataElement. - Instruksi —
InitModelData,UpdateModelDatauntuk mengisi tabel. - Biaya — penerapan biaya dan
WithdrawPnl. products/amm-v4/math— untuk logika penetapan harga pesanan inklusif biaya OpenBook.
raydium-stable/program/src/state.rs(implementasi interpolasi dan pencarian biner)raydium-stable/program/src/math.rs(utilitas kalkulator)


