基于NDN的区块链数据同步方法

2022-12-06 10:29马红桥杨文忠
计算机工程与应用 2022年23期
关键词:架构区块节点

马红桥,杨文忠,康 鹏

新疆大学 信息科学与工程学院,乌鲁木齐 830046

区块链技术在近年来引起了巨大的轰动,数字加密货币——比特币(Bitcoin)是该技术的来源。而“比特币”概念最早来源于2008年由“中本聪”所撰写的文献:《比特币:一种点对点的电子现金系统》[1],在其中所阐述的比特币底层记账系统即为区块链技术,这也是区块链亦被称作为一种“账本”技术的原因。所以在区块链技术初期,也即区块链发展的第一阶段是以比特币为代表的区块链1.0。久而久之,许多人将区块链混淆成为比特币,但是,比特币只是区块链技术的一种应用,其解决了数字货币集中交易的问题,目的是实现以去中心化和绝对安全的方式追踪金融体系下虚拟代币的发行和流动。此后,受到比特币区块链的启发,2013年Vitalik Buterin首次概述了以太坊[2](Ethereum)背后的概念:图灵完备的通用区块链——一种能够被重编程用以实现任意复杂计算功能的单一区块链[3]。之后伴随着以太坊第一个区块在2015年被挖出后,开启了以Ethereum为代表的区块链2.0时代。自此区块链也开始脱离“区块链即比特币”的固化印象,从而以一项技术的身份走进大众视野。并且在此之后,借助以太坊的成功,区块链技术受到众多技术人员的关注,发展成为近年来最具革命性的一项新兴技术而被广泛应用到各种领域场景中,而且在某种程度上其已发展成为从金融、工业物流到医疗保健等广泛社会领域的信任基石[4]。

然而不幸的是,现实世界中区块链技术的应用遇到了重大的技术挑战,从而阻碍了它在一些其他重要领域的进一步发展,特别是考虑到系统的整体性能(如时间消耗),区块链的技术优势被极大地缩小。时间性能问题可归为区块链的可扩展性问题[5],这是因为较差的时间性能阻碍了更多区块链节点的加入。其主要包含两个方面[6],首先是区块链的低吞吐量造成交易时间过长,其次是区块链巨大的数据容量使得全量数据的同步时间过长。而且随着区块链技术的持续发展与应用,不断增加的数据容量只会使得该问题被无限地放大。

针对上述问题,近年来的研究热点都主要集中在推进共识层中的共识算法来提高事务吞吐量,从而降低交易延迟(如文献[7-11])。部分研究通过优化数据层中的数据存储进行解决[4],如文献[12]引入了一个称为共识单元的新概念,并提出块分配问题的解决方案来减少每个节点的存储开销。此外,少量文献以对立的角度通过压缩区块的大小进行解决,这是因为通过增加“块”的大小来包含更多的交易,可以间接提高吞吐量,而“块”的压缩不仅可以达到同样的效果,还可以减少存储开销,如文献[13]。

然而针对可扩展性问题很少有研究从网络层(即位于两层之间)进行,并且共识层和数据层的解决方案并不是最佳的解决方案。这是因为共识层作为区块链的核心,对共识算法的改造很容易引入安全问题,或会牺牲区块链重要的去中心化属性,而数据层的解决方法显然如前所说,伴随着区块链技术的火热应用,其只是一种暂时的解决方案。

因此在该问题现有的研究中,针对网络层的极少研究,使其忽略了一个关键性问题,即无论从共识层还是数据层对该问题进行研究,其在最终都无法避免底层的数据传输过程。而且通过理论分析,在区块链的网络层确有改进的空间。

这是因为现有的区块链技术都是在点对点(peer-topeer,P2P)网络中基于传统的TCP/IP网络架构,通过应用层多播实现区块数据的同步及传输,然而该架构的缺陷在于不同的终端用户对相同数据内容的请求是独立的,由此使得区块链网络中在区块同步时会存在大量的冗余流量,从而占用较高的带宽而导致了较大的数据传输时延[14]。

