header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

利用ZK技術構建Web3產品:部署、實施和改進

閱讀本文需 29 分鐘
使用ZKP開發以隱私爲重點的應用程序,對開發者來說往往是一項更苛刻的任務。
原文標題:《 利用 ZK 技術構建 Web3 產品:部署、實施和改進 》
原文作者:Mohamed Fouda

原文編譯:Lynn,MarsBit


零知識證明(ZKP)正逐漸成爲未來十年的一項根本性的變革技術。在 Web 3 中,該技術已經解決了可擴展性和隱私方面的主要瓶頸;這是令人興奮的區塊鏈的兩個主要痛點。在可擴展性方面,幾個 zk rollup,又稱有效性 rollup,正在推出,將以太坊的規模擴大 10-100 倍,同時通過降低交易成本改善用戶體驗。在隱私方面,ZKP 正在超越私人交易和交易混合時代,擴展到更復雜和有用的領域,如私人鏈上交易、身份和驗證證書。


有很多關於 ZKP 的內容,包括我們自己的願景,即 ZKP 空間在未來將如何發展,以及爲實現這一未來需要哪些初創企業。但是,在如何從 ZKP 中獲益以及從哪裏開始的問題上,對建設者的教育仍然存在空白。本文努力填補這一空白,彙總重要資源,引導開發者瞭解 ZKP 在實踐中如何運作,以及如何在其應用中使用 ZKP.


在 Alliance,我們對 ZKP 帶來的新用例特別興奮。我們鼓勵這一領域的建設者與我們聯繫,討論他們的想法,並申請加入 Alliance 計劃。


ZKP 如何在實踐中運作


ZKP 的標準定義是:它是一個被稱爲證明者的一方向另一方(驗證者)證明他們知道特定信息而不透露該特定信息的過程。在實踐中,至少在 Web 3 中,ZKP 的使用方式往往不同。大多數應用程序不使用 ZKP 來顯示專有數據的所有權。相反,ZKP 被用來通過可驗證性來提高信任。我們期望 ZKP 在未來成爲實體之間的標準信任模型。原因是,ZKP 的兩個主要組成部分,即證明和驗證,以一種能夠在尋求信任的實體和其用戶之間實現獨特的互動方案的方式被分開。


隱私


運行 ZKP 的主要組成部分是證明生成和證明驗證。證明生成包括運行繁重的計算以生成執行過程的證明。這個證明的作用是消除對驗證者的信任。相反,任何人都可以在證明上運行一個簡單的過程,以驗證驗證人所運行的過程的完整性。這種心理模型允許企業運行一個過程,通常是一個複雜的過程,並允許客戶信任上述過程的執行,而不需要重複它。我們來思考一個例子。假設你訂閱了 OpenAI 的付費計劃,以使用他們的一個大型語言模型(LLM),如 chatGPT. 你必須相信 OpenAI 確實會運行你要求的特定模型,而不是用更簡單的低效模型來替代它。如果 OpenAI 可以向你發送少量的數據,證明它確實運行了你要求的特定模型,那會怎麼樣呢?此外,想象一下,如果每個專有的 SaaS 產品都能爲其消費者提供這樣的保證。


這種信任的最小化是 ZKP 的承諾。例如,在 Web 2 中,ZKP 可以保證公平的信用評估或公平的保險索賠處理,只需保證對所有客戶使用相同的算法。ZK 技術還沒有出現,因爲運行一個 ZKP 程序仍然相對昂貴。然而,我們看到 Modulus Labs 等公司正在構建一種使用 ZKP 來證明 AI 推理的技術。


高效 ZKP 的技術要求


在技術層面上,一個高效的 ZKP 系統需要同時實現以下目標:


1. 減少證明系統的計算複雜性和延遲,即使證明者能夠有效地生成證明,並以最小的延遲將其傳達給驗證者


2. 實現較小的證明規模


3. 實現高效的驗證,即最小的驗證成本


除了這些主要目標外,根據用例可能還需要一些次要目標,例如:


· 注重隱私的應用中的數據隱私,這意味着證明系統可以處理私人輸入,在生成的證明中不被泄露


