基于IPFS优化的区块链物流信息平台

2021-05-23 09:42苗齐
电脑知识与技术 2021年11期
关键词:数据存储区块链

苗齐

摘要:区块链发展日益蓬勃,其不可篡改、去中心化等特性逐渐被认可。其安全性的本质是副本冗余与历史数据参与加密,这导致了区块链容量的过大且无限增长,对资源的消耗是不可避免的。该文提出一种基于星际文件系统(IPFS)的区块链存储优化方案,通过减小上链数据大小的方式限制区块链容量。

关键词:区块链;IPFS;物流信息;数据存储

中图分类号:TP3        文献标识码:A

文章编号:1009-3044(2021)11-0257-03

1 引言

目前,物流行业内部信息交互并不通畅,而一些涉及客户的敏感信息安全问题也被外界广泛关注。现有的物流系统都是由企业中心化统一管理,如果企业内部人员企图谋取私利,容易发生信息泄露等问题。本文提出的一种基于IPFS优化的联盟区块链方案,以区块链的安全、可溯源、不可篡改的特性,提高了物流信息数据的可信度和安全性,防止了中心化系统下信息泄露等问题的出现。并且系统使用星际文件系统,构建一种物流企业间的数据交流平台,以实现物流资源的充分合理利用。

2 技术背景

区块链[1]是在去中心节点的网络中,由一个个区块组成的链式数据结构,每个区块中由一条条的数据信息(一般称之为交易)构成。其中,联盟链网络节点划分为各个组织,组织内又有许多普通节点构成,网络内部的共识以组织为单位实现。联盟链的网络模型更加符合现代企业、机构的运营模式,因此,可以实现更有现实意义的落地应用。

IPFS(星际文件系统)是由Juan Benet设计的,并于2014年开始由Protocol Labs在开源社区的帮助下发展的一个网络传输协议,其旨在创建持久且分布式存储和共享文件。它所具有的内容可寻址、可追溯文件修改历史的特点为区块链信息数据的下链提供了条件。IPFS综合了已有技术的特色,包括DHT、BitTorrent,Git和SFS等,实现了将数据存储于本地,并将节点彼此连接从而实现数据传递的主要功能[2]。

在物流行业中,现有区块链如果想实现数据安全,就必须将所有数据上链,而仅2019双十一当天,菜鸟网络统计订单量达到12.92亿单。如果想要保障这些数据全部上链,所形成链的大小将难以想象。

3 相关工作

对于区块链体积过大这一问题,国内外很多学者都提出了各自的解决方案。Robert[3]等人,基于以太坊环境提出了数据下链,IPFS与区块数据绑定这一理念,提高两个模块之间的关联性。对于轻节点,可以与数据进行绑定,提高使用效率。文章还提出了Block重用的概念,简化了数据在IPFS中存储的方式,既可以提高数据查询效率。又能够优化数据在IPFS中的存储结构;此外,文章还将初始化Hash与运行时Hash相区别,简单区分了一个区块中数据的使用频率。Chen[4]等人提出将IPFS与区块链相结合,并应用于Bitcoin中,实现了区块数据大小大幅缩减。Zheng[5]等人使用BlockStack和ZigzagCode结合的方法,将数据在IPFS和区块链间转化的过程细化,将数据分为冷数据与热数据,区别对待,从而进一步区分了数据的使用頻率,优化了系统模型。

在实际应用方面也已有很多学者提出针对不同领域的应用方案。李瑾[6]等人设计的基于区块链的分布式电能量数据可信存储机制,则是在电能量计量工作上的应用。方案提出了IPFS存储数据,区块链存储地址的概念模型,该模型对于减小区块链容量有着十分显著的效果,但是其代价是降低了数据的查询效率,在数据查询时,步骤烦琐,除必要共识外,仍需经过数据存储节点的验证,在大数据量情况下效率低下。

4 本文方案

本文所提出方案主要有两个方面内容,一是数据存储模块,一是数据查询检索模块。其中数据存储模块的设计目的是通过改变区块内存储内容减小区块大小,从而减少整个区块链容量。而数据查询检索则是利用IPFS生成的Hash值进行数据查询获取的特点进行行业内数据的交易或交换。

