期刊介绍
期刊导读
- 07/22今天讲一下医药界的黄埔军校
- 07/21刚获今年“医药界诺贝尔奖”提名,两款“神器
- 07/18关注英才大会|分子检测、人体再生 生物医药界
- 07/18医疗展区最早满馆!获“医药界诺贝尔奖”提名
- 07/18医药界176名富豪入胡润百富榜
基于区块链的医药防伪溯源系统研究(3)
图4链码结构图
其中代码层中的信息管理是为了与同一通道中的其他节点上的链码进行通信,并与客户端传来的命令进行交互,使链码中提供的节点地址被发现并通知;功能实现是根据系统功能需求编写代码实现药品信息的上传及查询。
管理命令层包含每一个操作对象的数据信息,链码名和通道名是此次操作命令需要指定的链码和通道;身份证明是指验证此次操作的用户身份,保证发起此次命令的用户是经过组织证书认证的;关键溯源信息则包括此药品从生产到使用的所有上传到区块链上的信息,或者是查询所需要提交的药品溯源码。
4.2.1 链码功能流程
Fabric的链码是客户端与Fabric网络之间的桥梁,本次医药防伪溯源系统设计中的链码使用Go语言开发。三个链码分别安装在不同组织的节点上,链码的功能包括上传药品信息、获取药品信息以及获取药品的交易记录。且安装在组织3节点上的链码还具有调用安装在组织1和组织2节点上链码的功能,以此来完成药品信息的溯源。
图5展示的是部署在组织3节点上的链码功能流程图。在链码部署成功后的实例化过程中会用到系统初始化Init方法,接下来是系统Invoke方法,主要功能是发起交易。在本次链码开发的Invoke方法下定义了功能类型functiontype、药品名称medicalname、药品数据medicaldata三个参数,功能类型对应以下四种接口的存储管理方法,针对此次系统设计所需要的四种功能:
(1)如果functiontype=putdata,则会使用Chaincode-StubInterface接口的PutState方法,此方法的功能是存储数据到Fabric账本中,负责接收并存储从客户端传递过来的药品使用信息的相关数据。
(2)如果functiontype=getdata,则会使用Chaincode-StubInterface接口的GetState方法,此方法的功能是从Fabric账本中获取指定数据,并将获取的数据交给链码处理,可以负责验证通过功能(1)存储的数据是否存在于Fabric账本中。
(3)如果functiontype=gethistory,则会使用Chaincode-StubInterface接口的GetHistoryForKey方法,此方法的功能是获取指定键的历史记录,此系统中以某个药品溯源码为指定键进行查询来获取此药品的历史记录。
(4)如果functiontype=getmedicalhistory,则会使用ChaincodeStubInterface接口的GetHistoryForKey方法和调用其他链码InvokeChaincode方法,前者功能与功能(3)一样,后者的功能是调用安装在组织1和组织2节点上的链码,以保证通过执行功能(4)就可以得到指定药品从生产到使用的全部数据信息。
图5链码功能流程图
如果功能方法不是以上四种,则直接返回空值;功能(3)和功能(4)执行后得到的键值数组切片要通过函数转换成json数组输出,以便后续数据在网页端的显示。
4.2.2 链码执行过程
系统功能的实现离不开链码的执行,药品的关键溯源信息也需要通过链码来存储和查询,在链码安装及实例化完成后,需要在终端或者客户端输入命令来调用链码。图6是链码执行的示意图,展示了在客户端发起药品溯源查询时链码具体的执行过程。
图6链码执行示意图
①消费者通过客户端发起药品溯源查询请求。
②客户端的Fabric-SDK获取消费者(查询发起者)的身份认证证书。
③客户端与peer节点建立连接。
④客户端发送交易提案给Fabric的peer节点,背书节点显示查询流程提案开始。Fabric侧发起对提案消息的验证,包括对组织身份、通道信息及链码地址的认证。首先验证通道报头信息,其次检查发起者的签名信息,包括对发起者组织身份是否合法的认证以及对签名存在是否正确的认证。最后验证链码信息,包括对报头信息及链码名称的验证。
⑤背书节点提供流程提案交易号txid,Fabric侧按交易号检索事务并构建新的交易模拟器,背书节点开始模拟提案并提供交易号txid及通道id。随后启动链码(若链码正在运行,则不需要重新启动),其包括执行、设置链码提议、发送执行消息、Fabric侧处理链码消息及发送状态消息事务等一系列操作。
⑥启动的链码根据交易提案查询对应的账本,从缓存中获取链码所需要的数据,获取完成后通知并退出。
⑦peer节点退出链码的调用过程,Fabric侧完成事务模拟/查询执行,退出查询流程提案。区块链上的节点返回相应的信息,完成查询过程。
4.3 Web服务及客户端开发模块
基于区块链的医药防伪溯源系统的前端界面主要包括查询入口界面及信息显示界面。其中模块开发程序的主要功能是负责处理消费者在客户端发送的请求,并与Fabric区块链进行交互。总体来说,Web服务及客户端开发模块的两个主要功能就是在后台进行逻辑处理并收集数据以及在前端界面合理简洁的显示数据。
文章来源:《医药界》 网址: http://www.yyjzz.cn/qikandaodu/2020/0718/368.html