Hiểu về Plonky2: Một Framework SNARK hiệu suất cao dựa trên Rust

Table of Contents
Plonky2 là một framework nổi bật mà chúng tôi đã áp dụng trong hệ sinh thái của mình, kết hợp lợi ích mở rộng của cả SNARKs và STARKs. Khi chúng tôi tiếp tục phát triển dựa trên nền tảng này, bài viết này sẽ giúp bạn có cái nhìn sâu hơn về Plonky2 và vai trò của nó.

zk-SNARK là gì?

Trước khi đi sâu vào Plonky2, trước tiên cần hiểu zk-SNARK là gì?
Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge (zk-SNARKs) đã nổi lên như một công cụ mật mã mạnh mẽ, cho phép xác minh các phép tính mà không cần tiết lộ dữ liệu cơ bản thông qua các bằng chứng mật mã ngắn gọn. Chúng được ứng dụng trong nhiều lĩnh vực, bao gồm mở rộng blockchain, tính toán bảo vệ quyền riêng tư và tính toán nhiều bên an toàn.

Hiểu về Plonky2

Plonky2 là một framework SNARK tiên tiến được triển khai bằng Rust, được thiết kế để đạt hiệu suất cao và tính linh hoạt. Nó được xây dựng dựa trên hệ thống chứng minh TurboPLONK nhưng thay thế sơ đồ cam kết đa thức bằng một sơ đồ dựa trên FRI (Fast Reed-Solomon Interactive Oracle Proofs). Cách tiếp cận sáng tạo này giúp Plonky2 đạt được tốc độ tổng hợp đệ quy nhanh và sử dụng trường 64-bit để cải thiện hiệu suất.

Các tính năng chính của Plonky2

  • Thực hiện các phép toán trên trường Goldilocks 64-bit một cách hiệu quả
  • Không yêu cầu thiết lập tin cậy (trusted setup)
  • Bảo mật hậu lượng tử (post-quantum security)
  • Hỗ trợ cổng tùy chỉnh (custom gate) cho các phép tính phức tạp
  • Cân bằng giữa kích thước bằng chứng, thời gian chứng minh và thời gian xác minh một cách linh hoạt

Các công nghệ nền tảng của Plonky2

TurboPLONK

TurboPLONK, một phiên bản nâng cao của PLONK, cung cấp nhiều ưu điểm so với các SNARK dựa trên R1CS truyền thống bằng cách mang đến một framework linh hoạt và biểu đạt hơn để định nghĩa các ràng buộc. Nó cho phép biểu diễn nhiều loại phép tính hơn, giúp triển khai hiệu quả các phép toán phức tạp như nhân vô hướng với cơ sở cố định (fixed-base scalar multiplication).
Plonky2 tận dụng khả năng của TurboPLONK để triển khai các cổng tùy chỉnh (custom gates) cho các phép toán như phép chia, giúp giảm độ phức tạp của mạch và kích thước bằng chứng. Những cải tiến từ TurboPLONK, như tối ưu hóa tổng trung gian (intermediate sum optimization) và phương pháp tra cứu (lookup methods), đóng góp trực tiếp vào hiệu suất cao của Plonky2.

FRI (Fast Reed-Solomon Interactive Oracle Proofs)

FRI là một giao thức kiểm tra tính gần đúng với các mã Reed-Solomon. Trong Plonky2, nó đóng vai trò là nền tảng cho sơ đồ cam kết đa thức, thay thế sơ đồ cam kết Kate được sử dụng trong PLONK gốc. FRI mang lại nhiều lợi ích như:
  • Hỗ trợ bất kỳ trường số nguyên tố nào các có nhóm con trơn (smooth subgroup)
  • Không yêu cầu trường có đặc trưng lớn (large-characteristic field)
  • Cho phép sử dụng trường 64-bit trong Plonky2
  • Cung cấp bảo mật hậu lượng tử

