作者:宋嘉吉任鶴義
原文:《 ZK證明計算:算力硬件的新征途? 》
摘要
零知識證明在以太坊擴容、乃至區塊鏈行業發展中都被寄予厚望。而零知識證明技術面臨一定難度,雖然各類創新算法不斷湧現,但驗證易、生成證明難的局面依舊。我們前期報告也分析過,區塊鏈擴容的一大方向便是計算脫鏈,因此將證明生成計算放在鏈外則成為主流方案。為解決生成證明過程的去中心化問題,ZK證明計算逐漸風生水起。隨著以太坊合併之後,市場存量的以顯卡算力只能另尋他途。而ZK證明正是為這些礦機硬件提供了新的應用空間。 (相關閱讀:《 六問六答丨以太坊轉POS之後,將如何影響礦工和加密市場? 》)
零知識證明協議的驗證非常快,而所有的難點就在於生成證明。只要生成證明的速度跟得上,那麼鏈上驗證就很簡單,驗證亞線性特點更利於區塊鏈的拓展性。零知識證明目前有多種實現方式,如ZK-SNARKS、ZK-STARKS、PLONK以及Bulletproofs。每種方式在證明大小、證明者時間以及驗證時間上都有自己的優缺點。完全理想的零知識證明非常難達到,幾種主流的算法通常在不同維度之間做平衡。 ZK-SNARK具有更簡潔的證明,耗費更小的鏈上存儲空間,但需要可信設置,存儲一定的風險和漏洞。 ZK-STARK具有更快的驗證速度和證明速度,不需要可信設置,但是電路規模很大。 BulletPropfs沒有可信設置,且性能可拓展性很高,證明大小不是指數級增加,節省更多的存儲空間。
ALEO的目標是構建一個可編程的隱私DeFi平台,類似Zcash和以太坊的綜合體。用戶可以不洩露數據隱私的情況下,使用區塊鍊網絡服務,其利用的主要技術就是零知識證明。零知識證明可以在不透露輸入參數的情況下,驗證交易的有效性,這為隱私驗證提供了新的解決方案。 Aleo結合零知識提供了全棧解決方案,保證應用程序堆棧的每一層都可編程、可使用、可去中心化隱私計算。這有些類似Zcash和以太坊的綜合,既考慮隱私的需求,又能夠運行各類合約,為DeFi等生態發展提供根基。
Aleo算力對CPU和GPU的要求都較高,對內存和固態存儲的要求較低。從市場現有機型來看,Filecoin P1P2算力機改裝最為簡單,成為主流的測試機型。 Fil C2超算機部分機型的CPU需要加強,再更改CPU的同時也可能會有主板的更改,改造成本也較低。對於Chia P盤機和ARweave,除了需要增加顯卡,基本不需要其他改動,改造成本中等。而以太坊在轉POS之後,如果ETH礦工想要加入Aleo算力,則除了部分高端顯卡之外,其餘部分基本都需要改裝,成本較高。
硬件方面的選擇包括GPU、FPGA 或ASIC,後兩者潛力似乎更大。需要注意的是零知識證明仍處於早期發展階段,目前仍然很少有標準化,且算法也在不斷更新變化中。每種算法都有其特點,適合於不同的硬件,且隨著項目發展需求每種算法都會有一定程度改進,因此很難去具體評估目前存量礦機的優劣。 GPU能通過算法進行加速並行計算,但是算法內包含MSM、FTT,因此即使實現了並行運算,也無法大幅降低其證明時間。 FPGA能夠通過針對於ZK算法定制化優化礦機。 ASIC是為特定用途專門定制的集成電路芯片,從出廠硬件上實現優化。但是ASIC由於過於定制化,需要的時間需要的時間和成本也會更多。也許硬件的迭代伴隨著行業規模的增大,逐漸朝著ASIC方向發展,但是不會一步到位。
風險提示:區塊鏈商業模式落地不及預期;監管政策的不確定性。
1. 核心觀點
零知識證明在以太坊擴容、乃至區塊鏈行業發展中都被寄予厚望。而零知識證明技術面臨一定難度,雖然各類創新算法不斷湧現,但驗證易生成證明難的局面依舊。我們前期報告也分析過,區塊鏈擴容的一大方向便是計算脫鏈,因此將證明生成計算放在鏈外則成為主流方案。為解決生成證明過程的去中心化問題,利用各類算力進行生成ZK證明計算(可以理解為類似ZK mining)逐漸風生水起。隨著以太坊合併之後,市場存量的以太坊礦機只能另尋他途。而ZK證明計算正是為這些礦機硬件提供了新的應用空間。 Aleo作為ZK證明計算的典型項目,提供了一種綜合Zcash和以太坊的隱私平台方案。
本文分析了ZK證明計算的原理,對比了ZK-SNARKS、ZK-STARKS以及Bulletproofs幾種典型方案的優劣。同時根據ZK的原理,分析了各類硬件應對零知識證明中的MSM、FFT的優劣。總而言之,對於Aleo而言,Fil礦機的改造成本最低;從硬件類型來看,FPGA和ASIC有較大的優勢和潛力。但需要注意的是,ZK算法的複雜性和快速迭代下,不同需求適應的硬件可能也會不同。
2. 零知識技術的潛力:隱私和擴容
自以太坊誕生以來,擴容就成為區塊鏈永恆的主題。 L2無疑是擴容的主流方案,為解決L2與主網驗證效率的問題,零知識證明技術(Zero Knowledge Proof,ZKP)是最有潛力的技術——這來源於ZKP驗證的準線性特點。但其代價就是生成ZK證明計算帶來的複雜性和難度,因為ZK證明計算需要大量的算力消耗,且消耗越大,驗證的效率可能越高。因此ZKRollup成為最具潛力的擴容方案,而在公鏈的賽道上,ZK證明計算就成為繞不過去的點。因此,隨著區塊鏈擴容的發展,系統的複雜度也有著相應的提升,包括脫鏈(off-chain)計算(如SCP、ZKP證明計算)、硬件算力都成為擴容的選擇。
以太坊擴容是大思路是數據運算、執行甚至存儲脫離主鏈,這位硬件算力提供了新的應用場景。一些L2的ZK證明計算是放在私有算力硬件上完成的,但不要忘記零知識證明技術最基本的潛力是隱私性。為解決ZK證明計算的去信任化,利用去中心化的硬件節點來解決算力消耗成為一種自然而然的方向。例如Scroll創建一個去中心化的證明市場來解決以太坊L2擴容問題,創造了一個兼容EVM的ZKRollup。當然也有Aleo這樣,利用ZKP的隱私特點,打造了一個隱私公鏈平台,且利用了硬件算力來解決ZK證明計算問題的新平台。
無論是用作L2,還是獨立的新公鏈平台,ZKP證明計算的對硬件算力的需求都會催生出新的算力市場模式。
2.1.運行原理、特點
零知識證明最早由MIT的Shafi Goldwasser和Silvio Micali在1985年一篇名為《互動式證明系統的知識複雜性》的論文中提出。作者在論文中提到,證明者(prover)有可能在不透露具體數據的情況下讓驗證者(verifier)相信數據的真實性。公共的函數f(x)和一個函數的輸出值y,Alice對Bob說她知道x值,但是Bob不信。為此,Alice使用零知識證明算法,來生成一個證明。 Bob驗證這個證明,確認Alice是不是真的知道滿足函數f的x。零知識證明可以是交互式的,即證明者面對每個驗證者都要證明一次數據的真實性;也可以是非交互式的,即證明者創建一份證明,任何使用這份證明的人都可以進行驗證。零知識分為證明和驗證兩部分,一般來說證明是準線性的,即驗證是T*log(T)的。
假設驗證時間是以交易數量對數的平方,那麼10000筆交易一個塊的機器驗證時間是
VTime = (log2 10000)2 ~ (13.2)2 ~ 177 ms;現在將塊大小增加一百倍(達到100萬tx/塊),驗證器的新運行時間是VTime = (log2 1000000)2 ~ 202 ~ 400 ms。因此,正是這種非線性關係,我們能看到其超強的可拓展性,這就是為什麼說,從理論上tps能夠達到無限的原因。
驗證是非常快的,而所有的難點就在於生成證明這一部分。只要生成證明的速度跟得上,那麼鏈上驗證就很簡單。零知識證明目前有多種實現方式,如ZK-SNARKS、ZK-STARKS、PLONK以及Bulletproofs。每種方式在證明大小、證明者時間以及驗證時間上都有自己的優缺點。
ZK-SNARK具有更簡潔的證明,耗費更小的鏈上存儲空間,但需要可信設置(在協議進行證明和驗證之前,需要設置和生成一些公共的參數,但是在生成這些公共參數的過程中會產生一些不能公開的中間數據,任何一方拿到這些數據都能破解協議,因此需要確保在完成設置之後刪除這部分數據,在隱私保護的角度,這則成為風險和博弈的漏點)。
ZK-STARK具有更快的驗證速度和證明速度,不需要可信設置,但是電路規模很大。 BulletPropfs沒有可信設置,且性能可拓展性很高,證明大小不是指數級增加,節省更多的存儲空間。
2.2.幾種算法方案對比
一個理想的零知識證明算法滿足以下條件:
1)生成證明的計算複雜度最多是線性的;
2)驗證證明的計算複雜度最多是對數的;
3)證明的大小複雜度最多是對數的(證明內容和函數大小增大,呈對數增長);
4)無需可信設置(可信設置存在數據洩露的風險)。
在理想的零知識證明算法下,區塊鏈可以不用保存原始的交易數據,而是保存協議生成的零知識證明,礦工節點只需驗證零知識證明,而無需驗證原始交易數據。顯然,生成的證明小於原始交易數據,且驗證時間比原來的驗證方式短。這樣可以提高區塊鏈的拓展性。
但是完全理想的零知識證明非常難達到,幾種主流的算法通常在不同維度之間做平衡。
如比特幣、以太坊等區塊鏈,“礦工”驗證最原始的交易數據,這種原始驗證方式(下圖中的Naive)計算複雜度和驗證證明的計算複雜度是一樣的。 ZK-STARK算法的性能如圖所示,它生成證明的時間複雜度隨著輸入和函數f的複雜度線性變化。很明顯,驗證的時間複雜度是對數的(因此可以提升擴展性)。雖然生成證明的時間複雜度是線性的,但它比原始的方式慢100多倍(放大坐標軸才能看出來差別)。 2013年業界提出ZK-SNARK算法(匿名幣Zcash採用這種算法),性能有不小的提升,但需要可信設置(紅色曲線)。正如上文提到的,可信設置會帶來一些數據洩露的風險和博弈。
零知識證明越複雜、越大,則性能越高,驗證所需的時間越短。如下圖,STARKs和Bulletproofs無需可信設置,隨著交易數據量從1TX激增至10000TX,後者證明的大小增加的更少。 Bulletproofs的優點是證明的大小是對數變換(即使f和x很大),有可能將證明存入區塊,但其驗證的計算複雜度是線性的。可見各類算法都有很多要權衡的關鍵點,亦有很多待升級的空間,然而在實際運行過程中,生成證明的難度遠比想像中的要大,因此現在行業都致力於解決生成證明的問題。
以上分析為ZK證明計算提供了應用空間,其大思路則有些類似於mina、或AR生態的SCP,將更複雜的計算(生成證明)置於主鏈之外,利用硬件的堆疊來解決零知識證明生成的算力消耗,而主鏈則負責驗證證明,以提升區塊鏈的擴展性。交易數據在鏈外可以通過零知識證明、TEE等技術手段實現主鏈對鏈外平台的監督和驗證。整體上的思路就是脫鏈/鏈外計算,把計算(存儲等資源消耗)與存證分開。而零知識證明的特點則在於驗證的高效解放了區塊鏈的拓展性,代價則是生成證明的複雜性。
3. ZK證明計算:算力硬件的新出路?
2022年,在以太坊合併之前,在網工作的顯卡數量約2700萬張,算力亦在5月中達到高峰的1.13P,隨著以太坊的合併,這些算力除切換至ETC等分叉鏈,還有其他出路嗎?除了大量顯卡,市場上的Filecoin(fil)、AR等算力設備存量也很大。 ZK證明計算也許會為礦機硬件提供新的用武之地。
為什麼ZK證明計算可實現?
1)當將證明這一部分外包出去是,通過KZG承諾等技術也能保證內容不會被篡改,這也就是所謂的計算完整性;
2)ZKPs 從根本上為可擴展的私人支付以及智能合約平台的加速發展提供了可能,但是其高昂的計算成本在一定程度上限制了其大規模採用的進程,因此出現ZK礦工提供算力支持成為自然。
ZK證明計算就是致力於通過硬件的堆疊,以快速高效的提出證明便於鏈上驗證。隨著新需求和用例的出現,芯片製造商會設計專用的GPU、FPGA 和ASIC,以針對特定功能和軟件進行優化。從雲計算到計算機圖形學、人工智能和機器學習,所有主要的科技行業都已經發展到需要能夠加快計算運行速度和效率的硬件。由於大量昂貴的數學運算,ZKP 的生產速度慢且成本高。但是,通過使用可編程門陣列(FPGA) 和專用集成電路(ASIC) 等專用硬件,它們可以加速10-1000 倍。
隨著用戶尋求更具表現力、高性能和私密性的計算,使用ZKP 證明的語句的複雜性將會增加。這將導致證明生成速度變慢,需要使用專門的硬件才能及時生成證明。與比特幣礦工類似,硬件運營商的工作需要得到補償——而同時用戶需要解決算力外部的問題,這便形成了ZK證明計算的市場。最終,一個完整的ZK採礦和證明行業將出現,首先是愛好者在他們的CPU 中生成證明,然後是GPU,然後是FPGA。 ZK證明計算可以在私人網絡裡運行,但考慮到去中心化的需求,可以利用區塊鏈節點來解決。
目前比較形成系統的ZK證明計算項目是Aleo,儘管尚在早期,但為ZK硬件生態構建做了一些探索。 Aleo還未有專門適配的ZK證明計算機器,但是也可以通過改裝現有機器。
3.1.ALEO的探索
ALEO的目標是構建一個可編程的隱私DeFi平台,用戶可以不洩露數據隱私的情況下,使用區塊鍊網絡服務,其利用的主要技術就是零知識證明。零知識證明可以在不透露輸入參數的情況下,驗證交易的有效性,這為隱私驗證提供了新的解決方案。 Aleo結合零知識提供了全棧解決方案,保證應用程序堆棧的每一層都可編程、可使用、可去中心化隱私計算。這有些類似Zcash和以太坊的綜合,既考慮隱私的需求(以太坊的鏈上交易都是透明可查的),又能夠運行各類合約,為DeFi等生態發展提供區塊鏈平台。
該項目使用的是PoSW(簡潔工作證明)共識機制,該算法是基於SNARK的激勵算法。 PoSW 是一種類PoW的共識機制,是比特幣基於SHA的難度調整算法的變體,主要區別在於底層計算不是任意散列函數,而是知識證明。使得PoSW 解決方案不僅可以充當PoW 以確保系統共識,還可以提供給定區塊中包含交易的驗證,讓算力發揮實際運算的作用,且邏輯上來說也可以讓性能更進一步優化。
Aleo layer1層主要作為數據層,執行層在鏈下,驗證層由Layer1驗證節點承擔,類似於ETH2.0結構。執行層執行交易並且由礦工生成SNARK證明,提交到Layer1,驗證節點負責驗證該證明有效性。而Layer1仍然採用的是POS質押模型。 Aleo 通過ZKCloud體系實現可編程隱私的功能。 ZKCloud 是一個脫鏈、去信任的計算環境,程序在其中以私密、安全、廉價的方式執行。這與AR生態的SCP等鏈下計算方式類似。
Aleo代幣也稱為積分額度,是訪問零知識計算的關鍵資源,因此Aleo積分成為零知識證明市場定價的貨幣工具——在用戶和礦工之間流轉,這與fil等存儲網絡的經濟模式類似。同時,PoSW共識機制下,Aleo網絡上的費用是可以事先計算的,因此網絡中不存在"Gas "的概念,這一點與以太坊有著明顯的區別。在Aleo網絡中,每個人都提前知道運行一個特定的程序需要多少Aleo積分。 Aleo目前出於三期測試網狀態。
在兼容以太坊EVM的各類L2網絡應用ZKP,則可以分享以太坊強大的生態資源,Aleo算是開闢了一個新的賽道模式——創造新公鏈平台,成為以太坊的競爭對手。當然,也不排除Aleo後面會兼容以太坊EVM,成為以太坊大生態的一部分。
3.2.ALEO算力機器改裝
Aleo算力對CPU和GPU的要求都較高,對內存和固態存儲的要求較低。從市場現有機型來看,Filecoin P1P2算力機改裝最為簡單,成為主流的測試機型。 Fil C2超算機部分機型的CPU需要加強,再更改CPU的同時也可能會有主板的更改,改造成本也較低。對於Chia P盤機和ARweave,除了需要增加顯卡,基本不需要其他改動,改造成本中等。而以太坊在轉POS之後,如果ETH礦工想要加入Aleo算力,則除了部分高端顯卡之外,其餘部分基本都需要改裝,成本較高。
因此,從Aleo算力來看,fil礦機是最適合改造為ZK礦機的。對於Aleo全網算力的預測可以藉鑑Fil主網上線時的增長幅度。因為諸多Fil算力機基本可以零改裝費接入Aleo網絡,市場上很多礦商都在關注Aleo算力業務。參考Filecoin 主網上線第一年的增速,前3個月約為50%-60%增速,3-6月約為30%左右增速,6-12月約為15%-25%左右增速。市場對三期測試網的預期較為樂觀,假設全網總算力為105萬pps為起點,則預測Aleo 主網上線一年後,全網可達到2000萬pps左右。
但這種樂觀的預期能否實現還要看最終的市場接受程度、Aleo網絡生態發展狀況。
3.3. Scroll:用於ZKRollup的證明市場
Scroll 是一個等效於EVM 的ZKRollup,旨在擴展以太坊。 Scroll 能夠兼容EVM 支持生成零知識證明,以太坊智能合約可以無需修改而直接部署運行。而Scroll跟其他ZKRollup最大的區別是,項目希望創建一個去中心化的證明市場,這也為ZK證明計算帶來應用空間。
在ZKRollup 的運行原理裡,存在一個Sequencer的角色,它負責收集交易並進行排序和打包發佈到以太坊主網,隨後Prover會為這些交易生成證明。只有證明提交並被驗證通過後,這些交易才最終被確認。目前主流的ZKRollup 如ZKSync 和StarkWare 的Sequencer 和Prover 是中心化的,即掌握在項目方手中。而Scroll 和其他ZKRollup 的一個重要的不同點在於它希望通過去中心化網絡創建一個證明市場,即Roller社區。 Roller Network 裡的Roller 可以外包給提供GPU、FPGA 和ASIC 等機器的礦工,解決零知識證明運算。
在市場化的競爭下,去中心化的算力市場很可能會誕生類似比特幣或以太坊礦池的形式,有能力的開發者/ 礦池會優化各種算法提高生成證明的效率、降低成本,以獲得更多的獎勵。而普通的礦工則直接接入這樣的礦池,按貢獻算力獲取獎勵。
3.4. ZK證明計算機器需要解決的問題
根據證明系統的不同,證明生成過程可能會有所不同,但始終面臨以下瓶頸:
1)對大型數字向量(字段或組元素)的乘法,特別是可變基數和固定基數多標量乘法(MSM);
2)快速傅里葉變換(FFT) 和逆FFT(儘管有用於無FFT 證明系統的技術);
3)在同時存在FFT 和MSM 的系統中,大約70% 的時間生成證明花費在MSM 上,其餘時間則由FFT 主導。
雖然MSM 和FFT 都很慢,但都有提高性能的方法。 MSM 具有並行性的可能,可以通過在多個線程上運行它們來加速。然而,即使在數百個內核上,如果每個元素向量是長(即3300 萬個元素,對於像ZKEVM這樣的應用程序來說,這是一個較為保守的複雜度範圍),乘法最終會花費大量時間。這意味著經常重複相同的操作,並且會耗盡設備上的大部分可用內存。
MSM 需要大量內存並且即使在高度並行化時仍然很慢,而FFT 嚴重依賴算法運行時數據的頻繁洗牌。這使得它們很難通過跨計算集群分配負載來加速。此外,它們在硬件上運行時需要大量帶寬。改組意味著需要“隨機”加載和卸載元素,例如,具有16GB 或更少內存的硬件芯片上的>100GB 數據集。雖然硬件上的操作非常快,但通過網絡加載和卸載數據的時間最終會顯著減慢操作速度。
綜上所述:
- MSM 具有可預測的內存訪問,允許大量並行化,但由於所需的原始計算量和內存量,它們的成本仍然很高。
- FFT 具有隨機內存訪問,這使得它們對硬件不友好,自然難以在分佈式基礎設施上運行。
3.5. ZK時代,什麼類型的硬件會勝出?
縱觀各類ZK算法,現在都能做到恆定的證明大小和較短的驗證時間,因此目前對ZK算法的瓶頸桎梏主要不在區塊大小上。然而,證明生成的複雜性和算術環路大小呈現理論上的線性關係(實際上目前在生產過程中仍然是指數級關係)。證明者需要評估整個算數環路,這需要大量時間,目前算力成本高和證明時間長,生產階段的指數級難度遞增,這些都確確實實限制了ZK應用的普及。改進方法在算法本身和硬件加速兩方面。
就硬件方面,目前的選擇包括GPU、FPGA 或ASIC。需要注意的是零知識證明仍處於早期發展階段,目前仍然很少有標準化,且算法也在不斷更新變化中。每種算法都有其特點,適合於不同的硬件,且隨著項目發展需求每種算法都會有一定程度改進,因此很難去具體評估哪種算法最優、目前存量礦機的優劣。
GPU能夠通過一定的算法,加速並行計算。但是算法內包含MSM、FTT,因此即使實現了並行運算,也無法大幅降低其證明時間。根據上文分析,GPU改造成ZK證明計算的成本很高,遜色於Fil礦機的競爭力,根據草根調研,目前大部分礦機都是Fil礦機。
FPGA是可編程的集成電路,因此開發者能夠通過針對於ZK算法定制化優化礦機。在可預見的未來,有機會實現比GPU更高的靈活性和省電、加速能力。
ASIC是為特定用途專門定制的集成電路芯片。如果說FPGA是從軟件上實現加速優化,那麼ASIC就是從出廠硬件上實現。因此設計人員能夠針對ZK技術的特點專門設計適配的硬件,再結合算法的優化能夠很大程度的釋放硬件潛能。但是ASIC由於過於定制化,需要的時間和成本也會更多,也許硬件的迭代伴隨著行業規模的增大,逐漸朝著ASIC方向發展,但是不會一步到位。
從上述分析看,FPGA和ASIC有較大的優勢和潛力。但需要注意的是,ZK算法的複雜性和快速迭代下,不同需求適應的硬件可能也會不同。
風險提示
區塊鏈商業模式落地不及預期:區塊鏈、密碼學等相關技術和項目處於發展初期,存在商業模式落地不及預期的風險。
監管政策的不確定性:區塊鏈項目實際運行過程中涉及到多項金融、網絡及其他監管政策,目前各國監管政策還處於研究和探索階段,並沒有一個成熟的監管模式,所以行業面臨監管政策不確定性的風險。