原文作者:Mustafa Al-Bassam, Ertem Nusret Tas, Nima Vaziri

在Celestia上,Rollup是如何被用作主權鏈的?

大多數使用Celestia 作為其共識和數據可用性層的應用程序都將託管在Rollup 上。作為一種新的第2 層解決方案,最初提出以提高交易吞吐量,Rollup 可能是幾乎所有區塊鏈應用程序的未來家園,無論是使用Celestia、以太坊還是其他平台來實現共識和數據可用性。

在這篇文章中,我們將討論什麼是Rollup,它們目前如何在以太坊上運行以及它們將如何在Celestia 上運行。

在當前的以太坊Rollup 中,以太坊鏈被奉為Rollup 的結算層,使Rollup 有效地成為以太坊的“嬰兒鏈”,其中Rollup 鏈由以太坊上的智能合約定義。這也可以與Polkadot 平行鏈模型相媲美,其中中繼鏈被奉為平行鏈的結算層。

然而在Celestia 中,我們設想了一種新型的Rollup:主權Rollup 鏈。這些是獨立的主權鏈,其中Rollup 鏈由Rollup 子網絡本身定義,類似於獨立的L1,並且可以選擇與其他鍊或結算層一起擁有受信任或信任最小化的橋樑。

目錄

什麼是Rollup?

以太坊上的Rollup(結算層)

Celestia(主權)上的Rollup

主權交叉Rollup 通信

為什麼是主權的?

什麼是Rollup?

Rollup 是將其區塊發佈到另一個區塊鏈的區塊鏈,並繼承該區塊鏈的共識和數據可用性(稱為一個“共識和數據可用性層”)。

典型的Rollup 由三個主要方維護:排序器(sequencers)、Rollup 完整節點、Rollup 輕客戶端。所有Rollup 都有一個狀態,例如,可能是Rollup 用戶在某個時間點的所有帳戶地址和代幣餘額。

Sequencers 是接收來自用戶的新Rollup 交易的節點,將交易組合成一個區塊,並將該區塊發佈到共識和數據可用性層。一個區塊由兩部分組成:區塊頭和實際的交易數據。除其他外,區塊頭包含對鏈狀態的加密承諾——通常是Merkle 根。

Rollup 完整節點是下載所有Rollup 區塊頭和交易數據、處理和驗證所有交易的節點,以計算Rollup 的狀態並檢查所有交易是否有效。如果全節點在匯總區塊中遇到無效事務,它會拒絕並忽略該區塊。因此,Sequencers 無法創建具有無效交易的有效區塊,因為節點會從他們的視野中拒絕它們。

Rollup 輕客戶端只下載rollup 區塊頭,不下載和處理任何交易數據,因此無法計算最新狀態或驗證rollup 本身的狀態有效性。相反,他們可以從最新的Rollup 區塊頭中了解最新的狀態承諾,並向Rollup 完整節點詢問部分狀態。他們還使用欺詐證明或有效性證明等技術間接檢查Rollup 交易的有效性。

當Rollup 節點同步Rollup 鏈時,它們使用共識和數據可用性層對Rollup 區塊施加的排序。如果它是Rollup 中要在數據可用性層上發布的第一個處於其高度的有效區塊,則它們將確認這個Rollup 區塊的最總想- 無論是直接檢查有效性(完整節點)還是間接檢查有效性(輕客戶端)。

有關Rollup 的更詳細和技術性的解釋,我們建議讀者參閱 Celestia 論壇上有關Rollup 的文章。

以太坊上的Rollup(enshrined 結算)

當前以太坊上的Rollup 將其區塊直接發佈到基於EVM 的智能合約,也稱為橋合約。該合約有效地實現了一個用於Rollup 的鏈上輕客戶端,該客戶端接收區塊頭並處理欺詐或有效性證明。在這個模型中,以太坊主鏈有一個神聖的、硬編碼的、信任最小化的橋。

使用橋合約,用戶可以在Rollup 和橋合約所在的執行鏈之間以信任最小化的方式存取資產,因為由於欺詐或有效性證明,合約不會接受來自Sequencers 的無效區塊。

以太坊鏈作為共識和數據可用性層,僅記錄和最終確定根據橋合約有效的區塊。因此,Rollup 完整節點和輕客戶端(智能合約之外)將以太坊鏈上輕客戶端視為關於什麼是規範(正確)Rollup 鏈的真相的根本來源。在這個模型中,我們認為以太坊被奉為Rollup 的耦合結算層,其中Rollup 是以太坊的“嬰兒鏈”,而不是一種擁有自己權利的獨立鏈。

Celestia上的Rollup(主權)

Celestia 上的主權Rollup 不會將他們的區塊發佈到智能合約中,而是直接作為原始數據發佈到鏈上。 Celestia 共識和數據可用性層不解釋或對Rollup 區塊執行任何計算,也不為Rollup 運行鏈上輕客戶端。

相反,Rollup 像第1 層區塊鏈一樣有效地運行:完整節點和輕客戶端直接從Rollup 自己的點對點網絡下載Rollup 的區塊。主要區別在於,他們還通過Merkle 證明驗證了Rollup 區塊數據是否包含在Celestia 數據可用性層上並對其進行排序。因此,與第1 層區塊鏈類似,這個規範鏈由本地驗證分叉選擇規則和Rollup 交易的節點確定,而不是由鏈上輕客戶端確定。

欺詐和有效性證明的工作方式也類似於它們在第1 層區塊鏈中的工作方式。欺詐證明通過點對點網絡直接傳遞給客戶端,有效性證明簡單地包含在區塊頭中(例如,參見Mina 協議)。因為點對點網絡中的網絡同步延遲很可能遠小於獲取包含在鏈上的欺詐證明的延遲,這意味著點對點欺詐證明的挑戰期可能要短得多,從而為輕客戶端帶來更快的最終確定性。

在這個模型中,Rollup 和任何結算層之間沒有橋,因為rollup 區塊只是直接發佈到數據可用性層,而不是智能合約。這與Cosmos 的設計理念相一致,在Cosmos zones 中,通往Cosmos Hub 的橋不是內置確定的,而是可選的,可以添加,同時仍允許zones 保留其主權。 Rollups 仍然可以以信任最小化的方式連接到其他Rollup——我們將在下一節討論這個問題。

如果一條Rollup 鏈沒有規定一個結算層來確定規範鍊和Rollup 的交易有效性規則,則它是主權的。相反,Rollup 的規範鍊是由Rollup 的點對點網絡中的節點確定的(前提是這些區塊在數據可用性層上可用)。這意味著結算層不能強制將交易包含在Rollup 中。

“不設結算層”主要是社會區別,而不是技術區別,這意味著Rollup 的社區之間存在社會合約,即Rollup 的交易有效性規則由社區定義,而不是不可變的L1 合約。在實踐中,這意味著到Rollup 的橋(未被寫入)必須是可變的,以便有一條升級路徑來確認主權Rollup 上的硬分叉(在下一節中討論)。

因此,這意味著Rollup 社區可以通過硬分叉升級鏈,而無需對結算層或數據可用性層進行硬分叉,也無需嵌入破壞鏈的信任最小化性質的鏈上治理。如果有資產是在主權Rollup 鏈上本地鑄造的,而不是所有資產都從其他鏈橋接,則這一點尤其重要。

主權Rollups 也可以僅將以太坊用作數據可用性層,而無需將以太坊用於結算,但是與使用諸如Celestia 之類的“純”數據可用性層相比,這會增加更多開銷,因為Rollup 節點需要對數據的有效性感興趣以太坊結算層中的所有交易,以便為以太坊數據可用性層運行一個節點。

也可以在Celestia 上構建一個“結算Rollup‌”,這是主權Rollup 的一種。結算Rollup 可以具有將其用作結算層的非主權Rollup。然而,結算層是主權的,就像以太坊L1 是主權一樣,因為它的社區經常通過社會共識用硬分叉升級它。

主權跨Rollup 通信

