本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
兩個不同的概念
價格影響和滑點在使用者介面中經常被混淆,但它們指的是不同的東西。-
價格影響是針對特定池狀態的交易的確定性屬性。給定
(Δin, reserves),價格影響在交易提交前完全可計算。 - 滑點是你在報價時預期的價格與執行時實際獲得的價格之間的實現差異。它是延遲、並發交易和區塊包含順序的函數——而不是池數學的函數。
正式定義
價格影響
impact ≈ 2 · Δin / reserve_in(小額交易)。對於 CLMM:取決於交易跨越多少個 tick;通常在當前 tick 範圍內保持平坦,在每個 tick 邊界處跳躍。
實現滑點
計算 minAmountOut 和 maxAmountIn
每筆 Raydium 交換都需要一個滑點保護邊界:
SwapBaseInput(amount_in, min_amount_out)— 精確輸入,下限輸出。SwapBaseOutput(max_amount_in, amount_out)— 精確輸出,上限輸入。
minAmountOut 是 amountOut × (1 − slippage),這是鏈上邊界;priceImpact 僅從池狀態確定;fee 是收取的總費用。
滑點容差是圍繞價格影響的緩衝,而不是價格影響本身。0.5% 的容差意味著「接受最多比我的報價差 0.5%」——與價格影響是 0.01%(小額交易)還是 2%(大額交易)無關。對於 2% 價格影響、0.5% 容差的交易,minAmountOut 是交易前現貨下方 2.5%——本質上是影響和容差的總和。
推薦的滑點容差
沒有單一的正確數字;正確的邊界取決於:- 交易對穩定性。 穩定幣對穩定幣池可以安全使用 0.1%。波動的迷因幣對通常需要 3–5% 才能可靠成交。
- 交易規模。 較大的交易有較大的價格影響,所以容差需要隨之擴展以避免回滾。SDK 的自動滑點預設值約為
max(0.5%, 2 × price_impact)就是因為這個原因。 - 區塊包含延遲。 在記憶池中停留多個區塊的交易會暴露於更多並發交易。Jito 捆綁和優先費用可以減少這種情況。
不同 AMM 類型的差異
CPMM
價格影響平滑連續(閉式2 · Δin / reserve_in)。滑點容差隨交易規模線性擴展。
AMM v4
與 CPMM 相同的曲線數學。由於 OpenBook 移除,「有效準備金」只是兩個金庫餘額:- 根據原始金庫餘額報價。沒有鏈上組件要添加——
Initialize2在每個新池上寫入AmmInfo.open_orders = Pubkey::default(),沒有指令讀取OpenOrders帳戶。 - 從金庫餘額中減去應計協議 PnL(
state_data.need_take_pnl_coin/need_take_pnl_pc)以獲得不變量實際使用的準備金。 - 沒有預先運行的 crank:
MonitorStep現在會因unimplemented!而崩潰,不得發送。
CLMM
價格影響是分段的。在當前 tick 範圍內,影響大約與Δin / L 成線性關係。跨越 tick 邊界可以離散地改變 L,導致邊際價格突然跳躍。跨越多個稀疏填充 tick 的交易可能有比 2 · Δin / reserve 經驗法則建議的高得多的影響。
SDK 的 CLMM 報價確定性地迭代交換步驟以返回精確的預期 amountOut,所以 minAmountOut = amountOut · (1 − slippage) 是正確的。但priceImpact 返回值應理解為「交易前現貨與交易後現貨之間的差價」,在 CLMM 上對於只關心 amount_out 的使用者來說,可能遠大於交換的有效滑點。
LaunchLab 曲線
類似於 CPMM,但具有非對稱曲線(二次或虛擬準備金)。隨著曲線在畢業時變陡,後期買家的影響增長更快。預買方 UI 應在預期買入在一筆交易中推動曲線超過 ~5% 的quote_reserve_target 時發出警告。
MEV 考量
在 Solana 上,針對交換的 MEV 提取主要採用三明治攻擊的形式:機器人在你的交易之後放置一筆後置交易,加上一筆前置交易,兩者都在同一個 slot。你的交易以比沒有三明治時更差的價格成交;後置交易捕獲差異。 緩解措施:- 緊密的
minAmountOut。 激進的滑點邊界導致受害交易在被重度三明治時回滾,保護資金(但浪費 gas)。在 Solana 上這是標準做法——拒絕很便宜。 - Jito 捆綁。 通過 Jito 提交並附帶捆綁小費可以排除中間人重新排序你的交易。捆綁作為原子塊成交。
- 優先費用。 高優先費用增加你的交易在當前領導者區塊中成交的機會,在三明治者能反應之前。不如捆綁穩健,但更標準。
- 私有 RPC。 通過私有 RPC(或驗證者的直接端點)提交可以減少記憶池三明治者觀察你交易的時間窗口。
integration-guides/routing-and-mev 以了解模式。
多跳路由的滑點
當交換通過多個池路由時(例如USDC → SOL → RAY),滑點容差應按跳應用,而不僅僅是端到端:
raydium.tradeV2.swap 時自動應用按跳邊界。(外觀是 tradeV2 — raydium.trade 不存在。)對於自訂路由器,複製該模式。
向使用者報告
良好交換 UI 的經驗法則:- 分別顯示預期價格影響和滑點容差。
- 當價格影響超過 ~2% 時突出顯示——「高影響」警告。
- 當價格影響超過容差時突出顯示——交易幾乎肯定會回滾。
- 對於波動交易對,提供「高滑點模式」以放寬邊界並顯示更強的警告。
指標
products/cpmm/math、products/amm-v4/math、products/clmm/math— 按池類型的影響推導。integration-guides/routing-and-mev— 多跳路由 + MEV 防禦。integration-guides/priority-fee-tuning— 調整優先費用以減少滑點。
- Raydium SDK v2 滑點/影響實現。
- Flashbots / Jito on Solana MEV。

