王壹銘, 初劍峰, 王永軍, 陳彥東
(1. 吉林大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 長(zhǎng)春 130012; 2. 長(zhǎng)春市公安局 網(wǎng)安支隊(duì), 長(zhǎng)春 130051; 3. 吉林大學(xué)第二醫(yī)院 信息中心, 長(zhǎng)春 130041)
區(qū)塊鏈技術(shù)[1]最早作為比特幣的底層技術(shù)被提出, 具有去中心化及不可篡改等特性. 但由于實(shí)現(xiàn)區(qū)塊鏈技術(shù)的工作量證明(proof of work, PoW)算法對(duì)計(jì)算資源要求過高, 導(dǎo)致浪費(fèi)大量的計(jì)算資源, 且吞吐量低, 因此并不實(shí)用. PoW算法從生成交易單到出塊的時(shí)間約需10 min, 一個(gè)交易的確認(rèn)需后續(xù)連續(xù)6個(gè)區(qū)塊附著在該區(qū)塊后, 即一個(gè)區(qū)塊需約1 h才能被確認(rèn)放置在主鏈上. 而且PoW共識(shí)算法的區(qū)塊鏈系統(tǒng)每秒只能處理7筆交易, 導(dǎo)致區(qū)塊鏈技術(shù)不能用于物聯(lián)網(wǎng)或金融系統(tǒng). 針對(duì)該問題, 以太坊平臺(tái)提出了一種股權(quán)證明(proof of stake, PoS)共識(shí)算法, 但該算法存在其他問題, 如出塊速度不穩(wěn)定導(dǎo)致分叉的出現(xiàn)及持幣不出塊等[2]. 文獻(xiàn)[3]嘗試通過Gossip協(xié)議與實(shí)用拜占庭容錯(cuò)(practical Byzantine fault tolerance, PBFT)算法相結(jié)合的方式改進(jìn)區(qū)塊鏈共識(shí)算法. 文獻(xiàn)[4]提出基于零行列式策略[5]解決礦工挖礦問題, 對(duì)節(jié)點(diǎn)的策略選擇進(jìn)行優(yōu)化, 促進(jìn)節(jié)點(diǎn)與系統(tǒng)獲得更高的收益[6-7], 該算法雖能解決PoW算法中的算力浪費(fèi)問題, 但無法解決區(qū)塊鏈技術(shù)不能在高業(yè)務(wù)量系統(tǒng)中快速處理交易塊的問題. 事實(shí)上, 在比特幣的PoW共識(shí)算法中, 目標(biāo)Hash值要求以42位0開頭, 平均需要242次嘗試, 從而導(dǎo)致了比特幣的專用集成電路(application specific integrated circuit, ASIC)問題, 即大量設(shè)備被設(shè)計(jì)用于做礦機(jī)的芯片, 導(dǎo)致巨大的計(jì)算硬件浪費(fèi)[8]. 由于現(xiàn)行區(qū)塊鏈技術(shù)存在的諸多瓶頸, 導(dǎo)致區(qū)塊鏈技術(shù)并不適用于目前的物聯(lián)網(wǎng)或者金融系統(tǒng). 本文通過改變區(qū)塊鏈的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)并使數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)成為共識(shí)算法的一部分, 實(shí)現(xiàn)區(qū)塊鏈高效處理大量交易的目標(biāo).
在區(qū)塊鏈的3種經(jīng)典共識(shí)算法PoW中, 能實(shí)現(xiàn)去中心化的區(qū)塊鏈中心目標(biāo), 但需消耗大量的硬件資源, 而PoS共識(shí)算法為了解決該問題提出了采用股權(quán)證明機(jī)制, 但該共識(shí)算法可能導(dǎo)致?lián)碛袡?quán)益的用戶有過大的權(quán)利而影響區(qū)塊鏈工作. PoS共識(shí)算法在一定程度上是基于PBFT算法設(shè)計(jì)的, PBFT算法能避免PoW共識(shí)算法中的算力浪費(fèi)問題, 但該算法達(dá)成共識(shí)的時(shí)間較長(zhǎng), 不利于區(qū)塊鏈項(xiàng)目在短時(shí)間內(nèi)處理大量交易, 這是由傳統(tǒng)的鏈?zhǔn)浇Y(jié)構(gòu)導(dǎo)致的. 因此本文提出使用有向無環(huán)圖結(jié)構(gòu)取代傳統(tǒng)的鏈?zhǔn)浇Y(jié)構(gòu), 基于這種數(shù)據(jù)結(jié)構(gòu)的共識(shí)算法能更好地在短時(shí)間內(nèi)處理大量交易且不必占用過多的計(jì)算資源. 因此, 該算法適用于醫(yī)療大數(shù)據(jù)服務(wù)系統(tǒng)[9]或車載自組網(wǎng)系統(tǒng)[10].
圖1 常見的區(qū)塊鏈結(jié)構(gòu)Fig.1 Normal blockchain structure
PoW算法的核心思想是通過分布式節(jié)點(diǎn)的算力競(jìng)爭(zhēng)保證數(shù)據(jù)的一致性和共識(shí)的安全性. 其中每個(gè)區(qū)塊的結(jié)構(gòu)中都包含了上一個(gè)區(qū)塊的Hash值, 從而形成鏈狀結(jié)構(gòu), 交易被以Merkle樹的形式組織. 圖1為區(qū)塊鏈常見的區(qū)塊結(jié)構(gòu), 比特幣項(xiàng)目的區(qū)塊就采用了這種結(jié)構(gòu). 其中, Nonce為一個(gè)隨機(jī)數(shù), 礦工Bob在收集交易單并打成塊后, 對(duì)區(qū)塊頭部進(jìn)行Hash運(yùn)算, 只有在計(jì)算結(jié)果開頭0的位數(shù)滿足當(dāng)前區(qū)塊鏈要求且當(dāng)前沒有其他礦工比Bob的計(jì)算更快時(shí), Bob才可將該區(qū)塊發(fā)布至區(qū)塊鏈網(wǎng)絡(luò)中, 其他礦工則負(fù)責(zé)同步這一區(qū)塊, 此時(shí)Bob需等待后續(xù)的6個(gè)區(qū)塊生成, 如果這6個(gè)區(qū)塊附著在該區(qū)塊后, 則該區(qū)塊確認(rèn)添加至區(qū)塊鏈中, 礦工Bob獲得獎(jiǎng)勵(lì).
以太坊在前期均采用PoW共識(shí)算法初始積累權(quán)益, 而后期以太坊則轉(zhuǎn)向PoS共識(shí)算法, 通過權(quán)益證明機(jī)制縮短達(dá)成共識(shí)的時(shí)間, 并在一定程度上解決了PoW算力浪費(fèi)的問題, 因此比特幣后的許多區(qū)塊鏈項(xiàng)目均采用了PoS共識(shí)算法. 在PoS共識(shí)機(jī)制中, 由系統(tǒng)中具有最高權(quán)益而非最高算力的節(jié)點(diǎn)獲得記賬權(quán), 其中權(quán)益體現(xiàn)為節(jié)點(diǎn)對(duì)特定數(shù)量貨幣的所有權(quán), 成為幣齡或幣天數(shù)(coin days)[11]. 在采用PoS共識(shí)機(jī)制的區(qū)塊鏈項(xiàng)目中, 礦工所獲得的收益獎(jiǎng)勵(lì)主要來自于用戶交易.
采用PoS共識(shí)算法的區(qū)塊鏈項(xiàng)目前期需使用PoW共識(shí)算法公平分配權(quán)益, 在一定程度上仍會(huì)導(dǎo)致算力浪費(fèi), 且PoS共識(shí)算法并不能解決區(qū)塊鏈技術(shù)在處理大量交易時(shí)效率較低的問題, 從而導(dǎo)致基于PoS共識(shí)算法的區(qū)塊鏈技術(shù)不能應(yīng)用在物聯(lián)網(wǎng)或金融系統(tǒng)中.
實(shí)用拜占庭算法[12-13]用于解決分布式系統(tǒng)中各節(jié)點(diǎn)達(dá)成共識(shí)的問題, 當(dāng)系統(tǒng)中錯(cuò)誤節(jié)點(diǎn)少于1/3時(shí)系統(tǒng)可達(dá)成共識(shí). 該算法分為如下3個(gè)階段.
1) pre-prepare: 主節(jié)點(diǎn)向所有備份節(jié)點(diǎn)發(fā)送準(zhǔn)備消息, 此時(shí)節(jié)點(diǎn)狀態(tài)為pre-prepare;
2) prepare: 包括主節(jié)點(diǎn)在內(nèi)的所有備份節(jié)點(diǎn)在收到準(zhǔn)備消息后, 確定無誤, 向外廣播消息, 并且進(jìn)入prepare階段;
3) commit: 當(dāng)收到若干來自其他副本的prepare信息后即可進(jìn)入commit階段.
PBFT算法相對(duì)PoW算法計(jì)算簡(jiǎn)單, 不需要消耗大量計(jì)算資源, 但如果在大規(guī)模的區(qū)塊鏈網(wǎng)絡(luò)中使用, 其通信量會(huì)急速上升導(dǎo)致出現(xiàn)系統(tǒng)瓶頸[14]. PBFT算法并不能解決區(qū)塊鏈處理區(qū)塊時(shí)的效率低問題[15].
圖2為一個(gè)基于ID分類的有向無環(huán)圖結(jié)構(gòu). 該數(shù)據(jù)結(jié)構(gòu)的主要功能是建立高效的生成區(qū)塊機(jī)制. 基本區(qū)塊結(jié)構(gòu)由ID塊、 交易塊和起始?jí)K組成. 在該區(qū)塊鏈系統(tǒng)中, 每個(gè)用戶都可以擁有多重身份, 用戶既可作為交易方尋求與他人交易, 也可作為礦工幫助其他用戶認(rèn)證交易塊. 其中, 每個(gè)用戶都擁有一個(gè)獨(dú)立的ID, 當(dāng)用戶注冊(cè)并進(jìn)入?yún)^(qū)塊鏈系統(tǒng)時(shí)即產(chǎn)生一個(gè)與該ID相關(guān)的ID塊, 交易塊附于相對(duì)應(yīng)的ID塊后, 負(fù)責(zé)記錄每筆交易的內(nèi)容. 而起始?jí)K是所有ID塊的父節(jié)點(diǎn). 通過基于ID分類的有向無環(huán)圖結(jié)構(gòu)可實(shí)現(xiàn)所有礦工能在同一時(shí)間生成區(qū)塊而不必等待其他礦工打包區(qū)塊, 該機(jī)制從根本上解決了區(qū)塊鏈無法應(yīng)用于短時(shí)間內(nèi)處理大量交易的問題. 圖2中箭頭表示區(qū)塊的先后附屬關(guān)系, 在每個(gè)ID塊的后續(xù)區(qū)塊都應(yīng)根據(jù)雙方的交易筆數(shù)有序地附著在區(qū)塊后, 標(biāo)號(hào)為0的區(qū)塊即為起始?jí)K, 其為所有ID塊的父節(jié)點(diǎn), 其中A/B/C/D為ID塊,BA為用戶ID為B的用戶與ID為A的用戶產(chǎn)生交易的交易鏈起始區(qū)塊(區(qū)塊結(jié)構(gòu)為交易塊, 但交易內(nèi)容為空),BA1為B與A之間的第一筆交易. 圖2中的4位用戶可同時(shí)開展交易并等待礦工簽名完成即可確認(rèn)區(qū)塊, 不需像PoW類共識(shí)算法等待6個(gè)區(qū)塊才能確認(rèn)區(qū)塊. 通過這種基于ID分類的有向無環(huán)圖結(jié)構(gòu)能有效提升區(qū)塊鏈項(xiàng)目處理交易的效率.
ID塊的內(nèi)容包括身份編號(hào)、 公鑰和數(shù)字簽名, 其中ID編號(hào)為有向無環(huán)圖中交易塊分類的標(biāo)準(zhǔn), 其子節(jié)點(diǎn)記錄的交易塊內(nèi)容為該ID擁有者與其他用戶交易的記錄. 同時(shí), ID塊中存儲(chǔ)的內(nèi)容可用于證明該ID擁有者的身份, 并能輕松被他人驗(yàn)證.
系統(tǒng)中的每個(gè)用戶擁有一個(gè)公開的包含一系列交易的區(qū)塊鏈, 交易塊內(nèi)容包括交易塊身份編號(hào)、 交易發(fā)起方身份編號(hào)、 交易發(fā)起方數(shù)字簽名、 交易接收方身份編號(hào)、 交易接收方數(shù)字簽名、 前一區(qū)塊身份編號(hào)、 前一區(qū)塊Hash值、 Merkle樹根節(jié)點(diǎn)值、 前一區(qū)塊礦工簽名列表、 交易內(nèi)容、 剩余簽名次數(shù)、 本區(qū)塊礦工簽名列表、 礦工獎(jiǎng)勵(lì)列表、 區(qū)塊完成時(shí)間. 其中交易塊ID編號(hào)表明交易塊所處區(qū)塊鏈中的位置, 交易雙方簽名用于確保交易內(nèi)容為真, 前一區(qū)塊信息用于礦工比對(duì)交易塊位置, Merkle樹記錄當(dāng)前區(qū)塊礦工簽名列表, 但只保留根節(jié)點(diǎn)值(如果同時(shí)有兩組礦工完成區(qū)塊出塊, 則擁有更小的Merkle樹根節(jié)點(diǎn)值的區(qū)塊完成區(qū)塊出塊操作), 避免了不同礦工之間不能公平獲得挖礦機(jī)會(huì)的問題, 如果剩余簽名次數(shù)為0, 則表明該交易塊正處于完成礦工簽署階段等待被同步至區(qū)塊鏈網(wǎng)絡(luò)中, 或該區(qū)塊已經(jīng)簽署失敗, 此時(shí)需交易發(fā)起方重新組織區(qū)塊發(fā)布至區(qū)塊鏈網(wǎng)絡(luò)中等待簽署.
起始?jí)K是所有ID塊的父節(jié)點(diǎn), 本身不記錄信息, 用于維持整個(gè)區(qū)塊鏈的有向無環(huán)圖結(jié)構(gòu).
交易塊生成算法主要分為三階段: 第一階段由交易雙方生成交易單并完成創(chuàng)建起始交易塊, 對(duì)交易塊的交易內(nèi)容進(jìn)行簽名以保證交易塊的合法性; 第二階段即礦工驗(yàn)證區(qū)塊并簽名階段, 礦工簽名完成即表示完成對(duì)交易塊內(nèi)容合法性的確認(rèn); 第三階段則是最后一位參與簽名的礦工將第二階段完成的交易塊廣播至整個(gè)區(qū)塊鏈網(wǎng)絡(luò), 所有節(jié)點(diǎn)同步新的區(qū)塊, 至此交易成功并被記錄至區(qū)塊鏈中.
在第一階段中, 交易雙方需要協(xié)商并完成對(duì)交易內(nèi)容的簽名, 完成簽名后, 由交易發(fā)起方創(chuàng)建區(qū)塊, 完成交易區(qū)塊的主體結(jié)構(gòu)后將交易塊廣播至區(qū)塊鏈網(wǎng)絡(luò)中, 等待被礦工簽名并驗(yàn)證合法性, 最終生成的區(qū)塊需要被附著到交易發(fā)起方所在ID區(qū)塊的鏈上.
在第二階段中, 礦工需要完成對(duì)第一階段生成的初始交易塊的簽名驗(yàn)證工作:
1) 礦工端首先檢查rst字段, 如果該字段值為0, 則該區(qū)塊(T-Block)被拒絕并廣播給網(wǎng)絡(luò)中的其他礦工, 這一區(qū)塊在該礦工端的交易塊生成算法終止, 表示為
(1)
其中:m為區(qū)塊信息;T-Block為區(qū)塊; Forward( )函數(shù)表示廣播區(qū)塊;Tpbml表示區(qū)塊進(jìn)行第二步操作; pbml為前一區(qū)塊的礦工簽名列表;
2) 檢查前一區(qū)塊礦工簽名列表, 如果該礦工的ID出現(xiàn)在此列表中, 則說明該礦工已參與過該區(qū)塊的簽名, 此時(shí)區(qū)塊應(yīng)該被拒絕并廣播給網(wǎng)絡(luò)中的其他礦工, 這一區(qū)塊在該礦工端的交易塊生成算法終止;
3) 判斷已簽名礦工ID(p)是否出現(xiàn)在前一礦工簽名列表中, Serch( )函數(shù)表示如果發(fā)現(xiàn)存在已簽名礦工ID與前一礦工簽名列表中的礦工ID匹配成功, 則說明存在礦工違反操作規(guī)則的情況, 區(qū)塊被拒絕并廣播給網(wǎng)絡(luò)中的其他礦工, 這一區(qū)塊在該礦工端的交易塊生成算法終止, 表示為
Tcheck=Search(msl,pbml,p),
(2)
其中msl為本區(qū)塊礦工簽名列表;
4) rst值自減1, 表示為
rst=rst-1;
(3)
5) 通過區(qū)塊中交易雙方的公鑰驗(yàn)證雙方簽名是否合法, 如果簽名合法性驗(yàn)證失敗, 則礦工拒絕簽名并將區(qū)塊廣播給網(wǎng)絡(luò)中的其他礦工, 這一區(qū)塊在該礦工端的交易塊生成算法終止, 表示為
Tsignature=Ω(CheckSign(T-Block,ga,Pub-keya),CheckSign(T-Block,gb,Pub-keyb)),
(4)
其中:Ω表示對(duì)雙方簽名驗(yàn)證結(jié)果的校驗(yàn)函數(shù); CheckSign( )函數(shù)表示對(duì)礦工簽名合法性驗(yàn)證;ga,gb分別為交易雙方數(shù)字簽名; Pub-keya,Pub-keyb分別為交易雙方公鑰;
6) 檢查區(qū)塊是否被放在正確的位置, 如果檢查失敗, 則拒絕區(qū)塊并將區(qū)塊廣播給網(wǎng)絡(luò)中的其他礦工, 這一區(qū)塊在該礦工端的交易塊生成算法終止;
7) 依次檢查礦工簽名列表中其他礦工的簽名是否合法, 如果任意一個(gè)簽名驗(yàn)證失敗, 則該區(qū)塊簽名失敗, 拒絕該區(qū)塊并將其廣播給網(wǎng)絡(luò)中的其他礦工, 這一區(qū)塊在該礦工端的交易塊生成算法終止;
8) 礦工對(duì)該區(qū)塊進(jìn)行簽名, 使用橢圓曲線數(shù)字簽名(ECDSA)方式通過區(qū)塊m、 隨機(jī)數(shù)r及私鑰Keyprivate生成數(shù)字簽名(m,g), 表示為
Tsign=ECDSA(m,r,keyprivate)=(m,g);
(5)
9) 礦工需確認(rèn)自己是否為最后一位參與簽名的礦工, 即檢查待簽名人數(shù)(rst)字段, 如果rst≠0, 則該礦工不是最后一位參與簽名的礦工, 該區(qū)塊則廣播給網(wǎng)絡(luò)中的其他礦工, 該礦工對(duì)這一區(qū)塊的工作完成, 表示為
(6)
10) 若該礦工為最后一位參與簽名的礦工, 則需檢查簽名失敗次數(shù)是否符合設(shè)計(jì)要求(不能多于2次), 如果簽名失敗次數(shù)超過2次, 則宣告該區(qū)塊簽名失敗, 此時(shí)應(yīng)通知交易發(fā)起方重新組織區(qū)塊, 表示為
(7)
q=10-count(msl),
(8)
其中: msl為礦工獎(jiǎng)勵(lì)列表中的礦工ID; count( )函數(shù)用于統(tǒng)計(jì)數(shù)量;q表示失敗次數(shù);
11) 最后一位礦工創(chuàng)建一個(gè)獎(jiǎng)勵(lì)列表以標(biāo)明每位參與簽名礦工的獎(jiǎng)勵(lì), 當(dāng)他完成了該項(xiàng)工作時(shí), 區(qū)塊正式生成并添加至區(qū)塊鏈中, 每位區(qū)塊鏈中的全部節(jié)點(diǎn)記錄這一區(qū)塊.
在第三階段中, 已經(jīng)簽署完成的區(qū)塊由最后一位參與簽名的礦工廣播至區(qū)塊鏈網(wǎng)絡(luò)中, 每位參與該區(qū)塊簽名的礦工此時(shí)得到獎(jiǎng)勵(lì), 如果最后一位礦工在獎(jiǎng)勵(lì)發(fā)放部分作弊, 則每位參與簽名的礦工都可向區(qū)塊鏈網(wǎng)絡(luò)中廣播最后一位礦工作弊的信息, 如果超過1/3的參與該區(qū)塊簽名的礦工發(fā)布該信息, 則該區(qū)塊簽名過程中作弊礦工的獎(jiǎng)勵(lì)作廢, 并由參與簽名前兩位礦工生成交易塊, 將作弊礦工的失信信息作為交易內(nèi)容存儲(chǔ)于區(qū)塊鏈中. 由于本系統(tǒng)采用有向無環(huán)圖結(jié)構(gòu), 記錄礦工失信信息并不影響后續(xù)區(qū)塊的生成, 因此不會(huì)對(duì)交易塊的高效處理產(chǎn)生影響.
3.2.1 有向無環(huán)圖結(jié)構(gòu) 該算法中采用的數(shù)據(jù)結(jié)構(gòu)有別于有向無環(huán)圖結(jié)構(gòu), 是在有向無環(huán)圖的基礎(chǔ)上根據(jù)用戶ID再進(jìn)行分類. 這種數(shù)據(jù)結(jié)構(gòu)能保證所有用戶均可在同一時(shí)間創(chuàng)建起始區(qū)塊, 而不必如傳統(tǒng)區(qū)塊鏈那樣等待其他區(qū)塊生成完畢后才獲得機(jī)會(huì)生成區(qū)塊, 并且在生成區(qū)塊后, 不需要如PoW共識(shí)算法那樣需連續(xù)6個(gè)區(qū)塊的確認(rèn)才能保證區(qū)塊成功添加至區(qū)塊鏈系統(tǒng)中.
3.2.2 獎(jiǎng)勵(lì)機(jī)制 在PoW類型的區(qū)塊鏈共識(shí)算法中, 獎(jiǎng)勵(lì)機(jī)制是基于礦工挖礦的速度決定獎(jiǎng)勵(lì)值, 只有計(jì)算最快的那個(gè)礦工可獲得獎(jiǎng)勵(lì), 而其他參與計(jì)算的礦工則浪費(fèi)了算力資源. 本文算法中區(qū)塊生成后參與簽名的礦工都可獲得獎(jiǎng)勵(lì), 且不以簽名的先后次序決定獎(jiǎng)勵(lì)值, 從而避免了PoW類型的區(qū)塊鏈共識(shí)算法中由于礦工競(jìng)爭(zhēng)而導(dǎo)致的資源浪費(fèi).
3.2.3 安全性 由于算法中同一組礦工不能在1 d內(nèi)一起簽署超過一個(gè)區(qū)塊, 因此當(dāng)惡意礦工控制多個(gè)用戶時(shí)也不會(huì)影響區(qū)塊鏈系統(tǒng)的整體運(yùn)行. 該機(jī)制同時(shí)也保證了每位礦工挖礦的公平性, 不同于PoW類型的區(qū)塊鏈共識(shí)算法中擁有更多計(jì)算能力的礦工可獲得簽署區(qū)塊的權(quán)利, 在本文算法區(qū)塊鏈系統(tǒng)中, 所有活躍的礦工均可公平地獲得簽署區(qū)塊的權(quán)利.
3.2.4 出塊效率分析 不同于PoW類型共識(shí)算法, 本文算法中參與簽名的礦工只在計(jì)算Merkle樹時(shí)會(huì)占用計(jì)算資源, 顯著低于PoW共識(shí)算法, 且不同于PoS共識(shí)算法中根據(jù)用戶具有多少權(quán)益決定出塊權(quán)利, 因此本文算法減少了投票的步驟, 同時(shí)保證了礦工參與挖礦過程的公平性.
綜上所述, 針對(duì)傳統(tǒng)區(qū)塊鏈算法存在效率低和大量資源浪費(fèi)的問題, 本文提出了一種將區(qū)塊鏈設(shè)計(jì)成有向無環(huán)圖結(jié)構(gòu), 并通過設(shè)計(jì)區(qū)塊生成共識(shí)算法將礦工簽名與區(qū)塊存儲(chǔ)結(jié)構(gòu)相結(jié)合的算法, 解決了現(xiàn)存區(qū)塊鏈項(xiàng)目在面對(duì)大量交易時(shí)效率較低的問題, 同時(shí)節(jié)省了計(jì)算資源. 該算法能快速處理大量交易, 并支持全體用戶在同一時(shí)間進(jìn)行交易同時(shí)生成區(qū)塊, 解決了現(xiàn)存區(qū)塊鏈項(xiàng)目中礦工由于等待其他區(qū)塊生成所需耗費(fèi)更多時(shí)間的問題. 不需要采用PoS類算法的區(qū)塊鏈項(xiàng)目通過選舉產(chǎn)生記錄區(qū)塊權(quán)力的方法, 因此本文算法比PoS類算法能更公平且高效地生成區(qū)塊.