「教宗維塔林克一世」重新定義L2
原文作者 -Vitalik.eth
編譯- Odaily 0xAyA

以太坊Layer 2 生態系統在過去一年中一直在快速擴張。以Starknet、Arbitrum、Optimism 和Scroll 為代表的ZK-EVM Rollup 生態系統,在提升安全性方面取得了巨大進展,L2beat頁面對每個項目的狀態進行了很好的總結。此外,我們也看到一些建構側鏈的團隊也開始建構Rollup (Polygon),一些Layer 1 項目試圖向有效性驗證(Validium)遷移(Celo)以及做出新的努力(Linea、Zeth 等)。
結果就是,Layer 2 計畫出現更異質的趨勢。我預期這一趨勢將持續下去,原因如下:
一些目前獨立的Layer 1 項目正在尋求更接近以太坊生態系統,並可能成為Layer 2 。這些項目可能需要逐步過渡。倘若在現在就進行轉換會導致可用性下降,因為技術還沒有準備好將所有內容放在Rollup 上;但過晚轉換則可能會犧牲發展動能,而且為時已晚,沒有任何意義。
一些中心化項目希望為用戶提供更多的安全保證,並正在探索基於區塊鏈的途徑。在許多情況下,這些項目在先前可能會探索「許可聯盟鏈」(permissioned consortium chains)。實際上,他們可能只需要一個「中間層」等級的去中心化。此外,它們通常具有非常高的吞吐量,使它們甚至不適合Rollup,至少在短期內是如此。
非金融應用程序,如遊戲或社交媒體,希望去中心化,但只需要一種「中間層」的安全性。例如社交媒體,實際上涉及對應用程序的不同部分進行不同處理:像用戶名註冊和帳戶恢復這樣的低頻且高價值的活動,應該在Rollup 上進行;像發布帖子和投票這樣高頻且低價值的活動,則需要較低的安全性。如果因為鏈的故障導致你的貼文消失,那是可以接受的代價;但如果鏈的故障導致你失去帳戶,那就是一個很大的問題。
一個重要的問題是,對目前以太坊Layer 1 的應用程式和用戶來說,在短期內支付較小但仍可見的Rollup 費用是可以接受的,但對區塊鏈世界以外的用戶來說不會接受:如果你之前支付的費用是1 美元,那麼支付0.10 美元是更容易接受的;但如果你之前支付的費用是0 美元,那麼支付0.10 美元是難以接受的。這既適用於目前中心化的應用程序,也適用於較小的Layer 1 ,這些項目通常在其用戶基數較小的情況下確實具有非常低的費用。
由此產生的問題是:對於一個特定的應用程序,在Rollup、Validium 和其他系統之間進行的這些複雜權衡中,哪種方案是合理的?
Rollups、Validiums、Disconnected
我們將探討的安全性與規模的第一個維度可以描述如下:如果你擁有在Layer 1 上發行的資產,然後將其存入Layer 2 ,然後轉移到你的帳戶,那麼你能否確保可以將該資產取回Layer 1 ?
同時還有一個類似的問題:導致這種保證的技術選擇是什麼,而這種技術選擇背後的權衡又是什麼?
我們可以簡單地使用一個表格來描述這個問題:

值得一提的是,這是一個簡化的架構,並且有許多中間項可選。例如:
介於Rollup 和Validium 之間:一種Validium 可以讓任何人進行鏈上支付以支付交易費用,此時操作者將被迫提供一些數據到鏈上,否則將失去押金。
介於Plasma 和Validium 之間:Plasma 系統提供類似Rollup 的安全性保證和鏈外資料可用性(Data availability,簡稱DA),但只支援有限數量的應用。一個系統可以提供完整的EVM ,並向不使用那些更複雜應用程式的使用者提供Plasma 等級的保證,向使用這些應用程式的使用者提供Validium 等級的保證。
這些中間選項可以被看作是在Rollup 和Validium 之間的一個技術光譜。但是是什麼促使應用程式選擇譜系上的某個特定點,而不是極左或極右呢?這裡有兩個主要因素:
以太坊本身的數據可用性成本將隨著技術的改進而逐漸降低。以太坊的下一個硬分叉,Dencun,引入了EIP-4844 (也稱為"proto-danksharding"),提供約32 kB/sec 的鏈上DA。在接下來的幾年裡,隨著完整的danksharding 推出,這個數字預計會逐步增加,最終達到約為1.3 MB/sec 的DA 目標。同時,數據壓縮的改進,將使我們能夠在相同數量的數據上做更多的事情。
應用本身的需求:相對於應用程式出現問題,使用者因高費用而遭受的損失有多大?金融應用會因應用程式故障而損失更多;遊戲和社交媒體涉及每個用戶大量的活動,且活動價值相對較低,因此對於它們來說,安全性的權衡是不同的。
這個權衡大致上看起來是這樣的:

另一個值得一提的部分保證是預確認(pre-confirmations)。預先確認是由Rollup 或Validium 中的一些參與者簽署的消息,它們表示「我們證明這些交易包含在此次順序中,而the post-state root 就是這個」。這些參與者可能會簽署一個與後來的實際情況不符的預確認;但如果他們這樣做,就會燒掉一筆押金。這對於低價值的應用程序(如消費支付)非常有用,而像數百萬美元的金融轉帳這樣的高價值應用程序可能會等待系統的完全安全性支援的「常規」確認。
預先確認可以被視為另一個混合系統的例子,類似於上面提到的“Plasma/Validium 混合系統”,但這次是在具有完全安全性但延遲較高的Rollup(或Validium)和具有較低安全等級但延遲較低的系統之間進行混合。需要較低延遲的應用程式獲得較低的安全性,但可以與需要較高延遲以換取最大安全性的應用程式共存於同一生態系統中。
無許信任地讀以太坊
另一種較少考慮但仍非常重要的連接形式與系統讀取以太坊區塊鏈的能力有關。特別是,這包括能夠在以太坊需要回滾時進行回滾。要了解為什麼這很有價值,請考慮以下情況:

假設,如圖所示,以太坊鏈發生回溯。這可能是在一個epoch 內暫時的故障,鏈沒有最終確定,也可能是網絡驗證著不活躍,太多的驗證者離線而導致鏈在一個較長時間內沒有最終確定。
這可能導致的最糟糕情況如下。假設頂鏈(the top chain)的第一個區塊從以太坊鏈的最左邊的區塊中讀取了一些資料。例如,有人在以太坊上存入了100 個ETH 到頂鏈中。然後,以太坊發生回滾。然而,頂鏈沒有回滾。結果,頂鏈的未來區塊正確地遵循了新的正確的以太坊鏈的新區塊,但現在錯誤的舊鏈(即100 個ETH 的存款)的結果仍然存在於頂鏈中。這種漏洞可能允許製造貨幣,將頂鏈上的橋接ETH 轉變為部分儲備。
有兩種方法可以解決這個問題:
頂鏈可以只讀取已經最終確定的以太坊區塊,這樣就不需要進行回滾操作。
如果以太坊發生回滾,頂鏈也可以進行回滾。
兩者都可以防止此問題發生。前者較容易實現,但如果以太坊進入不活躍期,可能會導致長時間喪失功能。後者更難實現,但始終確保最佳的功能。
需要注意的是,第一種方法(1)有一種特殊情況。如果51% 攻擊在以太坊上創建了兩個不相容的區塊,並且兩個區塊同時出現最終確定狀態,那麼頂鏈可能會選擇錯誤的區塊(即以太坊社區共識最終不支援的區塊),並且必須進行回滾以切換到正確的區塊。可以說,沒有必要事先編寫處理這種情況的程式碼;它可以透過對頂鏈進行硬分叉來處理這個問題。
鏈能夠無需許可地讀取以太坊上的資料非常有價值,原因如下:
減少將在以太坊(或其他Layer 2)上發行的代幣跨鏈到該鏈上時涉及的安全問題。
允許使用共用金鑰儲存結構的帳戶抽象錢包安全地在該鏈上持有資產。
第一個原因很重要,儘管這種重要性可能已經被廣泛認可;而第二個原因同樣重要,因為它意味著你可以擁有一個錢包,可以輕鬆更改密鑰,並在許多不同的鏈條上持有資產。
擁有一座橋會可以讓鍊子成為Validium 嗎?
假設頂鏈開始時是一條單獨的鏈,然後有人將跨鏈合約放到以太坊上。跨鏈合約只是一個合約,它接受頂鏈的區塊頭,驗證提交給它的任何頭都帶有一個有效的證書,表明它被頂鏈的共識所接受,並將該頭添加到列表中。應用程序可以在此基礎上構建,以實現存入和提取代幣等功能。一旦這樣的橋樑到位,它是否提供了我們之前提到的任何資產安全保障?

