Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin CryptoTax DeFAI Chain SAFU AGI Claude Me Claude Skill Claude Design Claude Cowork
獨立知識媒體
與任何項目無關聯
DeFi 協議底層運作全解析:AMM、借貸、收益與風險
defi-bible.com
最新
一筆 6540 萬美元的閃電貸,換來 600 萬美元的利潤:Summer.fi Lazy Summer 金庫被駭事件完整回顧  ·  協議說自己有九成流動性都是自己的,這句話該怎麼查證,不能只聽官方說法  ·  積分歸零那一天,你會後悔嗎?決定要不要衝一個積分計畫前,先問自己這個問題  ·  你手上的 WBTC,背後其實是一把三分之二的鑰匙:拆解包裝比特幣的完整信任結構  ·  跟你完全無關的協議被駭,你的存款為什麼還是縮水了:Kelp 到 Aave 的壞帳連鎖拆解  ·  買進之前,先花五分鐘查一件事:這枚代幣是不是快要撞上解鎖懸崖
名詞解析 · mev-microstructure

Time-Weighted Average Price (TWAP)

時間加權平均價格
mev-microstructure intermediate

30 秒版 · 給沒耐心的人
把某段時間區間內的多筆價格數據,依照時間長度加權平均計算出一個單一數值,而不是只採用某個瞬間的即時報價,讓價格參考基準需要攻擊者持續操縱整段時間、而不只是操縱單一瞬間,藉此大幅提高前面文章介紹過的價格操縱攻擊的實際成本。
完整解說 +
01 · 這是什麼?

時間加權平均價格是什麼,跟前面介紹過的即時價格預言機有什麼不同?

前面文章介紹過的即時價格,反映的是某個特定瞬間、市場當下的成交價格,這種價格參考基準的優點是最即時、最貼近當下市場狀況,缺點則是容易被前面文章介紹過的、透過操縱單一瞬間流動性去扭曲報價的攻擊利用。TWAP 則是換一種思路計算價格——不看單一瞬間,而是把過去一段固定時間區間內(例如過去 30 分鐘)所有的價格數據點,依照每個價格點持續的時間長度,做加權平均,算出一個橫跨整段時間的綜合價格。

跟即時價格最大的不同在於「攻擊者需要控制的時間範圍」:操縱即時價格,攻擊者只需要在單一個區塊、單一個瞬間,把價格推到自己想要的水準,一旦這筆交易完成,價格衝擊隨時可以撤除;操縱 TWAP,攻擊者卻需要在整段被納入計算的時間區間內,持續維持這個被扭曲的價格,不能只推一下就跑,因為 TWAP 計算的是這段時間內的加權平均,單一瞬間的價格衝擊,只會佔整體加權平均值裡很小的一部分,對最終算出來的 TWAP 數字影響有限。

02 · 為什麼存在?

TWAP 為什麼會出現,想解決前面文章介紹過的哪些問題?

前面文章介紹過的閃電貸攻擊與預言機操縱攻擊,共通的核心成因,是攻擊者能在單一筆交易、單一個區塊裡,瞬間扭曲即時價格,再利用這個被扭曲的價格謀取暴利,整個過程從借入資金到獲利了結,全部發生在同一個原子化交易裡,不留下任何曝險時間。這種攻擊之所以能成立,關鍵在於「操縱成本」極低——攻擊者不需要真正長時間持有扭曲後的部位承擔市場風險,只需要瞬間拉高或壓低價格,完成攻擊後價格自然會回到正常水準。

TWAP 想解決的正是這個「操縱成本過低」的結構性問題:透過要求價格參考基準,必須是一段時間內的加權平均,而不是單一瞬間的數字,攻擊者如果想操縱 TWAP,就不能只在一個區塊裡瞬間拉高價格然後立刻撤退,而是需要持續維持這個扭曲的價格,橫跨整個被納入計算的時間窗口。這代表攻擊者需要真正投入資金,長時間承擔市場風險與可能被套利者反向交易吃掉的損失,某種程度上把「瞬間操縱、零風險套利」這種攻擊模式,轉變成「需要持續投入資金、承擔真實市場風險」的操作,大幅墊高了攻擊的實際經濟成本。

03 · 如何影響你的決策?

TWAP 具體怎麼運作,時間窗口的長度怎麼決定,會有什麼取捨?

典型的 TWAP 計算流程包含幾個環節:

  1. 持續記錄價格數據點:協議合約會持續記錄每次交易發生時的即時價格,以及這個價格維持到下一次交易發生前,經過了多長時間,這個「價格 × 持續時間」的數據,是計算 TWAP 的基礎素材
  2. 設定時間窗口:協議會設定一個固定的時間窗口長度(常見設計從幾分鐘到數小時不等),只採計這個窗口範圍內的價格數據,超出窗口範圍的舊數據會被排除在計算之外
  3. 加權平均計算:把窗口內所有價格數據點,依照各自持續的時間長度做加權,計算出這段時間的加權平均價格,這個數字,就是最終被拿去使用的 TWAP 數值
  4. 滾動更新:隨著時間推移,時間窗口本身也會持續往前滾動,最舊的數據點被排除,最新的數據點被納入,確保 TWAP 數字始終反映的是「最近一段固定時間」的加權平均,而不是固定不變的某個歷史時間點

