
zkEVMとzkVM技術の比較:検証可能なコンピューティング能力の解放
TechFlow厳選深潮セレクト

zkEVMとzkVM技術の比較:検証可能なコンピューティング能力の解放
本稿では、zkEVMとzkVMの技術的差異を比較し、RISC Zero zkVMおよび間もなくリリース予定のBonsaiネットワークについて紹介します。
執筆:Erik Kaneda、RISC Zero 上級エンジニア
翻訳:Maxlion
はじめに
本稿では、zkEVMとzkVMの技術的違いについて比較し、RISC ZeroのzkVMおよびまもなくリリース予定のBonsaiネットワークについて紹介します。RISC Zeroは汎用zkVMであり、RISC Zero zkVMは検証可能なコンピュータで、実際の組み込みRISC-Vマイクロプロセッサと同様に動作します。これにより、プログラマーは他のコードを書くのと同じようにZK証明を記述できます。RustおよびC++によるZK証明の記述が可能で、RISC-Vにコンパイル可能なすべての言語をサポートしています。
背景
現在のスマートコントラクトの複雑さが増すにつれ、dappはますます高度化しており、ブロック空間は希少になり、オンチェーンコードの実行コストも上昇しています。つまり、DeFiロジックの計算コストが高くなる場合や、オンチェーンゲームのロジックに追加の計算能力が必要な場合は、zkVMまたはzkEVMを活用して、複雑なアプリケーションロジックをオフチェーンに移行することを検討すべきです。
このブログ記事では、「一文字」がもたらす違いについて説明したいと思います。まずEVMの概要から始め、次にzkEVM、そしてzkVMについて述べます。zkEVMを使えばSolidityアプリケーションをオフチェーンで処理できますが、RISC ZeroのzkVMおよびまもなく登場するBonsaiネットワークを使えば、Rustを使ってスケーラブルでチェーン非依存のコードを記述できます。
EVMの簡単な理解:
EVMとはEthereum Virtual Machine(イーサリアム仮想マシン)の略で、イーサリアム上のすべてのトランザクションを実行するソフトウェアと考えることができます。

各ノードはgethなどの実装を通じてこのソフトウェアを実行することでイーサリアムネットワークに参加しています。イーサリアムでは、トランザクションはコードとして表現され、その形式はEVMバイトコードと呼ばれ、EVMの命令を表します。おおむね、これらの命令は数学演算、ブロックチェーン情報の取得、および金銭のやり取りを目的としています。世界には多くの仮想マシンがあり、それぞれ独自の専門性を持っています。イーサリアムの仮想マシンは、分散型金融(DeFi)への応用に向いているため特に重要です。
「zk」とは何か?なぜ皆それを他の語の前に置きたがるのか?
最近最も注目されているトレンドの一つは、語の先頭に「zk」をつけることです。この二文字はゼロ知識証明(zero-knowledge proof)を意味します。ウィキペディアには多くの例があります(筆者が好きなのは「2つのボールと色盲の友人」の問題です)。もしゼロ知識証明に馴染みがない場合は、ここで数分間それらの例を読んでおくことをお勧めします。
結論から言えば、ゼロ知識証明は検証可能な計算を可能にするのです。これは、どの計算が行われ、その結果が正しいことを保証する手段と考えられます。コンピュータが計算結果で合意する方法の一つは、すべてのマシンが同じコードを実行して結果を比較することです。しかし、計算内容によっては、リソースに制約のあるシステムにとってこれは高コストになる可能性があります。RISC Zeroのようなゼロ知識証明フレームワークを使用すれば、各マシンは同じコード(EVMなど)を再実行する代わりに、証明の数学的な正当性を検証することで計算の正しさを保証できます。
RISC Zeroでは、こうした証明を「レシート(receipts)」と呼びます。以降の記事では、この用語を使用します。各レシートには、どの計算が行われたかを示す暗号識別子と、計算の公開出力のログが含まれています。単純な概念に見えるかもしれませんが、これはマシンが計算の完了を「証明」するためにレシートを生成できることを意味します。
では、「zk」をEVMの前に置くとどうなるのか?
「zkEVM」という用語は、EVMバイトコードエンジン上でスマートコントラクトを実行し、特定の計算(またはトランザクション)に対してレシートを生成するソフトウェアを指します。このソフトウェアは通常、2つ以上のレシートが有効であることを証明し、さらに別のレシートを生成できます。この仕組みを利用することで、zkEVMは多数のトランザクションを実行し、それらを1つのレシートで表現することが可能になります。これを「Rollup(ロールアップ)」と呼びます。Solidityで書かれたプロジェクトは、すべての計算をオンチェーンで行う代わりにzkEVMを利用してスケーリングし、ブロックチェーン上で多数のオフチェーントランザクションを代表する単一のレシートを発行できます。zkEVMにはさまざまなタイプがあり、詳しく知りたい場合は、この記事を参照してください。

