Cảnh báo rủi ro: Đề phòng huy động vốn bất hợp pháp dưới danh nghĩa 'tiền điện tử' và 'blockchain'. — Năm cơ quan bao gồm Ủy ban Giám sát Ngân hàng và Bảo hiểm
Tìm kiếm
Đăng nhập
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
Xem thị trường
Ghi chú nghiên cứu bằng chứng không kiến ​​thức: bối cảnh và nguồn gốc
安比(SECBIT)实验室
特邀专栏作者
2019-12-24 03:12
Bài viết này có khoảng 7142 từ, đọc toàn bộ bài viết mất khoảng 11 phút
Ghi chú nghiên cứu bằng chứng không có kiến ​​​​thức của Stanford Scholar.

Tác giả của bài viết này, Dongze, là một đối tác nhỏ của Cộng đồng công nghệ Ambi, anh ấy hiện đang học tại Đại học Stanford, và hướng nghiên cứu của anh ấy là mật mã. Loạt bài viết này xuất phát từ ghi chú nghiên cứu của tác giả về khóa học Stanford nổi tiếng "CS 251: Tiền điện tử và công nghệ chuỗi khối". Người hướng dẫn khóa học là Dan Boneh, một bậc thầy về mật mã học.

Tác giả của bài viết này, Dongze, là một đối tác nhỏ của Cộng đồng công nghệ Ambi, anh ấy hiện đang học tại Đại học Stanford, và hướng nghiên cứu của anh ấy là mật mã. Loạt bài viết này xuất phát từ ghi chú nghiên cứu của tác giả về khóa học Stanford nổi tiếng "CS 251: Tiền điện tử và công nghệ chuỗi khối". Người hướng dẫn khóa học là Dan Boneh, một bậc thầy về mật mã học.

Học kỳ trước tại Stanford, tôi đã theo dõi Dan Boneh để tìm hiểu các công nghệ liên quan đến blockchain và tiền kỹ thuật số. Khác với các khóa học trước, khóa học năm nay có thêm một chương mới là chứng minh kiến ​​thức bằng không. Dan đáng yêu và bậc thầy của anh ấy, tiến sĩ Ben Fisch lần lượt đứng lớp cho chúng tôi và phải mất hai tuần để hoàn thành việc giải thích nguồn gốc, khái niệm và cách thực hiện zkSNARK không có kiến ​​thức.

lời tựa

lời tựa

Sau khi viết bản nháp đầu tiên, khi tôi chia sẻ nó với bạn bè của mình Hiệu đính, tôi thấy rằng nhiều bạn báo cáo rằng kiến ​​thức nền tảng không đủ. Vì vậy, tôi đã thêm phần 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:

Sau khi đọc lời nói đầu, chúng ta có thể bắt đầu văn bản.

tiêu đề cấp đầu tiên

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ẽ phát loa thông báo cho toàn mạng biết rằng mình 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 công khai của B (P2PK), Hoặc a hàm băm của khóa công khai (P2PKH). Miễn là B nhìn thấy giao dịch, anh ta có thể sử dụng khóa riêng của mình để ký chữ ký số để chứng minh rằng anh ta thực sự là chủ sở hữu của khóa chung, do đó sẽ tiêu tiền.

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ể nhìn thấy một chuỗi địa chỉ bị cắt xén aaaaaa để trả x xu cho một chuỗi địa chỉ bị cắt xén bbbbb. Sau đó, khi B gửi tiền cho C, anh ta chỉ thấy rằng 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 kết nối chặt chẽ với nhau. Mặc dù chúng tôi không biết ai đã gửi tiền cho ai, nhưng chúng tôi có thể tìm thấy nhiều chuỗi giao dịch bằng cách lần theo dây leo.

Nếu mọi người dùng chỉ gửi tiền qua lại một cách ngoan ngoãn, thì Bitcoin thực sự tương đối an toàn.

Khi người dùng xem qua, 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à tiền pháp định phải trải qua xác thực tên thật. Khi C rút tiền từ địa chỉ của ccccc và bỏ trốn, sàn giao dịch đã nắm được việc bbbbb đã gửi tiền cho C. Nếu C bị nghi ngờ rửa tiền, lúc này bạn chỉ cần im lặng đợi B rút tiền rồi bắt quả tang.

Đã 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.

tiêu đề cấp đầu tiên

Ẩn danh so với Bút danh

