Tác giả: Michael Zhu (Kỹ sư nghiên cứu tiền điện tử a16z), Sam Ragsdale (Kỹ sư đầu tư tiền điện tử a16z); Bản dịch: Golden Finance xiaozou
Vào ngày 9 tháng 4 năm 2024, nhóm nghiên cứu và kỹ thuật mã hóa a16z đã phát hành Triển khai, một phương pháp thiết kế SNARK mới nhanh hơn gấp 2 lần so với công nghệ hiện tại và sẽ có nhiều cải tiến hơn nữa.
Điện toán có thể xác minh (thường được gọi là ZK) là một công nghệ rất mạnh áp dụng cho cả chuỗi khối và không chuỗi khối. Nó cho phép một máy tính (máy xác minh) ủy thác các phép tính cho một máy tính khác mạnh hơn (máy xác minh) và giúp nó xác minh một cách hiệu quả rằng các phép tính đã được thực hiện chính xác.
Trong ngành mã hóa, các ứng dụng tính toán có thể kiểm chứng (đặc biệt là SNARK) bao gồm:
Lớp Các chuỗi khối 2 (L2) sử dụng SNARK để đảm bảo tính toàn vẹn của quá trình chuyển đổi trạng thái của chúng.
Cầu chuỗi chéo sử dụng SNARK để chứng minh việc chuyển tiền gửi/rút tiền từ chuỗi này sang chuỗi khác.
Một "Bộ đồng xử lý ZK" (được xác định bởi Axiom) sử dụng SNARK để chứng minh khả năng tính toán ngoài chuỗi của một số dữ liệu trên chuỗi, chẳng hạn như vì Chi phí tính toán gốc của dữ liệu trên chuỗi này trong hợp đồng thông minh là quá cao.
Nhiều ứng dụng trong số này liên quan đến các chương trình quá phức tạp để dịch sang mạch DSL (ngôn ngữ dành riêng cho miền) - hãy tưởng tượng Ví dụ: viết lại toàn bộ trình biên dịch hoặc trình giả lập NES bằng ngôn ngữ Circom. Tuy nhiên, nếu chương trình được biên dịch thành tập lệnh được zkVM hỗ trợ thì không cần mạch viết tay hoặc dịch DSL: lập trình viên chỉ cần viết chương trình bằng ngôn ngữ lập trình cấp cao mà họ chọn và zkVM sẽ xử lý phần còn lại.
Thách thức còn lại là hiệu suất của bộ chuẩn zkVM: nó cần phải đủ nhanh để có ích. Điều này đặc biệt quan trọng đối với các trường hợp sử dụng blockchain, vì thời gian chứng minh ảnh hưởng đến độ trễ và do đó ảnh hưởng đến trải nghiệm của người dùng.
Điện toán có thể kiểm chứng từ lâu đã được quảng cáo là giải pháp tối ưu cho việc mở rộng quy mô chuỗi khối, nhưng công nghệ này phải đối mặt với ba rào cản lớn đối với việc áp dụng:
p>
Hiệu suất:Thực thi một chương trình chứng minh giới thiệu các đơn đặt hàng có chi phí cao hơn so với thực thi gốc.
Độ phức tạp:Sự phức tạp của SNARK làm tăng mối lo ngại về tính bảo mật của việc triển khai chúng, vì nó sẽ chịu trách nhiệm để đảm bảo an toàn cho hàng tỷ đô la tài sản trên chuỗi.
Tính sẵn có: Chuyên môn cần thiết cho các ngôn ngữ dành riêng cho miền (DSL) như Circom là rất lớn Không có sẵn cho hầu hết các nhà phát triển phần mềm.
Sự phát triển của máy ảo không có kiến thức (zkVM) vượt qua rào cản thứ ba (khả năng sử dụng) vì zkVM cho phép các nhà phát triển viết chương trình trong các ngôn ngữ lập trình cấp cao như Rust hoặc Go không yêu cầu bất kỳ kiến thức nào về SNARK cơ bản để chứng minh khả năng thực thi của chúng. Nhưng tính khả dụng ngày càng tăng của zkVM cũng dẫn đến chi phí hiệu suất cao (8 đến 9 bậc độ lớn) và việc triển khai phức tạp.
Năm ngoái, một bài báo của Jolt đã giới thiệu một mô hình mới cho zkVM, hứa hẹn sẽ vượt qua hai thách thức kép về chi phí hiệu suất và độ phức tạp khi triển khai. So với những ý tưởng hiện có dựa trên STARK, nền tảng lý thuyết của Jolt có sự khác biệt. Bằng cách tận dụng các tham số truy vấn Lasso và các công nghệ dựa trên sumcheck khác, Jolt có thể chứng minh các chương trình nhanh hơn bao giờ hết và triển khai các hướng dẫn VM mới dễ dàng hơn bao giờ hết.
Bây giờ, chúng tôi vui mừng phát hành bản triển khai mã nguồn mở Jolt cho tập lệnh RV32I, thực hiện lời hứa trong bài viết của Jolt.
Nhanh:< Việc triển khai của chúng tôi nhanh hơn RISC Zero hơn 5 lần và nhanh hơn 2 lần so với SP1 vừa được phát hành trong các điểm chuẩn sơ bộ.
(tương đối) ngắn gọn:Toàn bộ cơ sở mã có ít hơn 25.000 dòng Rust (ít hơn nửa zkVM khác), một lệnh CPU chỉ cần 50 dòng mã để thực hiện.
Tiếp theo, chúng ta hãy xem các điểm chuẩn hiệu suất. Chúng ta có thể thấy rằng Jolt là zkVM mới nổi tiên tiến nhất. Chúng tôi cũng đã cung cấp một số hướng dẫn dành cho các nhà phát triển quan tâm đến việc phát triển các ứng dụng sử dụng Jolt, cũng như bản xem trước lộ trình dành cho các nhà phát triển quan tâm đến việc đóng góp cho Jolt - chúng tôi hy vọng rằng trong những tháng tới, Jolt It sẽ trở nên nhanh hơn và dễ sử dụng hơn.
Nhóm kỹ thuật mã hóa a16z được xây dựng dựa trên niềm tin vững chắc vào giá trị của nguồn mở. Việc biến Jolt thành một sản phẩm công cộng nguồn mở sẽ đẩy nhanh quá trình nghiên cứu zkVM, nghiên cứu SNARK rộng hơn và toàn bộ ngành công nghiệp web3. Xây dựng mật mã trong các silo nguồn đóng (nơi mà mã không thể được công chúng xem xét) thường tạo ra sự tin cậy vào một hệ thống không đáng tin cậy.
1, hiệu suất
Luôn luôn, với cách thực thi gốc Trong So sánh, zkVM phải chịu khoảng 8 bậc chi phí lớn, khiến nhiều ứng dụng tính toán có thể kiểm chứng không khả thi. Phiên bản hiện tại của Jolt giảm chi phí này xuống dưới 6 bậc độ lớn.
Mặc dù chúng tôi đã đạt được hiệu suất tiên tiến nhưng công nghệ cơ bản của Jolt (dựa trên giao thức sumcheck) vẫn chưa phổ biến bằng công nghệ phổ biến hơn (dựa trên FRI) Mối quan tâm của Kỹ sư. Điều này cho thấy còn nhiều cơ hội để phát triển ở Jolt - chúng tôi đã đặt sẵn một số tối ưu hóa trong lộ trình và chúng tôi hy vọng sẽ có những cơ hội chưa được khám phá.
Điểm chuẩn a16z/zkvm của chúng tôi đánh giá Jolt, SP1 và RISC Zero trên nhiều chương trình Rust khác nhau. Kết quả là hiệu suất tương đối của nhiều chương trình RV32 tương tự là tương tự nhau. Hình bên dưới sẽ đề cập đến một chương trình thực hiện chuỗi băm Sha2.
Kết quả của các điểm chuẩn này được hiển thị bên dưới. Điểm chuẩn được chạy trên máy ARM AWS r7g.16x với 64 lõi CPU và RAM 512 GiB DDR5. Tất cả các điểm chuẩn chỉ dành cho CPU.
Các hệ thống liên tục sử dụng phần tiếp theo phải đối mặt với sự cân bằng giữa thời gian chứng minh và kích thước bằng chứng - khi bằng chứng được chia thành nhiều "phân đoạn" (hoặc "phân đoạn") hơn, trình chứng minh trở nên nhanh hơn (do sự song song giữa các phân đoạn) nhưng có kích thước bằng chứng lớn hơn trước khi đệ quy. Điểm chuẩn kích thước bằng chứng được hiển thị bên dưới, trong đó kết quả cho SP1 được tham số hóa bằng số lượng phân đoạn: SP1(shard_count). RISC Zero có một lát cắt có kích thước cố định, do đó số lượng lát cắt của nó ngầm tăng lên cùng với số lượng chu kỳ chương trình. RISC Zero hỗ trợ đệ quy (SP1 và Jolt chưa hỗ trợ), nhưng các điểm chuẩn bên dưới là kiểm tra hiệu suất mà không cần đệ quy. Chúng tôi cũng không sử dụng "biên dịch trước" để các điểm chuẩn phản ánh hiệu suất của hệ thống chứng minh zkVM cốt lõi.
2, Cách sử dụng Jolt Được phát triển và xây dựng trên
Để giúp Jolt dễ sử dụng nhất có thể, Jolt SDK (do đối tác kỹ thuật tiền điện tử của a16z là Noah Citron xây dựng) cung cấp lõi chức năng xung quanh trình bao bọc biểu mẫu Jolt Short. Tất cả những gì bạn phải làm là: thêm thuộc tính jolt_sdk::provable vào hàm bạn muốn chứng minh.
Sau đó, bạn sẽ có thể sử dụng các hàm build_* để tạo người chứng minh và người xác minh.
Xem ví dụ Fibonacci hoàn chỉnh (và các ví dụ khác) trong kho mã.
Để hiểu sâu hơn về kiến trúc Jolt, Sách Jolt (WIP) là tài liệu cập nhật trực tiếp về các lựa chọn thiết kế và cơ sở mã không được ghi lại trong các bài viết của Jolt. Trong vài tuần tới, chúng tôi sẽ phát hành thêm nội dung cho các nhà phát triển quan tâm đến việc xây dựng trên Jolt hoặc tìm hiểu về nội bộ của Jolt.
3. Điều gì sẽ xảy ra tiếp theo
Mặc dù Jolt là quan trọng cột mốc quan trọng trong lĩnh vực zkVM, nhưng chúng ta vẫn còn một chặng đường dài phía trước. Lùi lại một bước, các điểm chuẩn hiệu suất của chúng tôi cho thấy rằng bộ chuẩn Jolt (trên M3 Max) đã chứng minh một chương trình nhanh như bộ xử lý 100kHz - gấp đôi sức mạnh tính toán trên sứ mệnh mặt trăng có người lái Apollo 11. Để thực hiện một so sánh khiêm tốn khác, nó chậm hơn 150 lần so với máy tính vẽ đồ thị TI-84.
Để đạt được hiệu suất ở cấp độ máy tính, chúng tôi còn rất nhiều việc phải làm. Chúng tôi sẽ tiếp tục cải thiện hiệu suất và khả năng sử dụng của Jolt để cung cấp cho các nhà phát triển trải nghiệm phát triển tốt nhất. Chúng tôi rất vui mừng về các nhiệm vụ chính sau đây trong lộ trình:
Binius:Ben Diamond và Jim Posen gần đây đã đề xuất một sơ đồ cam kết đa thức đa tuyến tính đặc biệt hữu ích cho các hệ thống như Jolt vì Giá trị được hứa hẹn là nhỏ. Binius kết hợp với thuật toán sumcheck miền nhỏ của Justin Thaler sẽ cải thiện đáng kể hiệu suất của bộ chứng minh Jolt (chúng tôi ước tính khoảng 5-10 lần).
Hướng dẫn thêm: Cơ sở mã Jolt hiện triển khai RV32I, nhưng cấu trúc Jolt rất linh hoạt. Chúng tôi dự định thêm tiện ích mở rộng RISC-V "M" để cung cấp hỗ trợ cho phép nhân và chia số nguyên, như được mô tả trong bài viết của Jolt. Ngoài ra, Jolt có thể dễ dàng hỗ trợ biến thể RV64IM 64-bit.
Tiếp tục: Hiện tại, Jolt không thể chứng minh các phép tính có độ dài tùy ý do hạn chế về bộ nhớ. Chúng ta sẽ sử dụng tính liên tục để chia các phép tính dài thành các phần tính toán nhỏ hơn, mỗi phần có thể được chứng minh bằng Jolt. Điều này sẽ giảm mức sử dụng bộ nhớ và cho phép tính song song bổ sung khi chứng minh các tính toán riêng lẻ.
Đệ quy bằng chứng: Bằng cách kết hợp Jolt với một hệ thống bằng chứng khác, chúng tôi tiếp tục giảm kích thước Bằng chứng và thời gian xác minh . Ví dụ: trình xác thực Jolt có thể được triển khai bằng ngôn ngữ Circom để tạo bằng chứng Groth16 có kích thước không đổi có thể được xác minh trên chuỗi một cách hiệu quả.