999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

區塊鏈增強型輕量級節點模型

2020-06-01 10:54:40趙羽龍牛保寧
計算機應用 2020年4期
關鍵詞:系統

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

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

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

0 引言

區塊鏈技術由于其不可篡改、可追溯、去中心化等特性逐漸得到廣泛的關注。它最早起源于中本聰的比特幣白皮書[1],在數字加密貨幣[1]、供應鏈金融[2]、數據公證[3]、資源共享[4]等領域有許多的應用場景。區塊鏈使用鏈式的結構和一致性協議保證區塊數據不可篡改和可追溯,但無休止的數據追加對單個節點的存儲造成很大壓力。采用完全副本(每個節點保存一份)的數據存儲方式,對系統存儲空間也造成很大浪費。

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

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

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

本文的主要工作為:

1)提出增強型輕量級節點模型ESPV,使輕量級節點可以驗證交易,具有完整的節點功能,增強節點間的對等關系,保障區塊鏈系統的去中心化、穩定性和安全性

2)在確保數據的可靠性和可用性的前提下對舊區塊進行分片存儲,減少存儲空間浪費,增強系統的可擴展性;保存完整的區塊頭數據,保障系統中區塊數據的真實性。

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

1 相關工作

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

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

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

2 增強型輕量級節點模型

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

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

2.1 新區塊存儲

網絡中的節點對于新區塊的請求量較大,為網絡帶寬型。網絡中的全節點需要同步最新的區塊數據,參與挖礦的節點也想盡早獲取最新的區塊數據,在它之上開始挖礦以更大概率地獲取區塊獎勵。SPV 節點需要同步其區塊頭來完成支付驗證。這是因為比特幣采用鏈式的追加模式,每筆交易的成功需要確保其被打包在區塊中,連接上鏈,且在該區塊之上有不小于6塊新區塊的確認。

根據新區塊的網絡特性,ESPV采用完全冗余的存儲策略來保存新區塊數據,即保存一定窗口大小的新區塊數據。這樣可以為其他節點提供數據共享服務,減少全節點帶寬壓力,增加系統的穩定性。

節點在初始化時首先查詢最新的區塊高度h,然后從網絡中下載區塊高度為h - 3 000 到h 的區塊數據,同時構建UTXO 庫。在進行交易驗證時如果未在UTXO 庫中發現交易的輸入,那么將此交易轉發給全節點。由圖1 可知這樣可以驗證大部分的交易,當已驗證的交易數目足夠多時,對應的區塊大小會達到系統設定的最大閾值進而可以將它們打包成塊開始挖礦計算。

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

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

2.2 舊區塊存儲

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

考慮到舊區塊的訪問特性,ESPV對其采用分片存儲的方式,即每個節點保存部分歷史區塊數據。這使得每個節點的存儲壓力變小,減少系統對存儲空間的浪費,增加系統的可擴展性。

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

其中:a為系統可靠度;p為節點可靠度;r為副本數。可解得:

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

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

a = 1- 10-50

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

圖3 節點可靠性Fig. 3 Node reliability

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

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

為了激勵節點盡可能多地保存區塊數據,ESPV對存儲量不同的節點請求設置不同的優先級,在節點內部通過獲取節點分片屬性進行請求隊列排序,存儲數據較多的節點優先得到請求回復。

2.3 分級區塊分區路由表和鏈信息

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

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

為驗證數據的真實性,ESPV保存全部的區塊頭數據。節點每次從網絡中獲取到區塊數據后將鏈上的區塊哈希值與計算出的該區塊哈希值進行比對就可以驗證區塊數據的真實性,維護系統數據的安全性。區塊頭的數據量很小,不會對節點的存儲造成壓力。

2.4 ESPV模塊架構

ESPV 使用不同的端口與網絡中的節點進行數據共享。用端口1進行交易的接收和轉發,端口2進行區塊的請求和發送,端口3獲取和共享路由信息,端口4發送和接收區塊頭。

