Các điểm chính

  • Bằng chứng không kiến thức cho phép một bên chứng minh một tuyên bố là đúng với một bên khác mà không tiết lộ bất kỳ dữ liệu nền tảng nào.

  • zk-SNARK là một loại giao thức tạo bằng chứng không kiến thức được sử dụng trong lĩnh vực tiền mã hóa để xác minh thông tin, chẳng hạn như số dư tài khoản, mà không tiết lộ các chi tiết riêng tư.

  • Binance sử dụng zk-SNARK kết hợp với cây Merkle để cho phép người dùng xác minh rằng số dư của họ được đưa vào tổng số PoR (Proof of Reserves) mà không tiết lộ dữ liệu của từng tài khoản riêng lẻ.

  • Ngoài dự trữ của sàn giao dịch, bằng chứng ZK ngày càng được dùng trong ZK-rollups, xác thực danh tính và các hệ thống bỏ phiếu trên toàn bộ hệ sinh thái blockchain.

Giới thiệu

Người dùng blockchain coi trọng cả tính minh bạch lẫn quyền riêng tư. Trong nhiều tình huống, hai mục tiêu này dường như xung đột: để chứng minh rằng điều gì đó là đúng, thường phải tiết lộ các chi tiết phía sau nó. Bằng chứng không kiến thức cung cấp một cách để giải quyết sự căng thẳng này.

Bằng cách sử dụng các giao thức tạo bằng chứng không kiến thức như zk-SNARKs cùng với các cấu trúc dữ liệu mật mã như cây Merkle, có thể chứng minh tính đúng đắn của thông tin mà không tiết lộ chính bản thân thông tin đó. Bài viết này giải thích cách các công cụ đó hoạt động và Binance áp dụng chúng cho Proof of Reserves như thế nào.

Bằng chứng không kiến thức là gì?

Bằng chứng không kiến thức cho phép một bên (bên chứng minh) thuyết phục bên khác (bên xác minh) rằng một tuyên bố là đúng, mà không chia sẻ bất kỳ thông tin nào về nội dung của tuyên bố đó. Khái niệm này lần đầu xuất hiện trong một bài báo học thuật năm 1985 và kể từ đó đã trở thành một thành phần nền tảng của mật mã ứng dụng.

Ví dụ đơn giản: hãy tưởng tượng bạn biết tổ hợp mật mã của một chiếc két sắt bị khóa. Bạn có thể chứng minh điều đó với một người bạn bằng cách mở két, đọc một mẩu giấy mà họ đã đặt vào trong đó, rồi đóng lại. Lúc này, người bạn của bạn tin rằng bạn biết tổ hợp mật mã mà không cần bạn bao giờ nói đó là gì.

Để có giải thích kỹ thuật sâu hơn, hãy xem bài viết của Academy về What Is Zero-Knowledge Proof and How Does It Impact Blockchain.

Tại sao bằng chứng không kiến thức lại hữu ích?

Các bằng chứng ZK hữu ích trong mọi tình huống khi bạn cần chứng minh một tuyên bố mà không lộ dữ liệu nhạy cảm. Trong các hệ thống truyền thống, việc chứng minh rằng bạn sở hữu một tài sản hoặc nắm giữ một số quyền/giấy tờ nhất định thường đòi hỏi phải chia sẻ thông tin nền tảng, điều này tạo ra rủi ro về quyền riêng tư và an ninh.

Trong lĩnh vực tiền mã hóa, các trường hợp sử dụng phổ biến bao gồm:

  • Chứng minh quyền sở hữu một khóa cá nhân mà không tiết lộ khóa đó.

  • Cho phép một sàn giao dịch xác minh tổng dự trữ của người dùng mà không tiết lộ số dư của từng tài khoản.

  • Kích hoạt các giao dịch blockchain có thể mở rộng thông qua ZK-rollups mà không đăng từng giao dịch lên chuỗi (on-chain).

Các bằng chứng này sử dụng các thuật toán nhận dữ liệu làm đầu vào và trả về đúng hoặc sai, mà không rò rỉ bất kỳ chi tiết nào về chính dữ liệu đầu vào đó.

Các tính chất kỹ thuật của bằng chứng không kiến thức

