基于区块链的去中心化航空物流平台设计

2021-12-07 07:45王玙
电子设计工程 2021年23期
关键词:合约订单航空

王玙

(西安航空职业技术学院,陕西西安 710089)

随着我国互联网经济的发展壮大以及国际贸易的深入合作,我国的国民经济对航空物流业的依赖程度不断增强[1-3]。但我国现有的航空物流系统仍存在数据碎片化严重的问题,且类型多样、过度中心化、透明度缺乏和物流网络效率低下。随着我国物联网技术的落地,航空运输过程中有大量的数据随之产生。网络的接入使这些信息更容易被泄露和篡改,航空物流系统面临着潜在的安全风险[4-6]。

航空物流的体量大、参与方众多,且分布杂散,这与区块链的去中心化和分布式处理的特点高度吻合。采用区块链作为航空物流信息处理系统的支撑技术,能够实现物流信息的可追溯和数据透明,并且能够防止被篡改,最终提升物流行业的运营效率,降低社会流通成本。

1 理论分析

区块链技术是包括密码学、哈希算法、时间戳、智能合约、分布式存储、P2P 网络、Merkle 树等技术的一个技术合集,经历了以比特币为标志的1.0 代,以以太坊为代表的2.0 代,现在进入了可计算的3.0 时代。基于区块链3.0,可实现智能化物联网的广泛应用。区块链技术有4 个基础特点:去中心化自组织、操作透明、集体维护和可靠数据库[7-8]。区块链基础架构可分为3 层:共识层、网络层和数据层,其分布如图1 所示。

图1 区块链技术基础架构

区块链的数据结构如图2 所示。

图2 区块链的数据结构

区块链技术使用Kad 算法实现P2P 分布式网络,采用Socket 进行网络编程。每个节点均具备路由、数据库功能以及唯一的ID,节点与节点之间使用UDP 协议通信[9]。

每一个新区块建立后,均会向全网广播这一信息。每个节点在接收其之前,需要验证新区块的正确性。确认正确后,再向邻近节点传播,包含于块头的Merkle 树由多个散列交易的不断重复哈希运算得到。节点值由已知交易次数计算的哈希值加1 后得到,判断其是否与当前块的Merkle 树哈希值相等。若不相等,则交易不可信;否则,新区块是正确的,节点将存储并广播该区块。网络中的所有节点同步完成后,开始新区块的计算,并在块头中记录区块的哈希值。

共识机制是维持区块链安全、稳定运行的核心,其确保各个节点均通过竞争权益凭证数量等竞争参数来取得其他节点的支持及优先写入数据的权力。目前共识机制有:工作量证明机制POW、权益证明机制POS、委托权益证明DPOS、验证池共识机制POOL。不同的应用场景使用不同的共识算法[10-12]。

智能合约用于程序自动仲裁和执行合同,包含了交易双方的地址、交易内容和触发条件。合约代码的条件一旦满足,区块链节点就会自动执行交易双方约定的义务,这一过程是透明、公开的。智能合约使用Solidity 语言编写,在以太坊虚拟机上运行[13]。

2 系统设计

2.1 系统逻辑设计

从去中心化的订单业务逻辑和数据存取逻辑两个方面来设计整个系统,系统的整体运行框架如图3所示。

图3 系统运行框图

智能合约分为三类:仓储合约、运输合约和出库合约,编写并部署在以太坊网络中。

货主在填写个人和货物资料后,由收件信息产生订单密钥。在提交订单后,由航空物流方确认订单,支付预付款到智能合约账户中。激活仓储合约,等待货物入库并生成一张经过签名的订单信息进入数据层,该订单被发送给入库节点。货物进入仓储后,由物联网系统将该信息传输到数据层,激活仓储合约。将订单信息存放到仓储对应的地址中,并记录这一信息和时间。信息经过验证后在全网进行广播,数据统计模块只能获取该订单的存在信息。

当到达订单中的航班运输时间,并由货物登机确认的状态更新后,则触发运输合约,执行调用运输保险等操作。订单信息从仓储节点传输到运输节点,这一信息经过验证后在全网进行广播;否则,运输合约未定时触发,交易提前终止,返回运输状态异常信息。实际上,任何一个不可退回的异常均会导致交易终止,此时订单转移失败。

运输完成后,收货方持订单密钥解锁货物,激活出库合约,更新订单状态信息为交易完成。以太坊将智能合约账户中的预付款转移到供应方区块链账户,订单信息从运输节点地址转存到出库节点地址。这一交易信息经过验证后广播到全网,所有的节点均同步账本数据。

航空物流系统的数据存储和读取分为两种路径:用户信息、供应信息、需求信息、航班信息、库容信息等基本数据存储于数据库,并提供给服务层接口,用以显示与更新;数据库采用区块链的分区实现,交易过程中的订单数据、订单状态、费用等信息通过编写智能合约存入区块链,对区块链中的数据读写均需要先经过各节点的认证和共识,确保交易数据的可追溯和不可篡改性。

