路印 CTO スティーブ・グオ:どのようなレイヤー2ネットワークが本当の未来なのか?

9月4日の BeWater DevCon 2021 グローバル開発者会議で、ルーピンのCTO スティーブ・グオ(Steve Guo)は、インテルの上級研究開発エンジニア、獵豹移動の上級研究開発ディレクターを務め、15歳で科学技術大学の少年クラスに入学し、博士号を取得した。現場の開発者と共に「未来の真の二層ネットワークとは何か?」というテーマで講演を行いました。
共有内容の概要は以下の通りです: 1)真の意味で定義された二層ネットワークは、その安全性をメインネットに依存すべきである。 2)二層ネットワークは、ステートチャンネルからプラズマへ、そして最近注目されているロールアップに進化し、オプティミスティックロールアップとzkロールアップの2つの分岐に分かれた。 3)二層ネットワークの最終形態はzkEVMであり、皆さんはコードを変更することなく、既存のコントラクトをzkEVM上で直接実行できる。 皆さんこんにちは、私はルーピンプロトコルのCTOスティーブ・グオです。この度BeWaterの開発者会議に招待されて嬉しく思います。今日は、どのような二層ネットワークが真の未来であるかについて皆さんと議論したいと思います。
一、二層ネットワークとは何か?
まずこのページから始めましょう。二層ネットワークとは何かを定義します。私の見解では、Polygon、xDai、BSCのようなサイドチェーンは、厳密には二層ネットワークとは言えません。真の意味で定義された二層ネットワークは、その安全性をメインネットに依存すべきです。
技術的な観点や進化の観点から見ると、最初の二層ネットワーク技術はステートチャンネルと呼ばれ、その後プラズマに進化し、最近非常に人気のあるロールアップ技術に至りました。そしてロールアップは、オプティミスティックロールアップとzkロールアップの2つの分岐に分かれます。
私の次の講演では、これらの技術の進化を通じて、現在の二層ネットワークの発展の全歴史を皆さんにお伝えします。
1、ステートチャンネル
次に、最初の二層ネットワーク技術であるステートチャンネルを見ていきましょう。
ステートチャンネルの最初の起源はビットコインのライトニングネットワークにあるべきで、イーサリアム上では、私の記憶では最初のプロジェクトは「雷電ネットワーク」と呼ばれ、ビットコインのライトニングネットワークの技術を模倣しようとしました。
ステートチャンネルの核心的な考え方は、例えばアリスとボブがオフラインで頻繁に送金を行う場合、アリスとボブは合意して、互いに一定の金額を契約に預けることです。例えば、アリスが5を預け、ボブも5を預け、その後オフラインでアリスとボブは互いに送金できます。例えば、このスライドで示されているように、ボブがアリスに1を送金すると、アリスは6コインを持ち、ボブは4コインになります。その後、アリスがボブに3コインを送金すると、最終的にアリスは3コイン、ボブは7コインになります。
最終的にチェーン上で決済する際に、最終的な状態をチェーン上に記録し、最後にそれぞれが退出します。最終的に皆さんが図で見ることができるように、アリスは3コイン、ボブは7コインを持っています。
その核心は、オフラインで皆が互いに署名確認の方法で、無限にオフラインで送金を行うことができるという考え方です。
彼の最大の欠点は何ですか? それは、アリスとボブが必ず互いに、まずメインネット上に確定した契約を展開する必要があることです。
その後、雷電ネットワークやCelerNetworkのようなプロジェクトがいくつかの拡張を行い、アリスとボブの間の相互決済を、アリスがハブと、ボブもそのハブと、Cもそのハブと接続するように進め、中心的なハブのような方法で、ピアツーピアの送金をピアツーネットワークの送金に進めました。
しかし、これは依然として制限があります。まず、スマートコントラクトに資金を事前に担保する必要があります。次に、彼の全体の技術は「送金支払い」という観点からのみ解決されています。しかし、皆さんもご存知の通り、ブロックチェーンの最大の意義はプログラム可能なアプリケーションにあり、単なる支払いではありません。その後の二層ネットワーク技術は自然に第二世代のプラズマに進化しました。
2、第二世代プラズマ
上の図のような二層ネットワーク技術はプラズマと呼ばれ、私の見解では、先ほど述べた「ステートチャンネル」の解決策における資金を事前にロックする問題を解決しようとしています。
彼の解決思路は何ですか? 実際、彼の思路は非常にシンプルで、チェーン上にはスマートコントラクトが必要ですが、誰でもこのチェーン上の契約に入金や出金を行うことができ、すべてこの契約とやり取りします。
対応する形で、オフラインにはプラズマチェーンという概念があり、一度資金がこの契約に入ると、オフラインで送金を開始できます。プラズマチェーンは、オフラインで発生したすべての取引を集約してパッケージ化し、最終的な状態のメルクルルートをメインチェーンの契約に提出して保存記録します。
もし一定の期間内に誰も異議を唱えなければ、例えば7日間誰も異議を唱えなければ、履歴記録は変更できません。もし誰かが7日間の送金に異議を唱えた場合、彼はチャレンジを提出し、特定の送金が誤って処理されたことを証明することで、資産を最終的に引き出すことができます。このような思考は、ステートチャンネルが事前に資金を担保する必要がある問題を解決します。
彼の最初の提案も、同様に送金支払いのシーンのみをサポートしていました。例えば、最初のプラズマMVPから、プラズマキャッシュ、プラズマデビットなど、これらのプロジェクトに進化しました。最終的に皆さんが気づいたのは、プラズマは依然として非常に使いにくいということです。
まず第一に、彼には7日または2週間の退出チャレンジ期間があります。
第二に、彼の安全性は何に依存していますか? プラズマチェーンがメインチェーンに提出するのは、単にメルクルルートであり、プラズマチェーン上で発生したすべての取引情報はオフラインに記録されています。これは何を意味しますか?これは、私はこのメルクルルートを提出するリレイヤーが正確に作業を行っていることに依存しなければならないことを意味します。
3、オプティミスティックロールアップ
プラズマの問題を解決するために、自然な進化として、現在非常に人気のあるオプティミスティックロールアップに進化します。
この図を見てください。オプティミスティックロールアップは、上記のプラズマとの唯一の違いは、メインチェーンに提出されるのが世界状態のメルクルルートだけでなく、オフラインで発生したすべての取引データも同時にチェーン上に上げられ、誰でもこれらの公開されたブロックチェーン上の記録情報に基づいてチャレンジを行うことができる点です。
例えば、S2状態がS3状態に切り替わるとき、誰かがチャレンジを持っている場合、彼はブロックチェーンに記録された過去の情報に基づいて、あなたの処理が正しくないと言うことができます。
したがって、プラズマはオプティミスティックロールアップに進化し、その安全性は「退出チャレンジメカニズム」に依存していますが、データの可用性の問題を解決し、誰でも既存のデータに基づいて直接チェーン上でこのチャレンジを行うことができるようになりました。これは彼の最大の改善点です。
さらに、オプティミスティックロールアップは、送金以外のシーンもサポートでき、汎用プログラミングをサポートします。
このような考え方は、現在2つのプロジェクトがこの方向に進んでいます。一つはオプティミズム(Optimism)、もう一つはアービトラム(Arbitrum)です。
4、オプティミズム

