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 v4 跳躍: 使用常數乘積公式(
x · y = k)與 OpenBook 混合定價。見products/amm-v4/math。 - CPMM 跳躍: 使用常數乘積公式與可配置的費用層級。見
products/cpmm/math。 - CLMM 跳躍: 使用集中流動性 tick 數學。見
algorithms/clmm-math。 - 穩定幣跳躍: 使用穩定交換曲線處理同類資產。見
products/stable/math。
- 通過 CPI 調用每個池的交換指令。
- 收集輸出金額。
- 將其作為輸入金額傳遞給下一個跳躍。
- 根據調用者的滑點限制檢查最終輸出。
滑點複合
在多跳路由上,每個跳躍的滑點會複合。第一跳的小滑點在第二跳變成更大的滑點,因為進入第二跳的交易量已經減少。 範例:minimum_amount_out 時,路由器根據此全局限制檢查你的最終輸出。每個跳躍也根據其本地費用結構檢查其自己的交換,但路由器不會中途重新報價——你必須預先計算路由並烘焙足夠的滑點容限。
CLMM 跳躍與 limit_prices
對於進入 CLMM 池的每個跳躍,路由器檢查池的當前sqrt_price_x64 是否在指定的邊界內。邊界作為稱為 limit_prices 的 VecDeque<u128> 傳遞:
- 路由中每個 CLMM 跳躍一個
sqrt_price_x64。 sqrt_price_x64是 CLMM 使用的基於 tick 的價格表示。見algorithms/clmm-math以獲得定義。- 路由器強制執行:
指令變體與 limit_prices
-
SwapBaseInWithUserAccount、SwapBaseOutWithUserAccount(舊版本,標籤 0 和 1):limit_pricesVecDeque 必需。如果任何跳躍是 CLMM 池,空隊列會被錯誤拒絕。你必須按順序為每個 CLMM 跳躍提供一個價格。 -
SwapBaseIn、SwapBaseOut(當前版本,標籤 8 和 9):limit_pricesVecDeque 可選。空隊列會被靜默忽略;不執行價格檢查。新代碼應使用這些。
構建 limit_prices
對於具有 M 個 CLMM 跳躍的路由,隊列應包含恰好 M 個條目。按跳躍順序排列它們:何時檢查 limit_prices
sqrt_price_x64 是池當前價格的快照。當交換執行時,它不斷變化。你應該:
- 從鏈上獲取池的當前狀態。
- 計算可接受的邊界(例如,當前價格的 ±0.5%)。
- 將這些邊界編碼到
limit_prices中。 - 在你的路由器指令中包括邊界。
費用處理
每個池根據其配置收取自己的費用:- AMM v4: 0.25%(固定)分配給 LP、協議和基金。
- CPMM: 根據
AmmConfig可配置(預設 0.25%,分配因層級而異)。 - CLMM: 根據池可配置,從輸入金額中扣除。
- 穩定幣: 與 AMM v4 類似,0.25% 分配。
多跳會計範例
假設你通過兩個常數乘積池路由 USDC → SOL → STEP,每個都有 0.25% 費用:精度考量
與所有 Solana 程序一樣,路由器使用整數算術:- 所有金額都是
u64(lamports 或代幣最小單位)。 - 曲線計算在需要時使用
u128中間值以避免溢出。 - 舍入約定取決於子程序。路由器不重新舍入。
後續內容
products/amm-v4/math— 常數乘積數學。products/cpmm/math— CPMM 常數乘積與 Token-2022。algorithms/clmm-math— 集中流動性定價。products/stable/math— 穩定交換曲線。products/routing/code-demos— 路由前報價的範例。


