BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
Trang chủ
AI AI
Tin nhanh
Bài viết
Sự kiện
BlockBeats Pro
Thêm
Thông tin tài chính
Chuyên đề
Hệ sinh thái chuỗi khối
Mục nhập
Podcast
Data
OPRR
Partnered With:

Cysic: Làm thế nào để zkVM trở thành mô hình mới cho ngành ZK?

Đọc bài viết này mất 31 phút
Cysic được thiết kế để xây dựng phần cứng hiệu quả cho nhiều trường hợp sử dụng, hiệu suất và năng suất phát triển
Tiêu đề gốc: "Mô hình mới trong thiết kế ZK-ASIC, cách zkVM》
Tác giả gốc: Nhóm Cysic
Cảm ơn Justin Drake và Luke Pearson vì sự hiểu biết sâu sắc của họ các cuộc thảo luận.


TL;DR


Việc tạo bằng chứng không có kiến thức trong thời gian thực đòi hỏi sự kết nối từ đầu đến cuối kết thúc tăng tốc phần cứng. zkVM không chỉ đơn giản hóa việc thiết kế ZK ASIC mà còn cho phép phần cứng có hiệu suất cao hơn và chi phí thấp hơn.


Giới thiệu



Bằng chứng không có kiến thức ( ZKP ) cho phép một bên (người chứng minh) chứng minh cho một bên khác (người xác minh) rằng một tuyên bố nào đó là đúng mà không tiết lộ bất kỳ thông tin nào ngoài tính hợp lệ của chính tuyên bố đó.


Một trong những người phát minh ra bằng chứng không có kiến thức, Silvio Micali (người đồng phát minh ra nó với Goldwasser và Rackoff), đã nói rằng giống như việc mã hóa làm xáo trộn dữ liệu, bằng chứng không có kiến thức Tính toán khó hiểu. Cụ thể hơn, các thuật toán mã hóa (chẳng hạn như AES hoặc RSA) chuyển đổi dữ liệu thành văn bản mã hóa tương ứng, giúp ẩn dữ liệu cơ bản. Bằng chứng không có kiến thức chuyển các yêu cầu tính toán thành bằng chứng không chỉ che giấu các chi tiết của phép tính mà còn xác minh tính chính xác của yêu cầu.


ZKP có hai đặc tính tốt - không có kiến thức và tính đơn giản. Điều này cũng làm cho nó trở thành một trong những mật mã cấp cao nguyên thủy được sử dụng rộng rãi nhất.


Không có kiến thức có nghĩa là bản thân bằng chứng không tiết lộ bất kỳ thông tin nào về quá trình tính toán hoặc thông tin đầu vào riêng tư. Tính năng này rất hữu ích để xây dựng một số ứng dụng hướng tới quyền riêng tư. Ví dụ, Aleo, không giống như Bitcoin, Ethereum và các chuỗi công khai khác, có thể ẩn chi tiết giao dịch.


Tính đơn giản đề cập đến quy mô nhỏ của bằng chứng và thời gian xác minh ngắn, có nghĩa là một quy trình tính toán phức tạp có thể được chuyển đổi thành một phần dữ liệu nhỏ (ví dụ: "bằng chứng", "bằng chứng"). Và nó có thể được xác minh gần như ngay lập tức trên các thiết bị tính toán yếu (như điện thoại di động hay thậm chí là Raspberry Pi). Tính năng này cực kỳ hữu ích khi mở rộng quy mô Ethereum, vì chúng ta có thể chuyển đổi phép tính EVM tương ứng với 1000 giao dịch thành một bằng chứng nhỏ và sau đó xuất bản bằng chứng này trên Ethereum. Nếu một bằng chứng nhỏ như vậy (có lẽ chỉ 100 byte) được Ethereum xác minh thì toàn bộ 1000 giao dịch cuối cùng cũng được xác nhận. Các chuỗi khối riêng tư và các giải pháp mở rộng quy mô chỉ là hai ví dụ về cơn sốt ZKP trong cộng đồng chuỗi khối. Nhiều dự án ZK cũng có thể được xây dựng bằng cách sử dụng hai thuộc tính chính này, chẳng hạn như bộ đồng xử lý ZK, cầu ZK, học máy ZK (ZKML).


Trạng thái tăng tốc phần cứng ZK hiện tại


Một trở ngại đáng kể đối với việc triển khai rộng rãi ZKP là tác động lên tính toán thời gian trong quá trình tạo bằng chứng và nhu cầu lớn về tài nguyên.


