Đi vào bất kỳ cửa hàng tiện lợi Việt Nam nào, bạn sẽ thấy chúng ở quầy: thẻ cào điện thoại. Mỏng, có kích thước bằng bàn tay, giá trị vài nghìn đồng. Bạn cạo lớp màng bạc, đọc mã, và nạp tiền vào điện thoại trong vài giây. Không ai cân chúng. Không ai lo lắng về việc vận chuyển chúng. Thẻ cào quá nhỏ đến nỗi chi phí vận chuyển của nó thực sự là không có – giá trị nằm ở mã, chứ không phải ở giấy carton.
Hãy tưởng tượng rằng một bằng chứng mã hóa – bằng chứng toán học cho thấy rằng một zk-rollup xử lý 10.000 giao dịch chính xác, hoặc rằng báo cáo thu nhập của bạn là thật mà không tiết lộ các số liệu – có thể có kích thước tương tự. Đó là lời hứa đằng sau các bằng chứng nhỏ nhất trong mã hóa không biết (zero-knowledge cryptography): kích thước proof zk (ZK proof size) được đo bằng trăm byte, không phải kilobyte hoặc megabyte.
Một bằng chứng SNARK của Groth16 – công cụ chính của các đồng tiền bảo mật và zk-rollups – chỉ gồm 3 yếu tố nhóm, khoảng 128–200 byte. Đó chính xác là kích thước của mã in trên thẻ cào điện thoại. Nó được xác minh trong vài mili-giây và không tốn phí gì khi đăng lên chuỗi.
Bài viết này giải thích cách một bằng chứng trở nên nhỏ như vậy, tại sao kích thước bằng chứng là một giá (mỗi byte bạn gửi trên chuỗi sẽ tốn gas), và khi một bằng chứng nhỏ hơn một bằng chứng lớn – và khi nào nó không như vậy.
"Kích thước chứng minh" thực sự có nghĩa là gì
Mỗi bằng chứng không có thông tin là một tin nhắn: người cung cấp bằng chứng (prover) gửi dữ liệu cho người xác minh (verifier) để chứng minh "các phép tính đã được thực hiện chính xác" mà không tiết lộ các đầu vào bí mật. Kích thước bằng chứng đơn giản là số byte trong tin nhắn đó.
Ba điều tăng theo kích thước bằng chứng, và đó là lý do tại sao bài viết này quan trọng:
- Chi phí trên chuỗi. Trên Ethereum, việc gửi dữ liệu gọi có chi phí 16 gas cho mỗi byte không bằng 0 (EIP-2028). Một bằng chứng 200 byte có chi phí ~3.200 gas chỉ để gửi — rất đơn giản. Một bằng chứng 100 KB có chi phí ~1,6 triệu gas. Đối với một rollup, kích thước bằng chứng chính là chi phí giao dịch.
Những lời cuối: Kích thước của bằng chứng không phải là một chi tiết thẩm mỹ – đó là một dòng chi phí.
Groth16: Bằng chứng nằm trong một thẻ cào
Các bằng chứng thực tế nhỏ nhất đến từ Groth16, một mô hình SNARK được giới thiệu bởi Jens Groth vào năm 2016 và được sử dụng bởi Zcash, Tornado Cash và các phiên bản đầu tiên của zk-rollups.
Giải phẫu: chính xác 3 thành phần nhóm
Một chứng minh của Groth16 chính xác là ba thành phần nhóm, được đánh dấu theo quy tắc là A, B và C:
` Proof = (A, B, C)
A ∈ G₁ (32 bytes compressed) — encodes the witness B ∈ G₂ (64 bytes compressed) — encodes the witness (second group) C ∈ G₁ (32 bytes compressed) — enforces the computation constraints
Total: ~128 bytes raw, ~200 bytes with encoding overhead `
- A và C là hai điểm trên một nhóm đường elip (G₁); B là một điểm trên một nhóm khác (G₂). Sử dụng hai nhóm là điều làm cho việc xác minh dựa trên cặp trở nên hiệu quả.
Kích thước đến từ đâu
Sự nhỏ gọn của Groth16 là một lựa chọn thiết kế cố ý:
- Kích thước không đổi: kích thước chứng minh chỉ phụ thuộc vào phương án, không phụ thuộc vào tính toán. Một mạch lớn vẫn tạo ra 3 thành phần của nhóm.
Đó là lý do tại sao "zk proof 128 byte" không phải là lời quảng cáo - đó là kết quả toán học của phương án này.
Hình 1: Kích thước proof — thẻ cào (SNARK) vs cuốn sổ dày (STARK)
Sự đánh đổi: tại sao các bằng chứng STARK cồng kềnh
Nếu các bằng chứng Groth16 là những tờ vé số, thì các bằng chứng STARK là những cuốn sổ dày. Một bằng chứng STARK cho một phép tính lớn thường có kích thước 10–100 KB – lớn gấp 50 đến 500 lần so với bằng chứng Groth16.
Tại sao vậy? STARK đạt được điều mà Groth16 không làm được: sự minh bạch (không có nghi thức cài đặt đáng tin cậy, không có tham số bí mật để rò rỉ). Nó thực hiện điều này bằng cách thay thế cam kết dựa trên bí mật duy nhất bằng một cây Merkle của các phép tính đa thức (protocôl FRI). Bằng chứng phải bao gồm:
- Căn Merkle đảm bảo tra cứu lịch trình thực thi
Tất cả những điều đó lớn hơn nhiều so với ba yếu tố của nhóm. Sự mở rộng trong "STARK" đề cập đến việc bằng chứng (tính toán lớn) – nhưng bằng chứng chính lại lớn lên.
Vấn đề về kích thước, nói thật
| Tài sản | Groth16 SNARK | STARK (FRI) |
|---|---|---|
| Kích thước chứng minh | ~128-200 byte | 10-100 KB+ |
| Xác minh | ~1-5 ms (3 cặp) | ~10-50 ms (bảo mật dựa trên hash) |
| Cài đặt đáng tin cậy | Có | Không |
| Kháng cự lượng tử | Không (cặp đôi) | Có (hashing) |
Số liệu nhỏ ≠ số liệu tốt hơn. STARK lớn hơn vì đã loại bỏ cấu hình đáng tin cậy. Kích thước số liệu là một trục cân bằng, chứ không phải là giải pháp tuyệt đối. Một số liệu 200 byte với cấu hình đáng tin cậy có thể là lựa chọn sai nếu nghi lễ cấu hình không thể chấp nhận được.
Tại sao kích thước có ý nghĩa trên chuỗi: toán học gas
Kinh nghiệm thực tế về kích thước của các mẩu chứng minh là xác minh trên chuỗi. Hãy làm phép tính.
Dữ liệu gọi: 16 bit khí mỗi byte
Trên Ethereum, mỗi byte không bằng 0 của calldata có giá trị 16 gas (EIP-2028). Một chứng minh phải được gửi như calldata cho hợp đồng thông minh đang kiểm tra:
` Proof size Calldata cost (at ~10 gwei, ETH ≈ $2,000) ──────────────────────────────────────────────────────────── 128 bytes ~2,048 gas ≈ $0.04 (a scratch card!) 200 bytes ~3,200 gas ≈ $0.06 1 KB ~16,000 gas ≈ $0.32 100 KB (STARK) ~1.6M gas ≈ $32 (a notebook) `
Đó là sự khác biệt giữa một khoản phí mà bà ngoại của bạn không nhận ra và một khoản phí ăn hết lợi nhuận của toàn bộ khoản thu.
Xác minh: một nhãn giá khác
Bên cạnh việc giao hàng, hợp đồng phải kiểm tra bằng chứng:
- Groth16 on-chain: ~200k gas (~$4 với cùng tỷ lệ) – sử dụng các precompiles của Ethereum cho các cặp.
Kết hợp lại, xác minh một bằng chứng Groth16 trên Ethereum tốn khoảng ~$4-5. Xác minh một bằng chứng STARK nguyên thủy tốn ~$130. Đối với việc đăng bằng chứng trong một chuỗi mỗi vài phút, đây là một quyết định kinh doanh quan trọng.
Tại sao rollups được nén
Một zk-rollup tích hợp hàng nghìn giao dịch thành một bằng chứng. Nếu bằng chứng đó có kích thước 100 KB, chỉ cần dữ liệu gọi sẽ khiến rollup trở nên không hiệu quả. Do đó, các rollup sản xuất sử dụng lối dẫn hỗn hợp:
`
- Prove the batch with STARK (transparent, scalable prover)
- Compress the STARK into a SNARK (recursive proof composition)
- Post the tiny SNARK (~200 bytes) on-chain — the scratch card
`
Điều này chính xác là những gì StarkNet (SHARP → Groth16) và zkSync Era (STARK → PLONK) làm. Họ nhận được bằng chứng minh minh bạch của STARK và bằng chứng thanh toán dạng thẻ cào của SNARK.
Hình 2: Phép toán gas — vì sao kích thước proof quan trọng on-chain
Hình 3: Giải phẫu proof Groth16 — 3 phần tử nhóm (~128-200 byte)
Khi kích thước chứng minh quan trọng nhất
Kích thước chứng minh là một điều kiện, và các điều kiện chỉ quan trọng trong môi trường có các hạn chế. Đây là lúc nó quyết định mọi thứ:
Kích thước có ý nghĩa:
- Sự giải quyết trên chuỗi — dữ liệu gọi + gas xác minh chiếm ưu thế (xem công thức trên).
- Các khách hàng di động và nhẹ — một bằng chứng 128 byte được đồng bộ hóa ngay lập tức và được xác minh trong vài micro giây trên một điện thoại thấp cấp.
Kích thước ít quan trọng hơn:
- Xác minh ngoài chuỗi — một máy chủ có thể xác minh một STARK có kích thước 100 KB một cách dễ dàng.
Mô hình tư duy
Hỏi: "Đâu là nơi được kiểm tra bằng chứng này và nó được kiểm tra bao nhiêu lần?" Nếu câu trả lời là "trên chuỗi, thường xuyên" → các bằng chứng nhỏ sẽ chiến thắng. Nếu là "ngoài chuỗi, hiếm khi" → kích thước không quan trọng và sự minh bạch/kháng cự lượng tử có thể quan trọng hơn.
Cơ chế quyết định vé xổ số
| Cơ sở | Lựa chọn tốt nhất | Tại sao |
|---|---|---|
| zk-rollup được định giá trên Ethereum mỗi vài phút | SNARK (Groth16/PLONK) | Thẻ scratch-card + xác minh nhanh |
| Tiền điện tử bảo mật (tương tự Zcash) | SNARK | Các bằng chứng nhỏ trong các giao dịch bình thường |
| Chạy VM lớn, không cho phép thiết lập tin cậy | STARK (+ wrapper SNARK cho giao dịch) | Xác minh rõ ràng, nén ở cuối |
| Các thư viện dài hạn chống lại các mối đe dọa về lượng tử | STARK | An ninh dựa trên hash |
| Ứng dụng tiêu dùng dành cho thiết bị di động | SNARK | Tích hợp tức thì, băng thông rất nhỏ |
Hình 4: Bảng so sánh kích thước proof ZK — SNARK vs STARK
FAQ: Câu hỏi của bạn được trả lời
Câu hỏi: Một bằng chứng ZK thực sự chỉ có 128 byte không?
A: Một bằng chứng Groth16 bao gồm chính xác 3 thành phần nhóm: ~128 byte nguyên liệu, ~200 byte sau khi được mã hóa thành một giao dịch. Có — đó chính là kết quả thực tế của phương án này, và nó không phụ thuộc vào kích thước của phép tính đang được chứng minh.Câu hỏi: Tại sao mọi người nói "zk proof 128 byte" thay vì các số lớn hơn?
A: Vì Groth16 (SNARK được triển khai rộng rãi nhất) tạo ra ~128 byte. Các phương pháp khác – PLONK (~1-2 KB), Halo2 (~5-10 KB), STARK (10-100 KB) – lớn hơn vì chúng trao đổi kích thước chứng minh cho các thuộc tính khác như cấu hình chung hoặc trong suốt.Câu hỏi: Lớn hơn có nghĩa là an toàn hơn không?
A: Không. An ninh đến từ các giả định cơ bản (cường độ kết hợp cho SNARK, khả năng chống va chạm hash cho STARK), không phải từ số byte. STARK lớn hơn về tính minh bạch, không phải về an ninh.Câu hỏi: Giá của kích thước proof trên Ethereum là bao nhiêu?
A: Mỗi byte không bằng 0 sẽ tốn 16 gas. Một bằng chứng Groth16 có kích thước khoảng 200 byte sẽ tốn khoảng 3.200 gas để gửi và khoảng 200.000 gas để xác minh (khoảng 4-5 USD tổng cộng). Một STARK có kích thước 100 KB sẽ tốn khoảng 1,6 triệu gas để gửi và khoảng 5 triệu gas để xác minh (khoảng 130 USD+).Câu hỏi: Zk-rollups thực sự sử dụng các bằng chứng nhỏ?
A: Có. StarkNet và zkSync Era sử dụng STARKs để chứng minh nhưng được nén thành Groth16/PLONK SNARKs trước khi đăng trên chuỗi. Bằng chứng trên chuỗi – đó là thẻ cào – là thứ mà người dùng và các hợp đồng L1 nhìn thấy.Câu hỏi: Làm sao để một bằng chứng nhỏ luôn tốt hơn?
A: Không. Một chứng minh Groth16 nhỏ đòi hỏi một cấu hình đáng tin cậy. Nếu bạn không thể chấp nhận nghi lễ đó (hoặc cần chống lại lượng tử), chứng minh STARK lớn hơn là lựa chọn phù hợp. Chọn dựa trên nơi chứng minh được xác minh và thời gian thường xuyên.Tóm tắt: Nguyên tắc của vé xổ số
Một thẻ cào điện thoại hoạt động vì nó nhỏ đến mức không có giá trị để vận chuyển và nhanh chóng để đổi ngay tại chỗ. Các bằng chứng ZK hoạt động theo cách tương tự: kích thước proof zk quyết định việc chứng minh một điều gì đó có phải là một sai số trong ngân sách phí của bạn hay là một mục chi tiêu phá vỡ sản phẩm của bạn.
Các bằng chứng nhỏ nhất – 3 yếu tố nhóm của Groth16, khoảng 128–200 byte – tương đương với một thẻ cào trong lĩnh vực mật mã. Chúng có giá thành thấp, dễ kiểm tra ngay lập tức và chính vì vậy mà zk-rollups có thể giải quyết hàng nghìn giao dịch cho tiền xu. Các bằng chứng STARK lớn và minh bạch có giá trị khi sự tin tưởng và khả năng chống lại lượng tử quan trọng hơn byte.
Khi bạn tiếp tục nạp tiền vào điện thoại bằng thẻ cào lần sau, hãy nhớ rằng mã trên thẻ đó có kích thước tương đương với một bằng chứng không có kiến thức – và bằng chứng đó có thể là thứ nhỏ nhất có giá trị trên blockchain.
Số từ: ~1,700 | Từ khóa chính: "kích thước proof zk" | Từ khóa phụ: "zk proof 128 byte", "snark proof size"
