APP下载

基于区块链的供应链金融数据存证模型

2022-08-03李正超梁志宏

关键词:吞吐量合约区块

李正超,梁志宏,岳 昆**

(1.云南大学 信息学院,云南 昆明 650500;2.西南林业大学 大数据与人工智能学院,云南 昆明 650224)

供应链金融是一种重要的融资模式,广泛应用于医药供应链、汽车供应链、房地产供应链等领域,供应链金融数据是金融机构进行金融风险分析及企业获取融资的重要数据.然而,供应链体系中心化程度高、数据篡改难度低,数据的篡改直接影响供应链的安全与稳定[1].研究人员在现有供应链金融体系中引入加密技术、大数据、物联网、云计算等技术,以防范潜在风险[2],但受限于中心化的管理方式,供应链数据的安全性问题尚未得到有效解决,数据伪造、篡改的事件时有发生.例如,2019 年的闽兴药业骗贷案、诺亚财富踩雷事件、武汉金凰珠宝假黄金案,都暴露出了目前供应链金融体系中的数据篡改风险[3].因此,数据防篡改是供应链金融体系中亟待解决的问题.

区块链技术的出现,为解决现有供应链金融体系中存在的问题提供了新的思路.区块链本质是一种集体维护的分布式账本技术,具有去中心化、不可篡改、透明可信的特性,与供应链金融体系具有天然契合之处.融合区块链技术的供应链金融体系中,数据由区块链网络节点共同维护,链上数据不可篡改.然而,研究表明,区块链虽然安全性高,但存在性能瓶颈,一方面,随着数据的不断增加,区块链的存储空间成为其限制条件;另一方面,区块链网络的交易处理能力弱,例如比特币每秒仅能处理7 笔交易,以太坊每秒处理15 笔交易[4].目前,国内外在供应链方面的研究中引入区块链技术,但侧重于隐私保护、数据溯源,对区块链性能方面的优化研究较少.因此,为了高效地实现供应链金融数据安全存储,本文旨在研究高存储效率的供应链金融数据存证模型.

联盟链是部分去中心化的分布式结构,事务吞吐量高,适用于多个实体组成的组织或联盟[5],因此本文将联盟链用于供应链参与方之间构建权利对等的区块链网络,以提高区块链存储供应链金融数据的效率.此外,针对供应链金融数据存储和金融风险分析的需求,提出双联盟链架构,利用智能合约对数据进行上链存证及访问.

链下存储是一种区块链扩容方法,可以有效提高区块链交易效率.针对区块链存储资源有限和性能低的问题,本文借鉴链上链下存储方法,使用星际文件系统[6](Inter-Planetary File System,IPFS)存储链下数据,而链上仅存储数据指纹,实现了供应链金融数据高效地存储于分布式数据库中.为了验证本文所提方法的存储和查询高效性,本文通过吞吐量来描述存储和查询效率,在数据集上的实验结果验证了所提方法的高效性.

1 相关工作

近年来,研究人员在供应链数据保护与共享、区块链扩容等方面开展了许多研究.

在供应链数据保护方面,基于公有链的数据存储方法可以有效保障数据安全性,例如,Gao 等[7]提出基于区块链的供应链管理模型,使用公有链和联盟链相结合的混合链方式存储供应链数据.Xu等[8]设计了基于区块链的产品溯源系统,借助区块链只能插入数据不能删除数据的特点,为取证提供可追溯数据,并在以太坊上部署溯源智能合约.然而,这类使用公有链存储供应链数据的方法开销十分昂贵,并且存储效率极低.

在供应链数据共享方面,一些方法通过加密算法和授权访问方式来存储及访问数据,并提供隐私保护.例如,Abidi 等[9]借助区块链技术实现供应链网络中的敏感数据共享,对敏感数据进行数据清洗和密钥加密,以提供隐私保护,加密数据存储在区块链中.Leng 等[10]提出基于区块链的农业供应链双链模型,该模型同时使用公有链和私有链存储数据.上述方法解决了数据共享过程中存在的数据易篡改、泄密问题,但其效率受限于加密解密运算.

