Những điểm chính

  • Vào tháng 11 năm 2022, Binance đã phát hành hệ thống Bằng chứng dự trữ sử dụng mật mã cây Merkle để cho phép người dùng xác minh khoản nắm giữ của họ.

  • Binance hiện đã nâng cao giải pháp của mình bằng cách triển khai zk-SNARK, một dạng bằng chứng không có kiến ​​thức.

  • Giờ đây, người dùng có thể kiểm tra xem tổng số dư ròng của mỗi tài khoản có phải là số không âm và tất cả tài sản của người dùng có nằm trong tổng số dư ròng tài sản của người dùng được Binance xác nhận hay không – một cách riêng tư và an toàn.

Hãy xem giải pháp bằng chứng dự trữ mới của Binance hoạt động như thế nào. Bằng cách kết hợp thông tin zk-SNARK và cây Merkle, người dùng có một cách mới và cải tiến để xác minh trạng thái dự trữ Binance.

Trong vài tháng qua, nhóm phát triển Binance đã làm việc chăm chỉ để xây dựng một bằng chứng về khả năng thanh toán hiện đại. Công cụ này đã trở thành một công cụ quan trọng để trao đổi tiền điện tử tập trung trong bối cảnh cuộc khủng hoảng niềm tin xảy ra trong ngành sau sự sụp đổ của FTX. Tiền của người dùng nắm giữ trên Binance được hỗ trợ theo tỷ lệ 1:1, cộng với tiền dự trữ và việc tìm cách chứng minh điều này với công chúng mà không gặp vấn đề gì là một phần quan trọng trong kế hoạch khôi phục niềm tin của ngành của Binance. 

Vào tháng 11 năm 2022, chúng tôi đã phát hành hệ thống bằng chứng dự trữ sử dụng kỹ thuật mã hóa cây Merkle để cho phép người dùng xác minh tài sản nắm giữ của họ trên Binance. Mặc dù đây là tiến bộ trong việc thúc đẩy tính minh bạch cho tiền của người dùng Binance, nhưng thiết kế ban đầu của giải pháp này có hai sai sót:

  1. Để bảo vệ quyền riêng tư của người dùng, các nút lá trong bằng chứng Merkle thể hiện hàm băm của quyền sở hữu của người dùng – do đó, gốc Merkle không thể phản ánh lượng thông tin số dư của các nút lá của nó.

  1. Các thực thể có dự trữ đang trong quá trình xác minh có thể thêm số dư âm vào một tài khoản giả ở đâu đó trên cây để làm cho tổng dự trữ bắt buộc có vẻ nhỏ hơn. Sơ đồ sau đây từ blog của Vitalik Buterin hiển thị một ví dụ về cây Merkle độc ​​hại (mặc dù trong trường hợp này, gốc phản ánh tổng số dư của tất cả các nút lá có thể gây ra các vấn đề về quyền riêng tư).

Hiện chúng tôi đã có giải pháp có thể khắc phục lỗ hổng này và từ đó củng cố hệ thống bằng chứng dự trữ của Binance. Bằng cách dựa vào giao thức chứng minh không có kiến ​​thức, zk-SNARK, chúng tôi có thể chứng minh rằng:

  1. Tất cả các nút lá của cây Merkle đã đóng góp vào tổng số dư của người dùng mà Binance yêu cầu cho mỗi tài sản.

  2. Không có người dùng nào có tổng số dư ròng âm (toàn bộ giá trị USD của tất cả tài sản do người dùng sở hữu) được đưa vào cây Merkle.

Đôi lời về số dư âm và hiệu quả hoạt động

Vì Binance cung cấp các sản phẩm ký quỹ, cho vay tiền điện tử và giao dịch hợp đồng tương lai nên số dư của mỗi người dùng đối với từng tài sản tiền điện tử có thể bao gồm cả tài sản và nợ. Số dư của người dùng đối với một tài sản tiền điện tử cụ thể có thể âm, nhưng tổng số dư ròng của họ trên tất cả các tài sản tiền điện tử không thể âm (vì tất cả các khoản vay đều được thế chấp hoàn toàn).

Trong kịch bản giả định này, giả sử Alice đã gửi 10.000 BUSD vào Binance, sau đó sử dụng 4.000 BUSD làm tài sản thế chấp để vay 2 BNB (với tỷ lệ 1 BNB = 1.000 BUSD, giả định rằng Binance luôn thế chấp quá mức). Bảng sau đây trình bày bảng cân đối kế toán của Alice.

BNB (giá: 1000 BUSD)

BUSD (giá: 1 BUSD)

Tổng số dư ròng (BUSD)

Tài sản

Nghĩa vụ

Tài sản

Nghĩa vụ

ALICE

2

2

10000

0

10000

