零知識證明(ZKP)正在成為未來十年根本性變革的技術。ZKP 在Web3 內外都有著應用。
在Web3 中,ZKP 正在解決兩個主要瓶頸——可擴展性和隱私:
- 在可擴展性方面,幾個ZK Rollups,又名Validity Rollups,正在推出以將以太坊擴展10-100 倍,同時通過降低交易成本來改善用戶體驗。
- 在隱私方面,ZKP 正從私密交易和交易混合時代擴展到更複雜和有用的領域,例如私密鏈上交易、身份和經過驗證的憑據。
關於ZKP 有很多內容,包括我們自己對ZKP 空間未來發展的願景以及為實現這一未來所需的創業公司。然而,建設者如何從ZKP 中受益以及從哪裡開始仍存在一定的教育差距。
本文旨在通過匯集重要資源來填補這一差距,指導開發人員了解ZKP 在實踐中的工作原理以及如何在其應用中使用ZKP。
ZKP 在實踐中是如何運作的?
ZKP 實際上是通過證明者向驗證者證明他們知道特定信息而不洩露該信息的一種技術。
在實踐中,至少在Web3 中,ZKP 的使用方式通常不同。大多數應用程序不使用ZKP 來顯示專有數據的所有權。相反,ZKP 被用於通過可驗證性提高信任。我們預計ZKP 將成為未來實體之間標準的信任模型。原因是ZKP 的兩個主要組成部分——證明和驗證——正在以一種使信任尋求實體與其用戶之間具有獨特互動方案的方式被分離。

ZKP 的主要組成部分是證明生成和證明驗證。
- 證明生成涉及運行大量計算以生成執行過程的證明,這個證明用於消除對證明者的信任需求。
- 相反,任何人都可以在證明上運行一個簡單的過程來驗證證明者運行過程的完整性。
這種心理模型允許企業運行一個流程(通常是一個複雜的流程),並允許客戶信任所述流程的執行而不需要重複執行該流程。
讓我們舉個例子:
假設你訂閱了OpenAI 的付費計劃,使用他們的大型語言模型(LLMs)之一,例如chatGPT。您必須相信OpenAI 確實運行了您請求的特定模型,而不是用更簡單、效率更低的模型替換它。如果OpenAI 可以向您發送少量數據,證明它確實運行了您請求的特定模型呢?此外,想像一下,假如每個專有SaaS 產品都能為其消費者提供這樣的保證,會發生什麼?
這種信任最小化是ZKP 的承諾。例如,在Web 2 中,ZKP 可以通過確保所有客戶使用相同的算法來保證公平的信用評估或公平的保險索賠處理。ZK 技術還沒有到達那個水平,因為運行ZKP 過程仍然相對昂貴。然而,我們看到像Modulus Labs 這樣的公司正在構建一種使用ZKP 證明AI 推斷的技術。
ZKP 的技術要求
在技術層面上,一個高效的ZKP 系統需要同時實現以下目標:
- 降低證明系統的計算複雜度和延遲,即讓證明者可以高效生成證明並在最短時間內將其傳遞給驗證者。
- 實現小型證明大小。
- 實現高效驗證,即最小化驗證成本。
除了這些主要目標外,根據用例可能需要一些次要目標,例如:
- 在隱私焦點應用程序中保護數據的隱私,這意味著證明系統可以處理未在生成的證明中洩露的私有輸入。
- 盡可能避免信任設置以簡化安全假設。
- 實現證明遞歸以進一步減少驗證成本,即單個驗證可以驗證多個證明,並在不同證明之間分攤成本。
同時實現所有這些目標是具有挑戰性的。根據用例,ZKP 系統會優先考慮其中一些目標。例如,SNARK 證明系統可以產生簡潔的證明,但證明復雜度會增加。另一方面,STRAK 具有高效的證明者,但證明大小可能比SNARK 大100 倍。zk 的研究人員不斷努力推動技術前沿,通過發明新的證明機制同時提高三個指標。
不同證明系統的比較
對於構建與ZKP 相關產品的開發人員來說,要考慮的一個重要問題是如何選擇底層證明系統,有幾個ZKP 證明實現,還有更多處於研發階段。
ZKP 後端選擇不僅取決於技術方面,而且還取決於目標產品。以為Rollup 選擇證明系統為例。Rollup 的關鍵特徵,例如提款時間、交易成本,甚至去中心化程度,將主要由ZKP 證明架構決定,如下表所示。

