冷泽琪, 谭振江, 周 伟, 刘佳琳
(吉林师范大学 计算机学院, 吉林 四平 136000)
根据市场需求调研得知,从2008年到2020年,假药、假疫苗等事件层出不穷[1]。国民对医药的需求逐年递增。假药、劣药不仅给成年人带来了短暂性甚至是终身性的伤害,对老人和儿童也造成不可避免的创伤。因此,医药的质量安全成为国民最关心的问题之一,而基于区块链的溯源服务可以解决这一痛点问题。BlockVerify自2015年开始在伦敦提供对奢侈品、钻石和医药的溯源服务,提供的鉴别类型包括伪造品、调换品、被偷商品以及虚假交易[2];李娜等人设计了一种对数字证书的追溯平台,能够有效地对数字证书和电子签名进行追溯,从而达到防篡改的目的[3];刘金鹏等人提出一种基于区块链的二维码技术,应用于食品接触材料中塑料包装的溯源,加深了区块链技术对食品接触材料领域的研究[4];徐步龙等人对医院门急诊输液药房供应药品进行了统计分析,未标注药品追溯码的药品占11.8%,进而提出了一种基于区块链的解决建议[5]。
对于医药安全首先考虑的就是医药数据的真实性。医药追溯系统可以实现对药品生产、运输、销售等各个环节有关药品质量安全的数据进行真实可靠地记录和传递[6]。当前我国主要有二种医药追溯方式:一种是药企自己建立的药物追溯系统;另一种是第三方平台提供的追溯服务。无论是哪种溯源方式,数据均来自利益相关方存入的中心数据,那么就存在为了利益篡改数据的风险。同时,第三方服务与药企存在着企业因技术、人员等问题过于依赖于第三方服务、不能较好约束其行为的弊端。从上述分析可知,在目前大部分的溯源案例中,追溯信息仍存在不完整,且部分有追溯的产品价格比正常产品高出一倍,使得消费者望而却步。药物的安全和国民的健康存在巨大的安全隐患。
区块链是一个数据集,把数据打包成多区块,每一个区块是一个区块链数据集的子集[7]。区块与区块之间的数据相互关联形成逻辑上的链式结构。针对现有的医药安全需求很高,而传统系统数据真实性较低,见表1。如果将区块链技术应用到医药领域上,能够实现对医药的原料采购、生产、加工、流通等各个环节的全程追溯,能够解决各企业之间“信息孤岛”的问题,从而减轻医药的监管难度。
表1 传统溯源与区块链溯源对比
区块链分为块头和块身。块头主要包括:区块编号、时间戳、父哈希和Nonce值等元数据,块身的主要功能是存储数据。每一个区块只能以附加的形式加入,新增的区块与上一个区块只能通过哈希值(父哈希)链接,以“链”形式不断增加的区块就形成了区块链。区块链由所有参与节点共同维护,每一个节点可以通过定期与邻居节点交换信息使全局账本保持同步[8]。
区块链分为3类:公有链、私有链和联盟链。公有链对来自互联网的任何人都是公开的,参与者多为匿名,所有人都可以加入公有链网络进行交易,获取完整的账本记录和竞争记账权等权利;私有链由集中管理者管理限制,只有内部少数人可以使用,信息不公开,私有区块链与中心式记账差异并不明显;联盟链通常由多个组织或机构共同参与管理,并事先选取一些预选节点参与其共识过程[9],比较典型的是超级账本项目。联盟链具有交易速度快、可扩展性强等特点。本文选择Hyperledger Fabric 超级账本2.0作为底层开发平台。
智能合约的主要思想是将合约条款转化为计算机协议,在去可信第三方的环境中,让此协议作为合约各方的信任代理,从而高效安全地履行合约[10]。智能合约分为3个阶段:合约生成、合约发布和合约执行[8]。具体功能见表2。
区块链技术以密码学作为安全保障基础,由二个关键部分组成,即哈希算法和默克尔树。哈希算法是哈希函数去计算区块的头部信息或者交易信息的哈希值,将哈希值存储在区块中,下一区块存储上一区块的哈希值,形成完整的区块链结构[11];默克尔树是一个标准的二叉树,如果树上的一个节点被修改,那么该节点以下的信息将全部更新,拥有可溯源的特点。
表2 智能合约各部分功能
(1)Hash算法。哈希算法是一种单向密码算法,把长度不一的明文以不可逆的方式映射为长度固定的密文,密文即哈希值。常用的哈希算法有SHA-256、SHA-512等。大部分区块链使用的是SHA-256算法。
(2)Merkle树。由一个根节点、若干非叶子节点和叶子节点组成。它的叶子节点存储的是当前区块体中每一笔交易的哈希值,非叶子节点是对应子节点哈希值链接之后再进行哈希运算的哈希值[12],非叶子节点之间两两组合并重复运算,最终得出Merkle根。其优点见表3。
表3 Merkle的优点
从四川省“毒胶囊”事件、山东省非法疫苗案、再到天津市假药的“鬼市”和扬州假药事件,医药安全是目前最重要的问题之一。对于医药安全,首先考虑的是医药数据的真实性。传统的溯源系统的中心数据存在因利益等因素而被人为篡改的风险,很难保障医药数据的完整性和真实性。而区块链技术的分布式存储、账本公开透明等优势,能够保证所有节点共同监督与维护,为追溯数据提供了可靠性。国内成熟的基于区块链技术的医药追溯系统寥寥无几,区块链技术应用到医药领域具有很好的适用性与广阔的发展前景。
落地的区块链追溯案例很多,但大部分存在数据不完整的问题,在医药的供应链下游节点,很少参与到记录追踪中,从而缺失了医药的追溯的必然环节。本文提出的医药追溯区块链包括提供安全性的块头和存储医药数据信息的块体。区块头包括版本号、上一医药块的哈希值、当前的时间戳、Nonce等信息,每一个医药区块按照时间戳的顺序链接成医药区块链,链囊括了所有的历史交易记录,因此提供了完整的医药追溯。
本文采用区块链技术与RFID电子标签技术相结合,整体上来说,消费者通过扫描RFID标签得到溯源全程的数据。医药追溯系统的验证流程如图1所示。
图1 药物追溯流程
改变传统的溯源模式有助于提高医药安全性,结合区块链技术不可篡改、开透明等特点,本文建立了新型追溯系统组织架构。如图2所示。以医药为例,从药材原料厂、制药企业、运输、存储和销售全程记录追踪,让消费者不再觉得追溯只是“噱头”。
图2 追溯范围改进
追溯系统的区块链网络共分为4层:数据层、合约层、业务层和应用层,如图3所示。数据层中提供分布式账本维护、私有数据库维护,合约层即智能合约层,设计了现医药在供应链上下游流转过程中的追溯,对医药数据结构体和智能合约功能接口,包括医药生产合约、医药运输合约、医药销售合约等调用功能。业务层是应用程序的后端服务,设计了RESTful的接口、用户管理、Node.js.jdk,提供医药监测管理服务。应用层包括发布医药信息、用户登记、查询和节点注册等功能,可以实现用户账户管理和业务操作的功能。
除了药企自建的追溯系统外,第三方平台掌握着录入追溯系统的全部药物信息,一旦发生数据泄露事件,将严重影响到药企之间的公平竞争。为防止将系统内部的药物数据外泄,本文提出了多链业务架构,进行了授权节点和未授权节点账本对比,如图4所示。当同行企业存在隐私需求时,非授权节点PEER1不可访问该隐私数据,而授权节点则可以在不被影响的情况下继续访问该医药数据。本文设计的多链业务架构可以实现不同权限的节点访问的副本隔离,从而达到同行企业的隐私要求。
本文提出的基于区块链的医药追溯系统实现了一个原型系统。本文以复方氯酚烷胺片为例,实现的功能包括:药厂发布医药生产信息,发布医药的运输信息,发布医药的销售信息。消费者查询医药的生产信息和运输信息以及销售信息。
(1)药企发布医药的生产信息。发布医药信息是录入系统的重要环节之一,药企在发布信息时,将根据某一医药编号来补充完善。发布医药的生产信息界面如图5所示。
图3 区块链网络各层架构
图4 多链业务授权与未授权节点对比
(2)药企发布医药的运输和销售信息。本文提供追溯全程服务,包括录入生产、流通和销售的信息。在每个录入环节中提供了相关工作人员证明的新服务点,目的是当出现问题时,责任可以落实到个人。 发布医药的运输和销售信息界面如图6、图7所示。
(3)消费者查询医药的生产信息。在为消费者提供的查询服务中,只需输入医药编号,即可查到该药物生产、流通、销售数据等的全部信息。可以具体到生产日期、厂商和地址等,查询医药的生产信息界面如图8所示。
图5 发布医药生产信息界面
在查询医药的流通和销售中,包括追溯到的发货方、出库证明人员、物流和药店地址等数据信息。利用区块链技术对医药全面记录,有利于消费者对医药质量的信任,如图9和图10所示。
图6 发布医药流通信息
图7 发布医药销售信息
图8 查询医药生产信息
图9 查询医药流通信息
图10 查询医药销售信息
区块链技术赋予了追溯行业新的活力。利用联盟链的数据公开透明与隐私保护,本系统通过数据的同步验证,更新状态数据库,再通过每个交易请求的身份验证和有效的加密机制,能够将追溯的全部过程信息落实到个人,以便追责。它保障了追溯到的信息安全可靠,解决了一直以来的“难追溯”、“追溯信息不全”等问题。具有很高的扩展性,在医药以及其他领域中可以发挥更好的作用。