Metropolis Ethereum: Thuật toán Zk-SNARKs là gì?

5:05 PM - 29/08/17 - 962 lượt xem - Link rút gọn: https://tiendientu.org?p=9248

Ethereum bước vào giai đoạn Metropolis cùng với những thay đổi khác nhau làm cho Ethereum thêm trừu tượng. Một trong những thay đổi này là sự giới thiệu về “Zero Knowledge Succint Non-Interactive Argument Of Knowledge“, còn gọi là Zk-Snarks. Zk-Snarks chạy trên ý tưởng về “Zero Knowledge Proofs” (Thuật toán “chứng minh không tiết lộ thông tin”)

Trong bài này, chúng ta sẽ nói về Zero Knowledge Proofs và ứng dụng của Zk-Snarks trong công nghệ Blockchain.

Zk-SNARKs là gì?

Zero Knowledge Proofs xuất hiện trong những năm 1980 nhờ vào các nhà nghiên cứu là MIT Shafi Goldwasser, Silvio Micali và Charles Rackoff. Họ đã làm việc về các vấn đề liên quan đến tích hợp hệ thống chứng minh (proofs system), trong đó một trao đổi thông điệp giữa người cung câp (Prover) với người xác minh (Verifier) để thuyết phục họ có kiến thức về một bằng chứng nhất định mà không tuyên bố kiến thức đó là gì.

Trước khi đánh dấu cột mốc trong nghiên cứu của chính mình, hầu hết các hệ thống chứng minh được dựa trên tính chất “soundness”. Nó luôn luôn được giả định “prover” có thể là một trong những mã độc hại được lồng vào một kịch bản để đánh lừa người kiểm tra. Ba nhà nghiên cứu này đặt khá nhiều câu hỏi về sự trung thực của người kiểm tra thay vì là người tiên phong, nhiều câu hỏi liệu người kiểm tra có làm rò rỉ kiến thức và cũng có những mối quan ngại về số lượng kiến thức mà người kiểm tra sẽ biết trong quá trình xác minh.

Những câu hỏi cũng là một trong những câu hỏi nổi tiếng nhất liên quan đến việc bảo vệ mật khẩu. Giả sử bạn muốn đăng nhập vào một trang web bằng mật khẩu. Giao thức chuẩn là khách hàng (bạn) sẽ viết mật khẩu và gửi nó tới máy chủ, sau đó máy chủ sẽ hash mật khẩu và so sánh phương trình với bảng hash mà họ đã lưu trữ trong hệ thống. Nếu thông số nhập vào chính xác, sau đó bạn có thể nhập vào hệ thống.

Bạn có thể nhìn thấy lỗ hổng lớn trong hệ thống này phải không?

Máy chủ có phiên bảng mã khóa mật khẩu rõ ràng, và sự riêng tư của bạn nằm ở máy chủ (người kiểm chứng trong kịch bản này). Nếu máy chủ bị xâm nhập hoặc tấn công, mật khẩu của bạn sẽ nằm trong tay kẻ tấn công và hậu quả không thể tính toán nổi. Để đối phó với những tình huống này, Zero Knowledge Proofs là hoàn toàn cần thiết và phá vỡ lối mòn lạc hậu theo mọi nghĩa.

Có hai bên khi nói đến Zero Knowledge Proofs (như đã nêu ở trên), Prover và Verifier. Lệnh Zero Knowledge lên Prover có thể chứng minh cho Verifier rằng họ có hiểu biết nhất định mà không nói cho Prover biết họ biết những gì

Tính chất của Zero Knowledge Proofs

Đối với một ZKP để làm việc cần đáp ứng một số thông số nhất định:

  • Tính hoàn thiện: Nếu câu lệnh đúng thì Verifier sẽ chấp nhận sự chứng minh được kiểm chứng bởi Prover.
  • Tính bền vững: Nếu Prover không trung thực, Verifier từ chối kiểm chứng của Prover.
  • Zero-Knowledge: Nếu tuyên bố là đúng, Verifier sẽ không quan tâm đến câu lệnh của Prover

Đó là nhìn nhận cơ bản về Zero-Knowledge Proofs, hãy xem thêm một số ví dụ trước khi chúng ta đi sâu vào zk-snark và ứng dụng trong Blockchain.

Trường hợp số 1: Cave của Alibaba

Trong ví dụ này, Prover (P) truyền thông tin cho Verifier (V) rằng họ biết mật khẩu cửa sau và muốn chứng minh điều đó cho V mà không cần nhập mật khẩu.Vì vậy, đây là những gì trông giống như: Prover đi theo bất kỳ đường nào A hoặc B, giả sử quyết định đi qua A và tới cánh cửa bí mật ở phía sau. Khi đến đó, người kiểm chứng V đến gần lối vào, không biết đường dẫn mà P thực sự đã đi và trình bày muốn thấy P xuất hiện từ B.

