
Hướng dẫn nhập môn bằng chứng không kiến thức: Lịch sử phát triển, ứng dụng và nguyên lý cơ bản
Tuyển chọn TechFlowTuyển chọn TechFlow

Hướng dẫn nhập môn bằng chứng không kiến thức: Lịch sử phát triển, ứng dụng và nguyên lý cơ bản
Tổng hợp lại những thay đổi ở khía cạnh lý thuyết và ứng dụng của ZKP từ đầu đến nay.
Tác giả: HashKey Capital
Hiện nay trong ngành công nghiệp blockchain, các dự án bằng chứng không kiến thức (ZKP) đang tăng trưởng với tốc độ đáng kinh ngạc, đặc biệt là sự trỗi dậy của ứng dụng ZKP trong hai lĩnh vực mở rộng quy mô và bảo mật riêng tư, khiến chúng ta tiếp xúc với vô số dự án bằng chứng không kiến thức đa dạng. Do bản chất mang nặng tính toán học của ZKP, đối với những người yêu thích tiền mã hóa, việc tìm hiểu sâu về ZK trở nên khó khăn hơn rất nhiều. Vì vậy, chúng tôi cũng mong muốn hệ thống lại một số thay đổi ở cấp độ lý thuyết và ứng dụng của ZKP, cùng độc giả khám phá ảnh hưởng và giá trị đối với ngành crypto —— thông qua một loạt báo cáo để cùng nhau học tập, đồng thời đây cũng là bản tổng hợp suy nghĩ của nhóm nghiên cứu HashKey Capital. Bài viết này là phần đầu tiên trong chuỗi báo cáo, chủ yếu giới thiệu lịch sử phát triển, ứng dụng và một số nguyên lý cơ bản của ZKP.
1. Lịch sử của bằng chứng không kiến thức
Hệ thống bằng chứng không kiến thức hiện đại lần đầu tiên xuất phát từ bài báo do Goldwasser, Micali và Rackoff đồng tác giả: The Knowledge Complexity of Interactive Proof Systems (gọi tắt là GMR85), được đề xuất vào năm 1985 và công bố vào năm 1989. Bài báo này chủ yếu giải thích rằng trong một hệ thống tương tác, sau K vòng trao đổi, cần bao nhiêu kiến thức được trao đổi để chứng minh một khẳng định (statement) là đúng. Nếu có thể làm cho lượng kiến thức trao đổi bằng không, thì được gọi là bằng chứng không kiến thức. Trong đó, người chứng minh (prover) được giả định có nguồn lực vô hạn, trong khi người xác minh (verifier) chỉ có nguồn lực hữu hạn. Vấn đề của hệ thống tương tác là bằng chứng không hoàn toàn được chứng minh theo nghĩa toán học, mà chỉ đúng theo xác suất (mặc dù xác suất sai rất nhỏ, khoảng 1/2^n).
Do đó, hệ thống tương tác không hoàn hảo, chỉ có tính đầy đủ xấp xỉ, còn hệ thống phi tương tác (NP) ra đời sau đó lại có tính đầy đủ tuyệt đối, trở thành lựa chọn lý tưởng cho hệ thống bằng chứng không kiến thức.
Các hệ thống bằng chứng không kiến thức đầu tiên đều thiếu hiệu quả và khả năng sử dụng, vì vậy chúng chỉ tồn tại ở mức lý thuyết trong một thời gian dài, đến gần 10 năm trở lại đây mới bắt đầu phát triển mạnh mẽ. Cùng với việc mật mã học trở thành môn học trọng tâm trong lĩnh vực crypto, bằng chứng không kiến thức dần bước lên sân khấu, trở thành một hướng đi then chốt. Đặc biệt, việc phát triển một giao thức bằng chứng không kiến thức phổ quát, phi tương tác và kích thước bằng chứng hữu hạn là một trong những hướng nghiên cứu quan trọng nhất.
Về cơ bản, bằng chứng không kiến thức là sự đánh đổi giữa tốc độ tạo bằng chứng, tốc độ xác minh và kích thước bằng chứng. Giao thức lý tưởng là tạo bằng chứng nhanh, xác minh nhanh và kích thước bằng chứng nhỏ.
Bước đột phá quan trọng nhất trong bằng chứng không kiến thức là bài báo năm 2010 của Groth: Short Pairing-based Non-interactive Zero-Knowledge Arguments, đây cũng là nền tảng lý thuyết tiên phong quan trọng nhất cho nhóm zk-SNARK trong ZKP.
Tiến triển ứng dụng quan trọng nhất của bằng chứng không kiến thức là hệ thống bằng chứng không kiến thức được Z-cash sử dụng vào năm 2015, đạt được bảo vệ quyền riêng tư cho giao dịch và số tiền. Sau đó, nó phát triển kết hợp zk-SNARK với hợp đồng thông minh, giúp zk-SNARK tiến vào các kịch bản ứng dụng rộng rãi hơn.
Trong giai đoạn này, một số thành quả học thuật quan trọng bao gồm:
-
Pinocchio (PGHR13) năm 2013: Pinocchio: Nearly Practical Verifiable Computation, rút ngắn thời gian tạo và xác minh bằng chứng đến mức có thể áp dụng thực tế, cũng là giao thức nền tảng mà Zcash sử dụng.
-
Groth16 năm 2016: On the Size of Pairing-based Non-interactive Arguments, tinh gọn kích thước bằng chứng và cải thiện hiệu quả xác minh, hiện là thuật toán cơ sở ZK được ứng dụng rộng rãi nhất.
-
Bulletproofs (BBBPWM17) năm 2017: Bulletproofs: Short Proofs for Confidential Transactions and More, đề xuất thuật toán Bulletproof – loại bằng chứng không kiến thức phi tương tác cực ngắn, không cần thiết lập tin cậy, sáu tháng sau được ứng dụng vào Monero – một ví dụ điển hình về chuyển đổi nhanh chóng từ lý thuyết sang thực tiễn.
-
zk-STARKs (BBHR18) năm 2018: Scalable, transparent, and post-quantum secure computational integrity, đề xuất giao thức thuật toán ZK-STARK không cần thiết lập tin cậy, đây cũng là một hướng phát triển nổi bật khác của ZK hiện nay, trên nền tảng này đã hình thành nên dự án ZK hàng đầu StarkWare.
Các phát triển khác như PLONK, Halo2 cũng là những bước tiến cực kỳ quan trọng, góp phần cải tiến zk-SNARK ở một số khía cạnh nhất định.
2. Tổng quan ứng dụng của bằng chứng không kiến thức
Hai ứng dụng phổ biến nhất của bằng chứng không kiến thức là bảo vệ riêng tư và mở rộng quy mô. Ban đầu, cùng với các giao dịch riêng tư và một vài dự án nổi bật như Zcash và Monero ra mắt, giao dịch riêng tư từng trở thành một phân nhánh rất quan trọng. Tuy nhiên, do nhu cầu về giao dịch riêng tư không nổi bật như kỳ vọng của giới chuyên môn, các dự án tiêu biểu thuộc nhóm này bắt đầu dần lui về hàng ngũ thứ hai, thứ ba (nhưng không phải biến mất khỏi sân khấu). Trong khi đó, nhu cầu mở rộng quy mô ngày càng trở nên cấp thiết. Khi Ethereum 2.0 (nay đổi tên thành consensus layer) chuyển sang chiến lược lấy rollup làm trung tâm vào năm 2020, dòng sản phẩm ZK chính thức quay trở lại tầm ngắm của giới công nghiệp, trở thành tâm điểm chú ý.
Giao dịch riêng tư: Đã có nhiều dự án thực hiện giao dịch riêng tư, bao gồm Zcash dùng SNARK, Tornado, Monero dùng bulletproof, và Dash. Về mặt kỹ thuật, Dash không sử dụng ZKP mà dùng hệ thống trộn tiền đơn giản và thô sơ, chỉ có thể ẩn địa chỉ chứ không ẩn được số tiền, nên sẽ không đề cập chi tiết ở đây.
Các bước giao dịch zk-SNARKs được Zcash áp dụng như sau:

Nguồn: Demystifying the Role of zk-SNARKs in Zcash
-
Giai đoạn System setup tạo ra khóa chứng minh (mã hóa đa thức chứng minh) và khóa xác minh, thông qua hàm KeyGen
-
Giai đoạn CPA sử dụng phương pháp mã hóa ECIES (Elliptic Curve Integrated Encryption Scheme) để tạo khóa công khai và khóa riêng
-
Giai đoạn Minting Coins, tạo số lượng tiền mới, địa chỉ công khai và commitment của tiền
-
Giai đoạn Pouring, tạo bằng chứng zk-SNARK, bằng chứng được thêm vào sổ cái giao dịch pour
-
Giai đoạn Verification, người xác minh kiểm tra khối lượng giao dịch Mint và Pour có đúng hay không
-
Giai đoạn Receiving, người nhận nhận tiền. Nếu muốn sử dụng tiền đã nhận, tiếp tục gọi Pouring để tạo bằng chứng zk-SNARK, lặp lại các bước 4-6 để hoàn tất giao dịch.
Việc Zcash sử dụng bằng chứng không kiến thức vẫn còn hạn chế, vì nó dựa trên UTXO, nên chỉ che giấu một phần thông tin giao dịch chứ không thực sự che phủ hoàn toàn. Ngoài ra, do thiết kế mạng lưới riêng biệt dựa trên Bitcoin, việc mở rộng kết nối với các ứng dụng khác trở nên khó khăn. Tỷ lệ sử dụng thực tế tính năng shielding (tức giao dịch riêng tư) dưới 10%, điều này cho thấy giao dịch riêng tư chưa thực sự thành công trong việc mở rộng (theo dữ liệu năm 2022).
Tornado sử dụng một nhóm trộn tiền lớn duy nhất, mang tính phổ quát hơn và hoạt động trên mạng Ethereum - một nền tảng "đã được kiểm chứng qua thời gian". Về bản chất, Torndao là một nhóm trộn tiền sử dụng zk-SNARK, thiết lập tin cậy dựa trên bài báo Groth16. Các tính năng Tornado Cash cung cấp bao gồm:
-
Chỉ những đồng tiền đã gửi vào mới có thể rút ra
-
Không có đồng tiền nào có thể bị rút hai lần
-
Quá trình chứng minh và thông báo hủy tiền (Nullifier) được liên kết chặt chẽ, cùng một bằng chứng nhưng Nullifier khác nhau sẽ không cho phép rút tiền
-
Đảm bảo an ninh ở mức 126-bit, không bị giảm cấp khi kết hợp
Vitalik từng đề cập rằng so với mở rộng quy mô, riêng tư tương đối dễ thực hiện hơn; nếu một số giao thức mở rộng có thể thành công, thì riêng tư hầu như sẽ không còn là vấn đề.
Mở rộng quy mô: ZK có thể mở rộng trên mạng lớp một như Mina, hoặc trên mạng lớp hai, tức zk-rollup. Ý tưởng về ZK rollup có lẽ bắt nguồn từ bài đăng năm 2018 của Vitalik: On-chain scaling to potentially ~500 tx/sec through mass tx validation.
ZK-rollup có hai vai trò: Sequencer và Aggregator. Sequencer chịu trách nhiệm đóng gói giao dịch, Aggregator chịu trách nhiệm hợp nhất lượng lớn giao dịch, tạo ra một rollup và sinh ra một bằng chứng SNARK (hoặc bằng chứng không kiến thức dựa trên thuật toán khác). Bằng chứng này sẽ được so sánh với trạng thái trước đó trên Layer1, từ đó cập nhật cây Merkle của Ethereum và tính toán cây trạng thái mới.

