王 纘 田有亮 岳朝躍 張 鐸
1(貴州省公共大數(shù)據(jù)重點(diǎn)實(shí)驗(yàn)室(貴州大學(xué))貴陽(yáng) 550025)2(貴州大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 貴陽(yáng) 550025)3(貴州大學(xué)數(shù)學(xué)與統(tǒng)計(jì)學(xué)院 貴陽(yáng) 550025)4(貴州大學(xué)密碼學(xué)與數(shù)據(jù)安全研究所 貴陽(yáng) 550025)(vinheres@163.com)
近年來(lái),隨著比特幣等虛擬貨幣持續(xù)火爆,區(qū)塊鏈技術(shù)的研究呈現(xiàn)出井噴式增長(zhǎng)態(tài)勢(shì),被譽(yù)為未來(lái)10年內(nèi)最有可能提高人類社會(huì)生成力的新科技之一.2008年比特幣電子現(xiàn)金系統(tǒng)被提出[1],實(shí)現(xiàn)了真正意義上的去中心化可信任的P2P自組織網(wǎng)絡(luò)[2]交易平臺(tái).在該文獻(xiàn)中,區(qū)塊鏈被描述為用于記錄比特幣交易的一種分布式賬本技術(shù)[3].該技術(shù)利用數(shù)字簽名技術(shù)實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的交易,通過(guò)對(duì)交易和時(shí)間戳等信息進(jìn)行隨機(jī)Hash,并將Hash結(jié)果利用工作量證明機(jī)制(proof of work,PoW)寫入一個(gè)可以無(wú)限延伸的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)中,并通過(guò)發(fā)放代幣(比特幣)來(lái)激勵(lì)全網(wǎng)節(jié)點(diǎn)共同維護(hù)區(qū)塊鏈系統(tǒng).但是區(qū)塊鏈的應(yīng)用不僅僅局限于比特幣等電子貨幣系統(tǒng)[4],現(xiàn)在人們?cè)陔[私保護(hù)[5]、物聯(lián)網(wǎng)[6]、供應(yīng)鏈[7]、醫(yī)療健康[8]等眾多領(lǐng)域不斷進(jìn)行區(qū)塊鏈應(yīng)用場(chǎng)景的研究與應(yīng)用開(kāi)發(fā).
區(qū)塊鏈?zhǔn)且环N分布式的系統(tǒng),系統(tǒng)中的所有節(jié)點(diǎn)共同保障該系統(tǒng)的正常運(yùn)行.在這種分布式系統(tǒng)中,區(qū)塊鏈為解決網(wǎng)絡(luò)延時(shí)、傳輸錯(cuò)誤、去中心化導(dǎo)致的數(shù)據(jù)分歧(拜占庭節(jié)點(diǎn))等問(wèn)題,需要一種共識(shí)機(jī)制來(lái)使各個(gè)節(jié)點(diǎn)達(dá)成共識(shí),保證數(shù)據(jù)的最終一致性,其主要思想是解決區(qū)塊鏈分布式賬本的一致性和記賬權(quán)問(wèn)題,其目標(biāo)是使所有的誠(chéng)實(shí)節(jié)點(diǎn)保存一致的區(qū)塊鏈賬本.由此可見(jiàn),共識(shí)機(jī)制是區(qū)塊鏈技術(shù)的核心所在.
“共識(shí)機(jī)制”一詞近幾年被頻繁使用,其名主要由工作量證明機(jī)制而得來(lái).隨著對(duì)分布式賬本一致性問(wèn)題的不斷探索,很多算法被提出來(lái),其中有很多算法回歸了對(duì)傳統(tǒng)分布式一致性算法的改進(jìn),其在算法思路上已經(jīng)跳出了“證明”的語(yǔ)義,故可以進(jìn)一步概括為共識(shí)機(jī)制.因此,可以將共識(shí)機(jī)制研究熱點(diǎn)概括為2個(gè)方向:傳統(tǒng)分布式一致性算法的改進(jìn)算法和證明機(jī)制算法.如Paxos和Raft算法就是傳統(tǒng)分布式一致性算法的代表,它們一般不能直接作為區(qū)塊鏈的共識(shí)機(jī)制使用[9],這是由于其假設(shè)系統(tǒng)中每個(gè)節(jié)點(diǎn)都是誠(chéng)實(shí)的、不作惡的,而實(shí)際的去中心化的區(qū)塊鏈網(wǎng)絡(luò)中,節(jié)點(diǎn)之間互不了解、互不信任,存在欺騙和作惡的可能.而在這種情況下,不得不提到適用于聯(lián)盟鏈的BPFT(practical Byzantine fault tolerance)算法[10],它可以在拜占庭節(jié)點(diǎn)數(shù)不超過(guò)全網(wǎng)節(jié)點(diǎn)數(shù)量1/3的情況下保障數(shù)據(jù)的一致性,但是其效率與參與共識(shí)的節(jié)點(diǎn)數(shù)量相關(guān),并不適用于節(jié)點(diǎn)數(shù)量過(guò)多的公有區(qū)塊鏈系統(tǒng),并不具備良好的擴(kuò)展性;另一類是證明機(jī)制算法,如基于工作量證明的PoW共識(shí)算法[11-12],嚴(yán)重浪費(fèi)資源(電力消耗),且長(zhǎng)達(dá)10 min的交易確認(rèn)時(shí)間使其不適用于中小額交易的場(chǎng)景;基于權(quán)益證明的PoS(proof of stake)共識(shí)算法,在2012年8月應(yīng)用于電子貨幣系統(tǒng)點(diǎn)點(diǎn)幣(peercoin)[13],在其共識(shí)機(jī)制中,節(jié)點(diǎn)消耗的幣齡(代幣數(shù)量乘以擁有代幣時(shí)長(zhǎng))越多,其產(chǎn)生區(qū)塊的難度就越低。這也導(dǎo)致某些節(jié)點(diǎn)積累幣齡,長(zhǎng)時(shí)間不參加記賬,同時(shí)較PoW算法也更容易引起區(qū)塊鏈分叉,而且其本質(zhì)仍采用“挖礦”機(jī)制來(lái)產(chǎn)生區(qū)塊,同樣還面臨性能瓶頸;基于PoW和PoS算法的有機(jī)結(jié)合算法,如權(quán)益速度證明(proof of stake velocity,PoSV)[14]、燃燒證明(proof of burn,PoB)[15]、行動(dòng)證明(proof of activity,PoA)[16]和2跳共識(shí)算法[17]等.為解決PoS中“屯幣”現(xiàn)象,2014年4月Ren提出了PoSV共識(shí)算法,在這份蝸牛幣(reddcoin,RDD)白皮書中,其改進(jìn)了PoS中幣齡是時(shí)間的線性函數(shù)的問(wèn)題,在PoSV算法前期使用PoW實(shí)現(xiàn)代幣分配,在后期則使用PoSV維護(hù)網(wǎng)絡(luò)長(zhǎng)期安全;2014年5月基于PoW和PoS提出了PoB共識(shí)算法,并發(fā)行了Slimcoin.PoB共識(shí)算法通過(guò)“燃燒”礦工持有的Slimcoin(把Slimcoin發(fā)送至特定的無(wú)法找回的地址)來(lái)競(jìng)爭(zhēng)新區(qū)塊的記賬權(quán),燃燒的Slimcoin越多則挖到新區(qū)塊的可能性就越大;2014年12月提出的PoA共識(shí)機(jī)制,采用PoW挖出的部分代幣以抽獎(jiǎng)的方式分發(fā)給所有活躍節(jié)點(diǎn),而節(jié)點(diǎn)擁有的權(quán)益越高,其被抽中的概率也就越大,Bentov等人[16]不僅提出了PoA共識(shí)機(jī)制,還指出了PoW共識(shí)機(jī)制在比特幣系統(tǒng)后期帶來(lái)的“公地悲劇”問(wèn)題,但并沒(méi)有結(jié)合博弈論給出分析與證明;2017年4月2跳共識(shí)被提出,其解決思路是在PoW算力的基礎(chǔ)上引入PoS權(quán)益,使得新區(qū)塊的產(chǎn)生依賴于誠(chéng)實(shí)節(jié)點(diǎn)占有大多數(shù)的聯(lián)合資源(算力+權(quán)益).綜上而言,這些共識(shí)算法都致力于取長(zhǎng)補(bǔ)短、解決PoW與PoS存在的能源消耗與安全風(fēng)險(xiǎn)問(wèn)題,在能源消耗、安全風(fēng)險(xiǎn)、吞吐量與性能等方面都有所突破,但都沒(méi)有跳出“挖礦”式共識(shí)模式.
因此,本文針對(duì)比特幣系統(tǒng)后期可能出現(xiàn)的“公地悲劇”問(wèn)題、系統(tǒng)的性能瓶頸及“挖礦”的資源消耗等問(wèn)題,首先利用博弈論分析比特幣系統(tǒng)后期“公地悲劇”現(xiàn)象,在此基礎(chǔ)上提出了一種基于門限密碼方案[18]的共識(shí)機(jī)制(a consensus mechanism based on threshold cryptography,TCCM).在TCCM共識(shí)機(jī)制中,本文利用門限群簽名理論[19-21]構(gòu)建了記賬節(jié)點(diǎn)保證金模型,獲得區(qū)塊鏈記賬權(quán)的節(jié)點(diǎn)可以通過(guò)該模型提交保證金,同時(shí)該模型也保證了保證金的安全.其次,本文還利用門限加解密理論[22-23]構(gòu)造了區(qū)塊鏈記賬權(quán)競(jìng)價(jià)模型,該模型通過(guò)節(jié)點(diǎn)競(jìng)價(jià)的方式產(chǎn)生記賬節(jié)點(diǎn),獲得記賬權(quán)的節(jié)點(diǎn)提交保證金來(lái)實(shí)現(xiàn)節(jié)點(diǎn)信用背書.最后,重構(gòu)獎(jiǎng)勵(lì)機(jī)制,讓收益能夠獎(jiǎng)勵(lì)給存儲(chǔ)、驗(yàn)證、傳播區(qū)塊的節(jié)點(diǎn),使得更多的節(jié)點(diǎn)參與到共識(shí)的全過(guò)程中.
本文的主要貢獻(xiàn)有4個(gè)方面:
1)結(jié)合博弈論分析并證明了比特幣系統(tǒng)后期“公地悲劇”的存在性,解釋了“公地悲劇”所引發(fā)的比特幣系統(tǒng)后期的安全問(wèn)題;
2)設(shè)計(jì)了基于門限群簽名方案的保證金模型,該模型不僅為節(jié)點(diǎn)能夠誠(chéng)實(shí)地產(chǎn)生新區(qū)塊提供背書,也設(shè)計(jì)了一種特殊的交易形式以確保保證金的安全;
3)設(shè)計(jì)了基于門限加解密理論的區(qū)塊鏈記賬權(quán)競(jìng)價(jià)模型,該模型使得節(jié)點(diǎn)通過(guò)競(jìng)價(jià)拍賣的方式獲得記賬權(quán),并能夠保證記賬節(jié)點(diǎn)產(chǎn)生的隨機(jī)性,有效地防止記賬權(quán)壟斷現(xiàn)象;
4)重構(gòu)了區(qū)塊鏈的獎(jiǎng)勵(lì)規(guī)則,使得越來(lái)越多的節(jié)點(diǎn)參與到共識(shí)的各個(gè)環(huán)節(jié),能讓更多的非記賬節(jié)點(diǎn)通過(guò)系統(tǒng)獲利,解決了“公地悲劇”問(wèn)題,新共識(shí)機(jī)制打破了原有的“挖礦”式共識(shí)模式,有效地降低了資源消耗.
在文獻(xiàn)[16]中,Bentov等人指出PoW共識(shí)機(jī)制在比特幣系統(tǒng)后期會(huì)導(dǎo)致“公地悲劇”問(wèn)題,主要指:當(dāng)區(qū)塊獎(jiǎng)勵(lì)可以忽略不計(jì)時(shí),即獎(jiǎng)勵(lì)(幾乎)完全是交易費(fèi)用組成,比特幣系統(tǒng)會(huì)出現(xiàn)顯著的利潤(rùn)減少.由于節(jié)點(diǎn)存在自私的心理,都想盡可能不花費(fèi)更多費(fèi)用去使用系統(tǒng)的公共資源(礦工算力),比如轉(zhuǎn)賬、支付等.于是,使用者都不愿意把費(fèi)用支付給“礦工”用于系統(tǒng)維護(hù),大量低價(jià)值交易就不斷出現(xiàn).這必然導(dǎo)致“礦工”挖出來(lái)的交易費(fèi)越來(lái)越少,于是造成網(wǎng)絡(luò)算力下降,敵手攻擊成本降低,系統(tǒng)越來(lái)越不安全,越來(lái)越多的使用者(節(jié)點(diǎn))離開(kāi),網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)下降,直至整個(gè)比特幣網(wǎng)絡(luò)系統(tǒng)崩潰,這就是“公地悲劇”問(wèn)題.為解決該問(wèn)題,Bentov等人[16]認(rèn)為礦工可以嘗試形成只接受高額交易的協(xié)議,設(shè)置每個(gè)塊中的交易傳遞的總價(jià)值上限、限制塊的大小等,但沒(méi)有從博弈論的角度給出分析.本文在此基礎(chǔ)上,結(jié)合博弈論具體分析并證明了比特幣系統(tǒng)的“公地悲劇”的存在性.
在區(qū)塊鏈系統(tǒng)中,假設(shè)有m個(gè)節(jié)點(diǎn)維護(hù)系統(tǒng),且每個(gè)節(jié)點(diǎn)都是理性的參與者.gi∈[0,+)表示節(jié)點(diǎn)i產(chǎn)生的交易數(shù)量,代表m個(gè)節(jié)點(diǎn)每輪(1次共識(shí)過(guò)程)產(chǎn)生交易的總數(shù);v表示每筆交易的交易費(fèi)用.假設(shè)是v是G的函數(shù),v=v(G).因?yàn)槊抗P交易至少有一定比特幣的交易費(fèi)用才會(huì)吸引節(jié)點(diǎn)由于利益的驅(qū)使去進(jìn)行“挖礦”,如若不然,整個(gè)比特幣系統(tǒng)的安全性就會(huì)受到挑戰(zhàn).假設(shè)每輪系統(tǒng)存在最大的交易總數(shù)Gmax,當(dāng)G
(1)
如圖1所示:
Fig.1 The fee for each transaction decreases as the total number of transactions increases圖1 每筆交易的交易費(fèi)隨著交易總數(shù)增加而下降
在系統(tǒng)中,節(jié)點(diǎn)會(huì)根據(jù)收集的交易費(fèi)總價(jià)值來(lái)確定是否競(jìng)爭(zhēng)“挖礦”.假設(shè)進(jìn)行Hash計(jì)算時(shí),每筆交易的平均資源消耗為c,對(duì)于“挖礦”成功的節(jié)點(diǎn)s,其利潤(rùn)函數(shù)為
(2)
(3)
其中,fail≠s.式(2)(3)的一階導(dǎo)數(shù)分別為
(4)
(5)
S′(g1,g2,…,gm)=ξ(pi×S(g1,g2,…,gm)+
(1-pi)×Q(g1,g2,…,gm)),i=1,2,…,m,
(6)
式(6)的最優(yōu)化的一階條件是
(7)
式(7)可以解釋為增加一筆交易有正負(fù)2方面的效應(yīng),正的效應(yīng)是這筆交易產(chǎn)生交易費(fèi)v(G),負(fù)的效應(yīng)是這筆交易會(huì)導(dǎo)致該輪每筆交易的交易費(fèi)都降低.
m個(gè)節(jié)點(diǎn)一階條件定義了m個(gè)反應(yīng)函數(shù):
g*=gi(g1,…,gi-1,gi+1,…,gm),
i=1,2,…,m,
(8)
因?yàn)椋?/p>
(9)
(10)
所以根據(jù)隱函數(shù)存在定理可得:
(11)
將m個(gè)節(jié)點(diǎn)的一階條件(即式(7))相加,可得:
(12)
系統(tǒng)最優(yōu)的目標(biāo)是最大化:
(13)
其中,?表示系統(tǒng)實(shí)際情況下參與“挖礦”的節(jié)點(diǎn)數(shù)量且滿足? 式(13)的最優(yōu)化的一階條件為 v(G**)+G**v′(G**)=?c, (14) 這里,G**是比特幣系統(tǒng)最優(yōu)的交易數(shù)量,比較整個(gè)系統(tǒng)最優(yōu)(見(jiàn)式(14))與單個(gè)節(jié)點(diǎn)最優(yōu)的一階條件(見(jiàn)式(12))可以看出,G*>G**,即系統(tǒng)實(shí)際運(yùn)行時(shí)產(chǎn)生的交易數(shù)量過(guò)多,系統(tǒng)負(fù)荷過(guò)大,系統(tǒng)的礦工數(shù)量不足以滿足交易數(shù)量,公共資源(礦工算力)被過(guò)度使用,從而引起比特幣系統(tǒng)安全性的擔(dān)憂. 本節(jié)主要提出了節(jié)點(diǎn)保證金模型和區(qū)塊鏈記賬權(quán)競(jìng)價(jià)模型. 為了防止參與共識(shí)節(jié)點(diǎn)的作弊、無(wú)故離線、頻繁分叉等拜占庭行為,本文提出了一種基于門限群簽名理論的保證金模型,旨在通過(guò)抵押保證金抑制節(jié)點(diǎn)的拜占庭行為,利用門限群簽名技術(shù)提高保證金的安全. 如圖2所示,該保證金系統(tǒng)模型的參與方包括:可信中心(trust center,TC)(這一般由區(qū)塊鏈系統(tǒng)監(jiān)管機(jī)構(gòu)負(fù)責(zé));繳納保證金的節(jié)點(diǎn)ID0;簽名合成者(signature combiner,SC);保證金管理節(jié)點(diǎn)集合T={T1,T2,…,Tn},其身份信息分別為ID1,ID2,…,IDn.本文將繳納和退還保證金的行為看成是一種特殊的交易,在該交易中,由繳納保證金的節(jié)點(diǎn)ID0向T(由區(qū)塊鏈系統(tǒng)中多個(gè)節(jié)點(diǎn)構(gòu)成)繳納保證金.每一位繳納保證金的節(jié)點(diǎn)需要通過(guò)對(duì)前一次交易(一般交易)和下一位擁有者(保證金管理者集合)的公鑰簽署一份隨機(jī)散列的數(shù)字簽名,并將這個(gè)簽名附加在保證金的末尾,那么保證金就提交給了T.當(dāng)繳納保證金的節(jié)點(diǎn)誠(chéng)實(shí)地完成了1輪或者多輪區(qū)塊鏈共識(shí),由保證金管理者集合T對(duì)前一次交易(特殊的交易)和下一位擁有者(需返還保證金的節(jié)點(diǎn)ID0)利用門限群簽名技術(shù)簽署一份隨機(jī)散列的數(shù)字簽名,并將這個(gè)簽名附加在返回的保證金的末尾,保證金就返還給了之前繳納保證金的節(jié)點(diǎn)ID0. Fig.2 The schematic diagram of margin model圖2 保證金模型示意圖 該保證金模型包含保證金繳納和保證金退,對(duì)于繳納保證金部分與比特幣系統(tǒng)類似,只是將下一位擁有者的公鑰替換成金管理節(jié)點(diǎn)集合T的群公鑰gp,故不作詳細(xì)闡述;保證金退還部分利用了門限群簽名技術(shù),在文獻(xiàn)[24]的方案基礎(chǔ)上做出了調(diào)整與修改,具體包含系統(tǒng)初始化、簽名、簽名驗(yàn)證3個(gè)部分.每個(gè)部分具體為: 1)初始化setup(t,n) ① 設(shè)置系統(tǒng)參數(shù) ② 設(shè)定相關(guān)密鑰及參數(shù) ③ 密鑰分發(fā) TC為保證金管理節(jié)點(diǎn)集合頒發(fā)另一部分私鑰,這一過(guò)程需要節(jié)點(diǎn)和TC交互執(zhí)行: 首先,TC計(jì)算節(jié)點(diǎn)的另一部分私鑰: yi=f(IDi), (15) 將yi通過(guò)秘密通道發(fā)送給相應(yīng)的節(jié)點(diǎn),并廣播αiG的值. 節(jié)點(diǎn)接收到私鑰yi后,驗(yàn)證: (16) 如果式(16)成立,節(jié)點(diǎn)則接收yi為其另一部分私鑰;反之,拒絕接收并要求TC重新生成另一部分私鑰. 至此,節(jié)點(diǎn)生成了私鑰di=xi+yi=xi+f(IDi),公鑰Di=diG,并公開(kāi)節(jié)點(diǎn)公鑰Di和用戶身份信息IDi. 2)簽名 ① 節(jié)點(diǎn)生成份額簽名Sign(Ti,IDi,di,preTr,Df) 為了防止簽名被敵手追蹤,本文使用SC的公鑰PKSC加密自身的身份,同時(shí)選取一個(gè)隨機(jī)值Random使每次加密后的密文均不相同: (17) ② 合成門限群簽名Combine(ri,si,Di,preTr,Df) 本過(guò)程由簽名合成者SC完成,包括份額簽名驗(yàn)證和簽名合成2個(gè)方面. 3)簽名驗(yàn)證 其他節(jié)點(diǎn)接收到門限群簽名(R,S)后,根據(jù)z=h(preTr+Df)計(jì)算z,并驗(yàn)證SG+z(gp+W)=R是否成立.如果成立則接收簽名,即將其放入交易池中;否則拒絕該門限群簽名,即拋棄該筆交易,意味著保證金返還失敗. 關(guān)于區(qū)塊鏈記賬權(quán)問(wèn)題,本文考慮到區(qū)塊鏈網(wǎng)絡(luò)中可能存在拜占庭節(jié)點(diǎn),提出了一種基于門限加密方案的記賬權(quán)競(jìng)價(jià)模型,旨在通過(guò)參與共識(shí)的節(jié)點(diǎn)之間相互競(jìng)價(jià)來(lái)產(chǎn)生區(qū)塊鏈的記賬節(jié)點(diǎn),同時(shí)利用多方參與決策來(lái)抑制拜占庭節(jié)點(diǎn)的惡意行為. Fig.3 The bidding model of the right of accounting圖3 記賬權(quán)競(jìng)價(jià)模型 記賬權(quán)競(jìng)價(jià)模型如圖3所示,設(shè)參與共識(shí)節(jié)點(diǎn)集合U={U1,U2,…,Um},其身份信息分別為ID1,ID2,ID3,…,IDm,解密服務(wù)器節(jié)點(diǎn)集合T={T1,T2,T3,…,Tn},其中,T?U,且解密服務(wù)器集合即保證金節(jié)點(diǎn)集合,由n個(gè)解密服務(wù)器利用自己的私鑰聯(lián)合產(chǎn)生秘密份額和系統(tǒng)公鑰,參與共識(shí)的節(jié)點(diǎn)利用產(chǎn)生的系統(tǒng)公鑰加密競(jìng)價(jià)金額得到密文,同時(shí)利用自己私鑰對(duì)密文和上一輪記賬節(jié)點(diǎn)編號(hào)的Hash值進(jìn)行簽名,并在區(qū)塊鏈系統(tǒng)中廣播簽名和密文.當(dāng)解密服務(wù)器節(jié)點(diǎn)收到密文和簽名,先根據(jù)密文驗(yàn)證簽名的正確性,如果不正確,則丟棄簽名;如果正確,利用自己的秘密份額解密出解密因子,并在全網(wǎng)廣播解密因子,任何收到t個(gè)解密因子的解密服務(wù)器節(jié)點(diǎn)驗(yàn)證解密因子的正確性后,就可以通過(guò)組合解密出競(jìng)價(jià)金額.值得注意的是t>f,f為解密服務(wù)器節(jié)點(diǎn)集合中拜占庭節(jié)點(diǎn)個(gè)數(shù),且假設(shè): f<└(n-1)/3」. 與(k,n)門限加密方案類似,該記賬權(quán)競(jìng)價(jià)模型由5個(gè)步驟組成: 1)系統(tǒng)初始化 設(shè)秘密選定一個(gè)大素?cái)?shù)p,F(xiàn)p表示有限域,E(a,b)為Fp上的橢圓曲線,G為橢圓曲線的基點(diǎn),q為G的階(p,q為奇素?cái)?shù)).公開(kāi)E(a,b)和G.這與保證金模型初始化系統(tǒng)參數(shù)類似,橢圓曲線采用E. 2)設(shè)置秘密份額及公鑰 由Ti運(yùn)行,每個(gè)解密服務(wù)節(jié)點(diǎn)執(zhí)行步驟: ①Ti隨機(jī)選擇一個(gè)整數(shù)di?[1,q-1]作為私鑰,并計(jì)算公鑰Qi=diG. ②Ti產(chǎn)生隨機(jī)整數(shù)集{ai,k|k=1,2,…,t-1}?Fp且ai,t-1≠0,構(gòu)造t-1次多項(xiàng)式: fi(x)=di+ai,1x+…+ai,1xt-1modq, (18) 其中,fi(0)=di. ③Ti計(jì)算fi(IDj)并發(fā)送給Tj(j≠i),fi(IDj)保留.同時(shí)計(jì)算并廣播驗(yàn)證參數(shù): aik=aikG,k∈{1,2,…,t-1}, (19) 當(dāng)Tj(j≠i)接到其他n-1個(gè)解密服務(wù)器節(jié)點(diǎn)的廣播信息后,驗(yàn)證fi(IDj)的有效性為 (20) 若式(20)成立,則fi(IDj)有效;否則Tj拒絕接收f(shuō)i(IDj)并要求Pi重新發(fā)送. ④Ti收到其他n-1個(gè)解密服務(wù)器節(jié)點(diǎn)Tj發(fā)送的fi(IDj)之后,自己的秘密份額F(IDi)可計(jì)算為 (21) Ti計(jì)算Yi=F(IDi)Gmodq,并廣播Yi. ⑤ 由Lagrange插值法,利用公開(kāi)信息Yi計(jì)算解密服務(wù)器節(jié)點(diǎn)組公鑰: (22) 公開(kāi)解密服務(wù)器節(jié)點(diǎn)組公鑰y. 3)加密 將競(jìng)價(jià)金額Mo(明文)映射為有限域FP上的一個(gè)元素M,并分割成2個(gè)部分M=m1+m2.設(shè)競(jìng)價(jià)區(qū)塊鏈記賬權(quán)節(jié)點(diǎn)Ui. ①Ui選取一個(gè)隨機(jī)數(shù)k,1≤k≤q-1. ②Ui進(jìn)行計(jì)算: c0=kG, (23) ③ 利用ECC進(jìn)行簽名: σ=Sign(h((c0,(c1,c2)),IDpr),SKui), (24) 其中,SKui為競(jìng)價(jià)節(jié)點(diǎn)的私鑰,h(·)為單向函數(shù),IDpr為上一次記賬節(jié)點(diǎn)的編號(hào). ④ 將密文CM=(c0,(c1,c2))和σ發(fā)送給T. 4)部分解密 由Ti運(yùn)行,設(shè)T中t個(gè)解密服務(wù)器節(jié)點(diǎn)集合為W={T1,T2,…,Tt},W中的成員Ti收到密文CM后,計(jì)算: hashValue=h(CM,IDpr), (25) 通過(guò)解密簽名,得到: τ=Unsign(σ,Pu). (26) 比較hashValue和τ,如果不相等,則選擇丟棄密文CM與簽名σ;反之,Ti使用自己的秘密份額F(IDi),計(jì)算各自的解密因子Si: (27) 5)組合與比較 由W中的解密服務(wù)器節(jié)點(diǎn)運(yùn)行.該步驟包括2個(gè)部分,驗(yàn)證解密因子Si的真實(shí)性和組合Si恢復(fù)明文M. ①W中的節(jié)點(diǎn)彼此交換Si,并驗(yàn)證解密因子Si的真實(shí)性: (28) 若式(28)成立,則Ti提交的Si是正確的,否則要求重新Ti重新發(fā)送解密因子. ② 當(dāng)W中解密服務(wù)器收到t份正確的Si后,就按步驟計(jì)算m1和m2以此來(lái)解密明文M: (29) ③ 通過(guò)映射關(guān)系,根據(jù)M求得競(jìng)價(jià)金額Mo. 本節(jié)主要從初始化、區(qū)塊構(gòu)建、區(qū)塊驗(yàn)證和區(qū)塊鏈組裝4個(gè)部分闡述共識(shí)機(jī)制(TCCM). 當(dāng)節(jié)點(diǎn)收到新區(qū)塊并通過(guò)驗(yàn)證(round輪共識(shí)結(jié)束),節(jié)點(diǎn)中的偽隨機(jī)數(shù)生成程序就會(huì)自動(dòng)運(yùn)行,并以round輪記賬節(jié)點(diǎn)的身份編號(hào)作為隨機(jī)種子從參與共識(shí)的節(jié)點(diǎn)中選出n個(gè)解密服務(wù)器節(jié)點(diǎn),需要注意的是該程序產(chǎn)生的n個(gè)偽隨機(jī)值是在1~m(m為參與共識(shí)節(jié)點(diǎn)的個(gè)數(shù))之間,具有良好的隨機(jī)性.因?yàn)殡S機(jī)種子為round輪記賬節(jié)點(diǎn)的ID,所以產(chǎn)生的n個(gè)解密服務(wù)器節(jié)點(diǎn)具有一致性. 當(dāng)round+1輪的記賬權(quán)競(jìng)價(jià)正式開(kāi)始后,決定競(jìng)爭(zhēng)記賬權(quán)的節(jié)點(diǎn)們,通過(guò)區(qū)塊鏈記賬權(quán)競(jìng)價(jià)模型提交報(bào)價(jià)金額.如算法1所示,當(dāng)報(bào)價(jià)階段結(jié)束后,所有解密服務(wù)器節(jié)點(diǎn)i會(huì)廣播自己保存的最大的競(jìng)價(jià)金額Moi(理論上可以是ε位小數(shù),0<ε<+)和競(jìng)價(jià)節(jié)點(diǎn)編號(hào)N,round輪記賬節(jié)點(diǎn)通過(guò)廣播收到這些競(jìng)價(jià)金額和競(jìng)價(jià)節(jié)點(diǎn)編號(hào),選取最大的競(jìng)價(jià)金額的節(jié)點(diǎn),并通過(guò)簽名的形式提議獲得此次記賬權(quán)的節(jié)點(diǎn).當(dāng)解密服務(wù)器節(jié)點(diǎn)收到round輪記賬節(jié)點(diǎn)的提議后,如果發(fā)現(xiàn)它該報(bào)價(jià)金額的確是最大的(即該記賬金額大于等于它保存的競(jìng)價(jià)金額),它也會(huì)繼續(xù)提議由自己重新簽名的信息.當(dāng)round+1輪記賬節(jié)點(diǎn)接收到至少t條這樣的提議信息后,并驗(yàn)證簽名的正確性后,就通過(guò)保證金模型提交保證金.需要注意的是,保證金金額一般要大于單個(gè)區(qū)塊交易總價(jià)值上限1/2,這也是為了保證交易的安全性并提高獲取記賬權(quán)的門檻.同時(shí),當(dāng)記賬節(jié)點(diǎn)沒(méi)有在規(guī)定的時(shí)間產(chǎn)生新區(qū)塊,round輪的記賬節(jié)點(diǎn)再次廣播競(jìng)價(jià)金額次之的節(jié)點(diǎn)編號(hào),以此類推,直至在提交保證金的情況下產(chǎn)生新區(qū)塊. 算法1.記賬權(quán)競(jìng)價(jià)算法. /*廣播階段*/ ①M(fèi)oi=節(jié)點(diǎn)i的報(bào)價(jià)金額; ② ifMoi為解密服務(wù)器節(jié)點(diǎn)Tx解密的最大金額then ③ 廣播 “Moi+競(jìng)價(jià)節(jié)點(diǎn)編號(hào)N”+其簽名; ④ end if /*提議階段*/ ⑤ ifMoj為round輪記賬節(jié)點(diǎn)接收到最大金額then ⑥ 提議“Moj+競(jìng)價(jià)節(jié)點(diǎn)編號(hào)N”+其簽名; ⑦ end if ⑧ if解密服務(wù)器節(jié)點(diǎn)Ty解密金額不大于Mojthen ⑨ 提議“Moj+競(jìng)價(jià)節(jié)點(diǎn)編號(hào)N”+其簽名; ⑩ else 構(gòu)建區(qū)塊是區(qū)塊數(shù)據(jù)的填充過(guò)程.本文將由節(jié)點(diǎn)產(chǎn)生的含有代幣的數(shù)據(jù)稱為“交易”.所有的節(jié)點(diǎn)都需要檢查交易的合法性,再將交易保存在交易池.本節(jié)首先定義了區(qū)塊頭的數(shù)據(jù)結(jié)構(gòu): nVersion,區(qū)塊版本號(hào),4 B; hashPrevBlock,上一個(gè)區(qū)塊的區(qū)塊頭的Hash值,32 B; hashMerkleRoot,由區(qū)塊中所有交易構(gòu)造的Merkle根,32 B; nTime,Unix時(shí)間戳,4 B. 為了避免比特幣后期會(huì)導(dǎo)致的“公地悲劇”問(wèn)題,本文對(duì)區(qū)塊的交易填充做了詳細(xì)規(guī)定:1)設(shè)置每個(gè)區(qū)塊中交易傳遞的總價(jià)值上限;2)在滿足條件規(guī)定1的前提下,規(guī)定每個(gè)區(qū)塊中的交易總量不得超過(guò)G**.G**代表了系統(tǒng)最優(yōu)情況下的交易量,即保證區(qū)塊鏈網(wǎng)絡(luò)安全的交易量. 由于區(qū)塊收入是整體網(wǎng)絡(luò)安全的基礎(chǔ),在“公地悲劇”的情況下,系統(tǒng)安全性將會(huì)很弱.因此,維護(hù)健康的網(wǎng)絡(luò)需要一些協(xié)議執(zhí)行的規(guī)則來(lái)保護(hù)參與共識(shí)的節(jié)點(diǎn)作為一個(gè)群體,例如設(shè)置每個(gè)塊中的交易量上限.如果適當(dāng)選擇上限,礦工實(shí)際上可以通過(guò)這種上限獲得更多的收益,從而保證了區(qū)塊鏈系統(tǒng)的安全.通過(guò)這種方式使得塊空間成為稀少資源,交易費(fèi)就會(huì)上漲;為了將交易填充到區(qū)塊中必須與其他節(jié)點(diǎn)競(jìng)爭(zhēng),并支付更高的交易費(fèi)用.設(shè)置每個(gè)塊中的交易總量,使得記賬節(jié)點(diǎn)不能通過(guò)接受低收費(fèi)交易來(lái)打破市場(chǎng),因?yàn)橛涃~節(jié)點(diǎn)只能把這么多的交易放到塊中.同時(shí),單筆交易的交易費(fèi)具有波動(dòng)性會(huì)導(dǎo)致交易的總費(fèi)用是一個(gè)不確定的,即區(qū)塊收入不確定,節(jié)點(diǎn)無(wú)法準(zhǔn)確估計(jì)競(jìng)價(jià)金額Mo,這也給節(jié)點(diǎn)競(jìng)爭(zhēng)區(qū)塊鏈記賬權(quán)帶來(lái)了挑戰(zhàn). 當(dāng)記賬節(jié)點(diǎn)完成了區(qū)塊數(shù)據(jù)的正確填充,就會(huì)立刻將新區(qū)塊發(fā)送給其所有相鄰節(jié)點(diǎn).這些相鄰節(jié)點(diǎn)成功驗(yàn)證并接受這個(gè)新區(qū)塊后,也會(huì)繼續(xù)以類似的方式傳播該區(qū)塊. 新區(qū)塊在網(wǎng)絡(luò)中以廣播的方式進(jìn)行擴(kuò)散,其驗(yàn)證由節(jié)點(diǎn)獨(dú)立進(jìn)行,確保只有有效的區(qū)塊才會(huì)在網(wǎng)絡(luò)中傳播,從而獲得獎(jiǎng)勵(lì).反之,由于區(qū)塊的無(wú)效性會(huì)導(dǎo)致節(jié)點(diǎn)失去獎(jiǎng)勵(lì),并扣押保證金.記賬節(jié)點(diǎn)的獎(jiǎng)勵(lì)R: R=AllTrExp-Mo, (30) 其中,AllTrExp表示該區(qū)塊的交易費(fèi)總價(jià)值,Mo表示競(jìng)價(jià)金額,且新區(qū)塊的交易費(fèi)總價(jià)值是由記賬節(jié)點(diǎn)自己獨(dú)立收集,由于網(wǎng)絡(luò)原因存在差異. 當(dāng)節(jié)點(diǎn)收到新區(qū)塊時(shí),它會(huì)按照標(biāo)準(zhǔn)驗(yàn)證清單對(duì)該區(qū)塊進(jìn)行一一核查,其標(biāo)準(zhǔn)一般包括: 1)驗(yàn)證記賬節(jié)點(diǎn)的合法性.在提交保證金的前提下,通過(guò)執(zhí)行區(qū)塊鏈記賬權(quán)競(jìng)價(jià)模型中最后一步,利用收集到的廣播的解密因Si合成競(jìng)價(jià)金額,核實(shí)競(jìng)價(jià)金額的節(jié)點(diǎn)身份信息. 2)驗(yàn)證區(qū)塊數(shù)據(jù)填充的有效性. 3)區(qū)塊大小在長(zhǎng)度限制之內(nèi). 若沒(méi)有通過(guò)驗(yàn)證,這個(gè)區(qū)塊將被拒絕,同時(shí)廣播所有驗(yàn)證數(shù)據(jù).當(dāng)n個(gè)解密服務(wù)器節(jié)點(diǎn)中,有t個(gè)解密服務(wù)器節(jié)點(diǎn)通過(guò)對(duì)驗(yàn)證數(shù)據(jù)的計(jì)算,發(fā)現(xiàn)該區(qū)塊是不合法的,這t個(gè)解密服務(wù)器節(jié)點(diǎn)就可以通過(guò)保證金模型,與參與共識(shí)的節(jié)點(diǎn)瓜分保證金.同時(shí),重新產(chǎn)生記賬節(jié)點(diǎn).反之,如果驗(yàn)證通過(guò)了,本輪將通過(guò)保證金模型返還上一輪記賬節(jié)點(diǎn)的保證金,同時(shí)由參與共識(shí)的節(jié)點(diǎn)通過(guò)保證金模型分享競(jìng)價(jià)金額. 需要注意的是,返回保證金的交易并沒(méi)有打包到當(dāng)前區(qū)塊中,而是區(qū)塊鏈系統(tǒng)會(huì)在產(chǎn)生足夠多區(qū)塊后,才會(huì)觸發(fā)保證金模型返回保證金,這是為了保證記賬節(jié)點(diǎn)的誠(chéng)實(shí)性,不會(huì)發(fā)起區(qū)塊鏈“分叉”攻擊而導(dǎo)致“雙花”問(wèn)題. 同時(shí),本文借鑒了“閃電網(wǎng)絡(luò)”的思想[25],只有參與共識(shí)的節(jié)點(diǎn)積累了足夠的獎(jiǎng)勵(lì),才會(huì)啟動(dòng)保證金模型進(jìn)行獎(jiǎng)勵(lì)分發(fā),這是為了減少區(qū)塊鏈網(wǎng)絡(luò)中小額交易數(shù)量,緩解節(jié)點(diǎn)的通信與計(jì)算壓力. 在區(qū)塊的裝配階段,主要是將新區(qū)塊裝配至區(qū)塊鏈主鏈中.當(dāng)某個(gè)節(jié)點(diǎn)接收并驗(yàn)證通過(guò)了新區(qū)塊,它會(huì)將新區(qū)塊連接到現(xiàn)有的區(qū)塊鏈上,將它們組裝起來(lái).由于新共識(shí)機(jī)制明確規(guī)定了記賬節(jié)點(diǎn),故不存區(qū)塊鏈的分叉問(wèn)題,也就不存在由于分叉而導(dǎo)致的區(qū)塊鏈系統(tǒng)資源的浪費(fèi). 隨著越來(lái)越多的節(jié)點(diǎn)加入?yún)^(qū)塊鏈系統(tǒng),單位時(shí)間的交易量也會(huì)持續(xù)增加,節(jié)點(diǎn)為了競(jìng)爭(zhēng)區(qū)塊空間,勢(shì)必會(huì)提高交易費(fèi),區(qū)塊收入也會(huì)相應(yīng)增加.由于區(qū)塊收入是整體網(wǎng)絡(luò)安全的基礎(chǔ),區(qū)塊收入的增加必將帶來(lái)區(qū)塊鏈系統(tǒng)安全性的提高. 本節(jié)我們主要對(duì)TCCM共識(shí)機(jī)制的安全性進(jìn)行分析,并從中小額交易、激勵(lì)機(jī)制等方面進(jìn)行討論. 首先考慮2個(gè)節(jié)點(diǎn)競(jìng)爭(zhēng)區(qū)塊鏈記賬權(quán),i=1,2.令bi≥0是競(jìng)價(jià)節(jié)點(diǎn)的競(jìng)價(jià)金額,vi為該輪區(qū)塊的交易費(fèi)總價(jià)值.由于各個(gè)節(jié)點(diǎn)收集的交易并不相同且不確定,所以對(duì)于不同競(jìng)價(jià)節(jié)點(diǎn)vi是一個(gè)不確定的值,且任意倆競(jìng)價(jià)節(jié)點(diǎn)都不知道對(duì)方的競(jìng)價(jià)金額bi.但可以確定的是,vi(被標(biāo)準(zhǔn)化)在[0,1]區(qū)間均勻獨(dú)立分布,競(jìng)價(jià)節(jié)點(diǎn)i的效用函數(shù)如下(如果2節(jié)點(diǎn)的競(jìng)價(jià)金額相同,節(jié)點(diǎn)以等概率獲得記賬權(quán)): (31) 設(shè)節(jié)點(diǎn)i的出價(jià)bi(vi)是關(guān)于其價(jià)值vi的嚴(yán)格遞增可微函數(shù).從理性前提出發(fā),沒(méi)有節(jié)點(diǎn)愿意支付高于交易費(fèi)總價(jià)值的競(jìng)價(jià)金額,即bi>1≥vi不可能是最優(yōu)的情況.由于該博弈是對(duì)稱的,故只需要考慮對(duì)稱出價(jià)戰(zhàn)略:b=b*(v).給定v和b,節(jié)點(diǎn)i的期望效用為 ui=(v-b)Prob(bj (32) 其中,bj是節(jié)點(diǎn)j的出價(jià)策略,Prob(·)代表bj 根據(jù)對(duì)稱性,bj=b*(vj),有: Prob{bjProb{vj (33) 這里Φ(b)=b*-1(b)是b*的逆函數(shù)(節(jié)點(diǎn)選擇b時(shí)他的價(jià)值是Φ(b)).在式(33)中,由于v在區(qū)間[0,1]均勻分布,Φ(b)∈[0,1],則Prob(vj<Φ(b))=Φ(b).因此,節(jié)點(diǎn)i面臨的問(wèn)題是: (34) 最優(yōu)化的一階條件是: -Φ(b)+(v-b)Φ′(b)=0. (35) 如果b*(·)是節(jié)點(diǎn)i的最優(yōu)戰(zhàn)略,Φ(b)=v.因此: (Φ(b)-b)Φ′(b)=Φ(b), (36) 式(36)微分方程可以寫成: (37) 解式(37)偏微分方程可得: b*=v/2, (38) 如式(38)所示,這里的貝葉斯均衡為,每個(gè)節(jié)點(diǎn)的出價(jià)是它在該輪收集到的交易費(fèi)總價(jià)值的一半.根據(jù)出價(jià)最高的節(jié)點(diǎn)獲得區(qū)塊鏈記賬權(quán),去除競(jìng)價(jià)金額,記賬節(jié)點(diǎn)還是獲得一半的交易費(fèi),這對(duì)于眾多驗(yàn)證、存儲(chǔ)、傳播的節(jié)點(diǎn)來(lái)說(shuō)是不公平的. 但是,節(jié)點(diǎn)出價(jià)與實(shí)際單個(gè)區(qū)塊的總交易費(fèi)之間的差距隨著競(jìng)價(jià)節(jié)點(diǎn)個(gè)數(shù)的增加而遞減.設(shè)有m個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)開(kāi)始對(duì)于vi是不確定的,但都在[0,1]區(qū)間上的均勻分布,如果最終收集到的交易費(fèi)總價(jià)值vi的節(jié)點(diǎn)i出價(jià)為b,則期望效用函數(shù)為 (39) 最優(yōu)化的一階條件為 -Φm-1(b)+(v-b)(m-1)Φm-2Φ′(b)=0, (40) 解式(40)微分得: (41) 如圖4所示(v=1),b*(v)隨著m的增加而增加.當(dāng)m→時(shí),b*→v.即參與共識(shí)的競(jìng)價(jià)節(jié)點(diǎn)越多,記賬所花費(fèi)的競(jìng)價(jià)金額就越高.可見(jiàn),當(dāng)m趨于無(wú)窮時(shí),記賬節(jié)點(diǎn)由于高昂的競(jìng)價(jià)金額而幾乎分不到交易費(fèi). Fig.4 The trend of the bidding amount with the number of bidding nodes圖4 競(jìng)價(jià)節(jié)點(diǎn)數(shù)量與競(jìng)價(jià)金額變化趨勢(shì) 綜上,一方面,m趨于無(wú)窮這種情況也是不可能存在的,由于節(jié)點(diǎn)提交的保證金對(duì)于大多數(shù)節(jié)點(diǎn)來(lái)說(shuō)是個(gè)門檻,很多節(jié)點(diǎn)沒(méi)有那么多保證金,所以會(huì)選擇參與驗(yàn)證、存儲(chǔ)等非記賬過(guò)程.另一方面,更多節(jié)點(diǎn)參與競(jìng)爭(zhēng)記賬權(quán),競(jìng)價(jià)金額就會(huì)越高,用于非記賬行為的獎(jiǎng)勵(lì)就會(huì)越高,就會(huì)吸引更多的節(jié)點(diǎn)參與區(qū)塊的驗(yàn)證、存儲(chǔ)等非記賬過(guò)程,有利于區(qū)塊鏈系統(tǒng)的利益分配.新的激勵(lì)機(jī)制會(huì)導(dǎo)致越來(lái)越多的節(jié)點(diǎn)參與共識(shí)過(guò)程,不會(huì)出現(xiàn)“節(jié)點(diǎn)少交易多”的情況,能達(dá)到抑制“公地悲劇”的目的,區(qū)塊鏈系統(tǒng)也會(huì)變得更加安全可靠. 抗“壟斷”性質(zhì)主要是指競(jìng)爭(zhēng)區(qū)塊鏈記賬權(quán)具有隨機(jī)性.以PoW算法為例,它并不具有良好的隨機(jī)性,主要是其記賬權(quán)依賴算力競(jìng)爭(zhēng),算力越來(lái),獲得記賬權(quán)的概率就越大.至目前為止,全球大部分算力被礦池壟斷,全球前5的大礦池共計(jì)擁有超50%的算力.共識(shí)機(jī)制安全的一個(gè)關(guān)鍵因素就是記賬節(jié)點(diǎn)的隨機(jī)性(抗“壟斷”). 在TCCM共識(shí)機(jī)制中,由于每個(gè)節(jié)點(diǎn)都是自私且理性的,都希望用最小的代價(jià)獲得記賬權(quán)來(lái)使得自己利益最大化.在拍賣記賬權(quán)的過(guò)程中,競(jìng)爭(zhēng)區(qū)塊記賬權(quán)的節(jié)點(diǎn)無(wú)法提前預(yù)知本輪共識(shí)的交易費(fèi)總量且各個(gè)節(jié)點(diǎn)收集的交易費(fèi)具有不確定性(見(jiàn)3.2節(jié)),所以節(jié)點(diǎn)無(wú)法準(zhǔn)確給出競(jìng)價(jià)金額Mo;其次Mo表示一個(gè)理論值是ε(0<ε<+)位小數(shù),在一個(gè)合理區(qū)間有無(wú)數(shù)種可能.在這種理性前提下,這些都導(dǎo)致沒(méi)有節(jié)點(diǎn)可以壟斷記賬權(quán). 在中小額交易方面,TCCM共識(shí)機(jī)制是PoW共識(shí)機(jī)制的良好擴(kuò)展;對(duì)于大額交易,TCCM共識(shí)機(jī)制有所欠缺,這是由于保證金的金額只大于單個(gè)區(qū)塊交易總價(jià)值上限1/2,當(dāng)單筆金額或者新區(qū)塊中某賬戶累計(jì)金額超過(guò)單個(gè)區(qū)塊交易總價(jià)值上限1/2時(shí),出于安全考慮,仍采用PoW共識(shí)機(jī)制.幸運(yùn)的是,在區(qū)塊鏈系統(tǒng)中大額交易很少,中小額交易占大多數(shù),顯然依賴大量計(jì)算資源消耗的PoW共識(shí)機(jī)制并不適用,而TCCM共識(shí)機(jī)制在資源消耗方面更有優(yōu)勢(shì),且更適用于中小額交易的處理,有利于提高交易處理效率. TCCM共識(shí)機(jī)制改進(jìn)了區(qū)塊鏈系統(tǒng)的激勵(lì)機(jī)制.在PoW共識(shí)機(jī)制中,交易費(fèi)只支付給創(chuàng)建區(qū)塊的礦工,而傳播、驗(yàn)證和存儲(chǔ)交易的成本是由網(wǎng)絡(luò)中的所有節(jié)點(diǎn)分擔(dān),并沒(méi)有給予獎(jiǎng)勵(lì),這就導(dǎo)致礦工(礦池)盡可能自己保持每筆交易來(lái)收取費(fèi)用,盡可能地避免傳播自己產(chǎn)生的交易.在TCCM共識(shí)機(jī)制中,雖然每個(gè)區(qū)塊都設(shè)置價(jià)值上限,但是對(duì)于解決“公地悲劇”問(wèn)題幫助不大,因?yàn)檎麄€(gè)用戶仍然希望發(fā)送大量的低價(jià)值交易.因此,3.3節(jié)考慮給予獎(jiǎng)勵(lì)給每個(gè)參與共識(shí)驗(yàn)證的節(jié)點(diǎn),這使得節(jié)點(diǎn)更愿意參與節(jié)點(diǎn)驗(yàn)證工作,進(jìn)一步提高系統(tǒng)安全. 本文將從時(shí)間開(kāi)銷、吞吐量等指標(biāo)分析該共識(shí)機(jī)制的性能. 假設(shè)TMUL表示模乘法運(yùn)算的時(shí)間開(kāi)銷,TEC_MUL表示橢圓曲線上乘法運(yùn)算的時(shí)間開(kāi)銷,TEC_ADD表示橢圓曲線上加法運(yùn)算的時(shí)間開(kāi)銷,TH表示Hash運(yùn)算的時(shí)間開(kāi)銷,Tblock表示區(qū)塊產(chǎn)生時(shí)間.根據(jù)文獻(xiàn)[20],有TEC_MUL≈29TMUL,TEC_ADD≈0.12TMUL.由于模加法和模減法的計(jì)算開(kāi)銷很低,可忽略不計(jì).本文所提出的共識(shí)機(jī)制時(shí)間開(kāi)銷為:歸還保證金Tmon、產(chǎn)生記賬節(jié)點(diǎn)Tacc、產(chǎn)生區(qū)塊Tblock.假設(shè)參與記賬權(quán)競(jìng)爭(zhēng)的節(jié)點(diǎn)個(gè)數(shù)為J. 歸還保證金的開(kāi)銷為 Tmon=(4t+2)TEC_MUL+2(t-1+2)TEC_ADD+ 產(chǎn)生記賬節(jié)點(diǎn)的時(shí)間開(kāi)銷為 Tacc=(2+2t)JTEC_MUL+TH+(2t+1)JTEC_ADD= 則總的時(shí)間開(kāi)銷為 Tsum=Tmon+Tacc+Tblock= 根據(jù)官方文檔和已有的測(cè)試,本文對(duì)比了PoW和PoS公有鏈共識(shí)算法與TCCM共識(shí)機(jī)制,如表1所示,發(fā)現(xiàn)TCCM共識(shí)機(jī)制在TPS、時(shí)延、交易確認(rèn)時(shí)間、交易不可更改時(shí)間、資源消耗、時(shí)間復(fù)雜度等方面都具有優(yōu)勢(shì). Table 1 Performance Indicators of PoW,PoS,TCCM表1 PoW,PoS,TCCM性能指標(biāo) 針對(duì)區(qū)塊鏈共識(shí)機(jī)制比較了PBFT算法和TCCM共識(shí)機(jī)制(解密服務(wù)器節(jié)點(diǎn)集合T在安全范圍內(nèi)盡量小)的吞吐量.吞吐量是衡量系統(tǒng)單位時(shí)間內(nèi)處理交易的能力.本文適用每秒交易數(shù) (transac-tion per second,TPS)來(lái)表示.區(qū)塊鏈應(yīng)用中交易吞吐量指單位時(shí)間內(nèi)交易從產(chǎn)生到被確認(rèn)并寫入?yún)^(qū)塊鏈中的交易總數(shù): TPSΔt=SumTransactionsΔt/Δt, (42) 其中,Δt為交易產(chǎn)生到區(qū)塊被確認(rèn)的時(shí)間間隔,即出塊時(shí)間;SumTransactionsΔt為該時(shí)間間隔內(nèi)被確認(rèn)區(qū)塊中包含的交易總數(shù). 本文取Δ時(shí)間間隔分別為50 s,60 s,100 s,300 s等不同時(shí)間間隔,每個(gè)時(shí)間間隔測(cè)試20~30次,取其均值作為共識(shí)機(jī)制的TPS值.如圖5所示,本文通過(guò)Matlab繪制了TPS隨著間隔變化的趨勢(shì)圖. Fig.5 Comparison of throughput between PBFT algorithm and TCCM consensus mechanism圖5 PBFT算法和TCCM共識(shí)機(jī)制的吞吐量比較 本文提出了一種基于門限密碼方案的共識(shí)機(jī)制,它是PoW共識(shí)機(jī)制一種良好的擴(kuò)展.在新的共識(shí)機(jī)制中,設(shè)計(jì)的保證金模型既能夠保證記賬節(jié)點(diǎn)能誠(chéng)實(shí)地產(chǎn)生區(qū)塊,也確保了保證金的安全轉(zhuǎn)移;設(shè)計(jì)的記賬權(quán)競(jìng)價(jià)模型不但為競(jìng)價(jià)拍賣提供了安全的環(huán)境,而且記賬節(jié)點(diǎn)的產(chǎn)生具良好的隨機(jī)性,有效地防止了記賬權(quán)壟斷.在此基礎(chǔ)上,本文重新設(shè)計(jì)了節(jié)點(diǎn)的激勵(lì)機(jī)制,利用記賬節(jié)點(diǎn)的競(jìng)價(jià)金額對(duì)區(qū)塊驗(yàn)證、傳播和存儲(chǔ)等活動(dòng)進(jìn)行獎(jiǎng)勵(lì),極大地維護(hù)了區(qū)塊鏈系統(tǒng)的安全,避免了“公地悲劇”問(wèn)題.同時(shí),TCCM共識(shí)機(jī)制能更好地處理中小額交易,極大地提高了區(qū)塊鏈系統(tǒng)的吞吐量,但TCCM在大額交易方面需要PoW協(xié)議的介入以保證交易安全,后續(xù)工作將對(duì)其改進(jìn)與完善.2 系統(tǒng)模型
2.1 保證金模型
2.2 記賬權(quán)競(jìng)價(jià)模型
(x1,y1)=k×y,
c1=(x1,m1)modp,
c2=(y1,m2)modp.3 共識(shí)機(jī)制設(shè)計(jì)
3.1 初始化階段
3.2 區(qū)塊構(gòu)建
3.3 區(qū)塊校驗(yàn)
3.4 區(qū)塊裝配
4 安全性分析與討論
4.1 抗“公地悲劇”攻擊
4.2 抗“壟斷”性
4.3 討 論
5 性能分析
3tTMUL+(t+1+1)TH=
(119.24t+58)TMUL+(t+2)TH,
(58.12+58.24t)JTMUL+TH,
(119.24t+58+58.12J+58.24tJ)
TMUL+(t+3)TH+Tblock.6 總 結(jié)