要點總結

  • 零知識證明(ZKP)是一種加密方法,它使一方能夠在不泄露任何底層數據的情況下證明某個陳述爲真。

  • ZKP 通過允許在不暴露諸如錢包地址或金額等敏感信息的情況下驗證交易,從而增強區塊鏈的隱私性和安全性。

  • zk-SNARKs 和 zk-STARKs 是當今使用的兩種主要零知識證明類型,它們在速度、證明大小以及是否需要可信設置等方面各有權衡。

  • zk-rollups 使用 ZKP 將大量交易在鏈下進行批處理,並在鏈上提交一份單獨的加密證明,從而提高吞吐量並降低費用。

  • 真實世界中的 ZKP 應用包含私密交易、身分驗證、去中心化金融(DeFi)以及跨鏈互通性。

Binance Academy courses banner

簡介

區塊鏈是以透明為核心建構的。任何在公有網路上的交易,都可被任何願意查看的人看見。這種透明度帶來信任,但也引出一個根本性的矛盾:有時你需要在不暴露底層資料的情況下去驗證某些事情。

零知識證明正是解決這個問題的方法。它讓一方(稱為證明者,prover)能在不揭露任何超出那個單一事實之外的資訊前提下,說服另一方(稱為驗證者,verifier),證明某個敘述為真。名稱直接來自這個概念:驗證者對底層資料獲得的知識是零,但仍然能夠確信該主張是有效的。

自 1980 年代起,ZKPs 在密碼學中一直是一個理論概念;但直到 2010 年代,才在區塊鏈中具備可行的實作。自那之後,它們成為該領域中最積極開發的技術之一,支撐著隱私幣、第二層(Layer 2)擴容解決方案與身分系統。

零知識證明如何運作

從本質上看,零知識證明是一種數學協議:由證明者產生一份證明,該證明符合驗證者可檢查的一組條件。驗證者能確認該證明是正確的,但卻無法逆向推導出原始輸入內容。

一個經典的比喻是:中間有一扇上鎖的門的隧道。知道門的密碼的證明者可以從一側一致地進入,並從另一側出去。從外面觀察的驗證者能看到證明,但卻永遠不會得知密碼本身。

要讓 ZKP 有效,它必須滿足三個特性。完整性(completeness)代表誠實的證明者總能說服驗證者。健全性(soundness)代表即使證明者不誠實,也不能讓驗證者相信一個錯誤的敘述,除非機率極低。零知識(zero-knowledge)代表驗證者只知道敘述是否為真,除此之外不會獲得任何資訊。

在實務上,多數區塊鏈中的 ZKP 都是非互動式(non-interactive):證明者會把證明作為一段單獨的資料產出,而驗證者在不需要來回交換的情況下完成檢查。這使得 ZKP 適合用於鏈上智慧合約與第二層協議。

zk-SNARKs 與 zk-STARKs

在區塊鏈中最常用的兩種零知識證明類型是 zk-SNARKs 與 zk-STARKs。兩者都能讓離鏈運算在鏈上驗證,但技術路線不同。

zk-SNARKs

零知識簡潔非互動式知識論證(zk-SNARK)證明具有體積小、驗證快的特性,這使它在早期的 ZKP 應用(例如 Zcash 的私密交易與以太坊智慧合約驗證)中受到歡迎。

主要缺點是 zk-SNARKs 需要可信設定(trusted setup),即生成一組加密參數的儀式。如果設定遭到破壞,攻擊者可能有機會產生欺詐性的證明。許多專案會使用多方計算(multi-party computation)儀式來降低這種風險。

zk-STARKs

零知識可擴展透明知識論證(zk-STARK)證明不需要可信設定,因而移除了受信設定(trusted-setup)風險。它們也被認為比 zk-SNARKs 更能抵抗量子運算攻擊。權衡在於 zk-STARK 證明的體積更大,可能導致更高的鏈上驗證成本。StarkNet 是一個在規模化使用 zk-STARK 的著名量產網路(production network)。

zk-Rollups 與區塊鏈擴容

ZKP 最重要的應用之一是 zk-rollups,它是一種用於區塊鏈的第二層(Layer 2)擴容解決方案。zk-rollup 會在離鏈處理數百筆交易,將它們打包成一個批次,並提交一份單獨的 ZKP 到主鏈以證明這些交易都是有效的。

這種做法可以大幅提升交易吞吐量,同時繼承底層(base layer)的安全性。主要的替代方案是樂觀式(optimistic)rollups,它假設交易是有效的,除非遭到挑戰,這會引入提款延遲。zk-rollups 不存在這種延遲,因為在發布當下就以加密方式證明其有效性。

以太坊的 EIP-4844(於 2024 年 3 月啟用)引入「blobs(資料塊)」作為第 1 層與第 2 層 rollup 資料的專用資料儲存層。這大幅降低了在鏈上張貼 ZKP 批次(batches)的成本,使得 zk-rollups 對最終使用者而言顯著更便宜。目前包含 zkSync Era、Polygon zkEVM、Scroll 與 Taiko 在內的多個 zkEVM 網路已在生產環境中運作。

