Diễn giải chuyên sâu của HashKey Capital về ZK (1): các nguyên tắc và ngành lịch sử
HashKey Hub
2022-08-10 10:44
本文约5198字,阅读全文需要约21分钟
Sắp xếp ra một số thay đổi về lý thuyết và mức độ ứng dụng của ZKP ngay từ đầu.

Nguồn ban đầu: Vốn HashKey

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

1. Lịch sử của chứng minh không tri thức

Hệ thống bằng chứng không kiến ​​thức hiện đại bắt nguồn từ bài báo do Goldwasser, Micali và Rackoff đồng xuất bản: Sự phức tạp về kiến ​​thức của các hệ thống bằng chứng tương tác (GMR85), được đề xuất vào năm 1985 và xuất bản năm 1989. Bài báo này chủ yếu giải thích lượng kiến ​​thức cần được trao đổi sau K vòng tương tác trong một hệ thống tương tác để chứng minh rằng một tuyên bố là đúng. Nếu kiến ​​thức được trao đổi có thể bằng 0, thì nó được gọi là bằng chứng không kiến ​​thức. Người ta cho rằng người chứng minh (prover) có nguồn tài nguyên vô hạn, trong khi người xác minh (verifer) chỉ có nguồn tài nguyên hạn chế. Vấn đề với các hệ thống tương tác là bằng chứng không hoàn toàn có thể chứng minh được về mặt toán học, nhưng đúng về mặt xác suất, mặc dù xác suất là nhỏ (1/2^n).

Do đó, hệ thống tương tác không phải là hoàn hảo mà chỉ là gần như hoàn thiện.Hệ thống không tương tác (NP) ra đời trên cơ sở này là hoàn chỉnh và nó trở thành sự lựa chọn hoàn hảo cho hệ thống bằng chứng không kiến ​​thức.

Hệ thống bằng chứng không kiến ​​thức trong những năm đầu còn thiếu hiệu quả và khả năng sử dụng, vì vậy nó luôn dừng ở mức lý thuyết và không bắt đầu phát triển cho đến 10 năm trở lại đây. đã đi đầu và đã trở thành Một hướng đi rất quan trọng. Cụ thể, việc phát triển một giao thức bằng chứng không kiến ​​thức có mục đích chung, không tương tác, giới hạn kích thước bằng chứng là một trong những hướng khám phá quan trọng nhất.

Về cơ bản, bằng chứng không kiến ​​thức là sự đánh đổi giữa tốc độ chứng minh, tốc độ xác minh và kích thước của khối lượng bằng chứng. Giao thức lý tưởng là bằng chứng nhanh, xác minh nhanh và khối lượng bằng chứng nhỏ.

Bước đột phá quan trọng nhất của bằng chứng không kiến ​​thức là bài báo năm 2010 của Groth về Các đối số không kiến ​​thức không dựa trên ghép nối ngắn, cũng là người tiên phong về mặt lý thuyết của nhóm zk-SNARK quan trọng nhất trong ZKP.

Tiến bộ quan trọng nhất trong việc áp dụng bằng chứng không kiến ​​thức là hệ thống bằng chứng không kiến ​​thức được Z-cash sử dụng vào năm 2015, hệ thống này đã thực hiện việc bảo vệ quyền riêng tư của giao dịch và số tiền. Sau đó, nó đã phát triển thành sự kết hợp giữa zk-SNARK và thông minh hợp đồng và zk-SNARK đã tham gia các kịch bản ứng dụng Rộng hơn.

Một số thành tích học tập quan trọng trong giai đoạn này bao gồm:

Pinocchio (PGHR13) vào năm 2013: Pinocchio: Tính toán có thể kiểm chứng gần như thực tế, nén thời gian xác minh và chứng minh vào phạm vi áp dụng, cũng là giao thức cơ bản được Zcash sử dụng.

Groth16: Về kích thước của các đối số không tương tác dựa trên ghép nối vào năm 2016, giúp đơn giản hóa kích thước của bằng chứng và cải thiện hiệu quả xác minh, hiện là thuật toán cơ bản ZK được sử dụng rộng rãi nhất.

Bulletproofs (BBBPWM17) Bulletproofs: Bằng chứng ngắn cho các giao dịch bí mật và hơn thế nữa vào năm 2017 đã đề xuất thuật toán Bulletproof, một bằng chứng không kiến ​​thức không tương tác rất ngắn không yêu cầu cài đặt đáng tin cậy và thuật toán này sẽ được áp dụng cho Monero sau 6 tháng, nghĩa là rất nhanh Liên kết lý thuyết với ứng dụng.

Vào năm 2018, zk-STARKs (BBHR18) Tính toàn vẹn tính toán an toàn hậu lượng tử, có thể mở rộng và minh bạch đã đề xuất một giao thức thuật toán ZK-STARK không yêu cầu cài đặt đáng tin cậy. Đây là một hướng phát triển ZK đáng chú ý khác. Dựa trên điều này, StarkWare , dự án ZK quan trọng nhất, đã ra đời.

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

