【ゼロ知識証明】zk-EVMとスケーラビリティについて
前回の記事「【ゼロ知識証明】ゼロ知識証明を解剖する」では、ゼロ知識証明の技術を利用するメリットが2つあることを紹介しました。
- メリット① プライバシー保護目的の利用
- メリット② コンピュータの計算の信頼性確保目的の利用 ※コンピュータが行った計算を高速に検算する
今回はそのうち、コンピュータ計算の信頼性確保目的の利用に伴うスケーラビリティの向上について詳しく説明します。
本記事では、イーサリアムの仮想マシンであるEtherium VIrtual Machine(以下EVM)と、EVMのスケーラビリティの課題を解決するために新たに設計した仮想マシンであるZero Knowledge Etherium Virtual Machine(以下zk-EVM)を例に詳細を見ていきたいと思います。
スケーラビリティとレイヤー2
zkEVMについての説明をする前に、スケーラビリティとレイヤー2とは何かを説明します。
ゼロ知識証明の技術を利用するとスケーラビリティが向上すると言われていますが、これはコンピュータが行った計算を高速に検算することを意味します。 コンピュータの計算の信頼性確保を高速に実施するものです。
また、ブロックチェーンには技術階層が存在します。
「レイヤー」という言葉が使われ、レイヤー1がブロックチェーン、レイヤー2がブロックチェーン以外のオフチェーンを指します。
レイヤー2は、メインのブロックチェーン(レイヤー1)以外で何等かの取引を実行する場合に使われる技術です。
なぜレイヤー2が必要かと言うと、イーサリアムをはじめとする暗号通貨は、大量の取引が行われる際、処理能力の制限によっておこるスケーラビリティ問題があるからです。
暗号資産は投資目的でのみ利用される訳ではなく、決済などにも用いられますが、そうするとレイヤー1上で全ての取引処理を行うのが難しい場面が多々あるのです。
そしてレイヤー2技術の1つとしてゼロ知識証明があります。
ゼロ知識証明は、人やコンピュータが情報や計算の詳細を明らかにすることなく、その知識を証明することができる暗号技術です。通常、ゼロ知識証明の技術を使わないと信頼性確保のために多くの検算を必要としますが、レイヤー2のゼロ知識証明の技術があれば検算数を少なくすることができるのです。
イーサリアムのゼロ知識証明技術では、全ての処理をオンチェーンで行わずほとんどをオフチェーンで処理し、定期的にまとめてオンチェーンに記録するという仕組みが採用されています。
レイヤー1から取引やスマートコントラクトの処理を引き受けて、オフチェーンで行うことに利用されます。
これによって取引の処理スピードが上がります。
処理が簡易になってスピードが上がっているので、その分手数料が割安になるというメリットもあり、トランザクション数が多い取引にはうってつけの技術となっています。
zk-EVMとは
EVM
ではゼロ知識証明が実際にどのように取り入れられているのか、詳細を説明します。
EVMとzk-EVMを例にして見ていきましょう。
EVMとはEthereum Virtual Machineの略で、イーサリアムブロックチェーン上でコントラクト計算(スマートコントラクト)を実行するソフトウェア環境です。
また、スマートコントラクトを実行した後、イーサリアムチェーンの有効な状態を計算(状態計算)して、更新する機能があります。
公式HPより
zkEVM
zkEVMはゼロ知識証明を使ったネットワークで使う仮想マシンです。
もともとzkロールアップというゼロ知識証明を使ったレイヤー2のソリューションがありましたが、これは高性能でも仕様が複雑という欠点がありました。
しかしzkEVMの登場により、zkロールアップを利用する際の技術的なハードルが下がり、以前よりも容易に利用できるようになりました。
トランザクションの実行や状態保存はEVMとは独立した、レイヤー2の別の仮想マシン上で行われます。これがzkEVMです。zkEVMにも種類があるのですが、イーサリアムと互換性のあるものを利用した場合で今回は説明していきます。
zkEVMはゼロ知識証明を使ったネットワークでスマートコントラクトを実行するソフトウェアで、スマートコントラクト実施時に、レイヤー2上(イーサリアムのネットワーク外)でコントラクトと状態計算を実行します。
EVMはイーサリアムネットワークの仮想マシンですが、 zkEVMはゼロ知識証明を使用してオフチェーンのスマートコントラクト計算環境を構築し、イーサリアムのスケーラビリティの課題を解決するために新たに設計された仮想マシンです。
Mediumより
zkEVMを使用すると、イーサリアムで構築するようなあらゆるタイプのアプリケーションを、よりスケーラビリティのある形で開発することができます。
具体的な仕組みを見ていきましょう。
zk技術(証明プロトコル、レイヤー2)でスケーラビリティを向上する方法
zkプロトコルとスケーラビリティの関係
具体的なゼロ知識証明の仕組みを見ていきましょう。
今回はスケーラビリティについて考えるために、関係するアルゴリズムや環境について触れていきます。
まずゼロ知識証明では、 健全性を満たすために、証明者の主張が偽ならば、検証者は無視できる確率を除いて拒否できるようにする必要があります。
平たく言うと「ワインの銘柄を、銘柄名を言わずに知っていることを証明する」という命題があったときに、真偽判定の証明プロセスの健全性を担保する必要があるということです。
一般的には証明プロセスを複数回繰り返し、確率論的な考え方でこの健全性を保っています。
具体的には、zkプロトコルを複数回実行することになります。(※プロトコルは通信処理手順を意味します)
ただしプロトコルの実行が増えると通信コストが大きくなってしまい、効率が悪くなります。
なのでできるだけ1回のプロトコル実行で済むような設計になっていると通信効率としてはよいのです。
ゼロ知識証明の証明プロトコルは、 以下のような流れで行われます。
- 証明者が検証者に秘密情報を送付する
- 検証者は秘密情報をもとに、証明者に真偽どちらかをランダムに送付する
- 証明者は受け取ったランダムな値を、証明式に入れて成り立つかを検証して、検証者に送付する
- 検証者側でもランダムな値を証明式に入れて、成り立つかを検証して、成り立つ場合は1(受理)を、成り立たない場合は0(拒否)を出力する
※1~4を複数回繰り返す
この処理が全てオンチェーン上で実施されていたり、またその回数が増えると通信が多くなってしまうので、処理効率が大きく損なわれてしまいます。
解決策として、プロトコルの処理内容自体を工夫したり、レイヤー2を使うことで、ゼロ知識証明プロトコル処理をする場所をオフチェーンにすることが挙げられます。
証明プロトコルを工夫したスケーラビリティ向上(Schnorrプロトコル)
プロトコル処理工夫の例を一つ挙げてみます。
Schnorr(シュノア)の証明プロトコルというものがあります。
Schnorrプロトコルでは1回のプロトコル実行で証明を可能にするために、処理内容に工夫がされています。
上記で説明したゼロ知識証明の証明プロトコルの②で、検証者が証明者に真偽をランダムで送付する時に、 ランダムな値を取る範囲を「0か1か」の2択ではなく、もっと範囲を広げるものです。また証明式のアルゴリズムもそれに合わせて変更します。
Schnorrプロトコルは、ゼロ知識証明で言う完全性、健全性、ゼロ知識性も担保ができると期待されています。
健全性の面においては、証明者が秘密情報を知らない場合に、検証者が処理を受理する確率が低いため、 具体的な健全性の確保については鍵生成時に数字を考える必要がありますが、担保が可能と言えるでしょう。
ゼロ知識証明を使うことでプライバシー保護はされるけれど、なりすましの面でセキュリティは大丈夫なのかという懸念がある方もいるかと思います。
特に効率性を重視した非対話型 に対して気になる部分があるかもしれません。
上記で説明したプロトコルは対話型ですが、これを非対話型に変換することも可能で、その場合はハッシュ関数(擬似乱数生成する)やデジタル署名をを利用した数式に置き換わります。
ゼロ知識証明においてなりすましのセキュリティリスクを考えたい場合などがあったら、 プロトコルにハッシュ関数やデジタル署名など何の技術が使われているかを確認するのもよいでしょう。
レイヤー2を利用したスケーラビリティ向上(zkRollup)
次にレイヤー2を利用した方法について触れていきます。
イーサリアムの取引をゼロ知識証明プロトコルを取り入れることで、ゼロ知識証明も含めた取引実行のための処理を、別マシンで実行するという方法です。
zkRollupを利用すると、複数のトランザクションをひとつのバッチにまとめて、このバッチをオフチェーンで実行します。
計算をオフチェーンで実行することで、オンチェーンに書き込む必要があるデータの量を削減することができます。
zkRollupでは処理結果の送信時に、取引情報や変更点のサマリのみを送信し、それと同時に、変更内容が正しいことを証明するために、有効性証明を生成します。
これにはイーサリアムノードのトランザクションや計算の詳細を共有する必要はないため、イーサリアムノードは計算そのものではなく、計算と状態の簡潔な証明を処理するだけでよくなります。
最小限でも証明可能な正当なデータに基づいてイーサリアムチェーンの状態を更新して、イーサリアムネットワーク上の計算を大幅に削減するのです。
zkRollupを使うことでイーサリアムアプリケーションに比類ないスケーラビリティを提供し、より低い計算コスト、処理分散性、高品質なセキュリティを実現することができます。
展望は?
今回はスケーラビリティとゼロ知識証明の関係について触れました。
2022年から2023年にかけて多くのイーサリアムのレイヤー2プロジェクトがzkEVMの実装を発表していて、今まで複雑で利用が広がらなかったゼロ知識証明の技術がzkEVMの登場により拡大し、既存の技術にどんどん組み込まれています。
新しいイノベーションを見る日も近いかもしれません。
この機会に是非、一緒にゼロ知識証明技術について触れていきましょう。
参考
- Ethereum 公式HP
- ブロックチェーンのレイヤー2とは|種類や注目点、代表的なネットワークを解説(COIN POST)
- イーサリアムで導入が検討されているロールアップ(Rollups)とは?応用技術についても解説(DMM Bitcoin)
- 暗号技術のすべて(著者 IPUSIRON / 発行所 株式会社翔泳社)
Plus Web3は「Web3領域に特化したキャリア支援サービス」
Plus Web3では、Web3で働きたい人材と、個人に合わせた優良企業をマッチングする求人サービスを行っています。
- Web3で働くことも考えている…
- Web3のインターン先はどこがいいか分からない…
- どんな知識やスキルがあれば良いのか分からない…
このような悩みを抱える人は、一度「無料キャリア相談」にお越しください。あなたにマッチした優良企業をご紹介いたします。