イーサリアム技術解説:レイヤー2のガス代を減少させる、ダンクシャーディングとData Availability(第2回)

今回は、EthereumのData Availability(DA)を改善する技術であり、ダンクシャーディングの前身となる技術でもある、「プロトダンクシャーディング(Proto-Danksharding)」について解説します。

前回はブロックチェーンにおけるそれぞれのレイヤーの役割と、レイヤー2やDAの役割について見てきました。その中でもDAはトランザクションデータを保存しておくレイヤーで、利用するコストの大小によってExecution Layer(≒レイヤー2)におけるガス代に大きな影響を与えるものとなっています。

レイヤー2がEthereumをDAとして利用する場合、これまでレイヤー2内のトランザクションデータは「calldata」と呼ばれるデータ領域に保存されていました。しかし、このcalldataはスマートコントラクトが利用するためのデータ領域でもあるため、利用するためには通常のEthereumにおけるガス代を支払う必要があり、コストが大きいという課題がありました。

こうしたコストを下げるために、過去にcalldata専用のガス代を設定する技術である「EIP-4488」の導入が検討されたことがありました。しかし、calldata自体のコストを下げてしまうと、calldataを利用するトランザクションの数が急激に増加して、Ethereumが処理しきれないほどにブロックサイズが膨れ上がってしまう可能性があります。このため、EIP-4488の採用は見送られることになりました。

ブロックサイズを必要以上に増大させることなく、利用するためのコストが低いレイヤー2のためのデータ領域を作るためには、以下の要件が必要になります。

  • 利用できる用途がレイヤー2のためのDAに限定されていること
  • 1ブロックあたりの最大容量が決まっていること
  • 通常のトランザクションとは独立したガス代が設定されていること
  • データ領域に含まれるトランザクションデータの検証が行えること

これらの要件を実現した技術がプロトダンクシャーディングです。プロトダンクシャーディングは「EIP-4844」とも呼ばれている技術で、Ethereumに「blob」というデータ領域と、これを利用するためのトランザクション形式を追加するものです。

blobは4096個の整数からなる約127KBのデータ領域で、Execution LayerではなくConsensus Layerに保存されるという特徴があります。Consensus Layerに保存されていることによって、スマートコントラクトが利用するためのデータ領域としてはアクセスできないようになっています。さらに、blobは4096エポック(約18日間)で削除されるという特徴を持っています。これらの特徴によって、利用できる用途をレイヤー2のためのDAに限定するという1つ目の要件を実現しています。

また、blobの1ブロックあたりの最大容量は1MBと定められており、これによって2つ目の要件も実現しています。

3つ目の要件については、新しいトランザクション形式である「BLOB_TX_TYPE」を導入することによって実現しています。BLOB_TX_TYPEはデータをblobにアップロードするためのトランザクションで、通常のトランザクションとは異なる仕様となっているため、独立したガス代を設定することが可能となっています。

最後の4つ目の要件については、blobをKZG Commitmentという手法を用いて圧縮して、さらにKeccak-256というハッシュ関数を用いてハッシュ化したものをBLOB_TX_TYPEに記載することと、Point evaluation precompileというスマートコントラクトを実装することによって実現しています。先述したようにblob本体についてはスマートコントラクトからアクセスすることはできませんが、ハッシュ化したものをBLOB_TX_TYPEに記載することによって、ハッシュ化したblobについてはスマートコントラクトからもアクセスできるようになっています。Point evaluation precompileはハッシュ化したblobを用いてトランザクションデータを検証することができるスマートコントラクトとなっており、これを使うことでblobに含まれるトランザクションデータの検証を行うことができるようになっています。

今回解説したプロトダンクシャーディングについては、2024年3月に実施されたDencunアップグレードにて実装済みとなっています。プロトダンクシャーディングの実装後、EthereumをDAとするOptimismやArbitrumなどのレイヤー2におけるガス代が実際に減少しており、その効果についても実証されています。

次回はこうしたプロトダンクシャーディングの仕様を踏まえて、今後予定されている最終目標であるダンクシャーディングがどのようなものかについて、詳しく見ていきたいと思います。

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

アカウント・アブストラクション(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.