如上所述,Celestia Rollup 在Rollup 和任何結算層之間沒有一座設置的橋樑。 Rollup 的結算層和執行層因此被解耦和模塊化。那麼Celestia Rollups 如何連接到其他鏈呢?因為沒有結算層,這讓我們有更廣闊的跨鏈橋設計空間。我們在下面探索設計空間和各種選項。

讓我們假設某個主權Rollup 鏈A 想要與另一個鏈B 橋接——我們將假設它也是一個Rollup。

點對點vs. 鏈上結算

鏈A 和B 可以直接在兩個鏈的輕客戶端中相互嵌入一個輕客戶端。例如,兩條鏈都將為鏈A 和B 運行一個輕客戶端。輕客戶端因此將通過點對點網絡直接接收區塊頭和任何相關的欺詐或有效性證明。我們將此稱為點對點結算。

兩個鏈上都存在一個橋合約,這將允許資產被提取並存入任一鏈(例如通過鎖定和鑄造機制‌),並由每個鏈的sequencers 或驗證者監控(通過中繼器直接或間接實現)以執行轉移。

另一方面,輕客戶端也可以實現為鏈上智能合約,將區塊頭和欺詐/ZK 證明提交給鏈上智能合約。這就是以太坊Rollup 的現狀。我們將此稱為鏈上結算。

中心輻射型vs. 點對點橋接

目前,預計Rollup 將連接到充當結算中心的單個結算層,例如以太坊(中心輻射橋接)。如果Rollup 鏈A 和B 都連接到同一個中心(hub),那麼它們可以使用hub 作為結算的中介來將資產相互連接起來。

但是,就像IBC 一樣,Rollup 也可以選擇直接相互橋接,而不是使用中間Hub 鏈(點對點橋接)。

動態與靜態橋接

根據Rollup 鏈的執行環境,可能需要鏈升級或硬分叉來橋接新鏈。這是因為鏈A 和B 必須支持彼此的執行環境,才能支持彼此的欺詐或ZK 證明。

讓我們假設Optimistic Rollup 鏈A 的狀態機是直接用Golang 編寫的(例如使用Cosmos SDK),而不是像EVM 或CosmWasm 這樣的智能合約環境。為了與鏈B 橋接,鏈B 需要升級其節點軟件,以便將鏈A 的狀態機作為庫,以驗證鏈A 的欺詐證明。這是因為鏈B 無法自動添加鏈A 的狀態機代碼,因為它可能是惡意的或不確定的,從而構成安全風險。因此,需要社會共識或治理來增加這樣的橋。在使用鏈B 不理解的ZK 證明結構的有效性Rollup 的情況下,這也同樣需要。我們將其稱為靜態橋接,因為必須通過鏈升級顯式添加橋接。這樣的橋可以實現為 IBC 輕客戶端‌。

另一方面,如果Optimistic Rollup 鏈A 是在EVM 或CosmWasm 等沙盒智能合約環境中編寫的,那麼鏈B 可以允許將鏈A 的狀態機代碼直接添加到鏈B 的狀態機中,而無需任何必要用於社會共識或治理,例如使用智能合約。同樣,如果鏈A 是ZK 匯總,它可以動態橋接到鏈B,只要鏈B 能夠理解鏈A 的ZK 證明。我們將此稱為動態橋接。

非enshrined 與enshrined 結算層

如果Rollup 鏈將其區塊和證明發佈到充當結算中心(如以太坊)的結算層,則我們說如果規範鍊及其交易有效性規則由結算層確定,則結算層是enshrined(神聖或完美)的。

另一方面,如果Rollup 將其區塊和證明發佈到結算層,但Rollup 的規範鏈最終由Rollup 網絡本身決定,我們就說結算層是非enshrined。為了使非enshrined 的結算層有意義,它應該有一種不需要硬分叉結算層的方式來升級Rollup。

基於委員會與基於證明的橋

為了使兩條Rollup 鏈之間的跨鏈橋的信任最小化,Rollup 鏈必須驗證彼此的欺詐或ZK 證明,這意味著它們必須了解彼此的狀態機(基於證明的橋樑)。

