原文標題:《rollup 將成為 layer 2 世界的國王,那側鏈將何去何從?》
撰文:barrywhitehat, layer 2 技術研究者
翻譯:灑脫喜
隨著去中心化金融(defi)應用對以太坊主網造成的第一波衝擊,「擴容」的呼聲無疑越來越高,其關注度甚至可與當年比特幣的「區塊擴容」相提並論,而在 defi 炒作退潮之後,「layer 2」關鍵詞的出現頻率開始飆升,vitalik 本人甚至在本月初提出了一個以 rollup (注:當前最有希望的 layer 2 技術)為核心的以太坊路線圖,簡單說,在短期和中期(未來 2 年內),以太坊和 defi 的擴容就是以 rollup 二層網路為主,目前像 uniswap、curve、synthetix 等領先的 defi 專案方均已提出將應用遷移至 rollup 二層網路的計劃。
顯而易見,向 rollup 二層網路的遷移已成為一種大趨勢,而在這股不可逆的新潮流當中,還有很多其它曾被寄予厚望的 layer 2 方案,那它們將何去何從?
本文將關注側鏈(sidechain),這一最早被提出的 layer 2 方案之一。
簡介
layer 2 對以太坊的重要性每週都在增長,每個人都知道這一點。
然而,「layer 2」是一個不精確的標籤,現在,當人們說「layer 2」時,他們往往指的是「非以太坊 layer 1」。但是,與以太坊 layer 1 互動的方式是非常重要的。所有被視為「layer 2」的不同解決方案,可能具有著完全不同的屬性。
可以說,layer 2 應該只指具有特定屬性的某些東西(例如,我們可能都同意,存在於 aws 上的東西並非 layer 2,但有一些專案可以說具有類似的安全保證,因此被認為是 layer 2)。但這也許是另一個要討論的話題了。
在這篇文章中,我想深入研究側鏈的性質。
側鏈基本上是指一個系統,其中一組驗證器將區塊鏈的最新狀態 checkpoint 到一個智慧合約。然後,橋合約使用這些 checkpoint,以允許使用者存款和取款。在一組驗證器中,通常有一個 leader 選舉過程來確定誰可以建立區塊。leader 選舉機制的例子包括權威證明(poa)共識和權益證明(pos)。
側鏈在以太坊生態系統中扮演了重要角色。當研究社羣還在研究更好的解決方案時,它們一直是可擴充套件性及可用性的權宜方案。像 xdai 這樣的產品,強調了對更好的使用者體驗的需求,這種需求已滲透到了其他領域。
然而,側鏈並沒有更廣泛的以太坊社羣所期望的安全屬性,但這並不意味著它們永遠不應該被使用。如果使用側鏈的人充分意識到某些屬性的缺乏,並且仍然想使用它們,那這屬於他們的權力。權衡也許是值得的,但當人們對此漠不關心時就會很危險。這篇文章的目的是提供一些資訊,如果每個人都知道這些屬性,那麼它也不會有什麼壞處,但如果它能夠幫助人們認識到錯誤的假設,那它就是有意義的。
那側鏈缺少哪些安全屬性呢?幾乎所有的側鏈都無法提供:
1.抗審查性;
2.最終性(finality);
3.關於資金的保證;
我希望對這些屬性進行公開討論,以使每個人受益。
抗審查
相比精心設計的區塊鏈,側鏈的抗審查屬性更弱,這一點不應引起爭議,否則就不需要區塊鏈了。不過,讓我們進一步分解一下。
如果一條側鏈中涉及 n 個驗證者,並且只要 m 個驗證者同意就可以對一筆交易進行審查,那麼 n-m 是為了審查一個區塊而需要串通驗證者的數量。這就導致了一種微妙的平衡,即更難審查交易,會使得審查區塊變得更容易。考慮到交易審查和區塊審查都是不受歡迎的,這使得側鏈從根本上很難具有強大的抗審查屬性。
這種擔憂延伸到使用權益證明(pos)共識機制時, 隨著所涉及的數字按權益進行加權,這種情況可能會變得更糟,這意味著達到特定閾值所需的不同實體的數目可能甚至更低。
資料可用性保證
我們知道,n-m 個驗證者能夠建立一個區塊。我們還知道,為了驗證新狀態,所有其它驗證者都需要有關於整個狀態的資料。所以如果 n-m 個驗證者是惡意的,它們可以:
- 建立一個新區塊:
- 拒絕與誠實的驗證者共享資料;
- 有效地從共識中移除 n - (n-m) = m 個驗證者,從而控制系統;
這種情況發生的可能性有多大?這顯然取決於很多特定情況的細節,但是我們可從考慮理性驗證者與所有其它驗證者共享資料的動機開始。對於傳統的權威證明(poa),不這樣做可能會造成聲譽損失。而基於權益證明(pos)的側鏈,就可能會存在風險。然而,要做到這一點並不容易,因為沒有其他人將所有資料都放到鏈上,就無法證明某些資料是不可用的。這聽起來是否有點像是 optimistic rollup?是的,這意味著具有更好安全屬性的側鏈,本質上是降為 optimistic rollup。
在大多數側鏈中,驗證者會收到某種形式的付款。對於誠實的驗證者,這個獎勵會在 n 個驗證者之間共享。對於不誠實的驗證者,同樣的獎勵由 n?(n?m)=m 之間分享(最重要的是這裡 m
要記住的一個總體概念是,判斷資料可用性攻擊是非常困難的。對於誠實節點,它們通常與同步問題無法區分。
最終性(fnalization)
設想一系列狀態轉換,如下所示:
state1 => state2 => state3
其中每個 => 涉及到一組事務作為更新狀態的一部分應用。所謂最終性是指一旦被應用,一筆交易就無法被撤銷。
透過以太坊主網達成共識後側鏈 checkpoint 區塊。這可能會讓人認為,側鏈的最終性基本上等於以太坊的最終性。具體的說法為:「為了恢復側鏈上的區塊,你需要在以太坊上回滾區塊」,但事實並非如此。
這是因為最終性是關於恢復交易,而不是用新狀態替換舊狀態。因此,n-m 個驗證者就能夠執行以下轉換:
state1 => state2 => state3
(用 state1 替換 state3,這樣就可以在不需要以太坊主網回滾的情況下恢復假定已確認的 state2)
在側鏈端資金所有權的保障
假設存在一個狀態 state1 ={alice:1000,bob:0}
因此 alice 有 1000,bob 則為 0。現在假設 bob 是惡意的,他有效(或者可有效勾結)地控制了絕大多數的 poa 驗證者,那會發生什麼呢?
那麼,bob 就可以簡單地執行狀態轉換 state1 => state2,其中 state2 = {alice:0,bob:1000}。
這就等於把 alice 的所有資金偷走,然後將它們交到 bob 的手中。
因此,側鏈的防禦減少為:假設 n - m 個驗證者永遠不會被說服處理這種非法的狀態轉換。這一點有很多人是知道的,但我認為提醒每個人是有用的。
現在,可能有一些人(驗證者)可透過這種方式進行信任,就像我們很多人信任不同的中心化服務提供商一樣。有時候這是值得權衡的,很重要的一點,是要清楚這些權衡。
治理作為一種防禦措施所存在的問題
有時會有人提出這樣一個論點:「我們可以利用治理來解決迄今為止提到的所有問題。」
這當然是有缺陷的,因為它基本上是讓整個系統退化為治理。
這一論點讓我特別擔心的一個原因是,它意味著側鏈的其它屬性是擺設(在這種情況下,為什麼要有這些屬性呢?)。例如,如果治理是防止上述問題的最後一條退路,那麼這意味著權益證明(pos)、權威證明(poa)等實際上並不重要。
側鏈的性質在什麼情況下是特別有用的?
除了側鏈的輔助屬性,例如更快的出塊時間所導致更好的 ux (實際上資料庫也有這個優點),在某些情況下,側鏈的特定屬性可以說是特別適合的。例如:
- 如果你特別想要 n?m 個驗證者能夠執行任意狀態轉換。希望擁有主控制開關的企業應用,就是一個例子;
- 當 m = 0 ,並且你希望 n 個驗證者能夠執行任意狀態轉換(例如,在一個四方遊戲當中)。雖然這裡的一個問題是,1 個驗證者可以單方面停止區塊鏈;
最後的想法
在過去,側鏈是某些想要保持以太坊相容性和互操作性用例的唯一可行解決方案。而現在,隨著其它 layer 2 擴容解決方案變得成熟,現在是考慮如何使側鏈與這些解決方案更加相容的好時機。
最後,一些附加的特性 / 屬性對側鏈來說是很好的,其中包括:
- 無需費用就可實現大規模遷移,以確保使用者可以退出,而不會因為成本而被「卡住」;
- 用更強大的反審查功能來取代 leader 選舉機制(權益證明 pos 似乎是一個錯誤的方向,參見這裡);
- 要求協調者將兩個狀態之間的差異放到鏈上;
- 新增欺詐證明以防止非法狀態轉換;
隨著 optimistic rollup 技術和 optimistic vm (ovm) 的成熟,專案的權衡空間將發生變化。因此,現在似乎是更新側鏈屬性及其相關權衡的好時機。
感謝 albert ni 對本文的審閱和討論。
來源連結:ethresear.ch