作者:Pavel Paramonov, Hazeflow創始人
編譯:Felix, PANews
Sei 發佈了新白皮書,其中介紹了最新的 Giga 升級。大多數讀者覺得 17 頁的深度技術內容難以閱讀。因此,本文將解釋此次更新的內容以及如何在不同層面提升區塊鏈性能。
1. 關於異步執行的區塊生成
Giga 的主要思想和基礎如下:
“如果我們的交易列表有序以及區塊鏈的初始狀態一致,並且所有誠實的節點都按照相同的順序處理這些交易,那麼節點們將會達到相同的最終狀態。”
在這種情況下,結果僅取決於初始狀態和交易順序。這意味着共識只需就區塊內交易的順序達成一致,每個節點都可以獨立計算最終狀態。
在這種模型中,將共識與執行分離,允許區塊異步執行。
一旦區塊最終確定,節點就會對其進行處理,並在後續區塊中提交其狀態。
然後通過狀態共識驗證該區塊,以確保所有節點都計算出了正確的最終狀態。
這裏的一個重要細節是,執行與共識(生成)是並行進行的。節點在執行一個區塊的計算時,也會接收其他區塊。
因此,區塊實際上是按照總順序(而不是並行)執行的,而區塊生成過程本身確實與共識並行發生。但是,對於任何給定的區塊,這些過程都是完全異步的。
顯然,同時對同一個區塊進行共識和執行似乎是不可能的。因此,在執行區塊 n 時,節點會接收區塊 n+1 以進行下一步。
如果共識出現偏差(例如網絡中有三分之一的節點惡意行事),鏈就會暫停,這與標準的 BFT 協議類似。
區塊內執行失敗的交易不會使該區塊無效,只是保持失敗狀態,因爲區塊生成和執行是分開的,並且當前區塊的最終狀態會在後續區塊中提交。
2. 多提議者模型如何實現以及 Autobahn 是什麼?
該共識協議本身被稱爲“Autobahn”(就像不限速的德國高速公路一樣)。Autobahn 將數據可用性和交易排序分離開來,其背後有一個有趣的模型。
就像任何一條高速公路的車道一樣,存在多條車道,每個節點都有自己的通道。節點使用這些通道來提出有關交易排序的提案。提案只是交易的有序集合。
Autobahn 有時會執行“tipcut”操作,即聚合多個提案以最終確定交易的順序。
正如之前所說,每個驗證者都有自己的通道來提議交易批次。
當一個節點收到有效的提議時,會發送投票來確認該提議已收到。
提案收集到投票後,會形成一個可用性證明(PoA),確保數據已被網絡中至少一個誠實節點接收。
Tipcut 的發生時間以毫秒爲單位,最終來自 Autobahn 的多個提案會被“cut.”。
提議者有動力等待發布區塊並在可能的情況下發布單個區塊,但每個區塊的執行時間限制(類似於 Gas 限制)會稍微改變這種動態。
一條通道上的一個提議通常相當於一個區塊,這意味着當 Tipcut 發生時,多個區塊會被同時切斷。
此後,該 slot 的領導者將 Tipcut 發送給其他節點以完成排序。節點實際上在對單個 Tipcut 進行投票的同時,就已經在準備下一個 Tipcut 了。
錯過批次的節點可以從 PoA 中列出的驗證者那裏異步獲取:這就是需要數據可用性的本質原因。
在同步條件下,如果領導者正確,Autobahn 會在兩輪通信中完成提議確認。如果領導者出現故障,該機制會選舉出新的領導者以保持進程。
下一個 tip-cut 提議實際上可以在當前 tip-cut 的提交階段開始,從而減少延遲,因爲執行與生成並行進行。
實際上,整個模型是一個多提議者模型,其中許多節點可以同時爲其區塊排序提出提案。每個驗證者都提議自己的區塊,並接收網絡擁有這些區塊的證明(PoA),這有助於提高網絡的吞吐量和整體效率。
3. 並行執行及其適用情況
正如之前提到的,區塊執行過程與共識是並行發生的,儘管區塊本身實際上是按順序執行的。您可能會想這是否構成真正的並行執行。
答案既是肯定的,也是否定的。
雖然區塊是按順序執行,但區塊內的交易確實可以並行執行。如果交易不修改(寫入)相同的狀態,並且一個交易的結果不影響另一個交易,那麼它們就可以並行執行。
簡而言之,它們的執行路徑不應該相互依賴。Giga 沒有內存池,交易會立即被節點包含。
Giga 假定大多數交易之間不存在衝突,並在多個處理器核心上同時處理這些交易。
每筆交易的更改會暫時存儲在一個私有緩衝區中,不會立即應用到區塊鏈上。
處理完成後,系統會檢查該交易是否與之前的交易存在衝突。
如果存在衝突,該交易將被重新處理。如果沒有衝突,其更改將被應用於區塊鏈並最終確定。
也可能存在高頻衝突的情況,在這種情況下,系統會切換爲一次處理一個事務,以確保事務能夠推進。
簡單來說,並行執行將事務分配到多個內核上,使那些沒有衝突的事務能夠同時運行。
4. 存儲問題與優化
由於交易量很大,數據需要既安全又易於訪問,因此其存儲方式應與傳統區塊鏈存儲略有不同。Giga 以簡單的鍵值(key-value)格式存儲數據,這是一種相對扁平的結構,有助於減少數據更改時所需的多次更新或檢查。
此外,Giga 還採用分層存儲方式:近期數據保留在 SSD(高速)上,而較少使用的數據則遷移到速度較慢、更具成本效益的存儲系統中。
如果某個節點崩潰,它可以回放日誌以恢復正確的狀態,並將更新應用於 RocksDB(一種專用數據庫)以組織數據。
該存儲系統採用了一種加密累加器(Cryptographic Accumulator),能夠證明數據的正確性而無需進行繁重的計算。累加器以批處理的方式進行更新,使得驗證者和輕節點能夠迅速就區塊鏈的當前狀態達成一致。
5. 成爲多提議者 EVM L1 區塊鏈意味着什麼?
L1 基礎設施可以進行多種改進,不同的 L1 也面臨着各種技術挑戰,從 MEV 等經濟方面的問題到諸如狀態管理等技術方面的問題。
作爲首個支持多提議者的 L1 鏈頗具挑戰性,尤其是對於 EVM L1 而言,因爲 EVM 的設計初衷並非支持多提議者系統。
然而,Sei 正在嘗試不同的方法來保留 EVM 以及許多開發者習慣使用的工具。
並行事務執行、執行過程中達成共識以及多個提議者並行操作都有助於提升性能,執行吞吐量可提升約 50 倍。不過,這些改進也可能面臨上述提到的一些風險。
這是 Sei 第二次重大更新,此前 Sei 從 Cosmos 鏈轉型爲 EVM 鏈,如今 Sei 推出了一個針對速度優化的執行客戶端。
接下來的發展以及這些優化措施的後續效果值得關注。
相關閱讀:探究區塊鏈Sei的性能、合規與互操作性