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

買賣虛擬貨幣
為什麼區塊鏈被認為是安全的以太坊君士坦丁堡硬分叉按照預計時間將於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.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;