zkVM:「E」を捨てることで検証可能な計算を解放する
RISC Zeroでは、zkEVMではなくゼロ知識仮想マシン(zkVM)を実装しています。両者の違いは、「VM」、すなわち「仮想マシン」がEVMよりも汎用的である点にあります。
zkVMでは、イーサリアム上で動くあらゆるソフトウェアではなく、コンピュータ上で動くほぼすべてのソフトウェアを実行できます。このコンピュータはRISC-Vアーキテクチャを使用しており、これは汎用計算のための一連の命令セットです。つまり、RISC-Vにはウォレットアドレスやその他のブロックチェーン構造といった概念は組み込まれていません。この命令セットは、メモリ位置間でのデータ移動やデータに対する数学演算を行う演算子を中心に構成されています。この命令セットはあまりにも抽象的に見えるかもしれませんが、zkVM向けのプログラムを作成する際に、プログラマーがアセンブリ言語の知識を持つ必要はありません。
EVMと比較して、この基盤となるRISC-Vエミュレータにより、プログラマーはRust、C/C++、Goなどの言語でzkVM向けのプログラムを作成できます(現時点ではRustをサポートしており、C/C++およびGoのサポートは開発中です)。つまり、zkVMのプログラマーは、これらの言語のエコシステムで他者が開発したライブラリを活用できます。たとえば、WordleやWhere's Waldoといったゲームを実行するプログラムを走らせることも可能です。しかし、単純なゲームに限定されるわけではありません。RISC-Vにコンパイル可能な多くの他のプログラムも実行できます。
RISC-Vプログラムを実行する意義は?
より優れたDeFiアプリを開発するのに役立つフレームワークを探している場合、なぜRISC Zeroのような汎用計算フレームワークを研究しているのか疑問に思うかもしれません。
ユーザーが汎用言語を使ってプログラムを書けるようにすることで、Solidityのライブラリ外でのコーディングが可能になります。つまり、アプリケーションロジックがSolidityで表現できる範囲に限定されず、チェーン非依存のコードを書けるようになります。Rustのような汎用言語を使えば、特定用途のために設計された言語よりも、さまざまな種類のプログラムをはるかに簡単に作成できます。例えば、数学式を入力として受け取り、計算を行い、解を出力として返す単純な電卓をRustで書けます。この電卓の複雑さを高め、変数、ループ、関数といった一般的なプログラミング言語構造をサポートするようにすれば、プログラムを入力として受け取り、それを実行して解を返すシンプルな言語インタプリタを実現できます。こうしたプログラムはRISC-Vにコンパイルされ、RISC ZeroのzkVM上で実行可能です。Rustを使えば、すべてをゼロから書く必要なく、既存のcratesを使ってアプリケーションを開発できます。
そのようなライブラリの一つが、Rustのrevm crateです。このcrateは、Rustで書かれたEVMの実装です。このcrateを使うことで、zkVM上でEVMバイトコードインタプリタを実行できます。つまり、zkVM上で動作するEVMバイトコードインタプリタ上でSolidityコントラクトを実行できるのです!これにより、zkVMはスマートコントラクトの実行に対応するEVMの実行を表すレシートを生成します。これはOdraのブログ記事でも紹介されており、zkPoExチームはバグ報奨金の強化にこれを活用しています。
ブロックチェーンをどうスケールさせるか?
現在のスマートコントラクトの複雑さが増すにつれ、多くの開発者は、自らが維持するオンチェーンコードのコストが開発とともに増大していることに気づいています。つまり、DeFiロジックが徐々に計算コスト高くなり、あるいはオンチェーンゲームのロジックが追加の計算能力を必要とする場合、RISC ZeroのzkVMおよびまもなく登場するBonsaiネットワークを使えば、汎用プログラミング言語でスケーラブルなオンチェーンコードを記述できます。本稿ではいくつかの例を挙げましたが、我々は真にスケーラブルな計算ネットワークの黎明期にいます。実際にどのように進むかを見てみたい場合は、今すぐ始め、コミュニティに参加してBonsaiに登録し、分散型でスケーラブルな、すべての人のためのインターネットの構築に貢献してください。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