零知識證明的使用案例

私密交易

ZKPs 可以在公有區塊鏈上隱藏寄件者地址、收件者地址與交易金額。Zcash 率先以使用 zk-SNARKs 的「shielded transactions(隱蔽交易)」實現這一點,讓使用者能夠進行交易而不向公開帳本揭露其財務活動。

數位身分驗證

ZKPs 讓使用者在不揭露底層文件的前提下,證明自己符合某項要求,例如年滿 18 歲或持有有效憑證。這在去中心化身分系統、KYC 合規與存取控制中都有應用。

DeFi 隱私

去中心化金融協議可以使用 ZKPs 來提供私密借貸與交易。使用者可以證明自己擁有足夠的抵押品,或符合借貸條件,而不必揭露其完整錢包歷史或餘額。

跨鏈互通性

ZKPs 能在不需要完整節點的情況下,驗證另一條區塊鏈的狀態。這使得可以建構跨鏈橋與互通性層,繼承加密安全性,而非依賴受信任的中介。

零知識證明的限制

ZKPs 並非解決所有隱私與擴容挑戰的完整方案。生成 ZKP 需要大量運算,這可能意味著驗證方(provers)需要更高的硬體需求。隨著驗證(proving)軟體日益成熟,這情況正在改善,但對於較小的網路來說仍是需要考量的因素。

zk-SNARKs 的可信設定(trusted-setup)需求,會引入某種受信假設,而部分開發者與使用者可能希望避免。此外,雖然 ZKPs 在其健全性(soundness)保證上是機率性的,也就是通過驗證的錯誤證明機率極低但不為零,這通常在實務上被認為是可接受的。

最後,ZKP 技術仍在快速成熟中。稽核 ZKP 電路(circuits)很複雜,並需要專門的專業知識。已在多個 ZKP 實作中發現了若干引人注目的重大漏洞,這凸顯了在部署到正式的生產系統之前,必須進行嚴格審查的重要性。

常見問題(FAQ)

用最簡單的方式來說,什麼是零知識證明?

零知識證明是一種能讓你「證明你知道某些東西」但不揭露那是什麼的方法。證明者會讓驗證者相信某個敘述是真的,而驗證者除了知道該主張成立之外,並不獲得任何其他資訊。

zk-SNARKs 與 zk-STARKs 的差異是什麼?

zk-SNARKs 產生的證明更小、驗證速度更快,但需要可信設定。zk-STARKs 不需要可信設定,且更能抵禦量子攻擊,但證明的大小較大。兩者都被用於正式運作的區塊鏈系統。

零知識證明是如何用在以太坊的擴容上?

zk-rollups 會使用零知識證明將大量離鏈交易打包,並提交一份單獨的證明到以太坊做驗證。這能提升吞吐量並降低交易費用,同時維持以太坊底層(base layer)的安全性。

零知識證明完全安全嗎?

ZKPs 提供非常強大的加密保證,但並非萬無一失。zk-SNARKs 的可信設定步驟引入了受信假設。部分專案中也已發現 ZKP 電路的實作漏洞。就像任何加密系統一樣,安全性取決於正確實作以及持續的審查。

結語

零知識證明已從理論概念,發展成現代區塊鏈基礎建設的核心組件。它們能帶來隱私、提升擴容能力,並使 DeFi、身分與互通性等領域出現新的應用。

這項技術仍在快速演進。zkEVM 網路目前已在以太坊上線,證明成本正在下降,而且基於 ZKP 的新應用也會定期被部署。未來幾年,ZKPs 很可能在區塊鏈如何處理隱私與擴容方面扮演越來越核心的角色。

延伸閱讀

  • zk-SNARKs 與 zk-STARKs:解析

  • 什麼是 Zk-Rollups?第 2 層擴容技術

  • 樂觀式(Optimistic) vs. 零知識(Zero-Knowledge)Rollups:差異在哪?

  • 區塊鏈第 1 層 vs. 第 2 層的擴容解決方案

  • 以零知識證明提升加密透明度


免責聲明:本內容僅以「現況提供」的方式提供一般資訊與教育用途,且不作任何形式的聲明或保證。不得被視為財務、法律或其他專業建議,也不意圖推薦購買任何特定產品或服務。你應向適當的專業顧問尋求自己的建議。若內容由第三方貢獻者提供,請注意該等觀點屬於第三方貢獻者,並不一定反映 Binance Academy 的觀點。數位資產價格可能波動。你的投資價值可能下跌或上漲,你可能無法取回所投資的金額。你對投資決策自行負責,而 Binance Academy 不對你可能遭受的任何損失承擔責任。欲了解更多資訊,請參閱我們的使用條款(Terms of Use)、風險警示(Risk Warning)以及 Binance Academy 條款(Binance Academy Terms)。