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.
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
查詢表曲線
穩定 AMM 使用稀疏查詢表取代公式 x·y=k,表中包含 (x, y, price) 元組。程式在報價交換時:- 根據儲備金計算池的當前比率。
- 二元搜尋表格以找到兩個條目來限定該比率。
- 線性插值計算中間價格。
- 應用費用並返回報價。
表格配置和二元搜尋
ModelDataInfo 最多可保存 50,000 個 DataElement 條目,由管理員索引。只有前 valid_data_count 個條目是活躍的。每個條目:
- 計算比率:
target_ratio = (x_real * multiplier) / y_real。 - 二元搜尋條目,使
(element.x * multiplier) / element.y限定target_ratio。 - 找到括號
[min_idx, max_idx]後,執行插值。
state.rs::ModelDataInfo::get_mininum_range_by_xy_real。關鍵不變量:條目必須排序(x 遞增,y 遞減,price 遞增),搜尋才能運作。
線性插值
兩個表點限定比率後,插值計算中間價格和儲備金對:縮放:乘數
池儲備金和價格以不同的刻度儲存。ModelDataInfo 上的 multiplier 欄位負責處理這個問題。常見模式:
- Coin 有 6 位小數,PC 有 18 位小數。
- 乘數 = 10^6(或類似值)。
- 表項以縮小的刻度儲存以適應 u64 邊界。
交換報價:SwapBaseIn 和 SwapBaseOut
SwapBaseIn(確切輸入)
給定輸入金額amount_in:
- 從
(coin_vault, pc_vault)取得當前比率。 - 找到限定表項並插值以取得表空間比率。
- 轉換輸入到表空間:
dx_table = amount_in * multiplier / ratio。 - 查詢新 X 座標處的表以找到新 Y。
dy_table = y_old - y_new。- 轉換回來:
dy_real = dy_table * ratio / multiplier。 - 應用交易費:
dy_output = dy_real - (dy_real * trade_fee_numerator / trade_fee_denominator)。 - 返回
dy_output。
SwapBaseOut(確切輸出)
對稱:給定期望的amount_out,求解所需的 amount_in。
兩條路徑都先結算已填充的 OpenBook 訂單(透過內部 MonitorStep 類似邏輯),因此有效儲備金反映前一個區塊的任何成交。
費用應用
與 AMM v4 相同:詳見/zh-Hant/products/amm-v4/math。
pnl_portion 進入 need_take_pnl_* 並由管理員透過 WithdrawPnl 取出。lp_portion 保留在金庫中,膨脹 k 並惠及 LP 代幣持有人。
MonitorStep 和 OpenBook
如同 AMM v4,MonitorStep 是手動觸發指令,其作用為:
- 結算待處理的 OpenBook 訂單成交(將代幣從金庫轉移到池)。
- 使用新的限價單槽位網格更新
AmmInfo.target_orders。 - 將新網格發佈到 OpenBook。
總結:為何這有效
查詢表 + 插值設計既高效又靈活:- 效率:二元搜尋為 O(log 50,000) ≈ 16 次迭代,每次約 300–500 CU。插值為幾個乘法/除法。總報價成本約 5k–15k CU,遠便宜於每次交換時重新計算公式。
- 靈活性:管理員可編碼任何分段線性曲線。穩定幣對在 1:1 附近密度高;抵押對取得自訂曲線。
- OpenBook 可組合性:AMM v4 的相同
MonitorStep/TargetOrders邏輯適用。表中的價格發現進入訂單網格生成。
raydium-stable/program/src/state.rs,方法 get_data_by_x、get_data_by_y、get_dy_by_dx_base_in 等。
後續步驟
- 帳戶 —
ModelDataInfo和DataElement欄位參考。 - 指令 —
InitModelData、UpdateModelData用於填充表格。 - 費用 — 費用應用和
WithdrawPnl。 /zh-Hant/products/amm-v4/math— OpenBook 費用包含訂單定價邏輯。
raydium-stable/program/src/state.rs(插值和二元搜尋實現)raydium-stable/program/src/math.rs(計算器公用程式)


