• 
    

    
    

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

      區(qū)塊鏈吞吐率提升研究*

      2019-01-23 11:49:38潘業(yè)達陳恭亮郭乃網
      通信技術 2019年1期
      關鍵詞:分片共識區(qū)塊

      潘業(yè)達 ,陳恭亮 ,郭乃網

      (1.上海交通大學,上海 200240;2.國網上海電科院,上海 200232)

      0 引 言

      隨著數(shù)字貨幣的火熱,區(qū)塊鏈技術逐步進入公眾的視野,并引起了廣泛的討論和研究。目前,雖然區(qū)塊鏈各個方面的研究火熱,但是距離真正投入使用、影響并改變人類現(xiàn)有的生活生產方式還很長的路需要探索。影響區(qū)塊鏈投入使用的一個重要原因在于目前的區(qū)塊鏈系統(tǒng)性能無法滿足日常生產生活需求,其中最重要的瓶頸在于其低下的吞吐率。因此,本文分析限制區(qū)塊鏈吞吐率的因素,分別舉例說明如何突破這些瓶頸以提升區(qū)塊鏈吞吐率,以期區(qū)塊鏈更早投入生產。

      1 區(qū)塊鏈概述

      區(qū)塊鏈技術是中本聰[1]構建比特幣系統(tǒng)的底層技術,隨著密碼貨幣市場的火熱,逐漸被學術界所關注和研究。區(qū)塊鏈技術是集分布式系統(tǒng)、點對點網絡、密碼學于一體的新興技術,主要解決了在沒有引入可信第三方的基礎上,在相互不信任的節(jié)點之間達成共識的問題。突出貢獻在于,能夠在擁有大量參與者的情況下(比特幣十幾萬個節(jié)點),無準入且可以隨時退出的情況下達成共識。這相較于傳統(tǒng)的基于投票的BA類共識協(xié)議有了巨大的突破(在PBFT中,參與節(jié)點不能超過100個,且所有的節(jié)點需要引入可信第三方對節(jié)點身份進行認證,同時在協(xié)議開始運行后不能有新的節(jié)點加入)。

      同時,區(qū)塊鏈通過使用Hash函數(shù)、Merkle Tree、數(shù)字簽名等密碼學方法,構造出了一條證據鏈,使得上鏈的數(shù)據在經過有限的時間等待后無法被篡改,在各個節(jié)點之間形成一個公共的賬本。區(qū)塊鏈技術通過其開創(chuàng)性的共識協(xié)議,為互不信任的節(jié)點提供了一種信任機制,即由對傳統(tǒng)意義上人、企業(yè)、政府等實體的信任,轉移到對點對點網絡、密碼學等技術的信任,可能帶來下一次的信息技術等革命。

      2 區(qū)塊鏈擴展性限制

      雖然區(qū)塊鏈技術的前景十分廣闊,但目前技術發(fā)展并不成熟,無法支撐現(xiàn)階段業(yè)務的正常運行,其中區(qū)塊鏈的低擴吞吐率是最大的瓶頸。相較于比特幣理論上的7 TPS和以太坊的15 TPS,日常系統(tǒng)可能每秒轉賬(交易)量需要上千上萬。如此低的吞吐率,在實際應用中杯水車薪。

      如圖1所示,區(qū)塊鏈可以根據功能由低到高劃分為密碼基礎層、網絡層、共識層和應用層四個層次,分別對應于數(shù)字簽名、Merkle樹等密碼算法,點對點網絡,POW、POS、PBFT等共識協(xié)議,智能合約等上層應用。其中,密碼基礎層對于區(qū)塊鏈的性能等影響主要體現(xiàn)在簽名和驗簽過程,可以使用更加輕便的簽名算法如BLS短簽名;網絡層性能瓶頸主要在于點對點網絡的性能瓶頸,其突破需要點對點網絡的進一步發(fā)展;應用層是構建在底層區(qū)塊鏈網絡上的具體應用,因此暫時不予考慮其對吞吐率的影響;而相較于其他三層,共識層是目前吞吐率的短板,限制了區(qū)塊鏈性能的提升。因此,本文在主要討論共識層提高吞吐率的模型,并舉例分析如何實現(xiàn)吞吐率的提升。

      圖1 區(qū)塊鏈層次結構

      共識層中,限制區(qū)塊鏈吞吐率的主要因素是其鏈狀的結構,因為只有被記錄到區(qū)塊鏈上的交易才是有效交易。決定交易吞吐量的因素有三點——出塊速率、塊的大小以及是否可以通過并行提高系統(tǒng)的吞吐率。因此,如果想要提高區(qū)塊鏈的擴展性,要從這三個方面入手。但是,由于區(qū)塊鏈的安全性限制,如果過度提高出塊的速率或者區(qū)塊的大小,會導致安全性的下降。同時,由于區(qū)塊鏈的鏈式結構,通過并行來提高吞吐率十分困難。后續(xù)章節(jié)中,本文分析了限制上述三點的主要因素,提出了可能的解決辦法,并且通過例舉現(xiàn)存項目分析比較其優(yōu)缺點。

      3 通過提高出塊速率提高吞吐率

      由于區(qū)塊鏈的鏈式結構,如果出塊速率過快,會導致產生過多分叉,進而影響系統(tǒng)的安全性,如圖2所示。從直覺上看,如果兩個區(qū)塊之間的時間間隔短于整個網絡的網絡延遲,會出現(xiàn)這種情況。假設將所有的節(jié)點進行線性排列,當?shù)谝粋€節(jié)點在高度i發(fā)出一個區(qū)塊,然后逐個向后面的區(qū)塊進行傳遞。如果在到達所有節(jié)點前,最后一個節(jié)點在同一高度也產生了一個區(qū)塊,并且向前傳播。這樣前一部分節(jié)點在高度i的區(qū)塊為,剩余的節(jié)點在高度i的區(qū)塊為,區(qū)塊鏈產生了分叉。此外,隨著出塊速率的提高,分叉的可能性也在提高,其安全性呈指數(shù)下降,無法提供50%的安全性,攻擊者可以用更少的資源攻陷區(qū)塊鏈系統(tǒng)。如圖2所示,隨著出塊速率的增加,安全系數(shù)呈指數(shù)下降,這在文獻[2]中有具體說明。

      如果想要提高出塊速率而不影響吞吐率,則需要解決分叉問題。這里主要提出兩種解決分叉的方法:一是通過改進傳統(tǒng)的拜占庭共識協(xié)議,二是通過改變區(qū)塊鏈的結構,從傳統(tǒng)的鏈式結構轉換為有向無環(huán)圖結構(DAG)[3]。

      圖2 安全性與出快速率關系

      3.1 改進的拜占庭共識

      首先,區(qū)塊鏈產生分叉的原因在于,節(jié)點可以在區(qū)塊鏈的任意位置向后延伸,即在區(qū)塊鏈的同一高度可以產生多個區(qū)塊,而哪一個區(qū)塊被最終確認是概率性事件。如果在區(qū)塊鏈的相同高度只能產生一個區(qū)塊,那么就不會產生分叉。而傳統(tǒng)的共識協(xié)議對于一個事件的共識只有達成共識和不達成共識兩種狀態(tài),因此如果使用基于傳統(tǒng)拜占庭共識協(xié)議,并不會因為出塊速率的提高而導致分叉的產生。但是,傳統(tǒng)的共識協(xié)議并不支持大規(guī)模共識。例如,PBFT[4]參與的節(jié)點數(shù)理論上不能超過100,這在公鏈系統(tǒng)要求全網參與的情況下杯水車薪。因此,基于拜占庭共識的協(xié)議通常做法是通過某種算法,均勻采樣產生一個委員會和一個備選區(qū)塊。在委員會中對備選區(qū)塊進行投票,如果投票成功產生區(qū)塊,如果投票失敗,這一輪不產生區(qū)塊。需要注意的是,為了委員會中好人占的比例大致同整個網絡中好人的比例相等,要求委員會的大小不能太小,需要遠大于100,這樣傳統(tǒng)的拜占庭共識協(xié)議無法滿足需求,需要對現(xiàn)有的拜占庭類協(xié)議進行改進,以支持更大的參與者。這類協(xié)議中較優(yōu)秀的是Micali教授提出的Algorand[5]算法,通過VRF[6]隨機產生備選區(qū)塊和委員會,并通過一個其稱為BA*的二元輸出的拜占庭共識產生一個一致的輸出。Algorand算法的公平性體現(xiàn)在每一輪都會產生一個新的委員會,以保證委員會的代表性。

      Algorand在實驗環(huán)境下50 000個節(jié)點參與,區(qū)塊大小為2 MB的情況下,出塊的時間間隔約為12 s,吞吐率約為327 MB/h,相較于比特幣的6 MB/h提升了50倍以上。同時,實驗表明,區(qū)塊的大小在Algorand中對確認時間幾乎沒有影響,因此可以通過提高區(qū)塊的大小進一步提高吞吐率。例如,在區(qū)塊大小為10 MB的情況下,Algorand的吞吐率大約為750 MB/h,是比特幣吞吐率的125倍。

      通過使用改進的拜占庭共識的問題在于,為了使委員會中的壞人比例大致等于全網中的壞人,委員會的大小需要得到保證。在Algorand實驗中,委員會的大小為5 000個節(jié)點,在委員會中需要進行多輪投票,導致網絡會產生大量的投票信息而出現(xiàn)網絡擁塞。

      3.2 有向無環(huán)圖(DAG)

      傳統(tǒng)的區(qū)塊鏈中,同時有多個參與者在區(qū)塊鏈的不同位置向后擴展,但是最終只有一條鏈會被接受,即從全局來看,全網生成的是一棵樹狀的結構,但為了能夠為其中的區(qū)塊提供一個不可篡改的順序,即抽象出一個公共賬本,區(qū)塊鏈選擇只接受其中一條鏈,其余分支將被舍棄。因此,不管用何種方法選取這條鏈,都會不斷產生分叉。如果分叉的速率和數(shù)量太多,會影響系統(tǒng)的安全性。DAG(有向無環(huán)圖)的思想是,如果將網絡中的所有的區(qū)塊全部包含到最終的狀態(tài)圖中,那么將不存在分叉。此外,還可以從兩個方面提高系統(tǒng)的擴展性。第一,出塊的速率可以更高,因為系統(tǒng)存在分叉,出塊速率的加快不會帶來安全性的降低。第二,在鏈式結構中,部分產生的區(qū)塊被忽略了。在DAG結構中,所有的合法區(qū)塊最終都會被包含在最終的系統(tǒng)中,所有參與者對于打包交易的貢獻最終會體現(xiàn)在最后的系統(tǒng)狀態(tài)中,實現(xiàn)了某種意義上的并行。

      有向無環(huán)圖同傳統(tǒng)鏈式結構的主要區(qū)別在于,每個區(qū)塊中不僅包含一個父區(qū)塊的Hash值。有向無環(huán)圖應當包含多個區(qū)塊的Hash值,從而構成一個有向無環(huán)圖的結構,且其包含的區(qū)塊的Hash值應為在其本地視圖下最新的沒有子區(qū)塊的區(qū)塊。DAG的結構如圖3所示。

      圖3 DAG結構

      如果使用DAG結構,其主要的挑戰(zhàn)在于如何在一個有向無環(huán)圖中提取出一個公共賬本,或者說如何比較任意兩個區(qū)塊之間的先后順序。目前,有兩種方式。一種方式是對任意兩個區(qū)塊,通過直接或者間接連接到或被其連接的區(qū)塊進行投票,獲得票數(shù)多的區(qū)塊被認為順序更靠前。這里,計票過程在各個節(jié)點根據本地的視圖中進行的。投票的原則在SPECTRE[7]中有具體描述,這里不再贅述。第二種方式是,在DAG中通過某種方法提取一條主鏈來為全視圖中所有的區(qū)塊給出一個唯一的序列號,進而構造出一個公共賬本。這種方式在文獻[3]中提出,假設有一個算法能夠在DAG的視圖中提取出一條主鏈,這條鏈需要滿足區(qū)塊鏈的安全屬性,即鏈的增長性,公共前綴和鏈的質量[8]。通過這條主鏈為全視圖中的所有區(qū)塊提供一個全視圖唯一的序列號。目前,較為可行的辦法是通過Ghost[9]方法進行主鏈的選擇Conflux[10]。Conflux在構造有向無環(huán)圖時,將連接前向區(qū)塊分為父節(jié)點和叔節(jié)點,連接父節(jié)點的邊為主邊,連接叔節(jié)點的邊為從邊,父節(jié)點的選擇是根據Ghost中的最重鏈原則進行選擇。首先,去掉所有的從邊,將視圖從一個圖退化成一棵樹,在這棵樹中使用GHOST算法,選擇出一條主鏈。在Conflux中,在網絡節(jié)點個數(shù)為20 000、區(qū)塊大小為4 MB、出塊速率為0.4個/s、網絡帶寬為40 Mb/s的情況下,吞吐率為6 400 TPS。

      需要注意,目前DAG還處于基于POW階段,使用POS的協(xié)議多存在安全性隱患,失去了區(qū)塊鏈去中心化的意義。同時,由于POS的DAG不需要消耗資源,它可以在DAG的任何節(jié)點后產生區(qū)塊,并且最終都會被包含在所有參與者的視圖中,這樣DAG的視圖可能無法收斂。因此,目前DAG并不適合使用POS一類的不需要消耗資源的協(xié)議選取主鏈。同時,由于所有的合法區(qū)塊都會被包含,區(qū)塊中的數(shù)據有大量重復,造成了大量的數(shù)據冗余,其對擴展性的提高無法達到預期效果,且增大了存儲負載。

      4 通過變相提高塊的大小提高吞吐率

      一昧地擴大塊的大小會帶來兩種問題。一是隨著塊的增大,其廣播到全網中所有節(jié)點的時間(網絡延遲)會線性增長,如圖4所示。出塊速率是相對于網絡延遲而言的,在出塊速率不變的前提下,增加網絡延遲變相地提高了出塊速率,導致了更加頻繁的分叉,進而影響了系統(tǒng)的安全性。二是當區(qū)塊大小增大,則出塊的節(jié)點所擁有的權利(打包交易的數(shù)量)隨之增大,會導致某種意義上的中心化。可以想像,如果塊大小無限大,那么這就是一個中心化系統(tǒng)。單純提高區(qū)塊的大小,會導致網絡延遲的增加,因此可以將一個大區(qū)塊拆分成許多小區(qū)塊。小區(qū)塊的確認獨立于大區(qū)塊,即小區(qū)塊的接收可以隨時停止,且全網都會同步到相同的小區(qū)塊上。在現(xiàn)有的協(xié)議中,康奈爾大學博士后Ittay Eyal等人提出的bitcoin-ng[11]協(xié)議最具代表性。

      圖4 區(qū)塊大小同網絡時延關系

      圖5 bitcoin-ng結構

      Bitcoin-ng將區(qū)塊分為主區(qū)塊和微區(qū)塊兩種角色。主區(qū)塊中包含工作量證明信息,微區(qū)塊中包含具體交易信息和產生主區(qū)塊的節(jié)點簽名。主區(qū)塊之間的時間間隔需足夠長,防止出現(xiàn)過多的分叉。從創(chuàng)世區(qū)塊開始,所有的節(jié)點基于創(chuàng)世區(qū)塊進行POW。成功算出POW的nonce值的節(jié)點首先產生一個主區(qū)塊,其中包含POW的驗證信息和自己的簽名,廣播到整個網絡中。收到這個主區(qū)塊的其他節(jié)點停止基于創(chuàng)世區(qū)塊的POW工作。產生主區(qū)塊的節(jié)點不斷打包網絡中的交易成為一個個微區(qū)塊,將微區(qū)塊廣播到網絡中去;其他的節(jié)點選擇基于某個微區(qū)塊進行下一輪的POW,產生新的主區(qū)塊,結構圖如圖5所示。

      理論上,bitcoin-ng的吞吐率只受單個節(jié)點處理速度的限制,因為高的吞吐率不會產生分叉。雖然微區(qū)塊之間的時間間隔可以遠小于主區(qū)塊,但是其時間間隔不能夠無限小。微區(qū)塊的出塊速率非??鞎r,會導致在主區(qū)塊出塊附近出現(xiàn)非常多的分叉,分散了算力,嚴重影響系統(tǒng)的安全性。

      另一種拆分區(qū)塊的方法是首先選出一個領導者,領導者不斷打包交易直到產生新的領導者。這種協(xié)議中具有代表性的是康奈爾大學的Elaine教授提出的Thunderella[12]協(xié)議,主要過程為:

      (1)選出一個加速節(jié)點;

      (2)選出一個委員會;

      (3)加速節(jié)點收集網絡中的交易信息,將交易的信息進行排序后簽名發(fā)送給委員會;

      (4)委員會對交易進行投票,如果一條交易收到的票數(shù)超過了3/4,那么這筆交易就被確認;

      (5)否則,交易進入底層的區(qū)塊鏈系統(tǒng),等待足夠長的時間,進行確認。

      相較于bitcoin-ng在微區(qū)塊之間需要有一定的時間間隔,Thunderella中的領導者在兩個交易之間不需要等待,可以連續(xù)向委員會發(fā)送交易,這樣在領導者為誠實的且委員會中超過3/4是誠實的情況下,系統(tǒng)的性能瓶頸被限制在領導者的單節(jié)點處理速度和委員會投票的通信復雜度上。同Algorand一樣,這種使用投票的共識協(xié)議會大大增加網絡中路由交易信息的數(shù)量,造成網絡擁塞。

      5 通過并行提高吞吐率

      區(qū)塊鏈單條鏈的結構使得打包交易過程只能夠串行進行,串行的模式導致難以通過并行提升效率。在串行模式下,吞吐率的上界被單節(jié)點的網絡速度和處理性能從物理上被限制,且隨著網絡規(guī)模的增大,系統(tǒng)的性能不能同比上升,甚至會有所下降。為了使得區(qū)塊鏈能夠實現(xiàn)并行,可以有兩種方法。一是將區(qū)塊鏈系統(tǒng)分層,底層是區(qū)塊鏈網絡,只存儲關鍵信息,上層負責具體交易的處理,上層之間相互獨立,可以并行處理數(shù)據;二是借助分片技術,拆分系統(tǒng)中的資源,各個分片單獨處理各自的交易。

      5.1 分層

      區(qū)塊鏈的主要優(yōu)勢在于能夠在互不信任的網絡中提供一個較可信的環(huán)境,并且將所有的交互信息進行存儲。但是,在實際的生產生活中,交易完整的處理過程不需要都在可信環(huán)境下,所有的數(shù)據也無需無差別存貯。事實上,只要在交易的重要過程能夠提供一個安全環(huán)境,且對關鍵數(shù)據進行存儲,就可以滿足日常生產生活的需求。分層的思想是關鍵的交易和信息在底層的區(qū)塊鏈執(zhí)行和存儲,非關鍵交易的具體執(zhí)行和中間結果由參與方線下執(zhí)行,線下的交易可以并行處理。從全局來看,這大大提高了系統(tǒng)吞吐率。

      在分層的解決方案中,較具代表性的是閃電網絡[13]。在閃電網絡中,需要進行交易的雙方需要向區(qū)塊鏈提交一個智能合約來創(chuàng)建交易通道,在智能合約中需要將一定量的代幣鎖定。在創(chuàng)建好支付通道后,交易雙方在線下進行交易,交易的安全性通過多方簽名來保證。交易結束后,將最后的狀態(tài)提交到主鏈上,并且釋放通道關閉交易。主要流程如圖6所示。

      圖6 閃電網絡交易過程

      雖然閃電網絡將多個交易簡化成了兩個交易,但是其使用范圍十分受限。在閃電網絡中,線下交易只能在已有直接或者間接通道的用戶之間進行,同時只有在交易頻率較高的情況下才能夠體現(xiàn)出其優(yōu)勢。但是,在網絡中存在大量的一次性交易,即A向B發(fā)送一筆交易后,后續(xù)長時間內A和B之間不會發(fā)送交易。在這種情況下,單筆交易會被擴展為兩筆交易,得不償失。

      5.2 分片

      分片技術是一種應用于數(shù)據庫分片的傳統(tǒng)擴容技術。它將數(shù)據庫分割成多個碎片,并將這些碎片放置在不同的服務器上。在區(qū)塊鏈情境中,網絡上的交易將被分成不同的碎片,由網絡上的不同節(jié)點單獨處理。每個節(jié)點只需處理一小部分傳入的交易,并且通過與網絡上的其他節(jié)點并行運算,可以同時完成對交易的驗證和處理。因此,隨著網絡規(guī)模的增長,區(qū)塊鏈同步提升將成為可能,這種屬性也稱為水平擴容。

      在區(qū)塊鏈中,通過將參與者分片,每個分片單獨處理,存儲不同的交易信息。可以將每個分片想象成一個子鏈,所有的子鏈構成了完整的區(qū)塊鏈。區(qū)塊鏈中,分片的技術難點在于保證跨分片交易的原子性。一筆交易如果被接受,在所有的分片中都會被接受;如果不被接受,所有的分片都會拒絕這比交易。即狀態(tài)的改變是原子性的,全網中的狀態(tài)是相同的,如何實現(xiàn)在文獻[14-15]中有具體的描述。同時,在分布式系統(tǒng)中,分片由中心節(jié)點來決定。但是,在區(qū)塊鏈系統(tǒng)中,沒有一個中心的系統(tǒng)來進行分片。要保證分片的隨機性,需要有一個隨機源來產生隨機數(shù)進行分片。慶幸的是,區(qū)塊鏈所要解決的問題是隨機選取一個節(jié)點來打包交易完成出塊,因此在現(xiàn)存的一些共識算法中可以提供這樣一個隨機源。例如,Algorand中通過VRF產生隨機數(shù),或者通過POW產生的符合要求的nonce值(雖然這不是一個隨機數(shù),但是也是一個不可預測的值)。

      6 結 語

      本文總結了限制區(qū)塊鏈吞吐率提升的主要因素,抽離出提升區(qū)塊鏈吞吐率的架構,并從三個方面描述了提高區(qū)塊鏈吞吐率的模型,舉例進行了具體分析。在同一協(xié)議中可能會使用其中一種或多種,表1中例舉比較了各個協(xié)議中提高吞吐率的情況。其中,Y表示該協(xié)議擁有該特性,N表示沒有。

      表1 提升吞吐率協(xié)議對比

      相信隨著技術的發(fā)展,當吞吐率不再是限制區(qū)塊鏈實用的主要影響因素時,區(qū)塊鏈作為可能的下一代信息革命的優(yōu)勢將真正展現(xiàn)出來。

      猜你喜歡
      分片共識區(qū)塊
      上下分片與詞的時空佈局
      詞學(2022年1期)2022-10-27 08:06:12
      共識 共進 共情 共學:讓“溝通之花”綻放
      區(qū)塊鏈:一個改變未來的幽靈
      科學(2020年5期)2020-11-26 08:19:12
      論思想共識凝聚的文化向度
      分片光滑邊值問題的再生核方法
      CDN存量MP4視頻播放優(yōu)化方法
      區(qū)塊鏈:主要角色和衍生應用
      科學(2020年6期)2020-02-06 08:59:56
      商量出共識
      人大建設(2019年12期)2019-11-18 12:11:06
      基于模糊二分查找的幀分片算法設計與實現(xiàn)
      區(qū)塊鏈+媒體業(yè)的N種可能
      傳媒評論(2018年4期)2018-06-27 08:20:12
      中超| 井冈山市| 洛南县| 洛宁县| 乌审旗| 沧州市| 电白县| 同江市| 萨迦县| 高台县| 马龙县| 呼图壁县| 大厂| 黔江区| 樟树市| 灵石县| 信宜市| 安仁县| 长宁县| 黄石市| 尼玛县| 孝感市| 金坛市| 固阳县| 当涂县| 望都县| 钟山县| 盘锦市| 姜堰市| 沂南县| 新和县| 丹阳市| 阳新县| 临邑县| 徐州市| 藁城市| 平和县| 遂溪县| 扎鲁特旗| 陆川县| 和平县|