· 儘可能避免信任設置,以簡化安全假設


· 實現證明遞歸以進一步降低驗證成本,即一個驗證可以驗證多個證明,並在不同的證明之間攤銷成本


要同時實現所有這些目標是很有挑戰性的。根據不同的用例,ZKP 系統會優先考慮這些目標中的一些。例如,SNARK 證明系統可以產生簡潔的證明,但證明的複雜性會增加。另一方面,STRAK 有高效的證明器,但證明規模可能比 SNARK 大 100 倍。ZK 的研究人員不斷努力推進技術前沿,通過發明新的證明機制同時改善這三個指標。


不同證明系統的比較


對於構建 ZKP 相關產品的開發者來說,需要考慮的一個重要問題是如何選擇底層證明系統。目前有幾個 ZKP 驗證器的實現,還有更多處於研發階段。ZKP 後端選擇不僅取決於技術方面,也取決於目標產品。以選擇 rollup 的證明系統爲例。rollup 的關鍵特徵,如提款時間、交易成本,甚至是去中心化,將主要由 ZKP 證明架構決定,如下表所述。


隱私


證明系統特性如何影響 ZKP rollup 的性能。


在 rollup 中,證明發生在業務方面,即由 rollup 運營商進行。現有的 zk rollup(zkRU),如 Starknet 和 zksync 目前使用中心化的證明者。因此,他們可以將證明工作委託給專門的證明者,即證明即服務的公司,以提高證明者的性能。通過專業化和利用優化的 SW/HW,以太坊兼容的 zkEVM 的證明時間可以減少到幾分鐘。例如,Polygon zkEVM 的證明時間目前約爲 2 分鐘。幾分鐘的證明時間,也就是提款延遲,對於一個 rollup 來說是可以接受的。


另一方面,一些用例要求證明發生在用戶端,例如,生成私人交易,如 Tornado Cash 交易。爲了確保合理的用戶體驗,證明的時間不能超過幾秒鐘。此外,隨着用戶在資源有限的設備上使用錢包在瀏覽器中進行這些計算,選擇一個具有快速驗證器的證明系統非常重要。這裏的一個很好的例子是 Zcash 在 2018 年的 Sapling 升級中將其證明系統改爲 Groth16,這是提高屏蔽交易速度的一個主要因素。


證明系統的比較


一般來說,很難對不同證明系統的性能進行準確的比較,尤其是證明和驗證速度,因爲它們取決於庫的實現、所選擇的加密曲線和使用的硬件。Mina 團隊在本文中提供了一個很好的高維度的比較。還有人在努力爲不同的 zk 系統創建基準測試工具。


隱私

主要證明技術的性能比較。來源: O(1) Lbas


該表提供了 SNARK 實施的良好比較,以及它們在速度方面從 Groth16 到 Plonk 到 Halo 的進展。儘管有進步,STARK 仍然在證明速度方面勝出,代價是證明規模更大。該表還討論了證明系統的兩個重要特徵:設置不可信性和電路可編程性。


設置不可信的部分討論了電路創建的預處理階段。一些證明技術要求在預處理階段通過多個實體的參與來生成祕密隨機性,即多方計算。如果一個參與者是誠實的,那麼生成的隨機性確實是祕密的,預處理部分是安全的。這個過程被稱爲「可信設置」,因爲它相信在預處理階段至少有一個參與者是誠實的。要求一個可信的設置被認爲是一個弱點。在這個意義上,STARK 和新的 SNARK 系統,如 Halo 2,具有優勢。然而,一些項目將可信設置作爲吸引社區的工具,Aztec 和 Manta 就是這種情況。


可編程性部分討論了證明系統是否可以證明任意的計算。SNARK 通常對任何計算都是可編程的。然而,證明效率取決於正在進行的計算的類型。某些類型的 STARK 系統則不是這樣,它們更難適應不同類型的計算。


隱私

用於不同 ZKP 相關項目的證明系統


如何利用 ZKP 爲你的產品服務


