#S3–26 ZK 零知識證明與發展可能

Bill Yang
Aug 17, 2022

基本上,我覺得這個題目有點難懂,但似乎又很重要。因此還是非聊聊不可。本集節目要討論的就是「零知識證明」。零知識證明(Zero-Knowledge Proof,ZKP)指的是證明者能夠在不向驗證者提供任何有用資訊的情況下,使驗證者相信某個論點是正確的,允許證明者(Prover)、驗證者(Verifier)證明某項議題的真實性,卻不必洩露除了「議題是真實的」以外的其他任何資訊。舉例來說,我可以使用 ZK 來證明我擁有 HeadDao NFT 的事實,但不需要透露我擁有哪一個、何時買的或是總共花了多少錢。也可以使用 ZK 來證明我從A錢包打一個幣到B錢包的以太坊交易的有效性,而不需要透露錢包的的代幣餘額或發送的金額。

零知識證明技術最初由Shafi Goldwasser,Silvio Micali及Charles Rackoff在1985年提出,早期由於效率和可用性等限制,僅僅是停留在理論層面,並沒有得到廣泛應用。近年來隨著理論研究的不斷突破,區塊鏈技術也在不斷為零知識證明創造實用的機會,零知識證明技術開始逐步走進更多技術人員的視野。

什麼是零知識證明?

最早的 ZK 證明是交互式的。為了證明某事,你必須和驗證者玩一個遊戲。假設有兩個人Vicky和Patty在玩數獨遊戲。Patty告訴Vicky自己有一題很難的數獨遊戲題,問問Vicky想不想試試看。但Vicky又擔心Patty是在拿無解的數獨題目來整她,希望Patty能證明題目有解。這一整個過程就像測謊儀測試,一方提出問題,另一方回答,直到確定真相。過程當中,交互式零知識證明存在明顯的缺陷,例如這必須證明者隨時在線上並等待提問;驗證者如需驗證,需要與證明者進行多次往返。更複雜的是,如果還有其他人比如Tom也想參與,Patty又如何向其他人證明呢?即使Patty通過了Vicky的驗證,Tom也可能不會信任他們,擔心Patty和Vicky聯合起來作弊。顯然,交互式零知識證明應用場景存在一定的限制。

因此,Patty發明了一個非交互式零知識證明機器。Patty為了證明自己沒有作弊,把自己操作的過程與動作拍攝成影片並放到網上。這樣,Vicky和Tom都可以在網上進行觀看、驗證。當然,可能還是有人會認為機器有後門,那麼Patty還需要將機器是如何製造、安裝等等,可能會被懷疑的地方都拍成影片上傳。這一個過程被稱為「可信任的初始設置儀式」。你現在可以生成一個東西,一段數據,作為你的 ZK 證明,你可以將它提交給驗證者,而無需多輪溝通。這些新的 ZK 證明不太像遊戲/儀式/協議,而更像是可以由證明者生成並提交給驗證者的不可偽造物品。

這種非交互式零知識證明機器就是所謂的非交互式零知識證明(Non-Interactive Zero Knowledge,NIZK),而其中zkSNARK(zero-knowledge Succinct Non-interactive ARguments of Knowledge)技術最為典型。zkSNARK的命名幾乎包含其所有技術特徵。zkSNARK用白話來說就是,你理論上可以在不暴露任何隱私的情況下向其他人證明某件事,並且生成的證明體積很小,檢驗成本很低。

ZK 證明有什麼用?

ZK我們了解了,但其實我剛剛在研究ZK的時候,覺得他超級抽象的,到底發明這個東西幹嘛?

隱私

