史 磊,李林峰
(山西省信息产业技术研究院有限公司技术中心,太原 030012)
重大突发疫情可造成公众生命健康的损害,极大地影响社会的正常运行。从2002年的“非典”、2009年的新型H1N1流感、2014年的埃博拉病毒以及2019新冠COVID-19等等事件可以看出,重大突发疫情事件主要有如下特点:一是传播的快速性、广泛性。尤其是当今时代下,交通非常便利,人员跨区域流动频繁,使得疫情多地区、全球性的传播极为容易;二是危害的严重性。这类事件不但对人的生命健康有严重影响,而且对全球的经济、政治、文化都会产生严重的影响;三是治理的复杂性。疫情治理需根据国情综合考量,既要尽快控制疫情,又要尽可能保障社会、经济的稳定运行。因此,研究及时有效的应对策略及实施方法是非常必要的。传统的信息系统对于已发生过的疫情能起到预警作用[1],而新的病毒由于在小样本时临床识别困难,临床与临床、科研与临床交互不足,很容易失去控制的最佳窗口时间,因此需要构建一个有效共识机制来应对重大突发疫情事件。
对于已经发生过的疫情,由于病毒的特征、病毒的防治手段已被人们了解并掌握,临床医师比较容易识别和应对,能够详实填报疫情数据表,审核也会很快通过,数据分析信息系统很快能得出结果,决策部门对于防控的部署也就有把握。而新的病毒则反之,疫情发生初期上述各种情况均不明晰,各个医院之间也存在信息沟通不畅的现象。一方面,医师或医院为避免误报就需要积累一定量的病例。上报后,上级部门需组织专家实地调研,进行毒株的获取、基因组测序分型等一系列科学研究过程;另一方面随着病毒传播速度指数级的增长,疫情控制决策的难度也就越来越大。
从2002年广东有力抗击“非典”和2014年肆虐非洲的埃博拉病毒等经验可以分析出抗击疫情成功的要素:1) 确定疫情首例发生地;2) 临床医生敏锐发觉异常、及时隔离病患及追踪密切接触者;3) 专家、学者、临床医师及时地交流并达成共识;4) 及时发出有影响力的预警。由上述分析可知,疫情始发地的一线临床医生,对于异常病例的专业性判断,捕获首个病例起着非常重要的作用。同时专家的及时跟进和权威性判断以及主管部门对于疫情防控的把握都是关键性因素。因此,面对突发疫情需要解决的问题是,当异常病例在任何地方的医院或医疗机构被发现时,需要有一个足够权威的专家团队,可以在新病毒始发地达成远程共识,足以引起医疗、卫生界同步的重视,使疫情危害降到最低。该系统要使临床医师、相关专家学者、卫生界决策者在起始时刻即行协作,判断病毒的类型、来源,探讨控制方法,并贯穿始终。
目前已有的疫情防控系统,主要基于病例大样本的数据分析。在疫情初发期,由于样本数据不完善或样本数不足,并且其识别过程中专家、临床科研缺乏在线的互动,疫情遏制时机不好把握。而突发疫情的防控,仅有单纯性的信息技术系统是不易达到预期的目的。
区块链将是继互联网之后的又一次新的信息化革命,并在一定程度上可改变现有的生产关系。2019年习近平在主持政治局学习时强调,要把区块链作为核心技术自主创新的重要突破口[2]。至此,区块链上升为国家重大战略。本研究整体运用区块链技术,引入分布式存储技术,充分发挥共识机制作用,可让广大的临床医师、专家学者以及决策者参与在一个共识系统中,这就相当于在任何疫情始发地均有一支强有力专业团队在及时控制、把握着局面。
区块链发展目前经历了三个阶段:1) 比特币为代表的货币区块链技术为1.0;2) 以太坊为代表的合同区块链技术为2.0;3) 实现完备权限控制和安全保障的Hyperledger项目、EOS等代表3.0.比特币是由系列概念和技术作为基础构建的数字货币态系统。以太坊将数字货币与智能合约相结合,对金融领域更广泛的场景和流程进行优化的应用。现阶段区块链的应用领域扩展到人类生活的方方面面。袁勇等[3]对区块链技术的各个层面以及智能合约做了详尽的研究。高政风等[4]对区块链共识算法进行了比较研究。目前,区块链在医疗方面的应用,大多是在现有技术系统上,利用区块链进行局部的改进,而且主要应用于已有固定样本数据的溯源,如基于区块链的档案管理,部分原因是没有解决大量数据的存储问题。目前利用区块链共识机制对突发疫情的不明病例进行交互式判断尚处于前期阶段。
由区块链改变生产关系的本质特点可知,区块链技术可以将人与事、人与人紧密地联系在一起,并且产生一种信任关系,而这种信任关系,正是及时准确地把控重大疫情时所迫切需要的。系统基本架构如图1所示。
图1 系统基本架构Fig.1 System architecture
2.1.1共识机制
共识机制是系统的核心要素。区块链具有去中心化、不可篡改、价值传递的特点,分布在不同区域的节点共同参与决策并形成交易,在一定时间内,多个交易信息形成一个数据块,通过密码学将数据块关联起来,而这些决策规则的核心就是共识机制[6],示意图如图2所示。区块链的分布式结构可改变业务的协作关系,所有业务都是由相关参与方共同进行验证、协调和同步的,保证各节点数据的一致性和准确性。
图2 区块及区块链结构示意图Fig.2 Block and blockchain structure
2.1.2数据不可篡改
系统信任传递数据是由数据的一致性与不可篡改来保障的。非对称加密和哈希算法保证不可篡改。在区块链网络上,节点采用共识算法来维持数据层的一致性,也就是分布式数据库的数据的一致性;采用密码学中的非对称加密和哈希算法,来确保这个分布式数据库的不可篡改和可追溯性。
2.1.3可追踪溯源
系统的时间戳技术用于可追踪溯源。在疫情辨识达成共识时,可以准确地追溯到首例患者而便于疫情控制。同时,利用时间戳技术可以公正、透明地奖励有功人员,便于激励机制的实行。在系统中,每一个新区块生成时,都会被打上时间戳,包括文件的摘要日期和时间、数字签名。当需要追踪溯源时,因为每个区块对用户都是可见的,根据时间戳就可很方便找到首例病例及发布人。
2.1.4数据文件存储
系统采用IPFS可解决数据存储难题。数据存储是区块链的重要技术,区块链的中的每一个区块的大小只有几MB,链上的数据传输越来越多,会导致区块数量快速增加,而这样可能造成交易堵塞,全节点存储整个区块的数据需要巨大的存储空间。同时,在系统中,评审病患症状及病毒相关数据文件以达成共识是必备要素。因此,媒体内容、前端页面及区块数据存储问题的解决是系统正常运行的必备条件。设计采用默克尔树(Merkle Tree)构建的IPFS分布式存储来存储数据文件[7]。Merkle Tree可以快速归纳和检验大规模数据的完整性,其树状的完整数据结构,在其叶顶点中有来自数据块的哈希值,只要树中的任一个节点被篡改,根节点哈希值就会变化而不匹配,从而可以达到校验目的。存储在IPFS网络节点上的数据是被切分成若干的数据块并且经过加密后,再分散到不同的节点中进行存储,这样就保证了系统中数据的安全。
区块链的类型基本分为公有链、联盟链和私有链等,具体特征如表1所示。公有链上全网公开,无用户授权机制,高度去中心化。私有链只有一个组织机构能控制其写入、读取以及查询交易权限。联盟链的各个节点通常有与之对应的通过授权的实体机构组织。
表1 区块链基本类型及比较Table 1 Basic types and compare of blockchain
在区块链系统当中,共识机制能够解决区块链在分布式场景下达成一致性的问题。共识机制有:工作量证明机制(PoW),代表工作越多收益越大;股权证明机制(PoS),按照持有资产来进行分配;委托股权证明机制(DPoS),选举出一些节点做为代表来记账。
根据上述分析,疫情防控需要建立一个由临床医师、专家学者、决策者等同时参与的互动系统,使得在疫情初期,即使个别医院的小样例,也能够通过分布式网络汇集大量专业人员发现异常的病例,快速启动初步反应机制,使在疫情爆发前就能采取协调配合的专业行动;同时,对于各地临床医师提供的不完整的病患样例,通过共识机制,形成完整的特异样例特征,且容易得到一定数量的样本,消除了单个医疗机构的信息孤岛现象,再加上专家的分析、科研的配合,在区块链上迅速综合起来判定是否突发疫情。系统基于区块链可实现去中心化分布式系统,为加快反应速度以及安全性考虑,采用联盟链作为区块链主干,如图3所示。考虑到临床医疗发现异常病例的重要性,以临床医师、专家、医卫主管人员为一个交互群体建立一支主链,大学、科研单位为科学研究团队通过跨链技术与主链交换信息。侧链的关键是双向锚定机制,在链内是由共识机制来达成交易,在链之间由智能合约作为对接的要素。本文研究以主链展开分析。
图3 系统拓扑图Fig.3 System topology
从公平和节约能源的考量,共识机制方面选用DPoS.在DPoS共识机制下,为保证运算的效率,并不是每个人都能参与记账的。PoW和DoS虽然名义上是完全去中心化的,但实际上还是少数的几个超大型矿池基本包揽了它们大部分的算力。在公众认可的公链中,前21个超级矿池基本包揽了他们各自97%左右的算力。同时,奇数个数的生产者能够保证最长链只有一条,所以DPoS共识机制出于去中心化和性能之间的平衡的考量,通过设置21个超级节点、49个备用节点,从而达到整体系统效率的提升。
系统采用委托股权证明(DPoS)机制的石墨烯技术。在目前已知的去中心化共识算法中,只有该算法经证明可以满足区块链上应用程序的性能要求。该算法可以精确地每0.5 s产生一个区块,每秒处理交易数(TPS)可达到2 000,并且在任意时间仅有一个生产者获权生产区块。如果在预定的时间没有产生区块,则跳过该块。21个区块生产者(超级节点),每一轮都有一个特定的生产者负责生产6个区块,即一轮为63 s,共产生126个区块。如果一个生产者错过生产一个区块,并且在过去24 h均未产生过区块,则会被从区块生产者名单中剔除,用这种方式排除不可靠生产者,从而确保网络的顺畅运行。因为生产者生产区块的方式是合作而非竞争,因此通常不会产生分叉。如果出现分叉,则共识算法的处理方式是自动切换到最长的链上。
为了增强系统的可靠性,引入带有异步拜占庭容错机制的DoPS共识算法。添加了aBFT-DPoS共识算法,需要所有区块生产者签名所有区块,但禁止同一个区块生产者签名两个时间戳或高度相同的区块。一旦一个区块被15个区块生产者签名,那么这个区块就可以被视为不可逆。一旦任何区块生产者签名了两个相同时间戳或相同区块高度的区块,这种不诚信行为就会留下密码学证据。在这一模型下,不可逆的共识将在1 s内达成。
参与系统运行的节点由临床医师、专家、高级别专家、决策者组成。在不同阶段,由具有不同权限的节点达成相应的共识。决策者全程参与,密切关注整个预警过程,对于事情的发生、发展、严重性、病毒传播速度有一个完整的认识,为线下采取的部署方式打下良好基础。
系统运行可分为相互关联的7个进程,各个进程由智能合约触发,智能合约由相应权限节点达成的共识启动,智能合约驱动下的系统运行机制如图4所示。
图4 智能合约驱动下的系统运行机制 Fig.4 System operation mechanism driven by smart contract
第一进程:不明病例上报。
当主链上某个临床医疗机构或临床医师发现可疑病例,尽管上报数据不全面、特征不详尽,但可以以广播的方式及时在主链上发布不明病例。
第二进程:疫情识别。
主链上的临床医师和专家在确认的区块上看到疑似病例时,就可以进行分析,用投票的方式发出自己的判断,随着同一节点或不同节点相近病例的增加,逐步达成初步共识。设定在线节点具有投票权的临床医师或专家有51%以上达成疫情共识,启动专家组进行疫情确认。这时自动启动临床医师警示,以广播的方式发出临床医疗卫生内部线上预警。医疗部门的医师可以立即加强防护,避免医护人员的感染。疫情达成共识后,可以根据区块链时间戳及可篡改技术追溯到首个病例及始发地,迅速隔离病患,并追踪隔离与病患密切接触的所有人员,尽快从源头上遏制病毒的传播。这个过程中,管理部门决策者只是密切关注,并不影响专业人员的判断过程。
第三进程:疫情再确认。
专家组进行疫情级别判定,设定在线节点具有投票权的专家51%以上达成疫情确认共识,启动科研侧链。临床提取的毒株供专门机构病毒分型、基因测序分析,进行基因比对,以尽快发现病毒中间宿主,找到病毒来源,控制病毒的发散路径。科学研究组提取毒株、基因测序、病毒分型后,得出严重性结论后,通过智能合约反馈到专家级,专家组共识判断严重,区块链自动向所有节点发出一级预警。这一过程中,管理部门决策者继续关注,线上不轻易发表意见,以免干扰专家组的判断。
第四进程:警示级别确认。
高级别专家组和管理部门决策者进行疫情警示级别确认,设定在线节点具有投票权的专家和管理者各51%以上,达成疫情级别确认共识,触发科研侧链全方位支持主链。
第五进程:疫情管控。
高级别专家组和管理部门决策者进行管控投票,设定在线节点具有投票权的专家和管理者各80%以上,则向社会发布,实施相应级别管控。
第六进程:主侧链互动。
主链侧链在病毒分型和基因测序的过程中不断互动,形成疫情控制动态共识,同时侧链进入疫苗研发阶段。
第七进程:激励机制。
在疫情发生或刚刚过去时,人们警觉性和参与防疫的积极性较高,但随着时间的推移,再加上参与人员新老迭代,对于疫情的警惕性就逐渐降低。这时根据区块链不可更改的有时间序列的记录,可以自动追溯到“吹哨人”以及所有对疫情控制有功的人,由智能合约能公平、透明、及时地给予线内有功人员晋升和奖励,保障了系统长期有效运行。
第七进程:“穿透式”监督和决策共识。
系统中的疾控行政管理人员全程参与,从首个异常病例出现到医师、专家以专业性的共识和预警持续观察,容易对专业人员预警达成共识,对决策共识过程实现穿透式监督和业务谙熟。
交易是一组操作的集合,投票也是一种交易。投票通过使用已安装和解锁的客户端来签署。每个客户端分配一个账户,账户拥有Owner权限和Avtive权限,对应的都是一串公钥,如果此公钥有对应的私钥则有对应的操作权限。钱包是保护和利用密钥的客户端。投票机制及运行安全通过通证(Token)来维持。通证是一种可流通的加密数字权益证明,其作用是保证了一个区块链项目的安全性,增加作恶成本。在这里利用通证作为激励手段,奖励踊跃提供异常病例、投票达成共识以及维持系统运行的节点。账户和钱包的关系如图5所示。
图5 账户与钱包的关系Fig.5 Relationship between account and wallet
在系统运行中,常见的操作是异常病例广播交易和投票机制。投票发起人可在客户端发起投票,任何人都可以公开查询投票的结果。异常病例广播交易是某节点在发现异常病例时,就信任的主节点发起病例数据交易申请,进行全网广播,最接近的主节点依次进行交易验证,达到主节点数15个以上则交易确认,交易成不可逆。这时,每个节点根据形成的区块都得到了该异常病例的数据。然后据此可以进行投票。投票机制是区块链为每个节点创建一个数字钱包,某个节点就信任的主节点发起投票申请,其他经过授权的用户如果同意,就用其钱包向该主节点传送一个Token,区块链记录并确认这笔交易,该主节点进行投票统计。投票的结果超过51%则触发智能合约。智能合约实现了一个自动化且透明的投票应用。
智能合约是一种计算机协议,旨在以数字方式促进、验证或执行合同的谈判或履行。智能合约允许在没有第三方的情况下执行可信交易。系统的运行机制中智能合约相当于现实中的法律。智能合约是自动化的程序合同,智能合约包含了有关交易的所有信息,反过来说,交易本身其实就是目前使用最广的智能合约,符合设置的程序条件后触发自动执行。
本系统达成共识的主要智能合约(即交易)如下:
合约1:临床医师有独立发表不明病例的权利,信息发布后系统内的所有人均能查看。
合约2:系统内临床主任医师及专家以上的人有投票权,如果对于某一类似的异常病例有超过51%的人投票,则形成新疫情共识。
合约3:专家组成员对新疫情进行审核性判定,有超过51%的人投票,则形成内部预警共识,联动疾控上报系统。
合约4:疾控管理者与高级别专家80%以上达成共识,向主管部门发出预警,触发科研跨链。
合约5:提供异常病例并被确认的临床医师可在系统内晋升为具有投票权医师;参与捕捉异常病例并成功的参与者均可获得奖励。
其中,合约1的发布形成了一个交易,被记录在区块链中。当发布的交易形成突发疫情所具有的特征(包括从数量上和特征一致性上),专家发起针对具备此特征的交易(疫情)投票,投票节点数超过一半,则形成交易1,同时触发第二进程,其它进程同理。
为了保证合约1的数据被第二进程合约2使用,引入智能合约数据库。同样,在第三进程中也使用智能合约数据库,以保证前面投票的结果可以为此进程所用,以此类推。智能合约数据库用于持久化的场景需求。一个操作在执行时会有上下文变量出现,包括事务机制的处理,这些内容会使用链上分配的内存资源,而如果没有持久化技术,当执行超过作用域时,就会丢掉这些上下文数据。在智能合约被执行完毕后所占用的内存会被释放。程序中所有的变量都会丢失。如果智能合约中要持久地记录信息,就需要将数据存储到智能合约数据库中。
智能合约[8]的使用过程包括:构建、部署、输入、执行。智能合约的构建包括实现的假设条件、输入参数、执行逻辑、输出结果等内容。部署将构建的智能合约代码部署在分布式共识系统中。输入作为智能合约代码执行的基本信息源。根据合约逻辑执行基于输入的智能合约代码并反馈正确可信的执行结果。智能合约写在区块链上的程序中,由超级节点来运行。智能合约还定义了接口以及实现接口的代码。这些智能合约代码被编译成字节码形式超级节点来执行。区块链保存了所有智能合约的记录。每一个智能合约必须实现李嘉图合约,从而绑定法律相关条款。李嘉图合约指的是人与机器都能读懂的合同,相当于一份法律文件,规定与智能合约发出的每个操作相关的被法律约束的行为。这样就构建了一个可读的文档,带有可验证的数字签名以及与每条记录链接的不可伪造的标识符,可以保证描述的内容是否确实经过签约各方的同意,并且是当事人签署的,这使得每个可能的操作都关联,增加了共识的可靠性[9]。
智能合约并不强调不可更改性,主要强调的是链上的发布和出块节点执行。对智能合约的更新只需要使用重置合约命令再发布一次即可。区块链上的争议由核心仲裁法庭机制执行,可以对错误或者有问题的账户进行冻结[10]。
部署合约时就产生一笔交易。每笔交易都存储在区块链上。这些交易每个人都可以看到并进行验证。智能合约会定期逐条遍历每个合约内包含的状态机、事务以及触发条件;满足的事务被推送到待验证的队列中,等待共识[11]。共识时每一个验证节点首先进行签名验证,确保事务的有效性;验证通过的事务会进入待共识集合,等大多数验证节点达成共识后,事务会成功执行并通知用户。事务执行成功后,状态机会将合约的状态标记为完成,并从最新的区块中移除该合约[12]。智能合约是“执行合约条款的计算机交易协议”。区块链上的所有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全漏洞在内的所有漏洞都可见,并且可能无法迅速修复。运行前的形式化验证是解决智能合约安全问题的重要手段,形式化验证是指利用精确的数学手段和强大的分析工具在合约的设计、开发、测试过程中验证智能合约是否满足公平性、正确性、可达性、有界性和无二义性等预期的关键性质,提高合约的可靠性和执行力,在合约上链前进行形式化验证可避免一些常见的安全漏洞。
在共识机制下,区块链技术的安全性、可信性、可回溯性的特点将事件发展的进程实时地展现在相关专业人员面前,使他们能够积极地密切跟踪、相互配合、同步跟进,所以极大地缩短了判断疫情的周期,提高了判断的精准性,具体表现在:
1) 疫情不明时群策群力的共识;
2) 在毒株获取、病毒分析溯源时的临床与科研的线上交互;
3) 在疫情确认后的追踪溯源。这种新技术比传统技术系统具有速度更快、准确度更高的优势。本预警区块链与科学研究区块链可进一步形成跨链深入互动,下一步也可与传统疫情信息系统进行衔接,并与大数据协同,形成疫情防控分布式多维网络,使得防控决策把控性大大增强,有利于开展针对突发重大疫情的专业化行动,及时保护医护人员和广大民众的生命安全,维护社会稳定。