论文分析TWAP预言机的弱点

本文探讨了TWAP(时间加权平均价格)作为价格预言机的安全性,以及如何通过单区块攻击降低操纵价格的成本。UniV3使用几何平均数来改进TWAP的计算,从而使单区块攻击的成本永远高于多区块攻击,提高了其抗操纵能力。

TWAP Oracle 弱点

如果我告诉你操纵一个 TWAP 的成本被忽视了,并且有办法降低它?(实际上 UniV3 这样做了)
这篇论文中有说明: https://eprint.iacr.org/2022/445.pdf

image

TWAP(时间加权平均价格)作为价格预言机,是一种使得价格操纵对于攻击者来说更加昂贵的技术。

image

一个代币最简单的价格指示是其现货价格,它是通过池的瞬时余额 B1 和 B2(B1/B2 或 B2/B1)计算得出的。
这些余额可以通过与池的交互轻松操纵,比如购买或出售其中一个代币。

TWAP 不使用现货价格,而是计算在选择的时间 $T$ 期间的平均余额。
$T$ 必须大于链的 block.time,以便 TWAP 通过在不同区块时平均余额计算,这使得使用闪电贷攻击来操纵池变得不可能。

对 TWAP 进行攻击的困难在于资金必须在多个区块上可用。
这意味着攻击者必须很富有,同时也冒着其头寸被套利的风险。
TWAP 窗口越长,风险越大。

为了降低风险,作者提出了单区块攻击而不是多区块攻击。与其在 N 个区块上冒险 X 资金,攻击者可以在 1 个区块上利用 X*N 资金操纵池。
TWAP 计算结果将是相同的,但攻击者只需在 1 个区块上承担风险。

B. 单区块攻击

假设多区块攻击模型在 AMM 池有很大流动性储备的情况下具有抗操纵能力。乐观用户假设攻击者需要支付巨额费用 $C_m = L_T · C_1(ϵ)$ 来在 LT 个连续区块内将 $m_p$ 操纵至 $(1 + ϵ) · m_p$。我们的见解是,如果攻击者能够仅操纵一块到 $(1 + L_T · ϵ) · m_p$,则可以看到相同的效果。

在上面的提取中,$C_m$ 是操纵成本,$L_T$ 是 TWAP 的区块数量,$C_1$ 是 1 个区块的操纵成本,而 $m_p$ 是我们想要达到的市场价格。
这表明,用更多的资金操纵一块 TWAP 价格可以获得与用更少的资金操纵多个块相同的效果,而后者则暴露于更多的套利风险。

image

该图的 x 轴是块窗口,而 y 轴是(多区块成本/单区块成本)。最后,ϵ 代表价格变化的百分比(0.25 = +25%)。y 值 >1 表示多区块成本更高。结果表明,根据时间窗口,单区块攻击可能变得更便宜。

那么,UniV3 是如何解决这个问题的?

他们使用几何平均数而不是算术平均数来计算 TWAP 价格。

B. 解决方案 2:几何平均数

Uniswap V3 存储每个池资产价格累积对数(以某个基数 b 为底)而不是 Uniswap V2 中的和。如前所述,我们将 TWAP 的长度记为 LT。设某资产在时间 ti 的对数累积值为

$At = \sum{i=0}^{j=t_i} \log P_i$

这使得一个消费者协议(如借贷协议)可以将池的几何平均数表示为

$P_{t_1, t2} = B^{\frac{A{t2}-A{t_1}}{L_T}}$

实际上,个人价格的几何平均数也可以写为

$P_{t_1, t_2} = \sqrt[LT]{\prod{i=t_1}^{t_2} P_i}$

为了比较使用算术均值和几何均值的 TWAP,我们假设资产价格在 TWAP 期间($L_T$)为常数(假设 m_p),因此使用算术和几何均值的 TWAP 返回相同的价格。我们现在试图在两种情况下使用单区块攻击操纵 TWAP,以反映价格 $(1 + ϵ) · m_p$。在算术均值 TWAP 的情况下,一个区块内的资产价格必须操纵至 $(1 + L_T · ϵ) · m_p$。在几何均值 TWAP 的情况下,资产价格则必须操纵至 $(1 + ϵ) L_T · m_p$。

这导致一个完全不同的成本比较图,显示单区块攻击从未比多区块攻击便宜(后者本身就非常昂贵)。

image

如果你想深入了解这个话题,我可以建议你阅读 这篇来自 Euler 的文章,其中计算了用真实数字操纵 UniV3 风格 TWAP 的成本。

  • 原文链接: github.com/InfectedIsm/B...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
InfectedIsm
InfectedIsm
Web3 Security tryhard DM for inquiries ? infect3d.xyz