图型区块链的分级医药溯源模型设计

【www.zhangdahai.com--其他范文】

李 莉,杨祉坤,张 超,吴 怡,陈云鹏

(东北林业大学 信息与计算机工程学院,黑龙江 哈尔滨 150040)

目前,现有医药溯源将所有药品统一化管理,主要有两种方式。一种是传统数据库的医药溯源方式,系统将所有相关医药溯源信息存放在中心数据库中,也就是中心记账。另外一种是利用区块链技术进行去中心化。单链区块链技术解决了中心化记账方式的信息存储安全等问题[1],但也不可避免拥有着自身缺陷,主要表现为:单链区块链吞吐率低以及可伸缩性不高,不能满足医药溯源的大数据量与大交易量的处理需求[2,3];
并且每个节点均需要存储所有的医药数据,存储开销较大,对节点设备要求过高;
此外,多条链之间无法进行信息交互,存在信息孤岛的现象。

为解决以上问题,本文在图型区块链(directed acyclic graph区块链,DAG区块链)基础上,构建出基于图型区块链的分级医药溯源模型。该模型改进了DAG区块链的数据层和共识层,提升信息验证效率,增大了吞吐量。并且在原有的图型区块链结构上加以改进,对区块链进行分区处理:在医药溯源信息存储前通过标志字段进行医药分级,实现不同级别医药信息存储在不同的区块链分区中。模型还将全网节点划分为主网络和多个子网络,以减轻节点存储压力。

1.1 传统区块链与图型区块链

2008年,比特币创始人中本聪发表了比特币白皮书,介绍了世界上第一个分布式加密货币,开启了区块链1.0。而以以太坊为代表的区块链2.0在智能合约系统的支撑下,拓宽了区块链的应用场景。智能化物联网时代的区块链3.0在行业应用方面体现了应用场景的较大差异,该时代下的区块链技术具备企业级属性,可以在更好地解决信任问题的同时,大幅提升系统的运作能力。

2013年,研究者首次提出将DAG算法[4]引入区块链中作为共识算法,即“GHOST协议”。DAG区块链虽然也是分布式账本技术,但不同于单链区块链。单链区块链的主要特征是会产生一条由区块连接形成的单链,而DAG区块链是从交易出发,生成一个有向无环图。两者在本质上都继承了分布式账本的优点。DAG区块链的最小单元是交易,先前的交易要被验证,后面的交易才能顺利进行,而验证结果则通过单元的形式记录下来。这也就使得DAG区块链具有了传统区块链没有的并行处理能力。

图型区块链结构如图1所示,其中G区块为创世纪区块,1~16区块为普通的存储医药信息区块,箭头指向表示每个区块加入DAG区块链网络时与前面已经存在区块的验证关系,其中15区块、16区块是未被后续验证的区块。

图1 图型区块结构

1.2 医药溯源与区块链吞吐量相关研究

关于医药溯源系统的研究,禹忠等设计了基于区块链的医药防伪溯源系统,此系统在超级账本(Hyperledger)的Fabric区块链平台上开发[5],将所有品类药品统一化管理,但仍然存在着数据量较大时,系统的吞吐率过低和单节点的存储开销大的问题。

为提高区块链吞吐量,现有3种解决方式:

(1)提高出块效率。Micali教授提出了Algogrand算法[6],算法改进了拜占庭共识机制,通过VRF产生委员会,并通过BA*产生一致性输出。

(2)变相增大区块大小。通过增大区块的大小也可以提高区块链的吞吐量,但网络延迟会随着区块的增大而提高,所以不能单纯地增大区块。康奈尔大学博士后Ittay Eyal等提出了bitcoin-ng协议[7]将大区块拆分成小区块。此外,针对增大区块大小的问题,康奈尔大学的 Elaine 教授提出了Thunderella 协议[8]。

(3)分片技术。Elastico[9]、Omniledger[10]等系统引入了分片技术,对系统进行水平扩容,减小单个节点的存储开销进一步提高吞吐量。