まずオプティミズムについて話します。オプティミズムは最初にオプティミスティックロールアップを実装すると言ったプロジェクトであり、このチーム自体もプラズマと密接に関連しています。したがって、ユニスワップも最初にオプティミズムにデプロイすると言っていました。
彼の核心的な考え方は、チャレンジを解決する方法です。 つまり、誰かが二層ネットワーク上で取引を正確に処理していないことを発見した場合、私はこの問題にどうやってチャレンジするかを抽象化しました。
それは、イーサリアムのレイヤー1上に契約を展開し、この契約は何を受け入れるかというと、彼が定義したOVMの命令セットを実行します。あなたは彼がメインチェーンに提出した公開情報を利用して、このOVMの実行を駆動することができます。もしこのOVMの実行がこれらの値が正しくないと判断すれば、あなたのチャレンジは成功します。
基本的にオプティミズムの考え方は、OVMの命令セットをできるだけEVMと完全に一致させることですが、実際には100%の互換性を持っていません。一部の命令は変更されています。
これらの命令が変更される必要があるため、彼は実際にはEVMと100%互換性を持つことが非常に難しいのです。これが彼が常に延期している理由の一つかもしれません。
5、アービトラム
アービトラムは、こうした機会を見出したと思います。つまり、レイヤー1のスマートコントラクトの中でEVM命令セットを実行することは非常に困難なことです。
私はEVMを自分のVM命令に変更できるかどうか、彼はアービトラムの命令セット、つまりAVMと呼ばれるものを作りました。したがって、レイヤー1のスマートコントラクトの中で実行されるのは実際にはAVM命令セットです。このような考え方は、OVMの方法よりも効率的に実行できる可能性があります。
同時に、彼はOVMのオプティミズムチャレンジメカニズムの中で、ガス消費に関する大きな問題を解決しました。チャレンジの際のガス消費が非常に高いという問題です。彼の解決思路は、分割チャレンジを使用することです。これは二分法に似ています。
私はまずあなたに1000ステップの実行が正しいことを証明させ、その後512、256に縮小し、段階的に一連の命令列を実行させて、最終的にチャレンジの出力を行います。成功か失敗かを判断します。
アービトラムのメインネットは8月31日に正式にオンラインになり、すでにいくつかのプロジェクトがアービトラムに移行しています。例えば、Sushi、MCDexなどです。
しかし、実際にはいくつかの問題があることがわかりました。元々、皆さんはこのような二層ネットワークがコストを大幅に削減すると考えていましたが、実際の状況ではアービトラムのメインネットでの1回の取引は、メインネットの1/5から1/10程度に減少しました。これは私たちの期待を大きく下回っています。私は、さらに1桁上げる必要があると思います。これが真の二層ネットワークです。
二、zkロールアップ
次に、第二の大きな分岐であるzkロールアップについて話します。
1、ZKPとは何か?
zkロールアップについて話すときは、まずZKPとは何かを説明する必要があります。ZKPはその名の通りゼロ知識証明であり、ゼロ知識証明は何をするものか?
f(X)=Yという例を挙げると、私はXの値を知っていることを証明でき、関数fを通じてYを出力できるが、Xが何であるかは教えられない。そして、あなたにこのことを信じてもらう必要があります。これがゼロ知識証明です。関数fは公開されており、計算結果Yも公開されていますが、私のXはプライベートであり、あなたには知られません。
さらに直感的な例を挙げてゼロ知識証明を理解してもらいます。この図は「ウォルドを探せ」と呼ばれ、問題はこの大きな図の中で小さな人の位置を見つけることです。
私はゼロ知識証明を行うために、あなたにこの大きな図の中で小さな人の位置を知っていることを示さなければなりませんが、その小さな人の具体的な位置は教えられません。
大まかな解決思路は問題を変換することです。ゼロ知識証明は本質的に問題を変換するもので、Aの問題を同等の別の領域のBの問題の証明に変換します。この「ウォルドを探せ」というゼロ知識問題の解決策として、私は非常に大きな黒い布を使い、その布でウォルドの小人を事前に切り取ります。
そして、その大きな黒い布をこの絵の上にかぶせ、小人だけを透かして見せます。これにより、私はあなたにこの図の中で小人がどこにいるかを見つけられることを示しましたが、あなたはその小人が具体的にどこにいるかは知らないままです。
2、zkロールアップの紹介
次に、ZKロールアップの考え方について説明します。ZKロールアップは実際には技術の総称です。その核心的な考え方は、私がここに示した図のように、世界の状態をすべてのアカウントで構成されたメルクルツリーに抽象化することです。アカウントには自分のアカウントに関連する情報が含まれ、このようなメルクルツリーには現在の世界状態を表す唯一のルートがあります。
私はオフラインでアカウントに対して行った変更、例えば任意の取引でアカウントの情報を変更することをTx情報と呼びます。私はオフラインで収集したすべてのTx情報に基づいて、各Txの処理によって引き起こされる世界状態の変化をゼロ知識証明で行うことができます。
まず、私はこのTxが本物であることを証明し、次にTxが前の世界状態から次の世界状態に変わることを証明し、最終的な世界状態情報はチェーン上に記録されます。
したがって、ある歴史的状態がチェーン上で確認されると、それは永遠に変更できません。私は変更できない歴史記録に基づいて、その後の一連のTxを加え、次の新しい世界状態を証明して導き出し、最終的に最新の世界状態をチェーン上に更新し続けることができる。このようなシステムがZKロールアップの解決策です。
3、ルーピンプロトコル
私たちルーピンプロトコルは、世界で初めてZKロールアップをメインネットに適用した事例です。私たちはZKロールアップの考え方をDEX取引に拡張しました。
私たちはDEX取引において、先ほど紹介したZKロールアップアカウントモデルにさらに進んだ抽象化を行いました。例えば、アカウントの下にバランスを持たせ、バランスの下に取引履歴を持たせますが、本質的には依然として大きなメルクルツリーであり、常にそのメルクルツリーが表す世界状態をチェーン上に更新し続けます。