并且如前所述,随着区块链技术的火热以及以太坊中分布式应用程序(decentralized applications,DApps)的流行,区块链上的交易将爆发式增长,因此伴随着时间的推移,必将会使整个区块链的数据容量越来越大(目前,比特币网络完整的账本数据容量占用高达200 GB,并且这个数字在以每天约0.1 GB的速度不断增加[15]),由此对区块链节点的硬件存储及数据同步时间提出更高的要求,特别是时间要求(在网络环境优良前提下,首次启动时可能需要几天时间才能完全同步[3],而且预测后续会更久,且无上限)。时间的宝贵性使得众多用户无法接受漫长的等待,从而放弃加入区块链网络,由此导致前述的节点扩展性问题。这是一个关键性问题,因为在区块链网络中少量的节点不能为对应场景下的区块链提供可靠的权威性,从而失去了原有区块链的应用意义。以报纸销量为例:由不同媒体机构在同一天发行的不同报纸中,某一媒体发行的报纸其销量越高,则说明该媒体发行的报纸受到众多读者的认可,而读者越多则表明其包含的新闻内容更加权威可信,反观销量惨淡的媒体,说明其新闻内容,或有不同程度的问题存在,长期下去该媒体机构便不再具有存在的意义。将其映射到区块链环境中,可以将某一媒体机构发行的所有报纸理解为完整的区块链账本,每一天的报纸(即区块)记录每一天的新闻内容(即交易),而销量反映出的读者量为加入区块链网络中的节点数。因此前述节点的可扩展性,其重要性不言而喻。

命名数据网络[16-17](NDN)是由美国国家科学基金会于2010年所发起的未来网络架构研究方案之一,该方案的主旨为开发下一代新型网络架构,并取代现有的TCP架构[18]。而NDN由于其自适应转发、网内存储及本地多播的优势,使其在众多方案中脱颖而出,并已成为构建未来新型互联网体系结构中最具希望的候选者[19],同时其也已被引入为互联网新型的网络通信范式[20]。通过对其深入地分析与研究,其自有的自适应转发正好可以有效解决上述区块链技术中数据内容请求独立的问题,同时NDN网内存储及其本地多播优势可以进一步优化区块链网络中数据同步的传输效率问题。由此NDN与区块链融合的技术研究吸引了众多的学者[21]。

此外NDN打破传统TCP架构原有以主机为中心的通信模式(数据的获取必须事先获取数据宿主的IP地址),转变为以内容为中心的通信模式,使得其只关注内容,这在某种程度上和区块链的技术表现相符合,即隐藏交易各方的信息,但却公开透明交易的内容,从而凸显出二者天然的契合性,进一步说明NDN有可能成为区块链一种新型的底层网络架构。由此扩大了基于NDN的区块链网络层的研究。

在文献[22]中,作者提出了BlockNDN,一种在NDN网络上构建区块链的方案,旨在改善IP制度下区块链的单点故障和不利于多播的问题,减少传播延迟和数据传输开销。文献[23]中的作者提出了一种基于NDN的分布式点对点网络层,用于区块链数据传输。文献[24]中的作者通过提出DIBN来解决由于流量与P2P上层网络中底层网络拓扑不匹配而导致大量冗余流量的问题。

然而这些研究虽探索了NDN与区块链的初步融合并取得了一些成果,但它们仍然存在一些问题。如这些方法通过选择志愿者或种子节点来执行相应的功能,这在某种程度上增加了集中化,显然与区块链的去中心化设计原则相背离。此外,由于区块链节点随机生成区块,因此在生成区块之前,这些方法需通过特定的命名机制向网络不断地广播兴趣请求包来完成同步,由此产生了部分冗余流量,消耗了部分带宽。

因此基于以上分析,本文创新性提出一种“NDN+区块链”的结构,旨在解决现有研究中所存在的问题,以期高效实现区块链底层网络基础设施从TCP架构到NDN架构的初步转变,从而进一步解决区块链技术的自身限制问题。

1 区块链和命名数据网络

1.1 区块链

首先从数据结构角度理解区块链。类似于其名称定义,区块链是一种“链”式结构,由基于密码学方法生成的一系列数据块组成,每个数据块都是块链中的一个块,块根据它们的创建顺序有序地迭代链接在一起,数据链的链接指针为区块头中的哈希值,该哈希可以唯一标识一个区块。由此,通过链接到其父块的哈希,可以创建从最新块到第一个块(创世块)的单向链表,从而形成所有块的链式数据结构,如图1所示。

图1 区块链数据结构Fig.1 Blockchain data structure

