一种均衡区块链跨域广播网络负载的方法与流程

文档序号:19320524发布日期:2019-12-04 00:28阅读:461来源:国知局
一种均衡区块链跨域广播网络负载的方法与流程

本发明涉及区块链技术,尤其涉及一种均衡区块链跨域广播网络负载的方法。



背景技术:

区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改。区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性。通过所有节点共同维护同一个账本,可以保证区块链中的信息无法被篡改,在有节点作恶的情况下仍然可以维护数据的完整性。

当主节点收到交易时,需要将该交易信息广播到区块链中所有其他的节点,从而共同完成交易的确认。由于区块链可能同时涉及多个机构,同一个机构的主机都在同一个网络域中,可以直接进行消息传递,但不同的机构的主机往往不在同一个网络域中,需要通过跨域主机转发消息才能够进行通信。跨域主机同时配置了多个网络域。每个网络域都有一个ip地址表明该节点在该网络域中使用的通信ip。

目前对于跨域转发主要是通过配置静态跨域主机来实现,这会造成个别跨域主机网络负载过重,从而增加消息广播的延迟,影响交易确认的效率,降低区块链处理交易的能力。



技术实现要素:

针对现有技术的不足,本发明提出一种均衡区块链跨域广播网络负载的方法,从而减轻区块链网络拥塞,具体技术方案如下:

一种均衡区块链跨域广播网络负载的方法,其特征在于,该方法具体包括如下步骤:

s1:接收用户输入的区块链中的所有主机所在的网络域信息,使用该信息生成跨域转发涉及的网络拓扑,所述的网络拓扑中的节点为区块链网络中的主机,两节点之间的连线表示对应的两台主机存在于同一个网络域;

s2:建立新的网络拓扑;

定义所述的网络拓扑中的节点数为n,发送广播消息的主机为主节点,将所述的网络拓扑中除了主节点以外的其他节点都拆分成两个节点,分别称为对应节点的入节点和对应节点的出节点,并从所述的对应节点的入节点向所述的对应节点的出节点连接一条容量为c的连线;然后,将所述的原始网络拓扑中的两节点之间的连线拆分成两条有向连线,方向均为从其中一个原始节点的出节点到另一个节点的入节点,容量均为n-1;主节点在原始网络中如果与其他节点有连线,则将该连线转换成从主节点到该节点入节点的容量为n-1的连线;之后,添加一个虚拟节点,添加所有节点的出节点到该虚拟节点的连线,容量为1,从而形成新的网络拓扑;所述的c=(l+u)/2,l表示边容量的下界,u表示边容量的上界;l的初始值为0,u的初始值为n-1;

s3:使用ford-fulkerson最大流算法计算新的网络拓扑中从主节点到虚拟节点的最大流量f;当f=n-1,更新u=c;否则,更新l=c,再次计算c的值;

s4:如果u-l《1,则令c=u,作为节点最小的网络负载,继续执行s5;否则回到s3;

s5:根据s4中的c值,在新的网络拓扑中进行n-1次容量为1的从主节点到虚拟节点的增广路搜索;将搜索路径中的虚拟节点去除,合并入节点与出节点,最终的路径作为主节点到目标节点广播消息的路由路径;

s6:当主节点需要向位于其他域中的目标节点发送消息时,主节点将路径附加在消息尾部,并向路径中的第一个节点发送该消息;当位于路径中的节点收到消息后,将会检查消息是否含有路径信息;如果含有路径信息,从中则找出位于路径中的下一个节点,将消息发送给下一个节点;当目标节点收到该消息,将会发现自己是路径中的最后一个节点,从而对该消息内容进行处理。

进一步地,s1中,网络域信息以(网络域,ip地址)的形式存储在配置文件中。当节点的网络域发生改变时,通过更改配置文件进行更新。

进一步地,所述的s5将计算出的转发路径存储形式为节点名:节点名。

本发明的有益效果如下:

本发明应用于区块链平台上,能够在主节点发送广播消息到其他区块链节点的时候,不会造成某些节点由于要承担跨域转发任务而网络负载过重,减轻网络拥塞;同时,通过将跨域广播的负载均匀地分布到多个跨域节点,可以提高区块链系统的利用率,提升区块链处理交易的能力。

附图说明

图1是跨域转发涉及的网络拓扑图;

图2是进行节点拆分添加流量信息得到的新的网络拓扑图;

图3是c=2时的a到e的可行流示意图;

图4是主节点a广播消息到bcd节点选择的路径示意图。

图5是主节点a广播消息到bcde节点选择的路径示意图。

具体实施方式

下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施案例仅仅用以解释本发明,并不用于限定本发明。

如图1-4所示,一种均衡区块链跨域广播网络负载的方法,该方法具体包括如下步骤:

s1:接收用户输入的区块链中的所有主机所在的网络域信息,使用该信息生成跨域转发涉及的网络拓扑,所述的网络拓扑中的节点为区块链网络中的主机,两节点之间的连线表示对应的两台主机存在于同一个网络域;

s2:建立新的网络拓扑;

定义所述的网络拓扑中的节点数为n,发送广播消息的主机为主节点,将所述的网络拓扑中除了主节点以外的其他节点都拆分成两个节点,分别称为对应节点的入节点和对应节点的出节点,并从所述的对应节点的入节点向所述的对应节点的出节点连接一条容量为c的连线;然后,将所述的原始网络拓扑中的两节点之间的连线拆分成两条有向连线,方向均为从其中一个原始节点的出节点到另一个节点的入节点,容量均为n-1;主节点在原始网络中如果与其他节点有连线,则将该连线转换成从主节点到该节点入节点的容量为n-1的连线;之后,添加一个虚拟节点,添加所有节点的出节点到该虚拟节点的连线,容量为1,从而形成新的网络拓扑;

所述的c=(l+u)/2,l表示边容量的下界,u表示边容量的上界;l的初始值为0,u的初始值为n-1;

s3:使用ford-fulkerson最大流算法计算新的网络拓扑中从主节点到虚拟节点的最大流量f;当f=n-1,更新u=c;否则,更新l=c,再次计算c的值;

s4:如果u-l《1,则令c=u,作为节点最小的网络负载,继续执行s5;否则回到s3;

s5:根据s4中的c值,在新的网络拓扑中进行n-1次容量为1的从主节点到虚拟节点的增广路搜索;将搜索路径中的虚拟节点去除,合并入节点与出节点,最终的路径作为主节点到目标节点广播消息的路由路径;

s6:当主节点需要向位于其他域中的目标节点发送消息时,主节点将路径附加在消息尾部,并向路径中的第一个节点发送该消息;当位于路径中的节点收到消息后,将会检查消息是否含有路径信息;如果含有路径信息,从中则找出位于路径中的下一个节点,将消息发送给下一个节点;当目标节点收到该消息,将会发现自己是路径中的最后一个节点,从而对该消息内容进行处理。

所述的s6中,通过将转发路径添加在消息尾部,转发节点不需要计算如果将消息发送到目标节点,而只需要查看路径信息,将消息发送给下一个转发节点。这样可以减轻中间节点计算路径的负担。

优选地,s1中,网络域信息以(网络域,ip地址)的形式存储在配置文件中。当节点的网络域发生改变时,通过更改配置文件进行更新。

优选地,所述的s5将计算出的转发路径存储形式为节点名:节点名。当路径中的节点更换ip地址时,无需对转发路径进行修改,仍然使用之前的转发路径进行数据包的转发。

如图1所示的原始网络拓扑,其是一个无向图,其中的节点a-d表示网络中的主机,其中a是主节点,位于网络域1。b,c是跨域主机,同时位于网络域1和2。d是普通主机,位于网络域2。连线表示对应的两台主机位于同一个域,可以直接通过ip地址进行连接;如图2所示,为新的网络拓扑,新的网络拓扑是一个有向图,对比图1和图2可知,将节点b拆成两个节点b’、b”。b’与b”直接连接一条容量为c(值为3)的边。图1中a到b的边转换成a到b’容量为3的有向边。图1中c到b的边拆成c”到b’与b”到c’两条容量为3的有向边。增加了一个虚拟节点e,b”,c”,d”都与e连接了一条容量为1的有向边。

图3给出了c=2时新的网络拓扑图中a到e的最大流示意图,使用ford-fulkerson最大流算法计算从a到e的最大流量为3,用加粗线条表示。当c=1时,可以计算出a到e的最大流量为2,即a无法将消息同时广播到bcd这三个节点。因此跨域主机处理广播消息最小的负载为2。

图4给出了a节点对bcd节点进行跨域广播选取的数据包转发路径。a到b,以及a到c的消息直接通过网络域1进行传递,a到d的消息则通过b节点进行跨域转发。

图5给出了当有一个新的位于网络域2中的节点e加入区块链后,a通过本方法得到的新的跨域广播转发路径。a到b,以及a到c的消息直接通过网络域1进行传递,a到d的消息则通过b节点进行跨域转发,a到e的消息则通过c节点进行跨域转发。这时,b,c节点的网络负载都是2,均摊了跨域广播带来的网络负载。

本发明应用于区块链平台上,能够在主节点发送广播消息到其他区块链节点的时候,不会造成某些节点由于要承担跨域转发任务而网络负载过重,成为性能瓶颈;同时,通过将跨域广播的负载均匀地分布到多个跨域节点,可以提高区块链系统的利用率。

本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1