ブロックチェーン・インデックスとデータレイヤー
The Graph(subgraph・分散インデックス)・RPC プロバイダ(Alchemy・Infura・QuickNode)・イベントインデックスの仕組みを解説。ブロックチェーンデータへのアクセス層の設計と DA との関係を整理する。
article technology ja The Graph(subgraph・分散インデックス)・RPC プロバイダ(Alchemy・Infura・QuickNode)・イベントインデックスの仕組みを解説。ブロックチェーンデータへのアクセス層の設計と DA との関係を整理する。ブロックチェーン・インデックスとデータレイヤー
スマートコントラクトが発行するイベント(Event)や状態(State)を効率的にクエリするには、ブロックチェーンのフルノードに直接問い合わせるだけでは不十分なことが多い。「過去 30 日間でアドレス X が関与した全トランザクション」のような複合クエリは、ノードの eth_getLogs を直接叩くより、専用のインデックスレイヤーを使う方が現実的だ。本記事は RPC プロバイダ・イベントインデックス・The Graph・データ可用性との関係を整理する。情報カットオフ ~2025-08、confidence: medium 固定(2026-06 時点での外部再検証は未実施)。
RPC プロバイダ — ノードインフラのマネージドサービス
RPC(Remote Procedure Call)プロバイダはブロックチェーンフルノードを自前で運用するのではなく、JSON-RPC エンドポイントをマネージドサービスとして提供するプロバイダである。フルノードのディスク(数 TB〜数十 TB)・帯域・可用性管理をアウトソースできる。
主要プロバイダ:
| プロバイダ | 特徴 | 対応チェーン |
|---|---|---|
| Alchemy | Developer 向け機能(Notify・Webhooks・NFT API)が豊富 | Ethereum・Polygon・Arbitrum・Solana 等多数 |
| Infura | Consensys 傘下。歴史が長く信頼性が高い | Ethereum・IPFS・Linea 等 |
| QuickNode | グローバルエッジ展開・カスタムアドオン | Ethereum・Solana・BNB Chain 等多数 |
依存リスク: RPC プロバイダへの過度な依存は「中央集権リスク」を生む。2022 年に Infura と Alchemy が MetaMask などのウォレットに同時障害を引き起こした際、DeFi ユーザーが一時的にサービスを利用できなくなった。分散化の観点から、自前ノードや Pocket Network のような分散型 RPC ネットワークを補完的に使う動きがある。
Ethereum Execution API(JSON-RPC 標準): eth_call・eth_getLogs・eth_getTransactionReceipt などの標準メソッドは Ethereum Improvement Proposal(EIP)で定義されており、プロバイダ間の互換性が保たれている。
イベントインデックスの仕組み
Ethereum の EVM ではスマートコントラクトが emit Event(...) によってトランザクションレシート内の「ログ(Log)」に構造化データを記録できる。ログは topics(インデックス可能なフィールド、最大 4 件)と data(任意のバイト列)で構成される。
eth_getLogs によるフィルタリング: フルノードや RPC プロバイダに eth_getLogs を呼ぶと、コントラクトアドレス・トピック(イベント署名ハッシュ)・ブロック範囲を条件に絞り込める。ただし大量ブロック範囲のクエリはタイムアウトリスクがあり、本番アプリではインデックスレイヤーを挟むのが一般的だ。
イベント駆動型バックエンド: フロントエンドアプリは過去のイベントをインデックスした独自データベース(PostgreSQL 等)を保持し、フルノードへのリアルタイムサブスクリプション(WebSocket eth_subscribe)で差分更新するアーキテクチャが一般的だ。
The Graph — 分散型インデックスプロトコル
The Graph は 2020 年に GRT トークンを発行したプロジェクトで、ブロックチェーンデータのオープンインデックスと GraphQL クエリを分散型で提供することを目指している。
Subgraph: The Graph のコアコンセプトは「subgraph」で、開発者が YAML・AssemblyScript でどのコントラクトのどのイベントをどのようにマッピングするかを定義する。定義した subgraph をデプロイすると、インデクサー(Indexer)ノードが指定コントラクトのイベントを過去から処理し、クエリ可能なデータストアを構築する。
GraphQL エンドポイント: 生成された subgraph は GraphQL エンドポイントを公開し、複雑な結合クエリ(例: 「過去 24 時間の Uniswap ペア別 swap 量トップ 10」)を数行の GraphQL で実行できる。
分散化のモデル:
- Indexer: データをインデックスし、クエリを処理するノードオペレーター。GRT をステークしてスラッシングリスクを負う。
- Delegator: Indexer に GRT をデリゲートして報酬を得るトークン保持者。
- Curator: 有望な subgraph に GRT をシグナルして品質を示す役割。
The Graph の現状: 完全な分散化(The Graph Network)は進行中だが、多くの subgraph は引き続き The Graph の中央集権的ホストサービス(Hosted Service)または Subgraph Studio を経由して提供されている。Hosted Service は 2024 年に廃止される予定だったが移行は段階的に進められた。
データ可用性(DA)との関係
**データ可用性(Data Availability)**はブロックチェーンが発行するデータが実際にネットワーク参加者から取得可能であるという性質を指す(tech-198 参照)。
L2 Rollup がトランザクションデータを DA レイヤー(Ethereum L1 calldata / blob、Celestia 等)に公開することで、外部インデクサーが L2 のすべての状態遷移を再構築できるようになる。The Graph は Optimism・Arbitrum などの L2 データもインデックスしており、インデックス層と DA 層は補完関係にある。
ノードアーカイブデータ: 古いブロックの状態(例: ある時点の ERC-20 残高)はフルノードでは保持されないケースがある(Geth の pruned mode)。アーカイブノードのみが全履歴を保持し、Alchemy・QuickNode などの一部プロバイダがアーカイブデータを API として提供している。
オラクルが「外部データをオンチェーンに持ち込む」のに対し、インデックスレイヤーは「オンチェーンのデータをオフチェーンで参照しやすくする」逆方向のインフラであり、dApp 開発の両輪をなす。
Backlinks
- has_parts Developer Tooling & Workflow(開発ツール・ワークフロー)
- related ブロックチェーン・オラクル