Data Availabilityとは? 5分で分かる解説 [thirdweb翻訳]

:::note info
本記事は下記の翻訳となります。
[『What is Data Availability in Blockchain? A 5-Minute Explainer』](https://blog.thirdweb.com/data-availability-blockchain/)
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1926720/f5c01153-f5ee-9ae2-6edf-a6ee9352d776.png)

## データ可用性とは？

データ可用性とは、ブロックチェーン上のブロックを検証するために必要なデータが、ネットワークの全参加者に実際に利用可能であることを保証することを指します。

この概念は、ブロックチェーンの適切な機能にとって根本的なものです。任意の参加者がブロックチェーンの履歴と現在の状態を完全に検証できるようにすることで、ネットワークの分散性と信頼性のない性質を維持します。

データ可用性の保証がなければ、参加者は独自にトランザクションとブロックの正当性を検証できず、ネットワーク内で不正や検閲などの問題につながる可能性があります。

:::note info
訳者注: ブロックチェーンにおけるData Availabilityを「データ可用性」と訳すと、通常のシステム開発における「データ可用性」と混同されるおそれがあります。
個人的には「ブロックチェーンデータ可用性」と訳すことが多いです。
:::

## データ可用性の重要性

1. 信頼性の確保：データ可用性により、ネットワーク参加者はブロックチェーンのデータセットを独自に検証できます。

2. 分散化の促進：完全な台帳データへの平等なアクセスにより、制御の集中化を防ぎ、単一のエンティティがネットワークを支配できないようにします。

3. セキュリティの向上：ブロックチェーンデータがすぐに利用可能であるため、ノードのネットワークは不整合な記録を検出して修正できます。

さらに、ネットワークとデータ量が増大するにつれ、データ可用性はスケーラビリティのボトルネックになる可能性があります。

ロールアップのようなスケーリングソリューションは、処理のオーバーヘッドをメインネットからオフロードすることでこの問題を解決しますが、これはさらにデータ可用性の重要性を強調することになります。

## ロールアップにおけるデータ可用性

