コンテンツへスキップ
0%

danksharding とは?

執筆者 John Favole

2022年6月22日 公開読了時間 1 分

プロトダンクシャーディングと呼ばれる新しいシャーディング設計が、ブロックチェーンの完全なシャーディングへのロードマップの一環として導入されました。あまりに新しいため、まだ理解していない人が多くいます。

本記事では、プロトダンクシャーディングについて知っておくべきことと、それがLayer 2のスケーリングにどう役立つのかを、わかりやすく徹底的に解説します。それでは見ていきましょう。

シャーディングとは何か

シャーディングとは、ブロックチェーンをより小さな単位に分割し、全体の効率を高める手法を指します。

例えば、10万ドル相当のトランザクションをEthereum Mainnet上でそのまま処理する代わりに、10個のシャードに分割し、それぞれのシャードが1万ドル相当のトランザクションデータを保持するようにします。これによりネットワークの混雑を軽減することが意図されています。

シャードチェーンは速度だけでなく、より大きなストレージ容量の提供と手数料の削減も実現します。

なお、シャーディングは一度に完成するものではなく、最終段階に至るまでいくつかのフェーズを経て実装される点に注意が必要です。

ダンクシャーディングとは何か

ダンクシャーディングは、統合された手数料市場(merged market fee)という概念を実装するシャーディング設計です。通常のシャーディングではシャードごとに異なるブロックとブロックプロポーザーが存在しますが、ダンクシャーディングではプロポーザーが1つしか存在しません。

ブロックビルダーは、ブロックの各スロットに含めるデータとトランザクションを選択する役割を担います。

ダンクシャーディングとシャーディングは相互に関連していますが、両者は異なるものです。シャーディングはEthereumのスケーリングを目指すネットワーク分割の全体的な設計であるのに対し、ダンクシャーディングはこの目標を実現するための一つのステップです。

Ethereumの著名な研究者の一人であるTim Beikoは、_Bankless_ポッドキャストで、「Danksharding」という名前の由来について、これがもう一人のEthereumのベテラン研究者であるDankrad Feist氏にちなんで名付けられたものであると説明しました。

ダンクシャーディングの仕組み

ブロックビルダーは、後にブロックを構成することになる各スロットに何を含めるかを決定するためのリクエストを送信し、その中から最も高い入札をしたものをプロポーザーが選択します。あるビルダーが特定のスロットを担当することに選ばれると、そのビルダーはブロック全体の処理を担う責任を負います。

場合によっては、オラクルがブロックビルダーの役割を果たすことも考えられます。Ethereumチームによれば、この設計の主な目的は、マイナーが現在持っている2つの不公平な支配力、すなわちMaximum Extractable Value(MEV)を抑制することにあります。

第一に、マイナーは自分自身、または知り合いのトランザクションを優先的に選ぶという不公平な優遇を示すことができます。第二に、マイナーは最も高い入札額のトランザクションを選び取ることができ、その結果、他の何百万もの[トランザクションがmempoolに取り残され]、数時間から数日間処理されないままになることがあります。

しかし、ダンクシャーディングでは、ビルダーが提出するトランザクションの順序付きリストの内容は誰にも分かりません。そのため、_プロポーザー_の権限は制限されます。

ブロックビルダーとプロポーザーの違いは何か

ブロックビルダーはブロックの構築を担い、ブロックプロポーザーはブロックに追加すべきトランザクションヘッダーを選択し、それを適切にブロードキャストします。この2つの役割は密接に連携しています。

ブロックビルダーはトランザクションをスロットまたはチャンクにまとめてブロックに追加できるようにし、それをプロポーザーに提出して選択を仰ぎます。プロポーザーがブロックの選択に成功すると、ブロックビルダーがそのブロックを処理します。

ダンクシャーディングにおけるデータ可用性サンプリング

ブロックチェーンの基本原則の一つは透明性です。悪意のある、または無効なブロックがチェーンに追加されると、ネットワーク全体に悪影響を及ぼす可能性があります。

通常、Ethereumエコシステムでは、フルノードが不正証明(fraud proof)をライトクライアント、ひいてはネットワーク全体に提示することで、あるトランザクションが無効であることの証拠とすることができます。しかし、これはロールアップに対してはうまく機能しますが、ダンクシャーディングにはあまり適さない可能性があります。

マイナーは、利用可能なデータをサンプリングすることでダンクシャーディングされたブロックを検証できます。まず、データ可用性とは、特定のハッシュの背後にある実データがオンチェーンに公開されていることを意味します。今年のETH Dubaiで、Protolambdaはデータ可用性を_状態を再構築できるパーミッションレスな能力_であると説明しました。

実際には、このデータ可用性サンプリングは消去符号(erasure codes)を用いて実装されます。消去符号をサンプリングすることで、スロットやブロックに追加された実際のデータを取得できます。

トランザクションが処理された後、スループットのボトルネックを避けるために、データをいつEthereumブロックチェーンから削除すべきかについて、議論が続く可能性があります。

現時点では、データは1か月後に削除される計画があります。それでも、有効期限を過ぎた後も、Graph Protocolやブロックエクスプローラーなどの各種手段を通じてデータにアクセスすることは可能です。

プロトダンクシャーディング(EIP-4844)とは何か

現状では、完全なダンクシャーディングを実現するために解決すべき課題がまだ数多く残っています。これがEIP-4844提案の作成につながりました。これはプロトダンクシャーディングを実装するフォーマットです。