Nói chung, những phép tính phức tạp hơn đòi hỏi nhiều thời gian và nguồn lực hơn. Ví dụ: trong dự án ZKML của Daniel Kang và nhóm của anh ấy, việc tạo bằng chứng cho suy luận GPT-2 mất hơn 9000 giây bằng cách sử dụng CPU 64 luồng mạnh mẽ. Mặt khác, việc tạo bằng chứng cho mạch ZK-EVM trong Scroll yêu cầu RAM trên 280GB.


Do những yêu cầu tài nguyên nghiêm ngặt này, cộng đồng đang tìm kiếm phần cứng hiệu quả hơn được tùy chỉnh để tính toán ZK (được gọi là tạo bằng chứng). Các tùy chọn phần cứng bao gồm CPU, GPU, FPGA và ASIC. Các tùy chọn này bao gồm từ hiện có sẵn cho đến thời gian chờ đợi không chắc chắn.


CPU thường được coi là cách triển khai cơ bản để so sánh ba tùy chọn còn lại. Có hai chỉ số phổ biến về khả năng tăng tốc phần cứng Dưới đây là một số giải thích trực quan:


· Hiệu suất trên mỗi đô la: Điều này có nghĩa là người dùng cần trả bao nhiêu. để mua phần cứng này? Quyết định mua hàng phụ thuộc vào nhiều yếu tố, trong đó không ít yếu tố là hiệu quả tối đa với cùng số tiền. Về cơ bản, số liệu này đo lường hiệu quả chi phí của phần cứng. Nói chung, nếu sử dụng quy trình tiên tiến hơn để sản xuất chip, chúng ta có thể đạt được hiệu suất cao hơn nhưng nó có xu hướng đắt hơn.


· Hiệu suất trên mỗi watt: Điều này có nghĩa là cần bao nhiêu năng lượng để chạy phần cứng này. Ví dụ: công cụ khai thác Bitcoin mới nhất của Bitmain, T21, chỉ sử dụng 19 joules để hoàn thành 1 TH tính toán, vượt trội so với các sản phẩm của đối thủ cạnh tranh.


Ưu điểm của một sản phẩm chủ yếu phụ thuộc vào 2 yếu tố trên, cũng như một số yếu tố phi kỹ thuật (như chế độ bảo hành, giá trị còn lại). Thông thường, phần cứng dựa trên ASIC vượt trội hơn ba loại còn lại trong hai chỉ số này do tính chất có thể tùy chỉnh của nó.


Hãy tưởng tượng rằng một ZK ASIC chuyên dụng đã được thiết kế vượt xa các GPU và FPGA hiện có về hiệu suất trên mỗi đô la và trên mỗi watt. ASIC này có thể hỗ trợ nhiều mô-đun khác nhau như phép nhân đa vô hướng (MSM), phép biến đổi lý thuyết số (NTT), cây Merkle, v.v., nhưng làm cách nào để tích hợp phần cứng này với nhóm công nghệ hiện tại?


Cách tiếp cận phổ biến nhất là thay thế các phép tính tương ứng trong mã CPU bằng các thành phần tăng tốc. Phương pháp thay thế đơn giản này thường không đạt được khả năng tăng tốc hiệu suất thỏa đáng. Chúng tôi đã công bố những phát hiện của mình về phương pháp này trên ethCC 23 (xem thêm chi tiết tại đây target="_blank">Tweet).



So sánh hiệu suất CPU và FPGA/CPU



So với hiệu suất CPU, chúng tôi sử dụng kết hợp CPU và FPGA tùy chỉnh của chúng tôi máy móc đã đạt được tiến bộ đáng kể, nhưng hiệu suất vẫn còn lâu mới đạt được mục tiêu cuối cùng - bằng chứng ZK theo thời gian thực.


Hiệu suất dưới mức tối ưu này là do định luật Amdahl và chi phí tương tác giữa các thành phần phần cứng khác nhau. Định luật Amdahl cho thấy rằng sự cải thiện hiệu suất tổng thể đạt được bằng cách tối ưu hóa một phần duy nhất của hệ thống bị hạn chế và điều này càng trở nên trầm trọng hơn do chi phí liên lạc giữa các mô-đun phần cứng khác nhau (có nguồn từ Wikipedia). Để đạt được tốc độ tăng tốc đáng kể so với CPU, mọi thành phần có thể cần phải được tăng tốc trên một phần cứng duy nhất.


