Hướng dẫn cho người mới bắt đầu về Bằng chứng không có kiến thức: Lịch sử phát triển, ứng dụng và nguyên tắc cơ bản

Người mới bắt đầuJan 06, 2024
Bài viết này giới thiệu một cách có hệ thống lịch sử phát triển và các nguyên tắc cơ bản của chứng minh không có kiến thức.
Hướng dẫn cho người mới bắt đầu về Bằng chứng không có kiến thức: Lịch sử phát triển, ứng dụng và nguyên tắc cơ bản

Tốc độ tăng trưởng hiện tại của các dự án bằng chứng không có kiến thức (ZKP) trong ngành công nghiệp blockchain thật đáng kinh ngạc, đặc biệt là sự gia tăng của các ứng dụng ZKP ở hai cấp độ mở rộng và bảo vệ quyền riêng tư, điều này đã giúp chúng ta tiếp xúc với nhiều dự án bằng chứng không có kiến thức. Do tính chất cực kỳ toán học của ZKP, những người đam mê mã hóa sẽ khó hiểu sâu hơn về ZK. Do đó, chúng tôi cũng hy vọng có thể tìm ra một số thay đổi trong lý thuyết và ứng dụng ZKP ngay từ đầu, đồng thời cùng độc giả khám phá tác động và giá trị đối với ngành tiền điện tử - cùng nhau tìm hiểu thông qua một số báo cáo, cũng đóng vai trò là bản tóm tắt suy nghĩ của HashKey Nhóm nghiên cứu vốn. Bài viết này là bài đầu tiên trong loạt bài, chủ yếu giới thiệu lịch sử phát triển, ứng dụng và một số nguyên tắc cơ bản của ZKP.

1. Lịch sử của bằng chứng không có kiến thức

Hệ thống chứng minh không có kiến thức hiện đại có nguồn gốc từ bài báo do Goldwasser, Micali và Rackoff cùng xuất bản: Sự phức tạp về kiến thức của các hệ thống chứng minh tương tác (GMR85), được đề xuất vào năm 1985 và xuất bản năm 1989. Bài viết 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ể trở về 0 thì nó được gọi là bằng chứng không có kiến thức. Người ta cho rằng người chứng minh có nguồn lực vô hạn và người xác minh chỉ có nguồn lực 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 mà đúng theo nghĩa xác suất, mặc dù xác suất rất nhỏ (1/2^n).

Vì vậy, hệ thống tương tác không hoàn hảo và chỉ đạt mức độ hoàn thiện tương đối. Hệ thống hệ thống không tương tác (NP) ra đời trên cơ sở này đã hoàn thiện và trở thành sự lựa chọn hoàn hảo cho hệ thống chứng minh không có kiến thức.

Các hệ thống chứng minh không có kiến thức ban đầu thiếu hiệu quả và khả năng sử dụng nên chúng luôn chỉ ở mức lý thuyết. Phải đến 10 năm gần đây, họ mới bắt đầu phát triển mạnh mẽ. Khi mật mã trở nên nổi bật trong lĩnh vực tiền điện tử, bằng chứng không có kiến thức đã được đặt lên hàng đầu và trở thành một hướng đi quan trọng. Đặc biệt, việc phát triển một giao thức chứng minh không có kiến thức, không tương tác, chung với kích thước bằng chứng hạn chế 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 có kiến thức là sự đánh đổi giữa tốc độ chứng minh, tốc độ xác minh và quy mô của bằng chứng. Giao thức lý tưởng là bằng chứng nhanh, xác minh nhanh và kích thước bằng chứng nhỏ.

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

Sự phát triển quan trọng nhất trong việc áp dụng bằng chứng không có kiến thức là hệ thống bằng chứng không có kiến thức được Z-cash sử dụng vào năm 2015, hệ thống này bảo vệ quyền riêng tư của các 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à hợp đồng thông minh, đồng thời zk-SNARK bước vào các kịch bản ứng dụng rộng rãi 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:

  1. Pinocchio (PGHR13) năm 2013: Pinocchio: Tính toán gần như có thể xác minh thực tế, nén thời gian chứng minh và xác minh trong phạm vi áp dụng, cũng là giao thức cơ bản được Zcash sử dụng.
  2. Groth16 năm 2016: 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, 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.
  3. Chống đạn (BBBPWM17) Chống đạn: 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 Chống đạn, một bằng chứng không có kiến thức không tương tác rất ngắn và không yêu cầu thiết lập đáng tin cậy. Nó sẽ được áp dụng cho Monero 6 tháng sau và rất nhanh. Sự kết hợp giữa lý thuyết và ứng dụng.
  4. Vào năm 2018, zk-STARKs (BBHR18) Tính toàn vẹn tính toán an toàn sau lượng tử có thể mở rộng, minh bạch và có thể mở rộng đã đề 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 hiện nay và cũng dựa trên đó, StarkWare, dự án ZK quan trọng nhất, đã ra đời.

Các phát triển khác bao gồm PLONK, Halo2, v.v. cũng là những tiến bộ cực kỳ quan trọng và cũng đã thực hiện một số cải tiến cho zk-SNARK.

