第3課

Làm thế nào để kết hợp Bằng chứng dự trữ với Công nghệ zk-SNARK?

Bài học này giải thích công nghệ zk-SNARK là gì và làm thế nào Bằng chứng dự trữ được tối ưu hóa bằng công nghệ zk-SNARK

Nền tảng

Chứng minh không mất (ZKP) là một kỹ thuật mật mã được đề xuất lần đầu tiên bởi S. Goldwasser, S. Micali, và C. Rackoff vào đầu những năm 1980 trong một bài báo có tựa đề “Sự Phức Tạp Của Kiến Thức Của Hệ Thống Chứng Minh Tương TácTrong bài báo, nó được khái niệm hóa như một mô hình lý thuyết để giải quyết vấn đề xác minh các câu lệnh toán học mà không tiết lộ bằng chứng. Khái niệm này đã thu hút sự chú ý rộng rãi trong giới học thuật vì nó thách thức ranh giới của các kỹ thuật mật mã truyền thống và cung cấp phương pháp mới cho việc xử lý thông tin nhạy cảm.

Với thời gian, ZKP đã phát triển từ một khái niệm lý thuyết trừu tượng thành các giao thức cụ thể có thể được tích hợp vào các ứng dụng khác nhau. Năm 2010, Groth đã công bố một bài báo mang tựa đề “Chứng minh không tương tác dựa trên cặp khóa ngắn không được tiết lộ “, mà đã trở thành cột mốc lý thuyết cho zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge), một giải pháp quan trọng trong ZKP. Tiến triển quan trọng nhất trong việc áp dụng chứng minh không biết là hệ thống chứng minh không biết được sử dụng bởi Z-cash vào năm 2015, cung cấp bảo vệ sự riêng tư cho các giao dịch và số tiền. Sau đó, zk-SNARK kết hợp với hợp đồng thông minh, mở rộng ứng dụng của nó sang một loạt các kịch bản ứng dụng rộng lớn hơn.

Nguyên tắc cơ bản của zk-SNARK

ZKP truyền thống tuân theo ba nguyên tắc:

  • Toàn vẹn: Nếu câu lệnh đúng, một người chứng minh trung thực luôn có thể thuyết phục người xác minh.
  • Sự chắc chắn: Nếu câu lệnh là sai, bất kỳ người chứng minh gian lận nào cũng chỉ có thể đánh lừa người xác minh với xác suất nhỏ.
  • Zero-knowledge: Nếu câu phát biểu là đúng, người xác minh sẽ không thể thu được bất cứ điều gì ngoài sự thật rằng câu phát biểu là đúng. Nói cách khác, quá trình xác minh sẽ không tiết lộ bất kỳ thông tin nào có thể được sử dụng để xây dựng bằng chứng.

Nguyên lý của ZKP có thể được hiểu thông qua một ví dụ đơn giản: Nếu tôi cần chứng minh với A rằng tôi có số điện thoại của B, tôi không cần phải tiết lộ trực tiếp số điện thoại của B. Thay vào đó, tôi có thể gọi trực tiếp số điện thoại của B và chứng minh rằng tôi thực sự có số điện thoại của B sau khi gọi thành công. Quá trình này sẽ không làm lộ số điện thoại của B.
zk-SNARK tiếp tục tăng cường những nguyên tắc này với những đặc điểm sau:

  • Zero-knowledge: Bên xác minh không nhận được bất kỳ thông tin hữu ích nào từ bằng chứng.
  • Ngắn gọn: Kích thước bằng chứng nhỏ (thường là vài chục byte) và thời gian xác minh ngắn (thường là vài mili giây);
  • Không tương tác: Người chứng minh chỉ cần gửi bằng chứng cho người xác minh một lần, không cần yêu cầu giao tiếp thêm.
  • Tham số đáng tin cậy: Cả người chứng minh và người xác thực cần sử dụng một Chuỗi Tham Chiếu Chung (CRS) được tạo ra bởi một bên thứ ba đáng tin cậy, có thể chứa thông tin nhạy cảm mà, nếu rò rỉ hoặc bị can thiệp, có thể đe dọa đến an ninh của hệ thống.

