冒海波 嚴(yán)競雄
摘要:該文介紹了區(qū)塊鏈中常用的幾種共識機(jī)制,并分析其優(yōu)缺點(diǎn)。結(jié)合我國的醫(yī)療體系層級結(jié)構(gòu)的特點(diǎn),設(shè)計(jì)一個(gè)基于DPOS分類選舉共識機(jī)制,將醫(yī)療機(jī)構(gòu)分為醫(yī)院型和社區(qū)型,每個(gè)節(jié)點(diǎn)選舉時(shí)需分別進(jìn)行投票,投票結(jié)束從這兩類中選取投票總數(shù)前N個(gè)節(jié)點(diǎn)作為見證者節(jié)點(diǎn),通過該選舉方式能有效避免大型機(jī)構(gòu)壟斷選票,更有利于去中心化。
關(guān)鍵詞:區(qū)塊鏈;醫(yī)療;DPOS共識機(jī)制
中圖分類號:TP301.6? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2021)36-0165-02
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
隨著我國電子醫(yī)療體系建設(shè)的不斷發(fā)展,當(dāng)前各醫(yī)療機(jī)構(gòu)信息化水平不斷提高,從城市的大型醫(yī)院到鄉(xiāng)鎮(zhèn)的衛(wèi)生所,患者的醫(yī)療信息記錄都已實(shí)現(xiàn)電子化,但各醫(yī)療機(jī)構(gòu)間數(shù)據(jù)不可共享,數(shù)據(jù)孤島化給患者就醫(yī)和醫(yī)生診斷帶來不便,尤其是老齡化嚴(yán)重的鄉(xiāng)鎮(zhèn)地區(qū)。區(qū)塊鏈技術(shù)的應(yīng)用不僅能有效解決數(shù)據(jù)共享問題,還能有效保證醫(yī)療數(shù)據(jù)的安全[1]。當(dāng)前區(qū)塊鏈技術(shù)應(yīng)用到醫(yī)療中還有許多問題需要研究和解決,共識機(jī)制作為區(qū)塊鏈技術(shù)的核心[2],在醫(yī)療數(shù)據(jù)應(yīng)用中需要結(jié)合當(dāng)下的醫(yī)療體系結(jié)構(gòu),本文介紹了區(qū)塊鏈的幾種常用共識機(jī)制,并分析其優(yōu)缺點(diǎn),然后選取DPOS機(jī)制作為醫(yī)療數(shù)據(jù)區(qū)塊鏈的研究對象,設(shè)計(jì)基于DPOS分類共識機(jī)制。
1 區(qū)塊鏈共識機(jī)制
區(qū)塊鏈的共識算法分類標(biāo)準(zhǔn)有很多,從2009年中本聰發(fā)布比特幣開始[3],區(qū)塊鏈發(fā)展至今已經(jīng)到了3.0版本,版本的區(qū)分主要是依據(jù)區(qū)塊鏈的共識機(jī)制算法。目前在區(qū)塊鏈中使節(jié)點(diǎn)保持一致的共識算法主要有PBFT、POW、POS、DPOS等。
1.1 PBFT
1999年,Liskov等人首次提出了PBFT實(shí)用拜占庭容錯(cuò)算法[4],該算法提出時(shí)還沒有區(qū)塊鏈的概念,但以其容錯(cuò)性和高性能等特征,越來越多地應(yīng)用于區(qū)塊鏈中。該算法主要分為客戶端請求、主節(jié)點(diǎn)PRE-PREPARE、副本節(jié)點(diǎn)PREPARE、主副節(jié)點(diǎn)COMMIT和REPLY流程,能容忍整個(gè)系統(tǒng)中有三分之一的作惡節(jié)點(diǎn),在較少節(jié)點(diǎn)的情況下有不錯(cuò)的性能,這有助于會(huì)降低分叉的幾率,但隨著節(jié)點(diǎn)數(shù)的增加,性能會(huì)很快下降。
1.2 POW
比特幣作為區(qū)塊鏈1.0,其采用的POW(Proof of Work,工作量證明)共識機(jī)制是基于算力來求解滿足一定條件的HASH值[5],優(yōu)先解出的節(jié)點(diǎn)就具備有區(qū)塊打包的權(quán)利并獲得出塊獎(jiǎng)勵(lì),POW共識機(jī)制中的惡意節(jié)點(diǎn)需要51%以上的算力才可能破壞數(shù)據(jù)鏈,具有安全性高和充分去中心化等特點(diǎn),但在挖礦中耗費(fèi)了大量的電力,且出塊時(shí)間長、數(shù)據(jù)處理量低等,不適合現(xiàn)實(shí)大部分應(yīng)用場景。
1.3 POS
POS(Proof of Stake,股權(quán)證明)共識機(jī)制首先應(yīng)用在點(diǎn)點(diǎn)幣中[6],該算法的權(quán)益指參與節(jié)點(diǎn)對特定數(shù)量貨幣的所有權(quán),根據(jù)節(jié)點(diǎn)所持有的幣齡(幣的數(shù)量×持有時(shí)間)來作為選舉籌碼,籌碼越多作為區(qū)塊打包的節(jié)點(diǎn)概率就越大,POS縮短了共識達(dá)成的時(shí)間,減少了算力和能源消耗,但容易存在個(gè)別節(jié)點(diǎn)權(quán)利過高而降低去中心化,從而導(dǎo)致安全隱患等。
1.4 DPOS
DPOS(Delegated Proof of Stakw,股份授權(quán)機(jī)制)在POS機(jī)制基礎(chǔ)上中引入了“見證節(jié)點(diǎn)”的概念[7],目前該機(jī)制應(yīng)用在EOS中。每個(gè)持有股份的節(jié)點(diǎn)都可以投票選舉見證者節(jié)點(diǎn),得到總同意票數(shù)的前N位,N必須滿足至少一半的參與投票者相信已經(jīng)去中心化,然后隨機(jī)選取這N個(gè)節(jié)點(diǎn)進(jìn)行區(qū)塊打包并驗(yàn)證確認(rèn)。DPOS機(jī)制更去中心化,縮短了確認(rèn)時(shí)間,但容易存在節(jié)點(diǎn)壟斷投票等問題。
從以上區(qū)塊鏈的這幾種共識機(jī)制發(fā)展來看,隨著人們對區(qū)塊鏈技術(shù)的深入研究和應(yīng)用,這些共識機(jī)制在算力、去中心化、性能以及安全性等方面的對比如表1所示。
2 醫(yī)療共識機(jī)制設(shè)計(jì)
2.1 醫(yī)療機(jī)構(gòu)節(jié)點(diǎn)分類
我國醫(yī)療體系結(jié)構(gòu)層次分明,按照行政等級依次分為省屬醫(yī)療機(jī)構(gòu)、地級市醫(yī)療機(jī)構(gòu)、各區(qū)縣醫(yī)療機(jī)構(gòu)、城市社區(qū)醫(yī)療機(jī)構(gòu)以及鄉(xiāng)鎮(zhèn)醫(yī)療機(jī)構(gòu)。各機(jī)構(gòu)間的醫(yī)療水平、醫(yī)療設(shè)備以及規(guī)模存在差異,數(shù)量也與行政級別成反比,如果采用傳統(tǒng)的DPOS共識機(jī)制進(jìn)行選舉,會(huì)出現(xiàn)選票大部分投給規(guī)模大、醫(yī)療水平高的醫(yī)療機(jī)構(gòu),這顯然不利于去中心化,如果一直被幾個(gè)大型醫(yī)療機(jī)構(gòu)壟斷選票,極容易對醫(yī)療數(shù)據(jù)的安全造成極大隱患,因此為了選舉出來的見證節(jié)點(diǎn)更有利于去中心化,按照規(guī)模和行政級別將其分為醫(yī)院型節(jié)點(diǎn)和社區(qū)型節(jié)點(diǎn),如圖1所示。
2.2 DPOS分類共識機(jī)制設(shè)計(jì)
各個(gè)醫(yī)療機(jī)構(gòu)作為一個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)除了選舉見證節(jié)點(diǎn)外,同時(shí)還可以作為競選節(jié)點(diǎn)。首先由各個(gè)節(jié)點(diǎn)投票選舉出見證節(jié)點(diǎn),然后由見證節(jié)點(diǎn)進(jìn)行醫(yī)療數(shù)據(jù)區(qū)塊的上鏈與驗(yàn)證任務(wù),整個(gè)流程如圖2所示。
在此方案中,系統(tǒng)會(huì)根據(jù)醫(yī)療機(jī)構(gòu)層級將每個(gè)節(jié)點(diǎn)進(jìn)行屬性標(biāo)記為醫(yī)院型節(jié)點(diǎn)或社區(qū)型節(jié)點(diǎn),在選舉時(shí)每個(gè)節(jié)點(diǎn)都必須投票兩次,一次是投票選出醫(yī)院型節(jié)點(diǎn),另一次則是投票選出社區(qū)型節(jié)點(diǎn)。投票結(jié)束之后會(huì)產(chǎn)生兩類的見證節(jié)點(diǎn),系統(tǒng)將分別從這兩類見證節(jié)點(diǎn)選取總票數(shù)前N個(gè)作為最終見證節(jié)點(diǎn),則此時(shí)見證節(jié)點(diǎn)數(shù)為2N,基于DPOS分類共識機(jī)制核心偽代碼如下:
for round i? ?//分成很多個(gè)round,round無限持續(xù)
vote_i1= get N delegates sort by votes? ?//選出投票數(shù)前N個(gè)醫(yī)院型節(jié)點(diǎn)
vote_i2= get N delegates sort by votes? ?//選出投票數(shù)前N個(gè)社區(qū)型節(jié)點(diǎn)
votes_i=vote_i1+ vote_i2? ? ? //將選舉出的另類節(jié)點(diǎn)合并
dlist_i = shuffle(votes_i)? ? ? ? ? ? ? //隨機(jī)改變順序
Loop? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//round完了,退出循環(huán)
slot = global_time_offset / block_interval
pos = slot %2 N
if dlist_i [pos] exists in this node? ?//delegate在這個(gè)節(jié)點(diǎn)
if generateBlock(dlist_i [pos).time>SystemSetTime //限定打包時(shí)間
skip
else
generateBlock(keypair of dlist_i[pos]) //產(chǎn)生區(qū)塊
else
skip
在每一輪(round)循環(huán)里,系統(tǒng)會(huì)重新統(tǒng)計(jì)兩類得票排名。在選出最高的2N個(gè)證人后,系統(tǒng)會(huì)將2N個(gè)節(jié)點(diǎn)打包區(qū)塊的順序打亂,這樣做的目的是防止存在惡意節(jié)點(diǎn)有計(jì)劃性地進(jìn)行分叉攻擊。每個(gè)見證節(jié)點(diǎn)需在系統(tǒng)分配的時(shí)間T內(nèi)打包區(qū)塊,超過限定時(shí)間T則區(qū)塊打包權(quán)限將交給下一個(gè)見證節(jié)點(diǎn),同時(shí)系統(tǒng)會(huì)對該節(jié)點(diǎn)進(jìn)行審計(jì),存在惡意行為將影響其參與下一輪的競選。
醫(yī)療數(shù)據(jù)區(qū)塊打包完成后還需要最終上鏈確認(rèn),只有最終上鏈才能達(dá)到數(shù)據(jù)不可篡改性。本次方案中借鑒POW機(jī)制中6個(gè)區(qū)塊確認(rèn)原則,之所以采取這種驗(yàn)證原則是基于每個(gè)接入的醫(yī)療機(jī)構(gòu)節(jié)點(diǎn)都屬于國家監(jiān)管機(jī)構(gòu),因此擁有一定的可信度。區(qū)塊的驗(yàn)證是由后續(xù)的打包區(qū)塊節(jié)點(diǎn)進(jìn)行,只有后面6個(gè)節(jié)點(diǎn)都完成驗(yàn)證和區(qū)塊打包,則該區(qū)塊完成最終上鏈。
2.3 性能分析
采用DPOS機(jī)制減少了記賬權(quán)爭奪,區(qū)塊的產(chǎn)生速度提高至2s~3s/區(qū)塊,相比于每10分鐘才產(chǎn)生一個(gè)區(qū)塊的POW機(jī)制與15秒產(chǎn)生區(qū)塊的POS機(jī)制有很大提升,且理論上每秒處理能力是數(shù)千筆交易數(shù)據(jù)[8],這與我國需要處理大量醫(yī)療信息的場景相適應(yīng),而在區(qū)塊的確認(rèn)上僅需要12s~18s,快于POW機(jī)制與POS機(jī)制的3600秒和225秒。
3 總結(jié)
在分析了區(qū)塊鏈中幾種常用的共識機(jī)制算法后,結(jié)合當(dāng)前醫(yī)療機(jī)構(gòu)的狀況,選取DPOS機(jī)制并改進(jìn)其算法,采取分類選舉模式。該機(jī)制基于DPOS的本身具有性能快的特點(diǎn),非常適合用于醫(yī)療數(shù)據(jù)區(qū)塊鏈的共識機(jī)制,同時(shí),驗(yàn)證階段基于節(jié)點(diǎn)存在一定的可信度,采取POW機(jī)制6個(gè)區(qū)塊確認(rèn)原則,不僅進(jìn)一步提升性能而且避免了選舉時(shí)票數(shù)的分化,進(jìn)一步利于去中心化。
參考文獻(xiàn):
[1] 韋安琪,陳敏.醫(yī)療衛(wèi)生區(qū)塊鏈技術(shù)應(yīng)用探討[J].中國醫(yī)院管理,2019,39(3):62-63.
[2] 薛騰飛,傅群超,王樅,等.基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)共享模型研究[J].自動(dòng)化學(xué)報(bào),2017,43(9):1555-1562.
[3] NakamotoS.Bitcoin:apeer-to-peer electronic cash system [EB/OL].(2008-10-31) [2018-05-25].http://www.bitco.org /bitcoin.pdf.
[4] Castro M,Liskov B.A correctness proof for a practical Byzantine-fault-? tolerant replication algorithm[R].Cambridge,MA:Massachusetts In- stitute? of Technology,1999.
[5] BitFury Group. Proof of Stake versus Proof-of-Work [M]. White Paper.https://bitfury. com/content/downloads/pos-vs-pow-1. 0. 2pdf. 20-15-09-13.
[6] Larimer D.Delegated proof-of-stake white paper [OL].(2014).http://www.? bts.hk/dpos-baipishu.html.
[7] ZHENG Z,XIE S,DAI H,et al. An Overview of Blockchain Technology:? ?Architecture,Consensus, and Future Trends [C]// An Overview of? ?Blockchainechnology:Architecure Consensus and Future Trend. IEEE? Computer Society, 2017.
[8] 武岳,李軍祥.區(qū)塊鏈共識算法演進(jìn)過程[J].計(jì)算機(jī)應(yīng)用研究,2020,37(7):2097-2103.
【通聯(lián)編輯:梁書】