滑點是什麼,跟一般認知的「買貴了」有什麼不同?
滑點指的是你在交易介面上看到的預期價格,跟這筆交易實際成交後的價格之間出現的落差。以 AMM 架構的去中心化交易所為例,這個落差不是隨機發生的意外,而是恆定乘積公式(x × y = k)這類定價機制的必然數學結果——你交易的金額越大,資金池裡代幣的相對數量變化就越劇烈,換算出來的每單位價格也隨之惡化,這個現象在你點擊確認交易的那一刻就已經注定,不是運氣不好或系統故障。
跟一般認知的「買貴了」最大的不同在於「可預期性」與「機制性」:一般的「買貴了」可能是因為市場價格本身在你猶豫的期間上漲,屬於外部市場波動;滑點則是即使市場價格完全靜止不動,單純因為你的交易金額相對資金池規模過大,公式本身就會讓你的成交價比報價時的價格更差,這是 AMM 定價機制的內生特性,理論上在交易前就能被估算出來。
滑點為什麼會出現,這個現象背後的根本原因是什麼?
滑點的根本原因,在於 AMM 完全依賴數學公式而不是訂單簿來定價。傳統交易所裡,你的買單會跟其他人掛出的賣單直接撮合,只要有足夠數量的對手方掛出接近你預期價格的訂單,你就能以接近預期的價格成交,這種模式下滑點主要來自市場深度不足;AMM 完全不同,沒有真人掛單等你成交,你的每一筆交易都直接跟資金池的公式互動,交易本身就會改變資金池裡兩種代幣的相對數量,進而改變下一筆交易的價格基準。
這代表在 AMM 架構裡,滑點不是「市場流動性不足時才會出現的例外情況」,而是「所有交易都必然會產生、程度大小取決於交易規模與資金池深度」的常態現象。資金池的規模(也就是資金池裡鎖住的資產總值)越大,同樣金額的交易造成的價格衝擊比例就越小,這也是為什麼交易量大、鎖倉深的資金池,通常滑點表現比小型資金池好上許多。
滑點具體怎麼計算,交易介面上顯示的滑點設定又是什麼意思?
滑點的計算邏輯建立在恆定乘積公式上:假設資金池裡有 x 顆代幣 A 與 y 顆代幣 B,公式要求 x × y 這個乘積在交易後依然要維持不變。當你放入一定數量的代幣 B 想換出代幣 A,代入公式反推能換出的代幣 A 數量,這個實際換出的數量除以你原本預期(依照交易前的即時報價換算)能拿到的數量,兩者的差距換算成百分比,就是這筆交易的滑點幅度。
交易介面上讓你設定的「滑點容忍度」(slippage tolerance)是另一回事:這是你主動設定的一個安全閥值,代表你願意接受成交價比報價時惡化多少百分比,超過這個範圍你寧願交易失敗也不願意接受更差的價格。這個設定值太低,可能導致交易在正常滑點範圍內就直接失敗(尤其在流動性較淺或波動較大的資金池裡);設定值太高,雖然交易比較不容易失敗,但也給了三明治攻擊這類 MEV 手法更大的操作空間,因為攻擊者能利用的價格落差空間變大了。找到適合當下資金池流動性與交易金額的滑點容忍度,是每次交易前值得花心思確認的細節。
滑點對一般用戶有什麼實際影響,該怎麼降低被滑點影響的損失?
滑點對用戶的直接影響是實際拿到的資產數量比預期少,交易金額越大、資金池流動性越淺,這個落差就越明顯。幾個具體可以降低影響的做法:交易前先在介面上查看預估滑點百分比,如果數字明顯偏高,考慮把大額交易拆成幾筆較小的交易分批完成,能有效降低單筆交易對資金池價格的衝擊;優先選擇流動性深、鎖倉量大的資金池進行交易,同樣的交易金額,在深度足夠的池子裡造成的價格衝擊會小得多;設定合理的滑點容忍度,不要為了避免交易失敗而設得過高,給不必要的價格惡化留下空間。
值得一提的是,滑點跟前面提到的三明治攻擊有直接關聯——你設定的滑點容忍度越寬鬆,攻擊者能在你的交易前後插入交易、榨取價差的空間就越大,理解滑點的機制,某種程度上也是理解 MEV 攻擊為什麼能夠成立的基礎知識,這兩個概念經常一起被討論不是巧合。
2020 年一起知名案例中,一名交易者要執行一筆約 35 萬美元的代幣交換,因為滑點容忍度設定過於寬鬆,被 MEV 機器人偵測到套利空間後執行三明治攻擊,該筆交易的實際損失達到約 20 萬美元,這起事件因為金額龐大、損失比例極高,在社群裡引發廣泛討論,是滑點設定不當導致嚴重損失的典型真實案例。
滑點是 AMM 去中心化、無需訂單簿撮合這個特性下不可避免的副產品,讓交易能隨時執行不需等待對手方掛單,代價是交易規模越大、資金池越淺,成交價格就越偏離報價;滑點容忍度的設定本身也是一種取捨,設低了容易交易失敗,設高了則給 MEV 攻擊留下更大操作空間,沒有一個永遠正確的設定值,需要依交易金額與資金池流動性動態調整。