冒海波 嚴競雄



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