2. Giới thiệu tóm tắt về ứng dụng bằng chứng không kiến ​​thức

Hai ứng dụng được sử dụng rộng rãi nhất của bằng chứng không kiến ​​thức là bảo vệ quyền riêng tư và mở rộng dung lượng. Trong những ngày đầu, với sự ra mắt của giao dịch riêng tư và một số dự án nổi tiếng như Zcash và Monero, giao dịch riêng tư từng trở thành một hạng mục rất quan trọng. loại dự án đại diện bắt đầu chậm lại, từ từ bước vào trại của tầng thứ hai và thứ ba (không thoát khỏi giai đoạn lịch sử). Ở cấp độ ứng dụng, nhu cầu mở rộng dung lượng đã được nâng lên đến mức giới hạn.Khi Ethereum 2.0 (đã được đổi tên thành lớp đồng thuận) chuyển đổi thành một lộ trình tập trung vào rollup vào năm 2020, chuỗi ZK đã chính thức trở lại với sự chú ý của ngành và đã trở thành tâm điểm.

Giao dịch riêng tư: Có nhiều dự án đã thực hiện các giao dịch riêng tư, bao gồm Zcash sử dụng SNARK, Tornado, Monero sử dụng chống đạn và Dash. Nói một cách chính xác, Dash không sử dụng ZKP, mà là một hệ thống trộn tiền tệ đơn giản và thô sơ, chỉ có thể ẩn địa chỉ chứ không thể ẩn số tiền, sẽ được bỏ qua ở đây.

Mô tả hình ảnh

Source: Demystifying the Role of zk-SNARKs in Zcash

  • Trong giai đoạn Thiết lập hệ thống, khóa kiểm chứng (đa thức bằng chứng mã hóa) và khóa xác minh được tạo với sự trợ giúp của chức năng KeyGen

  • Phương pháp mã hóa ECIES (Lược đồ mã hóa tích hợp đường cong Elliptic) trong giai đoạn CPA được sử dụng để tạo khóa công khai và khóa riêng

  • Trong giai đoạn MintingCoins, số lượng tiền mới được tạo. Cam kết về địa chỉ công khai và tiền xu

  • Trong giai đoạn rót, bằng chứng zk-SNARK được tạo và bằng chứng được thêm vào sổ giao dịch rót

  • Trong giai đoạn Xác minh, người xác minh xác minh xem khối lượng giao dịch của Mint và Pour có chính xác hay không

  • Trong giai đoạn nhận, người nhận sẽ nhận được tiền. Nếu bạn muốn sử dụng số tiền đã nhận, hãy tiếp tục gọi Rót để tạo thành xác minh zk-SNARK, lặp lại các bước 4-6 ở trên để hoàn tất giao dịch.

Zcash vẫn còn những hạn chế trong việc sử dụng zero-knowledge, tức là nó dựa trên UTXO nên một số thông tin giao dịch chỉ được che chắn chứ không thực sự được che đậy. Khó mở rộng quy mô (kết hợp với các ứng dụng khác) do mạng riêng biệt dựa trên thiết kế của Bitcoin. Tỷ lệ sử dụng che chắn (nghĩa là giao dịch riêng tư) thấp hơn 10%, cho thấy các giao dịch riêng tư chưa được mở rộng thành công. (từ 2202)

Nhóm trộn lớn duy nhất được sử dụng bởi Tornado là tổng quát hơn và dựa trên một mạng "đã được chứng minh" như Ethereum. Torndao về cơ bản là một nhóm trộn tiền tệ sử dụng zk-SNARK và cài đặt đáng tin cậy dựa trên bài báo Groth 16. Các tính năng mà Tornado Cash có thể cung cấp bao gồm:

  • Chỉ có thể rút tiền đã gửi

  • Không có đồng xu nào có thể được rút hai lần

  • Quá trình chứng nhận bị ràng buộc với thông báo vô hiệu hóa (Nullifier) ​​của tiền tệ và băm có cùng chứng nhận nhưng Nullifiers khác nhau sẽ không cho phép rút tiền

  • Bảo mật có bảo mật 126-bit và sẽ không bị suy giảm do thành phần

Vitalik đã đề cập rằng so với việc mở rộng dung lượng, quyền riêng tư tương đối dễ đạt được, nếu có thể thiết lập một số giao thức mở rộng thì quyền riêng tư về cơ bản sẽ không thành vấn đề.

Mở rộng: Việc mở rộng ZK có thể được thực hiện trên mạng lớp thứ nhất, chẳng hạn như Mina, hoặc có thể được thực hiện trên mạng lớp thứ hai, nghĩa là zk-roll up. Bài đăng của Vitalik vào năm 2018, Mở rộng quy mô trên chuỗi có khả năng đạt ~500 giao dịch/giây thông qua xác thực giao dịch hàng loạt.

Mô tả hình ảnh

