深入探讨 Angle 的预言机解决方案,以及它是如何构建以减轻抢跑交易的。
编译:登链社区
在 Angle Protocol 的设计中投入了大量的研究。虽然从表面上看它的结构可能简单,但背后有许多复杂的理念需要理解。在这一系列文章中,我们将深入探讨协议的一些元素,并解释它们为什么会被这样设计。
第一篇文章讨论了 Angle 的预言机解决方案,以及它是如何构建以减轻抢跑交易的。
![](https://upload.techflowpost.com/upload/images/20250214/2025021417470951793225.png)
引言
Angle 允许用户铸造和销毁 agTokens(稳定币)以换取其他代币。交易者也可以在可用的抵押品 / 稳定币对上开设多头头寸。这些不是传统的永久合约,因为均衡不依赖于资金费率,而执行价格直接来自预言机。
考虑到这些用例,协议需要一种可靠的方式来定价可用资产,以便能够向用户报价公平的价格,并保护自身免受抢跑交易的影响。在这篇文章的 FAQ 中,Samcszun 解释了为何这并不只是简单地使用现货价格。
抢跑交易是市场中的一个长期存在的问题。这归结于某些参与者可以比其他人更早地获取信息,他们可以利用这些信息在交易的另一方承担风险的情况下获取无风险利润。历史上,链上防止这一现象一直非常困难。以太坊交易的高成本和低速度使得预言机很难快速频繁地更新价格。这在链下和链上的价格之间引入了延迟,从而使抢跑交易者能够利用这一点获利。
并非所有的稳定币协议都关心预言机延迟带来的抢跑交易风险。在 Maker 的 DAI 案例中,预言机延迟通常对协议有利。某人看到她的头寸将在下一个预言机更新中因价格下跌而被清算,她受到激励将资金放回保管库,从而提高协议的健康度和抵押比例。
合成资产 (Synthetix) 允许在合成资产和抵押品之间进行预言机价值交换,是一个完美的例子,说明稳定币协议面临抢跑交易的难题。他们的博客文章总结了该协议与抢跑交易的漫长历史,包括他们过去遭受的一些攻击。
与 Synthetix 类似,Angle 允许在预言机价值处于无价格滑移的情况下进行资产交换。因此,Angle 也面临同样的抢跑交易问题。Angle 核心团队为了防止抢跑交易付出了大量努力。在这方面实施了两个主要改进:特定的预言机设计和动态费用结构。在本文中,我们将解释 Angle 的预言机设计及其背后的原因。
抢跑交易一个预言机更新:一个例子
在深入了解 Angle 的解决方案之前,让我们先试图理解抢跑交易是如何对协议造成损害的。我们将考虑一个例子,其中 ETH 被接受作为支持 Angle 稳定币的抵押品。
没有交易费用
假设攻击者正在查看链下 ETH 价格,并看到 Chainlink 预言机即将以更高的价格(从 p0更新到 p1,其中 p0 < p1)更新链上数据。这个攻击者可以发送一笔交易以 p0的价格销毁 x稳定币,以 x/p0的 ETH 换取,然后在价格更新到 p1后将其再卖给协议,从而获得利润:
![](https://upload.techflowpost.com/upload/images/20250214/2025021417470971638186.png)
由于这个预言机更新的抢跑交易,这部分利润已从协议储备中拿走。如果我们设定 x = 100ETH 且 p1 = 1.01 * p0(价格上涨 1%),这将意味着攻击者从协议的储备中拿走了 1 ETH。
有交易费用
幸运的是,增加交易费用可以减轻这个问题,因为它们会侵蚀抢跑交易者的利润,减少机会。
例如,如果铸造和销毁的交易费用是恒定且相等的 f,则一个在 p0销毁 x稳定币并在 p1以 ETH 再出售给协议的攻击者,最终会出现以下利润:
![](https://upload.techflowpost.com/upload/images/20250214/2025021417471007663711.png)
与之前的情况相比,费用减少了利润:
![](https://upload.techflowpost.com/upload/images/20250214/2025021417471022951052.png)
当交易费用为 f=0.3%并遵循上述例子时,攻击者的利润现在仅为 0.39 ETH。
带交易费用和两个预言机解决方案
为了进一步减少这个机会,我们可以依赖一个辅助预言机来获取两个可能的价格源:pC(Chainlink 价格)和 pU(Uniswap 价格)。协议可以利用最有利的价格(铸造时较低的价格,即购买用户的代币,以及销毁时较高的价格,即卖出 ETH 给用户),从而使抢跑交易的机会变得更加不具吸引力。
![](https://upload.techflowpost.com/upload/images/20250214/2025021417471037141238.png)
我们稍后将看到,由于 Uniswap 时间加权平均价格(TWAP)的设计,pU往往滞后于 pC。
![](https://upload.techflowpost.com/upload/images/20250214/2025021417471051211200.png)
如果我们保持上述例子的数字,攻击者在此操作中最终将损失 0.6 ETH。
Angle 的解决方案
Angle 的设计专门为了消除这一抢跑交易风险。因此,协议将实施与上述例子非常相似的机制。在本节中,我们将更详细地探讨潜在的现有选项,关注我们将要实施的设计的具体性,并进行关于我们选择 TWAP 时间窗口的分析。
选项
可能适合 Angle 用例的主要预言机解决方案有:
-
Chainlink
-
Uniswap V3 TWAP
-
Maker Feeds
Chainlink是显而易见的首选:它是一种广泛使用的去中心化预言机解决方案,提供覆盖多种资产的多条数据源。它们的价格来自多个数据源,并经过去中心化的中继网络,确保这些数据是可靠、可访问且难以操纵的。然而,某些数据源通常只在「显著」的价格变化(如 ETH/USD 的 0.5%)后或经过一段时间后更新,这意味着 Chainlink 的价格总是滞后于实际市场价格。因此,Chainlink 的价格更新可能会因为查看链下价格或内存池而遭到抢跑交易。
Uniswap V3 时间加权平均价格(TWAP)是另一个显而易见的、广泛使用的预言机解决方案。可以从 Uniswap 的合约中查询 TWAP,以获取池中代币在特定时间段的时间加权平均价格,时间范围从几秒到 9 天。价格是根据在指定时间内这两个代币之间的价格平均计算得出的。借助这一点,操纵 TWAP 需要大量资金并且需要较长时间,这在大多数情况下效率不高。
尽管如此,由于 TWAP 是过去区块观察的平均价格,它们相比于实时离链价格甚至 Chainlink 价格源也往往滞后。如果单独使用,它们不足以保护协议免受抢先交易。
此外,由于 TWAP 仅报告链上代币对的价格,它们无法满足协议提供对未在链上(因此也不在 Uniswap 池中)表示的资产的访问目标,例如外汇稳定币。
使用 Maker Oracles本可以是 Angle 的另一个选择。但这意味着要信任 MakerDAO,并经过治理流程申请以访问价格数据。价格源也仅限于 Maker 使用的那些,这对我们来说不够,因为我们希望访问外汇汇率。
Angle 的设计:Chainlink + UniV3 TWAP
考虑到这一点,决定将 Angle Protocol 的 Chainlink 预言机与 10 分钟的 Uni V3 TWAP 结合起来。这使得在任何时候都能获得尽可能公平的价格,同时保护协议免受抢先交易攻击。
一般来说,Angle 的合约将比较两个渠道的价格,并使用对协议最有利的价格。通过这种设计,抢先交易协议变得更加复杂,因为在利用协议的汇率时,必须操纵或抢先交易两个预言机。
具体而言,我们的合约将获取 Chainlink 和 Uniswap 之间所有波动资产 / 稳定币对的最佳价格,并使用 Chainlink 的外汇预言机将价格转换为所需的法定货币。每个抵押品 / 稳定币对将有一个专用的预言机合约及其独立的价格源。
它是如何运作的?
例如,假设用户想要在 ETH/agEUR 对上进行交易。我们的合约需要获取 ETH/USD 和 USD/EUR 的价格。它将保留来自 Chainlink 的 ETH/USD 最佳价格和 ETH/USDC UniV3 池的 10 分钟 TWAP。然后,它将从 Chainlink 获取外汇 USD/EUR 的价格。
示例:Uniswap ETH/USDC TWAP: 1900 USD(该协议假设 USDC 通常保持其锚定,即 1 USDC 价值 1 USD);Chainlink ETH 价格:1850 USD;Chainlink USD 价格:1.16 EUR。如果用户想要在这种情况下铸造agEUR,协议将使用它能找到的较低 ETH/USD 价格,即 Chainlink 的每 ETH 1850 USD。相反,如果在同样的情况下,用户想要销毁agEUR 对 wETH,协议将使用较高的价格,即 Uni ETH/USDC TWAP 为 1900。在这两种情况下,协议将使用 Chainlink 的 USD/EUR 1.16 汇率将 ETH/USD 转换为 ETH/EUR。类似地,协议将为希望开设永久合约的用户使用最高价格,而为希望关闭合约的用户使用最低价格。
更一般地说:
-
需要价格的用户合约会调用相关的预言机合约。
-
根据对的类型,预言机合约可以从 UniV3 TWAP 和 Chainlink 读取报价,或仅从 Chainlink 读取(例如用于稳定币对稳定币的交换),并将其返回给主合约。
-
根据执行的操作(铸造、销毁、开设或关闭),相关合约保留协议的最佳报价并执行交易。
选择 Uni V3 TWAP 时间窗口
Angle 合约将使用 10 分钟的时间窗口进行 TWAP。这一选择经过仔细思考,因为不同的时间窗口可能导致截然不同的价格结构。
不同时间窗口之间的差异
在 Angle 的案例中,一方面,时间窗口应该 suffisamment 长,以便为协议与现货价格之间提供足够的滞后。这确实允许在价格波动的情况下在铸造和销毁价格之间获得更高的价差,当 Chainlink 的抢先交易风险加倍时。此外,时间窗口越长,操纵 TWAP 价格的难度越大,因为最近的观察对价格的影响越小。
另一方面,协议仍应向用户提供公平且最新的报价:使用过宽的时间窗口会使我们与当前市场价格之间产生过大的价格差距,使用过窄的时间窗口则无法给我们想要的价格差异。
Compare 10 分钟和 60 分钟的 TWAP 与 Chainlink 的价格源
为了让你了解我们为何最终选择 10 分钟时间窗口,下面显示了 10 分钟和 60 分钟的 ETH/USDC TWAP 与 Chainlink ETH/USD 价格和 Coinbase 收盘价格的比较。
你可以看到,在价格之间过渡时,协议在用户铸造 / 关闭和销毁 / 开设时使用的上限率和下限率,如何在 Chainlink 和 Uniswap 的 TWAP 之间的最有利价格之间移动。
![](https://upload.techflowpost.com/upload/images/20250214/2025021417471067033859.png)
![](https://upload.techflowpost.com/upload/images/20250214/2025021417471109488118.png)
虽然 60 分钟的 TWAP 板块往往给出价格远离市场,而 10 分钟的 TWAP 为 Chainlink 的价格源提供了有益的缓冲,保持价格与市场足够接近。
![](https://upload.techflowpost.com/upload/images/20250214/2025021417471111027291.png)
值得注意的是,从第一个图表可以看出,波动性越高,Chainlink 和 Uniswap 价格之间的价差越大。相反,当价格在一段时间内保持相对稳定时,Uniswap 和 Chainlink 的价格源互相接近。
将 TWAP 用作对抢先交易的额外保护,实际上等于在价格波动较大的时期动态收取更多的重要费用,因为这种情况下由于链上预言机延迟,抢先交易风险更大。这些较高有效费用的代价是降低了套利交易者直接从协议重新定价稳定币的能力。
在大多数情况下,Uniswap 和 Chainlink 价格将非常相似,使用户几乎感觉不到使用了两个预言机解决方案。在高波动性时期,当协议因为当前和未来 Chainlink 链上价格之间的重要价格差异而可能被抢先交易时,协议价格将会不同,协议将受到保护,免受抢先交易。
关注 Synthetix 费用回收 / 返还
Angle 的预言机研究深受 Synthetix 关于抢先交易的治理讨论及其相关博客文章的启发。在我们的研究中,我们还遇到的另一个选项是他们在 2020 年 2 月实施的费用回收 / 返还 ,该选项最终是临时性的。
他们所做的就是为交易增加一个等待期,在此期间用户无法操纵他们想要使用的 Synth。在此期间,预言机可以检查交易是否受到不一致的影响,即执行时和等待期结束时之间是否存在价格差异。如果存在,则价格差异必须由用户或协议支付给另一方(协议或用户),或者在下一次与 Synthetix 的交易中支付。
这种解决方案在减少抢先交易方面非常有效,但他们不得不延长等待时间并增加费用,这对所有交易者而言都带来了非常糟糕的用户体验。它还阻止了 Synth 与其他协议在许多用例上的组合。在 SIP-120 中,他们用为大型交易添加使用 TWAP 预言机的方案替代了这一解决方案。
结论
Angle 的特定预言机设计对协议有两个主要影响:
最后一个影响是 在 Fei 的治理论坛中讨论过的 议题。因为提供最佳交易执行并不是协议的核心目标,我们认为抢跑交易抗性更为重要,以确保协议更加安全。次级市场在高波动期间将提供更好的交易执行。
我们在 Angle 项目中的目标是设计一个完全支持的高效稳定币协议。做到这一点需要考虑协议的许多方面,以确保它无法被欺骗到不利地位,其中一个是抢跑交易抵抗。这一点尤为重要,因为依赖预言机的链上去中心化稳定币的稳定性取决于其预言机。
增加以 TWAP 形式的次级价格馈送可以帮助协议减轻高市场波动潜在的恶劣影响,以及在这些时刻出现的抢跑交易机会。
最后需要注意的是,这种预言机解决方案保持灵活性和可扩展性。一方面,Angle 治理可以随时投票并更新其预言机合约。另一方面,可以为任何由 Chainlink 支持的价格馈送创建预言机。这是最低限度的支持,以实现 Angle 的愿景,即以资本高效的方式将金融资产带入链上。