在区块链扩容方面,一些模型以IPFS 作为底层存储[11].例如,Zheng 等[12]提出一种基于IPFS的区块链存储模型,以拓展比特币存储空间,旷工将交易数据存入IPFS,并将返回的IPFS 哈希值写入区块链.Kumar 等[13]提出一种基于区块链和IPFS 的图像视频版权保护模型,使用IPFS 存储图像和视频元数据,区块链仅存储图像指纹.文献[14]提出一种基于区块链的档案数据保护与共享方法,结合IPFS 存储档案数据,实现了数字档案的保护、验证、恢复与共享功能,该方法可拓展区块链数据存储能力[15]、减轻链上数据高频访问压力.

在现有研究的基础上,本文基于区块链技术解决供应链金融数据安全存证问题,引入IPFS 对区块链进行扩容,提高了联盟链存储和查询数据的效率.

2 基于区块链的供应链存证模型

2.1 模型描述 定义 1供应链金融数据主要包括供应链金融关键数据(Supply Chain Finance Key Information,FKI)和文件关键信息数据(Document Key Information,DKI),FKI 包括授信、融资、融信、支付、企业信用、企业负债等信息,表示为F={f1,f2,···,fn};DKI 包括合同、发票、图片、IPFShash等相关信息,其中,IPFShash为文件元数据存入IPFS后返回的索引值,D={d1,d2,···,dn}.

定义 2金融信息联盟链(Financial Information Alliance Chain,FIAC)中存储交易FKI;文件关键信息联盟链(Document Key Information Alliance Chain,DIAC)中存储交易DKI.

区块链的去中心化、不可篡改和智能合约机制等特点,可以满足供应链金融数据存证中的防篡改、安全访问需求.鉴于此,本文提出基于区块链的供应链金融数据存证模型.模型使用六元组<BlockNet,DIAC,FIAC,IPFS,SC,Consensus>表示,如图1 所示,其中:

图1 基于区块链的供应链金融数据存证模型Fig.1 Blockchain-based data storage model for supply chain finance

(1)BlockNet 表示区块链网络,以联盟链为基础构建,由多个组织机构组成,主要组织机构包括银行、核心企业、供应商、监管部门等,每个组织机构由多个实体节点组成,节点加入时需要进行身份认证,各节点共同维护联盟链,在区块中添加供应链金融数据以及监管部门的审核信息.联盟链网络中没有绝对中心化的第三方,核心企业不再作为中心化节点.

(2)FIAC 和DIAC 两条区块链、以及IPFS 组成了数据存储层,IPFS 存储文件元数据,DIAC 链存储文件关键数据,确保原始数据的完整性,FIAC链存储供应链金融数据,可用于供应链金融风险分析,在双链结构中,FIAC 链和DIAC 链通过hash指针的方式锚定连接.

(3)SC 表示智能合约,智能合约实现数据上链、访问功能,链上节点只能通过调用事先部署在区块链中的智能合约操作数据,区块链和链下IPFS 之间的数据交互同样也是通过智能合约完成.

(4)Consensus 表示共识算法[16],具有维护区块链网络每一个节点唯一公认的全局账本的功能,避免网络延迟、节点崩溃、恶意攻击等原因引起的系统错误,同时,共识算法是影响模型性能的重要因素.

2.2 基于智能合约的存储及访问算法为了保证供应链金融数据的链上链下存储,基于2.1 节提出的模型,本节给出基于智能合约的数据存储和访问算法,智能合约在满足条件时可触发自动执行,减少人为干预,从而保障数据安全性.合约框架如图2所示,数据管理智能合约(Data Manage Smart Contract,DMSC)作为联盟链中的全局合约[14],记录联盟链中部署的智能合约,包括数据存储智能合约(Data Insert Smart Contract,DISC)、数据查询智能合约(Data Query Smart Contract,DQSC),实现数据上链和查询功能.

图2 智能合约框架Fig.2 Frame of smart contracts

算法1 给出供应链金融数据存储方法,该算法将供应链金融数据记入区块链,方便后续的数据验证及供应链金融风险分析.首先初始化IPFS 私有集群,当联盟链节点请求数据上链时,节点连接IPFS,第3 步存储链下数据,文件成功存储到IPFS后,IPFS 返回IPFShash作为索引,同时调用DISC 将数据写入区块,数据经过区块链网络广播、验证、同步后完成数据上链.该算法的时间复杂度取决于步骤7 和9 所使用的共识算法.

