国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

區(qū)塊鏈的存儲容量可擴展模型*

2018-04-08 00:48賈大宇信俊昌王之瓊王國仁
計算機與生活 2018年4期
關(guān)鍵詞:存儲容量分片副本

賈大宇,信俊昌+,王之瓊,郭 薇,王國仁

1.東北大學(xué) 計算機科學(xué)與工程學(xué)院,沈陽 110819

2.東北大學(xué) 中荷生物醫(yī)學(xué)與信息工程學(xué)院,沈陽 110819

3.沈陽航空航天大學(xué) 計算機學(xué)院,沈陽 110136

1 引言

區(qū)塊鏈技術(shù)隨著比特幣等數(shù)字加密貨幣的日益普及而越來越受關(guān)注。區(qū)塊鏈技術(shù)是一種新型的去中心化協(xié)議,能安全存儲數(shù)字貨幣、股權(quán)債權(quán)等數(shù)字資產(chǎn)。區(qū)塊鏈技術(shù)通過運用數(shù)據(jù)加密[1]、時間戳、分布式共識[2]和經(jīng)濟激勵等手段,有效地解決了拜占庭將軍問題[3]中的共識問題,實現(xiàn)了在節(jié)點無需互相信任的分布式系統(tǒng)中去中心化的點對點交易,從而有效降低了現(xiàn)實經(jīng)濟的信任成本,重新定義了互聯(lián)網(wǎng)時代的產(chǎn)權(quán)制度。

雖然區(qū)塊鏈技術(shù)顯著提高了數(shù)據(jù)的安全性與可靠性,但是目前區(qū)塊鏈技術(shù)的儲存擴展性較差。以比特幣為例,截至2017年5月8日,共產(chǎn)生465 402個區(qū)塊,總?cè)萘繛?07.89 GB,鏈上已認(rèn)證地址9 892 723個[4]。因為區(qū)塊鏈技術(shù)要求比特幣的網(wǎng)絡(luò)中每個完全節(jié)點都保存著完整的區(qū)塊鏈信息,所以目前有近1 000萬個節(jié)點貢獻(xiàn)了100 GB以上的磁盤空間來儲存區(qū)塊鏈數(shù)據(jù)。也就是說,目前的比特幣系統(tǒng)用了近1 000 PB的存儲空間僅保存了100 GB左右的數(shù)據(jù),這極大地浪費了存儲空間。并且比特幣的容量和參與的節(jié)點數(shù)量會隨著時間的推移迅猛增加,區(qū)塊鏈技術(shù)就會越來越多地占用海量節(jié)點的大量存儲空間。這也極大地限制了以區(qū)塊鏈技術(shù)為基礎(chǔ)的數(shù)據(jù)庫系統(tǒng)的發(fā)展與應(yīng)用。

為了增加區(qū)塊鏈技術(shù)的儲存擴展性,本文提出了一種區(qū)塊鏈存儲容量可擴展模型,并采用一種數(shù)據(jù)副本分配策略對模型進(jìn)行了優(yōu)化。

本文的主要貢獻(xiàn)如下:

(1)提出了一種區(qū)塊鏈存儲容量可擴展模型。模型將區(qū)塊鏈中各個區(qū)塊保存在一定比例的節(jié)點中,而不是所有節(jié)點。同時,增加了節(jié)點可靠性驗證,在保證數(shù)據(jù)安全的同時,減少了區(qū)塊鏈的儲存空間。

(2)提出了一種區(qū)塊鏈數(shù)據(jù)副本分配策略,對容量可擴展模型中副本數(shù)的計算過程進(jìn)行了優(yōu)化。

(3)通過實驗證明,區(qū)塊鏈存儲容量可擴展模型具有一定的穩(wěn)定性、容錯性和安全性,同時減少了海量節(jié)點的大量存儲空間,有效地增加了區(qū)塊鏈的儲存擴展性。

2 相關(guān)工作

區(qū)塊鏈系統(tǒng)基于P2P技術(shù)[5]提供了一個只可以寫入的全公開日志。參與區(qū)塊鏈網(wǎng)絡(luò)的節(jié)點都遵循POW(proof of work)協(xié)議[6],即工作量證明。協(xié)議通過運算,得出一個滿足規(guī)則的隨機數(shù),最先計算出結(jié)果的節(jié)點即獲得本次記賬權(quán),發(fā)出本輪需要記錄的數(shù)據(jù),全網(wǎng)其他節(jié)點驗證后一起存儲。存儲框架如圖1所示,網(wǎng)絡(luò)中的每個節(jié)點都保存著完整的數(shù)據(jù)副本。

Fig.1 Storage framework of traditional blockchain圖1 傳統(tǒng)區(qū)塊鏈技術(shù)存儲框架