在Rollup 中,證明發生在業務方面,即通過Rollup 運營商。現有的ZK Rollups(zkRUs),例如Starknet 和Zksync 當前使用集中的證明者。因此,他們可以將證明委託給專門的證明者,即證明作為服務公司,以提高證明者性能。通過專業化和利用優化的軟件/ 硬件,對於與以太坊兼容的zkEVMs,證明時間可以縮短到幾分鐘。例如,Polygon zkEVM 的證明時間目前約為2 分鐘。幾分鐘的證明時間,即提款延遲,對於Rollup 來說是可接受的。
另一方面,一些用例需要證明發生在用戶端,生成私人交易,如Tornado Cash 交易。為了確保合理的用戶體驗,證明時間不能超過幾秒鐘。此外,由於用戶在使用錢包或在資源受限的設備上在瀏覽器中執行這些計算,所以選擇具有快速證明者的證明系統非常重要。一個很好的例子是Zcash 在2018 年Sapling 升級中將其證明系統更改為Groth16,這是提高屏蔽交易速度的一個主要因素。
比較證明系統
通常,很難獲得不同證明系統性能的準確比較,特別是對於證明和驗證速度,因為它們取決於庫實現、選擇的加密曲線和使用的硬件。
Mina 團隊在這篇文章中提供了一個很好的高級比較。還有一些用於不同的ZK 系統的努力創建基準測試工具。

這個表格提供了SNARK 實現的良好比較,並介紹了它們在速度方面從Groth16 到Plonk 再到Halo 的進展情況。儘管有所進展,STARK 仍然在證明速度方面勝出,但代價是更大的證明大小。該表還討論了證明系統的兩個重要特徵:設置無信任性和電路可編程性。
設置無信任性部分討論了電路創建的預處理階段。一些證明技術需要通過多方計算參與,在預處理階段生成秘密隨機數。如果單個參與者是誠實的,則生成的隨機數確實是秘密的,預處理部分是安全的。這個過程稱為「信任設置」,因為它信任至少一個預處理階段的參與者是誠實的。需要信任設置被認為是一種弱點。在這個意義上,STARK 和新的SNARK 系統(如Halo 2)具有優勢。然而,一些項目將信任設置作為吸引社區參與的工具,例如Aztec 和Manta。
可編程性部分討論了證明系統是否可以證明任意計算。SNARK 通常可以對任何計算進行編程。然而,證明效率取決於所執行的計算類型。對於某些類型的STARK 系統來說,這並不是適應不同類型計算的容易的情況。

如何為您的產品利用ZKP?
建立一個能夠從ZKP 技術中受益的產品並非易事,需要建立正確的心理模型。
本節嘗試為開發人員提供一個框架,以選擇最佳方法來將ZKP 集成到其產品中。根據產品需求、生態系統對齊和性能要求,將有幾個工具可供開發人員選擇。一些開發人員將能夠重複使用其現有的代碼,而另一些則必須學習新的領域特定語言(DSL)來創建其應用程序。

