區塊鏈分片sharding技術簡介

依存症 2024-06-14 19:12 9次浏览 0 条评论 taohigo.com

轉一下自己博客寫的,分片區塊鏈(sharding blockchain)相關介紹,主要是一些文字的匯總吧

前言

分片(sharding)廣泛應用於分佈式數據庫和雲設施之中,是迄今為止實現可擴展系統的最實用的解決方案之一,其處理、存儲和計算過程可以並行進行。如今在區塊鏈系統中,被主要用於吞吐量的問題,由於本文主要討論的是分片區塊鏈,因此下文中的分片特指區塊鏈環境下的分片技術。

背景

吞吐量

吞吐量(throughput)是衡量區塊鏈系統執行效率的指標,具體定義是指區塊鏈系統每秒能夠處理的交易數量。

二層擴容

在一些區塊鏈系統中,由於其設定,很難直接做到大規模吞吐量。例如比特幣系統,其規定區塊尺寸最大不超過1MB、塊生成時間為固定的10min左右(通過調整區塊生成的難度實現),因此最大的系統吞吐量是有限制的——約每秒10筆交易。

為瞭將區塊鏈系統應用到大規模吞吐的場景下,有一種被稱為二層擴容(Layer-2 scaling)的方法,它們以比特幣或以太坊作為基礎層(base-layer),保證系統的安全可靠,然後基於其構建相應應用和協議,讓交易在鏈外處理(layer2),僅僅在鏈上(base layer)進行結算。以減少用戶與基礎底鏈的直接交互,減少時延,讓整個系統可以處理更多的交易。

比較常用的二層擴容方法有狀態-通道技術(state-channel technology)、側鏈技術(sidechain technology),關於二層擴容的更多瞭解可以點這裡。

一層擴容

但是二層擴容的方式實際上並沒有提高鏈本身的吞吐量。因此還有一種一層擴容(Layer-1 scaling),直接通過修改共識協議、P2P 網絡和數據結構等鏈上技術實現區塊鏈性能提升,包括分片技術、Bitcoin-NG、DAG 分佈式賬本等,可以分為以下三類:

  1. 減少開銷:減少通信和計算過程中的開銷,一般通過更改共識協議實現。但是這種開銷的減少是有下界O(n)的。這是因為不管如何達成共識,n個參與節點互相間總是需要數據的交換和存儲。
  2. 垂直擴容:給單個節點增加更多資源,一般通過修改區塊的尺寸或者生成時間實現。然而,垂直擴容的方法不能無限地提高吞吐量,因為區塊鏈系統被設計為運行在一個分散和同質的網絡中,其中的安全性密切依賴於整個網絡的共識。網絡規模越大,實現網絡同步所需的帶寬就越多,而帶寬則是不能無限增長。
  3. 水平擴容:通過在區塊鏈中復制和分區數據,提高並行性。其中分片技術(Sharding technology),也被成為橫向擴展(scale-out technology)是其中的關鍵。它將整個區塊鏈劃分為多個分片,允許參與節點在一些片內即可處理和存儲交易。

零層擴容

其實還有一種零層擴容(Layer-0 scaling)的方式,主要是針對數據傳播方式的改進,沒具體瞭解,在這裡就不進行展開瞭。

分片技術

介紹

分片技術能夠克服區塊鏈技術面臨的可拓展性問題,作為能夠不犧牲中心化程度同時實現區塊鏈高性能目標的鏈上擴容方式,分片技術逐漸成為區塊鏈擴容技術的主流之一。

分片技術將整個區塊鏈網絡分成不同的分片,由各分片的節點負責處理所在分片的事務以及存儲分片的狀態,通過並行驗證事務,整個區塊鏈的吞吐量近似線性地提升;同時,隨著節點數目的增加,整個網絡的分片數量也隨之增多,全網處理事務的能力將進一步提高。分片技術一般需要定義分片配置、片內和跨片共識協議、重配置方案等階段,從而構成一個完整的分片區塊鏈系統。

對於任何一種分片方式來說,需要解決如下兩個主要問題:

  1. 內部共識的安全性
  2. 跨片操作的原子性

分類