但是,也存在基於委員會的橋(例如今天的IBC 橋),該橋不依賴於狀態有效性的證明,而是依靠委員會來證明區塊的有效性。這樣的橋樑並沒有最小化信任,因為委員會可以竊取資金。然而,這樣的橋可能具有較低的複雜性,因為目標鏈不需要具有處理源鏈的欺詐或ZK 證明的功能。

在當前的IBC 橋中,委員會是源鏈的驗證者集。然而,人們可以設想這樣一個世界,委員會由證明多個鏈的專業跨鏈橋提供商運營。這可以被認為是僅用於橋的鏈間安全性,而不是區塊生產。在這樣的設置中,橋委員會與源鏈的驗證者集解耦。

可升級與不可升級的跨鏈橋

當前以太坊Rollup 的最終目標是Rollup 不應由多重簽名或委員會進行升級,因為如果可以,它們不會被信任最小化,因為資金可能會通過升級被盜。在這個模型中,Rollup 只能通過硬分叉L1 來升級,因為規範鍊是由L1 的結算層定義的,這意味著Rollup 沒有主權。

然而,為了使主權Rollup 變得實用,應該有一個升級路徑,承認Rollup 是主權的而不是神聖的結算層的。有幾種方法可以考慮,這些方法會影響橋是否最小化信任。假設一條Rollup 鏈A 是硬分叉,而鏈B 需要為鏈A 升級其輕客戶端:

對於靜態橋,鏈B 也需要硬分叉。這樣的升級路徑將意味著橋的信任最小化,因為不涉及多重簽名或委員會。

對於動態橋,由鏈A 控制的委員會(例如DAO)可以升級鏈B 上的輕客戶端。這將是一個可信的橋。

對於動態橋,由鏈B 控制的委員會(例如DAO)可以升級鏈B 上的輕客戶端。如果鏈B 是結算層,這使結算層有責任實施升級,這可能是可取的,如果結算層有專門的治理,或具有較高的經濟安全性。這也將是一個值得信賴的橋。

為什麼是主權?

“主權不僅僅是一個模因。這是硬分叉的能力。這是一種認識:區塊鍊和社會中最重要的一層是社會共識。

這是人>代幣的編碼。人> 驗證者。人> 治理。 ”

Rollup 的核心是簡單的區塊鏈,而Rollup 橋只是這些區塊鏈的輕客戶端。以太坊推廣的Rollup 的當前現狀旨在具有神聖的結算層的不可升級的匯總。這等效於為永遠無法升級的區塊鏈運行客戶端,其區塊只有在被輕客戶端的一個神聖的鏈上實例接受以進行Rollup 時才有效。如上所示,這只是Rollup 設計空間的一小部分。

在Celestia Labs,我們對沒有固定結算層的主權Rollup 感興趣,因為我們相信區塊鏈中最重要的層是社會共識。特別是,區塊鍊是一種允許社區以主權方式進行社會協調的工具,而不會受到現狀的負擔。這意味著將硬分叉視為一項功能,而不是錯誤,因為硬分叉賦予主權社區強制執行社會共識的能力。當出現問題時,這作為一種社會追索機制尤其重要,例如在DAO 黑客攻擊後以太坊分叉時。

主權Rollups 將成為主權社區擁有社區計算機來跟踪和執行社會經濟價值和協議的有效方式,無需引導或維護自己的共識層和驗證者集的開銷,也無需服從於一個他們支持或不支持的神聖的結算層的社會共識。

主權Rollups 還為開發人員在其執行環境中提供了更大的靈活性,因為他們不受必須為其Rollup 處理欺詐或ZK 證明的神聖結算層的限制,因為在許多情況下,某些結算層存在欺詐或ZK 證明可能無法輕鬆或有效地處理。

請留意未來的帖子,我們將更深入地闡述為什麼主權在區塊鏈中很重要。

相關閱讀: Layer2之後該怎麼擴容,深度解讀Celestia的數據可用性模塊