從哪裏開始建立一個受益於這種創新技術的產品,這樣的心理模型實際上很難建立。本節試圖爲開發者提供一個框架,以選擇將 ZKP 整合到其產品中的最佳方法。基於產品需求、生態系統的一致性和性能要求,開發人員將有幾種工具可供選擇。一些開發人員將能夠重新使用他們現有的代碼,而另一些人將不得不學習新的特定領域語言(DSL)來創建他們的應用程序。


隱私


以性能爲重點的 zk 應用


開發者可以使用 ZKP 來實現更高的吞吐量(TPS),或者通過在鏈外進行大部分應用計算,只在鏈上發佈證明來降低費用。在這種情況下,有多種框架可供選擇。這些框架中的每一個都提供了一個流程,將一個用高級語言編寫的應用程序編譯成適合於證明生成的等效表示,即 zk 電路。它們提供了一套工具來編譯應用程序代碼,生成 zk 電路,實現 zk 驗證器,併爲目標生態系統生成驗證器代碼。我們可以把這些框架分爲兩個主要的籃子: 以 EVM 爲重點的和非 EVM.


以 EVM 爲重點的 zk 框架


這組 zk 框架通過在以太坊之上構建 rollup,與以太坊保持一致。交易和應用程序在 rollup 的 zk 虛擬機(zkVM)上執行。證明由專門的驗證器生成,併發布到 L1,由智能合約進行驗證。


該組的第一個子集實現了與 EVM 兼容的 zkVM,因此稱爲 zkEVM. 這些目標是通過允許 Ethereum 開發者使用 solidity 和熟悉的工具,如 Hardhat 和 Foundry 而不做改變,從而最大限度地減少摩擦。他們通過創建一個對 EVM 開箱即用的電路和驗證器來抽象出 zk 的複雜性。這個籃包括 Polygon zkEVM 和 Scroll.


這組的第二個子集是不與 EVM 本身兼容的 zkVM. 儘管不兼容,該組通過創建中間層來減少摩擦,使開發者能夠使用 Solidity.Vitalik 稱這組爲 4 型 zkEVM. zkSync Era 和 Starknet 是這組的好例子。使用 4 型 zkEVM 的好處是,它可以提供比 EVM 兼容型更高的吞吐量和更低的費用。這使得它們適合建立高吞吐量的應用,如鏈上游戲,或高性能的金融產品,如訂單簿 DEX.


爲 4 型 zkEVM 構建應用程序需要更多的開發者努力,因爲可以使用的 Solidity 代碼是有限的。另外,開發者可以決定學習一種不同的語言,例如 Cairo,來爲這些框架開發本地應用程序。


隱私

來源: zkNode、Scroll、zksync-solc、zkSync SDKs、Protostar、Starknet Hardhat 插件、Warp


非 EVM 的 zk 框架


另一種類型的框架是那些不針對 EVM 架構的框架,因爲它們針對的是競爭性的 L1 或通用計算。儘管如此,它們仍然可以通過專門的 SDK,如 Sovereign,用於在以太坊上構建特定應用的 zkRU.


這裏有兩種方法


1. 開發人員用高級語言編寫代碼,以特定的虛擬機架構爲目標,然後將其編譯爲 zk 電路。


2. 開發人員使用特定領域語言(DSL)編寫代碼,例如 Circom,直接生成 zk 電路。


前一種方法對開發者更友好,但往往導致更大的電路,需要更長的證明時間。


隱私

來源:Risc0、zkWasm、Circom、Snarkjs、Mina zkApp CLI、zkLLVM


以隱私爲重點的 zk 應用


使用 ZKP 開發以隱私爲重點的應用程序,對開發者來說往往是一項更苛刻的任務。與注重擴展性的解決方案相比,使用 ZKP 開發注重隱私的解決方案的工作較少,使得學習曲線更加陡峭。現有的隱私應用主要集中在支付隱私上,不允許有太多的可編程性。要把隱私和可編程性結合起來是一項具有挑戰性的任務。注重隱私的應用主要遵循兩種實施方案中的一種。


1. 建立在通用的 L1 之上


