zkEVMって結局何なの?

はじめに

ブロックチェーンをスケールさせる技術のzkRollupについては、様々な企業が凌ぎを削って開発を進めておりますが、EthereumでzkRollupを実現するには課題が残されています。それはEthereumがトランザクションを実行する環境であるEVM(Ethereum Virtual Machine)に互換性を持ったzkRollup(= zkEVM)が未だ実現していないことです。今回はzkEVMがなぜ必要なのかを基礎知識から説明していきたいと思います。

 

EVM(Ethereum Virtual Machine)の概要

zkEVMの話をする前にその前提となるEVMとは何かを説明していきます。EVMとはEthereumネットワークを構築する何千台ものコンピュータによって構成された一つの大きな環境を指しています。どんな種類のブロックチェーンでも、どの取引が有効かを判断し、正しい情報が格納されたブロックを繋いでいくための一定のルールが必要で、EVMはそのルールに則りネットワークに参加するコンピュータからの入力を集約し、取引やスマートコントラクトの実行が正しく行われるようにしています。

 

しかし、近年のトランザクションの増加を原因としたガス代の高騰や処理速度の低下に見られるように、EVMが世界中のユーザに円滑に使われるようになるにはまだ課題が残っています。それらの問題を解決するべく登場したのが、EVMと互換性を持ったzkRollupであるzkEVMになります。

 

zkEVMの概要

暗号学の一種であるゼロ知識証明を活用してEthereumをスケールさせる一般的なアプローチはzkRollupを構築することです。zkRollupは大量のトランザクションを「ロールアップ」し、ゼロ知識証明を使ってEthereumにコミットをするレイヤー2のプロトコルです。

 

ロールアップ(Rollup)とはメインのブロックチェーンのセキュリティを活用しながら、トランザクションの一部をオフチェーンにて処理することでネットワークの混雑解消を図るソリューションとして機能しており、トランザクション自体はL2で実行されますが、その正当性の検証やデータ保存はL1で行われます。

 

ロールアップには「まとめて束ねる」といった意味がありますが、オフチェーンで処理したデータをひとまとめにしてメインのL1チェーンに提出する仕組みをさしています。

 

◆ロールアップ(Rollup)の流れ

 ①ユーザがL2でトランザクションを実行

 ②トランザクションデータを抽出・圧縮

 ③複数のトランザクションデータをひとまとめにしてL1へ提出

 ④L1のスマートコントラクトで③が正しいかを検証

 ⑤正しければL1のオンチェーンに保存

 

L1はL2から提出されるひとまとまりのデータを検証・保存するだけなので、個々のトランザクションについて検証する必要がなく、負荷の軽減を図ることが可能になります。これらがロールアップ(Rollup)の大まかな内容となります。

 

そして、zkRollupはロールアップの技術にゼロ知識証明の技術を組み合わせた方法となっており、ゼロ知識証明は「トランザクションの中身を確認せずとも、それが正当であることを確率的に証明することが出来る」ため、L1に提出されたトランザクションの検証負荷を大幅に削減することが可能です。

 

zkEVMの実現に向けた課題

上述のようにzkRollupはEthereumをスケールさせるソリューションとして大きな効力を持っていますが、まだその実現には課題が残されています。それはzkRollupの技術とEVMの間に互換性がないことです。

 

EVMはEthereumを構築する一つの大きなネットワークと先ほど述べましたが、その上には様々なプロダクトが稼働しています。zkRollupを活用する為に、もし下手にEVMへ変更を加えた場合、最悪アプリケーションが利用できなくなる可能性があり、開発者としてはなるべく既存のEVM環境を維持したままzkRollupを利用したいと考えています。つまり、EVMの既存環境を維持したままzkRollupを利用可能な状態がzkEVMの目指している世界です。

 

おわりに

今回はzkEVMについて概要をざっと整理いたしました。Polygonに関してはPolygon ZeroというソリューションでzkEVMの実現を目指していますが、まさにこれからのブロックチェーンインフラを担う技術として今後も動向を注視していきたいと思います。