Prisma 可选预言机比较分析

中级4/7/2024, 1:23:52 PM
本文评估了Chainlink集成和替代Curve池EMA Oracle的历史表现,发现抵押资产缺乏可靠的Chainlink数据源,影响了与Prisma平台的集成。研究提出了改进Oracle的初步规格,旨在提高价格准确性和可靠性。此外,研究探讨了Oracle在Prisma清算和赎回中的重要性。建议谨慎使用Curve的价格预言机功能。最后,提出了一种结合Curve和Chainlink Oracle的混合解决方案,以提高定价机制的弹性和可靠性。该报告仅适用于Prisma协议。

介绍

这项研究源于获得可靠的链上价格信息的挑战,这些价格信息既最大限度地安全,又反映了目标资产的当前现货价格。我们特别关注 Prisma Finance 的抵押资产(wstETH、rETH、cbETH 和 sfrxETH)以及基于以太坊的流动质押衍生品(LSD)。其中一些资产缺乏 Chainlink 数据源(通常被认为是可靠价格数据的黄金标准),从而影响了它们与 Prisma 平台的集成。

最新的 Curve Finance 稳定池实施包括一个内部池 Oracle,它计算指数移动平均线 (EMA) 以得出抗操纵的价格数据。尽管集成商已开始探索在其他 DeFi 应用中使用 Oracle,但 Oracle 主要用于确保 Curve 自己的 crvUSD 市场中的抵押品安全。

本报告的主要目标是确定 Curve Finance 的 Oracle 是否可以成为 ETH LSD 代币 Chainlink 的可靠替代品。本研究涉及对 Curve 价格预言机有效性的统计分析,将其波动性、准确性和整体性能与 Uniswap 参考现货价格(假设为链上准确价格)进行比较。

该分析分为两项相关研究:

  1. stETH Oracles 残差分析:Chainlink 与曲线比较研究,使用历史数据来确定 Oracle 偏差相对于参考现货价格的平均值和标准差。
  2. stETH MEV 赎回分析:Chainlink 与链上 Oracle 的比较研究,使用历史数据检查 Prisma 上的赎回事件,并使用替代 Oracle 来估计机器人盈利能力和预期行为。

经过分析,我们提供了 Oracle 的初步规格,根据分析结果,预计将改善 Oracle 价格偏差,同时注意保持 Oracle 的可靠性。所提出的解决方案可以作为优化 Oracle 的其他研究的初始蓝图。

第 1 部分:相关背景

1.1 Prisma 协议中的 Oracle 函数

预言机的有效性是在 Prisma 使用预言机的特定环境中评估的:清算和赎回。 (另请注意,相同的预言机还用于向协议费用接收者和“代币化稳定池”出售获得的代币,一旦启动,其重要性将越来越大。)

Oracle 的表现对 Prisma 用户具有重要影响,因为套利者可能有机会从 Oracle 价格与现货价格之间的偏差中获利。确保在处理清算和赎回时使用最准确的价格反馈,而不牺牲定价来源的安全性,符合 Prisma 协议及其金库存款人的最佳利益。

Prisma 中的两个 Oracle 函数概述如下:

1.1.1 清算

为了保护 Prisma 免于产生坏账,即债务头寸超过其抵押品的价值,LiquidationManager合约在所有活跃的 TroveManager(Prisma 金库)上执行清算逻辑。清算可以通过三种方式之一触发,具体取决于目标账户的抵押比率和系统范围的抵押比率。

  1. 个人抵押率 (ICR) <= 100%: 账户(资金库)抵押不足。全部债务和抵押品在剩余的活跃宝库之间重新分配,有效地社会化损失。
  2. 100% < ICR < 最低抵押率 (MCR):该宝库低于清算阈值,但可以安全地清算。稳定池用作处理清算的储备(即激励清算池)。抵押品分配给稳定池储户。如果稳定池的余额不足以完全偿还该宝库,则剩余的债务和抵押品将在剩余的活跃宝库之间重新分配。
  3. MCR <= ICR < 全局总抵押品比率 (GTCR) && GTCR < 150%:系统处于恢复模式,这意味着当 CR 低于 GTCR 而不是 MCR 时,宝库就可以清算。首先使用稳定池存款来清算该宝藏。相当于债务价值 MCR 的抵押品在稳定池储户之间分配。剩余的抵押品可由宝藏所有者索取。

当 ETH 或 ETH LSD 经历大幅价格波动(尤其是下跌)时,Prisma 清算的可能性在市场波动较大的情况下会增加。虽然 Oracle 故障或操纵可能随时影响协议,但在最重要的时候,Oracle 故障的风险可能会增加。抵押资产可能会因 Gas 费用飙升而无法及时更新价格,或者 Oracle 的定价方法无法充分跟踪波动性加剧而被错误定价。坏账有可能会增加,必须在活跃的宝库中分配,或者借款人会被不公平地清算(在预言机错误报告的价格低于公平市场价格的情况下)。

1.1.2 赎回

套利者始终可以赎回,他们可以选择将 1 mkUSD 赎回价值 1 美元的抵押品(+ 动态赎回费用),从系统中抵押品比率最低的宝库开始。当 mkUSD 价格跌破 1 美元时,这有助于加强其锚定汇率。赎回过程减少了目标宝藏的抵押品风险并增加了其抵押品比率。执行赎回的一方支付称为赎回费的费用。赎回费用的范围为每个 TroveManager,并且是赎回费用下限 + 的总和baseRate。存储在 TroveManager 中的变量与已赎回的 mkUSD 总供应量的比例成比例增加,并随着时间的推移线性减少。baseRate这种动态费用调节了可以盈利的赎回率。

虽然从历史上看,Prisma 上的清算很少发生,但赎回却很常见,对于 Oracle 来说值得特别考虑。 MEV 机器人正在积极寻找此类机会,通过闪电贷快速获利。

除了强制赎回自己的宝藏带来的不便之外,由于预言机与现货价格的偏差,用户可能会经历一些价值提取。错误定价可能会导致用户损失比所需更多的资产,特别是当预言机报告的价格低于公平市场价值时。另一方面,预言机报告的价格高于公平市场价格可能会阻止赎回的发生,从而否定了赎回机制强制执行 mkUSD 挂钩底价的目的。

1.2 预言机选项

下面简要介绍了 Prisma 上 Oracle 喂价服务的主要候选者。

1.2.1 Chainlink(链下)

Chainlink 是一个去中心化的 Oracle 网络,它聚合了广泛的市场数据源,并将这些数据连接到智能合约。其结构依赖于独立的节点运营商从各种交易所和市场数据聚合器 API 获取和传递数据,从而最大限度地减少单点故障并增强安全性。通过在传输之前验证数据准确性的加密方法和共识机制来确保数据完整性。其方法涉及成交量加权资产定价(VWAP),以汇总最能代表资产现货价格的公平市场价值。

节点网络定期(心跳)或按价格偏差阈值将价格推送到链上。由于主网上高昂的 Gas 费用,这一限制可能会使价格更新变得昂贵,并可能导致延迟增加,从而降低 Oracle 性能。维护此类 Oracle 的成本可能很高,尤其是在波动性较大的时期,及时更新 Oracle 至关重要。

1.2.2 曲线池EMA Oracle(链上)

最近的 Curve 池实现(StableSwap 和 CryptoSwap 池)都包含由 getter 函数公开的 EMA 价格计算price_oracle()。这些矿池不依赖外部预言机,而是根据自己的交易活动在内部计算相对于矿池索引 0 中的代币的资产价格。 EMA通过平滑定价调整来增加操纵成本,在操纵阻力和价格偏离现货之间取得平衡。每个池都有一个ma_exp_time可通过 Curve DAO 投票进行配置的池。

正如Curve Oracle 文档中披露的那样,EMA Oracle 一直在积极开发中:

如果您希望使用 Curve 的“价格预言机”功能或任何价格预言机在您正在构建的去中心化应用程序中提供链上定价数据,我们建议您格外谨慎。

来源:Curve 资源

不同的池实现修改了 EMA Oracle 代码的版本,因此集成商必须了解目标池的 Oracle 实现。