Trong sơ đồ, như bạn thấy, Prover thực sự xuất hiện trong đường B. Tuy nhiên, nếu đây là may mắn trùng hợp? Điều gì sẽ xảy ra nếu Prover không biết mã vượt qua, và đi theo con đường B đã bị mắc kẹt ở cửa cùng tài sản tuyệt đối, Verifier bảo anh ta xuất hiện từ con đường B, cái mà ban đầu họ đã biết?

Vì vậy, để kiểm tra tính hợp lệ, thử nghiệm được thực hiện nhiều lần. Nếu Prover có thể xuất hiện đúng đường dẫn mỗi lần, nó sẽ chứng minh cho Verifier rằng người này thực sự biết mật khẩu ngay cả khi người kiểm tra không biết mật khẩu thực sự là gì.

Hãy xem ba tính chất của Zero Knowledge được thỏa mãn như thế nào trong ví dụ này:

  • Tính hoàn thiện: Các định lí đúng có thể chứng minh
  • Tính bền vững: Nếu Prover không trung thực, họ không thể đánh lừa Verifier bởi vì cuộc kiểm tra đã được thực hiện nhiều lần.
  • Zero-Knowledge: Verifier không bao giờ biết mã mật khẩu là gì, nhưng đã bị thuyết phục rằng Prover đã sở hữu nó.

Trường hợp # 2 Tìm kiếm Waldo

Đối với những người không biết, Finding Waldo là một trò chơi mà bạn phải tìm “Waldo” trong một biển người. Chỉ cần cung cấp cho bạn một ý tưởng cơ bản, đây là những vềgì các trò chơi :

Có vẻ khá đơn giản phải không?. Tìm anh chàng này trong biển người. Vậy khái niệm Zero Knowledge ở đâu?. Hãy tưởng tượng có hai người Anna và Carl. Anna nói với Carl rằng cô ấy biết Waldo ở đâu nhưng cô ấy không muốn cho anh ấy biết chính xác anh ấy ở đâu. Vì vậy, làm thế nào cô ấy có thể chứng minh với anh ta rằng cô ấy đã tìm thấy Wally mà không tiết lộ chính xác vị trí của Waldo?

Đã có một bài báo thú vị của Naor, Naor và Reingold cho thấy sự xuất hiện của Zero Knowledge trong trò chơi này. Có một “giải pháp công nghệ tầm trung” và “một giải pháp công nghệ tầm thấp”. Hãy thảo luận về cả hai.

Giải pháp công nghệ tầm trung

Lý do tại sao giải pháp này là “công nghệ tầm trung” là bởi vì Prover và Verifier của chúng tôi cần truy cập vào một máy photocopy để thực hiện công việc này. Vì vậy, đây là cách nó hoạt động. Đầu tiên, Anna và Carl sẽ làm một bản sao của trò chơi gốc. Trong khi đảm bảo Carl không thấy bản sao, sau đó sẽ cắt bỏ Waldo khỏi bản sao và tiêu hủy các phần còn lại. Sau đó cô ấy cho Carl thấy hình cắt của Waldo, điều đó chứng minh cô ấy biết Wally ở đâu mà ko cần chỉ định vị trí chính xác của Wally cho Carl.

Có vấn đề với giải pháp này. Mặc dù nó đáp ứng các tiêu chí của “Zero Knowledge”, tuy nhiên nó không đáp ứng tiêu chuẩn về tính bền vững. Có nhiều cách mà Anna có thể lừa ở đây. Cô có thể đã có một Wally ngẫu nhiên cắt ngay từ đầu và có thể đã chỉ cho Carl mà không thực sự không biết nơi Wally ở đâu. Vì vậy, giải pháp cho điều này là gì?

Các giải pháp cho điều này là sự thử nghiệm tỉ mỉ và cẩn thận. Thứ nhất, Anna và Carl sẽ chụp một bản sao của trò chơi. Sau đó, Carl sẽ vẽ một mẫu đặc biệt ở mặt sau của photocopy. Sau đó, Carl sẽ hộ tống Anna đến một căn phòng nơi cô sẽ bị cô lập và không có cơ hội gian lận gì. Nếu Anna đi ra với một sự cắt bỏ của Wally, sau đó Carl có thể được thuyết phục cô ấy thực sự biết nơi Waldo đã không tiết lộ các giải pháp. Họ có thể lặp lại thí nghiệm này nhiều lần và Carl có thể so sánh các điểm cắt khác nhau của Waldo thậm chí còn hơn nữa chắc chắn về tính hợp lệ của Anna.