[Optimistic](https://blog.thirdweb.com/what-is-an-optimistic-rollup/)や[ZK-rollups](https://blog.thirdweb.com/zero-knowledge-rollups-zk/)などのロールアップスケーリングソリューションは、トランザクションをオフチェーンで処理し、複数のトランザクションをバッチでメインネットに公開することで、イーサリアムのトランザクション負荷を軽減します。

これによりイーサリアムのスループットが向上し、ガス代が削減されますが、オフチェーン処理の正確性を保証するためにロールアップがデータ可用性を保証する必要があります。

オプティミスティックロールアップは、圧縮されたトランザクションデータ（CALLDATA）をイーサリアムメインネットに投稿することでデータ可用性を確保します。検証者はこのデータを使用して、チャレンジ期間中に不正証明を通じてトランザクションを検証またはチャレンジします。

一方、ゼロ知識ロールアップは、暗号化された[zero-knowledge validity proofs](https://blog.thirdweb.com/zero-knowledge-proof-zkp/)（ゼロ知識有効性証明）を使用して、ステートトランザクションの正確性を保証します。証明はステート更新の有効性を保証しますが、ZKロールアップはすべてのトランザクションデータを公開しません。そのため、データの可用性を保証する必要があります。

> 💡 オプティミスティックロールアップとZKロールアップについて詳しく知りたい方は、この[比較ガイド](https://blog.thirdweb.com/optimistic-rollups-vs-zero-knowledge-zk-rollups/)をご覧ください。

## ブロックチェーンのデータ可用性に関する問題

ブロックチェーンのデータ可用性に関する主要な問題は以下の通りです：

### スループット

モノリシックなブロックチェーンでは、フルノードが完全なブロックデータをダウンロードして保存する必要があり、これがスループットを低下させ、ブロックチェーンが大きくなるにつれてスケーラビリティを制限します。その結果、分散型アプリケーションのパフォーマンスが低下し、確認時間の長期化と高いガス代によってユーザー体験が悪化します。

### ストレージコスト

オンチェーンのデータ可用性を満たすためのストレージ要件は高額になる可能性があり、オフチェーンストレージに依存すると、データの整合性とセキュリティを維持するための追加コストが発生します。これは開発者とユーザーの両方に財政的負担をもたらす可能性があります。

### 信頼性

データ可用性は、ブロックチェーンシステムの信頼性を維持するために重要です。ブロック生成者やシーケンサー（ロールアップの場合）がトランザクションデータを隠蔽すると、ブロックチェーンの透明性と信頼性が損なわれる可能性があります。

これにより、システムがデータ隠蔽攻撃や不正なトランザクションに対して脆弱になり、全体的なセキュリティが損なわれる可能性があります。

## データ可用性ソリューションの探求

データ可用性ソリューションには、ブロックチェーンレベル（オンチェーン）ソリューションとオフチェーンデータ可用性ソリューションの2つのアプローチがあります。以下でそれぞれについて説明します：

### ブロックチェーンレベルのソリューション

ブロックチェーンレベルのソリューションは、フルノードストレージの制限（分散化とスケーラビリティ）に対処するために、オンチェーンデータストレージを変更して効率を高めます。

#### Data-availability sampling (DAS)

データ可用性サンプリングでは、各ノードがブロックデータのランダムに選択されたサブセットをダウンロードして、その可用性を確認するか、データが欠落している場合は他の[ノード](https://blog.thirdweb.com/what-is-an-ethereum-node/)に警告します。

**利点**：各ノードがダウンロードする必要があるデータ量を削減することで、DASは大幅にスケーラビリティを向上させ、同じ時間内により多くのトランザクションを処理できるようにします。

**欠点**：DASアプローチでは、すべてのデータが常にアクセス可能であることを保証せず、データ隠蔽攻撃に対して脆弱である可能性があります。これは、ブロック生成者やシーケンサーがブロックに含めるべきすべてのトランザクションデータを公開しない場合に発生します。

これを防ぐために、DASはデータ消去符号化を採用しています。

**Erasure coding（消去符号化）**：これは、元のデータの一部が欠落している場合でも、この追加情報を使用して再構築できるように、データに冗長な情報を追加することを含みます。

イーサリアムのスケーラビリティロードマップでは、[EIP-4844](https://blog.thirdweb.com/eip-4844/)アップグレード後にDASを実装する計画です。この組み合わせアプローチは、効率的なデータ検証を可能にし、個々のノードのストレージニーズを削減することで、ネットワークの容量を大幅に増加させることを目指しています。

### オフチェーンデータ可用性ソリューション

これらのソリューションは、ノードからのストレージ消費を削減し、ブロックデータを信頼できるオフチェーンストレージソリューションに保存します。

#### Data availability committees (DACs)

Data availability committees（データ可用性委員会）は、データをオフチェーンで保存し、要求に応じて利用可能にする信頼されたノードまたはエンティティのセットです。このようにして、トランザクション処理中、ブロック生成者とシーケンサーは状態遷移を直接DACに公開し、DACはデータ可用性を約束することを証明します。

**利点**：
- イーサリアムのスケーラビリティを向上させ、中央集権化のリスクを軽減し、ユーザーにデータ可用性を保証します。
- DACは通常、許可された限定されたエンティティのセットを持つため、実装が容易でコスト効率が良くなります。

Starkwareの[StarkEx](https://starkware.co/starkex/?ref=blog.thirdweb.com)は、データ可用性を確保するために許可されたDACに依存するValidiumです。トランザクションを処理し、有効性証明を生成し、トランザクションデータをDACに送信します。委員会メンバーは証明を提供し、これがデータ可用性の証明として機能し、イーサリアム上でZKロールアップ証明と共に検証されます。

その他のDACソリューションには、[Arbitrum Nova](https://arbitrum.io/anytrust?ref=blog.thirdweb.com)や[Immutable X](https://www.immutable.com/?ref=blog.thirdweb.com)があります。

#### データ可用性プロトコル

データ可用性プロトコルは、信頼できる第三者に依存せずにオフチェーンストレージソリューションを提供する許可不要のネットワークです。これらはDACに似ていますが、許可されたエンティティに依存する代わりに、これらのプロトコルはProof-of-stake検証者システムを使用します。

誰でも検証者またはデータ可用性マネージャーになり、「ボンド」（ステークトークン）をスマートコントラクトに提出することでオフチェーンでデータを保存できます。検証者ノードがデータを隠蔽したり悪意のある行動をとったりした場合、システムはそのボンドをスラッシュし、データの整合性を維持します。

**利点**：
- これらのプロトコルは、許可されたDACよりも分散化され、安全な環境を提供します。
- オフチェーンストレージにより、イーサリアムメインネットの負荷が軽減され、トランザクションの確認が迅速になり、ガス代が低くなります。
- データ可用性プロトコルへの大規模な参加により、信頼性が向上し、悪意のある攻撃や障害のリスクが軽減されます。

注目すべきデータ可用性プロトコルには、[NEAR](https://near.org/?ref=blog.thirdweb.com)、[Celestia](https://docs.celestia.org/learn/how-celestia-works/data-availability-faq?ref=blog.thirdweb.com)、[Polygon Avail](https://polygon.technology/?ref=blog.thirdweb.com)があります。

## データ可用性とそのソリューションの未来

疑いなく、データ可用性は高いブロックチェーンのスケーラビリティを実現するための重要な要素です。保存されたデータへのアクセス性を確保し、すべての参加者による効率的で安全なトランザクション検証を可能にします。

Web3コミュニティと支持者たちは、これらの課題を克服するために積極的に取り組んでおり、最近の進歩 - データ可用性レイヤーやダンクシャーディングは、データの整合性を犠牲にすることなく、より高いスケーラビリティを実現する道を開いています。

このブログが、データ可用性の重要性、その問題点、そしてソリューションを理解する上で役立つことを願っています。



---
---

:::note info
【Sunriseとは】
SunriseはProof of Liquidity(POL)とFee Abstraction（手数料抽象化）を備えたデータ可用性レイヤーです。 私たちはDAの体験を再構築し、多様なエコシステムからのモジュラー型流動性を活用してロールアップを立ち上げています。
- [Sunrise -  Specialized DA Layer for Proof of Liquidity](https://sunriselayer.io/)
- [Sunrise / Glon Docs](https://docs.sunriselayer.io/)

【Social Links】
- [X(旧 Twitter)[英語])](https://twitter.com/SunriseLayer)
- [X(旧 Twitter)[日本語])](https://twitter.com/SunriseLayer)
- [Discord Community](https://discord.com/invite/sunrise)
- [Medium](https://sunriselayer.medium.com/)
- [Github](https://github.com/sunriselayer)
- [Linkedin](https://www.linkedin.com/company/sunriselayer)


【お問合せ】
Sunriseへのお問い合わせはこちらから👉 [Google Form](https://forms.gle/h8RVahxRtXUvYwnv6)

![1080x360.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839047/8971d83b-3331-4757-dc72-320d28618735.jpeg)

:::