Thiết kế của Plonky2

1. Lựa chọn trường số

Plonky2 hoạt động trên trường số nguyên tố Fp, trong đó $p = 2^{64} - 2^{32} + 1$, được gọi là trường Goldilocks. Lựa chọn này mang lại nhiều lợi ích:
  • Các phần tử vừa với một từ 64-bit, cho phép tính toán hiệu quả
  • Cấu trúc của p cho phép thực hiện phép chia lấy dư hiệu quả
  • Giảm nhu cầu lưu trữ hằng số trong thanh ghi
Với các phép toán yêu cầu một trường lớn hơn để đảm bảo tính vững chắc (soundness), Plonky2 sử dụng trường mở rộng Fp(φ) ($\mathbb{F}_p(\phi)$).

2. PLONK Modifications (Các chỉnh sửa PLONK)

2.1 Custom Gates (Cổng tùy chỉnh)

Plonky2 tận dụng cổng tùy chỉnh để triển khai các phép toán phức tạp một cách hiệu quả trong một cổng duy nhất, tương tự như TurboPLONK. Ví dụ, phép chia có thể được triển khai bằng cách thay vì viết q = x/y, ta viết q * y = x với điều kiện y ≠ 0. Hoặc có thể biểu diễn nó bằng hai ràng buộc:
  • q * y = x
  • y * i = 1, với i là nghịch đảo của y.
Sau đó, có thể sử dụng các ràng buộc lọc (filtering constraints) như một cách hiệu quả để áp dụng các ràng buộc của cổng tùy chỉnh chỉ trên các hàng có liên quan của execution trace, giúp cải thiện hiệu quả tổng thể.

2.2 Advice Wires

Advice wires được sử dụng cho các giá trị không xác định trong mạch, chẳng hạn như nghịch đảo giả định trong phép chia. Bằng cách loại trừ chúng khỏi lập luận hoán vị (permutation argument), Plonky2 giảm bậc của lập luận, giúp cải thiện hiệu suất.

2.3 Cumulative Products (Tích lũy tích)

Để xử lý các ràng buộc bậc cao từ lập luận hoán vị của PLONK, Plonky2 chia nhỏ chúng thành các ràng buộc bậc thấp hơn bằng cách sử dụng tích lũy tích. Cụ thể, thay vì một ràng buộc đa thức bậc cao, Plonky2 sử dụng một chuỗi các ràng buộc đa thức bậc 8 cho mỗi 8 hàng liên tiếp, giúp xử lý các ràng buộc dễ dàng hơn theo từng lô 8 hàng.

3. Soundness Analysis (Phân tích tính vững chắc)

Do kích thước trường nhỏ, Plonky2 cung cấp phân tích chi tiết hơn về tính vững chắc (soundness) của lập luận hoán vị và các ràng buộc kết hợp (combining constraints). Để cải thiện tính vững chắc cho một số giao thức con, chúng được lặp lại nhiều lần song song để tăng xác suất phát hiện lỗi.

4. Zero-Knowledge

Plonky2 đạt được tính không tri thức bằng cách làm mù các đa thức trước khi điền vào bội số của hai. Ý tưởng là thêm các hàng ngẫu nhiên vào vết (trace) và liên kết chúng với vết ban đầu bằng cách sử dụng ràng buộc sao chép (copy constraints), giúp làm mù các đa thức một cách hiệu quả.

5. Hàm băm cho FRI commitments

Hàm băm hiệu quả là yếu tố quan trọng để tạo bằng chứng FRI nhanh. Plonky2 sử dụng Poseidon^π làm hàm băm, được chọn vì hiệu suất cao trong các mạch số học.

5.1 Băm trong Circuit

Plonky2 sử dụng một PoseidonGate duy nhất để tính toàn bộ một thể hiện (instance) của Poseidon^π, cho phép mã hóa số học hiệu quả trong mạch, dẫn đến một vết rộng 135 cột. Đây là một độ rộng hợp lý khi cân bằng giữa các vết rộng-ngắn và các vết hẹp-dài.