算法1供应链金融数据存储

输入文件名file、IPFS 的IP 地址和连接端口port.

输出上链状态status.

步骤:

算法2 给出供应链金融数据访问方法,当联盟链节点请求读取链上数据时,第1~2 步读取数据,节点需要调用DQSC 从联盟链上获取文件关键数据和供应链金融关键数据,然后根据文件关键数据中的索引IPFShash下载文件,并验证数据真实性.该算法中通过遍历区块链的方式查询数据,因此,时间复杂度为O(n),其中,n为区块数量.

算法2供应链金融数据访问

输入文件标识fileID、交易数据txid.

输出供应链金融数据集DataSet.

步骤:

3 实验结果分析

3.1 实验指标为了评估本文所提存证模型的效果,使用测试数据集模拟供应链场景下的金融数据存储和查询实验,模拟实验的方法将在3.3、3.4 节进行详细描述.实验以吞吐量(Transaction Per Second,TPS)作为评估存储效率和查询效率的指标,计算方法如下:

其中,MΔt表示Δt时间内模型处理的交易总数.

实验通过增加存储和查询数据量、共识节点数的方法,发起100~10 000 条数据写入和查询请求,测试模型资源消耗、写入吞吐量和查询吞吐量最大值、双链交互性能;通过增加存储文件大小的方法,发起1~32 MB 大小的文件写入和查询请求,测试及对比区块链和IPFS 的存储、查询效率.

3.2 实验环境本文基于Hyperledger Fabric 区块链实验平台部署联盟链,使用Golang 语言开发智能合约,以链码的形式部署在联盟链中,实验环境如下:Centos7.8、Fabric1.4.1、Docker19.03.12、Go1.11.11、Tape0.3.0,1 台2.5 GHz Intel Core i5-7200U CPU 和16 GB RAM的计算机.Fabric 网络通过Docker 容器运行,实验过程中启动的Docker容器如表1 所示,联盟链由多个组织机构组成,每个组织机构由1 个Peer 节点、1 个Orderer 节点和1个Fabric-ca 节点组成,使用CouchDB 作为数据库存储区块交易,IPFS 系统同样通过Docker 容器搭建.

表1 模型测试实验环境Tab.1 The experiment environment for model testing

3.3 模型存储效率测试为了测试不同联盟链节点数量的情况下模型的写入吞吐量,创建6 组测试数据集,在保证写入成功率为100%的情况下,由节点调用DISC 智能合约,在节点数为4、8、12、16、20 和24 的情况下,分别发起100、500、1 000、2 000、5 000 和10 000 条数据上链请求,每组实验重复10 次取平均值,避免实验结果的偶然性,结果如图3 所示.可以看出,当节点数为4 时,上链数据集规模在100~500 条时,吞吐量增长较快;规模在500~5 000 条时,吞吐量缓慢增长;规模在5 000条以上时,由于服务器性能达到瓶颈,吞吐量在370 左右波动,模型的写入吞吐量最高为370 事务数/s,平均出块率为每秒3.6 个区块.此外,模型事务处理效率与节点数量负相关,当共识节点数为24 时,模型最高写入效率为227 事务数/s、下降了38.6%.由算法1 可知,数据写入区块链需要使用共识算法,随着共识节点orderer 数量的增加,节点之间通信次数增加,验证区块交易的时间消耗随之增加,因此,模型中节点数量越多,模型事务处理效率越低,吞吐量越低.记录写入吞吐量达到最大时的资源消耗情况,如表2 所示,模型的中各组件的硬件资源消耗并不高,可满足实际应用场景下的部署要求.

图3 不同节点数的链上存储效率对比Fig.3 Comparison of on-chain storage efficiency with different number of nodes

表2 模型各组件硬件资源消耗Tab.2 Consumption of hardware resource for each component of the model