4.1 系统结构

本文提出的系统模型如图1所示,联盟内网络节点负责数据收集与处理。在收集到网点数据后,节点将数据打包上传至IPFS。IPFS对接收到的数据进行存储,完成后向节点进行反馈,并返回数据对应的地址Hash。组织节点将返回的Hash值作为普通数据进行上链操作。数据在联盟网络中,进行打包、背书验证,完成区块生成,最后存入区块链。

本文方案以Fabric为基础,设计出一个联盟模型,由若干组织构成,每个组织有且仅有一个Anchor节点,该节点也即为Leader节点。而Orderer节点除了完成交易排序、共识外,在联盟网络中还要考虑其容错,因此设置数量为:

[Numorderer=Numorgs3+1]                    (1)

将Orderer节点设置大于联盟内组织数的三分之一,可以从数量上为Orderer节点提供足够的容错空间。

方案中,一个物流企业对应一个组织,组织中的节点包含企业节点、物流网点节点等。这些节点在系统中都为普通peer节点,但企业主节点为Leader节点,该节点负责与其他组织通信。

4.2 数据上传

系统数据传输按照传输内容划分分为物流数据传输以及地址Hash传输两个部分。

物流数据由网点生成并发送至企业节点,第i个物流网点Ni向企业节点L中传输的数据格式为:

[TxNi=EPKLP(Data||CertNi||SigsignNi|timestampLP           ](2)

其中,[PKNi]为节点Ni的公钥,[EPKLP]为利用[PKLP]加密信息,Data为从主节点LP从节点Ni获得的数据,[CertNi]为Ni身份信息,[timestampLP]为时间戳,[SigsignNi]为利用实体Ni的私钥对[Data]哈希运算后进行的签名数据。Data数据在传输时将由Peer节点第一次加密。

[Data=EPKNiDataNi||timestampNi]             (3)

[DataNi]代表物流网点Ni获取的原始数据,该数据在Ni中进行初始加密,并生成签名。

企业节点向区块链网络发送上传请求,调用智能合约并将地址Hash等参数传入区块链网络。区块链节点收到请求首先验证用户身份,通过后执行智能合约将哈希值、ClientID、企业节点ID、数据收集时间等绑定并进行打包、发送给Orderer进行排序,再由Endorsing节点进行背书。之后将智能合约执行结果写入区块链账本,反馈给收集节点客户端信息保存情况。

4.3 数据存储

IPFS所存储的数据将被Hash后存入一个默克尔无回路有向图(MerkleDAG)以保证数据的安全性,此Hash值被称为地址Hash。然后,将地址Hash存入区块,从而取代原有的数据。IPFS中,使用两次SHA256算法,再进行Base58编码,生成的Hash长度为33Byte,使用地址Hash替代原有数据,因此将原有的快递信息替换为Hash地址,将大幅度减小一个区块的大小,从而实现整个区块链的“瘦身”。

方案中,在数据存储至IPFS时,将对数据进行验证。Leader节点利用自身私钥,对其进行身份验证确定数据来源,并计算相应的公钥,解码签名,再对Data进行哈希加密得到Hash值,与发送节点发送来的数字签名解密得到的Hash值进行校验,若两个数据相同则通过校验,验证数据正确。如果数据来源安全且完整有效,数据收集节点客户端向IPFS请求将信息存储到IPFS中。

4.4 区块生成

方案中,收集到的交易实际上为IPFS返回的地址Hash,节点接收到数据后运行区块创建程序,构建交易提案并提交给相应的背书节点,背书节点对接收到的交易提案请求进行验证。验证通过后调用链码进行模拟执行,产生包括响应值、读写集的事务结果,对结果进行背书并响应给应用程序。应用程序收集到足够的消息和背书签名之后,构建合法的交易请求并将交易请求广播给Orderer服务节点。Orderer节点接收到事务请求之后,按时间顺序对它们进行排序,并创建交易区块。之后广播给同一通道内所有组织的Leader节点,Leader节点再同步广播给组织内的其他节点。每个Peer节点将区块附加到区块链中,读写集被提交到当前的状态数据库中。区块上链工作就此完成。

本方案为了实现简化查询,要求各节点获取的地址Hash除上传区块链外,需要保留一份无加密副本。副本仅保存地址Hash与节点相关信息,可用于不保证可靠性基础上的数据快速查询。

4.5 数据查询

由于数据被存储到了IPFS之中,因此单纯从Fabric中无法查询原始数据,节点需从区块链中获取地址Hash,而后再根据地址Hash在IPFS获得相应数据。其查询流程如图2所示,某一节点发起查询请求,执行智能合约。从区块链账本中检索出查询信息对应的哈希记录并返回。由于在传输存储过程中,原有物流数据已经进行加密,仍须获得相关节点的密钥。查询节点获取IPFS中加密的数据以及用于解密的私钥即可对数据进行解密,获得原始数据。

如果数据被恶意修改或替换,其地址Hash将与节点从区块链中获取的Hash不一致,节点就无法获取数据,此时应当返回数据异常错误。如果数据正常则可得到响应数据。

上述查询方式涉及两次数据读取,并且存在验证步骤,从一定程度上会降低效率。而IPFS本身的查询接口就可以实现对于物流数据查询,因此,在不要求数据高安全性的情况下,可以跳过区块链系统,直接使用IPFS进行查询,如图3所示。

联盟内部节点要想直接获取数据,其步骤与上述查询模式基本一致,不过省去了调用智能合约访问区块链的步骤,直接调用节点存储的数据副本中的地址Hash。整个过程,联盟网络内部只有一条请求数据、一条响应数据。直接使用IPFS查询这意味着,数据可以面向非联盟节点,当节点Ea想要获取数据时,必须通过客户节点CLi发送请求,联盟对CLi进行身份验证,并根据请求通知相应节点Ni,Ni自行进行数据获取后,将加密后数据发送给Ea,外部数据查询完成。

5 系统实现

本文提出的基于IPFS优化的区块链物流信息管理方案,区块链层采用Linux基金会主持的Hyperledger Fabric项目构建的。方案部署了一个orderer节点、两个org组织、四个peer节点,并在组织中部署了相关链码。

本文设计的系统模型与原始区块链模型存储相同数据容量对比如图6所示,本系统生成的区块比原有普通区块的缩小了超过75%,在很大程度上缩减了区块链的容量。

6 总结

本文实现了一种基于IPFS的区块系统模型,并将其在物流联盟领域进行应用,本文方案主要利用IPFS進行数据存储,预期实现减少区块链上数据大小目标。上一章对数据进行对比可得出结论,本文方案可以实现减少数据量这一目标。不过,方案的实现是以查询效率为代价的,在之后的工作中,将继续探究方案对效率的影响,尽可能少的影响查询时间,在空间与时间上做到最完美的平衡。

参考文献:

[1] Liebeherr J, Dong G. An overlay approach to data security in ad-hoc networks[J]. Ad Hoc Networks, 2007, 5(7): 1055-1072.

[2] J.Benet.IPFS-Content Addressed, versioned, P2P File System, https://ipfs.io/,Online; accessed Jul. 28th, 2017.

[3] R.Norvil. IPFS for reduction of chain size in Ethereum[C]. IEEE 2018 International Congress on Cybermatics,2018:1121-1128.

[4] Y. Chen.An improved P2P File System Scheme based on IPFS and Blockchain[C]. IEEE International Conference on Big Data,2017:2652-2657.

[5] Q.Zheng,Y.Li and P.Chen,An Innovative IPFS-Based Storage Model for Blockchain[C]. International Congress on Web Intelligence,2018:704-708.

[6] 李瑾,仵松颀,张森林,等.基于区块链的分布式电能量数据可信存储机制[J].网络与信息安全学报,2020,6(2):87-95.

【通联编辑:代影】

猜你喜欢
数据存储区块链
大数据时代档案信息建设的认识和实践
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
用“区块链”助推中企走出去