近年來,學(xué)者對區(qū)塊鏈進(jìn)行了大量研究。Boyd等人[7]提出了一種基于區(qū)塊鏈的用戶登錄方法,使每個用戶都可以公平地登錄和使用服務(wù)器。Gervais等人[8]提出了一種框架來量化地分析區(qū)塊鏈在各種共識和網(wǎng)絡(luò)參數(shù)下的安全性。Herbert等人[9]提出了一種基于區(qū)塊鏈技術(shù)的軟件驗證方法,改善了軟件被盜版使用的問題。Karame[10]詳細(xì)分析了比特幣和其他基礎(chǔ)區(qū)塊鏈系統(tǒng)的安全性,并找出了其中潛在的安全隱患。Ali等人[11]提出了Blockstake命名存儲系統(tǒng),系統(tǒng)設(shè)計了四層架構(gòu),充分利用了區(qū)塊鏈的去中心化特點,保證了數(shù)據(jù)的高安全性。King[12]和Bentov[13]等人實現(xiàn)了POS(proof of stake)權(quán)益證明機制,相對于POW機制,一定程度減少了數(shù)學(xué)運算帶來的資源消耗,提升了區(qū)塊鏈系統(tǒng)的性能。

3 區(qū)塊鏈存儲容量可擴展模型

本文利用分布式存儲方法[14-15],提出了區(qū)塊鏈存儲容量可擴展模型。其核心思想是將一條完整的區(qū)塊鏈分成若干部分,分布存儲在系統(tǒng)中,如圖2所示。

Fig.2 Storage framework of scalable model圖2 可擴展模型存儲框架

在現(xiàn)有的區(qū)塊鏈技術(shù)中,一個攻擊者想要篡改數(shù)據(jù),需要控制網(wǎng)絡(luò)中50%以上的節(jié)點。在區(qū)塊鏈分布式存儲后,網(wǎng)絡(luò)中區(qū)塊鏈的副本數(shù)減少,攻擊者就可以在控制少于50%節(jié)點數(shù)的情況下修改區(qū)塊鏈數(shù)據(jù),這在一定程度上降低了區(qū)塊鏈的安全性。但是隨著區(qū)塊鏈技術(shù)的廣泛應(yīng)用,海量節(jié)點正源源不斷地加入到區(qū)塊鏈系統(tǒng)中。攻擊者想要控制區(qū)塊鏈系統(tǒng)中的很少一部分節(jié)點也幾乎是不可能的。盡管如此,針對區(qū)塊鏈容量可擴展模型還提出了節(jié)點可靠性驗證的方法,增加了區(qū)塊鏈的安全性。區(qū)塊鏈存儲容量可擴展模型框架如圖3所示。

Fig.3 Scalable model for storage capacity of blockchain圖3 區(qū)塊鏈存儲容量可擴展模型

區(qū)塊鏈存儲容量可擴展模型中的節(jié)點包含3個角色:用戶節(jié)點、儲存節(jié)點和驗證節(jié)點。用戶節(jié)點是原始數(shù)據(jù)擁有者,儲存節(jié)點是副本的保存者,而驗證節(jié)點是儲存節(jié)點穩(wěn)定性的驗證者。一個節(jié)點可以同時具備兩種或者三種角色。同時,模型建立了兩條新的區(qū)塊鏈:P(position)鏈和POR(proofs of retrievability)鏈。P鏈保存在用戶節(jié)點中,記錄數(shù)據(jù)各個副本被保存在存儲節(jié)點的位置。POR鏈保存在驗證節(jié)點中,記錄各個儲存節(jié)點的可靠性評價。將儲存節(jié)點位置信息和儲存節(jié)點的可靠性評價寫入基于區(qū)塊鏈技術(shù)的P鏈和POR鏈中,也是利用了區(qū)塊鏈不可被篡改的特點,保證數(shù)據(jù)的安全性。

3.1 數(shù)據(jù)存儲

在區(qū)塊鏈存儲容量可擴展模型進(jìn)行數(shù)據(jù)存儲時,模型采用了POR數(shù)據(jù)可檢索性證明[16-17]方法對用戶節(jié)點區(qū)塊鏈中的區(qū)塊進(jìn)行加密處理,得到相應(yīng)的密文和密鑰。POR方法是保存在外地服務(wù)器上數(shù)據(jù)的可檢索性的加密證明。其實現(xiàn)的具體過程是:用戶節(jié)點將密文交由儲存節(jié)點保存后,可以隨時查詢儲存節(jié)點中數(shù)據(jù)的完整性;儲存節(jié)點會在被查詢時,隨機選擇一部分密文數(shù)據(jù)發(fā)送給用戶節(jié)點;用戶節(jié)點通過密鑰與接收密文的計算結(jié)果進(jìn)行比對,得出儲存節(jié)點中的數(shù)據(jù)是否完整。因此,利用POR方法可以在少量文件傳輸?shù)耐ㄐ懦杀鞠?,實時驗證出系統(tǒng)中數(shù)據(jù)的完整性。

在模型進(jìn)行數(shù)據(jù)存儲過程中,首先采用POR方法對用戶節(jié)點中的每個區(qū)塊進(jìn)行加密,得到相應(yīng)的密文和密鑰。然后,用戶節(jié)點計算出每個區(qū)塊需要保存的副本數(shù)。接著,模型將POR方法生成的密鑰保存到本地存儲器中,并發(fā)給驗證節(jié)點保存;將加密后的區(qū)塊數(shù)據(jù)保存到儲存節(jié)點中。此時,模型將訪問驗證節(jié)點中保存的儲存節(jié)點可靠性信息,從中找出可靠值較高的儲存節(jié)點來保存各個區(qū)塊數(shù)據(jù)。驗證節(jié)點為了保證儲存節(jié)點可靠性信息不會被惡意篡改,將其保存在POR鏈中。之后,將每個區(qū)塊按照所需要的副本數(shù)保存在相應(yīng)數(shù)量的選出的儲存節(jié)點中。當(dāng)數(shù)據(jù)副本被保存后,為了保證用戶節(jié)點進(jìn)行數(shù)據(jù)讀取,模型將儲存節(jié)點的地址返回給用戶節(jié)點,并將其保存在P鏈中,保證儲存節(jié)點地址數(shù)據(jù)的安全性。

