查看原文
其他

Pyth V2:一个全新的价格预言机模型

Pyth Network Pyth Network 2023-12-15


Pyth Network 近期正式发布了 Pythnet 喂价预言机(Pythnet Price Feeds),这是一个全新的、拥有高准确性和可扩展性的价格预言机。


这个预言机产品设计了一个全新的基于需求的价格更新模型,消除了此前的预言机模型设计中制约预言机性能提升的核心费用考虑因素。


Pythnet 喂价预言机能够进行高频的价格更新(达到每秒更新一次),包含数千个喂价产品,且没有区块链的限制。


这些喂价数据是安全的、高度可用的,能够准确追踪中心化和去中心化交易所上的资产价格。


本文将详细解释 Pythnet 喂价预言机的机制设计,并用实际案例展示这个全新的预言机模型如何 5-10 倍地减少其他预言机带来的价格追踪偏差。


大多数预言机,也包括 Pyth 的 Solana 喂价预言机,均应用价格推送模型(push model)来进行价格更新。


在这个模型中,预言机运营方(或者其他特许运营方)会持续向独立的区块链推送价格更新。


预言机运营方需要为每次价格更新支付交易费用,这是预言机在成本和扩展性之间的基础性权衡问题。


增加喂价产品、扩展到更多区块链、以及提升更新频率,都将额外增加预言机的交易成本。


这导致价格推送模型预言机的扩张受到更新频率、喂价产品数量和支持区块链数量的限制。


Pythnet 喂价预言机通过引出一个基于需求的价格更新模型(也叫做“拉取”模型)来消除这个成本与扩展性之间的权衡问题。


Pythnet 并不会持续在链上推送价格更新,而是允许数据使用者仅在需要的时候才在链上拉取价格数据。


Pyth 持续在链下进行价格更新,并对每次更新进行签名认证,让所有人都可以验证此次更新的真实性。


当链上需要价格更新时,数据使用者主动发起一次交易,同时进行 Pyth 价格更新并将其用于下游协议中。


Pyth 在链下的价格更新几乎是完全免费的,这让预言机能够进行大量区块链上大量喂价产品的高频价格更新。


对于 Pythnet 喂价预言机运作的更多信息,可以参考我们开发者文档中的相关部分。


https://docs.pyth.network/how-pyth-works


下表总结了 Pythnet 喂价预言机模型与推送模型预言机在不同维度的对比:



这个新的预言机模型改善了现有应用对预言机的使用情况,同时从根本上支持了新应用的集成。


它首先通过消除在区块链拥挤时段预言机更新延迟的风险来提高现有协议的安全性。


同时,它也让开发者能够搭建需要紧密追踪中心化交易所价格数据的协议产品。


它极大地扩展了预言机可以支持的产品范围和区块链协议,同时支持了更多更有趣的金融运营方式创新。


这个全新的预言机模型设计从根本上重塑了链上金融应用的使用场景。


Pythnet 喂价产品预言机

Pythnet Price Feeds



该图表展示了 Pythnet 喂价预言机的整体架构。数据发布者将他们的价格数据发布到 Pythnet 上,这是一个仅供 Pyth 使用的应用链。


接收到数据后,链上聚合程序将进行价格聚合,并输出聚合价格及置信区间。


接下来,验证者程序(attester program)会持续对最近观察到的 Pyth 价格数据进行验证,并创建一条 Wormhole 消息,将其发送到部署在 Pythnet 上的 Wormhole 智能合约中。


之后,Wormhole 守护者(guardians)会对该验证消息进行观察,并为该消息创建一个签名认证的 VAA(Verified Action Approval)。


这一整个过程最终会生成一条可以在任何区块链上验证的附有签名认证的 Pyth 价格更新消息,并储存在价格服务器(price service)中。


价格服务(price service)是一个帮助数据使用者调取实时价格更新的功能。价格服务功能持续追踪 Wormhole 并获取 Pyth 的价格更新消息。


