原文標題:《10 分鐘讀懂 Arbitrum 的工作原理》
撰文:Nick Crow
翻譯:ETH 中文站
Arbitrum 架構的概要
- 由于 Arbitrum (L2) 作為以太坊 (L1) 的擴容解決方案存在,因而 Arbitrum 的架構自然部分存在于 L1 上,部分存在于 L2 上。
- 存在于 L1 的 Arbitrum 組件是 EthBridge,這是一組以太坊合約。
- EthBridge 負責對 Arbitrum Rollup 協議進行仲裁,以及維護鏈的收件箱和發件箱。
- 位于 L1 上的收件箱和發件箱允許用戶、L1 合約和全節點發送它們的交易到 Arbitrum 鏈上,并且觀察這些交易的結果。
- Arbitrum 虛擬機 (AVM) 是 L1 和 L2 之間的網關,其功能由 EthBridge 提供,
- AVM 能夠讀取輸入,并對這些輸入執行計算以產生輸出,
- ArbOS 在 AVM 上運行,并負責確保 Arbitrum 鏈上智能合約的執行,
- ArbOS 完全存在于 L2 上,并像在以太坊上一樣運行 EVM 合約,
Arbitrum 架構視圖
Rollup 協議
- 收件箱中消息的順序決定了交易的結果,
- 隨后,任何正在查看收件箱的人都可以知道交易的結果,只需自行執行即可,
- Rollup 協議負責確認已經有效發生的交易的結果。
- 參與協議的用戶稱為驗證者;驗證者質押 ETH 進存款合約之后,即成為質押者并且能夠對 Rollup 鏈上的區塊進行質押。
- 驗證者和質押者的權限都是無需許可的,
- 在安全性方面,只要求有一個單獨的誠實驗證者來強制鏈的有效執行,
- 這使得 rollup 鏈與以太坊主鏈具有相同程度的去信任。
- Arbitrum 假設至少存在一名誠實驗證者,
- Rollup 協議作用于 Rollup 鏈,這是一條獨立于以太坊區塊鏈存在的 Rollup 區塊鏈,
- 驗證者的作用是提議新區塊,這些新區塊隨后被添加至鏈上,
- 每一個被提議的區塊最終都會由協議確認或者拒絕,
- 每個區塊由多個字段組成,除了區塊編號字段之外,每個字段中給出的數據都是由區塊提議者做出的斷言,這些斷言可能正確,也可能不正確。
- 如果任意斷言字段無效,協議最終將拒絕該區塊,
- 一旦提出一個區塊,這個區塊就會收到確認的最后期限。
- 如果有驗證者不同意該區塊,他們應該提出自己的有效區塊;當這些誠實驗證者對無效的區塊提出欺詐證明時,他們將獲得一些獎勵,
質押
- 如果質押者想要添加一個 rollup 區塊至鏈上,ta 必須將其質押金放置在 ta 正添加的區塊上,
- Staking (質押) 是無需許可的,任何人都能夠在任何提供質押的區塊上進行質押。
- 一旦你對某個區塊進行質押,在該區塊被確認之前你無法提出自己的質押金,
- 當你對某個區塊進行質押時,你將確認該區塊是有效的,并且鏈中最新確認的區塊和你已質押的區塊之間的每個區塊都是有效的,
- 如果你所質押的區塊無效,或者鏈中最近確認的區塊和你所質押的區塊之間存在無效區塊,那么你的質押金將被沒收
- 如果你沒有對某個區塊進行質押,那么可以對最新確認的區塊質押,
- 如果你對某個 rollup 區塊進行質押,那么你可以將你的質押金擴展到你所質押的區塊的任意后續區塊中。
- 質押所需的金額是動態的,
- 在 Arbitrum 鏈中,有指定為參數的基礎質押金額,大部分時間都會使用這個參數,
- 一些攻擊者哪怕質押金被罰沒也要對網路進行攻擊以延遲網路,那么網路的安全措施就是,過了第一個未確定區塊的截止日期之后,質押數量將乘以一個因素 (這個因素隨著時間呈指數增長),
- 這是為了在攻擊期間增加此類攻擊的成本。
- 這種質押金額的增加是暫時的,僅在 Arbitrum 鏈的區塊確認進展緩慢時才會發生,
挑戰協議
- 當兩個質押者分別對兩個不同的區塊進行質押時 (其中一個區塊不是接在另一個區塊后面),那么將會有一個大家不同意的區塊,因而挑戰就會產生,
- 大多數挑戰發生在 Arbitrum 鏈上,并由 L1 合約進行裁決。
- 挑戰包括發生在 L2 上的交互式、多輪分解游戲,以及在 L1 上執行的一站式證明,
- 提議爭議區塊的質押者將為他們的主張辯護,反對持有不同意見的質押者,
- 爭議區塊的提議者聲稱,以上一個區塊為起點,在虛擬機執行了 N 個指令之后,上一個區塊的狀態將被推進到他們所提議的區塊的狀態中。
- 在這場分解游戲中,爭議區塊的提議者 (Alice) 首先將 N 指令分解成 N/K 大小的 K 個部分。
- 請注意,子部分的大小與步數的大小不相等,而是與 Arbgas 消耗的數量相等,
- 還要注意,每個部分自然會有一個起始點和端點 (這看起來微不足道,但可以使下一個點更容易理解),
- 而 Alice 的對立方 (Bob) 也將把指令集分解成 K 個大小為 N/K 的部分,但是 Bob 其中一個 K 部分的端點與 Alice 相應部分的端點不同,
- 這實際上是 Bob 確定其不同意的部分。
- 然后,Bob 將執行與 Alice 初始步驟相同的操作,將其中一個部分分解成大小為 N/K 的 K 個子部分,并將該部分連同已確定的子部分返回發送給 Alice,
- 接著,Alice 執行與 Bob 初始步驟相同的操作,并確定與其端點不一致的子部分。
- 這個分解過程將繼續進行,直到 Alice 和 Bob 確定了一個他們不同意的指令。
- 這個指令被發送至 L1 的合約中,這個合約負責執行該指令并決定爭議的獲勝者。
- 爭議的輸方將被沒收質押金,其中一部分將被銷毀 (以免攻擊者對沖他們的質押金),其余的部分將作為獎勵提供給誠實質押者。
- 在整個分解過程中,L1 合約作為這場游戲的裁判并不知道任何關于指令的資訊,它只是檢查每個玩家是否遵守了這場分解游戲的規則。
- 在爭議發生期間,所有其他驗證者都可以在爭議最終確定之前自行確定爭議的結果;這意味著軟分叉已產生,驗證者可以繼續在有效鏈上提交 rollup 區塊。
- 挑戰期有時間限制,每個質押者大約有一周的時間。
- 每個質押者在這一周之內必須有所動作,否則將會輸掉爭議。
- 想象一下國際象棋時鐘,
在挑戰協議期間由兩位質押者參與的多輪、交互式分解游戲。實際上,有爭議的斷言將會有更多的指令 (如圖中的波浪線),因此這場游戲將會有更多輪,但原理是相同的。
驗證者
- 驗證者是 Arbitrum 鏈上的一個節點,它選擇監測 Rollup 協議上的活動并推進鏈的狀態進行。
- 并非所有節點都充當驗證者,
- Offchain Labs 希望驗證者在「主動、防御或者瞭望塔」三種策略中選擇一樣;但是,這并不是協議強制執行的,
- 「主動驗證者」 (active validator) 通過提議新區塊不斷努力推進鏈的進行,每條鏈只需要一個誠實的主動驗證者;增加主動驗證者的數量并不會提高鏈的效率。
- 「防御驗證者」 (defensive validator) 監測 Rollup 協議,并且僅當他們目擊到作惡行為時才會采取行動。要么提議一個有效的區塊;要么在其他驗證者提議的有效區塊上進行質押。
- 「瞭望塔驗證者 “(watch tower validator) 像防御驗證者一樣監測著 Rollup 協議。但當他們目擊到作惡行為時,他們不會親自提議有效區塊或者對有效區塊質押,而是提醒其他驗證者這樣做。
- Offchain labs 將在他們的 Arbitrum 鏈上運行一個主動驗證者,
- 大多數時間,防御驗證者和瞭望塔驗證者不需要做任何事情,因此攻擊者永遠不會知道鏈上有多少個防御驗證者。
- 盡管任何人都可以成為驗證者,但是估計主要參與者還是在鏈上投資了大量資產的各方,或者被投資者聘為驗證者的各方。
全節點
- Arbitrum 上的全節點與以太坊上的全節點具有相同的作用;他們都跟蹤鏈的狀態并且允許其他人與鏈交互,
- 由于有一個內置的 AVM 模擬器,全節點不需要對實際的 Rollup 協議有任何理解,就能夠對鏈上的輸入進行計算輸出,
- 一個全節點可以作為鏈上的聚合器,進一步提高用戶的成本效率。
- Arbitrum 具有向用戶收取費用的功能,以補償全節點在充當聚合器時所產生的開銷。
- 全節點還可以壓縮交易,以進一步降低 L1 調用數據的成本,
- 全節點將壓縮后的交易提交到鏈的收件箱 (inbox),arbOS 在那里接收并解壓交易,
- 一個全節點通常會同時包含壓縮和聚合功能,也就是說,它會向鏈的收件箱提交一批已壓縮的交易。
序列器模式
- Arbitrum 鏈發布時,可以選擇和序列器一起發布。
- 序列器是一個全節點,它擁有額外的特權,可以對鏈的收件箱中的交易進行排序。
- 這樣的特權允許序列器立即保證交易的結果,
- 當 Arbitrum 鏈與序列器一起發布時,鏈的收件箱被有效地分為兩個:
- 沒有序列器的收件箱將正常運行,節點可以發送資訊至收件箱,這些資訊會被標記上一個區塊高度和時間戳。
- 第二個收件箱將由序列器管理,并且只有序列器可以發送資訊至收件箱,
- 序列器發送資訊到其收件箱之后,他們可以指定這些資訊的區塊高度和時間戳,
- 這包括到指定增量區塊 (即過去的區塊) 以及增量秒數 (即過去的秒數) 為止的區塊高度和時間戳,
- 這些增量值通常相當于 10 分鐘左右,
- 當 arbOS 檢查收件箱時,它將收到區塊高度最低的資訊,這個區塊高度是常規收件箱或者是序列器收件箱的頭部。
- 序列器可以回溯多少個區塊數取決于在以太坊上敲定 Arbitrum 區塊所需的確認區塊的數量,
- 如果在以太坊上完成敲定需要 x 個區塊,那么序列器就要回溯 x 個區塊,以便其確切地知道哪些交易將優先于當前的交易。
- 當 Arbitrum 鏈上激活序列器模式時,提交至序列器收件箱的交易會比那些提交至普通收件箱的交易提前 x 個區塊被敲定,
- 因為對即時敲定、5 分鐘敲定、10 分鐘敲定進行比較后,三者都有很大的實際差異,所以這被認為是正向的權衡。
- 然而,某種程度上,一名作惡的序列器能夠利用這些特權獲得好處,
- 一名作惡的序列器能夠通過不將用戶的交易放進序列器收件箱來審查用戶的交易,迫使用戶在發現其被審查之后,發送相同的交易至普通收件箱中。
- 序列器也有能力搶跑用戶的交易,
- 最初的 Arbitrum 鏈上的序列器將有 Offchain Labs 運行,
- Cornell Tech 團隊已經在研發去中心化序列器算法上取得一定的成果,這項研究還差一些工作需要完成,完成之后便可以應用到 Arbitrum 的長期解決方案中,
序列器模式開啟與關閉時,鏈中收件箱的異同
ArbGas / 費用
- ArbGas 的操作原理與以太坊 gas 類似,用于衡量 Arbitrum 鏈上的計算成本,
- 然而,Arbitrum 鏈沒有一個硬性的 ArbGas limit 要求,并且 ArbGas 消耗得比以太坊 gas 要快得多。
- ArbGas 的一個關鍵作用是為驗證計算結果所需的時間提供一個可預測的度量。
- 每一個 rollup 區塊內都包含一個關于鏈上 ArbGas 消耗總量的聲明,這意味著當前區塊的聲明與前一個區塊的聲明之間的差異應該是當前區塊消耗了多少 ArbGas 的有效指標。
- 通過這種方式,檢查區塊有效性時,驗證者可以將他們的 gas limit 設置為這個值,如果這些 ArbGas 在區塊完成執行前就耗盡了,那么就可以確定這是一個無效區塊,并成功挑戰了該無效區塊,
- 用戶在向鏈提交交易時,會被收取費用。
- 如果用戶將他們的交易發送給一個聚合器,那么一部分費用將自動支付給這個聚合器。
- 剩余的費用將被發送到網路費用池,用于支付確保整條鏈安全運行的服務費。
- 費用還包含 L2 交易、L1 數據調用、計算以及存儲成本。
- 費用以 ETH 的形式支付,
總結
- Arbitrum 是由 Offchain Labs 團隊開發的 L2 擴容解決方案:一個使用多輪交互挑戰協議的 optimistic rollup,
- Arbitrum 的旗艦鏈已于 5 月 28 日面向開發者發布,一旦項目達到一定數量,就會向用戶開放。
- 從用戶的角度來看,與 Arbitrum 鏈交互和與以太坊交互幾乎無差別,