原文作者:@renkingeth
摘要
零知識證明(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,MicaliRackoff, 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 等人總結的零知識證明的定義,是一種特殊的交互式證明,其中驗證者在驗證過程中不會獲得除語句真值外的任何額外信息;並且提出了三個基本特性包括:
完整性(completeness):如果論證是真實的,誠實的證明者可以說服誠實的驗證者這一事實;
可靠性(soundness):如果證明者不知道聲明內容,他只能以微不足道的機率欺騙驗證者;
零知識性(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)可以分為三個階段:
設定
計算
驗證
設定階段使用計算函數,將安全參數轉換為公共知識(證明者和驗證者均可取得),通常編碼在一個共同參考字串(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 和 三人一起共同提出了第一個適用於任何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 電路需要大量的「逆向思考」:「如果一個計算的聲稱輸出是真實的,則輸出必須滿足一定的要求。
問題表示:首先將待證明的問題如密碼學雜湊函數的計算過程,轉換為電路的形式。這包括將計算步驟分解為電路中的基本單元,如閘和連線。
電路最佳化:透過技術手段如閘合併和常數折疊,優化電路設計,減少所需的閘門數量和計算步驟,進而提高系統的運作效率和反應速度。
轉換為多項式表示:為適配零知識證明技術,將最佳化後的電路進一步轉換為多項式形式。每個電路元件和連接都對應於特定的多項式約束。
產生公共參考字串(CRS):在系統初始化階段,產生包括證明金鑰和驗證金鑰在內的公共參考字串,以供後續的證明產生和驗證過程使用。
證明產生與驗證:證明者根據其私有輸入和CRS,在電路上執行計算,產生零知識證明。驗證者則可以根據公開的電路描述和CRS,驗證證明的正確性,而無需了解證明者的私有資訊( Chaidos, 2017)。
零知識證明電路設計涉及將特定的計算過程轉化為電路表示,並透過建立多項式限制來確保計算結果的準確性,同時避免洩露任何額外的個人資訊。在電路設計中,關鍵任務是優化電路的結構並產生有效的多項式表示,這是為了提升證明產生與驗證的效率。透過這些步驟實施,零知識證明技術能夠在不洩露額外資訊的前提下,驗證計算的正確性,確保了隱私保護與資料安全性的雙重需求得到滿足( Chaidos, 2017)。
4. 潛在的缺陷與挑戰
弊端包括:
電路複雜性與規模:複雜計算需要龐大的電路,導致證明產生和驗證的計算成本顯著增加,尤其是在處理大規模資料時;
優化難度:儘管技術手段(如閘合併、常數折疊等)可以優化電路,但設計和優化高效能電路仍需要深厚的專業知識;
特定運算任務的適應性:不同運算任務需要不同的電路設計,為每個特定任務設計高效率電路可能耗時且難以推廣;
加密演算法實現難度:實現複雜的密碼學演算法(如雜湊函數或公鑰加密)可能需要大量的邏輯門,使電路設計和實作變得困難;
資源消耗:大規模電路需要大量硬體資源,可能在功耗、熱量和物理空間等方面遇到實際硬體實現的瓶頸(Goldreich, 2004 ;Chaidos, 2017 ;Partala, Nguyen Pirttikangas, 2020 ;Sun 等, 2021 )。
解決方案和改進方向:
電路壓縮技術:透過研究和應用高效的電路壓縮技術,減少所需邏輯閘數量和計算資源;
模組化設計:透過模組化設計電路,提高電路設計的多工性和可擴充性,減少為不同任務重新設計電路的工作量;
硬體加速:利用專用硬體(如 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
這些ZKVM 專門設計用於與以太坊虛擬機器(EVM)相容,能夠直接運行以太坊的字節碼。
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 範式的優缺點
優點:
利用現有的ISA:例如,RISC-V 和EVM 指令集,可以利用現有的編譯器基礎設施和工具鏈,無需從頭開始建立基礎設施。可以直接呼叫現有的編譯器,將高層語言編寫的證人檢查程式轉換為ISA 的彙編程式碼,並受益於先前的審核或其他驗證工作。
單一電路支援多程序:zkVM 允許一個電路運行所有程序,直到達到某個時間限制,而其他方法可能需要為每個程序重新運行前端。
重複結構的電路:前端輸出具有重複結構的電路,針對這些電路的後端可以更快地處理(Arun, Setty Thaler, 2024 ;Zhang et al., 2023) 。
缺點:
通用性帶來的開銷:為了支援所有可能的CPU 指令序列,zkVM 電路需要為其通用性付出代價,導致電路規模和證明成本的增加。
高成本操作:在zkVM 中實現某些重要操作(如加密操作)非常昂貴。例如,ECDSA 簽章驗證在真實CPU 上需要100 微秒,在RISC-V 指令上則需數百萬條指令。因此,zkVM 專案包含手動最佳化的電路和查找表,用於計算特定功能。
證明成本高:即使對於非常簡單的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):
EVM-EVM-compatibility 智慧合約功能等級相容,如STARKWARE, zkSync
EVM-equivalence,EVM 指令層級相容(等同),如polygen-Hrmez,scroll
基於零知識的以太坊系統改進解決方案請見圖1
圖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 計畫投資的研究奠定了堅實的基礎。