Trong bài báo của Groth, ông đã đề xuất một phương pháp chứng minh không có kiến thức không tương tác dựa trên các cặp để chuyển đổi một vấn đề tính toán thành Chương trình số học bậc hai (QAP). Phương pháp này sử dụng mật mã đường cong elip và hàm băm để xây dựng một bằng chứng hiệu quả. Các thiết kế zk-SNARK tiếp theo thường bao gồm bốn bước.

  • Thiết lập hệ thống: Được thực hiện bởi một bên thứ ba đáng tin cậy. Nó liên quan đến việc tạo ra một CRS, bao gồm một khóa chứng minh (pk) và một khóa xác minh (vk). Quá trình này chỉ cần được thực hiện một lần, và CRS có thể được sử dụng nhiều lần.
  • Vấn đề mã hóa: Chuyển đổi một vấn đề tính toán f(x) = y thành dạng QAP A(x) · B(x) = C(x) · Z(x), trong đó A(x), B(x), C(x) là đa thức được xác định bởi cấu trúc mạch của f, Z(x) là một đa thức cố định, x là một điểm được chọn ngẫu nhiên, và y là kết quả của f. Quá trình này có thể được thực hiện bởi bên chứng minh hoặc bên xác minh, hoặc bởi một bên thứ ba trước.
  • Tạo bằng chứng: Được thực hiện bởi câu tục ngữ. Nó liên quan đến việc sử dụng đầu vào w của pk, x và f để tạo ra một chứng minh \pi, chứng minh rằng anh ta biết một w thỏa mãn f (w) = y mà không tiết lộ giá trị cụ thể của w. Quá trình này bao gồm các phép tính đa thức, phép toán đường cong elip và các phép toán hàm băm, cuối cùng tạo ra một \pi bao gồm một số điểm đường cong elip và giá trị băm.
  • Xác minh chứng minh: Được thực hiện bởi người xác minh. Nó bao gồm sử dụng vk, x, y, và \pi để xác minh, xác định xem người chứng minh có biết một w thỏa mãn f (w) = y hay không. Quá trình này cũng liên quan đến tính toán đa thức, hoạt động của đường cong elliptic, và hoạt động hàm băm. Cuối cùng, nó thu được một giá trị boolean chỉ ra xem chứng minh có hợp lệ hay không.

Để minh họa bằng một ví dụ đơn giản, giả sử bạn có một bản đồ kho báu có thể dẫn bạn đến vị trí chính xác của một kho báu đã chôn. Bạn muốn chứng minh cho ai đó rằng bạn biết vị trí của kho báu, nhưng bạn không muốn tiết lộ nội dung của bản đồ kho báu hoặc vị trí thực tế của kho báu. Nếu bạn sử dụng công nghệ zk-SNARK, bạn cần tạo ra một câu đố phức tạp từ bản đồ kho báu. Bạn chọn một phần nhỏ của câu đố quan trọng (một bằng chứng) và hiển thị nó cho người khác, thuyết phục họ rằng bạn biết cách ghép cả một câu đố lớn, tức là vị trí của kho báu, mà không tiết lộ toàn bộ câu đố. Tuy nhiên, để làm điều này, bạn cần có được một số dấu hiệu đặc biệt từ một nhà in uy tín, dùng để chứng minh tính xác thực của mảnh ghép câu đố của bạn.

Kết hợp Dự trữ Sàn giao dịch với zk-SNARK

Cuộc thảo luận trước đã đề cập đến việc zk-SNARK cho phép thiết lập một chuỗi tham chiếu chung, điều này có nghĩa là có thể áp đặt ràng buộc trên mạch đang chạy. Lấy dự trữ Gate.io làm ví dụ, nó thiết lập năm ràng buộc cốt lõi trong mạch, như được thể hiện dưới đây:

① Trước khi chèn tài sản ròng của người dùng vào cây Merkle, nút tương ứng với ID người dùng là trống.
② Tính toán tổng tài sản / nợ của người dùng dựa trên danh sách tài sản của người dùng và giá của mỗi tài sản. Tổng tài sản phải lớn hơn tổng nợ.
③ Thêm tài sản/nợ của người dùng vào tài sản/nợ của sàn giao dịch.
④ Tính toán hash trạng thái của người dùng bằng cách sử dụng ID người dùng, tổng tài sản/nợ và danh sách tài sản. Chèn trạng thái của người dùng vào cây Merkle để có được một Merkle Root mới.
⑤ Giá trị băm của nút gốc của cây trước khi người dùng trước tạo một hoạt động người dùng phải bằng với giá trị băm sau khi người dùng tiếp theo tạo một hoạt động người dùng.
(Hoạt động ① có thể tránh dữ liệu nút bị sai, hoạt động ② có thể tránh tài khoản số dư âm, và hoạt động ⑤ có thể đảm bảo rằng dữ liệu người dùng không bị thay đổi trước và sau khi thực hiện.)
Điều này đảm bảo việc giải quyết vấn đề số dư âm. Dữ liệu trao đổi chỉ cần đi qua mạch để tự động thực hiện kiểm tra ràng buộc và lấy số tài sản. Tuy nhiên, giải pháp này yêu cầu một số lực lượng tính toán và điều kiện phần cứng nhất định. Việc tính toán bằng chứng dự trữ của 10 triệu người dùng trên một máy 32 nhân với 128GB RAM mất 15 ngày. Việc tính toán Bằng chứng dự trữ có thể được song song hóa. Nếu có 10 máy, chỉ mất 1.5 ngày.

Kết luận

Bằng cách thiết lập các ràng buộc liên quan, zk-SNARK có thể tránh sự xuất hiện của các vấn đề giá trị âm và bảo vệ tốt hơn quyền riêng tư và an ninh của người dùng. Bằng chứng dự trữ của Gate.io hiện có thể chứng minh tỷ lệ dự trữ cho hơn 100 đồng tiền, và người dùng có thể xem nó chỉ bằng cách nhấp chuột liên kếtTrong bài học tiếp theo, chúng tôi sẽ hướng dẫn bạn xác minh an ninh tài sản của bạn trong vòng 3 phút.

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。
目錄
第3課

Làm thế nào để kết hợp Bằng chứng dự trữ với Công nghệ zk-SNARK?

Bài học này giải thích công nghệ zk-SNARK là gì và làm thế nào Bằng chứng dự trữ được tối ưu hóa bằng công nghệ zk-SNARK

Nền tảng

Chứng minh không mất (ZKP) là một kỹ thuật mật mã được đề xuất lần đầu tiên bởi S. Goldwasser, S. Micali, và C. Rackoff vào đầu những năm 1980 trong một bài báo có tựa đề “Sự Phức Tạp Của Kiến Thức Của Hệ Thống Chứng Minh Tương TácTrong bài báo, nó được khái niệm hóa như một mô hình lý thuyết để giải quyết vấn đề xác minh các câu lệnh toán học mà không tiết lộ bằng chứng. Khái niệm này đã thu hút sự chú ý rộng rãi trong giới học thuật vì nó thách thức ranh giới của các kỹ thuật mật mã truyền thống và cung cấp phương pháp mới cho việc xử lý thông tin nhạy cảm.

Với thời gian, ZKP đã phát triển từ một khái niệm lý thuyết trừu tượng thành các giao thức cụ thể có thể được tích hợp vào các ứng dụng khác nhau. Năm 2010, Groth đã công bố một bài báo mang tựa đề “Chứng minh không tương tác dựa trên cặp khóa ngắn không được tiết lộ “, mà đã trở thành cột mốc lý thuyết cho zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge), một giải pháp quan trọng trong ZKP. Tiến triển quan trọng nhất trong việc áp dụng chứng minh không biết là hệ thống chứng minh không biết được sử dụng bởi Z-cash vào năm 2015, cung cấp bảo vệ sự riêng tư cho các giao dịch và số tiền. Sau đó, zk-SNARK kết hợp với hợp đồng thông minh, mở rộng ứng dụng của nó sang một loạt các kịch bản ứng dụng rộng lớn hơn.

Nguyên tắc cơ bản của zk-SNARK

