原文作者:Jaehyun Ha

編譯:深潮 TechFlow

摘要

  • 雖然零知識證明(ZKPs)有望打造一個更加私密和可擴展的區塊鏈生態系統,但許多關於零知識(ZK)的方面被誤解或與普遍認知中的實施方式不同。

  • ZKPs 主要有兩個方面:“零知識”和“簡潔性”。雖然這種說法沒有錯,但大多數 ZK rollups 只利用了簡潔性屬性,交易數據和賬戶信息並沒有完全保持零知識或私密。

  • 對於各種類型的 DApps,ZK rollups 可能不是最佳的開發堆棧選擇。例如,生成 ZKPs 可能成爲快速終結的瓶頸,從而降低Web3遊戲的性能,而基於狀態差異發佈的數據可用性保證方法可能會損害 DeFi 借貸協議的服務。

圖 1 :ZK 是一個很好的流行詞

來源:imgflip

區塊鏈行業的當前狀態可以比喻爲零知識(ZK)時代。無論你走到哪裏,ZK 都很突出,找到不將 ZK 納入其名稱的下一代區塊鏈項目變得越來越罕見。從技術角度看,無可否認,ZK 是一項有前景的技術,能夠爲更具可擴展性和私密性的區塊鏈生態系統做出貢獻。然而,由於 ZK 的複雜技術背景,許多投資者,無論是散戶還是機構,常常基於“相信”這看起來很酷、新穎且可能解決區塊鏈三難問題而投資於 ZK 項目,而沒有完全理解 ZK 技術如何使每個項目受益。

在這個 ZK 系列中,我們將探討 ZK rollups 的難以忽視的事實(缺點和劣勢)及其有益的應用。首先,我們將解析區塊鏈中 ZK 證明(ZKPs)的兩個核心屬性:“零知識”和“簡潔性”。然後,我們將討論當前在服務中的大量 ZK rollups 爲何沒有真正利用“零知識”方面。接下來,我們將研究在哪些領域應用 ZK rollup 比較有害而非有益,避免實施複雜性等衆所周知的問題。最後,我們將突出那些有效體現 ZK 原則並實際從使用 ZK 技術中獲得明顯好處的傑出項目。

回顧:ZK Rollups 中的交易生命週期

Rollup 是一種擴展解決方案,通過在鏈外執行交易束然後將最新 L2 狀態的摘要數據存儲在 L1 上來解決 L1 的吞吐量限制。其中,ZK Rollups 的突出特點是能夠通過在鏈上提交鏈下計算的有效性證明來快速提取資金。在我們深入研究 ZK rollups 的問題之前,讓我們簡單回顧一下它的交易生命週期。

圖 2 :ZK rollups 中的交易生命週期

來源:Presto 研究中心

  • 每個L2用戶生成並提交他們的交易給序列器。

  • 序列器聚合並排序多個交易,然後在鏈下執行這些交易以計算新的 rollup 狀態。隨後,序列器將這個新的 rollup 狀態以“批次”形式提交到鏈上狀態智能合約,並壓縮相應的L2交易數據成爲數據塊以確保數據可用性。

  • 這個批次被髮送給證明者,證明者創建該批次執行的有效性證明(或 ZKP)。然後,這個有效性證明連同額外數據(即之前的狀態根)一起發送到L1的驗證者智能合約,這有助於驗證者識別它正在驗證的內容。

  • 在驗證者合約檢查證明有效後,rollup 的狀態會被更新,且已提交批次中的L2交易被視爲已完成。

(請注意,這種解釋是 ZK Rollup 過程的簡化版本,每種實現可能因協議而異。如果我們區分角色,L2中可能有更多實體,如聚合器、執行器和提議者。數據塊的層級也可能不同,如塊、塊組和批次,具體取決於它們的用途。上述解釋假設了一個情況,即一個集中式序列器具有強大的權威來執行交易,並且還生成統一的數據塊格式爲批次。)

與 Optimistic Rollups 不同,得益於 ZKPs(例如 ZK-SNARKs 或 ZK-STARKs),ZK Rollups 可以通過驗證一個簡單的證明來驗證數千個交易的執行正確性,而無需重播所有交易。那麼,這個 ZKP 是什麼,它有什麼特性呢?