Sự hiểu biết của chúng tôi về quyền riêng tư thực sự đượ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 bản thân, nó giống như bức tường xưng tội trong trường học, dù sao bạn cũng sẽ không biết ai là người viết, trên đó có viết chữ.

Thứ hai là bút danh (Pseudonymous), nghĩa là người dùng đăng thông tin thông qua một bút danh do chính họ tạo ra, chẳng hạn như Tieba, nếu không biết rõ về người dùng thì không thể thiết lập kết nối từ tên hiển thị đến tên thật , và bạn không biết người đã đăng bài viết đó là ai.

Từ phân tích này, Bitcoin thực sự là một cơ chế bút danh: mỗi người dùng sẽ tạo ngẫu nhiên khóa công khai (bút danh) của riêng họ và nhận 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 lần lượt lấy bí danh là Xiaoming/Xiaohong/Ergou/Xiaogang để giao dịch ẩn danh trực tuyến, miễn là D tiết lộ danh tính của mình trong bất kỳ liên kết nào (chẳng hạn như trong giao dịch rút tiền mặt), thì mối quan hệ giữa Xiaoming/Xiaohong/Ergou và D sẽ bị phơi bày ngay lập tức.

tiêu đề cấp đầu tiên

tiêu đề phụ

CoinJoin

Vì khoản thanh toán của A cho B sẽ được người khác nhìn thấy và khoản thanh toán của C cho D cũng sẽ được người khác nhìn thấy, nên ai đó đã nghĩ ra cách nói rằng chỉ cần ném cả bốn người, ABCD, vào một giao dịch. Bởi vì các giao dịch Bitcoin có thể có nhiều đầu vào và đầu ra, nên người ngoài cuộc sẽ thấy rằng trong một giao dịch, cả aaaaa và ccccc đều bỏ x xu vào đó, sau đó bbbbb và ddddd nhận được tiền. Theo 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, thì rất khó để biết ai đã nhận tiền từ ai.

Điều gì sẽ xảy ra nếu hai bộ giao dịch vẫn còn quá dễ xác định? Hai không đủ cho bốn, bốn không đủ cho 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ể theo dõi được. Đây là CoinJoin.

Nhược điểm của CoinJoin là gì? Trên thực tế, trộn lẫn nhiều giao dịch không thể ngăn chặn hoàn hảo việc mọi người bị người khác bắt được, chỉ có thể nói rằng nó làm giảm xác suất bị bắt trọn đường. Và còn một điểm rất quan trọng nữa, nếu bạn muốn trộn các giao dịch của 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, chúng tôi chỉ cần xem xét đầ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. Do đó, việc trộn và khớp 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.

tiêu đề phụ

Giao dịch bí mật (giao dịch riêng tư/CT)

Vì việc giấu tôi là ai quá rắc rối, 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ể giấu số tiền của giao dịch. Khi A gửi tiền cho B, kể cả khi B bị lộ thì cả mạng lưới cũng không biết A đã chuyển cho B bao nhiêu tiền.

Nếu hoạt động này có thể được thực hiện, 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 rằng tiền lương hàng tháng của bạn đến, nhưng họ không biết bạn kiếm được bao nhiêu.

Để nhận ra phương pháp, trước tiên chúng ta phải 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ả định rằng có một phương pháp mã hóa E, nếu E là đồng cấu cộng, thì E(a) + E(b) = E(a+b). Ngược lại, nếu phép nhân đồng dạng thì E(a) x E(b) = E(axb).

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 hiểu chi tiết về phương pháp thực hiện 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 hình nhất định.

Cam kết cá nhân

Chuyển sang chủ đề về khối lượng ẩn. Nếu A có số dư 100 xu và trả 10 xu cho B, thì giao dịch sẽ như sau:

Kết hợp với phương thức mã hóa đồng hình cộng gộp đã đề cập ở trên, nếu chúng ta có phương thức mã hóa đồng cấu cộng tính E, chúng ta có thể chuyển đổi giao dịch này thành:

Miễn là số đầu tiên bằng tổng của hai số cuối cùng, 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ự đã đưa một phần tiền cho B, và sau đó là một phần của tiền đã được trả lại cho A . Phương pháp này được gọi là Cam kết Pederson (Pederson Cam kết), nó giấu 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 điều này, một số bạn sẽ phát hiện ra một lỗ hổng lớn: Mặc dù Pederson đã hứa sẽ chứng minh mối quan hệ giữa các con số, nhưng ông không giới hạn phạm vi giá trị của bất kỳ con số nào! Nghĩa là, A có thể chơi mánh khóe, gửi một giao dịch, nói rằng anh ta muốn trả -100 xu cho B, sau đó "tìm" cho mình 200 xu. Bằng cách này, phương trình vẫn đúng. A có thể sử dụng điều này để in tiền vô tận, do đó phá hủy toàn bộ hệ thống.

Làm thế nào để tránh sự tồn tại của số âm? Ngoài lời hứa của Pederson, chúng tôi cần một bộ bằng chứng khác để chứng minh rằng các con số trong tất cả các 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ị tối đa của một số nguyên dương).

Nghe có vẻ không khó, và cách dễ nhất chắc chắn là tiết lộ tất cả những con số này. Nhưng điều này đánh bại 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, nghĩa là không chỉ ra các số ban đầu mà còn chứng minh các đặc điểm của chúng (giá trị nằm trong khoảng từ 0 đến 2^256). Điều đó nghe giống như một điểm? Đừng lo lắng, chúng ta hãy xem xét một câu hỏi khác.

kẽ hở sở hữu

Trước khi chúng ta tiếp tục, tôi muốn nhanh chóng chỉ ra rằng thực sự có một lỗ hổng lớn trong giao thức này: quyền sở hữu không xác định.

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, để bạn có thể nhanh chóng xác minh xem A, người sẽ trả tiền cho B, có thực sự có tiền hay không.

Nhưng bây giờ, chúng tôi chưa đề cập bất cứ điều gì về việc trỏ đến giao dịch trước đó. Có nghĩa là, vì toàn bộ mạng lưới không biết A tiêu bao nhiêu, nên A có thể chỉ cần thay đổi số đầu vào thành hàng chục nghìn và hàng chục nghìn, sau đó gọi tất cả chúng cho chính 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.

Giải pháp đầu tiên là tiếp tục giới thiệu cơ chế giao dịch của Bitcoin và sử dụng đầu ra của giao dịch riêng tư cuối cùng làm đầu vào của giao dịch. Kiểu suy nghĩ này hơi giống với sự biến đổi của vấn đề, tôi sử dụng kết quả của giao dịch trước cho giao dịch này, miễn là giao dịch trước đó ổn, giao dịch của tôi cũng ổn.

Đâ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 sự cố?

Chúng tôi 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), sau đó đầu ra trở thành đầu ra riêng tư. Bằng cách này, chúng tôi gọi những quả trứng sớm nhất. (Giao dịch được bảo vệ của ZCash là nguyên tắc này)

Sơ đồ thứ hai là để chứng minh rằng đầu vào của A thực sự thuộc về A. Trong các hệ thống như Ethereum, có một khái niệm về Trạng thái Thế giới. Trạng thái thế giới là số dư 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 một nút nhẹ chỉ cần lưu Cam kết Merkle của trạng thái thế giới.

Ngoài việc gửi cam kết Pederson và bằng chứng về khoảng thời gian, chúng tôi cung cấp thêm bằng chứng để chứng minh rằng số được nhập trong giao dịch 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 Bằng chứng Merkle để đạt được bằng chứng này.

Nhưng nếu chúng tôi trực tiếp gửi Bằng chứng Merkle, thì tất cả những người ngoài cuộc đều có thể thấy đầu vào giao dịch của A, điều này vi phạm tiền đề của các giao dịch riêng tư. Vì vậy, một lần nữa: chúng ta vẫn cần mượn thuật toán bí ẩn đã đề 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ề trạng thái của thế giới.

ZCash: Tất cả ẩn danh

Khi khái niệm về 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 cảm thấy: Giá mà họ có thể giấu cả tên của chính mình thì tốt biết mấy.

Vì vậy, khái niệm ZeroCoin/ZeroCash đã được đưa ra: dựa trên CT, nhưng với việc bổ sung một cơ chế mới, có thể khiến người dùng giao dịch trở nên ẩn danh. Lúc này người ngoài cuộc C đang ăn dưa quả thực sửng sốt, nhìn thấy trên mạng trôi nổi một chuỗi ký tự bị cắt xén, tuy không biết là cái gì nhưng cũng phải tin đó là sự thật.