Tuy nhiên, điều này dường như là không thể do tính đa dạng của thuật toán ZK (cụ thể, thuật toán ZK đề cập đến các hoạt động tính toán trong việc tạo bằng chứng ZK). Ví dụ: ảnh chụp màn hình Twitter ở trên hiển thị ba mạch ZK, đó là Poseidon Hash, EVM và GPT-2. Mặc dù sử dụng cùng một chương trình phụ trợ bằng chứng (Halo2-KZG), nhưng các phép tính vẫn rất khác nhau, đặc biệt là trong phần tạo nhân chứng. Các ảnh chụp màn hình cũng không bao gồm các phần mềm phụ trợ bằng chứng khác nhau (chẳng hạn như Plonky2/3 và Gnark).


Điểm chúng tôi muốn nêu ở đây là phần cứng cần phải đủ tổng quát để đáp ứng các hoạt động tính toán khác nhau trên chip của thuật toán ZK. Tính linh hoạt này có thể đạt được thông qua kết cấu lai giữa FPGA và ASIC, như chúng tôi đã trình bày trong bài viết này từ năm 2022 " target="_blank">Được đề xuất trong Tweet:



Kiến trúc lai FGPA-ASIC



Trong kiến trúc lai này, ASIC thực hiện các hoạt động thông thường trong khi FPGA thực hiện các phép tính dành riêng cho mạch. Sau đó, hai thiết bị phần cứng được gắn trên cùng một bo mạch PCB và được kết nối thông qua kênh SerDes băng thông cao. Ngoài ra, các lõi CPU trên chip như dựa trên RISC-V hoặc dựa trên ARM có thể được sử dụng cho các mục đích tương tự. Các phương pháp lai này thường có yêu cầu rất cao về giá thành cũng như chất lượng chế tạo. Trong sáu tháng qua, chúng tôi đã tự hỏi:


Có phải "kết hợp" là cấu trúc tốt nhất mà chúng tôi có thể nghĩ ra không? Chúng ta có thể dựa vào những tiến bộ công nghệ từ cộng đồng ZK để cải thiện thiết kế của mình không? Dưới đây, chúng tôi cung cấp câu trả lời tích cực cho các câu hỏi trên.


Giải pháp của Cysic, quá khứ và hiện tại


Trước khi đi vào chi tiết kỹ thuật, trước tiên chúng tôi, chúng ta cần giới thiệu một số kiến thức cơ bản về zero-know proof (ZKP). Quá trình tạo bằng chứng điển hình của hệ thống bằng chứng Plonkish có thể được chia thành các giai đoạn sau (để phân tích chi tiết về việc tạo bằng chứng, vui lòng đọc bài viết này của ScrollBlog):


1. Ghi lại lời khai: Nhân chứng , cũng là một dấu vết. Nó đề cập đến một số dữ liệu, cùng với các dữ liệu khác, cho thấy lý do tại sao một tuyên bố là đúng. Việc ghi nhật ký được thực hiện thông qua ma trận hai chiều được gọi là bảng theo dõi. Mỗi mục trong bảng này là một phần tử của một trường hữu hạn. Quá trình điền vào bảng theo dõi được gọi là "tạo nhân chứng", yêu cầu lặp qua từng ô trong bảng và điền vào các giá trị chính xác. Quá trình này yêu cầu các phép tính số học trên các trường hữu hạn và được tùy chỉnh cho mạch ZK cụ thể.


2. Gửi nhân chứng: Sau khi nhân chứng được tạo ra, chúng ta thu được một bảng theo dõi và mỗi cột trong bảng sẽ đi qua Nội suy Lagrange hàng ngày được hiểu là một đa thức. Sau đó, các đa thức này có thể được cam kết bằng các cơ chế cam kết khác nhau, chẳng hạn như KZG và FRI. Các phép tính chính liên quan ở đây bao gồm phép nhân đa thức (MSM), các phép biến đổi lý thuyết số ((I)NTT), bình phương đa thức và cây Merkle. Điều này trở thành nút thắt cổ chai cho việc tạo bằng chứng do tính toán phức tạp trên các trường hữu hạn lớn và lượng dữ liệu khổng lồ cần thiết.


3. Chứng minh lời khai là đúng sự thật: Bây giờ bảng theo dõi đã được điền và cam kết đã được tính toán. Điều duy nhất còn lại phải làm là chứng minh rằng dấu vết là hợp lệ. Điều này có nghĩa là những ràng buộc nhất định được đáp ứng. Các phép tính liên quan bao gồm các phép biến đổi lý thuyết số ((I)NTT), phép nhân đa thức (MSM) và làm phẳng đa thức.


