拡張は常にイーサリアムにとって避けられない話題の一つであり、イーサリアムが真の「世界コンピュータ」となるためには、スケーラビリティ、安全性、分散化を同時に備える必要がありますが、これらの 3 つの条件を同時に満たすことは業界で「ブロックチェーンの不可能な三角形」と呼ばれ、業界全体で解決されていない大きな課題です。
しかし、2021 年末にイーサリアムの研究者兼開発者であるダンクラッド・ファイストがイーサリアムの新しいシャーディングプランであるダンクシャーディングを提案したことで、「ブロックチェーンの不可能な三角形」を解決するための革新的なプランがもたらされ、業界全体のゲームルールを書き換える可能性すらあります。
本レポートでは、イーサリアムの新しいシャーディングプランであるダンクシャーディングとは何か、その背景についてわかりやすく説明します。このレポートを書く理由は、ダンクシャーディングに関する中国語の記事が非常に少なく、ほとんどが高い知識のハードルを必要とするため、ボカシがその背後にある複雑な原理を簡単な言葉で解説し、Web3 初心者でもイーサリアムの新しいシャーディングプランであるダンクシャーディングとその前提プランである EIP-4844 を理解できるようにするためです。
著者:ボカシボカシ
字数:本レポートは 1 万字を超え、予想読書時間は 21 分です。
発表プラットフォーム:
https://research.web3caff.com/zh/archives/6259
目次#
-
イーサリアムはなぜ拡張が必要なのか?
-
イーサリアムの拡張背景
-
ブロックチェーンの不可能な三角形とは?
-
現在のイーサリアムの拡張解決策は何か?
-
-
イーサリアムの初期シャーディングプラン Sharding1.0
-
イーサリアムの POS コンセンサスメカニズムはどのように機能するのか?
-
初期シャーディングプラン Sharding1.0 とは何か?
-
初期シャーディングプラン Sharding1.0 の欠点は何か?
-
-
イーサリアムの新しいシャーディングプラン ダンクシャーディングとは?
-
前提プラン EIP-4844— 新しい取引タイプ Blob
-
ダンクシャーディング — 完全な拡張プラン
-
データ可用性サンプリング(Data Availability Sampling)
-
纠删码(Erasure Coding)
-
KZG 多項式コミットメント(KZG Commitment)
-
提案者 - ビルダー分離(Proposer/Builder Separation)
-
抗検閲リスト(crList)
-
二槽 PBS(Two-slot Proposer-Builder Separation)
-
-
-
まとめ
-
参考文献
イーサリアムはなぜ拡張が必要なのか?#
イーサリアムの創設者 Vitalik Buterin が 2014 年に「次世代スマートコントラクトと分散型アプリケーションプラットフォーム」というイーサリアムのホワイトペーパーを発表した後、ブロックチェーンは新しい時代を迎えました。スマートコントラクトの誕生により、人々はイーサリアム上で分散型アプリケーション(DApp)を作成できるようになり、NFT、DeFi、GameFi など、ブロックチェーンのエコシステムに一連の革新をもたらしました。
イーサリアムの拡張背景#
イーサリアムのチェーン上のエコシステムが日々成長する中で、ますます多くの人々がイーサリアムを使用し始め、イーサリアムの性能問題が明らかになり始めました。多くの人が同時にイーサリアム上でインタラクションを行うと、ブロックチェーンは「混雑」します。 これは、道路の信号が固定された時間であるのと同じで、一定の数の車両では渋滞を引き起こさないが、ピーク時に多くの車がその道路に入ると、信号が青の時に道路を出る車両の数が新たに入る車両の数を大きく下回り、結果として大きな渋滞が発生し、すべての車両がその道路を通過する時間が延びることになります。ブロックチェーンでも同様で、すべての人のインタラクションリクエストの確認時間が延びることになります。
しかし、ブロックチェーンでは延びるのは時間だけでなく、高額なガス代も引き起こします。(ガス代はマイナーに支払われる手数料と考えられ、マイナーはブロックチェーン内のすべての取引をパッケージ化して処理する責任があります。)マイナーは最も高い価格を提示した取引を優先的に処理するため、みんながガス代を引き上げてより早くインタラクションリクエストの確認を得ようとする「ガス戦争」が引き起こされます。比較的有名な事件は、2017 年の NFT プロジェクトである CryptoKitties の人気がガス代を数百ドルに押し上げ、イーサリアム上での 1 回のインタラクションに数十ドル、さらには 100 ドル以上のガス代がかかるという非常に高いコストを引き起こしました。
このように高額なガス代を引き起こす主な原因は、イーサリアムの性能が既存のユーザーのインタラクションニーズを満たせなくなっていることです。性能の計算において、イーサリアムはビットコインとは異なります。ビットコインは単純に帳簿を処理するだけなので、TPS(取引毎秒)は固定で、毎秒 7 件の取引を処理できますが、イーサリアムは異なります。
イーサリアムはスマートコントラクトの存在により、各取引の内容が異なるため、各ブロックが処理できる取引の数(TPS)は、ブロック内に含まれる取引のデータ量によって決まります。 各取引のデータ量はリアルタイムの需要に基づいて決まります。イーサリアムの性能メカニズムについては以下の情報が理解に役立ちます:(以下の情報はダンクシャーディングを理解するのに役立ちますので、必ずご覧ください~)
-
イーサリアムはガス代に基づいてブロックのデータ量の上限を定めており、1 つのブロックは最大 3000 万ガスのデータ量を保持できます。
-
イーサリアムは各ブロックのデータ量があまりにも大きくなることを望んでいないため、各ブロックには 1500 万ガスのデータ量を目標とするガスターゲット(目標ガス)が設定されています。
-
イーサリアムにはガスのデータ消費基準があり、異なるタイプのデータは異なるガスを消費しますが、ボカシの推定によれば、各ブロックのサイズは約 5KB〜160KB 程度で、平均して 1 つのブロックは 60〜70KB 程度のデータサイズです。
-
1 つのブロックのガス消費がガスターゲットの 1500 万ガスを超えると、次のブロックの基本料金が 12.5% 高くなり、下回ると基本料金が下がります。このメカニズムは自動化された動的調整メカニズムであり、取引のピーク時にはコストを増加させて混雑を緩和し、取引が低迷している時にはコストを下げてより多くの取引を引き付けることができます。
以上のメカニズムを理解することで、イーサリアムの TPS は変動することがわかります。ブロックチェーンエクスプローラーを通じて各ブロックの取引数を確認することで、概算の TPS を算出できます。以下の図から、平均して 1 つのブロックがガスタゲットにちょうど達した場合、約 160 件の取引があり、最高で 300 件以上の取引が可能であることがわかります。 各ブロックの出力時間が 12 秒であるため、TPS は約 13〜30 件の取引となりますが、現在知られているイーサリアムの TPS は最高で毎秒 45 件の取引に達することができます。
図源:Mainnet | Beacon Chain Explorer (Phase 0) for Ethereum 2.0 – BeaconScan
世界的に有名な取引システムである VISA が毎秒数万件の取引を処理できる性能を持っていることを考えると、「世界コンピュータ」となることを目指すイーサリアムが毎秒最大 45 件の取引しか処理できないのは非常に弱いと言えます。したがって、イーサリアムは性能問題を解決するために拡張が急務であり、これはイーサリアムの未来に関わる問題ですが、拡張は簡単なことではありません。なぜなら、ブロックチェーン業界には「不可能な三角形」が存在するからです。
ブロックチェーンの不可能な三角形とは?#
「ブロックチェーンの不可能な三角形」とは、公共のブロックチェーンが同時に 3 つの特性、すなわち分散化、安全性、スケーラビリティを満たすことができないことを指します。
-
分散化:ノードの分散化の程度を指し、ノードが多いほど分散化が進む。
-
安全性:ブロックチェーンネットワーク全体の安全性を指し、攻撃コストが高いほど安全性が高い。
-
スケーラビリティ:ブロックチェーンの取引処理性能を指し、毎秒処理できる取引が多いほどスケーラビリティが高い。
この 3 つの重要性を考えると、分散化と安全性が最も重視されることがわかります。分散化はイーサリアムの基盤であり、分散化がイーサリアムに中立性、検閲耐性、オープン性、データ所有権、ほぼ壊れない安全性を与えています。安全性の重要性は言うまでもありませんが、イーサリアムのビジョンは、分散化と安全性を前提にスケーラビリティを実現することです。その実現の難しさは想像に難くありませんので、これが「ブロックチェーンの不可能な三角形」と呼ばれる所以です。
現在のイーサリアムの拡張解決策は何か?#
「ブロックチェーンの不可能な三角形」を理解した上で、イーサリアムが拡張を実現するためには、分散化と安全性を保証する必要があります。分散化と安全性を確保するためには、拡張の実現においてノードの能力要求を過度に高めてはいけません。ノードはイーサリアムネットワーク全体を維持するために不可欠な役割を果たしており、高要求のノードはより多くの人々がノードになることを妨げ、ますます中心化が進むことになります。ノードはもちろん、ハードルが低い方が良いです。低ハードルのノードはより多くの人々が参加できるようにし、イーサリアムをより分散化し、安全にします。
現在、イーサリアムの拡張プランには 2 つの種類があります:Layer2 とシャーディング(Sharding)。Layer2 は基盤となるブロックチェーン(Layer1)の拡張に対するオフチェーン解決策であり、原理はブロックチェーン上のリクエストをオフチェーンで実行することです。Layer2 のプランにはいくつかの種類がありますが、本レポートでは Layer2 プランの中でも特に Rollup に焦点を当てて紹介します:Rollup の原理は、数百件の取引をオフチェーンでクレープのようにパッケージ化し、一つの取引としてイーサリアムに送信して拡張を実現することです。これにより、各人がイーサリアムにアップロードする費用を安く抑えることができ、同時にイーサリアムの安全性を引き継ぐことができます。
Rollup は現在、2 つのタイプに分かれています:Optimism Rollup(楽観的 Rollup)と ZK Rollup(ゼロ知識証明 Rollup)。この 2 つの Rollup の違いを簡単に言うと、Optimism Rollup はすべての取引が誠実で信頼できると仮定し、多くの取引を圧縮して一つの取引としてイーサリアムに提出します。** 提出後には一定の時間ウィンドウ(チャレンジ期間 — 現在は 1 週間)** があり、誰でも疑問を持って挑戦を行い、取引の真実性を検証できますが、ユーザーが OP Rollup 上の ETH をイーサリアムに移動させるには、チャレンジ期間が終了するまで待たなければなりません。
ZK Rollup は、すべての取引が有効であることを証明するためにゼロ知識証明を生成し、すべての取引実行後の最終状態の変化をイーサリアムにアップロードします。Optimism Rollup と比較して、ZK Rollup はより将来性があります。ZK Rollup は、Optimism Rollup のように圧縮されたすべての取引の詳細をアップロードする必要がなく、ゼロ知識証明と最終的な状態の変化のデータだけをアップロードすればよいことを意味します。これにより、スケーラビリティの面で OP Rollup よりも多くのデータを圧縮でき、また OP Rollup のように最大 1 週間のチャレンジ期間を待つ必要もありません。しかし、ZK Rollup の最大の欠点は開発の難易度が非常に高いことですので、短期的には Optimism Rollup が L2 市場の大部分を占めることになるでしょう。
Layer2 の他に、もう一つの拡張解決策が私たちの本文の主役であるシャーディング(Sharding)です。Layer2 はイーサリアム上の取引をオフチェーンで処理することを知っています。しかし、Layer2 がどのようにデータを処理しても、イーサリアム自体の性能は変わりません。したがって、Layer2 が実現できる拡張効果はそれほど顕著ではありません。
シャーディングはイーサリアムの Layer1 レベルで拡張を実現することですが、イーサリアム上で拡張を実現するためには、イーサリアムの分散化と安全性を確保する必要がありますので、ノードへの負担を過度に増やすことはできません。
シャーディングの具体的な実装プランは、イーサリアムコミュニティで常に議論されているトピックです。** 現在の最新のプランが本文のテーマであるダンクシャーディングです。** ダンクシャーディングは最新のシャーディングプランであり、ダンクシャーディングを説明する前に、ボカシは古いシャーディングプランがどのようなもので、なぜ採用されなかったのかを簡単に紹介します。
イーサリアム初期シャーディングプラン Sharding1.0#
シャーディング 1.0 プランを説明する前に、ボカシはイーサリアムの現在の POS コンセンサスメカニズムがどのように機能しているかを紹介する必要があります。これはシャーディング 1.0 プランとダンクシャーディングを理解するための必須の前提知識です。シャーディング 1.0 プランについては簡潔に概説します(何をするかを知っていれば大丈夫です)。
イーサリアムの POS コンセンサスメカニズムはどのように運作するのか?[7]#
コンセンサスメカニズムは、ブロックチェーン内のすべてのネットワークを維持するノードが合意に達するための一連のシステムであり、その重要性は言うまでもありません。イーサリアムは 2022 年 9 月 15 日にイーサリアム 2.0 のアップグレード段階の「The Merge」を完了し、すなわち POW(プルーフ・オブ・ワーク)のイーサリアムメインネットと POS(プルーフ・オブ・ステーク)の信号チェーンが統合され、POS プルーフ・オブ・ステークメカニズムが正式に POW プルーフ・オブ・ワークメカニズムに取って代わりました。
POW プルーフ・オブ・ワークメカニズムでは、マイナーは計算能力の積み重ねを通じてブロック生成権を競いますが、POS プルーフ・オブ・ステークメカニズムでは、マイナーは 32ETH をステーキングしてイーサリアムの検証ノードとなることでブロック生成権を競います(ステーキングの方法についてはここでは詳しく説明しません)。
コンセンサスメカニズムの変化に加えて、イーサリアムのブロック生成時間も以前の変動するブロック生成時間から固定時間に変更され、スロット(Slot)とエポック(Epoch)の 2 つの単位に分かれました:スロットは 12 秒、エポックは 6.4 分です。1 つのエポックには 32 のスロットが含まれ、簡単に言えば、12 秒ごとに 1 つのブロックが生成され、6.4 分ごとに 32 のブロックが 1 つの周期(エポック)として生成されます。
マイナーが 32ETH をステーキングして検証ノードになると、信号チェーンはランダムアルゴリズムを使用してブロック生成ノードを選択し、各ブロックはランダムに 1 回ブロック生成ノードを選択します。同時に、各エポック内で信号チェーンはすべての検証ノードを平均してランダムに各ブロックに少なくとも 128 の検証ノードからなる「委員会(Committees)」を割り当てます。
つまり、各ブロックには全ノード数の 32 分の 1 の検証ノードが割り当てられ、これらの検証ノードからなる「委員会(Committees)」は各ブロック生成ノードがパッケージ化したブロックを検証投票する必要があります。ブロック生成ノードがブロックをパッケージ化した後、3 分の 2 以上の検証ノードが投票を通過すれば、ブロックが成功裏に生成されます。
初期シャーディングプラン Sharding1.0 とは何か?[7]#
初期のシャーディングプラン Sharding1.0 の設計理念では、イーサリアムは元々の 1 つのメインチェーンから最大 64 のシャーディングチェーンに設計され、多くの新しいチェーンを追加することで拡張を実現します。このプランでは、各シャーディングチェーンがイーサリアムのデータを処理し、信号チェーンに渡し、信号チェーンはイーサリアム全体の調整を担当し、各シャーディングチェーンのブロック生成ノードと委員会は信号チェーンによってランダムに割り当てられます。
信号チェーンとシャーディングチェーンはクロスリンク(crosslinks)を通じて接続されます。 信号チェーンのブロックは同じブロックのシャーディングブロックにハッシュ値を与え、このシャーディングブロックはそのハッシュ値を持って次の信号ブロックに渡すことでクロスリンクを実現します。もし逃した場合は次の信号ブロックに渡せばよいのです。
初期シャーディングプラン Sharding1.0 の欠点は何か?#
簡単に言えば、シャーディング 1.0 のプランはイーサリアムを多くのシャーディングチェーンに分割してデータを処理し、そのデータを信号チェーンに渡すことで拡張を達成するものですが、このプランには多くの欠点があります:
** 開発の難しさ:** イーサリアムを 64 のシャーディングチェーンに分割しつつ、正常に機能させることは技術的に非常に困難であり、複雑なシステムほど予期しないバグが発生しやすく、一度問題が発生すると修正するのも非常に面倒です。
** データ同期の問題:** 信号チェーンは各エポックごとに検証を担当する「委員会(committees)」を再度シャッフルしますので、毎回検証ノードを再割り当てすることは大規模なネットワークのデータ同期を意味します。ノードが新しいシャーディングチェーンに割り当てられると、そのシャーディングチェーンのデータを同期する必要があり、ノードの性能や帯域幅はそれぞれ異なるため、所定の時間内に同期を完了することは難しいです。しかし、ノードにすべてのシャーディングチェーンのデータを直接同期させると、ノードへの負担が大きくなり、イーサリアムはますます中心化してしまいます。[2]
** データ量の増加の問題:** イーサリアムの処理速度は大幅に向上しましたが、多くのシャーディングチェーンが同時にデータを処理することで、ストレージデータ量が急増します。イーサリアムのデータ量の膨張速度は以前の数倍になるでしょうし、ノードのストレージ性能への要求も増加し続け、さらに中心化を引き起こします。
**MEV の問題を解決できない:** 最大抽出可能価値(MEV)は、ブロック内の取引を追加または除外し、ブロック内の取引の順序を変更することで、ブロック生成から抽出できる標準的なブロック報酬や燃料費を超える最大値を指します。イーサリアムでは、取引が発起されると、その取引は mempool(実行待ちの取引を保存するプール)に置かれ、マイナーがパッケージ化するのを待ちます。マイナーは mempool 内のすべての取引を見ることができ、マイナーの権限は非常に大きいです。マイナーは取引の包含、除外、順序を掌握しています。もし誰かがより多くのガス代を支払ってマイナーを賄賂し、取引プール内の取引の順序を調整して利益を得た場合、これは最大抽出可能価値(MEV)に該当します。[6]
例を挙げると:
- MEV の手法の一つに「サンドイッチ攻撃」または「クリンチ攻撃」と呼ばれるものがあります。この MEV を抽出する手法は、大規模な DEX 取引を監視することで、例えば誰かが Uniswap で 100 万ドル相当のアルトコインを購入しようとすると、その取引がそのアルトコインの価格を大きく引き上げることになります。この取引が mempool に置かれたとき、監視ロボットはこの取引を検出し、ロボットはマイナーに賄賂を渡してその人の前にこのアルトコインを購入する操作を挿入し、その後その人の購入操作の後に売却操作を行います。まるでサンドイッチのように、大規模な DEX 取引を行う人を真ん中に挟むことで、サンドイッチ攻撃を行った人はその人の大規模な取引による利益を得ることができ、大規模な取引を行った人は損失を被ることになります。[6]
MEV の存在は、イーサリアムにいくつかの悪影響をもたらしてきました。例えば、「サンドイッチ攻撃」はユーザーに損失と悪化したユーザー体験をもたらし、先行者競争によるネットワークの混雑、高いガス代、さらにはノードの中心化問題を引き起こします。MEV の価値が高いノードは、収益を通じてネットワーク内でより多くのシェアを占めることができるため、より多くの収益=より多くの ETH=より多くのステーキング権益となります。さらに、MEV がもたらす高額なコスト(先行者によるネットワークの混雑と高ガス代)は、イーサリアムのユーザーを絶えず流出させ、MEV の価値がブロック報酬を大幅に超える場合、イーサリアム全体のコンセンサスが不安定になり、安全性が損なわれる可能性があります。初期シャーディングプランは MEV がもたらす一連の問題を解決できません。
2021 年末にイーサリアムの研究者兼開発者であるダンクラッド・ファイストがイーサリアムの新しいシャーディングプランであるダンクシャーディングを提案した後、ダンクシャーディングはイーサリアムコミュニティによってシャーディング拡張を実現するための最良のプランと見なされ、イーサリアムに新たな革命をもたらす可能性があります。
ダンクシャーディングは、イーサリアムの拡張問題を解決するための新しいシャーディングの考え方を使用しており、Layer2 の Rollup を中心に拡張するシャーディングプランです。この新しいシャーディングプランは、ノードへの負担を大幅に増やすことなく、分散化と安全性を保証しながらスケーラビリティの問題を解決し、同時に MEV がもたらす悪影響も解決します。
以下の図から、次のイーサリアムのアップグレード段階「The Surge」と「The Scourge」の目標は、それぞれ Rollup 内で 10 万 TPS 以上を実現し、MEV がもたらす中心化や他のプロトコル上のリスクを回避することです。
図 / 出典:vitalik.eth 翻訳:ethereum.cn
では、ダンクシャーディングはどのようにイーサリアムの拡張問題を解決するのでしょうか?まずはダンクシャーディングの前提プラン EIP-4844から始めましょう。
前提プラン EIP-4844— 新しい取引タイプ Blob#
EIP-4844 はイーサリアムに新しい取引タイプ —Blob Transaction を導入しました。この新しい取引タイプ Blob は、イーサリアムに追加の外部データベースを提供します:
-
1 つの Blob のサイズは約 128KB です。
-
1 つの取引は最大 2 つの Blob-256KB を持つことができます。
-
各ブロックのターゲット Blob は 8 個 - 1MB で、最大で 16 個の Blob-2MB を保持できます(ターゲットの概念は拡張の背景で言及されています)。
-
Blob のデータは一時的に保存され、一定の時間後に削除されます(現在コミュニティでは 30 日を推奨しています)。
現在、イーサリアムの各ブロックの平均サイズは約 85KB 程度であり、Blob がイーサリアムにもたらす追加のストレージスペースは非常に大きいです。 イーサリアムのすべての帳簿の総データ量は、イーサリアムの誕生以来約 1TB 程度しかありませんが、Blob は毎年イーサリアムに 2.5TB〜5TB の追加データ量をもたらし、これはイーサリアムの帳簿データ量の数倍に相当します。**
EIP-4844 で導入された Blob 取引は、Rollup に特化したものであり、Rollup のデータは Blob の形式でイーサリアムにアップロードされ、追加のデータスペースにより Rollup はより高い TPS とより低いコストを実現できます。 同時に、元々Rollup が占有していたブロックスペースが他のユーザーに解放されます。
Blob のデータは一時的に保存されるため、データ量の急増はノードのストレージ性能に対する負担を増やすことはありません。 もし Blob のデータ量を 1 ヶ月間一時的に保存するだけであれば、同期するデータ量は各ブロックノードが 1MB〜2MB のデータをダウンロードする必要があります。ノードの帯域幅要求から見ると、これはそれほど負担ではないようです。したがって、データのストレージ量から見ると、ノードは固定の 200GB〜400GB 程度のデータ量(1 ヶ月分のデータ量)をダウンロードして保存する必要があります。分散化と安全性を保証しつつ、ノードの負担をわずかに増やすことで、TPS の向上とコストの削減は数十倍、さらには数百倍に達することができます。これはイーサリアムのスケーラビリティ問題を解決するための絶好のプランです。
もしデータが削除された場合、ユーザーは以前のデータにアクセスできなくなりますか?
まず、イーサリアムのコンセンサスプロトコルの目的は、すべての履歴データを永遠に保存することではありません。むしろ、その目的は高度に安全なリアルタイムの公告板を提供し、他の分散型プロトコルに長期保存スペースを確保することです。公告板の存在は、公告板に公開されたデータが十分な時間留まることを保証するためのものであり、これらのデータを必要とするユーザーやプロトコルは、データを取得して保存するための十分な時間を持つことができます。したがって、これらの Blob データを保存する責任は、Layer2 のプロジェクトチームや分散型ストレージプロトコルなどの他の役割に委ねられます。[3]
ダンクシャーディング — 完全拡張プラン#
EIP-4844 は、イーサリアムが Rollup を中心に拡張するための第一歩を実現しましたが、イーサリアムにとって EIP-4844 が達成した拡張効果は遠く及びません。完全なダンクシャーディングプランでは、Blob が保持できるデータ量を各ブロックの 1〜2MB から 16MB〜32MB にさらに拡張し、MEV がもたらす問題を解決するための新しいメカニズムである出ブロック者 - ビルダー分離(PBS)を提案しています。
EIP-4844 の基盤の上で拡張を続けるには、どのような課題があるのかを知る必要があります:
** ノードの負担が大きすぎる:**EIP-4844 では 1〜2MB の Blob がノードに与える負担は完全に受け入れられますが、Blob のデータ量を 16 倍に拡大して 16〜32MB にすると、データ同期やデータストレージの負担がノードの負担を過大にし、イーサリアムの分散化程度が低下します。
** データ可用性の問題:** ノードがすべての Blob データをダウンロードしない場合、データ可用性の問題に直面します。データがチェーン上でオープンであり、いつでもアクセス可能でない場合、例えばイーサリアムノードが Optimism Rollup 上のある取引に疑念を持ち、挑戦を発起しようとした場合、Optimism Rollup がそのデータを提出しないと、元のデータを取得できず、その取引に問題があることを証明できません。したがって、データ可用性の問題を解決するためには、データがいつでもオープンでアクセス可能であることを保証する必要があります。
では、ダンクシャーディングはこれらの問題をどのように解決するのでしょうか?
データ可用性サンプリング(Data Availability Sampling)#
ダンクシャーディングは、ノードの負担を軽減しつつデータ可用性を保証するためのプラン — データ可用性サンプリング(Data Availability Sampling)を提案しました。
データ可用性サンプリング(DAS)の考え方は、Blob 内のデータをデータの断片に分割し、ノードが Blob データをダウンロードするのではなく、Blob データの断片をランダムに抽出することに変えることです。Blob のデータ断片はイーサリアムの各ノードに分散されますが、完全な Blob データはイーサリアムの全帳簿に保存されます。前提として、ノードは十分に多く、分散化されている必要があります。
例を挙げると、Blob のデータが 10 個の断片に分割され、全ネットワークに 100 個のノードがあるとします。各ノードはランダムに 1 つのデータ断片を抽出してダウンロードし、抽出した断片の番号をブロックに提出します。1 つのブロック内で全ての番号の断片が揃うと、イーサリアムはその Blob のデータが可用であると見なします。断片を組み合わせることで元のデータを復元できます。ただし、100 個のノードが特定の番号の断片を抽出できないという非常に低い確率が存在するため、その場合データが欠落します。これは一定程度で安全性を低下させますが、確率的には受け入れ可能です。
ダンクシャーディングはデータ可用性サンプリング(DAS)を実現するために、2 つの技術、すなわち纠删码(Erasure Coding)と KZG 多項式コミットメント(KZG Commitment)を採用しています。
纠删码(Erasure Coding)#
纠删码(Erasure Coding)は、データの耐障害性を確保するためのコーディング技術であり、纠删码を使用してデータを切り分けることで、すべてのイーサリアムノードは 50% 以上のデータ断片を持っているだけで元のデータを復元できます。 これにより、データが欠落する確率が大幅に減少します。具体的な実装原理は複雑ですが、ここでは数学的な公式を用いて原理を概略的に説明します:[2]
-
まず、関数 f (x) = ax + b を構築し、任意の 4 つの x 値を取ります。
-
m = f (0) = b、n = f (1) = a + b と設定し、a = n – b、b = m が得られます。
-
次に、p = f (2)、q = f (3) と設定し、p = 2a + b = 2n – m、q = 3a + b = 3n – 2m が得られます。
-
その後、m、n、p、q の 4 つの断片が全ネットワークのノードに分散されます。
-
数学的な公式に基づいて、2 つの断片を見つけるだけで他の 2 つの断片が何であるかを計算できます。
-
n と m を見つけた場合、直接 q=3n-2m と p=2n-m を計算できます。
-
q と p を見つけた場合、(2p=4n-2m)-(q=3n-2m)を計算して 2p-q=n とし、直接 m を計算できます。
簡単に言えば、纠删码は数学的原理を利用して Blob データを多くのデータ断片に切り分け、イーサリアムのノードはすべてのデータ断片を収集する必要はなく、50% 以上の断片を収集するだけで Blob の元のデータを復元できます。 これにより、断片収集が不十分である確率が大幅に低下し、その確率は無視できるほどになります。
KZG 多項式コミットメント(KZG Commitment)#
KZG 多項式コミットメント(KZG Commitment)は、纠删码のデータ完全性の問題を解決するための暗号技術です。ノードは纠删码で切り分けられたデータ断片をランダムに抽出するだけなので、ノードはこのデータ断片が本当に Blob の元のデータから来たものであるかどうかわかりません。したがって、コーディングを担当する役割は、KZG 多項式コミットメントを生成してこの纠删码のデータ断片が元のデータの一部であることを証明する必要があります。 KZG の役割はメルクルツリーに似ていますが、形状が異なります。KZG のすべての証明は同じ多項式上にあります。
ダンクシャーディングは纠删码と KZG 多項式コミットメントを通じてデータ可用性サンプリング(DAS)を実現し、Blob の追加データ量を 16MB〜32MB に拡大する際にノードの負担を大幅に軽減しました。現在、イーサリアムコミュニティでは、データ断片をさらに切り分けて帯域幅と計算量の要求を低下させるための「2D KZG スキーム」というプランも提案されていますが、最終的に使用される具体的なアルゴリズムについてはコミュニティで活発に議論されています。DAS の設計も継続的に最適化されています。
イーサリアムにとって、データ可用性サンプリング(DAS)は Blob データ量を 16MB〜32MB に拡張する際にノードの負担を軽減しましたが、まだ 1 つの問題が残っています:誰が元のデータをコーディングするのか?
Blob の元のデータをコーディングするためには、コーディングを行うノードが完全な元のデータを持っている必要があります。これを実現するためには、ノードに対する要求が高くなります。ボカシが以前に述べたように、ダンクシャーディングは MEV がもたらす問題を解決するために新しいメカニズムである ** 出ブロック者 - ビルダー分離(PBS)** を提案しました。このプランは、実際には MEV の問題を解決するだけでなく、コーディングの問題も解決します。
提案者 - ビルダー分離(Proposer/Builder Separation)#
まず、データ可用性サンプリング(DAS)は Blob の検証に対するノードの負担を軽減し、低構成と分散化された検証を実現しましたが、ブロックを生成するには完全な Blob データを持ってコーディング処理を行う必要があります。これにより、イーサリアムの全ノードに対する要求が大幅に高まります。提案者 - ビルダー分離(PBS)は、ノードをビルダー(Builder)と提案者(Proposer)の 2 つの役割に分けることを提案しています。性能が高いノードはビルダー(Builder)になり、性能が低いノードは提案者(Proposer)になります。
現在、イーサリアムのノードは 2 種類に分かれています:フルノードとライトノード。フルノードはイーサリアム上のすべてのデータ(取引リストやブロックボディなど)を同期する必要があります。フルノードはブロックのパッケージ化と検証の 2 つの役割を担っています。フルノードはブロック内のすべての情報を見ることができるため、フルノードは取引の順序を再調整したり、追加したり削除したりして MEV の価値を得ることができます。ライトノードはすべてのデータを同期する必要はなく、ブロックヘッダーを同期して出ブロックを検証するだけで済みます。[1]
提案者 - ビルダー分離(PBS)が実現された後:
-
性能構成が高いノードはビルダー(Builder)になり、ビルダーは Blob データをダウンロードしてコーディングし、ブロック(Block)を作成して他のノードにブロードキャストします。ビルダーにとっては、同期するデータ量と帯域幅の要求が高いため、相対的に中心化します。
-
性能構成が低いノードは提案者(Proposer)になり、提案者はデータの有効性を検証し、ブロックヘッダー(Block Header)を作成してブロードキャストするだけで済みます。提案者にとっては、同期するデータ量と帯域幅の要求が低いため、分散化されます。
PBS はパッケージ化と検証の役割を分離することでノードの作業分担を実現し、性能構成が高いノードがすべてのデータをダウンロードしてコーディングを行い、性能構成が低いノードが抽出検証を担当します。では、MEV の問題はどのように解決されるのでしょうか?
抗検閲リスト(crList)#
PBS はパッケージ化と検証の作業を分離したため、ビルダー(Builder)にとっては取引を検閲する能力が大幅に向上します。ビルダーは特定の取引を故意に無視したり、自由に順序を変更したりして MEV を得ることができますが、抗検閲リスト(crList)がこれらの問題を解決します。
抗検閲リスト(crList)のメカニズム:[1]
-
ビルダー(Builder)がブロック取引をパッケージ化する前に、提案者(Proposer)はまず抗検閲リスト(crList)を公開します。この crList には mempool 内のすべての取引が含まれています。
-
ビルダー(Builder)は crList 内の取引をパッケージ化して順序を決定することしかできません。これは、ビルダーが自分の私的な取引を挿入して MEV を得ることも、特定の取引を故意に拒否することもできないことを意味します(ガス制限が満たされない限り)。
-
ビルダー(Builder)がパッケージ化を終えた後、最終版の取引リストのハッシュを提案者(Proposer)にブロードキャストします。提案者はその中から 1 つの取引リストを選択してブロックヘッダー(Block Header)を生成し、ブロードキャストします。
-
ノードがデータを同期する際、提案者(Proposer)からブロックヘッダーを取得し、ビルダー(Builder)からブロックボディを取得して、ブロックボディが最終的に選択されたバージョンであることを確認します。
抗検閲リスト(crList)は、「サンドイッチ攻撃」のような MEV がもたらす悪影響を大幅に低減し、ノードは私的な取引を挿入して類似の MEV を得ることができなくなります。**
イーサリアムにおける PBS の具体的な実装プランはまだ議論中ですが、現在初期実装のプランとして二槽 PBS が考えられています。
二槽 PBS(Two-slot Proposer-Builder Separation)#
二槽 PBS は競争入札の方式を採用してブロック生成を決定します:[2]
-
ビルダー(Builder)は crList を受け取った後、取引リストのブロックヘッダーを作成し、入札します。
-
提案者(Proposer)は最終的に入札に成功したブロックヘッダーとビルダー(Builder)を選択し、提案者は無条件に入札料を受け取ります(有効なブロックが生成されるかどうかに関係なく)。
-
検証委員会(Committees)が入札されたブロックヘッダーを確認します。
-
ビルダー(Builder)は入札されたブロックボディを開示します。
-
検証委員会(Committees)が入札されたブロックボディを確認し、検証投票を行います(通過すればブロックが生成され、ビルダーが故意にブロックボディを提供しない場合はブロックが存在しないと見なされます)。
ビルダー(Builder)は依然として取引の順序を調整して MEV を得ることができますが、二槽 PBS の入札メカニズムにより、これらのビルダー間で「内巻き」が始まります。すべてが入札競争を行う中で、中心化されたビルダーたちが MEV から得る利益は次第に圧迫され、最終的な利益は分散化された提案者(Proposer)に分配され、中心化されたビルダーが MEV を得ることでますます中心化する問題が解決されます。
しかし、二槽 PBS には設計上の欠陥があります。この設計の名前に「二槽(Two-slot)」が含まれていることから、このプランでは有効なブロック生成時間が 24 秒に延長されることを意味します(1 つのスロット = 12 秒)。この問題を解決する方法について、イーサリアムコミュニティは活発に議論を行っています。
まとめ#
ダンクシャーディングはイーサリアムに「ブロックチェーンの不可能な三角形」を解決するための革新的な解決策を提供します。すなわち、イーサリアムの分散化と安全性を保証しつつ、スケーラビリティを実現します:
-
前提プラン EIP-4844を通じて新しい取引タイプ Blob を導入し、Blob が持つ 1MB〜2MB の追加データ量がイーサリアムに Rollup 上でより高い TPS とより低いコストを実現するのに役立ちます。
-
纠删码と KZG 多項式コミットメントを通じてデータ可用性サンプリング(DAS)を実現し、ノードは一部のデータ断片を抽出するだけでデータの可用性を検証し、ノードの負担を軽減します。
-
データ可用性サンプリング(DAS)を実現することで、Blob の追加データ量が 16MB〜32MB に拡大し、拡張効果がさらに向上します。
-
提案者 - ビルダー分離(PBS)を通じて、検証 - ブロックパッケージ化の作業を 2 つのノード役割に分離し、パッケージ化ノードの中心化を偏らせ、検証ノードを分散化します。
-
抗検閲リスト(crList)と二槽 PBS を通じて MEV がもたらす悪影響を大幅に低減し、ビルダーは私的な取引を挿入したり特定の取引を検閲したりできなくなります。
もし何も問題がなければ、ダンクシャーディングの前提プラン EIP-4844 はイーサリアムの上海アップグレード後のカンクンアップグレードで正式に実装されるでしょう。EIP-4844 プランが実装された後、最も直接的な利点は Layer2 内の Rollup と Rollup 上のエコシステムです。より高い TPS とより低いコストは、チェーン上の高頻度アプリケーションに非常に適しています。私たちは「キラーアプリケーション」が誕生する可能性を想像してみましょう。ダンクシャーディングによって実現された中心化されたブロック生成 + 分散化された検証 + 抗検閲は、イーサリアムに新たな公链叙事をもたらすでしょう。 Layer2 の他に、モジュール化されたブロックチェーンとダンクシャーディング後のイーサリアムはどのような化学反応を引き起こすのでしょうか?
ボカシは、ダンクシャーディングの実現がゲームルール全体を書き換えると信じており、イーサリアムはブロックチェーン業界を新しい時代へと導くでしょう!
参考文献#
[1] Data Availability,区块链的存储扩容
[3] Proto-Danksharding FAQ – HackMD
[4] V 神科普的「Danksharding」到底是什么?
[5] V 神推荐丨深入了解以太坊的分片路线图,看这一份报告就足够