ZCash là một loại tiền kỹ thuật số được triển khai dựa trên giao thức ZeroCoin/ZeroCash, có thể đạt được các giao dịch hoàn toàn ẩn danh. Tôi sẽ không giới thiệu quá nhiều ở đây, nhưng tôi vẫn dựa vào các công cụ mật mã cũ: lời hứ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 đã nói đến: những công cụ không tiết lộ câu trả lời .chứng minh.

tiêu đề cấp đầu tiên

Zero Knowledge Proof (zkSNARK)

Tôi tin rằng sau khi đọc những điều trên, mọi người đều có hiểu biết chung 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 để lộ những con số này, chẳng hạn như a và x ở 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: kiến ​​thức bằng không (zk) và bằng chứng (SNARK).

tiêu đề phụ

Bằng chứng (SNARK)

Hãy bắt đầu với bằng chứng.

Tên đầy đủ của SNARK là Succinct Non-interactive Argument of Knowledge. Danh từ này bao gồm ba chiều kích:

  • Ngắn gọn (Cô đọng): 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 đó có độ phức tạp O(logN) hoặc thậm chí là O(1).

  • không tương tác: Không có sự tương tác trong toàn bộ quá trình, tức là người nói có thể ném một chuỗi lớn mã bị cắt xén lên bàn của bạn rồi rời đi, và bạn có thể xác minh bằng chứng của anh ta bằng cách xác minh chuỗi mã bị cắt xén sau đó.

  • Biểu hiện của kiến ​​thức (Argument of Knowledge): Điều này tương đối tối nghĩa. Nhưng ý nghĩa chung là điều muốn chứng minh phải thể hiện được tri 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 là công cụ trích xuất (Extractor), nội dung cụ thể các bạn tham khảo bài viết của anh Guo Yu. Nhưng trong một câu, những gì bạn chứng minh là có giá trị và có được thông qua tính toán, không dây dưa với 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à về độ ngắn gọn.

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 các 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 từng điểm dữ liệu, trong các trường hợp bình thường, họ có thể phải đọc từng dòng, đọc từng PB dữ liệu và xem hết thời gian. Lúc này, SNARK đột nhiên xuất hiện, kích thước và thời gian O(1) hoặc O(logN) hoàn toàn chứng minh rằng mỗi một dữ liệu trong cơ sở dữ liệu khổng lồ này đều không có vấn đề gì, nghĩ tới cũng có chút kích động. Hầu hết mọi người đều cho rằng điều này là hoàn toàn không thể: Làm sao có thể xác minh độ chính xác của hàng chục triệu con số chỉ với một vài con số?

tiêu đề phụ

Kiến thức không (zk)

Hãy quay trở lại với con số không kiến ​​thức (zero knowledge).

Trên thực tế, kiến ​​thức bằng không chỉ là một yêu cầu bổ sung trên cơ sở 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 chứng minh. Định nghĩa chính thức về khái niệm kiến ​​thức bằng không rất mù mờ, đưa ra khái niệm về trình giả lập (Simulator). Để giới thiệu chi tiết, bạn có thể tham khảo bài viết của anh Guo Yu, và tôi sẽ chỉ đề cập đến nó ở đây. Trong một câu, cho dù hacker có nhìn vào bằng chứng không kiến ​​thứ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 chính câu trả lời.

Quay trở lại khái niệm cơ sở dữ liệu kiểm toán chính phủ này, chúng ta có thể cho rằng cơ sở dữ liệu này là tình hình nộp thuế của công ty. Chính phủ phải đảm bảo rằng dữ liệu thuế phải chính xác, nhưng đối với các công ty, họ không muốn thanh tra nhìn thấy dòng chảy kinh doanh hàng ngày của họ, bởi vì nó có thể liên quan đến bí mật thương mại. Tại thời điểm này, một SNARK đơn thuần là không đủ, chúng tôi cần zkSNARK để đạt được:

tiêu đề phụ

Các ứng dụng của Zero-Knowledge Proofs

Với zkSNARK, chúng ta có thể làm gì?

