更多有關Layer 2內容請關注專題:全方位拆解Layer2
​我們都知道區塊是一個一個按順序生成的,區塊生成的速度和每個區塊能記錄的交易數量就決定了以太坊每秒能處理的交易數,想要提高以太坊的性能,有2種方法:一種是區塊擴容,就是讓區塊包含更多的數據,但這要求存儲區塊的節點有更大的硬盤,有更好的網絡帶寬,這會進一步增加挖礦和運行節點的成本,而挖礦成本越高,去中心化程度就會更低,會大大降級安全性。所以以太坊社區從開始就放棄了這種方案,採用“分片鏈”來作為替代方案。
什麼是分片
分片是數據庫分區的一種形式,也稱為水平分區,就是將一個大的數據庫拆分成很多小的、可處理的部分,以此來提高性能,縮短響應時間。其實分片並不是一個新的概念,早在90 年代後期就出現在了傳統的中心化數據庫管理中。這個概念的流行,要歸功於一個多玩家同時在線玩的角色扮演遊戲Ultima Online。
在這個遊戲裡,開發者將玩家分配到不同的服務器來緩解流量壓力(這意味著有很多個平行的“遊戲世界”)。除此之外,在商業上,還有一個比較典型的分片案例就是將用戶信息的數據庫按照地理位置劃分,同一個區域的用戶信息放在一起,存到單獨的服務器中。分片的概念也與這些案例非常相似。
什麼是以太坊裡的分片
舉個例子:你在商店買早餐的時候,當只有一個收銀員,可能要排很長的隊等待結帳;當有兩個收銀員,立刻就會快一倍;如果有四個收銀員,也許就不用排隊了。這就是分片的基本邏輯,其實非常簡單,可以簡單理解為把一個人的工作分給多個人來完成以提升效率。
我們把例子放到以太坊的角度來看:以太坊分片前只有主鏈一個賬本,每秒約能處理12~45筆交易,一旦交易量大於這個數據時就需要排隊,也就是網絡會擁堵;分片後就是把一個賬本變成64個賬本,讓它們同時來處理交易,相當於商店開了64個收銀台來收銀,效率就會大大提升。這樣就從原先單一節點處理全網的所有任務變成了多組節點同時並行處理。
從這個例子中,我們可以看到,分片技術可以大幅提高區塊鏈的性能。但是如此簡單的邏輯為什麼卻如此難以實現呢?因為把一個賬本分成64個賬本記賬後,會面臨很多新的問題,分片技術要做的就是解決這些問題。
分片技術潛在的風險
分片技術雖然能在一定程度上解決區塊鏈的性能問題,讓區塊鏈更具有可擴展性,但也存在兩個缺陷。
一個是分區後,不同區的通信問題。上面的例子,將以太坊網絡分成64個分區,每個分區都是獨立的,相當於有64條獨立的、平行的以太坊區塊鏈,每條都由一組礦工維護和確認交易。這64條獨立的以太坊區塊鏈並不能相互通信,如果要通信,勢必要增加跨分區的通信機制(類似跨鏈),這會增加區塊鏈的複雜性,開發難度也會提高。
第二個是區塊鏈的安全性。還是上面的例子,在未分片之前,以太坊網絡包含整個網絡的節點算力。分成64 個分區後,每個分區相當於一條獨立的以太坊區塊鏈,算力下降到各分區每組節點的總和。此時,只要對其中一個分區進行51% 算力攻擊就會很容易攻破。控制了一個分區,攻擊者就可以在這個分區內做惡,篡改交易。
以太坊基金會計劃將分片技術作為以太坊2.0 的升級內容之一。以太坊如何解決分片技術的上述2 個缺陷,我們拭目以待。