狀態分片帶來了新的挑戰。事實上,狀態分片是迄今為止最具挑戰性的分片技術提案。
繼續使用我們的基于賬戶的模型(我們暫時不在我們的例子中引入智能合約),在一個狀態分片的
區塊鏈中,一個特定的碎片只會保留一部分狀態。例如,如果我們有兩個碎片和兩個用戶帳戶,分別為Alice和Bob,那么每個碎片將保留一個用戶的余額。
假設Alice創建了一筆交易,她將支付Bob一筆錢。這筆交易將由第一個碎片進行處理,一旦該筆交易被驗證,關于Bob的新余額的信息就必須與他所在的碎片進行共享。如果兩個受歡迎的帳戶由不同的碎片進行處理,那么這可能需要進行頻繁的跨碎片通信和狀態交換。確保跨碎片通信不會超過狀態分片的性能收益仍然是一個值得公開的研究問題。
減少跨碎片通信開銷的一種可能方法,是限制用戶進行跨碎片交易。以我們上面的例子來說,這就意味著系統不允許Alice直接與Bob進行交易。如果Alice必須與Bob交易的話,她將不得不在那塊碎片中占有一個帳戶。雖然這確實消除了任何跨碎片通信,但它可能會限制平臺的可用性。
狀態分片的第二個挑戰是數據的可用性。我們可以考慮這樣一個場景,由于某種原因,一些特定的碎片遭到了攻擊而導致其脫機。由于碎片并沒有復制系統的全部狀態,所以網絡不能再驗證那些依賴于脫機碎片的交易。因此,在這樣的情況下區塊鏈基本上是無法使用的。解決此問題的方法是維護存檔或進行節點備份,這樣就能幫助系統進行故障修復以及恢復那些不可用的數據。但是,這樣就使得節點將不得不存儲系統的整個狀態,因此這還可能會引發一些中心化的風險。
我們在任何分片機制(當然不是特定于狀態分片)中需要考慮的另一個要點是,確保碎片在抵御攻擊和失敗時是具有彈性的; 網絡必須接受新的節點并以隨機的方式將這些分配給不同的碎片。換句話說,網絡必須在一段時間內進行節點的重新分配。
然而,在狀態分片的情況下,重新分配節點是非常棘手的。由于每個碎片只保留了狀態的一部分,所以在一次重新調整網絡的過程中,在同步完成前可能會出現導致使整個系統失效的問題。為了防止系統的中斷,我們必須對網絡進行逐步調整,以確保每個碎片在所有節點被清空前仍有足夠多的舊節點。
類似地,一旦一個新節點加入了一個碎片中,系統就必須確保該節點有足夠的時間與碎片狀態進行同步;否則,傳入節點將完全拒絕每一筆交易。
綜上所述,分片技術是區塊鏈的一個令人興奮的技術,他讓我們看到了希望,它可以在不影響去中心化和透明度的情況下解決擴容問題。然而,毫無疑問的是,分片技術,尤其是狀態分片,在設計層面和實現層面都是非常困難的。
我們應該小心的處理分片技術。此外,開發者們還需要做更多的研究來確定狀態分片的可行性,因為它可能不是解決存儲問題的法寶。研究人員和開發者們正在積極尋找那些可替代的解決方案。也許,答案就在我們眼前。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。