OP 堆棧的模塊化數據可用性

原文:Javed Khan | celestia blog 編譯:GWEI Research

簡介

自去年發布以來,OP Stack 在匯總開發人員中獲得了巨大的吸引力。它被創建新匯總的開發人員和Caldera 和Conduit 等模塊化基礎設施提供商所接受,使開發人員能夠快速啟動他們自己的rollups 。

正如去年的公告所述,模塊化是OP Stack 願景的一個基本方面:

Each layer of the OP Stack is described by a well-defined API, to be filled by a module for that layer. […] Want to swap out Ethereum for Celestia as a data availability layer? Sure! Want to run Bitcoin as the execution layer? Why not!
OP Stack 的每一層都由定義良好的API 描述,由該層的模塊填充。 […] 想要將以太坊換成Celestia 作為數據可用性層?當然!想要運行比特幣作為執行層?為什麼不!

Optimism 快速接近的Bedrock 升級將模塊化OP Stack 的執行層和證明系統,從而實現與未來欺詐和有效性證明的兼容性。

受此啟發,Celestia Labs 一直專注於進一步推動OP Stack 的模塊化。因此,今天,我們很高興地宣布OP Stack 的模塊化數據可用性(DA) 接口的Beta 版發布,這是OP Labs 關注開發人員反饋的第一個OP Stack Mod。該接口允許開發人員定義DA 層並從他們喜歡的任何區塊鏈繼承安全性,無論是以太坊、Celestia 還是比特幣。

開發人員今天可以開始試驗使用Celestia 進行DA 並“定居”在以太坊上的OP Stack 版本。 Caldera 將很快發布Taro 測試網,它允許開發人員和用戶使用Modular DA 試用OP Stack 的第一個公共測試網。

數據可用性層是rollup 架構的基礎,確保獨立驗證rollup 鏈所需數據的可用性。下面我們將探討OP 堆棧中數據可用性的基礎知識,以及我們如何通過定義良好的DA 接口將其模塊化以從L1 發布和檢索數據。

OP 堆棧中的數據可用性:今天

OP Stack 如何處理當今的數據可用性?出於我們的目的,我們深入研究了兩個基本組件,Rollup 節點和Batcher,如下所述。

要更廣泛地了解OP Stack 的其餘部分如何在幕後工作,請查看Optimism 文檔。

Rollup 節點

Rollup 節點是負責從L1 塊(及其相關的收據)派生出正確的L2 鏈的組件。 rollup 節點檢索L1 塊,過濾數據交易(通常以交易calldata的形式),並從該數據中導出正確的L2 鏈。

Batcher——批處理提交者

批處理提交者,也稱為批處理者,是將L2 排序器數據提交給L1 以供驗證者使用的實體。 rollup 節點和batcher 都在一個循環中工作,使得batcher 新提交的L2 塊數據由rollup 節點從L1 中檢索,並用於派生下一個L2 塊。

批處理程序提交的每個事務都包含calldata,它是L2 排序器數據,分為稱為幀的字節,是Optimism 中數據的最低抽象級別。

用於OP Stack 的模塊化DA 接口

在為OP Stack 創建模塊化DA 接口時,我們的目標很簡單:使匯總開發人員能夠將任何區塊鏈指定為其數據可用性層,無論是以太坊、Celestia 還是比特幣。在沒有這樣的接口的情況下,新DA 層的每次集成都可能需要開發人員實現和維護OP Stack 的一個單獨分支。

OP Stack 已經包含在代碼庫中指定L1Chain和L2Chain的抽象,允許我們為數據可用性鏈建模一個新的與區塊鏈無關的接口,我們稱之為DAChain。

使用下面定義的接口,開發人員可以實現DAChain來讀取和寫入任何底層區塊鏈甚至像S3 這樣的集中式後端的數據。

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

編寫階段

以下為接口的Celestia 實現編寫示例概述了與批處理程序的集成:

SimpleTxManager.send是負責創建和發送實際交易的函數,它被修改為調用WriteFrame將幀寫入Celestia 並返回一個引用。

然後將引用作為calldata提交到批處理收件箱地址,以代替通常的幀數據。

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

讀取階段

以下是與rollup節點集成的接口的Celestia 實現的概述:

DataFromEVMTransactions是負責從交易列表中返回幀數據的函數。它被修改為使用從批處理收件箱calldata中檢索到的幀引用來實際獲取幀並將其附加到返回數據。

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

請注意,對NamespacedData的調用返回在給定BlockHeight提交的所有blob 的字節切片數組,因此我們只返回我們感興趣的TxIndex。

將Celestia 集成為DA 層

顯示與Celestia + OP 堆棧集成相比的OP 堆棧架構的圖表。

顯示與Celestia + OP 堆棧集成相比的OP 堆棧架構的圖表。

通過對Rollup節點和批處理程序進行一些小的修改,我們可以使OP Stack 使用Celestia 進行DA。

這意味著派生L2 鏈所需的所有數據都可以作為本地blob 數據在Celestia 上提供,而不是發佈到以太坊,儘管一個小的固定大小的幀引用仍然作為批處理程序calldata發佈到以太坊。幀參考用於使用celestia-node ‌輕節點在Celestia 上查找相應的幀。

如何整合運作?

編寫階段

如上所述,批處理程序將L2 排序器數據作為稱為幀的字節提交到以太坊L1 上的批處理收件箱合約地址。

我們保留批處理程序和calldata事務以保證幀的排序,但我們用固定大小的幀引用替換calldata中的幀。什麼是參考幀?它是對Celestia 數據交易的引用,該交易已成功將幀數據作為Celestia 的一部分包含在內。

我們通過在批處理服務中嵌入一個celestia-node 輕節點來做到這一點。每當有新的batch 等待提交時,我們首先使用輕節點向Celestia 提交數據事務,然後在batchercalldata中僅提交幀引用。

讀取階段

在讀取階段,我們做相反的事情,即我們使用批處理事務calldata中的幀引用來解析它並從Celestia 檢索相應的實際幀數據。同樣,我們在rollup 節點中嵌入了一個celestia-node 輕節點來查詢它的交易。

在派生L2 鏈時,rollup 節點現在透明地從輕節點讀取數據,並能夠繼續構建新區塊。輕節點只下載由rollup 提交的數據,而不是像以太坊那樣下載整個鏈。

展望

欺詐證明是Optimism 後Bedrock 路線圖的關鍵部分,我們希望探索升級我們的OP Stack x Celestia 集成,以在以太坊主網上使用欺詐證明。

為此,我們可以利用量子引力橋(QGB),它將跨鏈DA 證明中繼到以太坊,以啟用鏈上驗證匯總數據已在Celestia 上可用,以便匯總數據可以在欺詐證明。這將允許OP Stack Rollup 直接利用Celestia 提供的DA 保證。

Total
0
Shares
Related Posts