Giải pháp công nghệ thấp

Giải pháp này yêu cầu các thiết bị rất cơ bản. Ý tưởng rất đơn giản. Lấy một cái bìa cứng lớn, một cái có kích thước gấp đôi của bức hình và cắt ra một hình chữ nhật nhỏ trên đó. Bây giờ, khi Carl không tìm kiếm, Anna có thể di chuyển các tông trên bức hình cho đến khi thấy Waldo. Bây giờ, cô ấy có thể nói với Carl nhìn vào và đây là những gì anh ta sẽ thấy

Vì vậy, trong khi Carl có thể có được một ý tưởng rất cơ bản về nơi Waldo thực sự có thể được, ông không biết vị trí chính xác. Anna đã chứng minh Carl rằng cô ấy biết Waldo đang ở đâu mà không xác định chính xác vị trí của mình.

Trường hợp số 3: Sudoku

Một ứng dụng tuyệt vời làm ví dụ cho Zero Knowledge là Sudoku. Nó có hình dạng một bảng 9X9 trông giống như sau:

Ý tưởng là để điền vào mỗi hàng, mỗi cột và mỗi khối 3×3 với số từ 1-9 và không có số lặp lại chính. Vì vậy, giải pháp cho câu đố ở trên sẽ như sau:

Như bạn thấy, mỗi hàng, cột và khối 3×3 là duy nhất và không một số nào được lặp lại. Chúng ta hãy trở lại với những người bạn cũ Anna và Carl. Anna đã tìm ra giải pháp cho câu đố Sudoku và Carl, người hoài nghi anh ta không tin cô ấy và muốn Anna chứng minh cô ấy thực sự biết giải pháp. Anna muốn chứng tỏ sự trung thực của mình, nhưng đồng thời, cô ấy không muốn Carl biết giải pháp chính xác của câu đố. Làm thế nào cô ấy sẽ giải thích về nó? Anna sẽ sử dụng Zero Knowledge để chứng minh tính hợp lệ của yêu cầu của mình.

Thứ nhất, Carl sẽ chạy các giải pháp Sudoku thông qua một chương trình máy tính đã được xác minh về tính trung thực và chương trình sẽ chạy các con số thông qua một mật mã thay thế được lựa chọn ngẫu nhiên. Đối với vấn đề cụ thể này, mật mã mà chương trình đã chọn là:

Chương trình và mật mã được chọn sao cho mỗi chữ số có cùng một cơ hội được chuyển đổi thành bất kỳ số nào khác. Về cơ bản, 1 có nhiều cơ hội chuyển đổi như 3 và 4 có nhiều cơ hội chuyển đổi như 9… Vì vậy, sử dụng mật mã này cho chúng ta giải pháp sau đây cho câu đố ở trên:

Anna đã nhận được giải pháp chuyển đổi, hãy nhớ Carl vẫn không biết giải pháp ban đầu là gì và anh ta cũng không có giải pháp chuyển đổi. Vì vậy, những gì Anna làm bây giờ là cô giấu tất cả các con số trong câu đố bằng cách sử dụng một ” cơ chế lockbox”, về cơ bản Carl sẽ không thể nhìn thấy bất kỳ con số nào thay vào đó sẽ thấy một lưới 9×9 trống rỗng trước mặt anh ta.

Ngay bây giờ Carl có 28 sự lựa chọn trước mặt anh ta:

  • Tiết lộ một hàng.
  • Tiết lộ một cột.
  • Tiết lộ một hộp 3X3.
  • Tiết lộ phiên bản chuyển đổi của câu đố gốc.

Giả sử Carl muốn biết dòng thứ 3 trông như thế nào:

Đây là những gì anh ta sẽ thấy. Carl sẽ thấy rằng mỗi số duy nhất trong hàng vì mọi số có thể có trong giải pháp ban đầu có cùng một xác suất được chuyển đổi thông qua mật mã, Carl sẽ không có đầu mối như những gì các giải pháp ban đầu được.

Bây giờ giả sử, Carl quyết định sẽ lựa chọn lần cuối cùng và muốn xem những gì các câu đố ban đầu trông giống như khi chuyển đổi:

Một lần nữa, kể từ khi mật mã đã được chọn ngẫu nhiên và tất cả các số có cùng một xác suất chuyển đổi, Carl sẽ không biết giải pháp ban đầu là gì. Carl giờ đây có thể trải qua tất cả 28 sự lựa chọn của mình và cuối cùng anh ta sẽ hài lòng với tính hợp lệ của tuyên bố của Anna.