以性能為主的zk 應用程序
開發人員可以使用ZKP 通過將大部分應用程序計算脫離鏈外,並僅在鏈上發布證明來實現更高的吞吐量(TPS)或更低的費用。在這種情況下,有多個框架可供選擇。每個框架提供了一組工具,用於編譯應用程序代碼,生成ZK 電路,實現ZK 證明者,並為目標生態系統生成驗證器代碼。我們可以將這些框架分為兩個主要類別:以EVM 為中心和非EVM。
以EVM 為主的ZK 框架
這組ZK 框架與以太坊保持一致,作為Rollup 建立在其之上。交易和應用程序在Rollup 的ZK 虛擬機(zkVM)上執行。證明由專門的證明者生成,並發佈到L1,由智能合約驗證。
該組的第一個子集實現了與EVM 兼容的zkVM,因此稱為zkEVM。這些的目標是通過允許以太坊開發人員使用Solidity 和熟悉的工具(如Hardhat 和Foundry)而將摩擦最小化。它們通過創建適用於EVM 的電路和證明器來抽象ZK 複雜性。Polygon zkEVM 和Scroll 都包括在此桶中。
該組的第二個子集是不本地兼容EVM 的zkVM。儘管不兼容,此組通過創建中間層來允許開發人員使用Solidity,從而減少了摩擦。Vitalik 稱這個類型為type-4 zkEVM。zkSync Era 和Starknet 是這個組的好例子。使用Type-4 zkEVM 的優點是可以提供比兼容EVM 類型更高的吞吐量和更低的費用。這使得它們適用於構建高吞吐量的應用程序,例如鍊上游戲或高性能金融產品,例如訂單簿DEXs。
為type-4 zkEVM 構建應用程序需要更多的開發人員努力,因為有關於可以使用的Solidity 代碼的限制。或者,開發人員可以決定學習另一種語言,例如Cairo,以針對這些框架開發原生應用程序。

非EVM zk 框架
另一種框架類型是那些不針對EVM 架構的框架,因為它們針對競爭的L1 或通用計算。儘管如此,它們仍然可以通過專門的SDK(如Sovereign)用於在以太坊上構建應用程序特定的zkRUs。
這裡有兩種方法:
- 開發人員使用高級語言編寫代碼,該代碼針對特定的VM 架構,稍後編譯為ZK 電路。
- 開發人員使用領域特定語言(DSL),例如Circom,直接生成ZK 電路。
前一種方法更適合開發人員,但通常會導致更大的電路,需要更長的證明時間。

