Rollupのお勉強

Rollupとは何か?

Ethereumのスケーリング技術の一つ。いわゆるL2ソリューション。

という説明だと理解しにくいので前提から説明します。

Rollup誕生の経緯

Rollupの内容の前になぜRollupが誕生したのかを見る必要があります。

ブロックチェーンのトリレンマ(分散性、セキュリティ、スケーラビリティ)の中でEthereumにおいてはスケーラビリティ(処理能力)が問題になる。

そこでベースのブロックチェーン(レイヤー1・この場合Ethereum)ではなく、ベースのものではないブロックチェーン(レイヤー2)で処理することでスケーラビリティ問題を解決しようとした。

そのレイヤー2(以下、L2)は大きく4つあります。zk-Rollup、Validium、Optimistic Rollup、Plasmaの4つです。

その中の2つのソリューションにRollupが使用されています。

RollUpの特徴

Rollupは、Plasmaに似たL2スケーリングソリューション。

Plasma

Ethereumのブロックチェーンを親ブロックチェーン(ルートブロックチェーン)として、それぞれのプラズマブロックチェーンをツリー状に接続していく。

トランザクションはPlasmaブロックチェーン上で処理され、その結果が接続している親Plasmaブロックチェーンに伝わっていく。最終的にEthereumブロックチェーンにトランザクションが記録される。

post image

しかし、Plasmaではスマートコントラクトの複雑性やルートチェーンに51%攻撃を受けるとプラズマチェーン全体に影響を受けてしまうなど、可用性の部分で問題になってしまう。

一方でRollupはデータ処理の一部をL2で行うが、L1であるEthereumの方にも処理を部分的に残していることによってセキュリティを維持した状態でスケーラビリティを向上させることができます。

Rollupの基本的な処理

  1. EVMを通じてトランザクションを実行

  2. データの抽出

  3. データの圧縮

  4. Ethereumに書き込む

4でEthereumに書き込む際には何千ものトランザクションを1つのRollupブロックにまとめて書き込むようになっている。

しかし、4で書き込む際にデータの有効性や悪意のあるデータかどうかを判断する必要があります。その判断を行う手法が先ほど述べたzk-Rollup、Optimistic Rollupになります。

Optimistic Rollup

zk-Rollupとは異なり、毎回Rollupコントラクトで検証しない。代わりに不正を告発するための紛争期間(Dispute period)を1〜7日程度設け、その期間内で無効なトランザクションを指摘したオペレーターやユーザーは該当ブロックを元に戻す、悪意のあるトランザクションを生成した当事者にペナルティを与える。

課題

L1のファイナリティに時間がかかるため、L1からの引き出しに時間がかかる。

zk-Rollup

全ての状態遷移に関して**ゼロ知識証明(SNARK)**を生成する必要がある。メインチェーン(Ethereum)のRollupコントラクトで検証を行う。

ゼロ知識証明とは、秘密を知っていることを秘密を教えることなく、第三者に秘密を知っていると証明できる仕組みのことで、私も具体的な仕組みはあまり理解していません、、、

zk-Rollupの流れ

post image
  1. ユーザーがトランザクションに署名してオペレーターに渡す

  2. オペレーターは複数のトランザクションを受け取る

  3. オペレーターは回路にトランザクションやMerkle Treeの情報をinputとして計算する(Prove)

  4. 検証者(Ethereumのコントラクト)にProof(3の生成物)を渡して検証する

  5. 新しいMerkle RootがEthereumコントラクトに刻まれる→残高が反映され、状態遷移が完了する

課題

証明生成の計算に時間とコストがかかる。