2.1 模型架构

2.1.1 分级模型整体设计

《中华人民共和国药品管理法》对药品按照性质进行分类,如中药材、中成药、抗生素、化学原料药及其试剂、放射性药品、疫苗、诊断药品等。本模型按照这种分类方法对医药进行分级,并对每一级的医药标准名称通过非对称加密算法进行处理,生成唯一的标识,该标识在本文中称为标志字段值。

模型把全网节点划分为主网络和多个分区子网络,主网络存储所有区块信息,各个子网络存储不同标志字段值的医药溯源信息,也就是每个子网络存储一种分级的医药信息。并且模型将这些子网络中的节点IP地址存储在Tag数据库中(该数据库存储数据为:医药属性标志字段和节点IP地址的对应关系),该数据库由全网节点共同存储。

该模型交互终端涉及4个组织:医药厂商、经销商、医院和消费者。业务逻辑图如图2所示。医药厂商将医药出厂信息(包括药材原材料的选取、医药加工过程、药品成分、出厂日期等)上传,模型根据上传医药名称到Tag数据库中查询该医药对应的标志字段值和存储该分级医药信息的子分区节点IP地址,将对应标志字段值与医药信息一同加密,并选取打包区块节点,被选节点打包区块上链存储并等待验证,验证后广播到全网。经销商与医院将医药发送到其他经销商、医院、消费者时,同样需要进行上述流程将流通信息交给相应的节点打包区块进行上链存储。消费者可通过指定终端查询某医药溯源信息。

图2 业务逻辑

2.1.2 DAG区块链分区设计

基于图型区块链的分区结构如图3所示。

图3 分区结构

(1)将医药溯源区块网络划分多个分区,方便用于医药溯源场景,减少存储开销。

本文建立在区块链网络分区技术的基础之上,并且将整个DAG区块链划分出一条主链和多个子DAG链。医药厂商的医药生产信息作为主链存储的信息,多个子链分别存储经销商或医院等中间商上传的不同标志字段值的医药信息区块。而整个网络环境中,主网络存储DAG区块链上所有区块,分区子网络存储主链信息和该分区标志字段值所对应的DAG子链。

(2)实现跨域信息交互,不同分区子网络节点进行交互。

跨域交互处理流程如图4所示,具体步骤如下:

图4 跨域交互

(1)发送跨域交互信息的节点查询Tag数据库,判定信息的标志字段值是否在数据库中。如果存在根据匹配的结果(目标分区子网络节点的IP地址)选取节点,并将信息发送给该节点,进行步骤(2)。否则抛出异常,终止交互。

(2)被选节点根据请求信息重新构建一个区块。

(3)分区子网络所有节点完成信息验证、信息广播以及信息存储。

2.2 区块结构设计

2.2.1 区块数据存储结构

区块解码后,其中信息包含如表1所示的字段。

表1 区块数据结构

在实际操作过程中,节点向网络发送一条溯源信息,需要提供以下参数:

(1)Autograph:每个节点拥有唯一的独有的私钥用于对请求上链的信息进行签名。得到的签名数据中包含本节点身份标志。

(2)Address:指定医药接收方公钥地址。

医药厂商、经销商、医院通过RSA算法(公私钥对生成算法)生成公钥和私钥,并根据公钥取值可以得出公钥地址。公钥生成地址算法如图5所示,具体步骤如下:

图5 公钥地址生成

1)将公钥依次进行SHA256、RIPEMD160运算得出公钥地址哈希值(Public Key Hash)。

2)将得到的哈希值直接在前端拼接版本号属性,生成21字节数据。

3)将本21字节数据(称之为A)复制生成21字节数据B。

4)数据B进行两次连续的SHA256。

5)取(4)得到的结果前4个字节数据与数据A进行拼接,得到25字节数据。

6)将(5)得到的数据进行BASE58编码操作得出最终的公钥地址(Address)。

(3)Count:指定医药流通的数量。

(4)Tag:标志字段。

