Phần cứng FPGA có thể giải quyết tốt hơn hiện trạng không hiệu quả và tốn kém của việc tạo ZKP proof. Trong cuộc đua cạnh tranh phần cứng, FPGA tạm thời ở vị trí dẫn đầu so với GPU và ASIC.
Giới thiệu
Zero-knowledge cryptography là một trong những đổi mới mạnh mẽ nhất trong khoa học máy tính trong 50 năm qua. Một loạt các "lợi thế bẩm sinh" của các zero-knowledge proofs (ZKP) làm cho chúng trở thành một phần quan trọng của các giải pháp mở rộng và quyền riêng tư của các blockchain khác nhau, bao gồm các ZK Rollups như StarkNet, các private ZK Rollup như Aztec và các one-layer public chain như Mina, Filecoin và Aleo,… đã áp dụng công nghệ này.
Mặc dù việc sản xuất ZKP chậm và tốn kém do nhu cầu rất lớn về tính toán toán học. Tuy nhiên, với việc phổ biến và triển khai phần cứng đặc biệt được đại diện bởi Field Programmable Arrays (FPGA) và Application-Specific Integrated Circuits (ASIC), hiệu quả của ZKP sẽ được cải thiện đáng kể và thậm chí có thể tăng lên tới 1.000 lần.
Khi nhu cầu về máy tính cá nhân được cá nhân hóa và hiệu suất cao ngày càng tăng lên, độ phức tạp của các ZKP proof sẽ tiếp tục tăng lên. Do đó, để tránh việc giảm thêm tốc độ tạo proof chỉ có thể sử dụng phần cứng chuyên dụng, để các proof có thể được tạo ra một cách kịp thời hơn.
Điều này có nghĩa là "ngành công nghiệp chuỗi" này sẽ có những thay đổi đáng kể, giống như những miner phục vụ mạng Bitcoin, các nhà khai thác phần cứng đặc biệt này để hỗ trợ hoạt động hiệu quả của ZKP sẽ được nhận reward. Đây là nơi ngành công nghiệp sẽ xuất hiện. Mọi người có thể tạo ra proof trên CPU của riêng họ hoặc sử dụng GPU và FPGA. Tất nhiên, sự trưởng thành của chuỗi hoàn chỉnh này sẽ mất khá nhiều thời gian để phát triển.
Tại sao zero-knowledge proof lại quan trọng?
Có 2 trường hợp sử dụng chính cho các zero-knowledge proof:
Máy tính có thể xác minh được bên ngoài
Giả sử bạn đang có nhu cầu computing (giải mã các thuật toán trên máy tính). Do những hạn chế của nền tảng bạn đang sử dụng (chẳng hạn như máy tính xách tay của bạn, Raspberry Pi hoặc thậm chí Ethereum,..), chi phí thời gian để hoàn thành các computing này là quá đắt hoặc thậm chí không thể hoàn thành do không đủ sức mạnh tính toán. Tại thời điểm này, bạn phải dựa vào các dịch vụ của bên thứ ba để chạy tính toán, các dịch vụ này có thể trả lại cho bạn đầu ra của tính toán một cách nhanh chóng và rẻ tiền (ví dụ: chức năng AWS Lambda hoặc các dịch vụ Oracle như Chainlink,…).
Tuy nhiên, bên thứ 3 có thể cho ra kết quả tính toán sai hoặc không hợp lệ, điều này có thể gây ra hậu quả lớn.
ZKP cho phép các nhà cung cấp bên thứ ba cũng đưa ra proof về tính toàn vẹn tính toán, đảm bảo rằng đầu ra bạn nhận được là chính xác.
Tính toán quyền riêng tư
ZKP cho phép bạn ẩn một số hoặc tất cả các dữ liệu đầu vào liên quan đến câu lệnh tính toán một cách có chọn lọc.
Cả 2 trường hợp sử dụng trên đã có mặt dưới nhiều hình thức trong ngành công nghiệp tiền điện tử
- Mở rộng Layer2: Xác minh tính toán và ZKP cho phép public blockchain thuê ngoài xử lý giao dịch cho các hệ thống hiệu suất cao ngoài chuỗi (Layer2). Điều này cho phép blockchain mở rộng quy mô mà không ảnh hưởng đến bảo mật.
Ví dụ, StarkWare đang xây dựng một nền tảng hợp đồng thông minh mở rộng, StarkNet, sử dụng một máy ảo có mục đích đặc biệt chạy mã thân thiện với ZK. Ứng dụng cấp hai của Aztec hỗ trợ hoạt động bảo mật và sẽ không tiết lộ bất kỳ thông tin nào về giao dịch của người dùng.
- Privacy Public Chains: One-layer public chain như Aleo, Mina và Zcash cho phép các nhà giao dịch sử dụng ZKP để ẩn thông tin người gửi, người nhận hoặc số tiền, Aleo là mặc định hoặc còn Mina và Zcash có thể tuỳ chọn.
- Decentralized Storage: Filecoin sử dụng ZKP (chạy trên GPU) để chứng minh rằng các node trong mạng lưu trữ dữ liệu một cách chính xác.
- Blockchain Compression: Mina và Celo sử dụng ZKP để nén dữ liệu blockchain cần thiết để đồng bộ hóa với trạng thái mới nhất của chuỗi thành một proof nhỏ.
Với những điều trên, có thể nói rằng khi việc áp dụng tiền điện tử tăng lên, nhu cầu thị trường đối với ZKP cũng sẽ tăng lên song song để đáp ứng nhu cầu ngày càng tăng của người dùng về hiệu suất và quyền riêng tư.
ZKP cung cấp khả năng cho các thanh toán cá nhân có thể mở rộng và sự phát triển nhanh chóng của các nền tảng hợp đồng thông minh, nhưng chi phí tính toán cao đã làm hạn chế việc áp dụng hàng loạt ở một mức độ nhất định.
Tại sao ZKP chậm và làm thế nào chúng ta có thể làm cho chúng nhanh hơn?
Việc chứng minh một tính toán dựa trên ZKP trước tiên đòi hỏi phải "dịch" nó từ một mô tả cổ điển sang một định dạng thân thiện với ZK. Điều này có thể được thực hiện bằng cách viết lại code theo cách thủ công để sử dụng một thư viện cấp thấp như Arkworks, hoặc sử dụng một ngôn ngữ chuyên ngành như Cairo hoặc Cicom để biên dịch nó thành nguyên bản để tạo ra proof.
Các hoạt động tốn kém và phức tạp hơn dẫn đến thời gian tạo proof lâu hơn. Ngoài ra, một số thao tác không thân thiện với ZK (như SHA, v.v.) cũng sẽ khiến thời gian tạo proof trên các máy tính thông thường trở nên rất lâu.
Khi tính toán của bạn trở nên thân thiện với ZK, bạn có thể chọn dữ liệu đầu vào và gửi đến một hệ thống chứng minh. Ví dụ, Groth16, GM17 hoặc PLONK, Spartan và STARK. Các hệ thống chứng minh này đều chấp nhận các tính toán được thể hiện ở định dạng thân thiện với ZK. Tùy thuộc vào hệ thống chứng minh, quá trình tạo proof có thể khác nhau, nhưng thực sự có những khó khăn tương đồng, cụ thể là:
- Sự gia tăng số lượng lớn các vector, đặc biệt là rebase và fixed-base (MSM)
- Fast Fourier Transform (FFT) và FFT nghịch đảo (mặc dù có những kỹ thuật để chứng minh hệ thống mà không có FFT).
Trong một hệ thống có cả FFT và MSM, khoảng 70% thời gian tạo proof được dành cho MSM và phần còn lại được dành cho tính toán FTT. Cả MSM và FFT đều chậm, nhưng không phải không có khả năng tối ưu hóa. Hãy nhìn vào vấn đề đầu tiên:
- Đối với MSM, nó có thể được tăng tốc bằng cách chạy trong nhiều luồng. Tuy nhiên việc đó vẫn mất rất nhiều thời gian. Điều này có thể khiến thiết bị “ quá tải bộ nhớ". Nói tóm lại, MSM đòi hỏi rất nhiều bộ nhớ và vẫn chậm ngay cả với nhiều luồng.
- FFT phụ thuộc rất nhiều vào việc tổ chức lại (reorganization) dữ liệu thường xuyên khi thuật toán đang chạy. Điều này khiến chúng khó được tăng tốc bằng cách phân phối hiệu quả tải trên một cụm tính toán đòi hỏi một lượng lớn băng thông để chạy trên phần cứng. Reorganization có nghĩa là bạn cần load và unload các phần của dữ liệu một cách"ngẫu nhiên".
Ví dụ: Tải bộ dữ liệu >100GB trên chip phần cứng có bộ nhớ 16GB trở xuống. Tuy hoạt động trên phần cứng rất nhanh nhưng thời gian load và unload dữ liệu thông qua giao diện khiến hoạt động chậm lại đáng kể.
Đơn giản chỉ cần làm:
- Các yêu cầu truy cập bộ nhớ của MSM có thể dự đoán được và có thể đạt được massive parallelization, nhưng chi phí của nó vẫn cao do các yêu cầu rất lớn về tính toán và bộ nhớ.
- Truy cập bộ nhớ của FFT là ngẫu nhiên, không thân thiện với phần cứng và khó chạy trên cơ sở hạ tầng phân tán.
Công việc hứa hẹn nhất mà mình thấy để giải quyết sự chậm chạp của các MSM và FFT lớn là PipeZK. Trong một bài báo, các tác giả mô tả một cách để làm cho MSM hiệu quả hơn bằng cách bỏ qua các tính toán lặp đi lặp lại bằng cách sử dụng thuật toán của Pippenger. Họ cũng mô tả một phương pháp "unrolling" FFT, để tính toán có thể được thực hiện mà không cần tổ chức lại dữ liệu và mô hình truy cập bộ nhớ trở nên có thể dự đoán được, có thể cải thiện hiệu quả tính toán của phần cứng.
Giả sử cách tiếp cận trên giải quyết được các nhược điểm của mỗi thuật toán, câu hỏi đặt ra là phần cứng sẽ trông như thế nào có thể tối ưu hóa cả thuật toán MSM và FTT và làm cho thế hệ ZKP hiệu quả hơn nhiều?
Lựa chọn phần cứng như thế nào?
Công nghệ tăng tốc trên có thể được triển khai trên nhiều công nghệ phần cứng, bao gồm GPU, FPGA và ASIC. Nhưng lựa chọn nào là tốt nhất?
Trước khi trả lời câu hỏi này, chúng ta hãy làm rõ rằng ZKP vẫn đang trong giai đoạn sơ khai và vẫn chưa có tiêu chuẩn hóa trong việc lựa chọn các thông số hệ thống (như chiều rộng FFT hoặc khối lượng dữ liệu tham số) hoặc hệ thống chứng minh. Bởi vì điều này, 2 tính năng cốt lõi của FPGA làm cho chúng hấp dẫn hơn ASIC trong môi trường hiện tại.
- "Write multiple times" so với "Write once": Logic kinh doanh trên ASIC là write once. Nếu bất kỳ logic ZKP nào thay đổi, bạn cần phải bắt đầu lại từ đầu. Trong khi FPGA có thể đạt được reflashes cấp 2, có nghĩa là cùng một phần cứng có thể được tái sử dụng trên nhiều chuỗi với các hệ thống chứng minh không tương thích và phần cứng có thể thích ứng với các thay đổi "meta" ZK rất linh hoạt.
- Chuỗi cung ứng trưởng thành hơn: ASIC thường mất 12 đến 18 tháng hoặc hơn để thiết kế, sản xuất và triển khai. Ngược lại, chuỗi cung ứng FPGA trưởng thành hơn nhiều, với các nhà cung cấp hàng đầu như Xilinx cho phép các đơn đặt hàng bán lẻ lớn được đặt từ trang web và đến trong vòng 16 tuần. Điều này cho phép các doanh nghiệp tập trung vào FPGA có một vòng lặp phản hồi chặt chẽ hơn về sản phẩm của họ và linh hoạt hơn để mở rộng quy mô kinh doanh bất cứ lúc nào bằng cách mua và triển khai nhiều FPGA hơn.
Với sự phát triển của công nghệ trong lĩnh vực học máy và thị giác máy tính, hiệu suất của FPGA dự kiến sẽ vượt qua cả GPU trong tương lai. So với GPU, FPGA vẫn có 2 lợi thế rõ ràng:
- Chi phí phần cứng: FPGA rẻ hơn ~ 3 lần so với GPU. Sự thiếu hụt GPU toàn cầu càng làm trầm trọng thêm vấn đề.
- Tỷ lệ tiêu thụ điện năng: FPGA tiết kiệm năng lượng hơn 10 lần so với GPU, phần lớn là do GPU cần được kết nối với thiết bị chủ để chạy, thường tiêu thụ rất nhiều năng lượng.
Với những điều trên, chúng tôi hy vọng những người chiến thắng trên thị trường sẽ là những công ty tập trung vào FPGA thay vì ASIC hoặc GPU. Tuy nhiên, nếu chỉ có một hoặc một vài ZK L1 hoặc L2 kết thúc "độc quyền" thị trường và ZK chứng minh rằng hệ thống ổn định trong một lần triển khai duy nhất, ASIC có nhiều khả năng đánh bại FPGA. Nhưng từ tình hình hiện tại, ngay cả khi nó xảy ra, nó có thể mất nhiều năm.
Tổng kết
Trong năm 2021, các miner Bitcoin đã kiếm được hơn 15 tỷ đô la thu nhập và các miner Ethereum kiếm được hơn 17 tỷ đô la. Zero-knowledge proof cuối cùng sẽ trở thành một phương tiện quan trọng để đạt được tính toàn vẹn và quyền riêng tư của máy tính trên mạng. Trong trường hợp này, quy mô thị trường của "miner ZK" dự kiến sẽ tương đương với thị trường mining PoW.
Tóm lại, ít nhất là trong bối cảnh hiện tại, phần cứng FPGA có thể giải quyết tốt hơn hiện trạng không hiệu quả và tốn kém của việc tạo ZKP proof. Trong cuộc đua cạnh tranh phần cứng, FPGA tạm thời ở vị trí dẫn đầu so với GPU và ASIC.