两种存储路径包含的数据如表1 所示。

表1 数据分区存储

2.2 系统框架设计

基于区块链的航空物流平台划分为3 层子系统:信息展示系统、内部管理系统、底层去中心化网络。系统组织框架如图4 所示。

图4 系统组织框架

信息展示系统包括货主端APP、门户网站、企业端APP 三个部分,分别面向前台用户、游客和航空物流企业收集运输信息和货物信息,并发布航空仓储信息。针对服务用户,需要提供充足的服务项目和接口。

底层去中心化网络的主体为编写在各个节点的多种智能合约,通过触发智能合约来执行对应的订单转移。当所有合约全部被依次正确执行时,点对点的支付也最终完成。

3 模块实现

3.1 平台首页实现

客户端在服务器接口调用的基础上进行业务处理,并返回数据。客户端显示遵循问题操作的逻辑,每个问题有唯一的题目标识符。由用户操作界面的“上一步”和“下一步”按键来切换题目,用户填写问题的答案后,客户端将答案返回给服务器。两种操作在ControllerInquiry 类中实现,NextProblem 和PreviousProblem 界面切换的逻辑如图5 所示。

图5 界面切换逻辑

3.2 数据库模块实现

为保证数据库的安全性,系统的数据存储以区块链云存储实现,对物流信息单等固定格式数据采用分级本地存储。区块链数据库的访问控制逻辑如图6 所示。

图6 数据库的访问控制逻辑

设计数据库管理员拥有最高权限,维护数据库的访问者列表和相应权限,访问者包括货主、收货方和物流业主。访问者的身份注册后,系统为其分配身份信息和访问权限。在访问者需要执行动作时,首先在权限身份认证层中,由共识认证主体对其身份授权进行认证。接着,在实施行为认证层对访问者的行为进行认证和记录。最终在信息分析层内对访问者的身份信息、权限信息和行为信息进行检索与分析,以确保该次访问动作事后可追溯。

3.3 智能合约模块实现

智能合约包括入库合约、运输合约、出库合约、权限匹配合约、身份认证合约、动作认证合约和支付合约等[14-16]。智能合约使用Solidity 语言编写,并运行在以太坊上。交易双方使用Struct 进行封装,用Mapping 函数建立映射并存储在合约中。在交易结算时,合约从区块链地址中寻找Struct 中记录的交易对象的交易信息并确认支付权限。最终调用结算方法,完成结算。

4 系统测试

4.1 性能测试

使用DataFactory 测试工具对物流管理系统作容量测试、性能测试和压力测试。从100 个用户并发访问开始,逐渐增加访问用户数,从而得到所构建的区块链数据库的性能曲线,如图7 和图8 所示。

图7 区块链数据库并发写测试

图8 区块链数据库并发读写测试

两种测试结果显示,系统的数据库运行较为稳定,读写的数据正确率稳定在95%左右,读写时间较为合理。

4.2 安全测试

区块链技术的安全性得益于分布存储、加密验证和去中心化交易,所有节点遵循少数服从多数的逻辑。但当多数节点被劫持后,整个系统的安全性将受到挑战。区块链系统常见的攻击有双花问题、51%攻击、日蚀攻击等。首先使用VerX 工具检测区块链的重入漏洞和权限漏洞的安全问题,检测结果如图9 所示。

图9 重入漏洞检测结果

系统生成检测报告文档,根据报告修正系统漏洞,然后进行系统的Bug 测试,最终检测结果显示,系统的Bug发生率低于0.6%,总体安全性得到充分保证。

图10 权限漏洞检测

5 结束语

该文构建了基于区块链的航空物流管理系统,相比于传统航空物流平台,该系统的创新点在于3个方面:1)使用区块链技术处理物流订单,加密策略和时间戳保证了订单信息不可篡改,分布式存储使得同一份订单存放在多个节点内,有效保障数据的存储安全性;2)数据分为两种存储方式,订单等关键信息存放于区块链中,个人登录信息等存放于数据库中;3)数据库采用区块链架构对访问者的身份、动作、权限采用类似于区块链中的共识验证机制进行识别与记录,在提供分级权限的同时确保了数据库的操作安全性。

该系统主要面向小规模航空物流,源自于系统的数据库体量小、物流运输环节不够精细,且对航空物流过程中的物联网系统提出了一定要求。物联网系统在检测到实际的货物状态信息后,将作为数据写入方触发区块链中新的交易。因此,系统在大规模的航空物流企业中无法获得良好的使用体验。在接下来的工作中,将完成扩大数据库、完善区块链的设计,使之可以面向大规模企业开放。

猜你喜欢
合约订单航空
春节期间“订单蔬菜”走俏
新产品订单纷至沓来
“闪电航空”来啦
“闪电航空”来啦
“最确切”的幸福观感——我们的致富订单
达美航空的重生之路
怎样做到日订单10万?
一战航空百年回眸
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望