---
title: ダンクシャーディング
description: イーサリアムをスケーリングするための2つの連続したアップグレードである、プロト・ダンクシャーディングとダンクシャーディングについて学びます。
lang: ja
template: roadmap
summaryPoints:
  - ダンクシャーディングは、イーサリアムのスケーラビリティと容量を向上させるための複数段階のアップグレードです。
  - 最初の段階であるプロト・ダンクシャーディングでは、ブロックにデータブロブを追加します。
  - データブロブは、ロールアップがイーサリアムにデータを投稿するためのより安価な方法を提供し、そのコストはより低いトランザクション手数料という形でユーザーに還元されます。
  - その後、完全なダンクシャーディングにより、データブロブを検証する責任がノードのサブセット全体に分散され、イーサリアムは毎秒10万トランザクション以上にさらにスケーリングされます。
---

**ダンクシャーディング**は、[イーサリアム](/)が真にスケーラブルなブロックチェーンになるための方法ですが、そこに到達するにはいくつかのプロトコルアップグレードが必要です。**プロト・ダンクシャーディング**は、その過程における中間ステップです。どちらもレイヤー2 (L2) でのトランザクションをユーザーにとって可能な限り安価にすることを目的としており、イーサリアムを毎秒10万トランザクション以上にスケーリングするはずです。

## プロト・ダンクシャーディングとは何ですか？ {#what-is-protodanksharding}