區(qū)塊鏈存儲容量可擴展模型的數(shù)據(jù)存儲過程如圖4、圖5所示。

Fig.4 Step(1)~(3)of stored procedure圖4 存儲過程步驟(1)~(3)

過程1存儲容量可擴展模型數(shù)據(jù)存儲過程。

(1)采用POR方法對每個區(qū)塊進(jìn)行加密;

(2)用戶節(jié)點計算出每個區(qū)塊所需保存副本數(shù);

(3)將POR方法生成的密鑰保存到本地存儲器中,并發(fā)給驗證節(jié)點,保存到POR鏈中;

(4)用戶節(jié)點向模型發(fā)送存儲數(shù)據(jù)的請求;

(5)模型訪問驗證節(jié)點POR鏈中各個儲存節(jié)點的可靠性信息,選出可靠性最高的作為本次操作的儲存節(jié)點;

(6)將選出的儲存節(jié)點返回給用戶節(jié)點;

Fig.5 Step(4)~(8)of stored procedure圖5 存儲過程步驟(4)~(8)

(7)用戶節(jié)點按照所需要的副本數(shù)保存在相應(yīng)數(shù)量的選出的儲存節(jié)點中;

(8)將保存各個區(qū)塊的儲存節(jié)點的地址返回給用戶節(jié)點,保存在P鏈里。

3.2 數(shù)據(jù)讀取

在區(qū)塊鏈存儲容量可擴展模型進(jìn)行數(shù)據(jù)讀取時,首先用戶節(jié)點訪問本地磁盤中的P鏈,得到各個區(qū)塊儲存的位置信息,根據(jù)位置信息找到相應(yīng)的儲存節(jié)點。然后,儲存節(jié)點將保存的數(shù)據(jù)返回給用戶節(jié)點。用戶節(jié)點根據(jù)本地保存的POR方法生成的密鑰,對接收密文數(shù)據(jù)進(jìn)行恢復(fù),得到原始數(shù)據(jù)。

區(qū)塊鏈存儲容量可擴展模型的數(shù)據(jù)讀取過程如圖6所示。

過程2存儲容量可擴展模型數(shù)據(jù)讀取過程。

(1)用戶節(jié)點訪問P鏈信息,找到保存每個區(qū)塊的各個儲存節(jié)點;

(2)儲存節(jié)點將保存的數(shù)據(jù)返回給用戶節(jié)點;

(3)用戶節(jié)點根據(jù)完整返回的副本數(shù)據(jù),利用本地保存的密鑰對數(shù)據(jù)進(jìn)行解密,恢復(fù)出原始數(shù)據(jù)。

3.3 儲存節(jié)點可靠性驗證

在區(qū)塊鏈存儲容量可擴展模型中,儲存節(jié)點保存著區(qū)塊數(shù)據(jù)。但是由于一些特殊狀況,儲存節(jié)點可能出現(xiàn)將數(shù)據(jù)修改或?qū)?shù)據(jù)丟失等故障。為了減小由于儲存節(jié)點故障導(dǎo)致的區(qū)塊數(shù)據(jù)的不穩(wěn)定性,驗證節(jié)點會根據(jù)POR方法生成的密鑰,隨時驗證存儲節(jié)點隨機發(fā)回的部分密文數(shù)據(jù),實時檢測儲存節(jié)點數(shù)據(jù)存儲情況。然后,驗證節(jié)點將實時的檢測情況寫入POR鏈中,當(dāng)用戶節(jié)點再次申請儲存數(shù)據(jù)時,提供最新的儲存節(jié)點可靠性值,使用戶節(jié)點選出此時最穩(wěn)定的存儲節(jié)點保存區(qū)塊數(shù)據(jù)。

區(qū)塊鏈存儲容量可擴展模型中儲存節(jié)點可靠性驗證過程如圖7所示。在實際應(yīng)用中,模型對于儲存節(jié)點可靠性的評價標(biāo)準(zhǔn)可以采取如下方法。首先,模型會給每個儲存節(jié)點分配相同的可靠性值。然后,驗證節(jié)點每隔相同的一段時間檢測儲存節(jié)點數(shù)據(jù)的可靠性,相隔時間根據(jù)對數(shù)據(jù)安全需求的具體情況來制定。當(dāng)儲存節(jié)點中數(shù)據(jù)完整時,其可靠性值不變。當(dāng)儲存節(jié)點數(shù)據(jù)被修改或者丟失時,則減少其可靠性值,并保存到POR鏈中。最后,當(dāng)模型選擇高可靠性的儲存節(jié)點時,以POR鏈中的各個儲存節(jié)點可靠性值作為衡量標(biāo)準(zhǔn)。