2023 年 11 月,在 stableswap-ng 池的部署实施中发现了一个影响池 Oracle 的错误。该错误是在池实施部署后不久由 yAudit 在二次审计中发现的。这促使有人提议升级实施并弃用少数受影响的池。没有资金面临风险,但该事件突显了 Curve 矿池预言机的积极开发,尽管经过广泛审计,但矿池之间可能存在不一致,并且可能继续存在使预言机容易受到操纵或不准确的错误。

1.3 赎回的历史 MEV

本报告的第 3 部分是对 wstETH TroveManager 赎回的分析。由于赎回对 Prisma 用户具有重要影响,本节介绍了有关历史赎回的观察结果,这些观察结果将在与替代 Curve EMA Oracle 的比较分析中进行评估。

1.3.1 BOT行为

在wstETH TroveManager上查询赎回事件显示总共有 200 多笔赎回交易,其中 190 笔被识别为 BOT 交易(用于识别交易是否由 BOT 执行的方法将在同一部分稍后解释)。以下是显示这些交易随时间变化的频率的可视化。

来源:Dune query_3402461

经常兑换 mkUSD 的 BOT 只有 3 个:

来源:Dune query_3402461

每个 BOT 都遵循类似的获取 mkUSD 和赎回的一般流程。以下是其中一项 BOT 交易,揭示了一些有用的见解:

来源:Phalcon Tx Explorer

BOT tx 模式可细分如下:

  1. 从 Uniswap V3 获得闪贷:USDC 3
  2. 使用Curve.fi Factory USD Metapool将 USDC 转换为 mkUSD :Prisma mkUSD 。
  3. 在wstETH TroveManager上将 mkUSD 兑换为 wstETH 。
  4. 在wstETH上解开 wstETH 以获得 stETH 。
  5. 在Curve stETH/ETH 池上将 stETH 兑换为 ETH
  6. 包装以太币,偿还贷款,分配利润和佣金。

MEV 盈利能力取决于步骤2、3和5中的价格差异。

2:随着 mkUSD 价格下降,赎回盈利能力增加。

3:随着动态赎回费用作为最近赎回数量和赎回后时间的函数而下降,赎回盈利能力增加

5:随着抵押资产(例如 stETH)交换滑点的增加,赎回盈利能力下降。 stETH 等 LSD 可以直接兑换为基础 ETH,但这个过程需要等待期,因此二级市场的流动性至关重要。

Prisma 采用了一种机制,通过动态费用限制从 mkUSD 到 wstETH 赎回的盈利机会。第3步涉及动态费用,以阻止频繁和过度的赎回。尽管有这种机制,仍然可能会因 Oracle 错误定价而进行赎回,以提取 MEV。用于 mkUSD 赎回的 Oracle 报价错误可能会为宝库所有者提供次优的抵押品汇率,从而导致负面的用户体验。

1.3.2 wstETH 预言机变更的有效性

一项更改 Prisma Oracle feed 定价 stETH 的提案已获得通过。最初,Prisma 使用 Chainlink stETH/USD 预言机,wstETH TroveManager 的偏差阈值为 1%。结果发现,改用 Chainlink stETH/ETH 和 ETH/USD 预言机组合可以得到改善,每个预言机的偏差阈值为 0.5%。

请参阅下面新 Oracle 与旧 Oracle 15 块分辨率的偏差:

资料来源:@wavey 绘制的图表

曾观察到,当 mkUSD 交易价格低于其锚定汇率时,由于 Oracle 偏差超过 1%,导致出现过度赎回。在这些情况下,我们发现动态费用不足以阻止由于定价偏差而导致的过度赎回。请参阅下面针对兑换事件的兑换费用调整。

资料来源:@wavey 绘制的图表

这些兑换可能会给 Prisma 用户带来间接费用,当他们的宝藏被兑换时,他们可能会收到不利的利率。 Wavey 的分析表明,与上述数据中验证的组合预言机相比,stETH/USD 预言机更容易出现偏差。出现了超过 1.2% 的短暂偏差,为 MEV 机器人的利用创造了机会。

更改 Oracle 的提案 ( PIP-004 ) 已于 2023 年 11 月 17 日下午 7:15:35 +UTC 与此交易一起执行。根据下面的 mkUSD 价格图表和提案执行日期,可以观察到提案执行后,USDC 中的 mkUSD 实现价格较低。由于预言机改进而导致的赎回盈利能力下降可能导致挂钩强度下降。

来源:Dune query_5685458

可能还应该考虑其他影响因素,包括协议利率模型的限制、mkUSD 的用例以及激励措施错位。另一项限制赎回的重要提案是1 月 31 日执行的PIP-019。该提案将所有 TroveManager 的基本赎回费用提高到 1%-1.5%,这降低了 mkUSD 的锚定弹性,但代价是降低了 Prisma trove 所有者的赎回风险。

第 2 部分:Oracles 残差分析

2.1 目标

该分析旨在确定已实施的 Prisma 预言机的性能,并使用历史数据评估替代链上 Curve EMA 预言机的假设性能。研究结果将为链下预言机与链上预言机的行为提供初步见解,以便在后续研究中进行更细致的评估。

此分析的目的是确定当前的 Oracle 是否提供了性能最佳的解决方案,或者是否可以通过利用 Curve EMA 池 Oracle 实施链上或混合解决方案来进行改进。

2.2 方法论

该分析将特别关注 stETH,因为它是最常用的 LSD,拥有成熟的 Chainlink 价格源和深度流动性的 Curve 池。对 Prisma 上列出的其他抵押品进行了分析,报告后的附录 B 中提供了可供参考的结果。

比较分析涉及评估受试数据与参考数据集的吻合程度。在这种情况下,考虑两个数据集:感兴趣的数据(受试数据)和参考数据集。虽然我们预计受测数据应密切跟踪参考数据,但可能会出现偏差。

为了量化对齐,我们检查残差,这本质上是受试数据和参考数据之间的差异。残差分析旨在揭示这些差异的模式或趋势。

在分析残差(与参考值的偏差)时,会根据残差的标准差进行观察。标准差 (SD) 是一种统计度量,用于量化一组值中的变异或离散程度。它提供了数据集中的值与均值(平均值)的分布程度的指示。低标准差意味着数据点倾向于接近平均值,而高标准差则表明数据点分布在更广泛的范围内。

在我们的例子中,接近 0 的均值是可取的,因为它表明所提供的价格并未高估或低估参考价格。然而,接近或等于 0 且标准差相对较高的均值表明波动可能很大,这是不希望的,因为这相当于严重的错误定价。均值为零且标准差最小的预言机喂价是理想的结果,表明喂价高度准确地跟踪现货价格。

为了监控和评估链上活动的预言机价格的准确性,我们采用来自流动性最强的交易目的地(不包括 Curve)的报价作为残差分析的参考。具体来说,从 Uniswap 的 LSD/ETH 货币对获得的报价是这种情况下的主要参考点。

我们的分析包括两种导出 stETH Chainlink 价格的策略。这样做是因为发现原始 Chainlink stETH/USD feed 的偏差比使用 stETH/ETH + ETH/USD 的偏差更高。根据治理提案对预言机进行了更新。此后,涉及 ETH 中改进的 stETH/ETH Chainlink 价格的分析被称为stETHv1,而 stETH/USD + ETH/USD 组合饲料(复制原始 stETH 预言机性能,标准化为 ETH)被称为stETHv2。

2.3 数据收集

为了分析的目的,从所有各自的资产中获取了 2023 年最后一个季度的数据(从区块 18331000 到区块 18931000,以 250 个区块作为数据集的分辨率)。这将为所有资产创建一个包含 2401 个数据点的数据集。

主要考虑的资产是 stETH,因为它是 Prisma 目前接受的抵押品类型,既有 Chainlink feed 又有 Curve StableSwap-ng 池可供参考(注:请参阅附录 B 对 rETH 和 cbETH 的分析,其中使用了较旧的 CryptoSwap 池实现)。所有数据都是通过查询指定区块范围的价格来获取的。

Oracle 价格通过以下来源进行分析:

曲线资金池

Chainlink 价格反馈

作为现货价格参考代理的 Uniswap 矿池地址如下:

Uniswap 现货价格

