叶 梓,孟宪伟
(安徽四创电子股份有限公司,合肥 230031)
2018年11月20日,交通运输部、国家发改委共同发布了24个第三批“多式联运示范项目”。可以看出“陆改水,散改集”已经是大势所趋,长江中航行的船舶也日益增多,内河海事执法部门的责任也随之增大。但是内河执法信息化建设相对滞后,信息化系统孤岛现象仍未改变,系统之间互相调用的安全性存在问题,也存在业务人员因为人情关系篡改执法结果的现象[1]。
区块链技术起源于中本聪2008年提出的比特币,随着比特币的应用人们发现点对点的网络、工作量证明、时间戳、加密技术等不仅仅可以运用于数字货币,也可以运用于其他领域。把这些技术综合提炼起来就提出了区块链的概念,可见区块链不是单一的技术,而是一系列技术的集合。因为区块链的不可篡改、价值传递和安全可信等特点[2],可以将区块链技术与内河航运相结合,解决执法过程中的安全性问题以及可审计问题
为了解决单体程序代码可读性、维护性差以及持续交付能力差的缺点,微服务技术主张将单一程序进行服务分割,拆分成一个个微型服务,每个微型服务之间互相没有影响,并使用轻量级机制通信(HTTP或者TCP)。服务按照业务功能划分架构,并统一进行部署和维护。这些微型服务可以使用不同的编程语言,以及不同的数据存储技术,以保证最低限度的集中式管理[3]。
微服务的主要体现以下方面的优势:一是将一个复杂的业务分解成若干小的业务,为每个服务拆成一个服务,将复杂的问题简单化。二是微服务系统具有强大的横向和纵向扩展能力,对于功能来说可以无限增加不同功能模块,对于性能来说可以增加相同的功能模块增强负载能力。三是微服务之间可以通过HTTP或者其他基于TCP的高效通信协议来进行通信,使得微服务可以采用任何的开发语言和技术来实现。可以选择最适合自己的开发语言和技术,提高开发效率,降低开发成本。四是减少了测试和部署的时间。每个服务单独部署,测试时只需要部署修改的那个服务,不用像单体应用一样部署整个应用。五是微服务在CAP理论中采用的时AP架构,即具有高可用和分区容错的特点。高可用体现在大量的微服务集群,实现了7*24小时不间断的服务。另外,分期容错也使得系统更加的健壮。
随着比特币、以太坊等区块链项目的落地,区块链共有链已经得到了充分的应用。但是私有链、联盟链等还没有推广起来,为了推动区块链跨行业的应用,2015年12月,Linux基金会宣布Hyperledger项目启动。超级账本自启动以来就吸引了广大的会员,不乏Cisco、IBM、Intel、Swift等重量级的企业。在这些会员的贡献下,超级账本项目也得到了快速的发展。目前来说超级账本的顶级开源项目包括Fabric(底层基础核心平台)、Blockchain Explorer(区块链浏览器)、Sawtooth(支持PoET的区块链平台)、Composer(面向链码的高级语言框架)以及Caliper(区块链平台性能测试工具)。
Hyperledger Fabric作为超级账本的第一个项目,是区块链的底层基础平台,包括会员制服务、区块链服务以及链码服务等。会员制服务为区块链的节点成员提供权限管理,包括注册、身份管理以及身份审核,从而将区块链的应用提升到企业、政府等私有或者联盟环境中。区块链服务为架构中的核心服务,包括区块生成、区块上链、点对点通信、账本管理、共识管理、信息加密等一系列区块链技术。链码服务,也就是以太坊中的智能合约,可以将业务与区块链相结合,可以用go或者java进行开发。同时fabric提供一系列开发语言包供开发者选择,包括java,python,go,js等。
图1 基于Hyperledger Fabric的内河航运执法管理系统总体架构图
内河航运执法管理系统系统架构如图1所示,包含账户管理模块、基础功能模块、智能合约模块、审计模块以及微服务网关五大模块。
(1)微服务网关。由于各地海事监管执法部门具有一定的独立性,除去共有的安全性较高的一部分数据(如执法数据)上链以外,大部分业务数据、基础信息数据都保持在各自的业务数据库中。
基于Hyperledger Fabric的内河航运执法管理系统将每个模块按照微服务模式进行开发,各自在各自的沙盒中运行,模块之间保证各自的独立性,每个微服务再通过微服务网关进行发布和维护。同时与各省海事部门业务系统的交互也通过微服务网关来完成。
(2)账户管理模块。其主要功能是管理内河航运执法联盟链中的成员。成员服务提供者(MSP)是一个为超级账本提供成员管理服务的组件。MSP抽象出了发行证书,验证证书,身份认证背后的加密机制和协议。一个MSP可以定义自身,以及验证与签名规则。一个Hyperledger Fabric区块链网络可以被一个或多个MSP管理。并提供了模块化的成员操作,以及兼容不同成员标准与架构之间的操作。
此外,该模块可以对不同身份的节点进行权限控制,权限可分为“公开”、“保密”或者其他密级等不同权限。联盟链上的成员通过预先设置好的权限,可以访问不同密级的通道信息。比如对于超级管理者节点来说,可以访问所有权限的通道信息,对于授权的节点则可以访问所授权的通道信息,对于普通的节点,则只可以访问订阅权限为公开的通道。
(3)基础功能模块。其主要实现了内河航运管理系统的核心功能,包括执法数据的上传、执法数据的下载、执法数据的查询以及执法数据的更新,所有的操作会通过联盟链进行行为存证。执法数据可以查询通过查询联盟链中的K-V数据库得到执法的当前状态信息,执法数据的下载则通过查询到的哈希值在各地的业务数据库中下载对应的执法数据(如执法过程的音频视频等),执法数据上传和更新则会将对应的执法过程(如执法地点、执法时间、执法人员、违法人员、执法结果等)进行打包,形成区块,然后连接成链,具体过程在下文会具体描述。
(4)智能合约管理模块。其主要是用来实现链上代码的存储、编译、执行以及更新。该模块使用Docker来存放链上代码,不需要依靠特定的虚拟机或编程语言,并作为一个容器为链上代码的执行提供了一个安全、轻便的环境。智能合约模块是内河航运执法业务与区块链的桥梁,有了该模块,具体业务就可以跑在区块链上。
(5)审计模块。其负载执法联盟链的核心操作,也就是操作记录的存储、查询及审计。首先执法信息的所有操作行为(包括查询、修改、增加和删除)按照一定规模进行统一打包上链,并在所有的节点上存证。对日志的审计行为则按照链检索的方法返回指定的操作行为,实现执法案件电子数据的事后审计。同时审计模块还承担执法数据操作的监管功能,会验证提交者的身份,检验该操作是否合法,对于没有群贤的操作行为,审计模块将予以禁止。
系统的总体执行流程如图2所示:
图2 基于Hyperledger Fabric的内河航运执法管理系统总体流程
(1)系统需要部署省际跨区域执法结果共享的联盟链,以省级海事局执法支队创建节点,并作为海事执法联盟链的联盟成员。联盟链的节点接入需要相应的权限,也就是省海事局执法单位接入联盟链需要节点证书来进行成员审核,从而实现了节点的接入控制。
(2)在联盟链上需要部署智能合约(fabric上面也称为链码),根据省际跨区域、营运船舶数据,形成记录省际跨区域执法的区块链智能合约,所述智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。
(3)当联盟链节点的发出执法结果数据更新请求时,智能合约将更新数据作为交易发送至共识服务打包成区块更新联盟链账本。
(4)根据各省的营运车辆数据,智能合约根据调用请求在联盟链节点存储的键值数据库中查找相关执法结果。
hyperledger中的节点分为三种:客户端(client)、对等节点(peer)以及排序节点(order)[6]。执法业务提交的处理步骤如图3所示:
图3 执法数据提交流程
(1)客户端(这里指执法终端App或者业务系统网页)发起提交违法案件处理状态的提案,之后每个对等节点上都会有一套账本,提案会在每个对等节点上基于该节点的账本进行模拟执行。
(2)模拟执行完毕后的结果会签名并返回给客户端,返回的内容叫做背书(endorsorment response),在这个环节中可以设定节点的背书策略(Endorsement policy),客户端收到足够的背书后,按照预先设定的背书策略,就会知道本次提案是否成功。
(3)如提案通过,则客户端通过sdk向排序节点发起更新申请。
(4)排序节点将更新申请按照账本状态排序,
排序完了没有问题,则会生成区块,实际上是一个确认更新的操作,这个操作会发给所有的节点,每个节点收到该操作后会同步数据,这样则把案件的更新处理状态进行上链。
在本系统设计中账本是有两套账的,一个是交易记录,也就是案件状态的更新过程;另一个是世界状态,也就是所有案件的当前处理结果。
系统中的内河航运执法数据包括执法的过程数据以及执法的状态数据,其中执法的过程数据包括执法编号、执法上传时间、执法地点、执法证据、执法人、违法依据、违法船只、违法企业、处罚结果等,而执法的状态数据字段与过程数据相同,但是执法过程数据对应着区块链中的区块数据(可以理解为区块链中的交易记录,比如甲的违法行为由发现变为立案侦查),表示执法的过程(比如案件的发现、立案、取证、处罚等过程),而执法的状态数据则对应着区块链中的状态数据(可以理解为区块链中的账户余额),表示了执法的当前处理结果。
本文提出一种新的基于Fabric的内河执法管理系统架构,详细分析了总体架构中的各个模块设计以及执法的总体流程,最后通过对某个核心业务的流程描述,避免了传统内河执法系统中心化结构带来的诸多安全隐患,系统操作数据以交易的形式存储在区块链账本中保证了数据的安全完整性以及可回溯性。由于区块链技术较新,发展较快,未来将继续深入开展区块链底层技术研究,将位置作为索引的一部分加入区块哈希中,可以利用位置对区块进行快速索引,从而对内河航运执法管理系统进行完善。