跳转到主要内容

MagicBlock 上的预言机

MagicBlock 通过接入 Pyth Lazer 数据源,并以 50–200 ms 的间隔(取决于资产)更新 Ephemeral Rollup 账户,从而提供低延迟、高吞吐的预言机数据。

在线演示

实时价格流

实现方式

了解如何在链上访问我们的预言机

代码示例

查看我们的 Github 仓库
这个预言机示例使用 Pyth Lazer,但我们也可以为任意数据源构建预言机。

什么是链上预言机?

链上预言机会提供程序可以信任的、可验证的链下数据。其使用场景涵盖资产价格到事件结果等多种类型。 在 Solana 上,预言机通常通过持续更新链上账户来工作。程序会直接读取这些账户,而无需在执行时调用外部 API。我们使用的是被广泛采用的跨链预言机网络 Pyth

为什么预言机很重要

  • 金融:清算、资金费率、TWAP 等场景中,不准确的报价会带来损失和风险
  • 游戏:结算体育比赛结果;让游戏内状态与现实世界事件保持同步
  • 可组合性:可靠的链上数据让程序之间能够安全组合
准确性与延迟会直接影响正确性、安全性和用户体验。

MagicBlock 上的预言机

MagicBlock 采用标准的预言机模式,将数据写入可组合的链上账户中,但更新频率可达到 50–200 ms(取决于资产),相比之下 Solana slot 大约是 400 ms。这种延迟表现非常适合清算、跟单交易和其他对时效性要求很高的流程。

预言机的两个组成部分

  • 数据源:上游真实数据。我们可以接入任意链上或链下数据源,把 Pyth 尚未覆盖的资产(例如新的 PumpFun 或 Raydium R‑tokens)带入 Ephemeral Rollups。
  • 链上推送器:处理数据源并将更新写入链上。MagicBlock 的 chain pusher 将会开源。

流程

  1. 按固定间隔接收 Pyth Lazer 更新(根据资产为 50 ms 或 200 ms)。
  2. 将更新推送到预定义的链上账户。
  3. 程序直接读取相应账户。
这些公共 RPC 端点目前可免费用于开发:
Magic Router Devnet: https://devnet-router.magicblock.app
Solana Devnet: https://api.devnet.solana.com
ER Devnet: https://devnet.magicblock.app
TEE Devnet: https://devnet-tee.magicblock.app/
查看更多详情请点击 这里
本页是概览。若要查看字节级细节和代码示例,请参阅实现方式
代码片段刻意使用占位符,以便将重点放在流程本身。