ZKPs 的兩個屬性:零知識和簡潔性

顧名思義,ZKP 基本上是一種證明。證明可以是任何能夠充分支持提供者聲明的東西。假設 Bob(提供者)想要讓 Alice(驗證者)相信他對自己的筆記本電腦有權威。證明這一點最簡單的方法是,Bob 只告訴 Alice 密碼,Alice 在筆記本上輸入密碼並驗證 Bob 確實有權限。然而,這個驗證過程對 Alice 和 Bob 來說都是不滿意的。如果 Bob 設置了一個非常長且複雜的密碼,Alice 要正確輸入將非常具有挑戰性(假設 Alice 不能複製粘貼)。更現實的是,Bob 可能不願意透露他的密碼給 Alice 以證明他的權限。

如果有一種驗證過程,Alice 可以迅速驗證計算機的權限,而無需 Bob 透露他的密碼呢?例如,Bob 可以在 Alice 面前用指紋識別解鎖筆記本電腦,正如圖 3 中所示(注意這不是 ZKP 的完美示例)。這是 Alice 和 Bob 都可以從 ZKPs 的兩個關鍵屬性中受益的地方:零知識屬性和簡潔性屬性。

圖 3 :零知識和簡潔性的高級直覺

來源:imgflip

零知識(ZK)

零知識屬性指的是提供者生成的證明除了證明的有效性外,不會泄露關於祕密見證人(即私有數據)的任何信息,使驗證者對數據一無所知。在區塊鏈中,這一屬性可以用於保護個人用戶的隱私。如果對每筆交易應用 ZKPs,用戶可以證明他們的行爲的合法性(即證明一個用戶有足夠的資金進行交易)而不暴露他們的交易細節(例如轉賬、賬戶餘額更新、智能合約部署和執行)給公衆。

簡潔性

簡潔性屬性指的是 ZK 能夠從大尺寸的聲明生成一個短小且快速驗證的證明,換句話說,它將大的東西壓縮成緊湊的形式。在區塊鏈中,這一點特別用於 rollups。使用 ZKPs,L2中的驗證者可以通過向L1中的驗證者提交一個簡潔的證明來聲稱交易的正確執行(TB 級交易的有效性可以用 10 ~ 100 KB 的證明表示)。然後,驗證者可以通過驗證簡潔的證明而不是重播所有交易,在短時間內(即 10 毫秒至 1 秒)輕鬆確認執行的有效性。

ZK Rollup 很棒,但並不意味着隱私性

上述 ZKP 的特性在 ZK Rollups 中得到了很好的利用。雖然驗證者無法從提供者接收的 ZKPs 中推斷原始交易數據,但驗證簡潔的證明允許他們有效地驗證提供者的聲明(即新的L2狀態)。也就是說,斷言當前的 ZK Rollups 完全遵循零知識和簡潔性屬性是誤導的。這可能在專注於提供者與驗證者之間的互動時是正確的,但 ZK Rollups 中還存在其他組成部分,如序列器、提供者和 rollup 節點。那麼,“零知識”原則也爲他們確保了嗎?

在任何 ZK Rollups 中用 ZKPs 實現完全隱私的挑戰來自於,如果其他部分保持公開而某些部分通過 ZK 變爲私有時可能出現的妥協。想想 ZK Rollups 中的交易生命週期,當交易從用戶發送到序列器時,隱私是否得到維護?對於提供者呢?或者當L2批次提交到 DA 層時,個別賬戶信息的隱私是否得到保護?目前這些情況都不成立。

圖 4 :ZK rollups 中的隱私泄露

來源:Presto 研究

在大多數主流的 ZK Rollups 中,序列器或提供者(或其他具有強大權限的集中化實體)能清晰地看到交易細節,包括轉賬金額、賬戶餘額更新、合約部署和執行。舉一個簡單的例子,你可以通過訪問任何 ZK Rollup 區塊瀏覽器輕鬆觀察到所有提到的細節。不僅如此,考慮一種情況,集中式序列器某種原因停止服務,另一個 rollup 節點試圖恢復 rollup 狀態。它將從 DA 層(在大多數情況下是L1 Ethereum)公開發布的L2數據中提取信息,並重建L2狀態。在這個過程中,任何能夠重播 DA 層存儲的L2交易的節點都能恢復關於每個用戶賬戶狀態的信息。