Tóm lại, các tính toán trong việc tạo bằng chứng bao gồm một số mô-đun phổ biến: chẳng hạn như phép nhân đa thức (MSM), phép biến đổi lý thuyết số (NTT), cây Merkle và làm phẳng đa thức, và một số mô-đun bổ sung mô-đun.


Trước chúng tôiBlog , chúng tôi trình bày một số chiến lược nâng cao để tối ưu hóa các mô-đun phổ biến này. Trong vài năm qua, cộng đồng cũng đã đề xuất một số kỹ thuật hứa hẹn sẽ tăng tốc các mô-đun phổ biến này (xem công việc của Ulvetanna, Ingonyama và các nhóm khác). Chúng tôi không lặp lại những kỹ thuật này ở đây.


Các mô-đun này không còn là điểm nghẽn về hiệu suất nữa nhưng khả năng tăng tốc từ đầu đến cuối vẫn chưa đạt yêu cầu. Bộ tăng tốc nửa vời này có thể được coi là phiên bản GPU chuyên dụng với một số cải tiến về hiệu suất. So sánh sơ bộ như sau:


· Ưu điểm: Ngoài mô hình tính toán song song SIMD/SIMT kiểu GPU truyền thống, nó còn hỗ trợ đặc biệt tính toán ZK. Điều này cho phép chúng tôi triển khai các phép toán ZK với hiệu suất tối đa mà không cần dựa vào các kỹ năng lập trình CUDA tiên tiến (chẳng hạn như sử dụng CUDA để viết các phép toán số nguyên lớn).

· Nhược điểm: Độ phức tạp của lập trình

· Đối với các máy gia tốc, chúng tôi cung cấp mô hình lập trình cấp cao tương tự như phong cách PyTorch trong AI. Mục tiêu là cung cấp một môi trường "như thể trực tiếp từ". bài báo “Đã dịch” trải nghiệm mã hóa khi đặt bộ chứng minh một phần trên máy gia tốc. Mặc dù chúng tôi cung cấp khả năng lập kế hoạch và kiểm soát linh hoạt ở cấp độ phần cứng, nhưng điều này vẫn đòi hỏi phải hiểu thiết kế phần cứng cơ bản.

· Đối với người dùng GPU sử dụng CUDA, họ có toàn quyền tự do kiểm soát khi sử dụng trực tiếp. Họ có thể thực hiện tối ưu hóa tùy ý. Nhưng điều đó cũng có nghĩa là họ phải bắt đầu lại mọi thứ từ đầu.


Rõ ràng, máy gia tốc chưa hoàn thiện này không đạt được khả năng tăng tốc tối ưu từ đầu đến cuối hoặc giao diện lập trình thân thiện với người dùng. Rõ ràng chúng tôi cần thêm một số yếu tố mới vào kế hoạch của mình.


Phần tử mới này là zkVM!


ZkVM là gì?


Máy ảo (VM) là một chủ đề cũ trong khoa học máy tính, đại khái là một chương trình có thể chạy các chương trình khác. Ví dụ: Máy ảo Ethereum (EVM) có thể chạy các hợp đồng thông minh Ethereum và các hướng dẫn được hỗ trợ của nó có trong bài viết nàySách vàng được quy định. Chúng tôi biết rằng các hệ thống chứng minh không có kiến thức liên quan đến các mạch, vì vậy zkVM là một mạch có thể chạy một loạt hướng dẫn hỗ trợ. Ngoài kết quả thực thi, zkVM còn đưa ra bằng chứng cho thấy dấu vết thực thi VM tương ứng với chuỗi lệnh là hợp lệ.


Tóm lại, zkVM là một mạch ZK có thể chạy VM (được tóm tắt từ bài viết).


Có hai phần đáng xem xét trong thiết kế zkVM:


· Hướng dẫn được hỗ trợ set: Điều này có nghĩa là các hoạt động mà VM có thể thực hiện. Có một số người chơi đã thành danh trong lĩnh vực này, chẳng hạn như Risc0, Succinct, Starknet, Polygon, Metis, v.v., làm việc trên các bộ hướng dẫn khác nhau như RISC-V, MIPS hoặc các bộ hướng dẫn tùy chỉnh.


· Kiến trúc ZK: Phần này liên quan đến bằng chứng ZK được tạo cùng với kết quả thực thi. Kiến trúc ZK gần như độc lập với thiết kế VM cơ bản, nhưng vẫn có một số cân bằng tinh vi cần xem xét.


