什麼是 ZK 證明,ZK 證明有什麼用
Last updated
Last updated
零知識 (ZK) 證明就像三箭資本的 Su Zhu 和 Kyle Davies一樣,他們出生於上世紀八十年代,但直到最近才成為熱門話題。
你可能聽說過很多關於它們的信息,但 ZK 證明到底是什麼?
你也許了解了基礎知識,但想知道使用 ZK 證明最有前途的項目是什麼?
現在就讓我們通過ZK證明的概述、應用項目和底層技術來回答這些簡單又復雜的問題。
ZK 證明使用密碼學允許某人(證明者)向其他人(驗證者)證明事實是百分百真實的,但除了特定真實性的陳述之外,不會透露任何額外信息。即能保守秘密,又能讓人相信你。
另一個比較通俗的定義是:ZK證明本質上是讓某人證明他們知道或擁有某些東西,而不會洩露他們知道或擁有什麼的任何信息。
也許舉幾個例子會更有助於理解:
可以使用 ZK 證明來證明將Token從賬戶 A 發送到賬戶 B 的以太坊交易的有效性,而無需透露任一賬戶的Token餘額或發送的金額。
ZK 證明在1985 年 MIT 的一篇研究論文中第一次出現。像許多技術一樣,ZK 證明首先引起了大量理論論證,然後在進一步發展和完善後逐漸找到實際運用。
最早的 ZK 證明是交互式的。為了證明某事,你必須和驗證者玩一個問答遊戲。就像測謊儀測試——驗證者不斷對證明者所擁有的“知識”進行一系列提問。通過不停的提問,讓驗證者相信證明者的確知道這些”知識”。但是這樣的方法並不能使人相信證明者和驗證者都是真誠的,因為兩者可以提前串通,以便證明者可以在不知道答案的情況下依然通過驗證。
後來發展到非交互式的。非交互式是證明者現在可以生成一個東西,一段數據,作為他的 ZK 證明提交給驗證者,而無需多輪溝通。這種ZK 證明不太像遊戲/儀式/協議,而更像是可以由證明者生成並提交給驗證者的不可偽造物品,避免了證明者和驗證者串通的可能性。
目前ZK證明有兩個主要的用途:
其他利用 ZK 證明保護隱私的項目有Iron Fish、World coin和前兩天被監管的Tornado Cash。
可擴展性:允許在鏈下執行密集計算,使成本更低,然後創建一個簡潔的證明,表明計算是被誠實執行的,可以在鏈上發布。
鏈上和鏈下各司其職,變得專業化,專注於他們最擅長的事情。我們可以使用集中式、高性能、脫鏈系統快速有效地處理一大堆交易,然後使用去中心化、不可變、去信任的區塊鏈作為記錄誰擁有什麼的最終事實來源。
ZK 證明相對於所有鏈下交易的有效性證明而言計算起來非常小,並且驗證速度非常快。這要歸功於一個幾乎神奇的屬性:一旦他們創建了一個證明說“是的,這數十億次計算都被 100% 證明是正確的”,驗證者可以確認證明是正確的,而無需自己再進行數十億次計算。
有很多 ZK rollup 項目專注於可擴展性,還有一些項目希望同時提供隱私和可擴展性,包括Aztec和Espresso Systems 。
ZK 證明是一種通用技術。過去的幾次區塊鏈牛市無疑推動了對 ZK 研發的投資,但 ZK 證明的第一個實際應用出現在中本聰發布比特幣白皮書之前。鏈下世界中有許多令人興奮的ZK證明應用——比如身份管理、最低年齡驗證、匿名憑證、金融資產的評級和風險評估以及數字投票。
對於鏈上和鏈下應用程序的所有 ZK證明炒作,如果能夠推動技術向前發展出新的用途,那是一件好事。但是這種期望是周期性的。當 ZK證明被炒得火熱的時候,人們給予大量關注,但是當意識到技術也不是 100% 完美的時候,人們的情緒不可避免地會變得冷淡。
前面已經提到了 ZK-rollups 如何運作的:它不需要在以太坊上運行緩慢且收費昂貴的計算,而是在鏈下進行這項工作(即在第 2 層(L2)區塊鏈上):創建一個證明說你誠實地進行了所有交易,然後在以太坊上發布證明。
這對用戶來說實際上是什麼樣的呢?
首先,你找到一個你感興趣的 ZK rollup 項目。每個項目都有自己獨立的應用程序和項目生態系統,所以找一個你喜歡的 DeFi 或 NFT 協議。
假設 L2 在其 L1 結算層使用以太坊。它將在L1以太坊上擁有一個或幾個智能合約,這些合約可以完成一些重要的工作:
存儲有關 L2 鏈上正在發生的事情的所有相關數據(賬戶餘額等)。該合約可能不會看到 L2 塊的實時視圖,因為 L2 交易在被提交到以太坊上的匯總中之前不會被視為官方交易;
檢查託管證明以確保它們是合法的代碼。當匯總提交到以太坊時,驗證者智能合約會確保匯總的證明有效,然後再在 L1 上正式發布。
也許一些類比可以讓你更好理解:驗證者就像保鏢一樣,確保來自 L2 的匯總在進入以太坊之前是有效的。或者,在 L2 上產生的區塊就像是發表一些關於我有獨立科學論文的粗略聲明,然後被驗證者檢查並提交到以太坊就像是經過同行評審並在受人尊敬的期刊上發表。
這聽起來好像並不是很簡單,但了解 ZK rollup 架構的基礎知識是理解ZK rollup 項目交互的關鍵基礎。基本的用戶流程可能如下所示:
(1)向rollup項目在以太坊上的智能合約發送一些 ETH,用於存儲/鎖定您的資金。
(2)短暫延遲後,L2 鏈會收到您已鎖定這些資金,並會解鎖等值的硬幣供您在 L2 上使用。這是一個非常典型的橋接體驗。
(3)您可以在 L2 上隨意使用您的Token。你可以交換,投資,或者用來購買 NFT。然後定期(通常以分鐘為單位)將rollup發送到以太坊,表示你在 L2 上最近發生的所有活動都已經完成。
(4)現在您決定要將資金提取回以太坊,因為您在 L2 賭場玩得很開心,但現在您想將籌碼(L2 上的硬幣和Token)兌現為真錢(ETH 和 L1 Token)。為此,您將 L2 Token發送到 L2 鏈上的銷毀地址,並等待證明該行動的rollup匯總在以太坊上發布。發布完成後,您被鎖定在以太坊智能合約中的資金就會被解鎖,返回到您的錢包。
本篇文章不會詳細介紹ZK rollups 和 Optimistic rollups,因為有很多文章對此進行比較,但這裡有一句話總結:Optimistic rollups 對發佈到 L1 的交易採取“在被證明有罪之前是無辜的”的方法(默認情況下,所有交易都被認為是有效的,但是任何觀察到錯誤 rollup 的人都可以將其調回並獲得獎勵),而 ZK rollups,正如我們已經可見,在進入L1之前都被認為不可信,要求所有鏈下計算在進入 L1 之前使用有效性證明來驗證自己。
每種方法都有利有弊,但 ZK rollups 的一個主要好處是用戶可以更快地將資金提取到 L1。在從Optimistic rollups中提款後,必須等待挑戰期到期(大約 7 天)才能解鎖資金,因為需要等待被驗證。
不過V神長期看好 ZK 路線:
總的來說,我自己的觀點是,在短期內,Optimistic rollups可能會在通用 EVM 計算中勝出,而 ZK rollups可能會在簡單的支付、交換和其他特定於應用程序的用途中勝出,但在隨著 ZK-SNARK 技術的改進,中長期 ZK rollups將在所有用途中勝出。
—維塔利克(2021 年 1 月)
另一種類似rollup的擴容解決方案是validiums。
Volitions是混合擴容解決方案,讓用戶能夠在“zk rollup模式”和“validium 模式”之間進行選擇。
當ZK rollups發佈到 L1 上時,它既包括證明L2 上的所有活動都是合法的,也包括自上次匯總以來 L2 上賬戶餘額所有變化的情況。這一點至關重要,因為當您想從 L2 中提取資金時,您需要之前的情況來說明“這是我在 L2 上所做的,這意味著我應該能夠提取特定數量的硬幣和Token。”
還有一種叫做validium的東西,它算是另一種類似rollup的擴容解決方案。
Validiums 的工作方式與傳統的ZK rollups幾乎相同,並且它們具有更便宜和更具可擴展性的額外好處。
不過問題是,不夠安全。
在 L1 上發布的 Validiums 不包括在 L2 上擁有資金的所有數據——即將資金提取到以太坊上的數據也是未知。相反,數據存儲在鏈下。如果信任存儲該數據的個人/網絡/公司,這不是問題,但最好確定他們絕對是可靠的。因為如果你在 L2 上存儲了 100 萬美元,然後存儲這些數據的項目方被黑客入侵並丟失了數據,或者被政府凍結,或者因為你在 Twitter 上說了愚蠢的話而對你進行懲罰,那麼你可能會失去你的錢…
或者,更準確地說,它被鎖定了。
有機會在這裡用一句精闢的“不是你的鑰匙,不是你的硬幣”類型的口頭禪,來傳播對有效性潛在風險的認識,但我能想到的最好的辦法是“如果數據不可用,你的硬幣就是可攻擊的”。因此,項目最好能夠很好地跟踪他們的匯總數據。
而某些項目正在使用volitions混合擴容解決方案,讓用戶能夠在“zk rollup模式”和“validium 模式”之間進行選擇。這也被宣傳為兩種選擇之間的折衷方案——項目將它們吹捧為“擁有你的蛋糕並吃掉它”或“世界上最好的”的一種方式。因此了解 rollups 和 validiums 之間的區別很重要。當 L2 向 L1 鏈提交證明時,它們允許用戶選擇取款所需的數據是否也發佈在 L1 上,或者是否存儲在其他地方。
總的來說,Validiums 比 ZK-rollups 便宜,但讓你的資金在 L2 上有凍結的風險。那些用volitions的項目會讓你在Validiums 還是 ZK-rollups之間進行選擇 。
使用 ZK 技術的項目太多了,無法一一列出,但這裡有一些主要類別和項目。
(1)zkEVM
在過去的一個月裡,幾個不同的項目都通過推出所謂的zkEVM登上了頭條。這些協議之間的競爭被稱為“ zkEVM 戰爭”和“ ZK Rollup Race ”,人們很快就發現,每個協議都聲稱已經擊敗了其他協議:
三個主要參與者是Scroll 、Matter Labs (zkSync 的創建者)和Polygon 。
zkEVM 很重要,因為它們允許 ZK rollups 支持比目前更多的應用程序。第一波 ZK rollups允許在超級可擴展且廉價的 L2 上執行基本操作——比如發送 ETH 和轉移Token。但是使用 zkEVM,開發人員可以編寫任意複雜的智能合約代碼並將其部署到 ZK 驅動的 L2 上。最重要的是,他們可以使用他們在以太坊本身上使用的相同的 Solidity 代碼來做到這一點。這意味著 ZK-rollup L2s 現在可以發展成為瘋狂、複雜、可組合的狂野西部鏈,既充滿了機遇但是也充滿了混亂。
(2)Polygon
Polygon正在構建真正數量驚人的縮放解決方案。老實說,很難跟踪它們。他們被描述為“瑞士軍刀的縮放”,大概是基於這個模型:
這是他們目前的產品線,其中四個提到了ZK證明(包括上文提到的zkEVM):
(3)StarkWare
StarkWare是一家構建 ZK 擴展技術的公司,由真正的 ZK 巨頭 Eli Ben-Sasson 創立。 Eli 共同發明了 STARKs(一種高級的 ZK 證明),並且是 Zcash 的創始科學家。他們有兩個主要產品:
StarkEx:允許每個應用程序構建自己的個人、許可的 ZK 系統。例如,dYdX(一個Layer 2 上運行的去中心化的智能合約交易平台)和 Immutable (第一個 Layer 2 的 NFT 交易平台)已經使用 StarkEx 分別為永續交易(永續交易類似於股票,只要這隻股不退市,您可以一直持有)和 NFT 建立了自己的特定應用 ZK 項目。但是這些應用程序是孤立的——項目之間沒有可組合性,因此一個 StarkEx 項目不能直接與另一個項目“對話”。
StarkNet:一種更新的產品,類似於通用區塊鏈。任何開發人員都可以創建智能合約並將其部署在 StarkNet 上——它是無需許可的,例如 StarkEx。項目之間是完全可組合的,所有交易都在以太坊上匯總和結算。我懷疑你很快就會聽到很多關於 StarkNet 的消息,因為它的Token計劃在 9 月推出
Zcash,前面已經提到過幾次,是隱私幣領域的主要鏈。鑑於它與比特幣的相似之處,我們是否會看到 BTC 本身採用 ZK 證明來實現隱私還未可知?那麼以太坊呢——它是否可以從 L2 的劇本中藉鑑一頁來使用 ZK 證明來實現可擴展性?簡而言之:BTC 不行,ETH 可以。
創造比特幣的早期密碼朋克非常注重隱私。 Zcash 的聯合創始人 Zooko認為,鑑於大多數高級用戶現在接受鏈上取證允許交易追溯到現實生活中的身份,因此 BTC 在隱私方面已經迷失了方向。眾所周知,比特幣社區並不樂於接受新功能,因此短期內可能不會有重大的隱私升級,Zooko 預測 BTC 最終會因此而走向末路! ! !
有趣的是,在對被稱為 BitcoinTalk 論壇的神聖文本進行了一些調查之後,我發現其中一個討論中只有中本聰本人提到了 ZK 證明。
不幸的是,在當時討論時,ZK 證明還不夠先進,無法支持 Zcash(是首個使用零知識證明機制的區塊鏈系統) 級別的功能,這就是中本聰將它們註銷的原因:
這是一個非常有趣的話題。如果找到解決方案,比特幣更好、更容易、更方便的實施將是可能的。 ......在這種情況下,很難想到如何應用零知識證明。 (2010 年 8 月 11 日)
當一起談到比特幣和 ZK 證明時,時機是不對的。當時比特幣很年輕很好改造的時候,密碼學太原始而無法實施,而現在應對複雜的升級,比特幣的又有太多妨礙的慣性。或許這就是生活。 C’est la vie.
不過,在實施新技術方面,以太坊更加進步。在最近關於 zkEVMs 的一篇文章中,V神提到 ZK 證明可以“更容易驗證以太坊鏈本身”,並大聲疾呼以太坊的隱私和擴展探索團隊正在為此工作。畢竟,L2s 沒有理由壟斷 ZK 技術。但也不要過於自信了——相對於更小、更靈活的項目,以太坊的發展速度非常緩慢。
SNARK 是一種 ZK 證明,於 2011 年首次出現,並幫助實現了許多現實的應用程序。目前大多數 ZK 項目都利用 SNARK。
SNARK 代表“簡潔的非交互式知識論證”(英文全稱Zero-Knowledge Succinct Non-Interactive Argument ofKnowledge),這是一個很好的技術,但了解它們的作用更有用:
“簡潔”意味著證明比它們所代表的所有計算總和要小得多。例如,可以獲取需要在以太坊區塊鏈上單獨記錄的一大堆交易,並創建一個僅用幾百字節證明其有效性的 SNARK。
“非交互式”意味著您可以使用一台計算機生成一個證明,該證明可以作為某物(例如您在 L2 區塊鏈上的賬戶餘額)的不可偽造證明,您可以將該證明提交給另一台計算機/智能合約將驗證它。
ZK:像所有 ZK 證明一樣讓您在分享盡可能少的信息的同時證明某些事情。
速度:由於這些證明非常小,因此可以非常快速地進行驗證。
安全性:SNARK的一個主要缺點是進行證明的計算機和進行驗證的計算機必須就一組稱為公共參考字符串 (CRS)的參數達成一致。要製作 CRS,您需要使用隨機源(熵),而這些隨機數非常強大。如果壞人發現了他們,他們可以創建任意證據並欺騙驗證者認為它是有效的。這就是為什麼任何使用 SNARK 的合法項目都會確保在使用這些隨機數後立即銷毀它們。
STARK是SNARK 的小兄弟,其中字母“N”變成了“T”,其中“T“是“Transparent”,代表“透明的”。 (Zero-Knowledge Succinct Transparent-Interactive Argument ofKnowledge,中文意思:簡潔化的全透明零知識證明)
它們各自有不同的優缺點。這裡說一下這兩種 ZK 證明之間的主要區別:
證明大小:STARK 比 SNARK 大,這也意味著它們在以太坊上驗證的成本更高,因為更大的證明 = 更多的計算 = 更高的gas費。
可擴展性:通常認為 STARK 比 SNARK 更有效,具體取決於實現情況。證明和驗證 STARK 的複雜度規模相對於被證明的計算複雜度呈擬線性增長,而SNARK的複雜度呈線性增長。這意味著在證明更大的計算量時,STARKs 比 SNARKs 具有更大的優勢。
生態系統和項目:使用 SNARK 的項目比使用 STARK 的項目多得多,因為 SNARK 的存在時間更長。
遞歸:SNARK 支持遞歸——您可以創建一個父 SNARK 來證明多個子 SNARK——這是許多擴展解決方案使用的主要功能。 STARK 不支持遞歸。
量子安全:SNARK 使用橢圓曲線密碼術,這不是量子安全的。量子計算的進步可能會使基於 SNARK 的系統容易受到攻擊。 STARK 不易受到攻擊,因為它們的加密方案依賴散列函數。
可信設置:如前所述,SNARK 在創建 CRS 期間需要可信設置。 STARK 通過利用可公開驗證的隨機性來生成證明者和驗證者共享的參數,從而避免了這個不便的問題。
需要注意的是,這些特點在不斷發展。最近出現了新的基於 SNARK 的方案,以解決傳統 SNARK 的弱點。
對於任何關心 zkEVM 產品細節方面的人(尤其是開發人員)來說,值得強調的是,並非所有的 zkEVM 都是一樣的。
這些項目必須在與以太坊的兼容性和性能之間做出權衡。所謂的“EVM 兼容”,即zkEVM 能夠驗證在與普通以太坊完全相同的環境中運行的程序。
例如,Scroll 不僅與 Solidity 編程語言等高級抽象層的 EVM 兼容,它還與字節碼級別的 EVM 兼容。這一點很重要,因為它使 Scroll 上的開發體驗與在以太坊本身上開發體驗幾乎沒有區別,有區別的是使用檢查單個操作碼的複雜調試器工具。它還允許重複使用熟悉且經過實戰考驗的以太坊客戶端,例如 geth,這意味著 zkEVM 可以草擬對以太坊本身的升級,而只需從項目中進行最少的額外工作。
這些zkEVM採用以Solidity編寫的智能合約代碼,採用這種方法可以讓代碼更有效地運行,但它拋棄了很多以太坊現有的基礎設施。例如,眾所周知,geth客戶端具有某些限制,這就是為什麼像zkSync這樣的團隊已經用其他用Rust編寫的軟件替換了它。
將此與“與 EVM 兼容”的zkEVM 進行比較,後者在與 EVM 協調方面並不那麼嚴格。 zkSync 團隊的一位成員這樣描述了這兩種類型的 zkEVM:如果您在 Windows 計算機上運行 Photoshop 軟件,並且現在想在 Mac 上運行它,您可以重新編譯 Photoshop代碼使其針對 Mac 進行優化,或者 在您的 Mac 上運行 Windows 模擬器,並讓該模擬器運行 Windows 版本的 Photoshop。很明顯,前者會更有效率。
誠然,這種觀點是有偏見的,並且忽略了更高兼容性所帶來的一些好處,但這是一個很好的類比。在這一點上,現在說哪種方法最終會證明更好的策略還為時過早但我們應該很高興有各種各樣的實驗現在同時進行。
隨著 對ZK證明以及其他新興加密技術的熱議,讓我相信我們可能正處於“加密,而不是區塊鏈”的風口浪尖,類似於過去幾年的“區塊鏈,而不是比特幣”的敘事情況一樣。甚至一些比特幣 和 Web3/區塊鏈懷疑論者也指出,創新 ZK 證明技術的持續發展是(他們認為)原本毫無價值的替代鏈的一種救贖。
可以使用 ZK 證明來證明我擁有某個 的事實,而無需透露我擁有哪一個、購買時間或所花金額。
隱私:在上進行活動時盡量減少公開的數據量。 Zcash就是一個很好的例子:
與一樣,Zcash 交易數據需要發佈到公共區塊鏈;但與比特幣不同的是,Zcash 提供了機密交易和財務隱私的選擇,利用零知識證明允許在不透露發送者、接收者或交易金額的情況下驗證交易。
(4) & ETH