この提案は、完全なシャーディングに必要となる中核的な変更、特にトランザクションフォーマットの変更を実装することを目的としています。プロトダンクシャーディングという名前も、別のEthereum研究者であるProto Lambdaの名前に由来しています。

Proto Lambdaがダンクシャーディングに導入した実際の変更は、Binary Large Objects、略して「ブロブ(blobs)」と呼ばれるものです。実際、ブロブはプログラミングにおいて目新しい概念ではなく、JavaScriptやPythonにも存在します。しかし新しいのは、ブロブがスマートコントラクトにおいて意味を持つ可能性があるという点です。これをより理解するためには、「ブロブとは何か」という問いを考える必要があります。

ブロブ(バイナリラージオブジェクト)とは何か

ブロブはブロックプロポーザーによって提案されます。これは、より安価なデータを格納できる_大きな包み_あるいは大きな携行可能なバンドルに例えられます。各ブロックがこの_大きな包み_を保持できるサイズには制限があります。構造の観点では、典型的なブロブはボディとヘッダーを持ちます。

ブロブのボディには、トランザクションに直接関連するデータが常に格納されます。一方、ヘッダーにはプロポーザーの署名など、より少ない情報が含まれます。

プロトダンクシャーディングでは、各トランザクションには常にブロブという対となるものが存在し、これによってトランザクションのコストを下げることが最終的な目標です。スケーラビリティを高めるため、プロトダンクシャーディングの各スロットは、ほとんどの場合1MBのデータ帯域幅を持つことになります。

注:Ethereum Virtual Machineがアクセスできるのは、ブロブに_包まれた_安価なデータのみであり、ブロブ自体にはアクセスできません。これは、ダンクシャーディングにおけるトランザクションが通常のmempoolではなく、別のmempoolに置かれるためです。

EIP-4844とEIP-4488の違いは何か

その違いは次の通りです。EIP-4844はシャーディングのロードマップ全体と整合し、それを加速させる解決策を提供するものであるのに対し、EIP-4488は当面の問題を解決しようとするに過ぎません。

その核心において、EIP-4488はコールデータのガスコストを大幅に削減しようとするものです。これは当面は有効ですが、完全なシャーディングが実現すればシャードはブロブを使用することになるため、意味を持たなくなります。一方、EIP-4844はそのトランザクションフォーマットにブロブを使用することを計画しています。

とはいえ、これら2つの提案は互いに競合するもの、あるいはトレードオフの関係として捉える必要はないことも念頭に置くべきです。プロトダンクシャーディングはいくつかの技術的な工学上の課題により時間がかかる可能性がある一方、EIP-4488はロールアップを用いて当面のコスト問題を解決するために実装できます。

プロトダンクシャーディングはガス手数料を削減するのか

この問いに対する答えは明確に「いいえ」です。プロトダンクシャーディングはEthereumのガス手数料を削減するものではなく、Layer 2プロトコルのトランザクションコストを削減するものです。

実際、この問いはプロトダンクシャーディングに関する会話の中で頻繁に登場します。この誤解が生じるのは、プロトダンクシャーディングがブロブを導入することによるものです。

それでも、ブロブはロールアップが通常使用しているコールデータを置き換えるだけです。したがって、Ethereumプロトコル上のガス手数料は変わりません。

実際、長年にわたりEthereumエコシステムの動向を追ってきた開発者であれば、現在提案されているもののほとんどが、The Mergeでさえも、Ethereumのメインプロトコルのガス手数料に直接影響を与えたり、大幅に削減したりするものではないことに同意するでしょう。

プロトダンクシャーディングの現状

プロトダンクシャーディングの改善提案が今年2月初旬に作成されて以来、進展があるのかどうかについて期待が寄せられてきました。

Ethereumの研究チームがなおいくつかの重要な課題を検討している中、プロトダンクシャーディングが完全なシャーディングの先駆けとなるまでには、まだ長い道のりがあります。

まず何より、データ可用性サンプリングは依然として理論上のものであり、まだ実装されていません。その理由の一つは、開発者たちが、このEthereum Improvement Proposalにおいてポイント評価プリコンパイルのみを実装し、ブロブ検証プリコンパイルとの結合というアイデアを取り下げるべきかどうかを、いまだ検討しているためです。

実際、ブロブ検証プリコンパイルはLayer 2側で自前に実現可能なものです。その結果、Ethereumコミュニティでは、これを正式に用意する必要がまだあるのかどうかが検討されています。

Ethereumチームは、ブロブの最も現実的なアーキテクチャと、導入すべき最も賢明なセキュリティ対策を検討している最中です。

プロトダンクシャーディングの今後

Ethereumネットワークは長年にわたり、比較的遅いスループットと高いガス手数料という問題に取り組んでおり、Ethereumの研究者たちはシャーディングを含む様々な技術的解決策を提案してきました。

プロトダンクシャーディングは、完全なシャーディングのロードマップを実装するための一つの道筋であり、その主な目的は、ブロブ中心のトランザクションフォーマットを通じてLayer 2プロトコルのトランザクションコストを削減することです。

Ethereumコミュニティは、Ethereumプロトコル上でよりスケーラブルに構築するために必要なアーキテクチャをLayer 2ブロックチェーンに提供することで、そのモジュール性の目標を強化することに力を注いできました。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。