文章閱讀頁通欄

Sharding(分片)技術的前世今生

來源: JURA侏羅記 作者:
為什么區塊鏈被認為是安全的以太坊君士坦丁堡硬分叉按照預計時間將于2019年1月中旬進行,君士坦丁堡硬分叉是以太坊“大都會”(Metropolis)階段三個硬......
為什么區塊鏈被認為是安全的以太坊君士坦丁堡硬分叉按照預計時間將于2019年1月中旬進行,君士坦丁堡硬分叉是以太坊“大都會”(Metropolis)階段三個硬分叉中的第二個,以太坊將進入2.0時代,在英文上被稱為A ShardingPoS Ethereum 2.0。
這次分叉涉及兩個概念,分別是“Sharding”和“PoS”。PoS相信大家已經非常熟悉,Sharding即以太坊分片技術,是主鏈擴容的一種方案,那么它到底有什么樣的特點以及在實際應用中又有怎么的挑戰呢?今天我們一起來探究“分片技術”的前世今生。

分片技術的優點

分片是一種基于數據庫分成若干片段的傳統概念擴容技術,它將數據庫分割成多個碎片并將這些碎片放置在不同的服務器上。在底層公有鏈的系統內,網絡上的交易將被分成不同的碎片,其由網絡上的不同節點組成。因此,只需要處理一小部分輸入的交易,并且通過與網絡上的其他節點并行處理就能完成大量的驗證工作。

將網絡分割為碎片會使得更多的交易同時被處理和驗證,隨著網絡的增長,區塊鏈處理越來越多的交易將成為可能。

分片的分類

由于分片機制和對象不同,區塊鏈的分片大致可以分為以下三大類:網絡分片(network sharding)、交易分片(transaction sharding)、狀態分片(state sharding)。

網絡分片(network sharding)是一種最基礎的分片技術,通過一種隨機抽樣的方式可以防止惡意節點過度填充單個分片,但缺點是由于碎片被“分門別類”一些分片中的結果可能造成惡意節點的控制,從而威脅到整個網絡的安全性。

交易分片(transaction sharding)是在網絡分片的基礎之上,主要著重點是交易的區分,即哪些交易應該按照特定的屬性被分配到哪些碎片當中。基于UTXO賬本,一筆交易由多個輸入和多個輸出構成,就像我們在星巴克買咖啡一樣,商家只關心的是這筆交易是否到賬,因此我們只需要將交易按照發送者的地址進行分片,將兩筆交易將同時在兩個分片當中進行處理和驗證,這樣即可保證同一個賬戶發出的多筆交易將被在同一個分片當中被處理,又不需要考慮跨分片的復雜通信,從而解決了一筆雙花交易。

狀態分片(state sharding)是指每個節點只存儲了一部分的區塊鏈狀態信息,亦需要類似的機制來維護狀態信息,以知道哪個片存儲了需要的狀態。也就是說每個節點只負責托管自己的分片數據,而不是存儲完整的區塊鏈狀態。廢掉多余的數據,這就不得不面臨以下三個問題,即頻繁跨分片信息通信(信息共享)、數據的可用性和網絡節點調整。

值得注意的是,一條公鏈可能會同時使用多種分片技術,它們之間并不互相矛盾。這就看他們怎么進行調整布局啦,這需要通過結合嚴謹的理論方案證明和大規模的網絡中的長時間測試驗證。

主流項目分片技術介紹

JURA:JURA采用的是動態監控和分布式分片(DMDS),多層DMDS設計無需通過集中分片及犧牲安全性即可實現性能的優化,將大型數據庫分成更小、更快、更便于管理的數據碎片。對于空間存儲問題,是將所有Fusus(一種靈活實用且有效的數據結構) 的賬本,按照賬戶ID的hash值分成多個子集,每個碎片子集都可以并行處理,從而進一步的提高了平臺的可擴展性。有彈性的分片技術一定程度上保證了權力和收益的分散,兼容智能合約、DAG和現有的應急方案極大的了系統整體的安全性。

Quarkchain:Quarkchain 主要是分為兩個層面,第一層是分片進行交易的預處理。第二層是統一的底層連接去驗證所有分片交易。傳統的比特幣和以太坊就像一個小賣鋪,只有一個唯一的入口,一個結賬的柜臺和一個定向的出口,所以交易進來之后只能按照順序一個個等待結算。Quarkchain 相當于是建了一個Costco,雖然同時設有10個結賬的地方,但出口還是只有一個。歸根到底Quarkchain的分片技術節省的只是預處理的時間,所有分片交易在出去之前仍需要排成一個隊進行驗證,這就不可避免的浪費了大量的驗證時間。

Zilliqa:Zilliqa的分片設計過于簡單,Zilliqa的很多設計是防范女巫攻擊的,但是卻忽略了penny attack的致命威脅。這是因為他們也是基于sender account的, 所以假如一個hacker寫一個發送程序,比如每秒發送1000個交易,每個交易只有1個coin。然后把這個程序復制100份并且同時工作。這樣的話很容易對該賬戶所在shard造成過大的負載,甚至可能讓整個系統都完全癱瘓。

分片技術所面臨的挑戰

分片技術的關鍵在于由于每個片區里的數據是分開更新的,在設計應用邏輯時必須確保在平衡效率的前提下,對信息進行成功更新,同時也需要預留出一定的魯棒性來應對一個達成最終一致性過程中可能出現的不一致性。這就無法保證完全的去中心化,所以高性能和去中心化必須找到一個平衡點,要犧牲哪一個部分,仍然是困擾分片技術的一個關鍵難題。

此外在區塊鏈中應用分片技術,還需要考慮的問題是對各種攻擊如女巫攻擊,DDOS攻擊、雙花攻擊的防御。需要在權衡效率的同時,保證每個分片內的總節點數目足夠多,并且誠實的節點占大多數,分片技術對安全性要求極。同時,區塊鏈系統中的節點數目比傳統數據庫中的可能要多,并且面臨帶寬的限制,和交易出現的跨片問題。需要充分考慮到延遲帶來的不一致性導致的性能和安全性問題,所以發展到今日,區塊鏈的分片技術鮮有大規模的落地應用。

更多區塊鏈信息:www.guwutu.icu/news
關鍵詞: Sharding  分片技術  
0/300
? 时时彩龙虎和计划app