區塊鏈分片方案

一、概念

分片是一種水平分區,是一種廣泛使用的數據庫設計原則,將大型數據庫中的數據劃分成很多數據分片(shard),再將這些數據分片分別存放在不同的服務器中,以減小每個服務器的數據訪問壓力,從而提高整個數據庫系統的性能。區塊鏈引入它是爲了解決可伸縮性和延遲問題。

二、區塊鏈分片的種類

按技術劃分爲網絡分片(network sharding),交易分片(transaction sharding),狀態分片(state sharding)。

1.網絡分片

將整個區塊鏈網絡劃分成多個子網絡,也就是一個分片。網絡中的所有分片並行處理網絡中不同的交易。
在區塊鏈中實現分片,網絡被分成不同的團隊(分片)。分片可以並行處理事務。每個節點只擁有區塊鏈上的部分數據,而不是全部信息。因此,可以同時處理更多的事務。例如,想象一個有1000個節點的網絡;可以將網絡分成10個分片,每個分片由100個節點組成。速度應該增加10倍。

 

2.交易分片

由於網絡分片是其他所有分片的基礎,因此交易分片的前提是先進行網路分片。交易分片主要涉及的問題是哪些交易應該按照特定的屬性被分配到哪些碎片當中。

3.狀態分片

狀態分片的關鍵是將整個存儲區分開,讓不同的分片存儲不同的部分,每個節點只負責託管自己的分片數據,而不是存儲完整的區塊鏈狀態。狀態分片可以減少狀態的冗餘存儲,使得整個區塊鏈網絡具有存儲的可擴展性。

 

三、跨分片通信

其中一個分片對於共同訪問的狀態的修改,需要及時地讓另一個分片知道,否則就容易出現狀態錯亂。業界跨分片通信方案如下:

1.客戶端維護交易,比較被動

2.基於trace對交易進行標註。

   交易注入到網絡中之前,先模擬trace,並以此標註出可能與其他交易衝突的地方,然後再根據這些衝突發到相關的分片中處理,相關的分片之間再用S-BAC去共識。可能涉及到分片間的多輪共識。典型的就是Chainspace。

3.交易分裂。

   類似幣的轉移,從一個分片中的地址,轉移到另一個分片中的地址。合約內部狀態是不能共享的,必須要保證每個分片的狀態是私有的。例如RChain一種跨鏈方案核心思想就是一個分片中的主錢包分裂出子錢包,另一個分片中的主錢包再合併這個子錢包。

4.坐電梯樓上處理。

   將跨分片的交易在他們的父級分片中處理。Rchain也同時採用了這種方案。

5.分片協商。

   讓分片之間互相聯繫,協作完成一致性。分片之間的協商一定會產生通信開銷,內存的處理也需要謹慎優化。Omniledger由客戶端來主持分片間的協商也可劃分這類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章