Eth 2.0將要實現的Sharding(分片)是什麼?
編者按:本文來自區塊鏈大本營(ID:blockchain_camp)編者按:本文來自
區塊鏈大本營(ID:blockchain_camp)
區塊鏈大本營(ID:blockchain_camp)
區塊鏈大本營(ID:blockchain_camp)
區塊鏈大本營(ID:blockchain_camp)
區塊鏈大本營(ID:blockchain_camp)
二級標題
以太坊是所有區塊鏈中一直與分片概念同步的底層平台,想要理解為什麼以太坊開發者社區想要實現分片,重點是要理解分片是什麼,以及這個解決方案為何如此有吸引力。
二級標題
由於低吞吐量、高延遲和高價格限制了以太坊網絡性能,因此,目前以太坊上不太適合部署需要強可擴展性的服務和應用程序。
二級標題

二級標題
簡單來講,分片是一種分區方式,可以在P2P網絡中分散計算任務和存儲工作負載,經過這種處理方式,每個節點不用負責處理整個網絡的交易負載,只需要維護與其分區(或分片)相關的信息就可以了。
二級標題
為了進一步解釋分片,我們可以看一下最簡單的分片示例。以太坊的創始人Vitalik Buterin稱其為“通過1000山寨幣增加擴展性”。
二級標題
分片所面臨的挑戰
所以如果具有x數量節點的以太坊決定硬分叉並分裂為一條分片鏈,且將整個網絡分佈在超過10個分片上,那麼每個分片將具有原鏈1%的安全性。這意味著通過控制原鏈5.1%(而不是51%)的節點,每個分片都可能會被破壞。
二級標題
我們遇到的第二個問題是:“我們如何選擇哪個節點驗證哪個分片?”對於一個不怎麼好的參與者來說,只有當這5.1%的網絡節點都在同一個分片中進行驗證時,要控制這些節點才會是個問題。
實際上,所有的分片架構都是隨機為分片分配節點的。將節點分配給分片需要非特定於分片的計算,並且幾乎所有這些設計都使用單獨的鏈來處理維護整個分片和節點網絡。該鏈在以太坊中被稱為信標鏈,負責生成隨機數,將節點分配給分片,捕捉單個分片的快照,處理握手權益和其他各種功能。
二級標題
信標鏈有一些缺點。因為它們負責前面提到過的記錄保存計算,所以網絡使用的分片越多,信標鏈需要做的工作就越多,那麼沒有分片的網絡可能會遇到低吞吐量加高延遲的問題,因此分片網絡的可擴展性有其天然的局限性。
然而,分片網絡具有可乘性,因此如果網絡效率得到改善,導致網絡中節點處理交易的速度提高四倍,那麼信標鏈就能夠處理四倍的分片數量,將網絡速度提高16倍。
二級標題
如何將數據分割為分片?
讓我們先看看節點通常在區塊鏈上執行的功能:
處理/驗證交易
儲存所有交易的歷史
隨著網絡的發展,節點需要能夠跟上網絡的需求及其發展需要。

中繼的交易越多,需要節點提供的寬帶就越大。
二級標題
要在區塊鏈上儲存所有的數據也就需要節點逐漸增加更多的存儲空間。
二級標題
然而,最常見的分片類型被稱為“狀態分片(State Sharding)”,包括每個分片中構建其自己區塊鏈的節點,該區塊鏈包含整個全球網絡中僅僅影響它們自己那部分的交易,這意味著節點只需要存儲它們分片的交易歷史,處理影響它們分片的交易,並在它們的分片中中繼這些交易。
二級標題
二級標題
異步跨分片交易
二級標題
二級標題
異步跨分片交易
早在2018年初,Vitalik Buterin就已提議將區塊與此解決方案合併。

二級標題
異步跨分片交易
(參見來源:
異步跨分片交易
這是一個較為容易完成的操作,並且協調起來也要簡單的多,因此它比同步交易要更受歡迎。
但是,這種方法並不是完美的,其中一個分片的一個區塊被捨棄的可能性並不為零。當概率非零時,無論概率有多小,也仍是一個不容忽視的弱點。
二級標題
我們可以通過下圖來詳解一下原因:
當這樣的分叉發生時,分片必須捨棄一條鏈並接受另一條鏈。此時,如果鏈A、B等成為1#分片中接受的鏈,W'、X'等成為2#分片中接受的鏈,那麼交易將順利完成,皆大歡喜。
二級標題
如果1#分片接受A'、B'等,2#分片接受W、X等,那麼整個交易將失敗,但這也是一種可以令人接受的結果,因為可以重新發送交易。
但是如果1#分片接受鏈A、B等,2#分片接受鏈W、X等的話會發生什麼呢?交易中的一部分(A、B等)被完成,但另一部分(W、X等)會被捨棄。
二級標題
分片中的惡意節點

現在,你已經對分片及其工作原理有了更深入的理解,你可能會覺得滿足了,也可能會有更多的問題,但至少還要考慮一件事:惡意節點。
1、惡意節點
這種情況非常常見,當有可能出現大交易日時,無論是什麼系統,都會有人想攻擊該系統。
2、批准無效區塊