Sau đó, nếu Alice giao dịch 1 BNB lấy 1.000 BUSD với Bob (người cũng đã gửi 10.000 BUSD), bảng cân đối kế toán của họ sẽ như thế này sau khi các giao dịch được khớp:

BNB (giá: 1000 BUSD)

BUSD (giá: 1 BUSD)

Tổng số dư ròng (BUSD)

Tài sản

Nghĩa vụ

Tài sản

Nghĩa vụ

ALICE

1

2

11000

0

10000

Bob

1

0

9000

0

10000

Trong trường hợp này, số dư BNB của Alice sẽ có tổng cộng -1, đây không phải là nút hợp lệ trong cây Merkle và chỉ bao gồm một tài sản: BNB. Tuy nhiên, nếu chúng ta nhìn vào tổng số dư ròng, Alice vẫn là 10.000 BUSD.

Một thách thức khác đến từ quy mô cơ sở người dùng của Binance. Một giải pháp khả thi sẽ tạo ra bằng chứng người dùng và bằng chứng zk-SNARK cho hàng chục triệu người dùng, một số người trong số họ có thể sở hữu hơn 300 tài sản tiền điện tử trên nền tảng của chúng tôi. 

Nhìn chung, chúng tôi muốn cung cấp bằng chứng về các sự kiện sau trong một khoảng thời gian hợp lý:

  1. Tài sản của mỗi người dùng Binance là một phần trong tổng số dư của người dùng được xác nhận của chúng tôi được hiển thị trong ảnh chụp nhanh. Người dùng có thể xác minh tổng số dư người dùng đã xác nhận của chúng tôi dựa trên tài sản được giữ tại các địa chỉ do Binance kiểm soát bằng cách sử dụng trình khám phá blockchain (chẳng hạn như Etherscan cho ví Ethereum hoặc BscScan cho ví BNB Chain).

  2. Tổng số dư ròng của mỗi người dùng không âm. Điều này có nghĩa là Binance không tạo tài khoản giả có số dư âm để giảm quy mô dự trữ đã được xác minh của chúng tôi một cách giả tạo.

zk-SNARK là gì?

Trước khi chúng ta đi sâu vào chi tiết về giải pháp của mình, chúng ta cần có một cái nhìn tổng quan ngắn gọn về cơ chế chứng minh không có kiến ​​thức. Các giao thức không có kiến ​​thức như zk-SNARK cho phép một bên, cụ thể là người chứng minh, chứng minh cho một bên khác, cụ thể là người xác minh, rằng người chứng minh đã thực hiện một phép tính nhất định một cách chính xác với một số đầu vào nhất định theo các ràng buộc nhất định, tất cả đều không tiết lộ đầu vào. Việc tính toán có thể tốn thời gian nhưng các cơ chế toán học cơ bản có thể giúp người xác minh đánh giá bằng chứng một cách nhanh chóng và an toàn.

Người chứng minh (Binance) bắt đầu bằng cách xác định tập hợp các ràng buộc tính toán mà nó muốn chứng minh. Các ràng buộc được xác định trong các mạch có thể được biểu diễn bằng ngôn ngữ lập trình cấp cao (trong trường hợp của chúng tôi là phiên bản phân nhánh của gnark.)

Sau đó, người chứng thực thực hiện các phép tính nặng, băm các id và bảng cân đối kế toán của tất cả người dùng và tạo ra bằng chứng tính toán thỏa mãn các ràng buộc được xác định trước. Để làm như vậy, nó sử dụng dấu vết tính toán (nhân chứng) và đầu vào công khai hoặc riêng tư. 

Người xác minh (người dùng) nhận được bằng chứng và xác minh nó bằng đầu vào công khai từ mạch để tự thỏa mãn rằng tính toán đã được thực hiện chính xác với tất cả các ràng buộc được đáp ứng. Tính toán xác minh mất một thời gian rất ngắn so với thời gian chứng minh. Nếu người chứng minh không đưa ra được bằng chứng trên mạch được xác định trước thì người chứng minh không thể đưa ra bằng chứng hợp lệ để vượt qua quá trình xác minh.

Để có cái nhìn sâu hơn về cách hoạt động của zk-SNARK, bạn có thể xem loạt bài viết này.

Giải pháp của chúng tôi

Khối xây dựng cơ bản của giải pháp chứng minh dự trữ cải tiến vẫn là cây Merkle. Đối với ví dụ trên, nó sẽ trông như thế này:

Ngoài cây Merkle, chúng tôi cũng duy trì trạng thái toàn cầu thể hiện danh sách tổng số dư ròng của từng tài sản mà mỗi khách hàng Binance sở hữu.