Điều đầu tiên là giao dịch riêng tư (Giao dịch bí mật) nói trên có thể được thực hiện. Cơ chế giao dịch riêng tư của ZCash được triển khai 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 vấn đề hiệu quả của chuỗi khối tốt hơn. Giờ đây, chắc chắn có một số phương pháp để mở rộng quy mô chuỗi khối: hy sinh sức mạnh đồng thuận để tăng tốc độ tạo khối, cho phép chuỗi bên hoặ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 gọi là Rollup. Khái niệm về Rollup có lẽ là tải trên chuỗi chính quá lớn, vì vậy chúng tôi mở thêm một số máy chủ nhỏ, cũng có thể nhận giao dịch, xác thực giao dịch và sau đó gộp tất cả các giao dịch được tích lũy trong một khoảng thời gian Cập nhật lên chuỗi chính. Tuy nhiên, nếu quá trình cập nhật vẫn cần 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 không tồn tại và nó sẽ không giảm bất kỳ tải nào trên chuỗi chính. Tại thời điểm này, SNARK có ích: thông qua SNARK (có thể là zk hoặc không), máy chủ Rollup có thể gửi một bằng chứng rất ngắn cho 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 kết quả cuối cùng, cộng hoặc trừ một số UTXO và bạn đã hoàn tất. Thông qua ZK Rollup, chúng tôi có thể giảm đáng kể tải cho chuỗi chính và thuê ngoài nhiều xác minh hơn ở những nơi khác.

Điều thứ ba, chúng tôi thực sự có thể nhận ra giao dịch cho bên thứ ba.

Giả sử A đang nghiên cứu về học máy nhưng không có máy tính tốt, vì vậy cô dự định thuê ngoài nhiệm vụ đào tạo mô hình cho B. Sau ba ngày, B nói với A rằng anh ta đã chạy xong và cần yêu cầu A trả tiền trước khi cung cấp cho cô người mẫu đã được đào tạo. A lo lắng rằng B không có mô hình đào tạo trung thực mà tạo ra một số ngẫu nhiên một số ngẫu nhiên và đóng gói nó, vì vậy anh ta muốn B xác minh mô hình cho A trước khi trả tiền. B lo lắng rằng A sẽ bí mật sao chép mô hình sau khi lấy được rồi trực tiếp chặn anh ta mà không trả tiền.

Đố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ế một 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 cũng như tiền tệ. Giờ đây với zkSNARK, B có thể trực tiếp gửi zkSNARK để đào tạo người mẫu cho A, chứng minh rằng anh ấy đã thực sự chạy trong ba ngày một cách trung thực và không gian lận. Đ Sau khi xác minh nhanh chóng được thông qua, bạn có thể yên tâm chuyển tiền.

Điều thứ tư, chúng ta hoàn toàn có thể chuyển quyền sở hữu dữ liệu.

Giả sử rằng cơ sở dữ liệu số dư tài khoản của ngân hàng là một bảng SQL, thì 100 triệu khách hàng sẽ có 100 triệu hàng bản ghi. Hàng năm, các ngân hàng cần phải chi rất nhiều tiền để 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 cục bộ hàng hồ sơ của riêng họ và duy trì dữ liệu tài khoản của riêng họ, thì ngân hàng sẽ không cần phải chi 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ó thể giả mạo dữ liệu của chính họ để kiếm lợi, biến 100 nhân dân tệ thành 1 triệu.

zkSNARK chỉ có thể đả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 chính họ. Khi A muốn chuyển tiền cho B, cô ấy cần gửi zkSNARK cho toàn mạng để chứng minh rằng số dư trong tài khoản của cô ấy đã được khấu trừ chính xác, để đảm bảo rằng A khấu trừ trung thực số tiền chuyển từ số dư của chính cô ấy. Khi B vào tài khoản, anh ấy cũng sẽ gửi zkSNARK tương ứng với số dư tăng lên.

còn tiếp

còn tiếp

Vì lý do không gian, lần này tôi sẽ dừng ở đây. Có lẽ khi nhìn thấy điều này, mọi người đã hiểu sâu hơn về lý do tại sao cần có bằng chứng không kiến ​​thức và bằng chứng không kiến ​​thức mạnh mẽ như thế nào.

Ở phần đầu của bài viết tiếp theo, tôi sẽ viết sâu hơn một chút, chủ yếu thảo luận về cấu trúc cụ thể của zkSNARK.

đọc thêm

đọc thêm

Nếu bạn muốn biết thêm về nội dung đượ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ó.

Những người bạn quan tâm đến bằng chứng không có kiến ​​​​thức có thể thêm WeChat Xiaoan @SECBIT (id: secbit_xiaoanbi) vào cuộc thảo luận nhóm

开发者
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Tài khoản chính thức
https://twitter.com/OdailyChina