其次,区块链是一种数字系统,其主要功能是记录并存储信息,其中最常见的信息是涉及金融的转账交易信息,同时区块链还支持对交易信息进行回溯审计,因此,从功能角度讲区块链实质为一个数据库系统,然而其与传统的数据库系统并不相似,这是因为交易信息的记录是由区块链网络中的所有节点共同维护更新的,而存储是在网络中的可用节点之间分布式共享存储的,显然这与传统数据库的中央数据存储方式存在巨大的差异。因此可以将区块链形式化理解为一个特殊的数据库系统。以Bitcoin为例,图2为区块链交易处理过程,该过程也正是其特殊性的表现。其主要过程可以概述[25]为:

图2 区块链交易处理Fig.2 Blockchain transaction processing

任意用户发起一笔转账交易,在签名加密后被发送到区块链网络中等待验证。验证由矿工节点负责,区块链网络中所有的矿工都执行同样的验证检查,一旦交易有效,该交易将成为候选新区块的一部分(每个矿工都有自己的候选块),而这也意味着它尚未成为区块链的一部分。在区块链中所有节点都是对等节点(无主从关系),从而具有同等权利向区块链提交并合并自己的候选区块,为了确定应该合并哪个节点的候选区块以避免出现混乱,矿工必须提供工作量证明(proof of work,PoW),这一过程也被称作是共识(consensus),即在去中心化的区块链网络环境中选择出唯一一个最大概率不会对网络造成损害的节点进行记账。第一个解决PoW难题的矿工在将候选区块合并到本地区块链后会将其广播给其他的矿工节点,其他矿工节点验证该区块PoW解决方案的正确性,验证成功后该候选区块的所属者即第一个解决PoW难题的矿工会获得固定的“奖励”,同时该候选新区块也将合并到自己的本地区块链中。从这一刻起,剩余的矿工节点将停止解决当前候选区块的工作量证明,并开始处理下一个区块,此工作流一遍又一遍地重复。

1.1.1 区块链节点

在区块链网络中,客户端帮助每个参与者接入区块链网络从而成为一个区块链节点,其客户端通常为运行区块链协议并存储交易历史记录的众多应用软件之一(如Geth)。然而区块链的去中心化设计,使得区块链节点成为可能执行不同功能的通信节点,因此在区块链网络中存在不同类型的区块链节点,如主要的两类节点:全节点(full node)与轻节点(light node)或简单支付验证节点(simple payment verification,SPV)。

全节点充当区块链网络中的服务器,其主要任务是维护其他节点之间的共识和交易验证,此外它还存储完整的区块链历史副本,由此可以完成对所有交易的权威验证,而这也是区块链最为安全的验证方法[26]。但自然地,其给用户带来了硬盘空间及时间的高要求,因为随着时间的推移,交易的累积使得区块链的数据容量越来越大,所以新加入的节点要想下载完整的区块链历史副本从而快速地加入区块链网络并不是一件容易的事情,即便是在网络环境优良的条件下也较困难。相比之下轻节点便不再有此类问题,其是日常加密操作中使用的另一种类型的区块链节点,这些类型的节点与区块链通信,并依靠完整节点为其提供必要的信息,以便与网络的当前状态同步并能够参与其中,也即其只能发送交易。但由于它们不存储链的副本,所以它们仅可查询最后一个块的当前状态,并广播事务以进行处理。很显然,为了方便轻节点不需要很多资源,这导致其牺牲了安全性。所以全节点的重要性不言而喻,而其也是在区块链上执行最重要任务的唯一节点类型,如挖矿任务。

1.1.2 区块链矿工任务

以Bitcoin为例,一旦节点连接到比特币网络,比特币矿工就会执行以下几项任务:

(1)与网络同步:一旦新节点加入比特币网络,它就会通过其他节点来请求下载完整的区块链历史副本。

(2)交易验证:全节点验证区块链网络中广播的交易签名及其输出,避免转账人余额不足出现问题。

(3)区块验证:矿工和全节点可以根据某些规则评估它们收到的区块来验证它。这包括验证区块中的每笔交易及随机数值(区块头中的Nonce值)的正确性。

(4)创建新区块:矿工在验证完成之后,将这些交易打包,从而发布一个新区块。打包的交易越多其在之后收到的“奖励”越多。

(5)执行PoW:此任务是挖矿过程的核心,需要矿工通过计算哈希难题来挖出一个有效的区块。该难题的原理为,矿工需要反复改变随机数,来计算出区块头中包含的一个32位哈希随机数,直到生成的哈希随机数小于预定的目标。

(6)获取奖励:一旦矿工解决了哈希难题(PoW),它将新区块附加到本地链上,并将解决方案传播到网络,其他节点验证解决方案的正确性,然后矿工获得固定的“奖励”。

1.2 命名数据网络

命名数据网络的优势使其在近年来受到了众多未来互联网研究学者的青睐。如图3所示,NDN与传统TCP网络架构的关键区别在于NDN是以内容为中心的新型通信模式,而不再是TCP网络架构以主机为中心的通信模式[27]。具体来说,在TCP网络中,要想获取所需的内容数据,需首先明确内容数据所在的IP地址,而且数据的检索范围全部局限于该已知IP地址服务器中所存储的数据;而在NDN中,所有的数据内容都是通过唯一的名称进行标识,该名称遵循预定的命名规则具备人类可读性。如2022年新疆大学招生宣传片可以表示为/xju.edu.cn/videos/recruit.mpg/2022/。而网络用户在检索数据内容时也可按照命名规则,输入带有语义信息的名称在全网范围内检索内容数据,如检索新疆大学2021年的招生宣传片可以表示为/xju.edu.cn/videos/recruit.mpg/2021/。需指出的是检索范围是在全网范围,不再关心数据服务器的位置。

图3 TCP网络与NDN网络体系架构Fig.3 TCP network and NDN network architecture

1.2.1 NDN通信组件

NDN的通信可以分为兴趣请求包(interest packet)发出和内容数据包(content packet)传回两个过程,两种数据包中携带所检索内容数据的名称,并且整个NDN通信过程都是基于这两种网络数据包在运行。在整个通信过程中每个NDN节点都会在本地维护更新三个信息表[28]:内容缓存库(content store,CS)、待转发兴趣请求表(pending interest table,PIT)、转发信息表(forwarding information base,FIB)。

(1)CS:对接收到的内容数据短时间缓存,以响应(也称作被满足)后续到达的相同内容数据的兴趣请求包,因此兴趣请求包可以被内容生产者或NDN中间节点的内容缓存满足,也即在NDN网络中,数据宿主可以为内容生产者或是多个NDN中间节点,因而相较于传统的TCP/IP网络中单一的服务器数据宿主,NDN网络的数据共享更加高效,并且中间节点的内容缓存使得兴趣请求包可以快速地被响应,一定程度上对网络带宽进行了优化,同时缩短了通信时延,进而可以有效地提升数据的传输效率。

(2)PIT:存储所有未被满足的兴趣请求包,也即等待被响应后传回对应内容数据包的兴趣请求包。在该信息表中会根据兴趣请求包所包含的内容名称进行汇聚。如果有多个相同的内容数据请求,则只会转发一个请求包,剩余以及后续到达的相同内容数据的请求包会被汇聚到该表中,用端口号(NDN中用Face表示)标识不同的主机请求。如果被转发的兴趣请求包被满足而传回对应的内容数据,则该内容数据会根据表中汇聚的端口号同时多路径地传回,这一转发机制使得NDN天然支持多播转发。

(3)FIB:类似于TCP/IP网络中的路由信息表,不同的是FIB中是对内容名称的路由转发信息,而非数值型的IP地址。

1.2.2 NDN路由转发

如图4所示为NDN对两种数据包(兴趣请求包、内容数据包)的路由转发流程。当NDN中间节点收到兴趣请求包后,将根据兴趣请求包中的内容名称以不同的匹配方式在CS、PIT、FIB三个组件中依次进行查询,也正是由于对三个组件的查询使得NDN具备网内存储、本地多播、自适应转发的优势。

图4 NDN网络数据包路由转发流程Fig.4 NDN network packet routing forwarding process

兴趣请求包到达后,首先在CS中对请求的内容数据通过名称以精准匹配的方式进行查询,如果存在,则直接传回CS中对应的缓存内容并丢弃该已被满足的兴趣请求不再进行转发,缓存内容的传回路径为兴趣请求包传入的反向对称路径。如果CS中不存在则在PIT中查询。如PIT中存在匹配条目,则表明早前收到过同样的兴趣请求包,正在等待被满足,则需要把该兴趣请求包的传入接口添加到PIT对应的Face请求列表中,等待被满足响应,同时丢弃该兴趣请求包。如果PIT中无命中项,则说明该兴趣请求中的内容名称是第一次被请求,则在PIT中新增一条记录条目后查询FIB,记录内容为兴趣请求包中的内容名称和该兴趣请求包传入的Face标识号。如在FIB中查询到对应的内容名称条目,则表明当前节点可以处理该兴趣请求,这时将根据FIB对应表目的Face列表转发该兴趣请求包,否则表明当前节点无法处理该兴趣请求包,于是将其丢弃。

