作者:Lauri Peltonen 來源:medium 翻譯:善歐巴,金色財經
這可能是對零知識技術最大的誤解。簡而言之,這意味著ZK 技術的大多數實作不提供隱私。但為什麼?
術語
這些術語到底是什麼意思?
以下是維基百科中「零知識證明」所需的三個屬性:
完整性:如果陳述為真,誠實的驗證者(即正確遵循協議的驗證者)將被誠實的證明者確信這一事實。
可靠性:如果該陳述是錯誤的,則任何作弊證明者都無法說服誠實的驗證者該陳述是正確的,除非有一些小機率。
零知識:如果陳述為真,則驗證者除了該陳述為真這一事實之外不會獲悉任何其他資訊。
讓我強調一下:術語「零知識」意味著接收者獲得原始資料的零(額外)知識。
如果不是zk,為什麼還要叫ZK?
為了讓協議實現「零知識」屬性,它必須提供完整的ZK 隱私。除了證明者擁有數據之外,證明的接收者不得了解任何原始數據。
那麼,如果零知識協定連ZK 特性都不滿足,又如何利用ZK 技術呢?
這就是事情變得令人困惑的地方,主要是因為「零知識」一詞令人困惑。能夠實現零知識證明的技術稱為零知識技術。但零知識技術也支援隱私以外的其他用例。其他用例之一是簡潔性:為大量資料產生一個小證明。
因此,並非所有零知識用例(或實現)都提供零知識屬性,但它們仍然利用零知識技術來實現其目標。很簡單,嗯?
快速了解:zk rollups
我們將使用ZK rollups 作為ZK 系統的範例。以防萬一您忘記了ZK rollup 是什麼,這裡有一個小回顧。
有許多大型的、成熟的區塊鏈被認為是安全的並且被大量使用。例如,此類區塊鏈有比特幣、以太坊和Solana。它們被稱為第1 層(L1) 區塊鏈。
如果想要擴展L1 區塊鏈功能,目前的共識是應該創建一個新的區塊鏈層。第2 層(L2) 區塊鏈。
將L2 區塊鏈連接到L1 區塊鏈的一種方法是使其成為ZK rollup。在ZK rollup 中,稱為定序器的服務從L2 收集交易,並使用證明程式產生這些交易的證明。然後將該證明傳送到L1 中的鏈上驗證程式。一旦L1 驗證者驗證了證明,基礎交易就被視為在L2 上完成。
理論上,如果有一天L2 爆炸了,L2 上的所有資產都可以在L1 上被拯救,因為交易更新會被送到L1。這就是L2 “繼承”L1 安全性的方式。
簡潔用法
大多數利用零知識科技的專案只關心簡潔性部分。事實上,大約99%的ZK專案僅依賴簡潔性。該技術還可以提供隱私,但該功能尚未被利用。
例如,簡潔性允許ZK rollups 將大量交易簡潔地「Rollup」到單一證明中。但僅利用簡潔性屬性意味著不存在真正的隱私:證明會洩露有關原始交易的資料。
為什麼不添加隱私
在證明中添加隱私通常不是一件困難的任務。它需要在證明過程中添加一些隨機性來屏蔽輸入。
但這不是困難的部分。
將ZK 隱私添加到證明系統將使證明變得私有。但ZK 證明並不是真空中使用的——它們只是一些更大系統的一小部分(?),例如ZK rollup。人們還必須考慮證明周圍的架構。
範例:ZK Rollup
讓我們考慮一下如果我們在ZK rollup 中將ZK 證明設為私有會發生什麼。
L2 中的所有交易首先發送到定序器,定序器為它們產生證明。由於定序器(或與定序器關聯的證明者)正在產生證明,因此它需要所有交易輸入- 包括私有輸入。
因此,用戶需要將其私人資料發送給定序器並相信定序器是誠實的。這已經違背了ZK 隱私的目的:資料無法保持私密。
此外,定序器執行交易以產生交易效果的追蹤:哪些資產被更改以及如何更改。這要求排序器知道交易的確切內容。
怎麼修
為了「修復」這些ZK Rollup,需要在使用者電腦上產生證明。這樣,私人資料就不會發送到任何地方。
這就引入了一些問題:
-
定序器不再知道事務的作用。網路狀態如何改變?
-
排序器如何知道交易是有效的?
-
系統如何解決同時發出的不同交易之間的衝突?
這些都不是小問題。有一些區塊鏈(Mina、Aztec、Aleo、Miden)提供真正的(可編程)ZK 隱私,但需要多年的研究和開發才能達到這一目標。而且它們都還沒有投入生產(儘管這種情況很快就會改變)。
這些隱私區塊鏈的架構與常規ZK rollup 的架構有很大不同。證明必須在使用者的電腦上本地生成,以保護隱私。之後,使用各種方法來克服上述由私人證明引起的問題。
結論
大多數ZK 專案都可以接受「只是」簡潔。他們沒有聲稱提供ZK 隱私,但許多用戶仍然認為他們提供了。
添加ZK 隱私通常需要不同的架構。隱私不是事後可以「添加」的東西,而是事後可以「添加」的東西。整個網路的設計必須從一開始就考慮到隱私。