以太坊的多客戶端理念將如何與 ZK-EVM 相互影響?

中級Feb 28, 2024
本文介紹了以太坊如何維護其安全性和去中心化的一個關鍵但經常被忽視的方麵:其多客戶端方法。以太坊刻意缺少一個每個人都默認運行的“參考客戶端”。取而代之的是一個協衕管理的規範(目前用人類可讀但速度較慢的 Python 編寫)和多個實施該規範的團隊(也稱爲“客戶端”),用戶實際運行這些客戶端。
以太坊的多客戶端理念將如何與 ZK-EVM 相互影響?

以太坊維持其安全性和去中心化的一種方式,雖然未被充分討論,但仍然非常重要,那就是它的多客戶端理念。以太坊併沒有設置每個人都默認運行的”參考客戶端”。相反,它有一個由協作團隊管理的客戶端規格,這個規格目前是用易於人類閲讀但速度相對較慢的Python 編寫的。衕時,還有多個團隊在實現這個規格(也稱爲“客戶端”),這是用戶實際運行的。

每個以太坊節點運行一個共識客戶端和一個執行客戶端。截至目前,沒有共識或執行客戶端占網絡的 2/3 以上。如果該類別中份額少於 1/3 的客戶端存在錯誤,網絡將繼續正常運行。如果在其類別中占有 1/3 到 2/3 份額的客戶端(例如 Prysm、Lighthouse 或 Geth)存在錯誤,鏈將繼續添加區塊,但會停止最終確定區塊,從而爲開髮人員提供幹預時間。

一個被討論較少,但仍然非常重要的,即將在以太坊鏈驗證方式上髮生的主要轉變是 ZK-EVMs 的崛起。SNARKs 證明 EVM 執行已經開髮了多年,這項技術正在被稱爲 ZK rollups 的二層協議積極使用。一些 ZK rollups 如今正在主網活躍,還有更多 即將 上線。但從長期來看,ZK-EVMs 不僅僅會被用於 rollups;我們希望使用它們來驗證一層的執行(參見:the Verge)。

一旦髮生這種情況,ZK-EVM 實際上成爲第三種類型的以太坊客戶端,對於網絡安全來説與今天的執行客戶端和共識客戶端一樣重要。這自然會提出一個問題:ZK-EVM 將如何與多客戶端理念交互?其中一個睏難的部分已經完成:我們已經有多個正在積極開髮的 ZK-EVM 實現。但其他睏難的部分仍然存在:我們如何真正創建一個“多客戶端”生態繫統,用於 ZK 證明以太坊區塊的正確性?這個問題引髮了一些有趣的技術挑戰 - 當然還有是否值得進行權衡的懸而未決的問題。

以太坊多客戶端理念的最初動機是什麽?

Ethereum的多客戶端理念是一種去中心化,就像@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274">一般去中心化,人們可以關註建築去中心化的技術優勢或者政治去中心化的社會優勢。最終,多客戶端理念由兩者激髮併服務於兩者。

技術去中心化的論據

技術去中心化的主要好處很簡單:它降低了一個軟件中的一個錯誤導緻整個網絡災難性崩潰的風險。一個歷史情況典型地錶現了這個風險,那就是2010年比特幣溢出bug。當時,比特幣客戶端代碼沒有檢查交易的輸出總和不會溢出(通過求和至 264−1的最大整數以上,將其歸零),於是有人做了一個完全這樣的交易,給自己分配了數十億比特幣。這個bug在幾小時內被髮現,一個修覆方案被迅速推出併在網絡上快速部署,但是如果當時已經有一個成熟的生態繫統,那些硬幣就會被交易所、橋接和其他結構接受,攻擊者可能會賺走大量的錢。如果當時有五個不衕的比特幣客戶端,那它們都有衕樣的bug的可能性就非常小,所以會立即出現分裂,buggy的一方可能會輸掉。

使用多客戶端方法來最小化災難性bug的風險是有一個權衡的:相反,你會得到共識失敗的bug。也就是説,如果你有兩個客戶端,那麽客戶端對某個協議規則有微妙的不衕解釋就有風險,而這兩種解釋都是合理的,不會導緻盜竊資金,但不衕意會導緻鏈分裂。曾經在Ethereum的歷史上髮生過一次嚴重的分裂(還有其他更小的分裂,其中很小一部分運行舊版本代碼的網絡分叉)。堅持單一客戶端方法的人將共識失敗視爲不應該有多個實現的理由:如果隻有一個客戶端,那麽這個客戶端不會與自己産生分歧。他們對客戶數量如何轉化爲風險的模型可能看起來像這樣:

我當然不衕意這種分析。我不衕意的關鍵在於 (i) 2010 年式的災難性錯誤也很重要,併且 (ii)你實際上永遠不會隻有一個客戶端。後一點在 2013 年的比特幣分叉事件中錶現得淋灕盡緻:由於兩個不衕版本的比特幣客戶端之間存在分歧,導緻鏈條分裂,其中一個版本意外地對單個區塊中可修改對象的數量設置了限製,而這一限製併沒有記録在案。因此,理論上的一個客戶端在實踐中往往是兩個客戶端,而理論上的五個客戶端在實踐中可能是六個或七個客戶端—所以我們應該冒著風險曲線右側的風險,至少擁有幾個不衕的客戶端。

政治權力下放的論點

壟斷客戶端開髮商擁有很大的政治權力。如果客戶端開髮人員提出更改,而用戶不衕意,理論上 他們可以拒絶下載更新版本,或者創建一個沒有它的分叉,但是在實踐中,用戶通常很難做到這一點。如果令人不快的協議更改與必要的安全更新捆綁在一起怎麽辦?如果主力團隊威脅説如果不按他們的意願就退出怎麽辦?或者,更溫和的是,如果壟斷客戶團隊最終成爲唯一擁有最豐富協議專業知識的群體,從而使生態繫統的其他成員處於不利地位來判斷客戶團隊提出的技術論點,從而使客戶團隊麵臨有很大的空間來推動自己的特定目標和價值觀,這可能與更廣泛的社區不匹配?

對協議政治的擔憂,尤其是在 2013-14 年比特幣 OP_RETURN 大戰 的背景下,一些參與者公開支持歧視鏈的特定用途,這是以太坊早期採用多客戶端理念的一個重要因素,其目的是讓一小部分人更難做出這類決定。以太坊生態繫統特有的擔憂—即避免權力集中在以太坊基金會內部—爲這一方曏提供了進一步的支持。2018 年,基金會做出決定,有意不實施以太坊 PoS 協議(即現在所謂的 “共識客戶端”),將這一任務完全交給外部團隊。

未來 ZK-EVM 將如何進入第 1 層?

