在這條新賽道的硬件競逐中,FPGA 相比GPU 和ASIC 暫時處在領先的位置之上。
撰文:Georgios Konstantopoulos,Paradigm 研究合夥人
編譯:Amber
簡介
零知識密碼學是計算機科學領域在近50 年間最引人注目的創新之一。零知識證明(以下簡稱ZKPs)的一系列「先天優勢」使其成為了各種區塊鏈擴容和隱私解決方案的重要組成部分,包括像StarkNet 這樣的ZK rollups,像Aztec 這樣的隱私ZK rollups,以及像Mina、Filecoin 和Aleo 這樣的一層公鍊等等,都應用了該技術。
雖然受制於龐大的數學計算需求量導致ZKPs 的生產速度緩慢且昂貴。但隨著以現場可編程陣列(以下簡稱FPGA)和專用集成電路(以下簡稱ASIC)為代表的特殊硬件的普及和落地,ZKPs 的效率將得以大幅提升,提升幅度甚至可能達到1000 倍之多。
隨著個性化且高性能的隱私計算需求日益增長,使用ZKPs 證明的語句複雜性將進一步增加。因此也只能通過使用專門的硬件來避免證明生成速度進一步下降,以便更及時地生成證明結果。
這意味著這個「產業鏈」將迎來變革,就像那些服務於比特幣網絡的礦工一樣,這些為了支持ZKPs 高效運行的特殊硬件操作者將得到相應的補償,一個完整的ZK 挖礦和證明行業將就此出現。業餘愛好者們可以在他們自己的CPU 上生成證明,亦或是使用GPU 以及FPGA。當然這個完整鏈條的成熟還需要相當一段時間的演變。
零知識證明為什麼重要?
零知識證明有兩個主要的用例:
1、外包可驗證的計算
假設你有一些計算需求,由於你所使用的平台(如你的筆記本電腦、樹莓派甚至以太坊等)的限制,完成這些計算的時間成本過於昂貴甚至由於算力不足根本無法完成。這時候你就必須依靠第三方服務來運行該計算,一般來說,這些服務都可以快速且平價地返回給你該計算的輸出(例如AWS 的Lambda 函數或像Chainlink 這樣的Oracle 服務等)。
但是,通常情況下你只能默認計算已經被正確執行,而一旦算力提供方輸出了一個錯誤或者無效的計算結果,這就可能會造成災難性的後果。
ZKPs 的價值就體現在其允許第三方提供者也輸出一個計算完整性的證明,保證你收到的輸出是正確的。
2、隱私計算
如果你有一個計算需求在本地運行並不昂貴,但你想隱藏它的一部分,怎麼辦?例如,如果我想讓你知道我知道第1000 個斐波那契數,但不告訴你這個數字,或者讓你相信我已經支付了一筆錢,但不向你透露金額或我的身份,怎麼辦?
ZKPs 就可以讓你有選擇地隱藏計算語句相關的部分或全部輸入內容。
上述兩個用例都已經以很多種形式體現在加密貨幣行業的方方面面。
-
二層擴展:可驗證的計算與ZKPs 允許一層公鏈將交易處理外包給鏈外高性能係統(又稱二層)。這使得區塊鏈可以在安全性不受影響的前提下進行擴展。舉例來說,StarkWare 正在建立一個可擴展的智能合約平台,StarkNet,其中就使用了一個用於特殊用途的虛擬機,運行ZK 友好的代碼。而Aztec 的二層應用支持隱私運行,不會洩露用戶交易的任何信息。
-
隱私公鏈:像Aleo、Mina 和Zcash 這樣的一層公鏈允許交易人使用ZKPs 來隱藏發送者、接收者或金額等信息,可以是默認的(Aleo),也可以是選擇加入(Mina 和Zcash)。
-
去中心化的存儲:Filecoin 使用ZKPs(在GPU 上運行)來證明網絡中的節點正確存儲數據。
-
區塊鏈壓縮:Mina 和Celo 使用ZKPs 將同步到鏈的最新狀態所需的區塊鏈數據壓縮成一個小證明。
鑑於上述情況,可以說,隨著加密貨幣採用率的提高,ZKPs 的市場需求也會同步增長,以適應用戶對性能和隱私的需求增加。
ZKPs 從根本上為可擴展的私人支付以及智能合約平台的加速發展提供了可能,但是其高昂的計算成本在一定程度上限制了其大規模採用的進程。
ZKPs 為什麼會很慢,我們要如何讓其快起來?
基於ZKPs 證明一個計算首先需要將其從經典描述「翻譯」成ZK 友好的格式。這可以通過手動重寫代碼來完成,以使用像Arkworks 這樣的低級庫,或者使用像Cairo 或Circom 這樣的專用語言將其編譯成原語來生成證明。
更昂貴和復雜的操作會導致需要花費更長的證明生成時間。此外一些對ZK 不友好(例如SHA 等)操作也會導致在普通計算機上的證明生成時間會變得非常長,而這種情況時常發生。
一旦你的計算變成了ZK 友好的形式,你就能選擇一些輸入並將其發送到一個證明系統。比如以其論文作者的名字命名的Groth16、GM17,或是名字更具創意的PLONK、Spartan 以及STARK 等。這些證明系統都接受以ZK 友好格式表達的計算。根據不同的證明系統,證明的生成過程可能有所不同,但瓶頸實際上存在共性,即:
-
大數向量的乘法,特別是變基和定基多標度乘法(以下簡稱MSM);或者
-
快速傅里葉變換(以下簡稱FFT)和反FFT(儘管有無FFT 證明系統的技術)。
在同時存在FFT 和MSM 的系統中,生成證明的時間中大概70% 會花在MSM 上,剩下的時間則用於FTT 計算。 MSM 和FFT 都很慢,但也並非毫無優化的可能。先看問題:
-
對於MSM 來說,可以通過在多線程運行來進行加速。然而,即使在數百個內核上,如果每個元素向量達到2 的25 次方個(即3300 萬個元素,對於像zkEVM 這樣的應用來說,這是一個保守的複雜度估計),乘法最終仍然需要花費大量的時間。這就可能會導致設備「爆內存」。簡而言之,MSM 需要大量的內存,即使在多線程的情況下仍然很慢。
-
FFT 很大程度上依賴於算法運行時數據的頻繁重組。這使得它們很難通過在一個計算集群中有效分配負載來加速,這類計算在硬件上運行時需要大量的帶寬。重組意味著你需要「隨機」加載和卸載部分數據,例如,在內存為16GB 或更少的硬件芯片上加載一個> 100GB 的數據集。雖然硬件上的操作非常快,但通過接口加載和卸載數據的時間會導致操作速度大幅減慢。
簡單來說:
-
MSM 的內存訪問需求是可預測的,可以實現大量的並行化,但由於原始的計算量和內存需求非常大,其成本仍然很高。
-
FFT 的內存訪問是隨機的,這一點對硬件並不友好,而且自然很難在分佈式基礎設施上運行。
我們在解決大型MSM 和FFT 的緩慢性方面看到的最有希望的工作是PipeZK。在他們的論文中,作者描述了一種使用Pippenger 算法跳過重複計算來讓MSM 變得更加高效的方法。他們還描述了一種「unroll」FFT 的方法,這樣就可以在不進行大量數據重組的情況下進行計算,內存的訪問模式會變得可預測,這可以有效提升硬件的計算效率。
假設上述方法解決了每種算法的基本瓶頸問題,那麼問題就來了。能夠同時優化MSM 和FTT 算法並讓ZKP 生成效率大幅提升的硬件是什麼樣的呢?
硬件的選擇
上述加速技術可以在多種硬件技術上實現,包括但不限於GPU、FPGA 以及ASIC 等。但哪一個是最好的選擇呢?
在回答這個問題之前我們要先明確一點,ZKPs 仍然處於發展的早期,系統參數(如FFT 寬度或參數的數據體積)或證明系統的選擇上仍然沒有實現標準化。正因為如此,FPGA 的兩個核心特性讓其在當前的大環境中相比ASIC 更具吸引力。
-
「多次寫入」對比「一次性寫入」:ASIC 上的業務邏輯是一次性寫入的。如果任何ZKP 邏輯發生變化,你就需要從頭再來。而FPGA 可以實現秒級的重新刷新,這意味著可以在具有不兼容的證明系統的多個鏈上重新使用相同的硬件(例如,因為他們想跨鏈提取MEV),硬件可以適應ZK「元」的變化靈活。
-
更成熟的供應鏈:ASIC 的設計、製造和部署通常需要12 至18 個月乃至更長的時間。相比之下FPGA 供應鏈要成熟許多,像Xilinx 這樣頭部的供應商允許從網站上下訂大量的零售訂單並在16 週內到達。這使得以FPGA 為中心的業務能夠對其產品有一個更緊湊的反饋迴路,並能更靈活地通過購買和部署更多的FPGA 來隨時擴大業務規模。
而隨著機器學習和計算機視覺領域技術的發展,未來FPGA 的性能甚至有望超越GPU,而與GPU 相比,FPGA 還存在兩個很明顯的優勢:
-
硬件成本:頂級FPGA(領先的工藝節點、時鐘頻率、能耗比和存儲器帶寬)比頂級GPU 便宜約3 倍。而全球內GPU 供不應求的狀況進一步加劇了這個問題。
-
能耗比:FPGA 的能效比GPU 高10 倍以上,很大的原因是GPU 需要連接到主機設備上才能運行,而主機設備往往要消耗大量的電能。
鑑於上述情況,我們預計市場上的獲勝者將是那些專注於FPGA 而不是ASIC 或GPU 的公司。然而,如果只有一個或幾個ZK L1 或L2 最終「壟斷」了市場,且ZK 證明系統穩定在一個單一的實現方案上的話,ASIC 戰勝FPGA 的可能性會更大。但從目前的情況來看,即便會發生,可能也需要等到很多年以後。
結論
在剛剛結束的2021 年裡,比特幣礦工的淨收入超過150 億美元,以太坊礦工的收入更是超過了170 億美元。零知識證明最終會成為網絡上計算完整性和隱私的重要實現手段,在這種情況下,「ZK 礦工」的市場規模有望媲美PoW 挖礦市場。
而綜上所述,至少在當前的背景下,FPGA 硬件可以更好地解決ZKPs 證明生成低效且昂貴的現狀,在這條新賽道的硬件競逐中,FPGA 相比GPU 和ASIC 暫時處在領先的位置之上。
展開全文打開碳鏈價值APP 查看更多精彩資訊