---
title: "データ可用性レイヤーとは?"
description: "その概要、仕組み、そしてポストマージのEthereum環境におけるモジュラーブロックチェーンでの重要性"
---

# データ可用性レイヤーとは?

[モジュラー型・モノリシック型ブロックチェーン](https://www.alchemy.com/overviews/modular-vs-monolithic-blockchains)のコアタスクには、トランザクションの実行、トランザクション順序に関するコンセンサスの達成、トランザクションデータの可用性の保証が含まれる。最後の部分——データ可用性——はブロックチェーンにとって重要であり、本記事の焦点となる。

データ可用性とは、トランザクションに関連するすべてのデータがブロックチェーンネットワーク上のノードに対して利用可能であるという考え方を指す。データ可用性が重要な理由は、ノードが互いを信頼する必要なく、独立してトランザクションを検証し、ブロックチェーンの状態を計算できるようにするためである。

本ガイドでは、データ可用性が何を意味するのか、そしてなぜ「データ可用性問題」を解決することが重要なのかを詳しく説明する。また、ブロックチェーンのスケーリングにおいてデータ可用性レイヤーが果たす役割と、データ可用性問題を解決するために提案されているさまざまなソリューションについても学ぶ。

## **データ可用性とは何を意味するのか**

ブロックチェーンにおけるデータ可用性とは、P2Pネットワークを通じて伝播されるすべてのブロックに含まれるデータをノードがダウンロードできる能力を指す。データ可用性を理解するには、現在のブロックチェーンにおけるブロック検証プロセスを把握する必要がある。

### **ブロック検証はどのように機能するか**

まず、**ブロックプロデューサー**は以下を行う:

1. [mempool](https://www.alchemy.com/overviews/what-is-a-mempool)からトランザクションを取得する
1. それらのトランザクションを含む新しいブロックを生成する
1. チェーンに追加されるよう、新しいブロックをP2Pネットワークにブロードキャストする

ブロックプロデューサーは、Proof-of-Workネットワークでは「マイナー」、Proof-of-Stakeネットワークでは「バリデーター」と呼ばれる。

次に、**検証ノード**（[フルノード](https://www.alchemy.com/overviews/archive-nodes)とも呼ばれる）は以下を行う:

1. 新たに提案されたブロックからトランザクションをダウンロードする
1. トランザクションを再実行し、コンセンサスルールへの準拠を確認する
1. ネットワークがブロックを有効と判断した時点で、そのブロックをチェーンの先頭に追加する

以下の図は、ブロック検証の例としてBitcoinを用いたものである:

<ImageBlock
  src="https://media.alchemy.com/1703853086-how-transaction-data-is-broadcast-in-networks.png"
  alt="トランザクションデータがブロックチェーンネットワークを通じてブロードキャストされる仕組みを示す図"
  width={1600}
  height={1019}
  caption="トランザクションデータがブロックチェーンネットワークを通じてブロードキャストされる仕組みを示す図。[Sourcehttps://globalxetfs.co.jp/en/research/bitcoin-the-basics/index.html ]"
/>

しかし、ブロックプロポーザーがトランザクションデータの公開を拒否し、トランザクションに関するメタデータを含むブロックヘッダーのみをブロードキャストし、トランザクション自体を公開しなかった場合はどうなるだろうか。

このようなシナリオでは、フルノードは提案されたブロックの整合性をチェックできなくなる。さらに、ブロックヘッダーのみをダウンロードするライトノードは、無効なブロックを受け入れるよう容易に騙されかねない。

この問題を避けるため、ブロックチェーン——特にモノリシックチェーン——は**ブロックプロポーザー**に対し、ブロックデータをネットワークの他のノードが利用できるようにすることを要求する。

セキュリティを実現するだけでなく、データ可用性のルールは「トラストレス性」を促進する。つまり、ピアはネットワーク上の他者を信頼することなく、独立してトランザクションやブロックを検証できる。

## **データ可用性の課題とは何か**

**データ可用性が必要とされることで生じる課題は、ノードがデータをダウンロードして検証する必要があることによりスループットが低下すること、そして増え続ける情報量をオンチェーンストレージに保存することで、ノードインフラを運用できるエンティティの数が制限されることである。**

モノリシックブロックチェーンは、複数のノードに状態データを冗長的に保存することでデータ可用性を確保しており、あるデータを必要とするピアは、そのデータを別のピアにリクエストするだけで済む。しかし、このデータ可用性の素朴な実装には問題がある。

多数のネットワークノードに同じデータをダウンロード、検証、保存させることは、ブロックチェーンのスループットを大幅に低下させる。これが、Ethereumが1秒あたり15〜20件のトランザクションしか処理できず、Bitcoinの処理速度が1秒あたり約5〜7件にとどまる理由である。

オンチェーンでのデータ保存は、ブロックチェーンのサイズを指数関数的に増大させ、増え続ける状態量を保存する必要があるフルノードのハードウェア要件をさらに引き上げる。

高スペックなハードウェアのコスト上昇は、ノードを運用しようとする個人の数を減少させる傾向があり、これは中央集権化のリスクを直接的に高める。

### **データ可用性とブロックチェーンのスケーリング**

データ可用性は、ブロックチェーンのスケーラビリティという文脈でも重要である。モジュラーチェーンは、データ可用性をコンセンサスや実行から分離することでスループットをスケールさせるよう設計されることが多い。この構成では、ノードはブロックチェーンデータを保存する必要がなくなり、前セクションで述べた制約の一部が取り除かれる。

とはいえ、ネットワークは依然として、すべてのブロックデータが関心を持つ当事者に対して利用可能であることを保証する必要がある。これがデータ可用性問題の根底にある。すなわち、「ブロック全体にアクセスすることなく、各ブロックの背後にあるデータが公開されたことをどのように知ることができるか」という問題である。

データ可用性問題への解決策については、後のセクションで論じる。ここではまず、「データ可用性レイヤー」という概念と、それがブロックチェーンに与える意味について見ていこう。

## **データ可用性レイヤーとは何か**

ブロックチェーンにおいて、データ可用性レイヤーとはブロックチェーンデータの可用性について保存とコンセンサスを提供するシステムのことである。「データ可用性レイヤー」とは、トランザクションデータが保存される場所を指す。

データ可用性レイヤーには2つの種類がある:

### **1. オンチェーンデータ可用性レイヤー**

これは多くのブロックチェーンにおける標準的なアプローチであり、トランザクションを実行するノード自身がデータをオンチェーンで保存する。これにより高いデータ可用性が確保される一方で、分散性とスケーラビリティが制限される。

### 2. **オフチェーンデータ可用性レイヤー**

このアプローチでは、トランザクションデータを元のブロックチェーンネットワークの外部に保存する必要がある。オフチェーンデータ可用性レイヤーは、別のブロックチェーンであることも、開発者が選択した任意のデータストレージシステムであることもある。この場合、データ可用性レイヤーは実行ではなくデータの保存に焦点を当てる。

## **データ可用性レイヤーはどのようにEthereumのスケーリングに役立つか**

シャーディングは、ネットワークを並行して動作する複数のサブチェーンに分割するブロックチェーンのスケーリング手法である。各サブチェーン内のノードは異なるタスクを担当し、計算リソースの効率的な利用を目指す。

Ethereumの現在の[スケーリングロードマップ](https://www.alchemy.com/overviews/ethereum-2-0-your-guide-for-2022)には、[データシャーディング](https://www.alchemy.com/overviews/ethereum-sharding-an-introduction-to-blockchain-sharding)——さまざまなノードクラスタがそれぞれ異なるデータの断片を保存するシステム——の実装計画が含まれている。64個のシャードチェーンが独立して動作し、ノードは自身が割り当てられたシャードに投稿されたデータのみをダウンロードする。これにより、フルノードが現在のように同一のデータを保存する必要がなくなる。

<ImageBlock
  src="https://media.alchemy.com/1703771502-shard-chains.jpeg"
  alt="Ethereumにおけるシャードチェーンの分布を示す図"
  width={1542}
  height={687}
  caption="シャードチェーン"
/>

シャーディングにより、Ethereumは状態データを一箇所に保存する代わりに、複数のデータ可用性レイヤーを採用することになる。ブロックはネットワーク全体に伝播する必要がなくなり、各ブロックのデータを検証するために必要なノードの数も限られたものとなる。これはネットワークがトランザクションをより速く処理できるようになることを意味し、スケーラビリティに直結する。

さらに、データを複数のレイヤーに分散して保存することで、Ethereumの分散性はさらに高まる。

[最近の統計](https://etherscan.io/chartsync/chaindefault)によると、フルノードは現在、ブロックチェーン全体、すなわちおよそ1TBのデータを保存しているが、64個のシャードが稼働すればチェーンデータの1/64のみを保存すればよくなる。これにより、フルノードのストレージ要件が軽減され、Ethereumのバリデーター数が増加する可能性がある。

## **データ可用性レイヤーはRollupsとどのように連携するか**

Rollupsは、計算と状態保存をEthereumの実行環境である[Ethereum Virtual Machine](https://www.alchemy.com/overviews/what-is-the-ethereum-virtual-machine-evm)から切り離すことでEthereumをスケールさせる。EVMはオフチェーンでの計算結果のみを受け取り、トランザクションを再実行することなくそれを自身の状態に適用するため、処理速度の向上とコストの削減が実現される。

Rollupsが、サイドチェーンやPlasmaを含む他のEthereumスケーリングソリューションよりも安全である理由は、データ可用性をEthereumに依存している点にある。[optimistic rollups](https://www.alchemy.com/overviews/optimistic-rollups)と[zero-knowledge rollups](https://www.alchemy.com/blog/zero-knowledge-rollups)は、Ethereum上にトランザクション結果を公開するだけでなく、トランザクションデータもCALLDATAとしてLayer 1に公開する。

RollupからEthereumに投稿されたブロックデータは公開されており、誰でもトランザクションを実行し、rollupチェーンを検証することができる。

これは検閲耐性も促進する。なぜなら、投稿されたデータは、将来ブロックプロデューサーになりうる者がチェーンの状態を再構築し、新しいブロックの生成を開始するために利用できるからである。この仕組みにより、単一のLayer 2オペレーターが恣意的にチェーンを凍結し、rollup上のユーザーを検閲することはできなくなる。

データ可用性レイヤーがセキュリティを提供することで、Rollupsはスケーラビリティの最適化に注力できる。例えば、rollupは処理速度を上げるために、大きなブロックやより速いブロックタイムを選択できる。

これはノードのハードウェア要件を引き上げるものの（ほとんどのrollupではトランザクションを実行する少数の「スーパーノード」が存在する）、状態データが利用可能であることにより、誰でも無効な状態遷移に異議を唱えたり、検閲を防ぐためにブロックを生成したりすることができる。

## **データ可用性レイヤーはモジュラーブロックチェーンとどのように連携するか**

モジュラーブロックチェーンとは、実行、コンセンサス、データ可用性のいずれか特定の機能を担い、残りのタスクについては他のブロックチェーンやオフチェーンシステムに依存するブロックチェーンのことである。モジュラーブロックチェーンスタックは、設定された目標を達成するためにさまざまな形で連携する、異なるモジュラーチェーンから構成される。

モジュラーブロックチェーンスタックにおけるデータ可用性レイヤーは、通常トランザクションデータの保存を担うが、トランザクションの順序に関するコンセンサスを提供することもある。例えば、実行に焦点を当てたモジュラーブロックチェーン（rollupsやvalidiumsなど）は、状態更新の背後にあるデータを保存するためにオフチェーンのデータ可用性レイヤーに依存している。

データ可用性レイヤー自体もモジュラーチェーンである。なぜなら、それはデータの保存に特化し、実行は他のチェーンに委ねているからだ。通常のブロックチェーンとは異なり、純粋なデータ可用性レイヤーはブロックプロデューサーによって公開されたデータの妥当性をチェックしない。ノードはトランザクションの順序についてコンセンサスを取り、適切な手数料が支払われたことを確認するだけでよい。

<ImageBlock
  src="https://media.alchemy.com/1703853301-position-of-data-availability-layer-in-modular-blockchain-stack.jpeg"
  alt="モジュラーブロックチェーンスタックにおけるデータ可用性レイヤーの位置を示す図"
  width={1050}
  height={650}
  caption="モジュラーブロックチェーンスタックにおけるデータ可用性レイヤーの位置を示す図。[Sourcehttps://celestia.org/learn/modular-architectures/ ]"
/>

## **データ可用性レイヤーはWeb3開発者にとって何を意味するか**

独立したデータ可用性レイヤーの存在は、開発サイクルの高速化やユーザー手数料の低減といった、ブロックチェーン開発者にとって重要なメリットをもたらす。

### **1. 開発サイクルの高速化**

新しいブロックチェーンやアプリケーション固有のチェーンを立ち上げる開発者は、データ可用性レイヤーを利用することで、当初から意味のあるセキュリティ特性を得ることができる。ブロックチェーンのセキュリティは通常、検証ノードの分散度によって測られるが、初期段階で理想的なバリデーターの分散を実現するのは現実的ではない。

その代わりに、これらの新しいブロックチェーンは実行と決済に注力し、セキュリティについては既存のデータ可用性ネットワークに依存することができる。したがって、たとえ少数のノードがチェーンを実行していたとしても、無効なトランザクションを公開したりユーザーを検閲したりといった悪意ある行動を取る能力は制限される。

これは、実行を検証するために**不正証明とバリデーティ証明**を計算するために必要な状態データの可用性が保証されているためである。データ可用性はまた、新しいブロックを生成するために必須である、ブロックチェーンの状態への同期を容易にする。

### **2. ユーザー手数料の低減**

Ethereum上の限られたブロックスペースをめぐる競争はトランザクション手数料を押し上げており、大量のデータをオンチェーンに投稿する必要がある[分散型アプリケーション](https://www.alchemy.com/dapps/top/defi-dapps)にとっては望ましくない。dAppはEthereumにデータを公開する代わりに、データ可用性に最適化されたレイヤーに安価にデータを保存できる。

データ可用性レイヤーを利用する手数料が低い理由は2つある。ノードはハードウェア費用を回収するために必要な手数料が少なくて済むこと、そしてデータ可用性ネットワークはブロックサイズを拡大できるため、より多くのトランザクションをブロックに含められることである。

#### **1. ノードは安価なハードウェアで済む**

ノードはデータ保存にのみ関心を持ち、トランザクション実行に必要な帯域幅やハードウェアに投資する必要がない。そのため、ノードはハードウェアへの投資を回収するために高い手数料を課すプレッシャーにさらされない。

#### **2. データ可用性ネットワークはブロックサイズを拡大できる**

データ可用性ネットワークは、[データ可用性サンプリング](https://arxiv.org/abs/1809.09044)により、分散性やセキュリティを損なうことなくブロックサイズを拡大できる。

データ可用性サンプリングにより、ノードはすべてのデータをダウンロードすることなく、ブロックをランダムにサンプリングしてその可用性を確認できる。ブロックスペースをめぐる競争が少ないということは、データ可用性ブロックチェーン上へのデータ保存が平均的に安価であることを意味する。

## **データ可用性ソリューションにはどのような種類があるか**

データ可用性問題への解決策は、通常2つのアプローチを取る。オンチェーンデータストレージを修正するか、データをオフチェーンに保存するかである。以下でこの2つのデータ可用性ソリューションのクラスについて見ていこう。

### **1. 修正されたオンチェーンストレージ**

修正されたオンチェーンストレージでは、効率性とセキュリティを実現するためにオンチェーンでのデータ保存方法を変更する必要がある。修正されたオンチェーンストレージの一形態が、先に述べたデータシャーディングのプロセスである。

シャーディングされたブロックチェーンでは、ノードは特定のシャードに投稿されたデータのみをダウンロードして保存する。言い換えれば、バリデーターは1つのシャードについてはフルノードを運用し、他のシャードについてはライトクライアントとして機能する。

ここで当然生じる疑問は、「ノードは、他のシャードのブロックをダウンロードすることなく、そのシャードのデータが利用可能であることをどうやって確信できるのか」というものである。

ここでデータ可用性サンプリングが登場する。

#### **データ可用性サンプリング（DAS）とは何か**

データ可用性サンプリングとは、ブロックのすべてをダウンロードすることなく、そのブロックの可用性を検証するための仕組みである。ノードは、ブロックの一部をランダムにダウンロードし、それが利用可能かどうかを確認することで、データ可用性サンプリングを適用する。

多数のノードがブロックをランダムにサンプリングすることで、ブロックデータを隠蔽できる確率は低下する。あるノードがブロックの一部が利用不可能であることを発見した場合、それを警告として発し、他のノードに知らせることができる。

<ImageBlock
  src="https://media.alchemy.com/1703853421-nodes-sampling-a-block.png"
  alt="ノードがブロック（「blob」）をサンプリングしてその可用性を確認する仕組みを示す図"
  width={401}
  height={232}
  caption="ノードがブロック（「blob」）をサンプリングしてその可用性を確認する仕組みを示す図。[Source: Vitalik Buterin]"
/>

データ可用性サンプリングは、ブロックのデータが利用可能であるという高い統計的確信をノードに与えることができるが、データ隠蔽攻撃を完全に排除することはできない。データ隠蔽攻撃とは、ブロックプロデューサーが新しいブロックを提案しながら、トランザクションデータのすべてを公開しない場合に発生する。

たとえブロックプロデューサーがブロックのほとんどを公開したとしても、データのごく一部を隠すだけでもセキュリティ上の重大な影響がある。もしrollupオペレーターが、多数のユーザーのトークンを自分自身に移転する無効なトランザクションを実行し、異議申し立てに必要なデータを隠蔽したらどうなるだろうか。

データ隠蔽に対するより強固なセキュリティ保証を得るため、[データ可用性サンプリングと消去符号を組み合わせる](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding)。

#### **消去符号とは何か**

消去符号とは、冗長な断片（消去符号と呼ばれる）を追加することでデータセットを二重化し、その冗長な断片の任意の組み合わせから元のデータを復元できるようにすることで、データの完全性と可用性を高める暗号プリミティブである。

[Ethereumにおけるシャードチェーン](https://www.alchemy.com/overviews/danksharding)は、ブロックに似た「blob」（バイナリ・ラージ・オブジェクト）を用いてトランザクションデータを公開する。blobを公開する前に、ブロックプロデューサーは消去符号を用いて元のデータを拡張しなければならない。これにより、誰でも一部の消去符号にアクセスするだけでブロック全体を再構築できる。

消去符号は、データ隠蔽攻撃を実行しにくくする。消去符号化されたブロックでは、ノードは元のデータを復元するのにごく一部だけを必要とする。したがって、ブロックプロデューサーがデータの隠蔽に成功するためには、データセット全体の大部分——50%以上——を隠す必要がある。

### **2. オフチェーンデータストレージ**

オフチェーンデータストレージは、ノードへの負担を避けるためにデータを別の場所に保存することを伴う。オフチェーンデータストレージソリューションは、データ可用性委員会（DAC）とデータ可用性ネットワークの2種類に分かれる。

#### **1. データ可用性委員会（DAC）**

データ可用性委員会（DAC）とは、ブロックチェーンデータのコピーをオフラインで保持する任務を負った、許可制のエンティティの集合体である。DACは多くの場合、その役割に任命された信頼できるエンティティで構成される。

ブロックプロデューサーは、状態遷移を実行する際、トランザクションデータをDACのメンバーに送信することが求められる。これにより中央集権化のリスクが軽減される。なぜなら、DACはデータをユーザーに利用可能にすることができるからだ——特にブロックプロデューサーが悪意を持って行動し始めた場合には。

ZK-rollupsに類似したEthereumスケーリングソリューションである[Validiums](https://www.alchemy.com/overviews/ethereum-scaling-solutions)は、データ可用性を保証するためにDACを使用する。ブロックプロポーザーは、トランザクションバッチを検証するためのゼロ知識証明を計算することに加え、DACのメンバーからアテステーション（署名）を取得しなければならない。この「可用性証明」は、新しいトランザクションバッチが受け入れられる前に、バリデーティ証明とともにEthereum上で検証される。

DACを使用しているプロジェクトの例としては、DiversiFiやImmutableXが挙げられる。

データ可用性委員会はデータ可用性問題をある程度解決するのに役立つが、一定の欠点もある。DACはしばしば規模が小さく、悪意ある行為者がそのグループを侵害しやすい。また、DACのメンバーは「信頼された」エンティティであるため、不正行為を罰する仕組みが存在しない。

#### 2. データ可用性ネットワーク

データ可用性ネットワークは、ブロックチェーンデータを保存するプロセスを分散化し、信頼の前提を排除することを目指す。データ可用性ネットワークはデータ可用性委員会に類似しているが、[パーミッションレス](https://www.alchemy.com/overviews/permissionless-vs-permissioned-blockchains)アーキテクチャ、トラストレス性、耐障害性という3つの重要な違いがある。

##### **パーミッションレスアーキテクチャ**

データ可用性ネットワークは通常、トランザクションの順序付けとデータの保存のみを目的とするブロックチェーンである。

**Celestia**や**Polygon Avail**のようなデータ可用性ネットワークは、誰でもデータ可用性マネージャーになれるProof-of-Stakeシステムを採用している。そのためには、ユーザーはブロックチェーンへの参加を開始するために必要なステークを積むだけでよい。

##### **トラストレス性**

Proof-of-Stakeデータ可用性ネットワークは、ノードが誠実に行動するよう、クリプトエコノミックインセンティブを利用する。データ保存を任務とする各ノードは、スマートコントラクトに一定の資金をステークしなければならず、リクエストに対してデータを提供できなかった場合、そのステークはスラッシュされうる。この特徴により、データ可用性委員会に存在していた信頼の前提が取り除かれる。

##### **耐障害性**

Proof-of-Stakeデータ可用性ネットワークは、データ可用性委員会よりも参加者の集合が大きいことが多い。これにより、悪意ある行為者がそのグループを侵害してデータ隠蔽攻撃を行うことが難しくなる。

<ImageBlock
  src="https://media.alchemy.com/1703853524-architecture-of-polygon-avail-data-availability-network.png"
  alt="Polygon Availのデータ可用性ネットワークのアーキテクチャを示す図"
  width={1053}
  height={787}
  caption="Polygon Availのデータ可用性ネットワークのアーキテクチャを示す図。"
/>

## 結論

データ可用性は、ブロックチェーンが機能性とセキュリティを維持し続ける能力において重要な役割を果たす。特にモジュラーブロックチェーンという文脈においては、データ可用性レイヤーが意味のある分散性とセキュリティを可能にする。

Ethereumの[将来のスケーラビリティ計画](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698)も、そのデータ保存能力に依存している。Rollupsは親チェーンのデータスループットによって制約を受けるため、Layer 2ソリューションのためのデータ可用性レイヤーとしてのEthereumのパフォーマンスを改善するべく、データシャーディングをはじめとするその他のアップグレードが導入されている。