因此,“零知識”的術語在當前的 ZK Rollups 中以碎片化的形式實施。雖然這不能被認爲是錯誤的,但很明顯,它與“ZK 意味着零知識等同於完全隱私”的普遍認知不同。當前 ZK Rollups 的新穎之處在於利用“簡潔性”屬性而不是“零知識”,即在鏈下執行交易,併爲驗證者生成簡潔的證明,以便他們可以快速且可擴展地驗證執行的有效性,而無需重新執行它們。

出於這個原因,一些 ZK Rollups,如 Starknet,將自己稱爲“有效性 Rollups”,以避免混淆,而確保真正 ZK 隱私的其他,如 Aztec,將自己標記爲 ZK-ZK rollups。

深入考量 ZK Rollups 的實用性

正如前文提到的,大多數 ZK Rollups 並未完全實現 ZK 隱私。那麼,我們的下一個目標是什麼?通過在 Rollup 的每個部分全面部署 ZK 來實現完全的交易隱私?事實上,這並不是一個簡單的問題。除了需要顯著的技術進步以進一步成熟技術外,ZK 在意識形態(例如私人交易的非法使用)和實用性(例如它真的有用嗎?)方面仍存在爭議問題。鑑於討論完全交易隱私的道德問題超出了本文的範圍,我們將關注區塊鏈項目中遇到的 ZK Rollups 的兩個實用性問題。

第 1 點:生成 ZKP 可能是快速確定性的瓶頸

首先讓我們討論 ZK Rollups 本身的實用性。ZK Rollups 最引人注目的賣點是由於其交易的“快速終結”而使資產提取延遲時間縮短,這得益於 ZKP。提高的 TPS 和低交易費用是額外好處。最有效利用 ZK Rollups 特性的領域是遊戲行業,因爲遊戲內貨幣的存取非常頻繁,每秒都會產生大量的遊戲內交易。

但 ZK Rollups 真的可以被認爲是遊戲的最佳技術棧嗎?對此,我們需要更深入地思考 ZK Rollups 中的“快速終結”概念。想象一下,一個用戶正在享受運行在基於 ZK Rollup 的技術棧的Web3遊戲。用戶將遊戲內物品交易成遊戲幣,並試圖從遊戲中提取該資產。

要提取資產,遊戲內交易必須被終結。這意味着交易必須被包含在新的 Rollup 狀態承諾中,相應的 ZKP 應提交到L1,並且需要等待L1以太坊中證明的終結,以保證交易不可逆轉。如果所有這些過程能瞬間發生,那麼我們就能實現 ZK Rollups 常被吹噓的“即時交易確認”,允許用戶立即提取資產。

然而,現實遠非如此。根據L2 beat 提供的不同 ZK Rollups 的終結時間統計數據,zkSync Era 大約需要 2 小時,Linea 需要 3 小時,而 Starknet 平均需要約 8 小時。這是因爲生成一個 ZKP 需要時間,將更多交易包含在一個批次(即單一證明)中以減少交易費用也需要額外時間。換句話說,生成和提交證明的速度是實現 ZK Rollups 快速終結的潛在瓶頸,這可能會降低Web3遊戲中的用戶體驗。

圖 5 :ZKP 生成可能是 ZK rollups 快速確定性的潛在瓶頸

來源:imgflip

另一方面,像 Ronin 這樣爲遊戲優化的鏈(支持如 Pixels 和 Axie Infinity 等Web3遊戲)確保了超快終結,同時犧牲了去中心化和安全性。Ronin 不是基於 ZK 或 Rollup 的鏈:它是一個在 PoA(權威證明)+ DPoS(委託權益證明)共識算法下運行的 EVM 區塊鏈。它根據委託的股份數量選擇 22 個驗證者,然後這些驗證者以 PoA 方式(即僅在 22 個驗證者之間的投票過程)生成和驗證區塊。因此,在 Ronin 上,交易能夠迅速完成終結,幾乎沒有延遲被包含在區塊中,並且驗證時間很短。在 Shillin 硬分叉後,平均每個交易只需要6 秒鐘就能完成終結。Ronin 實現了所有這些,而無需 ZKP。