Fig.6 Data reading procedure圖6 數(shù)據(jù)讀取過程

Fig.7 Reliability verification of storage nodes圖7 儲存節(jié)點可靠性驗證過程

3.4 系統(tǒng)激勵機制

在比特幣的應(yīng)用中,礦工通過計算得出下一個區(qū)塊的哈希值。正是礦工們的大量計算,保證了比特幣的安全性。因此,比特幣系統(tǒng)會對每個挖礦成功者獎勵一定數(shù)量的比特幣。這也激勵了成百上千的礦工消耗自身CPU的計算能力和大量電力去挖礦。而在區(qū)塊鏈存儲容量可擴展模型中,儲存節(jié)點和驗證節(jié)點提供了自己的大量磁盤空間,保證了用戶節(jié)點的數(shù)據(jù)安全。本文對于儲存節(jié)點和驗證節(jié)點也提出一種激勵機制,可以令他們自身作為用戶節(jié)點,在模型中安全存儲一定空間的數(shù)據(jù)。

4 數(shù)據(jù)副本分配策略

在區(qū)塊鏈存儲容量可擴展模型的數(shù)據(jù)存儲過程的第二個步驟中,用戶節(jié)點首先計算每個區(qū)塊保存的副本數(shù)。但區(qū)塊鏈的每個新區(qū)塊都是在上一個區(qū)塊基礎(chǔ)上計算來的,不同的區(qū)塊安全性不同。因此,本文根據(jù)每個區(qū)塊的安全性,提出了一種區(qū)塊鏈的數(shù)據(jù)副本分配策略,優(yōu)化了模型的存儲過程。

數(shù)據(jù)副本分配策略,首先根據(jù)系統(tǒng)節(jié)點總數(shù)得出保存每個區(qū)塊的最少副本數(shù)。然后根據(jù)系統(tǒng)安全性需求,確定出一定數(shù)量連續(xù)的區(qū)塊保存相同的副本數(shù)。最后根據(jù)區(qū)塊鏈的難度設(shè)定,計算出每個區(qū)塊需要保存的副本數(shù)。

區(qū)塊鏈技術(shù)的創(chuàng)始人Nakamoto[18]在論文中假設(shè)了一個雙重支付的攻擊場景,攻擊者試圖比誠實節(jié)點更快地產(chǎn)生一條平行鏈條代替區(qū)塊鏈。攻擊者是否能夠成功趕超誠實鏈,可以近似地看成賭徒破產(chǎn)問題。此時,假設(shè)p為誠實節(jié)點制造出下一節(jié)點的概率,q為攻擊節(jié)點制造出下一節(jié)點的概率,那么攻擊者在區(qū)塊增加了第z塊時,攻擊者取得的進(jìn)展服從泊松分布,分布期望為:

追趕上誠實鏈條的概率Pz為:

為了避免對無限數(shù)列求和,將式(2)轉(zhuǎn)換為:

本文利用Java編寫代碼,計算出在q=0.1時,z取0到30概率Pz的大小。并用Matlab將函數(shù)f(z,Pz)畫出圖像,如圖8所示。

Fig.8 Image off(z,Pz)圖8 函數(shù) f(z,Pz)圖像

由于隨著z的增加,Pz減小速率很快,當(dāng)z取值較大時,圖8不能明顯表示出Pz的值。因此,當(dāng)z取10到15時,畫出了f(z,Pz)的圖像,如圖9所示。

Fig.9 Image off(z,Pz)whenzis selected from 10 to 15圖9 當(dāng)z取10到15時函數(shù) f(z,Pz)圖像

可以看出,隨著區(qū)塊的增加,攻擊者越來越難趕超誠實鏈。越原始的區(qū)塊中數(shù)據(jù)被篡改的可能性就越低,安全性也就越高。因此,在數(shù)據(jù)副本分配策略中,每個區(qū)塊的副本數(shù)由區(qū)塊所在位置決定,將區(qū)塊鏈中較原始的區(qū)塊保存少量份數(shù),而較新的區(qū)塊保存足夠多的份數(shù),二者函數(shù)關(guān)系如式(4)所示。設(shè)M為區(qū)塊鏈中節(jié)點總數(shù),i為區(qū)塊鏈中區(qū)塊的編號,n為區(qū)塊鏈目前的總區(qū)塊數(shù),mi為區(qū)塊i需要保存的份數(shù),Pn-i為第i個區(qū)塊被攻擊者追趕上的概率,也可以看作為第i個區(qū)塊的安全性系數(shù)。

但是,在區(qū)塊鏈機制中,如果50%以上節(jié)點保存了相同的數(shù)據(jù),則這個數(shù)據(jù)被視作真實數(shù)據(jù)。從而,控制了網(wǎng)絡(luò)中一半數(shù)量以上的節(jié)點,就會控制整個網(wǎng)絡(luò)的數(shù)據(jù)。因此,也不能令每個區(qū)塊的副本數(shù)特別小,而是要根據(jù)不同區(qū)塊鏈系統(tǒng)安全性需要,規(guī)定出每個區(qū)塊保存的最小副本數(shù)k。