專注隱私的ZK 應用程序
使用ZKP 開發隱私重點的應用程序通常對開發人員來說是一項更具挑戰性的任務。與可伸縮性重點的解決方案相比,使用ZKP 開發隱私重點的解決方案的工作較少,使得學習曲線更加陡峭。現有的隱私應用主要關注支付隱私,並且不允許太多的可編程性。將隱私和可編程性結合起來是一項具有挑戰性的任務。隱私重點的應用程序遵循以下兩個實現選項之一:
1.在通用L1 之上構建
要在L1 上啟用隱私支付應用程序,ZKP 邏輯需要被構建為智能合約。該應用程序常常使用ZKP 來創建私有資本池。用戶使用這些私人池作為混合器,為未與其原始錢包相關聯的新錢包提供資金。其中著名的例子是Tornado Cash。對於這些應用程序,證明由用戶執行,驗證發生在鏈上。因此,使用具有快速證明、簡單驗證計算以及不洩露任何用戶信息的ZKP 系統至關重要。
由於通用鏈並未針對昂貴的加密計算進行優化,驗證成本通常對主流用戶來說很昂貴,限制了這些應用程序的採用。將私人事務應用程序移動到Rollup 以減少燃氣費用的直覺解決方案可能會帶來挑戰。在這種情況下,私人交易證明需要包含在Rollup 證明中,即證明遞歸,而目前Ethereum 上的通用zk Rollup 無法實現證明遞歸。
2.構建重點隱私的新L1/L2
為了為私人交易和應用程序降低成本,開發人員不得不構建一個新的以隱私為核心的L1(例如Manta Network 和Penumbra)或專門的Rollup(例如Aztec)。大多數隱私重點鏈仍無法支持通用計算,並專注於專業用途。例如,Penumbra 和Renegade 專注於私密交易。Aleo 正在通過創建專用語言Leo 來編譯用高級語言編寫的程序以生成對應的ZK 電路,從而構建用於私有應用程序的框架。應用程序的交互是在鏈外完成的,僅將證明作為私有交易發佈到鏈上。Aztec 正在朝著類似的方向發展,但作為Ethereum L2。他們最近宣布將重點放在創建使用Noir 作為默認智能合約語言的廣義私人Rollup 上。
ZK 加速
在開發人員選擇了適合其應用程序的正確ZK 開發框架並選擇了底層證明系統之後,下一步是優化應用程序的性能,尋找改善用戶體驗的方法。這通常歸結為提高證明者的性能和延遲。正如前面討論的那樣,對於Rollup,縮短證明時間意味著將證明提交到L1 的延遲較短,因此取款延遲也較短。對於用戶生成的證明,即隱私應用程序,更快的證明意味著更短的交易生成時間和更好的用戶體驗。
正如我們在之前的文章中討論過的那樣,加速證明過程通常需要軟件優化和專用硬件。在過去的幾個月中,專用硬件競爭加劇,有多家公司進入了這場競賽。在本節中,我們將討論ZK 加速的當前情況以及開發人員可以從這種競爭中獲益的方式。
證明即服務
到目前為止,執行ZK 證明工作的標準模型是使用具有多核CPU 和/ 或GPU 的強大服務器,並利用經過優化的開源庫(例如Filecoin 的Bellperson)來提高證明性能。這種模型增加了開發人員需要維護證明基礎設施的運營複雜性。解決這種複雜性並允許更好的專業化的更好模型是證明即服務模型。在這個模型中,需要為某個ZK 電路或某個用例生成證明的實體連接到運行專有軟件執行證明計算的提供者。一些公司可以專門為特定用例生成證明。例如,Axiom 構建了一個系統,用於在以太坊上生成Halo 2 證明的歷史數據。其他參與者可以專注於特定的ZKP 後端,例如Plonk 或Halo 2,並構建專有的優化,以實現更快速和更高效的證明計算。=nil Foundation 正在進一步推廣這個概念,通過構建一個ZKP 計算市場。在這個Proof Market 中,證明買家提交要生成的ZKP 的出價,由證明生成器進行匹配和履行。Mina 也有類似的概念,稱為Snarketplace,但僅限於Mina 網絡所需的SNARK 證明。
硬件加速
隨著需要高效生成zk 證明的幾個L1 和Rollup 的推出,生成這些證明並賺取相應獎勵的競爭將變得日益激烈。如果這些鍊和L2 成功吸引了大量用戶,證明生成可能會發展成為類似於比特幣挖礦競爭的一種軍備競賽。有不同的ZKP 加速方法,即GPU vs FPGA vs ASIC。這篇來自Amber Group 的文章對這些不同選擇和麵臨的每種實現選項的挑戰進行了很好的討論。然而,從長遠來看,為證明生成生產最有效的ASIC 的公司將在以zk 為重點的鏈上擁有顯著的經濟優勢。
值得注意的是,在ZK 證明競爭和比特幣挖礦之間存在一個重要區別值得強調。在比特幣中,挖掘過程基於簡單計算,即SHA256 哈希。這個計算是固定的,不容易改變,因此重點放在芯片設計創新和進入最先進的半導體節點的機會上。在ZKP 領域,不同證明協議之間存在顯著的分裂。即使使用相同的證明後端,例如Plonk,目標電路大小也可能導致ASIC 性能的差異。這種比特幣挖礦和ZKP 生成之間的區別可能導致多個獲勝者,每個專業化於不同的ZK 後端。
有多個參與者進入ZK 特定芯片領域。每個參與者專注於提高證明生成的兩個主要操作之一:多標量乘法(MSMs)和數論變換(NTT)。最後一個走出隱秘狀態的參與者是Cysic,在ETH Denver 期間宣布了其600 萬美元的種子輪融資。Cysic 專注於通過使用FPGA 加速MSMs。FPGA 的靈活性可以使它們支持不同的ZK 系統。這種方法類似於Ulventanna,該公司在1 月份宣布了1500 萬美元的種子輪融資。ZK 芯片開發空間中的其他參與者包括Ingonyama,發布了一個名為Icicle 的庫,可在GPU 上加速MSM 和NTT 計算的計算,以及Accseal、Snarkify 和Supranational。除了這個列表,Web3 空間中的知名參與者還有其他隱秘公司和研究努力。後者的例子包括Jump Crypto 的CycloneMSM 實現,用於使用FPGA 加速MSM 計算,以及Jane Street 的FPGA 實現,用於加速MSM 和NTT。
由於ZKP 加速的重要性越來越高,需要公平評估不同實現的競賽(例如ZPrize)正在成為推動該領域前進的重要場所。2022 年的比賽獎金超過400 萬美元。
隨著需要高效生成ZK 證明的幾個L1 和Rollup 的推出,生成這些證明並賺取相應獎勵的競爭將變得日益激烈。如果這些鍊和L2 成功吸引了大量用戶,證明生成可能會發展成為類似於比特幣挖礦競爭的一種軍備競賽。有不同的ZKP 加速方法,即GPU vs FPGA vs ASIC。這篇來自Amber Group 的文章對這些不同選擇和麵臨的每種實現選項的挑戰進行了很好的討論。然而,從長遠來看,為證明生成生產最有效的ASIC 的公司將在以ZK 為重點的鏈上擁有顯著的經濟優勢。
值得注意的是,在ZK 證明競爭和比特幣挖礦之間存在一個重要區別值得強調。在比特幣中,挖掘過程基於簡單計算,即SHA256 哈希。這個計算是固定的,不容易改變,因此重點放在芯片設計創新和進入最先進的半導體節點的機會上。在ZKP 領域,不同證明協議之間存在顯著的分裂。即使使用相同的證明後端,例如Plonk,目標電路大小也可能導致ASIC 性能的差異。這種比特幣挖礦和ZKP 生成之間的區別可能導致多個獲勝者,每個專業化於不同的ZK 後端。
有多個參與者進入ZK 特定芯片領域。每個參與者專注於提高證明生成的兩個主要操作之一:多標量乘法(MSMs)和數論變換(NTT)。最後一個走出隱秘狀態的參與者是Cysic,在ETH Denver 期間宣布了其600 萬美元的種子輪融資。Cysic 專注於通過使用FPGA 加速MSMs。FPGA 的靈活性可以使它們支持不同的ZK 系統。這種方法類似於Ulventanna,該公司在1 月份宣布了1500 萬美元的種子輪融資。ZK 芯片開發空間中的其他參與者包括Ingonyama,發布了一個名為Icicle 的庫,可在GPU 上加速MSM 和NTT 計算的計算,以及Accseal、Snarkify 和Supranational。除了這個列表,Web3 空間中的知名參與者還有其他隱秘公司和研究努力。後者的例子包括Jump Crypto 的CycloneMSM 實現,用於使用FPGA 加速MSM 計算,以及Jane Street 的FPGA 實現,用於加速MSM 和NTT。
由於ZKP 加速的重要性越來越高,需要公平評估不同實現的競賽(例如ZPrize)正在成為推動該領域前進的重要場所。2022 年的比賽獎金超過400 萬美元。
有用的教育資源
在本節中,我們匯總了一些教育資源,幫助開發人員了解ZKP 空間。這絕不是一個詳盡的列表,因為這個主題上有很多優秀的內容。可以在這里和這裡找到包含所有zk 資源的綜合列表。這是建立一個友好的方式,讓開發人員了解這個領域的努力。
對於那些有興趣了解ZKP 基礎知識及其工作原理的人,第一個要檢查的資源之一是ZK Hack 的ZK Whiteboard Sessions。特別是Dan Boneh 的三個入門會議對於具有一定數學理解的任何人來說都是高層次的。系列的其餘部分涉及該領域的特定主題。
對於想直接使用ZK 工具的開發人員,這個優秀的初學者指南非常實用。此後,Poseidon Labs 創建了一個應用ZK 研討會,引導開發人員使用Circom 和Hardhat 構建ZK 應用程序。針對其他ZK 語言和框架的其他研討會包括使用Noir 進行的這個研討會和使用Risc Zero 進行的這個研討會。
結論
作為對ZKP 潛力的信仰者,Alliance 努力幫助更多的構建者進入這個領域,並為他們提供資金和指導支持。在Web3 中,ZKP 已經解決了妨礙主流採用的可擴展性和隱私痛點。在Web 2 中,ZKP 可以將最小化信任的精神帶到包括SaaS、保險和信用評分在內的廣泛業務範圍內。本文旨在幫助構建者將ZKP 集成到他們的產品中。本文引導構建者通過不同的規劃ZKP 集成階段,涵蓋實現選項以及部署後的性能改進。