珀尔修斯网络升级(Perseus Network Upgrade)

Pyth Network 正式完成珀尔修斯升级(Perseus Upgrade),本次升级是对预言机性能提升的重要升级。珀尔修斯升级显著降低了预言机用户的 gas 成本,同时降低了预言机延迟,增加了预言机的可靠性。珀尔修斯升级通过网络主要架构调整来实现。除了上面提到的诸多改进,本次升级还为发布全新功能和特性创造了新的机会。本文将详细讲述珀尔修斯升级的具体内容,并对其所带来的性能提升进行分析。
Pyth Network 致力于为全球的开发者将全世界的金融数据带到链上。能够迅速处理成千上万笔交易的能力对未来的 DeFi 系统来说是至关重要的,而这样的需求对 DeFi 原语的成本效率提出了更高、更迫切的要求 — — 尤其是价格预言机,因为它是 Web3 资本市场的基石。珀尔修斯升级代表着加强数据可用性、创造高吞吐量 DeFi 应用的关键里程碑。
本文将首先介绍 Pyth Network 在珀尔修斯升级之前的网络架构,然后详细解释珀尔修斯升级所带来的更便宜的预言机价格传输方式及数据可获取性的提升。
背景
Pyth Network 在去年发布了低延迟 Pythnet 喂价数据预言机。这些喂价数据通过一个全新的无需许可的“拉取”机制进行传输,这是对预言机架构的根本性改变。相反,大多数传统的预言机应用了“推送”机制:预言机持续向区块链发布交易来进行链上价格更新。这种方式的可扩展性是极其有限的,因为这样的预言机需要对每一笔价格更新支付交易费用,而当预言机需要扩展到更多区块链、支持更频繁、更多的喂价数据更新时,它将无法支持如此巨额的成本(经济上不可行)。
拉取机制将预言机的经济模式进行了彻底改变,让其可扩展性大大增强。Pyth Network 预言机在链下生成一串经过验证的价格更新,并允许 Pyth 用户无需许可地在链上拉取所有价格数据。因此,Pyth 数据发布者并不需要支付交易费用,而这样的架构设计让预言机的扩展变得非常容易。实际上,拉取机制甚至让预言机能够通过在每次用户更新价格数据上链时收取一小部分费用来进行商业化并获取收益。
Pythnet 喂价数据预言机自上线以来已经获得了非常显著的增长。这样的增长来源于应用对高频喂价、更多资产及更多区块链支持的需求。Pythnet 预言机目前支持了超过 350 个喂价数据,并以每秒的速度进行更新 — — 珀尔修斯升级将价格更新的速度提升至 400 毫秒/次 — — 并上线了超过 30 个区块链。包括 Vela Exchange、Aevo、HMX 等主要的协议都集成了这些喂价数据。
拉取模型架构
在珀尔修斯升级之前,Pythnet 喂价数据预言机应用下述的拉取模型架构:

拉取模型架构的主干是 Pythnet,这是一个专为 Pyth 而打造的应用区块链,由数据发布者来运营。Pythnet 区块链是一个 Solana 虚拟机(SVM)链,但它与 Solana 主网(mainnet-beta)相互独立。Pythnet 拥有多个不同的程序来执行不同的功能:
- 价格聚合程序:将来自数据发布者的多个价格数据结合成为一个唯一的聚合价格。
- Wormhole(虫洞)是一个跨链信息传输协议。Pythnet 喂价数据应用 Wormhole 来创建这些签名验证的链下价格信息。
- 验证证明(Attester)是价格聚合程序与 Wormhole 之间的连接器。它从价格聚合程序中读取价格数据,并将它编译为信息格式发送至 Wormhole。为了减少信息的数量以提升性能,验证证明程序会将 5 个价格更新绑定(batching)在一个信息中。
在数据发送至 Wormhole 之后,它会被存储在价格服务器(price service)中,这是一个提供了便捷 HTTP API 的网页服务器。Pyth Network 用户可以通过连接这个 API 来获取价格数据,并将获取到的价格更新提交到应用所在区块链上的 Pyth 智能合约中。Pyth 智能合约会对这些验证信息进行认证并进行存储。
虽然这个架构设计已经实现了高效的目标,但它还不是最好的。该架构主要有两个集中在验证证明程序上的问题:
- 验证证明程序会将 5 个价格更新绑定在一个 Wormhole 信息中。这样的绑定大小(batch size)是由于需要减少目标链的验证成本和 Wormhole 信息限制的因素决定的。然而,Pyth 预言机用户无法选择在每个绑定信息中包含哪些喂价数据。因此,预言机用户常常需要被迫向 Pyth 智能合约提交多个信息,并产生对应的 Wormhole 验证成本。用户很少能够在一个绑定信息中获取到他们所需要的 2 个喂价数据 — — 1 个绑定信息包含 5 个喂价数据,Pyth 拥有 300 个喂价数据,这样的可能性仅有 1/60。
- 验证证明程序需要持续从链下被“唤醒”。为了让 Wormhole 能够传输信息,Wormhole 智能合约必须要对一笔交易进行注册。由于各种技术原因,该唤醒操作只能够以每秒一个喂价数据的速率进行运行,且该唤醒操作也产生了价格更新时间之间的差异变化。
珀尔修斯升级
珀尔修斯升级是对网络的一次重大升级,致力于改善从 Pythnet 到其他区块链数据流的路径,以解决上述提到的两个主要问题。珀尔修斯升级带来的主要改变是消除喂价数据绑定(batching)的设置,让预言机用户可以将任何他们想要的喂价数据组合成为一个单独的数据包。为了实现这个目标,系统搭建了一个价格更新的默克尔树(Merkle tree),并通过 Wormhole 来验证该默克尔树的根。
默克尔树是一个数据结构,能够以验证过的方式存储一系列的数据值。你可以创建一个包含一系列物件的默克尔树(如,[A, B, C, D]),并通过对相邻物件进行哈希加密组合来创建一个树状结构:

默克尔树最顶端的节点被称为根(root),它拥有一个独特的值,能够验证该根下的一系列物件的值。此外,任何人都可以通过默克尔证明(Merkle proof)来验证他们的物件是否在这个树中。这个证明包含默克尔树从树枝到树根的所有节点。举例来说,如果需要证明 A 是否在这个默克尔树中,该证明可以是 [A, B, hash(C, D)]。只要给定这个路径和树根,任何人都能够证明 A 在这个树中 — — 只需要计算 hash(hash(A, B), hash(C, D)) 并检查它是否等于根的值即可。而且,由于加密密码学的哈希函数性质,任何人都无法从计算中证明另一个物件是否在这个树中。比如,给定一个物件 E,任何人都无法构建一个证明来确认物件 E 是否在这个树中。
默克尔树让协议拥有了一个全新程序设计方式来解决绑定的问题。协议将所有当前的喂价数据放到一个默克尔树中,并使用 Wormhole 来验证树的根值。接着,Pyth 预言机用户就就可以创建一个价格更新数据包,精准包含他们所想要的所有价格更新。这个数据包内含有验证过的树根值,以及对数据包中每个价格更新的默克尔证明。Pyth Network 智能合约仅需要对树根的 Wormhole 签名和默克尔证明进行验证,即可完成数据包的验证。
珀尔修斯升级将默克尔树计算放入了 Pythnet 验证器中。全新的架构如图所示:

在价格聚合程序之前和 Wormhole 之后的步骤都与升级前完全相同。而连接这些组件之间的方式发生了改变。不像此前验证证明程序中的唤醒步骤,新的程序拥有一个名为信息缓冲(message buffer)步骤。这个程序将存储应该放入默克尔树中的一系列信息(每个信息中都包含对应的价格数据)。价格聚合程序会在每次价格进行更新时启动信息缓冲程序(message buffer program),并将价格更新信息写入缓冲程序中。Pythnet 验证器在每个插槽结束时读取信息缓冲程序中的信息,计算默克尔树证明,并将默克尔树的根值传输到 Wormhole 中。同时,验证器也将维护一个默克尔树内容的链上循环缓冲器(这将被用于之后对默克尔证明的构建)。
为了将价格更新拉取到链上,预言机用户首先将组建一个更新数据包。他们调取 Wormhole 验证的默克尔树根值,选取他们想要的价格更新,然后从 Pythnet 中检索对应的数据和默克尔证明。最后再将所有这些数据用一个 Pyth 智能合约能够理解的格式集合到一个数据包中即可。
这个过程听起来确实有点复杂,没关系!珀尔修斯升级还推出了一个名为 Hermes 的全新版本的价格服务器,为 Pyth 预言机用户完成所有上述的步骤。新的价格服务器与之前的价格服务器 API 相同,但能够提供全新的、更加高效的数据包。只需要将你想要的喂价数据 IDs 索引到价格服务器的 HTTP 或 Websocket API 即可,它会帮你完成余下的所有步骤。
升级优势
珀尔修斯升级为 Pyth Network 预言机用户带来了诸多重要的好处。
喂价数据更新成本显著降低。下图展示了 Pyth 在不同生态系统中更新一个价格数据的费用:

正如上图所示的,“基准线”代表了升级前一个绑定(batch)价格更新所需要的 gas 费用。而“Perseus” 代表了升级后一个默克尔树价格更新所需要的 gas 费用。为了对比不同生态系统之间的费用,两组数据都以百分比的标准进行呈现(基准为升级前一个绑定价格更新的费用)。该图表显示了除 Aptos 外 [1],所有生态系统升级后的单次价格更新费用都有显著降低。EVM L2 的费用分为两部分,一部分是 L2 gas 费用,另一部分是 L1 费用(通常代表了以太坊 L2s 的主要交易费用)。由于不同的生态系统用各自的方式来计算 gas 费用,升级前后的变化也各自不同。
如果你同时更新多组价格数据,更新费用还将进一步降低。下列图表展示了不同生态系统同时更新五个喂价数据的费用:

该图表展示了在珀尔修斯升级后,每个生态系统的价格更新费用都降低了 50–80%。
同时进行多个价格更新的费用进一步降低是由于无论用户进行多少价格更新,交易都只需要验证一组 Wormhole 签名信息。哈希加密相对于签名验证来说是非常便宜的,因此检查默克尔树证明并不是总体费用中的主要部分。
价格更新更快且更频繁。Pythnet 验证者在每个插槽都发布一次价格更新,即每 400 毫秒更新一次,这比升级前每秒更新一次的频率增加了 2.5 倍。更快的价格更新频率也意味着更低的平均延迟。平均延迟降低的部分原因是由于增加的更新频率,另一部分原因也是由于通过取消验证证明过程所带来的全流程简化。
可延展性。信息缓冲程序为发布全新种类的数据打开了新的大门,比如 TWAPs 及波动性数据。我们所需要做的就是更新聚合程序并将新的信息写入信息缓冲程序中。从那里开始,验证者就会自动将信息放入默克尔树中,并让它在链上可验证。
安全性
珀尔修斯升级由 Trail of Bits 和 Ottersec 进行审计,可以在此处查看完整的审计报告。
结论
珀尔修斯升级现已上线主网。作为 Pyth Network 预言机用户,你现在只需要把你的价格服务器 URL 修改为新的 Hermes 即可:
- 主网:hermes.pyth.network
- 测试网:hermes-beta.pyth.network
你可以在这里查看相关文档。现在就开始试用,并在 Pyth Network Discord 中让 Pyth 的贡献者们听到你的反馈。
脚注
- 单次价格更新通常是更加便宜的,因为哈希加密比处理一批绑定价格更新要便宜;除 Aptos 外,其他链均是如此。