为了将 LSD 标准化为其基础 ETH,使用内部 LSD/ETH 汇率:

内部 LSD/ETH 汇率

2.4 stETH预言机残差分析

2.4.1 Chainlink 与 Curve

在本节中,我们将 Chainlink stETH 价格源与 Curve 的历史准确性进行比较。

Chainlink stETHv1 Feed 与 Curve

Chainlink:stETH/ETH feed

Curve:stETH/ETH 矿池

以下是来自 Chainlink 和 Curve 的 stETH 价格的直接比较。由于 Chainlink stETH/ETH 的心跳周期为 24 小时,因此每隔几个区块价格就会波动一次。与 Curve 相比,在 Chainlink feed 中可以轻松观察到波动(在 Chainlink stETH/USD feed 中可视化效果更好),因为 Curve 使用 10 分钟的 EMA 时间 ( ma_exp_time ) 来得出其价格。

如果我们从 Chainlink 的价格中减去 Curve 的价格,我们就会得到残差,如下所示:

偏差值的平均值为~-0.000305。

这里可以得出的一个重要观察结果是,与 Chainlink 相比,Curve Oracle 略微高估了价格数据。

Chainlink stETHv2 与 Curve

Chainlink:stETH/USD feed / ETH/USD feed

Curve:stETH/ETH 池

以下是来自标准化为 ETH(stETH/USD 和 ETH/USD)的替代 Chainlink feed 的价格与 stETH Curve 的价格比较。由于 Chainlink stETH/USD 的偏差阈值为 1%(相比之下,stETH/ETH feed 中的偏差阈值为 0.5%),因此价格在锚定价格周围表现出更大的偏差。

正如之前所观察到的,与 Curve 相比,Chainlink 的 stETH/USD 价格波动更加明显。

偏差值的平均值为~-0.000171。

根据规模,与 stETH/ETH 相比,该 feed 的残差更大,即波动幅度更大。

2.4.2 Uniswap 与 Chainlink

在本节中,我们将 Chainlink stETH 价格源的历史准确性与 Uniswap 参考现货价格进行比较。

假设 UniswapV3 池价格数据是现货价格的可靠代理,我们可以比较之前获得的基准数据,以检查 Chainlink Oracle feed 与参考值的接近程度。

Uniswap Spot 与 Chainlink stETHv1

Chainlink:stETH/ETH feed

Uniswap:wstETH/ETH 矿池/ wstETH/stETH 内部汇率

以下是 Uniswap 现货价格与 Chainlink stETH/ETH 之间的实际偏差:

残差平均值 = 0.000415

价格差异的标准差 = 0.000601

Uniswap Spot 与 Chainlink stETHv2

Chainlink:stETH/USD feed / ETH/USD feed

Uniswap:wstETH/ETH 池/ wstETH/stETH 内部汇率

以下是 Uniswap stETH 和 Chainlink stETH 之间的实际偏差(stETH/USD):

价差平均值 = 0.000281

价差标准差 = 0.002747

这里将 Chainlink stETHv1(即 stETH/ETH)和 stETH v2(即 stETH/USD)与 Uniswap 数据进行比较,结果表明 stETHv2 偏差远大于 stETHv1。

当预言机从 stETH/USD 切换到 stETH/ETH + ETH/USD 以减少报价偏差时, Prisma 治理提案 ( PIP-004 )中也出现了同样的观察结果。

2.4.3 Uniswap 与 Curve

在本节中,我们将 stETH Curve Oracle 的历史准确性与 Uniswap 参考现货价格进行比较。假设 UniswapV3 池价格数据是现货价格的可靠代理,我们可以比较之前获得的基准数据,以检查 Curve Oracle feed 与参考值的接近程度。

Uniswap Spot vs Curve

曲线:stETH/ETH 矿池

Uniswap:wstETH/ETH 矿池/ wstETH/stETH 内部汇率

基于与上面类似的残差分析,我们得到以下指标与之前设置的基准进行比较:

价格差异的平均值 = 0.000110。

价格差异的标准差 = 0.000141。

据观察,Curve 报告的平均价格略低于 Uniswap 现货,标准差显着低于 Chainlink 的任一来源。

2.5 结果

在比较这些指标时,我们发现,price_oracle当参考 Uniswap 数据作为现货价格的代理时,Chainlink 数据的偏差明显大于曲线。

由于上述观察是根据各个价格来源的偏差得出的,因此 Curve Oracle feed 可能显示正偏差,而 Chainlink feed 显示负偏差,反之亦然。这种情况完全被否定,因为 Chainlink feeds 和 Curve Oracle 的偏差范围比 Uniswap & Chainlink 和 Uniswap & Curve 的偏差范围要小。

下表显示了对收集的数据进行的残差分析。残差平均值乘以 100 得出目标资产与参考的平均偏差百分比(以美元计,与以美元计价的 ETH 价格相比)。

下表直接比较了 Chainlink 和 Curve 与每种资产的 Uniswap 参考的平均值和标准差的相对表现。在所有情况下,Curve 均表现出较低的平均值和标准差值。精度倍数显示每个观测值的相对精度的大小。

这里的主要要点如下:

  1. 根据残差的标准差,与参考现货价格相比,Curve 显示出比 Chainlink 更低的波动,并且在观察到的资产之间保持一致,尽管 Chainlink 和 Curve 之间 cbETH 的标准差相似。
  2. 根据上表,通过分析平均值,可以发现与参考 Uniswap 现货价格相比,Chainlink 低估了资产价格。曲线与参考价格更加一致,但与参考 Uniswap 现货价格相比,价格也倾向于略微低估。
  3. 对这些发现的一个警告是,尽管观察到这些 Curve Oracle 总体上优于 Chainlink,但 rETH 和 cbETH 却经历了急剧而短暂的偏差,这一点可以在附录 B:rETH/cbETH 残差分析中引用。这是由于矿池的相对流动性不足、活动性低以及较旧的矿池实施不适合整合。然而,需要进行额外的研究来确定适当可靠的 Curve 池 Oracle 所需的基准指标。

第 3 部分:stETH MEV 赎回分析

3.1 目标

该分析旨在将wstETH TroveManager中赎回事件的实现价格与替代链上预言机使用历史数据报价的假设价格进行比较。研究结果将为链下预言机与链上预言机的行为提供初步见解,以便在后续研究中进行更细致的评估。

此分析的目的是确定当前的 Oracle 是否在特定的赎回环境中提供了性能最佳的解决方案,或者是否可以通过实施链上或混合解决方案、利用 Curve EMA 池 Oracle 来进行改进。

3.2 方法论

该分析将特别关注 stETH,因为它是最常用的 LSD,拥有成熟的 Chainlink 价格源和深度流动性的 Curve 池。本研究汇总了所有赎回事件,将已实现的 stETH 预言机价格与几种替代预言机价格进行比较,以美元定价,并采用 Curve stETH/ETH 预言机价格。

对于此分析,实现的 stETH 价格是通过将赎回的 mkUSD 数量除以 Trove 管理器以 wstETH 形式损失的 stETH 数量来计算的。为了确定 stETH 数量,我们需要赎回中收到的 wstETH + 作为费用花费的 wstETH,并将其转换为 stETH。如果任何替代源为赎回者提供的利润持续较低,我们可以说它们的 MEV 表现优于实际价格。

wstETH TroveManager用于获取 mkUSD 兑换时的所有交易哈希值。由赎回 mkUSD 的地址接收并销毁 mkUSD 的交易被视为 BOT 交易。兑换事件的详细查询可以在这里找到:Dune query_3352919。该查询对于从 BOT 交易中获取所有数据起着重要作用。

3.3 数据收集

Dune查询用于识别获取所有 tx 哈希值的 BOT 交易、mkUSD 赎回的已实现 wstETH 汇率以及赎回事件的区块号。从查询中获得的区块号用作查询以下数据的输入,这些数据用于将当前实现与 Curve stETH 喂价变化进行比较:

根据上述数据,我们可以构建 3 个使用 Curve Oracle stETH/ETH 价格的价格源,并将其与 ETH/USD 合并以得出 stETH/USD。经过此操作后,我们获得了以下数据,可用于可视化:

上述数据给出了以美元计的 stETH 价格,可以根据所有 BOT 交易的已实现 stETH 价格进行分析。已实现的 stETH(以美元计)只是用于计算赎回时每 mkUSD 提供的 stETH 数量的 stETH 价格。

3.4 stETH MEV 赎回分析

以下是 BOT 交易区块的 4 个 stETH 价格源(上面讨论的 1 个参考和 3 个替代方案)。已实现的喂价是来自已实施的价格预言机(即 Chainlink)的价格。这是与使用 Curve stETH/ETH 作为核心的 3 个 feed 进行比较的。在这里,较高的报价将导致兑换 mkUSD 的 stETH 价值减少,反之亦然。

根据上述信息,我们可以对从 mkUSD 赎回中收到的 stETH 相对金额进行建模,并根据现有预言机收到的实际金额进行标准化。下图显示了在收取费用之前从 mkUSD 获得的 stETH,并对数据进行处理以消除异常值以改进可视化:

3.5 结果

分析揭示了一个明显的趋势:当将 Curve stETH/ETH 与 Uniswap ETH/USDC 和 Chainlink ETH/USD 结合使用时,可用于 mkUSD 赎回的 stETH 数量减少。因此,每 mkUSD 赎回的 stETH 单位减少会导致 BOT 利润下降。提供的可视化显示了各种假设喂价下的 BOT 利润与实际喂价的对比,不包括费用:

很明显,与已实现的喂价相比,Curve stETH/ETH、Uniswap ETH/USDC 和 Chainlink ETH/USD 的组合降低了赎回盈利能力。

第 4 部分:拟议的 Oracle 改进

4.1 混合Oracle解决方案

认识到完全依赖 Curve 预言机的固有风险,特别是在流动性低或流动性波动期间,所提出的解决方案战略性地集成了 Chainlink 预言机,作为出现偏差时的保障措施(即后备方案)。鉴于 Chainlink 提供错误数据的可能性可以忽略不计,它可以作为可靠的后备选项。

该解决方案充当过滤器,同时考虑 Curve 和 Chainlink 价格。条件在函数内建立,充当开关。为了设计这个条件,acceptable_range引入了概念。这个范围代表了 Chainlink 的预言机和 Curve 预言机价格之间可接受的差异。当观察到的差异超过此范围时,就表明 Curve Oracle 数据中存在潜在偏差或操纵。在这种情况下,该功能通过支持更安全的 Chainlink 价格来防范潜在风险。相反,当差值在 范围内时acceptable_range,该函数依赖于 Curve Oracle 的准确度和精确度。

值得注意的是,acceptable_range可以配置为静态或动态,具体取决于基础资产(例如 ETH 和相关 LSD)的波动性。动态性质允许适应波动的市场条件,确保价格确定的弹性和响应机制。这种双管齐下的策略最大限度地减少了对单一数据源的依赖,从而增强了定价机制的整体弹性和可靠性。

4.2 验证解决方案

4.2.1 静态acceptable_range

该解决方案引入了静态方法acceptable_range来解决仅依赖 Curve Oracle 时的潜在漏洞。虽然 Curve Oracle 产生的价格比 Chainlink 更准确,但它可能容易受到操纵。 Chainlink 功能强大且经过考验,被认为是业内更安全的选择。当 Curve Oracle 和 Chainlink 之间的差异超过固定值时,它acceptable_range用作切换到 Chainlink feed 的阈值。

从策略上来说,其acceptable_range接受的报价低于Chainlink 报价的± 1%。这与 Curve 和 Chainlink 之间的平均差相差近 3 个标准差(考虑到与之前的 stETH/USD feed 相比,改进的 stETH/ETH 和 ETH/USD feed)。

4.2.2 函数输出derived_price

derived_price是旨在确定给定资产的最终报价的函数或机制的输出,特别是在涉及 Curve Oracle 和 Chainlink Oracle 的场景中。

在所描述的解决方案中,该函数评估来自 Curve Oracle 和 Chainlink Oracle 的报价。根据观察到的这两个价格之间的差异以及它是否落在或超出预定义的accepted_range,该函数将输出不同的派生价格。

以下是derived_price与之前显示的其他价格源的比较:

BOT 利润可以通过该衍生价格可视化(由于没有偏差,该价格将完全等于 Curve stETH/ETH 和 CL stETH/ETH),如下所示:

分析总利润可以揭示更大的情况。确定了六个异常值,并在过滤异常值之前和过滤之后计算每种情况的总利润。

在减少 BOT 的可用利润方面,Curve stETH/ETH 和 Uniswap ETH/USDC 表现最好。它derived_price与当前 stETH 的 Oracle 实现具有相同的利润潜力,但限制了利润,假设在分析的 189 笔交易中为用户节省了约 35.4 ETH。

4.3 结论

由于链上活动严重依赖流动性最强的去中心化交易所的报价,而 MEV 机器人将 mkUSD 兑换成 LSD 也遵循相同的报价,因此报价(用于报价赎回的 Oracle 价格)的准确性至关重要重要性。

根据历史数据,Curve 池 Oracle 价格比 Chainlink 的价格更接近参考(UniswapV3 价格数据)。数据表明,实施 Curve Oracle 将减少机器人的 MEV,并为用户兑换其宝藏提供更好的汇率。

将 Curve Oracle 用作独立的 Oracle 可能很诱人,但 Curve 价格反馈的有效性取决于特定资产的流动性深度以及与池的交互。 Curve Oracle 和 Chainlink Oracle 的混合可用于匹配链上价格,同时保持使用 Chainlink Oracle 继承的可靠性和广泛的市场覆盖范围。

我们提出的混合 Oracle 解决方案评估标准差 (SD) 以生成derived_price.如果SD接近0,则表明遵循derived_price参考值,可以考虑。这确保了当 Curve Oracle 偏离预定义阈值时,解决方案动态切换到更安全的 Chainlink 源。由于该解决方案几乎总是输出 stETH 的 Curve 报价,因此假设 MEV 活动与使用 Curve stETH/ETH 相同,没有回退。

附录 A:数据处理脚本

用于生成本报告中的分析的脚本如下所示:

  1. OracleAnalysisV4:用于数据收集的 Colab 笔记本
  2. OracleAnalysisPlayground:用于使用 pickle 数据文件绘制图表的 Colab 笔记本
  3. PrismaOracleModelingV1:用于绘制 MEV 兑换活动图表的 Colab 笔记本
  4. DerivedPriceModeling:Colab 笔记本绘制替代 Oracle 解决方案测试和建模

附录 B:rETH/cbETH 残差分析

其他图表 rETH

Chainlink 与 Curve


Uniswap 与 Curve

Uniswap 与 Chainlink

检查峰值 rETH

在观察期间,rETH 曲线预言机价格出现了几次峰值。有几次,这导致预言机价格和现货参考之间的价格偏差激增。下面是更详细的图表,显示了几次价格飙升期间的资金池比例/代币流动性以及预言机价格的行为。

start_block = 18824000

end_block = 18827000

interval_blocks = 100

矿池比例:

预言机价格:

start_block = 18850000

end_block = 18858000

interval_blocks = 100

矿池比例:

预言机价格:


start_block = 18880000

end_block = 18885000

interval_blocks = 100

矿池比例:

预言机价格:

其他图表 cbETH

Chainlink 与 Curve

Uniswap 与 Curve

Uniswap 与 Chainlink

检查峰值 cbETH

在观察期间,cbETH 曲线预言机价格出现了几次峰值。有几次,这导致预言机价格和现货参考之间的价格偏差激增。下面是更详细的图表,显示了几次价格飙升期间的资金池比例/代币流动性以及预言机价格的行为。

start_block = 18693500

end_block = 18696000

interval_blocks = 10

矿池比例:

预言机价格:

start_block = 18814000

end_block = 18816500

interval_blocks = 10

矿池比例:


预言机价格:


start_block = 18800000

end_block = 18805000

interval_blocks = 10

矿池比例:

预言机价格:

声明:

  1. 本文转载自[marsbit )],原文标题“Prisma 可选预言机比较分析”,著作权归属原作者[PrismaRisk],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。

  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。

  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。