同時,Borel定律[19]定義了任何低于1/1050的概率都是不可能的。因此,根據(jù)式(3)可以計算出,當(dāng)z增加到一定數(shù)值時,Pz的概率會達(dá)到10-50以下。此時,攻擊節(jié)點想要趕上誠實節(jié)點變?yōu)椴豢赡苁录R虼?,將每z個區(qū)塊作為一組數(shù)據(jù)分片,保存相同的副本數(shù)量。

最后,得出每個區(qū)塊的副本數(shù)。每zmin個區(qū)塊被分割成一個分片,第i個分片保存mi份副本,但副本數(shù)最小為k。

因此,數(shù)據(jù)副本分配策略過程如下所示。

過程3數(shù)據(jù)副本分配策略過程。

(1)根據(jù)區(qū)塊鏈網(wǎng)絡(luò)的計算能力,預(yù)估出攻擊節(jié)點制造出下一節(jié)點的概率q;

(2)將q帶入式(3),計算當(dāng)Pz≤10-50時,z的最小取值zmin;

(3)根據(jù)區(qū)塊鏈的用戶總量和區(qū)塊總數(shù),確定出在保證數(shù)據(jù)安全前提下,每個區(qū)塊保存副本數(shù)的最小值k;

(4)將區(qū)塊鏈中節(jié)點總數(shù)M和區(qū)塊鏈目前的區(qū)塊數(shù)n帶入式(4),計算出每個位置的分片保存的副本數(shù)mi;

(5)對完整的區(qū)塊鏈進(jìn)行分片處理,每zmin個區(qū)塊被分割成一個分片,第i個分片保存mi份副本,當(dāng)mi

此處,本文給出了當(dāng)q=0.1時,數(shù)據(jù)副本分配策略中每個區(qū)塊的副本數(shù)。

首先,根據(jù)式(3)進(jìn)行計算,為了簡化分組過程,z的取值為10的整數(shù)倍。當(dāng)z≥100時,P的概率已達(dá)到10-50以下。因此,將每100個區(qū)塊作為一組數(shù)據(jù)分片,保存相同的副本數(shù)量。

然后,利用式(4)計算每組分片保存的副本數(shù)。此時,為了方便計算,對式(3)的計算結(jié)果利用Matlab對函數(shù)f(z,Pz)做了weibull擬合,擬合結(jié)果為式(5)。

其中,a=1.905(1.886,1.924),b=0.723(0.715 4,0.730 7),擬合方差(SSE)為1.215E-05,確定系數(shù)(R-square)為0.999 7。

從擬合結(jié)果可以看出,z與Pz呈負(fù)指數(shù)關(guān)系。因此,為了簡化分片過程,將式(3)化簡為式(6)來計算分片保存副本數(shù),分片結(jié)果如圖10所示。

當(dāng)n增加時,每新增100個區(qū)塊組成一個分片,該分片由此時全網(wǎng)中所有節(jié)點保存。而對于之前分片的副本數(shù),由式(6)根據(jù)此時網(wǎng)絡(luò)中的節(jié)點總數(shù)重新計算。如果在新增100個區(qū)塊的時間里,全網(wǎng)的節(jié)點數(shù)激增,計算出的所需副本數(shù)比網(wǎng)絡(luò)中已存副本數(shù)多,則將之前分片副本數(shù)增加至式(6)計算數(shù)量;如果網(wǎng)絡(luò)中已存副本數(shù)比計算出的所需副本數(shù)量大,則可以令部分存儲節(jié)點釋放其儲存空間,但保證網(wǎng)絡(luò)中已存副本量大于等于所需副本數(shù)量。

區(qū)塊鏈存儲容量可擴展模型利用此副本分配策略會在保證數(shù)據(jù)可靠性和安全性的前提下,增加區(qū)塊鏈的存儲容量。

假設(shè):當(dāng)可擴展模型采用基于式(6)的副本分配策略進(jìn)行數(shù)據(jù)存儲時,模型中共有節(jié)點數(shù)M,其中存在不穩(wěn)定節(jié)點數(shù)量為d(d≤M),不穩(wěn)定節(jié)點會有e(e≤1)的概率出現(xiàn)數(shù)據(jù)丟失情況。則新產(chǎn)生的區(qū)塊分片保存副本數(shù)mn/100=M,每一個分片的副本數(shù)mj為式(7)所示,j為分片序號。

此時,當(dāng)所有不穩(wěn)定節(jié)點第一次出現(xiàn)數(shù)據(jù)丟失時,數(shù)據(jù)可以被完全恢復(fù)的概率為:

在式(8)中要求:

(1)當(dāng)d

(2)當(dāng)d

當(dāng)不穩(wěn)定節(jié)點出現(xiàn)多次數(shù)據(jù)丟失時,由于在區(qū)塊鏈存儲容量可擴展模型的POR鏈中記錄了每次的數(shù)據(jù)丟失情況,并每次將該節(jié)點的可靠性值隨即減少??煽恐当粶p少后,不穩(wěn)定節(jié)點被選作儲存節(jié)點的概率就會降低。數(shù)據(jù)會被保存在較穩(wěn)定的節(jié)點中,可以被恢復(fù)的概率就會提高。