當然,Ronin 也有缺點。由中心化驗證者管理使其相對更容易受到 51% 攻擊的威脅。此外,由於它不使用以太坊作爲結算層,它無法繼承以太坊的安全性。使用跨鏈橋也存在安全風險。但從用戶的角度來看:他們會在意這些嗎?當前沒有去中心化排序的 ZK Rollups 也存在單點故障(SPOF)問題。以太坊爲它們提供了保證,因爲它減少了交易回滾的可能性,但如果中心化的序列器或驗證者出現故障,ZK Rollups 也會凍結。再次注意,ZK Rollups 中的“ZK”僅用於驗證執行正確性的有效性。如果有另一個項目提供相同的功能但更快更便宜,ZK Rollups 可能不再被Web3遊戲用戶和開發者視爲首選技術棧。

第 2 點:發佈狀態差異是一把雙刃劍

另一點是 ZK Rollup 協議實現的實用性。其中,這裏我們重點關注狀態差異發佈,這是在 ZK rollups 中確保數據可用性的方法之一(參見 Unlocking Dencun Upgrade: Unseen Truth of Scaling DA Layers, Jaehyun Ha, 12 Apr 24)。

理解 Rollups 中數據可用性的一個簡單方法是想象一個業餘登山者證明並記錄他攀登珠穆朗瑪峯的過程。最簡單的方法是從基地營到山頂的每一步都錄製成視頻。儘管視頻文件可能很大,但任何人都可以驗證登山者的攀登過程,並可能重播錄像。這個比喻可以類比於確保數據可用性的原始交易數據發佈方法。Optimistic Rollups 遵循這種方法,以便個別挑戰者重播並驗證正確的執行,因爲無法信任序列器的狀態承諾。在 ZK Rollups 中,Polygon zkEVM 和 Scroll 採用這種方法,在L1上以壓縮形式存儲原始L2交易數據,以便在需要時任何人都可以重播L2交易以恢復 Rollup 的狀態。

回到業餘登山者的例子,另一種驗證方法可能是一位著名的登山者與業餘登山者一起攀登珠峯,以向世界證明登山確實完成。由於攀登已經由可信的個人證實,登山者不再需要記錄每一步以作記錄。只需在起點和山頂拍攝一張照片即可,其他人就會認爲登山者已經到達了山頂。這個比喻反映了用於確保數據可用性的狀態差異方法。在 ZK Rollups 中,zkSync Era 和 StarkNet 採用這種方法,僅存儲L2交易在L1上執行前後的狀態差異,以便在必要時任何人都可以從初始狀態計算狀態差異以恢復 Rollup 的狀態。

圖 6 :原始交易發佈與狀態差異發佈

來源:Presto 研究

這種狀態差異方法無疑在成本上比原始交易數據發佈方法有利,因爲它可以省去存儲中間交易的步驟,從而減少L1的存儲成本。儘管這通常不是問題,但這裏還是有一個潛在的缺陷:這種方法不允許恢復完整的L2交易歷史,這對某些 DApps 可能是一個問題。

以 Compound 這個 DeFi 借貸協議爲例,假設它是建立在基於狀態差異的 ZK Rollup 技術棧之上的。這些協議需要完整的交易歷史以每秒計算供應和借貸利率。但是,如果 ZK Rollup 序列器出現故障,其他 Rollup 節點試圖恢復最新狀態會發生什麼?它可能恢復狀態,但利率將被不準確地恢復,因爲它只能跟蹤批次之間的快照而不是每個中間交易。

結論

本文主要斷言,大多數當今的 ZK Rollups 中並不存在“ZK”,在 DApp 中的很多地方,使用 ZKP 和 ZK 程序可能不是最佳選擇。ZK 技術可能因被指責而感到無辜,因爲它本身並沒有什麼問題,只是在利用其技術進步的過程中,它可能會帶來 DApps 的潛在性能下降。然而,這並不是說 ZK 技術對這個行業毫無用處。當 ZKPs 和 ZK rollups 最終技術成熟時,它們肯定可以提供更好的解決方案來解決區塊鏈三難問題。實際上,目前已有基於 ZK 的項目維護了 ZK 隱私,也有許多類型的 DApps 有效利用了 ZKP 和 ZK 卷積的優勢。

原文鏈接