Để chứng minh khả năng dự phòng của mình, chúng tôi sẽ xây dựng bằng chứng zk-SNARK cho việc xây dựng cây Merkle. Đối với mỗi bộ số dư của người dùng – các nút lá của cây Merkle – mạch của chúng tôi sẽ đảm bảo rằng:

  1. Số dư của từng tài sản của người dùng này được đưa vào danh sách trạng thái toàn cầu được đề cập ở trên.

  2. Tổng số dư ròng của người dùng không âm. 

  3. Các thay đổi gốc của cây Merkle có hiệu lực sau khi cập nhật thông tin người dùng này vào bảng băm của nút lá.

Vui lòng xem thông số kỹ thuật này và mã nguồn của chúng tôi dành cho mạch (các giới hạn) để biết chi tiết triển khai. 

Trong mỗi ví dụ về bằng chứng gợi ý, chúng tôi sẽ xuất bản:

1. Bằng chứng Merkle: hàm băm cho mỗi người dùng (đối với Alice, được biểu thị bằng nút màu xanh lam trong hình trên).

2. Bằng chứng về zk-SNARK và đầu vào công khai (băm danh sách tổng số dư ròng của từng tài sản và gốc Merkle) của mạch cho tất cả người dùng. 

Bằng cách xác minh bằng chứng Merkle, người dùng có thể đảm bảo bảng cân đối kế toán của họ được đưa vào thư mục gốc của cây Merkle. Bằng cách xác minh bằng chứng zk-SNARK, người dùng có thể đảm bảo rằng việc xây dựng cây Merkle đáp ứng các ràng buộc được chỉ định trong mạch.

Tính bảo mật của giải pháp này phụ thuộc rất nhiều vào việc thiết lập khóa chứng minh và khóa xác minh. Chúng tôi đang nỗ lực thiết lập các khóa phi tập trung. Nói về các nghi lễ thiết lập dựa trên niềm tin phi tập trung hiện có, các nghi lễ Ethereum là một ví dụ điển hình. Chúng tôi sẽ sớm có giải pháp MPC để thiết lập không cần tin cậy.

Hiệu suất

Với số lượng người dùng Binance cần phải bao gồm số dư, không có cách nào để có được một bằng chứng duy nhất từ ​​việc xây dựng cây Merkle bao gồm tất cả người dùng cùng một lúc. Giải pháp cho vấn đề này là chia người dùng thành các lô 864 mỗi lô để có các mạch quy mô nhỏ hơn và các quy trình chứng minh song song.

Đối với một nhóm 864 người dùng trong đó mỗi người dùng có 350 tài sản khác nhau, giả sử số dư tài sản của mỗi người nằm trong phạm vi [0, 2^64-1]. Với máy chủ 32 lõi 128GB, thời gian tạo bằng chứng zk là khoảng 110 giây và thời gian xác minh bằng chứng là dưới 1 mili giây. 

Binance sẽ bắt đầu 1000 bằng chứng cùng lúc để tạo bằng chứng cho tất cả các tài khoản trong vòng 2 giờ. Chi phí máy chủ của bằng chứng này trong một giờ là khoảng 0,56 USD, do đó tổng chi phí để tạo tất cả bằng chứng zk cho tất cả người dùng là khoảng 1000 USD.

Phần kết luận

Chúng tôi sẽ cung cấp các lần lặp lại bằng chứng người dùng đầu tiên được tạo bởi giải pháp mới này trong thông báo bằng chứng dự trữ tiếp theo của chúng tôi. Ngoài ra, chúng tôi đã cung cấp nguồn mở cho bộ xử lý dữ liệu người dùng, bộ chứng minh, mạch và bộ xác minh để bất kỳ sàn giao dịch tập trung nào dựa trên cùng một mô hình như chúng tôi đều có thể tạo bằng chứng cho người dùng và tài sản của họ một cách dễ dàng. 

Chúng tôi hy vọng điều này sẽ đóng một vai trò quan trọng trong việc đẩy tính minh bạch của ngành tài sản kỹ thuật số lên một tầm cao mới.  Chúng tôi cũng đang nỗ lực triển khai các giải pháp được đề cập trong blog của Vitalik nhằm đạt được hiệu suất tốt hơn, điều này sẽ cho phép chúng tôi cung cấp bằng chứng thường xuyên hơn với chi phí thấp hơn.

Vì đây là phiên bản đầu tiên của zk-SNARK nên chúng tôi hy vọng nhận được phản hồi từ cộng đồng để chúng tôi có thể tiếp tục cải thiện hệ thống.

Mã & Đọc thêm

  • Mã nguồn của chúng tôi

  • Bằng chứng dự trữ của Binance: Cây Merkle là gì

  • Binance Academy - Cải thiện tính minh bạch của tiền điện tử bằng bằng chứng không có kiến ​​thức

  • Blog của Vitalik: Có CEX an toàn: bằng chứng về khả năng thanh toán và hơn thế nữa