(5)Message:医药溯源信息。其中包括医药敏感数据和非敏感数据。敏感数据是医药的生产过程中的核心资料,不可直接记录到区块链上,必须对其做一定处理,模型利用非对称加密算法对其进行加密。对于非敏感数据,即医药的基本信息和流通信息,无需加密,直接存储。

(6)MessageHash:溯源信息数据哈希值。运算公式如下(其中‖表示拼接)

HashData1=Hash(SentiveData)HashData2=Hash(InsentiveData)HashData=HashData1‖HashData2MessageHash=Hash(HashData)

(1)

在节点打包区块时还需添加以下关键数据:

父节点哈希值:当节点预将所生成区块加入DAG区块链网络中时,需选取两个网络中区块进行验证。验证成功后将两区块的信息分别进行SHA256算法运算,得到的两组256 bit数据作为本区块的父节点哈希值。

随机数与目标哈希:为了避免无代价攻击,区块在加入区块链网络前,要进行一次自我pow工作量证明运算。生成区块之前,需设置本区块的目标哈希值,即设置本次pow工作难度。目标哈希值越小,工作运算难度越大。区块不断设置随机数的取值,直到

Hash(区块数据+随机数)≤目标哈希值

(2)

此时的随机数为最终取值。

2.2.2 标志字段分区处理

选取字段Autograph和Tag作为分区标志。标志字段的分区处理流程如图6所示。

图6 标志字段处理

字段Autograph与Tag的处理规则是:

(1)加入对字段Autograph的检查,通过Autograph值判断该条数据是否为医药厂商上传。若是,则至(2);
否则至(3)。

(2)广播主网和分区子网节点更新网络,并且等待全网验证,验证后存储,处理结束。

(3)判断Tag字段是否是本节点应存储的Tag值医药信息。若是,则域内认证并广播等待验证、存储,处理结束;
否则至(4)。

(4)进行跨域交互,查询Tag数据库。若数据库中不存在该Tag值,抛出异常,处理结束;
否则至(5)。

(5)根据Tag数据库中该Tag值对应的IP地址,选取处理节点,被选节点进行打包区块、广播区块、等待验证、存储。

流程伪代码如下:

算法1:标志字段处理

输入:
Autograph,Address,Count

Tag,Message,MessageHash

输出:
isSendSuccess

//打包区块成功标志, sendData()的返回值

//sendData()表示打包、 上传区块

Begin

api;

If (Autograph == Manufacturer) do

information=transfer(Autograph,Address,

Count,Tag,Message,MessageHash);

Return sendData(information);

//判断是否为主链信息。

若是, 则打包区块。

Else if(Tag==nowTag)

information=transfer(Autograph,Address,

Count,Tag,Message,MessageHash);

sendData(information);

//判断信息标志字段值是否符合为本节点存储条件。

若符合, 则该节点打包区块。

