zkEVM勉強会メモ 2023.6.8 本日の学び

zkevm本、メディア
zkevm

どうも!金時です。今回はzkEVMの勉強会メモです。

まず、なぜzkEVM(ゼロ知識イーサリアムバーチャルマシン)が必要なのか?それはブロックチェーンのトリレンマと関係があります。トリレンマっていうのはジレンマの三すくみバージョンですね。現実社会でいうと、自由・平等・安全を同時に実現するのは実はかなり困難だ、という感じです。



イーサリアムのヴィタリックがいうトリレンマとは「スケーラビリティ」「分散化」「セキュリティ」この3つを同時に実現するのはとても難しい、と。こちらも基本的に相反する要素となります。どれかひとつはあきらめなくてはならない。

イーサリアムが実現しようとすることは、巨大であちこちに分散しててセキュリティ(防御力)もあって速度もある。それって『進撃の巨人』の巨人がすばやくてクレバーで世界中に存在してても安全な状態です。それを実現するのはそもそも無理ゲーで、それでもそれを実現しようとチャレンジしているところがさすがヴィタリックです。私だったらすぐにあきらめます。

 

実際、現時点ではイーサリアムはセキュリティと分散性を優先させているためスケーラビリティを犠牲にしています。ですので「分散化」「セキュリティ」は実現しています。仮想通貨のスケーラビリティとは速度のことです。現時点でイーサリアムは1秒間に15件のトランザクションしか処理できません。VISAは一秒間に1667件もの処理をするといわれています。

そのイーサリアムのスケーラビリティの課題をzkEVMが解決するという流れとなります。それではzkEVMのzk、すなわちゼロ知識証明の解説をしていきます。

ゼロ知識証明とは?

よく解説として出るのが「アリババの洞窟の問題」です。

zk

zk

この図でPさんは合言葉を知っていて奥の扉を開けて洞窟を一周することができます。Vさんはその検証をしています。合言葉を知っているPさんは洞窟を抜けてくれば合言葉を知っているとVさんに証明できる。合言葉を知っていることをVさんに伝えなくても一周すればその証明になるというわけです。

つまり、ある情報や計算の詳細を明らかにすることなく、その知識を証明することができる暗号技術の説明を端的に表しています。

ゼロ知識証明の関係者

ここで登場人物の説明です、証明者のP(Prover)さんと検証者のV(verifier)さん。

ゼロ知識証明を成立させるには、完全性(completments)、健全性(soundness)、ゼロ知識性(zero knowledge)の要素が必要となります。

■完全性

Pさんが正直であり、正しく証明できること。

■健全性

Pさんがウソを付いた時に、見破られること。

■ゼロ知識性

Vさんが追加証明なし(知識ゼロ)に検証可能であること。



ゼロ知識証明には大きく2つある。

■対話型

PさんとVさんのやりとりがある。(あっち行って~、とかPさんが正しいか検証する)

■非対話型

PさんとVさんが対話(やりとり)しない。

では、非対話型はどうやるの?

対話しなくて証明とはどうやるのでしょうか?ステップとしては3つあります。

prover

prover

①証明(proof)を作成

Pさんがアルゴリズムに沿って証明書を作る。オフチェーンの外の時にproofを作る(このオフチェーンというのはイーサリアム外という意味でEVM上で生成される、つまり広義ではオンチェーン)。そして、ノンインタラクティブ(非対話型)とはいえ一度だけやりとりが発生します。そしてPさんから渡された証明書をVさんが検証する。そして正しいか正しくないかをVさんが返答する。

zkEVMなどで生成された証明書はイーサリアムのオンチェーン上に投げられます。

②非対話型としてzkSnarkとzkstarkの2種類がある。

zkSnarkは2012年に登場。歴史が長く開発者が多い。半面、量子耐性がない、信頼されたセットアップが必要などの欠点がある。楕円曲線暗号というものを使って量子耐性がありません。

なんすか、信頼されたセットアップとは?というところで解説に移っていきます。

zkSnarkはこのようなアルゴリズムからなっています。→G(generate=鍵生成)、P(prove=証明する)、V(verify=検証)となっています。

setup

[G]にCとRという値を入れる。そこで暗号カギが生成されます。重要なのはRという値でカギを作ったら絶対に捨てなければいけません。Rという値が存在するとカギがまた生成されてしまいます。

そのRをきちんと捨てているかどうかっていうのを信頼しなくてはいけない(トラスト問題)。それを信頼されたセットアップといいます。そこは信じるしかないという欠点ですね、つまり。

zkSybc Era、Scroll、Polygon、zkEVMなどがzkSnarkを使用しています。

zkStarkについて

Starkは2018年に開発されて、先ほどのSnarkの2つの問題を解決しています。有名なのはStarlNet。ただし歴史が浅いので開発者やドキュメントは少ない傾向にあります。

EVMについて

EVMには大きな役割が2つあります。コントラクト計算と状態計算です。

コントラクト計算

コントラクト計算とは、トランザクション発生時に計算をする必要があります(スマートコントラクトコンピテーション)。

状態(ステイト)計算

状態計算は最終的な状態、各スマートコントラクトを実行した後の有効な状態を計算し更新しています。

このようなことを内部でやっているからEVNはパンパンなんです!(だからスケーラビリティが向上しない)

なぜパンパンになりながらもEVM内で計算しなきゃいけないんでしょう?(外でやればいいのに)。それはEVM内で計算をすればこのイーサリアム内のルールでやっていることが証明できるからです。そういった意味で内部で計算するのは都合がいいんです。(どこの馬の骨かもわからないアルゴリズムで計算されるのはよろしくないわけですね)

では容量パンパン問題をzkEVMはどうやって解決するのでしょう?

最初のゼロ知識証明の話に戻りましょう。計算はイーサリアムから見てオフチェーン(zkEVM内)で行い、イーサリアムのコントラクトに証明書を送ります。

zkevm

検証者はその証明書を検証することで「確かにEVMのルールでやってるな」ということを確認します。これでEVM内で計算しなくても外で計算してproofを検証してもらうことでイーサリアムに計算結果を取り込んでもらいます。これでパンパン問題(スケーラビリティ)解決!

まとめ

zkSync EraなどのzkEVMの技術によってすべての計算をEVM上で行わなくてよくなり、イーサリアムは「分散化」「セキュリティ」、そして最後の「スケーラビリティ」を手に入れようとしています。

このトリレンマを解決しようとする情熱というかすごいですよね。



私からだと魔法にしか見えないゼロ知識証明という高度な技術によって解決しようとしています。ゼロ知識証明というのは何も仮想通貨だけの話ではありませんので理解を深めることはまた世界の仕組みを深く知るうえでとても役に立つと思います。いや~クリプトはオモシロイ!

今回はこちらの動画を参考にしています。ではまた!

コメント

タイトルとURLをコピーしました