2. Mô tả tóm tắt ứng dụng chứng minh không có kiến thức

Hai ứng dụng phổ biến nhất của bằng chứng không có 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 các giao dịch bảo mật và một số dự án nổi tiếng như Zcash và Monero, các giao dịch bảo mật đã từng trở thành một hạng mục rất quan trọng. Tuy nhiên, do nhu cầu giao dịch quyền riêng tư không nổi bật như ngành mong đợi nên loại dự án đại diện này bắt đầu chậm lại. Từ từ tiến vào trại hạng hai và hạng ba (không rút khỏi giai đoạn lịch sử). Ở cấp độ ứng dụng, nhu cầu mở rộng đã tăng lên đến mức Ethereum 2.0 (đã được đổi tên thành lớp đồng thuận) đã chuyển sang lộ trình tập trung vào triển khai vào năm 2020. Dòng ZK đã chính thức trở lại được giới công nghiệp chú ý và trở thành tâm điểm.

Giao dịch bảo mật: Có nhiều dự án đã triển khai giao dịch bảo mật, bao gồm Zcash sử dụng SNARK, Tornado, Monero sử dụng chống đạn và Dash. Dash không sử dụng ZKP theo nghĩa chặt chẽ 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. Tôi sẽ không đề cập đến nó ở đây.

Các bước giao dịch zk-SNARK được Zcash áp dụng như sau:

Nguồn: Làm sáng tỏ vai trò của zk-SNARK trong Zcash

  1. Giai đoạn thiết lập hệ thống tạo khóa chứng minh (đa thức chứng minh mã hóa) và khóa xác minh bằng cách sử dụng hàm KeyGen
  2. Phương thức mã hóa ECIES pha CPA (Lược đồ mã hóa tích hợp đường cong Elliptic) được sử dụng để tạo khóa chung và khóa riêng
  3. Giai đoạn Minting Coins, số lượng xu mới được tạo ra. Địa chỉ công cộng và cam kết tiền xu
  4. Trong giai đoạn Đổ, chứng chỉ zk-SNARK được tạo và thêm vào sổ cái giao dịch đổ.
  5. Trong giai đoạn Xác minh, người xác minh sẽ xác minh xem khối lượng giao dịch của Mint và Pour có chính xác hay không.
  6. Ở giai đoạn Nhận, người nhận nhận được tiền. Nếu bạn muốn sử dụng số xu đã nhận được, hãy tiếp tục gọi Đổ để hình 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 hạn chế trong việc sử dụng zero-know, tức là dựa trên UTXO nên một phần thông tin giao dịch chỉ được che chắn chứ chưa thực sự được che đậy. Vì là mạng riêng biệt dựa trên thiết kế của Bitcoin nên khó mở rộng (kết hợp với các ứng dụng khác). Tỷ lệ sử dụng thực tế của việc che chắn (tức là giao dịch riêng tư) là dưới 10%, điều này 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 Tornado sử dụng linh hoạt hơn và dựa trên mạng “đã được thử và kiểm tra” 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 độ tin cậy dựa trên bài báo Groth 16. Các tính năng có sẵn với Tornado Cash bao gồm:

  1. Chỉ có thể rút tiền đã gửi.
  2. Không có đồng xu nào có thể được rút hai lần
  3. Quá trình chứng minh bị ràng buộc với thông báo vô hiệu hóa tiền tệ (Nullifier). Hàm băm của cùng một bằng chứng nhưng Nullifier khác nhau sẽ không cho phép rút tiền.
  4. Bảo mật là 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, quyền riêng tư tương đối dễ thực hiện. Nếu một số giao thức mở rộng có thể được thiết lập, 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 cấp một, chẳng hạn như Mina hoặc trên mạng cấp hai, tức là zk-roll up. Ý tưởng về việc tổng hợp ZK có thể bắt nguồn từ bài đăng của Vitalik vào năm 2018, Mở rộng quy mô trên chuỗi lên mức tiềm năng ~500 tx/giây thông qua xác thực tx hàng loạt.

ZK-rollup có hai loại vai trò, một là Sequencer và hai là Aggregator. Trình sắp xếp chuỗi chịu trách nhiệm đóng gói các giao dịch và Trình tổng hợp chịu trách nhiệm hợp nhất một số lượng lớn giao dịch và tạo một bản tổng hợp cũng như hình thành bằng chứng SNARK (nó cũng có thể là bằng chứng không có kiến thức dựa trên các thuật toán khác). Bằng chứng này sẽ được so sánh với trạng thái trước đó của Layer1, sau đó cập nhật cây Ethereum Merkle, tính toán cây trạng thái mới.

Nguồn: Đa giác

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

  1. Ưu điểm: chi phí thấp, không giống như OP sẽ bị tấn công về mặt kinh tế, không cần trì hoãn giao dịch, quyền riêng tư có thể được bảo vệ và có thể đạt được mục đích cuối cùng một cách nhanh chóng
  2. Nhược điểm: Việc hình thành bằng chứng ZK yêu cầu khối lượng tính toán lớn, vấn đề bảo mật (SNARK yêu cầu cài đặt tin cậy), không chống lại các cuộc tấn công lượng tử (SNARK, STARK có thể), thứ tự giao dịch có thể bị thay đổi