Tại sao?

Bởi vì, nếu Anna thực sự ăn gian ở đây, không có cách nào cô ấy có thể tìm ra một mật mã để đưa ra những giải pháp độc đáo cho 28 lựa chọn của Carl. Nếu Carl chỉ chọn một lựa chọn, cơ hội của Anna để thoát khỏi gian lận là 27/28. NHƯNG nếu Carl đã chọn bài kiểm tra ngẫu nhiên nhiều lần, giả sử anh ta chọn kiểm tra nó 150 lần, sự lựa chọn của Anna để thoát khỏi gian lận giảm xuống (27/28) ^ 150 là <0,5%.

Vì vậy, hãy kiểm tra các tính chất Zero Knowledge của kịch bản này:

  • Tính hoàn thiện: Chương trình mật mã đang được sử dụng đã được xác minh, cả Anna và Carl đều theo giao thức.
  • Tính bền vững: Nếu Carl thử nghiệm ngẫu nhiên 150 lần, cơ hội của Anna để thoát khỏi gian lận là <0,5%.
  • Zero Knowledge: Anna không bao giờ phải tiết lộ cho Carl các giải pháp ban đầu là gì.

Proof vs Proof Of Statements

Bây giờ chúng ta biết các khía cạnh lý thuyết của Zero Knowledge Proofs và ứng dụng của trong các ví dụ khác nhau, vậy ứng dụng thực tế của Zero Knowledge Proofs trong Blockchain là gì?. Tại sao tất cả mọi người đều khao khát Zcash triển khai ZKP (Zero Knowledge Proofs) và cả Ethereum cũng đang làm điều tương tự?. Trước khi mở rộng về điều đó, biết khái niệm lý thuyết vẫn quan trọng hơn.

Chúng tôi đang chứng minh điều gì từ việc sử dụng ZKP?. Trong một phạm vi rộng, có hai câu lệnh mà bạn có thể chứng minh bằng cách sử dụng ZKP. Proofs hay còn gọi là sự kiện (Facts) và bằng chứng về kiến thức (Proof Of Knowledge).

  • Proofs: Đây là những sự thật nội tại về vũ trụ mà bạn có thể muốn chứng minh thông qua ZKP. Ví dụ. “Số X thuộc về một nhóm Y”.
  • Proof Of Knowledge: Bạn cũng có thể muốn chứng minh bạn có kiến thức về một ý tưởng đặc biệt mà không tiết lộ kiến thức cụ thể đó là gì. Như có thể thấy trong các ví dụ của Sudoku, Waldo và Alibaba Cave đưa ra ở trên.

Điều quan trọng cần lưu ý sự khác biệt giữa hai điều này bởi vì chúng hoàn toàn khác nhau. Trong thế giới Cryptocurrency, chúng tôi chủ yếu tập trung xung quanh “Proof Of Knowledge”. Một trong những đột phá quan trọng nhất trong Proof Of Knowledge thông qua Zero Knowledge Proofs đã đến khi Claus-Peter Schnorr vào những năm 1980 đã đưa ra giao thức xác định Schnorr. Giao thức này đưa ra các khái niệm cơ bản về mã hoá hiện đại và hiển thị cách Zero Knowledge có thể được tích hợp nhuần nhuyễn vào các phương pháp mã hoá hiện đại.

Sự đồng nhất của giao thức Schnorr

Để hiểu rõ Schnorr Identification là gì, chúng ta mang lại những người bạn cũ của chúng ta là Anna và Carl. Anna đã thông báo với thế giới cô ấy có một key công khai và có thể chấp nhận và nhận thông tin thông qua nó. Carl, luôn luôn hoài nghi, nghĩ Anna đang nói dối. Cách duy nhất để Anna có thể chứng minh sự trung thực của mình là bằng cách đưa private key của mình cho Carl, nhưng cô ấy không muốn tiết lộ private key của cô ấy.

Vậy, Anna sẽ tỏ ra là người biết về private key của cô ấy mà không tiết lộ điều đó như thế nào?. Đây là nơi mà giao thức Schnorr thực hiện. Trước khi chúng ta bắt đầu hiểu giao thức làm việc như thế nào, có một số thông số bạn cần biết:

  • P = Số nguyên tố.
  • Q = yếu tố của p-1.
  • “A” sao cho a ^ q = 1 mod p. ‘

Bây giờ hãy ghi nhớ, trong giao thức Schnorr, 3 biến này là biến toàn cục. Có nghĩa là bất cứ ai cũng có kiến thức về những kịch bản mà 3 biến đưa ra.