Một bằng chứng không kiến thức hợp lệ phải thỏa mãn ba tính chất:

  • Tính đầy đủ (Completeness). Nếu tuyên bố là đúng, một bên xác minh trung thực sẽ bị thuyết phục bởi bằng chứng.

  • Tính đúng đắn (Soundness). Nếu tuyên bố là sai, không bên chứng minh nào có thể thuyết phục bên xác minh rằng nó là đúng.

  • Tính không tiết lộ thông tin (Zero-knowledge). Nếu tuyên bố là đúng, bên xác minh không học được gì khác ngoài việc biết rằng nó là đúng.

zk-SNARK là gì?

zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) là một loại giao thức tạo bằng chứng không kiến thức. Nó được thiết kế để tạo ra bằng chứng gọn nhẹ (kích thước bằng chứng nhỏ), không tương tác (không có qua lại giữa bên chứng minh và bên xác minh), và có độ tin cậy về mặt mật mã (cryptographically sound).

Với zk-SNARK, một bên chứng minh (prover) có thể chứng minh mình có kiến thức về một giá trị bí mật, hoặc rằng một phép tính đã được thực hiện đúng, mà không tiết lộ bất cứ điều gì về các đầu vào. Trong bối cảnh một sàn giao dịch tiền mã hóa, điều này có nghĩa là chứng minh tổng số dư của tất cả người dùng khớp với dự trữ đã công bố mà không cần hiển thị bất kỳ số dư cá nhân nào.

Bước xác minh diễn ra cực kỳ nhanh so với thời gian cần để tạo ra chính bằng chứng. Điều này khiến zk-SNARK trở nên thực tiễn cho các ứng dụng quy mô lớn như kiểm toán sàn giao dịch hoặc mở rộng khả năng mở rộng của blockchain.

Cây Merkle là gì?

Cây Merkle là một cấu trúc dữ liệu mật mã giúp sắp xếp hiệu quả lượng dữ liệu rất lớn. Mỗi phần dữ liệu được chuyển thành một hàm băm, và các hàm băm đó được ghép cặp với nhau rồi băm lại cho đến khi tạo ra một giá trị băm gốc duy nhất. Bất kỳ thay đổi nào đối với một giá trị đầu vào cũng sẽ làm thay đổi hash gốc, khiến việc can thiệp bị phát hiện dễ dàng.

Hàm băm

Cây Merkle phụ thuộc vào các hàm băm để hoạt động. Băm (hashing) nhận một đầu vào có độ dài bất kỳ và tạo ra một đầu ra có độ dài cố định. Cùng một đầu vào luôn tạo ra cùng một đầu ra. Thậm chí chỉ thay đổi rất nhỏ trong đầu vào cũng tạo ra một đầu ra hoàn toàn khác.

Ví dụ, việc đưa 100 cuốn sách vào hàm băm SHA-256 sẽ tạo ra một chuỗi duy nhất dài 64 ký tự. Nếu thay đổi một ký tự trong những cuốn sách đó, đầu ra sẽ thay đổi hoàn toàn. Tính chất này giúp dễ dàng xác minh tính toàn vẹn của dữ liệu mà không cần đối chiếu toàn bộ nội dung ban đầu.

Cây Merkle trong tiền mã hóa

Trong blockchain, mỗi giao dịch được băm để tạo ra một nút lá duy nhất. Các cặp nút lá được kết hợp và băm lại để tạo ra các nút nhánh. Quy trình này tiếp tục cho đến khi tạo ra một Merkle root duy nhất. Merkle root đó tóm tắt mặt mật mã toàn bộ các giao dịch trong một khối.

Đối với sàn giao dịch, cây Merkle cung cấp cách tổ chức số dư của khách hàng để có thể kiểm toán mà không cần lộ từng tài khoản riêng lẻ.

Những hạn chế của việc chỉ dùng cây Merkle

Một sàn giao dịch tiền mã hóa có thể xây dựng một cây Merkle từ toàn bộ số dư tài khoản khách hàng để hỗ trợ Bằng chứng Dự trữ (Proof of Reserves, PoR). Tuy nhiên, nếu không có thêm các biện pháp bảo vệ, cách tiếp cận này có những điểm yếu.

