Arbitrum 基礎架構與概念入門Arbitrum 是什么?dApp 开發者關心的內容整體架構欺詐證明的設計範式:再執行 vs 單步證明用戶角色Rollup 協議與挑战Layers 之間的互通性ArbGas最終性
本文為 Arbitrum、Go Pocket 和 Rebase 社區聯合舉辦的 『Arbitrum 基礎架構講解:快速入門』 講座的文字整理版。
Arbitrum 是什么?
Arbitrum 是以太坊的樂觀式 Rollup 擴容方案,有以下特性:
無需信任的安全性:安全扎根於以太坊,任何人都可以確保正確的 L2 結果。若 L2 鏈完全宕機,僅憑以太坊上的信息就可以重建整條 L2 鏈。
以太坊兼容性:所有 EVM 標准的合約和轉账都可以在 Arbitrum 上執行。
可擴展性:將以太坊的計算和存儲轉移至鏈下,吞吐量更高。
最低成本:為最小化以太坊 L1 燃氣成本而生,降低每筆交易的成本。
瞬時最終性:开啓序列器模式的 Arbitrum 鏈會有最終瞬時性這一殺手級特性,瞬時最終性也即交易確認幾乎不需要等待。Arbitrum 團隊上线的官方旗艦鏈 Arbitrum One 开啓了序列器模式。
dApp 开發者關心的內容
代碼需要修改嗎?
代碼無需修改。完整的 EVM 兼容性對开發者是相當友好的。
支持什么語言?
Solidity/Vyper,沒有編譯器、版本限制。
开發環境一致嗎?
各種工具如 Truffle、HardHat 以及 IDE 均可以在 Arbitrum 上使用,开發環境完全一致。
沒有 Gaslimit!
Arbitrum 上沒有 gaslimit,合約开發者有新的玩法。
總結來說,合約开發者從以太坊遷移到 Arbitrum 其體驗是相同的,幾乎等同於從 Rinkeby 遷移到主網。當然,會有一小部分特性因為 L2 的原因而有所不同,請見 官方文檔:與以太坊的不同點。
整體架構
Arbitrum 整體架構可以簡要分為 L1 上的 EthBridge 與 L2 上的 AVM。
L1 EthBridge
EthBridge 主要管理着 Inbox,Outbox 和 Rollup 合約。
Inbox:所有交易都會先發送至 Inbox 然後再送給 L2。Arbitrum 鏈將各條信息逐一讀取並依次執行。鏈的狀態僅取決於收件箱,Rollup 中也不存在 PoW/PoS 記账,所以交易的結果在你將交易提交到收件箱的那一刻就已經是確定的了。
Outbox:記錄着在 L2 上發生的最終需要返回以太坊上的事務或消息,如提現。
Rollup 及挑战:Rollup 協議記錄了一條 rollup 區塊組成的概念上的鏈。 驗證者可以提出 rollup 區塊。如果有驗證者不同意其他驗證者提出的 rollup 區塊,可以發起挑战。挑战的裁判為以太坊上的 EthBridge,輸家質押的資金一半會被銷毀,一半獎勵給贏家。
L2 AVM
Arbitrum 在 L2 底層實現了 AVM 虛擬機和指令集,並自定義了一種語言 mini 及其編譯器,通過 mini 在 ArbOS 中實現了 EVM 模擬器。
AVM:一個在 L2 上運行的『操作系統』。ArbOS 對不同的合約進行隔離並追蹤其資源使用情況。
ArbOS:Arbitrum 虛擬機,AVM,是 L1 和 L2 的接口。L1 提供了 AVM 接口並確保 VM 的正確運行。L2 運行 AVM 並提供了一些功能,如部署合約,運行合約,追蹤余額,以及所有有智能合約的區塊鏈所需的能力。
每個 Arbitrum 鏈都只有一個 AVM,執行所有運算,維護所有存儲空間。有些其他系統對每個合約都單獨運行一個虛擬機,而 Arbitrum 更像以太坊,一個虛擬機管理整條鏈。對多個合約的管理是由運行在 AVM 上的軟件實現的。
欺詐證明的設計範式:再執行 vs 單步證明
當有人對 rollup 區塊發起挑战時,以太坊上的仲裁合約需要對 rollup 區塊的真實性做出驗證。
Arbitrum 與 Optimism 使用了不同的設計範式。最終導致了雙方架構和流程有了顯著不同,二者的優缺點與整體設計都來自各自的設計範式。
再執行(單輪互動)
Optimism 使用再執行設計範式,有挑战時直接在以太坊上重新執行整條交易。
單步證明(多輪互動)
Arbitrum 使用單步證明設計範式,將被挑战的 rollup 區塊中的命令通過分割協議,進行多輪分割,最終會分割為一個不可分割的最小 AVM 指令集,如 ADD。最終以太坊進行單步證明。
二者優缺點
整體而言,Arbitrum 的設計範式優於 Optimism,有以下非常關鍵的優點:
Gas 費用低:Optimism 每次交易均需要向 L1 提交狀態根,Arbitrum 則採用批量提交的方式。此差異會帶來顯著的 費用差距。
無 Gas limit:由於單步證明每次都分割為最小指令,Arbitrum 不需要引入 gas limit。而 Optimism 為了確保每筆交易都能被以太坊驗證,那每筆交易都必須低於以太坊的 gas limit。
更輕便的證明:AVM state 易於被 L1 證明,單步證明也縮減了證明所需的 gas 消耗。
指令集靈活性:對 EVM 實現,AVM 使用虛擬化設計,而 OVM 使用容器化設計。如果 EVM 修改 / 刪除了某些操作碼,Optimism 在 L1 上的歷史交易的可驗證性上將變得比較棘手。而 AVM 掌握自己的技術標准,不存在此問題。
EVM 兼容性:AVM 是 EVM 全兼容的,這意味着合約开發者不需要修改代碼即可遷移,而移植到 Optimism 上則需要對代碼進行修改,Optimism 需要特殊的 solidity 編譯器來生成 OVM 字節碼,开發者需要遵循其特殊規則。
當然,Arbitrum 這種設計也會有一些缺點,但通常我們認為這些缺點不構成實質問題:
對 Arbitrum 开發團隊而言,AVM 實現更復雜。但這與用戶或合約开發者無關。
多輪互動需要雙方在挑战結束前都在线,以應對挑战。但這應該對於絕大部分驗證者都不是問題。
用戶角色
普通節點
記錄並追蹤 Arbitrum 鏈的狀態並接受來自用戶 RPC 調用的網絡節點。類似於 L1 以太坊上的非挖礦節點。任何人都可以選擇成為普通節點。
聚合器
聚合器,Aggregator。一種 Arbitrum 全節點,接收用戶的交易並批量聚合提交。任何人都可以選擇成為聚合器。
序列器 —— 特殊身份,特殊能力
序列器,Sequencer。一個有權對一定時間內的交易進行重排序的節點,也具有批量聚合提交交易的能力。开啓序列器模式的 Arbitrum 鏈可以使用序列器。
由於這種排序能力,以及上面提及的進入收件箱後交易結果就確定了這兩個特性,向善意的序列器(即它不會惡意地移動、延遲你的交易)提交交易後,你就可以直接根據序列器返回給你的結果確認最終性而無需參考其他消息。也即在使用 Arbitrum 的時候你會發現,提交交易後幾乎瞬間交易就完成了,幾乎讓所有 UI 中的等待動畫都失去了用武之地。
序列器在 Arbitrum One 上线初期使用的是中心化指定的方式,由 Arbitrum 官方運行,並非任何人都可以成為序列器。Arbitrum 團隊日後會研發去中心化序列器方案。更多關於公正排序、去中心化序列器的信息請見 Order-Fairness for Byzantine Consensus。
即使序列器是 Arbitrum One 中主要的交易樞紐,也不能據此認為 Arbitrum 是中心化的網絡。因為用戶如果不信任序列器,仍然可以向其他普通節點或聚合器提交交易,這些交易將被提交給慢速收件箱(序列器使用的是快箱)。也就是說 Arbitrum 網絡仍然保留着抗審查能力,即使序列器作惡也無法阻止你的交易提交。另外,序列器的排序能力是有限的,序列器更無法僞造交易。
驗證者 —— L2 安全基石
驗證者,Validator。質押資金並參與可爭議斷言(也叫 rollup 區塊)的人。既可以主動發起斷言更新狀態,也可以監控其他驗證者的斷言並對錯誤斷言進行挑战。
驗證者的任務是維護 rollup 鏈的安全,提出新的或質押於已存在的 rollup 區塊。如果有驗證者不同意其他驗證者提出的 rollup 區塊,可以發起挑战。挑战的裁判為以太坊上的 EthBridge,輸家質押的資金一半會被銷毀,一半獎勵給贏家。
驗證者對網絡的安全保障有一個簡單易證的原則:anyTrust Guarantee,也叫一誠則成原則,即只要有一個誠實的驗證者,即可讓整個鏈的狀態向正確的方向推進。
Rollup 協議與挑战
Rollup 協議記錄了一條 rollup 區塊(又叫斷言,DA)的鏈條,它們與以太坊區塊並不是同一個概念。你可以認為 rollup 鏈是一條概念上的單獨的鏈,是由 Arbitrum rollup 協議管理並監控的。Rollup 鏈只可能有一條路徑是正確的,其余的分支最終會被挑战證僞,一般情況下無人作惡則不會有錯誤的分支。
每個 rollup 區塊包含:
rollup 區塊編號
父 rollup 區塊編號:本 rollup 區塊之前一個(被宣稱為)正確的 rollup 區塊的編號
本鏈歷史上所發生的運算量(以 ArbGas 計量)
本鏈歷史上所接收的收件箱信息數量
對本鏈歷史輸出的哈希
鏈狀態的哈希
驗證者可以提出 rollup 區塊。新的 rollup 區塊一开始是待決狀態。最終每個 rollup 區塊都會被解決,要么被確認,要么被拒絕。已確認的區塊構成了整條鏈的歷史。
質押
在任何時間,都會有一部分驗證者成為質押者。質押者通過 EthBridge 充值資金,如果輸掉挑战則會被沒收。目前所有鏈接受以太幣為質押物。
單筆質押可覆蓋一系列 rollup 區塊。每個質押者都質押在最新確認區塊上;如果你質押了一個區塊,你還可以繼續向其子區塊質押。所以你是可以質押在一串連續正確的區塊上的。
創建新的 rollup 區塊必須成為質押者,且已在你所創建的區塊的父區塊上質押了資金。如此便確保了作惡則懲罰機制能夠執行。
挑战
當一名驗證者不同意另一名驗證者時(還有很多條件需要同時滿足),會進入挑战。 每一個 DA 都有一個挑战期,在挑战期結束之前才能進行挑战。在 Arbitrum One 上為 7 天。關於如何合理地設置挑战期請參考 Ed Felten 的文章 Optimizing challenge periods in rollup | by Ed Felten | Offchain Labs | Medium。
挑战者發起挑战後,應战者將被挑战的斷言分為分割協議規定的若幹份;挑战者繼續指出其中有問題的一段,應战者再繼續分割;經過多輪互動後,問題聚焦在一條最小的不可分的指令上,應战者再向 EthBridge 提供單步證明。EthBridge 驗證後整個挑战結束。
挑战結束後,一半資金會獎勵給贏家。另一半資金會被銷毀。 通過低成本解決爭議,對輸家進行高額懲罰的密碼經濟學方式,Arbitrum 有力地震懾了作惡行為,即使是發生爭議的情況下,也不會帶來明顯的鏈上衝擊。在正常情況下,驗證者會觀點一致並推進鏈的狀態。
Layers 之間的互通性
代幣橋接
自由代幣橋接:原則上來說,L1 到 L2 代幣橋接是自由、免許可的,任何人都可以將任何幣種跨到 L2,甚至還可以制作自己的自定義橋。如果某幣種尚未跨到 L2 上,只需要調用跨鏈功能即可,該操作普通用戶就可以完成,無需代幣項目方許可或者任何特殊權限或專業知識。但目前項目剛上线,為防止不可測的問題(如特殊代幣跨鏈),官方還沒有开啓自由橋接,而使用了白名單機制。日後會放开限制。
特殊代幣走橋:Rebase 型,持幣生息型(如 AMPL,aETH 等),特殊功能代幣(如 USDT 有凍結功能),這種需要實現特殊的橋,使用特殊橋進行遷移,否則會出現不可預知的問題。
地址映射關系:L1 上的代幣跨到 L2 後,其地址是確定的。L1 地址到 L2 地址的關系為單射,且可逆推。通過權威地址映射 oracle 確保,同一個 L1 代幣不論走過哪些自定義橋,在 L2 上最終只會有一個合約地址。
反向橋:L2 上的原生代幣跨到 L1 上的橋,目前還不存在(雖然你可以自己實現一個)。在 L2 上原生發幣又想回到 L1 的項目需要注意。
L1 到 L2:充值
充值最重要的概念是 Retryable Tickets,該機制解決了充值的原子性和多余燃氣處理問題。
在 L1 充值到 L2 時,如果不使用 Retryable,一旦出現 L1 成功了但 L2 上失敗的情況,用戶的錢將永久被鎖定在 L1 合約裏。所以當前的 Arbitrum 版本已經禁止非 Retryable 的普通方法。
使用 Retryable 如果失敗後,可以在一個挑战期(7 天)內重試領取。
L2 到 L1:提現
普通提現
普通提現在 L1 上有一個等待期(時長同挑战期),結束後需要手動領取,該過程也需要花費 L1 上的 Gas。
快速提現
快速提現依賴快速提現服務商,以及流動性提供者或交易對手。而快速提現能夠實現而不用等待 7 天挑战期,則基於對 Arbitrum 最終性的理解,文末會詳述。
主要實現方式包括可交易提款和原子鎖交換。
目前有 cBridge, renBridge,Connext 等方案為 Arbitrum 提供快速提現或跨鏈服務。
另外,單獨的 NFT、L2 向 L1 的外流信息等非同質化的 token 和 message,並不適用於基於流動性的快速提現 / 傳播,因為沒人能夠提供等價物。
自定義官方橋
若想使用 官方橋 但自己實現另一套 UI 用於自己的產品中,請參考 arbitrum/packages/arb-ts at master · OffchainLabs/arbitrum · GitHub 中的內容。
ArbGas
ArbGas 是 Arbitrum 用來管理鏈上執行成本的。與以太坊 gas 的理念一致,每個 AVM 指令都會有一定數量的 ArbGas 消耗,而一次運算的總成本是該運算包含的指令的 ArbGas 的加總。
我們需要關注幾個點:
豐饒度和數量級:ArbGas 的值遠大於 L1 的 gas。ArbGas 並不能直接與以太坊 gas 相比。开發者和用戶應該把 ArbGas 理解為是比以太坊 gas 更加且便宜的。
無 gaslimit:Arbitrum 並沒有硬性的 ArbGas limit,正常情況下 Arbitrum 鏈每秒可以消耗任意數量的 ArbGas,而在以太坊中則有 gas limit。
Computational Gas:用來描述 AVM 計算成本,一般情況下接觸不到,在 Arbiscan 中每條交易的 Advanced Info 中可以查到。該數值與用戶交易時的 gas 不應混淆。
二價競拍:在以太坊上,一筆交易的燃氣價格等於其聲明的 gasbid(price×limit)。在 Arbitrum 則不同,gasbid 會視作該交易所愿支付的最高價格。所以,在 Arbitrum 中,提交交易時錢包上顯示的 gas 使用量和實際使用量是不同的,實際使用量可能會比顯示的少 50%(一個經驗值,只能代表我個人在特定時間內的使用情況)。
Arbitrum 網絡費用的收費機制:Arbitrum 的網絡費用主要用於補償驗證者、聚合器、序列器等工作角色在 L1 上的 gas 費用,具體經濟模型由 ArbOS 管理。
對 Arbitrum 交易成本的預期:
Arbitrum L2 的固定成本主要來源於 L1 上的 rollup 信息提交行為,其中的固定成本可以攤薄,對固定成本而言_使用人數越多則越便宜(但對 calldata 則未必)。 另外,L1 上的 gas 水平因此也影響到 L2 上的 gas 水平。綜合這兩方面考慮可以說,在一定數量級內,L1 上的用戶湧入到 Arbitrum 上的越多,則 Arbitrum 使用起來越便宜。
最終性
Arbitrum 上的最終性有四種層級。不同的用戶或开發者,需要根據自身的需求來確定使用不同的最終性標准。對於普通用戶或普通項目的开發者而言,信任序列器即可,這也是大部分錢包、應用默認的選擇,用戶什么也不需要做。特殊項目的开發者,如跨鏈協議等,可能需要考慮更加堅實的最終性以應對極端情況。
以太坊確認
一個挑战期過後 DA 被確認,最強的最終性,完全無法更改。由於時間太久,除了官方橋提現等動作需要依照此最終性以外,在實踐中不太可能使用,顯然你不可能在 SushiSwap 上做了一筆交易後,7 天後才能說這筆交易確認了。
信任的驗證者質押
如果你信任某個驗證者,或者你自己就是驗證者,你可以選擇相信別人或你自己。根據一誠則成原則,只要這些驗證者是誠實的,他們背書的 DA 最終會得到確認。
驗證者或聚合器在不質押的情況下為交易背書
不質押的驗證者,或者普通的聚合器,由於缺乏質押,其可信性比上一種要小一些。但如果你信任的話,也可以採用這種標准。
信任序列器
信任序列器的最終性是最快的,幾乎是瞬時的。只要序列器不作惡,那返回的結果都是正確可信的。大部分用戶和 dApp 都會採用這種方式。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。