這裡主要有兩個可能的用途,首先就是隱私,例如最近幣圈鬧得沸沸揚揚的Tornado Cash。Tornado Cash 是一種去中心化的非託管協議,藉由打破來源地址和目標地址之間的鏈上鏈接來提高交易隱私。為了保護隱私,Tornado Cash 使用一個智能合約,接受來自一個地址的 ETH 和其他代幣存款,並允許他們提款到不同的地址,也就是以隱藏發送地址的方式將 ETH 和其他代幣發送到任何地址。當你將資金放入池中(也就是存款)時,就會生成私人憑據(隨機密鑰),證明你已執行了存款操作。而後,此私人憑據作為你提款時的私鑰,合約將 ETH 或其他代幣轉移給指定的接收地址,同一用戶可以使用不同的提款地址。透過盡量減少在區塊鏈上進行活動時公開的數據量可以有效的提高隱私性。然而Tornado Cash 幾乎淪為駭客的後花園,經由 Tornado Cash 提供混幣服務,駭客將盜取的加密資產存入智能合約,繼而通過使用密鑰在新地址中轉出「戰利品」,達到洗錢目的。美國財政部最近以它涉嫌幫助某國官方駭客組織清洗從Axie Infinity竊取的部分資金,為由宣布制裁。而零知識證明允許在不透露發送者、接收者或交易金額的情況下驗證交易。其他利用 ZK 證明保護隱私的項目包括IronFish 、Worldcoin和Zcash。

可擴展性

ZK 證明對可擴展性的幫助與零知識的原本用意其實沒什麼關係。目前以太坊每秒大約只能處理 15 筆交易,這與 Visa(1,700 筆交易/秒)和 Twitter (6,000 條推文/秒)還差得遠。如果以太坊真的想成為去中心化的世界計算平台,它需要一個可以擴大容量的解決方案。而ZK證明對可擴展性的幫助就好像是一種專業分工。鏈上和鏈下系統變得專業化,專注於他們最擅長的事情。我們可以使用集中的、高性能的、鏈下系統來快速有效地處理一大堆交易,然後使用去中心化、不可逆的、去信任化的區塊鏈作為記錄這些最終事實的工具。ZK 證明可以做到這一點,這主要要歸功於一個非常神奇的屬性:一旦他們創建了一個證明:「是的,這數十億次計算都被 100% 正確解決了」,驗證者可以確認證明是正確的,而無需自己運行數十億次計算。允許密集計算在鏈下執行,這樣做成本更低,然後創建一個簡潔的證明,表明計算是誠實執行的。證明可以在鏈上發布。這個過程被稱為是「Rollup」中文翻譯就是打包的意思。用戶並不是將所有交易都直接在區塊鏈上進行,而是把一部分交易放在區塊鏈之外,通過第二層協議(Layer 2)在鏈下執行大部分交易。也就是說:每筆交易只有一部分數據放在第一層鏈上,並且由於交易的計算內容不需要在第一層執行,這就極大地釋放了底層區塊鏈的計算能力。所有的 Rollups 中,有兩種主要類型:欺詐證明(Optimistic Rollup)和有效性證明

(ZK Rollups)。事實上,大多數 ZK Rollups 本身不使用 ZK 證明。 ZK Rollups 實際使用的有效性證明(validity proofs)並不能夠隱藏額外資訊。但與其他擴展解決方案相比,ZK Rollups 在交易成本、確認時間和構建信任方面具有大的優勢。ZK Rollups 的交易成本與使用量成反比。因此,加密社群中的許多人將 ZK Rollups 視為 Rollups 的最終解決方案,V神Vitalik Buterin 曾經說:「總的來說,我自己的觀點是,在短期內,Optimistic Rollup可能會在通用 EVM (以太坊虛擬機 Ethereum Virtual Machine )計算方面勝出,而 ZK Rollups可能會在簡單的支付、交換和其他特定應用程式的使用中勝出,但在隨著 ZKSNARK 技術的改進,中長期 ZK Rollups將在所有使用中勝出。」

總結來看,ZK Rollups 仍然是一個新興領域, 甚至連 zkEVMs 都還沒有完全進入主網。但是ZK Rollups 既能擁有 L1 協議的安全特性,又提供了低成本、高吞吐量的交易能力,將能夠發揮區塊鏈去中心化和抗審查的特性以及達成Web2 用戶期望的無縫體驗。此外,隨著目前我們看到許多項目團隊正在努力實現 EVM 兼容性,未來加密領域的開發人員應該能夠更輕鬆地移植應用程式。 zkEVM 非常可能將開啟下一波創新浪潮。

--

--

Bill Yang

Podcast⟪比爾的財經廚房⟫主持人,本節目榮獲Himalaya最佳人氣財經類節目。Spotify 財經類Top 5 Apple podcast 投資類 Top 5