Bây giờ chúng ta đến với 2 key, private key bí mật mà chúng ta sẽ gọi là “s” và khóa công khai mà chúng ta sẽ gọi là “v”.

S có thể là bất kỳ giá trị nào miễn là 0 <s <q.V = a ^ -s mod q.

Khóa công khai “v” sẽ là tri thức toàn cầu và công cộng cùng với p, q và a. Tuy nhiên, chỉ có Anna mới biết “s”, vì đó là private key của cô ấy.

Vì vậy, bây giờ chúng ta đã xác định biến, hãy xem cách trao đổi thông tin và tính hợp lệ của tuyên bố của Anna có thể hoạt động mà không cần cô ấy tiết lộ private key.

Anna ký và gửi một tin nhắn được mã hóa.

Giả sử Anna muốn gửi một thông báo “M” cho Carl được mã hoá bằng private key của cô ấy. Làm thế nào cô ấy sẽ làm điều đó nếu cô ấy phải tuân theo quy trình của Schnorr?

Thứ nhất, cô ấy sẽ chọn một số ngẫu nhiên “r” sao cho 0 <r <q.

Bây giờ cô ấy sẽ tính giá trị x như sau: X = a ^ r mod p.

Bây giờ cô đã tính giá trị của X, cô ấy sẽ nối tiếp điều này với thông điệp ban đầu. Hàm Concatenate là gì?. Giả sử chúng ta có hai từ “hello” và “world”. Nếu chúng ta nối hai cái này, thì chúng ta sẽ có được “hello world”. Gắn kết cơ bản có nghĩa là thêm hai dây và nối nó thành một.

Vì vậy, cô ấy sẽ nối ghép M và X để có được M || X. Và cô ấy sẽ lưu trữ các hash của giá trị này trong e.

Về cơ bản, e = H (M || X) trong đó H () là hash.

Cuối cùng, khi tất cả điều này hoàn thành, cô ấy sẽ làm một phép tính cuối cùng. Cô ấy sẽ nhận được một giá trị “y” như sau: Y = (r + s * e) mod q

Bây giờ tất cả các tính toán đã qua, cô ấy sẽ gửi các thông tin sau đây cho Carl:

  • – Thông báo “M”.
  • – Các chữ ký e và y.

Carl nhận được thông báo và xác minh Anna về Proof Of Knowledge

Bây giờ Carl đã nhận được các thông tin sau đây từ Anna: Thông điệp (M) và chữ ký (e và y).

Cùng với đó, Carl có những phần thông tin sau đây được công khai cho mọi người:

  • – Khoá công khai của Anna “v”.
  • – Số nguyên tố mà Anna chọn “p”.
  • – “Q” đó là yếu tố của “p-1” mà Anna đã chọn.
  • – Và “a” như vậy mà một ^ q = 1 mod p, điều này cũng Anna đã chọn.

Bây giờ, Carl sẽ phải tính X’: X ‘= a ^ y * v ^ e mod p.

Bây giờ chúng ta hãy làm một số thay thế đơn giản:

Chúng ta biết rằng v = a ^ -s, chúng ta hãy thay thế bằng phương trình trên và chúng ta nhận được:

  • – X ‘= a ^ y * a ^ -se = a ^ (y-s * e).
  • – Bây giờ chúng ta cũng biết rằng y = r + s * e.
  • – Có nghĩa là: r = y-s * e.

Hãy thay thế giá trị này theo phương trình trên:

  • – Chúng ta có được: X ‘= a ^ r.
  • – Như chúng ta đã thấy ở trên: X = a ^ r.
  • – Vì vậy, về mặt kỹ thuật: X = X ‘.

Nhưng Carl không biết giá trị của “X” bởi vì anh ta chưa bao giờ nhận được giá trị đó.

Tất cả những gì nhận được là: Thông điệp M, chữ ký (e và y) và chủ của các biến công cộng (khóa công khai “v”, p, q, và a).

Ông không bao giờ nhận được “X” nhưng ông biết rằng nếu Anna nói sự thật thì X ‘phải bằng X.

Nhưng, anh ta biết giá trị của e và thông điệp M.

Vì vậy, Carl sẽ giải quyết cho e bằng cách làm như sau:

E = H (M || X ‘).

Lưu ý rằng trước đó chúng ta giải được cho e bằng cách làm: H (M || X).

Vì vậy, bởi logic đó, nếu hai giá trị của e đến như nhau, nghĩa là X = X ‘.

Điều này cũng có nghĩa là Anna đã thực sự có chìa khoá riêng và cô ấy không nói dối.