爲了在 L1 上啓用私人支付應用程序,需要將 ZKP 邏輯構建爲一個智能合約。應用程序通常使用 ZKP 來創建私人資金池。用戶使用這些私人資金池作爲混合器,爲新的錢包提供資金,而這些錢包與他們原來的錢包沒有聯繫。這裏著名的例子是 Tornado Cash. 對於這些應用,證明是由用戶進行的,而驗證是在鏈上進行的。因此,使用具有快速證明、簡單驗證計算、並且在生成的證明中不泄露任何用戶信息的 ZKP 系統是至關重要的。


由於通用鏈沒有爲昂貴的加密計算進行優化,對於主流用戶來說,驗證成本往往很高,限制了這些應用的採用。將私人交易應用轉移到 rollup 中以減少 gas 成本的直觀解決方案可能具有挑戰性。在這種情況下,私人交易證明需要包括在 rollup 證明中,即證明遞歸,這在以太坊的通用 zk rollup 中目前是不可能的。


2. 建立一個新的以隱私爲重點的 L1/L2


爲了使私人交易和應用的成本降低,開發者被迫要麼建立一個新的隱私強制 L1,如 Manta Network 和 Penumbra,要麼建立一個專門的 rollup,如 Aztec. 大多數以隱私爲重點的鏈還不能支持通用計算,而是專注於專門的用例。例如,Penumbra 和 Renegade 專注於私人交易。Aleo 正在建立一個私人應用的框架,通過創建專用語言 Leo,將用高級語言編寫的程序與相應的 zk 電路兼容。應用程序的互動是在鏈外進行的,只有證明作爲私人交易發佈在鏈上。Aztec 正朝着類似的方向發展,但是是作爲 Ethereum L2. 他們最近宣佈,他們專注於創建一個通用的私有化 rollup,使用 Noir 作爲默認的智能合約語言。


zk 加速


在開發者爲其應用程序選擇合適的 zk 開發框架並選擇底層證明系統後,接下來的步驟是優化應用程序的性能,並找到改善用戶體驗的方法。這往往可以歸結爲改善驗證人的性能和延遲。如前所述,對於 rollup,減少證明者的時間意味着縮短向 L1 提交證明的延遲,從而縮短撤回延遲。對於用戶生成的證明,即隱私應用,更快的證明意味着更短的交易生成時間和更好的用戶體驗。


正如我們在之前的文章中所討論的,加速證明過程往往需要軟件優化和專用硬件。在過去的幾個月裏,隨着多家公司的加入,專用硬件的競爭已經白熱化。在這一節中,我們將討論目前 zk 加速的情況以及開發者如何從這場競爭中獲益。


證明作爲一種服務


到目前爲止,執行 zk 證明工作的標準模式是使用具有多核 CPU 和/或 GPU 的強大服務器,並利用優化的開源庫,例如 Filecoin 的 Bellperson,以提高證明性能。這種模式給需要維護證明基礎設施的開發者增加了操作的複雜性。解決這種複雜性並允許更好的專業化的更好的模式是證明即服務模式。在這種模式下,需要爲某個 zk 電路或某個用例生成證明的實體連接到一個運行專有軟件的供應商,以進行證明計算。一些公司可以專門爲特定用例生成證明。 例如,Axiom 已經建立了一個系統,爲以太坊的歷史數據生成 Halo 2 證明。其他玩家可以專注於特定的 ZKP 後端,例如 Plonk 或 Halo 2,並建立專有的優化,從而使證明的計算更快、更有效。=nil Foundation 通過建立一個 ZKP 計算的市場,將這一概念向前推進了一步。在這個證明市場中,證明買家提交出價以生成 ZKP,由證明生成者進行匹配和履行。Mina 有一個類似的概念,叫做 Snarketplace,但它只限於 Mina 網絡所需的 SNARK 證明。


硬件加速


隨着幾個依賴於高效生成 zk 證明的 L1 和 rollup 的推出,生成這些證明並獲得相關獎勵的競爭將升溫。如果這些鏈和 L2 成功地吸引了大量的用戶羣,那麼證明生成就會發展成類似於比特幣挖礦競爭的軍備競賽。有不同的 ZKP 加速方法,即 GPU 和 FPGA 和 ASIC. Amber Group 的這篇文章很好地討論了這些不同的選擇以及每種實施方案所面臨的挑戰。然而,從長遠來看,生產證明生成的最有效的 AISC 的公司將在以 ZK 爲重點的產業鏈上具有顯著的經濟優勢。