如今,ZK-EVM 被用於彙總(rollup)中。這通過允許昂貴的EVM執行僅在鏈下進行幾次,而所有其他人隻需驗證在鏈上髮布的證明EVM執行已正確計算的SNARKs,從而增加了擴展性。它還允許一些數據(特別是簽名)不被包含在鏈上,節省了燃氣成本。這爲我們提供了大量的可擴展性好處,而可擴展計算的ZK-EVMs和可擴展數據的DAS(@vbuterin/sharding_proposal#ELI5-data-availability-sampling">data availability sampling)的結合可能讓我們能夠進行非常遠的擴展。

然而,今天的以太坊網絡也有一個不衕的問題,這是任何數量的第二層擴展都無法自行解決的:第一層很難驗證,以至於併不是很多用戶運行自己的節點。相反,大多數用戶隻是信任第三方提供商。輕客戶端如HeliosSuccinct正在採取步驟解決這個問題,但輕客戶端遠非完全驗證節點:輕客戶端隻驗證被稱爲sync committee的驗證器的隨機子集的簽名,併且不驗證鏈實際上遵循協議規則。爲了讓我們進入一個用戶實際上可以驗證鏈遵循規則的世界,我們將不得不做一些不衕的事情。

選項 1:限製第 1 層,迫使幾乎所有活動移至第 2 層

隨著時間的推移,我們可以將第 1 層每個區塊的 Gas 目標從 1500 萬減少到 100 萬,足以讓一個區塊包含一個 SNARK 和一些存款和取款操作,但僅此而已,從而迫使幾乎所有用戶活動移動到第 2 層協議。這樣的設計仍然可以支持在每個塊中提交許多彙總:我們可以使用由定製構建者運行的鏈下聚合協議,將來自多個第 2 層協議的 SNARK 收集在一起,併將它們組合成一個 SNARK。在這樣一個世界裡,僅有的 第 1 層的功能是成爲第 2 層協議的交換所,驗證它們的證明,偶爾促進它們之間的大額資金轉移。

這種方法可行,但它有幾個重要的缺點:

  • 它實際上是曏後不兼容的,從某種意義上説,許多現有的基於 L1 的應用程序在經濟上變得不可行。由於費用如此之高以至於超過了清空這些賬戶的成本,高達數百或數千美元的用戶資金可能會陷入睏境。這可以通過讓用戶簽署消息以選擇協議內大規模遷移到他們選擇的 L2 來解決(請參閲一些早期的實施想法),但這增加了過渡的覆雜性,而且真正使其足夠便宜需要在第一層使用一種 SNARK。我通常支持在處理@vbuterin/selfdestruct">像 SELFDESTRUCT 操作碼這樣的事情時打破曏後兼容性,但在這種情況下,權衡似乎不那麽有利。
  • 它可能仍然不足以使驗證變得足夠便宜。理想情況下,以太坊協議不僅應該在筆記本電腦上易於驗證,而且還應該在手機、瀏覽器擴展甚至其他鏈內部易於驗證。第一次衕步鏈或長時間離線後衕步鏈也應該很容易。筆記本電腦節點可以在約 20 毫秒內驗證 100 萬個 Gas,但即便如此,也意味著在一天離線後需要 54 秒進行衕步(假設@vbuterin/single_slot_finality">單槽最終確定性 將時隙時間增加到 32 秒),對於手機或瀏覽器擴展,每個塊將花費幾百毫秒,併且可能仍然是不可忽略的電池消耗。這些數字是可以管理的,但併不理想。
  • 即使在一個以L2爲主的生態繫統中,L1至少有一定的經濟承受能力也是有好處的。如果用戶髮現新的狀態數據不再被提供,那麽他們可以提取他們的資金,Validiums可以從更強的安全模型中受益。如果經濟上可行的直接跨L2轉賬的最小規模較小,那麽套利會變得更高效,尤其是對於較小的代幣。

因此,嘗試找到一種使用 ZK-SNARK 來驗證第 1 層本身的方法似乎更合理。

選項2:SNARK-驗證第1層

類型 1(完全等衕於以太坊)的 ZK-EVM 可用來驗證(第 1 層)以太坊區塊的 EVM 執行。我們可以編寫更多的 SNARK 代碼來驗證區塊的共識方。這將是一個具有挑戰性的工程問題:如今,ZK-EVM 驗證以太坊區塊需要幾分鐘到幾小時的時間,而實時生成證明將需要以下一種或多種方法:(i) 改進以太坊本身,刪除不支持 SNARK 的組件;(ii) 使用專用硬件提高效率;(iii) 通過更多併行化改進架構。但是,沒有任何基本的技術原因可以解釋爲什麽不能做到這一點—因此,我預計,即使需要很多年,也一定能做到。

在這裡,我們看到了與多客戶端範例的交叉點:如果我們使用 ZK-EVM 驗證第 1 層,我們該使用哪種 ZK-EVM?

我認爲有三個選項:

  1. 單個 ZK-EVM:放棄多客戶模式,選擇單個 ZK-EVM 來驗證區塊。
  2. 封閉式多 ZK-EVM:商定一組特定的多 ZK-EVM 併將其納入共識,併製定共識層協議規則,規定區塊需要該組 ZK-EVM 中半數以上的證明才能被視爲有效。
  3. 開放式多 ZK-EVM:不衕的客戶端有不衕的 ZK-EVM 實現,每個客戶端在接受一個有效的塊之前都會等待與其自己的實現兼容的證明。

對我來説,(3)似乎是理想的,至少直到併且除非我們的技術進步到我們可以正式證明 所有 ZK-EVM 實現都是彼此等效的,此時我們可以選擇最有效的一個。 (1) 將犧牲多客戶端範式的好處,(2) 將消除開髮新客戶端的可能性併導緻更加集中的生態繫統。 (3) 有挑戰,但這些挑戰似乎比其他兩個選項的挑戰要小,至少目前是這樣。

實現(3)不會太難:我們可以爲每種類型的證明建立一個 p2p 子網絡,使用一種類型證明的客戶端可以監聽相應的子網絡,直到收到驗證者認爲有效的證明爲止。

(3) 的兩個主要挑戰可能如下:

  • 延遲挑戰:惡意攻擊者可能會延遲髮布區塊,衕時髮布對一個客戶端有效的證明。實際上,生成對其他客戶端有效的證明需要很長時間(即使例如 15 秒)。這個時間足夠長,可能會産生一個臨時分叉,使鏈條中斷幾個時段。
  • 數據低效:ZK-SNARKs 的一個好處是,隻與驗證相關的數據(有時稱爲 “見證數據”)可以從區塊中移除。例如,一旦驗證了一個簽名,就不需要在區塊中保留簽名,隻需存儲一個比特,説明簽名有效,衕時在區塊中存儲一個證明,確認所有有效簽名都存在。但是,如果我們希望可以爲一個區塊生成多種類型的證明,那麽原始簽名就需要實際公布。

在設計單槽終局性協議時,可以通過小心謹慎來解決延遲問題。單槽終結協議可能需要每個槽兩輪以上的共識,因此可以要求第一輪包括區塊,隻要求節點在第三輪(或最後一輪)簽名前驗證證明。這樣就能確保在髮布區塊的截止日期與預期可穫得證明的時間之間始終有一個相當長的時間窗口。

數據效率問題必鬚通過設立單獨的協議來收集驗證相關的數據來解決。對於簽名,我們可以使用BLS聚合ERC-4337已經支持。另一個主要的驗證相關數據類別是ZK-SNARKs用於隱私。幸運的是,它們經常傾曏於有自己的聚合協議

衕樣值得一提的是,驗證第 1 層的SNARK有一個重要的好處:鏈上 EVM 執行不再需要由每個節點驗證,這使得可以大大增加 EVM 執行量。這可能是通過大大增加第1層的燃氣限製,或者通過引入被尊崇的rollups,或者兩者都有。

結論

要使開放的多客戶端 ZK-EVM 生態繫統運轉良好,需要做大量的工作。但好消息是,這些工作中的大部分都正在進行或即將進行:

  • 我們有多個強大的ZK-EVM 已經實現。這些實現還不是 類型 1(完全等衕於Ethereum),但其中許多正在積極朝這個方曏前進。
  • 輕客戶端上的工作,像HeliosSuccinct,最終可能會變成對以太坊鏈 PoS 共識側更全麵的 SNARK 驗證。
  • 客戶可能會開始嘗試使用 ZK-EVM 來證明自己的以太坊區塊執行能力,尤其是當我們有了無狀態客戶端 ,就沒有技術需要直接重新執行每個區塊來維護狀態。我們可能會得到一個從客戶端通過重新執行它們來驗證Ethereum區塊,到大多數客戶端通過檢查SNARK證明來驗證Ethereum區塊的緩慢而漸進的過渡。
  • ERC-4337和PBS生態繫統可能很快就會開始使用BLS和證明聚合等聚合技術,以節省gas費用。關於BLS聚合,這些工作已經開始

有了這些技術,未來看起來非常美好。以太坊區塊將比今天更小,任何人都可以在筆記本電腦甚至手機上或瀏覽器擴展內運行完全驗證的節點,而這一切都將在保留以太坊多客戶端理念優勢的衕時實現。

從長遠來看,當然,任何事情都有可能髮生。或許,人工智能將爲形式驗證提供超級動力,使其能夠輕鬆證明 ZK-EVM 實現等價,併找出導緻它們之間差異的所有錯誤。這樣一個項目甚至可能是現在就可以開始著手的實際項目。如果這種基於正式驗證的方法取得成功,就需要建立不衕的機製,以確保協議繼續保持政治去中心化;也許到那時,協議將被視爲 “完整的”,不可更改性規範也會變得更強。但即使這是一個更長遠的未來,開放的多客戶端 ZK-EVM 世界似乎也是一個自然的踏腳石,無論如何都有可能實現。

從近期來看,這仍然是一個漫長的旅程。ZK-EVM已經出現,但要使ZK-EVM在第1層真正可行,還需要它們成爲類型 1,併使其證明速度足夠快,以便可以實時髮生。如果有足夠的併行化,這是可行的,但仍然需要做很多工作才能實現。共識的變化,例如提高 KECCAK、SHA256 和其他哈希函數預編譯的 Gas 成本,也將是該圖景的重要組成部分。盡管如此,過渡的第一步可能會比我們預期的更快:一旦我們切換到 Verkle 樹和無狀態客戶端,客戶端就會開始逐步使用 ZK-EVM,而曏 “開放式多 ZK-EVM” 世界的過渡可能會自行開始。

聲明:

  1. 本文轉載自[vitalik],著作權歸屬原作者[vitalik],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

以太坊的多客戶端理念將如何與 ZK-EVM 相互影響?

中級Feb 28, 2024
本文介紹了以太坊如何維護其安全性和去中心化的一個關鍵但經常被忽視的方麵:其多客戶端方法。以太坊刻意缺少一個每個人都默認運行的“參考客戶端”。取而代之的是一個協衕管理的規範(目前用人類可讀但速度較慢的 Python 編寫)和多個實施該規範的團隊(也稱爲“客戶端”),用戶實際運行這些客戶端。
以太坊的多客戶端理念將如何與 ZK-EVM 相互影響?

以太坊維持其安全性和去中心化的一種方式,雖然未被充分討論,但仍然非常重要,那就是它的多客戶端理念。以太坊併沒有設置每個人都默認運行的”參考客戶端”。相反,它有一個由協作團隊管理的客戶端規格,這個規格目前是用易於人類閲讀但速度相對較慢的Python 編寫的。衕時,還有多個團隊在實現這個規格(也稱爲“客戶端”),這是用戶實際運行的。

每個以太坊節點運行一個共識客戶端和一個執行客戶端。截至目前,沒有共識或執行客戶端占網絡的 2/3 以上。如果該類別中份額少於 1/3 的客戶端存在錯誤,網絡將繼續正常運行。如果在其類別中占有 1/3 到 2/3 份額的客戶端(例如 Prysm、Lighthouse 或 Geth)存在錯誤,鏈將繼續添加區塊,但會停止最終確定區塊,從而爲開髮人員提供幹預時間。

一個被討論較少,但仍然非常重要的,即將在以太坊鏈驗證方式上髮生的主要轉變是 ZK-EVMs 的崛起。SNARKs 證明 EVM 執行已經開髮了多年,這項技術正在被稱爲 ZK rollups 的二層協議積極使用。一些 ZK rollups 如今正在主網活躍,還有更多 即將 上線。但從長期來看,ZK-EVMs 不僅僅會被用於 rollups;我們希望使用它們來驗證一層的執行(參見:the Verge)。

一旦髮生這種情況,ZK-EVM 實際上成爲第三種類型的以太坊客戶端,對於網絡安全來説與今天的執行客戶端和共識客戶端一樣重要。這自然會提出一個問題:ZK-EVM 將如何與多客戶端理念交互?其中一個睏難的部分已經完成:我們已經有多個正在積極開髮的 ZK-EVM 實現。但其他睏難的部分仍然存在:我們如何真正創建一個“多客戶端”生態繫統,用於 ZK 證明以太坊區塊的正確性?這個問題引髮了一些有趣的技術挑戰 - 當然還有是否值得進行權衡的懸而未決的問題。

以太坊多客戶端理念的最初動機是什麽?

Ethereum的多客戶端理念是一種去中心化,就像@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274">一般去中心化,人們可以關註建築去中心化的技術優勢或者政治去中心化的社會優勢。最終,多客戶端理念由兩者激髮併服務於兩者。

技術去中心化的論據

技術去中心化的主要好處很簡單:它降低了一個軟件中的一個錯誤導緻整個網絡災難性崩潰的風險。一個歷史情況典型地錶現了這個風險,那就是2010年比特幣溢出bug。當時,比特幣客戶端代碼沒有檢查交易的輸出總和不會溢出(通過求和至 264−1的最大整數以上,將其歸零),於是有人做了一個完全這樣的交易,給自己分配了數十億比特幣。這個bug在幾小時內被髮現,一個修覆方案被迅速推出併在網絡上快速部署,但是如果當時已經有一個成熟的生態繫統,那些硬幣就會被交易所、橋接和其他結構接受,攻擊者可能會賺走大量的錢。如果當時有五個不衕的比特幣客戶端,那它們都有衕樣的bug的可能性就非常小,所以會立即出現分裂,buggy的一方可能會輸掉。

使用多客戶端方法來最小化災難性bug的風險是有一個權衡的:相反,你會得到共識失敗的bug。也就是説,如果你有兩個客戶端,那麽客戶端對某個協議規則有微妙的不衕解釋就有風險,而這兩種解釋都是合理的,不會導緻盜竊資金,但不衕意會導緻鏈分裂。曾經在Ethereum的歷史上髮生過一次嚴重的分裂(還有其他更小的分裂,其中很小一部分運行舊版本代碼的網絡分叉)。堅持單一客戶端方法的人將共識失敗視爲不應該有多個實現的理由:如果隻有一個客戶端,那麽這個客戶端不會與自己産生分歧。他們對客戶數量如何轉化爲風險的模型可能看起來像這樣:

我當然不衕意這種分析。我不衕意的關鍵在於 (i) 2010 年式的災難性錯誤也很重要,併且 (ii)你實際上永遠不會隻有一個客戶端。後一點在 2013 年的比特幣分叉事件中錶現得淋灕盡緻:由於兩個不衕版本的比特幣客戶端之間存在分歧,導緻鏈條分裂,其中一個版本意外地對單個區塊中可修改對象的數量設置了限製,而這一限製併沒有記録在案。因此,理論上的一個客戶端在實踐中往往是兩個客戶端,而理論上的五個客戶端在實踐中可能是六個或七個客戶端—所以我們應該冒著風險曲線右側的風險,至少擁有幾個不衕的客戶端。

政治權力下放的論點

壟斷客戶端開髮商擁有很大的政治權力。如果客戶端開髮人員提出更改,而用戶不衕意,理論上 他們可以拒絶下載更新版本,或者創建一個沒有它的分叉,但是在實踐中,用戶通常很難做到這一點。如果令人不快的協議更改與必要的安全更新捆綁在一起怎麽辦?如果主力團隊威脅説如果不按他們的意願就退出怎麽辦?或者,更溫和的是,如果壟斷客戶團隊最終成爲唯一擁有最豐富協議專業知識的群體,從而使生態繫統的其他成員處於不利地位來判斷客戶團隊提出的技術論點,從而使客戶團隊麵臨有很大的空間來推動自己的特定目標和價值觀,這可能與更廣泛的社區不匹配?

對協議政治的擔憂,尤其是在 2013-14 年比特幣 OP_RETURN 大戰 的背景下,一些參與者公開支持歧視鏈的特定用途,這是以太坊早期採用多客戶端理念的一個重要因素,其目的是讓一小部分人更難做出這類決定。以太坊生態繫統特有的擔憂—即避免權力集中在以太坊基金會內部—爲這一方曏提供了進一步的支持。2018 年,基金會做出決定,有意不實施以太坊 PoS 協議(即現在所謂的 “共識客戶端”),將這一任務完全交給外部團隊。

未來 ZK-EVM 將如何進入第 1 層?

如今,ZK-EVM 被用於彙總(rollup)中。這通過允許昂貴的EVM執行僅在鏈下進行幾次,而所有其他人隻需驗證在鏈上髮布的證明EVM執行已正確計算的SNARKs,從而增加了擴展性。它還允許一些數據(特別是簽名)不被包含在鏈上,節省了燃氣成本。這爲我們提供了大量的可擴展性好處,而可擴展計算的ZK-EVMs和可擴展數據的DAS(@vbuterin/sharding_proposal#ELI5-data-availability-sampling">data availability sampling)的結合可能讓我們能夠進行非常遠的擴展。

然而,今天的以太坊網絡也有一個不衕的問題,這是任何數量的第二層擴展都無法自行解決的:第一層很難驗證,以至於併不是很多用戶運行自己的節點。相反,大多數用戶隻是信任第三方提供商。輕客戶端如HeliosSuccinct正在採取步驟解決這個問題,但輕客戶端遠非完全驗證節點:輕客戶端隻驗證被稱爲sync committee的驗證器的隨機子集的簽名,併且不驗證鏈實際上遵循協議規則。爲了讓我們進入一個用戶實際上可以驗證鏈遵循規則的世界,我們將不得不做一些不衕的事情。

選項 1:限製第 1 層,迫使幾乎所有活動移至第 2 層

隨著時間的推移,我們可以將第 1 層每個區塊的 Gas 目標從 1500 萬減少到 100 萬,足以讓一個區塊包含一個 SNARK 和一些存款和取款操作,但僅此而已,從而迫使幾乎所有用戶活動移動到第 2 層協議。這樣的設計仍然可以支持在每個塊中提交許多彙總:我們可以使用由定製構建者運行的鏈下聚合協議,將來自多個第 2 層協議的 SNARK 收集在一起,併將它們組合成一個 SNARK。在這樣一個世界裡,僅有的 第 1 層的功能是成爲第 2 層協議的交換所,驗證它們的證明,偶爾促進它們之間的大額資金轉移。

這種方法可行,但它有幾個重要的缺點:

  • 它實際上是曏後不兼容的,從某種意義上説,許多現有的基於 L1 的應用程序在經濟上變得不可行。由於費用如此之高以至於超過了清空這些賬戶的成本,高達數百或數千美元的用戶資金可能會陷入睏境。這可以通過讓用戶簽署消息以選擇協議內大規模遷移到他們選擇的 L2 來解決(請參閲一些早期的實施想法),但這增加了過渡的覆雜性,而且真正使其足夠便宜需要在第一層使用一種 SNARK。我通常支持在處理@vbuterin/selfdestruct">像 SELFDESTRUCT 操作碼這樣的事情時打破曏後兼容性,但在這種情況下,權衡似乎不那麽有利。
  • 它可能仍然不足以使驗證變得足夠便宜。理想情況下,以太坊協議不僅應該在筆記本電腦上易於驗證,而且還應該在手機、瀏覽器擴展甚至其他鏈內部易於驗證。第一次衕步鏈或長時間離線後衕步鏈也應該很容易。筆記本電腦節點可以在約 20 毫秒內驗證 100 萬個 Gas,但即便如此,也意味著在一天離線後需要 54 秒進行衕步(假設@vbuterin/single_slot_finality">單槽最終確定性 將時隙時間增加到 32 秒),對於手機或瀏覽器擴展,每個塊將花費幾百毫秒,併且可能仍然是不可忽略的電池消耗。這些數字是可以管理的,但併不理想。
  • 即使在一個以L2爲主的生態繫統中,L1至少有一定的經濟承受能力也是有好處的。如果用戶髮現新的狀態數據不再被提供,那麽他們可以提取他們的資金,Validiums可以從更強的安全模型中受益。如果經濟上可行的直接跨L2轉賬的最小規模較小,那麽套利會變得更高效,尤其是對於較小的代幣。

因此,嘗試找到一種使用 ZK-SNARK 來驗證第 1 層本身的方法似乎更合理。

選項2:SNARK-驗證第1層

類型 1(完全等衕於以太坊)的 ZK-EVM 可用來驗證(第 1 層)以太坊區塊的 EVM 執行。我們可以編寫更多的 SNARK 代碼來驗證區塊的共識方。這將是一個具有挑戰性的工程問題:如今,ZK-EVM 驗證以太坊區塊需要幾分鐘到幾小時的時間,而實時生成證明將需要以下一種或多種方法:(i) 改進以太坊本身,刪除不支持 SNARK 的組件;(ii) 使用專用硬件提高效率;(iii) 通過更多併行化改進架構。但是,沒有任何基本的技術原因可以解釋爲什麽不能做到這一點—因此,我預計,即使需要很多年,也一定能做到。

在這裡,我們看到了與多客戶端範例的交叉點:如果我們使用 ZK-EVM 驗證第 1 層,我們該使用哪種 ZK-EVM?

我認爲有三個選項:

  1. 單個 ZK-EVM:放棄多客戶模式,選擇單個 ZK-EVM 來驗證區塊。
  2. 封閉式多 ZK-EVM:商定一組特定的多 ZK-EVM 併將其納入共識,併製定共識層協議規則,規定區塊需要該組 ZK-EVM 中半數以上的證明才能被視爲有效。
  3. 開放式多 ZK-EVM:不衕的客戶端有不衕的 ZK-EVM 實現,每個客戶端在接受一個有效的塊之前都會等待與其自己的實現兼容的證明。

對我來説,(3)似乎是理想的,至少直到併且除非我們的技術進步到我們可以正式證明 所有 ZK-EVM 實現都是彼此等效的,此時我們可以選擇最有效的一個。 (1) 將犧牲多客戶端範式的好處,(2) 將消除開髮新客戶端的可能性併導緻更加集中的生態繫統。 (3) 有挑戰,但這些挑戰似乎比其他兩個選項的挑戰要小,至少目前是這樣。

實現(3)不會太難:我們可以爲每種類型的證明建立一個 p2p 子網絡,使用一種類型證明的客戶端可以監聽相應的子網絡,直到收到驗證者認爲有效的證明爲止。

(3) 的兩個主要挑戰可能如下:

  • 延遲挑戰:惡意攻擊者可能會延遲髮布區塊,衕時髮布對一個客戶端有效的證明。實際上,生成對其他客戶端有效的證明需要很長時間(即使例如 15 秒)。這個時間足夠長,可能會産生一個臨時分叉,使鏈條中斷幾個時段。
  • 數據低效:ZK-SNARKs 的一個好處是,隻與驗證相關的數據(有時稱爲 “見證數據”)可以從區塊中移除。例如,一旦驗證了一個簽名,就不需要在區塊中保留簽名,隻需存儲一個比特,説明簽名有效,衕時在區塊中存儲一個證明,確認所有有效簽名都存在。但是,如果我們希望可以爲一個區塊生成多種類型的證明,那麽原始簽名就需要實際公布。

在設計單槽終局性協議時,可以通過小心謹慎來解決延遲問題。單槽終結協議可能需要每個槽兩輪以上的共識,因此可以要求第一輪包括區塊,隻要求節點在第三輪(或最後一輪)簽名前驗證證明。這樣就能確保在髮布區塊的截止日期與預期可穫得證明的時間之間始終有一個相當長的時間窗口。

數據效率問題必鬚通過設立單獨的協議來收集驗證相關的數據來解決。對於簽名,我們可以使用BLS聚合ERC-4337已經支持。另一個主要的驗證相關數據類別是ZK-SNARKs用於隱私。幸運的是,它們經常傾曏於有自己的聚合協議

衕樣值得一提的是,驗證第 1 層的SNARK有一個重要的好處:鏈上 EVM 執行不再需要由每個節點驗證,這使得可以大大增加 EVM 執行量。這可能是通過大大增加第1層的燃氣限製,或者通過引入被尊崇的rollups,或者兩者都有。

結論

要使開放的多客戶端 ZK-EVM 生態繫統運轉良好,需要做大量的工作。但好消息是,這些工作中的大部分都正在進行或即將進行:

  • 我們有多個強大的ZK-EVM 已經實現。這些實現還不是 類型 1(完全等衕於Ethereum),但其中許多正在積極朝這個方曏前進。
  • 輕客戶端上的工作,像HeliosSuccinct,最終可能會變成對以太坊鏈 PoS 共識側更全麵的 SNARK 驗證。
  • 客戶可能會開始嘗試使用 ZK-EVM 來證明自己的以太坊區塊執行能力,尤其是當我們有了無狀態客戶端 ,就沒有技術需要直接重新執行每個區塊來維護狀態。我們可能會得到一個從客戶端通過重新執行它們來驗證Ethereum區塊,到大多數客戶端通過檢查SNARK證明來驗證Ethereum區塊的緩慢而漸進的過渡。
  • ERC-4337和PBS生態繫統可能很快就會開始使用BLS和證明聚合等聚合技術,以節省gas費用。關於BLS聚合,這些工作已經開始

有了這些技術,未來看起來非常美好。以太坊區塊將比今天更小,任何人都可以在筆記本電腦甚至手機上或瀏覽器擴展內運行完全驗證的節點,而這一切都將在保留以太坊多客戶端理念優勢的衕時實現。

從長遠來看,當然,任何事情都有可能髮生。或許,人工智能將爲形式驗證提供超級動力,使其能夠輕鬆證明 ZK-EVM 實現等價,併找出導緻它們之間差異的所有錯誤。這樣一個項目甚至可能是現在就可以開始著手的實際項目。如果這種基於正式驗證的方法取得成功,就需要建立不衕的機製,以確保協議繼續保持政治去中心化;也許到那時,協議將被視爲 “完整的”,不可更改性規範也會變得更強。但即使這是一個更長遠的未來,開放的多客戶端 ZK-EVM 世界似乎也是一個自然的踏腳石,無論如何都有可能實現。

從近期來看,這仍然是一個漫長的旅程。ZK-EVM已經出現,但要使ZK-EVM在第1層真正可行,還需要它們成爲類型 1,併使其證明速度足夠快,以便可以實時髮生。如果有足夠的併行化,這是可行的,但仍然需要做很多工作才能實現。共識的變化,例如提高 KECCAK、SHA256 和其他哈希函數預編譯的 Gas 成本,也將是該圖景的重要組成部分。盡管如此,過渡的第一步可能會比我們預期的更快:一旦我們切換到 Verkle 樹和無狀態客戶端,客戶端就會開始逐步使用 ZK-EVM,而曏 “開放式多 ZK-EVM” 世界的過渡可能會自行開始。

聲明:

  1. 本文轉載自[vitalik],著作權歸屬原作者[vitalik],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!