Nếu không có lớp ZK, sàn giao dịch có thể loại bỏ một số tài khoản khỏi cây hoặc chèn các tài khoản giả với số dư âm để làm giảm tổng trách nhiệm pháp lý (liability) tưởng chừng. Một người dùng chỉ xem nút lá của riêng mình sẽ không có cách nào phát hiện việc đó nếu không xem mọi tài khoản khác.

Sử dụng một bên kiểm toán thứ ba đáng tin là một trong những giải pháp có thể, nhưng điều đó đòi hỏi phải tin cả bên kiểm toán lẫn dữ liệu mà họ đã được cấp quyền truy cập.

Cách zk-SNARK và cây Merkle hoạt động cùng nhau

Việc kết hợp zk-SNARK với cây Merkle loại bỏ nhu cầu phải tin cậy một bên thứ ba. Sàn giao dịch xây dựng một cây Merkle từ toàn bộ số dư người dùng, sau đó tạo ra một bằng chứng zk-SNARK để đảm bảo về mặt toán học rằng:

  • Mỗi số dư người dùng đều được đưa vào cây Merkle (không bỏ sót tài khoản).

  • Không có người dùng nào có số dư ròng âm (không có dữ liệu bị làm giả).

  • Merkle root là hợp lệ và không bị thay đổi.

Người dùng có thể kiểm tra rằng số dư của họ đã góp phần vào Merkle root. Họ cũng có thể xác minh bằng chứng zk-SNARK để đảm bảo cây được xây dựng đúng cách, mà không cần xem số dư của bất kỳ ai khác.

Binance áp dụng hệ thống này như thế nào

Binance định nghĩa các ràng buộc (constraints) của thứ họ muốn chứng minh dưới dạng một mạch (programmable circuit). Với mỗi nút lá biểu diễn số dư của người dùng trong cây Merkle, mạch sẽ kiểm tra ba điều kiện:

  • Tài sản của người dùng được đưa vào phép tính tổng số dư ròng.

  • Tổng số dư ròng của người dùng lớn hơn hoặc bằng 0.

  • Merkle root là hợp lệ sau khi đã đưa dữ liệu của người dùng đó vào.

Sau đó, Binance tạo ra một bằng chứng zk-SNARK cho toàn bộ cây Merkle. Mỗi lần phát hành PoR, Binance công bố bằng chứng Merkle của từng người dùng và bằng chứng zk-SNARK kèm theo các đầu vào công khai (public inputs). Bất kỳ ai cũng có thể xác minh cả hai độc lập bằng mã nguồn mở công khai.

Cách tiếp cận này cung cấp sự đảm bảo toán học thay vì chỉ dựa vào niềm tin vào bên kiểm toán.

Các ứng dụng rộng hơn ngoài Proof of Reserves

Công nghệ bằng chứng ZK đã mở rộng rất nhiều ra ngoài việc kiểm toán sàn giao dịch. ZK-rollups hiện là một trong những phương pháp mở rộng Lớp 2 hàng đầu trên Ethereum, xử lý giao dịch ngoài chuỗi (off-chain) và gửi các bằng chứng ZK lên chuỗi chính (main chain) để xác nhận tính đúng đắn. Điều này có thể tăng thông lượng trong khi vẫn duy trì an ninh.

Ngoài khả năng mở rộng, các bằng chứng ZK đang được nghiên cứu cho xác thực danh tính (chứng minh bạn đáp ứng yêu cầu về độ tuổi hoặc khu vực pháp lý mà không tiết lộ toàn bộ danh tính), các hệ thống bỏ phiếu riêng tư và việc thực thi hợp đồng thông minh bảo mật. Công nghệ này vẫn đang dần hoàn thiện, nhưng tiềm năng ứng dụng của nó trên nhiều lĩnh vực như tài chính, quản trị và danh tính số là rất lớn.

Câu hỏi thường gặp (FAQ)

Bằng chứng không kiến thức (zero-knowledge proof) là gì theo cách đơn giản?

Bằng chứng không kiến thức cho phép bạn chứng minh rằng bạn biết một điều gì đó, hoặc một tuyên bố là đúng, mà không tiết lộ thông tin nền tảng. Nó giống như việc bạn chứng minh rằng mình biết tổ hợp mật mã của một két sắt bằng cách mở két và đọc ra một mẩu giấy bạn đã đặt vào trong đó—mà không bao giờ nói tổ hợp mật mã là gì.

Tại sao Binance dùng zk-SNARK cho Proof of Reserves?