Prisma 可选预言机比较分析

中级4/7/2024, 1:23:52 PM
本文评估了Chainlink集成和替代Curve池EMA Oracle的历史表现,发现抵押资产缺乏可靠的Chainlink数据源,影响了与Prisma平台的集成。研究提出了改进Oracle的初步规格,旨在提高价格准确性和可靠性。此外,研究探讨了Oracle在Prisma清算和赎回中的重要性。建议谨慎使用Curve的价格预言机功能。最后,提出了一种结合Curve和Chainlink Oracle的混合解决方案,以提高定价机制的弹性和可靠性。该报告仅适用于Prisma协议。

介绍

这项研究源于获得可靠的链上价格信息的挑战,这些价格信息既最大限度地安全,又反映了目标资产的当前现货价格。我们特别关注 Prisma Finance 的抵押资产(wstETH、rETH、cbETH 和 sfrxETH)以及基于以太坊的流动质押衍生品(LSD)。其中一些资产缺乏 Chainlink 数据源(通常被认为是可靠价格数据的黄金标准),从而影响了它们与 Prisma 平台的集成。

最新的 Curve Finance 稳定池实施包括一个内部池 Oracle,它计算指数移动平均线 (EMA) 以得出抗操纵的价格数据。尽管集成商已开始探索在其他 DeFi 应用中使用 Oracle,但 Oracle 主要用于确保 Curve 自己的 crvUSD 市场中的抵押品安全。

本报告的主要目标是确定 Curve Finance 的 Oracle 是否可以成为 ETH LSD 代币 Chainlink 的可靠替代品。本研究涉及对 Curve 价格预言机有效性的统计分析,将其波动性、准确性和整体性能与 Uniswap 参考现货价格(假设为链上准确价格)进行比较。

该分析分为两项相关研究:

  1. stETH Oracles 残差分析:Chainlink 与曲线比较研究,使用历史数据来确定 Oracle 偏差相对于参考现货价格的平均值和标准差。
  2. stETH MEV 赎回分析:Chainlink 与链上 Oracle 的比较研究,使用历史数据检查 Prisma 上的赎回事件,并使用替代 Oracle 来估计机器人盈利能力和预期行为。

经过分析,我们提供了 Oracle 的初步规格,根据分析结果,预计将改善 Oracle 价格偏差,同时注意保持 Oracle 的可靠性。所提出的解决方案可以作为优化 Oracle 的其他研究的初始蓝图。

第 1 部分:相关背景

1.1 Prisma 协议中的 Oracle 函数

预言机的有效性是在 Prisma 使用预言机的特定环境中评估的:清算和赎回。 (另请注意,相同的预言机还用于向协议费用接收者和“代币化稳定池”出售获得的代币,一旦启动,其重要性将越来越大。)

Oracle 的表现对 Prisma 用户具有重要影响,因为套利者可能有机会从 Oracle 价格与现货价格之间的偏差中获利。确保在处理清算和赎回时使用最准确的价格反馈,而不牺牲定价来源的安全性,符合 Prisma 协议及其金库存款人的最佳利益。

Prisma 中的两个 Oracle 函数概述如下:

1.1.1 清算

为了保护 Prisma 免于产生坏账,即债务头寸超过其抵押品的价值,LiquidationManager合约在所有活跃的 TroveManager(Prisma 金库)上执行清算逻辑。清算可以通过三种方式之一触发,具体取决于目标账户的抵押比率和系统范围的抵押比率。

  1. 个人抵押率 (ICR) <= 100%: 账户(资金库)抵押不足。全部债务和抵押品在剩余的活跃宝库之间重新分配,有效地社会化损失。
  2. 100% < ICR < 最低抵押率 (MCR):该宝库低于清算阈值,但可以安全地清算。稳定池用作处理清算的储备(即激励清算池)。抵押品分配给稳定池储户。如果稳定池的余额不足以完全偿还该宝库,则剩余的债务和抵押品将在剩余的活跃宝库之间重新分配。
  3. MCR <= ICR < 全局总抵押品比率 (GTCR) && GTCR < 150%:系统处于恢复模式,这意味着当 CR 低于 GTCR 而不是 MCR 时,宝库就可以清算。首先使用稳定池存款来清算该宝藏。相当于债务价值 MCR 的抵押品在稳定池储户之间分配。剩余的抵押品可由宝藏所有者索取。

当 ETH 或 ETH LSD 经历大幅价格波动(尤其是下跌)时,Prisma 清算的可能性在市场波动较大的情况下会增加。虽然 Oracle 故障或操纵可能随时影响协议,但在最重要的时候,Oracle 故障的风险可能会增加。抵押资产可能会因 Gas 费用飙升而无法及时更新价格,或者 Oracle 的定价方法无法充分跟踪波动性加剧而被错误定价。坏账有可能会增加,必须在活跃的宝库中分配,或者借款人会被不公平地清算(在预言机错误报告的价格低于公平市场价格的情况下)。

1.1.2 赎回

套利者始终可以赎回,他们可以选择将 1 mkUSD 赎回价值 1 美元的抵押品(+ 动态赎回费用),从系统中抵押品比率最低的宝库开始。当 mkUSD 价格跌破 1 美元时,这有助于加强其锚定汇率。赎回过程减少了目标宝藏的抵押品风险并增加了其抵押品比率。执行赎回的一方支付称为赎回费的费用。赎回费用的范围为每个 TroveManager,并且是赎回费用下限 + 的总和baseRate。存储在 TroveManager 中的变量与已赎回的 mkUSD 总供应量的比例成比例增加,并随着时间的推移线性减少。baseRate这种动态费用调节了可以盈利的赎回率。

虽然从历史上看,Prisma 上的清算很少发生,但赎回却很常见,对于 Oracle 来说值得特别考虑。 MEV 机器人正在积极寻找此类机会,通过闪电贷快速获利。

除了强制赎回自己的宝藏带来的不便之外,由于预言机与现货价格的偏差,用户可能会经历一些价值提取。错误定价可能会导致用户损失比所需更多的资产,特别是当预言机报告的价格低于公平市场价值时。另一方面,预言机报告的价格高于公平市场价格可能会阻止赎回的发生,从而否定了赎回机制强制执行 mkUSD 挂钩底价的目的。

1.2 预言机选项

下面简要介绍了 Prisma 上 Oracle 喂价服务的主要候选者。

1.2.1 Chainlink(链下)

Chainlink 是一个去中心化的 Oracle 网络,它聚合了广泛的市场数据源,并将这些数据连接到智能合约。其结构依赖于独立的节点运营商从各种交易所和市场数据聚合器 API 获取和传递数据,从而最大限度地减少单点故障并增强安全性。通过在传输之前验证数据准确性的加密方法和共识机制来确保数据完整性。其方法涉及成交量加权资产定价(VWAP),以汇总最能代表资产现货价格的公平市场价值。

节点网络定期(心跳)或按价格偏差阈值将价格推送到链上。由于主网上高昂的 Gas 费用,这一限制可能会使价格更新变得昂贵,并可能导致延迟增加,从而降低 Oracle 性能。维护此类 Oracle 的成本可能很高,尤其是在波动性较大的时期,及时更新 Oracle 至关重要。

1.2.2 曲线池EMA Oracle(链上)

最近的 Curve 池实现(StableSwap 和 CryptoSwap 池)都包含由 getter 函数公开的 EMA 价格计算price_oracle()。这些矿池不依赖外部预言机,而是根据自己的交易活动在内部计算相对于矿池索引 0 中的代币的资产价格。 EMA通过平滑定价调整来增加操纵成本,在操纵阻力和价格偏离现货之间取得平衡。每个池都有一个ma_exp_time可通过 Curve DAO 投票进行配置的池。

正如Curve Oracle 文档中披露的那样,EMA Oracle 一直在积极开发中:

如果您希望使用 Curve 的“价格预言机”功能或任何价格预言机在您正在构建的去中心化应用程序中提供链上定价数据,我们建议您格外谨慎。

来源:Curve 资源

不同的池实现修改了 EMA Oracle 代码的版本,因此集成商必须了解目标池的 Oracle 实现。