Vì vậy, chúng ta hãy chạy toàn bộ kịch bản thông qua ba tính chất của Zero Knowledge Proofs:

  • Tính hoàn thành: Carl bị thuyết phục bởi sự trung thực của Anna vì X = X ‘.
  • Tính bền vững: Đó là cách duy nhất của Anna có thể chứng minh sự trung thực của cô ấy là bằng cách sử dụng chìa khóa riêng của cô. Cô ấy không thể nói dối về việc có được chìa khoá riêng.
  • Zero Knowledge: Carl không bao giờ biết được Private key của Anna.

Giao thức của Schnorr cho phép áp dụng phương thức mã hóa toàn cầu rất thực tế bởi ZKP.

Làm thế nào để ZPK trở nên không cần ảnh hưởng tương tác?

Với hệ thống ZPK trước đây thì có một vấn đề lớn. Để nó hoạt động, các prover và verifier phải trực tuyến cùng một lúc. Nói cách khác, quá trình này là “tương tác”. Điều này làm cho toàn bộ hệ thống không hiệu quả và hầu như không thể mở rộng. Verifier có thể không trực tuyến cùng lúc với những Prover không? Cần có một hệ thống để làm cho nó hiệu quả hơn.

Vào năm 1986, Fiat và Shamir đã phát minh ra phương pháp heuristic của Fiat-Shamir và đã thay đổi thành công trong việc biến ZPK tương tác thành ZPK không cần ảnh hưởng tương tác lẫn nhau. Điều này giúp toàn bộ giao thức hoạt động mà không cần 2 bên phải trên mạng trực tuyến cùng lúc. Thủ tục đằng sau nó là rất đơn giản.

Vì vậy, để cung cấp cho bạn một ví dụ, đây là bằng chứng bằng chứng kiến thức không được sử dụng để làm việc trước khi Fiat và Shamir.

Hãy chứng minh điều này bằng cách sử dụng logarithms rời đơn giản.

  • Anna muốn chứng minh với Carl rằng cô ấy biết một giá trị x sao cho y = g ^ x vào một cơ sở g.
  • Anna chọn một giá trị ngẫu nhiên v từ một tập các giá trị Z, và tính t = g ^ v và gửi t tới Carl.
  • Carl lấy một giá trị ngẫu nhiên c từ tập Z và gửi nó cho Anna.- Anna tính r = v-c * x và trả về r cho Carl.
  • Carl kiểm tra nếu t = g ^ r ^ c giữ hay không (vì r = vc * x, y = g ^ x và bằng sự thay thế đơn giản, g ^ (vc * x) * g ^ c * x = g ^ v = T).
  • Carl không biết giá trị của x, bằng cách chỉ kiểm tra nếu t = g ^ r * y ^ c ông có thể xác minh rằng Anna thực sự biết giá trị của x.

Bây giờ trong khi sự tương tác ở trên là Zero Knowledge, vấn đề là Anna và Carl cần phải luôn online cùng nhau giao dịch để nó hoạt động.

Làm sao Anna có thể chứng minh cho Carl rằng cô ấy có kiến thức về điều gì đó mà không có Carl trực tuyến? Cô ấy có thể làm như vậy bằng cách sử dụng một hash mật mã đơn giản, như Fiat và Shamir giả thuyết.

Hãy xem cách ví dụ trên sẽ hoạt động theo cách không tương tác:

  • -Anna muốn chứng minh với Carl rằng cô ấy biết một giá trị x sao cho y = g ^ x vào một cơ sở g.
  • -Anna chọn một giá trị ngẫu nhiên v từ một tập các giá trị Z, và tính t = g ^ v.Anna tính c = H (g, y, t) trong đó H () là hàm băm.
  • -Anna tính r = v – c * x.
  • Carl hoặc bất cứ ai cũng có thể kiểm tra nếu t = g ^ r * y ^ c.

Vì vậy, như bạn thấy ZKP thực hiện không bị gián đoạn. Và đây là những gì đã đặt nền móng cho Zk-Snarks.

Ứng dụng của Zk-Snarks là gì?

Zk-Snarks là viết tắt của ” Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”. Khả năng của nó trong công nghệ Blockchain hiện đại rất rộng lớn. Để hiểu được ứng dụng của nó, điều quan trọng là phải biết smart contract hoạt động như thế nào. Một smart contract về cơ bản là một bản giao kèo của quỹ được kích hoạt một khi một chức năng cụ thể được thực hiện.

Ví dụ. Anna đặt 100 ETH thông qua smart contract mà cô có được với Carl. Carl phải hoàn thành một vài task cụ thể. Khi đã xong, Carl sẽ nhận được 100 ETH từ smart contract.

