Every Vietnamese student knows the feeling of submitting a test paper and waiting for the teacher to grade it. But imagine this: the teacher gives the score without reading a single word on the paper. Strange, isn’t it? That’s the core idea of Zero Knowledge Proof (ZKP) – an algorithm that allows someone to prove “I know the answer” without revealing what the answer is. In cryptographic terms, the prover convinces the verifier without revealing the secret. If you’re wondering what a verifier prover is or what a basic ZKP is, this article uses the analogy of a teacher grading a paper without reading it to explain the zero knowledge proof concept in plain language.
1. Ba vai trò: học sinh, giáo viên và bí mật
Trong lớp học ZKP, có ba nhân vật chính – mỗi người giữ một phần của bức tranh:
| Vai trò của ZKP | Nhân vật lớp học | Nhiệm vụ |
|---|---|---|
| Prover (Người chứng minh) | Học sinh giỏi | Biết đáp án (làm chứng), viết bài làm, tạo ra "bằng chứng" |
| Người kiểm chứng (Verifier) | Người thầy | Không biết câu trả lời, chỉ xem "kiểm tra", đưa ra quyết định Đạt/Không đạt |
| Chứng từ/Bí mật | Kiến thức thực sự của học sinh | Điều mà học sinh chỉ biết, không viết ra giấy, nhưng là gốc rễ của mọi thứ |
Key point: Giáo viên không bao giờ thấy đáp án. Giáo viên chỉ thấy một "chứng minh toán học" - một chuỗi ký tự có vẻ vô nghĩa - từ đó giáo viên chắc chắn rằng: "Sinh viên này thực sự biết."
Hình 1: Ba vai trò trong ZKP — Prover, Verifier, Witness
2. Ba tính chất: Cuộc thi có quy tắc ngắt nghèo
Mọi ZKP phải đáp ứng ba tính chất – giống như một kỳ thi công bằng phải có quy tắc:
2.1 Tính đầy đủ – "Sinh viên giỏi luôn đạt điểm cao"
Nếu học sinh thực sự biết (có chứng nhân hợp lệ) và thực hiện theo quy trình, giáo viên luôn cho đậu. Không có trường hợp học sinh giỏi nhưng bị trượt do lỗi hệ thống.2.2 Tính đúng đắn – "Học sinh không thể lười biếng khi không biết"
Một học sinh không biết đáp án (không có witness) muốn lừa người thầy. Xác suất người thầy bị lừa thấp đến mức có thể bỏ qua (negligible). Chúng ta thử 100 lần, 1000 lần — xác suất trượt vẫn gần như 0.2.3 Zero-Knowledge (Không tiết lộ kiến thức) – "Thầy chỉ biết Đạt/Không đạt, không biết học sinh nghĩ gì"
Sau khi chấm bài, giáo viên chỉ học được một bit: "sinh viên này biết". Giáo viên không học được đáp án cụ thể, không học được quy trình suy nghĩ, không học được tài liệu mà sinh viên tham khảo. Kiến thức của sinh viên an toàn tuyệt đối.
Hình 2: Ba tính chất bắt buộc của mọi ZKP
3. Từ kỳ thi tương tác đến kỳ thi "mang về nhà"
3.1 ZKP tương tác – "Thầy hỏi, học sinh trả lời, nhiều vòng"
Ban đầu, ZKP là tương tác: giáo viên đặt câu hỏi (challenge), học sinh trả lời (response), lặp lại nhiều vòng. Mỗi vòng giáo viên càng tin hơn. Nhược điểm: giáo viên và học sinh phải online cùng lúc — không phù hợp cho blockchain.3.2 ZKP không tương tác (NIZK) – "Kỳ thi mang về nhà, nộp một lần"
Fiat-Shamir transform biến kỳ thi tương tác thành một lần nộp: học sinh tự tạo một thách thức từ hàm băm (hash) của bài làm, trả lời, nộp gói duy nhất. Người giáo viên kiểm tra một lần, xong. Đây là dạng được sử dụng trong blockchain, ZK-rollup, ZK-SNARK, ZK-STARK.
Hình 3: Interactive ZKP vs Non-Interactive ZKP (NIZK) — Fiat-Shamir biến đổi
4. Cài đặt đáng tin cậy: Người tạo đề có thể gian lận không?
Một số ZKP (đặc biệt là ZK-SNARK kiểu Groth16) cần trusted setup – một buổi "sinh tham số chung" (ceremony) trước khi sử dụng.
Comparison to classroom learning: Just like the exam setter (the teacher) knows the answers in advance. If the setter lies (keeps the "toxic waste" — toxic waste), they can create fake assignments that make the teacher believe that the student is good.
- ZK-SNARK (Groth16): Cần thiết lập tin cậy cho mỗi mạch (circuit). Rủi ro nếu nghi lễ bị tấn công.
Lời khuyên cho người mới: Nếu nghe "trusted setup" — hãy nhớ "người ra đề thi". Hỏi: nghi lễ có công khai, đa thành viên, có kiểm toán không?
Hình 4: Trusted Setup rủi ro — SNARK cần setup, STARK không cần
5. Ứng dụng thực tế: ZKP đang được sử dụng ở đâu?
| Ngành nghề | Vai trò của ZKP | Các ví dụ về dự án |
|---|---|---|
| ZK-Rollup (tăng cường L2) | Prover nén hàng nghìn giao dịch thành 1 proof, Verifier trên chuỗi kiểm tra | zkSync, Starknet, Scroll, Linea |
| Tiền điện tử bảo mật | Xác minh số dư đủ mà không tiết lộ số dư/người nhận | Zcash, Aleo |
| ZK-Identity | Khẳng định "tôi > 18 tuổi" mà không tiết lộ ngày sinh | Worldcoin, zkPass |
| ZK-ML | Hãy chứng minh mô hình AI hoạt động đúng mà không tiết lộ trọng số | zkCNN, Giza |
| Cầu nối/Interop | Hãy chứng minh trạng thái chain A đúng để chain B tin | zkBridge, Herodotus |
6. Tại sao người Việt Nam nên hiểu về ZKP ngay từ hôm nay?
Việt Nam có truyền thống "học theo thầy, không theo bạn" – tôn trọng người thầy, nhưng cũng thực tế. ZKP mang lại những gì mà xã hội chúng ta đang tìm kiếm:
- Transparency without privacy leaks: Similar to the public ledger (blockchain) but with personal privacy (ZKP).
- Verification without trusted intermediaries: No banks, no notaries — mathematics does the scoring.
- Job opportunities: ZKP developers are one of the highest-paid positions in crypto (usually $150k–$300k/year). Learning ZKP is an investment in your future.
7. Tóm tắt nhanh: Verifier Prover là gì?
| Khái niệm | Nghĩa đơn giản | Ví dụ về lớp học |
|---|---|---|
| Từ ngữ | Người tạo chứng minh | Học sinh viết bài |
| Kiểm tra | Người kiểm tra chứng minh | Người giáo viên đánh giá |
| Người chứng kiến | Chỉ Prover biết bí mật đó | Kiến thức thực của học sinh |
| Bằng chứng | Dãy ký tự gửi cho Verifier | "Chứng minh toán học" trên bài |
| Tính toàn vẹn | Người biết luôn có thể chứng minh được | Học sinh giỏi luôn đạt điểm cao |
| An toàn | Người không biết không thể lừa được | Sinh viên kém không thể lười biếng |
| Không biết thông tin | Verifier không học được bí mật | Thầy chỉ biết Đạt/Không đạt |
8. Các câu hỏi thường gặp (FAQ)
Verifier prover là gì? Có khác nhau không?
Điều này hoàn toàn khác biệt. Prover (người chứng minh) nắm được bí mật và tốn nhiều công sức để tạo proof. Verifier (người kiểm chứng) không biết bí mật, chỉ chạy thuật toán đơn giản để chấp nhận/giảm nhẹ. Sự bất đối xứng này là lý do tại sao ZKP phù hợp với blockchain: verifier chạy trên chuỗi (rẻ), prover chạy ngoài chuỗi (đắt).ZKP cơ bản khác chữ ký số (digital signature) như thế nào?
Chữ ký số chứng minh "tôi ký tài liệu này" (giấu khóa riêng nhưng tiết lộ thông điệp). ZKP chứng minh "tôi biết x sao cho f(x)=y" mà không tiết lộ x, không tiết lộ y (tùy theo thiết kế). ZKP mạnh hơn: có thể chứng minh tính chất phức tạp (ví dụ: "số dư > 1000" mà không tiết lộ số dư chính xác).Khái niệm Zero knowledge proof có nghĩa là "bằng chứng không có kiến thức"?
Tên gọi gây hiểu lầm. "Zero-knowledge" = verifier không nhận được kiến thức mới về witness. Prover vẫn có kiến thức. Tên chính xác hơn: "bằng chứng không tiết lộ kiến thức" — verifier học được 0 bit về witness.ZK-SNARK và ZK-STARK khác nhau ở điểm nào?
| Đặc điểm | ZK-SNARK | ZK-STARK |
|---|---|---|
| Cài đặt đáng tin cậy | Cần (trừ universal) | Không cần |
| Kích thước chứng minh | Thông thường (~200 byte) | Lớn (~50-100 KB) |
| Thời gian xác minh | Rất nhanh | Tốc độ nhanh hơn SNARK ở quy mô lớn |
| Kháng lượng tử | ❌ (các cặp dựa trên) | ✅ (bảo mật dựa trên hash) |
| Dùng ở đâu | zkSync, Di chuyển | Starknet, Polygon Miden |
Để học ZKP, cần có nền tảng gì?
- Toán học: toán học mô-đun, các trường hữu hạn, cam kết đa thức, đường cong elip (cho SNARK)
- Mã: Rust (RISC Zero, SP1), TypeScript (o1js), Go (gnark), Cairo (Starknet)
- Công cụ: Circom, Halo2, Plonky3, RISC Zero, SP1
- Khuyến nghị: Hãy bắt đầu bằng o1js (TypeScript) hoặc Circom — dễ tiếp cận nhất cho các nhà phát triển web.
Bài viết thuộc series "Blockchain cơ bản cho người Việt" — giải thích công nghệ phức tạp bằng hình ảnh đời thường. Từ khóa: verifier prover là gì, zkp cơ bản, zero knowledge proof khái niệm.
