本發(fā)明涉及區(qū)塊鏈領(lǐng)域,特別涉及一種基于區(qū)塊鏈的信譽(yù)方法和系統(tǒng)。
背景技術(shù):
在多節(jié)點(diǎn)自治的系統(tǒng)中,系統(tǒng)通常要防止出錯節(jié)點(diǎn)和作弊的節(jié)點(diǎn),比如被黑客攻擊的情況。在傳統(tǒng)的拜占庭解決方案中,只是為了在各個不受信的節(jié)點(diǎn)中達(dá)成公識,沒有涉及到叛徒和出錯節(jié)點(diǎn)的尋找。所以本發(fā)明就是在傳統(tǒng)的拜占庭將軍問題的解決方案上增加了信譽(yù)機(jī)制。信譽(yù)系統(tǒng)在許多在線系統(tǒng)(如網(wǎng)銀和電商系統(tǒng))中有重要應(yīng)用,然而在拜占庭將軍問題的解決方案引入信譽(yù)機(jī)制用于識別內(nèi)部叛徒及出錯節(jié)點(diǎn)是本發(fā)明的貢獻(xiàn)。相關(guān)內(nèi)容可參見文獻(xiàn)M.Castro,B.Liskov,Practical byzantine fault tolerance and proactive recovery[J].ACM Transactions on Computer Systems,2002。Ferry Hendrikx,Kris Bubendorfer,Ryan Chard,Reputation systems:A survey and taxonomy[J].Journal of Parallel Distributed Computing,2015.Pp.184-197.
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明就是在傳統(tǒng)的拜占庭將軍問題的解決方案上增加了信譽(yù)系統(tǒng),給各個節(jié)點(diǎn)增加信譽(yù)分?jǐn)?shù),這樣在節(jié)點(diǎn)出錯時會相應(yīng)的減少其信譽(yù)值,作弊也會有更嚴(yán)格的懲罰,在多節(jié)點(diǎn)自治的系統(tǒng)中,找出出錯節(jié)點(diǎn)和作弊的節(jié)點(diǎn),比如被黑客攻擊的情況,當(dāng)信譽(yù)分?jǐn)?shù)低于某閾值,這些出錯節(jié)點(diǎn)和作弊的節(jié)點(diǎn)將被從系統(tǒng)中剔除在外;等到這些節(jié)點(diǎn)回復(fù)正常,可再重回系統(tǒng)中。這樣使得整個系統(tǒng)的運(yùn)行更加可靠。
有鑒于此,本發(fā)明設(shè)計了一種區(qū)塊鏈中的信譽(yù)方法和系統(tǒng)。
一種區(qū)塊鏈中的信譽(yù)方法,包括N個節(jié)點(diǎn),其特征在于還包括以下步驟:
(1)各節(jié)點(diǎn)分別對自己收到的區(qū)塊進(jìn)行驗(yàn)證;
(2)將驗(yàn)證后的投票數(shù)據(jù)使用自己的私鑰進(jìn)行加密后廣播給其他所有的節(jié)點(diǎn);
(3)各個節(jié)點(diǎn)收取其他節(jié)點(diǎn)的投票數(shù)據(jù),使用其對應(yīng)的公鑰進(jìn)行解密,驗(yàn)證數(shù)據(jù)的正確性;
(4)待步驟(3)中收取完其他所有節(jié)點(diǎn)的投票數(shù)據(jù)后,將本次收取的其他所有節(jié)點(diǎn)的投票數(shù)據(jù)經(jīng)自己的私鑰簽名后再次廣播給其他所有節(jié)點(diǎn);
(5)各個節(jié)點(diǎn)收取步驟(4)中各個節(jié)點(diǎn)所轉(zhuǎn)發(fā)的投票數(shù)據(jù),并用其對應(yīng)的公鑰進(jìn)行解密,驗(yàn)證數(shù)據(jù)的正確性;
(6)各個節(jié)點(diǎn)匯總步驟(5)中收到的投票數(shù)總,計算其中出錯的節(jié)點(diǎn)和作弊的節(jié)點(diǎn),并更改各節(jié)點(diǎn)的信譽(yù)值。
優(yōu)選的,初始時,各個節(jié)點(diǎn)的信譽(yù)值(Reputation)為Ri(t)=0.01,i=1…N,t為當(dāng)前區(qū)塊的建塊輪次,只更新Ri(t)>0的節(jié)點(diǎn),Ri(t)為0的節(jié)點(diǎn)被標(biāo)識成作弊的節(jié)點(diǎn)被剔除在外。
優(yōu)選的,如果節(jié)點(diǎn)i發(fā)送不一致的數(shù)據(jù)給不同的節(jié)點(diǎn),信譽(yù)值直接降為0:Ri(t)=0。
優(yōu)選的,如果節(jié)點(diǎn)i給其他節(jié)點(diǎn)的投票數(shù)據(jù)是一致的,但和大多數(shù)的節(jié)點(diǎn)不一樣,即該節(jié)點(diǎn)i不同意大多數(shù)節(jié)點(diǎn),則降低該節(jié)點(diǎn)i的信譽(yù)值:Ri(t)=XRi(t-1),其中0<X<1。
優(yōu)選的,如果某節(jié)點(diǎn)給其他節(jié)點(diǎn)的投票數(shù)據(jù)是一致的,但只發(fā)送投票疏忽給了一部分節(jié)點(diǎn),即節(jié)點(diǎn)i丟失消息,則降低信譽(yù)值:Ri(t)=Y(jié)*Ri(t-1)/m,其中0<X<Y<1,m>=1,m為連續(xù)發(fā)生錯誤的輪數(shù)。
優(yōu)選的,如果節(jié)點(diǎn)i給其他節(jié)點(diǎn)的投票數(shù)據(jù)是一致的,且和大多數(shù)節(jié)點(diǎn)的投票是一致的,即該節(jié)點(diǎn)i同意大多數(shù)的節(jié)點(diǎn),增加其信譽(yù)值:Ri(t)=(1-Z)*Ri(t-1)+n/(n+1)*Z,其中n>=1,為連續(xù)正確的輪數(shù);0<Z<1,Z大時,節(jié)點(diǎn)信譽(yù)值增加的快,Z小時增加緩慢;
優(yōu)選的,當(dāng)節(jié)點(diǎn)i信譽(yù)值降為0時失去投票的權(quán)利,進(jìn)行離線處理,使該節(jié)點(diǎn)i恢復(fù)正常狀態(tài)并重新進(jìn)入系統(tǒng)參加投票。
一種區(qū)塊鏈中的信譽(yù)系統(tǒng),包括N個節(jié)點(diǎn),其特征在于該系統(tǒng)的各個節(jié)點(diǎn)執(zhí)行以下步驟:
(1)各節(jié)點(diǎn)分別對自己收到的區(qū)塊進(jìn)行驗(yàn)證;
(2)將驗(yàn)證后的投票數(shù)據(jù)使用自己的私鑰進(jìn)行加密后廣播給其他所有的節(jié)點(diǎn);
(3)各個節(jié)點(diǎn)收取其他節(jié)點(diǎn)的投票數(shù)據(jù),使用其對應(yīng)的公鑰進(jìn)行解密,驗(yàn)證數(shù)據(jù)的正確性;
(4)待步驟(3)中收取完其他所有節(jié)點(diǎn)的投票數(shù)據(jù)后,將本次收取的其他所有節(jié)點(diǎn)的投票數(shù)據(jù)經(jīng)自己的私鑰簽名后再次廣播給其他所有節(jié)點(diǎn);
(5)各個節(jié)點(diǎn)收取步驟(4)中各個節(jié)點(diǎn)所轉(zhuǎn)發(fā)的投票數(shù)據(jù),并用其對應(yīng)的公鑰進(jìn)行解密,驗(yàn)證數(shù)據(jù)的正確性;
(6)各個節(jié)點(diǎn)匯總步驟(5)中收到的投票數(shù)總,計算其中出錯的節(jié)點(diǎn)和作弊的節(jié)點(diǎn),并更改各節(jié)點(diǎn)的信譽(yù)值。
優(yōu)選的,初始時,各個節(jié)點(diǎn)的信譽(yù)值(Reputation)為Ri(t)=0.01,i=1…N,t為為當(dāng)前區(qū)塊的建塊輪次,只更新Ri(t)>0的節(jié)點(diǎn),Ri(t)為0的節(jié)點(diǎn)被標(biāo)識成作弊的節(jié)點(diǎn)被剔除在外。
優(yōu)選的,如果節(jié)點(diǎn)i發(fā)送不一致的數(shù)據(jù)給不同的節(jié)點(diǎn),信譽(yù)值直接降為0:Ri(t)=0。
優(yōu)選的,如果節(jié)點(diǎn)i給其他節(jié)點(diǎn)的投票數(shù)據(jù)是一致的,但和大多數(shù)的節(jié)點(diǎn)不一樣,即該節(jié)點(diǎn)i不同意大多數(shù)節(jié)點(diǎn),則降低該節(jié)點(diǎn)i的信譽(yù)值:Ri(t)=XRi(t-1),其中0<X<1。
優(yōu)選的,如果某節(jié)點(diǎn)給其他節(jié)點(diǎn)的投票數(shù)據(jù)是一致的,但只發(fā)送投票疏忽給了一部分節(jié)點(diǎn),即節(jié)點(diǎn)i丟失消息,則降低信譽(yù)值:Ri(t)=Y(jié)*Ri(t-1)/m,其中0<X<Y<1,m>=1,m為連續(xù)發(fā)生錯誤的輪數(shù)。
優(yōu)選的,如果節(jié)點(diǎn)i給其他節(jié)點(diǎn)的投票數(shù)據(jù)是一致的,且和大多數(shù)節(jié)點(diǎn)的投票是一致的,即該節(jié)點(diǎn)i同意大多數(shù)的節(jié)點(diǎn),增加其信譽(yù)值:Ri(t)=(1-Z)*Ri(t-1)+n/(n+1)*Z,其中n>=1,為連續(xù)正確的輪數(shù);0<Z<1,Z大時,節(jié)點(diǎn)信譽(yù)值增加的快,Z小時增加緩慢;
優(yōu)選的,當(dāng)節(jié)點(diǎn)i信譽(yù)值降為0時失去投票的權(quán)利,進(jìn)行離線處理,使該節(jié)點(diǎn)i恢復(fù)正常狀態(tài)并重新進(jìn)入系統(tǒng)參加投票。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例描述中所需要的附圖做簡單的介紹,顯而易見地,下面描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明的基于區(qū)塊鏈的信譽(yù)方法。
具體實(shí)施方式
參見圖1,一種基于區(qū)塊鏈的信譽(yù)方法和系統(tǒng),該系統(tǒng)包括N個節(jié)點(diǎn),通過信譽(yù)方法,各節(jié)點(diǎn)會維護(hù)一份其他節(jié)點(diǎn)的信譽(yù)值。
系統(tǒng)的各個節(jié)點(diǎn)在于每輪建塊時都進(jìn)行投票結(jié)果的廣播-驗(yàn)證-再廣播-再驗(yàn)證-匯總并更新信譽(yù)值。各個節(jié)點(diǎn)執(zhí)行以下步驟:
(1)各節(jié)點(diǎn)分別對自己收到的區(qū)塊進(jìn)行驗(yàn)證;
(2)將驗(yàn)證后的投票數(shù)據(jù)使用自己的私鑰進(jìn)行加密后廣播給其他所有的節(jié)點(diǎn);
(3)各個節(jié)點(diǎn)收取其他節(jié)點(diǎn)的投票數(shù)據(jù),使用其對應(yīng)的公鑰進(jìn)行解密,驗(yàn)證數(shù)據(jù)的正確性;
(4)待步驟(3)中收取完其他所有節(jié)點(diǎn)的投票數(shù)據(jù)后,將本次收取的其他所有節(jié)點(diǎn)的投票數(shù)據(jù)經(jīng)自己的私鑰簽名后再次廣播給其他所有節(jié)點(diǎn);
(5)各個節(jié)點(diǎn)收取步驟(4)中各個節(jié)點(diǎn)所轉(zhuǎn)發(fā)的投票數(shù)據(jù),并用其對應(yīng)的公鑰進(jìn)行解密,驗(yàn)證數(shù)據(jù)的正確性;
(6)各個節(jié)點(diǎn)匯總步驟(5)中收到的投票數(shù)總,計算其中出錯的節(jié)點(diǎn)和作弊的節(jié)點(diǎn),并更改各節(jié)點(diǎn)的信譽(yù)值。
具體的信譽(yù)值計算方法如下:
初始時,各個節(jié)點(diǎn)的信譽(yù)(Reputation)值為Ri(t)=0.01,i=1…N,t為當(dāng)前區(qū)塊的建塊輪次。而且信譽(yù)方法只更新Ri(t)>0的節(jié)點(diǎn),Ri(t)為0的節(jié)點(diǎn)被標(biāo)識成作弊的節(jié)點(diǎn)并剔除在外。
降低信譽(yù):
(1)如果節(jié)點(diǎn)i發(fā)送不一致的數(shù)據(jù)給不同的節(jié)點(diǎn),信譽(yù)值直接降為0:Ri(t)=0;
(2)如果節(jié)點(diǎn)i給其他節(jié)點(diǎn)的投票數(shù)據(jù)是一致的,但和大多數(shù)的節(jié)點(diǎn)不一樣,即該節(jié)點(diǎn)i不同意大多數(shù)節(jié)點(diǎn),則降低該節(jié)點(diǎn)i的信譽(yù)值:Ri(t)=XRi(t-1),其中0<X<1。
(3)如果某節(jié)點(diǎn)給其他節(jié)點(diǎn)的投票數(shù)據(jù)是一致的,但只發(fā)送投票數(shù)據(jù)給了一部分節(jié)點(diǎn),即節(jié)點(diǎn)i丟失消息,則降低信譽(yù)值:Ri(t)=Y(jié)*Ri(t-1)/m,其中0<X<Y<1,m>=1,m為連續(xù)發(fā)生錯誤的輪數(shù)。
增加信譽(yù):
(1)如果節(jié)點(diǎn)i給其他節(jié)點(diǎn)的投票數(shù)據(jù)是一致的,且和大多數(shù)節(jié)點(diǎn)的投票是一致的,即該節(jié)點(diǎn)i同意大多數(shù)的節(jié)點(diǎn),增加其信譽(yù)值:Ri(t)=(1-Z)*Ri(t-1)+n/(n+1)*Z,其中n>=1,為連續(xù)正確的輪數(shù);0<Z<1,Z大時,節(jié)點(diǎn)信譽(yù)值增加的快,Z小時增加緩慢;
(2)當(dāng)節(jié)點(diǎn)i信譽(yù)值降為0時失去投票的權(quán)利,進(jìn)行離線處理,清除影響,使該節(jié)點(diǎn)i恢復(fù)正常狀態(tài)并重新進(jìn)入系統(tǒng)參加投票。
實(shí)施例:
假設(shè)區(qū)塊鏈系統(tǒng)中有4個節(jié)點(diǎn),分別為A節(jié)點(diǎn)、B節(jié)點(diǎn)、C節(jié)點(diǎn)、D節(jié)點(diǎn),當(dāng)采用本發(fā)明的方法處理時,第一輪的投票情況如下,
A節(jié)點(diǎn):將A節(jié)點(diǎn)的帶數(shù)字簽名的投票數(shù)據(jù)a分別發(fā)送給B節(jié)點(diǎn)、C節(jié)點(diǎn)和D節(jié)點(diǎn);
B節(jié)點(diǎn):將B節(jié)點(diǎn)的帶數(shù)字簽名的投票數(shù)據(jù)b分別發(fā)送給A節(jié)點(diǎn)、C節(jié)點(diǎn)和D節(jié)點(diǎn);
C節(jié)點(diǎn):將C節(jié)點(diǎn)的帶數(shù)字簽名的投票數(shù)據(jù)c分別發(fā)送給A節(jié)點(diǎn)、B節(jié)點(diǎn)和D節(jié)點(diǎn);
D節(jié)點(diǎn):將D節(jié)點(diǎn)的帶數(shù)字簽名的投票數(shù)據(jù)d分別發(fā)送給A節(jié)點(diǎn)、B節(jié)點(diǎn)和C節(jié)點(diǎn)。
在第一輪投票信息交換結(jié)束后,4個節(jié)點(diǎn)分別獲得a、b、c、d的數(shù)據(jù)。由于在數(shù)據(jù)發(fā)送過程中可能發(fā)生故障,某節(jié)點(diǎn)可能給不同節(jié)點(diǎn)發(fā)送不一樣的數(shù)據(jù),使得每個節(jié)點(diǎn)得到的a、b、c、d的數(shù)據(jù)不一致,因此需要進(jìn)行第二輪投票。
在進(jìn)行第二輪投票時,各節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)a、b、c、d,具體情況如下:
A節(jié)點(diǎn):將數(shù)據(jù)a、b、c、d組合在一起形成一維數(shù)組,并加上自己的數(shù)字簽名,分別發(fā)送給B節(jié)點(diǎn)、C節(jié)點(diǎn)和D節(jié)點(diǎn);
B節(jié)點(diǎn):將數(shù)據(jù)a、b、c、d組合在一起形成一維數(shù)組,并加上自己的數(shù)字簽名,分別發(fā)送給A節(jié)點(diǎn)、C節(jié)點(diǎn)和D節(jié)點(diǎn);
C節(jié)點(diǎn):將數(shù)據(jù)a、b、c、d組合在一起形成一維數(shù)組,并加上自己的數(shù)字簽名,分別發(fā)送給A節(jié)點(diǎn)、C節(jié)點(diǎn)和D節(jié)點(diǎn);
D節(jié)點(diǎn):將數(shù)據(jù)a、b、c、d組合在一起形成一維數(shù)組,并加上自己的數(shù)字簽名,分別發(fā)送給A節(jié)點(diǎn)、C節(jié)點(diǎn)和D節(jié)點(diǎn);
4個節(jié)點(diǎn)此時已經(jīng)收到了分別來自其他節(jié)點(diǎn)及自己節(jié)點(diǎn)的數(shù)據(jù)a、b、c、d,組成了一個數(shù)據(jù)a、b、c、d的二維數(shù)組,根據(jù)此二維數(shù)組判斷其中出錯的節(jié)點(diǎn)和作弊的節(jié)點(diǎn),進(jìn)而相應(yīng)的增減其信譽(yù)。
以上所述,僅是本發(fā)明的實(shí)例,并非對本發(fā)明做任何形式上的限制。任何精于本專業(yè)的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的技術(shù)內(nèi)容做出其他種種的改良或修飾為等同變化的等效實(shí)例,但凡是未脫離本發(fā)明技術(shù)方案內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對以上實(shí)施所做的任何簡單修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。