Abstract
区块链技术提供分布式账本,点对点(P2P),加密技术和智能合约的智能融合,以实现无需任何第三方的可信赖应用程序。 现有的区块链系统要么通过从控制平面推进分布式共识协议就成功解决了可伸缩性问题,要么通过从数据平面更新块结构和加密算法来补充安全问题。 然而,我们认为,底层P2P网络平面仍然是加速总体区块链系统性能的重要但未解决的障碍,可以从网络的速度和可靠性方面进行讨论。 为了提高实现快速可靠广播的区块链网络性能,我们建立了一种考虑了传输速率和传输可靠性的信任增强型区块链P2P拓扑。 传输速率反映了区块链网络传播事务和区块的速度,传输可靠性揭示了在不可靠的网络连接下传输速率是否会急剧变化。 本文介绍了BlockP2P-EP,这是一种新型的信任增强型区块链拓扑,可以加快传输速率并同时保持传输可靠性。 首先,BlockP2P-EP操作地理接近感应群集,该群集利用K-Means算法将接近对等节点收集到群集中。 接下来是基于节点属性分类的层次化拓扑结构,可确保强连通性和小直径。 然后我们提出建立信任增强网络拓扑。 在增强信任的区块链拓扑之上,BlockP2P-EP进行并行生成树广播算法,以实现在节点内部和集群之间的快速数据广播。 最后,我们采用有效的节点失活检测方法来减少网络负载。 总结BlockP2P-EP协议的有效性,我们精心设计并实现了一个区块链网络模拟器。
具体方法
上图概述了BlockP2P-EP协议的工作方式,该协议由五个部分组成:节点群集,拓扑构造,信任值计算,广播优化和节点失活检测。 首先,为降低构建整个网络的网络拓扑的复杂性并确保群集之间的并行广播,设计了一种基于K-Means算法的地理邻近感测聚类(GPSC)方法[23]。 其次,提出了一种结构化的层次网络拓扑结构(SHNT)方法,以构建具有较高网络连通性和较小直径的节点连接拓扑结构。 第三,我们提出了一种分布式反馈信任值(DFTV)方法,以基于每个节点计算出的信任值来建立和维护牢固的连接。 第四,我们设计了并行生成树广播(PSTB)机制,以并行化集群内和集群间节点中的广播过程。 最后,采用了一种订阅节点失活检测(SNID)算法来保证网络的可靠性。
节点群集
拓扑构造
广播优化
信任值计算
使用分布式P2P信任模型来激励节点传输,并通过奖励机制提高网络可靠性。 具体来说,使用任何两个节点之间成功进行区块链数据传输(即交易)的频率来反映信任关系。
分别建立两个不同的信任模型:集群内信任模型和集群间信任模型。
1)集群内信任模型:集群内模型中的信任值由两部分组成:任意两个节点之间的直接信任值 DTrab 和间接信任值 InDTrab 。 首先,在等式(4)中定义的nodea和nodebis之间的直接信任值:
Sab 表示成功数据传输的次数, US 表示不成功数据传输的次数。 如果两个节点之间没有交互历史,则直接信任值将设置为0。
由于直接信任值无法仅通过一个邻居的主观评估来完全评估节点的诚实度,因此引入了间接信任值InDTrab。 间接信任值可以指示节点的长期历史行为,并更客观和公平地反映信任值。
DTrmb表示一个网络集群中的推荐节点与节点b之间的本地直接信任值.DTram表示节点a和推荐节点之间的直接信任值。A( b)是节点b的推荐节点集。 可以看出,节点将较高的权重赋予了具有高可靠性的节点的局部评估。
最后,可以在群集内模型中计算全局信任值:
α是直接信任值的置信度,其值受节点a和节点b之间交互次数的限制。相互作用时间越长,α值越大。
2)集群间信任模型:路由节点携带集群间信息,因此将集群之间的信任度纳入路由节点的信任值计算中。 首先,定义任何其他节点和路由节点之间的全局信任值:
RSPi表示路由节点SPi的全局信任值。I(Gi)是SPi所在的节点集。 在某个时刻,超级节点的信任对于整个组是唯一的,不受其他节点的影响。然后定义两个不同的集群间路由节点之间的全局信任值:
RSPi和RSPj相应地表示路由节点的全局信任值。SGiGj对应于群组Gi、和群组Gj的节点之间的成功数据传输次数。τ表示全局信任值,当某些节点在初始化阶段成为路由节点时使用。
为了计算节点之间的信任值,当这两个节点属于一个群集时,一个节点会发起多个查询请求以从O(logM)跃点(M是网络群集的大小)中的另一个节点获取反馈信息。 如果这两个节点位于不同的群集中,则节点需要O(2 logM)+ O(logN / M)跃点(N是整个P2P网络的大小)。 因此,BlockP2P-EP具有良好的可扩展性,且通信开销较低。
节点失活检测
节点失活会影响正常的网络传输过程,从而降低区块链性能,影响网络可靠性。 传统的节点失活检测算法主要是周期性地关注心跳检测,这导致了很多问题。 一方面,由于高扰动引起的节点突然离开使得心跳检测非常频繁。 另一方面,每个节点都需要维护大量的连接(即O(logN)),因此故障检测开销将达到O(NlogN),这极大地影响了整个区块链P2P网络的可扩展性。 为了减少网络通信开销并维持节点失活检测,BlockP2P-EP提出了一种轻量级的邻居检测算法。
采用PULL作为基本故障检测策略,即检测节点首先向所检测到的节点发送查询消息message_query(mq)查询,然后q返回响应消息(ack)以固定正常工作状态。 每个节点仅从记录在其自己的路由表中的set IV(x)中检测邻居节点。在接收到某个节点的存活查询消息mq后,有两种响应方式(ack)。如图(a)所示,节点q将消息ack(发布者)作为最初接收到的mq消息的返回,并将mq的发出者发出者作为检测结果的发布者(图(b))。当有其他节点再次发送mq消息时,本节点将这些询问节点加入到订阅节点集合s中,并向询问节点回复,告诉他们(自己被其他节点检测,他们已经被加入检测结果通知列表里了)当区块链网络中未发生任何故障时,处于订阅状态的节点将不再发送任何检测消息。 只有发布者将继续按照它们的时钟周期Δ发送检测,然后检测到的节点将聚合不断更新并附加到ack(发布者)消息的订户,并更新由p保存的订阅集。
从图(c)中可以看出,当节点p在Δ时间内没有从q接收到它们时,可以断定该节点q已经失效。 之后,p将修改检测结果,并启动订阅集以通知所有订阅节点p已经下线。 图(d)显示了发布者节点的失败情况。发布者节点和检测到的节点之间采用双向检测机制,通过该机制,节点q在发出响应消息ack(publisher,S)之后启动计时器。 由于来自发布者的检测消息的间隔已知为Δ,因此,当未收到新的检测消息时,节点q将确定发布者已失败。 此时,节点q从路由表集合中选择具有较长联机时间的阳极,然后通过发送消息ack(publisher,S)将其分配为新的发行者。此外,发布者节点是节点停用算法的可靠性瓶颈。 为此,BlockP2P-EP设置发布者的备份节点,以确保发布者节点的在线时间比检测到的在线时间更长。
实验
区块链P2P网络可以具有相当大的规模,具有数百万个动态变化的节点,这些节点通常随机地加入或离开。 在实际环境中,尤其是在早期阶段,评估新协议是不可行的。 可选地,在不牺牲实验结果准确性的前提下,采用了仿真方法。 在本文中,我们基于PeerSim [26]设计了一个通用的区块链网络仿真器,名为BlockSim。 BlockSim的开发具有极高的可扩展性,并且考虑到对网络动态变化的支持。 它由事件驱动引擎组成,并由许多简单的,可扩展的和可插入的组件(即模拟网络,模拟共识和模拟数据)支持。 BlockSim支持结构化和非结构化的区块链P2P网络仿真。 为了模拟区块链中的不同网络环境,开发人员可以根据需要实现BlockSim提供的接口,包括拓扑连接,延迟设置,网络广播算法等。
评估指标
- 总体性能:固定节点数量的静态性能;
- 网络可扩展性:节点数量变化的动态性能;
- 网络稳定性:节点加入和离开数量的性能稳定;
- 恶意节点检测成功率: 网络检测恶意节点和成功传输交易的速率,同时存在不同的恶意节点和时间周期;
- 非活动节点检测的负载率:通过检测不同网络规模和时间周期下的非活动节点而产生的网络负载。
我们通过测量遵循Poisson分布的随机节点每100毫秒加入或离开网络时的广播时间来评估网络稳定性。网络传输可靠性被定义为在区块链网络发生故障时保持传输的能力,主要包括成功 恶意节点检测率和非活动节点检测负载率。 恶意节点检测的成功率表示区块链网络是否可以检测到有效发送虚假交易的节点。 我们假设交互式节点以90%的概率发送受信任的事务,并且网络大小设置为1,000。 然后我们通过改变恶意节点的比例来探索不同的区块链网络协议对恶意节点检测成功率的影响。此外,在多个仿真周期下,我们还测量了不同的区块链网络协议对恶意节点检测成功率的影响。 非活动节点检测的负载率表示检测到非活动节点时的网络通信负载。 我们假设每个节点都在本地存储十个邻居的信任信息,并且所有节点将按照Poisson分布以随机概率停用。 基于以上假设,我们进行了实验,探讨了在不同的网络规模和时间周期内,检测协议引起的网络通信负载的变化。
图10(a)显示,当恶意节点的比例较小时,比特币和以太坊可以有效地识别发送不可信交易的恶意节点,因此,随着节点的成功交易率降低 恶意节点的比例增加。 与其他两种网络协议相比,BlockP2P-EP具有更大的优势,随着恶意节点的增加,比特币和以太坊中的节点无法获得所有邻居节点的信任信息。 然后将恶意节点的比例设为50%,并观察不同仿真周期下成功交易率的变化。 可以看出,BlockP2P-EP的性能要好得多,这表明BlockP2P-EP对恶意节点具有很强的抵抗力。
非活动节点检测的负载率:我们将BlockP2P-EP协议与比特币和以太坊的失活检测算法在各种网络规模下进行了比较。图11(a)在执行片段中演示了两种算法之间的检测负载比较。 结果表明,在相同的网络规模(例如N = 2,000)下,传统的失活检测算法的网络负载是BlockP2P-EP算法的4倍。 我们配置了几个节点大小(从2,000到14,000)来研究不同节点大小的失活检测负载的差异。 图11(b)显示,随着网络规模的扩大,BlockP2P-EP算法和传统的区块链失活检测算法都会增加,但后者的网络负载是前者的4倍。
不足与后续研究
- 需要考虑更多不同的区块链平台,私有链和联盟链由于节点密集分布在特定的地理区域内,网络延迟较低,网络性能特点有所不同。
- 仅考虑传输速度和可靠性, 评估网络性能的指标包括网络容量,转发速率和传输安全性等许多方面。
- 实际的网络环境很复杂,节点的网络性能和链接状态由于硬件配置(例如CPU,RAM和带宽)和通信的异构性而异。 应该设计一个更具通用性的区块链模拟器来为复杂的网络环境设置相关参数,从而可以为设计网络协议提供可靠的验证工具。
- 尽管实验结果表明BlockP2P-EP具有良好的性能,但仍需要在真实的网络环境中进行验证,以体现BlockP2P-EP的实际意义。
- BlockP2P-EP在考虑网络可靠性的情况下尝试提高数据传输速率,但是 影响网络性能的因素中有一部分是模糊的。 应该进行进一步的研究以建立一个可以正式化网络因素相关性的模型,并找到阻碍网络性能的关键问题。