區塊鏈分片主要分為三種方式:網絡分片、交易分片和狀態分片,其中網絡分片是基礎,狀態分片是瓶頸。

  1. 網絡分片 network sharding網絡分片是通過一定的組織方式將整個網絡分成不同的分片,各個分片並行處理整個區塊鏈中的部分交易,各部分的交易完全不相同,從而同時完成多筆交易的驗證。 為瞭避免惡意節點過分填充一個分片、從而控制網絡,通過可驗證隨機函數VRF,每隔一段時間隨機抽取節點形成分片。
  2. 交易分片 transaction sharding交易分片使得各個網絡分片對交易具有更強的處理能力,將客戶端的跨片交易分成若幹個相關的子交易,不同分片的跨片易可以並行處理。 但是在基於UTXO的賬本系統,一筆交易可能由多個輸入和多個輸出構成,因此一般通過交易的hash值分片。為瞭防止雙花交易,必須要在所有分片間建立通訊。但是這種相互之間的通信開銷可能會破壞交易分片的擴容效果。 ​ 在基於帳戶的系統,每個交易都將具有發件人的地址,通過發件人地址分片,造成雙花的兩筆交易會在同一個分片中得到驗證,因此不需要在不同的分片中建立通訊,避免額外的通訊開銷。
  3. 狀態分片 state sharding狀態分片是將各部分完全不同的賬本分別存儲在各個分片(分片內的節點往往存儲同一版本的賬本),整個分片網絡組成一個完整的賬本,可以減少各個節點存儲賬本的壓力。 狀態分片的關鍵是將整個存儲區分開,讓不同的分片存儲不同的部分,每個節點隻負責托管自己的分片數據,而不是存儲完整的區塊鏈狀態。可以減少狀態的冗餘存儲,使得整個區塊鏈網絡具有存儲的可擴展性。 ​ 但是狀態分片有以下幾個問題需要解決,1)會導致頻繁的跨片通訊;2)由於系統狀態沒有在所有分片中復制,因此網絡一旦有交易的輸入是來自脫機的分片,那麼這筆交易將無法得到驗證;3)而且由於每個分片隻保留瞭狀態的一部分,所以在每次重新調整網絡的過程中,必須要考慮防止調整過大而導致在同步完成前可能會出現的整個系統失效的問題;

總體上來說,分片技術雖然在一定程度上有效地解決瞭區塊鏈可擴展性問題,但還存在很多方面的不足需要改進。一方面,整個分片機制運行過程中有大量的時間用於處理交易以外的事情,組織分片、分片重配置需要花費大量的時間和開銷。另一方面,狀態分片是分片方式中極為難實現的一環,在狀態分片的情境下,跨片交易的驗證過程就變得極為困難,不同分片節點由於其存儲賬本不同而需要通過一定的方式進行交易轉移或賬本狀態交流。

步驟

  1. 分片配置對於整個網絡來說,首先要實現網絡分片,基於安全性和效率考慮,通常使用隨機函數進行分片。 例如,可以讓加入的節點去計算PoW,通過計算結果的hash分片;或者通過賬號地址,等參數分片,其地址本身也是hash值,因此也相當於隨機分片。
  2. 分片重配置為瞭保證各個分片的安全性以及防止節點之間作惡的行為發生,在一個分片紀元過後,一部分節點從原有分片中取出與其他分片中的節點進行交換。 雖然二次全隨機分片能夠盡量保證分片後區塊鏈網絡的安全性,但是在重配置的過程中整個網絡對於交易的驗證停滯,全網都要在重配置前後進行新舊賬本的交接,無論在開銷上還是時間上都大幅度降低整個區塊鏈的性能。因此還有部分重分配和自由選擇重分配的方式減少再次分片中的開銷,但這都是以安全性為代價的。
  3. 片內共識在完成分片配置後,區塊鏈需要進行交易共識,共識分為片內共識和跨片共識。片內共識要求同一分片內各個節點按照所在分片的協議進行共識和廣播,最終得出整個分片的共識結果。片內共識協議主要分為基於PoW的片內共識協議和基於BFT的片內共識協議。
  4. 跨片共識跨片共識不同於片內共識,片內共識時片內各個節點經過彼此間廣播可直接進行交流,由於所存儲信息不相交,跨片共識時不同分片之間各節點在交易驗證過程中需要交流賬本狀態,因此跨片交流的基本單位是各個分片,不同分片執行共同的跨片協議實現共識。跨片共識的主要方式有交易原子化、交易集中化和采用類路由協議。

應用

參考文獻