• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      區(qū)塊鏈分片技術(shù)綜述

      2022-06-16 05:24:06黃華威彭肖文鄭子彬
      計算機(jī)工程 2022年6期
      關(guān)鍵詞:分片賬本共識

      黃華威,孔 偉,彭肖文,鄭子彬

      (1.中山大學(xué) 計算機(jī)學(xué)院,廣州 510000;2.武漢理工大學(xué) 航運學(xué)院,武漢 430000)

      0 概述

      2016 年,LUU 等[1]提出一種Elastico 算法,其將數(shù)據(jù)庫中擴(kuò)容的分片方式[2-4]與區(qū)塊鏈技術(shù)相結(jié)合,自此之后,關(guān)于區(qū)塊鏈分片技術(shù)的研究一直層出不窮,不少學(xué)者從分布式賬本、共識機(jī)制、分片方式等方面針對分片技術(shù)進(jìn)行了大量研究。

      區(qū)塊鏈主要包括網(wǎng)絡(luò)分片、交易分片、狀態(tài)分片3 種分片方式,其中,網(wǎng)絡(luò)分片是基礎(chǔ),狀態(tài)分片是瓶頸。網(wǎng)絡(luò)分片通過一定的組織方式將整個網(wǎng)絡(luò)分成不同分片,各個分片并行處理整個區(qū)塊鏈中的部分交易,各部分交易完全不同,從而同時完成多筆交易驗證。交易分片使得各個網(wǎng)絡(luò)分片對交易具有更強(qiáng)的處理能力,其將客戶端的跨片交易分成若干個相關(guān)的子交易,不同分片的跨片交易可以并行處理。為了降低各個節(jié)點存儲賬本的壓力,狀態(tài)分片將各部分完全不同的賬本分別存儲在各個分片(分片內(nèi)的節(jié)點往往存儲同一版本的賬本),整個分片網(wǎng)絡(luò)組成一個完整的賬本。在現(xiàn)行的技術(shù)條件下,網(wǎng)絡(luò)分片和交易分片都具有比較理想的實現(xiàn)方式,而實現(xiàn)狀態(tài)分片還存在很多技術(shù)問題,狀態(tài)分片制約著分片技術(shù)的發(fā)展。

      分片技術(shù)雖然在一定程度上有效解決了區(qū)塊鏈的可擴(kuò)展性問題[5],但還存在一定的不足需要改進(jìn):整個分片機(jī)制在運行過程中有大量時間用于處理交易以外的工作,同時,為了防止節(jié)點作惡,不少分片技術(shù)需要大量時間和開銷進(jìn)行分片重配置[6],如何提升分片機(jī)制運行過程中用于交易處理的有效時間比率是一個需要解決的問題[7];狀態(tài)分片是分片方式中極難實現(xiàn)的一環(huán),在狀態(tài)分片情境下,跨片交易的驗證過程變得極為困難,不同的分片節(jié)點存儲的賬本不同,需要通過一定的方式進(jìn)行交易轉(zhuǎn)移或賬本狀態(tài)交流[8],因此,更加有效地實現(xiàn)數(shù)據(jù)遷移同時減輕各個節(jié)點的負(fù)擔(dān),也是區(qū)塊鏈分片技術(shù)面臨的挑戰(zhàn);分片區(qū)塊鏈的安全性也應(yīng)得到研究人員的關(guān)注,更小規(guī)模的分片意味對雙花攻擊防御能力的下降,安全性更高的片內(nèi)共識協(xié)議也將付出更高的共識代價,大多數(shù)協(xié)議對于安全性的分析集中在拜占庭對手規(guī)模、信息可靠性以及分片隨機(jī)性方面,而對于區(qū)塊鏈系統(tǒng)整體的安全性則考慮不充分,對于傳統(tǒng)區(qū)塊鏈中存在的攻擊方式、分片區(qū)塊鏈中獨有的攻擊方式,以及許多分片區(qū)塊鏈協(xié)議難以抵御網(wǎng)絡(luò)層面的攻擊,這些問題都將成為研究人員關(guān)注的焦點。

      本文介紹區(qū)塊鏈分片技術(shù)的研究進(jìn)展,對分片技術(shù)的一般實現(xiàn)步驟進(jìn)行總結(jié),通過對當(dāng)前技術(shù)的對比剖析歸納分片技術(shù)所面臨的挑戰(zhàn),同時對該領(lǐng)域未來的發(fā)展方向進(jìn)行展望,以期為區(qū)塊鏈分片技術(shù)的進(jìn)一步研究提供理論參考。

      1 背景介紹

      1.1 區(qū)塊鏈技術(shù)面臨的挑戰(zhàn)

      區(qū)塊鏈技術(shù)起源于中本聰于2008 年提出的比特幣系統(tǒng)[9],在比特幣的信任模型中,用戶之間的信任源于對整個系統(tǒng)的信任,只要整個系統(tǒng)的安全假設(shè)被滿足,這種信任就可以持續(xù)。為了實現(xiàn)這種信任模型,整個區(qū)塊鏈所有的交易需要各個節(jié)點進(jìn)行驗證和存儲,從而浪費了大量的時間和空間,也導(dǎo)致區(qū)塊鏈系統(tǒng)存在低吞吐、高延遲的瓶頸,出現(xiàn)嚴(yán)重的可擴(kuò)展性問題。區(qū)塊鏈技術(shù)現(xiàn)存的一些突出問題總結(jié)如下:

      1)交易吞吐量低。為了確保區(qū)塊鏈的交易不可篡改,比特幣的平均吞吐量為7 筆/s[10],以太坊[11]的平均吞吐量為30 筆/s,而現(xiàn)行的大型中心化交易處理場所(如Visa)每秒的交易確認(rèn)數(shù)可達(dá)上千[12]。為了處理數(shù)量龐大的用戶交易,提升區(qū)塊鏈的交易吞吐量十分重要。

      2)交易延遲高。在比特幣中,為了確保高安全性,各個節(jié)點之間需要頻繁地廣播交互,額外的通信開銷使得比特幣的交易延遲增大,比特幣的出塊速度一般為10 min/塊。因此,在忽略網(wǎng)絡(luò)因素的情況下,通過減少交易過程中的開銷從而降低交易延遲也是區(qū)塊鏈的優(yōu)化目標(biāo)。

      3)可擴(kuò)展性低。隨著節(jié)點數(shù)目的增多以及賬本容量的增大,提升區(qū)塊鏈可擴(kuò)展性以及優(yōu)化賬本存儲方式、提升存儲效率[13]也是亟待解決的問題。

      1.2 常見區(qū)塊鏈擴(kuò)容技術(shù)

      為了提升區(qū)塊鏈的可拓展性,近年來,研究人員提出了多種區(qū)塊鏈擴(kuò)容方案??傮w而言,常見的區(qū)塊鏈擴(kuò)容方案分為Layer0、Layer1、Layer2 這3 層技術(shù)[14]。其中:Layer0 層主要針對數(shù)據(jù)傳播方式進(jìn)行改進(jìn);Layer1 層通過共識協(xié)議、P2P 網(wǎng)絡(luò)[15]、數(shù)據(jù)結(jié)構(gòu)等鏈上技術(shù)實現(xiàn)區(qū)塊鏈性能提升,其包括分片技術(shù)、Bitcoin-NG、DAG 分布式賬本等;Layer2 層大多為非鏈上技術(shù),如狀態(tài)通道。

      1.2.1 分片技術(shù)

      分片技術(shù)能夠克服區(qū)塊鏈所面臨的可拓展性問題,作為一種鏈上擴(kuò)容方式,其能在不犧牲中心化程度的同時提高區(qū)塊鏈的性能,因此,分片技術(shù)逐漸成為區(qū)塊鏈擴(kuò)容的主流方法之一。分片技術(shù)將整個區(qū)塊鏈網(wǎng)絡(luò)分成不同分片,由各分片的節(jié)點負(fù)責(zé)處理所在分片的事務(wù)以及存儲分片的狀態(tài)[16],通過并行驗證事務(wù),整個區(qū)塊鏈的吞吐量近似線性地提升。同時,隨著節(jié)點數(shù)目的增加,整個網(wǎng)絡(luò)的分片數(shù)量也增多,全網(wǎng)的事務(wù)處理能力進(jìn)一步提高。分片技術(shù)一般分為定義分片配置、片內(nèi)和跨片共識協(xié)議、重配置等階段,從而構(gòu)成一個完整的分片區(qū)塊鏈系統(tǒng)。

      1.2.2 狀態(tài)通道

      狀態(tài)通道[17]在區(qū)塊鏈主鏈下開展新的狀態(tài)通道供大多數(shù)交易離線使用[18],其將區(qū)塊鏈作為仲裁平臺。所有需要進(jìn)行交易的網(wǎng)絡(luò)用戶將一定數(shù)量的資金存在鏈上,同時會與另一個用戶開啟狀態(tài)通道,并將這筆資金作為交易的抵押品。狀態(tài)通道間接地提升了系統(tǒng)的交易吞吐量,其最大的優(yōu)勢是交易幾乎可以在一瞬間完成,其中的交易不會阻塞主鏈,但是額外創(chuàng)建狀態(tài)通道并不會提高區(qū)塊鏈的可擴(kuò)展性。同時,狀態(tài)通道容易受到DoS 攻擊[19]。由于狀態(tài)通道是在Layer2 層進(jìn)行的擴(kuò)容技術(shù),因此其與Layer1層的分片技術(shù)可以同時使用[20]。

      1.2.3 Bitcoin-NG

      Bitcoin-NG[21]將原先比特幣驗證和出塊的機(jī)制進(jìn)行分離,能夠在一定時間內(nèi)創(chuàng)建更多的塊,從而提升整個區(qū)塊鏈的交易處理能力。在記賬人選取階段,Bitcoin-NG 仍然采用原先的PoW 算法[22],由全網(wǎng)競爭記賬權(quán),在交易記賬階段由記賬人進(jìn)行交易打包和全網(wǎng)廣播。但是,Bitcoin-NG 對去中心化要求做了一定折中,記賬人在進(jìn)行交易打包和全網(wǎng)廣播時所實施的不良行為,會使得整個系統(tǒng)面臨一定風(fēng)險[23]。

      1.2.4 DAG 分布式賬本

      DAG 分布式賬本[24]主要對區(qū)塊鏈狀態(tài)存儲進(jìn)行改進(jìn),每個交易單元或包含交易的區(qū)塊單元能夠同時被多個新加入的節(jié)點引用,多個節(jié)點可以同時向賬本中新增交易或區(qū)塊單元,因此,DAG 分布式賬本可以支持各種實際場景下的高并發(fā)需求,具有更好的可擴(kuò)展性。與DAG 分布式賬本相比,分片技術(shù)更加傾向于改進(jìn)交易的驗證方式,因此,兩者可以結(jié)合使用。

      1.3 許可區(qū)塊鏈和無許可區(qū)塊鏈中的分片技術(shù)

      許可區(qū)塊鏈(Permissioned Blockchain)[25]由具有一定程度信任并已知、已識別的參與者操作,采用更加傳統(tǒng)的共識協(xié)議,這種協(xié)議不需要成本高昂的挖掘過程,同時在對手規(guī)模和容錯率的設(shè)定上也更加靈活。許可區(qū)塊鏈在進(jìn)行分片[26]后,通常不需要重新配置(Reconfiguration)環(huán)節(jié),分片中的記賬權(quán)往往在少數(shù)確定的節(jié)點中,因此,節(jié)點的安全性較高[27]。在AHL[28]中,采用TEE[29]的硬件來保證可信的執(zhí)行環(huán)境,在此基礎(chǔ)上,提出應(yīng)用于許可區(qū)塊鏈的協(xié)議,該協(xié)議可以靈活地根據(jù)拜占庭節(jié)點和非拜占庭節(jié)點進(jìn)行調(diào)控,從而滿足一定的安全性要求。Sharper[30]同樣也是應(yīng)用于許可區(qū)塊鏈的協(xié)議,其采用分片結(jié)合DAG 分布式賬本的結(jié)構(gòu),每個分片保存一份賬本,在許可區(qū)塊鏈中不需要挖礦環(huán)節(jié),因此,每筆交易可作為一個塊,片內(nèi)事務(wù)由片內(nèi)單獨成塊上鏈,跨片交易由相關(guān)分片共同維護(hù)。

      無許可區(qū)塊鏈(Permissionless Blockchain)由于信任度較低(甚至不存在任何信任),因此通常采用挖礦機(jī)制,通過PoW 來驗證交易。具有代表性的無許可區(qū)塊鏈協(xié)議包括Elastico、OmniLedger[31]、RapidChain[32]等,在這類協(xié)議中,節(jié)點加入分片需要通過解決PoW 問題來驗證身份,交易在驗證后也需要一定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行打包。Monoxide[33]是無許可區(qū)塊鏈中較前沿的技術(shù),研究人員認(rèn)為該技術(shù)同時滿足了安全、性能、去中心化3 個需求[34],連弩挖礦(Chu-ko-nu Mining)能夠在一段時間內(nèi)出多個塊,同時通過多個其他分片來對多個塊進(jìn)行驗證,即使全網(wǎng)都進(jìn)行了分片,惡意節(jié)點仍然需要與全網(wǎng)算力進(jìn)行對抗,從而保證了Monoxide 的安全性和去中心化。

      2 分片技術(shù)的關(guān)鍵理論與方法概述

      隨著數(shù)據(jù)庫的逐漸擴(kuò)容,為了簡化各個節(jié)點的存儲空間,數(shù)據(jù)庫開始采用分片技術(shù)來提高數(shù)據(jù)的存儲效率[35]。區(qū)塊鏈和數(shù)據(jù)庫本身存在一些不同因素,區(qū)塊鏈分片技術(shù)不僅要保持對各分片中存儲賬本的維護(hù),更要有利于區(qū)塊鏈上動態(tài)交易的驗證。因此,將分片技術(shù)引入到區(qū)塊鏈中,不僅需要將區(qū)塊鏈上的各種屬性(網(wǎng)絡(luò)、交易、狀態(tài))進(jìn)行分片,同時也要考慮區(qū)塊鏈本身復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和存儲形式[36]。

      2.1 分片配置

      在區(qū)塊鏈分片技術(shù)中,首先要實現(xiàn)網(wǎng)絡(luò)分片,網(wǎng)絡(luò)分片通常要考慮分片規(guī)模、分片安全性、分片方式等因素,分片過程通常使用隨機(jī)函數(shù)來實現(xiàn)。

      2.1.1 Elastico

      Elastico[1]使用epochRandomness 函數(shù)進(jìn)行計算,每個節(jié)點都有自己的IP、PK(公鑰),結(jié)合隨機(jī)數(shù)epochRandomness 計算出滿足下式條件的nonce:

      O=H(epochRandomness||IP||PK||nonce)≤2γ-D

      其中:D為預(yù)定義的網(wǎng)絡(luò)節(jié)點解決PoW 問題的工作量大小參數(shù);γ為預(yù)定義的H 函數(shù)的輸出位數(shù)。

      每個節(jié)點根據(jù)自己的O值確定分片位置,分片中的各個節(jié)點為了確認(rèn)彼此,需要進(jìn)行廣播。

      2.1.2 RapidChain

      RapidChain[32]的分片配置只進(jìn)行一次(即原文中的Bootstrap 環(huán)節(jié)),之后不斷地進(jìn)行共識和重配置。在分片配置環(huán)節(jié),整個網(wǎng)絡(luò)持續(xù)地從低一層的節(jié)點中構(gòu)造sampler graph 以形成一個隨機(jī)二分圖[37],在所有節(jié)點完成計算后,將每個group 內(nèi)哈希值最小的節(jié)點選為subgroup 成員,再由subgroup 中的成員隨機(jī)組合成更高一層的group,被選中節(jié)點發(fā)送消息告知全部節(jié)點,重復(fù)上述過程直到選出root group。root group 負(fù)責(zé)選擇參考委員會(Reference Committee)成員,參考委員會完成所有節(jié)點的隨機(jī)劃分分片。

      通過以上2 種分配方式可以看出,在協(xié)議的開始階段對節(jié)點進(jìn)行分片的過程,需要各個節(jié)點進(jìn)行自身分片位置計算以及在同一分片節(jié)點之間進(jìn)行廣播,最終完成分片內(nèi)節(jié)點信息的交流。分片函數(shù)的設(shè)計往往以節(jié)點身份(IP、PK、Hash)[38]作為參數(shù)。

      2.2 分片重配置

      為了保證各個分片的安全性并防止節(jié)點之間作惡行為發(fā)生,在一個分片紀(jì)元之后,從原有分片中取出一部分節(jié)點并與其他分片中的節(jié)點進(jìn)行交換,當(dāng)有新節(jié)點加入時,需要對新加入節(jié)點進(jìn)行分配。上述過程通常稱為分片重配置(Reconfiguration)[31],分片重配置的方式分為全隨機(jī)分片和部分隨機(jī)分片2 種。

      2.2.1 二次全隨機(jī)分片

      對所有節(jié)點進(jìn)行重新分配,既能徹底防止節(jié)點之間進(jìn)行作惡[39],同時也能將新節(jié)點加入分片中。新加入的節(jié)點需要解決PoW 問題,在解決PoW 問題后,節(jié)點會得到一個相對應(yīng)的值(即上文epochRandomness函數(shù)中的O),供分片時計算分片位置使用。如果節(jié)點錯過當(dāng)前紀(jì)元的分片環(huán)節(jié),則等待下一個紀(jì)元再確定分片位置。解決PoW 問題提高了節(jié)點加入分片的成本,但可以有效防止女巫攻擊(Sybil Attack)[40]。

      Elastico 在每個分片紀(jì)元結(jié)束后使用Randomness函數(shù)對整個網(wǎng)絡(luò)的節(jié)點進(jìn)行重新配置。在每輪的最后,由最終委員會(Final Committee)計算出Randomness 以供下一輪隨機(jī)分片使用,隨機(jī)數(shù)被廣播至全網(wǎng),整個網(wǎng)絡(luò)的節(jié)點通過隨機(jī)數(shù)重新計算自己所在的分片位置。

      雖然二次全隨機(jī)分片能夠最大程度地保證分片后區(qū)塊鏈網(wǎng)絡(luò)的安全性,但是在重配置的過程中,整個網(wǎng)絡(luò)對于交易的驗證停滯,全網(wǎng)都要在重配置前后進(jìn)行新舊賬本交接,在每次的二次全隨機(jī)分片期間,整個網(wǎng)絡(luò)都要為分片重新進(jìn)行計算和廣播,無論在開銷還是時間上,都大幅降低了整個區(qū)塊鏈的性能。因此,文獻(xiàn)[41]提出MVCom 方案,其對Elastico協(xié)議的分片重配置設(shè)計進(jìn)行優(yōu)化,通過設(shè)計分布式算法[42],為每一輪若干個區(qū)塊鏈分片選取出最有價值的部分委員會,同時支持處理分片委員會的動態(tài)加入和離開,該機(jī)制可以在分片區(qū)塊鏈的交易吞吐量與分片內(nèi)交易等待時延之間找到一種平衡。

      2.2.2 部分重分配

      在保證整個區(qū)塊鏈系統(tǒng)網(wǎng)絡(luò)安全的前提下,將部分分片節(jié)點隨機(jī)進(jìn)行重分配,既能保證區(qū)塊鏈系統(tǒng)的安全性,又可以降低開銷,減少重配置過程的等待時間。

      研究人員在RapidChain 中設(shè)計有限布谷鳥原則(Bounded Cuckoo rule)[43],在每個epoch 中都通過參考委員會將其他委員會分為2 類,分別是活躍成員占大多數(shù)的活躍委員會和不活躍成員占大多數(shù)的消極委員會。當(dāng)有新節(jié)點加入時,參考委員會會將新節(jié)點隨機(jī)加到某個活躍委員會中,并把該委員會中的固定數(shù)量節(jié)點隨機(jī)加入到不同的消極委員會中,既實現(xiàn)了對新節(jié)點的分片處理,又調(diào)控了消極委員會和積極委員會之間的活躍節(jié)點數(shù)量,間接提高了整個區(qū)塊鏈的分片活躍度。

      在進(jìn)行重配置的過程中,除了需要進(jìn)行遷移的節(jié)點外,分片內(nèi)的其他節(jié)點仍然正常進(jìn)行交易驗證,從而大幅降低了重配置過程對區(qū)塊鏈性能的影響。

      2.2.3 自由選擇重分配

      SSChain[44]在分片重配置上充分考慮用戶需求,當(dāng)有新節(jié)點加入時,新節(jié)點可以根據(jù)增益函數(shù)GPH(BR=BlockReward,HP=HashPower,BI=BlockInterval)選擇目前收益最高的分片加入,而在當(dāng)前分片的收益較低時可以退出并加入到收益高的其他分片。GPH 函數(shù)綜合考量分片出塊收益、出塊間隔以及當(dāng)前哈希算力,而哈希算力的分配又綜合了對主鏈算力和分片算力的分配,既體現(xiàn)了對鏈安全性的考慮(即對于算力的宏觀分配),又充分考慮到用戶的個人意愿。CPH 函數(shù)計算如下:

      相較前2 種重分配方式,自由選擇重配置方案能夠通過人為操作使得整個區(qū)塊鏈網(wǎng)絡(luò)達(dá)到收益最大化的動態(tài)平衡,但是其對于惡意行為的抵御能力低于區(qū)塊鏈系統(tǒng)調(diào)控下的重配置方案。

      2.3 片內(nèi)共識協(xié)議

      在完成分片配置后,區(qū)塊鏈需要進(jìn)行交易共識,共識分為片內(nèi)共識和跨片共識。片內(nèi)共識要求同一分片內(nèi)各個節(jié)點按照所在分片的協(xié)議進(jìn)行共識和廣播,最終得出整個分片的共識結(jié)果,片內(nèi)共識協(xié)議主要分為基于PoW的片內(nèi)共識協(xié)議和基于BFT的片內(nèi)共識協(xié)議。

      2.3.1 基于PoW 的片內(nèi)共識協(xié)議

      雖然PoW 共識龐大而復(fù)雜的計算過程消耗了大量算力,但是其結(jié)合一定節(jié)點特征的數(shù)字運算優(yōu)勢在部分場景中受到人們的青睞?;赑oW 的片內(nèi)共識協(xié)議通常在計算過程中以節(jié)點身份或所在分片編號為參數(shù)進(jìn)行運算,節(jié)點身份標(biāo)號或所在分片標(biāo)號具有唯一性,因此,它們可以作為打包塊的標(biāo)識符。

      SSChain 和Monoxide 均采用PoW 作為片內(nèi)共識協(xié)議。在Monoxide 中,分片在解決一個PoW 問題的時間內(nèi)出不多于剩余其他分片數(shù)量的塊,然后將多個塊交由其他分片進(jìn)行驗證并再次出塊,通過2 層共識結(jié)構(gòu)確保交易的合理性。如圖1 所示,Monoxide 采用連弩挖礦(Chu-ko-nu Mining),將每個共識組的防御能力提升到51%,每次出塊時Hash 函數(shù)覆蓋多個剛要出塊的塊頭進(jìn)行計算,同時這些塊頭共用一個nonce,編號b的當(dāng)前共識組將這m個塊頭按序排列,構(gòu)造Merkle樹[45],然后通過哈希計算覆蓋數(shù)據(jù)結(jié)構(gòu),在出塊時,相關(guān)信息會被廣播到特定的共識組i(b≤i

      圖1 Monoxide 的出塊方式Fig.1 Block generation mode of Monoxide

      2.3.2 基于BFT 的片內(nèi)共識協(xié)議

      很多協(xié)議的片內(nèi)共識常會選擇使用BFT 類型的算法[46],如Elastico 采用拜占庭共識協(xié)議,OmniLedger 采用基于ByzCoin[47]的改進(jìn)ByzCoinX,RapidChain 采用gossip[48],Sharper 采用PBFT[49]?;贐FT 的共識協(xié)議通過分片內(nèi)多個節(jié)點驗證共識來保證交易的安全性和有效性。

      Zilliqa[50]在各個分片內(nèi)以較高頻率運行PBFT 共識,PBFT 共識具有最終交易性、能耗低等優(yōu)點。傳統(tǒng)PBFT 共識中的主要環(huán)節(jié)包括pre-prepare、prepare、commit 這3 個階段,prepare 與commit 這2 個階段的通信復(fù)雜度為O(n2)。Zilliqa 采用兩輪的EC-SChnorr 多重簽名[51]來代替?zhèn)鹘y(tǒng)PBFT 共識中的prepare 和commit階段,從而將PBFT 共識的通信復(fù)雜度降為O(n),其共識流程如圖2 所示。

      圖2 Zilliqa 片內(nèi)共識流程Fig.2 Zilliqa intra chip consensus procedure

      2.4 跨片共識協(xié)議

      在片內(nèi)共識時,片內(nèi)各個節(jié)點經(jīng)過彼此間的廣播可直接進(jìn)行交流。在跨片共識時,由于所存儲的信息不相交,不同分片之間各個節(jié)點在交易驗證過程中需要交流賬本狀態(tài),因此跨片交流的基本單位是各個分片,不同分片執(zhí)行共同的跨片協(xié)議以實現(xiàn)共識??缙沧R的主要方式包括交易原子化、交易集中化和采用類路由協(xié)議。

      2.4.1 交易原子化

      交易原子化是一種跨片交易處理方式,將原交易分解成最小的子交易,在不同分片之間傳遞子交易。子交易一般為對某個分片的輸入交易或?qū)δ硞€分片的輸出交易。通過交易原子化處理,一筆跨分片交易可以視作若干筆客戶端參與下的片內(nèi)交易。

      OmniLedger 提出Atomix 協(xié)議對跨片交易進(jìn)行處理,當(dāng)客戶端發(fā)起一筆跨片交易時,分解后的子交易經(jīng)過不同的分片進(jìn)行驗證,當(dāng)?shù)玫浇灰捉邮芡ㄖ獣r,客戶端再發(fā)起一筆附上接受憑證的資金解鎖請求到需要輸出交易的分片,從而完成交易;如果有交易在分片中驗證失敗,則客戶端向其他驗證成功的分片發(fā)送丟棄交易請求并將鎖住的資金退還。OmniLedger 的做法雖然在理論上可以實現(xiàn)由不同分片驗證交易和不同分片輸出交易的目標(biāo),但是當(dāng)客戶端不發(fā)送資金解鎖請求或交易廢棄請求時,就會存在資金鎖住的情況,當(dāng)有惡意節(jié)點進(jìn)行大量低額度的交易提交時,也會在各分片間造成極大壓力[52]。

      2.4.2 交易集中化

      交易集中化是指將跨片交易集中到指定鏈上或指定節(jié)點進(jìn)行統(tǒng)一處理,指定鏈上或節(jié)點上存儲了跨片交易所需的全部賬本數(shù)據(jù),既能對跨片交易進(jìn)行驗證,又能降低跨片交易傳播的難度。

      在Ethereum 2.0[53]的結(jié)構(gòu)設(shè)計中,信標(biāo)鏈(Beacon Chain)作為該架構(gòu)的核心,負(fù)責(zé)連接主鏈以及管理各個分片。信標(biāo)鏈?zhǔn)荅thereum 原鏈的一條側(cè)鏈,運行Casper FFG 共識。信標(biāo)鏈可以驗證Ethereum 2.0中的跨分片交易是否發(fā)生雙花,并且給各個分片提供最終確定性。當(dāng)系統(tǒng)中跨分片交易數(shù)量過多時,信標(biāo)鏈本身的局限性可能會成為跨分片交易的性能瓶頸。當(dāng)前Ethereum 2.0 仍未到達(dá)部署分片的階段,因此,信標(biāo)鏈結(jié)合分片鏈來處理跨片交易的方式存在廣闊的發(fā)展空間。

      2.4.3 交易類路由協(xié)議

      RapidChain 提出的委員會間路由協(xié)議(Intercommittee Routing Protocol)以及Sharper、AHL,都考慮到將跨片交易直接在不同分片之間進(jìn)行路由處理的相似設(shè)計,本文將此類跨片協(xié)議稱為“類路由協(xié)議”。類路由協(xié)議指將交易在不同分片之間進(jìn)行路由傳播,而非直接對交易進(jìn)行分解。

      RapidChain 對需要進(jìn)行跨片處理的交易,由分片中的任意節(jié)點根據(jù)路由表進(jìn)行路由,路由表中存儲logan個最近委員會中l(wèi)ogalogan的節(jié)點數(shù)據(jù)[54],路由通道只要建立后就可以多次使用,例如,需要將交易從分片A路由到分片C,而A到B、B到C之間存在通道,則可以通過A→B→C的路由通道將交易a路由成分片C的交易a′,從而將跨片交易轉(zhuǎn)化為片內(nèi)交易。

      2.5 狀態(tài)存儲

      狀態(tài)分片將整個網(wǎng)絡(luò)的賬本狀態(tài)分片存儲,各個分片維護(hù)一部分賬本數(shù)據(jù),能夠有效減少區(qū)塊鏈網(wǎng)絡(luò)節(jié)點的存儲負(fù)擔(dān)。然而,各個分片的數(shù)據(jù)不相交不僅會導(dǎo)致跨片交易的驗證極為困難,節(jié)點在不同分片之間進(jìn)行重配置時需要進(jìn)行大量的數(shù)據(jù)交接,也會降低賬本數(shù)據(jù)的安全性。因此,有研究人員提出對賬本存儲進(jìn)行部分分片的方案,相較比特幣設(shè)計,該方案能降低數(shù)據(jù)冗余,較好地處理跨分片交易,具有更高的靈活性和實用性。

      2.5.1 全分片存儲

      在全分片存儲模型中,整個區(qū)塊鏈賬本被分成若干份互不相交的賬本存儲在分片節(jié)點中,各個分片維護(hù)自己的賬本,整個區(qū)塊鏈網(wǎng)絡(luò)的各個分片合起來擁有完整的賬本。

      OmniLedger 是典型的全分片協(xié)作式賬本,各個分片存儲完全不同的數(shù)據(jù),這樣就將交易驗證過程中數(shù)據(jù)的交流交給跨片共識協(xié)議完成,同時在重配置過程中節(jié)點也需要對不同分片間的數(shù)據(jù)進(jìn)行交接。當(dāng)選擇在每一個epoch 后進(jìn)行分片內(nèi)節(jié)點更新的方案時,必然會有新加入分片的節(jié)點,而節(jié)點的賬本更新會造成數(shù)據(jù)遷移。有些協(xié)議通過設(shè)置state block 的方式來簡化數(shù)據(jù)遷移過程,當(dāng)每一個epoch結(jié)束后,設(shè)置一個state block 對之前的塊進(jìn)行總結(jié)并且由整個分片進(jìn)行驗算以確認(rèn)該塊正確無誤,新加入節(jié)點可以從state block 開始直接對新交易進(jìn)行驗證。

      狀態(tài)分片中賬戶狀態(tài)劃分策略不合理將導(dǎo)致各個分片的交易負(fù)載不均衡以及跨分片交易比例過高的問題,為此,BrokerChain[55]提出一種新的分片架構(gòu),以實現(xiàn)對分片狀態(tài)的動態(tài)劃分和調(diào)整。該分片協(xié)議根據(jù)一定時間內(nèi)的歷史交易信息構(gòu)建一個賬戶交易狀態(tài)圖,并對其進(jìn)行劃分[56],從而對存儲在各分片的賬戶狀態(tài)實現(xiàn)動態(tài)調(diào)整與重新配置。賬戶狀態(tài)動態(tài)調(diào)整策略可以在減少跨分片交易比例的同時實現(xiàn)分片間的負(fù)載均衡。

      考慮到基于分片機(jī)制的區(qū)塊鏈可能存在交易分片不均衡[57]的情況,為此,文獻(xiàn)[58]研究分片聯(lián)盟鏈的云端資源分配對區(qū)塊鏈吞吐量的影響,其基于隨機(jī)優(yōu)化理論框架,設(shè)計針對分片聯(lián)盟鏈的資源分配算法,該算法可在一定程度上緩解區(qū)塊鏈交易分布不均衡的問題。

      2.5.2 半分片存儲

      Sharper 是許可區(qū)塊鏈下的分片協(xié)議,其將整個賬本存儲成DAG 分布式賬本,當(dāng)存在跨片交易時,由不同分片共同創(chuàng)建狀態(tài)賬本并存儲,因此,同一份跨片交易在不同的分片中都需要進(jìn)行存儲,跨片交易在所有參與的相關(guān)分片中都存在數(shù)據(jù)冗余。

      洪梓聰?shù)龋?9]提出一種層級分片的區(qū)塊鏈系統(tǒng)Pyramid,該系統(tǒng)允許某些分片(稱為橋接分片)存儲多個其他分片的區(qū)塊,充當(dāng)分片間橋梁的作用,橋接分片可以對跨片交易直接驗證并進(jìn)行CoSi[60]共識,將其打包為包含跨片賬本數(shù)據(jù)的跨分片區(qū)塊,從而提升區(qū)塊鏈系統(tǒng)的事務(wù)吞吐量,降低事務(wù)確認(rèn)延遲。BrokerChain[55]基于動態(tài)狀態(tài)劃分策略提出一種新的跨分片協(xié)議,以提高跨分片交易處理的效率,在進(jìn)行狀態(tài)劃分的過程中,系統(tǒng)允許一部分普通用戶通過自愿抵押一定資產(chǎn)來充當(dāng)“中間人賬戶”,中間人賬戶的狀態(tài)會被系統(tǒng)分割成2 個或多個部分,分別存儲在2 個或多個分片中,從而參與到若干個跨分片交易的協(xié)調(diào)中,該文提出的跨分片協(xié)議可以減少跨片交易延遲,提高跨片交易執(zhí)行效率。

      3 分片技術(shù)的現(xiàn)有方案分析

      3.1 現(xiàn)有方案對比

      近年來,分片技術(shù)不斷更新迭代,在吞吐量、時延、共識協(xié)議的方式等方面都得到優(yōu)化,提升了分片技術(shù)的魯棒性和可實踐性。從表1 可以看出:無許可區(qū)塊鏈仍然是分片技術(shù)的主流方式,以比特幣為基礎(chǔ)的分片技術(shù)更加成熟;許可區(qū)塊鏈的應(yīng)用場景較少,但是近年來相關(guān)的分片技術(shù)仍然有所發(fā)展[61],許可區(qū)塊鏈將節(jié)點可信度交付給TEE 硬件[62]實現(xiàn),可以給予系統(tǒng)更優(yōu)的拜占庭容錯率以及更加靈活的分片和共識方式。

      表1 區(qū)塊鏈分片技術(shù)歸納Table 1 Summary of blockchain sharding technology

      在表1 中,各符號含義如下:

      x:區(qū)塊鏈規(guī)模大?。?/p>

      n:節(jié)點數(shù);

      k:分片數(shù);

      c:常數(shù)(c

      [a]:100 個節(jié)點/分片,共16 個分片;

      [b]:72 個節(jié)點/分片(惡意節(jié)點占12.5%),共25 個分片;

      [c]:250 個節(jié)點/分片,共4 000 個節(jié)點;

      [d]:36個分片(惡意節(jié)點占12.5%),共972個節(jié)點;

      [e]:36 個節(jié)點/分片,共2 048 個分片;

      [f]:4 個節(jié)點/分片,共5 個分片;

      [g]:分片鏈包含900 個節(jié)點和60 個分片,根鏈上包含900 個節(jié)點(惡意節(jié)點占25%)。

      不同協(xié)議片內(nèi)交易和跨片交易設(shè)計都有各自的特點,但也呈現(xiàn)出一定的共性:片內(nèi)共識協(xié)議以基于BFT的協(xié)議為主,跨片共識協(xié)議以交易可靠性為目的。

      基于BFT 的片內(nèi)共識協(xié)議具有交易最終性和低能耗的優(yōu)點,但是在安全性方面弱于基于PoW 的片內(nèi)共識協(xié)議,因此,部分分片技術(shù)將兩者相結(jié)合,在若干輪BFT 類協(xié)議后加入PoW 協(xié)議以提升分片的安全性??缙沧R協(xié)議則以交易可靠性為主要目的,對于跨片交易中的交易代價則關(guān)注較少。對于跨片交易的處理,雖然已經(jīng)有一定的實現(xiàn)方案,但是在跨片交易的模型實驗中對于復(fù)雜交易和交易數(shù)量的控制則顯得模糊,部分交易只在較簡單輸入和輸出分片的跨片模型下性能較好,有些往往需要將交易分解為若干筆子交易才能完成跨片交易。因此,無論是提升片內(nèi)共識交易的效率還是優(yōu)化跨片交易的過程,都是分片技術(shù)有待提高的方面。

      為了防止女巫攻擊[63],Elastico 和RapidChain 采用通過新節(jié)點解決PoW 問題的準(zhǔn)入性方案,一些許可區(qū)塊鏈因為將節(jié)點的安全性托付給TEE 硬件[64]實現(xiàn),所以未聲明新節(jié)點的準(zhǔn)入方式,而其他一些無許可區(qū)塊鏈對于新節(jié)點加入的協(xié)議闡述則顯得太過簡單。

      大多數(shù)分片技術(shù)在實現(xiàn)網(wǎng)絡(luò)分片和交易分片的設(shè)計上已經(jīng)初具規(guī)模,而在狀態(tài)分片上則顯得比較困難。傳統(tǒng)的全存儲分片技術(shù)一致地將區(qū)塊鏈賬本平均分配在各個分片中,近年來出現(xiàn)的部分存儲分片技術(shù)考慮到跨片交易中可能出現(xiàn)的數(shù)據(jù)遷移問題,靈活地將部分賬本狀態(tài)存儲或存儲在橋接分片中進(jìn)行處理,或?qū)^(qū)塊鏈分片賬本進(jìn)行動態(tài)合并分離[65],從而提高了區(qū)塊鏈分片賬本的利用率。

      此外,從表1 也可以明顯看出,近年來分片技術(shù)的吞吐量取得大幅提升。不同技術(shù)在驗證時所使用的實驗設(shè)備和方式不盡相同,將吞吐量、時延等數(shù)據(jù)作為協(xié)議性能衡量指標(biāo)具有可行性,但是不能一味地為了實現(xiàn)高吞吐量、低時延等目標(biāo)而忽略了分片技術(shù)的完整性、安全性和簡潔性。

      3.2 分片技術(shù)面臨的挑戰(zhàn)

      3.2.1 分片內(nèi)挑戰(zhàn)

      在區(qū)塊鏈網(wǎng)絡(luò)中,誠實節(jié)點與惡意節(jié)點的比例要控制在一定范圍內(nèi),以保證整個網(wǎng)絡(luò)的安全性。在比特幣中,只有當(dāng)誠實節(jié)點的比例占到51%以上,整個區(qū)塊鏈才能抵御雙花攻擊[66]。在分片區(qū)塊鏈中,將誠實節(jié)點分布到不同的區(qū)塊鏈分片中,雖然系統(tǒng)總體的誠實節(jié)點數(shù)不變,但是各個分片內(nèi)誠實節(jié)點的實際數(shù)量減少,相比針對整個區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行攻擊,攻擊者對于單分片攻擊的規(guī)模更小,攻擊成本也更低。

      BFT 類片內(nèi)共識協(xié)議雖然比PoW 類共識協(xié)議的能耗更低,但在信息交流的過程中表現(xiàn)出效率低下的問題并對信息過度確認(rèn),因此,可以通過優(yōu)化BFT算法來適當(dāng)簡化信息交流與確認(rèn)過程中對信息的重復(fù)使用[67],或者運用一定的數(shù)學(xué)方法作為對BFT 協(xié)議的簡化[68],從而在一定程度上提升協(xié)議效率。

      3.2.2 分片間挑戰(zhàn)

      在分片區(qū)塊鏈中,跨片交易的處理可能涉及若干個分片,當(dāng)攻擊者通過較小的攻擊成本實現(xiàn)對單個分片的攻擊時,所有和該分片相關(guān)的跨片交易也會受到影響。在區(qū)塊鏈網(wǎng)絡(luò)中,跨片交易的比例很高,因此,跨片交易的可靠性和效率對區(qū)塊鏈系統(tǒng)吞吐量的影響較大。

      雖然部分跨片協(xié)議有處理跨片交易的能力,但是還是需要客戶端參與才能保證跨片交易的有效進(jìn)行,未充分優(yōu)化的跨片共識協(xié)議增加了客戶端的壓力。分片技術(shù)對輕客戶端的支持也十分重要,既要保證在客戶端做到狀態(tài)分片,最小化客戶端存儲的賬本狀態(tài),又要盡可能減少客戶端在跨片交易驗證過程中的操作步驟。

      由于節(jié)點的存儲空間有限,重配置過程中的節(jié)點遷移需要進(jìn)行大量的數(shù)據(jù)上傳和更新,在節(jié)點存儲空間無限的假設(shè)下,節(jié)點可以任意存儲足夠多的賬本數(shù)據(jù),不需要在遷移過程中進(jìn)行賬本數(shù)據(jù)更新,節(jié)點基本可以持續(xù)運作。對于分片區(qū)塊鏈而言,制約區(qū)塊鏈性能的最主要因素是存儲容量。在當(dāng)前的節(jié)點遷移方案中,設(shè)置checkpoint 是一個較優(yōu)的方式,即在很大一個epoch 后將過往的若干個塊化簡為一個塊,將各個節(jié)點的賬本大小控制在2 GB 左右。但是,如何提高節(jié)點重配置階段遷移數(shù)據(jù)的利用率仍然需要深入探究。

      3.2.3 系統(tǒng)層級挑戰(zhàn)

      區(qū)塊鏈分片規(guī)模影響到很多方面,包括分片安全性、共識協(xié)議效率、吞吐量等。但是,現(xiàn)行的分片大小往往受制于協(xié)議的安全性保證,如Zilliqa 只有在600 個節(jié)點以上才能保證安全,而對于區(qū)塊鏈網(wǎng)絡(luò)吞吐量和其他因素則難以全面考慮。同時,分片的重配置調(diào)節(jié)也是一個值得關(guān)注的內(nèi)容,智能化和動態(tài)化的重配置階段需要考慮到分片活躍度、分片容錯率、新加入節(jié)點數(shù)量等因素,而目前的重配置方案仍然是以更加保證安全性的靜態(tài)場景為出發(fā)點,對其他因素的考慮不足。

      大多數(shù)協(xié)議對于安全性的分析通常集中于拜占庭對手規(guī)模、信息可靠性以及分片隨機(jī)性方面,而在整個安全規(guī)模上(包括Layer1 和Layer2)的考慮則顯得有些薄弱。對于當(dāng)前區(qū)塊鏈中的各種攻擊方式,如何在新的分片區(qū)塊鏈設(shè)計過程中考慮這些防御攻擊,從而更加完善地分析所關(guān)注區(qū)塊鏈的安全性,都是今后的研究方向。本文在對各個協(xié)議進(jìn)行匯總分析的過程中,發(fā)現(xiàn)只有OmniLedger 利用ByzCoinX來應(yīng)對DoS 攻擊[69],對于其他協(xié)議是否能夠抵抗Layer1 層的攻擊以及在Layer2 層還有哪些共識性問題,都需要建立一個安全性證明框架。

      3.3 分片技術(shù)未來展望

      本文認(rèn)為區(qū)塊鏈分片技術(shù)在未來需要在以下方面繼續(xù)進(jìn)行研究:

      1)提出更加高效的共識協(xié)議,這類協(xié)議將優(yōu)化現(xiàn)有網(wǎng)絡(luò)的分片方式,從交易分片、狀態(tài)分片角度提出更好的實現(xiàn)方法,使分片技術(shù)提升到區(qū)塊鏈擴(kuò)容技術(shù)的新高度。

      2)將區(qū)塊鏈分片技術(shù)與其他擴(kuò)容技術(shù)融合創(chuàng)新。分片技術(shù)與其他技術(shù)在應(yīng)用層面并不矛盾甚至可以優(yōu)勢互補(bǔ),將分片技術(shù)與其他擴(kuò)容技術(shù)相結(jié)合,既有利于發(fā)揮其他擴(kuò)容技術(shù)的優(yōu)勢,又能夠拓展分片技術(shù)的應(yīng)用空間。

      3)提出標(biāo)準(zhǔn)的區(qū)塊鏈分片技術(shù)協(xié)議。隨著分片技術(shù)的逐步完善,更標(biāo)準(zhǔn)的分片技術(shù)安全性協(xié)議也會更完善,安全可靠同時具有高性能的分片技術(shù)協(xié)議將成為分片技術(shù)應(yīng)用于區(qū)塊鏈擴(kuò)容任務(wù)的重要基石,近年來,一些學(xué)者也正致力于這個方向的研究[70]。

      4)開發(fā)區(qū)塊鏈分片技術(shù)的模擬平臺。在分片區(qū)塊鏈設(shè)計的過程中,現(xiàn)行的開源區(qū)塊鏈只適用于當(dāng)前所關(guān)注的研究分支。未來可以設(shè)計一套完備的區(qū)塊鏈分片流程,從分片規(guī)模、節(jié)點行為、交易設(shè)定、網(wǎng)絡(luò)構(gòu)建等方面對分片區(qū)塊鏈進(jìn)行模擬驗證,便于區(qū)塊鏈分片技術(shù)的研究開發(fā)人員關(guān)注分片區(qū)塊鏈中的不同模塊,進(jìn)一步促進(jìn)區(qū)塊鏈分片技術(shù)的發(fā)展。

      4 結(jié)束語

      近年來,區(qū)塊鏈分片技術(shù)受到學(xué)術(shù)界和工業(yè)界的高度關(guān)注,為解決傳統(tǒng)區(qū)塊鏈在可擴(kuò)展性上存在瓶頸的問題,許多研究人員提出了不同的分片技術(shù)協(xié)議。本文介紹分片技術(shù)中的一些經(jīng)典方法和理論,對這些協(xié)議進(jìn)行對比分析,總結(jié)當(dāng)前分片技術(shù)面臨的困境和挑戰(zhàn)。隨著區(qū)塊鏈分片技術(shù)的發(fā)展,未來將會出現(xiàn)更加高效的共識協(xié)議、更加完善的擴(kuò)容技術(shù)、更加標(biāo)準(zhǔn)的安全性協(xié)議以及更好的分片區(qū)塊鏈模擬平臺,這些成果都將進(jìn)一步改善基于分片機(jī)制的區(qū)塊鏈技術(shù)生態(tài)。

      猜你喜歡
      分片賬本共識
      一圖讀懂“上海賬本”
      上下分片與詞的時空佈局
      詞學(xué)(2022年1期)2022-10-27 08:06:12
      共識 共進(jìn) 共情 共學(xué):讓“溝通之花”綻放
      論思想共識凝聚的文化向度
      分片光滑邊值問題的再生核方法
      CDN存量MP4視頻播放優(yōu)化方法
      商量出共識
      數(shù)說:重慶70年“賬本”展示
      基于模糊二分查找的幀分片算法設(shè)計與實現(xiàn)
      丟失的紅色賬本
      玛沁县| 西乌珠穆沁旗| 遵义县| 潢川县| 调兵山市| 金堂县| 论坛| 钟祥市| 精河县| 安国市| 日土县| 桦川县| 壤塘县| 尼木县| 宁远县| 任丘市| 理塘县| 太湖县| 类乌齐县| 蕉岭县| 南郑县| 隆化县| 镇雄县| 浙江省| 循化| 河津市| 屯昌县| 博野县| 乌拉特中旗| 大同县| 仪征市| 库尔勒市| 涟水县| 蒙山县| 施秉县| 渑池县| 历史| 芜湖县| 盖州市| 宣恩县| 安图县|