著者:a16z crypto;翻訳:Block unicorn
はじめに
本日、LayerZeroは新チェーン「Zero」を発表しました。このチェーンには複数の技術的進歩が含まれており、取引の実行と検証を分離する全く新しいゼロ知識証明手法もその一つです。これら全ては「Jolt Inside」によって実現されました。
Joltとは何か?JoltはオープンソースのRISC-V zkVM(ゼロ知識仮想マシン、より正確には「簡潔な」仮想マシン)であり、高速・安全・使いやすい設計です。これはa16z cryptoによる3年間の研究開発に基づく、全く新しい最先端のSNARK設計手法を体現しており、誰でも利用・発展させられるようオープンソース化されました。しかしJoltの誕生は、実は数十年にわたる歴史の集大成なのです。
なぜzkVMとSNARK設計が重要なのか?
SNARK設計の進化を掘り下げる前に、まずzkVMとは何かを詳しく理解する必要があります。
この種の仮想マシンは通常「zk」仮想マシンと呼ばれますが、ここではより一般的に使われる特性である簡潔性に焦点を当てます。「ゼロ知識」はプライバシー保護に不可欠ですが、「簡潔」とは証明が短く検証しやすいことを意味します。これらは有用でありながら異なる特性であり、しばしば混同されます。(Joltは既に簡潔性を備えており、間もなくゼロ知識も実現する予定です。)
ではなぜzkVMが重要なのか?zkVM、そしてより広義のSNARK(簡潔非相互知識証明)は、ブロックチェーンのスケーラビリティ、プライバシー、セキュリティなど多くの側面において重要な構成要素です。この種の証明、証明、およびゼロ知識(総称して検証可能計算技術)は、暗号業界およびその他の分野で無数の用途があります。
従来の設計アーキテクチャやその他の理由により、業界はこれまでzkVMの構築において比較的複雑なアプローチを採用してきました。これについては後述します。しかしJoltは当初から、効率性・可用性・性能の向上を目的とした全く異なるSNARK設計手法に注力してきました。
端的に言えば、zkVMはコンピュータプログラムを正しく実行したことを証明する手法です。zkVMの他のSNARKに対する優位性は、開発者フレンドリーな点にあります。既存の計算インフラ(オープンソースのLLVMコンパイラエコシステムなど)を活用することで、開発者はドメイン固有言語(DSL)を使用せずに、選択したプログラミング言語でSNARKの強力な機能を最大限に活用できます。
これは、今日の多くの現代暗号分野とよく似ています。暗号化やデジタル署名のための標準、組み込みライブラリがあり、一般の開発者はその内部動作を理解することなく、毎日これらのライブラリを使用しています。Jolt は開発者に同様の抽象化を提供します<span leaf="" para",{"tagName":"p","attributes":{"style":"margin-right: 8px;margin-bottom: 0px;margin-left: 8px;letter-spacing: 0.578px;"},"namespaceURI":"http://www.w3.org/1999/xhtml"}]'>層:既存のプログラムを使用し、その検証を行うだけで、両者の相互作用を気にする必要はありません。これは、新しい暗号技術の実用化に不可欠な条件です。
開発者は、実際の操作に集中することができます。Joltを利用すれば、開発者はSNARKに関する専門知識が一切不要で、ボタンを押すだけで既に記述したコンピュータコードからJolt証明を生成できます。
しかし、Joltが多くの進歩を遂げたにもかかわらず、中程度の複雑さを持つ証明(例:標準的なCPUコア1個が1秒間実行する操作)依然として強力な計算能力を必要とします。複雑な証明を合理的な時間内に生成するには、複数のGPUが必要です。LayerZeroはJolt証明器をCUDAに移植し、Zeroを発表しました。これはJoltの基盤となる高度に並列化されたアルゴリズムとGPUの並列ハードウェアを組み合わせることで、より高いレベルの拡張性を実現します。LayerZeroはJoltを生産レベルのGPU証明へと進化させることに注力しており、zkVMと証明のスケーラビリティ向上に不可欠な、JoltアルゴリズムのGPU対応版を共同開発しています。
オープンソースによる研究開発
Jolt 自体はオープンソースであるため、誰もがその革新的な技術を利用したり、それを基盤に開発したりできます。オープンソースは究極の増幅器です:成果を公開して共有することで、エコシステム内のより多くの人々が利用、再利用、負荷テスト/監査/修正、改良を行い、さらにその上に新たなイノベーションを築くことが可能になります。
ベンチャーキャピタルがオープンソースプロジェクトに投資するのは一見異例に思えるかもしれませんが、現代の研究開発構造では、開発作業の大部分は企業内部(かつての企業研究所や現在の財団研究所など)か、学術界で行われています。a16z Crypto Researchを設立した目的は、学術理論と産業実践をつなぐ産業研究ラボとエンジニアリングチームを構築することです。ベンチャーキャピタルとして、他の機関が支援できないプロジェクト——特に逆投資(リバース投資)の場合——への資金提供も可能です。
SNARK の逆設計アプローチは、従来の設計手法とは根本的に異なる重大な「パラダイムシフト」を意味するため、Joltにとって特に重要である。この設計の進化には数年の歳月を要した。
イノベーションの物語は、往々にしてアーキテクチャ設計の変革の物語である変革の物語である
SNARK設計手法におけるJoltの重大な変革を理解するには、2000年以上前に遡る必要がある。古代ギリシャ人が形式化された数学的証明システムの発展を開拓し、後に中東、アジア、その他の地域の学者たちがこれを発展させたのである。
これらの初期の証明——段階的に記述された論理的推論——は形式言語や数式で記録され、誰もが検証できるようにされた。例えば、ある数学者が証明を「書物」に記し、別の数学者がその書物を一字一句読み上げて検証することができた。この伝統的な静的な書面による証明の概念こそが、有名な「P vs. NP」問題におけるNPクラスの本質を体現している。
注目すべきは、この伝統的な証明方法が順序的であり、順番に実行する必要がある点だ:それは静的であり、対話的ではない。
しかし1985年*に、シャフィ・ゴールドワッサー、シルヴィオ・ミカリ、チャールズ・ラコフが相互証明(「IP」)の概念を提唱した。[*実際には論文の発表はさらに数年早かったが、複数回却下された後に受理された。]この相互証明手法の核心的な考え方は、例えば二人の数学者が対話する場合、一方が証明を書き上げてから他方を説得するのを待つ必要がないという点にある。代わりに、彼らはリアルタイムで質問し合うことができる。言い換えれば、対話を通じて証明の本質を探求するのです。
この種の相互証明の巨大な威力——古代ギリシャ人が創始した伝統的な静的証明と比較して——が十分に認識されるようになったのは、5年後の1990年になってからでした。当時、Carsten Lund、ランス・フォートノー、ハワード・カーロフ、ノアム・ニサンが和の検証プロトコルを提案した:対話型証明システムのための代数的アプローチである。Adi Shamirの後続研究と相まって、これはすぐに「IP=PSPACE」という基礎的な結論へとつながった——これは技術的な表現であり、以下の直観的な主張を概括している:
証明者と検証者が相互にやり取りできる場合——つまり、従来の証明システムのように挑戦-応答** [**
嘘をつく証明者が、答えられない挑戦によって「見破られない」と仮定すれば)、
それにより古代ギリシャの伝統的な静的な書面証明と比較して、より複雑な主張を迅速に検証できる。
言い換えれば:相互作用性という特性は証明システムに大きな利点をもたらす。そして和チェック(sum-check)こそが、この利点を効率的な検証へと変換する核心である——検証者は証明対象の計算プロセス全体を再構築することなく、主張された結果を検証できるのだ。
数年後、Joe Kilian は確率的検証可能証明(PCP)から簡潔なゼロ知識証明を構築する手法を提案した。PCPの証明理論において、証明者(古代ギリシャの数学者を想像してもよいが、ここではコンピュータが担う)は通常の証明を「書物」に記述するが、その形式は高度に冗長である。注目すべきは、この冗長性により検証者が書物全体を読む必要がない点だ:検証者は証明の固定位置(例えば書中の3つの「単語」)をランダムに抽出するだけで、高い信頼度で証明全体の有効性を判断できる。
しかし問題は、検証コストが低いにもかかわらず、PCP証明自体が非常に長い点にある。
そこでKilianは、PCPと暗号技術を組み合わせる手法を提示した。これにより証明者は「長い書物」の完成を「約束」し、抽出された数語のみを公開するとともに、短い暗号学的認証を添付することが可能となる。キリアンプロトコルにおける最終的な証明は、実際にはこれらの単語(およびいくつかの暗号学的認証データ)のみである——しかしそれらは、検証者に本全体が有効であると確信させるのに十分であった。
これらの証明は当時、依然として対話型であった。その後、MicaliはFiat-Shamir変換を適用することで、KilianのPCPに基づく相互的証明を非相互的証明へ変換する方法を示した。要するに、Fiat-Shamir変換は検証者のランダムな挑戦を「排除」し、証明者が自ら挑戦を生成し、証明全体を一度に出力できるようにする。
レガシーアーキテクチャの持続的影響
証明システムの歴史と進化を俯瞰すると、静的から対話型、確率的・非対話型(PCP)、再び対話型(Kilian参照)、そして再び非対話型(Micali参照)へと至る変遷を経験してきた。SNARKはこの進化の終着点に位置する:Kilianの対話型証明にフィアット・シャミア変換を適用することで、Micaliは現在我々が知る形へと導いた。(Micali参照)へと回帰する進化を遂げてきた。SNARKはこの進化の末端に現れた:Kilianの対話型証明にFiat-Shamir変換を適用することで、Micaliは現在我々が最初のSNARK構造と呼ぶものを導出した。
しかしこれらの初期のPCPベースのSNARKでは、証明者の作業負荷が非常に大きく——計算時間が長すぎる——ため、実用的な展開が困難であった。
しかしながら、SNARKの設計手法は数十年にわたり継承されてきた。業界がPCPベースのSNARK設計手法からの脱却を試みた場合でも、設計者は「線形PCP」などの関連概念を依然として使用しており、これらは実質的にPCPヒューリスティック技術の変種に過ぎない。これらの手法は確かに証明時間が極めて短いSNARKを実現しましたが、証明者速度が最速のSNARKをもたらしたわけではありません。
SNARK設計者たちはその根本的な起源——和検証プロトコル——現代の計算技術によって実現可能となった、より高速で使いやすい証明者を得るために。
一歩引いて言えば、サマリー検証プロトコルをより早期に採用するためには、上述したSNARKの歴史と進化を非線形的に見直す必要がある。すなわち、(a) 対話型証明 → (b) PCP → (c) 簡潔な相互証明 → (d) 初期SNARKへと至る発展過程において、業界は以下の変遷を経験した:
(a)相互証明から
(a) 対話型証明 → (b) PCP への移行過程における主な課題は、証明システムの簡潔性を維持しつつ対話要素を排除する方法でした。これにより設計者は合計検証プロトコル(対話部分)を放棄しました。
しかし(b) PCP から (c) 簡潔なゼロ知識証明へ移行する際、相互作用が再び現れる……
最終的に、Fiat-Shamir変換によってこれを除去し、(c)簡潔な相互作用的証明から(d)初期のSNARKへの移行を実現した。
振り返ってみると
(a) → (b) → (c) → (d) の全ステップを直線的に検証すると、SNARK設計者が実際に2回((a)→(b)と(c)→(d))相互作用を省略したことが明確に確認できる。
しかし、
Fiat-Shamirを用いて相互作用を排除しようとするなら……中間ステップ(b)、つまり確率的検証可能証明を直接スキップすべきだ!
この中間ステップ(b)をスキップする点が、Jolt手法の核心的な洞察であり、相互作用型証明から直接SNARKを構築する——つまり
和検証へと直行するのです。
なぜより多くの人々が、より早く和検証プロトコルに基づく設計手法に転換しなかったのか?初期のSNARK設計者がそうしなかったのは、PCPとSNARKが表面上似ているためかもしれない。どちらも簡潔な検証の概念を実現しているからだ。その後の展開においては、アーキテクチャ——そして誤解——が持続する可能性がある。
我々にとって、合計検証ベースのzkVM Joltに膨大なエンジニアリングと研究リソースを投入することは、逆張り的な賭けである。なぜならそれは、SNARK分野で数十年にわたり支配的だったパラダイムに逆行するものだからだ。
‘Jolt Inside’
Jolt の SNARK 設計手法(それ自体がTwist + Shoutのようなバッチ評価とメモリ検証メカニズムに基づいている)は、インタラクティブ証明とサマリー検証プロトコルに基づいています。
Joltの構築を開始してから数年が経った今、他の研究者もサマリー検証プロトコル手法を設計に取り入れ始めています。では、Joltは現代のzkVMにおいてどのような特徴的な強みを持つのでしょうか?JoltはCPU実行における反復構造を最大限に活用しています。各CPUコアの「命令取得-デコード-実行」抽象化がバッチ評価メカニズムに適用される方法を観察することで、Joltは最小限の複雑さで比類のない効率を実現しています。
これに対し、他のzkVMは、妥当な性能を実現するために「プリコンパイル」(特定のサブルーチン向けのASICアクセラレータに類似)に大きく依存しています。Joltはこれらのプリコンパイルを排除しました。なぜなら、それらはzkVMが登場する前のSNARK設計手法の過ちを繰り返すことになるからです:専門家の設計を必要とする専用SNARKは、バグが発生しやすく、広範な開発者による利用が困難になります。Joltの焦点はSNARKの普及にあります。
CPU実行の正しさを検証することこそがzkVMの中核的価値であり、開発者体験における大きな飛躍です。既存の強化済み汎用計算インフラの再利用を可能にするからです。世界の計算インフラはCPUをサポートするために構築されており、JoltはCPU実行に固有の「構造」を最大限に活用して簡潔性と性能を最大化します。
Jolt は当初から簡潔性を優先し、生産レベルの性能を実現:開発者は既存プログラムを直接検証でき、迅速な検証のためであってもコード変更は不要です。Joltは他のソリューションのように、許容可能な性能を得るためにチームに「プリコンパイル」や特殊APIを軸としたアプリケーションのリファクタリングを強制しません。代わりに、元のコードの完全性を維持し、採用が容易で監査しやすく、反復コストが低い状態を保ちます。
さらに重要なのは、Jolt は高速であるだけでなくよりシンプルである点です。他のソリューションでは、zkVM設計者が仮想マシンの各基本命令に対して回路を指定する必要がありますが、Joltではその必要がありません。Joltでは、各基本命令を指定するのに必要なのは、わずか10行程度のRustコードだけです。回路不要、わずか10行のコードで実現。
Joltの次なる展開は?
我々は速度面で既に優位性を確立している。さらなる最適化と機能追加(再帰やゼロ知識証明を含む)——特に楕円曲線暗号から格暗号への移行を計画している——により、今年後半には速度がさらに桁違いに向上するでしょう。ポスト量子時代は言うまでもありません。
Jolt はより多くのアプリケーションを可能にします。ブロックチェーンにとって待望のスケーラビリティと分散化が、より容易に実装できるようになります。ゼロ知識証明のサマリーは、数か月あるいは数年を要する暗号工学の努力なしに、すぐに使える状態で提供されます。
しかしJoltがさらに進化するにつれて——例えば、スマートフォンやノートパソコンで動作する高速でシンプルなゼロ知識証明仮想マシンの構築など——開発者はクライアント側とプライバシー保護の面で、より多くのユースケースを解き放つことができるようになります。例えば、スマートフォン上のプライバシー保護アプリケーションは、これまで維持が困難でほとんど実行不可能だったものが、簡単に箱から出してすぐに使えるようになります。
長期的には、これらの証明システムは暗号化やデジタル署名と同様に、世界のデジタルインフラの中核を成す要素となるでしょう。この汎用的な暗号圧縮技術——特定の属性を持つ数GBのデータを有することを証明するために、全データではなくわずか50キロバイトの証明ファイルを送信するだけで済む——は非常に強力であり、人々がこれを使ってどのようなアプリケーションを開発するかを予測することは困難です。その可能性は無限大です。