到目前為止,還沒有!原因有兩個:
我們正在驗證區塊是否已簽名,但未驗證狀態轉換是否正確。因此,如果你在以太坊上發行的資產存入了頂鏈,而頂鏈的驗證者耍流氓,他們可以簽署一個無效的狀態轉換,竊取這些資產。
頂鏈仍然沒有辦法讀取以太坊資料。因此,如果不依賴其他(可能不安全的)第三方橋,您甚至無法將以太坊原生資產存入頂鏈。
現在,讓我們讓這座橋成為驗證橋:它不僅檢查共識,還檢查一個ZK-SNARK,證明任何新區塊的狀態都正確計算。
一旦完成,頂鏈的驗證者就無法再竊取您的資金。他們可以發布一個包含不可用資料的區塊,阻止所有人退出,但他們不能竊取(除非試圖為用戶提取贖金以換取洩漏允許他們退出的資料)。這與Validium 的安全模型相同。
但是,我們仍然沒有解決第二個問題:頂鏈無法讀取以太坊。
為此,我們需要做以下兩件事之一:
將驗證最終以太坊區塊的跨鏈合約放在頂鏈內。
讓頂鏈中的每個區塊包含最近以太坊區塊的雜湊值,並有一個強制執行哈希連結的分叉選擇規則。也就是說,連接到不在規範鏈中的以太坊區塊的頂鏈區塊本身是非規範的,如果頂鏈區塊連接到以太坊區塊,該區塊最初是規範的,但後來變成了非規範的,那麼頂部鏈區塊也必須成為非規範的。

圖中紫色的鏈接可以是哈希鏈接,也可以是驗證以太坊共識的橋接合約。
這樣就夠了嗎?事實證明,還不夠,因為存在一些小的特殊情況:
如果以太坊受到51% 攻擊會怎麼樣?
如何處理以太坊硬分叉升級?
如何處理頂鏈的硬分叉升級?
以太坊的51% 攻擊會產生與頂鏈的51% 攻擊類似的後果,但方向相反。以太坊的硬分叉可能使頂鏈內的以太坊橋接不再有效。對於這個問題,最乾淨的解決方式是承諾如果以太坊回滾了一個已最終確定的區塊,頂鏈也會回滾,並且如果以太坊進行硬分叉,頂鏈也會進行硬分叉。這樣的承諾可能永遠不需要真正執行:你可以在頂鏈上啟動一個治理機制,如果它看到可能發生攻擊或硬分叉的證據,只有當治理機制失敗時才對頂鏈進行硬分叉。
對於問題(3),唯一可行的答案是,在以太坊上擁有某種形式的治理機制,可以讓以太坊上的橋接合約意識到頂鏈的硬分叉升級。
總結:雙向驗證橋接幾乎足以使鏈條成為Validium。剩下的主要問題是,當以太坊發生異常情況導致橋接無法運作時,另一條鏈將進行硬分叉的社會承諾。
結論
「與以太坊的連結」有兩個關鍵維度:
提現到以太坊的安全性
讀取以太坊資料的安全性
這兩個維度都很重要,並且有不同的考慮因素。在這兩種情況下都存在一個譜系:

請注意,每個維度都有兩種不同的衡量方式(所以實際上有四個維度?):提取安全性可以透過(i)安全等級和(ii)從最高安全等級中獲益的使用者或使用案例的百分比來衡量,而讀取安全性可以透過(i)鏈路能夠快速讀取以太坊的區塊,特別是已經最終確定的區塊與任何區塊的區別,以及(ii)鏈路在處理51% 攻擊和硬分叉等邊緣情況時的社會承諾的強度。
在這個設計空間中,有許多項目都具有價值。對於某些應用程式來說,高安全性和緊密的連接性很重要。對於其他應用程式來說,為了獲得更高的可擴展性,可以接受一些較為寬鬆的連接性。在許多情況下,從今天開始使用一些較為寬鬆的方法,並在未來十年隨著技術的改進逐漸過渡到更緊密的連接可能是最佳選擇。


