Tác giả: dặm Nguồn: X, @Miles082510
Đối tượng kiểm tra
SP1 là zkVM mã nguồn mở hiệu suất cao để xác minh việc thực thi bất kỳ chương trình Rust nào (hoặc bất kỳ ngôn ngữ nào do LLVM biên dịch). SP1 tận dụng Plonky3, hỗ trợ bằng chứng đệ quy và hỗ trợ nhiều thuật toán mã hóa khác nhau, bao gồm các thuật toán dựa trên ECC như Groth16.
RISC0 zkVM cho phép chứng minh việc thực thi chính xác mã Rust tùy ý. Nó được xây dựng trên kiến trúc RISC-V và vốn đã phù hợp để triển khai các hàm băm mật mã tiêu chuẩn như SHA-256 và ECDSA. RISC0 sử dụng STARK, cung cấp mức bảo mật 98 bit. Vì nó tương thích với LLVM và WASM nên nó hỗ trợ nhiều ngôn ngữ lập trình bao gồm C và Rust.
Nexus là một thư viện mô-đun, có thể mở rộng, mã nguồn mở, có khả năng song song hóa cao, được tối ưu hóa cho trình xác thực và thân thiện với người đóng góp được viết bằng Rust Friendly zkVM . Nó tập trung vào hiệu suất và bảo mật, sử dụng sơ đồ gấp Nova, đặc biệt hiệu quả đối với các bằng chứng đệ quy. Nexus cũng hỗ trợ biên dịch trước và biên dịch theo hướng, ngoài Rust, nó còn cung cấp hỗ trợ C++.
ZkMIPS là cơ sở hạ tầng điện toán có thể kiểm chứng phổ quát dựa trên vi kiến trúc Plonky2 và MIPS, nhằm mục đích trao quyền cho Ethereum như một lớp thanh toán toàn cầu. Nó cũng có thể chạy mã Rust tùy ý. Điều đáng chú ý là zkMIPS là zkVM duy nhất trong danh sách này sử dụng bộ mã opcode MIPS.
ZkWASM tuân theo và hỗ trợ đặc tả mã byte WASM tiêu chuẩn chưa sửa đổi. Vì mã Rust biên dịch thành mã byte WASM nên về mặt lý thuyết, bất kỳ mã Rust nào cũng có thể chạy trên máy zkWASM, mang lại sự linh hoạt và hỗ trợ ngôn ngữ rộng rãi.
Valida là máy ảo dựa trên STARK với bộ hướng dẫn lấy cảm hứng từ RISC giúp đơn giản hóa mục tiêu của các ngôn ngữ lập trình truyền thống. Một trình biên dịch phụ trợ đang được phát triển để biên dịch LLVM IR thành Valida ISA, cho phép xác minh các chương trình được viết bằng Rust, Go, C++ và các ngôn ngữ khác mà hầu như không có thay đổi nào đối với mã nguồn.
Dự án thử nghiệm
Giai đoạn 1: Các phép toán số học (Hept 100) Giai đoạn đầu tiên tập trung vào việc đánh giá khả năng của zkVM trong việc xử lý các phép toán số học cơ bản : Cộng, trừ, nhân, chia, chia mô-đun và tính toán căn bậc hai. Chúng tôi đã thiết kế các thử nghiệm của mình xung quanh các số Bảy cạnh, yêu cầu zkVM để xử lý đồng thời nhiều phép tính số học
Giai đoạn 2: Tiêu thụ bộ nhớ (Vec 10000) Giai đoạn thứ hai đánh giá khả năng quản lý bộ nhớ của mỗi zkVM dưới tải nặng. Mục đích của giai đoạn này là xác định mọi tắc nghẽn bộ nhớ và xác định xem zkVM có thể quản lý hiệu quả các tác vụ cường độ cao hay không. Một số dữ liệu đã được kiểm tra. deques, hàng đợi, BTreeMaps, bộ băm và đống nhị phân. Mỗi zkVM được kiểm tra cho các hoạt động sau:
Chèn: ZkVM thêm dữ liệu vào cấu trúc nhanh như thế nào?
Xóa: zkVM có xử lý giải phóng bộ nhớ hiệu quả không?
Nối thêm: zkVM có thể phát triển cấu trúc dữ liệu một cách hiệu quả không?
Nghiên cứu: ZkVM truy xuất dữ liệu được lưu trữ nhanh chóng và hiệu quả như thế nào?
Kiểm tra cấu hình máy
< ul class=" list-paddingleft-2">
CPU: Bộ xử lý 64 nhân AMD EPYC 7713 "Milan" (tổng cộng 128 luồng)
li>RAM: RAM ECC 600GiB DDR4 3200 MHz, được phân bổ trên 16 DIMM
Hệ điều hành máy chủ: Proxmox 8.3
Hypervisor: KVM
Lớp mạng: Mở vSwitch
Mẫu máy: Supermicro AS-2024US-TRT p>
Kết quả kiểm tra
Kết quả phép tính số học (Hept 100):
li>
Kết quả kiểm tra giai đoạn 1
2. Mức tiêu thụ bộ nhớ (Vec 10000)
Kết quả kiểm tra giai đoạn 2
Tóm tắt
RISC0 trở thành lựa chọn đầu tiên . Nó hoạt động tốt về thời gian và kích thước tạo bằng chứng trong khi vẫn duy trì dung lượng bộ nhớ hợp lý. Với khả năng chứng minh kiến thức không mạnh mẽ và hỗ trợ nhiều ngôn ngữ lập trình, nó đáp ứng nhu cầu về quyền riêng tư, hiệu suất và tính linh hoạt. Sự cân bằng tổng thể giữa hiệu suất và hiệu quả khiến nó trở thành zkVM khả thi nhất hiện có ở giai đoạn này.
Valida đã đạt được kết quả ấn tượng về tốc độ và kích thước tạo bản in thử, với kích thước bản in thử là 280 KB và thời gian in thử <1 giây. Tuy nhiên, do khả năng hỗ trợ Rust hạn chế của Valida nên không thể phân tích được. Valida hiện đang biên dịch Rust bằng cách sử dụng chương trình phụ trợ LLVM, dịch mã LLVM IR để tận dụng khả năng triển khai C/C++ của nó, điều này có thể gây ra lỗi khi xử lý các cấu trúc hoặc phần phụ thuộc dữ liệu dành riêng cho Rust. Do đó, không thể kiểm tra các tương tác bộ nhớ phức tạp và Valida hiện không được khuyến nghị sử dụng với mã Rust
SP1, mặc dù ban đầu rất thú vị nhưng không đáp ứng được 0- Bằng chứng kiến thức Yêu cầu. Hiệu suất của nó trong các phép tính số học là đáng khen ngợi, nhưng không đủ để chứng minh sự cân nhắc sâu hơn do nó thiếu chức năng ZK
Nexus thể hiện kích thước bằng chứng nhất quán và mức sử dụng bộ nhớ có thể quản lý được, nhưng nó hiệu suất kém trong các tác vụ sử dụng nhiều bộ nhớ và kích thước đã được chứng minh của nó (đặc biệt đối với khối lượng công việc lớn hơn) khiến nó không đủ tiêu chuẩn trở thành đối thủ hàng đầu.
zkMIPS cung cấp thời gian chứng minh đáng tin cậy, nhưng vấn đề bộ nhớ quá nghiêm trọng để có thể chịu đựng được
zkWASM có kết quả tồi tệ nhất, gặp khó khăn với cả kích thước bằng chứng và thời gian tạo. Mặc dù nó có thể hỗ trợ mã byte WASM nhưng mức tiêu thụ RAM (lên tới 57 GB trong bài kiểm tra bộ nhớ) là quá mức