ZKP truyền thống tuân theo ba nguyên tắc:

  • Toàn vẹn: Nếu câu lệnh đúng, một người chứng minh trung thực luôn có thể thuyết phục người xác minh.
  • Sự chắc chắn: Nếu câu lệnh là sai, bất kỳ người chứng minh gian lận nào cũng chỉ có thể đánh lừa người xác minh với xác suất nhỏ.
  • Zero-knowledge: Nếu câu phát biểu là đúng, người xác minh sẽ không thể thu được bất cứ điều gì ngoài sự thật rằng câu phát biểu là đúng. Nói cách khác, quá trình xác minh sẽ không tiết lộ bất kỳ thông tin nào có thể được sử dụng để xây dựng bằng chứng.

Nguyên lý của ZKP có thể được hiểu thông qua một ví dụ đơn giản: Nếu tôi cần chứng minh với A rằng tôi có số điện thoại của B, tôi không cần phải tiết lộ trực tiếp số điện thoại của B. Thay vào đó, tôi có thể gọi trực tiếp số điện thoại của B và chứng minh rằng tôi thực sự có số điện thoại của B sau khi gọi thành công. Quá trình này sẽ không làm lộ số điện thoại của B.
zk-SNARK tiếp tục tăng cường những nguyên tắc này với những đặc điểm sau:

  • Zero-knowledge: Bên xác minh không nhận được bất kỳ thông tin hữu ích nào từ bằng chứng.
  • Ngắn gọn: Kích thước bằng chứng nhỏ (thường là vài chục byte) và thời gian xác minh ngắn (thường là vài mili giây);
  • Không tương tác: Người chứng minh chỉ cần gửi bằng chứng cho người xác minh một lần, không cần yêu cầu giao tiếp thêm.
  • Tham số đáng tin cậy: Cả người chứng minh và người xác thực cần sử dụng một Chuỗi Tham Chiếu Chung (CRS) được tạo ra bởi một bên thứ ba đáng tin cậy, có thể chứa thông tin nhạy cảm mà, nếu rò rỉ hoặc bị can thiệp, có thể đe dọa đến an ninh của hệ thống.

Trong bài báo của Groth, ông đã đề xuất một phương pháp chứng minh không có kiến thức không tương tác dựa trên các cặp để chuyển đổi một vấn đề tính toán thành Chương trình số học bậc hai (QAP). Phương pháp này sử dụng mật mã đường cong elip và hàm băm để xây dựng một bằng chứng hiệu quả. Các thiết kế zk-SNARK tiếp theo thường bao gồm bốn bước.

  • Thiết lập hệ thống: Được thực hiện bởi một bên thứ ba đáng tin cậy. Nó liên quan đến việc tạo ra một CRS, bao gồm một khóa chứng minh (pk) và một khóa xác minh (vk). Quá trình này chỉ cần được thực hiện một lần, và CRS có thể được sử dụng nhiều lần.
  • Vấn đề mã hóa: Chuyển đổi một vấn đề tính toán f(x) = y thành dạng QAP A(x) · B(x) = C(x) · Z(x), trong đó A(x), B(x), C(x) là đa thức được xác định bởi cấu trúc mạch của f, Z(x) là một đa thức cố định, x là một điểm được chọn ngẫu nhiên, và y là kết quả của f. Quá trình này có thể được thực hiện bởi bên chứng minh hoặc bên xác minh, hoặc bởi một bên thứ ba trước.
  • Tạo bằng chứng: Được thực hiện bởi câu tục ngữ. Nó liên quan đến việc sử dụng đầu vào w của pk, x và f để tạo ra một chứng minh \pi, chứng minh rằng anh ta biết một w thỏa mãn f (w) = y mà không tiết lộ giá trị cụ thể của w. Quá trình này bao gồm các phép tính đa thức, phép toán đường cong elip và các phép toán hàm băm, cuối cùng tạo ra một \pi bao gồm một số điểm đường cong elip và giá trị băm.
  • Xác minh chứng minh: Được thực hiện bởi người xác minh. Nó bao gồm sử dụng vk, x, y, và \pi để xác minh, xác định xem người chứng minh có biết một w thỏa mãn f (w) = y hay không. Quá trình này cũng liên quan đến tính toán đa thức, hoạt động của đường cong elliptic, và hoạt động hàm băm. Cuối cùng, nó thu được một giá trị boolean chỉ ra xem chứng minh có hợp lệ hay không.

