
Base 已經解釋了其主網在兩天內兩度停止出塊的原因。
這家由 Coinbase 支援的以太坊第二層網路表示,兩次中斷都源於其定序器區塊建構邏輯中的同一個錯誤。
第一次中斷始於 6 月 25 日,持續約 116 分鐘。第二次中斷始於 6 月 26 日,持續約 20 分鐘。Base 表示,在這兩起事件中,資金都保持安全。
在其官方事後分析中,Base 表示一筆無效交易在執行時失敗,這在意料之中。問題出現在失敗之後,當時過時的日誌狀態(journal state)殘留在區塊建構器(block builder)內部。
該過時狀態包括受失敗交易影響的帳戶和儲存槽(storage slots)。當下一筆有效交易到來時,系統使用了錯誤的日誌狀態並錯誤地收取了 Gas 費用。
這導致創建了一個具有無效狀態轉換的區塊。其他節點無法接受該區塊,因此鏈停止產生新的 L2 區塊。
「鏈的完整性沒有受到損害,Base 上的所有資金都是安全的,」Base 表示。
該團隊補充說,在緩解措施實施後,區塊生產已安全恢復。
在中斷期間,用戶無法將新交易納入鏈上。Base 表示,在鏈等待區塊生產恢復期間,交易在記憶體池(mempool)中排隊。
交易池隨後增長超出其可儲存的容量。因此,在停機期間,新的 eth_sendRawTransaction 請求返回了錯誤。
停機也影響了定序器和驗證者的進度。Base 表示,這些節點在定序恢復之前無法越過無效區塊。
如先前報導,Base 於 6 月 25 日首次標記出不健康的區塊生產,之後工程師們隔離了一個與無效區塊相關的共識問題。
Base 表示,它通過應用定序器補丁修復了主要錯誤。該補丁確保在失敗交易執行後,日誌狀態在執行期間正確更新。
該團隊還在恢復過程中發現了第二個問題。Base 表示,緩解措施花費了更長時間,因為引擎重置功能中的競態條件阻止了定序器在重啟後趕上進度。
第二個問題有助於解釋為什麼事件在第二天再次發生。Base 表示,該問題影響了定序器而非驗證者節點,但它仍然減緩了恢復速度。
Base 狀態頁面顯示定序於 6 月 25 日恢復。它還告知生態系統節點營運商,如果他們仍然卡住,請重新啟動 Base 節點。
Base 表示,它將加強協議模糊測試(fuzz testing)和負載測試(load testing)。這些方法有助於團隊發現可能暴露隱藏錯誤的奇怪交易模式。
該團隊還計畫改進監控和操作檢查。它表示這些變革應有助於工程師更早地檢測到類似問題並更快地做出響應。
Base 還希望在 base-consensus 中添加優雅恢復(graceful recovery)功能。這一變革將使驗證者節點在類似故障後更容易繼續同步。
此次停機發生在該網路繁忙的一周。Base 還推進了其 Beryl 升級,該升級增加了 B20 代幣標準,並將標準的 Base 到以太坊提款期從七天縮短到五天。
這次事件讓開發者和用戶對弱點有了更清晰的認識。Base 現已指明錯誤、發布了補丁,並列出了計畫改進的測試。