6. Polynomial Testing (Kiểm tra đa thức)

Plonky2 tuân theo phương pháp của giao thức DEEP-ALI để xây dựng một sơ đồ cam kết đa thức từ FRI gốc, với tham số khoảng cách tương đối lớn (δ) để hỗ trợ tổng hợp đệ quy hiệu quả.

Optimizations (Tối ưu hóa)

Việc triển khai Plonky2 áp dụng nhiều kỹ thuật tối ưu hóa để cải thiện hiệu suất:

1. Cấu trúc của Trace

Trace trong Plonky2 được tổ chức dưới dạng một disjoint-set forest, trong đó mỗi tập hợp bao gồm các phần tử trace có cùng giá trị, được ràng buộc thông qua copy constraints do permutation argument đảm bảo. Cấu trúc này giúp quản lý copy constraints hiệu quả hơn.

2. FRI Optimizations (Tối ưu hóa FRI)

Plonky2 triển khai nhiều tối ưu hóa trong giao thức FRI:
  • Số lượng Merkle trees tối thiểu (ví dụ: kết hợp các đa thức đã được tiền xử lý vào một Merkle tree duy nhất).
  • Tối ưu hóa reduction arities thông qua tìm kiếm toàn diện nhằm giảm kích thước bằng chứng. Để giảm chi phí của recursion, Plonky2 sử dụng arity cố định là 8 để làm cho quá trình xác minh nhất quán hơn.
  • Sắp xếp một cách chiến lược toàn bộ Oracle data blocks vào một Merkle tree leaf duy nhất để truy vấn hiệu quả hơn.
  • Cắt tỉa các Merkle paths trùng lặp trong cùng một truy vấn.
  • Sử dụng Merkle caps để giảm số lần băm trong mỗi Merkle proof, đồng thời giữ nguyên độ dài đường dẫn.
  • Kết thúc sớm quá trình reduction trong giao thức FRI khi bậc của đa thức đủ nhỏ.``
  • Grinding (proof-of-work) để tăng cường bảo mật.

3. Poseidon Optimizations (Tối ưu hóa Poseidon)

Các tối ưu hóa dành riêng cho Poseidon trong Plonky2 bao gồm:
  • Sử dụng circulant MDS matrix với lũy thừa của hai.
  • Tận dụng SIMD operations để băm song song.
  • Viết mã assembly được tinh chỉnh thủ công trên x86-64ARM64.

Giao thức hoàn chỉnh

Giao thức Plonky2 có thể được tóm tắt qua các bước sau:

1. Tiền xử lý (Preprocessing)

  • Xây dựng circuit.
  • Tính toán các đa thức mã hóa hằng số và extended permutation.
  • Xây dựng Merkle tree cho khóa chứng minh và xác minh.

2. Giao thức chính: Turbo-Plonk arguments + FRI-based PCS

Ở đây, để đơn giản, chúng ta ký hiệu PProverVVerifier. Giao thức chính hoạt động như sau:
  1. P tạo và gửi cam kết đối với các wire polynomials, permutation polynomials, partial product polynomials, và quotient polynomials.
  2. V lấy mẫu ngẫu nhiên cho permutation argument, combining constraints, cũng như evaluation point cho giao thức FRI-based PCS.
  3. P gửi các giá trị của đa thức tại evaluation point.
  4. PV sử dụng giao thức FRI để xác minh các openings này.
  5. V xác minh các phương trình của Plonky2.
Phiên bản non-interactive của giao thức được thu được bằng cách áp dụng Fiat-Shamir transform.

Đánh giá hiệu suất

Hiệu suất của Plonky2 có thể được đặc trưng bởi ba chỉ số chính:

1. Recursion Threshold (Ngưỡng recursion)

  • Phụ thuộc vào codeword rate và mức độ bảo mật mong muốn.
  • Với codeword rate 1/8 và bảo mật 100 bit: ngưỡng 2¹² gates.

2. Proof Generation Time (Thời gian tạo bằng chứng)

  • Khi tối ưu hóa tốc độ (codeword rate 1/8): ~300ms trên MacBook Air 2021 cho bằng chứng đệ quy.
  • Khi tối ưu hóa kích thước (codeword rate 1/256): ~11.6 giây trên MacBook Air 2021.

3. Proof Size (Kích thước bằng chứng)

  • Khi tối ưu hóa kích thước (codeword rate 1/256): ~43 kilobytes mỗi bằng chứng.
Plonky2 đã được ứng dụng trong các hệ thống như Polygon Zero's zkEVM, một zero-knowledge virtual machine nổi bật dành cho Ethereum. Nhờ vào hiệu suất cao và khả năng tùy chỉnh linh hoạt, Plonky2 cho phép tạo ra zero-knowledge proofs hiệu quả cho các phép tính phức tạp, trở thành công cụ quan trọng giúp mở rộng khả năng của công nghệ blockchain.

Kết luận

Plonky2 đánh dấu một bước tiến lớn trong công nghệ SNARKs, kết hợp trường 64-bit, hashing hiệu quả, custom gates, cùng nhiều tối ưu hóa để đạt được recursive composition nhanh chóng và kích thước bằng chứng nhỏ gọn. Thiết kế của Plonky2 mang lại sự linh hoạt cần thiết để cải thiện khả năng mở rộng của blockchain, hỗ trợ các tính toán bảo vệ quyền riêng tư, cũng như tính toán an toàn nhiều bên (secure multi-party computations). Điều này khiến Plonky2 trở thành một framework lý tưởng cho các ứng dụng yêu cầu zero-knowledge proofs mạnh mẽ và hiệu quả, mở ra nhiều khả năng mới trong lĩnh vực mật mã.
Ghi chú phụ:  Các nội dung trên trong chương trình ZK Advocacy được hỗ trợ bởi Mina Protocol and ZKP labs. Để biết thêm về chương trình, mời bạn tại đây, (link: https://zkplabs.network/blog/Announcing-the-ZKP-Advocacy-Program-Powered-by-Mina-Foundation-Your-Path%20to-Zero-Knowledge-Mastery)

About ZKP Labs

ZKP Labs is a non-profit organization that focuses on building a vibrant and supportive community in Southeast Asia dedicated to the advancement of Zero-Knowledge Proof (ZKP) technology. Through events, workshops, and training programs, we strive to create an environment that fosters collaboration, knowledge-sharing, and growth, empowering community members to contribute to the development and adoption of ZKP.
Categories
Event Recap
5
Zero Knowledge Proofs 101
30
Top Posts
1
Announcing the ZKP Advocacy Program Powered by Mina Foundation: Your Path to Zero-Knowledge Mastery
24 October 2024
2
How to start learning ZKPs as a beginner?
02 March 2023
3
What Jobs Can You Do About ZKPs?
15 March 2023
4
A Beginner's Guide to Understanding the Different Types of Zero-Knowledge Proofs
24 February 2023
5
Phân tích lỗ hổng lớn trong mạng zkEVM của Polygon
06 December 2023
6
Phân tích hành động lái giá: Tại sao hầu hết giá của dự án đều giảm?
21 December 2023
7
Cơ chế và tác động của hành động làm giá trong thị trường tiền điện tử
21 December 2023
8
Tìm kiếm cơ hội đầu tư vào Blockchain mô-đun
21 December 2023
9
The Future of Layer 2 Roll-ups: Scaling Ethereum and Beyond
17 September 2023
10
Airdrops: Thử thách trong việc phân phối vốn hiệu quả
03 February 2024
Tag
Zero Knowledge Proofs
©

ZKP Labs

2022