Fig.10 Allocation scheme of copies圖10 區(qū)塊副本數(shù)分配方案

5 實驗結(jié)果

實驗的開發(fā)環(huán)境為Intel Core i5-6500 3.20 GHz CPU和16 GB內(nèi)存的PC機上。利用VMware Workstation 12.5.2建立了16個節(jié)點,每個節(jié)點為內(nèi)存1 GB,硬盤大小為60 GB的ubuntu16.04系統(tǒng)。借助IBM開發(fā)的開源Hyperledge Fabric v0.6版本,構(gòu)建起P鏈和POR鏈區(qū)塊鏈項目。

首先,測試基于區(qū)塊鏈存儲容量可擴展模型系統(tǒng)的穩(wěn)定性。實驗分別建立了4個、8個、12個和16個節(jié)點,所有節(jié)點均為儲存節(jié)點,且其中3個節(jié)點同時為用戶節(jié)點和驗證節(jié)點。實驗運行調(diào)用chaincode_example02.go交易代碼,每完成一次交易,生成5.39 KB的廣播消息。

在所有節(jié)點都正常運行且不被攻擊的情況下,在數(shù)據(jù)分片時,以500 KB為一個組進(jìn)行分片,每個分片的最小副本數(shù)為2份,副本數(shù)與分片位置的函數(shù)根據(jù)式(4)計算得出。當(dāng)實驗完成交易186次、930次和1 860次,生成廣播數(shù)據(jù)1 MB、5 MB和10 MB時,區(qū)塊鏈容量可擴展模型與基于Hyperledge Fabric v0.6的區(qū)塊鏈系統(tǒng)中所有節(jié)點儲存總?cè)萘咳鐖D11所示。

Fig.11 Storage space occupied by scalable model and Hyperledge Fabric圖11 可擴展模型與Hyperledge Fabric占用的存儲空間

通過分析圖11的實驗結(jié)果,可以得到以下結(jié)論。

(1)在節(jié)點數(shù)較少的情況下,存儲容量可擴展模型所有節(jié)點儲存總量與Fabric區(qū)塊鏈相比相差不大。但當(dāng)節(jié)點數(shù)增多時,容量可擴展模型所占用的存儲空間與Fabric區(qū)塊鏈系統(tǒng)相比明顯減少。

(2)當(dāng)存儲數(shù)據(jù)量較小時,存儲容量可擴展模型所有節(jié)點儲存總量與Fabric區(qū)塊鏈相比相差不大。這是由于儲存容量可擴展模型在存儲交易數(shù)據(jù)的同時,在P鏈中保存了儲存節(jié)點位置信息,在POR鏈中保存了儲存節(jié)點的可靠性評價信息。并且在P鏈與POR鏈中的每條數(shù)據(jù)大小都為固定值,因此當(dāng)存儲數(shù)據(jù)量不斷增加時,容量可擴展模型所占用的存儲空間與Fabric區(qū)塊鏈系統(tǒng)相比明顯減少。

(3)當(dāng)存儲數(shù)據(jù)量不斷增加時,區(qū)塊鏈容量可擴展模型所需的儲存空間的增量趨于平緩。

因此,容量可擴展模型在多節(jié)點、大數(shù)據(jù)的應(yīng)用上,具有良好的存儲擴展性。

同時,區(qū)塊鏈存儲容量可擴展模型與Fabric區(qū)塊鏈系統(tǒng)的處理時間如圖12和圖13所示。容量可擴展模型的處理時間要略多于Fabric區(qū)塊鏈系統(tǒng),且隨著節(jié)點數(shù)量和存儲數(shù)據(jù)大小增加,可擴展模型的處理時間基本呈線性增加。

Fig.12 Time to process 1 MB data by scalable model and Hyperledge Fabric圖12 可擴展模型與Hyperledge Fabric處理1 MB數(shù)據(jù)時間

Fig.13 Time to process 5 MB data by scalable model and Hyperledge Fabric圖13 可擴展模型與Hyperledge Fabric處理5 MB數(shù)據(jù)時間

然后,測試系統(tǒng)的容錯性。假設(shè)在8個、12個和16個儲存節(jié)點中存在不穩(wěn)定節(jié)點,不穩(wěn)定節(jié)點會丟失本地的部分儲存數(shù)據(jù)。為了符合實際應(yīng)用情況,實驗設(shè)置了4個不穩(wěn)定節(jié)點,且這4個不穩(wěn)定節(jié)點均不是驗證節(jié)點,它們出現(xiàn)不穩(wěn)定概率分別為0.8、0.6、0.4和0.2。當(dāng)實驗完成交易930次,得到數(shù)據(jù)5 MB,分片方法與上個實驗相同時,區(qū)塊鏈容量可擴展模型、僅基于數(shù)據(jù)副本分配策略的區(qū)塊鏈系統(tǒng)與基于Hyperledge Fabric v0.6的區(qū)塊鏈系統(tǒng)各自恢復(fù)的數(shù)據(jù)總量的百分比如圖14所示。

Fig.14 Fault tolerance of scalable model圖14 可擴展模型容錯性測試

