作者: 币安app官方 日期:2024-10-15 05:33
作者:Alex Kroeger
翻译:Block unicorn
今年 5 月,Vitalik 在 Uniswap 治理论坛上创建了一个帖子,名为“UNI 应该成为一个预言机代币”。他认为预言机需要提供链下数据,并且 UNI 处于有利地位,可以为高价值、容忍延迟的用例提供 Chainlink 的替代方案。
虽然这是一个有趣的想法,但正如我最近在该帖子中所反映的那样,我一直在思考 Uniswap 如何已经是一个预言机协议。它已经从以太坊上最大的 DEX 提供了价格信息。UNI 已经是一个预言机代币,UNI DAO 只是在这个事实方面做得不多,至少到目前为止。
自 v1 以来,Uniswap 一直是一个预言机协议,尽管当时是一个非常粗糙的协议。Uniswap v1 是一系列具有简单x * y = k定价机制的 ETH-ERC20 矿池。您可以在任何池中查询 ETH 和相应 ERC20 代币的值,并且,您有一个现货价格预言机。
然而,v1 作为预言机协议还有很多不足之处。首先,一切都以 ETH 定价。为了获得非 ETH 报价,比如以 USDC 表示的 BAT 价格,您需要将价格链接在一起(在这种情况下,BAT-ETH 和 ETH-USDC)。
其次,价格是一个简单的时间点(更具体地说,更悲惨的是,一个区块的点)现货价格。这很容易受到操纵,因为“不幸的是”流动性撤出和大量交易可能会大幅波动价格。我不建议依赖该价格来执行敏感任务,例如确定借入头寸是否在底部。
v2 改进了 Uniswap 作为预言机的实用性。首先,v2 允许任意 ERC20-ERC20 对。其次,在任何交易或流动性变化发生之前,每个矿池都会对起始区块的价格进行快照,这使得操纵更加困难。最后,它存储的价格值(价格乘以自上一个区块以来的秒数的运行累加器)允许用户计算时间加权平均价格 (TWAP),而不是简单的现货价格。
然而,从 v2 池中获取 TWAP 并不是开箱即用的——它需要集成商将运行累加器的过去值存储在单独的合约中以进行计算。
Uniswap v3 保留了 v2 提供的好处,但也通过提供存储一系列累加器值的能力来解决上述缺陷(默认仅存储 1 个值,但任何愿意支付 gas 成本的人都可以扩展跟踪值的数量最多 65,535 个观察值,或约 9 天的价格)。
Uniswap v3 已经在各种环境中用作链上预言机,许多项目从他们的合约中调用 Uniswap v3 的预言机功能,包括:
这些 oracle 调用是跨多种对进行的。我们可以在下图中看到,虽然 USDC-WETH 是最常被调用的货币对,但它仅占预言机调用的 17%。使用预言机功能的资产有很长的尾巴。其中许多与上述协议直接相关(例如 FRAX、KP3R)。然而,更多的是 Uniswap 可能是最重要的流动性来源之一的资产(例如 ENS,当然还有 ELON)。
oracle 功能已经被使用,尽管关于 Uniswap oracles 性能的材料相对缺乏(尽管我向您推荐了Michael Bentley撰写的关于攻击 v3 oracle 的成本的优秀线程)。
在德尔福与神谕一起工作的牧师会收到她的话语并将答案传播给请愿者
然而,改善和维护预言机体验的动力在哪里?Oracle 的使用目前不会使协议的交易者、LP 或维护者受益。
协议交易费用已经是v2和v3中 DAO 现金流的可能来源(尽管迄今为止尚未收取任何费用)。
值得考虑使用价格预言机的费用。虽然这需要对协议进行一些更改,但这可以作为每次调用的 ETH 固定费用或在一系列已批准的预言机调用者上注册项目合同的方式来实现。
作为这些费用的交换,Uniswap DAO 可以成为“预言机的守护者”。这在实践中意味着什么?DAO 可以:
通过“最后的流动性提供者”,我的意思是 DAO 可以创建一个自动化策略或指定一个 LP 经理为重要的预言机和流动性不足的池提供一定数量的被动流动性。这可以阻止攻击以及响应跨越多个区块的攻击,这些攻击涉及提取流动性或影响池的流动性平衡。
如果不承认今天存在的使用 Uniswap 预言机的一些限制,这个讨论就感觉不完整。
虽然不建议使用来自 AMM 的简单现货价格(而不是 TWAP),但 TWAP 会降低数据的新鲜度(根据定义,它更慢地适应不断变化的市场条件)。在选择衡量 TWAP 的时间长度时,您面临着两难选择:
以借贷协议为例。如果抵押品价格突然下跌,而 TWAP 直到下跌趋势开始 30 分钟后才反映头寸抵押不足,届时现货价格可能会更低,这可能导致协议对现在可能的水下位置造成损失。
话虽如此,Uniswap 预言机的吸引力在于它们相对自主的工作。即使没有 DAO 可以提供的额外保证,只要有市场参与者的激励,它们就会继续正常运行。
回到 Vitalik 的帖子,探索 DAO 如何使用当前的池 TWAP 模型作为 Oracle 解决方案中的一个成分,以添加更新鲜的链外价格数据源,这可能会很有趣。