《南陵县政府&国家邮政局邮政业安全中心:快递物流区块链应用研究报告(51页).pdf》由会员分享,可在线阅读,更多相关《南陵县政府&国家邮政局邮政业安全中心:快递物流区块链应用研究报告(51页).pdf(51页珍藏版)》请在三个皮匠报告上搜索。
1、基于网络编码的分布式存储框架(network coding-based distributed storage,简称NC-DS)属于协作式存储,网络编码是一种将编码和路由的信息交换技术,可以对接收的多个数据包进行编码信息融合,从而提高单次传输的信息量,进而提升网络整体性能25。NC-DS有两种实现,一种是码率确定的NC-DRDS,另一种是码率非确定的NC-RLDS。NC-DRDS机制取代同时输出数据包的形式,采用顺序输出的形式输出编码后的包。将大小为x的区块(或多个区块),切分成k个包,对其进行Reed-Solomn编码,得到n个编码包,存放至n个节点中(即一个节点保存至一个包)。倘若仍有节点
2、未保存,继续将k个数据包编码成2n个编码包,存放至2n个节点中。重复上述操作直至区块链网络中所有节点均保存了一个编码包,如图2-6所示。任意k 个编码包都可恢复原始数据包。而NC-RLDS机制则采用了一种二进制域随机偏移编码,将数据包右移随机位的比特然后按位的方式组合,同样以NC-DRDS的方式分发至区块链网络中的每个节点。基于纠删码(erasure code)能够设计降低节点的存储负担的LS(Low Storage)节点。区块先被切分成k个片段,再使用伪随机数生成器生成的系数对原始片段进行线性组合,生成编码片段并发送至节点。当节点需要恢复区块,只需从其它节点下载超过k个编码片段,对这些编码片
3、段进行逆线性变换,便可恢复出原始区块。当有新节点加入区块链网络中,首先从全节点或者其他LS节点处下载完整区块链,然后对每个区块进行验证,并生成编码片段。新节点将完整的区块删除,同时保留区块的哈希和编码片段。因此,LS节点在不需要存储完整区块链的情况下,仍然可以验证完整区块链。在基于DHT集群的存储平载均衡模型中,DHT由Chord协议26实现。在该方案中,区块链网络中的节点划分成若干个DHT集群,一个DHT集群中的若干个节点共同维护一份完整的区块链数据。区块链中的节点通常需要保存两部分内容,分别是区块数据和区块链状态。在该方案中,DHT集群中的一个节点只需要保存完整区块链副本中区块数据的一部分
4、,而区块链状态部分则需要区块链网络中每个节点都存储。新区块产生后,根据区块的散列值映射到Chord环的对应位置。根据哈希函数的特性,DHT集群内每个节点存储多少个区块满足均匀分布。DHT集群内,如果需要重复存储R次,则在Chord环中的节点的后面R个节点同样存储一次。如果一个区块在DHT集群内的所有节点都重复存储,那么此时DHT集群的节点就像全节点一样。在基于DHT集群的负载平衡模型中,DHT由Kademlia实现。在这个方法中,区块链中的节点分为两类,第一类在纯P2P网络中挖矿,称为挖矿节点,另一类在DHT网络中验证新交易和新区块以及保存区块链数据,成为数据节点。当数据节点产生了一个新交易,先广播至该节点所在的DHT集群中,然后集群中的其他节点将该交易广播至其他集群中。所有数据节点对交易进行验证,如果交易有效,将其广播至P2P网络中,挖矿节点收集交易,并重复此过程直至挖出新区块。根据新区块的哈希得到该区块的ID,与节点ID进行 XOR运算,得到与区块ID距离最近的节点所属的DHT集群。挖矿节点将新生成的区块广播至该集群,集群的节点对区块进行验证,并添加至区块链中。