基于区块链技术的供应链交易系统设计
2021-06-18方燚飚周创明雷晓莉宋亚飞
方燚飚,周创明,雷晓莉,宋亚飞,高 娜
(1.空军工程大学 研究生院,西安 710038;2.空军工程大学 防空反导学院,西安 710038)
0 概述
供应链的概念[1]由扩大的生产概念发展而来,围绕核心企业并通过对企业信息流、物流和资金流进行控制,形成一个整体的功能网链结构。随着经济全球化趋势的加速发展,企业间的竞争由单纯企业个体实力的较量向企业供应链间的竞争转变。供应链将原本有合作关系的企业进行串联形成复合网络,加强了企业间的协同并提高合作效率,实现企业利益的最大化[2]。由于企业间的各类交互越来越频繁且复杂,传统以核心企业为主导的供应链模式已无法满足企业发展的需求,同时信息共享及产品质量溯源难度大等问题也愈发突出。区块链技术的出现为供应链质量管理带来了新的思路[3]。区块链技术是比特币的底层技术,其有效解决了传统数字货币体系中的双花问题和拜占庭将军问题[4-5]。随着比特币等数字货币的普及,区块链技术所具有的优势开始引起社会各界的广泛关注,其分布式存储、不可篡改的特性[6]能够在保证数据完整性和可信度的同时,实现最大程度的数据共享,并且区块链技术的应用也逐渐由金融领域向物联网等非金融领域延伸[7]。
目前,国内外研究人员对区块链技术的应用进行了大量研究并取得了重要成果。2016 年,Linux 基金会发起了Hyperledger 开源区块链项目,其中的Hyperledger Fabric 项目[8]是针对企业级的区块链应用,旨在发展跨行业的商业区块链平台。文献[9]设计基于区块链的智能药品供应链管理系统,通过分布式系统记录药品全周期信息,确保患者的用药安全。文献[10]基于智能合约和访问控制设计MeDShare系统,该系统能够提供链上医疗数据的溯源和审计服务。文献[11]通过区块链技术探讨物联网供应链中的安全漏洞,并分析区块链技术在物联网供应链中潜在的优势。文献[12]设计基于区块链的供应链信息共享合约,解决了供应链参与主体间的信任问题。文献[13]分析区块链技术对供应链参与主体间信息共享程度的影响,结果表明通过区块链技术能够降低供应链成员间的交易成本,提高信息共享效率。针对传统供应链系统中存在的信任传递困难、交易信息不透明、信息共享难度大等问题,本文研究区块链技术在供应链交易系统中的应用,通过部署交易智能合约,构建基于区块链技术的供应链交易平台,实现更有效的信息共享及上下游协同。
1 相关技术
1.1 区块链
区块链的概念由中本聪于2008 年提出,是一种以链式结构为基础的分布式账本。在账本中,数据区块按照时间顺序依次连接,并以密码学[14-15]方式保证账本数据的不可篡改性和不可伪造性。目前,已有许多区块链平台投入使用,虽然不同区块链平台的具体实现方式不同,但区块链平台整体上可划分为数据层、网络层、共识层、合约层和应用层5 个层次[16],如图1 所示。数据层的主要功能是记录和存储链上信息,并通过默克尔树、非对称加密算法、哈希函数、时间戳等技术保证数据的不可篡改性和可追溯性;网络层的主要功能是通过点对点网络进行节点间数据的传递和验证;共识层主要通过共识算法实现分布式节点间的稳定共识,保证数据的一致性和真实性;合约层主要是为智能合约提供开发环境,包括区块链平台的沙盒环境及相应的编程语言;应用层主要用于区块链技术在各类应用场景中的实现,根据应用场景的不同,将区块链技术的发展分为可编程货币、可编程金融和可编程社会3 个阶段[17]。
图1 区块链平台架构Fig.1 Architecture of blockchain platform
1.2 智能合约
智能合约是指一种具有自我执行与验证功能的计算机协议。智能合约的概念由尼克·萨博[7]于1995年提出,主要思想是将合约条款转化为计算机协议,在去可信第三方的环境中使该协议作为合约各方的信任代理,高效安全地履行合约,但受制于当时的计算机技术水平,智能合约未得到广泛关注,而区块链去中心化的构架为智能合约提供了一个良好的执行环境。智能合约存储在区块链平台上,用户在任意时刻都能调用智能合约,当用户发出调用指令后合约会被加载到沙箱环境下执行[18]。合约根据外部数据和世界状态信息自动判断所处条件是否满足合约触发条件,并严格按照合约规则执行合约代码,最终更新世界状态。合约执行结果经验证有效后,由矿工进行打包,存储在新的数据区块中,该区块经共识算法认证后连接到区块链尾部,得到新的有效区块。在不同的区块链平台下,智能合约的运行机制会有一定的差异,但其运行原理基本相同,如图2 所示。
图2 智能合约运行机制Fig.2 Operation mechanism of smart contract
1.3 供应链
供应链是指产品生产和流通过程中所涉及的原材料供应商、产品制造商、产品经销商、零售商以及最终消费者等成员通过前向物流、反向资金流以及信息流的交互相连接的整体性网络结构系统[19]。在供应链中,各企业以生产者和消费者两种不同的角色参与供应链的不同阶段,推动产品在原材料供应商、产品制造商、产品经销商、零售商、个人消费者及监管机构之间的流通。如图3 所示,供应链包含了产品生产、加工、运输、销售等多个环节,整合了信息流、物流和资金流,形成由各级企业构成的链式网络结构,强调企业之间的信息共享、风险共担和交流合作,从而实现供应链整体利益的最大化。
图3 供应链整体结构Fig.3 Overall structure of supply chain
在传统供应链系统中,各企业内部通过物联网系统进行产品信息的采集,但不同企业之间的物联网系统通常是相互独立的,因此虽然各企业处于同一供应链中,但企业之间进行实时交互、全流程信息共享的难度仍较大。随着供应链涉及企业的增加,核心企业对供应链整体的掌握程度越来越小,从而导致核心企业无法及时调整供应链运作状态,降低了企业之间的协作效率,并阻碍了供应链整体的发展。综上所述,传统供应链主要存在数据孤岛、企业间协作效率低及产品质量溯源难的问题。
2 基于区块链技术的供应链交易系统
2.1 供应链交易系统总体构架
供应链交易系统主要有产品交易和交易信息共享两部分,其主体是基于区块链技术的交易链。供应链企业通过交易链及部署在其上的交易智能合约进行产品交易和信息共享。如图4 所示,基于区块链技术的供应链交易系统具有以下功能:1)构建供应链信任体系,供应链核心企业可在交易系统中发布特定的数字货币并通过数字货币进行交易,该数字货币是供应链企业间可信的交易凭证,也可作为供应链中小企业进行贷款、融资等服务的信用凭证;2)实现透明可信的交易过程,供应链企业通过智能合约进行交易,由智能合约对交易合法性进行验证,同时将交易内容、交易完成情况等信息记录于交易链,保证交易过程安全可靠,交易信息透明可追溯。
图4 交易系统总体架构Fig.4 Overall architecture of transaction system
2.2 交易链设计
基于区块链技术的交易链是供应链交易系统的功能基础。交易链采用联盟链模式,不同节点被赋予不同的权限,个体用户等消费者可直接接入到交易系统中,供应链企业需要核心企业授权才能接入交易系统。在交易链中部署交易智能合约时,通过对交易智能合约中交易信息的验证、交易资金的管理及交易结果的判定,管理并记录交易过程中的信息。另外,交易链中也可加入银行等金融机构,结合智能合约为中小企业提供贷款、融资等服务。
在供应链中消费者通过调用交易智能合约进行交易,交易智能合约工作流程如图5 所示。消费者将交易内容、合同及资金发送到交易智能合约账户,交易智能合约对交易内容、合同及资金进行验证,验证通过后将交易信息发送给对应生产者。生产者校对合同内容,当接收交易请求后,可根据交易内容进行生产或直接由仓库向消费者发货,并将产品物流信息发送到交易智能合约,由交易智能合约将信息转发给消费者。消费者在收到产品后,向交易智能合约发送确认信息,交易智能合约验证信息后,将交易资金支付给生产者。交易过程中的所有交互信息均由交易智能合约暂存,当交易完成后由交易智能合约形成区块并将其添加到交易链中。
图5 交易智能合约工作流程Fig.5 Workflow of transaction smart contract
2.3 交互规则设计
由于基于区块链技术的供应链交易系统以分布式方式构建,各企业之间的交互行为较为频繁、复杂,因此对于供应链交易系统需要制定交互规则来保证交易过程中交互信息的有效处理。在交易系统的交互过程中主要有各级消费者、生产者和交易智能合约3 个角色参与交互过程。消费者通过向智能合约发送相关信息及相应资金来发起交易,智能合约收到交易请求后,将交易信息发送给对应生产者,并对交易过程进行监控,当交易完成后其将资金转到生产者账户,此时交易完成,交易信息上链存储。可见,信息交互主要分为消费者将交易信息发送到智能合约,以及智能合约确认后将信息发送到指定生产者两个阶段。
对于消费者与智能合约之间的信息交互,当发起交易时消费者将资金发送给智能合约账户的同时,还需将交易的产品信息、资金、协议等信息发送到智能合约账户,具体交互信息内容为[t,C →P,tabC(w,v,a,dl)],其中:t 表示该交易的索引信息;C →P 表示该交易由消费者C 发起,由生产者P 执行;tabC(w,v,a,dl)表示此次交易的具体信息,w表示消费者的目标产品,v 表示此次交易的资金,a 表示此次交易的相关协议,dl 表示消费者给定的交易完成期限。
智能合约收到交易请求后,首先对信息的内容进行确认。若该交易请求不符合交易规则,则将交易请求退回。若该交易请求符合规则,则将交易信息发送到对应的生产者并与生产者进行交互。此时,智能合约只将交易信息发送给生产者,交易资金由智能合约暂存,交易完成后再根据交易完成情况将资金转到生产者账户。智能合约与生产者之间的具体交互内容为[s,T →P,infT(tabC,st)],其中:s 表示该交易的索引信息;T →P 表示交易信息由智能合约向生产者发送;infT(tabC,st)表示智能合约向生产者发送的交易信息内容,tabC表示交易具体信息,其内容与消费者发送给智能合约的交易信息中的tabC内容相同,st 表示智能合约接收到消费者提交的交易请求时间。
生产者接收到交易信息后,对交易信息进行验证。若该交易为正常交易,则接收交易请求,进行相关产品的生产。若该交易不符合交易规则,则拒绝此次交易,退回交易请求。生产者接收交易请求后,智能合约随即跟进交易进程。消费者收到产品后,向智能合约发送产品接收信息;智能合约向生产者核实信息后,对交易完成情况进行判定,并向生产者支付产品资金。
若生产者按期交付产品,则智能合约将所有资金转发到生产者账户,并将交易结果的信息发送给生产者,具体交互内容为[u,T →P,tabT(v,ct,N)],其中:u 表示该交易的索引信息;T →P 表示交易信息由智能合约向生产者发送;tabT(v,ct,N)表示智能合约向生产者发送信息的具体内容,v 表示此次交易资金,ct 表示交易完成时间,N 表示此次交易按时完成,为正常交易。
若生产者未能按时交付产品,则智能合约依据双方合约将部分资金返还给消费者,将剩余资金发送到生产者账户,并将交易结果的信息发送给生产者,具体交互内容为[n,T →P,tabT(v',ct,od)],其中:n表示该交易的索引信息;v'表示原资金v 中扣除部分资金后的剩余部分;od 表示此次交易未能按时完成,为逾期交易。
当生产者收到资金及接收信息并核对后交易流程结束,交易智能合约将此次交易中的所有信息交互内容储存至区块,并将此区块储存至交易链,供后续查询及验证使用。
3 供应链交易系统构建
3.1 交易系统货币体系
货币是交易的基础,若要实现交易系统功能,则首先要建立合适的数字货币体系[20]。供应链系统中的数字货币由核心企业进行发行,该数字货币不仅是供应链系统中各企业之间交易的价值媒介,同时能够作为企业之间以及企业与体系内的金融机构之间的信用凭证,是供应链系统信用体系的基础。在基于区块链技术的供应链交易系统中,核心企业能够较方便地发行数字货币,并通过设定相关参数得到适用于供应链系统的数字货币。
3.2 交易智能合约
交易智能合约是交易链的主体,根据各个参与者的公钥地址及相应的交易协议完成交互过程中的信息验证,交易完成后再根据交易结果向生产者发送资金。交易智能合约具有交易信息验证与交易结果认定两方面的功能。当消费者发起交易时,将交易请求发送至交易智能合约,交易智能合约对交易请求内容及消费者身份进行核对,信息确认后将交易信息发送到对应生产者账户中;生产者接收交易请求后,向交易智能合约发送确认信息,交易智能合约开始跟进交易情况。
算法1交易信息验证算法
当生产者pro1 接收交易请求后,交易智能合约就开始跟进交易情况。当交易结束后,交易智能合约对交易完成情况进行判定并向生产者发送资金。判定过程主要是对交易完成情况进行确认:若交易按时完成,则交易智能合约将所有资金转到生产者pro1 的账户中;若交易未能按时完成,则交易智能合约将按照协议规定,向生产者支付资金,其余资金将退还给消费者。
算法2交易结果认定算法
当完成交易结果认定并将资金转移到生产者账户后,交易流程结束,交易智能合约将该交易过程中的所有交互信息上传至交易链。对于不同的供应链系统,交易系统设计需要结合供应链实际情况进行改进。
4 供应链交易系统测试
当供应链交易系统构建完成后需要对供应链交易系统进行以下测试:1)交易系统基本功能测试,主要测试交易系统的交易及信息共享功能;2)交易系统性能分析,主要测试供应链交易系统的安全性及系统吞吐量,并与同类系统进行对比分析。系统测试环境配置为Windows 10 操作系统、Hadoop 架构、Core i5-9400 处理器、主频为2.90 GHz、GTX1050Ti显卡、8 GB 内存、1 TB 机械硬盘。
4.1 交易系统基本功能测试
在进行测试前需完成交易智能合约的编译和部署,合约编译是指将智能合约代码转化为以太坊虚拟机能够识别的虚拟机代码。本文采用Solidity 编程语言[21],内核版本为0.4.22,编译器为EthFiddle-Solidity。交易智能合约的编译结果如图6 所示。
图6 交易智能合约的编译结果Fig.6 Compilation results of transaction smart contract
在完成编译后即可部署交易智能合约,当交易智能合约部署完成后,用户通过调用交易智能合约来发起交易,部署结果如图7 所示。交易发起者可通过调用交易智能合约中的函数向目标账户发送交易请求。在本次测试中,所用账户均为EthFiddle 预存账户,其中主账户为交易发起账户,其余账户均为供应链企业账户。
图7 交易智能合约的部署结果Fig.7 Deployment results of transaction smart contract
供应链交易系统的功能主要包括交易合法性验证、交易结果认定、交易资金转移以及交易信息共享。交易合法性验证一般根据核心企业提供的权限表进行验证,在部署智能合约时核心企业会根据不同企业的实际情况分配不同的交易权限并制作成表格,将其数字化后储存到交易智能合约中。另外,当后期有新的企业加入时需要扩充权限表的内容。交易结果主要根据交易实际完成时间与交易预期完成时间之间的关系来认定。为排除交易双方伪造信息的情况,保证交易结果判定的真实有效,交易的最终完成时间根据产品物流信息确定。交易智能合约在完成判断后,将交易结果信息发送给消费者进行确认,确认无误后交易认定完成。资金转移是区块链平台的基础功能,交易系统中交易资金转移成功与否主要由交易完成情况决定,因此对交易系统中的资金转移功能不再赘述。交易信息共享功能依据信息使用者所具有的权限,为其提供所需的供应链历史交易记录及其与该交易的相关信息。当供应链成员提交交易请求后,交易流程的具体细节由交易智能合约进行控制。图8 为供应链企业在交易系统中完成交易后,查询该交易记录所得的产品交易信息,由此可知本文交易系统能够实现交易及信息共享功能,达到了供应链交易系统的基本要求。
图8 产品交易信息Fig.8 Product transaction information
4.2 交易系统性能分析
4.2.1 交易智能合约漏洞检测
在区块链系统中完成部署后的智能合约将无法修改,如果将存在安全漏洞的智能合约部署到区块链系统中,则会使整个系统面临巨大风险,因此本文首先对交易智能合约进行漏洞检测[22]。本文采用蚂蚁区块链BaaS 平台中集成的智能合约安全检测平台进行智能合约检测。该智能合约安全检测平台提供智能合约中常见的可重入攻击、时间戳依赖、交易顺序依赖及溢出漏洞等安全漏洞的检测。当智能合约编译完成后,在该平台上创建相应检测任务即可对智能合约进行漏洞检测。图9 为交易智能合约的漏洞检测结果,检测结果显示交易智能合约中存在1 个未授权访问漏洞,出现该漏洞主要是由于智能合约中缺少了身份认证过程,使得用户在触发状态改变操作时能够修改与此次操作不相关的状态变量,从而引发漏洞,因此在后续改进中将加强用户操作权限的校验。
图9 交易智能合约的漏洞检测结果Fig.9 Vulnerability detection results of transaction smart contract
4.2.2 交易系统容错性测试
将供应链交易系统容错性定义为:在具有一定数量接入节点的系统中,当系统遭到恶意节点攻击时仍能保持稳定运行的能力,因此将一定数量的恶意节点成功破坏系统正常运行的概率作为评价系统容错性能的指标,考虑到实验效果及设备性能,将供应链系统的节点数量设为50,恶意节点的数量由0逐渐增加至30,在不同数量的恶意节点下进行多次实验得出不同状态下恶意节点的攻击成功率。在实验中将恶意节点的攻击方法设定为伪造区块,当正常节点开始记录伪造区块时,认为恶意节点攻击成功。实验结果如图10 所示。
图10 不同恶意节点数量下的交易系统攻击成功率对比Fig.10 Comparison of attack success rate of transaction system under different number of malicious nodes
由实验结果可知,恶意节点的攻击成功率随着恶意节点数量的减少而降低。当恶意节点数量小于总数的32%时,恶意节点攻击成功的概率为0。在供应链系统中,核心企业会对申请加入供应链的企业进行资质审核,因此在通常情况下出现恶意节点数量超过节点总数1/3 的可能性较低。由此可见,在当前条件下该系统具有较高的容错性能,但考虑到系统外部的恶意攻击等情况,系统容错性能还有待进一步提升。
4.2.3 交易系统吞吐量分析
交易系统吞吐量是指在单位时间内交易系统能够处理的交易量。将每秒事务处理量(Transaction Per Second,TPS)作为系统吞吐量的评价指标。交易系统承担供应链的交易功能并对系统实时性具有一定的要求,本文通过实验分析供应链交易系统的吞吐量,为后期系统升级与部署提供良好基础。实验中将交易系统节点数量作为变量,节点数量从0增加到70,在不同的节点数量下进行重复实验,最终将不同节点数量下TPS 的平均值作为各个状态下系统吞吐量的衡量值。实验结果如图11 所示。
图11 不同节点数量下的交易系统吞吐量对比Fig.11 Comparison of throughput of transaction system under different number of nodes
由实验结果可知:节点数量为5~45 时,交易系统吞吐量随着节点数量的增加而上升且上升趋势基本不变;当节点数大于45 时,系统吞吐量出现下降,并最终保持在36 transaction/s 左右。可见,本文系统即使在运行环境稳定且交互内容较简单的实验环境中系统吞吐量仍然较小,这与供应链庞大的数据交易量需求还存在一定差距,因此在后续研究中将根据供应链的实际需求,结合多链和分层等技术优化系统架构,同时利用联盟链和供应链系统的优势对共识算法进行改进,提高共识效率并增加系统吞吐量。
4.3 交易系统功能与吞吐量对比
4.3.1 交易系统功能对比
在系统测试完成后,将本文交易系统与文献[9,23-25]交易系统进行功能对比,文献[9]交易系统主要应用于药品信息管理场景,文献[23]交易系统主要应用于隐私保护和数据共享场景,文献[24]交易系统主要应用于建筑行业的信息管理场景,文献[25]交易系统主要应用于肉制品供应链信息追溯场景,对比结果如表1 所示,其中,“√”表示交易系统具备该功能,“×”表示交易系统不具备该功能。经对比发现,文献[9]交易系统不具备第三方用户接入功能,文献[23]交易系统不具备信息追溯和数据搜索功能,文献[24]交易系统不具备数据搜索功能,文献[25]交易系统不是基于区块链构造的交易系统。由此得出,本文交易系统在整体上具有一定优势,但与同类交易系统相比,其在部分功能的细节方面还不够完善,如搜索功能不支持关键词搜索、访问控制机制较简单等,在后续研究中将进一步完善系统功能。
表1 交易系统功能对比Table 1 Comparison of functions of transaction systems
4.3.2 交易系统吞吐量对比
吞吐量是评价交易系统和区块链系统的重要指标,因此将本文交易系统与文献[9,23,26]交易系统进行吞吐量对比。实验中将交易系统节点数量作为变量,节点数量由0递增至60,在不同节点数量下进行重复实验,实验结果取不同状态下TPS的平均值,如图12所示。
图12 交易系统吞吐量对比Fig.12 Comparison of throughput of transaction systems
由实验结果可知:在交易系统节点数量小于20时,各个交易系统的吞吐量均呈上升趋势,随后文献[26]交易系统趋于平稳,最终保持在10 transaction/s 左右,其他3 种交易系统的吞吐量则继续上升,当节点数量小于40 时,本文交易系统在吞吐性能上具有一定优势;在交易系统节点数超过40 后,本文交易系统吞吐量略有下降,最终保持在36 transaction/s左右,而文献[9,23]交易系统的吞吐量继续上升,在节点数量到达60 时仍未出现下降趋势。可见,在交易系统节点数量较少时,本文交易系统在吞吐性能上具有一定优势,但系统吞吐量峰值较小,与供应链系统实际应用需求有一定差距,系统吞吐性能的提升空间较大。
5 结束语
区块链技术的快速发展以及社会各界对区块链技术的高度关注,使其被广泛应用于各行各业。本文设计一种基于区块链技术的供应链交易系统,利用区块链技术解决传统供应链系统中存在的信息不透明和交互困难等问题,实现更有效的信息共享和上下游协同。该供应链交易系统的主体为基于区块链技术的交易链,其通过交易智能合约完成对供应链交易信息、交易资金及交易结果的有效管理。实验结果表明,该系统已能够实现基本的交易功能及信息共享功能,但在系统吞吐量及复杂环境下的系统安全性等方面还需在后续研究中做进一步优化。