その後、皆さんがよく知っているMatter Labsが出したZKSyncソリューションは、現在2.0に進化しています。1.0は私たちのルーピンプロトコルに非常に似ており、送金、取引、支払いのシーンを解決するだけでしたが、ZKロールアップの技術は実際には同じですが、選択するゼロ知識証明のアルゴリズムが異なります。
私たちルーピンプロトコルはGroth16のアルゴリズムを選択しましたが、ZKSyncはPlonkのゼロ知識証明アルゴリズムを使用しています。その後、ZKSyncはZKPorterを発表しました。ZKPorterはZKSync2.0と呼ばれています。
彼の違いは何ですか? ZKSync1.0では、すべての取引データがチェーン上にあります。しかし、ZKPorterでは、TPSを向上させるために、すべてのオフライン取引情報はチェーン上に上がらず、オフラインの取引情報はPoAのような小グループによって正確に保存されます。
ZKPorterのソリューションは、完全にZ Kロールアップとは言えないと思います。ZKロールアップの考え方は、すべてのTx情報もチェーン上に提出する必要があります。 ZKPorterは、私が次に説明するStarkExのソリューションに似ています。

StarkWareが提案したStarkExのソリューションに戻ります。この図はStarkEx全体の紹介であり、内部の最も核心的な部分も依然としてメルクルツリーを組織し、ZKロールアップの考え方を用いて世界状態を更新し続けます。
しかし、彼は最初から自分のプログラミング言語Cairoを定義し、皆さんは彼のこの言語を使って書かなければなりません。彼はCairo言語で生成されたプログラムを実行するためにゼロ知識証明を生成します。しかし、StarkWareとルーピン、ZKSyncの違いは、彼が選択したゼロ知識証明のアルゴリズムがzkStarkであることです。
これらの3つのゼロ知識証明アルゴリズムの核心的な違いは…Groth16は、各回路に変更があるたびに信頼できる設定を実行する必要があるため、プログラム可能性は相対的に低くなります。しかし、彼の利点は証明のサイズが最小であり、チェーン上の証明検証の作業量も非常に少ないため、大きなコスト優位性を持っています。
Plonkは一般的な設定をサポートしており、全体で一度信頼できる設定を実行すれば、その後回路を変更しても再度信頼できる設定を実行する必要はありません。
ZKStarkはさらに進んでおり、完全に信頼できる設定を必要とせず、いつでも回路を変更できますが、一定の代償を伴います。つまり、彼の証明のサイズは最大であり、チェーン上の証明検証の作業量も大きいです。
これが、StarkWareが最初に取引データをチェーン上に置かなかった理由かもしれません。そうでなければ、彼の上昇コストはかなり高くなります。
これが現在のすべての二層ソリューションの概要ですが、私はこれが私が想定している最終的な二層ネットワークにはまだ遠いと思います。
4、zkEVM
最終的な二層ネットワークは、汎用のzk仮想マシン、私はこれをzkEVMと呼びます。zkEVMはすでにいくつかの企業が取り組んでおり、Hermezが取り組んでおり、Matter Labsも汎用のzkEVMを作ろうとしています。StarkWareのCairoは本質的にプログラム可能であり、これも一種のzkEVMと見なされます。
しかし、最終的には、イーサリアムエコシステム上で最良のソリューションは、皆さんがコードを変更することなく、スマートコントラクトのコンパイル後のコードをzkEVM仮想マシン上で直接実行できることだと思います。この考え方が最終的な未来になるかもしれません。
イーサリアム財団もちょうどこのようなプロジェクトを進めており、私のこの図はイーサリアム財団のzkEVMの考え方をまとめようとしています。
皆さん、この図の右上隅を見てください。これは古典的なフォン・ノイマンのコンピュータモデルです。コンピュータにはCPUプロセッサが含まれ、プロセッサの外にはストレージ、メモリ、ハードディスク、周辺機器などがあります。
ストレージとCPU、周辺機器のメモリはバスを介して通信し、データを取得したり保存したりします。このような考え方がフォン・ノイマンの古典的なコンピュータモデルです。
zkEVMはこのモデルを参考にしており、zkEVM仮想マシンの命令セットはEVMが定義した命令セットそのものであり、各プログラムコードが実行された後にはトレースが生成されます。私はすべてのトレースに基づいて証明を行い、これらのトレースがプログラムコードの命令に従って正確に実行されたことを証明します。
ここで関わるのは:
最初に、私は各EVMの命令実行が正しいことを証明し、実行シーケンスが正しいことを証明する必要があります。これをEVM証明と呼びます。
次に、EVMの実行過程では、例えばストレージの値を保存したり取得したりする必要があり、メモリやスタックの中で変数にアクセスする必要があります。この3つ、すなわちストレージ、メモリ、スタックは統一して状態と呼ばれ、これらの状態の保存と取得についても相応のゼロ知識証明を行い、私がこの保存と取得の動作が正しいことを証明します。
EVM証明と状態証明の間には、バスマッピングという橋があります。これはバスの概念であり、EVMの命令がどの具体的な状態にアクセスするかを表現し、これらのアクセスが正しいことを証明します。
このようなシステムが一旦展開されると、すべてのスマートコントラクトがシームレスに移行できると思います。これが真の最終的な二層ネットワークの究極の形態だと思います。

ありがとうございました。何か質問があれば、いつでも私に連絡してください。ルーピンのコードに興味がある方は、直接GitHubを訪れることもできます。メールで連絡していただいても構いません。ありがとうございます。















