ArkStream Capital:零知識證明四十年技術發展里程碑
BlockBeats 律動財經 2024-07-30 12:30
摘要
零知識證明(ZKP)在區塊鏈領域被廣泛視為是自分布式賬本技術以來最重要的科技創新之一,同時也是風險投資的重點領域。本文對零知識證明技術近四十年的歷史文獻和最新研究都做了系統的綜述。
首先,介紹了零知識證明的基本概念和歷史背景。然後,重點分析了基於電路的零知識證明技術,包括 zkSNARK、Ben-Sasson、Pinocchio、Bulletproofs 和 Ligero 等模型的設計、應用和優化方法。在計算環境領域,本文介紹了 ZKVM 和 ZKEVM,探討了其如何提升交易處理能力、保護隱私和提高驗證效率。文章還介紹了零知識 Rollup(ZK Rollup)作為 Layer 2 擴展方案的工作機制和優化方法,以及硬體加速、混合解決方案和專用 ZK EVM 的最新進展。
最後,本文展望了 ZKCoprocessor、ZKML、ZKThreads、ZK Sharding 和 ZK StateChannels 等新興概念,並探討了它們在區塊鏈擴展性、互操作性和隱私保護方面的潛力。
通過分析這些最新技術和發展趨勢,本文為理解和應用零知識證明技術提供了全面視角,展示了其在提升區塊鏈系統效率和安全性方面的巨大潛力,為未來的投資決策提供了重要參考。
前言
在如今,網路正在進入 Web3 時代的進程中,區塊鏈應用(DApps)的發展迅速,幾乎每天都有新的應用湧現。近幾年,區塊鏈平台每天都承載着數百萬用戶的活動,處理着數十億筆交易。這些交易產生的大量數據通常包括用戶身份、交易金額、帳戶地址和帳戶餘額等敏感個人資訊。鑒於區塊鏈的開放性和透明性特點,這些儲存的數據對所有人都是開放的,因此引發了多種安全與隱私問題。
目前,有幾種加密技術可以應對這些挑戰,包括同態加密、環簽名、安全多方計算和零知識證明。同態加密允許在不解密密文的情況下執行運算,有助於保護帳戶餘額和交易金額的安全,但無法保護帳戶地址的安全。環簽名提供了一種特殊的數字簽名形式,能夠隱藏簽名者的身份,從而保護帳戶地址的安全,但對帳戶餘額和交易金額的保護則無能為力。安全多方計算允許在多個參與者之間分配計算任務,而無需任何參與者知曉其他參與者的數據,有效保護了帳戶餘額和交易金額的安全,但同樣不能保護帳戶地址的安全。此外,同態加密、環簽名和安全多方計算無法在不泄露交易金額、帳戶地址和帳戶餘額的情況下用於驗證區塊鏈環境中證明者是否擁有足夠的交易金額(Sun et al., 2021)。
零知識證明是一種更全面的解決方案,這種驗證協議允許在不透露任何仲介數據的情況下驗證某些命題的正確性(Goldwasser,Micali&Rackoff, 1985)。該協議不需要複雜的公鑰設施,其重複實施也不會為惡意用戶提供獲取額外有用資訊的機會(Goldreich, 2004)。通過 ZKP,驗證者能夠在不泄露任何私人交易數據的情況下,驗證證明者是否具有足夠的交易金額。驗證過程包括生成包含證明者聲稱的交易金額的證明,然後將該證明傳遞給驗證者,驗證者對證明進行預定義的計算,並產出最終的計算結果,從而得出是否接受證明者聲明的結論。如果證明者的聲明被接受,意味著他們擁有足夠的交易金額。上述驗證過程可以記錄在區塊鏈上,沒有任何偽造(Feige, Fiat& Shamir, 1986)。
ZKP 這一特性使其在區塊鏈交易和加密貨幣應用中扮演核心角色,特別是在隱私保護和網路擴容方面,使得其不僅成為了學術研究的焦點,被廣泛認為是自分布式賬本技術——特別是比特幣——成功實施以來最重要的技術創新之一。同時也是行業應用和風險投資的重點賽道(Konstantopoulos, 2022)。
由此,諸多基於 ZKP 的網路項目相繼湧現,如 ZkSync、StarkNet、Mina、Filecoin 和 Aleo 等。隨著這些項目的發展,關於 ZKP 的算法創新層出不窮,據報導幾乎每周都有新算法問世(Lavery, 2024 ;AdaPulse, 2024)。此外,與 ZKP 技術相關的硬體開發也在迅速進展,包括專為 ZKP 優化的晶片。例如,Ingonyama、Irreducible 和 Cysic 等項目已經完成了大規模的資金募集,這些發展不僅展示了 ZKP 技術的快速進步,也反映了從通用硬體向專用硬體如 GPU、FPGA 和 ASIC 的轉變(Ingonyama, 2023 ;Burger, 2022)。
這些進展表明,零知識證明技術不僅是密碼學領域的一個重要突破,也是實現更廣泛區塊鏈技術應用——尤其是在提高隱私保護和處理能力方面——的關鍵推動力(Zhou et al, 2022)。
因此,我們決定系統地整理零知識證明(ZKP)的相關知識,以更好地輔助我們做出未來的投資決策。為此,我們綜合審閱了關於 ZKP 相關的核心學術論文(依據相關性和引用次數進行排序);同時,我們也詳細分析了該領域內領先的項目的資料和白皮書(根據其融資規模進行排序)。這些綜合性的資料搜集和分析為本文的撰寫提供了堅實的基礎。
一、零知識證明基礎知識
1. 概述
1985 年,學者 Goldwasser、Micali 和 Rackoff 在論文《TheKnowledge Complexity of Interactive Proof-Systems》中首次提出了零知識證明(Zero-KnowledgeProof,ZKP)和交互式知識證(InteractiveZero-Knowledge,IZK)。該論文是零知識證明的奠基之作,定義了許多影響後續學術研究的概念。例如,知識的定義是「不可行計算(unfeasiblecomputation)的輸出」,即知識必須是一個輸出,且是一個不可行計算,意味著它不能是簡單的函數,而需是複雜的函數。不可行計算通常可以理解為是一個 NP 問題,即可以在多項式時間內驗證其解正確性的問題,多項式時間指的是算法運行時間可以用輸入大小的多項式函數來表示。這是計算機科學中衡量算法效率和可行性的重要標準。由於 NP 問題的求解過程複雜,因此被認為是不可行計算;但其驗證過程相對簡單,所以非常適合用於零知識證明驗證(Goldwasser, Micali & Rackoff, 1985)。
NP 問題的一個經典例子是旅行商問題,其中要找到訪問一系列城市並返回起點的最短路徑。雖然找到最短路徑可能很困難,但給定一個路徑,驗證這條路徑是否是最短的相對容易。因為驗證一個具體路徑的總距離可以在多項式時間內完成。
Goldwasser 等人在其論文中引入了「知識複雜度」(knowledgecomplexity)這一概念,用以量化在交互式證明系統中,證明者向驗證者泄露的知識量。他們還提出了交互式證明系統(InteractiveProof Systems,IPS),其中證明者(Prover)和驗證者(Verifier)通過多輪互動來證明某個語句的真實性(Goldwasser, Micali & Rackoff, 1985)。
綜上,Goldwasser 等人總結的零知識證明的定義,是一種特殊的交互式證明,其中驗證者在驗證過程中不會獲得除語句真值外的任何額外資訊;並且提出了三個基本特性包括:
1.完備性(completeness):如果論證是真實的,誠實的證明者可以說服誠實的驗證者這一事實;
2.可靠性(soundness):如果證明者不知道聲明內容,他只能以微不足道的機率欺騙驗證者;
3.零知識性(zero-knowledge):在證明過程完成後,驗證者只獲得「證明者擁有此知識」的資訊,而無法獲得任何額外內容(Goldwasser, Micali & Rackoff, 1985)。
2. 零知識證明示例
為更好理解零知識證明及其屬性,以下是一個驗證證明者是否擁有某些私密資訊的示例,該示例分為三個階段:設置、挑戰和響應。
第一步:設置(Setup)
在這一步,證明者的目標是創建一個證據,證明他知道某個秘密數字 s,但又不直接顯示 s。設秘密數字;
選擇兩個大的質數 p 和 q,計算它們的乘積 。設質數 和,計算得到的;
計算,這裡,v 作為證明的一部分被發送給驗證者,但它不足以讓驗證者或任何旁觀者推斷出 s。;
隨機選擇一個整數 r,計算 並發送給驗證者。這個值 x 用於後續的驗證過程,但同樣不暴露 s。設隨機整數,計算得到的。
第二步:挑戰(Challenge)
驗證者隨機選擇一個位 a(可以是 0 或 1),然後發送給證明者。這個「挑戰」決定了證明者接下來需要採取的步驟。
第三步:響應(Response)
根據驗證者發出的 a 值,證明者進行響應:
如果,證明者發送(這裡 r 是他之前隨機選擇的數)。
如果,證明者計算 並發送。設驗證者發送的隨機位,根據 a 的值,證明者計算 ;
最後,驗證者根據收到的 g 來驗證 是否等於。如果等式成立,驗證者接受這個證明。當 時,驗證者計算驗證者計算,右側驗證 ; 當 時,驗證者計算驗證者計算,右側驗證。
這裡,我們看到驗證者計算得到的 說明證明者成功地通過了驗證過程,同時沒有泄露他的秘密數字 s。在這裡,由於 a 只可以取 0 或 1 ,僅有兩種可能性,證明者依靠運氣通過驗證的機率(當 a 取 0 時)。但驗證者隨後再挑戰證明者次,證明者不斷更換相關數字,提交給驗證者,且總能成功地通過驗證過程,這樣一來證明者依靠運氣通過驗證的機率 (無限趨近於 0),證明者確實知道某個秘密數字 s 的結論便得到證明。這一例子證明了零知識證明系統的完整性、可靠性和零知識性(Fiat& Shamir, 1986)。
二、非交互零知識證明
1. 背景
零知識證明(ZKP)在傳統概念中通常是交互式和在線的協議形式;例如,Sigma 協議通常需要三到五輪交互才能完成認證(Fiat& Shamir, 1986)。然而,在諸如即時交易或投票等場景中,往往沒有機會進行多輪交互,特別是在區塊鏈技術應用中,線下驗證功能顯得尤為重要(Sun 等, 2021)。
2.NIZK 的提出
1988 年,Blum、Feldman 和 Micali 首次提出了非交互式零知識(NIZK)證明的概念,證明了在無需多輪交互的情況下,證明者(Prover)與驗證者(Verifier)仍可完成認證過程的可能性 。這一突破使得即時交易、投票以及區塊鏈應用的實現變得可行 (Blum, Feldman & Micali, 1988)。
他們提出非交互式零知識證明(NIZK)可以分為三個階段:
1.設置
2.計算
3.驗證
設置階段使用計算函數,將安全參數轉換為公共知識(證明者和驗證者均可獲取),通常編碼在一個共同參考字符串(CRS)中。這是計算證明並使用正確的參數和算法進行驗證的方式。
計算階段採用計算函數、輸入和證明密鑰,輸出計算結果和證明。
在驗證階段,通過驗證密鑰來驗證證明的有效性。
他們所提出的公共參考字符串(CRS)模型,即基於所有參與者共享一個字符串來實現 NP 問題的非交互式零知識證明。這種模型的運行依賴於 CRS 的可信生成,所有參與者必須能夠訪問相同的字符串。僅當 CRS 被正確且安全地生成時,依此模型實施的方案才能確保安全性。對於大量參與者而言,CRS 的生成過程可能既複雜又耗時,因此儘管這類方案通常操作簡便且證明體積較小,其設置過程卻頗具挑戰 (Blum, Feldman & Micali, 1988)。
隨後,NIZK 技術經歷了迅猛發展,湧現了多種方法將交互式零知識證明轉化為非交互式證明。這些方法在系統的構建或底層加密模型的假設上各有不同。
3.Fiat-Shamir 變換
Fiat-Shamir 變換,又叫 Fiat-ShamirHeurisitc(啟發式),或者 Fiat-Shamir Paradigm(範式);由 Fiat 和 Shamir 在 1986 年提出,是一種能夠將交互式零知識證明轉換為非交互式的方法。該方法通過引入哈希函數來減少交互次數,並依託安全假設來保障證明的真實性及其難以偽造的特性。Fiat-Shamir 變換使用公共密碼學哈希函數替代部分隨機性和交互性,其輸出從某種程度上可以視作 CRS。儘管此協議在隨機預言機模型中被視為安全,但它依賴於哈希函數輸出對不同輸入的均勻隨機性和獨立性這一假設 (Fiat &Shamir, 1986)。Canetti、Goldreich 和 Halevi 在 2003 年的研究表明,雖然這種假設在理論模型中成立,但在實際應用中可能遇到挑戰,因此在使用時有失敗的風險 (Canetti, Goldreich & Halevi, 2003)。Micali 後來對此方法進行改進,將多輪交互壓縮為單輪,進一步簡化了交互流程 (Micali, 1994)。
4. Jens Groth 及其研究
Jens Groth 的後續研究極大推動了零知識證明在密碼學和區塊鏈技術中的應用。2005 年,他、Ostrovsky 和 Sahai 三人一起共同提出了首個適用於任何 NP 語言的完美非交互零知識證明系統,即使面對動態 / 自適應對手也能保證通用組合安全(UC)。此外,他們利用數論複雜性假設,設計了一種簡潔高效的非交互零知識證明系統,顯著減少了 CRS 和證明的體積 (Groth& Sahai, 2005)。
2007 年,Groth、 Cramer 及 Damgård 開始將這些技術商業化,通過實驗驗證,他們的公鑰加密和簽名方案在效率和安全性方面均有顯著提升,儘管這些方案基於雙線性群的假設 (Groth & Sahai, 2007)。2011 年,Groth 進一步探索如何將全同態加密與非交互零知識證明結合,提出了一種減少通信開銷的方案,使得 NIZK 的體積與證明的見證大小保持一致(Groth, 2011)。在隨後的幾年裡,他與其他研究人員對基於配對的技術進行了深入研究,為大規模聲明提供了緊湊而高效的非交互式證明,儘管這些證明仍然沒有脫離雙線性群框架 (Bayer & Groth, 2012; Groth, Kohlweiss & Pintore, 2016; Bootle, Cerulli, Chaidos, Groth & Petit, 2015; Groth, Ostrovsky & Sahai, 2012; Groth & Maller, 2017)。
5. 其他研究
在特定應用場景中,特定驗證者的非交互式零知識證明表現出了其獨特的實用價值。例如,Cramer 和 Shoup 利用基於通用哈希函數的方法開發的公鑰加密方案,在 1998 年和 2002 年有效地抵禦了選擇性密文攻擊。此外,在密鑰註冊模型中,成功開發了一種新的非交互式零知識證明方法,適用於解決所有 NP 類問題,關鍵在於參與者需要註冊他們自己的密鑰以進行後續驗證(Cramer& Shou, 1998, 2002)。
此外,Damgård、Fazio 和 Nicolosi 在 2006 年提出了改進已有 Fiat-Shamir 變換的新方法,允許在無需直接交互的情況下進行非交互式零知識證明。在他們的方法中,驗證者首先需要註冊一個公鑰,準備後續加密操作。證明者使用加法同態加密技術在不知情的情況下對數據進行運算,生成包含答案的加密資訊,作為對挑戰的響應。這個方法的安全性基於「複雜性槓桿假設」,認為對於具備超常計算資源的對手,某些被認為難解的計算問題可能被解決 (Damgård, Fazio &Nicolosi, 2006)。
Ventre 和 Visconti 在 2009 年提出的「弱可歸責可靠性」概念是對這一假設的替代,要求對手在提出虛假證明時,不僅需意識到其虛假性,還必須清楚自己如何成功製造這一偽證。這一要求顯著增加了欺騙的難度,因為對手必須明確自己的欺騙手段。在實際操作中,使用此概念的對手需要提供特定證明,其中包含針對指定驗證者的密文資訊,無該驗證者私鑰難以完成證明,從而在對手試圖偽造證明時,通過檢測暴露其行為 (Ventre andVisconti, 2009)。
Unruh 變換是 2015 年提出的一種 Fiat-Shamir 轉換的替代方案。Fiat-Shamir 方法通常在面對量子計算時並不安全,並且對於某些協議可能產生不安全的方案(Unruh, 2015)。相比之下,Unruh 變換在隨機預言機模型(ROM)中,為任何交互式協議提供了對抗量子對手的可證明安全的非交互式零知識證明(NIZK)。與 Fiat-Shamir 方法相似,Unruh 變換無需額外的設置步驟(Ambainis, Rosmanis & Unruh, 2014)。
此外,Kalai 等人提出了一種基於私有資訊檢索技術的任意決策問題論證系統。該方法採用多證明者交互式證明系統(MIP)模型,並通過 Aiello 等人的方法,將 MIP 轉換為一個論證系統 。這一構造在標準模型中運行,不需要依賴隨機預言機假設。這種方法被應用於一些基於「普通人證明(Proofs-for-Muggles)」的零知識論證中 (Kalai, Raz& Rothblum, 2014)。
在這些技術基礎上,非交互式零知識證明(NIZK)已被廣泛應用於各種需要高度安全和隱私保護的領域,如金融交易、電子投票和區塊鏈技術等。通過減少交互次數和優化證明生成與驗證過程,NIZK 不僅提高了系統的效率,還增強了安全性和隱私保護能力。在未來,隨著這些技術的進一步發展和完善,我們可以預期 NIZK 將在更多領域中發揮重要作用,為實現更加安全和高效的資訊處理和傳輸提供堅實的技術基礎(Partala, Nguyen & Pirttikangas, 2020)。
三、基於電路的零知識證明
1. 背景
在密碼學領域,尤其是在處理需要高度並行化和特定類型的計算任務(如大規模矩陣運算)時,傳統的圖靈機模型展現出一定的侷限性。圖靈機模型需通過複雜的內存管理機制來模擬無限長的紙帶,並且不適合直接表達並行計算和流水線操作。相比之下,電路模型以其獨特的計算結構優勢,更適合於某些特定的密碼學處理任務 ( Chaidos, 2017)。本文將詳細探討基於電路的零知識證明系統(Zero-KnowledgeProof Systems Based on Circuit Models),這類系統特彆強調使用電路(通常是算術電路或布爾電路)來表達和驗證計算過程。
2. 電路模型的基本概念與特點
在基於電路的計算模型中,電路被定義為一種特殊的計算模型,它能將任何計算過程轉換為一系列的門和連線,這些門執行特定的邏輯或算術操作。具體而言,電路模型主要分為兩大類:
算術電路:主要由加法和乘法門組成,用於處理有限域上的元素。算術電路適用於執行複雜的數值運算,廣泛應用於加密算法和數值分析中。
邏輯電路:由與門、或門、非門等基本邏輯門構成,用於處理布爾運算。邏輯電路適合於執行簡單的判斷邏輯和二進制計算,常用於實現各類控制系統和簡單的數據處理任務 ( Chaidos, 2017)。
3. 零知識證明中的電路設計與應用
在零知識證明系統中,電路設計的過程涉及將待證明的問題表達為一個電路,這一過程需要設計 zk 電路需要大量的「逆向思維」:「如果一個計算的聲稱輸出是真實的,則輸出必須滿足一定的要求。如果這些要求難以僅用加法或乘法建模,我們要求證明者進行額外工作,以便我們更容易地模型化這些要求。」設計過程通常遵循以下步驟 ( Chaidos, 2017):
問題表示:首先將待證明的問題如密碼學哈希函數的計算過程,轉換為電路的形式。這包括將計算步驟分解為電路中的基本單元,如門和連線。
電路優化:通過技術手段如門合併和常數摺疊,優化電路設計,減少所需的門數量和計算步驟,從而提高系統的運行效率和響應速度。
轉換為多項式表示:為適配零知識證明技術,將優化後的電路進一步轉換為多項式形式。每個電路元件和連接都對應於特定的多項式約束。
生成公共參考字符串(CRS):在系統初始化階段,生成包括證明密鑰和驗證密鑰在內的公共參考字符串,以供後續的證明生成和驗證過程使用。
證明生成與驗證:證明者根據其私有輸入和 CRS,在電路上執行計算,生成零知識證明。驗證者則可以根據公開的電路描述和 CRS,驗證證明的正確性,而無需了解證明者的私有資訊 ( Chaidos, 2017)。
零知識證明電路設計涉及將特定的計算過程轉化為電路表示,並通過構建多項式約束來確保計算結果的準確性,同時避免泄露任何額外的個人資訊。在電路設計中,關鍵任務是優化電路的結構並生成有效的多項式表示,這是為了提升證明生成與驗證的效率。通過這些步驟實施,零知識證明技術能夠在不泄露額外資訊的前提下,驗證計算的正確性,確保了隱私保護與數據安全性的雙重需求得到滿足 ( Chaidos, 2017)。
4. 潛在的缺陷和挑戰
弊端包括:
1.電路複雜性和規模:複雜計算需要龐大的電路,導致證明生成和驗證的計算成本顯著增加,尤其是在處理大規模數據時;
2.優化難度:儘管技術手段(如門合併、常數摺疊等)可以優化電路,但設計和優化高效電路仍然需要深厚的專業知識;
3.特定計算任務的適應性:不同計算任務需要不同的電路設計,為每個具體任務設計高效電路可能耗時且難以推廣;
4.加密算法實現難度:實現複雜的密碼學算法(如哈希函數或公鑰加密)可能需要大量的邏輯門,使電路設計和實現變得困難;
5.資源消耗:大規模電路需要大量硬體資源,可能在功耗、熱量和物理空間等方面遇到實際硬體實現的瓶頸(Goldreich, 2004 ;Chaidos, 2017 ;Partala, Nguyen & Pirttikangas, 2020 ;Sun 等, 2021)。
解決方案和改進方向:
1.電路壓縮技術:通過研究和應用高效的電路壓縮技術,減少所需邏輯門數量和計算資源;
2.模塊化設計:通過模塊化設計電路,提高電路設計的復用性和可擴展性,減少為不同任務重新設計電路的工作量;
3.硬體加速:利用專用硬體(如 FPGA 或 ASIC)加速電路計算,提高零知識證明的整體性能(Goldreich, 2004 ;Chaidos, 2017 ;Partala, Nguyen & Pirttikangas, 2020 ;Sun 等,2021)。
四、零知識證明模型
1. 背景
基於電路的零知識證明通用性較差,需要為特定問題開發新的模型和算法,現有多種高級語言編譯器和低級電路組合工具去進行電路生成和設計算法,相關計算的轉換可以通過手動電路構建工具或自動編譯器完成。手動轉換通常能產生更優化的電路,而自動轉換對開發者更方便。性能關鍵應用通常需要手動轉換工具(Chaidos, 2017 ;Partala, Nguyen & Pirttikangas, 2020 ;Sun 等, 2021)。
本文將討論其中最著名的幾種。總的來說,這些模型都是 zkSNARKs 技術的擴展或變體,每個都試圖在特定的應用需求(如證明大小、計算複雜性、設置需求等)中提供優化。
每種協議都有其特定的應用、優勢和侷限性,特別是在設置要求、證明大小、驗證速度和計算開銷方面。它們在各個領域得到應用,從加密貨幣隱私和安全投票系統到以零知識方式驗證的一般計算等(Čapko, Vukmirović & Nedić, 2019)。
2. 常見算法模型
1. zkSNARK 模型: 2011 年,由密碼學者 Bitansky 等人提出,作為「零知識簡潔非交互式知識論證」(Zero-KnowledgeSuccinct Non-Interactive Argument of Knowledge)的縮寫,它是一種改進的零知識證明機制,如果存在可提取碰撞抗性哈希(ECRH)函數,那麼實現針對 NP 問題的 SNARK 是可能的,並展示了 SNARK 在計算委託、簡潔非交互式零知識證明以及簡潔雙方安全計算等多種情境中的適用性。這項研究還表明,SNARK 的存在意味著 ECRH 的必要性,確立了這些密碼學原語之間的基礎性聯繫 (Bitanskyet al., 2011)。
zkSNARK 系統由設置、證明者和驗證者三部分組成。設置過程生成證明密鑰(PK)和驗證密鑰(VK),使用預定義的安全參數 l 和 F- 算術電路 C。該電路的所有輸入和輸出均為域 F 中的元素。PK 用於生成可驗證的證明,而 VK 用於驗證生成的證明。基於生成的 PK,證明者使用輸入 x ∈ Fn 和證人 W ∈ Fh 生成證明 p,其中 C(x, W) = 0 l。這裡,C(x, W) = 0 l 表示電路 C 的輸出為 0 l,x 和 W 是電路 C 的輸入參數。n、h 和 l 分別表示 x、W 和 C 輸出的維度。最後,驗證者使用 VK、x 和 p 來驗證 p,根據驗證結果決定接受或拒絕該證明 (Bitanskyet al., 2011)。
此外,zkSNARK 還具備一些額外特性。首先,驗證過程可以在短時間內完成,並且證明的大小通常只有幾個字節。其次,證明者和驗證者之間不需要同步通信,任何驗證者都可以離線驗證證明。最後,證明者算法只能在多項式時間內實現。從那時起,已經出現了多種改進的 zkSNARK 模型,進一步優化了其性能和應用範圍 (Bitanskyet al., 2011)。
2. Ben-Sasson 的模型:Ben-Sasson 等人在 2013 年和 2014 年提出了一種針對馮·諾依曼 RISC 架構程序執行的一種新的 zkSNARK 模型。然後,基於所提出的通用電路生成器,Ben-Sasson 等人建立了一個系統,並展示了其在驗證程序執行中的應用。該系統包含兩個組件:用於驗證算術電路可滿足性的密碼學證明系統,以及將程序執行轉換為算術電路的電路生成器。該設計在功能和效率上均優於之前的工作,尤其是電路生成器的通用性和輸出電路大小的加性依賴。實驗評估表明,該系統可以處理多達 10, 000 條指令的程序,並在高安全級別下生成簡潔的證明,其驗證時間僅為 5 毫秒。其價值在於為區塊鏈和隱私保護智能合約等實際應用提供了高效、通用且安全的 zk-SNARKs 解決方案 (Ben-Sasson et al., 2013, 2014)。
3. Pinocchio 模型:Parno 等人(2013)提出,是一個完整的非交互零知識論證生成套件 (Parno etal., 2013)。它包含一個高級編譯器,高級編譯器為開發者提供了一種將計算轉化為電路的簡便方法。這些編譯器接受用高級語言編寫的代碼,因此新舊算法都能輕鬆轉換。然而,為生成合適大小的電路,代碼結構可能會有一些限制。
Pinocchio 的另一個特點是使用了一種被稱為二次算術程序(QuadraticArithmetic Programs,QAPs)的數學結構,可以高效地將計算任務轉換為驗證任務。QAPs 能夠將任意算術電路編碼為多項式集合,並且只需要線性時間和空間複雜度來生成這些多項式。Pinocchio 生成的證明大小為 288 字節,不隨計算任務的複雜度和輸入輸出大小變化。這大大減少了數據傳輸和儲存的開銷。Pinocchio 的驗證時間通常為 10 毫秒,相比之前的工作,驗證時間減少了 5-7 個數量級。對於某些應用,Pinocchio 甚至能夠實現比本地執行更快的驗證速度。減少工作者的證明開銷:Pinocchio 還減少了工作者生成證明的開銷,相比之前的工作,減少了 19-60 倍 (Parno etal., 2013)。
4. Bulletproofs 模型: 2017 年 BenediktBünz 等人(2018)設計了新型非交互式 ZKP 模型。不需要可信設置,且證明大小隨見證值大小呈對數增長。Bulletproofs 特別適用於在保密交易中的區間證明,能夠通過使用最小的群和字段元素數量證明一個值在某個範圍內。此外,Bulletproofs 還支持區間證明的聚合,使得可以通過一個簡潔的多方計算協議生成一個單一的證明,大幅減少了通信和驗證時間。Bulletproofs 的設計使其在加密貨幣等分布式和無需信任的環境中具有很高的效率和實用性。Bulletproofs 嚴格意義上並非傳統的基於電路的協議,它們的簡潔性不如 SNARKs,驗證 Bulletproof 的時間比驗證 SNARK 證明更長。但在不需要可信設置的場景中更高效。
5. Ligero 模型:Ames 等人(2017)提出的一種輕量級的零知識論證模型。Ligero 的通信複雜性與驗證電路大小的平方根成正比。此外,Ligero 可以依賴任何抗碰撞的哈希函數。此外,Ligero 可以是隨機預言模型中的一個 zkSNARK 方案。此模型不需要受信任的設置或公鑰密碼系統。Ligero 可用於非常大的驗證電路。同時,它適用於應用中的中等大型電路。
3. 基於線性 PCP 和離散對數問題的方案
Ishai 和 Paskin(2007)提出利用加法同態公鑰加密減少交互式線性 PCP 的通信複雜性。隨後 Groth 等人在 2006 年至 2008 年發表多篇研究提出了基於離散對數問題和雙線性配對的 NIZK 方案,實現了完美完備性、計算正確性和完美零知識。該方案將陳述表示為代數約束滿足問題,使用類似 Pedersen 承諾的加密承諾方案實現次線性證明長度和非交互性,而無需 Fiat-Shamir 啟發式。儘管需要較大的 CRS 和強加密假設「指數知識」,足夠長的 CRS 可實現常量證明長度。驗證和證明代價較高,建議採用「模擬可提取性」安全模型。這個類型方案基於線性 PCP 和 / 或離散對數問題,但均不具備抗量子安全性(Groth, 2006, 2006, 2008; Groth & Sahai, 2007)。
6. Groth 16 模型:是一種高效的非交互式零知識證明系統,由 Jens Groth 在 2016 年提出。該協議基於橢圓曲線配對和二次算術程序(QAP),旨在提供簡潔、快速和安全的零知識證明 。
7. Sonic 模型:M. Maller 等人(2019)提出,基於 Groth 的可更新 CRS 模型,使用多項式承諾方案、配對和算術電路。需要可信設置,可通過安全多方計算實現。一旦生成 CRS,支持任意大小電路。
8. PLONK 模型: 2019 年提出的一個通用的 zk-SNARK,使用排列多項式簡化算術電路表示,使證明更簡單和高效;它具有多功能性,並支持遞歸證明組合(Gabizon, Williamson & Ciobotaru, 2019)。PLONK 模型自稱減少了 Sonic 的證明長度並提高了證明效率,但尚未通過同行評審。
9. Marlin 模型:一種改進式的 zk-SNARK 協議,將代數證明系統的效率與 Sonic 和 PLONK 的通用和可更新設置屬性相結合,提供了證明大小和驗證時間方面的改進 (Chiesa etal., 2019)。
10. SLONK 模型:Zac 和 Ariel 在 ethresear 一個文件里介紹的新型協議,一種 PLONK 的擴展,旨在解決特定的計算效率問題並增強原始 PLONK 系統的功能,通常涉及底層加密假設或實現的變化 (Ethereum Research, 2019)。
11. SuperSonic 模型:一種應用新穎的多項式承諾方案,將 Sonic 轉換為無需可信設置的零知識方案。不具備抗量子安全性 (Bünz, Fisch & Szepieniec, 2019)。
4. 基於普通人證明的方案
「普通人證明」(Proofs-for-Muggles)是由 Goldwasser、Kalai 和 Rothblum 在 2008 年提出的一種新的零知識證明方法。該方法在原始交互證明模型中為多項式時間證明者構建交互證明,適用於廣泛的問題。通過 Kalai 等人的轉換,這些證明可以變為非交互式零知識證明(Kalai, Raz &Rothblum, 2014)。
12. Hyrax 模型:基於普通人證明,Wahby 等人(2018)首先設計了一個低通信、低成本的零知識論證方案 Hyrax,對證明者和驗證者來說成本很低。在這個方案中,這個論證中沒有受信任的設置。如果應用於批量語句,則驗證時間與算術電路大小具有亞線性關係,且常數很好。證明者的運行時間與算術電路大小成線性關係,常數也很好。使用 Fiat-Shamir 啟發式實現非交互性,基於離散對數問題,未實現抗量子安全。
13. Libra 模型:第一個具有線性證明者時間、簡潔證明大小和驗證時間的 ZKP 模型。在 Libra 中,為了減少驗證的開銷,零知識機制通過一種可以掩蓋證明者響應的輕微隨機多項式的方法來實現。此外,Libra 需要一次性受信任的設置,這隻依賴於電路的輸入大小。Libra 具有出色的漸近性能和證明者的卓越效率。其證明大小和驗證時間的性能也非常高效 (Xie etal., 2019)。
就證明者算法的計算複雜性而言,Libra 優於 Ben-Sasson 的模型、Ligero、Hyrax 和 Aurora。此外,Libra 的證明者算法的計算複雜性與電路類型無關(Partala, Nguyen & Pirttikangas, 2020)。
14. Spartan 模型:SrinathSetty(2019)提出的旨在提供高效證明而不需要受信任設置的零知識證明系統;使用 Fiat-Shamir 轉換實現非交互性。它以其輕量級設計和有效處理大電路的能力而聞名。
5. 基於機率可檢驗證明(PCP)的零知識
Kilian(1992)構建了第一個用於 NP 的交互式零知識論證方案,實現了多對數通信。該方案使用了抗碰撞哈希函數、交互式證明系統(IP)和機率可檢驗證明(PCP)。證明者和驗證者(作為隨機算法)通過多輪通信,驗證者測試證明者對陳述的知識。通常只考慮單邊錯誤:證明者總能為真實陳述辯護,但驗證者可能以低機率接受虛假陳述。2000 年,Micali 使用 Fiat-Shamir 轉換將方案轉化為單消息非交互式方案。以下實現可被視為採用了這種方法:
15. STARK 模型: 2018 年,ZK-STARKs(Scalable Transparent ARgument of Knowledge) 技術由 Ben-Sasson 等人在 2018 年提出,旨在解決 zk-SNARKs 處理複雜證明時的低效問題。同時,解決了在隱私數據上驗證計算完整性的問題,能夠在不依賴任何受信方的情況下,提供透明且後量子安全的證明。
同年,Ben-Sasson 等人創辦 StarkWareIndustries,並開發了第一個基於 ZK-STARKs 的可擴展性解決方案 StarkEx。根據以太坊的官方文檔,其可通過 Fiat-Shamir 範式在隨機預言機模型中實現非交互性。該構造具有抗量子安全性,但其安全性依賴於關於 Reed-Solomon 碼的非標準加密假設。ZK-STARKs 具有與 ZK-SNARKs 相同的特性,但包括以下優點:a) 可擴展性:驗證過程更快。透明性:驗證過程是公開的。較大的證明大小:需要更高的交易手續費(StarkWare Industries, 2018 , 2018)
16. Aurora 模型:Ben-Sasson 等人(2019)提出,是基於 STARK 的簡潔非交互論證(SNARG)。非交互性基於 Fiat-Shamir 構造。它適用於算術電路的滿足性。Aurora 的論證大小與電路大小成多對數關係。此外,Aurora 具有幾個吸引人的特點。在 Aurora 中,有一個透明的設置。不存在有效的量子計算攻擊,可以破解 Aurora。此外,快速對稱加密被用作黑盒。Aurora 優化了證明大小。例如,如果安全參數是 128 位,則 Aurora 的證明大小最多為 250 千字節。Aurora 和 Ligero 通過優化證明大小和計算開銷,使得它們非常適合在資源有限的設備上進行零知識證明。這些優化不僅提升了效率,還擴大了零知識證明技術的應用範圍,使其能夠在更多實際場景中得到應用。
17. Succinct Aurora 模型:Ben-Sasson 等人(2019)於同一篇論文中提出:Aurora 協議的擴展,提供了更優化的證明大小和驗證過程。它保持了 Aurora 的透明設置和安全功能,同時增強了效率。
18. Fractal 模型:Chiesa 等人(2020)提出,一種預處理 SNARK,使用遞歸組合提高效率和可擴展性。它利用對數證明大小和驗證時間,特別適用於複雜計算。
6. 基於 CPC(通用證明構造)的設置階段進行分類
第一代(G 1)- 每個電路需要單獨的受信任設置。zkSNARK,Pinocchio 和 Groth 16
第二代(G 2)- 最初為所有電路設置一次。PlonK,Sonic,Marlin,slonk 和 Libra
第三代(G 3)- 不需要受信任設置的證明系統。Bulletproofs,STARKs,Spartan,Fractal,Supersonic,Ligero,Aurora 和 SuccinctAurora(Čapko, Vukmirović & Nedić, 2019 ;Partala, Nguyen & Pirttikangas, 2020)。
五、零知識虛擬機的概述和發展
1. 背景
前面介紹的部分更多的是零知識證明 ZKP 在密碼學中的發展,接下來我們簡單介紹一下它在計算機領域的發展。
2019 年,Andreev 等人在「ZkVM:Fast, Private, Flexible Blockchain Contracts」大會上首次提出 ZK-VM 的概念,作為零知識證明系統的一種實現方式。ZK-VM 的目標是通過運行虛擬機程序來生成零知識證明,驗證程序執行的正確性而不泄露輸入數據。
VM,(VirtualMachine,虛擬機)是一種軟體模擬的計算機系統,能夠執行程序,類似於物理計算機。VM 通常用於創建獨立的操作系統環境,進行軟體測試和開發等。VM 或者 VM 抽象可以在大多數情況下等同理解為 CPU 抽象,它是指將計算機的處理單元(CPU)的複雜操作和架構抽象成一組簡單的、可操作的指令集架構(ISA),用於簡化計算機程序的設計和執行。在這種抽象中,計算機程序可以通過虛擬機(VM)來運行,這些虛擬機模擬真實 CPU 的操作行為(Henderson, 2007)。
零知識證明(ZKP)通常需要通過 CPU 抽象進行執行。設定是證明者在私有輸入上運行公共程序,並希望向驗證者證明程序正確執行並產生了斷言的輸出,而不透露計算的輸入或中間狀態。CPU 抽象在這種情況下非常有用,因為它允許程序在受控的虛擬環境中運行,同時生成證明(Arun, Setty& Thaler, 2024)。
示例: 證明者希望證明其擁有一個哈希值的密碼,而不透露密碼:
密碼 → 哈希函數 → 哈希值
私有 → 公共
一般情況下,證明者應該能夠運行執行哈希操作的代碼,並生成允許任何人驗證證明正確性的「證明」,即證明者確實擁有給定哈希值的有效前像。
生成這些 VM 抽象證明的系統通常稱為「zkVMs」。這個名稱其實具有誤導性,因為 ZKVM 不一定提供零知識。簡而言之,ZKVM 是一種專注於零知識證明的虛擬機,擴展了傳統 VM 的功能,可以通用化地降低了零知識電路的開發門檻,能夠即時為任意應用或計算生成證明 ( Zhang etal., 2023)。
2. 現有的 ZKVM 的分類
按照設計目標,主要分為三類:
1. 主流型 ZKVM
這些 ZKVM 利用現有的標準指令集架構(ISA)和編譯器工具鏈,適用於廣泛的應用和開發環境。
· RISCZero(2021):使用 RISC-V 指令集,具有豐富的編譯器生態系統(Bögli, 2024)。
· PolygonMiden(2021):基於標準 ISA,實現簡便和高效的開發(Chawla, 2021)。
· zkWASM(2022):zkWASM 實現了 WebAssembly(WASM)指令集的零知識證明,WASM 是一種廣泛採用的標準指令集(DelphinusLab, 2022 )。
2. EVM 等效型 ZKVM
zkEVM 項目:多個項目致力於實現與 EVM 的字節碼級兼容,如 zkSync ( MatterLabs, 2020) 和 Polygon Hermez (Polygon Labs, 2021)。
3. 零知識優化(零知識友好)型 ZKVM
這些 ZKVM 優化了零知識證明的效率和性能,專為特定應用場景設計。
· Cairo-VM(2018):簡單且與 SNARK 證明兼容,其指令集特別設計為算術友好,便於在零知識電路中實現基本算術運算,如加法、乘法等 (StarkWare, 2018)。
· Valida(2023):針對特定應用進行了優化,例如通過優化算法,減少了生成證明所需的計算資源和時間;輕量級設計使其適用於各種硬體和軟體環境 (LitaFoundation, 2023)。
· TinyRAM(2013):不依賴標準工具鏈:由於其簡化和優化的設計,通常不支持 LLVM 或 GCC 工具鏈,只能用於小規模定製軟體組件 ( Ben-Sasson et al., 2013)。
當前的普遍觀點是,更簡單的 VM 可以轉換為每步門數更少的電路。這在特別簡單且顯然對 SNARK 友好的 VM(如 TinyRAM 和 Cairo-VM)設計中最為明顯。然而,這需要額外的開銷,因為在簡單 VM 上實現現實世界 CPU 的原始操作需要許多原始指令(Arun, Setty& Thaler, 2024)。
3. 前端與後端範式
從程序設計視角,ZKP 系統一般可以劃分為前端 frontend 和後端 backend 兩個部分。ZKP 系統的 Frontend 部分的主要使用低級別語言來表示高級別語言,例如可以將一個一般地計算問題使用較低級別的電路語言表示,如 R 1 CS 電路約束構建計算等(比如 circom 使用 R 1 CS 描述其前端電路)。ZKP 系統的 Backend 部分即密碼學證明系統,主要將 frontend 構建低級別的語言描述的電路,轉換為生成證明和驗證正確性等,比如常用的 backend 系統協議有 Groth 16 和 Plonk 等(Arun, Setty& Thaler, 2024 ;Zhang et al., 2023)。
通常,電路將逐步「執行」計算程序的每一步(藉助不受信任的「建議輸入」)。執行 CPU 的一步概念上涉及兩個任務:(1)識別該步驟應執行的基本指令,(2)執行指令並適當地更新 CPU 狀態。現有前端通過精心設計的門或約束實現這些任務。這既耗時又容易出錯,也導致電路比實際需要的大得多(Arun, Setty& Thaler, 2024 ;Zhang et al., 2023)。
4.ZKVM 範式的優缺點
優點:
1.利用現有的 ISA:例如,RISC-V 和 EVM 指令集,可以利用現有的編譯器基礎設施和工具鏈,無需從頭構建基礎設施。可以直接調用現有的編譯器,將高層語言編寫的證人檢查程序轉換為 ISA 的匯編代碼,並受益於之前的審核或其他驗證工作。
2.單一電路支持多程序:zkVM 允許一個電路運行所有程序,直到達到某個時間限制,而其他方法可能需要為每個程序重新運行前端。
3.重複結構的電路:前端輸出具有重複結構的電路,針對這些電路的後端可以更快地處理(Arun, Setty& Thaler, 2024 ;Zhang et al., 2023)。
缺點:
1.通用性帶來的開銷:為了支持所有可能的 CPU 指令序列,zkVM 電路需要為其通用性付出代價,導致電路規模和證明成本的增加。
2.高成本操作:在 zkVM 中實現某些重要操作(如加密操作)非常昂貴。例如,ECDSA 簽名驗證在真實 CPU 上需要 100 微秒,在 RISC-V 指令上則需數百萬條指令。因此,zkVM 項目包含手工優化的電路和查找表,用於計算特定功能。
3.證明成本高:即使對於非常簡單的 ISA,現有 zkVM 的證明者成本仍然很高。例如,Cairo-VM 的證明者每步需要加密提交 51 個域元素,這意味著執行一個原始指令可能需要在真實 CPU 上執行數百萬條指令,限制了其在複雜應用中的適用性(Arun, Setty& Thaler, 2024 ;Zhang et al., 2023)。
六、零知識以太坊虛擬機的概述和發展
1. 背景
ZKEVM(零知識以太坊虛擬機)和 ZKVM(零知識虛擬機)都是應用零知識證明(ZKP)技術的虛擬機。以太坊虛擬機(EVM)是以太坊區塊鏈系統的一部分,負責處理智能合約的部署和執行。EVM 具有基於堆棧的架構,是一個計算引擎,提供特定指令集的計算和儲存(如日誌操作、執行、內存和儲存訪問、控制流、記錄、調用等)。EVM 的角色是應用智能合約的操作後,更新以太坊的狀態。ZKEVM 專為以太坊設計,主要用於驗證智能合約執行的正確性,同時保護交易隱私。ZKEVM 將 EVM 指令集轉換到 ZK 系統中執行,每條指令都需提供證明,包括狀態證明和執行正確性證明(Čapko, Vukmirović & Nedić, 2019)。
ZKEVM 目前比較主流的方案有 STARKWARE,ZkSync,Polygen-Hermez,Scroll 等,下面是對這個幾個項目的簡介(Čapko, Vukmirović & Nedić, 2019):
STARKWARE :Ben-Sasson 等人(2018)創辦,致力於使用 STARK 零知識證明技術提升區塊鏈的隱私和擴展性
zkSync:由 AlexGluchowski(2020)等人創立 Matter Labs,,提出基於 zk-rollups 的以太坊 Layer 2 擴展解決方案。
Polygon-Hermez:Hermez 原先是獨立項目,於 2020 年發布。2021 年 8 月被 Polygon 收購後成為 PolygonHermez,專注於高吞吐量的 zk-rollups 解決方案。
Scroll:Zhang 和 Peng(2021)創立,實現了更高的交易吞吐量和更低的 Gas 費用,從而提高了以太坊的整體性能和用戶體驗。
一般按照對 EVM 的兼容級別可以劃分為(Čapko, Vukmirović & Nedić, 2019):
1.EVM-EVM-compatibility 智能合約功能級別兼容,如 STARKWARE, zkSync
2.EVM-equivalence,EVM 指令級別兼容(等同),如 polygen-Hrmez,scroll
基於零知識的以太坊系統改進解決方案請見圖 1
2. ZKEVM 的工作原理
節點程序處理:節點程序處理和驗證執行日誌、區塊頭、交易、合約字節碼、默克爾證明等,並將這些數據發送給 zkEVM 處理。
生成 ZK 證明:zkEVM 使用電路生成執行結果的 ZK 證明(狀態和執行正確性證明),這些電路功能主要使用 table 和特製 circuit 來實現。
聚合證明:使用聚合電路將大的證明生成更小的證明,如使用遞歸證明。
發送到 L1 合約:聚合證明以交易形式發送給 L1 合約執行(Čapko, Vukmirović & Nedić, 2019)。
3. ZKEVM 的實現流程
獲取數據:從以太坊區塊鏈系統獲取數據,包括交易、區塊頭、合約等。
處理數據:處理和驗證執行日誌、區塊頭、交易、合約字節碼、默克爾證明等。
生成證明:使用電路生成 ZK 證明,確保每條指令的狀態更新和執行正確性。
遞歸證明:將生成的大證明壓縮為更小的聚合證明。
提交證明:將聚合證明提交給 L1 合約,以完成交易驗證(Čapko, Vukmirović & Nedić, 2019)。
4. ZKEVM 的特點
提升交易處理能力:通過 L2 上的 ZKEVM 執行交易,減少 L1 的負載。
隱私保護:在驗證智能合約執行的同時保護交易隱私。
高效驗證:使用零知識證明技術,實現高效的狀態和執行正確性驗證(Čapko, Vukmirović & Nedić, 2019)。
七、零知識二層網路方案概述與發展
1. 背景
以太坊區塊鏈是當前最廣泛採用的區塊鏈生態系統之一。然而,以太坊面臨嚴重的擴展性問題,導致使用成本高昂。零知識二層網路方案(ZK Rollup)基於零知識證明(ZKP),是一種針對以太坊擴容的二層網路(Layer 2)解決方案,克服了 OptimisticRollups 交易最終確認時間過長的缺陷 ( Ganguly, 2023)。
2.ZK Rollup 的工作機制
ZK Rollup 允許在一筆交易內實現可擴展性。L1 上的智能合約負責處理並驗證所有轉賬,理想情況下只生成一筆交易。這是通過在鏈下執行交易來減少以太坊上的計算資源使用,並將最終的簽名交易重新放回鏈上進行。這一步驟被稱為有效性證明(ValidityProof)。在某些情況下,可能無法在單一證明內完成驗證,需要額外的交易將 rollup 上的數據發布到以太坊主鏈上,以確保數據的可用性 ( Ganguly, 2023)。
在空間方面,使用 ZK Rollup 由於不需要像普通智能合約那樣儲存數據,因此提高了效率。每筆交易僅需要驗證證明,這進一步確認了數據的最小化,使得它們更便宜和更快 ( Ganguly, 2023)。
儘管 ZK Rollup 名稱中包含「ZK」(零知識)的術語,但它們主要利用零知識證明的簡潔性來提高區塊鏈交易的處理效率,而不是主要關注隱私保護 ( Ganguly, 2023)。
3. ZKRollup 的缺點與優化
ZK Rollup(零知識匯總)作為以太坊擴展性的 Layer 2 解決方案,雖然在提高交易處理效率方面表現優異,但其主要問題在於計算成本非常高。然而,通過一些優化方案,可以顯著提高 ZK Rollup 的性能和可行性 ((Čapko, Vukmirović & Nedić, 2019)。
1. 優化密碼算法的計算
優化密碼算法的計算過程可以提高 ZK Rollup 的效率,減少計算時間和資源消耗。例如,Plonky 2 由 PolygonZero(前身為 MIR)提出,是一種去中心化的 ZK Rollup 解決方案。Plonky 2 是一種遞歸 SNARK,比其他以太坊兼容替代品快 100 倍,結合了 STARKs 和 SNARKs 的最佳特性:
Plonk 和 FRI:提供快速證明且無需信任設置。
支持遞歸:通過遞歸證明提高效率。
低驗證成本:通過 64 位遞歸 FRI 與 Plonk 結合,實現高效證明。
2. 混合 Optimistic 和 ZK Rollup
例如,PolygonNightfall 是一種混合 Rollup,結合了 Optimistic 和 ZK Rollup 的特點,旨在增加交易隱私並減少轉賬費用(最多可減少 86% )。
3. 開發專用 ZK EVM
專用 ZK EVM 是為提高 ZK Rollup 算法而設計的,可以優化零知識證明過程。以下是幾種具體方案:
AppliedZKP:由以太坊基金會資助的開源項目,實現了以太坊 EVM 原生操作碼的 ZK,使用了 halo 2、KZG 和 Barreto-Naehrig(BN-254)橢圓曲線配對等密碼算法。
zkSync:由 Matter Labs 開發的 zkEVM,是一個自定義 EVM,實現了將合約代碼編譯成 YUL(Solidity 編譯器的中間語言),然後再編譯成支持的自定義字節碼,使用 Plonk 的擴展版 ultraPlonk。
Polygon Hermez:自定義 EVM 兼容的去中心化 Rollup,將合約代碼編譯成支持的微指令集,使用 Plonk、KZG 和 Groth 16 證明系統。
Sin 7 Y zkEVM:實現了 EVM 原生操作碼的 ZK,並優化了專用操作碼,使用 halo 2、KZG 和 RecursivePlonk。
Polygon Miden:基於 STARK 的通用零知識虛擬機。
4. 硬體優化
硬體優化可以顯著提升 ZK Rollup 的性能。以下是幾種硬體優化方案:
DIZK(DIstributedZero Knowledge):通過在計算集群上分布執行 zkSNARK 證明來進行優化。硬體架構包括兩個子系統,一個用於多項式計算(POLY),具有大尺寸數論變換(NTTs),另一個用於執行橢圓曲線(ECs)上的多標量乘法(MSM)。PipeMSM 是用於在 FPGA 上實現的流水線設計 MSM 算法。
基於 FPGA 的 ZKP 硬體加速器設計:包括多個 FFT(快速傅里葉變換)單元和 FFT 操作的分解,多個 MAC(乘加電路)單元,以及多個 ECP(橢圓曲線處理)單元,以減少計算開銷。基於 FPGA 的 zk-SNARK 設計減少了證明時間約 10 倍。
Bulletproof 協議的硬體加速:通過 CPU-GPU 協作框架和 GPU 上的並行 Bulletproofs 實現(Čapko, Vukmirović & Nedić, 2019)。
八、零知識證明的未來發展方向
1. 加速計算環境的發展
零知識證明協議(如 ZKSNARKs 和 ZKSTARKs)在執行過程中通常涉及大量複雜的數學運算,這些運算需要在極短的時間內完成,對計算資源(如 CPU 和 GPU)提出了極高的要求,導致計算複雜性高、計算時間長。此外,生成和驗證零知識證明需要頻繁訪問大容量數據,對內存帶寬提出了高要求。現代計算機系統的內存帶寬有限,無法高效支持如此高頻的數據訪問需求,導致性能瓶頸。最終,高計算負載導致高能耗,尤其是在區塊鏈和去中心化應用中,需要持續進行大量證明計算時。因此,儘管軟體優化方案可以部分緩解這些問題,但由於通用計算硬體的物理限制,難以達到硬體加速的高效率和低能耗水平。混合解決方案在保持靈活性的同時,可以實現較高的性能提升 (Zhang etal., 2021)。
ZK-ASIC(專用集成電路)
2020 年期間多個項目出現,旨在通過硬體如 GPU 或者 FPGA 加速優化零知識證明(ZKP)的生成和驗證過程,提高效率 (Filecoin, 2024; Coda, 2024;Gpu groth 16 prover, 2024; Roy et al., 2019; Devlin, 2024 ;Javeed& Wang, 2017)。
2021 年:Zhang 等人提出了一種基於流水線架構的零知識證明加速方案,利用 Pippenger 算法優化多標量乘法(MSM),通過「解卷」快速傅里葉變換(FFT)減少數據傳輸延遲 (Zhang etal., 2021)。
ZKCoprocessor(協處理器)
Axiom(2022)提出 ZKCoprocessor 概念,即 ZK 協處理器。協處理器是指增強 CPU 並提供浮點運算、加密運算或圖形處理等專門操作的單獨晶片。儘管隨著 CPU 變得越來越強大,該術語已不再常用,但 GPU 仍可視為 CPU 的一種協處理器,尤其是在機器學習背景下。
ZK 協處理器這一術語將物理協處理器晶片的類比擴展到區塊鏈計算,允許智能合約開發人員無狀態地證明現有鏈上數據的鏈下計算。智能合約開發者面臨的最大瓶頸之一仍然是鏈上計算的高昂成本。由於每項操作都要計算 gas,因此複雜應用邏輯的成本很快就會變得不可行。ZK 協處理器為鏈上應用引入了一種新的設計模式,消除了必須在區塊鏈虛擬機中完成計算的限制。這使應用程序能夠訪問更多數據並以比以前更大的規模運行(Axiom, 2022)。
2. ZKML 的提出和發展
ZKML 的概念
零知識機器學習(Zero-KnowledgeMachine Learning, ZKML)是將零知識證明(ZKP)技術應用於機器學習中的一個新興領域。ZKML 的核心思想是允許在不泄露數據或模型細節的情況下驗證機器學習計算結果。這不僅可以保護數據隱私,還能確保計算結果的可信性和正確性 ( Zhang etal., 2020 )。
ZKML 的發展
2020 年,張學者等人在 2020 年的 CCS 會議上首次系統地提出了 ZKML 的概念,展示了如何在不泄露數據或模型細節的情況下進行決策樹預測的零知識證明。這為 ZKML 奠定了理論基礎。
2022 年,Wang 和 Hoang 進一步研究並實現了 ZKML,並提出了一種高效的零知識機器學習推理管道,展示了如何在現實應用中實現 ZKML。研究表明,儘管 ZKP 技術複雜,但通過合理的優化,可以在保證數據隱私和計算正確性的同時,達到可接受的計算性能。
3.ZKP 擴容技術相關發展
ZKThreads 的概念提出
2021 年,StarkWare 提出了 ZKThreads 的概念,旨在結合零知識證明(ZKP)和分片技術,為去中心化應用(DApps)提供可擴展性和定製性,而不會產生碎片化問題。ZKThreads 通過在基礎層直接回退,確保每一步的實時性,從而提高了安全性和可組合性。
ZKThreads 的主要在單鏈結構,rollup 流動性問題,和 Proto-Danksharding 三個方面進行了優化。
單鏈解決方案:在傳統的單鏈架構中,所有交易都在一條鏈上進行處理,導致系統負載過重,擴展性差。ZKThreads 通過將數據和計算任務分配到多個分片中,顯著提升了處理效率。
ZK-rollups 解決方案:雖然 ZK-rollups 已經顯著提高了交易處理速度和降低了成本,但它們通常是獨立運行的,導致流動性碎片化和互操作性問題。ZKThreads 提供了一個標準化的開發環境,支持不同分片之間的互操作性,解決了流動性碎片化的問題。
Proto-Danksharding 技術:這是以太坊的一種內部改進方案,通過暫存數據塊來降低 zk-rollups 的交易成本。ZKThreads 在此基礎上進一步改進,通過更高效的分片架構,減少了對臨時數據儲存的依賴,提高了系統的整體效率和安全性(StarkWare, 2021)。
ZK Sharding 的概念提出
此後,在 2022 年,NilFoundation 提出了 ZK Sharding 的概念,旨在通過結合零知識證明(ZKP)和分片技術,來實現以太坊的擴展性和更快的交易速度。這一技術旨在將以太坊網路分成多個部分,以更便宜和更高效的方式處理交易。該技術包括 zkSharding,利用零知識技術生成證明,確保跨不同分片的交易在提交到主鏈之前是有效的。這種方法不僅提升了交易速度,還減少了鏈上數據的碎片化問題,確保了經濟安全性和流動性。
4. ZKP 互操作性的發展
ZK State Channels
2021 年,ZK StateChannels 的概念由 Virtual Labs 提出,結合了零知識證明(ZKP)和狀態通道技術,旨在通過狀態通道實現高效的鏈外交易,同時利用零知識證明來確保交易的隱私和安全。
ZK State Channels 替代的原有方案
1. 傳統狀態通道(StateChannels):
原有方案:傳統狀態通道允許兩個用戶通過鎖定資金在智能合約中進行點對點(P2P)交易。由於資金已被鎖定,用戶之間的簽名交換可以直接進行,不涉及任何 gas 費用和延遲。然而,這種方法需要預定義的地址,且通道的開閉需要鏈上操作,限制了其靈活性。
替代方案:ZK StateChannels 提供了無限參與者的支持,允許動態進入和退出,不需要預定義用戶地址。此外,通過零知識證明,ZK StateChannels 提供了即時的跨鏈訪問和自驗證的證明,解決了傳統狀態通道的靈活性和擴展性問題。
2. 多鏈支持:
原有方案:傳統狀態通道通常僅支持單一鏈上的交易,無法實現跨鏈操作,限制了用戶的操作範圍。
替代方案:ZK StateChannels 通過零知識證明技術,實現了跨鏈的即時交易和資產流動,無需中間橋接,極大地提升了多鏈互操作性。
3. 預定義地址限制:
原有方案:在傳統狀態通道中,交易參與者的地址必須在通道創建時預定義,如果有新的參與者加入或離開,通道必須關閉並重新打開,這增加了操作複雜性和費用。
替代方案:ZK StateChannels 允許動態加入和退出,新的參與者可以隨時加入現有通道,而不影響當前用戶的操作,極大地提高了系統的靈活性和用戶體驗。
4.ZK Omnichain InteroperabilityProtocol
2022 年,ZKOmnichain Interoperability Protocol 由 Way Network 提出,旨在實現基於零知識證明的跨鏈資產和數據互操作性。該協議通過使用 zkRelayer、ZK Verifier、IPFS、Sender 和 Receiver 實現全鏈通信和數據傳輸。
Omnichain 項目專注於跨鏈互操作性,旨在提供一個低延遲、安全的網路,連接不同的區塊鏈。它通過引入標準化的跨鏈交易協議,使得各區塊鏈之間的資產和數據可以無縫轉移。這種方法不僅提高了交易的效率,還確保了跨鏈操作的安全性。
Way Network 可以看作是 Omnichain 概念的一種具體實現,特別是在使用零知識證明技術來增強隱私性和安全性方面。Way Network 的技術架構使得它能夠在保持去中心化和高效性的同時,實現鏈間的無縫互操作。
總結來說,Omnichain 提供了跨鏈互操作性的總體框架,而 Way Network 則通過零知識證明技術,為這一框架提供了更強的隱私保護和安全性。
九、結論
本文對零知識證明(ZKP)技術及其在區塊鏈領域的最新發展和應用進行了全面的文獻綜述。我們系統地審查了區塊鏈環境中的 ZKP,調查了適用於區塊鏈和可驗證計算的最先進的零知識論證方案,並探討了它們在匿名和保密交易以及隱私智能合約中的應用。本文列舉了這些經過學術同行評審的方案和方法的優缺點,提供了這些方案的實際評估和比較的參考資料,強調了開發人員在選擇特定用例的合適方案時需要具備的技能和知識。
此外,本文還展望了零知識證明在硬體加速、區塊鏈擴展性、互操作性和隱私保護等方面的未來發展方向。通過對這些最新技術和發展趨勢的詳細分析,本文為理解和應用零知識證明技術提供了全面的視角,展示了其在提升區塊鏈系統效率和安全性方面的巨大潛力。同時,這項研究為後續關於 ZK 項目投資的研究奠定了堅實的基礎。
參考文獻
暢行幣圈交易全攻略,專家駐群實戰交流
▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群)
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!
- 加入鉅亨買幣LINE官方帳號索取免費課程
- 掌握全球財經資訊點我下載APP
文章標籤
上一篇
下一篇