OP 堆棧的模塊化數據可用性
發表於 2023-06-03 16:20 作者: GWEI Research
原文: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 堆棧架構的圖表。
通過對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 保證。
標題:OP 堆棧的模塊化數據可用性
地址:https://www.coinsdeep.com/article/14723.html
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。