a16z:ビルダーの重要な要素:‘Jolt Inside’
記事の著者:a16z crypto
記事の翻訳:Block unicorn
前書き
今日、LayerZeroは新しいチェーンZeroを発表しました。このチェーンには、取引の実行と検証を分離する全く新しいゼロ知識証明方法を含む、いくつかの技術的進歩が含まれています。これらはすべて「Jolt Inside」によるものです。
Joltとは何ですか?JoltはオープンソースのRISC-V zkVM(ゼロ知識仮想マシン、またはより正確には「簡潔な」仮想マシン)であり、迅速で安全かつ使いやすいです。これは、a16z cryptoが3年間の研究開発を経て生み出した新しい最先端のSNARK設計方法を代表しており、誰でも使用またはさらに開発できるようにオープンソース化しました。しかし、Joltの誕生は実際には数十年にわたる物語です。
なぜzkVMとSNARK設計がそれほど重要なのか?
SNARK設計の進化を深く探る前に、まずzkVMとは何かを詳しく理解する必要があります。
この種の仮想マシンは通常「zk」仮想マシンと呼ばれますが、ここでより一般的に使用される特性は簡潔性です。「ゼロ知識」はプライバシー保護にとって重要ですが、「簡潔」は証明が短く、検証が容易であることを意味します。これは有用ですが異なる2つの特性であり、しばしば混同されます。(Joltはすでに簡潔性を備えており、すぐにゼロ知識も実現するでしょう。)
しかし、なぜzkVMがそれほど重要なのでしょうか?zkVMおよびより広義のSNARK(簡潔非対話型知識証明)は、ブロックチェーンのスケーラビリティ、プライバシー、安全性などの多くの側面において重要な要素です。この種の証明、論証、ゼロ知識(総称して検証可能計算技術)は、暗号業界や他の分野で無数の応用があります。
従来の設計アーキテクチャやその他の理由により、業界はこれまでzkVMの構築において比較的複雑なアプローチを取ってきました。以下でこれについて詳しく説明します。しかし、Joltは最初から全く異なるSNARK設計方法に焦点を当てており、より高い効率、可用性、性能を実現することを目指しています。
簡単に言えば、zkVMはあなたがコンピュータプログラムを正しく実行したことを証明する方法です。zkVMは他のSNARKに対して開発者に優しいという利点があります。既存の計算基盤(例えばオープンソースのLLVMコンパイラエコシステム)を利用することで、開発者はドメイン特化言語(DSL)を使用せずに、自分の選んだプログラミング言語でSNARKの強力な機能を発揮できます。
これは、今日の多くの現代暗号学の分野に非常に似ています。私たちは暗号化やデジタル署名のための標準、組み込みライブラリを持っており、一般的な開発者はこれらのライブラリを毎日使用しており、その内部の動作を理解する必要はありません。Joltは開発者に同様の抽象レイヤーを提供します。既存のプログラムを使用して検証するだけで、両者の相互作用を心配する必要はありません。これは新しい暗号学の普及アプリケーションにとって必要な条件です。
開発者は実際の操作に集中できます。Joltを利用することで、開発者はSNARKに関する専門知識を必要とせず、ボタンを押すだけで自分が書いたコンピュータコードからJolt証明を生成できます。
しかし、Joltが多くの進歩を遂げたとしても、中程度の複雑さの証明(例えば、単一の標準CPUコアが1秒間に実行する操作)を証明するには依然として強力な計算能力が必要です。合理的な時間内に複雑な証明を生成するには、複数のGPUが必要です。LayerZeroはJolt証明器をCUDAに移植し、Zeroを発表しました。これは、Joltの基盤となる高度に並列化されたアルゴリズムとGPUの並列ハードウェアを組み合わせることで、より高次のスケーラビリティを実現しました。
LayerZeroは、Joltを生産レベルのGPU証明に向けて推進することに取り組んでおり、zkVMと証明のスケーラビリティを向上させるために、私たちと共同で開発したJoltアルゴリズムのGPUフレンドリーなバージョンを含んでいます。
オープンソースの研究開発
Jolt自体はオープンソースであるため、誰でもその革新的な技術を使用または基にして開発できます。オープンソースは究極の倍増器です。成果を公開共有することで、エコシステム内のより多くの人々が使用、再利用、ストレステスト/監査/修正、改善し、さらに革新を進めることができます。
リスクキャピタル会社がオープンソースプロジェクトに投資することは一見異常に思えるかもしれませんが、現代の研究開発の構造は、ほとんどの開発作業が社内で行われることを決定づけています。例えば、過去の企業ラボや現在の財団ラボ、または学術界で行われます。私たちがa16z暗号研究機関を設立した目的は、学術理論と産業実践を結びつける産業研究ラボとエンジニアリングチームを構築することです。リスクキャピタル会社として、他の機関が資金を提供できないプロジェクトを支援することもできます……特に逆向きの投資の場合です。
SNARKを支える逆向き設計アプローチは、Joltにとって特に重要です。なぜなら、それは従来の設計アプローチとは全く異なる重要な「パラダイムシフト」を表しているからです。この設計の進化は何年もかけて行われてきました。
革新の物語はしばしばアーキテクチャ設計の変化の物語である
JoltがSNARK設計方法において取った重要な変革を理解するためには、2000年以上前に遡る必要があります。古代ギリシャ人は形式的な数学的証明システムの発展を開拓し、その後中東、アジア、その他の地域の学者たちがそれを拡張しました。
これらの初期の証明は、段階的に書かれた論理的推論であり、形式的な言語や公式で記録され、誰でも検証できるようになっています。例えば、ある数学者が証明を「本」に書き、別の数学者がその本を逐語的に読み上げて検証することができます。この伝統的な静的な書面による証明の概念は、有名な「P vs. NP」複雑性クラスNPの体現です。
注目すべきは、この伝統的な証明方法は順序的であり、交互に行う必要があることです。これは静的であり、対話的ではありません。
しかし、1985年に進むと、Shafi Goldwasser、Silvio Micali、Charles Rackoffは対話的証明(「IP」)の概念を提案しました。[*実際、彼らの論文は数年前に提出されましたが、何度も拒否された後に受理されました。]この対話的証明方法の核心的な考え方は、例えば、2人の数学者が交流する場合、彼らは一方が証明を書くのを待つ必要はなく、代わりにリアルタイムで質問できるということです。言い換えれば、対話を通じて証明の真実を探求するのです。
このような対話的証明の巨大な力は、古代ギリシャ人が開拓した伝統的な静的証明に対して、1990年まで十分に認識されませんでした。当時、Carsten Lund、Lance Fortnow、Howard Karloff、Noam Nisanは、対話的証明システムのための代数的方法としての和検証プロトコルを提案しました。Adi Shamirのその後の研究と組み合わせて、これはすぐに「IP=PSPACE」という基本的な結論をもたらしました。これは技術的な表現であり、以下の直感的な声明を要約しています:
もし証明者と検証者が対話できるなら、つまり伝統的な証明システムのように挑戦と応答を行うことができるなら(嘘をつく証明者が答えられない挑戦で「捕まる」ことはないと仮定すると)、古代ギリシャの伝統的で静的な書面による証明と比較して、より複雑な主張を迅速に検証できるのです。
言い換えれば、対話的な特性は証明システムにおいて非常に大きな利点を与えます。そして、和検証(sum-check)はこの利点を効率的な検証に変換する核心的な要素です。これは、検証者が全体の計算プロセスを再構築することなく、主張された結果を検証できることを可能にします。
数年後、Joe Kilianは確率的に検証可能な証明(PCP)から簡潔なゼロ知識証明を構築する方法を提案しました。PCPの証明理論において、証明者(古代ギリシャの数学者を想像できますが、今はコンピュータです)は普通の証明を「本」に書きますが、その形式は非常に冗長です。この冗長性により、検証者は本全体を読む必要がなく、固定された数の証明位置をランダムに抽出するだけで、例えば本の中の3つの「単語」を抽出することで、全体の証明が有効かどうかを高い信頼度で判断できます。
しかし、問題はPCP証明自体が非常に長いことであり、検証コストは低いものの、実際には扱いにくいのです。
そのため、KilianはPCPと暗号学を組み合わせる方法を示し、証明者がこの「長い本」を完成させることを「約束」し、その後、抽出された数語を公開し、短い暗号学的認証を添付することを可能にしました。Kilianプロトコルの最終的な証明は実際にはこれらの数語(および一部の暗号学的認証データ)であり、これにより検証者は本全体が有効であると信じることができます。
これらの証明は当時も依然として対話的でした。その後、MicaliはFiat-Shamir変換を適用することで、KilianのPCPに基づく対話的証明を非対話的証明に変換する方法を示しました。簡単に言えば、Fiat-Shamir変換は検証者のランダムな挑戦を「排除」し、証明者が自ら挑戦を生成し、一度に全体の証明を出力できるようにしました。
遺産アーキテクチャの持続的影響
証明システムの歴史と進化を通じて、私たちは静的から対話的、確率的および非対話的(PCP)、再び対話的(Kilian参照)、そして再び非対話的(Micali参照)への進化を経験しました。SNARKはこの進化の末端に現れました。Fiat-Shamir変換をKilianの対話的証明に適用することで、Micaliは私たちが現在呼んでいる最初のSNARK構造を得ました。
しかし、これらの初期のPCPに基づくSNARKでは、証明者の作業量が膨大であり、計算に時間がかかりすぎるため、実際の展開が難しいものでした。
しかし、SNARKの設計方法は数十年にわたって引き継がれています。業界がPCPに基づくSNARK設計方法から脱却しようと試みても、設計者は関連する概念(例えば「線形PCP」など)を使用し続けており、これらの概念は実際にはPCPのヒューリスティック技術の変種に過ぎません。これらの方法は確かに非常に短い証明をもたらしましたが、証明者の速度が最も速いSNARKをもたらすことはありませんでした。
SNARK設計者たちは常にその根源である和検証プロトコルに戻ることはありませんでした。今日の現代計算によって実現可能な、より速く、より使いやすい証明者を得るために。
一歩引いて考えると、和検証プロトコルをより早く採用するためには、上記で概説したSNARKの歴史と進化を非線形的に考察する必要があります。(a) 対話的証明 → (b) PCP → (c) 簡潔な対話的証明 → (d) 初期SNARKの発展の過程で、業界は以下の変化を経験しました:
(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キロバイトの証明ファイルを送信するだけで済む——は非常に強力であり、人々がそれを使ってどのようなアプリケーションを開発するかを予測するのが難しいほどです。その可能性は無限大です。