當(dāng)不穩(wěn)定節(jié)點出現(xiàn)時,F(xiàn)abric基本不受影響,僅基于數(shù)據(jù)副本分配策略的區(qū)塊鏈系統(tǒng)受影響最大,區(qū)塊鏈容量可擴展模型所受影響較小。這是由于容量可擴展模型和僅基于數(shù)據(jù)副本分配策略的區(qū)塊鏈系統(tǒng)相比,利用POR鏈中對各個節(jié)點的可靠性評價,選出了穩(wěn)定性更好的節(jié)點存儲數(shù)據(jù)。并且從實驗中可以看出,當(dāng)節(jié)點數(shù)增加,也就是系統(tǒng)中副本數(shù)增加時,容量可擴展模型數(shù)據(jù)恢復(fù)比例有所增加,系統(tǒng)的容錯性增強。

最后,測試區(qū)塊鏈容量可擴展模型的安全性。本文借助了Blockbench[20]對區(qū)塊鏈安全測試方法:當(dāng)有攻擊者故意修改儲存節(jié)點中的存儲數(shù)據(jù)時,區(qū)塊鏈會產(chǎn)生分叉,此時系統(tǒng)的安全性可以根據(jù)分叉鏈產(chǎn)生的區(qū)塊數(shù)量來判斷,區(qū)塊數(shù)量越少,系統(tǒng)越安全。在實驗中,建立了16個節(jié)點,運行Hyperledge Fabric與區(qū)塊鏈容量可擴展模型,攻擊出現(xiàn)在系統(tǒng)運行第100秒,在第250秒時結(jié)束。兩個系統(tǒng)正常運行和被攻擊時的實驗結(jié)果如圖15所示。

Fig.15 Security of scalable model圖15 可擴展模型安全性測試

從實驗中可以看出,Hyperledge Fabric和區(qū)塊鏈存儲容量可擴展模型被攻擊時,并沒有產(chǎn)生分叉鏈,這是因為實驗中容量可擴展模型也是基于Hyperledger Fabric技術(shù)構(gòu)建的。Hyperledger的一致性協(xié)議保證了區(qū)塊的安全性,讓被攻擊的鏈不產(chǎn)生分叉。但是在攻擊停止后,Hyperledger和容量可擴展模型都用了一段時間才從攻擊中恢復(fù),并且容量可擴展模型比Hyperledger需要的恢復(fù)時間更長。

通過實驗證明,基于Hyperledger Fabric的區(qū)塊鏈存儲容量可擴展模型在被攻擊時,雖然需要更多的處理時間,但具有良好的安全性。

6 結(jié)束語

區(qū)塊鏈的協(xié)議要求全網(wǎng)中每個節(jié)點都保存著同一條完整的區(qū)塊鏈信息,這導(dǎo)致了區(qū)塊鏈的容量受到網(wǎng)絡(luò)里存儲空間最小的節(jié)點的限制。本文提出了一個區(qū)塊鏈存儲容量可擴展模型。模型將區(qū)塊鏈中各個區(qū)塊保存在一定比例的節(jié)點中,而不是所有節(jié)點中。并且模型增加了節(jié)點可靠性驗證,保證了數(shù)據(jù)的安全性。模型中用戶節(jié)點根據(jù)數(shù)據(jù)副本分配策略將每個區(qū)塊保存相應(yīng)的副本數(shù),并基于POR數(shù)據(jù)可檢索性證明方法對副本數(shù)據(jù)進(jìn)行加密,并將密鑰發(fā)送個驗證節(jié)點。驗證節(jié)點利用POR方法實時更新儲存節(jié)點的穩(wěn)定性值,依此選擇高穩(wěn)定性節(jié)點來儲存用戶節(jié)點的數(shù)據(jù)副本。最后,經(jīng)實驗證明,區(qū)塊鏈存儲容量可擴展模型在具有一定的穩(wěn)定性、容錯性和安全性的同時,有效地增加了區(qū)塊鏈的儲存擴展性。

未來可以進(jìn)一步研究數(shù)據(jù)副本分配策略,提出更準(zhǔn)確的計算數(shù)據(jù)副本方法,在保證數(shù)據(jù)安全性的前提下,減少更多儲存空間。同時,也可以將區(qū)塊鏈存儲容量可擴展模型應(yīng)用于Ethereum和Parity等不同的區(qū)塊鏈系統(tǒng)中,提高不同區(qū)塊鏈系統(tǒng)的存儲擴展性。

[1]Bonneau J,Miller A,Clark J,et al.SoK:research perspectives and challenges for Bitcoin and cryptocurrencies[C]//Proceedings of the 2015 IEEE Symposium on Security and Privacy,San Jose,May 17-21,2015.Washington:IEEE Computer Society,2015:104-121.

[2]Yuan Yong,Wang Feiyue.Blockchain:the state of the art and future trends[J].Acta Automatica Sinica,2016,42(4):481-494.

[3]Eyal I,Gencer A E,Sirer E G,et al.Bitcoin-NG:a scalable blockchain protocol[C]//Proceedings of the 13th USENIX Symposium on Networked Systems Design and Implementation,Santa Clara,Mar 16-18,2016.Berkeley:USENIX Association,2016:45-59.

[4]Blockmeta.The blockchain data of Bitcion[EB/OL].[2017-05-07].https://blockmeta.com/btc-stat.

