イーサリアム技術解説:Ethereumにおける真の分散化を目指す、ステートレスクライアントとVerkle Trees(第3回)

前回はノードのディスク要件を引き下げる方法のうち、「History expiry」について解説しました。History expiryは一定期間経過した履歴データを破棄するものでしたが、ノードは履歴データの他にもステートを保存しています。今回はこのステートの仕様を変更してディスク要件を引き下げる方法である、「Weak statelessness」について詳しく見ていきたいと思います。

Weak statelessnessは、ステートの仕様を変更することでブロック生成者以外のノードがステートを持たずに検証を行えるようになる方法のことです。これが実装されることで、クライアントにステートを持たない「ステートレスクライアント」が実現して、ノードのディスク要件はさらに引き下がることになります。

Weak statelessnessを実装するためには、Ethereumにおけるステートを保存するためのデータ構造を「Verkle Trees」というものに変更する必要があります。現在のEthereumでは、ステートを保存するためのデータ構造として「Merkle Patricia Trie」というMerkle Treesの一種を用いています。Verkle Treesを実装することで、ステートではなく「Witness」と呼ばれる小さなデータセットから検証を行えるようになるため、ステートが不要になります。

Witnessについては、ブロックの中に含まれている必要があります。このような性質から、ブロック生成者についてはWitnessを作成するためにステートをすべて保存しておく必要があります。

このように、ブロック生成者についてはステートレスが実現されないため、「弱い」ステートレス性という名称が付いています。

もちろん理想的なのは、ブロック生成者を含めたすべてのノードがステートを保存する必要がないような「強い」ステートレス性です。これは「Strong statelessness」と呼ばれています。しかし、Strong statelessnessを実現するためにはノードのネットワーク要件を引き上げなくてはならないことや、スマートコントラクトとのトランザクションが困難になるなどといった技術的なトレードオフが存在します。このため、現時点ではWeak statelessnessの実現に焦点が置かれています。

Weak statelessnessを実現するためには、Verkle Treesの他にもProposer-Builder Separation(PBS)の実装が必要となってきます。PBSは レイヤー2のガス代を減少させる、ダンクシャーディングとData Availability(第3回)でも解説した技術で、ブロック提案者(Proposer)とブロック生成者(Builder)を別のエンティティに分けるものです。ダンクシャーディングにおける64個のblobと同じく、Weak statelessnessにおいてもステートを保存しなければならないため、ブロック生成者のハードウェア要件は高くなってしまいます。

PBSによってブロック提案者とブロック生成者を別のエンティティに分けることで、ブロック生成者のハードウェア要件のみを引き上げて、他のノードにおけるハードウェア要件についてはステートレスになる分だけ引き下げることができるようになります。

ここまでの説明で、ブロック生成者のハードウェア要件が高くなってしまうとブロック生成者の中央集権化が進み、結果として分散化から遠ざかってしまうのではないか、といった疑問が生まれるかもしれません。しかし、ブロック生成者がある程度中央集権化することについては問題ないとされています。なぜでしょうか?

これは、ブロック生成者がブロックの中身を検閲するなどといった攻撃を行っても、これを検証するバリデーターサイドが分散化されていれば攻撃への耐性が保たれるためです。攻撃が行われる可能性を減らすことも重要ですが、それ以上に重要なのは攻撃が行われた際に正しいものとして承認されないようにすることです。Ethereumが目指す分散化は、「ブロック生成者の分散化」ではなく「バリデーターノードの分散化」なのです。

このような理由から、Weak statelessnessによってブロック生成者のハードウェア要件が高くなることについては許容されると考えられています。

次回はWeak statelessnessを実現するための要素のうち、まだ詳しく解説していない「Verkle Trees」について見ていきたいと思います。

ニュースレターを無料購読していただくと、毎週月曜日の17:00にイーサリアム技術解説シリーズを含む最新のニュースレターをお届けいたします。

過去のイーサリアム技術解説

アカウント・アブストラクション(AA)特集

ウォレットのUXを向上させる、Account Abstractionとその近況(第1回)

ウォレットのUXを向上させる、Account Abstractionとその近況(第2回)

ウォレットのUXを向上させる、Account Abstractionとその近況(第3回)

ウォレットのUXを向上させる、Account Abstractionとその近況(第4回)

ダンクシャーディング特集

レイヤー2のガス代を減少させる、ダンクシャーディングとData Availability(第1回)

レイヤー2のガス代を減少させる、ダンクシャーディングとData Availability(第2回)

レイヤー2のガス代を減少させる、ダンクシャーディングとData Availability(第3回)

ステートレスクライアント特集

Ethereumにおける真の分散化を目指す、ステートレスクライアントとVerkle Trees(第1回)

Ethereumにおける真の分散化を目指す、ステートレスクライアントとVerkle Trees(第2回)

Ethereumにおける真の分散化を目指す、ステートレスクライアントとVerkle Trees(第3回)

Comments are closed.