值得注意的是,zk 證明競爭和比特幣挖礦之間有一個重大區別,值得強調。在比特幣中,採礦過程是基於一個簡單的計算,即 SHA256 散列。這種計算是固定的,不可能改變,這使競爭的焦點圍繞着芯片設計創新和獲得最先進的半導體節點。在 ZKP 領域,不同的證明協議之間存在着明顯的分割。即使是相同的證明後端,例如 Plonk,目標電路大小也會導致 ASIC 性能的差異。比特幣挖礦和 ZKP 生成之間的這種區別可能會導致出現多個贏家各自專攻不同的 ZK 後端的情況。


有多個玩家進入 zk 專用芯片領域。每個玩家都專注於改進證明生成的兩個主要操作之一: 多標度乘法(MSM)和數論轉換(NTT)。最後一個走出隱身狀態的公司是 Cysic,它在 ETH 丹佛會議期間宣佈了其 600 萬美元的種子輪。Cysic 專注於通過使用 FPGA 來加速 MSM. FPGA 的靈活性可以使其支持不同的 ZK 系統。這種方法與 Ulventanna 相似,後者在 1 月份宣佈了 1500 萬美元的種子輪融資。zk 芯片開發領域的其他參與者包括 Ingonyama,它發佈了一個名爲 Icicle 的庫,可以加速 MSM 和 NTT 在 GPU 上的計算,還有 Accseal、Snarkify 和 Supranational. 除了這個名單之外,還有其他隱形公司和 Web 3 領域的知名人士的研究工作。後者的例子包括 Jump Crypto 的 CycloneMSM 實施,使用 FPGA 加速 MSM 計算,以及 Jane Street 的 FPGA 實施,加速 MSM 和 NTT.


由於 ZKP 加速的重要性不斷增加,並且需要對不同的實現方式進行公平的評估,ZPrize 等競賽正在成爲推動該領域發展的重要場所。2022 年的比賽有超過 400 萬美元的獎金。


可用的教育資源


在本節中,我們結合了一份教育資源的清單,幫助建設者們瞭解 ZKP 領域。這絕不是一個詳盡的清單,因爲有很多關於主題的優秀內容。zk 資源的綜合清單可以在這裏和這裏找到。這是爲建立一個友好的方式讓開發者瞭解這個空間所做的努力。


對於那些有興趣瞭解 ZKP 的基礎知識和它們如何工作的人來說,首先要檢查的資源之一是來自 zk Hack 的zk 白板會議。特別是 Dan Boneh 的三個介紹性課程,對於有一些基本數學知識的人來說是足夠高層次的。該系列的其餘部分涉及空間的特定主題。


對於那些想直接使用 zk 工具的開發者來說,這本優秀的初學者指南很有用。之後,Poseidon 實驗室創建了一個 Applied zk workshop,指導開發者使用 Circom 和 Hardhat 構建一個 zk 應用程序。其他針對其他 zk 語言和框架的研討會包括這個使用 Noir 的研討會和這個使用 Risc Zero 的研討會。


結論


作爲 ZKP 潛力的信徒,Alliance 努力幫助更多的建設者進入這一領域,併爲他們提供資金和指導。在 Web 3 中,ZKP 已經在解決阻礙主流採用的可擴展性和隱私性的痛點。在 Web 2 中,ZKP 可以將信任最小化的精神帶到廣泛的業務範圍,包括 SaaS、保險和信用評分。本文旨在幫助建設者將 ZKP 整合到其產品中。文章通過規劃 ZKP 集成的不同階段,帶領建設者們走過了不同的階段,涵蓋了實施方案,以及部署後的性能改進。


我們鼓勵建設者進一步與我們聯繫,並一起討論 ZKP 空間中的創業想法。


作者要感謝 Shumo Chu、Anish Mohammed、O(1) Labs 的成員對本文進行了富有成效的討論和反饋。


原文鏈接


歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交