Tiêu đề gốc: "Bài nói ngắn gọn về Bằng chứng không có kiến thức: Bối cảnh và nguồn gốc"
Nguồn gốc: Cộng đồng công nghệ Anbi Tác giả: Dongze
Tác giả của bài viết này là Dongze, một người bạn trong Cộng đồng Công nghệ Ambi. Anh hiện đang theo học tại Đại học Stanford, nghiên cứu về mật mã. Chuỗi bài viết này xuất hiện từ nghiên cứu nổi tiếng của tác giả tại Đại học Stanford ghi chú từ khóa học "CS 251: Tiền điện tử và công nghệ chuỗi khối", do chuyên gia mật mã Dan Boneh giảng dạy.
Tôi đã nghiên cứu các công nghệ liên quan đến blockchain và tiền kỹ thuật số với Dan Boneh tại Stanford trong học kỳ trước. Khác với các khóa học trước, khóa học năm nay có một chương mới mang tên Chứng minh không có kiến thức. Dan dễ thương và thầy của anh ấy, tiến sĩ Ben Fisch, đã thay phiên nhau dạy chúng tôi và dành hai tuần để nói về nguồn gốc, khái niệm và cách triển khai zkSNARK.
Sau khi làm bài kiểm tra cuối kỳ trong hai ngày qua, tôi đã ôn đi ôn lại toàn bộ lớp học trong đầu trong suốt thời gian học. quá trình xem xét và cảm thấy rằng phần thú vị nhất là bằng chứng không có kiến thức. Tôi nghĩ mình sẽ tận dụng những ngày nghỉ lễ vừa qua để tổng hợp và chia sẻ với mọi người.
Lời nói đầu
Sau khi viết bản thảo đầu tiên, khi chia sẻ với bạn bè trên Proofread, tôi thấy nhiều bạn cho biết kiến thức nền tảng chưa đủ. Vì vậy, tôi đã thêm chương bổ sung này trước khi bắt đầu, đánh dấu phần đọc cơ bản cần thiết để hiểu bài viết này:
1. Merkle Tree/Merkle Proof: https://blog .csdn.net/wo541075754/article/details /54632929
2. Giao dịch bitcoin: https://blog.csdn.net/liduanwh/article/details/81141972
3. Mô hình UTXO: https://www.jianshu.com/p/02fd289e8853
4. Một số khái niệm mã hóa và giải mã cơ bản: https://www.jianshu.com/p/f7c729a41c9f
Sau khi đọc lời nói đầu, chúng ta có thể bắt đầu phần văn bản chính. Để nói rằng bằng chứng không có kiến thức thực sự hấp dẫn trong tầm nhìn của mọi người, chúng ta thực sự phải bắt đầu với Bitcoin.
Những thiếu sót của Bitcoin
Nếu bạn quen thuộc với Bitcoin, bạn nên biết rằng trên mạng Bitcoin, mọi giao dịch đều được công khai. 
Nếu A muốn trả cho B một khoản tiền thì A sẽ cầm một cái loa lớn cho mọi người nghe Mạng thông báo rằng cô ấy muốn tạo một giao dịch mới (Tx) và người thụ hưởng giao dịch này là khóa chung của B (P2PK) hoặc giá trị băm của khóa chung (P2PKH). Chỉ cần B nhìn thấy giao dịch, anh ta có thể ký chữ ký số bằng khóa riêng của mình để chứng minh rằng anh ta thực sự là chủ sở hữu khóa chung và tiêu tiền. Sau khi A gửi giao dịch để thanh toán cho B, với tư cách là người ngoài cuộc M trên mạng, cô ấy chỉ có thể thấy một chuỗi địa chỉ bị cắt xén aaaaa và x xu được thanh toán cho một chuỗi địa chỉ bị cắt xén bbbbb. Sau này B gửi tiền cho C thì chỉ thấy bbbbb gửi một khoản tiền cho ccccc. Chúng ta có thể thấy rằng các giao dịch bằng Bitcoin có tính kết nối cao. Dù không biết ai đã gửi tiền cho ai nhưng chúng ta có thể lần theo manh mối và tìm ra nhiều chuỗi giao dịch. Nếu mọi người dùng chỉ ngoan ngoãn gửi tiền qua lại thì Bitcoin thực sự tương đối an toàn. 
Khi người dùng nhìn thấu nó, không muốn chơi nữa và muốn rút tiền trên sàn giao dịch, thì thông tin giao dịch của toàn bộ chuỗi sẽ bị lộ. Các sàn giao dịch thường có chính sách KYC (Biết khách hàng của bạn) và mọi người dùng trao đổi tiền kỹ thuật số với tiền hợp pháp đều phải trải qua xác thực tên thật. Khi C rút tiền từ địa chỉ ccccc và bỏ trốn, sàn sẽ biết được sự thật rằng bbbbb đã từng gửi tiền cho C. Nếu C bị nghi ngờ rửa tiền thì anh ta chỉ cần im lặng chờ B rút tiền rồi chộp lấy. Đã có nhiều công ty ở Hoa Kỳ thực hiện phân tích chuỗi giao dịch trên Bitcoin, chẳng hạn như Chainalysis. Có lẽ tại thời điểm này, mọi người đều có thể cảm nhận được những thiếu sót của Bitcoin: khóa công khai được tạo ngẫu nhiên để thanh toán chỉ là ảo ảnh (tên mạng). Một khi việc xác thực tên thật được thực hiện ở đâu đó và tên mạng và tên thật được liên kết, thì số tiền trước đây đã được sử dụng trên Internet Mọi thứ bạn làm đều hiển thị và không có sự riêng tư nào cả. Điều này giống như việc ai đó dùng tên trực tuyến của mình để đăng lên diễn đàn Tieba nhằm troll mọi người, sau đó có người dùng mật khẩu để tìm số điện thoại di động của họ, sau đó dùng số điện thoại di động đó để tìm tên thật đã đăng ký của họ. doxxed.
Ẩn danh và bút danh
Sự hiểu biết của chúng ta về quyền riêng tư thực tế được chia thành hai loại. Đầu tiên là Anonymous, nghĩa là người dùng không cần tiết lộ bất kỳ thông tin nào liên quan đến mình, nó giống như một bức tường tỏ tình trong trường học, bạn sẽ không bao giờ biết ai đã viết nó mà chỉ viết những dòng chữ trên đó. 
Loại thứ hai là bút danh (Pseudonymous), nghĩa là người dùng công bố thông tin thông qua bút danh mà họ tạo ra . , giống như Tieba, nếu bạn không biết người dùng, bạn không thể thiết lập mối liên hệ giữa tên trực tuyến và tên thật, và bạn sẽ không biết người đăng tin nhắn là ai. Dựa trên phân tích như vậy, Bitcoin thực sự là một cơ chế bút danh: mỗi người dùng tạo ngẫu nhiên khóa công khai (bút danh) của riêng mình và thu tiền thông qua địa chỉ khóa công khai. Điều này giống như bốn người A/B/C/D sử dụng bí danh Xiao Ming/Xiao Hong/Er Gou/Xiao Gang để giao dịch ẩn danh trực tuyến, miễn là D tiết lộ danh tính của mình ở bất kỳ giai đoạn nào (chẳng hạn như trên sàn giao dịch) Rút tiền cash), thì mối quan hệ giữa Xiao Ming/Xiao Hong/Er Gou và D sẽ bị vạch trần ngay lập tức. Chúng ta có thể thảo luận về cách tăng cường tính bảo mật của Bitcoin từ hai phương pháp này.
Các phương pháp tăng cường quyền riêng tư
CoinJoin
Vì A thanh toán tiền cho B sẽ được nhìn thấy nên C Thanh toán tiền cho D cũng sẽ được những người khác nhìn thấy, vì vậy một số người nghĩ đến việc đơn giản ném cả bốn người ABC và D vào một giao dịch. Bởi vì giao dịch Bitcoin có thể có nhiều đầu vào và đầu ra, người ngoài cuộc sẽ thấy rằng trong một giao dịch, aaaaa và ccccc đều đặt x xu vào đó, sau đó bbbbb và ddddd nhận được khoản thanh toán. Bằng cách này, ngay cả khi sàn giao dịch biết rằng những địa chỉ này tương ứng với bốn người ABCD, sẽ rất khó để biết ai đã nhận tiền từ ai. 
Điều gì sẽ xảy ra nếu hai nhóm giao dịch vẫn quá khó xác định? Hai không đủ thành bốn, bốn không đủ thành tám, v.v. Kết hợp các giao dịch của nhiều người với nhau để gây nhầm lẫn cho công chúng và không thể truy tìm. Đây là CoinJoin. Nhược điểm của CoinJoin là gì? Trên thực tế, việc trộn lẫn nhiều giao dịch không thể ngăn cản hoàn toàn những người khác lần theo manh mối, chỉ có thể nói rằng xác suất bị truy tìm trên đường đi sẽ giảm đi. Và còn một điểm rất quan trọng nữa, nếu muốn kết hợp giao dịch AB và CD thì khối lượng giao dịch của chúng phải giống nhau. Nếu A trả cho B 10.000 xu và C trả cho D một xu thì chúng ta chỉ cần nhìn vào đầu vào và đầu ra là có thể chia ngay một giao dịch CoinJoin thành hai giao dịch độc lập. Vì vậy, việc trộn lẫn các giao dịch có số lượng giao dịch tương tự nhau cũng là một khó khăn không thể bỏ qua khi triển khai CoinJoin. Nếu bạn sử dụng cách phân loại ở trên để xem xét thì CoinJoin chỉ là một hoạt động ưa thích của hệ thống hiện có của Bitcoin và bản chất của nó vẫn là một cơ chế bút danh.
Giao dịch bí mật (CT)
Vì việc giấu tôi là ai rất rắc rối nên mọi người bắt đầu nghĩ: nếu chúng ta không giấu khóa công khai liên quan đến giao dịch, chúng ta cũng có thể ẩn số lượng giao dịch. Khi A gửi tiền cho B, dù B có bị lộ thì toàn mạng cũng không biết A đã đưa cho B bao nhiêu tiền. Nếu hoạt động này có thể thực hiện được thì chúng ta thậm chí có thể sử dụng Bitcoin để trả lương, mọi người chỉ có thể thấy tiền lương của bạn đến hàng tháng chứ không biết bạn kiếm được bao nhiêu tiền. Để triển khai cụ thể, trước tiên chúng ta cần hiểu một thuật toán mã hóa đặc biệt: mã hóa đồng cấu. Tóm lại, mã hóa đồng cấu là một thuật toán mã hóa đặc biệt cho phép bản mã duy trì các thuộc tính toán học ban đầu của nó. Chúng ta có thể giả sử rằng có một phương thức mã hóa E. Nếu E đồng cấu cộng, thì E(a) + E(b) = E(a+b). Mặt khác, nếu phép nhân đồng cấu thì E(a) x E(b) = E(a x b). Vì bài viết này là một bài báo khoa học phổ biến về zkp nên chúng tôi sẽ không đi sâu vào chi tiết về phương pháp triển khai cụ thể. Chúng ta chỉ cần hiểu rằng cả phương trình mã hóa elip và mô-đun số lớn trong RSA đều có một số thuộc tính đồng cấu.
Cam kết của Pederson
Quay lại chủ đề về khối lượng giao dịch ẩn. Nếu A có số dư 100 xu và trả 10 xu cho B thì giao dịch có thể sẽ như sau:
Kết hợp với tính đồng cấu bổ sung được đề cập ở trên, nếu chúng ta có phương thức mã hóa đồng cấu phụ gia E, chúng ta có thể chuyển đổi giao dịch này thành:
Chỉ cần số đầu tiên bằng tổng của hai số cuối, người ngoài cuộc sẽ không nhìn thấy khối lượng giao dịch cuối cùng, nhưng anh ta phải thừa nhận rằng A thực sự có điểm. Anh ta đã đưa ra một phần tiền cho B, sau đó trả lại một phần tiền cho A. Phương pháp này được gọi là Cam kết Pederson (Pederson Commitment), phương pháp này ẩn chính dữ liệu nhưng chứng minh mối quan hệ giữa các dữ liệu.
Lỗ hổng số âm
Sau khi đọc xong, một số bạn sẽ tìm ra một lỗ hổng rất lớn: Mặc dù Pederson đã hứa sẽ chứng minh sức mạnh của những con số , Mối quan hệ giữa nhưng không giới hạn phạm vi giá trị của bất kỳ số nào! Điều đó có nghĩa là A có thể làm điều gì đó xấu và gửi một giao dịch, nói rằng anh ta muốn trả -100 xu cho B, sau đó “tìm” 200 xu cho mình. A có thể sử dụng điều này để in tiền không giới hạn, từ đó phá hủy toàn bộ hệ thống. 
Làm cách nào để tránh sự tồn tại của số âm? Ngoài lời hứa của Pederson, chúng ta cũng cần một bộ bằng chứng khác để chứng minh mọi con số trong giao dịch đều dương. Nói cách khác, các số trong tất cả các giao dịch được giới hạn trong phạm vi (Bằng chứng phạm vi) từ 0 đến 2^256 (giá trị số nguyên dương tối đa). 
Nghe có vẻ không khó. Cách dễ nhất chắc chắn là công khai tất cả những con số này. Nhưng điều này vi phạm tiền đề che giấu khối lượng giao dịch. Vì vậy chúng ta phải tìm một phương pháp chứng minh khác không thể làm lộ ra các số gốc mà còn chứng minh được các thuộc tính của chúng (các giá trị nằm trong khoảng từ 0 đến 2^256). Có vẻ như bạn đang đúng? Đừng lo lắng, chúng ta hãy xem một câu hỏi khác.
Lỗ hổng quyền sở hữu
Trước khi chúng ta tiếp tục tìm hiểu sâu hơn, tôi muốn nhanh chóng chỉ ra rằng thực sự có một lỗ hổng lớn trong thỏa thuận này: quyền sở hữu không rõ ràng. Những người bạn biết về Bitcoin có thể biết rằng khi tạo giao dịch Bitcoin, bạn cần cung cấp UTXO Txid của giao dịch đầu vào. Điều này có thể nhanh chóng xác minh xem A, người đang chuẩn bị thanh toán cho B, có thực sự có tiền hay không. . Nhưng hiện tại, chúng tôi chưa từng đề cập đến bất kỳ điều gì liên quan đến giao dịch trước đó. Nói cách khác, vì toàn bộ mạng không biết A đã chi bao nhiêu tiền nên A chỉ cần thay đổi số đầu vào thành hàng chục nghìn hoặc hàng chục nghìn, sau đó phân bổ tất cả cho mình và bí mật đúc tiền cho mình. Làm thế nào để giải quyết vấn đề này? Có hai lựa chọn. Lựa chọn đầu tiên là tiếp tục giới thiệu cơ chế giao dịch Bitcoin và sử dụng đầu ra của giao dịch riêng tư trước đó làm đầu vào của giao dịch. Ý tưởng này hơi giống thay đổi vấn đề, giao dịch của tôi sử dụng kết quả của giao dịch trước đó, nên chỉ cần giao dịch trước đó không có vấn đề gì thì giao dịch của tôi sẽ không có vấn đề gì. 
Đây là vấn đề con gà và quả trứng, làm thế nào để tạo giao dịch riêng tư đầu tiên mà không gặp vấn đề gì Vải len? Chúng ta có thể chuyển đổi tiền thông thường thành đầu ra riêng tư thông qua một giao dịch đặc biệt. Đầu vào của giao dịch này là id giao dịch hiện có (Bitcoin UTXO) và đầu ra trở thành đầu ra riêng tư. Bằng cách này chúng ta đã tạo ra quả trứng sớm nhất. (Giao dịch được bảo vệ của ZCash dựa trên nguyên tắc này) Giải pháp thứ hai là chứng minh đầu vào của A thực sự thuộc về A. Các hệ thống như Ethereum có khái niệm về trạng thái thế giới. Trạng thái thế giới là sự cân bằng và trạng thái hiện tại của tất cả người dùng và hợp đồng thông minh trên toàn bộ chuỗi. Nói chung, một nút hoàn chỉnh sẽ giữ lại toàn bộ trạng thái thế giới (kích thước lớn), trong khi nút nhẹ chỉ cần lưu Merkle Commit của trạng thái thế giới. 
Ngoài việc gửi cam kết của Pederson và bằng chứng về khoảng thời gian, chúng tôi còn cung cấp bằng chứng bổ sung để chứng minh giao dịch Số được nhập phù hợp với số dư của A ở trạng thái thế giới ban đầu. Chúng ta có thể sử dụng Merkle Proof để đạt được bằng chứng này. Nhưng nếu chúng tôi gửi Merkle Proof trực tiếp, tất cả những người ngoài cuộc đều có thể thấy rằng giao dịch của A đã được thực hiện, điều này vi phạm tiền đề của giao dịch riêng tư. Vì vậy, hãy chỉ ra một lần nữa: Chúng ta vẫn cần mượn thuật toán bí ẩn được đề cập ở trên - nó không chỉ có thể che giấu câu trả lời (số dư của A), mà còn chứng minh rằng con số này thực sự thuộc về nhà nước thế giới.
ZCash: tất cả đều ẩn danh
Khi ý tưởng CT được đề xuất, nhiều người không hài lòng với hiện trạng và không khỏi thở dài: Sẽ thật tuyệt nếu ngay cả tên của chính họ cũng có thể được giấu kín.
Vì vậy, khái niệm ZeroCoin/ZeroCash đã được đề xuất: dựa trên CT, nhưng với một cơ chế mới bổ sung có thể khiến người dùng giao dịch ẩn danh. Lúc này, người ngoài cuộc C đang ăn dưa ở một bên thực sự rất bối rối, anh ta nhìn thấy một chuỗi mã bị cắt xén trôi nổi trên mạng, nhưng anh ta không biết đó là gì, nhưng anh ta phải tin rằng đó là sự thật. ZCash là loại tiền kỹ thuật số được triển khai dựa trên giao thức ZeroCoin/ZeroCash, có thể thực hiện các giao dịch ẩn danh hoàn toàn. Tôi sẽ không đi sâu vào chi tiết ở đây, nhưng nó vẫn dựa trên các công cụ mã hóa cũ: lời hứa của Pederson, bằng chứng khoảng thời gian, bằng chứng Merkle và ma thuật đen mà chúng ta đã đề cập: bản thân câu trả lời sẽ không được chứng minh. Câu trả lời được chờ đợi từ lâu đã xuất hiện và cuối cùng chúng ta cũng đi đến điểm nổi bật: Phương pháp chứng minh không tiết lộ câu trả lời này được gọi là bằng chứng không có kiến thức.
Bằng chứng không có kiến thức (zkSNARK)
Tôi tin rằng sau khi đọc phần trên, mọi người đều đã hiểu sơ bộ về vấn đề chúng ta muốn giải quyết. Chúng tôi muốn chứng minh mối quan hệ giữa các số, chẳng hạn như 0 <= a <= 2^256 hoặc SHA256(x) = y. Nhưng chúng tôi không muốn tiết lộ những con số này, chẳng hạn như a và x đã đề cập ở trên. Làm thế nào để xây dựng một hệ thống để đạt được điều này? Trước khi nói về chủ đề này, tôi muốn thay đổi suy nghĩ của mình và chia chủ đề này thành hai phần: không có kiến thức (zk) và bằng chứng (SNARK). Như thường lệ, trước tiên chúng ta sẽ nói về định nghĩa và ứng dụng, sau đó chúng ta sẽ nói về cách triển khai nó.
Bằng chứng (SNARK)
Hãy bắt đầu với bằng chứng. Tên đầy đủ của SNARK là Đối số kiến thức không tương tác ngắn gọn. Danh từ này bao gồm ba chiều:
Succinct: Bản thân bằng chứng phải đủ ngắn và tốt nhất là xác minh rằng bằng chứng đó là Độ phức tạp O(logN ) hoặc thậm chí O(1).
Không tương tác: Không có sự tương tác trong toàn bộ quá trình, điều đó có nghĩa là người tục ngữ có thể đưa ra rất nhiều điều vô nghĩa trên bàn của bạn. Chỉ cần lấy một chụp ảnh và rời đi. Bạn có thể xác minh bằng chứng của anh ấy bằng cách xác minh chuỗi ký tự bị cắt xén này sau.
Lý lẽ về kiến thức: Điều này tương đối khó hiểu. Nhưng ý nghĩa chung là điều bạn muốn chứng minh phải có khả năng diễn đạt được kiến thức (Proof of Knowledge). Việc chứng minh PoK liên quan đến một khái niệm trừu tượng hơn về bộ trích xuất, nội dung cụ thể vui lòng tham khảo bài viết của Thầy Guo Yu. Nhưng trong một câu, điều bạn chứng minh là có giá trị và có được nhờ tính toán chứ không phải là một mớ hỗn độn của những thứ khác.
Sau khi đọc định nghĩa, chúng ta sẽ thấy rằng chỉ cần có thể triển khai SNARK đã là rất mạnh rồi, đặc biệt là trong Be ngắn gọn về điều này. Chúng ta có thể nghĩ ngay đến một ứng dụng: nếu một tổ chức bên thứ ba lưu trữ một lượng lớn dữ liệu (cấp PB) trong cơ sở dữ liệu của chính họ. Nếu một cơ quan chính phủ muốn kiểm tra cơ sở dữ liệu của họ để đảm bảo rằng không có vấn đề gì với mọi điểm dữ liệu, thì trong trường hợp bình thường, họ có thể phải đọc từng dòng một, đọc từng petabyte dữ liệu và nó sẽ tồn tại mãi mãi. Lúc này SNARK bất ngờ xuất hiện, kích thước và thời gian của O(1) hoặc O(logN) đã chứng minh đầy đủ rằng mọi dữ liệu trong cơ sở dữ liệu khổng lồ này đều không có vấn đề gì, nghĩ đến điều đó cũng có chút thú vị. Hầu hết mọi người đều nghĩ rằng điều này là hoàn toàn không thể: Làm thế nào bạn có thể xác minh tính chính xác của hàng chục triệu con số chỉ bằng một vài con số? Hãy để lại sự hồi hộp và nói về nó sau.
Không có kiến thức (zk)
span>
Hãy quay trở lại con số không. Trên thực tế, không có kiến thức chỉ là một yêu cầu bổ sung dựa trên bằng chứng SNARK này: bản thân toàn bộ bằng chứng không thể tiết lộ bất kỳ dữ liệu nào liên quan đến câu trả lời cần được chứng minh. Định nghĩa chính thức về khái niệm không có kiến thức rất mơ hồ và đưa ra khái niệm về một trình mô phỏng. Để giới thiệu chi tiết, bạn vẫn có thể tham khảo bài viết của Thầy Quách Vũ nhưng tôi sẽ đề cập ngắn gọn ở đây. Tóm lại trong một câu: Dù hacker có thông minh đến đâu, anh ta cũng không thể trích xuất bất kỳ thông tin nào liên quan đến câu trả lời cho dù anh ta nhìn vào bằng chứng không có kiến thức như thế nào. Quay trở lại khái niệm về cơ sở dữ liệu kiểm toán chính phủ này, chúng ta có thể giả định rằng cơ sở dữ liệu này là tình trạng thuế của công ty. Chính phủ phải đảm bảo dữ liệu thuế chính xác, nhưng đối với các công ty, họ không muốn người kiểm tra nhìn thấy luồng hoạt động kinh doanh hàng ngày của họ, vì nó có thể liên quan đến bí mật kinh doanh. Tại thời điểm này, chỉ SNARK là không đủ. Chúng tôi cần zkSNARK để đạt được điều này: nó không chỉ có thể chứng minh rằng tôi đã nộp thuế trung thực mà còn ngăn bạn xem thông tin chi tiết về từng giao dịch của tôi.
Áp dụng bằng chứng không có kiến thức
Với zkSNARK, chúng ta có thể làm gì? Việc đầu tiên là thực hiện Giao dịch bí mật được đề cập ở trên. Cơ chế giao dịch riêng tư của ZCash dựa trên zkSNARK. Bằng cách này, các giao dịch tiền kỹ thuật số trở nên an toàn hơn nhiều. Điều thứ hai là chúng ta có thể sử dụng công nghệ này để giải quyết tốt hơn vấn đề hiệu quả của blockchain. Chắc chắn có một số phương pháp để mở rộng quy mô blockchain: hy sinh sức mạnh đồng thuận để tăng tốc độ sản xuất khối, kích hoạt chuỗi bên hoặc các kênh điểm-điểm ngoại tuyến tương tự như Lightning. 
Trên thực tế, có một ý tưởng khác tên là Rollup. Khái niệm tổng hợp có lẽ là do tải trên chuỗi chính quá lớn nên chúng tôi mở thêm một số máy chủ nhỏ, những máy chủ này cũng có thể nhận giao dịch, thực hiện xác thực giao dịch và sau đó thực hiện hàng loạt tất cả các giao dịch tích lũy trong một khoảng thời gian. vào chuỗi chính. Tuy nhiên, nếu quá trình cập nhật này vẫn yêu cầu gửi một lượng lớn thông tin giao dịch đến chuỗi chính thì ý nghĩa của Rollup này sẽ không tồn tại và nó sẽ không làm giảm tải cho bất kỳ chuỗi chính nào. Tại thời điểm này, SNARK rất hữu ích: thông qua SNARK (zk hoặc không), máy chủ Rollup có thể gửi bằng chứng rất ngắn đến chuỗi chính, chứng minh rằng một số lượng lớn giao dịch đều ổn và chuỗi chính chỉ cần tuân theo cuối cùng Kết quả là, thêm hoặc bớt một số UTXO và thế là xong. Thông qua ZK Rollup, chúng tôi có thể giảm đáng kể tải trọng trên chuỗi chính và thuê ngoài để xác minh thêm ở nơi khác. Điều thứ ba là chúng tôi thực sự có thể thực hiện các giao dịch với bên thứ ba. 
Giả sử A đang nghiên cứu về machine learning nhưng không có máy tính tốt nên cô ấy Lập kế hoạch giao nhiệm vụ huấn luyện mô hình cho B. Sau ba ngày, B nói với A rằng anh đã chạy xong và cần phải bắt A trả tiền trước rồi mới giao cho cô người mẫu đã qua đào tạo. A lo lắng rằng B đã không đào tạo mô hình một cách trung thực mà tạo ngẫu nhiên một số số ngẫu nhiên và đóng gói chúng nên muốn B xác minh mô hình cho A trước khi thanh toán. B lo lắng sau khi lấy được A sẽ lén lút lấy trộm mô hình rồi trực tiếp chặn mà không trả tiền cho anh ta. Đối mặt với loại vấn đề này, giải pháp truyền thống là ủy thác cho bên thứ ba hoặc thiết kế hợp đồng thông minh trên chuỗi để hoàn tất việc xác minh và trao đổi dữ liệu và tiền tệ. Giờ đây với zkSNARK, B có thể trực tiếp gửi zkSNARK đã được đào tạo theo mô hình cho A, chứng minh rằng anh ta thực sự đã chạy một cách trung thực trong ba ngày và không gian lận. A Sau khi vượt qua quá trình xác minh nhanh, bạn có thể tự tin chuyển tiền. Điều thứ tư là chúng ta hoàn toàn có thể chuyển quyền sở hữu dữ liệu. 
Giả sử cơ sở dữ liệu số dư tài khoản của ngân hàng là bảng sql thì 100 triệu khách hàng sẽ là 100 triệu bản ghi dòng. Các ngân hàng chi rất nhiều tiền mỗi năm để duy trì một hệ thống dữ liệu lớn như vậy. Nếu mọi người có thể di chuyển hàng hồ sơ của riêng mình cục bộ và duy trì dữ liệu tài khoản của riêng họ thì ngân hàng sẽ không phải tốn một xu nào. Lý do tại sao các ngân hàng không làm điều này là vì người dùng rất có khả năng giả mạo dữ liệu của họ để kiếm lời và biến 100 nhân dân tệ thành 1 triệu. zkSNARK chỉ đảm bảo rằng sẽ không có vấn đề gì với dữ liệu. Chúng ta có thể tưởng tượng một ngân hàng phân tán nơi số dư tiền gửi của mọi người được lưu trữ trong máy tính của họ. Khi A muốn chuyển tiền cho B, cô ấy cần gửi zkSNARK cho toàn bộ mạng để chứng minh việc khấu trừ số dư tài khoản của mình là chính xác. Điều này đảm bảo rằng A khấu trừ số tiền chuyển từ số dư của mình một cách trung thực. Khi B gửi tiền, anh ta cũng sẽ gửi zkSNARK tương ứng với số dư tăng lên. Chúng ta có thể áp dụng khái niệm này cho mọi lĩnh vực, mạng xã hội, ngân hàng, y tế, kiểm toán tài chính, thuế doanh nghiệp, v.v. Thông qua zkSNARK, các nhà cung cấp dịch vụ không cần phải trả tiền cho việc lưu trữ lượng lớn dữ liệu và người dùng không cần lo lắng về việc quyền riêng tư của họ bị đánh cắp.
Còn tiếp
Vì lý do không gian nên lần này tôi sẽ dừng ở đây. Tôi tin rằng sau khi xem điều này, mọi người sẽ hiểu sâu hơn về lý do tại sao cần có bằng chứng không có kiến thức và bằng chứng không có kiến thức có sức mạnh như thế nào. Bắt đầu từ bài viết tiếp theo, tôi sẽ viết sâu hơn, chủ yếu thảo luận về cấu trúc cụ thể của zkSNARK. Tái bút: Bằng chứng không có kiến thức và zkSNARK được sử dụng thay thế cho nhau trong bài viết này. Nhưng trên thực tế, zkSNARK chỉ là một trong những giao thức chứng minh không có kiến thức cổ điển hơn và còn nhiều giao thức khác sẽ được giới thiệu sau.
Đọc thêm
Nếu bạn muốn biết thêm về những gì được đề cập trong bài viết này, tôi đã thu thập Danh sách đọc và đặt nó bên dưới. Bạn bè quan tâm có thể đọc nó.
1. Bằng chứng không có kiến thức của giáo viên Guo Yu (tổng cộng bốn bài):https://www.jianshu.com/p/38ab873ae8ce
2. Chương trình học của Stanford và bài đọc sau giờ học: http://cs251.stanford.edu/syllabus.html
3. ZCash Xây dựng: https://www.jianshu.com/p/4db439c63a96
4. CoinJoin: https://en.bitcoin.it/wiki/CoinJoin
5. Giao dịch bí mật: https://www.jianshu.com/p/ 22664259dee3
Liên kết nguồn: weixin.qq.com
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia