原題: ZK-ASIC の設計における新しいパラダイム、zkVM の方法
原作者:Cysicチーム
この記事を編集したのは:ルーピー
洞察力に富んだ議論をしてくれた Justin Drake と Luke Pearson に感謝します。
リアルタイムのゼロ知識証明生成には、エンドツーエンドのハードウェア アクセラレーションが必要です。 zkVM は、ZK ASIC の設計を簡素化するだけでなく、ハードウェアの高性能化と低コスト化も可能にします。
ゼロ知識証明 (ZKP) を使用すると、一方の当事者 (証明者) が、ステートメント自体の有効性以外の情報を明らかにすることなく、特定のステートメントが真であることを別の当事者 (検証者) に証明できます。
ゼロ知識証明の発明者の 1 人であるシルビオ・ミカリ (彼はゴールドワッサーおよびラックオフと共同発明した) は、暗号化がデータを混乱させるのと同じように、ゼロ知識証明は計算を混乱させると述べました。より具体的には、暗号化アルゴリズム (AES や RSA など) はデータを対応する暗号文に変換し、基礎となるデータを隠します。ゼロ知識証明は、計算上の主張を、計算の詳細を隠すだけでなく主張の正しさを検証する証明に変換します。
ZKP には、ゼロ知識とシンプルさという 2 つの優れた特性があります。これにより、これは最も広く使用されている高レベルの暗号化プリミティブの 1 つになります。
ゼロ知識とは、証明自体が計算プロセスやプライベートな入力に関する情報をまったく明らかにしないことを意味します。この機能は、プライバシー指向のアプリケーションを構築する場合に非常に役立ちます。たとえば、Aleo は、ビットコイン、イーサリアム、その他のパブリック チェーンとは異なり、トランザクションの詳細を隠すことができます。
単純さとは、証明のサイズが小さく、検証時間が短いことを指します。これは、複雑な計算プロセスを小さなデータ (つまり、「証明」、「証明」) に変換できることを意味します。また、性能の低いコンピューティング デバイス (携帯電話や Raspberry Pi など) でもほぼ瞬時に検証できます。この機能は、1000 トランザクションに対応する EVM 計算を小さなプルーフに変換し、このプルーフをイーサリアム上で公開できるため、イーサリアムをスケーリングするときに非常に役立ちます。このような小さな証明 (おそらくわずか 100 バイト) がイーサリアムによって検証されると、1000 件のトランザクション全体が最終的に確認されることになります。プライベート ブロックチェーンとスケーリング ソリューションは、ブロックチェーン コミュニティにおける ZKP の流行の 2 つの例にすぎません。 ZK コプロセッサ、ZK ブリッジ、ZK 機械学習 (ZKML) など、多くの ZK プロジェクトは、これら 2 つの主要な属性を使用して構築することもできます。
ZKP の広範な展開に対する重大な障害は、証明生成中の計算時間とリソースに対する膨大な需要です。
通常、計算が複雑になると、より多くの時間とリソースが必要になります。たとえば、ダニエル カン氏と彼のチームの ZKML プロジェクトでは、強力な 64 スレッド CPU を使用して GPT-2 推論の証明生成に 9000 秒以上かかりました。一方、Scroll の ZK-EVM 回路のプルーフ生成には 280 GB 以上の RAM が必要です。
これらの法外なリソース要件のため、コミュニティは ZK 計算 (証明生成と呼ばれる) に合わせたより効率的なハードウェアを求めています。ハードウェア オプションには、CPU、GPU、FPGA、ASIC が含まれます。これらのオプションは、すぐに利用できるものから、待機期間が不確実なものまで多岐にわたります。
CPU は、他の 3 つのオプションと比較するためのベースライン実装とみなされます。ハードウェア アクセラレーションには 2 つの一般的な指標があります。直感的に説明します。
CPU は、他の 3 つのオプションと比較するためのベースライン実装とみなされます。ハードウェア アクセラレーションには 2 つの一般的な指標があります。直感的に説明します。
- 1 ドルあたりのパフォーマンス: ユーザーがこのハードウェアを購入するために支払わなければならない金額を意味します。購入の決定は多くの要因に左右されますが、その中でも重要なのは、同じ金額で最大のパフォーマンスが得られるかどうかです。基本的に、この指標はハードウェアの費用対効果を測定します。一般に、より高度なプロセスを使用してチップを製造すると、より高いパフォーマンスが得られますが、コストが高くなる傾向があります。
- ワットあたりのパフォーマンス: これは、このハードウェアを実行するために必要なエネルギー量を意味します。たとえば、Bitmain の最新の Bitcoin マイナーである T 21 は、1 TH の計算を完了するのにわずか 19 ジュールを使用し、競合他社の製品を上回ります。
製品の利点は主に上記 2 つの要素と、いくつかの非技術的要素 (保証や残価など) によって決まります。通常、ASIC ベースのハードウェアは、カスタマイズ可能な性質により、これら 2 つの指標において他の 3 つのカテゴリよりも優れています。
既存の GPU や FPGA よりもドル当たりおよびワット当たりのパフォーマンスが大幅に向上する、特殊な ZK ASIC が設計されたと想像してみましょう。この ASIC は、マルチスカラー乗算 (MSM)、数論的変換 (NTT)、マークル ツリーなどのさまざまなモジュールをサポートできますが、このハードウェアを現在のテクノロジー スタックと統合するにはどうすればよいでしょうか?
最も一般的なアプローチは、CPU コード内の対応する計算をアクセラレーション コンポーネントに置き換えることですが、単純な置き換えでは満足のいくパフォーマンスのアクセラレーションを達成できないことがよくあります。私たちはこのアプローチに関する調査結果を ethCC'23 で発表しました (詳細はこのツイートをご覧ください)。
CPUとFPGA/CPUの性能比較
CPU とカスタム FPGA マシンを組み合わせて使用することで、CPU パフォーマンスと比較して大幅な進歩を遂げましたが、パフォーマンスは最終目標であるリアルタイム ZK 証明にはまだ程遠いです。
この次善のパフォーマンスは、アムダールの法則と、異なるハードウェア コンポーネント間の相互作用コストによるものです。アムダールの法則は、システムの単一部分を最適化することで得られる全体的なパフォーマンスの向上には限界があり、異なるハードウェア モジュール間の通信コストによってさらに悪化することを示しています (出典: Wikipedia )。 CPU と比較して大幅な高速化を達成するには、可能なすべてのコンポーネントを単一のハードウェア上で高速化する必要があります。
ただし、ZK アルゴリズムにはさまざまな種類があるため (具体的には、ZK アルゴリズムは ZK 証明生成における計算操作を指します)、これは不可能のように思えます。たとえば、上の Twitter のスクリーンショットは、Poseidon Hash、EVM、GPT-2 という 3 つの ZK 回路を示しています。同じ証明バックエンド (Halo 2-KZG) が使用されていますが、特に証人の生成部分では計算が大きく異なります。スクリーンショットには、さまざまな証明バックエンド (Plonky 2/3 や Gnark など) も含まれていません。
ここで言いたいのは、ハードウェアは ZK アルゴリズムのさまざまなオンチップ コンピューティング操作に対応できるほど多用途である必要があるということです。この多用途性は、2022 年のツイートで私たちが提案したように、FPGA と ASIC のハイブリッド ファブリックを通じて実現できます。
FGPA-ASIC ハイブリッド アーキテクチャ
このハイブリッド アーキテクチャでは、ASIC が一般的な操作を実行し、FPGA が回路固有の計算を実行します。次に、2 つのハードウェア デバイスが同じ PCB ボードに実装され、高帯域幅の SerDes チャネルを介して接続されます。あるいは、RISC-V ベースや ARM ベースなどのオンチップ CPU コアを同様の目的に使用できます。これらのハイブリッド手法には、コストと製造品質の点で非常に高い要件が求められることがよくあります。過去 6 か月間、私たちは次のことを自問してきました。
「ハイブリッド」は私たちが考えることができる最良の構造でしょうか?設計を改善するために、ZK コミュニティからの技術の進歩に頼ることはできますか?以下では、上記の質問に対する肯定的な回答を提供します。
技術的な詳細に入る前に、まずゼロ知識証明 (ZKP) に関するいくつかの基本を説明する必要があります。 Plonkish 証明システムの典型的な証明生成プロセスは、次の段階に分けることができます (証明生成の詳細な分析については、Scroll によるこのブログを読んでください)。
- 記録証人:証人、トレースとも呼ばれます。これは、他のデータとともに、ステートメントが真実である理由を示すいくつかのデータを指します。ロギングは、トレース テーブルと呼ばれる 2 次元マトリックスを通じて行われます。このテーブルの各エントリは有限体の要素です。トレース テーブルにデータを入力するプロセスは「証人の生成」と呼ばれ、テーブル内の各セルを反復処理して正しい値を入力する必要があります。このプロセスは有限体での算術演算を必要とし、特定の ZK 回路用にカスタマイズされます。
- 証人を送信する: 証人が生成された後、各列がラグランジュ補間を通じて多項式として解釈されるトレース テーブルを取得します。これらの多項式は、KZG や FRI などのさまざまなコミットメント メカニズムを使用してコミットできます。ここで必要となる主な計算には、多項式乗算 (MSM)、数論的変換 (NTT)、多項式平方、およびマークル ツリーが含まれます。これは、大きな有限体での複雑な計算と膨大な量のデータが必要となるため、証明生成のボトルネックになります。
- 証言が真実であることの証明: これで、トレース テーブルが入力され、コミットメントが計算されます。あとは、トレースが有効であることを示すことだけです。これは、特定の制約が満たされていることを意味します。関係する計算には、数論的変換 (NTT)、多項式乗算 (MSM)、および多項式平坦化が含まれます。
要約すると、証明生成の計算には、多項式乗算 (MSM)、数論的変換 (NTT)、マークル ツリー、多項式平坦化などのいくつかの共通モジュールと、いくつかの追加モジュールが含まれます。
前回のブログでは、これらの一般的なモジュールを最適化するための高度な戦略をいくつか紹介しました。過去数年にわたって、コミュニティはこれらの共通モジュールの高速化を約束する多くの技術も提案してきました (Ulvetanna、Ingonyama、およびその他のグループの成果を参照)。ここではこれらのテクニックを繰り返しません。
これらのモジュールはパフォーマンスの点でボトルネックではなくなりましたが、エンドツーエンドのプルーフの高速化は満足のいくものとは程遠いです。この中途半端なアクセラレータは、パフォーマンスがいくつか向上した専用の GPU バージョンと考えることができます。大まかな比較は次のとおりです。
- 利点: 従来の GPU スタイルの SIMD/SIMT 並列コンピューティング モデルに加えて、ZK コンピューティングも特別にサポートされています。これにより、最先端の CUDA プログラミング スキル (CUDA を使用して大きな整数演算を記述するなど) に依存することなく、最大限のパフォーマンスで ZK 演算を実装できるようになります。
- 短所: プログラミングが複雑になる
- アクセラレータには、AI の PyTorch スタイルに似た高レベルのプログラミング モデルを提供し、部分証明者をアクセラレータに配置したときに「論文から直接翻訳されたような」コーディング エクスペリエンスを提供することを目標としています。ハードウェア レベルで柔軟なスケジューリングと制御機能を提供しますが、これには依然として基礎となるハードウェア設計を理解する必要があります。
- CUDA を使用する GPU ユーザーは、直接作業する場合、比較的完全に自由に制御できます。任意の最適化を実行できます。しかしそれは同時に、すべてをゼロから始めなければならないことを意味しました。
明らかに、この中途半端なアクセラレータでは、実証済みのエンドツーエンドの最適なアクセラレーションやユーザーフレンドリーなプログラミング インターフェイスが実現されていません。明らかに、スキームにいくつかの新しい要素を追加する必要がありました。
この新しい要素は zkVM です。
仮想マシン (VM) はコンピューター サイエンスの古いトピックであり、基本的には他のプログラムを実行できるプログラムです。たとえば、イーサリアム仮想マシン (EVM) はイーサリアム スマート コントラクトを実行できます。EVM がサポートする命令は、このイエロー ペーパーに記載されています。ゼロ知識証明システムには回路が含まれることがわかっているため、zkVM は一連のサポート命令を実行できる回路です。 zkVM は実行結果に加えて、命令列に対応する VM 実行トレースが有効であることを示す証明も出力します。
つまり、zkVM は VM を実行できる ZK 回路です (David Wong の記事から要約)。
zkVM の設計では、考慮する価値のある部分が 2 つあります。
- サポートされている命令セット: VM が実行できる操作を意味します。この分野には、Risc 0、Succinct、Starknet、Polygon、Metis などの確立されたプレーヤーがいくつかあり、RISC-V、MIPS、またはカスタマイズされた命令セットなどのさまざまな命令セットに取り組んでいます。
- ZK アーキテクチャ: この部分には、実行結果とともに生成される ZK 証明が含まれます。 ZK アーキテクチャは、基盤となる VM 設計からほぼ独立していますが、考慮すべき微妙なバランスがいくつかあります。
zkVM 設計には継続と呼ばれる優れた機能があります ( RISC 0から)。 zkVM の実行では、継続は、次の図に示すように、大規模なプログラムを個別に計算および証明できる複数のフラグメントに分割するために使用されるメカニズムです。
セグメンテーションのプロセス (出典: Risc 0)
この機能は次の理由からハードウェアに適しています。
- 並列性: これらの分割されたフラグメントは互いに独立しているため、複数のハードウェアに分散して対応するプルーフを同時に生成できます。
- I/O 帯域幅要件を最小限に抑える: zkVM のプルーフ生成は、「スモールイン、スモールアウト」パターンに従います。たとえば、Risc 0 では、プルーフ生成フラグメントのサイズは約 50 MB で、出力はサイズが約 250 KB の FRI ベースのプルーフです。この特別なモードでは、I/O 帯域幅の要件が大幅に軽減されます。
- 制御可能なメモリ要件: 各プルーフ生成コアの入力と出力は小さいですが、メモリ要件は大きく、数十 GB に及びます。ただし、必要なメモリ量はフラグメント サイズによって異なり、zkVM の設計に基づいて調整できます。
これらのハードウェアに優しい機能に基づいて、ハードウェア設計について以下に説明します。
システムのアーキテクチャは比較的単純で、プログラムの実行を担当するエグゼキュータ、さまざまな「スライス(前述)」の制御と割り当てを担当するハードウェア、およびシステムの各部分の ZK 証明を生成するための構成可能な数の専用チップを備えています。プログラム。
このシンプルなアーキテクチャにより、当社のハードウェアは柔軟なフォーム ファクターを持つことができます。エグゼキュータ (弱い CPU またはオンチップ CPU コアを使用)、一定数の zkVM チップ、およびその他の必要なハードウェア コンポーネント (メモリなど) を 1 つのシャーシにパッケージ化できます。より単純なケースは、Macbook の充電器などのポータブル マシンに複数のチップをパッケージ化することです。
zkVM ハードウェアには、いくつかのコンピューティング コアが含まれています。
- ベクトル化操作には、プログラム可能なベクトル マシンが使用されます。
- 31 ビット、64 ビット、および 256 ビット フィールド専用の NTT モジュール。
- BN 254、BLS 12 – 377、および BLS 12 – 388 曲線をサポートする専用 MSM モジュール。
- フィールド操作に基づいてハッシュ関数を構成できるハッシュ関数ユニット。
zkVM によってもたらされる利点に加えて、ZK-ASIC を設計するためのこの新しいパラダイムは、次のような個人または企業向けの多くの優れた製品にも反映されています。
ZK ASIC製品
zkVM ハードウェア プロジェクトである Cysic は、幅広いユースケース、パフォーマンス、開発生産性に適した、パフォーマンスとコスト効率の高いハードウェアを構築することを目的としています。当社は、ハードウェア設計を改善および拡張するために、多様な視点、革新的なアイデア、積極的な投資を求めています。私たちはコミュニティの参加と意見を楽しみにしており、参加に興味がある人にはガイダンスとサポートを提供する準備ができています。
全てのコメント