Nguồn: Nghiên cứu Ethereum

Dựa trên tính khả dụng của dữ liệu và phương pháp chứng minh, Starkware có sơ đồ phân loại cổ điển cho L2 (Lớp sẵn có dữ liệu của Volition có thể được chọn trên chuỗi hoặc ngoài chuỗi):

Nguồn: Starkware

Các dự án tổng hợp ZK 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à kết nối Aztec 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à các phiên bản cải tiến của nó) và STARK, cũng như hỗ trợ EVM (bao gồm cả khả năng tương thích hoặc tương đương).

  1. Aztec đã phát triển giao thức SNARK-giao thức Plonk tổng quát. Aztec3 đang chạy có thể hỗ trợ EVM nhưng quyền riêng tư được ưu tiên hơn khả năng tương thích EVM.
  2. 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.
  3. 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
  4. 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 các vấn đề tương thích EVM:

Khả năng tương thích giữa hệ thống ZK và EVM luôn là vấn đề đau đầu và hầu hết các dự án sẽ lựa chọn giữa hai điều này. Những người nhấn mạnh ZK có thể xây dựng một máy ảo trong hệ thống của riêng họ, có ngôn ngữ và trình biên dịch ZK của riêng họ, nhưng điều này sẽ khiến các nhà phát triển khó học hơn và vì về cơ bản nó không phải là nguồn mở nên nó sẽ trở thành một hộp đen . Nói chung, ngành hiện có hai lựa chọn. Một là hoàn toàn tương thích với các opcode của Solidity và hai là thiết kế một máy ảo mới thân thiện với ZK và tương thích với Solidity. Ngành công nghiệp ban đầu không mong đợi sự tích hợp nhanh chóng như vậy, nhưng sự lặp lại nhanh chóng của công nghệ trong một hoặc hai năm qua đã đưa khả năng tương thích EVM lên một tầm cao mới và các nhà phát triển có thể đạt được một mức độ di chuyển liền mạch nhất định (nghĩa là nền tảng chính Ethereum). chain to ZK rollup) là một sự phát triển thú vị, sẽ ảnh hưởng đến hệ sinh thái phát triển và bối cảnh cạnh tranh của ZK. Chúng tôi sẽ thảo luận chi tiết về vấn đề này trong các báo cáo tiếp theo.

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

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

  1. Tính đầy đủ: Mọi lời khai có nhân chứng hợp lý đều có thể được người xác minh xác minh
  2. Tính đúng đắn: Mọi khiếu nại chỉ có nhân chứng vô lý sẽ không được người xác minh xác minh
  3. 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, vì nhiều ứng dụng blockchain hiện tại đều bắt đầu bằng SNARK. Đầu tiên, chúng ta 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. Các đối số kiến thức không tương tác ngắn gọn.

  1. Không có kiến thức: Quá trình chứng minh là không có kiến thức và không tiết lộ thông tin dư thừa.
  2. Ngắn gọn: Kích thước xác minh nhỏ
  3. Không tương tác: quá trình không tương tác
  4. Lập luận: Phép tính đáng tin cậy, nghĩa là người chứng minh có khả năng tính toán hạn chế không thể giả mạo bằng chứng và người chứng minh có khả năng tính toán không giới hạn có thể giả mạo bằng chứng.
  5. về Kiến thức: Người chứng minh không thể xây dựng một tham số và bằng chứng nếu không biết thông tin xác thực
  6. Người chứng minh không thể xây dựng một tập hợp các tham số và bằng chứng mà không biết 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 cây Merkle).

Nguyên lý chứng minh zk-SNARK của Groth16 như sau:

Nguồn: https://learnblockchain.cn/article/3220

Các bước là:

  1. Chuyển đổi vấn đề thành một 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 và tạo các tham số ngẫu nhiên, bao gồm PK (khóa chứng minh) và 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, xem xét quá trình phát triển ZK-SNARK qua một số trường hợp và khám phá mối quan hệ của nó với zk-STARK.

Tuyên bố từ chối trách nhiệm:

  1. Bài viết này được in lại từ [HashKey Capital]. Mọi bản quyền thuộc về tác giả gốc [HashKey Capital]. Nếu có ý kiến phản đối việc tái bản này, vui lòng liên hệ với nhóm Gate Learn , họ sẽ xử lý kịp thời.
  2. Tuyên bố miễn trừ trách nhiệm pháp lý: Các quan điểm và ý kiến trình bày trong bài viết này chỉ là của tác giả và không cấu thành bất kỳ lời khuyên đầu tư nào.
  3. Việc dịch bài viết sang các ngôn ngữ khác được thực hiện bởi nhóm Gate Learn. Trừ khi được đề cập, việc sao chép, phân phối hoặc đạo văn các bài viết đã dịch đều bị cấm.
Bắt đầu giao dịch
Đăng ký và giao dịch để nhận phần thưởng USDTEST trị giá
$100
$5500
Tạo tài khoản