零知識證明如何解決以太坊效能問題

買賣虛擬貨幣
2月26日21:00,BlockMania AMA 51期繼續進行,本期主題為《零知識證明如何解決以太坊效能問題》,分享嘉賓為安比實驗室工程師p0n1,他為大家解讀了零知識證明在以太坊擴容問題上的發展現狀和未來方向,以下為本次分享的文字整理。關於安比實驗室安比(SECBIT)實驗室專注於區塊鏈與智慧合約安全問題,全方位監控智慧合約安全漏洞、提供專業合約安全審計服務,在智慧合約安全技術上開展全方位深入研究,致力於參與共建共識、可信、有序的區塊鏈經濟體。當我們談論區塊鏈效能時,我們談些什麼?很多人喜歡用「不可能三角」這種模型來討論一個系統面臨的設計難題。區塊鏈也不例外,大家一定聽過關於安全、去中心化、高效這三個方面的不可能三角或者說三元悖論吧。在這個很流行的說法中,「高效」其實就是我們常說的「效能」,也叫「可擴充套件性」或者 Scalability。可以認為,以太坊和比特幣從設計上更側重於「安全」和「去中心化」這兩點,因此不可避免地顯得不是很「高效」。
尤其是以太坊,作為擁有最多開發者和應用的區塊鏈平臺,越來越多的人在上面嘗試開發好玩有用的應用,但平臺能提供的效能支撐極其有限,因此大家長期以來都在高喊「以太坊需要擴容」!!!這也是為什麼在以太坊之後,市場上又出現了很多「以太坊殺手」——許多想從效能層面超越以太坊的專案。怎麼超越以太坊呢?其實超越的方法其實也不難,「只需要」犧牲不可能三角中的另外兩點即可。但可能大部分人還是覺得「安全」和「去中心化」是不能放棄的,選擇繼續留在以太坊。這導致「以太坊殺手們」冷冷清清悽悽慘慘無人問津,能開飛機的公路上卻沒有車,效能「優勢」完全沒有空間展現。所以當我們談論區塊鏈效能時,我們還是希望區塊鏈的兩大根基不動搖——「安全」和「去中心化」儘量少受影響。
以太坊效能到底怎麼樣?以太坊目前效能十分有限。對於普通區塊鏈使用者來說,手續費和交易確認時間很大程度決定了使用體驗。而以太坊目前的使用體驗波動非常大。打個比方,整個網路空閒的時候就好比最近疫情期間的高速,而擁堵的時候就像國慶黃金週時候的旅遊景點。從效能引數 TPS 上看,國際信用卡 Visa 交易處理速度至少 2000 筆/秒,而以太坊則不超過 30 筆/秒,這個數值只能說比老大哥比特幣 7 筆/秒好了一些。並且,造成以太坊網路擁堵的成本非常低。大多數時候,一個熱門 dApp 就會讓整個網路變得擁堵不堪。說實話目前這個 TPS 水平讓以太坊很難真正大規模應用。隨著更多的人使用,以太坊網路交易手續費註定會越來越高,並且普通交易的確認時間會越來越久。以太坊社羣在可擴充套件性上做了哪些努力?
以太坊令人尷尬的效能現狀讓其核心開發團隊和社羣一直在探索各類擴容方案。於是大家經常聽到一系列花哨的名詞:分片(Sharding)、支付通道、狀態通道、Plasma、Truebit、ZK-Rollup、Optimistic Rollup 等等,以及一個概念 Layer-2。上面提到的大部分方案都屬於二層擴容方案。其中 ZK-Rollup 和 Optimistic Rollup 則是最近最熱門的。我們今天要重點討論的就是 ZK-Rollup,而它的核心就是零知識證明技術。零知識證明為什麼有用?零知識證明,可能是目前最具應用前景和想象力的密碼學黑科技,可以在不洩露任何其他資訊的前提下證明一個命題的正確性。兩個關鍵詞——「不洩漏」和「證明」,一結合可以說威力無窮,可以實現很多反直覺的炫酷特性。在擴容方向上,我們並不需要太關注零知識證明技術的「不洩露」特性,這個往往跟隱私保護相關,我們重點關注其「證明」的能力。簡而言之,鏈上資源或者說頻寬是有限的,我們需要把大量計算遷移到鏈下進行,因此需要技術能夠「證明」這些計算在區塊鏈鏈下真正發生過。
關於零知識證明的更多背景知識和技術細節這裡就不再展開介紹了,歡迎大家關注我們安比實驗室的系列文章,如《初識「零知識」與「證明」》https://mp.weixin.qq.com/s/XQL_taBhPkCHGZOBc24MyQ。真正要理解零知識證明可能會有些燒腦,但真心很有趣,大家感興趣不妨試試。好了,回到今天的主題上來。為什麼說基於零知識證明擴容方案可能是更好的方向?我們不妨回顧一下開始的第一個問題,當我們談論區塊鏈效能時,我們還是希望區塊鏈的兩大根基——「安全」和「去中心化」儘量少受影響。如果有擴容方案能做到這個,就是真的是非常難能可貴的。基於零知識證明的二層擴容方案 ZK-Rollup,就居然真的可以在不犧牲「安全」和「去中心化」這兩點的前提下,很好地解決區塊鏈效能問題!不熟悉的同學可能會問:零知識證明擴容代表方案 ZK-Rollup 到底是什麼?
首先我們最好來理解下什麼是 Rollup。Rollup 顧名思義,有「捲起」和「彙總」的意思,可認為是一大類 Layer-2 擴容方案的統稱。Rollup 特指先在鏈下進行復雜的計算和狀態維護,再將與狀態更改相關的資料透過合約呼叫的方式,利用更便宜的 CALLDATA 在鏈上儲存資料,將大量交易「捲起/彙總」打包成一個交易,最終在保證了「資料可用性」的前提下提高 TPS。Rollup 方案的共同點是強調鏈上「資料可用性」,即任何人都能根據鏈上儲存的資料,復原出全域性的狀態,從而消除資料可用性問題帶來的安全風險。這一特點讓Rollup 方案(data onchain)相對於 Plasma 這類 data offchain 的方案設計更簡潔且更易實現。Layer-2 這個概念其實特別好,因為這類方案的設計思路就是以太坊的底層幾乎不需要任何改動,底層還是嚮往常一樣處理交易,所以不會影響底層的安全性,讓各種各樣的海量交易在二層來處理,從而減輕底層鏈的壓力。
Plasma 是前兩年最火的以太坊二層擴容概念,整個社羣花費了非常多的精力來討論和實現,過程中演變出來一系列方案,比如 Plasma MVP、Plasma Cash、Plasma Debit、Plasma Prime......Plasma 家族的中間方案非常多,理論上都可行,但是就是遲遲不能落地。這裡面的核心原因就在於 Plasma 各類方案都沒有保證「資料可用性」,從而使協議變得比較複雜,實現難度很大,顯得很不實用。而 ZK-Rollup 方案起源於 18 年下半年,由 Barry Whitehat 和 Vitalik 先後提出。其關鍵就在於 ZK(Zero Knowledge),每一次的狀態轉變都需要提供零知識證明,由主鏈上的合約進行驗證,只有驗證透過才能更改狀態。即每一次狀態轉變都嚴格依賴密碼學證明。ZK-Rollup 方案利用了目前最流行的零知識證明技術 zkSNARK 在壓縮鏈上計算量的同時保障了資料正確性。利用一棵 Merkle Tree 儲存賬戶狀態,合約只儲存 Merkle Root。Operator(運營者)收集使用者的交易,批次打包這些交易,並生成 zkSNARK 證明,具體會證明交易的合法性(比如驗證簽名),以及前後狀態下的 Merkle Root。
Operator 把 Merkle Root 連同各交易資料和 zkSNARK 證明提交至合約,合約驗證透過才將新的狀態寫入。由於所有交易的計算過程不用在合約中執行,無需將大量狀態寫入合約 storage,並且 zkSNARK 證明大小(很小)與驗證時間(很快)是常數,不跟隨交易數量增長,因此 ZK-Rollup 可以極大地提高交易 TPS。ZK-Rollup 的鏈上效能限制僅依賴於 CALLDATA 儲存資料的成本。隨著以太坊 Istanbul 升級,CALLDATA 使用成本降為原來的 1/4,ZK-Rollup 的效能則獲得 4 倍提升,TPS 可達到近 2000!TLDR,ZK-Rollup的原理其實可以用一句話講清:鏈下進行復雜的計算和證明的生成,鏈上進行證明的驗證和關鍵狀態的維護。上面提到 Rollup,可能有同學會問:ZK-Rollup 與其他 Rollup 方案的核心區別是什麼?的確還有其他多個Rollup 方案,比如 Optimistic Rollup 就是當中較為熱門的一個,它與 ZK-Rollup 的核心區別在於具體如何保證狀態更改的正確性。
Optimistic Rollup 方案形成於 19 年下半年,由 John Adler 首次提出,後面主要由 Plasma Group 從 Plasma、ZK-Rollup、shadow chain 等方案中借鑑,進一步完善和擴充套件。與 ZK-Rollup 的最大區別在於,每次狀態轉變無需嚴格驗證,先樂觀地假設每次轉變都是正確的,這就是 Optimistic 一詞的由來。然後在一定時限內可以對某次轉變進行挑戰,如果挑戰成功就證明了之前的提交有問題,會懲罰提交者並將狀態回滾。可以認為 Optimistic Rollup 最終依賴經濟激勵和博弈來約束狀態正確轉變。兩種方案的差別還可以從證明模型角度來對比:ZK-Rollup 為 Validity Proof(正確性證明),只有提供了「正確性證明」的狀態才會被寫入主鏈合約;而 Optimistic Rollup 為 Fraud Proof(欺詐證明),使用者需要在挑戰期內對異常提供「欺詐證明」,負責舉報不正確的狀態。關注以太坊的同學對 Plasma 一定不會陌生。Alex Gluchowski 和 Ryuya Nakamura 這兩位研究人員分別提出了在 PoW 和 PoS 共識下,對 Optimistic Rollup 或基於 Fraud Proof 的二層擴容協議的攻擊模型, 且攻擊成本並不高:這類二層方案必須在挑戰期內進行投訴舉報,而當合約中聚集了大量資產時,則有希望構造一個場景(配合者分享攻擊收益),讓礦工配合做惡,在挑戰期內拒絕掉所有提交 Fraud Proof 的投訴交易,這樣不正確的狀態轉變會被確認,最終可從合約中盜取所有資金。這種攻擊對 ZK-Rollup 無效,因為合約中始終有正確性校驗做保障。ZK-Rollup的發展現狀究竟如何?
目前已有多個團隊基於 ZK-Rollup 方案開發新一代產品,毫無疑問 ZK-Rollup 是目前落地速度最快、最有前景的二層擴容方案,在眾多擴容方案中獨佔鰲頭。例如 Loopring 團隊已經率先上線了基於 ZK-Rollup 的去中心化交易所(DEX),無需使用者抵押資產,在效能上卻能媲美中心化交易所(CEX),不再受底層鏈效能制約,訂單交易 TPS 達到了驚人的 2025!另外 Matter Labs 釋出了無需信任的擴容和隱私方案 ZK Sync。ZK Sync 底層也依賴 ZK-Rollup,目標在確保安全性的前提下提升交易效能。產品路線為先專注提高簡單轉賬的效能和易用性,再實現通用智慧合約的擴容,最後再加上隱私保護。目前擴容的目標也接近達成,至於隱私保護則依舊是憑藉零知識證明技術。ZK Sync 中還包含一個新的 SNARK 方案 Redshift,和零知識證明合約程式設計框架 Zinc,這兩者或是其未來實現通用隱私智慧合約的關鍵。可以說 ZK-Rollup 目前在以太坊發展的勁頭十足。
零知識證明在以太坊擴容方向上具體有哪些發展趨勢?我們再次回顧一下,零知識證明二層擴容方案最大的優勢在於不犧牲「安全」和「去中心化」,也不需要對以太坊底層做任何改動,卻能獲得巨大的效能提升。這一切源於零知識證明技術近年來的快速發展,以及以太坊團隊大概在四五年前就在底層鏈層面為這一切做好了技術準備,提供了必要的密碼學運算支援。零知識證明技術真正讓以太坊擴容從理論走向了實際,我相信未來這個方向還會有更多新的突破。而以太坊社羣很可能會從解決智慧合約通用性問題、降低零知識證明應用開發難度、嘗試更多型別的應用等方面來進一步探索擴容。二層擴容概念下,各類普通的或者追求效能的交易可以在高效地跑在二層,享受更快的響應速度和低廉的使用成本,而一層也就是主鏈則專門負責承載更高價值的交易,併為此付出更高的成本。
另外,零知識證明還是解決區塊鏈隱私問題的唯一解決方案。這一方面以太坊社羣也有著很棒的進展。我覺得 ZK-Rollup 在安全性上更有優勢。所以我覺得以太坊即使不升級 2.0 也能再戰好幾年。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;