王纘,田有亮,李秋賢,楊新歡
?
基于信用模型的工作量證明算法
王纘1,2,3,田有亮1,2,3,李秋賢1,2,3,楊新歡1,2,3
(1. 貴州大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽 550025;2. 貴州省公共大數(shù)據(jù)重點(diǎn)實驗室(貴州大學(xué)),貴州 貴陽 550025; 3. 貴州大學(xué)密碼學(xué)與數(shù)據(jù)安全研究所,貴州 貴陽 550025)
提出了一種基于信用模型的共識協(xié)議。首先,該共識協(xié)議借鑒了個人信用風(fēng)險評估的思想,設(shè)計了一種基于BP神經(jīng)網(wǎng)絡(luò)的節(jié)點(diǎn)信用度模型。其次,構(gòu)造了一種分片輪轉(zhuǎn)模型,它可以根據(jù)節(jié)點(diǎn)的信用度高低分割搜索空間產(chǎn)生新區(qū)塊,同時對協(xié)議所面臨的可能攻擊進(jìn)行分析,修復(fù)了協(xié)議存在的漏洞。最后,仿真實驗表明共識協(xié)議既能有效地降低新區(qū)塊產(chǎn)生過程中重復(fù)計算的巨大資源消耗,也能抑制大型礦池的產(chǎn)生,使整個區(qū)塊鏈系統(tǒng)變得更加安全可靠。
PoW共識;BP神經(jīng)網(wǎng)絡(luò);信用度模型;搜索空間;區(qū)塊鏈
文獻(xiàn)[1]是公認(rèn)最早的關(guān)于區(qū)塊鏈的描述性文章,但該文獻(xiàn)并沒有明確提出區(qū)塊鏈的定義和概念,只是提出了一種電子現(xiàn)金系統(tǒng)。在該文獻(xiàn)中,區(qū)塊鏈被描述為用于記錄虛擬貨幣交易的一種分布式賬本技術(shù)[2],它通過密碼學(xué)中的橢圓曲線數(shù)字簽名算法實現(xiàn)去中心化的P2P系統(tǒng)。但區(qū)塊鏈的應(yīng)用不只局限于虛擬貨幣等電子貨幣系統(tǒng),還涉及隱私保護(hù)[3]、金融服務(wù)、物聯(lián)網(wǎng)與供應(yīng)鏈等眾多領(lǐng)域。
區(qū)塊鏈技術(shù)原理來源于數(shù)學(xué)上的拜占庭將軍問題[4-7]。在互聯(lián)網(wǎng)活動大背景下,拜占庭將軍問題是指當(dāng)與不熟悉的對方進(jìn)行價值交換時,參與者如何才能不會因為惡意攻擊者的欺騙和迷惑而做出錯誤的決策;從互聯(lián)網(wǎng)技術(shù)領(lǐng)域的角度看,拜占庭將軍問題是指當(dāng)不存在可信第三方(TTP, trusted third party)時,分布在網(wǎng)絡(luò)中的各個節(jié)點(diǎn)應(yīng)如何達(dá)成共識[8]。從這些角度看,區(qū)塊鏈技術(shù)在不需要單個信任節(jié)點(diǎn)的情況下可以很好地解決拜占庭將軍問題。
區(qū)塊鏈具有可追溯、不可篡改、去中心化等優(yōu)勢。然而和基于傳統(tǒng)分布式一致性算法[5,9]的分布式系統(tǒng)一樣,區(qū)塊鏈系統(tǒng)也會存在傳輸消息延時、損壞、丟失、篡改等問題。此外,去中心化的特點(diǎn)決定系統(tǒng)不存在被信任節(jié)點(diǎn),甚至存在惡意節(jié)點(diǎn),以及各種原因?qū)е碌臄?shù)據(jù)不一致等問題。為了實現(xiàn)必要的容錯,區(qū)塊鏈系統(tǒng)需要一個高效的共識機(jī)制來確保每一個節(jié)點(diǎn)都有唯一公認(rèn)的全局賬本?;谶@種訴求,專家學(xué)者相繼提出了工作量證明(PoW, proof of work)、權(quán)益證明(PoS, proof of stake)、股份授權(quán)證明(DPoS, delegated proof of stake)、活動證明(PoA, proof of activity)等在內(nèi)的多種共識機(jī)制。其中,權(quán)益證明機(jī)制是利用區(qū)塊生成難度與節(jié)點(diǎn)所占股權(quán)成反比來進(jìn)行“挖礦”[10];股份授權(quán)證明機(jī)制的是利用股東投票數(shù)最多的幾位代表按既定時間段輪流產(chǎn)生區(qū)塊[11]。Vitalik提出了類PoS共識Casper。Bentov等[12]提出了活動證明,用來代替虛擬貨幣的激勵結(jié)構(gòu)。Sawtooth項目應(yīng)用了基于Intel SGX可信硬件的逝去時間證明(PoET, proof of elapsed time)機(jī)制。Burstcoin 加密貨幣是基于硬盤容量空間的能力證明(PoC, proof of capacity)。這些共識機(jī)制在資源消耗、安全性或共識時間等方面各有側(cè)重。作為區(qū)塊鏈技術(shù)最成功的應(yīng)用,虛擬貨幣系統(tǒng)就是采用工作量證明,非常巧妙地解決這些問題,實現(xiàn)交易的不可偽造性和不可篡改性,而該共識機(jī)制也是虛擬貨幣系統(tǒng)安全模型的基石,是虛擬貨幣正常運(yùn)行約10年的關(guān)鍵所在。
所謂的工作量證明,其核心思想就是各個節(jié)點(diǎn)通過算力競爭來解決一個hash難題,以此來保證數(shù)據(jù)的一致性和共識的安全性。具體地,各個節(jié)點(diǎn)不斷猜測并驗證隨機(jī)數(shù)值是否為一個SHA256數(shù)學(xué)難題的解,其中,最快解決該難題的節(jié)點(diǎn)將獲得區(qū)塊鏈記賬權(quán)和虛擬貨幣獎勵。當(dāng)某個節(jié)點(diǎn)成功解決該難題并產(chǎn)生區(qū)塊,就會廣播這個合法區(qū)塊。同時,收到的用戶會驗證這個區(qū)塊,如果驗證通過,就會將這個區(qū)塊接入?yún)^(qū)塊鏈上,并在此基礎(chǔ)上繼續(xù)嘗試解決新的hash難題。目前,除了暴力計算外,還沒有有效的算法來解決這些求解復(fù)雜但驗證簡單的hash難題。換而言之,如果成功解決了該hash難題,則說明在概率上該節(jié)點(diǎn)付出了對應(yīng)的算力。即PoW共識機(jī)制會導(dǎo)致算力越大,解決問題的概率就越大的問題。當(dāng)某個節(jié)點(diǎn)或礦池控制超過全網(wǎng)一半的算力時,從概率上就能掌控區(qū)塊鏈的走向,這也是所謂的51%攻擊。很顯然,參與PoW共識的節(jié)點(diǎn)將付出很大的經(jīng)濟(jì)成本(硬件、電力、維護(hù)等)。當(dāng)沒有成為首個算出合理hash值的節(jié)點(diǎn)時,這些成本都將是沒有回報的。
在虛擬貨幣系統(tǒng)中,產(chǎn)生區(qū)塊的過程稱為挖礦,從事挖礦活動的參與者稱為礦工[13]。由于虛擬貨幣大約每10 min產(chǎn)生一個區(qū)塊,這就意味著大部分礦工在一定時間內(nèi)很難產(chǎn)生區(qū)塊并獲得獎勵。因此,礦工們會選擇加入開放礦池進(jìn)行合作挖礦,以此來獲得穩(wěn)定的收益。礦池[14]一般分為2種,一種是托管礦池,另一種是P2P礦池。具體地,P2P礦池是一種去中心化的礦池服務(wù)器,其原理與區(qū)塊鏈系統(tǒng)類似,也被稱為份額鏈。份額鏈的工作量證明難度低于虛擬貨幣區(qū)塊鏈,其上記錄了貢獻(xiàn)工作量證明的礦工份額。當(dāng)一個份額區(qū)塊的難度達(dá)到了虛擬貨幣網(wǎng)絡(luò)的難度目標(biāo)時,就會獎勵所有已經(jīng)在份額鏈區(qū)塊中取得份額的礦工。P2P礦池雖然實現(xiàn)了去中心化,但其挖礦方式復(fù)雜,對節(jié)點(diǎn)性能要求非常高,效率遠(yuǎn)不如托管礦池,所以沒能吸引太多算力;托管礦池中的礦工需要消耗資源來不斷嘗試產(chǎn)生新的合法區(qū)塊,即發(fā)送完整工作量證明給礦池管理者。但是完整工作量很難產(chǎn)生,礦工可以選擇發(fā)送部分工作量證明獲得相應(yīng)收益。無論是哪個礦工產(chǎn)生區(qū)塊,獲得的收益將按貢獻(xiàn)比例分給每個礦工。這種集中式的礦池通過這樣的方式不斷聚集算力,已經(jīng)開始引起51%攻擊的擔(dān)憂。同時,由于中心化控制的礦池存在礦池管理者,很容易出現(xiàn)管理者出于利益而實施攻擊的風(fēng)險。
針對PoW共識計算過程中所有節(jié)點(diǎn)(包括無法獲得獎勵的節(jié)點(diǎn))資源消耗大、達(dá)成共識周期較長及礦池中心化等問題,本文提出了一種基于信用模型的工作量證明(CPoW, proof of work based on credit)算法。在這個新的共識機(jī)制中,本文利用BP神經(jīng)網(wǎng)絡(luò)[15-17]設(shè)計了一種基于節(jié)點(diǎn)信用評估體系的節(jié)點(diǎn)信用度評估模型,根據(jù)這個模型,可以定量地計算各個參與PoW共識節(jié)點(diǎn)的信用度并進(jìn)行信用度排名。然后,根據(jù)這個信用度排名按比例劃分SHA256數(shù)學(xué)難題的搜索空間給計算節(jié)點(diǎn),讓每個節(jié)點(diǎn)計算驗證搜索空間是否滿足這個hash難題,直到有某個節(jié)點(diǎn)通過驗證的方式成功解決hash難題,此時這個節(jié)點(diǎn)將獲得區(qū)塊鏈的記賬權(quán)并得到相應(yīng)獎勵。如果某個節(jié)點(diǎn)已經(jīng)計算驗證完劃分給自己的搜索空間,但是本輪計算還沒有解決hash難題,那么這個節(jié)點(diǎn)還可以繼續(xù)根據(jù)信用度排名來獲取新一輪的搜索空間。本文將這種劃分搜索空間的方案叫作分片輪轉(zhuǎn)模型。
CPoW算法通過分片輪轉(zhuǎn)模型,讓所有參與工作量證明的節(jié)點(diǎn)一起合作驗證搜索空間來解決hash難題,實現(xiàn)了搜索空間分配的去中心化,大大提高了解決hash難題的效率,從而縮短了共識達(dá)成的周期,也避免了巨大資源消耗的重復(fù)。由于驗證搜索空間存在概率性,在一定程度上抑制了大型礦池的產(chǎn)生。
2.1.1 節(jié)點(diǎn)信用度評估指標(biāo)體系
所謂節(jié)點(diǎn)“信用”是指節(jié)點(diǎn)在參與共識機(jī)制過程中的表現(xiàn),是對節(jié)點(diǎn)運(yùn)行狀況、節(jié)點(diǎn)賬戶財富水平和誠信水平的全面考察。對于節(jié)點(diǎn)信用度評估,首先要建立評估指標(biāo)體系。根據(jù)節(jié)點(diǎn)在網(wǎng)絡(luò)中運(yùn)行的實際情況,本文提出了一種分層結(jié)構(gòu)指標(biāo)體系,如表1所示。其中,二級指標(biāo)10項,為反映節(jié)點(diǎn)運(yùn)行情況、節(jié)點(diǎn)賬戶財富水平和誠信水平的具體指標(biāo)信息;一級指標(biāo)3項,為對二級指標(biāo)的歸納,反映了節(jié)點(diǎn)信用評估的3個方面。
表1 節(jié)點(diǎn)信用度評估指標(biāo)體系
2.1.2 數(shù)據(jù)的標(biāo)準(zhǔn)化處理
在節(jié)點(diǎn)信用度評估要素中,包含網(wǎng)絡(luò)延時時間段、節(jié)點(diǎn)離線次數(shù)段、節(jié)點(diǎn)離線時間段、節(jié)點(diǎn)獲取搜索空間次數(shù)段、節(jié)點(diǎn)加入網(wǎng)絡(luò)時間段、節(jié)點(diǎn)提供分叉區(qū)塊次數(shù)段、節(jié)點(diǎn)是否提供無效區(qū)塊這7項離散數(shù)據(jù),對于這些數(shù)據(jù),要進(jìn)行統(tǒng)一量化,即根據(jù)不同屬性值在共識過程中的重要性對其屬性值賦予不同的值。屬性值量化如表2所示。
按照表2統(tǒng)一量化后,可以通過最小—最大規(guī)范化方法按比例進(jìn)行縮放,使之落入[0,1]區(qū)間,再作為神經(jīng)網(wǎng)絡(luò)模型的輸入。具體方法為:設(shè)min和max分別為某一屬性的最小值和最大值,最小—最大規(guī)范方法是指通過計算
將屬性值映射到[0,1]中。例如,對節(jié)點(diǎn)加入網(wǎng)絡(luò)時間段,如果屬性值為28 h,則記分為8,該屬性的記分中最大值為11,最小值為1,根據(jù)式(1),新屬性值為
通過這種方法,可以處理所有給定的最大、最小的離散屬性的數(shù)據(jù)。
表2 節(jié)點(diǎn)信用度離散數(shù)據(jù)記分表
在節(jié)點(diǎn)信用評估的輸入要素中,有coin age、虛擬貨幣流動比率、節(jié)點(diǎn)上一輪的信用度這3個屬性值數(shù)據(jù),其中,節(jié)點(diǎn)上一輪的信用度是標(biāo)準(zhǔn)化的數(shù)據(jù),其他2個近似于正態(tài)分布,這些要素的屬性值可以通過正態(tài)分布函數(shù)進(jìn)行轉(zhuǎn)化,將屬性值映射在(0,1)的數(shù)值。正態(tài)分布函數(shù)如圖1所示,其函數(shù)為
圖1 正態(tài)分布函數(shù)曲線
表3 和的取值對應(yīng)表
例如,某節(jié)點(diǎn)的虛擬貨幣流動比率為0.6,根據(jù)式(3),得
其中,1為轉(zhuǎn)換后的屬性值。
通過這種方法,就可以將節(jié)點(diǎn)信用評估要素中的屬性值映射到[0,1]區(qū)間的值,便于信用度模型的處理。
2.1.3 節(jié)點(diǎn)信用度模型構(gòu)造
在這里,本文選擇的轉(zhuǎn)移函數(shù)為單極性sigmoid函數(shù),函數(shù)表達(dá)式為
該函數(shù)是一個實數(shù)域到[0,1]閉集的非減連續(xù)函數(shù),代表了狀態(tài)連續(xù)的神經(jīng)元模型。
對于隱層,有
對于輸出層,有
其中,()為轉(zhuǎn)移函數(shù)。節(jié)點(diǎn)的信用評估3層神經(jīng)網(wǎng)絡(luò)模型如圖2所示。
圖2 節(jié)點(diǎn)信用評估3層神經(jīng)網(wǎng)絡(luò)模型
神經(jīng)網(wǎng)絡(luò)通過不斷學(xué)習(xí),會對各個權(quán)值進(jìn)行調(diào)整,使誤差不斷減少。根據(jù)BP算法,得出模型的權(quán)值調(diào)整式為
當(dāng)和1的誤差達(dá)到要求的精度時,算法停止,學(xué)習(xí)過程結(jié)束。
2.1.4 模型評價
基于BP神經(jīng)網(wǎng)絡(luò)的算法思想,通過對節(jié)點(diǎn)歷史數(shù)據(jù)的訓(xùn)練和學(xué)習(xí),調(diào)整模型神經(jīng)單元之間的連接權(quán)重,確定輸入和輸出的內(nèi)在聯(lián)系,建立了節(jié)點(diǎn)的信用度模型,使模型具備了對節(jié)點(diǎn)信用進(jìn)行評估的能力。通過該模型進(jìn)行節(jié)點(diǎn)信用的評估,挑選出了性能高的、網(wǎng)絡(luò)環(huán)境良好的非拜占庭節(jié)點(diǎn),淘汰那些拜占庭節(jié)點(diǎn),使參與共識的節(jié)點(diǎn)都能獲得一致的信用度。
所謂分片是指對hash難題的搜索空間進(jìn)行劃分,每個節(jié)點(diǎn)按照自己的信用度排名去獲取自己需要驗證的搜索空間。所謂輪轉(zhuǎn)是指每個節(jié)點(diǎn)計算驗證完成自己獲取到的搜索空間之后,如果hash難題仍未解決,它依舊可以再次獲取需要驗證的一定范圍的搜索空間。如此不斷地獲取需要驗證的搜索空間,直至hash難題得到解決。
2.2.1 搜索空間的問題
“挖礦”本質(zhì)是執(zhí)行hash函數(shù)的過程,而hash函數(shù)是一個單輸入單輸出函數(shù),輸入數(shù)據(jù)被稱為區(qū)塊頭(blockheader),所以本節(jié)首先解析區(qū)塊頭結(jié)構(gòu)。例如,虛擬貨幣區(qū)塊頭中共6個字段,介紹如下。
nVersion:區(qū)塊版本號,存儲空間為4 B。
hashPrevBlock:上一個區(qū)塊的區(qū)塊頭的hash值,存儲空間為32 B。
hashMerkleRoot:包含進(jìn)本區(qū)塊的所有交易構(gòu)造的Merkle根,存儲空間為32 B。
nTime:Unix時間戳,存儲空間為4 B。
nBits:區(qū)塊的難度值,存儲空間為4 B。
nNonce:隨機(jī)數(shù),存儲空間為4 B。
對于虛擬貨幣系統(tǒng)中的PoW共識機(jī)制而言,礦工可以自由調(diào)整的字段就3個,分別是nTime、nBits、nNonce。nTime合理的區(qū)塊時間是有一定范圍的,比前一個區(qū)塊時間太早會被其他節(jié)點(diǎn)拒絕;nNonce提供232種可能取值;hashMerkleRoot理論上提供2256種可能,對包含進(jìn)區(qū)塊的交易進(jìn)行增刪、調(diào)整順序或修改Coinbase交易的輸入字段都會導(dǎo)致本字段變化。
對于CPoW共識機(jī)制而言,礦工可以自由調(diào)整的字段就只有2個,分別是nNonce和nTime字段。nNonce提供232種可能取值;nTime取值范圍是上一個區(qū)塊產(chǎn)生時間至產(chǎn)生后的2 min。hashMerkleRoot的值是固定的,并嚴(yán)格規(guī)定了交易格式的填充,這保證了同一筆交易填充的一致性。對于所有在2 min內(nèi)產(chǎn)生的交易全部按照時間順序納入?yún)^(qū)塊,并指定Coinbasse交易為這段時間中產(chǎn)生的第一筆交易。通過以上方法,即可保證hashMerkleRoot值的一致性。
2.2.2 分片輪轉(zhuǎn)模型構(gòu)造
在這里,劃分搜索空間是指劃分nNonce字段的搜索空間,而對于nTime字段,模型不做搜索空間的劃分,即每個節(jié)點(diǎn)都擁有完整的nTime字段搜索空間。
假設(shè)待驗證的每一輪的nNonce搜索空間的一個標(biāo)準(zhǔn)范圍為,為輪轉(zhuǎn)次數(shù),總的節(jié)點(diǎn)數(shù)為,節(jié)點(diǎn)的信用度排名為a(a值越小,排名越低),則排名為a的節(jié)點(diǎn)對應(yīng)的第一輪的nNonce的搜索空間的范圍大小為
這樣做的目的是信用度排名較高的節(jié)點(diǎn)可以一次獲取更多的nNonce字段搜索空間,避免每次獲取搜索空間的計算消耗,本文根據(jù)信用度排名順序按照比例劃分搜索空間,則排名為a的節(jié)點(diǎn)對應(yīng)的第一輪nNonce的搜索空間的范圍為
如果某節(jié)點(diǎn)已經(jīng)驗證完分配的nNonce的搜索空間和nTime字段搜索空間的組合后,但并沒有找到符合hash難題要求的nNonce值,該節(jié)點(diǎn)先會查看有沒有收到來自網(wǎng)絡(luò)的其他節(jié)點(diǎn)解決該難題的nNonce值。如果沒有,則它可以通過計算獲取輪(下一輪)的搜索空間的范圍為
2.2.3 模型評價
根據(jù)信用模型產(chǎn)生節(jié)點(diǎn)信用度,并進(jìn)行排名,通過排名的順序,節(jié)點(diǎn)按照分片輪轉(zhuǎn)模型來獲取自己的搜索空間,從而實現(xiàn)了搜索空間分配的去中心化。由于nTime字段的搜索空間非常有限,因此并沒有對其搜索空間進(jìn)行劃分,而是給每個節(jié)點(diǎn)都分配全部搜索空間。當(dāng)然,由于在分片輪轉(zhuǎn)模型中對區(qū)塊頭的規(guī)定限制了搜索空間的大小,這也是模型有待改進(jìn)之處。
參與共識的節(jié)點(diǎn)必須擁有一定的信用度排名。這個信用度排名不是每輪共識都要計算的,只有當(dāng)產(chǎn)生1 440個區(qū)塊后,系統(tǒng)才會提前更新排名順序,各個參與共識的節(jié)點(diǎn)根據(jù)新一輪的排名進(jìn)行搜索空間的驗證。
每個參與共識的節(jié)點(diǎn)需要維護(hù)一個信用度排名數(shù)組和節(jié)點(diǎn)狀態(tài)記錄表。系統(tǒng)為每一個參與共識的節(jié)點(diǎn)分配一個序號,從1開始,最后一個節(jié)點(diǎn)的編號為,數(shù)組的下標(biāo)即為節(jié)點(diǎn)的編號,數(shù)組存儲的就是節(jié)點(diǎn)的信用度排名,而對于[0]存儲的是參與共識節(jié)點(diǎn)的個數(shù)。狀態(tài)記錄表記錄了所有參與共識節(jié)點(diǎn)的網(wǎng)絡(luò)延時情況、離線情況、節(jié)點(diǎn)提供分叉區(qū)塊的情況、節(jié)點(diǎn)是否提供違法區(qū)塊的情況、節(jié)點(diǎn)獲取搜索空間的次數(shù)、節(jié)點(diǎn)上一輪的信用度等。整個算法分為4個步驟:初始化階段、構(gòu)建區(qū)塊、校驗新區(qū)塊和區(qū)塊鏈的組裝。
算法要求每次產(chǎn)生區(qū)塊的時間間隔大約為2 min,執(zhí)行的一般流程如下所示。
1) 初始化階段
該算法初始由主節(jié)點(diǎn)新建一個空的數(shù)組,由于信用度的范圍為(0,1),因此主節(jié)點(diǎn)設(shè)置一個初始值=0.5(范圍為[0.5,0.51))。
主節(jié)點(diǎn)將發(fā)給每個節(jié)點(diǎn),每個節(jié)點(diǎn)比較自己的信用度與發(fā)過來的,如果自己的信用度在的區(qū)間,則向主節(jié)點(diǎn)返回message=<,,,,>和對message的簽名,其中,是一個標(biāo)志碼,是時間戳,是節(jié)點(diǎn)編號,是節(jié)點(diǎn)自己的信用度。主節(jié)點(diǎn)先驗證簽名是否合法,然后查看狀態(tài)記錄表,核實此節(jié)點(diǎn)是否已經(jīng)“報到”,如果沒有就將這些“報到”的節(jié)點(diǎn)按照信用度從小到大進(jìn)行排名并寫入排名數(shù)組中,最后在狀態(tài)記錄表中標(biāo)記這個節(jié)點(diǎn)。
重復(fù)上一步,直到達(dá)到1時,算法終止。
算法1 信用度排名算法
1)[]={0},=0.5
2) repeat
3) master廣播
4) ifC≥&&C<+0.01 then
5) slave發(fā)送message
6) end if
7) if 簽名合法&&未報到 then
8) 在中添加C
9) 標(biāo)記C
10) end if
11)0.01
12) until1
13)
算法2 信用度排名分發(fā)算法
1)為排名數(shù)組
2) for 從第1到第+1個階段 do
3) 執(zhí)行信用度排名算法進(jìn)行排名
4) 廣播()
5) if接收到至少num?次then
6) 廣播()
7) end if
8) if 接收()至少次then
9)
10) end if
11) 設(shè)節(jié)點(diǎn)v是第個階段的主節(jié)點(diǎn)
12) 主節(jié)點(diǎn)v廣播它當(dāng)前的值
13) if 接收()的次數(shù)嚴(yán)格少于?次then
14)
15) end if
16) end for
初始化階段,CPoW共識通過算法1實現(xiàn)了節(jié)點(diǎn)信用度的排名,通過算法2實現(xiàn)了節(jié)點(diǎn)排名的無差錯分發(fā),從而使每個節(jié)點(diǎn)獲取自己的信用度排名,以便構(gòu)建區(qū)塊。
2) 構(gòu)建區(qū)塊
CPoW共識機(jī)制的第二步是構(gòu)建新的區(qū)塊。當(dāng)節(jié)點(diǎn)通過初始化階段獲取了自己的排名后,根據(jù)分片輪轉(zhuǎn)模型獲取自己的搜索空間,對區(qū)塊頭進(jìn)行重復(fù)SHA256散列函數(shù)運(yùn)算,根據(jù)搜索空間不斷修改參數(shù),直到散列運(yùn)算的結(jié)果小于某一難度值。當(dāng)某一節(jié)點(diǎn)驗證出滿足問題難度的目標(biāo)值時,該節(jié)點(diǎn)立刻將所構(gòu)成的區(qū)塊發(fā)給它的所有相鄰節(jié)點(diǎn)。這些相鄰節(jié)點(diǎn)成功驗證并接收這個新區(qū)塊后,繼續(xù)向全網(wǎng)傳播此區(qū)塊。當(dāng)這個新區(qū)塊被驗證通過,每個節(jié)點(diǎn)都會將它加到自身節(jié)點(diǎn)的區(qū)塊鏈副本中。當(dāng)節(jié)點(diǎn)收到并驗證了新的區(qū)塊后,它們會放棄構(gòu)建相同高度區(qū)塊的計算,并立即轉(zhuǎn)向計算下一個區(qū)塊的工作。
3) 校驗新區(qū)塊
當(dāng)新區(qū)塊在網(wǎng)絡(luò)中擴(kuò)散時,每一個節(jié)點(diǎn)接收它之前,都需要進(jìn)行一系列的驗證,確保只有有效的區(qū)塊才會在網(wǎng)絡(luò)中傳播。因為這些校驗都是獨(dú)立進(jìn)行的,只有確保誠實的節(jié)點(diǎn)生成的區(qū)塊才會被納入?yún)^(qū)塊鏈,從而獲得獎勵。反之,由于區(qū)塊的無效性會導(dǎo)致節(jié)點(diǎn)失去獎勵,并會將這種“不誠實行為”寫入節(jié)點(diǎn)狀態(tài)記錄表,影響節(jié)點(diǎn)信用度。
當(dāng)一個節(jié)點(diǎn)驗證收到的新區(qū)塊時,與標(biāo)準(zhǔn)驗證流程清單一一核對,若沒有通過驗證,該區(qū)塊將被拒絕,其標(biāo)準(zhǔn)一般如下。
①驗證提交新區(qū)塊節(jié)點(diǎn)信用度的真實性。
②區(qū)塊的數(shù)據(jù)結(jié)構(gòu)語法上有效。
③搜索空間屬于記賬節(jié)點(diǎn)需要驗證的搜索空間。
④區(qū)塊頭的hash值小于目標(biāo)難度。
⑤區(qū)塊大小符合長度限制。
4) 區(qū)塊鏈的組裝
共識機(jī)制的最后一步是將區(qū)塊裝配至區(qū)塊鏈的主鏈中。一旦某個節(jié)點(diǎn)驗證通過了新的區(qū)塊,它會嘗試將新的區(qū)塊連接到現(xiàn)有的區(qū)塊鏈上,并將它們組裝起來。
節(jié)點(diǎn)進(jìn)行區(qū)塊組裝一般分為3種情況。第一種情況,由于區(qū)塊的hashPrevBlock字段是該區(qū)塊對其父區(qū)塊的引用,如果該父區(qū)塊是區(qū)塊鏈的“頂點(diǎn)”,那么該區(qū)塊就可以直接連接到區(qū)塊鏈的父區(qū)塊后。第二種情況,當(dāng)主鏈出現(xiàn)了分支,即所謂的備用鏈,在這種情況下,節(jié)點(diǎn)會將新的區(qū)塊添加到備用鏈,同時,節(jié)點(diǎn)會比較備用連和主鏈的長度,如果備用鏈長度更長,那么節(jié)點(diǎn)將收斂于備用鏈,這就意味著備用鏈成為新的主鏈,原來的主鏈變成備用鏈。第三種情況,如果節(jié)點(diǎn)沒有在區(qū)塊鏈上找到該區(qū)塊的父區(qū)塊,那么這個區(qū)塊就是“孤塊”。孤塊會被保存到孤塊池中,當(dāng)其父區(qū)塊出現(xiàn)并成功連接到區(qū)塊鏈上,孤塊才會被連接到父區(qū)塊后,成為區(qū)塊鏈的一部分。
隨著越來越多的區(qū)塊被加入?yún)^(qū)塊鏈上,鏈上的工作量證明就更多,鏈的暫時性差異最終會得到解決。
由于CPoW共識機(jī)制的初始階段節(jié)點(diǎn)太少,所以獲得的節(jié)點(diǎn)狀態(tài)數(shù)據(jù)較少。在這種情況下,由于節(jié)點(diǎn)狀態(tài)數(shù)據(jù)缺乏,導(dǎo)致訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)效果不佳,因此在CPoW共識機(jī)制開始運(yùn)行前,會采集一些虛擬貨幣系統(tǒng)的節(jié)點(diǎn)狀態(tài)數(shù)據(jù)來訓(xùn)練信用模型,同時,還要保證采集數(shù)據(jù)的全面性,以保障初始階段模型的準(zhǔn)確性,同時,需要將學(xué)習(xí)好的權(quán)值保存下來,以節(jié)省再次訓(xùn)練的時間。
CPoW共識因為解決hash難題的時間更短,所以比PoW算法更容易產(chǎn)生分叉,因此,本文在信用模型還考慮了區(qū)塊鏈分叉這一因素,在一定程度上抑制了區(qū)塊鏈的分叉。
當(dāng)出現(xiàn)分叉后,節(jié)點(diǎn)會依據(jù)2個準(zhǔn)則來判斷主鏈,且這2個準(zhǔn)則的優(yōu)先級由高到低。第一準(zhǔn)則:當(dāng)出現(xiàn)2個或多個鏈分叉時,節(jié)點(diǎn)會優(yōu)先選擇在更長的鏈上進(jìn)行“挖礦”,如圖3所示。其中,區(qū)塊B、D所在鏈等長,區(qū)塊E所在的鏈更長,所以節(jié)點(diǎn)會選擇以區(qū)塊E作為父區(qū)塊。第二準(zhǔn)則:當(dāng)出現(xiàn)等長的2個或多個鏈出現(xiàn)分叉時,節(jié)點(diǎn)會優(yōu)先選擇在信用度更高的節(jié)點(diǎn)產(chǎn)生的父區(qū)塊上進(jìn)行“挖礦”,如圖4所示。其中,區(qū)塊B、C、D等長,故節(jié)點(diǎn)會選擇在信用度更高的節(jié)點(diǎn)產(chǎn)生的區(qū)塊C上進(jìn)行挖礦。
圖3 在更長鏈上進(jìn)行“挖礦”
圖4 在信用度更高的節(jié)點(diǎn)產(chǎn)生的區(qū)塊上進(jìn)行“挖礦”
為了防止惡意節(jié)點(diǎn)不斷進(jìn)行區(qū)塊分叉來實現(xiàn)“雙花”或擴(kuò)大區(qū)塊鏈的暫時差異性的時間,CPoW機(jī)制會將因產(chǎn)生新區(qū)塊導(dǎo)致區(qū)塊鏈分叉的節(jié)點(diǎn)記錄在節(jié)點(diǎn)狀態(tài)記錄表中,通過這樣的方法,使下一輪節(jié)點(diǎn)在信用度排名時降低其排名甚至是無法參與共識計算。由于區(qū)塊鏈的分叉會導(dǎo)致一定程度的資源浪費(fèi),CPoW機(jī)制還加入了全網(wǎng)心跳機(jī)制,通過不斷地詢問周圍節(jié)點(diǎn)是否收到待驗證的新區(qū)塊,以此來降低產(chǎn)生區(qū)塊鏈分叉的風(fēng)險。
當(dāng)節(jié)點(diǎn)獲得自己的排名,通過分片輪轉(zhuǎn)模型計算獲得自己的搜索空間。值得注意的是,這里會存在因為節(jié)點(diǎn)故障、網(wǎng)絡(luò)分區(qū)等原因而沒有獲得信用度排名的節(jié)點(diǎn),或節(jié)點(diǎn)斷電離線導(dǎo)致無法進(jìn)行搜索空間的驗證計算。對于以上這些情況,CPoW共識中出現(xiàn)的非常少,這是由于該共識機(jī)制中的信用度模型保證了更多的好節(jié)點(diǎn)會參與共識機(jī)制。
即使有這樣的保證,CPoW共識還提供了容錯機(jī)制,即全網(wǎng)心跳機(jī)制,具體如下。排名為的節(jié)點(diǎn)每隔s向全網(wǎng)發(fā)送一個心跳消息(這種心跳消息可以是詢問是否收到新區(qū)塊),收到心跳消息的節(jié)點(diǎn)會回復(fù)心跳消息給節(jié)點(diǎn)。如果排名為+1的節(jié)點(diǎn)在s(>)內(nèi)都沒有收到節(jié)點(diǎn)的心跳消息,即心跳超時,那么+1的節(jié)點(diǎn)會向全網(wǎng)發(fā)送詢問是否收到節(jié)點(diǎn)心跳消息,等收到?的答復(fù)(收到的不需要答復(fù),沒有收到的就會答復(fù))后,就會代替節(jié)點(diǎn)驗證它的搜索空間,同時網(wǎng)絡(luò)上任何監(jiān)測到心跳超時的節(jié)點(diǎn)都會在狀態(tài)記錄表中進(jìn)行日志記錄。另外,+1節(jié)點(diǎn)還會檢查?1節(jié)點(diǎn)的心跳是否正常,如果不正常則進(jìn)行類似的操作,同時詢問?2節(jié)點(diǎn)心跳是否正常,直至檢查到心跳正常的節(jié)點(diǎn)為止。
共識機(jī)制依賴于這樣一個前提:絕大多數(shù)的礦工因為考慮自己利益的最大化,所以都會通過誠實地挖礦來獲取獎勵,從而維持整個系統(tǒng)安全。單個礦工因自身算力的限制,理論上實施欺騙或破壞的難度很大。然而,當(dāng)一群擁有了整個系統(tǒng)51%算力的礦工們通過合作攻擊共識機(jī)制,這樣就會破壞系統(tǒng)的安全性和可靠性,產(chǎn)生51%攻擊。
當(dāng)?shù)V工們發(fā)動51%攻擊,CPoW共識會比虛擬貨幣系統(tǒng)的PoW共識代價更高,在虛擬貨幣系統(tǒng)的PoW共識中,當(dāng)攻擊者的算力達(dá)到51%這個閾值時,其發(fā)起的攻擊嘗試幾乎肯定會成功,而對于CPoW共識,影響51%攻擊的因素不是算力而是信用度,因為BP神經(jīng)網(wǎng)絡(luò)可以通過參數(shù)調(diào)整進(jìn)一步弱化算力的權(quán)重。無論對于PoW共識還是CPoW共識來說,所謂的51%攻擊只是來說明節(jié)點(diǎn)能夠驗證的搜索空間的大小而已。對于PoW共識而言,51%攻擊意味著該礦工或礦池可以驗證51%的搜索空間。對于CPoW共識算法,由于弱化算力的原因,其遠(yuǎn)不能達(dá)到能夠驗證51%的搜索空間的程度。很顯然,攻擊者花費(fèi)更大的代價才能實現(xiàn)51%攻擊。
雖然由于全網(wǎng)算力的急劇增加使單個礦工已經(jīng)不可能占據(jù)全網(wǎng)1%的算力,但是托管礦池的引入導(dǎo)致算力大量集中,同時帶來了礦池操作者出于利益而施行攻擊的風(fēng)險。對于虛擬貨幣系統(tǒng)中的PoW共識來說,礦池操作者不僅能夠控制候選塊的生成,也能控制交易的填充,即礦池操作者擁有剔除特定交易或雙重支付的權(quán)利。
但對于CPoW共識來說卻不是這樣。雖然礦池占據(jù)大量算力,但是其仍需要獲取待驗證的搜索空間,這就意味著它獲取搜索空間本身也是需要花費(fèi)時間的,相對于同等算力的多個單礦工節(jié)點(diǎn),他們獲取搜索空間是并發(fā)執(zhí)行的,這無疑節(jié)省了時間成本。其次,占據(jù)大量算力的礦池由于信用模型的原因無法獲得算力所對應(yīng)的搜索空間,導(dǎo)致礦工會選擇逃離礦池。最后,因為節(jié)點(diǎn)需要獲取待驗證的搜索空間,而成功在某一搜索空間上解決hash難題具有概率性,這大大降低了大算力對解決hash難題的影響。總之,一方面,CPoW算法抑制了大型礦池和中心化節(jié)點(diǎn)的出現(xiàn),避免了算力的集中化;另一方面,由于某一搜索空間恰好“命中”hash難題具有隨機(jī)性,這也降低了節(jié)點(diǎn)之間硬件惡性升級的可能性。
對于節(jié)點(diǎn)信用度的攻擊可以分為2種,一種是直接攻擊,另一種是間接攻擊。直接攻擊是指節(jié)點(diǎn)直接篡改自己的信用度,然后提交給主節(jié)點(diǎn)進(jìn)行排名,以此來獲得更高的信用度排名和更大的搜索空間。間接攻擊是指節(jié)點(diǎn)修改節(jié)點(diǎn)狀態(tài)記錄表,通過修改其他節(jié)點(diǎn)的記錄參數(shù)降低其他節(jié)點(diǎn)的信用度;通過修改自己的記錄參數(shù)提升自己的信用度。
對于直接攻擊,由于CPoW共識機(jī)制的維護(hù)有2張記錄表,一張是上一輪節(jié)點(diǎn)的狀態(tài)記錄表,另一張是本輪正在記錄的狀態(tài)記錄表。由于每個節(jié)點(diǎn)在進(jìn)行新區(qū)塊驗證時,會根據(jù)上一輪狀態(tài)記錄表和區(qū)塊鏈交易數(shù)據(jù)并通過信用度模型再次核算節(jié)點(diǎn)信用度,如果驗證失敗,就會丟棄此區(qū)塊并在本輪狀態(tài)表中記錄提供無效區(qū)塊的節(jié)點(diǎn)。
對于間接攻擊,它主要修改的是本輪狀態(tài)記錄表。為了預(yù)防這種攻擊,CPoW共識機(jī)制要求每一個節(jié)點(diǎn)在向狀態(tài)記錄表中寫入記錄時,必須經(jīng)過預(yù)寫入過程。這種預(yù)寫入過程是指節(jié)點(diǎn)先將數(shù)據(jù)寫入狀態(tài)記錄表,但標(biāo)記數(shù)據(jù)為預(yù)寫入數(shù)據(jù),同時向全網(wǎng)廣播本條記錄,收到此記錄的節(jié)點(diǎn)查看自己狀態(tài)記錄表是否有此條記錄,如果有則也廣播這條記錄,否則只是將此條記錄預(yù)寫入狀態(tài)記錄表,不做廣播操作。當(dāng)節(jié)點(diǎn)收到?條記錄,就會將預(yù)寫入標(biāo)志去掉。節(jié)點(diǎn)通過這種方式實現(xiàn)了狀態(tài)記錄表的一致性和不可篡改性。
CPoW共識機(jī)制利用BP神經(jīng)網(wǎng)絡(luò)構(gòu)建了節(jié)點(diǎn)信用模型來評估節(jié)點(diǎn)的信用度,然后利用信用度排名算法實現(xiàn)了各個節(jié)點(diǎn)的信用度排名,并利用算法2將排名結(jié)果分發(fā)至每一個參與共識的節(jié)點(diǎn)。CPoW機(jī)制產(chǎn)生的一次排名結(jié)果將用于產(chǎn)生1 440個區(qū)塊后,才會重新計算排名。由于評估信用度、計算排名和分發(fā)排名這3個過程與hash計算是并行進(jìn)行的(除了首次運(yùn)行共識協(xié)議需要等待排名結(jié)果,才能執(zhí)行hash計算)。這些都使CPoW共識機(jī)制的初始化階段的時間復(fù)雜度相對于產(chǎn)生1 440區(qū)塊的時間可以忽略不計。所以在初始化階段,本節(jié)主要關(guān)注BP神經(jīng)網(wǎng)絡(luò)是否能夠準(zhǔn)確地構(gòu)建信用模型。
選取110個節(jié)點(diǎn)指標(biāo)數(shù)據(jù)及其信用評估結(jié)果,根據(jù)信用評估模型的方法,對選取的指標(biāo)數(shù)據(jù)首先進(jìn)行標(biāo)準(zhǔn)化處理,將其轉(zhuǎn)化為[0,1]的數(shù)據(jù),以便于神經(jīng)網(wǎng)絡(luò)處理。每次用100個節(jié)點(diǎn)的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),剩余10個節(jié)點(diǎn)的數(shù)據(jù)作為測試數(shù)據(jù),共進(jìn)行380次測試。實驗時設(shè)定學(xué)習(xí)速率為0.001,誤差變化如圖5所示。
圖5 誤差變化曲線
模型輸出和目標(biāo)輸出之間的對比如圖6所示。
圖6 模型輸出和目標(biāo)輸出的對比
如圖5和圖6所示,BP神經(jīng)網(wǎng)絡(luò)構(gòu)建的信用度模型具有非常好的準(zhǔn)確性,但是其仍存在學(xué)習(xí)效率慢、網(wǎng)絡(luò)的學(xué)習(xí)和記憶具有不穩(wěn)定性等問題,有許多改進(jìn)之處。
對于PoW共識機(jī)制而言,隨著難度值(二進(jìn)制以0開頭位數(shù))的增加,hash難題解決時間會不斷增大。對于CPoW共識機(jī)制而言,同樣如此。但由于CPoW共識機(jī)制將搜索空間進(jìn)行了劃分,使“挖礦”行為由一種競爭行為變成了一種合作行為,從而提高了“挖礦”效率,降低了資源消耗。所以本節(jié)主要對區(qū)塊生成階段進(jìn)行仿真實驗。
5.2.1 實驗準(zhǔn)備
此仿真實驗主機(jī)有12臺,CPU為Intel Core i5-7500U,內(nèi)存為8 GB,操作系統(tǒng)為Window 10 企業(yè)版。實驗選用Python3.5為主要編程語言,并使用其Matplotlib-2.1.0rc1模塊實現(xiàn)數(shù)據(jù)的可視化。
5.2.2 仿真過程
通過Python語言模擬了一個簡單的PoW算法,該算法通過不斷調(diào)整hash問題的難度然后統(tǒng)計“挖礦”成功的時間。因為PoW算法是競爭“挖礦”,實驗只需要在一臺CPU為i7-7500U的主機(jī)上運(yùn)行。
而對于CPoW算法,因為它是一個劃分搜索空間的合作“挖礦”,所以除了核心的“挖礦”模塊,還需要有通信模塊和劃分搜索空間模塊。為了簡化實驗,仿真實驗指定了各個節(jié)點(diǎn)的信用度排名。實驗主要比較CPoW與PoW的算法效率和隨機(jī)性,探索解決hash難題時間和難度值,節(jié)點(diǎn)個數(shù)的關(guān)系,以及節(jié)點(diǎn)解決hash難題個數(shù)的分布情況。
5.2.3 仿真結(jié)果
PoW共識與CPoW共識解決難題的時間對比如圖7所示。其中,橫軸代表hash難題的難度值,縱軸代表解決hash難題的時間。由圖7可知,在難度值相同時,CPoW共識機(jī)制解決hash難題的時間明顯小于PoW共識機(jī)制。并且,3個節(jié)點(diǎn)合作“挖礦”的效率會好于2個節(jié)點(diǎn)“挖礦”的效率,即節(jié)點(diǎn)越多,“挖礦”效率越高,圖8和圖9更能夠說明這一點(diǎn)。但是,在圖7中仍出現(xiàn)了2個節(jié)點(diǎn)合作“挖礦”所用時間小于3個節(jié)點(diǎn)合作“挖礦”的情況,這種情況約占考察總數(shù)的14.3%,這是由于合理hash值的產(chǎn)生具有不確定性。
圖7 PoW共識與CPoW共識解決難題時間對比
圖8 節(jié)點(diǎn)個數(shù)為2、3、5時對CPoW共識解決hash難題的影響
圖9 節(jié)點(diǎn)個數(shù)為3、7、11時對CPoW共識解決hash難題的影響
圖10和圖11其難度值分別為29和30,通過增加節(jié)點(diǎn)數(shù)量,可以發(fā)現(xiàn)隨著節(jié)點(diǎn)數(shù)量的增加,hash難題的解決時間總體上呈遞減的趨勢。圖10和圖11中出現(xiàn)了與預(yù)期不符的波動節(jié)點(diǎn),這是由于在尋找合理hash值的過程中,CPoW共識算法良好的隨機(jī)性,導(dǎo)致在尋找nNonce值時具有不確定性,致使在“挖礦”時間上出現(xiàn)了波動,但其整體呈下降趨勢。
圖10 CPoW共識解決hash難題的時間趨勢(1)
圖11 CPoW共識解決hash難題的時間趨勢(2)
實驗還在難度值相同的情況下,通過改變區(qū)塊填充內(nèi)容,嘗試“挖礦”100次,分別統(tǒng)計了12個節(jié)點(diǎn)和11個節(jié)點(diǎn)解決hash難題的次數(shù)的分布情況,如表3所示和表4所示。從表3和表4可以發(fā)現(xiàn),尋找合理hash值是一種不確定事件,但是排名的高低(排名值越大,排名越高)對解決hash難題還是有影響的,如2個表中都出現(xiàn)了低排名解決hash難題個數(shù)偏少的情況。但這也不意味著最高的排名就一定能夠更多地解決hash難題,如表4所示。
表3 12個節(jié)點(diǎn)解決hash難題
表4 11個節(jié)點(diǎn)解決hash難題
圖12 尋找合理hash值的過程
綜上所述,CPoW共識機(jī)制大大提高了“挖礦”的效率,隨著參與共識的節(jié)點(diǎn)數(shù)的增加,其效率提高越明顯。同時,新的CPoW共識機(jī)制在選擇記賬節(jié)點(diǎn)的問題上具有很好的隨機(jī)性,但仍存在信用度高低對“挖礦”成功的影響。仿真實驗也從側(cè)面反映了解決相同難度的hash難題時,由于時間的減少,其資源消耗會減少。
本節(jié)主要從尋找合理hash值時間和資源消耗這2個角度對CPoW共識機(jī)制進(jìn)行性能分析。
節(jié)點(diǎn)執(zhí)行CPoW共識尋找合理hash值的過程如圖12所示。其中,虛線框代表分片,實線框代表輪次,其中,五角星代表合理hash位置(忽略其具體位置,默認(rèn)其在這個搜索空間的最后),它位于第輪排名為a的節(jié)點(diǎn)的搜索空間中。
假設(shè)用節(jié)點(diǎn)的平均算力代替網(wǎng)絡(luò)中節(jié)點(diǎn)的算力,用表示獲取搜索空間的時間,由于節(jié)點(diǎn)信用度的排名和分發(fā)都是與CPoW共識的hash計算并發(fā)執(zhí)行的,因此時間可以忽略,則在CPoW共識下尋找到合理hash值的時間為
而對于PoW共識而言,尋找合理hash值的時間為
在資源消耗方面,假設(shè)進(jìn)行一次hash運(yùn)算需要消耗的資源為s,獲取一次搜索空間需要消耗的資源為s,進(jìn)行一次信用度排名和分發(fā)需要消耗的資源為s,則CPoW共識所消耗的資源為
而對于PoW共識而言,所消耗的資源為
在尋找一次合理hash值的情況下,1和2無法進(jìn)行大小的比較,因為無法確定s和s的大小。但是當(dāng)在成功尋找了1 440個合理hash值的情況下(產(chǎn)生1 440個區(qū)塊后,系統(tǒng)會提前更新信用度排名),并假設(shè)在這1 440次計算中合理hash值的位置不變,則CPoW共識下所消耗的資源為
而對于PoW共識而言,所消耗的資源為
目前,根據(jù)區(qū)塊鏈開放等級的不同,區(qū)塊鏈被分為3類:私有鏈、公有鏈、聯(lián)盟鏈。PoW共識機(jī)制就是經(jīng)典的公有鏈共識算法,它很好地適應(yīng)了公有鏈的發(fā)展,且設(shè)計精簡。CPoW共識機(jī)制主要包含信用度評估、信用度排名(算法1)、排名分發(fā)(算法2)和共識計算這4個主要算法,其在算法設(shè)計上較為復(fù)雜,但是它同樣適用于公有鏈。但是,其區(qū)塊鏈網(wǎng)絡(luò)的規(guī)模(參與共識的節(jié)點(diǎn)數(shù)量)遠(yuǎn)少于PoW共識機(jī)制所適用的區(qū)塊鏈網(wǎng)絡(luò)規(guī)模。因為理論上PoW共識機(jī)制可以使參與共識節(jié)點(diǎn)的數(shù)量接近無窮大,而CPoW共識機(jī)制受限于信用度排名(算法1)和排名分發(fā)(算法2),雖然本文在算法流程設(shè)計上已經(jīng)進(jìn)行了優(yōu)化,但本質(zhì)上其算法執(zhí)行時間仍與參與共識節(jié)點(diǎn)的數(shù)量相關(guān)。
綜上所述,CPoW共識算法適用公有鏈。其算法性能決定了它能夠滿足大多數(shù)區(qū)塊鏈應(yīng)用場景的共識計算,不僅適用于虛擬貨幣等電子貨幣系統(tǒng),還適用于智能電網(wǎng)[19]、供應(yīng)鏈系統(tǒng)、數(shù)據(jù)存儲與溯源、食品安全等眾多領(lǐng)域。
對于虛擬貨幣的PoW共識機(jī)制而言,尋找合理hash值是一種概率事件,占有更多的算力會有更大的概率成功“挖礦”。對于點(diǎn)點(diǎn)幣的PoS共識機(jī)制而言,同樣是尋找合理的hash值,其過程也是一個概率事件,擁有coin age的多少會等比例地降低“挖礦”難度,從而增加“挖礦”成功的概率。而對于CPoW共識而言,尋找合理hash值還是一個概率事件,擁有更高的信用度會獲得更多的搜索空間,從而增加“挖礦”成功的概率。同時,某一節(jié)點(diǎn)獲得的搜索空間恰好能夠產(chǎn)生新區(qū)塊,這也是一個概率事件,從而又給成功“挖礦”增加了隨機(jī)性。
一方面,CPoW共識機(jī)制降低了資源消耗,另一方面,信用排名的機(jī)制確保了節(jié)點(diǎn)們致力于獲得更高的信用排名,而不是進(jìn)行盲目的算力升級和惡意的區(qū)塊分叉??傊?,CPoW共識機(jī)制能夠消耗更少的計算資源產(chǎn)生一個區(qū)塊,同時也使記賬節(jié)點(diǎn)的產(chǎn)生更具隨機(jī)性,很好地適應(yīng)了公有鏈的發(fā)展。
此外,對于PoS共識機(jī)制而言,同樣可以設(shè)計基于信用模型的共識算法,讓其根據(jù)信用度的高低等比例地降低“挖礦”的難度,從而防止幣齡攻擊(save-up attack),提高共識機(jī)制的安全性。后續(xù)工作將對PoS共識機(jī)制及PoS共識的變種機(jī)制(如DPoS)進(jìn)行信用模型的構(gòu)造和分析,從而設(shè)計更加高效的共識機(jī)制。
[1] NAKAMOTO S. Bitcoin: a peer-to-peer electronic cash system[J]. Consulted, 2008.
[2] MCCONAGHY T, MARQUES R, MüLLER A, et al. BigchainDB: a scalable blockchain database[R]. White Paper, BigChainDB, 2016.
[3] ZYSKIND G, NATHAN O A. Decentralizing privacy: using blockchain to protect personal data[C]// IEEE Security and Privacy Workshops. 2015:180-184.
[4] STOLZ D, WATTENHOFER R. Byzantine agreement with median validity[C]//19th International Conference on Priniciples of Distributed Systems (OPODIS). 2015.
[5] CASTRO M, LISKOV B. Practical Byzantine fault tolerance and proactive recovery[J]. ACM Transactions on Computer Systems, 2002, 20(4): 398-461.
[6] CASTRO M, LISKOV B. Practical byzantine fault tolerance[C]//The Third Symposium on Operating Systems Design and Implementation. 1999: 173-186.
[7] 范捷, 易樂天, 舒繼武. 拜占庭系統(tǒng)技術(shù)研究綜述[J]. 軟件學(xué)報, 2013, 24(6): 1346-1360. FAN J, YI L T, SHU J W. Research on the technologies of Byzantine system[J]. Journal of Software, 2013, 24(6): 1346-1360.
[8] 唐長兵, 楊珍, 鄭忠龍, 等. PoW共識算法中的博弈困境分析與優(yōu)化[J]. 自動化學(xué)報, 2017, 43(9):1520-1531. TANG C B, YANG Z, ZHENG Z L, et al. Game dilemma analysis and optimization of PoW consensus algorithm[J]. Acta Automatica Sinica, 2017, 43(9):1520-1531.
[9] LAMPORT L. Paxos made simple[J]. ACM Sigact News, 2001, 32(4): 18-25.
[10] KING S, NADAL S. PPCoin: peer-to-peer crypto-currency with proof-of-stake[J]. 2012.
[11] LARIMER D. Delegated proof-of-stake[R]. White Paper, 2014.
[12] BENTOV I, LEE C, MIZRAHI A, et al. Proof of activity: extending bitcoin0s proof of work via proof of stake[J]. ACM Sigmetrics Performance Evaluation Review, 2014, 42(3): 34-37.
[13] ROSENFELD M. Analysis of bitcoin pooled mining reward systems[J]. Computer Science, 2011.
[14] ANDREAS M. Antonopoulos. mastering bitcoin [M]. O’Reilly Media, 2014.
[15] DING S F, JIA W K, SU C Y, et al. An improved BP neural network algorithm based on factor analysis[J]. Journal of Convergence Information Technology, 2010, 5(4):103-108.
[16] MA Y X, WANG S G. The application of artificial neural network in the forecasting on incidence of a disease[C]//International Conference on Biomedical Engineering and Informatics. 2010:1269-1272.
[17] JIN W, LI Z J, WEI L S, et al. The improvements of BP neural network learning algorithm[C]// International Conference on Signal Processing Proceedings. 2002:1647-1649.
[18] BERMAN P, GARAY J A, PERRY K J. Towards optimal distributed consensus[C]//Symposium on Foundations of Computer Science. 1989:410-415.
[19] RAHBARI A N, OJHA U, ZHANG Z, et al. Incremental welfare consensus algorithm for cooperative distributed generation/demand response in smart grid[J]. IEEE Transactions on Smart Grid, 2017, 5(6):2836-2845.
Proof of work algorithm based on credit model
WANG Zuan1,2,3,TIAN Youliang1,2,3, LI Qiuxian1,2,3, YANG Xinhuan1,2,3
1. College of Computer Science & Technology, Guizhou University, Guiyang 550025, China 2. Guizhou Provincial Key Labortory of Public Big Data (Guizhou University), Guiyang 550025, China 3. Institute of Cryptography & Data Security, Guizhou University, Guiyang 550025, China
A consensus protocol based on the credit model was proposed. Firstly, the consensus agreement drew on the idea of personal credit risk assessment and a node credit model based on BP neural network was designed. Secondly, a piecewise rotation model was also constructed to segment the search space according to the node’s credit level to generate new blocks. At the same time, the possible attack of the protocol was analyzed and the vulnerability of this protocol was fixed. Finally, the simulation experiments show that the protocol not only effectively reduces the huge resource consumption in the process of new block generation, but also suppresses the generation of the large mine pool, making the whole blockchain system more secure and reliable.
PoW consensus, BP neural network, credit model, search space, blockchain
TP302
A
10.11959/j.issn.1000?436x.2018138
王纘(1992–),男,安徽安慶人,貴州大學(xué)碩士生,主要研究方向為信息安全、區(qū)塊鏈應(yīng)用與共識機(jī)制、機(jī)器學(xué)習(xí)。
田有亮(1982–),男,貴州盤縣人,博士,貴州大學(xué)教授、博士生導(dǎo)師,主要研究方向為算法博弈論、密碼學(xué)與安全協(xié)議、大數(shù)據(jù)安全與隱私保護(hù)等。
李秋賢(1992–),女,河南焦作人,貴州大學(xué)碩士生,主要研究方向為密碼學(xué)與安全協(xié)議。
楊新歡(1993–),女,山西運(yùn)城人,貴州大學(xué)碩士生,主要研究方向為信息安全、數(shù)據(jù)通信安全。
2017?10?30;
2018?07?20
youliangtian@163.com
國家自然科學(xué)基金資助項目(No.61662009, No.61772008);貴州省教育廳科技拔尖人才基金資助項目(No.[2016] 060);貴州省科技重大專項計劃基金資助項目(No.20183001);貴州省科技計劃基金資助項目(No.[2017]5788);教育部—中國移動科研基金研發(fā)資助項目(No.MCM20170401);貴州大學(xué)培育基金資助項目(No. [2017]5788);貴州省聯(lián)合基金資助項目(No. LH20147476)
The National Natural Science Foundation of China (No.61662009, No.61772008), Topnotch Talent in Science and Technology Support Program of Guizhou Province Education Department (No.[2016] 060), Science and Technology Major Support Program of Guizhou Province (No.20183001), Guizhou Provincial Science and Technology Plan Project (No.[2017]5788), Ministry of Educatio China Mobile Research Fund Project (No.MCM20170401), Guizhou University Cultivation Project (No. [2017]5788), The Joint Science and Technology Foundation of Guizhou Province (No.LH20147476)