見出し画像

【保存版】レイヤー2やロールアップ(ZKロールアップなど)を「理解」しよう!

こんにちは、CryptoGamesの高橋です。

クリスペやTCGVerseの会社です。

今回はレイヤ2やロールアップなどを深く理解するように、こちらの動画に沿って進めていきます。

非常におすすめな動画なので、英語に抵抗がなければ、ぜひ見てみてください。

0 序章

そもそもなぜレイヤー2(L2)、ロールアップの話が盛り上がっているのでしょうか。

この話はスケーリングの問題から始まっています。そもそもスケーリングの問題とはなんでしょう。

1 イーサリアムのスケーリングに対する議論

イーサリアムでスケーリング問題が話題に登るようになったタイミングは主に次の3つの時期です。

① 2017年 CryptoKittiesの流行
② 2020年 DeFiブーム
③ 2021年 暗号資産市場の盛り上がり

スクリーンショット 2022-01-02 10.00.45

スケーリングの問題とは、イーサリアムのブロックの容量に上限があることから、取引が増加することにより、取引の遅延や手数料の増加が問題になることです。

確かに、ガス代、かなり高いですね。

2 解決に乗り出すチーム

ガス代の上昇が深刻化したため、さまざまなチームイーサリアムコミュニティがこの解決に乗り出します。

スクリーンショット 2022-01-02 10.09.09

3 3つの解決策

このスケーリング問題に対する解決策が下の3つです。

① レイヤー1(の拡張)
② レイヤー2
③ サイドチェーン

今回は主に②ですが、レイヤー1の拡張もロールアップとの相乗効果を生む上で非常に大切です。(18章で簡単に触れます。)

スクリーンショット 2022-01-02 10.14.06

4 レイヤー1の拡張について(今回はメインではないのでさらっと)

イーサリアムをETH2に移行することでスケーリング問題を解決しようとするものです。

① PoWからPoSへの移行
  (ブロックの作り方が変わります。)
② シャーディングの実装
  ⇨ロールアップと組み合わせることで相乗効果を生みます。

なお、シャーディングについては別の記事で解説しようと思います。

スクリーンショット 2022-01-02 10.20.08

5 レイヤー1以外の解決策について

次の二つの解決策から始まりました。

① チャンネル
  ⇨ ・イーサリアムのセキュリティが利用できる!
    ・でも特定のアプリでしか実行できない。。
② サイドチェーン
  ⇨ ・イーサリアムのセキュリティが利用できない。。
    ・汎用性はある(EVM互換)
     (アプリなどをそのまま持ってきたりできる)

スクリーンショット 2022-01-03 5.16.50

「サイドチェーン」はよく聞くかもしれませんが、イーサリアムのセキュリティが利用できないというのが大きな特徴です。

6 ロールアップの目的

チャンネルサイドチェーンのいいところどりをしようとするのがロールアップです。

① イーサリアムのセキュリティが使える!
② 汎用性あり(ただし、方法によります。)

スクリーンショット 2022-01-03 5.26.53

ただし、後から出てくるように、「ZKロールアップ」はその複雑性から、汎用性が高くありません。

7 ロールアップができること

前章のことを具体的に言うと

イーサリアムの既存のスマートコントラクト
① 変更がほぼ無しで(EVM互換あり)
② イーサリアムのセキュリティのまま

ロールアップに展開することができるということになります。

スクリーンショット 2022-01-03 5.32.06

ちなみに、EVM互換というのはBSC(バイナンススマートチェーン)をイメージすると理解しやすいかもしれません。

イーサリアム上のアプリであるUniswapBSC上にPancakeSwapとして簡単に作ることができるのはEVM互換があるためです。

8 ロールアップの仕組み

ロールアップの仕組みは次のようになります。

① レイヤ1の外部でトランザクション(Tx)実施
② データはレイヤ1に書き込む

スクリーンショット 2022-01-03 5.46.44

スクリーンショット 2022-01-03 6.08.14

この結果、「セキュリティ」「スケーリング」を実現することができます。

9 ロールアップの処理の概要

ロールアップの大まかな流れは下のようになります。

① EVMを通じてトランザクションを実行
② まとめてバッチ処理

このバッチ処理のタイミングでイーサリアムに書き込んでいます。

スクリーンショット 2022-01-03 6.18.39

ちなみにEVMとはsolidityという人間が理解できるコードを機械が読めるように翻訳する装置です。

10 ロールアップの処理(具体的に)

上の処理は具体的には次のプロセスを経ています。

① トランザクションを実行し、データを抽出
② データを圧縮
③ イーサリアムに書き込む

この一連のプロセスをロールアップと呼びます。

スクリーンショット 2022-01-03 6.31.27

11 ロールアップは適切か?の観点

ロールアップの仕組み自体は分かりましたが、次の疑問点が生まれます。

① データは有効か
② 悪意あるものではないか

スクリーンショット 2022-01-03 6.37.44

これに対する主な解決方法「オプティミスティックロールアップ」「ZKロールアップ」につながっていきます。

12 ロールアップはどこで実装?

上の疑問に入るまえに、そもそもロールアップはどこに実装されているのでしょうか?

答えはイーサリアム上です。

主に次の内容のスマートコントラクトが実装されています。

① 預け入れ
② 引き出し
③ 検証

スクリーンショット 2022-01-03 6.44.33

検証によって、11章のロールアップの内容が適切かを確認します。

そしてこの検証のやり方はロールアップによって大きく異なります。

13 検証方法

この検証方法には主に2つあります。

① オプティミスティック(楽観的)ロールアップ
② ZKロールアップ

