저자: miles 출처: X, @Miles082510
테스트 객체
SP1은 임의의 Rust(또는 LLVM 컴파일 언어) 프로그램의 실행을 검증하기 위한 고성능 오픈 소스 zkVM입니다. SP1은 Plonky3를 활용하여 재귀 증명을 지원하고 Groth16 같은 ECC 기반 알고리즘을 비롯한 다양한 암호화 알고리즘을 지원합니다.
-
RISC0 zkVM은 임의의 Rust 코드의 올바른 실행을 증명할 수 있습니다. RISC-V 아키텍처를 기반으로 구축되었으며 본질적으로 SHA-256 및 ECDSA와 같은 표준 암호화 해시 함수를 구현하는 데 적합합니다.RISC0은 98비트 보안 수준을 제공하는 STARK를 사용합니다. LLVM 및 WASM과 호환되므로 C와 Rust를 비롯한 다양한 프로그래밍 언어를 지원합니다.
Nexus는 모듈식, 확장성, 오픈 소스, 고도로 병렬화된, 검증자에 최적화된, 기여자 친화적인 Rust로 작성된 zkVM으로 다음에 초점을 맞추고 있습니다. 성능과 보안에 중점을 두고 있으며, 재귀 증명에 특히 효과적인 Nova 폴딩 체계를 사용합니다. 또한 Nexus는 사전 컴파일과 직접 컴파일을 지원하며 Rust 외에도 C++ 지원을 제공합니다.
ZkMIPS는 Plonky2 및 MIPS 마이크로아키텍처를 기반으로 하는 범용 검증 가능한 컴퓨팅 인프라로, 글로벌 결제 계층으로서 이더넷을 강화하도록 설계되었습니다. 또한 임의의 Rust 코드를 실행할 수도 있습니다. 특히 zkMIPS는 이 목록에서 MIPS 연산 코드 세트를 사용하는 유일한 zkVM입니다.
ZkWASM은 수정되지 않은 표준 WASM 바이트코드 사양을 따르고 지원합니다. Rust 코드를 WASM 바이트코드로 컴파일할 수 있으므로 이론적으로 모든 Rust 코드를 zkWASM 머신에서 실행할 수 있으며, 유연성과 광범위한 언어 지원을 제공합니다.
Valida는 기존 프로그래밍 언어의 타겟팅을 간소화하는 RISC에서 영감을 받은 명령어 집합을 갖춘 STARK 기반 가상 머신입니다. 백엔드 컴파일러가 개발 중이며 LLVM IR을 Valida ISA로 컴파일하여 소스 코드를 거의 변경하지 않고도 Rust, Go, C++ 및 기타 언어로 작성된 프로그램을 검증할 수 있습니다.
테스트 프로젝트
1단계: 산술 연산(Hept 100) 첫 번째 단계에서는 더하기, 빼기, 곱하기, 나누기, 모듈로 나누기, 제곱근 계산 등 기본적인 산술 연산을 처리하는 zkVM의 능력을 평가하는 데 중점을 둡니다. 테스트는 여러 산술 연산을 동시에 처리해야 하는 육각수를 중심으로 설계되었습니다
2단계: 메모리 소비량(Vec 10,000) 두 번째 단계에서는 각 zkVM이 부하가 많은 상태에서 메모리를 관리하는 능력을 평가합니다. 메모리 관리 능력, 이 단계의 목적은 메모리 병목 현상을 파악하고 zkVM이 고강도 작업을 효과적으로 관리할 수 있는지 확인하는 것이었으며, 목록, 해시 맵, 양방향 큐, 대기열, BTreeMaps, 해시 세트 및 이진 힙을 포함한 여러 데이터 구조를 테스트했습니다. 각 zkVM은 다음 작업으로 테스트되었습니다:
삽입: zkVM이 구조에 데이터를 얼마나 빨리 추가하나요?
삭제: zkVM이 메모리 해제를 효율적으로 처리합니까?
추가: zkVM이 구조를 효율적으로 성장시키는가?
조사: zkVM은 저장된 데이터를 얼마나 빠르고 효율적으로 검색합니까?
테스트 머신 구성
CPU: AMD EPYC 7713 "Milan" 64코어 프로세서(총 128스레드)
RAM: 600GiB DDR4 3200MHz ECC RAM, 16개 DIMM에 분산
호스트 OS: Proxmox 8.3
하이퍼바이저: KVM
네트워크 레이어: Open vSwitch
머신 모델: Supermicro AS-2024US-TRT
테스트 결과
산술 연산 결과(Hept 100):

< /p>
1단계 테스트 결과
2. 메모리 소비량(Vec 10000)
< img src="https://img.jinse.cn/7306125_watermarknone.png" title="7306125" alt="CYhOx7zW2amaCVSo2rQx576FgvLOHcNln6fr7XX2.png">
<>< section>

2단계 검사 결과
요약
RISC0 이 선호되는 선택이 되었습니다. 이는 합리적인 메모리 공간을 유지하면서 증명 생성 시간과 크기 모두에서 탁월합니다. 강력한 영지식 증명 기능과 여러 프로그래밍 언어를 지원하여 개인정보 보호, 성능 및 유연성 요구 사항을 충족합니다. 성능과 효율성 간의 전반적인 균형으로 현 단계에서 가장 실용적인 zkVM입니다.
Valida는 증명 생성 속도와 크기 측면에서 280KB의 증명 크기와 1초의 증명 시간으로 인상적인 결과를 달성합니다. 그러나 Valida의 제한된 Rust 지원으로 인해 분석이 불가능합니다. 현재 Valida는 LLVM IR을 변환하여 C/C++ 구현을 활용하는 LLVM 백엔드를 사용하여 Rust를 컴파일하기 때문에 Rust 전용 데이터 구조나 종속성을 처리할 때 오류가 발생할 수 있습니다. 따라서 복잡한 메모리 상호 작용을 테스트할 수 없으며, 현재로서는 Rust 코드에 Valida를 사용하는 것을 권장하지 않습니다
SP1은 처음에는 흥미롭지만 영지식 증명 요건을 충족하지 못합니다. 산술 연산에서의 성능은 칭찬할 만하지만, ZK 기능이 없다는 점을 고려할 때 추가 고려를 정당화하기에는 충분하지 않습니다
Nexus는 일관된 증명 크기와 관리 가능한 메모리 사용량을 보여주지만 메모리 집약적인 작업에서는 성능이 저하되고 증명 크기(특히 대규모의 경우 워크로드)로 인해 최고의 경쟁자로서의 자격이 박탈됩니다.
zkMIPS는 안정적인 증명 시간을 제공하지만 메모리 문제가 너무 심각하여
zkWASM은 증명 크기와 생성 시간 모두에서 최악의 결과를 가져옵니다. WASM 바이트코드를 지원할 수는 있지만, 메모리 사용량(메모리 테스트에서 최대 57GB)이 너무 많습니다.