Để minh họa bằng một ví dụ đơn giản, giả sử bạn có một bản đồ kho báu có thể dẫn bạn đến vị trí chính xác của một kho báu đã chôn. Bạn muốn chứng minh cho ai đó rằng bạn biết vị trí của kho báu, nhưng bạn không muốn tiết lộ nội dung của bản đồ kho báu hoặc vị trí thực tế của kho báu. Nếu bạn sử dụng công nghệ zk-SNARK, bạn cần tạo ra một câu đố phức tạp từ bản đồ kho báu. Bạn chọn một phần nhỏ của câu đố quan trọng (một bằng chứng) và hiển thị nó cho người khác, thuyết phục họ rằng bạn biết cách ghép cả một câu đố lớn, tức là vị trí của kho báu, mà không tiết lộ toàn bộ câu đố. Tuy nhiên, để làm điều này, bạn cần có được một số dấu hiệu đặc biệt từ một nhà in uy tín, dùng để chứng minh tính xác thực của mảnh ghép câu đố của bạn.

Kết hợp Dự trữ Sàn giao dịch với zk-SNARK

Cuộc thảo luận trước đã đề cập đến việc zk-SNARK cho phép thiết lập một chuỗi tham chiếu chung, điều này có nghĩa là có thể áp đặt ràng buộc trên mạch đang chạy. Lấy dự trữ Gate.io làm ví dụ, nó thiết lập năm ràng buộc cốt lõi trong mạch, như được thể hiện dưới đây:

① Trước khi chèn tài sản ròng của người dùng vào cây Merkle, nút tương ứng với ID người dùng là trống.
② Tính toán tổng tài sản / nợ của người dùng dựa trên danh sách tài sản của người dùng và giá của mỗi tài sản. Tổng tài sản phải lớn hơn tổng nợ.
③ Thêm tài sản/nợ của người dùng vào tài sản/nợ của sàn giao dịch.
④ Tính toán hash trạng thái của người dùng bằng cách sử dụng ID người dùng, tổng tài sản/nợ và danh sách tài sản. Chèn trạng thái của người dùng vào cây Merkle để có được một Merkle Root mới.
⑤ Giá trị băm của nút gốc của cây trước khi người dùng trước tạo một hoạt động người dùng phải bằng với giá trị băm sau khi người dùng tiếp theo tạo một hoạt động người dùng.
(Hoạt động ① có thể tránh dữ liệu nút bị sai, hoạt động ② có thể tránh tài khoản số dư âm, và hoạt động ⑤ có thể đảm bảo rằng dữ liệu người dùng không bị thay đổi trước và sau khi thực hiện.)
Điều này đảm bảo việc giải quyết vấn đề số dư âm. Dữ liệu trao đổi chỉ cần đi qua mạch để tự động thực hiện kiểm tra ràng buộc và lấy số tài sản. Tuy nhiên, giải pháp này yêu cầu một số lực lượng tính toán và điều kiện phần cứng nhất định. Việc tính toán bằng chứng dự trữ của 10 triệu người dùng trên một máy 32 nhân với 128GB RAM mất 15 ngày. Việc tính toán Bằng chứng dự trữ có thể được song song hóa. Nếu có 10 máy, chỉ mất 1.5 ngày.

Kết luận

Bằng cách thiết lập các ràng buộc liên quan, zk-SNARK có thể tránh sự xuất hiện của các vấn đề giá trị âm và bảo vệ tốt hơn quyền riêng tư và an ninh của người dùng. Bằng chứng dự trữ của Gate.io hiện có thể chứng minh tỷ lệ dự trữ cho hơn 100 đồng tiền, và người dùng có thể xem nó chỉ bằng cách nhấp chuột liên kếtTrong bài học tiếp theo, chúng tôi sẽ hướng dẫn bạn xác minh an ninh tài sản của bạn trong vòng 3 phút.

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。