Nguồn: Polygon
Ưu và nhược điểm của ZK rollup:
-
Ưu điểm: phí thấp, không bị tấn công kinh tế như OP, không cần trì hoãn giao dịch, có thể bảo vệ riêng tư, đạt tính cuối cùng nhanh chóng
-
Nhược điểm: việc tạo bằng chứng ZK đòi hỏi tính toán lớn, vấn đề an toàn (SNARK cần thiết lập tin cậy), không chống được tấn công lượng tử (SNARK thì không, nhưng STARK có thể), thứ tự giao dịch có thể bị thay đổi

Nguồn: Nghiên cứu Ethereum
Dựa trên tính sẵn có dữ liệu và phương pháp chứng minh, Starkware đưa ra một sơ đồ phân loại kinh điển cho L2 (lớp Volition cho phép chọn lựa giữa dữ liệu nằm trên chuỗi hay ngoài chuỗi):

Nguồn: Starkware
Hiện tại, các dự án ZK rollup cạnh tranh nhất trên thị trường bao gồm: StarkNet của Starkware, zkSync của Matterlabs, Aztec connect của Aztec, Hermez và Miden của Polygon, Loopring, Scroll, v.v.
Về cơ bản, đường lối kỹ thuật xoay quanh lựa chọn giữa SNARK (và các phiên bản cải tiến) và STARK, cũng như hỗ trợ EVM (bao gồm tương thích hay giống hệt).
-
Aztec phát triển giao thức SNARK phổ quát - giao thức Plonk, Aztec3 đang chạy có thể hỗ trợ EVM, tuy nhiên ưu tiên riêng tư hơn là tương thích EVM
-
Starnet sử dụng zk-STARK, một dạng zkp không cần thiết lập tin cậy, nhưng hiện tại chưa hỗ trợ EVM, có trình biên dịch và ngôn ngữ phát triển riêng
-
zkSync cũng dùng plonk, hỗ trợ EVM. zkSync 2.0 tương thích EVM, có zkEVM riêng
-
Scroll, một ZK rollup tương thích EVM, đội ngũ cũng là đóng góp viên quan trọng trong dự án zkEVM của Quỹ Ethereum
Thảo luận ngắn về vấn đề tương thích EVM:
Việc tương thích giữa hệ thống ZK và EVM luôn là vấn đề đau đầu, các dự án thường phải lựa chọn giữa hai bên. Những dự án nhấn mạnh ZK có thể xây dựng máy ảo riêng trong hệ thống của mình, kèm theo ngôn ngữ ZK và trình biên dịch riêng, nhưng điều này làm tăng độ khó học tập cho nhà phát triển, đồng thời do phần lớn không mã nguồn mở, dễ trở thành "hộp đen". Hiện nay trong ngành thường có hai lựa chọn: một là hoàn toàn tương thích opcode của Solidity, hai là thiết kế một máy ảo mới vừa thân thiện với ZK vừa tương thích Solidity. Ban đầu, giới công nghiệp không nghĩ rằng sự tích hợp này có thể diễn ra nhanh đến vậy, nhưng nhờ sự lặp lại nhanh chóng của công nghệ trong 1-2 năm gần đây, mức độ tương thích EVM đã được nâng lên một tầm cao mới, các nhà phát triển có thể di chuyển gần như liền mạch (từ chuỗi chính Ethereum sang ZK rollup), đây là một bước tiến đáng khích lệ, sẽ ảnh hưởng lớn đến hệ sinh thái phát triển và格局 cạnh tranh của ZK. Chúng tôi sẽ thảo luận kỹ hơn về vấn đề này trong các báo cáo sắp tới.
3. Nguyên lý cơ bản của zk-SNARK
Goldwasser, Micali và Rackoff đã đề xuất ba tính chất của bằng chứng không kiến thức:
-
Tính toàn vẹn (Completeness): Mọi tuyên bố hợp lệ có bằng chứng hợp lệ đều có thể được xác minh bởi người xác minh
-
Tính âm thanh (Soundness): Mọi tuyên bố không hợp lệ không nên được xác minh bởi người xác minh
-
Tính không kiến thức (Zero-knowledgeness): Quá trình xác minh là không kiến thức
Do đó, để hiểu ZKP, chúng ta bắt đầu từ zk-SNARK, vì nhiều ứng dụng blockchain hiện nay đều khởi nguồn từ SNARK. Trước tiên, hãy tìm hiểu về zk-SNARK.
zk-SNARK có nghĩa là: Bằng chứng không kiến thức (zh-SNARK) là zero-knowledge Succinct Non-interactive ARguments of Knowledge.
-
Zero Knowledge: quá trình chứng minh không tiết lộ thông tin thừa
-
Succinct: kích thước bằng chứng nhỏ
-
Non-interactive: quá trình phi tương tác
-
ARguments: đảm bảo độ tin cậy về mặt tính toán, tức người chứng minh có giới hạn sức mạnh tính toán không thể làm giả bằng chứng, nhưng người chứng minh có sức mạnh tính toán vô hạn thì có thể làm giả
-
of Knowledge: người chứng minh không thể xây dựng được tham số và bằng chứng nếu không biết thông tin hợp lệ
-
Đối với người chứng minh, việc xây dựng một bộ tham số và bằng chứng là không thể nếu không biết bằng chứng (Witness), ví dụ như đầu vào của hàm băm hoặc đường dẫn đến một nút Merkle-tree xác định.
Nguyên lý chứng minh zk-SNARK của Groth16 như sau:

Nguồn: https://learnblockchain.cn/article/3220
Các bước như sau:
-
Chuyển đổi vấn đề thành mạch điện
-
Biến mạch thành dạng R1CS (Rank-1 Constraint System)
-
Chuyển đổi R1CS thành dạng QAP (Chương trình Số học Bậc hai)
-
Thiết lập trusted setup, tạo các tham số ngẫu nhiên, bao gồm PK (khóa chứng minh), VK (khóa xác minh)
-
Tạo và xác minh bằng chứng zk-SNARK
Bài tiếp theo, chúng tôi sẽ bắt đầu nghiên cứu nguyên lý và ứng dụng của zk-SNARK, phân tích sự phát triển của ZK-SNARK thông qua một vài ví dụ, đồng thời khám phá mối quan hệ giữa nó với zk-STARK.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News