スクリーンショット 2022-01-03 6.52.38

証明の仕方が異なります。

具体的に見ていきましょう。

14 オプティミスティックロールアップについて

14ー1 概要(通常パターン)

「オプティミスティック」は「楽観的」という意味です。

その名の通り、次のような特徴です。

① 書き込まれるデータは問題ないと想定
② 問題なければ何もしない

スクリーンショット 2022-01-03 7.03.13

14ー2 不正が起きたときの概要

不正が起きたときには次のようなプロセスを取ります。

① (本当に)不正かどうかを識別
② イーサリアムを正しい状態に回復
③ 当事者にペナルティ

スクリーンショット 2022-01-03 7.11.20

14ー3 不正を検出する仕組み

不正があるかどうかは、不正を見つけた人が証拠を提出し、システムが確認していくことになります。

スクリーンショット 2022-01-03 7.22.15

でもややこしいですが、「不正を暴く人」も不正を行うかもしれませんね。

そのため不正な不正な証拠を提出させないという仕組みも必要になります。

14ー4 紛争解決モードへの入り方

紛争解決モードに入るためには次の流れを取ります。

前提として、データを書き込む人はボンド(担保)を提出しています。

① ボンドの提供
② 不正の証拠の提出
③ 紛争解決モードに入る

スクリーンショット 2022-01-03 7.36.05

また、次章で出てきますが、不正の証拠を提出する人も補償金を入れています。

14ー5 紛争解決モードの概要

紛争解決モードに入った場合、疑われたトランザクションをイーサリアム上で実行します。

① トランザクションの再実行
② 不正だった場合
  ⇨ボンド(担保)の削減
③ 不正ではなかった場合
  ⇨保証金削減の可能性

スクリーンショット 2022-01-03 7.46.15

不正を行った人だけではなく、スパムなどを防ぐため、誤った証拠を提出した人にも罰則の可能性があります。

14ー6 技術上のポイント

オプティミスティックロールアップでの技術上のポイントは

・当時と全く同じ状況で疑われたトランザクションを再実行

するということです。

スクリーンショット 2022-01-03 8.04.32

ここが一番の肝であり、個別のマネージャーコントラクトが作られることになります。

14ー7 不正の証拠を提出するのが一人なら?

仮に不正の証拠を提出したのが一人でも期待通りの処理を行います。

通常通り、不正の検出が可能です。

スクリーンショット 2022-01-03 8.18.40

15 ZKロールアップについて

ZKロールアップは考え方はとてもシンプルです。

「ZK-SNARK」と呼ばれる証明方法で、レイヤ1に書き込む際に無効かどうかをチェックします。

無効な場合はその場で書き込みを拒否します。

スクリーンショット 2022-01-03 8.24.32

そのため、そもそも無効なデータが書き込まれないので、紛争解決の必要がありません。

また、この証明をゼロ知識証明(Zero Knowledge)と呼び、頭文字を取ってZKロールアップと呼ばれます。

16 ZKロールアップのポイント

表面上の理解は簡単ですが、レイヤ1に書き込まれる際にそれが無効化どうかを判断するために、複雑な暗号化証明(ZK-SNARK)がされています。

スクリーンショット 2022-01-03 8.34.59

そのため、この暗号化を行うために研究者による多くの時間が必要となります。

17 オプティ・・とZKロールアップの違い

17ー1 引き出し時間

オプティミスティックロールアップは不正の証拠を提出する人のために一定の時間が必要です。

スクリーンショット 2022-01-03 8.51.29

そのため、資金を戻すためには1〜2週間程度かかります。

一方、ZKロールアップにはその時間はありません。

スクリーンショット 2022-01-03 8.59.45

ちなみに、「ホッププロトコル」「コンネクスト」などがこの引き出し時間の課題に取り組んでいるようです。(私は詳細はまだ追いきれていませんが。。)

17ー2 EVM互換性

EVM互換性とはざっくりといえば、イーサリアムのアプリなどを他でも使うことができるというイメージです。

例えば、BSCはEVM互換性があるため、イーサリアムのアプリを元にした開発が容易にできます。

スクリーンショット 2022-01-03 9.07.25

ZKロールアップはそのロジックが困難なため、EVM互換性を作ることが困難です。そのため、アプリケーションなどの汎用化が困難です。

ちなみにこの課題に対して、「zkSync」はこの分野で大きな進歩を遂げており、今後に注目です。

スクリーンショット 2022-01-03 9.21.00

一方、オプティミスティックロールアップ独自のバージョンのEVMを使うことで、スマートコントラクトをほぼそのまま移植することが可能です。

17ー3 使用マシンの性能

ZKロールアップ暗号化証明の際、多くの計算を必要とします。

そのため、計算するノードはハイスペックな必要があります。

スクリーンショット 2022-01-03 9.30.59

18 スケーリングの改善について

18ー1 ロールアップとの組み合わせ

現在のイーサリアムのTPSは15〜45と言われています。

ちなみにTPSは一秒あたりに実行できるトランザクション数です。

スクリーンショット 2022-01-03 9.38.28

ロールアップとの組み合わせにより、これが1000-4000TPSとなります。

18ー2 ロールアップ + ETH2

ETH2への移行により、複数のシャードが生まれます。

これにより、ロールアップのためにバッチ処理を行う場所自体も増え、相乗効果でTPSが増えることになります。

スクリーンショット 2022-01-03 9.45.05

なんと、100,000TPSが想定されているようですね。


いかがでしたでしょうか。

このYouTubeには続きもありますので、ぜひ見てみてくださいね。


サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