作者:Karen
編譯:Foresight News
Arbitrum One 主網將於8月31日遷移至Nitro,這是Arbitrum 的對吞吐量、交易成本、效率改善的一次重大迭代,將與半個月公開發布的Arbitrum Nova 共存。這意味著此前備受關注的Odyssey 活動也可能會並行重啟。
Offchain Labs 在最新發布的Arbitrum Nitro 白皮書中,將Arbitrum Nitro 視為第二代Optimistic Rollup,相比之前的Rollup,Nitro 能夠提供更⾼的吞吐量、更快的最終確定性和更有效的爭議解決方案。
Arbitrum Nitro 技術的核心是一個新的證明器(prover),可以在WASM 代碼上進行Arbitrum 的交互式欺詐證明。也就是說, L2 Arbitrum 引擎可以在WASM 上運行,取代一直定制設計的AVM(Arbitrum EVM)架構,可以使用標準的語言和工具來構建和編譯。
將Gethcore 直接編譯到Arbitrum 中是Nitro 最酷的地方,Geth 實際上定義了以太坊標準的EVM 引擎。所以本質上,Nitro 是在以太坊之上的Layer2 運行Geth,並且可以證明對編譯為WASM 的Geth 核心引擎的欺詐。
Arbitrum 此前也表示,Nitro有著優化過後的批處理和數據壓縮組件,能進一步降低Arbitrum 的交易成本,並且具有以太坊L1 Gas 兼容性等,除此之外,欺詐證明、排序器、代幣橋也是Nitro的組件。由於Nitro 建立在WASM 和Geth 等標準技術之上,因此它更兼容EVM。根據白皮書,改進過後的Nitro 相較Arbitrum One,效率更高,延遲性更低,激勵兼容性也更好。
Arbitrum 實現這些屬性的設計原則包括:
-將事務排序與確定性執⾏分開;
-將現有的以太坊模擬軟件與擴展相結合,並實現跨鏈功能;
-分別編譯執行和證明;
-使用基於交互式欺詐證明的Optimistic Rollup 協議將交易結果放置在Layer1。
一、排序和確定性執行
Nitro 分兩個階段處理提交的交易,排序器(Sequencer)進行交易排序,並將訂單作為實時流和壓縮數據批次發佈在Layer1 鏈上。這些交易會按確定性狀態轉換函數⼀次處理⼀個有序交易,該函數更新鏈狀態並⽣成Layer2 區塊,這些區塊稍後會結算到Layer1 鏈。
具體來說,排序方面,排序器受信任且誠實地對傳⼊交易按照先後順序進⾏排序,目前以兩種方式發布其事務排序,首先發布一個排序交易的實時流,代表排序器最終以特定順序記錄交易的承諾;其次,Sequencer 在收集一批交易後,然後使用通用算法brotli 對其進行壓縮來降低成本,並將結果傳遞給Nitro 鏈的Inbox 合約(在L1 以太坊上運⾏)。 ⼀旦Sequencer 到Inbox 的交易在以太坊上具有最終性,Nitro 鏈的交易順序就是最終的。
目前排序器是由Offchain Labs 運營的集中式組件,未來打算使⽤公平分佈式排序協議過渡到基於委員會的排序器。
確定性執行方面,在對傳⼊交易進⾏排序後,Nitro 鏈會使⽤鏈的狀態轉換函數(STF)對其進⾏處理,輸出更新的狀態並生成Layer2 區塊。
二、軟件架構:Geth at the Core
Nitro 將Geth 編譯進來是Nitro 的第⼆個關鍵設計理念,Geth 指的是以太坊節點軟件go-ethereum。 Nitro 中的core 執⾏和狀態維護功能由開源go-ethereum (geth)package 代碼處理,確保其執⾏和狀態與以太坊⾼度兼容。
構成Nitro 節點的軟件可以被認為是內置在三個主要層中,分別為基礎層——Geth core(模擬EVM 合約執行和維護構成以太坊狀態的數據結構)、中間層(ArbOS)以及頂層,其中,ArbOS 是⼀個軟件層,實現了管理Layer2 鏈所必需的功能,包括記賬功能、⽀持Nitro 和Layer1 以太坊之間的雙向安全跨鏈調⽤以及特定於Layer2 的費⽤跟踪和收集。
跨鏈交互方面,Nitro 的跨鏈消息傳遞功能還可⽤於創建代幣橋,這是⼀個允許在以太坊和Nitro 鏈之間有效轉移資產的應⽤。 Offchain Labs 團隊已經實施並發布了⼀個非正式代幣橋,提供對可替代代幣的存入或提款功能。另外,新的和改進的批處理和壓縮系統也能最大限度地降低L1 成本。
頂層則由節點軟件組成,處理來⾃客戶端的連接和傳⼊的RPC 請求,並提供操作與以太坊兼容的區塊鏈節點所需的其他功能。
三、執行與證明分開
Nitro 通過對執⾏和證明使⽤相同的源代碼,但針對這兩種情況將其編譯為不同的⽬標。在編譯Nitro 節點軟件執⾏時,使⽤的是普通的Go 編譯器,為⽬標架構⽣成原⽣代碼,當然對於不同的節點部署會有所不同。
另外,狀態轉換函數部分的代碼由Go 編譯器編譯為WebAssembly(WASM),這是⼀種類型化的、可移植的機器代碼格式。然後,WASM 代碼經過簡單的轉換和修改,轉換成稱為WAVM 的格式。
白皮書指出,WAVM 在三個主要⽅⾯與WASM 不同,分別為去除了WASM 的⼀些Go 編譯器沒有⽣成的特性;限制了WASM 的⼀些功,包括去除了浮點指令和不包含嵌套控制流;添加了⼀些操作碼以實現與區塊鏈環境的交互等。
如果對計算狀態轉換函數的正確結果存在爭議,則通過參考WAVM 代碼的交互式欺詐證明協議來解決。
四、具有交互式欺詐證明的Optimistic Rollup
在最初的Arbitrum 設計的基礎上,Nitro 使⽤改進的Optimistic Rollup 協議,該協議使用優化過後的交互式欺詐證明協議。
這個Rollup 協議是Nitro ⽤於確認Layer2 鏈狀態和Layer1 以太坊上的相關數據的⽅法。 Layer2 ⽤⼾通常不會等待L1 確認,⽽是依賴確定性狀態轉換函數,該函數允許從記錄的交易序列中得出交易結果。
該Rollup 協議產生了一條Rollup Blocks(RBlock)鏈,與Layer2 區塊不同,一個Rollup Block 通常包裝(encapsulate)了一系列Layer2 區塊,因此RBlock 的數量遠少於L2 塊。最初一個RBlock代表某方聲稱稱RBlock 的數據是正確的。最終,每⼀個這樣的聲明要么被協議確認,要么被拒絕後從RBlock 鏈中刪除。這組已確認的RBlock 將從創世RBlock 開始形成⼀條鏈。