前兩天講了 Layer 1(鏈上擴容)的其中一部分:改變共識演算法。前後介紹了以太坊的 PoS,也介紹了傳統比特幣的 PoW,以及其他區塊鏈使用的各種共識機制,如 Solana 的 PoS + PoH、TRON 的 DPoS。
前幾天討論過幾種在 Layer 1(鏈上擴容)的方法。不論是增加區塊大小、縮短區塊時間,又或者是改變共識機制,都逃不出區塊鏈「不可能三角」的限制。也就是,當我們嘗試增加可擴充性,提升網路整體吞吐量與 TPS 時,去中心化程度與安全性都不可避免的下降。
以電腦科學的演進為例,這些做法都像是在單一 CPU 上嘗試提升硬體性能(scaling-up)。今天,我們來講講分片(Sharding),以多核心 CPU 平行處理的方式(scaling-out),嘗試解決以太坊的擴容問題。
分片這個概念,其實在資料庫領域早就不是件新鮮事,透過將資料切成多個分片,分配到資料庫 Cluster 中不同的 Server 儲存,降低單一 Server 的壓力負載。
目前的以太坊 2.0 可以被想像成一個只有一個車道的道路,交易(車流)過多塞著整條道路,導致大塞車。分片(Sharding)技術則是將這條道路從單一車道,擴充至多個平行車道(分片),以紓緩整個道路壅塞的情況,並提升吞吐量(TPS)。
以上的比喻,其實也就是以太坊擴容。
以太坊分片嘗試將整個區塊鏈網路分割為更小、更易管理的單位,稱為「分片(Shards)」,每個分片都像是一個完整、獨立的區塊鏈網路,可以獨自處理交易(Transaction)、儲存資料。
分片大致上能被分為三個,分別是網路分片、交易分片,以及狀態分片。
將整個區塊鏈網路,分組為多個分片,也就是將網路上的驗證節點分為多個組別
將被提交、廣播到網路上的交易,分配到對應的分片進行驗證
將鏈上的交易資料與狀態,分別儲存在不同的分片上,而這也是最接近資料庫分片的一種
在進入以太坊 2.0 前,也就是 The Merge 之前,以太坊的共識機制是 PoW(Proof of Work)。當時,執行層與共識層是合在一起的,位處於同一個網路上。
對於比特幣,或是以太坊 1.0 這種 PoW 的區塊鏈,透過節點直接加入網路中,尋找隨機數(nonce),並廣播到網路上讓其他節點驗證、認同,這樣的共識機制(競爭算力),不需要一個額外的網路即可達成。同時,交易也在同一個網路上被廣播與驗證。
這也是第一段所述「執行層與共識層是合在一起」的意思。
這樣子的區塊鏈網路架構,驗證可以直接加入網路中競爭算力,然而,卻導致難以引入分片機制。此處強調的特別是網路分片(Network sharding)與交易分片(Transaction sharding)。去中心化的網路難以被分組為多個分片。另外,想像將交易分配到各個分片進行驗證,但這種 PoW 去中心化的共識機制,則讓交易分配到某分片這件事變得難以實現。
進到以太坊 2.0 後,共識機制轉為 PoS(Proof of Stake),執行層與共識層被拆分開來。屬於執行層的以太坊主鏈(mainnet),該網路上同樣有驗證節點,會進行交易驗證。而驗證節點則是透過質押以太幣,在信標鏈(Beacon chain)上以偽隨機演算法選擇某節點,以在執行層主鏈上,在特定 Slot 領導網路達成共識。
這種分離的執行層與共識層,替以太坊的分片之路奠定了基礎,將網路分組為多個分片(網路分片)、交易分配到某分片(交易分片),只需透過修改共識層機制即可。
儘管分片能夠提升 Layer 1 的交易速度、提升整體網路吞吐量,並降低手續費,進而達成擴容的目標。
然而,引入網路分片,將整個網路上的驗證節點分為多個組別後,可以想見的是,參與每個分片網路的節點數量下降,中心化程度提升、安全性下降。
今天介紹了分片的定義與以太坊的分片技術。然而,以太坊目前在 Layer 1 尚未引入分片機制。原因主要是,以太坊社群在 [3] 提到,把發展方向從鏈上擴容(L1)轉為鏈下擴容(L2),也就是 rollup-centric 的發展路線,而這也是目前以太坊主流的擴容技術。
今天與分片相關的內容,主要都著重在 Layer 1 上的執行分片,也就是將交易的驗證執行在主鏈上。明天,我們將探討採取了 rollup-centric 的以太坊,發展了怎樣的「資料可用性分片」技術,以支持 L2 擴容。
[1] 分片技術 - 區塊鏈底層 Layer 1 擴容方案, 桑幣區識
[2] Beacon chain, Ethereum
[3] A rollup-centric ethereum roadmap, Etherium Magician