2023 年 11 月,在 stableswap-ng 池的部署实施中发现了一个影响池 Oracle 的错误。该错误是在池实施部署后不久由 yAudit 在二次审计中发现的。这促使有人提议升级实施并弃用少数受影响的池。没有资金面临风险,但该事件突显了 Curve 矿池预言机的积极开发,尽管经过广泛审计,但矿池之间可能存在不一致,并且可能继续存在使预言机容易受到操纵或不准确的错误。

1.3 赎回的历史 MEV

本报告的第 3 部分是对 wstETH TroveManager 赎回的分析。由于赎回对 Prisma 用户具有重要影响,本节介绍了有关历史赎回的观察结果,这些观察结果将在与替代 Curve EMA Oracle 的比较分析中进行评估。

1.3.1 BOT行为

在wstETH TroveManager上查询赎回事件显示总共有 200 多笔赎回交易,其中 190 笔被识别为 BOT 交易(用于识别交易是否由 BOT 执行的方法将在同一部分稍后解释)。以下是显示这些交易随时间变化的频率的可视化。

来源:Dune query_3402461

经常兑换 mkUSD 的 BOT 只有 3 个:

来源:Dune query_3402461

每个 BOT 都遵循类似的获取 mkUSD 和赎回的一般流程。以下是其中一项 BOT 交易,揭示了一些有用的见解:

来源:Phalcon Tx Explorer

BOT tx 模式可细分如下:

  1. 从 Uniswap V3 获得闪贷:USDC 3
  2. 使用Curve.fi Factory USD Metapool将 USDC 转换为 mkUSD :Prisma mkUSD 。
  3. 在wstETH TroveManager上将 mkUSD 兑换为 wstETH 。
  4. 在wstETH上解开 wstETH 以获得 stETH 。
  5. 在Curve stETH/ETH 池上将 stETH 兑换为 ETH
  6. 包装以太币,偿还贷款,分配利润和佣金。

MEV 盈利能力取决于步骤2、3和5中的价格差异。

2:随着 mkUSD 价格下降,赎回盈利能力增加。

3:随着动态赎回费用作为最近赎回数量和赎回后时间的函数而下降,赎回盈利能力增加

5:随着抵押资产(例如 stETH)交换滑点的增加,赎回盈利能力下降。 stETH 等 LSD 可以直接兑换为基础 ETH,但这个过程需要等待期,因此二级市场的流动性至关重要。

Prisma 采用了一种机制,通过动态费用限制从 mkUSD 到 wstETH 赎回的盈利机会。第3步涉及动态费用,以阻止频繁和过度的赎回。尽管有这种机制,仍然可能会因 Oracle 错误定价而进行赎回,以提取 MEV。用于 mkUSD 赎回的 Oracle 报价错误可能会为宝库所有者提供次优的抵押品汇率,从而导致负面的用户体验。

1.3.2 wstETH 预言机变更的有效性

一项更改 Prisma Oracle feed 定价 stETH 的提案已获得通过。最初,Prisma 使用 Chainlink stETH/USD 预言机,wstETH TroveManager 的偏差阈值为 1%。结果发现,改用 Chainlink stETH/ETH 和 ETH/USD 预言机组合可以得到改善,每个预言机的偏差阈值为 0.5%。

请参阅下面新 Oracle 与旧 Oracle 15 块分辨率的偏差:

资料来源:@wavey 绘制的图表

曾观察到,当 mkUSD 交易价格低于其锚定汇率时,由于 Oracle 偏差超过 1%,导致出现过度赎回。在这些情况下,我们发现动态费用不足以阻止由于定价偏差而导致的过度赎回。请参阅下面针对兑换事件的兑换费用调整。

资料来源:@wavey 绘制的图表

这些兑换可能会给 Prisma 用户带来间接费用,当他们的宝藏被兑换时,他们可能会收到不利的利率。 Wavey 的分析表明,与上述数据中验证的组合预言机相比,stETH/USD 预言机更容易出现偏差。出现了超过 1.2% 的短暂偏差,为 MEV 机器人的利用创造了机会。

更改 Oracle 的提案 ( PIP-004 ) 已于 2023 年 11 月 17 日下午 7:15:35 +UTC 与此交易一起执行。根据下面的 mkUSD 价格图表和提案执行日期,可以观察到提案执行后,USDC 中的 mkUSD 实现价格较低。由于预言机改进而导致的赎回盈利能力下降可能导致挂钩强度下降。

来源:Dune query_5685458

可能还应该考虑其他影响因素,包括协议利率模型的限制、mkUSD 的用例以及激励措施错位。另一项限制赎回的重要提案是1 月 31 日执行的PIP-019。该提案将所有 TroveManager 的基本赎回费用提高到 1%-1.5%,这降低了 mkUSD 的锚定弹性,但代价是降低了 Prisma trove 所有者的赎回风险。

第 2 部分:Oracles 残差分析

2.1 目标

该分析旨在确定已实施的 Prisma 预言机的性能,并使用历史数据评估替代链上 Curve EMA 预言机的假设性能。研究结果将为链下预言机与链上预言机的行为提供初步见解,以便在后续研究中进行更细致的评估。

此分析的目的是确定当前的 Oracle 是否提供了性能最佳的解决方案,或者是否可以通过利用 Curve EMA 池 Oracle 实施链上或混合解决方案来进行改进。

2.2 方法论

该分析将特别关注 stETH,因为它是最常用的 LSD,拥有成熟的 Chainlink 价格源和深度流动性的 Curve 池。对 Prisma 上列出的其他抵押品进行了分析,报告后的附录 B 中提供了可供参考的结果。

比较分析涉及评估受试数据与参考数据集的吻合程度。在这种情况下,考虑两个数据集:感兴趣的数据(受试数据)和参考数据集。虽然我们预计受测数据应密切跟踪参考数据,但可能会出现偏差。

为了量化对齐,我们检查残差,这本质上是受试数据和参考数据之间的差异。残差分析旨在揭示这些差异的模式或趋势。

在分析残差(与参考值的偏差)时,会根据残差的标准差进行观察。标准差 (SD) 是一种统计度量,用于量化一组值中的变异或离散程度。它提供了数据集中的值与均值(平均值)的分布程度的指示。低标准差意味着数据点倾向于接近平均值,而高标准差则表明数据点分布在更广泛的范围内。

在我们的例子中,接近 0 的均值是可取的,因为它表明所提供的价格并未高估或低估参考价格。然而,接近或等于 0 且标准差相对较高的均值表明波动可能很大,这是不希望的,因为这相当于严重的错误定价。均值为零且标准差最小的预言机喂价是理想的结果,表明喂价高度准确地跟踪现货价格。

为了监控和评估链上活动的预言机价格的准确性,我们采用来自流动性最强的交易目的地(不包括 Curve)的报价作为残差分析的参考。具体来说,从 Uniswap 的 LSD/ETH 货币对获得的报价是这种情况下的主要参考点。

我们的分析包括两种导出 stETH Chainlink 价格的策略。这样做是因为发现原始 Chainlink stETH/USD feed 的偏差比使用 stETH/ETH + ETH/USD 的偏差更高。根据治理提案对预言机进行了更新。此后,涉及 ETH 中改进的 stETH/ETH Chainlink 价格的分析被称为stETHv1,而 stETH/USD + ETH/USD 组合饲料(复制原始 stETH 预言机性能,标准化为 ETH)被称为stETHv2。

2.3 数据收集

为了分析的目的,从所有各自的资产中获取了 2023 年最后一个季度的数据(从区块 18331000 到区块 18931000,以 250 个区块作为数据集的分辨率)。这将为所有资产创建一个包含 2401 个数据点的数据集。

主要考虑的资产是 stETH,因为它是 Prisma 目前接受的抵押品类型,既有 Chainlink feed 又有 Curve StableSwap-ng 池可供参考(注:请参阅附录 B 对 rETH 和 cbETH 的分析,其中使用了较旧的 CryptoSwap 池实现)。所有数据都是通过查询指定区块范围的价格来获取的。

Oracle 价格通过以下来源进行分析:

曲线资金池

Chainlink 价格反馈

作为现货价格参考代理的 Uniswap 矿池地址如下:

Uniswap 现货价格

