亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        區(qū)塊鏈增強型輕量級節(jié)點模型

        2020-06-01 10:54:40趙羽龍牛保寧
        計算機應(yīng)用 2020年4期
        關(guān)鍵詞:系統(tǒng)

        趙羽龍,牛保寧,李 鵬,樊 星

        (太原理工大學(xué)信息與計算機學(xué)院太原030600)

        (?通信作者電子郵箱niubaoning@tyut.edu.cn)

        0 引言

        區(qū)塊鏈技術(shù)由于其不可篡改、可追溯、去中心化等特性逐漸得到廣泛的關(guān)注。它最早起源于中本聰?shù)谋忍貛虐灼?],在數(shù)字加密貨幣[1]、供應(yīng)鏈金融[2]、數(shù)據(jù)公證[3]、資源共享[4]等領(lǐng)域有許多的應(yīng)用場景。區(qū)塊鏈?zhǔn)褂面準(zhǔn)降慕Y(jié)構(gòu)和一致性協(xié)議保證區(qū)塊數(shù)據(jù)不可篡改和可追溯,但無休止的數(shù)據(jù)追加對單個節(jié)點的存儲造成很大壓力。采用完全副本(每個節(jié)點保存一份)的數(shù)據(jù)存儲方式,對系統(tǒng)存儲空間也造成很大浪費。

        以比特幣為例,截至2019 年3 月27 日,共產(chǎn)生569 001 個區(qū)塊、17 612 496個比特幣,總交易量395 438 152筆,數(shù)據(jù)總?cè)萘?96.15 GB,鏈上認(rèn)證地址49 245 944,市值近5 000 億[5]。據(jù)BitNodes[6]統(tǒng)計,全網(wǎng)使用70001 協(xié)議(>=Satoshi:0.8.x)同時在線的全節(jié)點有近10 000個。單個節(jié)點需要的磁盤空間約200 GB,每個節(jié)點保存一份,那么保守的估計整個系統(tǒng)需要2 PB 的存儲容量來存儲區(qū)塊數(shù)據(jù),而且每年還以線性的速度增長。

        SPV(Simplified Payment Verification)節(jié)點模型[1]不存儲區(qū)塊鏈交易數(shù)據(jù),只具有錢包功能,可以減輕存儲壓力;但減弱節(jié)點間的對等性,使得系統(tǒng)日趨中心化。全節(jié)點存儲全部的區(qū)塊數(shù)據(jù),可以驗證交易(挖礦),為其他節(jié)點提供數(shù)據(jù),具有完備的節(jié)點功能。針對存儲資源較少的設(shè)備,比特幣白皮書中介紹了SPV節(jié)點,它在初始化同步過程中只下載區(qū)塊頭,然后根據(jù)自身需要從全節(jié)點請求數(shù)據(jù)。這種節(jié)點所需的存儲大小只與區(qū)塊高度成線性關(guān)系,與區(qū)塊大小無關(guān)。每個區(qū)塊頭80 B,一年僅需4.2 MB 的空間,極大地減輕了存儲壓力。但這種節(jié)點完全依賴于全節(jié)點,無法驗證交易,容易遭受拒絕服務(wù)攻擊[7]、女巫攻擊[8]等安全性問題。隨著數(shù)據(jù)量的增加,SPV 節(jié)點增多,全節(jié)點個數(shù)減少,區(qū)塊鏈系統(tǒng)的去中心化程度減弱,數(shù)據(jù)安全性、穩(wěn)定性下降。SPV 節(jié)點減少了數(shù)據(jù)存儲,但是增大了網(wǎng)絡(luò)帶寬壓力,在數(shù)據(jù)存儲和數(shù)據(jù)共享方面對系統(tǒng)沒有貢獻(xiàn)。

        本文提出一種增強型輕量級節(jié)點模型ESPV(Enhanced SPV):采用完全副本方式保存新區(qū)塊(最近產(chǎn)生的n個區(qū)塊),讓輕量級節(jié)點具有交易驗證功能;同時把舊區(qū)塊(新區(qū)塊之前的區(qū)塊)進(jìn)行分片存儲,降低數(shù)據(jù)的冗余度;并且創(chuàng)建分級區(qū)塊分區(qū)路由表,加快數(shù)據(jù)檢索的速度,保證數(shù)據(jù)的可用性。

        本文的主要工作為:

        1)提出增強型輕量級節(jié)點模型ESPV,使輕量級節(jié)點可以驗證交易,具有完整的節(jié)點功能,增強節(jié)點間的對等關(guān)系,保障區(qū)塊鏈系統(tǒng)的去中心化、穩(wěn)定性和安全性

        2)在確保數(shù)據(jù)的可靠性和可用性的前提下對舊區(qū)塊進(jìn)行分片存儲,減少存儲空間浪費,增強系統(tǒng)的可擴(kuò)展性;保存完整的區(qū)塊頭數(shù)據(jù),保障系統(tǒng)中區(qū)塊數(shù)據(jù)的真實性。

        3)提出適合ESPV 存儲特征的路由表,既提高了數(shù)據(jù)查找效率,又達(dá)到負(fù)載均衡的作用,避免全節(jié)點壓力過大的問題。

        1 相關(guān)工作

        比特幣網(wǎng)絡(luò)中的節(jié)點模型主要包括全節(jié)點和SPV 節(jié)點,它們具有不同的功能和機制。全節(jié)點[1]是第一個也是最安全的節(jié)點模型,它通過下載和驗證從創(chuàng)世塊到最近發(fā)現(xiàn)的區(qū)塊來確保區(qū)塊鏈的有效性,可以獨立地共享數(shù)據(jù)和驗證交易。SPV 節(jié)點只保存區(qū)塊頭數(shù)據(jù),僅可以驗證支付,不能驗證交易(挖礦)。驗證支付時,SPV 節(jié)點需要依賴從全節(jié)點拉取符合布隆過濾器條件的MerkleBlock 消息[9],通過其中的Merkle 樹的哈希認(rèn)證路徑,判斷目標(biāo)交易是否在該塊中;同時,利用區(qū)塊頭檢測該塊是否在鏈中已被壓入足夠的深度,來確認(rèn)交易是否成功。Delgado-Segura 等[10]對比特幣的UTXO(Unspent Transaction Output)數(shù)據(jù)進(jìn)行了分析,發(fā)現(xiàn)大部分UTXO 產(chǎn)生于最近的少部分區(qū)塊中。

        在簡化單節(jié)點數(shù)據(jù)存儲方面,目前主要有區(qū)塊修剪、副本策略、糾刪碼技術(shù)、共識單元等解決方案。Bitcoin-core[11]提出一種區(qū)塊修剪策略,下載的區(qū)塊數(shù)據(jù)構(gòu)建完UTXO 集后就可以刪除,極大地減少節(jié)點所需的存儲空間。但隨著修剪策略的流行,系統(tǒng)中區(qū)塊數(shù)據(jù)的可靠性會下降。Jia 等[12]提出一種存儲可擴(kuò)展性模型,將區(qū)塊鏈中的區(qū)塊數(shù)據(jù)保存在一定比例的網(wǎng)絡(luò)節(jié)點中,增加了額外的兩條鏈,在減少存儲空間的同時也增加了系統(tǒng)復(fù)雜性。Dai 等[13]提出一種低存儲要求的區(qū)塊鏈存儲框架,使用糾刪碼技術(shù)[14]對區(qū)塊數(shù)據(jù)進(jìn)行分塊存儲,降低單節(jié)點的存儲和帶寬壓力,增加了節(jié)點的計算量。Xu等[15]提出共識單元的方法,讓節(jié)點形成社區(qū),在社區(qū)內(nèi)自治式分片存儲區(qū)塊數(shù)據(jù),但僅針對私有鏈,對公有鏈存在查詢開銷太大的問題。本文僅在單節(jié)點中維護(hù)分片信息,建立路由表,采樣處理數(shù)據(jù),系統(tǒng)復(fù)雜度和計算量都比較小,且適用于公有鏈。

        P2P(Peer-to-Peer)網(wǎng)絡(luò)[16]中節(jié)點具有不同的類型和數(shù)據(jù)存儲狀況,為了加快數(shù)據(jù)的檢索,通常會建立集中式或基于DHT(Distributed Hash Table)[17]的分散式路由表。集中式的路由表適合于網(wǎng)絡(luò)節(jié)點數(shù)目較少的情況[18],網(wǎng)絡(luò)中的節(jié)點在搜索數(shù)據(jù)時首先向路由中心請求數(shù)據(jù)所在位置,在得到目標(biāo)節(jié)點的位置后它與目標(biāo)節(jié)點單獨進(jìn)行聯(lián)系。系統(tǒng)的響應(yīng)時間短,數(shù)據(jù)可用性強,但中心服務(wù)器壓力較大,存在單點故障問題?;贒HT技術(shù)的路由表查找算法性能為log N[19],進(jìn)行了負(fù)載均衡,適用于較大規(guī)模的節(jié)點網(wǎng)絡(luò),不存在單點故障問題。它是基于內(nèi)容的查找方式,可以直接找到每個小數(shù)據(jù)分片的位置,同時也都需要維護(hù)一份索引數(shù)據(jù),導(dǎo)致整個索引表很大,數(shù)據(jù)更新維護(hù)的成本高。

        2 增強型輕量級節(jié)點模型

        由前兩章內(nèi)容可知,完備的節(jié)點功能包括交易驗證(挖礦)、數(shù)據(jù)存儲和數(shù)據(jù)共享。為了讓節(jié)點功能完整,增強型輕量級節(jié)點模型的設(shè)計也從這三部分出發(fā)。SPV 節(jié)點為減少數(shù)據(jù)存儲不再保存完整的區(qū)塊數(shù)據(jù),也不能進(jìn)行挖礦,致使其對全節(jié)點產(chǎn)生嚴(yán)重的依賴,節(jié)點之間的關(guān)系不再對等。同時,比特幣中每一筆交易的輸入為歷史交易的輸出或者為coinbase交易,即挖礦獎勵。在進(jìn)行交易驗證時需要追溯到交易輸入中的每個交易,而且大部分的交易輸入都集中在后面生成的區(qū)塊中。于是我們構(gòu)想是否可以通過保存最近生成的部分區(qū)塊數(shù)據(jù)(新區(qū)塊),讓輕量級節(jié)點可以驗證大部分交易,具有挖礦功能。而對于舊區(qū)塊,主要用途是構(gòu)建完整的UTXO 庫,請求量較少且不會發(fā)生更改,因此,不需要全部冗余保存,可以采用數(shù)據(jù)分片技術(shù),降低數(shù)據(jù)的冗余度,減少存儲空間浪費。舊區(qū)塊分片保存后,為了保證數(shù)據(jù)可用性,可以通過設(shè)計適當(dāng)?shù)穆酚蓹C制,加快數(shù)據(jù)檢索速度。

        如圖1 所示,本文對高度為567 301~568 201 的區(qū)塊進(jìn)行固定間隔采樣,查詢向前追溯一定塊數(shù)范圍時可以驗證當(dāng)前區(qū)塊中交易的比率,即通過向前遍歷區(qū)塊,查找其中是否包含該區(qū)塊中交易的輸入??梢园l(fā)現(xiàn)僅需保存少量最新的區(qū)塊就可以驗證較高比例的交易。于是本文針對比特幣的交易特性和現(xiàn)有節(jié)點模型存在的問題,提出增強型輕量級節(jié)點模型。模型的核心思想是區(qū)別對待新區(qū)塊和舊區(qū)塊,對新區(qū)塊進(jìn)行完全副本存儲,對舊區(qū)塊進(jìn)行分片存儲,采用不同的存儲策略,為輕量級節(jié)點增加交易驗證的功能,提高系統(tǒng)在存儲方面的可擴(kuò)展性,維護(hù)節(jié)點之間的對等性,保障系統(tǒng)的去中心化程度和穩(wěn)定性。

        2.1 新區(qū)塊存儲

        網(wǎng)絡(luò)中的節(jié)點對于新區(qū)塊的請求量較大,為網(wǎng)絡(luò)帶寬型。網(wǎng)絡(luò)中的全節(jié)點需要同步最新的區(qū)塊數(shù)據(jù),參與挖礦的節(jié)點也想盡早獲取最新的區(qū)塊數(shù)據(jù),在它之上開始挖礦以更大概率地獲取區(qū)塊獎勵。SPV 節(jié)點需要同步其區(qū)塊頭來完成支付驗證。這是因為比特幣采用鏈?zhǔn)降淖芳幽J剑抗P交易的成功需要確保其被打包在區(qū)塊中,連接上鏈,且在該區(qū)塊之上有不小于6塊新區(qū)塊的確認(rèn)。

        根據(jù)新區(qū)塊的網(wǎng)絡(luò)特性,ESPV采用完全冗余的存儲策略來保存新區(qū)塊數(shù)據(jù),即保存一定窗口大小的新區(qū)塊數(shù)據(jù)。這樣可以為其他節(jié)點提供數(shù)據(jù)共享服務(wù),減少全節(jié)點帶寬壓力,增加系統(tǒng)的穩(wěn)定性。

        節(jié)點在初始化時首先查詢最新的區(qū)塊高度h,然后從網(wǎng)絡(luò)中下載區(qū)塊高度為h - 3 000 到h 的區(qū)塊數(shù)據(jù),同時構(gòu)建UTXO 庫。在進(jìn)行交易驗證時如果未在UTXO 庫中發(fā)現(xiàn)交易的輸入,那么將此交易轉(zhuǎn)發(fā)給全節(jié)點。由圖1 可知這樣可以驗證大部分的交易,當(dāng)已驗證的交易數(shù)目足夠多時,對應(yīng)的區(qū)塊大小會達(dá)到系統(tǒng)設(shè)定的最大閾值進(jìn)而可以將它們打包成塊開始挖礦計算。

        目前區(qū)塊交易數(shù)目正以線性的速率增長,為保證系統(tǒng)的可用性,ESPV 設(shè)計了相應(yīng)的動態(tài)調(diào)整策略。從圖1 可知,交易的驗證率隨著新區(qū)塊數(shù)的增長而增長,據(jù)此我們展開相應(yīng)的設(shè)計。與挖礦難度值調(diào)整周期相同,ESPV 也采用每2 周進(jìn)行一次調(diào)整。比特幣系統(tǒng)平均10 min 生成一個區(qū)塊,則每2 016 塊區(qū)塊就需要進(jìn)行一次調(diào)整。節(jié)點需要記錄上次調(diào)整的區(qū)塊高度,并以此為起點直到之后產(chǎn)生2 016塊數(shù)據(jù)。在這2 016 塊中隨機采樣40 塊區(qū)塊,如果這些區(qū)塊在其前3 000 塊區(qū)塊中可驗證交易數(shù)低于80%的區(qū)塊數(shù)大于4,則為新區(qū)塊存儲區(qū)塊數(shù)n 加32;如果可驗證比率超過95%的區(qū)塊數(shù)大于32,則n減32;否則n不發(fā)生改變。這里的32是由現(xiàn)有區(qū)塊數(shù)和能保證較高比例交易驗證率時所需的最新區(qū)塊數(shù)按時間增長比率得出,較為合適。這些具體的參數(shù)都可以進(jìn)行自定義配置,以適應(yīng)不同節(jié)點的硬件環(huán)境和需求。

        圖2 增強型輕量級節(jié)點模型Fig. 2 Enhanced lightweight node model

        2.2 舊區(qū)塊存儲

        系統(tǒng)對舊區(qū)塊的請求量較小,為非帶寬型。只有當(dāng)網(wǎng)絡(luò)中有新的全節(jié)點加入或者重新構(gòu)建全節(jié)點時,才需要拉取它們。這是因為其使用類似日志的形式,一旦生成就已經(jīng)成為不會發(fā)生更改的歷史數(shù)據(jù),節(jié)點無須重復(fù)獲取它們。在全節(jié)點進(jìn)行驗證交易時,需要從創(chuàng)世區(qū)塊到最新產(chǎn)生的區(qū)塊之中構(gòu)建出完整的UTXO 集,從中查找交易的輸入,確保它是未花費的,余額大于等于支出花費,且驗證簽名確認(rèn)資產(chǎn)所屬權(quán),所以舊區(qū)塊的可靠性和可用性對于整個系統(tǒng)來說是十分重要的。

        考慮到舊區(qū)塊的訪問特性,ESPV對其采用分片存儲的方式,即每個節(jié)點保存部分歷史區(qū)塊數(shù)據(jù)。這使得每個節(jié)點的存儲壓力變小,減少系統(tǒng)對存儲空間的浪費,增加系統(tǒng)的可擴(kuò)展性。

        本文使用開源項目Bitnodes 對比特幣網(wǎng)絡(luò)中的全節(jié)點數(shù)據(jù)進(jìn)行了統(tǒng)計分析。截至2019 年4 月10 日,近兩年內(nèi)比特幣使用70001 版本協(xié)議的全節(jié)點同時在線的個數(shù)中最大值為12 770,最小值為6 671,平均值為9 931[6];并且同時在線的節(jié)點個數(shù)具有一定的穩(wěn)定性。由此本文對節(jié)點的可靠度進(jìn)行了統(tǒng)計,可得圖3。在P2P系統(tǒng)中,可靠性關(guān)系[20]為:

        其中:a為系統(tǒng)可靠度;p為節(jié)點可靠度;r為副本數(shù)。可解得:

        r = log(1- a) log(1- p)

        根據(jù)Borel 定律[21]定義低于10-50的概率都是不可能的。故設(shè)

        a = 1- 10-50

        根據(jù)圖3可以保守估計節(jié)點可靠度p=0.1,由此可以計算出r約為1 000。

        圖3 節(jié)點可靠性Fig. 3 Node reliability

        由于比特幣系統(tǒng)中區(qū)塊大小是分布不均勻的[5],且節(jié)點通常需要獲取連續(xù)的區(qū)塊數(shù)據(jù),所以進(jìn)行分片時采用連續(xù)、固定存儲空間大小的方式較為合適。根據(jù)現(xiàn)有數(shù)據(jù)存儲情況進(jìn)行分析,可設(shè)置一個分片的大小為5 GB。為更好地適應(yīng)節(jié)點間不同的存儲空間差異,對舊區(qū)塊制定不同的初始分片大小,即小、中、大3 種,對應(yīng)的分片個數(shù)為4、8、12。節(jié)點在接收到區(qū)塊時需要統(tǒng)計其大小,并記錄系統(tǒng)區(qū)塊分片的起始和終止區(qū)塊高度,將這些高度值添加入到一個數(shù)組中,定義為分片錨定高度集,這些值將不會發(fā)生改變。每個節(jié)點在加入P2P 網(wǎng)絡(luò)或者進(jìn)行數(shù)據(jù)的擴(kuò)充和刪減時都以這些固定的區(qū)塊高度為界限。在節(jié)點加入網(wǎng)絡(luò)時,節(jié)點產(chǎn)生一個從0 到最新區(qū)塊高度的隨機數(shù),以分片錨定高度集中離這個隨機數(shù)最近的高度值作為其數(shù)據(jù)存儲的起始高度,根據(jù)其可用空間的大小保存對應(yīng)級別的分片數(shù)目。

        假設(shè)整個系統(tǒng)中種子節(jié)點和礦池等性能良好、存儲空間充足、穩(wěn)定性強的節(jié)點運行全節(jié)點,其他硬件等條件受限的節(jié)點運行ESPV 節(jié)點,這樣系統(tǒng)中區(qū)塊數(shù)據(jù)的可靠性和可用性具有基礎(chǔ)的保障。目前完整的區(qū)塊數(shù)據(jù)量在線性地增長,為保障系統(tǒng)的可用性每年需要將初始分片大小加1,已經(jīng)加入的節(jié)點向后延伸一個分片。

        為了激勵節(jié)點盡可能多地保存區(qū)塊數(shù)據(jù),ESPV對存儲量不同的節(jié)點請求設(shè)置不同的優(yōu)先級,在節(jié)點內(nèi)部通過獲取節(jié)點分片屬性進(jìn)行請求隊列排序,存儲數(shù)據(jù)較多的節(jié)點優(yōu)先得到請求回復(fù)。

        2.3 分級區(qū)塊分區(qū)路由表和鏈信息

        結(jié)合舊區(qū)塊的存儲策略,ESPV 設(shè)計了新的路由機制:分級區(qū)塊分區(qū)路由表。根據(jù)節(jié)點存儲分片的大小,構(gòu)建4 個區(qū)塊分區(qū)路由表,分別為小、中、大、全節(jié)點路由表。路由表以Map 形式存儲,key 為分片起始塊號,value 是節(jié)點數(shù)組,每個節(jié)點為ip:port。

        查找指定高度區(qū)塊所在節(jié)點時,需要在分片錨定高度集中找到離它最近的分片起始塊號h。之后依次按小、中、大、全節(jié)點路由表查詢key 為h 的節(jié)點列表。根據(jù)獲取的節(jié)點列表長度L,產(chǎn)生從0~L 的隨機數(shù)N。把節(jié)點列表中第N 個元素作為起始節(jié)點依次嘗試連接節(jié)點:如果在小路由表中未找到連通的節(jié)點則繼續(xù)向下,從中路由表中進(jìn)行查找;如果找到目標(biāo)節(jié)點則終止查詢,向目標(biāo)節(jié)點發(fā)起請求。為加快查詢,將小、中、大路由表嘗試節(jié)點數(shù)的最大值分別設(shè)置為8、4、2,全節(jié)點路由表不作限制。采用直接定位的方式避免請求數(shù)據(jù)的洪泛廣播,減少系統(tǒng)帶寬壓力,提高數(shù)據(jù)檢索速度,保障數(shù)據(jù)可用性。根據(jù)節(jié)點存儲數(shù)據(jù)量的大小,采用分級的方式從小到大進(jìn)行節(jié)點訪問,可以盡可能地利用不穩(wěn)定節(jié)點,減少全節(jié)點和存儲數(shù)據(jù)較多節(jié)點的帶寬壓力,進(jìn)行負(fù)載均衡,避免局部熱點產(chǎn)生。ESPV在節(jié)點加入路由表時設(shè)置了審核機制,其持續(xù)在線時長需要超過30 min,由此得到的節(jié)點相對穩(wěn)定,防止數(shù)據(jù)頻繁更新對系統(tǒng)網(wǎng)絡(luò)帶寬造成壓力。節(jié)點在加入網(wǎng)絡(luò)后可以從其他節(jié)點獲取路由表信息,并且定期檢測節(jié)點的連通性,更新路由表。

        為驗證數(shù)據(jù)的真實性,ESPV保存全部的區(qū)塊頭數(shù)據(jù)。節(jié)點每次從網(wǎng)絡(luò)中獲取到區(qū)塊數(shù)據(jù)后將鏈上的區(qū)塊哈希值與計算出的該區(qū)塊哈希值進(jìn)行比對就可以驗證區(qū)塊數(shù)據(jù)的真實性,維護(hù)系統(tǒng)數(shù)據(jù)的安全性。區(qū)塊頭的數(shù)據(jù)量很小,不會對節(jié)點的存儲造成壓力。

        2.4 ESPV模塊架構(gòu)

        ESPV 使用不同的端口與網(wǎng)絡(luò)中的節(jié)點進(jìn)行數(shù)據(jù)共享。用端口1進(jìn)行交易的接收和轉(zhuǎn)發(fā),端口2進(jìn)行區(qū)塊的請求和發(fā)送,端口3獲取和共享路由信息,端口4發(fā)送和接收區(qū)塊頭。

        各模塊都有相應(yīng)的功能。新舊區(qū)塊的獲取都需要由區(qū)塊分區(qū)路由表取得目標(biāo)節(jié)點地址,以快速從網(wǎng)絡(luò)中拉取數(shù)據(jù)。通過得到的新區(qū)塊構(gòu)建UTXO 庫,用于交易的驗證。為加快檢索速度為UTXO構(gòu)建緩存機制,將一部分最近產(chǎn)生的UTXO加載到內(nèi)存中。舊區(qū)塊為系統(tǒng)中的其他節(jié)點提供數(shù)據(jù)服務(wù)。區(qū)塊頭信息可以校驗從其他節(jié)點得到的區(qū)塊的真實性,保障系統(tǒng)安全。

        圖4 ESPV模塊架構(gòu)Fig. 4 ESPV module architecture

        3 實驗與結(jié)果分析

        實驗的開發(fā)環(huán)境為Intel Xeo E5-2609 v4 1.70 GHz CPU和16 GB 內(nèi)存的服務(wù)器。利用比特幣現(xiàn)有區(qū)塊數(shù)據(jù)進(jìn)行模擬實驗。

        通過搭建真實節(jié)點,使用BitcoinETL[22]開源工具,對區(qū)塊數(shù)據(jù)進(jìn)行處理,只保留所需字段信息,獲得了實驗所需數(shù)據(jù)。實驗過程中使用BloomFilter 算法解決了超大數(shù)據(jù)量的關(guān)聯(lián)查詢問題。

        首先,以10 萬塊為一組,從中隨機抽取100 個區(qū)塊,從目標(biāo)區(qū)塊開始向前追溯3 000塊區(qū)塊,查詢這些區(qū)塊中包含該區(qū)塊交易的輸入的比率,即可驗證交易的比率,求均值可得圖5。

        圖5 總體交易驗證率分布Fig. 5 Overall transaction verification rate distribution

        從圖5 可以看出,ESPV 適用于整個比特幣現(xiàn)有生命周期。比特幣總體的交易特征是類似的,在得到數(shù)字貨幣后較大可能會在近期進(jìn)行交易。

        其次,使用最新的區(qū)塊數(shù)據(jù)測試ESPV 的交易驗證功能。實驗從高度為568 201塊開始,每2 016塊為一個周期,隨機抽取其中10%的區(qū)塊進(jìn)行采樣處理,計算交易驗證的平均比率值,可得圖6。

        圖6 交易驗證率Fig. 6 Transaction verification rate

        由圖6 可知,ESPV 對新區(qū)塊采用的策略可以驗證較高比率的交易,動態(tài)調(diào)整策略有效。

        然后,ESPV 與全節(jié)點在568 201 塊時的存儲空間對比如圖7所示。

        圖7 存儲空間對比Fig. 7 Storage space comparison

        通過分析圖7,可以得出下面的結(jié)論:

        1)ESPV節(jié)點比全節(jié)點所需的存儲空間明顯減少;

        2)ESPV的數(shù)據(jù)量增長速度遠(yuǎn)小于全節(jié)點,可以符合普通PC的硬件條件,增加系統(tǒng)的可擴(kuò)展性。

        假設(shè)全網(wǎng)70%的節(jié)點使用ESPV 節(jié)點,30%為全節(jié)點,同時在線節(jié)點約1 萬個,那么保守估計整個系統(tǒng)可以節(jié)省約1 PB數(shù)據(jù)存儲空間。

        最后,測試ESPV的可靠性和可用性。本文使用Java語言設(shè)計了節(jié)點對象,它具有節(jié)點類型、可靠度、IP、端口、區(qū)塊段和網(wǎng)絡(luò)帶寬屬性。通過創(chuàng)建1 萬個節(jié)點對象來模擬P2P 節(jié)點,建立分級區(qū)塊分區(qū)路由表;同時,創(chuàng)建1 萬個全節(jié)點對象,作對比實驗。分別從兩組節(jié)點中隨機獲取長度為10、100、1 000和10 000的區(qū)塊數(shù)據(jù)。

        根據(jù)現(xiàn)有網(wǎng)絡(luò)節(jié)點的分布和可靠性情況設(shè)置節(jié)點屬性。200 個種子節(jié)點(全節(jié)點)的可靠度為0.9,網(wǎng)絡(luò)帶寬為10 MB/s;剩余30%為全節(jié)點,70%為ESPV 節(jié)點,可靠度都為0.1,網(wǎng)絡(luò)帶寬為0.2 MB/s~5 MB/s 的隨機數(shù)。在創(chuàng)建節(jié)點對象時給區(qū)塊段屬性隨機賦予由真實比特幣數(shù)據(jù)得到的分片錨定高度集中的值,區(qū)塊大小采用現(xiàn)有比特幣中區(qū)塊的大小數(shù)據(jù)。每試錯一個節(jié)點需要延時10 ms。遍歷節(jié)點,為節(jié)點建立路由表。用于對比的1 萬個模擬全節(jié)點的帶寬和可靠度與非種子節(jié)點相同,建立路由表。由實驗結(jié)果可得圖8。

        圖8 數(shù)據(jù)可靠性和可用性Fig. 8 Data reliability and availability

        從實驗結(jié)果可以看出,ESPV節(jié)點模型和全節(jié)點的數(shù)據(jù)可得率相同都為100%,可靠性有保障。在獲取區(qū)塊數(shù)據(jù)的平均用時上,ESPV 節(jié)點模型略高于全節(jié)點,這是因為系統(tǒng)盡可能地利用不穩(wěn)定節(jié)點造成延時;但P2P網(wǎng)絡(luò)本身不穩(wěn)定,較低的延時差對于單個節(jié)點的影響很小,還可以滿足應(yīng)用需求,能夠應(yīng)用于實際生產(chǎn)環(huán)境中。

        4 結(jié)語

        區(qū)塊鏈的數(shù)據(jù)量呈線性增長模式,對單個節(jié)點的存儲造成很大的壓力。SPV 節(jié)點模型解決了存儲問題,但它們完全依賴于全節(jié)點,使得全節(jié)點壓力增大,系統(tǒng)的去中心化程度減弱。本文提出一個功能完備的增強型輕量級節(jié)點模型。通過對區(qū)塊數(shù)據(jù)進(jìn)行分析,發(fā)現(xiàn)保存最近的少量數(shù)據(jù)就可以驗證一定量的交易,讓節(jié)點具有挖礦功能。通過對網(wǎng)絡(luò)中全節(jié)點數(shù)據(jù)進(jìn)行統(tǒng)計分析,在保障數(shù)據(jù)可靠性和可用性的前提下,對舊區(qū)塊進(jìn)行隨機分片存儲,降低單個節(jié)點的存儲壓力,增加系統(tǒng)存儲可擴(kuò)展性、安全性和穩(wěn)定性。為加快數(shù)據(jù)查找,設(shè)計出分級區(qū)塊分區(qū)路由表,防止數(shù)據(jù)請求進(jìn)行洪泛廣播對網(wǎng)絡(luò)帶寬造成壓力。使用鏈信息保證數(shù)據(jù)的真實性。為適應(yīng)區(qū)塊數(shù)據(jù)線性增長的模式,提出動態(tài)調(diào)整策略,保證增強型輕量級節(jié)點模型的可用性。

        增強型輕量級節(jié)點模型在數(shù)據(jù)存儲空間和交易驗證之間進(jìn)行了折中,對早期舊區(qū)塊產(chǎn)生的UTXO 支持性較差,還需要全節(jié)點進(jìn)行驗證和打包,未來還需要進(jìn)一步優(yōu)化。

        猜你喜歡
        系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        基于UG的發(fā)射箱自動化虛擬裝配系統(tǒng)開發(fā)
        半沸制皂系統(tǒng)(下)
        FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        一德系統(tǒng) 德行天下
        PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
        水蜜桃在线观看一区二区 | 欧美一区二区三区红桃小说| 国产AV无码专区久久精品网站| 产精品无码久久_亚洲国产精| 青青草手机视频免费在线播放 | 樱花AV在线无码| 黄色三级一区二区三区| 亚洲综合一区中文字幕| 久久国产精品久久久久久| 国产精品一区高清在线观看| 国产精品一区二区三区黄片视频| 亚洲国产性夜夜综合另类| 日本黄网站三级三级三级| 国产精品日韩欧美一区二区区| 偷柏自拍亚洲综合在线| 久久精品国产av一级二级三级| 四虎影视免费观看高清视频| 亚洲AV无码一区二区三区天堂网 | 日本人妖熟女另类二区| 桃花影院理论片在线| 国产高潮精品久久AV无码| 国产三级在线观看不卡| 一 级做人爱全视频在线看| 性欧美暴力猛交69hd| 欧美日韩一区二区三区视频在线观看| 熟女少妇精品一区二区三区| 亚州性无码不卡免费视频| 老太脱裤让老头玩ⅹxxxx| 日本精品极品视频在线| 精品人妻久久一区二区三区| 欧美a级情欲片在线观看免费| 亚洲一区二区三区av链接| 人妻熟女中文字幕av| 国产高清av在线播放| 天堂网www在线资源| 国产av乳头久久一区| 亚洲午夜狼人综合影院| 久热综合在线亚洲精品| 日韩欧美精品有码在线观看| 中文字幕av永久免费在线| 国产精品一区二区久久乐下载|