プロト・ダンクシャーディング（[EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)としても知られています）は、[ロールアップ](/layer-2/#rollups)がより安価なデータをブロックに追加するための方法です。この名前は、アイデアを提案した2人の研究者、ProtolambdaとDankrad Feistに由来しています。歴史的に、ロールアップはトランザクションを`CALLDATA`に投稿するという事実により、ユーザートランザクションをどれだけ安くできるかに制限がありました。

ロールアップは短期間だけデータを必要とするにもかかわらず、すべてのイーサリアムノードによって処理され、オンチェーンに永久に保存されるため、これは高価です。プロト・ダンクシャーディングは、送信してブロックに添付できるデータブロブを導入します。これらのブロブ内のデータはEVMからアクセスできず、一定期間（執筆時点では4096エポック、または約18日間に設定されています）後に自動的に削除されます。これにより、ロールアップはデータをはるかに安価に送信でき、節約されたコストをより安価なトランザクションという形でエンドユーザーに還元できます。

<ExpandableCard title="ブロブによってロールアップが安価になるのはなぜですか？" eventCategory="/roadmap/danksharding" eventName="clicked why do blocks make rollups cheaper?">

ロールアップは、トランザクションをオフチェーンでバッチ処理し、その結果をイーサリアムに投稿することでイーサリアムをスケーリングする方法です。ロールアップは基本的に、データと実行チェックの2つの部分で構成されています。データは、イーサリアムに投稿される状態変更を生成するためにロールアップによって処理されるトランザクションの完全なシーケンスです。実行チェックは、提案された状態変更が正しいことを確認するために、誠実なアクター（「プルーバー」）によってそれらのトランザクションを再実行することです。実行チェックを実行するには、誰でもダウンロードして確認できる十分な期間、トランザクションデータが利用可能である必要があります。これは、ロールアップのシーケンサーによる不正行為をプルーバーが特定し、異議を唱えることができることを意味します。ただし、永久に利用可能である必要はありません。

</ExpandableCard>

<ExpandableCard title="ブロブデータを削除しても問題ないのはなぜですか？" eventCategory="/roadmap/danksharding" eventName="clicked why is it OK to delete the blob data?">

ロールアップは、トランザクションデータへのコミットメントをオンチェーンに投稿し、実際のデータをデータブロブで利用できるようにします。これにより、プルーバーはコミットメントが有効であることを確認したり、間違っていると思われるデータに異議を唱えたりすることができます。ノードレベルでは、データのブロブはコンセンサス・クライアントに保持されます。コンセンサス・クライアントは、データを見たこと、およびデータがネットワーク全体に伝播されたことを証明します。データが永久に保持されると、これらのクライアントは肥大化し、ノードを実行するためのハードウェア要件が大きくなります。代わりに、データは18日ごとにノードから自動的にプルーニング（削除）されます。コンセンサス・クライアントの証明は、プルーバーがデータを検証する十分な機会があったことを示しています。実際のデータは、ロールアップオペレーター、ユーザー、またはその他の人によってオフチェーンに保存できます。

</ExpandableCard>

### ブロブデータはどのように検証されますか？ {#how-are-blobs-verified}

ロールアップは、実行したトランザクションをデータブロブに投稿します。また、データへの「コミットメント」も投稿します。これは、データに多項式関数を当てはめることによって行われます。この関数は、さまざまなポイントで評価できます。たとえば、非常に単純な関数 `f(x) = 2x-1` を定義した場合、`x = 1`、`x = 2`、`x = 3` についてこの関数を評価し、`1, 3, 5` という結果を得ることができます。プルーバーは同じ関数をデータに適用し、同じポイントで評価します。元のデータが変更された場合、関数は同一ではなくなるため、各ポイントで評価された値も同一にはなりません。実際には、コミットメントと証明は暗号関数でラップされているため、より複雑です。

### KZGとは何ですか？ {#what-is-kzg}

KZGは、データのブロブを小さな[暗号化された「コミットメント」](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html)に縮小するスキームの3人の[原著者](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11)の名前であるKate-Zaverucha-Goldbergの略です。ロールアップによって送信されたデータのブロブは、ロールアップが不正行為をしていないことを確認するために検証される必要があります。これには、プルーバーがブロブ内のトランザクションを再実行して、コミットメントが有効であったことを確認することが含まれます。これは概念的には、実行クライアントがマークル証明を使用してレイヤー1 (L1) でのイーサリアムトランザクションの有効性を確認する方法と同じです。KZGは、データに多項式方程式を当てはめる代替の証明です。コミットメントは、いくつかの秘密のデータポイントで多項式を評価します。プルーバーはデータに対して同じ多項式を当てはめ、同じ値で評価して、結果が同じであることを確認します。これは、一部のロールアップや、最終的にはイーサリアムプロトコルの他の部分で使用されるゼロ知識技術と互換性のあるデータを検証する方法です。

### KZGセレモニーとは何でしたか？ {#what-is-a-kzg-ceremony}

KZGセレモニーは、イーサリアムコミュニティ全体の多くの人々が、一部のデータを検証するために使用できる秘密のランダムな数字の文字列を共同で生成するための方法でした。この数字の文字列が誰にも知られず、再作成できないことが非常に重要です。これを確実にするために、セレモニーに参加した各人は前の参加者から文字列を受け取りました。次に、新しいランダムな値を作成し（たとえば、ブラウザにマウスの動きを測定させることによって）、前の値と混合しました。その後、その値を次の参加者に送信し、ローカルマシンから破棄しました。セレモニーの参加者のうち1人でもこれを誠実に行った限り、最終的な値は攻撃者には知られません。

EIP-4844のKZGセレモニーは一般に公開され、何万人もの人々が独自のエントロピー（ランダム性）を追加するために参加しました。合計で14万件以上の貢献があり、この種のセレモニーとしては世界最大のものとなりました。セレモニーが損なわれるためには、それらの参加者の100%が積極的に不誠実である必要があります。参加者の視点から見れば、自分が誠実であったことを知っていれば、セレモニーを安全にしたことを知っているため（個別にN人中1人の誠実な参加者という要件を満たしたため）、他の誰かを信頼する必要はありません。

<ExpandableCard title="KZGセレモニーの乱数は何に使われますか？" eventCategory="/roadmap/danksharding" eventName="clicked why is the random number from the KZG ceremony used for?">

ロールアップがブロブにデータを投稿するとき、オンチェーンに投稿する「コミットメント」を提供します。このコミットメントは、特定のポイントでデータに当てはめられた多項式を評価した結果です。これらのポイントは、KZGセレモニーで生成された乱数によって定義されます。その後、プルーバーはデータを検証するために同じポイントで多項式を評価できます。同じ値に到達した場合、データは正しいことになります。

</ExpandableCard>

<ExpandableCard title="KZGのランダムデータを秘密にしておく必要があるのはなぜですか？" eventCategory="/roadmap/danksharding" eventName="clicked why does the KZG random data have to stay secret?">

コミットメントに使用されるランダムな場所を誰かが知っている場合、その特定のポイントに適合する新しい多項式（つまり「衝突」）を生成するのは簡単です。これは、ブロブからデータを追加または削除しても、有効な証明を提供できることを意味します。これを防ぐために、プルーバーに実際の秘密の場所を提供する代わりに、楕円曲線を使用した暗号化された「ブラックボックス」にラップされた場所を実際に受け取ります。これらは、元の値をリバースエンジニアリングできないように値を効果的にスクランブルしますが、巧妙な代数を使用することで、プルーバーと検証者はそれらが表すポイントで多項式を評価できます。

</ExpandableCard>

<Alert variant="warning">
  ダンクシャーディングもプロト・ダンクシャーディングも、ブロックチェーンを複数の部分に分割することを目的とした従来の「シャーディング」モデルには従っていません。シャード・チェーンはもはやロードマップの一部ではありません。代わりに、ダンクシャーディングはブロブ全体にわたる分散データサンプリングを使用してイーサリアムをスケーリングします。これは実装がはるかに簡単です。このモデルは「データシャーディング」と呼ばれることもあります。
</Alert>

## ダンクシャーディングとは何ですか？ {#what-is-danksharding}

ダンクシャーディングは、プロト・ダンクシャーディングから始まったロールアップスケーリングの完全な実現です。ダンクシャーディングは、ロールアップが圧縮されたトランザクションデータをダンプするための膨大なスペースをイーサリアムにもたらします。これは、イーサリアムが何百もの個別のロールアップを簡単にサポートし、毎秒数百万のトランザクションを現実のものにできることを意味します。

これが機能する方法は、ブロックに添付されるブロブをプロト・ダンクシャーディングの6つから、完全なダンクシャーディングでは64に拡張することです。必要な残りの変更はすべて、新しい大きなブロブを処理できるようにするためのコンセンサス・クライアントの動作方法の更新です。これらの変更のいくつかは、ダンクシャーディングとは無関係の他の目的ですでにロードマップに載っています。たとえば、ダンクシャーディングではプロポーザー・ビルダー分離 (PBS) が実装されている必要があります。これは、ブロックの構築とブロックの提案のタスクを異なるバリデータ間で分離するアップグレードです。同様に、ダンクシャーディングにはデータ可用性サンプリングが必要ですが、これは履歴データをあまり保存しない非常に軽量なクライアント（「ステートレスクライアント」）の開発にも必要です。

<ExpandableCard title="ダンクシャーディングにプロポーザー・ビルダー分離が必要なのはなぜですか？" eventCategory="/roadmap/danksharding" eventName="clicked why does danksharding require proposer-builder separation?">

個々のバリデータが32MBのブロブデータに対して高価なコミットメントと証明を生成する必要がないようにするために、プロポーザー・ビルダー分離 (PBS) が必要です。これはホームステーカーに過度の負担をかけ、より強力なハードウェアへの投資を要求することになり、分散化を損ないます。代わりに、専門のブロックビルダーがこの高価な計算作業の責任を負います。その後、彼らはブロック・プロポーザーがブロードキャストできるようにブロックを利用可能にします。ブロック・プロポーザーは単に最も収益性の高いブロックを選択します。誰でも安価かつ迅速にブロブを検証できるため、通常のバリデータはブロックビルダーが誠実に動作していることを確認できます。これにより、分散化を犠牲にすることなく大きなブロブを処理できます。不正行為を行うブロックビルダーは、単にネットワークから排除され、スラッシングされる可能性があります。ブロック構築は収益性の高い活動であるため、他の人が彼らの代わりを務めるでしょう。

</ExpandableCard>

<ExpandableCard title="ダンクシャーディングにデータ可用性サンプリングが必要なのはなぜですか？" eventCategory="/roadmap/danksharding" eventName="clicked why does danksharding require data availability sampling?">

バリデータがブロブデータを迅速かつ効率的に検証するには、データ可用性サンプリングが必要です。データ可用性サンプリングを使用すると、バリデータはブロブデータが利用可能であり、正しくコミットされたことを非常に確信できます。すべてのバリデータは、わずか数個のデータポイントをランダムにサンプリングして証明を作成できるため、どのバリデータもブロブ全体を確認する必要はありません。データが欠落している場合は、すぐに特定され、ブロブは拒否されます。

</ExpandableCard>

### 現在の進捗状況 {#current-progress}

完全なダンクシャーディングは数年先です。その間、KZGセレモニーは14万件以上の貢献を得て終了し、プロト・ダンクシャーディングの[EIP](https://eips.ethereum.org/EIPS/eip-4844)は成熟しました。この提案はすべてのテストネットで完全に実装されており、2024年3月のCancun-Deneb（「デンクン」）ネットワークアップグレードでメインネットに導入されました。

### 参考文献 {#further-reading}

- [プロト・ダンクシャーディングのメモ](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) - _Vitalik Buterin_
- [Dankradによるダンクシャーディングのメモ](https://notes.ethereum.org/@dankrad/new_sharding)
- [Dankrad、Proto、Vitalikによるダンクシャーディングの議論](https://www.youtube.com/watch?v=N5p0TB77flM)
- [KZGセレモニー](https://ceremony.ethereum.org/)
- [Carl BeekhuizenによるDevconでのトラステッドセットアップに関する講演](https://archive.devcon.org/archive/watch/6/the-kzg-ceremony-or-how-i-learnt-to-stop-worrying-and-love-trusted-setups/?tab=YouTube)
- [ブロブのデータ可用性サンプリングに関する詳細](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling)
- [Dankrad FeistによるKZGコミットメントと証明](https://youtu.be/8L2C6RDMV9Q)
- [KZG多項式コミットメント](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html)