Binance sử dụng zk-SNARK để chứng minh rằng số dư của khách hàng được hậu thuẫn đầy đủ mà không tiết lộ chi tiết của từng tài khoản. Bằng chứng ZK cung cấp sự xác minh bằng toán học rằng tất cả các tài khoản đều được đưa vào và không tồn tại số dư âm, mà không yêu cầu người dùng phải tin một bên kiểm toán.

Sự khác nhau giữa zk-SNARKs và ZK-rollups là gì?

zk-SNARKs là một loại giao thức tạo bằng chứng không kiến thức. ZK-rollups là một giải pháp mở rộng Lớp 2 sử dụng zk-SNARKs (hoặc các bằng chứng tương tự) để gộp nhiều giao dịch lại và gửi một bằng chứng xác thực (validity proof) duy nhất lên blockchain chính. zk-SNARKs là công cụ mật mã nền tảng; ZK-rollups là một ứng dụng của công cụ đó.

Người dùng có thể tự xác minh Proof of Reserves của Binance không?

Có. Binance công bố bằng chứng Merkle cho từng người dùng và bằng chứng zk-SNARK kèm theo các đầu vào công khai. Người dùng có thể xác minh rằng số dư của mình đã được đưa vào cây Merkle và bằng chứng zk-SNARK xác nhận cây đã được xây dựng đúng cách, sử dụng mã nguồn mở do Binance phát hành công khai.

Bằng chứng không kiến thức chỉ được dùng cho dự trữ sàn giao dịch?

Không. Bằng chứng ZK có nhiều ứng dụng đa dạng. Trong blockchain, chúng được dùng cho ZK-rollups để mở rộng giao dịch, các hệ thống nhận dạng và việc thực thi hợp đồng bảo mật. Ngoài lĩnh vực tiền mã hóa, chúng đang được nghiên cứu cho bỏ phiếu bảo toàn quyền riêng tư, xác thực tuổi và xác thực thông tin/giấy tờ (credential validation) mà không tiết lộ dữ liệu.

Những suy nghĩ kết lại

Bằng cách kết hợp zk-SNARK với cây Merkle, các sàn giao dịch có thể cung cấp bằng chứng mật mã về dự trữ mà không làm ảnh hưởng đến dữ liệu người dùng. Ngoài kiểm toán dự trữ, công nghệ ZK đang tìm thấy vị trí của mình trong việc mở rộng blockchain, các hệ thống danh tính và quản trị phi tập trung.

Đọc thêm

  • Bằng chứng không kiến thức là gì và nó ảnh hưởng thế nào đến blockchain?

  • Giải thích zk-SNARKs và zk-STARKs

  • ZK-Rollups là gì?

  • Proof of Reserves là gì và hoạt động như thế nào trên Binance

  • Giải thích cây Merkle và Merkle root

Tuyên bố từ chối trách nhiệm: Nội dung này được cung cấp cho bạn trên cơ sở "nguyên trạng" chỉ nhằm mục đích thông tin chung và giáo dục, không có bất kỳ cam kết hoặc bảo đảm nào dưới bất kỳ hình thức nào. Nội dung này không nên được hiểu là lời khuyên mang tính tài chính, pháp lý hoặc tư vấn chuyên nghiệp khác, và cũng không nhằm mục đích khuyến nghị việc mua bất kỳ sản phẩm hoặc dịch vụ cụ thể nào. Bạn nên tìm kiếm lời khuyên của riêng mình từ các cố vấn chuyên nghiệp phù hợp. Nếu nội dung do bên thứ ba đóng góp, vui lòng lưu ý rằng các quan điểm được nêu thuộc về bên đóng góp thứ ba và không nhất thiết phản ánh quan điểm của Binance Academy. Giá tài sản kỹ thuật số có thể biến động. Giá trị khoản đầu tư của bạn có thể tăng hoặc giảm và bạn có thể không nhận lại được số tiền đã đầu tư. Bạn hoàn toàn chịu trách nhiệm đối với các quyết định đầu tư của mình và Binance Academy không chịu trách nhiệm đối với bất kỳ khoản lỗ nào bạn có thể gặp phải. Để biết thêm thông tin, vui lòng xem Điều khoản sử dụng, Cảnh báo rủi ro và Điều khoản của Binance Academy.