为了测试IPFS 对存储效率的影响,使用1~32 MB 大小的文件,分别存储到IPFS 和区块链中,对比链上和链下的存储效率,结果如图4 所示.可以看出,区块链上存储耗时、IPFS 存储耗时均与文件大小呈正相关,但IPFS 存储效率要高于区块链存储效率,其平均存储效率比区块链高37.1%,因此,模型中使用IPFS 不仅能扩展区块链存储空间,还能提高模型存储效率.

图4 不同大小文件的链上链下存储效率对比Fig.4 Comparison of on-chain and off-chain storage efficiency for different file sizes

3.4 查询效率测试为了测试模型的查询效率,节点调用DQSC 智能合约查询区块链中的数据,在保证查询成功率为100%的情况下,分别发起6 组数据上链请求,结果如图5 所示,有索引查询时,模型的查询吞吐量峰值为每秒处理261 个事务,无索引查询时模型的查询吞吐量峰值为每秒处理186个事务.

图5 不同索引方式的链上查询效率对比Fig.5 Comparison of the efficiency of on-chain queries with different indexing methods

为了测试IPFS 对查询效率的影响,分别查询IPFS 和区块链上存储的1、2、4、8、16、32 MB 大小的文件,结果如图6 所示.可以看出,随着文件大小的增加,从区块链获取文件元数据耗时、IPFS 获取文件耗时均与文件大小呈正相关,但IPFS 查询效率要高于区块链,其平均查询效率比区块链高72.3%,因此,IPFS 提高了模型的查询效率.

图6 不同大小文件的链上链下查询效率对比Fig.6 Comparison of the efficiency of on-chain and off-chain queries for different file sizes

针对本文提出的基于区块链的供应链金融数据存证模型,与现有文献中结合区块链技术的供应链模型在存储开销方面进行对比,如表3 所示.可以看出,本文提出的基于区块链的供应链数据存证模型使用联盟链架构,其去中心化程度可以灵活设置,因此模型可以安全存储供应链金融数据、有效预防数据篡改,结合IPFS 系统进行链下文件存储,减小了链上存储开销,有效提高了模型可扩展性和存储效率.实验结果表明,模型吞吐量可达370 事务数/s,效率较高,资源消耗低.通过对比可知,本文提出的模型在资源消耗、存储效率、可扩展性等方面有显著的优势.

表3 基于区块链的供应链数据存证模型对比Tab.3 Comparison of blockchain-based supply chain data storage models

3.5 双链交互性能测试为了测试模型中双链之间的交互性能,节点调用DISC 智能合约将DIAC链上存储的6 组数据的哈希值写入FIAC 链,同时通过FIAC 链上的哈希值查询DIAC 链上的数据,结果如图7 所示,其中,Write 表示DIAC 链上每条数据哈希值写入FIAC 链的平均响应时间,Query表示根据哈希值查询DIAC 链上每条数据的平均响应时间.可以看出,随着交互数据量的增加,平均响应时间逐渐减小,在数据规模为10 000 条时,由于服务器性能达到瓶颈,每条交互数据的平均写入耗时稳定在33.4 ms、平均查询耗时稳定在14.8 ms.

图7 双链写入和查询性能Fig.7 Performance of double-chain write and query

4 总结

本文设计了一种基于区块链的供应链金融数据存证模型,模型采用链上链下相结合的存储方式,使用双区块链存储供应链金融数据,并设计了智能合约实现对链上数据的操作.链下使用IPFS 存储供应链金融相关文件,可有效扩展区块链存储能力.通过实验对模型多项指标进行了测试及分析,结果表明,本文模型吞吐量高、资源消耗低,对实际应用有一定意义.借助本模型,供应链企业的数据可以在不借助第三方中心化机构的情况下实现安全、高效存储.在未来的工作中,将继续深入研究模型优化,针对供应链特点,对共识算法进行改进,进一步提高模型存储效率.

猜你喜欢

吞吐量合约区块
《红楼梦》的数字化述评——兼及区块链的启示
一场区块链引发的全民狂欢
区块链助力企业创新
区块链投机者
2017年3月长三角地区主要港口吞吐量
2016年10月长三角地区主要港口吞吐量
2016年11月长三角地区主要港口吞吐量
2014年1月长三角地区主要港口吞吐量