Có một tính năng hay trong thiết kế zkVM được gọi là tiếp tục (từ RISC0). Trong quá trình thực thi zkVM, tính liên tục là một cơ chế được sử dụng để chia một chương trình lớn thành nhiều đoạn có thể được tính toán và chứng minh độc lập, như thể hiện trong hình sau:



Quá trình phân đoạn (nguồn: Risc0)



Tính năng này thân thiện với phần cứng vì những lý do sau:


· Tính song song: Vì các mảnh được chia này độc lập với nhau nên chúng có thể được phân phối tới nhiều phần cứng để tạo ra các bằng chứng tương ứng cùng một lúc.


· Giảm thiểu yêu cầu băng thông I/O: Việc tạo bằng chứng của zkVM tuân theo mô hình "nhỏ vào, ra nhỏ". Ví dụ: trong Risc0, đoạn bằng chứng được tạo ra có kích thước khoảng 50MB và đầu ra là bằng chứng dựa trên FRI có kích thước khoảng 250KB. Chế độ đặc biệt này làm giảm đáng kể yêu cầu về băng thông I/O.


· Yêu cầu bộ nhớ có thể kiểm soát: Mặc dù đầu vào và đầu ra của mỗi lõi tạo bằng chứng nhỏ nhưng yêu cầu bộ nhớ lại lớn, dao động từ 10 GB. Tuy nhiên, dung lượng bộ nhớ cần thiết phụ thuộc vào kích thước phân đoạn, kích thước này có thể được điều chỉnh dựa trên thiết kế của zkVM.


Dựa trên những tính năng thân thiện với phần cứng này, chúng tôi mô tả thiết kế phần cứng của mình bên dưới.


Thiết kế phần cứng dựa trên zkVM


Kiến trúc hệ thống tương đối đơn giản và chịu trách nhiệm cho một người thực thi Để thực thi chương trình, phần cứng chịu trách nhiệm kiểm soát và phân bổ các "phân đoạn (như đã đề cập ở trên)" khác nhau và một số chip chuyên dụng có thể định cấu hình để tạo bằng chứng ZK cho từng phần của chương trình.



Kiến trúc đơn giản này Cho phép chúng tôi phần cứng để có các yếu tố hình thức linh hoạt. Chúng tôi có thể đóng gói bộ thực thi (sử dụng CPU yếu hoặc lõi CPU trên chip), một số chip zkVM nhất định và các thành phần phần cứng cần thiết khác (chẳng hạn như bộ nhớ) vào một khung duy nhất. Một trường hợp đơn giản hơn là đóng gói nhiều chip vào một máy di động, như bộ sạc Macbook.


Phần cứng zkVM bao gồm một số lõi tính toán:


· Một máy vectơ lập trình Được sử dụng để vector hóa hoạt động.

· Mô-đun NTT chuyên dụng cho các trường 31-bit, 64-bit và 256-bit.

· Mô-đun MSM chuyên dụng hỗ trợ các đường cong BN254, BLS12–377 và BLS12–388.

· Đơn vị hàm băm có thể cấu hình cho các hàm băm dựa trên các hoạt động tại hiện trường.


Bên cạnh những ưu điểm mà zkVM mang lại, mô hình thiết kế ZK-ASIC mới này cũng đã được chuyển hóa thành nhiều sản phẩm xuất sắc dành cho mục đích sử dụng cá nhân hoặc doanh nghiệp, như sau Được hiển thị:



Các sản phẩm ZK ASIC


Trân trọng chào đón sự hợp tác


Cysic Dự án phần cứng zkVM nhằm mục đích xây dựng một phần cứng hiệu quả về mặt chi phí, phù hợp với nhiều trường hợp sử dụng, hiệu suất và năng suất phát triển. Chúng tôi tìm kiếm những quan điểm đa dạng, ý tưởng đổi mới và cam kết đầu tư để cải thiện và mở rộng các thiết kế phần cứng của mình. Chúng tôi mong nhận được sự tham gia và đóng góp ý kiến của cộng đồng và sẵn sàng cung cấp hướng dẫn cũng như hỗ trợ cho bất kỳ ai quan tâm đến việc tham gia.


Bài viết này là từ một bài gửi và không thể hiện quan điểm của BlockBeats.


Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:

Nhóm Telegram đăng ký: https://t.me/theblockbeats

Nhóm Telegram thảo luận: https://t.me/BlockBeats_App

Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia

举报 Báo lỗi/Báo cáo
Chọn thư viện
Thêm mới thư viện
Hủy
Hoàn thành
Thêm mới thư viện
Chỉ mình tôi có thể nhìn thấy
Công khai
Lưu
Báo lỗi/Báo cáo
Gửi