为了将 LSD 标准化为其基础 ETH,使用内部 LSD/ETH 汇率:

内部 LSD/ETH 汇率

2.4 stETH预言机残差分析

2.4.1 Chainlink 与 Curve

在本节中,我们将 Chainlink stETH 价格源与 Curve 的历史准确性进行比较。

Chainlink stETHv1 Feed 与 Curve

Chainlink:stETH/ETH feed

Curve:stETH/ETH 矿池

以下是来自 Chainlink 和 Curve 的 stETH 价格的直接比较。由于 Chainlink stETH/ETH 的心跳周期为 24 小时,因此每隔几个区块价格就会波动一次。与 Curve 相比,在 Chainlink feed 中可以轻松观察到波动(在 Chainlink stETH/USD feed 中可视化效果更好),因为 Curve 使用 10 分钟的 EMA 时间 ( ma_exp_time ) 来得出其价格。

如果我们从 Chainlink 的价格中减去 Curve 的价格,我们就会得到残差,如下所示:

偏差值的平均值为~-0.000305。

这里可以得出的一个重要观察结果是,与 Chainlink 相比,Curve Oracle 略微高估了价格数据。

Chainlink stETHv2 与 Curve

Chainlink:stETH/USD feed / ETH/USD feed

Curve:stETH/ETH 池

以下是来自标准化为 ETH(stETH/USD 和 ETH/USD)的替代 Chainlink feed 的价格与 stETH Curve 的价格比较。由于 Chainlink stETH/USD 的偏差阈值为 1%(相比之下,stETH/ETH feed 中的偏差阈值为 0.5%),因此价格在锚定价格周围表现出更大的偏差。

正如之前所观察到的,与 Curve 相比,Chainlink 的 stETH/USD 价格波动更加明显。

偏差值的平均值为~-0.000171。

根据规模,与 stETH/ETH 相比,该 feed 的残差更大,即波动幅度更大。

2.4.2 Uniswap 与 Chainlink

在本节中,我们将 Chainlink stETH 价格源的历史准确性与 Uniswap 参考现货价格进行比较。

假设 UniswapV3 池价格数据是现货价格的可靠代理,我们可以比较之前获得的基准数据,以检查 Chainlink Oracle feed 与参考值的接近程度。

Uniswap Spot 与 Chainlink stETHv1

Chainlink:stETH/ETH feed

Uniswap:wstETH/ETH 矿池/ wstETH/stETH 内部汇率

以下是 Uniswap 现货价格与 Chainlink stETH/ETH 之间的实际偏差:

残差平均值 = 0.000415

价格差异的标准差 = 0.000601

Uniswap Spot 与 Chainlink stETHv2

Chainlink:stETH/USD feed / ETH/USD feed

Uniswap:wstETH/ETH 池/ wstETH/stETH 内部汇率

以下是 Uniswap stETH 和 Chainlink stETH 之间的实际偏差(stETH/USD):

价差平均值 = 0.000281

价差标准差 = 0.002747

这里将 Chainlink stETHv1(即 stETH/ETH)和 stETH v2(即 stETH/USD)与 Uniswap 数据进行比较,结果表明 stETHv2 偏差远大于 stETHv1。

当预言机从 stETH/USD 切换到 stETH/ETH + ETH/USD 以减少报价偏差时, Prisma 治理提案 ( PIP-004 )中也出现了同样的观察结果。

2.4.3 Uniswap 与 Curve

在本节中,我们将 stETH Curve Oracle 的历史准确性与 Uniswap 参考现货价格进行比较。假设 UniswapV3 池价格数据是现货价格的可靠代理,我们可以比较之前获得的基准数据,以检查 Curve Oracle feed 与参考值的接近程度。

Uniswap Spot vs Curve

曲线:stETH/ETH 矿池

Uniswap:wstETH/ETH 矿池/ wstETH/stETH 内部汇率

基于与上面类似的残差分析,我们得到以下指标与之前设置的基准进行比较:

价格差异的平均值 = 0.000110。

价格差异的标准差 = 0.000141。

据观察,Curve 报告的平均价格略低于 Uniswap 现货,标准差显着低于 Chainlink 的任一来源。

2.5 结果

在比较这些指标时,我们发现,price_oracle当参考 Uniswap 数据作为现货价格的代理时,Chainlink 数据的偏差明显大于曲线。

由于上述观察是根据各个价格来源的偏差得出的,因此 Curve Oracle feed 可能显示正偏差,而 Chainlink feed 显示负偏差,反之亦然。这种情况完全被否定,因为 Chainlink feeds 和 Curve Oracle 的偏差范围比 Uniswap & Chainlink 和 Uniswap & Curve 的偏差范围要小。

下表显示了对收集的数据进行的残差分析。残差平均值乘以 100 得出目标资产与参考的平均偏差百分比(以美元计,与以美元计价的 ETH 价格相比)。

下表直接比较了 Chainlink 和 Curve 与每种资产的 Uniswap 参考的平均值和标准差的相对表现。在所有情况下,Curve 均表现出较低的平均值和标准差值。精度倍数显示每个观测值的相对精度的大小。

这里的主要要点如下:

  1. 根据残差的标准差,与参考现货价格相比,Curve 显示出比 Chainlink 更低的波动,并且在观察到的资产之间保持一致,尽管 Chainlink 和 Curve 之间 cbETH 的标准差相似。
  2. 根据上表,通过分析平均值,可以发现与参考 Uniswap 现货价格相比,Chainlink 低估了资产价格。曲线与参考价格更加一致,但与参考 Uniswap 现货价格相比,价格也倾向于略微低估。
  3. 对这些发现的一个警告是,尽管观察到这些 Curve Oracle 总体上优于 Chainlink,但 rETH 和 cbETH 却经历了急剧而短暂的偏差,这一点可以在附录 B:rETH/cbETH 残差分析中引用。这是由于矿池的相对流动性不足、活动性低以及较旧的矿池实施不适合整合。然而,需要进行额外的研究来确定适当可靠的 Curve 池 Oracle 所需的基准指标。

第 3 部分:stETH MEV 赎回分析

3.1 目标

该分析旨在将wstETH TroveManager中赎回事件的实现价格与替代链上预言机使用历史数据报价的假设价格进行比较。研究结果将为链下预言机与链上预言机的行为提供初步见解,以便在后续研究中进行更细致的评估。

此分析的目的是确定当前的 Oracle 是否在特定的赎回环境中提供了性能最佳的解决方案,或者是否可以通过实施链上或混合解决方案、利用 Curve EMA 池 Oracle 来进行改进。

3.2 方法论

该分析将特别关注 stETH,因为它是最常用的 LSD,拥有成熟的 Chainlink 价格源和深度流动性的 Curve 池。本研究汇总了所有赎回事件,将已实现的 stETH 预言机价格与几种替代预言机价格进行比较,以美元定价,并采用 Curve stETH/ETH 预言机价格。

对于此分析,实现的 stETH 价格是通过将赎回的 mkUSD 数量除以 Trove 管理器以 wstETH 形式损失的 stETH 数量来计算的。为了确定 stETH 数量,我们需要赎回中收到的 wstETH + 作为费用花费的 wstETH,并将其转换为 stETH。如果任何替代源为赎回者提供的利润持续较低,我们可以说它们的 MEV 表现优于实际价格。

wstETH TroveManager用于获取 mkUSD 兑换时的所有交易哈希值。由赎回 mkUSD 的地址接收并销毁 mkUSD 的交易被视为 BOT 交易。兑换事件的详细查询可以在这里找到:Dune query_3352919。该查询对于从 BOT 交易中获取所有数据起着重要作用。

3.3 数据收集

Dune查询用于识别获取所有 tx 哈希值的 BOT 交易、mkUSD 赎回的已实现 wstETH 汇率以及赎回事件的区块号。从查询中获得的区块号用作查询以下数据的输入,这些数据用于将当前实现与 Curve stETH 喂价变化进行比较:

根据上述数据,我们可以构建 3 个使用 Curve Oracle stETH/ETH 价格的价格源,并将其与 ETH/USD 合并以得出 stETH/USD。经过此操作后,我们获得了以下数据,可用于可视化:

上述数据给出了以美元计的 stETH 价格,可以根据所有 BOT 交易的已实现 stETH 价格进行分析。已实现的 stETH(以美元计)只是用于计算赎回时每 mkUSD 提供的 stETH 数量的 stETH 价格。

3.4 stETH MEV 赎回分析

以下是 BOT 交易区块的 4 个 stETH 价格源(上面讨论的 1 个参考和 3 个替代方案)。已实现的喂价是来自已实施的价格预言机(即 Chainlink)的价格。这是与使用 Curve stETH/ETH 作为核心的 3 个 feed 进行比较的。在这里,较高的报价将导致兑换 mkUSD 的 stETH 价值减少,反之亦然。

根据上述信息,我们可以对从 mkUSD 赎回中收到的 stETH 相对金额进行建模,并根据现有预言机收到的实际金额进行标准化。下图显示了在收取费用之前从 mkUSD 获得的 stETH,并对数据进行处理以消除异常值以改进可视化:

3.5 结果

分析揭示了一个明显的趋势:当将 Curve stETH/ETH 与 Uniswap ETH/USDC 和 Chainlink ETH/USD 结合使用时,可用于 mkUSD 赎回的 stETH 数量减少。因此,每 mkUSD 赎回的 stETH 单位减少会导致 BOT 利润下降。提供的可视化显示了各种假设喂价下的 BOT 利润与实际喂价的对比,不包括费用:

很明显,与已实现的喂价相比,Curve stETH/ETH、Uniswap ETH/USDC 和 Chainlink ETH/USD 的组合降低了赎回盈利能力。

第 4 部分:拟议的 Oracle 改进

4.1 混合Oracle解决方案

认识到完全依赖 Curve 预言机的固有风险,特别是在流动性低或流动性波动期间,所提出的解决方案战略性地集成了 Chainlink 预言机,作为出现偏差时的保障措施(即后备方案)。鉴于 Chainlink 提供错误数据的可能性可以忽略不计,它可以作为可靠的后备选项。

该解决方案充当过滤器,同时考虑 Curve 和 Chainlink 价格。条件在函数内建立,充当开关。为了设计这个条件,acceptable_range引入了概念。这个范围代表了 Chainlink 的预言机和 Curve 预言机价格之间可接受的差异。当观察到的差异超过此范围时,就表明 Curve Oracle 数据中存在潜在偏差或操纵。在这种情况下,该功能通过支持更安全的 Chainlink 价格来防范潜在风险。相反,当差值在 范围内时acceptable_range,该函数依赖于 Curve Oracle 的准确度和精确度。

值得注意的是,acceptable_range可以配置为静态或动态,具体取决于基础资产(例如 ETH 和相关 LSD)的波动性。动态性质允许适应波动的市场条件,确保价格确定的弹性和响应机制。这种双管齐下的策略最大限度地减少了对单一数据源的依赖,从而增强了定价机制的整体弹性和可靠性。

4.2 验证解决方案

4.2.1 静态acceptable_range

该解决方案引入了静态方法acceptable_range来解决仅依赖 Curve Oracle 时的潜在漏洞。虽然 Curve Oracle 产生的价格比 Chainlink 更准确,但它可能容易受到操纵。 Chainlink 功能强大且经过考验,被认为是业内更安全的选择。当 Curve Oracle 和 Chainlink 之间的差异超过固定值时,它acceptable_range用作切换到 Chainlink feed 的阈值。

从策略上来说,其acceptable_range接受的报价低于Chainlink 报价的± 1%。这与 Curve 和 Chainlink 之间的平均差相差近 3 个标准差(考虑到与之前的 stETH/USD feed 相比,改进的 stETH/ETH 和 ETH/USD feed)。

4.2.2 函数输出derived_price

derived_price是旨在确定给定资产的最终报价的函数或机制的输出,特别是在涉及 Curve Oracle 和 Chainlink Oracle 的场景中。

在所描述的解决方案中,该函数评估来自 Curve Oracle 和 Chainlink Oracle 的报价。根据观察到的这两个价格之间的差异以及它是否落在或超出预定义的accepted_range,该函数将输出不同的派生价格。

以下是derived_price与之前显示的其他价格源的比较:

BOT 利润可以通过该衍生价格可视化(由于没有偏差,该价格将完全等于 Curve stETH/ETH 和 CL stETH/ETH),如下所示:

分析总利润可以揭示更大的情况。确定了六个异常值,并在过滤异常值之前和过滤之后计算每种情况的总利润。

在减少 BOT 的可用利润方面,Curve stETH/ETH 和 Uniswap ETH/USDC 表现最好。它derived_price与当前 stETH 的 Oracle 实现具有相同的利润潜力,但限制了利润,假设在分析的 189 笔交易中为用户节省了约 35.4 ETH。

4.3 结论

由于链上活动严重依赖流动性最强的去中心化交易所的报价,而 MEV 机器人将 mkUSD 兑换成 LSD 也遵循相同的报价,因此报价(用于报价赎回的 Oracle 价格)的准确性至关重要重要性。

根据历史数据,Curve 池 Oracle 价格比 Chainlink 的价格更接近参考(UniswapV3 价格数据)。数据表明,实施 Curve Oracle 将减少机器人的 MEV,并为用户兑换其宝藏提供更好的汇率。

将 Curve Oracle 用作独立的 Oracle 可能很诱人,但 Curve 价格反馈的有效性取决于特定资产的流动性深度以及与池的交互。 Curve Oracle 和 Chainlink Oracle 的混合可用于匹配链上价格,同时保持使用 Chainlink Oracle 继承的可靠性和广泛的市场覆盖范围。

我们提出的混合 Oracle 解决方案评估标准差 (SD) 以生成derived_price.如果SD接近0,则表明遵循derived_price参考值,可以考虑。这确保了当 Curve Oracle 偏离预定义阈值时,解决方案动态切换到更安全的 Chainlink 源。由于该解决方案几乎总是输出 stETH 的 Curve 报价,因此假设 MEV 活动与使用 Curve stETH/ETH 相同,没有回退。

附录 A:数据处理脚本

用于生成本报告中的分析的脚本如下所示:

  1. OracleAnalysisV4:用于数据收集的 Colab 笔记本
  2. OracleAnalysisPlayground:用于使用 pickle 数据文件绘制图表的 Colab 笔记本
  3. PrismaOracleModelingV1:用于绘制 MEV 兑换活动图表的 Colab 笔记本
  4. DerivedPriceModeling:Colab 笔记本绘制替代 Oracle 解决方案测试和建模

附录 B:rETH/cbETH 残差分析

其他图表 rETH

Chainlink 与 Curve


Uniswap 与 Curve

Uniswap 与 Chainlink

检查峰值 rETH

在观察期间,rETH 曲线预言机价格出现了几次峰值。有几次,这导致预言机价格和现货参考之间的价格偏差激增。下面是更详细的图表,显示了几次价格飙升期间的资金池比例/代币流动性以及预言机价格的行为。

start_block = 18824000

end_block = 18827000

interval_blocks = 100

矿池比例:

预言机价格:

start_block = 18850000

end_block = 18858000

interval_blocks = 100

矿池比例:

预言机价格:


start_block = 18880000

end_block = 18885000

interval_blocks = 100

矿池比例:

预言机价格:

其他图表 cbETH

Chainlink 与 Curve

Uniswap 与 Curve

Uniswap 与 Chainlink

检查峰值 cbETH

在观察期间,cbETH 曲线预言机价格出现了几次峰值。有几次,这导致预言机价格和现货参考之间的价格偏差激增。下面是更详细的图表,显示了几次价格飙升期间的资金池比例/代币流动性以及预言机价格的行为。

start_block = 18693500

end_block = 18696000

interval_blocks = 10

矿池比例:

预言机价格:

start_block = 18814000

end_block = 18816500

interval_blocks = 10

矿池比例:


预言机价格:


start_block = 18800000

end_block = 18805000

interval_blocks = 10

矿池比例:

预言机价格:

声明:

  1. 本文转载自[marsbit )],原文标题“Prisma 可选预言机比较分析”,著作权归属原作者[PrismaRisk],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。

  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。

  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。

即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!