它将最近的更新消息进行缓存,并公开 HTTP 和WebSocket APIs,以便用户检索最新的更新信息((任何人都可以运行 Web 服务实例(instance),Pyth Data Association 运行了一个公共的实例来方便用户使用)。


当用户希望在交易中使用 Pyth 价格数据时,他们从价格服务中检索最新的价格更新消息(即签名认证的 VAA),并提交交易。


最后,链上协议通过一个简单的 API 与 Pyth 智能合约进行集成,该 API 从 Pyth 智能合约的链上存储器中检索当前的 Pyth 价格数据。


如果价格数据已经足够新,API 将返回当前的价格;这种方法是可行的,因为在同一笔交易中,数据使用者将首先进行价格更新。


协议可以根据他们的需求来配置他们需要的更新阈值 —— 例如,延迟敏感的应用可以配置一个比默认阈值更低的价格更新频率阈值。


目标链的 Pyth 智能合约将验证价格更新消息的有效性,如果消息有效,则将最新的价格数据存储在其链上存储器中。


根据相关协议的用例和约束,可以用不同的方式将 Pyth 价格数据集成到协议逻辑中。


对于对延迟非常敏感的应用,我们建议用与对延迟不敏感的协议不同的方式来使用 Pyth。关于这方面的更多细节,可以参考我们的开发者文档。


由于预言机本身及其数据提供者不需要支付任何交易费用,Pythnet 喂价预言机的设计具有高度的可扩展性。


注意在上面的图表中,除了更新链上 Pyth 智能合约中的价格数据外,流程的每一步都是免费的


而更新链上智能合约价格数据的费用并不由预言机自己承担,而是由需要这个价格数据的用户来承担(而这个费用只是他们整体交易成本的一小部分)。


消除这些交易成本是 Pythnet 喂价产品预言机可扩展性背后的根本驱动力,它能够在许多区块链上为许多喂价提供频繁的价格更新。


案例分析

Empirical Analysis


Pythnet 喂价预言机的一个关键好处是,它的可扩展性让它能够密切追踪资产在主要交易场所的价格变化。


我们通过对 ETH/USDAAVE/USD 两个交易对的 Pyth 喂价进行深入分析来验证其准确性 —— 这两对喂价的市值差异非常大,并在非常不同的交易所进行交易。


ETH/USD: https://pyth.network/price-feeds/crypto-eth-usd?cluster=pythnet

AAVE/USD: https://pyth.network/price-feeds/crypto-aave-usd?cluster=pythnet


同时,我们将 Pyth 和其他重要的预言机竞争对手的准确性表现进行了对比。


以下所有分析均使用 2022 年 11 月 17 日至 2022 年 11 月 24 日期间的价格数据(除特别标注之外)。


这一周出现了显著的价格波动,这是对预言机准确性的一个很好的测试。我们比较了 Pyth 和竞争对手预言机在流动性最强的中心化交易所的价格数据。


在某些情况下,流动性最强的交易对是 USDT,因此我们使用 USDT/USD 的汇率将其兑换为 USD 来进行比较。


01

ETH/USD


在第一个分析中,我们选择了 ETH/USD,这是一个在许多交易所都上线交易的具有高流动性的交易对。下图比较了 Pyth 上 ETH/USD 的价格与 Binance 的价格情况,Binance 是这个交易对流动性最强的交易所:

第一个图表是 Pyth 和 CEX 在同一时间段内 ETH/USD 的价格序列图。


第二个图表表示了这两个价格序列随时间变化的差异,即这两个价格序列之间差异的绝对值。这些差异以基点来衡量,基点是百分之一的百分之一。


第三个图表总结了第二个图表的内容:它在 x 轴(取对数)上绘制了这些差异的累积密度函数(CDF),在 y 轴上绘制了百分比。


这张图表让我们能够在任何给定的尺度上确认观察的偏差的概率。为了说明这个特性,图表上标注的点对应于概率分布的第 25/50/75/95 个百分位。


从上表中可以看出相应的偏差,汇总如下表:


02

AAVE/USD


对于第二个分析,我们选择了 AAVE/USD,以提供一个代表性的例子来说明 Pyth 对流动性较低的代币的表现。


ETH 流动性极强(24 小时交易量约 62 亿美元),而 AAVE 流动性相对较差(24 小时交易量约 6400 万美元),并且只在少量的交易所进行交易。


下面的图表比较了 Pyth 的 AAVE/USD 喂价和 Binance 的 AAVE/USDT 价格情况:

在上面的图表中,Pyth 喂价基本上能够很好地追踪 CEX 的价格,但在波动较大的时段内也有偶然性的偏差。


除去这个偶然性的偏差,Pyth 均能够紧密追踪 AAVE 的价格。


大多数时候,AAVE 喂价的偏差都小于 10 个基点(bps),且一直保持在 25 个基点以下;Pyth 和 CEX 偏差的分布数据如下表所示:

AAVE 的偏差相对 ETH 的偏差要更大,因为这个代币流动性较小,结果是符合预期的。


流动性较小的代币在不同的交易所往往有较大的价格偏差,因为它们更难进行套利交易。这个偏差的大小是预言机追踪价格误差的基础性限制。


与其他预言机的对比

Comparison to Other Oracles


我们也将 Pythnet 喂价预言机的准确性与其他几个不同区块链上的预言机进行了对比:



当我们对比两个 CDF 曲线时,左边的曲线说明追踪误差更小,表现更好。我们可以在图中看到,Pyth CDF 往往都在所有其他曲线的左边。


注意 x 轴是一个对数刻度,因此一个刻度的差异代表 10 倍的性能提升。上面的图表展示了 Pyth 通常比其他的预言机表现有 2-10 倍的提升


x 轴的对数刻度趋向于缩小预言机之间差异的绝对大小。我们参考以太坊的 ETH/USD 偏差(即左上角的图表)。


从图表本身来看,很明显预言机在准确度方面的相对顺序是 Pyth > Chainlink/Uniswap V3 TWAP > Uniswap V2 TWAP > Band。


然而,考虑到绝对数字时,准确性的差异是相当明显的。下表从图表中总结了各百分位的偏差值:



Pyth 在沿着 CDF 曲线的每个分位点上的偏差都大约低一个数量级。


尤其重要的是,第 95 个百分位是向右的长尾行为的一个很好的代表点,因为右侧长尾决定了“最坏的行为”。


选择与特定预言机集成的协议需要根据该预言机的右尾偏差来设置它们的参数。


例如,基于预言机的 AMM 可能会将其交易费用设置到与一些右尾百分比偏差一致,以保护其 LPs 不会因预言机的不准确性而被错误移除。


对于这样的应用,选择右尾偏差低的预言机能够让他们降低成本,从而增加交易量。


另一个能够与 Pyth 性能相较的预言机唯一情况是 BNB 链上 USDT/USD 的 Chainlink 喂价情况,如上表中右下角图示。


Chainlink 在以太坊上一周内更新了 7 次 USDT/USD 喂价,而与以太坊相比,BNB 的 gas fees 较低,因此 Chainlink 进行了 652 次价格更新。


此外,在此期间,USDT 的价格几乎总是稳定在 1 美元,因此没有必要进行高频更新来密切追踪价格。


相比之下,当稳定币更不稳定,甚至有可能脱锚时,更高频率的预言机喂价就会变得更有价值。


我们在 2022 年 11 月 9 日的 USDT/USD 喂价中看到了这一点:

如第一张图所示,USDT/USD 在那一天波动非常大。由于高频率的价格更新,Pyth 预言机能够持续对 CEX 的价格进行密切追踪。


正如下面两个图所示,Pyth 在这段时间的表现显著优于 Chainlink 的喂价。


结论

Conclusion


Pythnet 喂价预言机使用了一个全新的预言机模型设计,在多个维度改善了现存预言机的性能。


基于需求的价格更新模型消除了需要由预言机和数据提供者支付的交易费用,这让其能够以传统的推送模型预言机无法实现的扩展性来进行大规模扩展


因此,Pythnet 喂价预言机能够支持无限数量区块链上的数千个喂价产品的频繁价格更新


另一个由可扩展性带来的好处是它让预言机能够准确地追踪资产在中心化交易所中的价格。


我们的案例分析展示了 Pyth 与流动性最强的交易所(预言机准确性的参考)之间的平均偏差情况 —— Pyth 在多个区块链上的多个资产的价格偏差均小于其他预言机。


这个准确性的提升在偏差分布的右尾部分最为显著,这意味着 Pyth 在最坏情况下的偏差要远小于其他预言机;这是预言机准确性最重要的指标,因为最坏情况下的表现决定了使用预言机服务的协议将如何与预言机进行集成。


Pythnet 喂价产品预言机目前已在 13 条区块链的主网上线,包括 Ethereum、Optimism、Arbitrum、BNB Chain、Avalanche 及 Polygon 等,提供涵盖加密货币、股票、外汇及贵金属等资产类别的 150+ 资产喂价。


未来将扩展到更多的区块链和更多的喂价产品。关于 Pyth 与应用集成的更多信息,请参考开发者文档。如果你有任何问题、需求和建议,欢迎随时在 Discord 中联系我们。


感谢你的阅读!如果你已经读到了这里,请再往前一步,加入我们的 Pyth Network 社交账号。


Pyth 中文 Twitter:https://twitter.com/PythCHN

Pyth Discord:https://discord.gg/pythnetwork

Telegram:https://t.me/pythchinese


回复「微信」即可加入 Pyth 中文官方微信群,回复「白皮书」即可获取 Pyth Network 白皮书。

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存