Author: miles Source: X, @Miles082510
Test Objects
- SP1は、任意のRust(または任意のLLVMコンパイル言語)プログラムの実行を検証するための高性能なオープンソースのzkVMです。Plonky3を利用し、SP1は再帰的証明をサポートし、Groth16のようなECCベースのアルゴリズムを含むさまざまな暗号アルゴリズムをサポートします
- 。
RISC0 zkVM は、任意の Rust コードの正しい実行を証明できます。RISC0 は 98 ビットレベルのセキュリティを提供する STARK を使用します。
Nexusは、モジュール式で、拡張可能で、オープンソースで、高度に並列化され、バリデータが最適化され、貢献者に優しい、Rustで書かれたzkVMです。Nexusはプリコンパイルと有向コンパイルもサポートしており、Rustに加えてC++もサポートしている。
ZkMIPSは、Plonky2とMIPSマイクロアーキテクチャをベースにした汎用検証可能コンピューティング・インフラであり、グローバル決済レイヤとしてイーサネットを強化するように設計されています。また、任意のRustコードを実行することもできる。
ZkWASMは標準のWASMバイトコード仕様に準拠しており、未修正のものをサポートしています。RustコードはWASMバイトコードにコンパイルできるので、理論的にはzkWASMマシン上で任意のRustコードを実行することが可能で、柔軟性と幅広い言語サポートを提供します。
ValidaはSTARKベースの仮想マシンで、RISCにインスパイアされた命令セットを持ち、従来のプログラミング言語のターゲティングを簡素化します。LLVM IRをValida ISAにコンパイルするバックエンド・コンパイラが開発されており、Rust、Go、C++、およびその他の言語で書かれたプログラムの検証を、実質的にソースコードの変更なしで行うことができます。
テストプロジェクト
ステージ1: 算術演算 (Hept 100) 最初のステージは、基本的な算術演算を処理するzkVMの能力を評価することに重点を置いています: 加算、減算、乗算、除算、モジュロ除算、平方根計算です。私たちは、zkVMが同時に複数の算術演算を処理することを必要とするHeptagonal数を中心にテストを設計しました
第2段階:メモリ消費 (Vec 10,000) 第2段階では、高負荷の下でメモリを管理する各zkVMの能力を評価します。この段階の目的は、メモリ・ボトルネックを特定し、zkVMが高負荷タスクを効果的に管理できるかどうかを判断することです。リスト、ハッシュ・マップ、ダブルエンド・キュー、キュー、BTreeMap、ハッシュ・セット、バイナリ・ヒープなど、いくつかのデータ構造がテストされました。各zkVMは、以下の操作でテストされた:
挿入(Insert):zkVMが構造体にデータを追加する速度は?
Delete(削除):zkVMはメモリ解放を効率的に処理するか?
Append: zkVMは構造体を効率的に成長させるか?
Research: zkVMは、格納されたデータをどの程度速く、効率的に取り出しますか?
テストマシンの構成
CPU:AMD EPYC 7713「Milan」64コア・プロセッサー(合計128スレッド)
RAM:600GBのDDR43200MHz ECC RAM、16 DIMMに分散
Host OS: Proxmox 8.3
ハイパーバイザー: KVM
ネットワーク層: Open vSwitch
。マシン モデル: Supermicro AS-2024US-TRT
テスト結果
算術演算の結果(ヘプト100):

2.メモリ消費量(Vec 10000)

Summary
RISC0が選ばれるようになった。合理的なメモリフットプリントを維持しながら、証明生成時間とサイズの両方で優れています。強力なゼロ知識証明機能と複数のプログラミング言語のサポートにより、プライバシー、パフォーマンス、柔軟性のニーズを満たしています。
Validaは、証明サイズ280KB、証明時間< 1秒と、証明生成速度とサイズの点で印象的な結果を達成しています。Validaは現在、C/C++実装を利用するためにLLVM IRを翻訳するLLVMバックエンドを使用してRustをコンパイルしており、Rust固有のデータ構造や依存関係を扱う際にエラーが発生する可能性があります。その結果、複雑なメモリ相互作用はテストできず、RustコードでValidaを使用することは現在推奨されていません
SP1は、最初は興味深いものの、ゼロ知識証明の要件を満たしていません。
Nexusは一貫した証明サイズと管理可能なメモリ使用量を示していますが、メモリ集約的なタスクではパフォーマンスが悪く、証明サイズ(特に大きな作業負荷の場合)は、ゼロ知識証明の要件を満たしていません。
Nexusは、一貫した証明サイズと管理可能なメモリ使用量を示していますが、メモリ集約的なタスクではパフォーマンスが低く、証明サイズ(特に大きなワークロード)は上位候補から外れています。
zkMIPSは信頼性の高い証明時間を提供しますが、メモリの問題があまりにも深刻で、
zkWASMは最悪の結果で、証明サイズと生成時間の両方で苦労しています。WASMバイトコードをサポートしているかもしれませんが、RAMの消費(メモリテストでは最大57GB)が大きすぎます