Zero Knowledge VM (zkVM)とは何ですか?
Zero Knowledge VM (zkVM)は、コードを実行し、入力を明かさずに実行が正しかったことを示す証明を出す仮想マシンです。審判がスコアを確認する一方で作戦を秘密にするようなものです。同じ結果で、詳細はあまり明かしません。
「zkVMはすべてを匿名にする」とは必ずしも言えません。実行が正しかったことを証明します。何を非公開にするかはアプリが決めるもので、マシンが強制するわけではありません。
Zero Knowledge VM (zkVM)の仕組み
オフチェーンでプログラムを実行し、その後「正しく実行された」と示す小さな数学的な受領証をオンチェーンに送るイメージです。以下は簡単な手順です。
- ステップ 1: 開発者がzkVM内で動かすコードを書いたりコンパイルしたりします。
- ステップ 2: プログラムはオフチェーンで実行され、証明を生成します。例えば、取引の価格が正しかったことを、トレーダーの入力を見せることなく証明できます。
- ステップ 3: その証明と最小限のデータがオンチェーンの検証者へ送られます。
- ステップ 4: 検証者は証明を迅速に確認し、可否を記録します。
- ステップ 5: 他のコントラクトやユーザーは、重い計算をやり直さなくても結果を信頼できます。
内部では、実行を裏付けるためにゼロ知識証明を使っています。つまり、数学が証拠になります。
Zero Knowledge VM (zkVM)が注目される理由
これによりコストの仕組みが変わります。重い計算はオフチェーンで行い、オンチェーンではごく小さな確認だけで済みます。
- 利点: 検証が安価なため速度や手数料が改善されます。重い処理は別の場所で行われます。
- 視点: 機密データを隠したまま、結果の透明性を示せます。
- 関連分野: プライバシーと検証可能な数学の両方が重要なDeFi、ゲーム、アイデンティティなどで期待されます。
zkVMを比較する際はまず二つを確認してください: 対応する言語と、対象チェーン上で検証者がどれくらい速く動作するか。
Zero Knowledge VM (zkVM)の主な特徴
実際に評価される特性は次の通りです:
- 汎用: 単一用途の回路ではなく、さまざまな種類のプログラムを実行できます。
- 移植性: 証明は小さなスマートコントラクトによって複数のチェーンで検証できます。
- 選択可能: アプリがどの入力を非公開にし、どの出力を公開するかを選べます。
- 効率性: 元の実行が重くても、証明の検証は迅速です。
- 合成可能: 証明はバッチ処理やネストが可能で、システムをより効率的に拡張できます。
バリエーション
すべてのzkVMが同じ形ではありません。よく見られるタイプは次の通りです:
- EVM: Solidity風のロジックを実行して証明することを目指しており、既存アプリの直接的な再利用に向きます。
- LLVM: RustやCなど一般的な言語から証明可能な形式にコンパイルします。
- Rollup: 証明をベースチェーンに投稿するバリディティロールアップ内で使われます。
- ソブリン: 自身のチェーン上で検証しつつ、証明を外部へ橋渡しします。
検証は安価ですが、証明の生成は重く時間がかかることがあります。そのトレードオフがポイントです。
例
あるレンディングアプリが担保の価格をzkVM内で算出し、チェーン上には証明だけを投稿します。これにより、借り手のデータを公開せずに清算が公正に行われます。
豆知識
この考え方は80年代の研究にさかのぼります。当時、暗号学者たちは秘密を明かさずにそれを知っていることを証明できると示しました。暗号系のSNS上で注目され、スタイリッシュになりました。
まとめ
一言で言うと、Zero Knowledge VM (zkVM)は、機密性の高い入力を隠したままチェーンが作業を速く検証できるようにする証明用コンピュータです。
