Zero-Knowledge Proof là gì?
Bằng chứng không kiến thức (Zero-Knowledge Proof - ZKP) được hiểu đơn giản là một công nghệ mật mã, cho phép xác minh tính xác thực của một phần thông tin mà không tiết lộ toàn bộ thông tin đó.
ZKP là một công nghệ đang phát triển mạnh mẽ, đóng vai trò vô cùng quan trọng trong các lĩnh vực tiền điện tử, Blockchain và DeFi (tài chính phi tập trung). Đặc biệt, công nghệ ZKP đã giải quyết được các vấn đề về khả năng mở rộng và quyền riêng tư (hai điểm khó khăn lớn đối với các chuỗi khối) trong Web3.
Về khả năng mở rộng, một số bản tổng hợp ZK, còn được gọi là bản tổng hợp hiệu lực, đang được triển khai, tăng kích thước của Ethereum lên 10-100 lần, đồng thời cải thiện trải nghiệm người dùng bằng cách giảm chi phí giao dịch.
Về quyền riêng tư, ZKP đang vượt ra khỏi giao dịch riêng tư và giao dịch kết hợp, chuyển sang các lĩnh vực phức tạp và hữu ích hơn như giao dịch trực tuyến riêng tư, chứng chỉ xác minh và nhận dạng.
Việc phát triển các ứng dụng tập trung vào quyền riêng tư bằng cách sử dụng công nghệ ZKP có xu hướng trở thành một nhiệm vụ đòi hỏi khắt khe hơn đối với các nhà phát triển.
Cách ZKP hoạt động trong thực tế
ZKP được định nghĩa là một quá trình mà một bên được gọi là người xác minh, chứng minh cho một bên khác (người xác minh) rằng họ biết thông tin mà không tiết lộ thông tin cụ thể đó. Tuy nhiên, trên thực tế, nhất là trong Web3, ZKP có xu hướng được sử dụng khác đi. Hầu hết các ứng dụng không sử dụng ZKP để thể hiện quyền sở hữu dữ liệu độc quyền. Thay vào đó, ZKP được sử dụng để tăng sự tin tưởng thông qua khả năng kiểm chứng.
Các thành phần chính của việc chạy ZKP là tạo bằng chứng và xác minh bằng chứng. Tạo bằng chứng liên quan đến việc chạy các tính toán nặng để tạo bằng chứng thực thi nhằm loại bỏ niềm tin vào người xác minh. Bất kỳ ai cũng có thể chạy một quy trình đơn giản trên bằng chứng để xác minh tính toàn vẹn của quy trình do trình xác thực chạy. Mô hình này cho phép các doanh nghiệp chạy một quy trình (thường là quy trình phức tạp) và cho phép khách hàng tin tưởng vào việc thực hiện quy trình đã nói mà không cần phải lặp lại nó.
Giả sử bạn đăng ký gói trả phí của OpenAI để sử dụng một trong các mô hình ngôn ngữ lớn (LLM) của họ như chatGPT. Bạn phải tin tưởng rằng OpenAI sẽ thực sự chạy mô hình cụ thể mà bạn yêu cầu chứ không thay thế mô hình đó bằng một mô hình khác đơn giản và kém hiệu quả hơn. Sự tin tưởng tối thiểu này là lời hứa của ZKP.
Trong Web2, ZKP có thể đảm bảo đánh giá tín dụng công bằng hoặc xử lý yêu cầu bảo hiểm công bằng, chỉ bằng cách đảm bảo rằng cùng một thuật toán được sử dụng cho yêu cầu của tất cả khách hàng. Công nghệ ZK chưa được ứng dụng quá nhiều, bởi vì chi phí để khởi chạy chương trình ZKP vẫn còn tương đối cao. Tuy nhiên, các công ty như Modulus Labs đang xây dựng một công nghệ sử dụng ZKP để chứng minh lý luận của AI.
Yêu cầu kỹ thuật cho ZKP hiệu quả
Ở cấp độ kỹ thuật, một hệ thống ZKP hiệu quả cần đạt được đồng thời các mục tiêu sau:
- Giảm độ phức tạp tính toán và độ trễ của các hệ thống chứng minh, cho phép người chứng minh tạo ra các bằng chứng một cách hiệu quả và truyền chúng tới người xác minh với độ trễ tối thiểu.
- Đạt được kích thước bằng chứng nhỏ hơn.
- Đạt hiệu quả xác minh, nghĩa là chi phí xác minh tối thiểu.
Ngoài các mục tiêu chính này, một số mục tiêu phụ có thể được yêu cầu tùy thuộc vào trường hợp sử dụng, chẳng hạn như:
- Bảo mật dữ liệu trong các ứng dụng về quyền riêng tư, nghĩa là hệ thống bằng chứng có thể xử lý các đầu vào riêng tư không được tiết lộ trong bằng chứng được tạo.
- Tránh các thiết lập tin cậy nếu có thể để đơn giản hóa các giả định bảo mật.
- Thực hiện đệ quy bằng chứng (phương pháp sử dụng hàm để tự gọi chính nó) nhằm giảm chi phí xác minh nhiều nhất có thể, nghĩa là một lần xác minh có thể xác minh nhiều bằng chứng và phân bổ chi phí giữa các bằng chứng khác nhau.
Để đạt được tất cả các mục tiêu này cùng một lúc là một thách thức không nhỏ. Do đó, tùy thuộc vào trường hợp sử dụng, hệ thống ZKP sẽ ưu tiên một số mục tiêu này. Ví dụ: Hệ thống bằng chứng SNARK có thể tạo ra các bằng chứng ngắn gọn, nhưng độ phức tạp của các bằng chứng sẽ tăng lên. STRAK có bộ chứng minh hiệu quả, nhưng kích thước bằng chứng có thể lớn hơn SNARK 100 lần. Các nhà nghiên cứu của ZK không ngừng nỗ lực để nâng cao trình độ công nghệ, cải thiện đồng thời cả ba chỉ số bằng cách phát minh ra các cơ chế chứng minh mới.
Xây dựng Web3 với công nghệ ZKP?
Trong Web3, công nghệ ZKP đã giải quyết hiệu quả các vấn đề về khả năng mở rộng và quyền riêng tư.
Các ứng dụng ZK tập trung vào hiệu suất
Các nhà phát triển có thể sử dụng ZKP để đạt được thông lượng cao hơn (TPS) hoặc giảm phí bằng cách thực hiện hầu hết các tính toán ứng dụng ngoài chuỗi và chỉ xuất bản bằng chứng trên chuỗi. Trong trường hợp này, có nhiều khung khác nhau để lựa chọn. Mỗi khung này cung cấp một đường dẫn để biên dịch ứng dụng được viết bằng ngôn ngữ cấp cao thành một ứng dụng tương đương phù hợp để tạo bằng chứng, cụ thể là mạch ZK. Chúng cung cấp một bộ công cụ để biên dịch mã ứng dụng, tạo mạch ZK, triển khai trình xác thực ZK, cũng như tạo mã trình xác thực cho hệ sinh thái đích. Các khung này có thể chia thành hai nhóm chính: Tập trung vào EVM và không tập trung vào EVM.
1. Khung ZK tập trung vào EVM
Nhóm khung ZK này phù hợp với Ethereum bằng cách xây dựng bản tổng hợp trên Ethereum. Các giao dịch và ứng dụng được thực hiện trên máy ảo ZK của rollup (zkVM). Bằng chứng được tạo bởi các trình xác thực chuyên dụng và được xuất bản lên Layer 1 để xác minh bằng hợp đồng thông minh.
Tập hợp con đầu tiên của nhóm này đã triển khai zkVM tương thích với EVM, do đó có tên là zkEVM nhằm mục đích giảm thiểu ma sát. Các nhà phát triển trừu tượng hóa sự phức tạp của ZK bằng cách tạo ra một mạch và trình xác thực hoạt động với EVM ngay lập tức, bao gồm Polygon zkEVM và Scroll.
Tập hợp con thứ hai của nhóm này là zkVM không tương thích với EVM. Mặc dù không tương thích, nhưng nhóm này giảm ma sát bằng cách tạo một lớp trung gian cho phép các nhà phát triển sử dụng Solidity. Vitalik, nhà sáng lập Ethereum, gọi nhóm này là zkEVM loại 4. ZkSync và Starknet là một ví dụ điển hình của nhóm này. Lợi ích của việc sử dụng zkEVM loại 4 là nó có thể cung cấp thông lượng cao hơn và chi phí thấp hơn so với các loại tương thích với EVM. Điều này làm cho chúng phù hợp để xây dựng các ứng dụng có thông lượng cao, chẳng hạn như trò chơi trực tuyến hoặc các sản phẩm tài chính hiệu suất cao như DEX sổ đặt hàng.
Xây dựng các ứng dụng cho zkEVM loại 4 đòi hỏi nhiều nỗ lực hơn của nhà phát triển vì mã Solidity có sẵn bị hạn chế.
Tuy nhiên, các nhà phát triển có thể quyết định học một ngôn ngữ khác, chẳng hạn như Cairo, để phát triển các ứng dụng gốc cho các khung này.
2. Khung ZK không phải EVM
Một loại khung khác là những khung không nhắm mục tiêu đến kiến trúc EVM mà nhắm đến Layer 1 hoặc máy tính có mục đích chung. Tuy nhiên, chúng vẫn có thể được sử dụng để xây dựng công nghệ zkRU dành riêng cho ứng dụng trên Ethereum thông qua các bộ phát triển phần mềm (SDK) chuyên dụng như Sovereign với 2 phương pháp dưới đây:
- Nhà phát triển viết mã bằng ngôn ngữ cấp cao nhắm mục tiêu đến kiến trúc máy ảo cụ thể, sau đó được biên dịch thành mạch ZK.
- Các nhà phát triển viết mã bằng ngôn ngữ dành riêng cho miền (DSL), chẳng hạn như Circo, để tạo trực tiếp các mạch ZK.
Cách tiếp cận đầu tiên thân thiện với nhà phát triển hơn, nhưng có xu hướng dẫn đến các mạch lớn hơn và yêu cầu thời gian kiểm chứng lâu hơn.
Các ứng dụng ZK tập trung vào quyền riêng tư
Việc sử dụng công nghệ ZKP để phát triển một giải pháp tập trung vào quyền riêng tư sẽ tốn ít công sức hơn là một giải pháp tập trung vào khả năng mở rộng. Các ứng dụng có ý thức về quyền riêng tư chủ yếu tuân theo một trong hai cách triển khai dưới đây.
1. Xây dựng trên Layer 1 chung
Để kích hoạt các ứng dụng thanh toán riêng trên Layer 1, ZKP cần được xây dựng dưới dạng hợp đồng thông minh. Các ứng dụng thường sử dụng ZKP để tạo nhóm tiền riêng. Người dùng sẽ sử dụng các nhóm tiền riêng này làm bộ trộn, tài trợ cho các ví mới không được kết nối với ví ban đầu của họ, ví dụ như Tornado Cash. Đối với những ứng dụng này, bằng chứng được thực hiện bởi người dùng, trong khi xác minh được thực hiện trên chuỗi. Do đó, điều quan trọng là sử dụng hệ thống ZKP có bằng chứng nhanh, tính toán xác minh đơn giản và không tiết lộ bất kỳ thông tin nào của người dùng trong bằng chứng được tạo.
2. Xây dựng Layer 1 hoặc Layer 2 mới tập trung vào quyền riêng tư
Để làm cho các giao dịch và ứng dụng riêng tư ít tốn kém hơn, các nhà phát triển buộc phải xây dựng một Layer 1 mới đảm bảo quyền riêng tư như Manta Network và Penumbra hoặc xây dựng một bản tổng hợp chuyên dụng như Aztec, tập trung vào các trường hợp sử dụng chuyên biệt. Ví dụ, Penumbra và Renegade tập trung vào các giao dịch riêng tư. Bên cạnh đó, Aleo đang xây dựng một khung cho các ứng dụng riêng, bằng cách tạo ra một ngôn ngữ chuyên dụng Leo và các chương trình được viết bằng ngôn ngữ cấp cao tương thích với các mạch ZK tương ứng. Các tương tác của ứng dụng được thực hiện ngoài chuỗi, chỉ có bằng chứng được đăng trên chuỗi dưới dạng giao dịch riêng tư. Aztec đang đi theo một hướng tương tự, nhưng với tên gọi Ethereum Layer 2. Gần đây, họ đã thông báo rằng, họ đang tập trung vào việc tạo ra một bản tổng hợp riêng sử dụng Noir làm ngôn ngữ hợp đồng thông minh mặc định.