時間窗口長度的設定,存在一個核心取捨:窗口設得越長,攻擊者需要持續維持操縱的時間也越長,理論上抗操縱能力越強,但代價是 TWAP 反映市場真實變化的速度會變慢,如果市場價格真的出現劇烈但合理的波動(例如重大消息面衝擊),TWAP 需要較長時間才能完全反映這個新的價格水準,可能造成協議在短期內,依然依照過時的價格數字做決策;窗口設得越短,TWAP 能更快跟上市場真實變化,但抗操縱能力相對較弱,攻擊者需要維持操縱的時間縮短,某種程度上又回到接近即時價格容易被操縱的問題。多數協議會依照自己的具體使用情境,在這兩個極端之間,找一個相對平衡的窗口長度。

04 · 你該怎麼辦?

TWAP 對一般用戶有什麼實際影響,該怎麼評估自己使用的協議是否有妥善運用這個機制?

對一般用戶而言,理解 TWAP 的存在,能幫助你更準確評估前面文章介紹過的預言機操縱攻擊,對你使用的特定協議而言,實際發生機率有多高——如果一個協議在決定清算門檻、抵押品估值這類關鍵決策時,採用的是 TWAP,而不是單一瞬間的即時價格,這個協議面對瞬間閃電貸操縱攻擊的抵抗力,理論上會明顯高於直接使用即時價格的協議。

評估自己使用的協議是否妥善運用 TWAP 時,幾個具體值得查證的面向:查證協議實際採用的時間窗口長度,是不是合理平衡了抗操縱能力跟反應速度這兩個取捨,過短的窗口某種程度上失去了 TWAP 原本想達成的防禦效果;查證協議是不是在所有關鍵決策環節(不只是清算,也包括借貸額度計算、部位平倉等)都統一採用 TWAP,而不是只在部分環節使用,其他環節依然依賴容易被操縱的即時價格,這種「部分防禦」的設計,可能依然留下能被針對性利用的破口;以及,理解 TWAP 本身不是萬能的——如果攻擊者真的願意投入足夠龐大的資金、承擔足夠長時間的市場風險,理論上依然有可能操縱 TWAP,只是這個攻擊的經濟成本,通常會高到讓多數攻擊者覺得不划算,評估任何一個協議的安全性時,值得把 TWAP 當成一個「大幅提高攻擊門檻」的機制,而不是一個「完全消除操縱風險」的保證。

實際例子 +

Uniswap V2 是最早在去中心化交易所裡,把 TWAP 機制設計成協議原生功能的代表案例之一,讓其他協議能直接讀取 Uniswap 資金池的歷史價格累加值,自行計算出任意時間窗口的 TWAP,不需要依賴額外的外部預言機服務。這套設計後續也啟發了多個借貸協議,在計算抵押品估值與清算門檻時,優先採用 TWAP 而非即時價格作為安全防線之一,前面文章介紹過的、2020 年 bZx 協議遭遇的預言機操縱攻擊事件,事後也被廣泛引用作為「即時價格容易被操縱、TWAP 能有效提高攻擊成本」這個論點的具體案例。

常見誤解 +
✕ 誤解1
× 誤解:只要協議採用了 TWAP,就代表這個協議完全免疫於價格操縱攻擊,實際是:TWAP 大幅提高了攻擊的經濟成本,但不等於完全消除風險,如果攻擊者願意投入足夠龐大的資金、承擔足夠長時間的市場曝險,理論上依然有可能操縱 TWAP,只是這麼做通常不划算
✕ 誤解2
× 誤解:TWAP 的時間窗口設得越長越好,能提供最強的抗操縱能力,實際是:時間窗口越長,TWAP 反映市場真實變化的速度也越慢,如果市場出現劇烈但合理的價格波動,過長的窗口可能導致協議在短期內依然依照過時的價格數字做決策,這是需要權衡的取捨,不是越長越好
這件事跟你有什麼關係 +
直接影響

優點是大幅提高攻擊者操縱價格的實際經濟成本,把原本零風險、瞬間完成的操縱攻擊,轉變成需要持續投入資金、承擔真實市場風險的操作,有效防禦前面文章介紹過的閃電貸攻擊與預言機操縱攻擊;缺點是 TWAP 反映市場真實變化的速度天生比即時價格慢,時間窗口設得越長,抗操縱能力越強,但反應遲滯的問題也越明顯,需要協議依照自己的具體使用情境,在這兩者之間找到平衡點。

提問
請至少輸入 10 個字
更多相關主題