相比之下内容数据包的路由处理则较为简易,其传输路径即为兴趣请求包的传输路径,只是二者的方向相反[29]。此外内容数据包在传输过程中会被存储在CS中,以快速满足后续相同的内容请求。

2 基于NDN的区块链数据同步

2.1 问题引述

随着区块链技术发展得火热,基于区块链技术的应用受到了空前的关注,由此区块链上的交易也随之增多,从而间接造成了区块链的数据容量越来越大。因为共识机制及区块链的冗余备份,区块链网络要求共识节点需保存全量的区块数据,而同步大量的数据是非常消耗时间的,同时也相当耗费带宽资源,容易造成网络拥堵问题,一定程度上降低了用户体验度。特别是新加入的节点,要想短时间内同步完所有数据从而快速地进入工作状态是很难完成的,这使得用户无心加入区块链网络,导致了节点可扩展性问题。因此为使区块链任意节点可以快速加入系统提升用户体验度,并高效稳定地工作,需提供一种技术方法,而该方法的设计目的在于其可以有效解决上述数据同步的问题,极大地减小待同步节点的数据压力。

2.2 NDN区块链架构

现有的区块链技术其底层网络大多都是在P2P中基于传统的TCP网络架构通过应用层多播进行传输,这使得不同终端节点对于同一个数据内容的请求相互独立,由此使得网络带宽被大量的冗余流量占据,从而导致较高的数据传输时延,也即2.1节所描述的问题。因此问题的解决,其关键在于改变底层网络架构,而该新型网络架构的设计应可以消除同一内容数据请求的独立性。

如1.2节所述下一代新型网络体系架构命名数据网络正具有此方面的优势,其借助自身的三个关键组件(CS、PIT、FIB),实现同一数据内容请求的高效多播转发,可极大满足上述问题需求。并且由于NDN其关注点在内容本身而非类似于TCP的主机IP地址,这在某种程度上和区块链的设计思想相符合,即将交易方的信息隐藏,但却公开透明交易中的内容。由此本文提出基于NDN的区块链数据同步方法,将NDN与区块链技术结合,利用NDN网内缓存及本机多播优势有效解决上述区块数据同步的效率问题。如图5所示为所提方法实施的部署架构图,在区块链节点同一主机上部署对等的NDN节点构成NDN对等体,每个NDN对等体通过在本机上运行的NDN转发守护进程(NDN forwarding daemon,NFD)接入至一个公开的或局部的NDN网络,客户端通过本地NFD发送和接收NDN数据包。图5中区块链节点身份可以为数据落后的非实时节点即待同步节点,或是拥有最新状态数据的实时节点。

图5 NDN区块链架构Fig.5 NDN-blockchain architecture

2.3 NDN区块命名

由于NDN以不同的通信范式使得网络只关注“是什么”(数据)而非“在哪里”(IP地址),因此在NDN中数据是第一位的,即以名称标识的内容为核心,所以名称是NDN通信的关键,然而NDN的数据命名并不是普通意义的在众多数据中标明出确定唯一的数据,而是需要遵循预定的规则,因此将区块链与NDN结合的关键在于如何定义命名规则。根据NDN类URL的层次化命名机制及不同的应用场景,本文的命名规则分为最新状态兴趣请求和区块同步兴趣请求两类,如图6所示。

图6 NDN区块链命名Fig.6 NDN-blockchain name

两类不同的命名方式均包含两个部分,第一部分遵照NDN既定的命名原则,属于全球可路由的内部结构名称,是固定的,也即为NDN区块链进行区块同步时的专有名称。第二部分为NDN的命名惯例,是由用户自主定义的,但需遵从NDN的命名规范,如为避免错误该名称内容应唯一地标识一个内容数据,同时为便于检索应具备人类可读性。因此区块号可以作为本部分内容。其中图6(a)用于节点的状态请求,通过该请求,节点可以获悉当前区块链网络的最新状态,从而可以以最新状态为依据通过图6(b)的名称完成区块同步,具体的同步过程在2.4节阐述。

