零知識密碼學是過去50 年計算機科學中最顯著的創新之一。零知識證明(ZKP) 提供了獨特的屬性,使其成為各種區塊鏈擴展和隱私解決方案的重要組成部分,包括像StarkNet這樣的ZK rollup、像Aztec這樣的私有ZK rollup 以及像Mina、Filecoin和Aleo這樣的第1 層鏈。
由於大量昂貴的數學運算,ZKP 的生產速度慢且成本高。但是,通過使用現場可編程門陣列(FPGA) 和專用集成電路(ASIC) 等專用硬件,它們可以加速10-1000 倍。
隨著用戶尋求更具表現力、性能和私密性的計算,使用ZKP 證明的語句的複雜性將會增加。這將導致證明生成速度變慢,需要使用專門的硬件才能及時生成證明。
與比特幣礦工類似,硬件運營商的工作需要得到補償。最終,一個完整的零知識挖掘和證明行業將會顯現,首先是愛好者在他們的CPU 中生成證明,然後是GPU,然後是FPGA。與比特幣相比,我們預計ASIC 可能需要很長時間才能被採用(如果有的話)。
為什麼零知識證明很重要?
-
可驗證外包計算
假設由於使用的平台(例如筆記本電腦、樹莓派,甚至是以太坊)存在的限制,計算變得非常昂貴或無法運行。
那麼用戶必須在第三方服務上運行計算,而不是通過自己的平台,這種第三方服務可以快速、廉價地返回計算輸出(例如AWS Lambda 函數,或類似Chainlink 的預言機服務)。
通常情況下,用戶需要信任計算已正確執行,而允許提供者輸出無效結果,可能會帶來災難性的後果。
ZKP 允許第三方提供商也輸出計算完整性的證明,以保證用戶收到的輸出是正確的。
-
隱私計算
如果有一種在本地運行成本不高的計算,但想隱藏其中的一部分,那該怎麼辦?比方說,如果我想告訴你我知道第1000 個斐波那契數,而不告訴你這個數,或者要說服你,我在沒有透露金額或身份的情況下支付了款項,那該怎麼辦?
ZKP 允許用戶有選擇地隱藏計算語句周圍的部分或全部輸入。
上述兩種用例都以多種形式在加密行業中得到了體現:
-
Layer 2 擴容:ZKP 的可驗證計算,允許L1 將交易處理外包給鏈外高性能係統(也稱為Layer 2)。這使得區塊鏈可以在不損害安全性的情況下進行擴容。例如,StarkWare 正在使用運行ZK 友好代碼的專用虛擬機構建一個可擴展的智能合約平台StarkNet。 Aztec 還允許他們的Layer 2 程序私下運行,而不會洩露有關用戶交易的任何信息。
-
隱私L1:Aleo、Mina 和Zcash 等L1 公鏈允許交易者使用ZKP 隱藏發送者、接收者或金額(其中Aleo 是默認使用ZKP,而Mina 和Zcash 是可選使用)。
-
去中心化存儲:Filecoin 使用ZKP(在GPU 上運行)來證明網絡中的節點正確存儲數據。
-
區塊鏈壓縮:Mina 和Celo 使用ZKP 將同步到鏈上最新狀態所需的區塊鏈數據壓縮成一個小證明。
鑑於上述情況,可以肯定地說,隨著加密資產採用率的增加,我們將需要ZKP,以適應用戶對性能和隱私以及新型應用程序和協議日益增長的需求。
ZKP 從根本上允許可擴展的私人支付和智能合約平台蓬勃發展,但也帶來了巨大的開銷,這在歷史上阻礙了它們的採用。
為什麼ZKP 很慢,我們如何讓它們變快?
證明計算需要首先將其從經典程序轉換為ZK 友好格式。這可以通過手動重寫代碼以使用Arkworks 之類的低級庫來實現,也可以通過使用Cairo 或Circom 之類的域特定語言來編譯成必要的原語來生成證明。
而更昂貴和更複雜的操作會導致更長的證明生成時間。一些操作對ZK 不友好(例如SHA 或Keccak 中使用的逐位操作)也很常見,這導致在經典計算機上可能是廉價操作的證明生成時間很長。
一旦您的計算採用ZK 友好的形式,你就可以選擇一些輸入並將其發送到證明系統。目前已經有很多證明系統,一些以論文作者的名字命名(例如Groth16、GM17),另一些則以更具創造性的名字命名(PLONK、Spartan、STARK)。它們的共同點是,它們接受一個以ZK 友好格式表示的計算,以及一些輸入,並輸出一個證明。
根據證明系統的不同,證明生成過程可能會有所不同,但瓶頸始終是:
-
對大型數字向量(字段或組元素)的乘法,特別是可變基數和固定基數多標量乘法(MSM);或
-
快速傅里葉變換(FFT)和逆快速傅里葉變換(IFFT)(儘管有一些技術適用於無FFT 證明系統);
在同時存在FFT 和MSM 的系統中,大約70% 的生成證明時間都花在MSM 上,而其餘時間則由FFT 主導。
MSM 和FFT 都很慢,但也都有提高性能的方法:
MSM 可以通過在多個線程上運行它們來進行加速。然而,即使在數百個內核上,如果每個元素向量的長度為2^25(即3300 萬個元素,對於像 zkEVM 這樣的應用程序來說,這是一個保守的複雜度範圍),那麼乘法最終仍然會花費大量時間。這意味著經常重複相同的操作,並且會耗盡設備上的大部分可用內存。簡而言之,MSM 需要大量內存,並且即使在高度並行化時仍然會很慢。
FFT 嚴重依賴算法運行時數據的頻繁洗牌。這使得它們很難通過在計算集群中分配負載來實現加速,正如 DIZK 所示。此外,它們在硬件上運行時需要大量帶寬。重組意味著你需要“隨機”加載和卸載元素,例如,在內存等於或少於16 GB 的硬件芯片上,從大於100 GB 的數據集中加載和卸載元素。雖然硬件上的操作非常快,但通過網絡加載和卸載數據的時間最終會顯著減慢操作速度。
簡言之:
-
MSM 具有可預測的內存訪問,並允許大量並行化,但由於所需的原始計算量和內存量,它們的成本仍然很高。
-
FFT 有隨機的內存訪問,這使得它們對硬件不友好,而且很難在分佈式基礎設施上運行。
在解決大型MSM 和FFT 的緩慢問題方面,我們看到的最有希望的工作是 PipeZK。在他們的論文中,作者們描述了一種使用 Pippenger 算法跳過重複計算的方法以降低MSM的成本。他們還描述了一種“展開”FFT 的方法,這樣它們就可以在不進行重大改組的情況下執行,而由於可預測的內存訪問模式,這可以提高硬件的速度。
假設上述方法解決了每種算法的基本瓶頸,那麼問題就變成了:使用高度優化的MSM 和FFT 算法來加速ZKP 生成的最佳硬件是什麼?
硬件很重要
上述加速技術可以在多種硬件技術上實現:GPU、FPGA 或ASIC。但哪一種是最好的選擇呢?
要回答這個問題,我們首先必須承認ZKP 仍處於早期發展階段。系統參數(例如FFT 寬度或元素的位大小)或證明系統的選擇仍然缺乏標準化。
由於這些因素,FPGA 有兩個核心特性使其在ZK 環境中優於ASIC:
“多次寫入”與“一次寫入”:ASIC 上的業務邏輯是一次寫入。如果任何ZKP 邏輯發生變化,你需要從頭開始。 FPGA 可以在1 秒內重新刷新任意次數,這意味著它們可以在具有不兼容證明系統的多個鏈上重複使用相同的硬件(例如,因為他們想要跨鏈提取MEV),並靈活地適應ZK“meta”的變化。
更健康的供應鏈:ASIC 從設計、製造到部署,通常需要12 到18 個月或更長的時間。相比之下,FPGA 供應鍊是健康的,像Xilinx 等領先供應商允許在16 週內從網站(即沒有任何联系點)獲得大量零售訂單。這允許以FPGA 為中心的運營商在其產品上有一個更緊密的反饋循環,並通過購買和部署更多FPGA 來擴大運營規模。
我們還預計FPGA 的性能將優於GPU,原因與它們在機器學習和計算機視覺領域蓬勃發展的原因類似:
1、硬件成本:一流的FPGA(領先的處理節點、時鐘速度、能效和內存帶寬)比一流的GPU 便宜約3 倍。此外,全球對GPU 的需求進一步加劇了這一問題。
2、能效:FPGA 的能效比GPU 高10 倍以上,其中一個重要原因是需要將GPU 連接到主機設備,這通常會消耗大量電力。
鑑於上述情況,我們預計市場上的贏家將是專注於FPGA 而非ASIC 或GPU 的公司。然而,如果只有一個或幾個ZK L1 或L2 項目最終主導了市場,並且ZK 證明系統穩定在單一實現上,那麼ASIC 勝過FPGA 的可能性可能會更高。但這種情況要真的發生,我們可能還需要等待幾年的時間。
結論
2021 年,比特幣礦工的淨收入超過150 億美元,以太坊礦工則剛剛超過170 億美元。零知識證明最終成為網絡計算完整性和隱私的事實媒介,這似乎是合理的。在這種情況下,零知識礦工/證明人的機會可能與工作量證明挖礦市場的規模相似。
ZKP 很慢,其需要硬件加速才能在復雜的計算中變得可行。我們認為,對ZK 硬件加速最重要的技術是FPGA,而不是GPU(由於成本和能源效率)或ASIC(由於它們不靈活以及長迭代周期)。
文章源自:Paradigm CTO 兼研究合夥人 Georgios Konstantopoulos