ZK Rollups:房間裡的大象
深潮TechFlow
2024-05-16 08:51
本文约5018字,阅读全文需要约20分钟
對於各種類型的DApps,ZK rollups可能不是最佳的開發堆疊選擇。

原文作者: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 中得到了很好的利用。雖然驗證者無法從提供者接收的 ZKP 推斷原始交易數據,但驗證簡潔的證明允許他們有效地驗證提供者的聲明(即新的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交易歷史,這對某些 DApp 來說可能是一個問題。

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

結論

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

原文連結

深潮TechFlow
作者文库