冒海波 嚴競雄



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