需说明指出的是两类兴趣请求名称中所包含的区块号含义是不同的。在最新状态兴趣请求中,区块号是节点现有最高区块的区块号,实时区块链节点利用自身的最高区块号与该区块号进行比较,即可知晓待同步节点需要哪些区块,从而实现区块增量更新。而在区块同步兴趣请求中,区块号是节点所缺区块的区块号,实时节点响应区块同步兴趣请求后传回对应的区块数据。

2.4 NDN区块同步方法

如图7所示为NDN区块链数据同步的逻辑结构图,其包含以下步骤:

图7 NDN区块链数据同步流程Fig.7 NDN-blockchain data synchronization process

区块链待同步数据节点(新加入或宕机原因重新进入网络的节点)发现自己已经落后于实时区块链节点,需要进行数据同步,其中由于宕机节点本地已存有部分数据,所以只需增量同步。

因为待同步节点并不知道当前区块链的最新数据状态,所以待同步节点需首先向NDN网络发起最新状态兴趣请求,该请求携带本节点最高区块号,以向网络通告自己当前的不完整状态,如“/eth/blocklateststate/1”。

NDN任意网络节点收到最新状态兴趣请求之后,在本地区块数据中进行比较,如果本地最高区块号大于收到的区块号,则说明该节点数据状态较新,并传回最高区块号信息,也即传回最新区块状态信息。节点收到返回的最高区块号信息后,以该状态为依据向全网发起所缺区块的区块同步兴趣请求,最终完成数据的同步更新。

如果最高本地区块号不大于收到的区块号,则该任意NDN网络节点非实时区块链节点,从而变为待同步节点执行上述同样的区块同步步骤,实现增量同步,而原先的最新状态兴趣请求会被其他实时区块链节点满足后执行对应的步骤。

需指出的是,由于NDN网络具有网内存储功能,即NDN中间节点会存储同步过程中传回的区块数据,同时当中间节点满足区块同步兴趣请求时,可直接将中间节点缓存的区块数据传回,再无需传输区块同步兴趣请求至实时区块链节点,从而优化其他相似待同步节点(所缺区块号相同的节点)的数据同步效率,进而有效解决前述问题中同一内容数据请求独立的问题。

图8所示为区块增量同步的示例。Alice是新加入网络的节点(只拥有创世区块),Bob已经断开连接较长一段时间(拥有部分区块),在当前状态下,他们由于错过了很多块而不是实时网络节点。Cherry和Dave拥有系统生成的全量区块(最高区块号为80)是实时网络节点,因而其区块链是一样的。Alice和Bob将携带自身当前状态的兴趣请求发送到NDN网络。Cherry和Dave收到状态请求后返回最新状态消息至NDN网络。Alice和Bob接收到最新状态消息后,以最新状态为依据向NDN网络发送所缺区块的同步兴趣请求。最终Alice和Bob通过NDN网络的自适应转发及网内存储机制高效地实现全量区块同步,完成最终同步后Alice和Bob的最长区块链是一致的,其最高区块号为80。

图8 NDN区块链数据同步示例Fig.8 NDN-blockchain data synchronization example

2.5 仿真分析

为验证上述所提方法的有效性,本文通过仿真模拟实验,将NDN与传统的TCP网络进行对比分析,并额外地与典型的区块链NDN网络传输方法(BlockNDN)进行了优势对比分析。

所有的实验都在本地计算机集群上进行,每台计算机都装配3.1 GHz的i5处理器,8 GB RAM。计算机运行的操作系统是Ubuntu 20.04。实验开始前须在每台计算机上成功安装版本为0.7.1的ndn-cxx库和版本为22.02的NFD。其中ndn-cxx是基于C++实现NDN平台的库,可用于编写各种NDN应用程序。而NDN转发守护进程(NFD)是NDN体系结构的核心组件,用作软件路由器,并在网络路由器和终端主机上运行,以便完成数据的通信交互。此外还需安装以太坊区块链平台的客户端Go-Ethereum(简称Geth)。所有的库及客户端都是从源代码编译而来的。完成上述准备工作后,根据前述设计思想对以太坊源码改造,图9为源码改造成功后两个区块链节点NDN对等体连接成功的运行输出显示。

图9 区块链节点NDN对等体连接日志输出Fig.9 Blockchain node NDN peer link log output