[5]Amalarethinam D I G,Balakrishnan C,Charles A.An improved methodology for fragment re-allocation in peer-topeer distributed databases[C]//Proceedings of the 4th International Conference on Advances in Recent Technologies in Communication and Computing,Bangalore,Oct 19-20,2012.Piscataway:IEEE,2012:78-81.

[6]Li Jingrui,Wolf T.A one-way proof-of-work protocol to protect controllers in software-defined networks[C]//Proceedings of the 2016 Symposium on Architectures for Networking and Communications Systems,Santa Clara,Mar 17-18,2016.New York:ACM,2016:123-124.

[7]Boyd C,Carr C.Fair client puzzles from the Bitcoin blockchain[C]//LNCS 9722:Proceedings of the 21st Australasian Conference on Information Security and Privacy,Melbourne,Jul 4-6,2016.Berlin,Heidelberg:Springer,2016:161-177.

[8]Gervais A,Karame G O,Wüst K,et al.On the security and performance of proof of work blockchains[C]//Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security,Vienna,Oct 24-28,2016.New York:ACM,2016:3-16.

[9]Herbert J,Litchfield A.A novel method for decentralised peer-to-peer software license validation using cryptocurrency blockchain technology[C]//Proceedings of the 38th Australasian Computer Science Conference,Jan 27-30,2015.Sydney:Australian Computer Society,2015:27-35.

[10]Karame G.On the security and scalability of Bitcoin's blockchain[C]//Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security,Vienna,Oct 24-28,2016.New York:ACM,2016:1861-1862.

[11]Ali M,Nelson J C,Shea R,et al.Blockstack:a global naming and storage system secured by blockchains[C]//Proceedings of the 2016 USENIX Annual Technical Conference,Jun 22-24,2016.Berkeley:USENIXAssociation,2016:181-194.

[12]King S,Nadal S.PPCoin:peer-to-peer crypto-currency with proof-of-stake[EB/OL].[2017-04-02].http://www.peercoin.net/bin/peercoinpaper.pdf.

[13]Bentov I,Lee C,Mizrahi A,et al.Proof of activity:extending Bitcoin's proof of work via proof of stake[J/OL].Cryptology ePrintArchive,2014:452.

[14]Tung Y C,Lin K C J,Chou F C.Bandwidth-aware replica placement for peer-to-peer storage systems[C]//Proceedings of the 2011 Global Communications Conference,Houston,Dec 5-9,2011.Piscataway:IEEE,2011:1-5.

[15]Ng W S,Ooi B C,Tan K L,et al.PeerDB:a P2P-based system for distributed data sharing[C]//Proceedings of the 19th International Conference on Data Engineering,Bangalore,Mar 5-8,2003.Washington:IEEE Computer Society,2003:633-644.

[16]Juels A,Kaliski B S.PORs:proofs of retrievability for large files[C]//Proceedings of the 2007 ACM Conference on Computer and Communications Security,Alexandria,Oct 28-31,2007.New York:ACM,2007:584-597.

[17]Armknecht F,Bohli J M,Karame G O,et al.Outsourced proofs of retrievability[C]//Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security,Scottsdale,Nov 3-7,2014.New York:ACM,2014:831-843.

[18]Nakamoto S.Bitcoin:a peer-to-peer electronic cash system[EB/OL].[2017-05-07].http://www.bitcoin.org/bitcoin.pdf.

[19]Borel E.Probabilities and life[M].New York:Dover Publications Inc,1962.

[20]Dinh T T A,Wang Ji,Chen Gang,et al.BLOCKBENCH:a framework for analyzing private blockchains[C]//Proceedings of the 2017ACM International Conference on Management of Data,Chicago,May 14-19,2017.New York:ACM,2017:1085-1100.

附中文參考文獻(xiàn):

[2]袁勇,王飛躍.區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀與展望[J].自動化學(xué)報,2016,42(4):481-494.

猜你喜歡
存儲容量分片副本
上下分片與詞的時空佈局
利用狀態(tài)歸約處理跨分片交易的多輪驗證方案①
物聯(lián)網(wǎng)區(qū)塊鏈中基于演化博弈的分片算法
使用卷影副本保護數(shù)據(jù)
面向流媒體基于蟻群的副本選擇算法①
基于模糊二分查找的幀分片算法設(shè)計與實現(xiàn)
一種基于可用性的動態(tài)云數(shù)據(jù)副本管理機制
淺析云盤技術(shù)及存儲原理
《口袋西游—藍(lán)龍》新副本“幽冥界”五大萌點
Buffalo推出四硬盤網(wǎng)絡(luò)存儲器 主打Soho一族
建平县| 东方市| 彝良县| 交口县| 张北县| 怀集县| 长沙市| 延庆县| 乡宁县| 玉环县| 辰溪县| 东兰县| 卢氏县| 嘉禾县| 潜江市| 德安县| 全南县| 宁武县| 略阳县| 高唐县| 时尚| 彭阳县| 阿坝县| 巴彦淖尔市| 益阳市| 彭水| 孟津县| 云南省| 张家川| 黄浦区| 崇阳县| 天峻县| 西林县| 万州区| 托克逊县| 修水县| 京山县| 中江县| 铅山县| 石楼县| 会泽县|