Điều này trở nên phức tạp khi các câu hỏi mà Carl phải hoàn thành chính là các lớp bảo mật. Giả sử bạn đã tham gia smart contract với Anna. Bây giờ, bạn sẽ chỉ nhận được khoản thanh toán nếu bạn hoàn thành câu A, B và C. Nếu bạn không muốn tiết lộ chi tiết về A, B, và C bởi vì nó là bí mật đối với công ty bạn và bạn không muốn bất kỳ đối thủ cạnh tranh nào biết bạn dự định làm gì?

Những gì Zk-Snarks làm chứng minh rằng những bước này đã được áp dụng trong smart contract mà cần tiết lộ các bước thực sự là gì. Nó hữu ích ở chỗ sẽ bảo vệ bạn và sự riêng tư của công ty bạn. Nó chỉ có thể tiết lộ một phần của quá trình mà không cần hiển thị toàn bộ quá trình và chứng minh rằng bạn đang trung thực về các yêu cầu của bạn.

ZkSnarks làm việc như thế nào?

Một Zk-Snark bao gồm 3 thuật toán: G, P và V.

G là một máy tạo ra key có đầu vào “lambda” (phải giữ bí mật và không được tiết lộ trong bất kỳ trường hợp nào) và một chương trình C. Sau đó tiến hành tạo ra hai key công khai, một key chứng minh và một key pk xác minh. Những key này đều công khai và có sẵn cho bất kỳ bên liên quan nào.

P là Prover sẽ sử dụng 3 khoản như đầu vào. key chính pk, đầu vào ngẫu nhiên x, được công bố công khai, và lệnh riêng tư mà họ muốn chứng minh kiến thức mà không tiết lộ thông tin thực sự. Hãy gọi đó là câu lệnh cá nhân “w”. Thuật toán P tạo ra một chứng minh prf sao cho: prf = P (pk, x, w).

Thuật toán Verifier V đã cơ bản trả về một biến boolean. Một biến Boolean chỉ có hai lựa chọn, nó có thể là TRUE hoặc nó có thể là FALSE. Vì vậy, Verifier nắm chìa khóa xác minh, đầu vào công khai x và proof prf đầu vào như:

V (vk, x, prf)

Mặt khác.. và trả về giá trị TRUE nếu Prover là đúng và sai.

Bây giờ, về tham số lambda. Giá trị của “Lambda” phải được bảo mật bởi vì bất cứ ai có thể sử dụng nó để tạo ra bằng chứng giả mạo. Những bằng chứng giả mạo này sẽ trả về giá trị của TRUE bất kể người bán hàng thực sự có kiến thức về lệnh cá nhân “w” hay không.

Chức năng của ZkSnarks

Để hiển thị chức năng của Zk-Snark, chúng ta sẽ sử dụng cùng một ví dụ mà Christian Lundkvist đã sử dụng trong bài viết của mình cho Consensys. Đây là những gì chương trình ví dụ như:

Hàm C (x, w)

Return (sha256 (w) == x);

Về cơ bản, hàm C lấy 2 giá trị là đầu vào, giá trị băm công khai “x” và câu bí mật cần phải được xác minh là “w”. Nếu giá trị hash SHA-256 của w bằng “x” thì hàm trả TRUE nếu không nó trả về FALSE. (SHA-256 là hàm được sử dụng trong Bitcoin).

Chúng ta hãy mang lại những người bạn cũ của chúng ta Anna và Carl cho ví dụ này. Anna là người tiên phong và Carl người hoài nghi là người kiểm tra.

Điều đầu tiên mà Carl – Verifier phải làm là tạo ra chìa khóa chứng minh và xác minh sử dụng máy G. Đối với điều này, Carl cần tạo ra giá trị ngẫu nhiên “lambda”. Tuy nhiên, như đã nêu ở trên, anh ta cần phải cẩn thận với Lambda bởi vì anh ta không thể để Anna biết giá trị của nó để ngăn cô không tạo ra bằng chứng giả mạo.

Đây là những gì sẽ diễn ra:

G (C, lambda) = (pk, vk).

Bây giờ khi hai key được tạo ra, Anna cần phải chứng minh tính hợp lệ của câu lệnh bằng cách tạo ra proof. Cô ấy sẽ chứng minh rằng cô ấy biết giá trị bí mật “w”, hash (khi phân tích cú pháp thông qua SHA-256) để cho ra kết quả x. Vì vậy, thuật toán chứng minh cho thế hệ chứng minh sẽ như sau:

Prf = P (pk, x, w).

Bây giờ cô đã tạo ra bằng chứng “prf”, cô sẽ đưa ra giá trị cho Carl người cuối cùng sẽ chạy các thuật toán xác minh của Zk-Snarks:

V (vk, x, prf).

Ở đây, vk là khóa xác minh và x là giá trị hash đã biết và prf là bằng chứng cho thấy anh ta đã nhận được từ Anna. Nếu thuật toán này trả về TRUE thì điều này có nghĩa là Anna đã thành thật và thực sự có giá trị bí mật “w”. Nếu nó trả về FALSE thì điều đó có nghĩa là Anna đã nói dối về việc biết “w” là gì.

Việc sử dụng ZkSnarks trong Cryptocurrency

Zcash là một Cryptocurrency được đưa ra bởi công ty Zerocoin Electic Coin vào ngày 9.9.2016 và là ví dụ đầu tiên về việc Cryptocurrency kết hợp theo khái niệm công nghệ Blockchain với Zk-Snarks. Nhằm mục đích cung cấp không gian giao dịch an toàn và bảo vệ an toàn cho người dùng mà không tiết lộ thông tin chi tiết (chẳng hạn địa chỉ của họ) cho bất kỳ ai.

Ethereum muốn tích hợp Zk-Snarks khi sắp sửa vào giai đoạn Metropolis và cách mà họ dự định làm là tạo ra một liên minh với Zcash, bao gồm việc trao đổi với nhau về giá trị. Nhà phát triển chính của Zcash – Zooko Wilcox, đã đưa ra một bài trình bày trong DevCon2 ở Thượng Hải để khám phá tương lai của một liên minh như vậy. Theo ông, có 3 cách mà Z-Cash và zark-snarks có thể được tích hợp với Ethereum.

Phương pháp đầu tiên được gọi là Baby Zoe (Zoe = Zcash on Ethereum). Thêm một trình biên dịch zk-snark trên Ethereum và tạo ra một smart contract Zcash nhỏ trên Ethereum. Để xem liệu hệ thống Ethereum có thể tạo ra một zk-snark cho phép DAPP trên đầu trang của Blockchain của nó hay không.

Phương pháp thứ hai là để tích hợp tính toán Ehereum bên trong Blockchain Zcash. Như Wilcox nói, tài sản lớn nhất của Ethereum là khả năng tính toán của nó và mọi người muốn xem chúng có thể tích hợp zk-snark vào một Blockchain dựa trên zk-snark như Zcash hay không. Mọi người có thể tạo ra DAPPS trên một Blockchain được thực hiện trên ZPK? Đó là những gì mà họ đang chờ đợi.

Thứ ba và điều thú vị nhất là Dự án Alchemy. Đây là kết nối cơ bản và sáng tỏ của hai Blockchain mà có thể liên tục di chuyển giữa bên hai. Cách mà Zcash lên kế hoạch thực hiện bằng cách nhân bản BTC Relay. Đây là một kịch bản Ethereum viết ra để tạo ra khách hàng Bitcoin bên trong Ethereum. Các Zcash clone sẽ sử dụng cùng một khái niệm để tạo ra một khách hàng Zcash bên trong Ethereum.

Nếu công trình này hoạt động thì chúng tôi sẽ có hệ thống tiền tệ phân cấp đầu tiên trên thế giới tạo điều kiện cho việc tạo ra DAPPS với ZPK trong đó.

Nhìn về tương lai

Không có nghi ngờ rằng sự ra đời của Zero Knowledge Proofs sẽ là sự thay đổi lớn trong trò chơi của Ethereum. Trong một thế giới ngày càng cởi mở, được kết nối và có giám sát, bất kỳ sự riêng tư nào cũng được hoan nghênh. Làm thế để sự tích hợp xảy ra nhưng vẫn đi theo các khái niệm lý thuyết của chính nó, người ta không thể không cảm thấy hào hứng.

Video đề xuất: Hướng dẫn sử dụng Ledger Nano S

Hướng dẫn sử dụng Ledger Nano SRất xin lỗi các bạn vì đợt trước admin cung cấp thông tin thiếu về việc chứa các đồng Altcoin.LITECOIN, DOGECOIN, ZCASH, DASH, STRATIS đều chứa được vào ví Ledger thông qua phần mềm "Ledger Wallet Bitcoin" nhé.Khi bạn vào phần mềm thì mở App coin nào trên Ledger thì sẽ sử dụng cho coin đó trên Ledger Wallet Bitcoin nhé!Thành thật xin lỗi các bạn vì sự thiếu cập nhật này.Đăng ký mua Ledger Nano S và Ledger tại: https://tiendientu.org/san-pham/thiet-bi-tru-lanh

Posted by Tiền điện tử on Saturday, 29 July 2017

Nicholas – tiendientu.org

blockgeeks.com – 29.8.2017

Từ khoá: , , ,