各模塊都有相應的功能。新舊區塊的獲取都需要由區塊分區路由表取得目標節點地址,以快速從網絡中拉取數據。通過得到的新區塊構建UTXO 庫,用于交易的驗證。為加快檢索速度為UTXO構建緩存機制,將一部分最近產生的UTXO加載到內存中。舊區塊為系統中的其他節點提供數據服務。區塊頭信息可以校驗從其他節點得到的區塊的真實性,保障系統安全。

圖4 ESPV模塊架構Fig. 4 ESPV module architecture

3 實驗與結果分析

實驗的開發環境為Intel Xeo E5-2609 v4 1.70 GHz CPU和16 GB 內存的服務器。利用比特幣現有區塊數據進行模擬實驗。

通過搭建真實節點,使用BitcoinETL[22]開源工具,對區塊數據進行處理,只保留所需字段信息,獲得了實驗所需數據。實驗過程中使用BloomFilter 算法解決了超大數據量的關聯查詢問題。

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

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

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

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

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

由圖6 可知,ESPV 對新區塊采用的策略可以驗證較高比率的交易,動態調整策略有效。

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

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

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

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

2)ESPV的數據量增長速度遠小于全節點,可以符合普通PC的硬件條件,增加系統的可擴展性。

假設全網70%的節點使用ESPV 節點,30%為全節點,同時在線節點約1 萬個,那么保守估計整個系統可以節省約1 PB數據存儲空間。

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

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

圖8 數據可靠性和可用性Fig. 8 Data reliability and availability

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

4 結語

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

增強型輕量級節點模型在數據存儲空間和交易驗證之間進行了折中,對早期舊區塊產生的UTXO 支持性較差,還需要全節點進行驗證和打包,未來還需要進一步優化。

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 国产亚洲高清视频| AV无码无在线观看免费| 色欲色欲久久综合网| 国产视频a| 精品自拍视频在线观看| 毛片视频网| 久久久久免费看成人影片 | 毛片最新网址| 亚洲三级成人| 久久精品无码国产一区二区三区| a欧美在线| 在线免费a视频| 亚洲三级影院| 亚洲精品少妇熟女| 亚洲无码视频一区二区三区| 国产无码精品在线| 中文字幕 日韩 欧美| 中文字幕在线观| 波多野结衣在线se| 国产亚洲精久久久久久无码AV| 亚洲天堂网视频| 欧美激情综合一区二区| 久久国产亚洲偷自| 无遮挡一级毛片呦女视频| 国产欧美在线观看一区| 亚洲欧美日韩成人在线| 免费人成视网站在线不卡| 国产亚洲美日韩AV中文字幕无码成人 | 国产精品亚洲欧美日韩久久| 欧美中文字幕一区| 色婷婷国产精品视频| 成人小视频网| 免费无码在线观看| 国产天天色| 亚洲91在线精品| 伊人久综合| 国内黄色精品| 国产乱人伦偷精品视频AAA| 在线国产毛片手机小视频| 国产精品成人第一区| 久久综合伊人77777| 国产凹凸视频在线观看 | 国产精品刺激对白在线| 亚洲AV无码乱码在线观看裸奔| 国产在线麻豆波多野结衣| 中文字幕永久视频| 91小视频在线| AⅤ色综合久久天堂AV色综合| 久久精品女人天堂aaa| 91国内外精品自在线播放| 在线看片国产| 欧美日韩综合网| 一级爱做片免费观看久久| 青青青伊人色综合久久| 欧美日本激情| 全部无卡免费的毛片在线看| 久久夜色精品国产嚕嚕亚洲av| 欧美色视频在线| hezyo加勒比一区二区三区| 无码日韩视频| 国产尤物在线播放| 精品一区二区三区四区五区| 国产又粗又猛又爽视频| 久久久久久高潮白浆| 日本a∨在线观看| 欧美三级不卡在线观看视频| 国产成人久久777777| 在线中文字幕日韩| 操美女免费网站| h网址在线观看| 亚洲一区毛片| 无码免费视频| 欧美日韩免费观看| 久久亚洲国产一区二区| 久久国产黑丝袜视频| 欧美性猛交xxxx乱大交极品| AV网站中文| 91免费国产在线观看尤物| 999精品色在线观看| 欧美日韩精品一区二区在线线| 国产自产视频一区二区三区| 狠狠色狠狠色综合久久第一次|