医疗数据区块链的共识机制研究
2021-03-07冒海波严竞雄
冒海波 严竞雄
摘要:该文介绍了区块链中常用的几种共识机制,并分析其优缺点。结合我国的医疗体系层级结构的特点,设计一个基于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.
【通联编辑:梁书】