零知識證明讓一方能夠向另一方證明某個陳述為真,而不會洩露除陳述本身真實性之外的任何資訊。它是區塊鏈隱私、可擴展的 rollup 以及越來越多的身分驗證系統背後的密碼學技術。
摘要
- 零知識證明允許證明者說服驗證者某個計算已正確執行,而不會洩露底層數據,從而在區塊鏈上實現隱私和可擴展性。
- 區塊鏈中使用的兩大類零知識證明是 zk-SNARK(需要初始可信設定儀式)和 zk-STARK(不需要可信設定,但會產生較大的證明)。
- 以太坊第二層 rollup(如 zkSync、Scroll 和 Polygon zkEVM)使用零知識證明將數千筆交易壓縮為單一證明,並在主鏈上驗證,從而將 gas 成本降低 90% 或更多。
- Vitalik Buterin 在 2025 年底引入了 GKR 協議,以加速以太坊零知識證明的驗證,旨在使該技術在規模上適用於日常使用。
- 零知識證明在數學上是嚴謹的,但並非魔法。它們依賴於特定的密碼學假設,需要大量的計算資源來生成,並且在生產環境中大規模部署還不到三年。
零知識證明的標準解釋使用洞穴類比。阿里巴巴知道打開圓形洞穴內一扇門的暗語。他可以透過從一側進入並從另一側出來來證明他知道這個詞,按需進行,而無需大聲說出這個詞。在足夠多次成功的演示之後,驗證者在統計上確信阿里巴巴知道這個秘密。
這個類比是正確的,但不完整。它捕捉了直覺,但錯過了機制。在實踐中,零知識證明與洞穴或門無關。它們涉及多項式承諾、橢圓曲線配對,以及允許一方將計算編碼為一組約束,而另一方驗證這些約束是否滿足而不了解滿足它們的值的數學性質。
本文解釋了零知識證明的作用、兩種主流證明系統如何運作、它們在生產中的部署位置,以及它們無法做到的事情。如果您聽說零知識證明解決了區塊鏈的所有隱私和可擴展性問題,那麼現實更為具體且更有趣。
三個性質
零知識證明必須滿足三個數學性質。完備性意味著如果陳述為真,且證明者和驗證者都遵循協議,驗證者將始終接受證明。健全性意味著如果陳述為假,任何作弊的證明者都無法說服驗證者接受它,除非機率可以忽略不計。零知識性意味著驗證者除了陳述是否為真之外,什麼也學不到。
第三個性質是違反直覺的。你怎麼能在不了解計算的情況下驗證它呢?答案在於證明系統的結構。證明者將計算編碼為多項式方程,使用密碼學承諾方案對該多項式進行承諾,然後回應驗證者的隨機挑戰。驗證者檢查回應與承諾是否匹配,而從未看到多項式本身。
在非互動式零知識證明(區塊鏈中使用的類型)中,隨機挑戰被應用於承諾的哈希函數所取代。這被稱為 Fiat-Shamir 啟發式,它允許證明者生成整個證明,而無需任何來回通信。由此產生的證明是一個緊湊的數據字符串,任何人都可以獨立驗證。
數學基礎依賴於某些計算問題的難度。對於 zk-SNARK,安全性依賴於在橢圓曲線上計算離散對數的難度。對於 zk-STARK,安全性依賴於哈希函數的抗碰撞性,這被認為是一個較弱且更保守的假設。如果任一假設被證明是錯誤的,相應的證明系統就會崩潰。這就是為什麼在 zk-SNARK 和 zk-STARK 之間的選擇涉及的不僅僅是證明大小和驗證速度的權衡。
zk-SNARK:可信設置,小證明
zk-SNARK 代表零知識簡潔非互動式知識論證。關鍵區別在於「簡潔」一詞:zk-SNARK 證明非常小,通常只有幾百字節,無論底層計算多麼複雜,都能在毫秒內完成驗證。
這種簡潔性的代價是可信設置。大多數 zk-SNARK 構造需要初始儀式,生成一組結構化參考字串。這些字串由證明者和驗證者共同使用。如果用於生成它們的隨機值未被妥善銷毀,任何保留這些值的人都能創建看似有效的虛假證明。這有時被稱為「有毒廢物」。
現代可信設置儀式使用多方計算協議,數百或數千名參與者各自貢獻隨機性。安全保證是,只要至少有一位參與者誠實地銷毀其隨機貢獻,設置就是安全的。Zcash 以其 Powers of Tau 儀式開創了這種方法,後續項目對其進行了改進。
較新的 zk-SNARK 構造(如 PLONK 及其變體)使用通用且可更新的可信設置,意味著相同的設置可用於不同電路,且額外參與者可以隨時間加強設置,而無需從頭開始。這緩解了可信設置的擔憂,但並未完全消除。根本的權衡仍然存在:以一次性信任假設換取更小、更快的證明。
zk-STARK:無需可信設置,證明較大
zk-STARK 代表零知識可擴展透明知識論證。「透明」意味著無需可信設置。參考字串由公開可驗證的隨機性生成,完全消除了有毒廢物問題。「可擴展」指的是證明時間隨計算規模準線性增長,使 STARK 適合非常大的計算。
權衡在於證明大小。zk-STARK 證明通常為數十至數百千字節,而 zk-SNARK 僅為幾百字節。在數據存儲昂貴的區塊鏈上,這種差異很重要。STARK 的驗證時間也稍長,但仍足以實際使用。
StarkWare(Starknet 背後的公司)一直是 zk-STARK 的主要商業倡導者。他們的論點是,透明性加上僅依賴哈希函數而非橢圓曲線所帶來的量子抗性,使 STARK 成為更好的長期選擇,即使以更大的證明為代價。量子計算機是否會在相關時間範圍內真正威脅橢圓曲線密碼學尚存爭議,但保守的安全姿態吸引了那些長期穩健性比即時效率更重要的應用。
ZK Rollup:擴展應用
當今區塊鏈中零知識證明最重要的實際應用是 ZK Rollup。Rollup 在鏈下執行交易,將它們批量處理,生成一個零知識證明以證明所有交易有效,然後僅將證明和壓縮的交易數據發佈到主鏈。主鏈驗證證明,其成本比逐筆執行交易便宜數個數量級。
這種架構使以太坊第 2 層網絡能夠以第 1 層單次證明驗證的成本處理數千筆交易。實際上,像那些基於以太坊基礎設施構建的 ZK Rollup,與直接在主網上執行相同交易相比,可將 gas 成本降低 90% 或更多。
截至2026年中,已投入生产或处于后期开发阶段的主要ZK Rollup项目包括zkSync Era、Scroll、Polygon zkEVM、Linea和Taiko。每个项目使用不同的证明系统,并在EVM兼容性、证明速度和去中心化之间做出不同的权衡。zkSync使用自定义虚拟机和基于PLONK的证明。Scroll旨在使用zk-SNARK证明器实现字节级EVM等效。Polygon zkEVM在递归架构中结合使用STARK和SNARK证明。
这些项目之间的竞争正在推动证明生成的快速创新。在过去两年中,证明时间从几小时降至几分钟,再降至几秒。Vitalik Buterin引入的GKR协议用于以太坊代表了朝着使ZK证明验证成为常规操作而非计算瓶颈迈出的又一步。
Rollup之外的隐私应用
零知识证明最初是为隐私而开发的,而非可扩展性。Zcash于2016年推出,是第一个使用zk-SNARK进行私人交易的主要区块链。在屏蔽的Zcash交易中,发送方、接收方和金额均对公众隐藏,而证明则保证没有凭空创造硬币,也没有发生双重支付。
隐私应用不仅限于金融交易。零知识证明可以验证身份属性,而无需透露底层数据。用户可以在不透露出生日期的情况下证明自己年满18岁,在不透露护照号码的情况下证明自己是特定国家的公民,或者在不透露颁发机构的情况下证明自己持有特定凭证。
Worldcoin和Polygon ID等项目已实施基于ZK的身份验证系统。Worldcoin使用零知识证明来验证一个人已被其虹膜扫描设备扫描过,而无需将扫描与任何特定身份关联。以太坊生态系统项目越来越多地将基于ZK的身份作为与金融交易并行的原语集成。
隐私用例面临监管阻力。多个司法管辖区的金融监管机构表示担心,完全私密的交易可能助长洗钱、逃避制裁和恐怖主义融资。隐私作为一项基本权利与透明度作为监管要求之间的紧张关系是加密货币领域定义性的政策辩论之一,而零知识证明正位于其中心。
零知识证明不涵盖的内容
零知识证明保证计算完整性:即特定计算被正确执行。它们不保证计算的输入是正确的,不保证计算值得执行,也不保证围绕证明构建的系统没有错误。
ZK Rollup可以证明批次中的所有交易均符合Rollup的规则。它不能证明规则本身是正确的。Rollup智能合约或证明电路中的错误可能会为无效的状态转换生成有效证明。几个ZK Rollup项目在审计和测试网部署期间披露并修补了其电路中的关键错误。
零知识证明也不能消除对数据可用性的需求。在ZK Rollup中,证明告诉主链状态转换是有效的,但用户仍然需要访问底层交易数据来重建状态并验证其资金完好无损。如果没有数据可用性,用户必须信任Rollup运营商,这在一定程度上违背了证明的目的。
生成证明的计算成本很高。虽然验证成本低廉,但证明生成需要大量硬件。在生产规模上运行ZK证明器通常需要具有数百GB内存和专用硬件加速器的服务器。这种成本造成了一种自然的中心化力量,即谁有能力运行证明器,即使证明本身可以被任何人验证。
評估ZK專案的實用檢查
在評估一個聲稱使用零知識證明的專案時,有幾個問題可以區分嚴肅的實作與行銷手法。
首先,詢問證明系統是否經過獨立稽核。電路錯誤可能造成健全性漏洞,使無效的證明被接受為有效。未經多家獨立密碼學公司稽核的專案應謹慎對待。
其次,詢問證明系統是否使用可信設定,如果是,典禮是如何進行的。只有少數參與者的可信設定,或由單一公司在沒有外部驗證的情況下進行的設定,代表著重大的信任假設。
第三,檢查專案是否發布其證明驗證合約,以及這些合約是否已在鏈上驗證。如果驗證在鏈下進行,或透過由多重簽名控制的可升級代理合約進行,那麼零知識證明可能無法提供使用者期望的安全保證。
第四,檢視資料可用性解決方案。如果專案未將交易資料發布在鏈上或發布到可信的資料可用性層,使用者就無法獨立驗證狀態,必須信任營運者。這與零知識證明應實現的去信任化有重大出入。
常見問題
什麼是零知識證明(用簡單的術語解釋)?
零知識證明是一種證明你知道某件事而不洩露你所知道內容的方式。在區塊鏈中,它允許一台電腦向另一台電腦證明一組交易是有效的,而無需顯示這些交易的細節。這實現了隱私和可擴展性。
zk-SNARKs和zk-STARKs有什麼區別?
zk-SNARKs產生非常小的證明,通常只有幾百位元組,驗證速度快,但需要一次性的可信設置儀式。zk-STARKs產生較大的證明,通常有數十千位元組,但不需要任何可信設置,並且被認為能抵抗量子計算攻擊。兩者都實現了零知識可驗證計算的目標。
ZK Rollups如何降低以太坊的Gas費用?
ZK Rollups在以太坊主鏈之外執行交易,將它們批量處理,並生成一個零知識證明,證明所有交易都是有效的。只有證明和壓縮數據被發佈到以太坊。驗證單個證明比執行數千筆單獨交易要便宜得多,導致Gas費用降低90%或更多。
零知識證明能抵抗量子攻擊嗎?
這取決於證明系統。zk-STARKs依賴於哈希函數,被認為能抵抗量子電腦。zk-SNARKs依賴於橢圓曲線密碼學,理論上可能被足夠強大的量子電腦破解。然而,能夠破解橢圓曲線的實用量子電腦目前還不存在,可能數十年內也不會出現。
零知識證明能讓所有區塊鏈交易都變成私密的嗎?
技術上可以,但實際上存在權衡。為每筆交易生成證明會增加計算成本和複雜性。完全私密的交易在要求金融透明的司法管轄區也面臨監管挑戰。像Zcash這樣的項目提供可選的隱私,而大多數ZK Rollups主要將該技術用於可擴展性而非隱私。
什麼是可信設置,為什麼它很重要?
可信設置是一次性的儀式,用於生成某些證明系統所需的加密參數。如果儀式中使用的隨機值沒有被妥善銷毀,有人可能創建虛假證明。現代儀式使用多方計算,數百名參與者貢獻隨機性,只要至少有一名參與者是誠實的,設置就是安全的。
哪些區塊鏈使用零知識證明?
Zcash是第一個使用零知識證明進行私密交易的主要區塊鏈。以太坊通過二層Rollups使用ZK證明,包括zkSync、Scroll、Polygon zkEVM、Linea和Starknet。Mina Protocol使用遞迴ZK證明來維持固定大小的區塊鏈。其他幾個鏈也將ZK技術用於特定功能,如身份驗證或跨鏈消息傳遞。
生成零知識證明需要多長時間?
證明生成時間取決於計算的複雜性和使用的硬體。對於包含數千筆交易的ZK Rollup批次,目前使用專門的硬體生成證明需要幾秒到幾分鐘。兩年前,同樣的證明需要幾個小時。趨勢是通過硬體加速和演算法改進來實現更快的證明生成,目標是即時生成證明。







