Chuyển tiếp tiêu đề ban đầu 'A Zero Knowledge Paradigm: Part 1 - Zk-VM là gì?'
Bằng chứng kiến thức bằng không (ZKP) là gì?
Nếu bạn không có kiến thức trước về bằng chứng kiến thức bằng không (ZKP), video này từ Wired giải thích khái niệm ở năm cấp độ khó theo cách tương tác với các ví dụ và minh chứng dễ hiểu. Rất khuyến khích.
Nói một cách đơn giản nhất, ZKP cho phép một bên (tục ngữ) chứng minh với một bên khác (người xác minh) rằng họ biết điều gì đó mà không tiết lộ thứ đó là gì hoặc bất kỳ thông tin bổ sung nào. Cụ thể hơn, ZKP chứng minh kiến thức về một phần dữ liệu hoặc kiến thức về kết quả tính toán, mà không tiết lộ dữ liệu hoặc đầu vào. Quá trình tạo ra một bằng chứng không có kiến thức liên quan đến một loạt các mô hình toán học để chuyển đổi kết quả tính toán thành một phần thông tin vô nghĩa khác chứng minh việc thực thi mã thành công, sau này có thể được xác minh.
Trong một số trường hợp, phải mất ít công sức hơn để xác minh bằng chứng, được xây dựng sau nhiều vòng chuyển đổi đại số và mật mã, hơn là cần thiết để chạy tính toán. Sự kết hợp độc đáo giữa bảo mật và khả năng mở rộng này là điều khiến mật mã không có kiến thức trở thành một công cụ mạnh mẽ như vậy.
zkSNARKs: Zero Knowledge Succinct Non-Interactive Argument of Knowledge
zkSTARKs: Zero Knowledge Scalable Transparent Argument of Knowledge
(Lưu ý: Cầu nối của Succinct sử dụng SNARK nhưng SP1 là giao thức dựa trên STARK)
Điều đáng chú ý là tất cả các STARK đều là SNARK, nhưng không phải tất cả SNARK đều là STARK.
Để hiểu rõ hơn về SNARK và STARKs, chúng tôi khuyên bạn nên đọc @krzhang/privacy-in-cryptocurrencies-zero-knowledge-and-zk-snarks-1-2-68ce1838fd9c"> bài viết được viết bởi Yan Zhang và Yi Sun của Axiom, và bộ sưu tập các bài viết này trong github của Ventali Tan.
Máy ảo (VM) là một chương trình chạy các chương trình. Trong ngữ cảnh, zkVM là một máy tính ảo được triển khai như một hệ thống để tạo ra các bằng chứng kiến thức bằng không, hoặc một mạch hoặc công cụ phổ quát, để tạo ZKP cho bất kỳ chương trình hoặc tính toán nào.
zkVM loại bỏ nhu cầu học toán học và mật mã phức tạp để thiết kế và mã hóa ZK, đồng thời cho phép bất kỳ nhà phát triển nào thực thi các chương trình được viết bằng ngôn ngữ ưa thích của họ và tạo ZKP, giúp tích hợp và tương tác dễ dàng hơn với kiến thức bằng không. Nói chung, hầu hết các tham chiếu đến zkVM ngầm bao gồm các chuỗi công cụ trình biên dịch và hệ thống chứng minh được gắn vào máy ảo thực thi các chương trình chứ không chỉ riêng máy ảo. Dưới đây, chúng tôi tóm tắt các thành phần chính của zkVM và chức năng của chúng:
Các thành phần chính của zkVM
Việc thiết kế và thực hiện từng thành phần được điều chỉnh bởi sự lựa chọn bằng chứng (SNARK hoặc STARK) và kiến trúc tập lệnh (ISA) của zkVM. Theo truyền thống, ISA chỉ định những gì CPU có khả năng (kiểu dữ liệu, thanh ghi, bộ nhớ, v.v.) và chuỗi hành động mà CPU thực hiện khi nó thực thi một chương trình. Trong ngữ cảnh, ISA xác định mã máy có thể diễn giải và thực thi bởi máy ảo. Chọn ISA có thể mang lại sự khác biệt căn bản về khả năng tiếp cận và khả năng sử dụng của zkVM, cũng như tốc độ và hiệu quả của các quy trình tạo bằng chứng và củng cố việc xây dựng bất kỳ zkVM nào.
Dưới đây là một số ví dụ về zkVM và các thành phần của chúng để bạn tham khảo.
zkVM và các thành phần của chúng
Hiện tại, chúng tôi sẽ tập trung vào các tương tác giữa từng thành phần ở mức cao để cung cấp một khuôn khổ để hiểu các quy trình đại số và mật mã cũng như sự đánh đổi thiết kế của zkVM trong bài viết sau.
Sơ đồ sau đây là một sơ đồ quy trình trừu tượng, tổng quát của zkVM, được phân tách và phân loại giữa định dạng (đầu vào / đầu ra) của một chương trình khi nó di chuyển qua các thành phần của zkVM. Chúng tôi sẽ xem xét từng quy trình chuyên sâu trong các bài viết tiếp theo.
Luồng chung cho zkVM
Luồng xử lý của zkVM thường như sau:
Người chứng minh nhận được dấu vết và biểu diễn nó dưới dạng một tập hợp các đa thức bị ràng buộc bởi một tập hợp các ràng buộc, về cơ bản dịch phép tính thành đại số bằng cách lập bản đồ các sự kiện bằng toán học.
Người chứng minh cam kết với các đa thức này bằng cách sử dụng Lược đồ cam kết đa thức (PCS). Lược đồ cam kết là một giao thức cho phép người chứng minh tạo dấu vân tay của một số dữ liệu X, được gọi là cam kết với X và sau đó chứng minh sự thật về X mà không tiết lộ X, sử dụng cam kết với X. PCS là dấu vân tay; Một phiên bản ngắn gọn "được xử lý trước" của các ràng buộc đối với tính toán. Điều này cho phép người chứng minh sự thật về tính toán, hiện được biểu thị bằng phương trình đa thức, sử dụng các giá trị ngẫu nhiên do người xác minh đề xuất trong các bước sau.
Người chứng minh chạy Bằng chứng Oracle tương tác đa thức (PIOP) để chỉ ra rằng các đa thức đã cam kết đại diện cho một dấu vết thực thi thỏa mãn các ràng buộc đã cho. PIOP là một giao thức chứng minh tương tác bao gồm một loạt các vòng trong đó người chứng minh gửi cam kết đến đa thức, người xác minh trả lời bằng các giá trị trường ngẫu nhiên và người chứng minh cung cấp các đánh giá về đa thức tại các giá trị ngẫu nhiên này, giống như "giải" phương trình đa thức bằng cách sử dụng các giá trị ngẫu nhiên để thuyết phục người xác minh.
Áp dụng heuristic Fiat-Shamir; người chứng minh chạy PIOP ở chế độ không tương tác, trong đó hành vi của người xác minh bị giới hạn trong việc gửi điểm thử thách giả ngẫu nhiên. Trong mật mã học, heuristic Fiat-Shamir chuyển đổi bằng chứng kiến thức tương tác thành chữ ký số để xác minh. Bước này mã hóa bằng chứng và làm cho nó không có kiến thức.
Người chứng minh phải thuyết phục người xác minh rằng các đánh giá đa thức được yêu cầu là chính xác, liên quan đến các cam kết đa thức mà họ đã gửi cho người xác minh. Để làm điều này, người chứng minh tạo ra một bằng chứng "đánh giá" hoặc "mở", được cung cấp bởi sơ đồ cam kết đa thức (dấu vân tay).
Tóm lại, một bằng chứng zkVM chứng minh, đối với một chương trình nhất định, một kết quả nhất định và đưa ra các điều kiện ban đầu, rằng có một số đầu vào khiến chương trình tạo ra kết quả đã cho khi được thực thi từ các điều kiện ban đầu nhất định. Chúng ta có thể kết hợp câu lệnh này với luồng quy trình để đi đến mô tả sau đây về zkVM.
Một bằng chứng zkVM chứng minh, đối với một chương trình VM nhất định và một đầu ra nhất định, rằng có một số đầu vào khiến chương trình nhất định tạo ra đầu ra nhất định khi được thực thi trên máy ảo.
Các tiêu chí mà chúng ta nên đánh giá zkVM là gì? Nói cách khác, khi nào chúng ta nên nói rằng zkVM này tốt hơn zkVM khác? Thành thật mà nói, câu trả lời phụ thuộc vào trường hợp sử dụng.
Nghiên cứu thị trường của Lita cho thấy rằng đối với hầu hết các trường hợp sử dụng thương mại, các thuộc tính quan trọng nhất, ngoài tốc độ, hiệu quả và ngắn gọn, là tốc độ hoặc hiệu quả thời gian lõi, tùy thuộc vào ứng dụng. Một số ứng dụng nhạy cảm về giá và muốn tối ưu hóa cho mức tiêu thụ năng lượng thấp và sử dụng vốn thấp trong việc chứng minh; Đối với những điều này, hiệu quả thời gian cốt lõi có lẽ là số liệu quan trọng nhất để tối ưu hóa. Các ứng dụng khác, đặc biệt là các ứng dụng liên quan đến tài chính hoặc giao dịch, nhạy cảm với độ trễ và muốn tối ưu hóa tốc độ.
Hầu hết các so sánh công khai về hiệu suất chỉ tập trung vào tốc độ, điều này rất quan trọng nhưng không phải là thước đo toàn diện về hiệu suất. Ngoài ra còn có một vài thuộc tính quan trọng đo lường độ tin cậy của zkVM; Hầu hết trong số đó không đạt tiêu chuẩn sẵn sàng sản xuất, ngay cả đối với những người đương nhiệm dẫn đầu thị trường.
Chúng tôi đề xuất rằng zkVM nên được đánh giá theo các tiêu chí sau, được tách thành hai tập hợp con:
Tiêu chí chính để đánh giá zk-VM
Đường cơ sở: Đo độ tin cậy của zkVM
Hiệu suất: Đo lường khả năng của zkVM
4.1 Đường cơ sở: Giả định về tính đúng đắn, bảo mật và tin cậy
Khi đánh giá zkVM cho các ứng dụng quan trọng, tính đúng đắn và bảo mật nên được coi là đường cơ sở. Cần phải có đủ lý do để tự tin về tính đúng đắn và bảo mật được tuyên bố đủ mạnh. Ngoài ra, các giả định tin cậy cần phải đủ yếu cho ứng dụng.
Nếu không có các thuộc tính này, zkVM có khả năng tồi tệ hơn là vô dụng đối với ứng dụng, vì nó có thể không hoạt động như được chỉ định và khiến người dùng bị hack và khai thác.
i. Tính đúng đắn
Tính chính xác bao gồm ba thuộc tính:
Bạn có thể có sự trọn vẹn mà không có sự lành mạnh; Nếu hệ thống chứng minh tất cả mọi thứ bao gồm cả sự giả dối, rõ ràng nó là hoàn chỉnh nhưng không phải là âm thanh. Ngược lại, bạn có thể có âm thanh mà không có sự hoàn chỉnh; Nếu hệ thống chứng minh một chương trình tồn tại nhưng không thể chứng minh các tính toán, rõ ràng đó là âm thanh (sau tất cả, nó không bao giờ chứng minh bất kỳ sự giả dối nào), nhưng không hoàn chỉnh.
ii. Bảo mật
Trong thực tế, cả ba thuộc tính chính xác đều có dung sai khác không. Điều này ngụ ý tất cả các bằng chứng là xác suất thống kê về tính chính xác, và không phải là sự chắc chắn tuyệt đối. Dung sai đề cập đến xác suất tối đa có thể chấp nhận được rằng một thuộc tính sẽ thất bại. Không dung sai tất nhiên là lý tưởng, nhưng zkVM không đạt được dung sai bằng không trên tất cả các thuộc tính này trong thực tế. Âm thanh và tính đầy đủ hoàn hảo dường như không tương thích với sự cô đọng, và không có phương pháp nào được biết đến để đạt được kiến thức hoàn hảo bằng không. Một cách phổ biến để đo lường bảo mật là trong bit bảo mật, trong đó dung sai 1 / (2 ^ n) được gọi là n bit bảo mật. Nhiều bit bảo mật hơn là tốt hơn.
Nếu một zkVM là hoàn toàn chính xác, điều đó không nhất thiết có nghĩa là nó đáng tin cậy. Tính chính xác chỉ ngụ ý rằng zkVM đáp ứng các thuộc tính bảo mật của nó lên đến dung sai được yêu cầu. Nó không ngụ ý rằng dung sai được tuyên bố là đủ thấp để sẵn sàng cho thị trường. Ngoài ra, nếu một zkVM đủ an toàn, điều đó không có nghĩa là nó đúng; Bảo mật đề cập đến dung sai được tuyên bố, không phải dung sai thực sự đạt được. Chỉ khi zkVM vừa hoàn toàn chính xác vừa đủ an toàn, mới có thể nói rằng zkVM đáng tin cậy đến dung sai được yêu cầu.
iii. Giả định tin cậy
Khi zkVM có giả định tin cậy, điều này thường ở dạng quy trình thiết lập đáng tin cậy. Quá trình thiết lập cho hệ thống chứng minh ZK chạy một lần, trước khi bằng chứng đầu tiên được tạo bằng hệ thống bằng chứng, để tạo ra một số thông tin được gọi là "dữ liệu thiết lập". Trong một quy trình thiết lập đáng tin cậy, một hoặc nhiều cá nhân tạo ra một số tính ngẫu nhiên được tích hợp vào dữ liệu thiết lập và cần giả định rằng ít nhất một trong số những cá nhân đó đã xóa tính ngẫu nhiên mà họ kết hợp vào dữ liệu thiết lập.
Có hai mô hình giả định niềm tin phổ biến trong thực tế.
Một giả định tin tưởng đa số trung thực nói rằng trong số một số tập hợp N cá nhân, hơn N / 2 trong số những cá nhân đó thể hiện tính toàn vẹn trong một số tương tác cụ thể với hệ thống, thường được sử dụng bởi các blockchain
Giả định tin cậy "1 trên N" nói rằng trong số một số tập hợp N cá nhân, ít nhất một trong số những cá nhân đó thể hiện tính toàn vẹn trong một số tương tác cụ thể với hệ thống, thường được sử dụng bởi các công cụ và ứng dụng dựa trên MPC.
Người ta thường đồng ý rằng tất cả những thứ khác đều bình đẳng, zkVM không có giả định tin cậy an toàn hơn zkVM yêu cầu giả định tin cậy.
4.2 Bộ ba zkVM: Cân bằng tốc độ, hiệu quả và sự ngắn gọn trong zkVM
Bộ ba zkVM: tốc độ, hiệu quả và ngắn gọn
Tốc độ, hiệu quả và sự ngắn gọn là tất cả các thuộc tính quy mô trượt. Tất cả những yếu tố này góp phần vào chi phí người dùng cuối của zkVM. Làm thế nào chúng nên được cân nhắc trong một đánh giá phụ thuộc vào ứng dụng. Thông thường, giải pháp nhanh nhất không phải là hiệu quả nhất hoặc ngắn gọn nhất; giải pháp ngắn gọn nhất không phải là nhanh nhất hoặc hiệu quả nhất; vân vân và vân vân. Trước tiên, hãy xác định từng thuộc tính trước khi giải thích mối quan hệ của chúng
i. Tốc độ
Tốc độ nên được xác định và đo lường liên quan đến các chương trình thử nghiệm, đầu vào và hệ thống cụ thể để đảm bảo nó có thể được đánh giá định lượng. Chỉ số này rất quan trọng đối với các ứng dụng nhạy cảm với độ trễ, trong đó cần có sẵn bằng chứng nhanh chóng, nhưng đi kèm với chi phí cao hơn và kích thước bằng chứng lớn hơn
ii. Hiệu quả
Người chứng minh tiêu thụ hai loại tài nguyên: lõi-thời gian và không gian. Do đó, hiệu quả có thể được chia thành hiệu suất thời gian lõi và hiệu quả không gian.
Hiệu quả thời gian lõi: Lượng thời gian trung bình mà prover hoạt động trên tất cả các lõi nhân với số lõi chạy prover. Đối với một câu tục ngữ lõi đơn, mức tiêu thụ thời gian lõi và tốc độ là như nhau. Đối với một prover có khả năng đa lõi chạy ở chế độ đa lõi trên hệ thống đa lõi, mức tiêu thụ thời gian lõi và tốc độ không giống nhau. Nếu một chương trình sử dụng đầy đủ 5 lõi hoặc luồng trong 5 giây, đó sẽ là 25 giây thời gian người dùng và 5 giây thời gian đồng hồ treo tường.
Hiệu quả không gian: Đề cập đến dung lượng lưu trữ được sử dụng, chẳng hạn như RAM
Thời gian của người dùng rất thú vị như một proxy cho năng lượng tiêu thụ bằng cách chạy tính toán. Trong tình huống tất cả các lõi được sử dụng đầy đủ gần như mọi lúc, mức tiêu thụ năng lượng của CPU sẽ tương đối ổn định. Trong tình huống này, thời gian người dùng dành cho việc thực thi mã ở chế độ người dùng, chủ yếu bị ràng buộc bởi CPU phải tỷ lệ thuận tuyến tính với số watt-giờ (tức là năng lượng) được tiêu thụ bởi việc thực thi mã đó.
Tiết kiệm về tiêu thụ năng lượng, hoặc sử dụng tài nguyên máy tính, nên thú vị từ quan điểm của bất kỳ hoạt động chứng minh nào có đủ quy mô mà hóa đơn năng lượng của họ (hoặc hóa đơn điện toán đám mây của họ) để chứng minh là một chi phí hoạt động đáng kể. Vì những lý do này, thời gian của người dùng là một số liệu thú vị. Chi phí chứng minh thấp hơn cho phép các nhà cung cấp dịch vụ chuyển giá chứng minh thấp hơn cho khách hàng nhạy cảm về chi phí.
Cả hai loại hiệu quả đều liên quan đến mức tiêu thụ năng lượng của quá trình chứng minh và lượng vốn được sử dụng bởi quá trình chứng minh, liên quan đến chi phí tài chính để chứng minh. Để vận hành định nghĩa về hiệu quả để đo lường, định nghĩa phải được thực hiện liên quan đến một hoặc nhiều chương trình thử nghiệm, một hoặc nhiều đầu vào thử nghiệm cho mỗi chương trình đó và một hoặc nhiều hệ thống thử nghiệm.
iii. Sự ngắn gọn
Tính ngắn gọn là tổng hợp của ba số liệu riêng biệt, với sự phức tạp của việc xác minh bằng chứng được chia nhỏ hơn nữa:
Xác minh thường là một hoạt động cốt lõi duy nhất, do đó tốc độ và hiệu quả thời gian lõi thường tương đương trong bối cảnh này. Cũng như tốc độ và hiệu quả, việc vận hành định nghĩa về tính cô đọng đòi hỏi phải chỉ định các bộ chương trình kiểm tra, đầu vào thử nghiệm và hệ thống kiểm tra.
Với mỗi thuộc tính hiệu suất được xác định, bây giờ chúng tôi minh họa các tác động mờ của việc tối ưu hóa một thuộc tính so với các thuộc tính khác.
Nói chung, tối ưu hóa cho một chất lượng có nghĩa là không tối ưu hóa cho chất lượng khác, và do đó cần có phân tích đa chiều để chọn giải pháp tối ưu theo từng trường hợp.
Một cách tốt để cân nhắc các thuộc tính này trong đánh giá có thể là xác định mức chấp nhận được cho mỗi thuộc tính và sau đó xác định thuộc tính nào là quan trọng nhất. Các thuộc tính quan trọng nhất nên được tối ưu hóa, tùy thuộc vào việc duy trì mức đủ tốt trên tất cả các thuộc tính khác.
Dưới đây chúng tôi tóm tắt từng tài sản và những cân nhắc chính của chúng:
Tính chất đánh giá của zkVM
Với bảng trên, chúng tôi xin kết thúc bài viết đầu tiên của loạt bài của chúng tôi. Trong các bài viết tiếp theo, chúng tôi sẽ xây dựng trên sơ đồ dòng chảy được hiển thị ở trên để giải thích các quy trình số học và mật mã phổ biến trong zkVM.
Nếu bạn thấy điều này hữu ích, hãy truy cập trang web và gitbook của chúng tôi để tìm hiểu thêm về những gì chúng tôi đang xây dựng tại Lita.
Ngoài ra, hãy theo dõi chúng tôi trên X và Discord để luôn cập nhật để bạn không bỏ lỡ phần còn lại của loạt phim
Chuyển tiếp tiêu đề ban đầu 'A Zero Knowledge Paradigm: Part 1 - Zk-VM là gì?'
Bằng chứng kiến thức bằng không (ZKP) là gì?
Nếu bạn không có kiến thức trước về bằng chứng kiến thức bằng không (ZKP), video này từ Wired giải thích khái niệm ở năm cấp độ khó theo cách tương tác với các ví dụ và minh chứng dễ hiểu. Rất khuyến khích.
Nói một cách đơn giản nhất, ZKP cho phép một bên (tục ngữ) chứng minh với một bên khác (người xác minh) rằng họ biết điều gì đó mà không tiết lộ thứ đó là gì hoặc bất kỳ thông tin bổ sung nào. Cụ thể hơn, ZKP chứng minh kiến thức về một phần dữ liệu hoặc kiến thức về kết quả tính toán, mà không tiết lộ dữ liệu hoặc đầu vào. Quá trình tạo ra một bằng chứng không có kiến thức liên quan đến một loạt các mô hình toán học để chuyển đổi kết quả tính toán thành một phần thông tin vô nghĩa khác chứng minh việc thực thi mã thành công, sau này có thể được xác minh.
Trong một số trường hợp, phải mất ít công sức hơn để xác minh bằng chứng, được xây dựng sau nhiều vòng chuyển đổi đại số và mật mã, hơn là cần thiết để chạy tính toán. Sự kết hợp độc đáo giữa bảo mật và khả năng mở rộng này là điều khiến mật mã không có kiến thức trở thành một công cụ mạnh mẽ như vậy.
zkSNARKs: Zero Knowledge Succinct Non-Interactive Argument of Knowledge
zkSTARKs: Zero Knowledge Scalable Transparent Argument of Knowledge
(Lưu ý: Cầu nối của Succinct sử dụng SNARK nhưng SP1 là giao thức dựa trên STARK)
Điều đáng chú ý là tất cả các STARK đều là SNARK, nhưng không phải tất cả SNARK đều là STARK.
Để hiểu rõ hơn về SNARK và STARKs, chúng tôi khuyên bạn nên đọc @krzhang/privacy-in-cryptocurrencies-zero-knowledge-and-zk-snarks-1-2-68ce1838fd9c"> bài viết được viết bởi Yan Zhang và Yi Sun của Axiom, và bộ sưu tập các bài viết này trong github của Ventali Tan.
Máy ảo (VM) là một chương trình chạy các chương trình. Trong ngữ cảnh, zkVM là một máy tính ảo được triển khai như một hệ thống để tạo ra các bằng chứng kiến thức bằng không, hoặc một mạch hoặc công cụ phổ quát, để tạo ZKP cho bất kỳ chương trình hoặc tính toán nào.
zkVM loại bỏ nhu cầu học toán học và mật mã phức tạp để thiết kế và mã hóa ZK, đồng thời cho phép bất kỳ nhà phát triển nào thực thi các chương trình được viết bằng ngôn ngữ ưa thích của họ và tạo ZKP, giúp tích hợp và tương tác dễ dàng hơn với kiến thức bằng không. Nói chung, hầu hết các tham chiếu đến zkVM ngầm bao gồm các chuỗi công cụ trình biên dịch và hệ thống chứng minh được gắn vào máy ảo thực thi các chương trình chứ không chỉ riêng máy ảo. Dưới đây, chúng tôi tóm tắt các thành phần chính của zkVM và chức năng của chúng:
Các thành phần chính của zkVM
Việc thiết kế và thực hiện từng thành phần được điều chỉnh bởi sự lựa chọn bằng chứng (SNARK hoặc STARK) và kiến trúc tập lệnh (ISA) của zkVM. Theo truyền thống, ISA chỉ định những gì CPU có khả năng (kiểu dữ liệu, thanh ghi, bộ nhớ, v.v.) và chuỗi hành động mà CPU thực hiện khi nó thực thi một chương trình. Trong ngữ cảnh, ISA xác định mã máy có thể diễn giải và thực thi bởi máy ảo. Chọn ISA có thể mang lại sự khác biệt căn bản về khả năng tiếp cận và khả năng sử dụng của zkVM, cũng như tốc độ và hiệu quả của các quy trình tạo bằng chứng và củng cố việc xây dựng bất kỳ zkVM nào.
Dưới đây là một số ví dụ về zkVM và các thành phần của chúng để bạn tham khảo.
zkVM và các thành phần của chúng
Hiện tại, chúng tôi sẽ tập trung vào các tương tác giữa từng thành phần ở mức cao để cung cấp một khuôn khổ để hiểu các quy trình đại số và mật mã cũng như sự đánh đổi thiết kế của zkVM trong bài viết sau.
Sơ đồ sau đây là một sơ đồ quy trình trừu tượng, tổng quát của zkVM, được phân tách và phân loại giữa định dạng (đầu vào / đầu ra) của một chương trình khi nó di chuyển qua các thành phần của zkVM. Chúng tôi sẽ xem xét từng quy trình chuyên sâu trong các bài viết tiếp theo.
Luồng chung cho zkVM
Luồng xử lý của zkVM thường như sau:
Người chứng minh nhận được dấu vết và biểu diễn nó dưới dạng một tập hợp các đa thức bị ràng buộc bởi một tập hợp các ràng buộc, về cơ bản dịch phép tính thành đại số bằng cách lập bản đồ các sự kiện bằng toán học.
Người chứng minh cam kết với các đa thức này bằng cách sử dụng Lược đồ cam kết đa thức (PCS). Lược đồ cam kết là một giao thức cho phép người chứng minh tạo dấu vân tay của một số dữ liệu X, được gọi là cam kết với X và sau đó chứng minh sự thật về X mà không tiết lộ X, sử dụng cam kết với X. PCS là dấu vân tay; Một phiên bản ngắn gọn "được xử lý trước" của các ràng buộc đối với tính toán. Điều này cho phép người chứng minh sự thật về tính toán, hiện được biểu thị bằng phương trình đa thức, sử dụng các giá trị ngẫu nhiên do người xác minh đề xuất trong các bước sau.
Người chứng minh chạy Bằng chứng Oracle tương tác đa thức (PIOP) để chỉ ra rằng các đa thức đã cam kết đại diện cho một dấu vết thực thi thỏa mãn các ràng buộc đã cho. PIOP là một giao thức chứng minh tương tác bao gồm một loạt các vòng trong đó người chứng minh gửi cam kết đến đa thức, người xác minh trả lời bằng các giá trị trường ngẫu nhiên và người chứng minh cung cấp các đánh giá về đa thức tại các giá trị ngẫu nhiên này, giống như "giải" phương trình đa thức bằng cách sử dụng các giá trị ngẫu nhiên để thuyết phục người xác minh.
Áp dụng heuristic Fiat-Shamir; người chứng minh chạy PIOP ở chế độ không tương tác, trong đó hành vi của người xác minh bị giới hạn trong việc gửi điểm thử thách giả ngẫu nhiên. Trong mật mã học, heuristic Fiat-Shamir chuyển đổi bằng chứng kiến thức tương tác thành chữ ký số để xác minh. Bước này mã hóa bằng chứng và làm cho nó không có kiến thức.
Người chứng minh phải thuyết phục người xác minh rằng các đánh giá đa thức được yêu cầu là chính xác, liên quan đến các cam kết đa thức mà họ đã gửi cho người xác minh. Để làm điều này, người chứng minh tạo ra một bằng chứng "đánh giá" hoặc "mở", được cung cấp bởi sơ đồ cam kết đa thức (dấu vân tay).
Tóm lại, một bằng chứng zkVM chứng minh, đối với một chương trình nhất định, một kết quả nhất định và đưa ra các điều kiện ban đầu, rằng có một số đầu vào khiến chương trình tạo ra kết quả đã cho khi được thực thi từ các điều kiện ban đầu nhất định. Chúng ta có thể kết hợp câu lệnh này với luồng quy trình để đi đến mô tả sau đây về zkVM.
Một bằng chứng zkVM chứng minh, đối với một chương trình VM nhất định và một đầu ra nhất định, rằng có một số đầu vào khiến chương trình nhất định tạo ra đầu ra nhất định khi được thực thi trên máy ảo.
Các tiêu chí mà chúng ta nên đánh giá zkVM là gì? Nói cách khác, khi nào chúng ta nên nói rằng zkVM này tốt hơn zkVM khác? Thành thật mà nói, câu trả lời phụ thuộc vào trường hợp sử dụng.
Nghiên cứu thị trường của Lita cho thấy rằng đối với hầu hết các trường hợp sử dụng thương mại, các thuộc tính quan trọng nhất, ngoài tốc độ, hiệu quả và ngắn gọn, là tốc độ hoặc hiệu quả thời gian lõi, tùy thuộc vào ứng dụng. Một số ứng dụng nhạy cảm về giá và muốn tối ưu hóa cho mức tiêu thụ năng lượng thấp và sử dụng vốn thấp trong việc chứng minh; Đối với những điều này, hiệu quả thời gian cốt lõi có lẽ là số liệu quan trọng nhất để tối ưu hóa. Các ứng dụng khác, đặc biệt là các ứng dụng liên quan đến tài chính hoặc giao dịch, nhạy cảm với độ trễ và muốn tối ưu hóa tốc độ.
Hầu hết các so sánh công khai về hiệu suất chỉ tập trung vào tốc độ, điều này rất quan trọng nhưng không phải là thước đo toàn diện về hiệu suất. Ngoài ra còn có một vài thuộc tính quan trọng đo lường độ tin cậy của zkVM; Hầu hết trong số đó không đạt tiêu chuẩn sẵn sàng sản xuất, ngay cả đối với những người đương nhiệm dẫn đầu thị trường.
Chúng tôi đề xuất rằng zkVM nên được đánh giá theo các tiêu chí sau, được tách thành hai tập hợp con:
Tiêu chí chính để đánh giá zk-VM
Đường cơ sở: Đo độ tin cậy của zkVM
Hiệu suất: Đo lường khả năng của zkVM
4.1 Đường cơ sở: Giả định về tính đúng đắn, bảo mật và tin cậy
Khi đánh giá zkVM cho các ứng dụng quan trọng, tính đúng đắn và bảo mật nên được coi là đường cơ sở. Cần phải có đủ lý do để tự tin về tính đúng đắn và bảo mật được tuyên bố đủ mạnh. Ngoài ra, các giả định tin cậy cần phải đủ yếu cho ứng dụng.
Nếu không có các thuộc tính này, zkVM có khả năng tồi tệ hơn là vô dụng đối với ứng dụng, vì nó có thể không hoạt động như được chỉ định và khiến người dùng bị hack và khai thác.
i. Tính đúng đắn
Tính chính xác bao gồm ba thuộc tính:
Bạn có thể có sự trọn vẹn mà không có sự lành mạnh; Nếu hệ thống chứng minh tất cả mọi thứ bao gồm cả sự giả dối, rõ ràng nó là hoàn chỉnh nhưng không phải là âm thanh. Ngược lại, bạn có thể có âm thanh mà không có sự hoàn chỉnh; Nếu hệ thống chứng minh một chương trình tồn tại nhưng không thể chứng minh các tính toán, rõ ràng đó là âm thanh (sau tất cả, nó không bao giờ chứng minh bất kỳ sự giả dối nào), nhưng không hoàn chỉnh.
ii. Bảo mật
Trong thực tế, cả ba thuộc tính chính xác đều có dung sai khác không. Điều này ngụ ý tất cả các bằng chứng là xác suất thống kê về tính chính xác, và không phải là sự chắc chắn tuyệt đối. Dung sai đề cập đến xác suất tối đa có thể chấp nhận được rằng một thuộc tính sẽ thất bại. Không dung sai tất nhiên là lý tưởng, nhưng zkVM không đạt được dung sai bằng không trên tất cả các thuộc tính này trong thực tế. Âm thanh và tính đầy đủ hoàn hảo dường như không tương thích với sự cô đọng, và không có phương pháp nào được biết đến để đạt được kiến thức hoàn hảo bằng không. Một cách phổ biến để đo lường bảo mật là trong bit bảo mật, trong đó dung sai 1 / (2 ^ n) được gọi là n bit bảo mật. Nhiều bit bảo mật hơn là tốt hơn.
Nếu một zkVM là hoàn toàn chính xác, điều đó không nhất thiết có nghĩa là nó đáng tin cậy. Tính chính xác chỉ ngụ ý rằng zkVM đáp ứng các thuộc tính bảo mật của nó lên đến dung sai được yêu cầu. Nó không ngụ ý rằng dung sai được tuyên bố là đủ thấp để sẵn sàng cho thị trường. Ngoài ra, nếu một zkVM đủ an toàn, điều đó không có nghĩa là nó đúng; Bảo mật đề cập đến dung sai được tuyên bố, không phải dung sai thực sự đạt được. Chỉ khi zkVM vừa hoàn toàn chính xác vừa đủ an toàn, mới có thể nói rằng zkVM đáng tin cậy đến dung sai được yêu cầu.
iii. Giả định tin cậy
Khi zkVM có giả định tin cậy, điều này thường ở dạng quy trình thiết lập đáng tin cậy. Quá trình thiết lập cho hệ thống chứng minh ZK chạy một lần, trước khi bằng chứng đầu tiên được tạo bằng hệ thống bằng chứng, để tạo ra một số thông tin được gọi là "dữ liệu thiết lập". Trong một quy trình thiết lập đáng tin cậy, một hoặc nhiều cá nhân tạo ra một số tính ngẫu nhiên được tích hợp vào dữ liệu thiết lập và cần giả định rằng ít nhất một trong số những cá nhân đó đã xóa tính ngẫu nhiên mà họ kết hợp vào dữ liệu thiết lập.
Có hai mô hình giả định niềm tin phổ biến trong thực tế.
Một giả định tin tưởng đa số trung thực nói rằng trong số một số tập hợp N cá nhân, hơn N / 2 trong số những cá nhân đó thể hiện tính toàn vẹn trong một số tương tác cụ thể với hệ thống, thường được sử dụng bởi các blockchain
Giả định tin cậy "1 trên N" nói rằng trong số một số tập hợp N cá nhân, ít nhất một trong số những cá nhân đó thể hiện tính toàn vẹn trong một số tương tác cụ thể với hệ thống, thường được sử dụng bởi các công cụ và ứng dụng dựa trên MPC.
Người ta thường đồng ý rằng tất cả những thứ khác đều bình đẳng, zkVM không có giả định tin cậy an toàn hơn zkVM yêu cầu giả định tin cậy.
4.2 Bộ ba zkVM: Cân bằng tốc độ, hiệu quả và sự ngắn gọn trong zkVM
Bộ ba zkVM: tốc độ, hiệu quả và ngắn gọn
Tốc độ, hiệu quả và sự ngắn gọn là tất cả các thuộc tính quy mô trượt. Tất cả những yếu tố này góp phần vào chi phí người dùng cuối của zkVM. Làm thế nào chúng nên được cân nhắc trong một đánh giá phụ thuộc vào ứng dụng. Thông thường, giải pháp nhanh nhất không phải là hiệu quả nhất hoặc ngắn gọn nhất; giải pháp ngắn gọn nhất không phải là nhanh nhất hoặc hiệu quả nhất; vân vân và vân vân. Trước tiên, hãy xác định từng thuộc tính trước khi giải thích mối quan hệ của chúng
i. Tốc độ
Tốc độ nên được xác định và đo lường liên quan đến các chương trình thử nghiệm, đầu vào và hệ thống cụ thể để đảm bảo nó có thể được đánh giá định lượng. Chỉ số này rất quan trọng đối với các ứng dụng nhạy cảm với độ trễ, trong đó cần có sẵn bằng chứng nhanh chóng, nhưng đi kèm với chi phí cao hơn và kích thước bằng chứng lớn hơn
ii. Hiệu quả
Người chứng minh tiêu thụ hai loại tài nguyên: lõi-thời gian và không gian. Do đó, hiệu quả có thể được chia thành hiệu suất thời gian lõi và hiệu quả không gian.
Hiệu quả thời gian lõi: Lượng thời gian trung bình mà prover hoạt động trên tất cả các lõi nhân với số lõi chạy prover. Đối với một câu tục ngữ lõi đơn, mức tiêu thụ thời gian lõi và tốc độ là như nhau. Đối với một prover có khả năng đa lõi chạy ở chế độ đa lõi trên hệ thống đa lõi, mức tiêu thụ thời gian lõi và tốc độ không giống nhau. Nếu một chương trình sử dụng đầy đủ 5 lõi hoặc luồng trong 5 giây, đó sẽ là 25 giây thời gian người dùng và 5 giây thời gian đồng hồ treo tường.
Hiệu quả không gian: Đề cập đến dung lượng lưu trữ được sử dụng, chẳng hạn như RAM
Thời gian của người dùng rất thú vị như một proxy cho năng lượng tiêu thụ bằng cách chạy tính toán. Trong tình huống tất cả các lõi được sử dụng đầy đủ gần như mọi lúc, mức tiêu thụ năng lượng của CPU sẽ tương đối ổn định. Trong tình huống này, thời gian người dùng dành cho việc thực thi mã ở chế độ người dùng, chủ yếu bị ràng buộc bởi CPU phải tỷ lệ thuận tuyến tính với số watt-giờ (tức là năng lượng) được tiêu thụ bởi việc thực thi mã đó.
Tiết kiệm về tiêu thụ năng lượng, hoặc sử dụng tài nguyên máy tính, nên thú vị từ quan điểm của bất kỳ hoạt động chứng minh nào có đủ quy mô mà hóa đơn năng lượng của họ (hoặc hóa đơn điện toán đám mây của họ) để chứng minh là một chi phí hoạt động đáng kể. Vì những lý do này, thời gian của người dùng là một số liệu thú vị. Chi phí chứng minh thấp hơn cho phép các nhà cung cấp dịch vụ chuyển giá chứng minh thấp hơn cho khách hàng nhạy cảm về chi phí.
Cả hai loại hiệu quả đều liên quan đến mức tiêu thụ năng lượng của quá trình chứng minh và lượng vốn được sử dụng bởi quá trình chứng minh, liên quan đến chi phí tài chính để chứng minh. Để vận hành định nghĩa về hiệu quả để đo lường, định nghĩa phải được thực hiện liên quan đến một hoặc nhiều chương trình thử nghiệm, một hoặc nhiều đầu vào thử nghiệm cho mỗi chương trình đó và một hoặc nhiều hệ thống thử nghiệm.
iii. Sự ngắn gọn
Tính ngắn gọn là tổng hợp của ba số liệu riêng biệt, với sự phức tạp của việc xác minh bằng chứng được chia nhỏ hơn nữa:
Xác minh thường là một hoạt động cốt lõi duy nhất, do đó tốc độ và hiệu quả thời gian lõi thường tương đương trong bối cảnh này. Cũng như tốc độ và hiệu quả, việc vận hành định nghĩa về tính cô đọng đòi hỏi phải chỉ định các bộ chương trình kiểm tra, đầu vào thử nghiệm và hệ thống kiểm tra.
Với mỗi thuộc tính hiệu suất được xác định, bây giờ chúng tôi minh họa các tác động mờ của việc tối ưu hóa một thuộc tính so với các thuộc tính khác.
Nói chung, tối ưu hóa cho một chất lượng có nghĩa là không tối ưu hóa cho chất lượng khác, và do đó cần có phân tích đa chiều để chọn giải pháp tối ưu theo từng trường hợp.
Một cách tốt để cân nhắc các thuộc tính này trong đánh giá có thể là xác định mức chấp nhận được cho mỗi thuộc tính và sau đó xác định thuộc tính nào là quan trọng nhất. Các thuộc tính quan trọng nhất nên được tối ưu hóa, tùy thuộc vào việc duy trì mức đủ tốt trên tất cả các thuộc tính khác.
Dưới đây chúng tôi tóm tắt từng tài sản và những cân nhắc chính của chúng:
Tính chất đánh giá của zkVM
Với bảng trên, chúng tôi xin kết thúc bài viết đầu tiên của loạt bài của chúng tôi. Trong các bài viết tiếp theo, chúng tôi sẽ xây dựng trên sơ đồ dòng chảy được hiển thị ở trên để giải thích các quy trình số học và mật mã phổ biến trong zkVM.
Nếu bạn thấy điều này hữu ích, hãy truy cập trang web và gitbook của chúng tôi để tìm hiểu thêm về những gì chúng tôi đang xây dựng tại Lita.
Ngoài ra, hãy theo dõi chúng tôi trên X và Discord để luôn cập nhật để bạn không bỏ lỡ phần còn lại của loạt phim