Source: Polygon

Ưu điểm và nhược điểm của ZK rollup:

Ưu điểm: chi phí thấp, không giống như OP sẽ bị tấn công bởi nền kinh tế, không cần trì hoãn giao dịch, có thể bảo vệ quyền riêng tư và nhanh chóng đạt được mục đích cuối cùng

Mô tả hình ảnh

Nguồn: Nghiên cứu Ethereum

Mô tả hình ảnh

Source: Starkware

Các dự án ZKrollup cạnh tranh nhất hiện có trên thị trường bao gồm: StarkNet của Starkware, zkSync của Matterlabs và Aztec connect của Aztec, Hermez và Miden của Polygon, Loopring, Scroll, v.v.

Về cơ bản, lộ trình kỹ thuật nằm ở việc lựa chọn SNARK (và phiên bản cải tiến của nó) và STARK, cũng như hỗ trợ cho EVM (bao gồm cả khả năng tương thích hoặc tương đương).

  • Aztec đã phát triển một giao thức SNARK tổng quát-giao thức Plonk. Aztec3 đang hoạt động có thể hỗ trợ EVM, nhưng quyền riêng tư có trước khả năng tương thích với EVM

  • Starnet sử dụng zk-STARK, một zkp không yêu cầu cài đặt đáng tin cậy, nhưng hiện không hỗ trợ EVM và có trình biên dịch và ngôn ngữ phát triển riêng

  • zkSync cũng sử dụng plonk và hỗ trợ EVM. zkSync 2.0 tương thích với EVM và có zkEVM riêng

  • Scroll, một bản tổng hợp ZK tương thích với EVM, nhóm cũng là người đóng góp quan trọng cho dự án zkEVM của Ethereum Foundation

Thảo luận ngắn gọn về các vấn đề tương thích với EVM:

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

3. Nguyên tắc cơ bản triển khai ZK SNARK

Goldwasser, Micali và Rackoff đã đề xuất rằng bằng chứng không kiến ​​thức có ba thuộc tính:

  • Tính đầy đủ: Mọi tuyên bố với nhân chứng hợp lý đều có thể được xác minh bởi người xác minh

  • Tính hợp lý: Mọi tuyên bố chỉ có nhân chứng không hợp lý sẽ không được xác minh bởi người xác minh

  • Không có kiến ​​thức: Quá trình xác minh là không có kiến ​​thức

Vì vậy, để hiểu ZKP, chúng tôi bắt đầu với zk-SNARK, bởi vì nhiều ứng dụng blockchain hiện tại bắt đầu với SNARK. Trước hết, hãy xem zk-SNARK.

zk-SNARK có nghĩa là: bằng chứng không có kiến ​​thức (zh-SNARK) là không có kiến ​​thức Đối số Succint Không tương tác của Kiến thức.

Không có kiến ​​thức: Quá trình chứng minh là không có kiến ​​thức và sẽ không tiết lộ thông tin dư thừa

Ngắn gọn: kích thước xác nhận nhỏ

Không tương tác: quá trình không tương tác

Lập luận: Tính toán đáng tin cậy, nghĩa là người xác nhận có sức mạnh tính toán hạn chế không thể giả mạo bằng chứng và người xác nhận có sức mạnh tính toán không giới hạn có thể giả mạo bằng chứng

Kiến thức: Người tục ngữ không thể xây dựng một tham số và bằng chứng mà không biết thông tin hợp lệ

Đối với người chứng minh, không thể xây dựng một bộ tham số và bằng chứng mà không biết bằng chứng (Nhân chứng, chẳng hạn như đầu vào của hàm băm hoặc đường dẫn để xác định nút Merkle-tree). "

Mô tả hình ảnh

Source: https://learnblockchain.cn/article/3220

Các bước là:

1. Biến vấn đề thành mạch

2. Làm phẳng mạch thành dạng R1CS.

3. Chuyển đổi định dạng R1CS sang QAP (Chương trình số học bậc hai)

4. Thiết lập thiết lập đáng tin cậy, tạo tham số ngẫu nhiên, bao gồm PK (khóa xác minh), VK (khóa xác minh)

5. Tạo bằng chứng và xác minh zk-SNARK

Trong bài viết tiếp theo, chúng ta sẽ bắt đầu nghiên cứu các nguyên tắc và ứng dụng của zk-SNARK, sử dụng một số trường hợp để xem sự phát triển của ZK-SNARK và khám phá mối quan hệ của nó với zk-STARK.

Reference:

https://ethresear.ch/t/on-chain-scaling-to-potentially-500-tx-sec-through-mass-tx-validation/3477

https://blog.polygon.technology/zkverse-why-zero-knowledge-rollups-need-a-new-consensus-mechanism/

https://blog.decentriq.com/zk-snarks-primer-part-one/

https://vitalik.ca/general/2021/01/26/snarks.html

https://z.cash/technology/zksnarks/

HashKey Hub
作者文库