メインコンテンツへスキップ

MagicBlock 上のオラクル

MagicBlock は Pyth Lazer フィードを取り込み、Ephemeral Rollup アカウントを 50–200 ms 間隔(資産ごとに異なる)で更新することで、低遅延かつ高スループットのオラクルデータを提供します。

ライブデモ

リアルタイム価格ストリーム

実装

オンチェーンでオラクルにアクセスする方法を学ぶ

コード例

Github リポジトリを見る
このオラクル例では Pyth Lazer を使っていますが、任意のデータソース向けにオラクルを構築できます。

オンチェーンオラクルとは?

オンチェーンオラクルは、プログラムが信頼できる検証可能なオフチェーンデータを提供します。用途は資産価格からイベント結果までさまざまです。 Solana では、オラクルは通常オンチェーンアカウントを更新し続けます。プログラムはそれらのアカウントを直接読み取るため、実行時に外部 API 呼び出しは不要です。私たちは、広く採用されているクロスチェーンオラクルネットワーク Pyth を利用しています。

なぜオラクルが重要なのか

  • 金融: 清算、資金調達、TWAP などでは、不正確な価格が損失やリスクにつながります
  • ゲーム: スポーツ結果の確定や、ゲーム内状態を現実世界のイベントと同期する用途
  • コンポーザビリティ: 信頼できるオンチェーンデータが安全なプログラム合成を可能にします
正確性と遅延は、正しさ、安全性、UX に直接影響します。

MagicBlock 上のオラクル

MagicBlock は標準的なオラクルパターンに従い、データを合成可能なオンチェーンアカウントへ書き込みますが、更新間隔は 50–200 ms(資産ごとに異なる)で、Solana slot の約 400 ms より高速です。この遅延特性は、清算、コピー取引、その他の時間に敏感なフローに適しています。

オラクルの 2 つの構成要素

  • データソース: 上流の真実です。任意のオンチェーン/オフチェーンフィードを取り込み、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/
詳細は こちら をご覧ください。
このページは概要です。バイトレベルの詳細やコード例については 実装 を参照してください。
コードスニペットは、流れに集中できるよう意図的にプレースホルダーを使っています。