Else if((ip=mysql(tagip)!=null)

newapi;

information=transfer(Autograph,Address,

Count,Tag,Message,MessageHash);

sendData(infomation);

Else

Throw anexception

//判断标志字段是否在Tag数据库中。

若在, 则选择节点打包区块;

否则抛出异常。

End;

2.3 共识机制

用户通过客户端发送溯源信息上链请求,直到信息确认,需要经过图7中所示流程。其中,从发送上链请求至创建区块由一个或两个节点完成,信息的存储、传播、确认由本子网全部节点共同完成。

图7 共识过程

发送上链请求的客户端(本节称为节点A)根据数据中标志字段确定存储网络位置。若存储位置为节点A所在子网络,后续操作由节点A完成;
否则交给存储位置所在网络的另一个客户端(本节称为节点B)进行处理。

节点A或节点B创建数据的基本信息后,通过MCMC算法选择本分区子链或主链的其它区块进行验证,验证结束后对该区块使用SHA256算法不断尝试不同的随机数值,直到哈希值小于目标哈希,最终创建好区块,即区块上链前节点进行自我pow运算。此过程与IOTA系统[11]相似。

模型规定一个区块要加入区块链网络,必须要验证已存在的两个区块,即需要证明这两个区块中的数据与已被确认的区块没有冲突。本模型使用MCMC的tips选择算法进行两个区块的选择。MCMC的tips选择算法是马尔科夫链与门特卡洛算法的结合。MCMC的tips选择算法的步骤如下:

(1)选择全部累积权重在[W,2W]之间的区块。W是个足够大的数。其中累计权重是指区块自身工作量证明难度值与所有证明该区块的区块工作量证明难度值的和。

(2)将N个粒子放到(1)中选中的区块上。

(3)粒子分别随机行走。行走指向区块网络中的tips。若当y区块证明了x区块,说明x能够转移到y。

(4)若y证明了x,Hx、Hy分别为区块x、y的累积权重,则粒子从x转移到y概率正比于exp(-α(Hx-Hy)), 计算公式为

(3)

其中,α为可调节参数且为正数。

删除很快到达tips的粒子,因为这些tips是懒惰的。找到最先到达tips的两个粒子。若两个tips没有冲突,则输出这两个tips;
否则,另选两个没有冲突的tips。

伪代码如下:

算法2:MCMC的tips选择

输入:block1,block2…blockn

输出:tips1,tips2

Begin

Particle[]particles;

//粒子在累计权重为[W,2W]的区块上分布

For(i=0;i

If(blocki.weight>=W&&blocki.weight<=2W)

particles.insert(blocki);

Foreach(particles)

//粒子根据转移概率随机行走

particles.randomWalk(Pxy);

If(firstParticle==tips&&secondParticle==tips)

//判断最先到达的两个tips是否包含信息冲突

If(!conflict(firstParticle,secondParticle))

break;

ReturnfirstParticle,secondParticle;

End;

模型用“确认置信度”来表示医药溯源信息区块被其它区块的接受程度。验证该区块的区块数与运行选择算法(MCMC)次数的比值为确认置信度,只有当确认置信度达到97%时,认为该区块是被完全确认的。

3.1 安全性分析

在模型运行期间可能存在大权重攻击,攻击者可凭借超强的计算能力对模型进行攻击。攻击者发布许多小型交易验证冲突交易,并且可能会操控大量“女巫”节点,不去验证末端交易,进而产生新的区块网络。针对该攻击本节进行以下分析:

W(n)为发布一个自身权重为3n的区块所需的工作量证明时间,并且是以μ3-n为参数的指数分布随机变量,其中μ是有关攻击者攻击能力参数。假设时间过去t0个时间单元,区块累计权重为w0以上,视为该区块被完全确认。经计算在t时刻区块累计权重H(t)公式如下

(4)

其中,h为节点打包上传区块的平均时间,W为勃朗函数。可得知累计权重的增长速度呈线性,速度为λw。λ为交易流入的速度,w表示一般交易的均值权重。那么在接受交易时合法分支的典型累计权重是

wl=λwt0

(5)

若攻击者发布的大权重冲突交易想超过合法分支的权重,应在t0内产生权重为3n0≥w1的冲突交易,其中

(6)

并且该事件发生的概率为

(7)

攻击者还可以寻找一个权重为3n(n>n0) 的冲突交易,合法分支的累计权重不超过3n,计算概率

(8)

下面分析自身权重不超过1时攻击的成功概率。假设G1,G2,G3…是以μ为参数的独立同分布指数分布随机变量,分别表示发布一个权重为1的交易工作量证明时间,期望值为μ-1,记为

Vk=μGk,k≥1

(9)

V1,V2,V3…是以1为参数的独立同分布指数分布随机变量。攻击者成功的条件是w0无意义交易所花费时间总和小于t0,其成功概率为

(10)

其中

φ(α)=-lnα+α-1

(11)

可得知,在调整阶段累计权重的增长小于λw, 所以通常情况下有

(12)

无论如何成功的概率不超过

(13)

进而验证本文模型具有很强的安全性,大权重攻击、女巫攻击可能会对本模型产生威胁,但都可以通过模型自身机制来实现预防。

3.2 分区子网节点存储开销测试

搭建好网络以后,首先向网络发送任意条数目溯源信息,启动4个分区网络节点并完成连接,即完成子网络存储初始化。分别针对表2中两种情况进行实验,两种情况各发出1500条信息(包括应存储在主链的医药出厂信息500条、应存储在4个不同子链的4种不同性质药品的溯源信息各250条)。对上链请求的发出者分情况测试,情况1的发出者为4种药品性质对应的子网络中的节点;
情况2的发出者均不是对应的子网络中的节点。

表2 实验条件

实验以情况1、情况2的顺序进行测试,并且记录各个子网络中某节点的数据库大小。

对子网络节点的数据库分析得出,各个子网络成功接收符合该子网络对应标志字段的250条数据以及500条主链信息。并且子网络有效隔绝了其它子网络中不符合本子网络数据规则的数据。图8为各个子网节点、主网络节点数据库接收数据前后的大小变化。主网络节点存储区块网络所有数据,所以其节点的存储开销较大,相比之下子网络中节点的存储压力大大减少。

图8 节点数据库大小对比

传统区块链溯源系统没有进行分区存储,其所有节点要存储区块网络的全部数据(相当于本实验中的主网络节点)。本模型划分了若干分区子网,每个分区子网的节点只需存储部分区块网络数据,减少了存储开销。

3.3 跨域测试

测试环境与3.2节中相同,子网络1存储中成药类药品信息,子网络2存储抗生素类药品信息,子网络3存储中药材信息,子网4存储疫苗信息。

子网络1中的节点A,预将抗生素类(设其标志字段为Tag 2)药品信息存储到区块网络中。节点查询Tag数据库,找到子网络2所有节点IP地址,并构建一个跨域区块。实验结果表明,子网络2中节点B成功接收到了节点A发送的信息,跨域交互成功执行。随着跨域数据量的增加,模型执行时间的变化如图9所示。从图9可以看出,随着数据量的增加,跨域交互的效率逐渐降低,与子网内部处理的情况相比,数据库的查询和区块信息的传递造成了额外的时间开销。

图9 时间开销对比

此外,本实验与传统区块链溯源模型也进行了随数据量增加,时间开销的对比。实验结果表明(如图9所示),在区块网络数据量较小时,传统单链区块链模型消耗时间较少,但随着数据量的增大,本文模型并未因跨域操作失去高处理效率的优势。

3.4 吞吐量测试

模型在4 核 1.5 Ghz CPU、16 GB内存的主机上进行测试。网络带宽40 M/S,操作系统为Ubuntu 14.04.1,评测指标包括吞吐率和确认延迟。在硬件情况完全相同的情况下,模拟用户行为使区块链网络不断接收事务请求。完成上链事务请求数以及确认延迟时间见表3。随着上链请求次数的增加,确认延迟时间也有所增长,但请求的平均响应时间符合用户需求,具有较好的网络响应效果,可以使用户获得良好的体验。

表3 请求数与响应时间

将本文模型与现有研究中其它针对提高吞吐量模型进行吞吐量以及性能比对,其中Algorand、bitcoin-ng、OmniLedger分别通过变相增大区块大小、把参与者分片以及将区块分为主区块和微区块两种角色来提升模型吞吐量。

在药品信息溯源的应用背景下,实验结果见表4。处于相同环境下,本模型吞吐量基本稳定在6400 TPS以上,相较比特币系统提升了910倍,相较其它模型的380 TPS、6000 TPS、5600 TPS的吞吐率也有较大提升。其它3种提升吞吐率的算法存在数据安全性高,易造成网络拥堵的缺陷。本文模型保证了效率,但是在链上区块较少时,验证速度相对较慢。

表4 算法对比

3.5 溯源信息验证效率测试

由于模型将DAG区块网络划分为多个分区,各个分区只存储相应标志字段医药溯源信息,查询时只需搜索对应分区,目标区块范围大大缩小。所以在保证溯源信息查询正确的前提下,验证效率也有所提高。

现有溯源系统查询命令发出后的平均响应时间为20 ms至25 ms。现与3.4节测试环境相同的情况下,进行查询的正确性与速度测试。实验结果如图10所示,图中横轴坐标代表当前查询为第几次请求,纵轴为当前查询响应时间,单位为ms。实验结果表明,本模型查询正确率为100%,每次查询的请求响应时间围绕16 ms上下波动。

图10 查询请求响应时间

方案基于对区块链溯源系统安全性、吞吐量以及节点存储开销的考虑,提出了多域下的DAG区块链模型。模型平衡了确认延迟和存储开销等制约因素,设计了标志字段的处理规则,实现了将DAG区块网络分区,并且将全网节点划分为主网络和子网络。实验结果表明,模型在具有良好的抗大权重攻击、女巫攻击的安全性基础上,有效减少节点存储开销,保证了模型高吞吐的性能。

猜你喜欢 分区医药权重 贵州省地质灾害易发分区图大众科学(2022年5期)2022-05-18权重望寡:如何化解低地位领导的补偿性辱虐管理行为?*心理学报(2022年5期)2022-05-16上海实施“分区封控”环球时报(2022-03-29)2022-03-29《医药导报》第十届编委会成员名单医药导报(2022年1期)2022-01-17《云南医药》杂志征订启事云南医药(2021年3期)2021-07-21古代医药文化大众传播方式概述中华养生保健(2020年1期)2020-11-16我国蒙医药法律保护的意义内蒙古民族大学学报(社会科学版)(2020年1期)2020-11-03权重常思“浮名轻”当代陕西(2020年17期)2020-10-28为党督政勤履职 代民行权重担当人大建设(2018年5期)2018-08-16权重涨个股跌 持有白马蓝筹证券市场红周刊(2018年3期)2018-05-14

推荐访问:溯源 区块 分级

本文来源:http://www.zhangdahai.com/shiyongfanwen/qitafanwen/2023/0705/620899.html

  • 相关内容
  • 07-05 2023年木偶奇遇记读后感1五篇(范文推荐)

    木偶奇遇记读后感(通用1)  品味完一本名著后,大家心中一定是萌生了不少心得,这时最关键的读后感不能忘了哦。可是读后感怎么写才合适呢?以下是小编为大家整理的木偶奇遇记读后感,希望能够帮助到大家。

  • 07-05 2023年度家长会学生家长发言稿(范文推荐)

    家长会学生家长发言稿  在日新月异的现代社会中,发言稿与我们的生活息息相关,发言稿特别注重结构清楚,层次简明。那要怎么写好发言稿呢?以下是小编为大家整理的家长会学生家长发言稿,欢迎大家借鉴与参考,希

  • 07-05 教育科学德育研究室工作计划

    教育科学德育研究室工作计划1  一、指导思想  以《xx市中长期教育改革和发展规划纲要(XX-20xx)》为指导,以推进《xx市“促进有效学习”课堂变革实验》项目为重点,深入开展“优秀教科研成果的推

  • 07-05 2023年教育奇迹读书心得体会

    教育的奇迹读书心得体会1  在四种人中,第一种人是最不幸的,由于他(她)没有抱负,没有搏斗目的,“不是我想念书,是怙恃硬要我来念书的”,没有抱负的人就如无源之水,无本之木,她的生命之泉将提早干涸,留

  • 07-05 基于切比雪夫一阶截断式的谱卷积协同过滤

    王嘉豪,梅红岩,刘鑫,李晓会(辽宁工业大学电子与信息工程学院,辽宁锦州121001)推荐系统(rec

  • 热门专题
  • 网站地图- 手机版
  • Copyright @ www.zhangdahai.com 大海范文网 All Rights Reserved 黔ICP备2021006551号
  • 免责声明:大海范文网部分信息来自互联网,并不带表本站观点!若侵害了您的利益,请联系我们,我们将在48小时内删除!