Sự phát triển và ứng dụng của công nghệ zk-SNARK: Tổng quan về lĩnh vực Blockchain
Tóm tắt
zk-SNARK ( ZKP ) là một bước đột phá quan trọng trong lĩnh vực mật mã, đóng vai trò then chốt trong công nghệ Blockchain. Bài viết này cung cấp một tổng quan hệ thống về quá trình phát triển của ZKP trong gần bốn mươi năm qua và những nghiên cứu mới nhất.
Đầu tiên, giới thiệu về khái niệm cơ bản và bối cảnh lịch sử của ZKP. Tiếp theo, phân tích trọng tâm về công nghệ ZKP dựa trên mạch, bao gồm thiết kế, ứng dụng và phương pháp tối ưu hóa của các mô hình như zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs và Ligero. Về môi trường tính toán, bài viết thảo luận về cách ZKVM và ZKEVM nâng cao khả năng xử lý giao dịch, bảo vệ quyền riêng tư và cải thiện hiệu quả xác minh. Cũng giới thiệu về cơ chế làm việc và phương pháp tối ưu hóa của Zero-Knowledge Rollup như một giải pháp mở rộng Layer 2, cùng với những tiến bộ mới nhất trong tăng tốc phần cứng, giải pháp hỗn hợp và ZK EVM chuyên dụng.
Cuối cùng, đã nhìn nhận các khái niệm mới nổi như ZKCoprocessor, ZKML, ZKThreads, ZK Sharding và ZK StateChannels, thảo luận về tiềm năng của chúng trong khả năng mở rộng, khả năng tương tác và bảo vệ quyền riêng tư của Blockchain.
Thông qua việc phân tích các xu hướng phát triển công nghệ này, bài viết cung cấp một cái nhìn toàn diện để hiểu và áp dụng công nghệ ZKP, cho thấy tiềm năng to lớn của nó trong việc nâng cao hiệu quả và an ninh của hệ thống Blockchain, cung cấp tham khảo quan trọng cho các quyết định đầu tư trong tương lai.
Mục lục
Lời mở đầu
Một, kiến thức cơ bản về zk-SNARK
Tổng quan
Ví dụ về zk-SNARK
Hai, zk-SNARK
Bối cảnh
Sự ra đời của NIZK
Biến đổi Fiat-Shamir
Jens Groth và nghiên cứu của ông
Nghiên cứu khác
Ba, chứng minh không biết dựa trên mạch
Bối cảnh
Khái niệm và đặc điểm cơ bản của mô hình mạch
Thiết kế và ứng dụng mạch trong zk-SNARK
Những thiếu sót và thách thức tiềm ẩn
Bốn, mô hình zk-SNARK
Bối cảnh
Mô hình thuật toán phổ biến
Giải pháp dựa trên PCP tuyến tính và bài toán logarit rời rạc
Giải pháp dựa trên chứng minh của người bình thường
Chứng minh có thể kiểm tra dựa trên xác suất ( PCP ) zk-SNARK
Phân loại giai đoạn thiết lập cho cấu trúc chứng minh chung CPC( ).
Năm, Tổng quan và phát triển của máy ảo zk-SNARK
Bối cảnh
Phân loại ZKVM hiện có
Mô hình phía trước và phía sau
Ưu điểm và nhược điểm của mô hình ZKVM
Sáu, Tổng quan và phát triển của máy ảo Ethereum zk-SNARK
Bối cảnh
Cách hoạt động của ZKEVM
Quy trình thực hiện ZKEVM
Đặc điểm của ZKEVM
Bảy, Tổng quan và phát triển giải pháp mạng lớp hai zk-SNARK
Bối cảnh
Cơ chế hoạt động của ZK Rollup
Nhược điểm và tối ưu hóa của ZK Rollup
Tám, phương hướng phát triển tương lai của zk-SNARK.
Tăng tốc phát triển môi trường tính toán
Sự xuất hiện và phát triển của ZKML
Phát triển công nghệ mở rộng ZKP
Sự phát triển của tính tương tác giữa các zk-SNARK
Chín, Kết luận
Lời giới thiệu
Internet đang bước vào kỷ nguyên Web3, ứng dụng Blockchain ( DApps ) phát triển nhanh chóng. Trong những năm gần đây, các nền tảng Blockchain hàng ngày tiếp nhận hàng triệu hoạt động của người dùng, xử lý hàng tỷ giao dịch. Khối lượng dữ liệu khổng lồ do các giao dịch này tạo ra thường bao gồm thông tin cá nhân nhạy cảm. Với đặc điểm mở và minh bạch của Blockchain, dữ liệu được lưu trữ này là công khai cho tất cả mọi người, do đó đã gây ra nhiều vấn đề về an ninh và quyền riêng tư.
Hiện tại, có một vài công nghệ mã hóa có thể đối phó với những thách thức này, bao gồm mã hóa đồng homomorphism, chữ ký vòng, tính toán an toàn nhiều bên và zk-SNARK. zk-SNARK là một giải pháp toàn diện hơn, giao thức xác minh này cho phép xác minh tính đúng đắn của một số tuyên bố mà không tiết lộ bất kỳ dữ liệu trung gian nào. Giao thức này không yêu cầu cơ sở hạ tầng khóa công khai phức tạp, và việc thực hiện lặp lại cũng không cung cấp cho người dùng độc hại cơ hội để có được thông tin hữu ích bổ sung. Thông qua ZKP, người xác minh có thể xác minh xem người chứng minh có đủ số tiền giao dịch mà không tiết lộ bất kỳ dữ liệu giao dịch riêng tư nào.
Tính năng ZKP này giúp nó đóng vai trò cốt lõi trong các giao dịch Blockchain và ứng dụng tiền điện tử, đặc biệt trong việc bảo vệ quyền riêng tư và mở rộng mạng lưới, khiến nó không chỉ trở thành tâm điểm nghiên cứu học thuật mà còn được coi là một trong những đổi mới công nghệ quan trọng nhất kể từ khi công nghệ sổ cái phân tán được triển khai thành công. Đồng thời cũng là một trong những lĩnh vực trọng điểm cho ứng dụng công nghiệp và đầu tư mạo hiểm.
Do đó, nhiều dự án mạng dựa trên ZKP đã lần lượt xuất hiện, như ZkSync, StarkNet, Mina, Filecoin và Aleo. Cùng với sự phát triển của các dự án này, những đổi mới thuật toán liên quan đến ZKP liên tục ra đời, theo báo cáo gần như mỗi tuần đều có thuật toán mới ra mắt. Hơn nữa, việc phát triển phần cứng liên quan đến công nghệ ZKP cũng đang tiến triển nhanh chóng, bao gồm các chip được tối ưu hóa đặc biệt cho ZKP. Ví dụ, các dự án như Ingonyama, Irreducible và Cysic đã hoàn tất việc huy động vốn quy mô lớn, những phát triển này không chỉ cho thấy sự tiến bộ nhanh chóng của công nghệ ZKP mà còn phản ánh sự chuyển mình từ phần cứng chung sang phần cứng chuyên dụng như GPU, FPGA và ASIC.
Những tiến bộ này cho thấy, công nghệ zk-SNARK không chỉ là một bước đột phá quan trọng trong lĩnh vực mật mã học, mà còn là động lực chính để thực hiện các ứng dụng công nghệ Blockchain rộng rãi hơn.
Do đó, chúng tôi quyết định hệ thống hóa các kiến thức liên quan đến zk-SNARK ( ZKP ) để hỗ trợ tốt hơn cho việc đưa ra quyết định đầu tư trong tương lai. Để làm điều này, chúng tôi đã tổng hợp và xem xét các tài liệu nghiên cứu cốt lõi liên quan đến ZKP; đồng thời, chúng tôi cũng đã phân tích chi tiết tài liệu và whitepaper của các dự án hàng đầu trong lĩnh vực này. Việc thu thập và phân tích tài liệu toàn diện này đã cung cấp một nền tảng vững chắc cho việc viết bài này.
Một, kiến thức cơ bản về zk-SNARK
1. Tổng quan
Năm 1985, các học giả Goldwasser, Micali và Rackoff lần đầu tiên đề xuất chứng minh không biết ( Zero-Knowledge Proof, ZKP ) và chứng minh kiến thức tương tác ( Interactive Zero-Knowledge, IZK ). Bài báo này là nền tảng của chứng minh không biết, định nghĩa nhiều khái niệm ảnh hưởng đến nghiên cứu học thuật sau này. Ví dụ, định nghĩa về kiến thức là "đầu ra không khả thi", tức là kiến thức phải là một đầu ra, và là một phép tính không khả thi, có nghĩa là nó không thể là một hàm đơn giản, mà cần phải là một hàm phức tạp. Phép tính không khả thi thường có thể hiểu là một bài toán NP, tức là bài toán có thể xác minh tính đúng đắn của giải pháp trong thời gian đa thức, thời gian đa thức có nghĩa là thời gian chạy của thuật toán có thể được biểu diễn bằng hàm đa thức của kích thước đầu vào. Đây là tiêu chuẩn quan trọng trong khoa học máy tính để đo lường hiệu quả và khả thi của thuật toán. Do quá trình giải quyết vấn đề NP phức tạp, nên nó được coi là phép tính không khả thi; nhưng quá trình xác minh của nó tương đối đơn giản, vì vậy rất phù hợp để sử dụng trong xác minh chứng minh không biết.
Một ví dụ cổ điển về bài toán NP là bài toán người bán hàng, trong đó cần tìm đường đi ngắn nhất để thăm một loạt các thành phố và trở về điểm khởi đầu. Mặc dù việc tìm đường đi ngắn nhất có thể rất khó khăn, nhưng việc xác minh một đường đi đã cho có phải là ngắn nhất hay không tương đối dễ dàng. Bởi vì việc xác minh tổng khoảng cách của một đường đi cụ thể có thể được thực hiện trong thời gian đa thức.
Goldwasser và các cộng sự đã giới thiệu khái niệm "độ phức tạp kiến thức" trong bài báo của họ, dùng để định lượng lượng kiến thức mà người chứng minh tiết lộ cho người xác minh trong hệ thống chứng minh tương tác. Họ cũng đề xuất hệ thống chứng minh tương tác (Interactive Proof Systems,IPS), trong đó người chứng minh (Prover) và người xác minh (Verifier) tương tác qua nhiều vòng để chứng minh tính xác thực của một câu lệnh.
Tóm lại, định nghĩa về zk-SNARK mà Goldwasser và các cộng sự đã tóm tắt là một loại chứng minh tương tác đặc biệt, trong đó người xác thực sẽ không nhận được thông tin bổ sung nào ngoài giá trị đúng của câu; và đã đưa ra ba đặc điểm cơ bản bao gồm:
Tính hoàn chỉnh(completeness): Nếu chứng minh là đúng, những người chứng minh trung thực có thể thuyết phục những người xác minh trung thực về sự thật này;
Độ tin cậy ( soundness ): Nếu người chứng minh không biết nội dung tuyên bố, anh ta chỉ có thể lừa dối người xác minh với xác suất không đáng kể;
zk-SNARK ( zero-knowledge ): Trong quá trình chứng minh hoàn thành, người xác minh chỉ nhận được thông tin "người chứng minh có kiến thức này", mà không thể nhận được bất kỳ nội dung bổ sung nào.
2. Ví dụ về zk-SNARK
Để hiểu rõ hơn về zk-SNARK và các thuộc tính của nó, dưới đây là một ví dụ về việc xác minh người chứng minh có sở hữu một số thông tin riêng tư hay không, ví dụ này được chia thành ba giai đoạn: thiết lập, thách thức và phản hồi.
Bước một: thiết lập (Setup)
Trong bước này, mục tiêu của người chứng minh là tạo ra một bằng chứng chứng minh rằng anh ta biết một số bí mật s, nhưng không trực tiếp hiển thị s. Giả sử số bí mật s;
Chọn hai số nguyên tố lớn p và q, tính tích của chúng n. Giả sử các số nguyên tố p và q, tính toán n nhận được;
Tính v=s^2 mod n, ở đây, v được gửi cho người xác thực như một phần của chứng minh, nhưng nó không đủ để người xác thực hoặc bất kỳ người quan sát nào suy ra s;
Chọn một số nguyên ngẫu nhiên r, tính x=r^2 mod n và gửi cho người xác thực. Giá trị x này được sử dụng cho quy trình xác thực tiếp theo, nhưng cũng không tiết lộ s. Giả sử số nguyên ngẫu nhiên r, tính toán được x.
Bước hai: Thách thức (Challenge)
Người xác thực ngẫu nhiên chọn một vị trí a( có thể là 0 hoặc 1), sau đó gửi cho người chứng minh. "Thách thức" này quyết định các bước tiếp theo mà người chứng minh cần thực hiện.
Bước ba: Phản hồi (Response)
Dựa trên giá trị a do người xác nhận gửi, người chứng minh sẽ phản hồi:
Nếu a=0, người chứng minh gửi g=r(, ở đây r là số ngẫu nhiên mà anh ta đã chọn trước đó ).
Nếu a=1, người chứng minh tính toán g=rs mod n và gửi đi. Giả sử người xác minh gửi bit ngẫu nhiên a, dựa trên giá trị của a, người chứng minh tính toán g;
Cuối cùng, người xác minh dựa trên g nhận được để xác minh x có bằng g^2 mod n hay không. Nếu phương trình đúng, người xác minh chấp nhận chứng minh này. Khi a=0, người xác minh tính x=g^2 mod n, bên phải xác minh g^2 mod n; Khi a=1, người xác minh tính x=g^2/v mod n, bên phải xác minh (rs)^2/s^2 mod n.
Ở đây, chúng ta thấy x=g^2 mod n được tính toán bởi người xác thực chứng tỏ rằng người chứng minh đã thành công trong quá trình xác thực mà không tiết lộ số bí mật s của mình. Ở đây, vì a chỉ có thể nhận giá trị 0 hoặc 1, chỉ có hai khả năng, xác suất mà người chứng minh thành công thông qua xác thực dựa vào may mắn là 1/2( khi a nhận giá trị 0. Nhưng người xác thực sau đó lại thách thức người chứng minh k lần, người chứng minh liên tục thay đổi các số liên quan, gửi cho người xác thực, và luôn thành công trong việc vượt qua quá trình xác thực, do đó xác suất mà người chứng minh thành công thông qua xác thực dựa vào may mắn trở thành ) 1/2(^k ) tiến gần đến 0 0(, kết luận rằng người chứng minh thực sự biết một số bí mật s đã được chứng minh. Ví dụ này chứng minh tính toàn vẹn, độ tin cậy và tính không tiết lộ của hệ thống chứng minh không kiến thức.
Hai, zk-SNARK không tương tác
) 1. Bối cảnh
zk-SNARK ### ZKP ( trong khái niệm truyền thống thường là hình thức giao thức tương tác và trực tuyến; chẳng hạn, giao thức Sigma thường yêu cầu từ ba đến năm vòng tương tác để hoàn tất xác thực. Tuy nhiên, trong các tình huống như giao dịch ngay lập tức hoặc bỏ phiếu, thường không có cơ hội thực hiện nhiều vòng tương tác, đặc biệt là trong ứng dụng công nghệ Blockchain, chức năng xác thực ngoại tuyến trở nên đặc biệt quan trọng.
) 2. Đề xuất NIZK
Năm 1988, Blum, Feldman và Micali lần đầu tiên đề xuất khái niệm chứng minh không tương tác bằng cách sử dụng chứng minh không kiến thức ###NIZK(, chứng minh khả năng hoàn thành quá trình xác thực giữa người chứng minh )Prover( và người xác thực )Verifier( mà không cần nhiều vòng tương tác. Bước đột phá này đã làm cho việc thực hiện giao dịch ngay lập tức, bỏ phiếu và các ứng dụng blockchain trở nên khả thi.
Họ đề xuất chứng minh không tương tác zk-SNARK ) NIZK ( có thể được chia thành ba giai đoạn:
Cài đặt
Tính toán
Xác minh
Giai đoạn thiết lập sử dụng hàm tính toán, chuyển đổi tham số an toàn thành kiến thức công cộng ) cả người chứng và người xác minh đều có thể truy cập (, thường được mã hóa trong một chuỗi tham chiếu chung ) CRS (. Đây là cách tính toán chứng minh và sử dụng các tham số cũng như thuật toán đúng để xác minh.
Giai đoạn tính toán sử dụng hàm tính toán, khóa đầu vào và khóa chứng minh, xuất kết quả tính toán và chứng minh.
Trong giai đoạn xác minh, xác minh tính hợp lệ của bằng chứng thông qua khóa xác minh.
Mô hình chuỗi tham chiếu công khai mà họ đưa ra )CRS(, tức là dựa trên việc tất cả các người tham gia chia sẻ một chuỗi để thực hiện chứng minh không tương tác về kiến thức không tiết lộ (zk-SNARK) cho các vấn đề NP. Việc vận hành của mô hình này phụ thuộc vào việc tạo ra CRS một cách đáng tin cậy, tất cả các người tham gia phải có thể truy cập vào cùng một chuỗi. Chỉ khi CRS được tạo ra một cách đúng đắn và an toàn, thì các giải pháp thực hiện theo mô hình này mới có thể đảm bảo an toàn. Đối với một số lượng lớn người tham gia, quá trình tạo ra CRS có thể vừa phức tạp vừa tốn thời gian, do đó mặc dù các giải pháp như vậy thường dễ vận hành và kích thước chứng minh nhỏ, nhưng quá trình thiết lập lại khá thách thức.
Sau đó, công nghệ NIZK đã trải qua sự phát triển nhanh chóng, xuất hiện nhiều phương pháp chuyển đổi chứng minh zero-knowledge tương tác thành chứng minh phi tương tác. Những phương pháp này trong việc xây dựng hệ thống
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
14 thích
Phần thưởng
14
8
Đăng lại
Chia sẻ
Bình luận
0/400
JustHereForAirdrops
· 08-13 20:37
zknhập một vị thế tốc độ nhanh...bắt đầu thật sự không hiểu
Xem bản gốcTrả lời0
LiquidityWitch
· 08-13 04:43
nấu chế kỳ diệu zk... những vùng nước tối của những chân lý toán học, nơi mật mã cổ đại gặp gỡ thuật giả kim blockchain
Xem bản gốcTrả lời0
SigmaBrain
· 08-11 01:18
zk có phải là giải pháp tối ưu cho L2 không?
Xem bản gốcTrả lời0
NotSatoshi
· 08-11 01:16
Nhiều năm trước đã nghiên cứu về zk, mà còn chưa hiểu rõ.
Xem bản gốcTrả lời0
WagmiWarrior
· 08-11 01:15
Lại thấy有人 nói về zk, hãy làm nghiên cứu cơ bản trước đã.
Phân tích độ sâu công nghệ zk-SNARK: Tổng quan toàn diện từ thuật toán đến ứng dụng
Sự phát triển và ứng dụng của công nghệ zk-SNARK: Tổng quan về lĩnh vực Blockchain
Tóm tắt
zk-SNARK ( ZKP ) là một bước đột phá quan trọng trong lĩnh vực mật mã, đóng vai trò then chốt trong công nghệ Blockchain. Bài viết này cung cấp một tổng quan hệ thống về quá trình phát triển của ZKP trong gần bốn mươi năm qua và những nghiên cứu mới nhất.
Đầu tiên, giới thiệu về khái niệm cơ bản và bối cảnh lịch sử của ZKP. Tiếp theo, phân tích trọng tâm về công nghệ ZKP dựa trên mạch, bao gồm thiết kế, ứng dụng và phương pháp tối ưu hóa của các mô hình như zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs và Ligero. Về môi trường tính toán, bài viết thảo luận về cách ZKVM và ZKEVM nâng cao khả năng xử lý giao dịch, bảo vệ quyền riêng tư và cải thiện hiệu quả xác minh. Cũng giới thiệu về cơ chế làm việc và phương pháp tối ưu hóa của Zero-Knowledge Rollup như một giải pháp mở rộng Layer 2, cùng với những tiến bộ mới nhất trong tăng tốc phần cứng, giải pháp hỗn hợp và ZK EVM chuyên dụng.
Cuối cùng, đã nhìn nhận các khái niệm mới nổi như ZKCoprocessor, ZKML, ZKThreads, ZK Sharding và ZK StateChannels, thảo luận về tiềm năng của chúng trong khả năng mở rộng, khả năng tương tác và bảo vệ quyền riêng tư của Blockchain.
Thông qua việc phân tích các xu hướng phát triển công nghệ này, bài viết cung cấp một cái nhìn toàn diện để hiểu và áp dụng công nghệ ZKP, cho thấy tiềm năng to lớn của nó trong việc nâng cao hiệu quả và an ninh của hệ thống Blockchain, cung cấp tham khảo quan trọng cho các quyết định đầu tư trong tương lai.
Mục lục
Lời mở đầu
Một, kiến thức cơ bản về zk-SNARK
Hai, zk-SNARK
Ba, chứng minh không biết dựa trên mạch
Bốn, mô hình zk-SNARK
Năm, Tổng quan và phát triển của máy ảo zk-SNARK
Sáu, Tổng quan và phát triển của máy ảo Ethereum zk-SNARK
Bảy, Tổng quan và phát triển giải pháp mạng lớp hai zk-SNARK
Tám, phương hướng phát triển tương lai của zk-SNARK.
Chín, Kết luận
Lời giới thiệu
Internet đang bước vào kỷ nguyên Web3, ứng dụng Blockchain ( DApps ) phát triển nhanh chóng. Trong những năm gần đây, các nền tảng Blockchain hàng ngày tiếp nhận hàng triệu hoạt động của người dùng, xử lý hàng tỷ giao dịch. Khối lượng dữ liệu khổng lồ do các giao dịch này tạo ra thường bao gồm thông tin cá nhân nhạy cảm. Với đặc điểm mở và minh bạch của Blockchain, dữ liệu được lưu trữ này là công khai cho tất cả mọi người, do đó đã gây ra nhiều vấn đề về an ninh và quyền riêng tư.
Hiện tại, có một vài công nghệ mã hóa có thể đối phó với những thách thức này, bao gồm mã hóa đồng homomorphism, chữ ký vòng, tính toán an toàn nhiều bên và zk-SNARK. zk-SNARK là một giải pháp toàn diện hơn, giao thức xác minh này cho phép xác minh tính đúng đắn của một số tuyên bố mà không tiết lộ bất kỳ dữ liệu trung gian nào. Giao thức này không yêu cầu cơ sở hạ tầng khóa công khai phức tạp, và việc thực hiện lặp lại cũng không cung cấp cho người dùng độc hại cơ hội để có được thông tin hữu ích bổ sung. Thông qua ZKP, người xác minh có thể xác minh xem người chứng minh có đủ số tiền giao dịch mà không tiết lộ bất kỳ dữ liệu giao dịch riêng tư nào.
Tính năng ZKP này giúp nó đóng vai trò cốt lõi trong các giao dịch Blockchain và ứng dụng tiền điện tử, đặc biệt trong việc bảo vệ quyền riêng tư và mở rộng mạng lưới, khiến nó không chỉ trở thành tâm điểm nghiên cứu học thuật mà còn được coi là một trong những đổi mới công nghệ quan trọng nhất kể từ khi công nghệ sổ cái phân tán được triển khai thành công. Đồng thời cũng là một trong những lĩnh vực trọng điểm cho ứng dụng công nghiệp và đầu tư mạo hiểm.
Do đó, nhiều dự án mạng dựa trên ZKP đã lần lượt xuất hiện, như ZkSync, StarkNet, Mina, Filecoin và Aleo. Cùng với sự phát triển của các dự án này, những đổi mới thuật toán liên quan đến ZKP liên tục ra đời, theo báo cáo gần như mỗi tuần đều có thuật toán mới ra mắt. Hơn nữa, việc phát triển phần cứng liên quan đến công nghệ ZKP cũng đang tiến triển nhanh chóng, bao gồm các chip được tối ưu hóa đặc biệt cho ZKP. Ví dụ, các dự án như Ingonyama, Irreducible và Cysic đã hoàn tất việc huy động vốn quy mô lớn, những phát triển này không chỉ cho thấy sự tiến bộ nhanh chóng của công nghệ ZKP mà còn phản ánh sự chuyển mình từ phần cứng chung sang phần cứng chuyên dụng như GPU, FPGA và ASIC.
Những tiến bộ này cho thấy, công nghệ zk-SNARK không chỉ là một bước đột phá quan trọng trong lĩnh vực mật mã học, mà còn là động lực chính để thực hiện các ứng dụng công nghệ Blockchain rộng rãi hơn.
Do đó, chúng tôi quyết định hệ thống hóa các kiến thức liên quan đến zk-SNARK ( ZKP ) để hỗ trợ tốt hơn cho việc đưa ra quyết định đầu tư trong tương lai. Để làm điều này, chúng tôi đã tổng hợp và xem xét các tài liệu nghiên cứu cốt lõi liên quan đến ZKP; đồng thời, chúng tôi cũng đã phân tích chi tiết tài liệu và whitepaper của các dự án hàng đầu trong lĩnh vực này. Việc thu thập và phân tích tài liệu toàn diện này đã cung cấp một nền tảng vững chắc cho việc viết bài này.
Một, kiến thức cơ bản về zk-SNARK
1. Tổng quan
Năm 1985, các học giả Goldwasser, Micali và Rackoff lần đầu tiên đề xuất chứng minh không biết ( Zero-Knowledge Proof, ZKP ) và chứng minh kiến thức tương tác ( Interactive Zero-Knowledge, IZK ). Bài báo này là nền tảng của chứng minh không biết, định nghĩa nhiều khái niệm ảnh hưởng đến nghiên cứu học thuật sau này. Ví dụ, định nghĩa về kiến thức là "đầu ra không khả thi", tức là kiến thức phải là một đầu ra, và là một phép tính không khả thi, có nghĩa là nó không thể là một hàm đơn giản, mà cần phải là một hàm phức tạp. Phép tính không khả thi thường có thể hiểu là một bài toán NP, tức là bài toán có thể xác minh tính đúng đắn của giải pháp trong thời gian đa thức, thời gian đa thức có nghĩa là thời gian chạy của thuật toán có thể được biểu diễn bằng hàm đa thức của kích thước đầu vào. Đây là tiêu chuẩn quan trọng trong khoa học máy tính để đo lường hiệu quả và khả thi của thuật toán. Do quá trình giải quyết vấn đề NP phức tạp, nên nó được coi là phép tính không khả thi; nhưng quá trình xác minh của nó tương đối đơn giản, vì vậy rất phù hợp để sử dụng trong xác minh chứng minh không biết.
Một ví dụ cổ điển về bài toán NP là bài toán người bán hàng, trong đó cần tìm đường đi ngắn nhất để thăm một loạt các thành phố và trở về điểm khởi đầu. Mặc dù việc tìm đường đi ngắn nhất có thể rất khó khăn, nhưng việc xác minh một đường đi đã cho có phải là ngắn nhất hay không tương đối dễ dàng. Bởi vì việc xác minh tổng khoảng cách của một đường đi cụ thể có thể được thực hiện trong thời gian đa thức.
Goldwasser và các cộng sự đã giới thiệu khái niệm "độ phức tạp kiến thức" trong bài báo của họ, dùng để định lượng lượng kiến thức mà người chứng minh tiết lộ cho người xác minh trong hệ thống chứng minh tương tác. Họ cũng đề xuất hệ thống chứng minh tương tác (Interactive Proof Systems,IPS), trong đó người chứng minh (Prover) và người xác minh (Verifier) tương tác qua nhiều vòng để chứng minh tính xác thực của một câu lệnh.
Tóm lại, định nghĩa về zk-SNARK mà Goldwasser và các cộng sự đã tóm tắt là một loại chứng minh tương tác đặc biệt, trong đó người xác thực sẽ không nhận được thông tin bổ sung nào ngoài giá trị đúng của câu; và đã đưa ra ba đặc điểm cơ bản bao gồm:
Tính hoàn chỉnh(completeness): Nếu chứng minh là đúng, những người chứng minh trung thực có thể thuyết phục những người xác minh trung thực về sự thật này;
Độ tin cậy ( soundness ): Nếu người chứng minh không biết nội dung tuyên bố, anh ta chỉ có thể lừa dối người xác minh với xác suất không đáng kể;
zk-SNARK ( zero-knowledge ): Trong quá trình chứng minh hoàn thành, người xác minh chỉ nhận được thông tin "người chứng minh có kiến thức này", mà không thể nhận được bất kỳ nội dung bổ sung nào.
2. Ví dụ về zk-SNARK
Để hiểu rõ hơn về zk-SNARK và các thuộc tính của nó, dưới đây là một ví dụ về việc xác minh người chứng minh có sở hữu một số thông tin riêng tư hay không, ví dụ này được chia thành ba giai đoạn: thiết lập, thách thức và phản hồi.
Bước một: thiết lập (Setup)
Trong bước này, mục tiêu của người chứng minh là tạo ra một bằng chứng chứng minh rằng anh ta biết một số bí mật s, nhưng không trực tiếp hiển thị s. Giả sử số bí mật s;
Chọn hai số nguyên tố lớn p và q, tính tích của chúng n. Giả sử các số nguyên tố p và q, tính toán n nhận được;
Tính v=s^2 mod n, ở đây, v được gửi cho người xác thực như một phần của chứng minh, nhưng nó không đủ để người xác thực hoặc bất kỳ người quan sát nào suy ra s;
Chọn một số nguyên ngẫu nhiên r, tính x=r^2 mod n và gửi cho người xác thực. Giá trị x này được sử dụng cho quy trình xác thực tiếp theo, nhưng cũng không tiết lộ s. Giả sử số nguyên ngẫu nhiên r, tính toán được x.
Bước hai: Thách thức (Challenge)
Người xác thực ngẫu nhiên chọn một vị trí a( có thể là 0 hoặc 1), sau đó gửi cho người chứng minh. "Thách thức" này quyết định các bước tiếp theo mà người chứng minh cần thực hiện.
Bước ba: Phản hồi (Response)
Dựa trên giá trị a do người xác nhận gửi, người chứng minh sẽ phản hồi:
Nếu a=0, người chứng minh gửi g=r(, ở đây r là số ngẫu nhiên mà anh ta đã chọn trước đó ).
Nếu a=1, người chứng minh tính toán g=rs mod n và gửi đi. Giả sử người xác minh gửi bit ngẫu nhiên a, dựa trên giá trị của a, người chứng minh tính toán g;
Cuối cùng, người xác minh dựa trên g nhận được để xác minh x có bằng g^2 mod n hay không. Nếu phương trình đúng, người xác minh chấp nhận chứng minh này. Khi a=0, người xác minh tính x=g^2 mod n, bên phải xác minh g^2 mod n; Khi a=1, người xác minh tính x=g^2/v mod n, bên phải xác minh (rs)^2/s^2 mod n.
Ở đây, chúng ta thấy x=g^2 mod n được tính toán bởi người xác thực chứng tỏ rằng người chứng minh đã thành công trong quá trình xác thực mà không tiết lộ số bí mật s của mình. Ở đây, vì a chỉ có thể nhận giá trị 0 hoặc 1, chỉ có hai khả năng, xác suất mà người chứng minh thành công thông qua xác thực dựa vào may mắn là 1/2( khi a nhận giá trị 0. Nhưng người xác thực sau đó lại thách thức người chứng minh k lần, người chứng minh liên tục thay đổi các số liên quan, gửi cho người xác thực, và luôn thành công trong việc vượt qua quá trình xác thực, do đó xác suất mà người chứng minh thành công thông qua xác thực dựa vào may mắn trở thành ) 1/2(^k ) tiến gần đến 0 0(, kết luận rằng người chứng minh thực sự biết một số bí mật s đã được chứng minh. Ví dụ này chứng minh tính toàn vẹn, độ tin cậy và tính không tiết lộ của hệ thống chứng minh không kiến thức.
Hai, zk-SNARK không tương tác
) 1. Bối cảnh
zk-SNARK ### ZKP ( trong khái niệm truyền thống thường là hình thức giao thức tương tác và trực tuyến; chẳng hạn, giao thức Sigma thường yêu cầu từ ba đến năm vòng tương tác để hoàn tất xác thực. Tuy nhiên, trong các tình huống như giao dịch ngay lập tức hoặc bỏ phiếu, thường không có cơ hội thực hiện nhiều vòng tương tác, đặc biệt là trong ứng dụng công nghệ Blockchain, chức năng xác thực ngoại tuyến trở nên đặc biệt quan trọng.
) 2. Đề xuất NIZK
Năm 1988, Blum, Feldman và Micali lần đầu tiên đề xuất khái niệm chứng minh không tương tác bằng cách sử dụng chứng minh không kiến thức ###NIZK(, chứng minh khả năng hoàn thành quá trình xác thực giữa người chứng minh )Prover( và người xác thực )Verifier( mà không cần nhiều vòng tương tác. Bước đột phá này đã làm cho việc thực hiện giao dịch ngay lập tức, bỏ phiếu và các ứng dụng blockchain trở nên khả thi.
Họ đề xuất chứng minh không tương tác zk-SNARK ) NIZK ( có thể được chia thành ba giai đoạn:
Giai đoạn thiết lập sử dụng hàm tính toán, chuyển đổi tham số an toàn thành kiến thức công cộng ) cả người chứng và người xác minh đều có thể truy cập (, thường được mã hóa trong một chuỗi tham chiếu chung ) CRS (. Đây là cách tính toán chứng minh và sử dụng các tham số cũng như thuật toán đúng để xác minh.
Giai đoạn tính toán sử dụng hàm tính toán, khóa đầu vào và khóa chứng minh, xuất kết quả tính toán và chứng minh.
Trong giai đoạn xác minh, xác minh tính hợp lệ của bằng chứng thông qua khóa xác minh.
Mô hình chuỗi tham chiếu công khai mà họ đưa ra )CRS(, tức là dựa trên việc tất cả các người tham gia chia sẻ một chuỗi để thực hiện chứng minh không tương tác về kiến thức không tiết lộ (zk-SNARK) cho các vấn đề NP. Việc vận hành của mô hình này phụ thuộc vào việc tạo ra CRS một cách đáng tin cậy, tất cả các người tham gia phải có thể truy cập vào cùng một chuỗi. Chỉ khi CRS được tạo ra một cách đúng đắn và an toàn, thì các giải pháp thực hiện theo mô hình này mới có thể đảm bảo an toàn. Đối với một số lượng lớn người tham gia, quá trình tạo ra CRS có thể vừa phức tạp vừa tốn thời gian, do đó mặc dù các giải pháp như vậy thường dễ vận hành và kích thước chứng minh nhỏ, nhưng quá trình thiết lập lại khá thách thức.
Sau đó, công nghệ NIZK đã trải qua sự phát triển nhanh chóng, xuất hiện nhiều phương pháp chuyển đổi chứng minh zero-knowledge tương tác thành chứng minh phi tương tác. Những phương pháp này trong việc xây dựng hệ thống