仿真实验的实验网络由8个物理主机组成,分别构成8个区块链节点或8个区块链NDN对等体。实验过程中选取一个主机作为主节点或NDN关键对等体向其他任意一个主机发送转账交易,从而形成交易上链的模拟环境。每当交易产生后区块链网络便会根据图2所示的流程对交易进行处理,在此期间会因数据同步而产生流量。通过开源工具BitMeter对某个节点的流量数据进行分析,得出如图10所示的区块链在不同网络架构下的网内流量占比,也即网络的带宽占用情况。此外仿真结果还与典型的区块链NDN网络传输方法(BlockNDN)[22]进行了对比。

图10 流量分析Fig.10 Traffic analysis

从图10中可以看出,在初始阶段两种不同网络架构下的带宽利用率相近,但是随着时间的推移,NDN区块链表现出较好的效果,这主要是因为数据包的累积,使得NDN的网内存储及自适应转发开始发挥优势,特别是网内存储优势消除了在原有TCP架构中存在的冗余流量,从而在一定程度上减少了区块同步所消耗的时间。此外,与典型的BlockNDN方法相比较,本文所提出的方法一定程度上进一步优化了网络带宽,具体分析其主要原因在于,本文在数据同步时,通过最新状态兴趣请求名称(图6(a))只需发送一个兴趣请求包即可获得当前的网络状态,进而完成大容量数据的高效同步,而非BlockNDN因不知下一个区块的信息需要不断地发送兴趣请求包,从而产生了部分冗余流量。

图11所示为两种不同底层网络架构下,区块链节点同步区块的耗时情况。从图中可以看出:初始时由于区块数较少,而且区块大多都是第一次被请求,因而NDN网内存储不能满足区块的同步请求,只能由实时区块链节点满足,所以在这一阶段NDN并不能发挥出高效转发的优势,这与图10前段的结果类似。但是随着时间的增长以及交易的累积使得区块数量越来越多,除新生成的区块外,不再存在区块被第一次请求的情形,所以NDN网内存储可以满足后续的区块请求,典型BlockNDN与其相似的对比结果也可验证该点,因为其都借助了NDN的转发优势,该优势不仅可以消除部分冗余流量,还极大地缩短了数据传输时延,因此在图中后半段,二者开始出现较为明显的差异,而且随着图中折线的趋势,可以预测出随着后续时间的持续推进,也即随着区块数量的不断增长,“NDN+区块链”结构相较于TCP架构将呈现出更加明显的数据传输优势。

图11 区块链在不同架构下区块同步时的时间消耗Fig.11 Time consumption of blockchains when block synchronization under different architectures

3 结论与展望

本文考虑到区块链底层TCP网络架构带来的缺陷,从本质出发提出了“NDN+区块链”结构,以期实现区块链底层网络基础设施从TCP架构到NDN架构的转变,用以有效解决区块链数据同步带来的高时延问题,从而消除区块链在各领域发展所面临的节点可扩展性这个技术挑战。

该结构的设计思想在于NDN作为下一代新型网络架构最具希望的候选者,其在设计之初就考虑到了TCP架构的数据传输问题,自然从理论角度分析,NDN的引入可以优化区块链底层网络架构导致的数据传输效率问题。此外,NDN的关注点在内容本身而非类似于TCP架构的IP地址,这与区块链的技术表现相符合,即隐藏交易各方的信息,但却公开透明交易的内容,因而再一次表明NDN可以为区块链技术提供一定的通信支持。通过仿真实验的分析,表明“NDN+区块链”结构确可以替代TCP而表现出优异的性能。此外本文所提出的结构,创新性地设计了最新状态信息的请求,因而与典型的区块链NDN网络传输方法(BlockNDN)相比,表现出较好的带宽优化。

在未来的工作中,还需进一步将NDN与区块链技术进行融合,这包括区块及交易的广播都由NDN进行支持,从而极大优化区块链的吞吐量性能及交易确认时间。而二者融合的关键问题在于如何有效解决区块泛洪式的广播机制和NDN订阅式的机制之间的融合。

猜你喜欢
架构区块节点
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
概念格的一种并行构造算法
结合概率路由的机会网络自私节点检测算法
采用贪婪启发式的异构WSNs 部分覆盖算法*
《红楼梦》的数字化述评——兼及区块链的启示
构建富有活力和效率的社会治理架构
区块链助跑财资管理
Crosstalk between gut microbiota and antidiabetic drug action
一场区块链引发的全民狂欢