一种用于区块链的水波式广播方法及系统与流程

    专利2022-07-07  157


    本发明涉及区块链技术领域,特别是一种用于区块链的水波式广播方法及系统。



    背景技术:

    分布式网络是未来信用时代网络组成的重要组成部分,在这其中对于点对点的p2p网络的应用将会无处不在。在信用时代,这种p2p的网络将是人们工作、生活、学习的基础,那么在这个网络中,承载海量的数据通信需求将是必然结果。但是,由于无中心的p2p网络的特殊性,在这个网络中没有统一的指挥节点告知大家数据发送的情况,所以一条数据在这个网络中产生时,这个节点需要将数据广播给网络中所有的节点,以保证数据被网络中的其它节点充分接收,又由于每一个节点都不知道别人有没有收到过这条数据,于是每一个节点都需要广播给其它所有节点,即使在不重复广播的情况下,1条数据就需要广播n的2次方次,n是节点数,如果有10000个节点,那么就需要广播1亿次,如果节点再继续增加节点数,那么按平方增长的广播次数将直接冲爆整个网络。在信用时代,参与网络的节点必然是数以亿计的,在这种情况下,按这种广播方式必然导致网络的瘫痪,但如果引入一个中心节点协调数据的广播,又会破坏这种去中心分布式网络的设计初衷。

    那么,如何在不设立中心节点的情况下,依然保持网络广播负担不随节点数的增加而加速增长,成为一个急需解决的问题。



    技术实现要素:

    本发明旨在提出一种用于区块链的水波式广播方法及系统,通过采用水波传递的方式,可以有效解决各种大小型网络中的数据快速扩散问题,大幅提高网络的吞吐能力,具体方案如下所示:

    一种用于区块链的水波式广播方法,所述广播方法包括:

    s1、启动节点并扫描网络,得到节点列表,与列表中的所有节点以及列表中节点对外具有连接关系的其它节点建立连接关系;

    s2、节点完成具有连接关系的节点列表后,提取当前区块链网络的共识信息以及共识信息中的广播规则,将所述广播规则传递到节点列表中并进行广播共识执行计算;

    s3、开始发送广播数据,通过提取节点列表,进而获取节点信息,当与列表中的节点建立连接关系后向该节点发送数据;

    s4、节点接收发送过来的数据后检查该数据是否接收过,若数据接收过则丢弃,若数据没有接收过则重复广播共识计算和节点数据发送。

    进一步的,s1中所述建立连接关系的过程包括:提取列表中节点信息,扫描节点自身是否具有该节点,若在数据库中已有该节点则跳过连接关系的建立,若没有则分析对应节点类型并添加到自身的节点列表中,结束该节点检查。

    进一步的,s2中所述进行广播共识执行计算的过程包括:计算节点列表的长度n=length(l),计算列表可组成的最大矩形的最短边计算矩阵的另一条边s2=floor(n/s1),计算节点自身所在的位置i=indexof(sort(l))以及自身分组的开始位置start=n%i和结束位置end=s1*mod(n/i),通过提取自身本组的节点list=substr(n,start,end),保存自身本组的节点。

    进一步的,所述广播规则包括:根据正方形面积最大化原则,以矩形上任意一条边作为节点广播的扩展范围,处于该正方形里面任何一个节点沿矩形上任意一条边的方向广播至处于同一条线上的另外一个节点,当出现同一条边上无法接收和发送数据时,改重选矩形其他边作为容错水波的中心点,节点个数n与发送数据次数w之间的关系为:.

    本发明在上述广播方法的基础上还延伸提出一种用于区块链的水波式广播系统,所述系统包括:

    节点管理器:用于管理当前网络中拥有的节点,节点会根据当前区块链网络接入类型加入自身的节点列表并记录,在记录时将区分节点的连接方式;

    共识管理器:用于管理当前区块链网络使用的共识方法,根据当前区块链网络的复杂程度选择单一共识方法或复合共识方法;

    分组管理器:用于管理当前节点所在的分组,根据区块链类型的不同进行不同方式的分组,分组节点来源于节点管理器提供的节点列表来生成,

    在该系统中,所述节点管理器启动区块链网络中的节点,通过节点管理器建立起节点之间的连接关系并生成节点列表,所述共识管理器提取当前网络中的共识信息以及共识信息中的广播规则,将节点列表传递给该广播规则,共识管理器开始执行共识计算,当节点管理器获取来自其他节点发出的数据时,通过共识管理器检查数据是否重复接收过,如果没有重复接收过则根据当前区块链网络的广播规则进行数据发送,由分组管理器将数据传递到不同组别的节点列表上。所述节点管理器、共识管理器以及分组管理器三者之间互相交叉网状连接,可以互相进行数据访问。

    进一步的,所述节点管理器包括:

    节点信息管理模块:用于管理节点的信息,包括存储节点的数据,以及为系统其它模块提供节点信息查询的服务;

    节点扫描模块:用于扫描网络中的新节点,并检查分析节点的类型,并将节点扫描和分析的结果传递给节点信息模块进行管理保存;

    节点同步模块:用于向其他节点同步节点信息,当发现到新的节点信息后,通过节点扫描模块检查可用性以及分析类型,并由节点信息管理模块进行保存。

    进一步的,所述共识管理器包括:

    共识规则管理模块:用于定义与管理当前网络支持的共识规则,所述共识规则通过代码形式定义,所述共识规则包括直接水波式广播和接力式水波广播;

    共识执行模块:用于将节点管理器提供的节点按照共识规则定义内容进行分组,然后将分组内容交给分组管理器进行管理;

    广播管理模块:用于根据共识规则提取目标发送节点,并将数据依次发送至节点。

    进一步的,所述直接水波式广播为网络通过建立水波组网将数据按照单一方向传递,过程中按照共识规则定义的容错率将使用不同程度的规模进行执行;

    所述接力式水波广播为网络将拆分为若干个小规模网络,在小规模网络中按照水波式组网进行广播规则的执行。

    进一步的,所述分组管理器包括:

    分组信息管理模块:用于管理历史分组信息,以及接收最新的共识规则生成新分组,并为上层应用按照当前所需要的分组提供分组信息;

    轮次管理模块:用于记录当前的轮次以及历史轮次信息,并计算当前所在轮次和节点自身所在轮次中的分组位置。

    本发明相比现有技术,具有如下优点:

    (1)本发明重点是通过节点管理器、共识管理器以及分组管理器的组合访问使用,解决了数据在大规模p2p网络中广播导致的网络拥堵问题;

    (2)根据不同网络规模选择单一或者复合的广播规则实现不同覆盖面和不同深度的网络广播,在允许容错率的前提下,网络性能提升效果十分显著;

    (3)本发明所提出的水波式广播并不是单一形态或者静态下而使用,而是根据动态网络的变化进行调整和组合使用,可以有效解决各种大小型网络中的数据快速扩散问题,大幅提高网络的吞吐能力。

    附图说明

    图1为本发明所提及用于区块链的水波式广播方法步骤的流程示意图;

    图2是本发明所提及用于区块链的水波式广播系统的组成示意图;

    图3是本发明所提及节点管理器的组成示意图;

    图4是本发明所提及共识管理器的组成示意图;

    图5时本发明所提及分组管理器的组成示意图;

    图6是本发明所提及用于区块链的水波式广播方法中节点个数n与发送数据次数w之间的关系等式,

    其中:100节点管理器;200共识管理器;300分组管理器;101节点信息管理模块;102节点扫描模块;103节点同步模块;201共识规则管理模块;202共识执行模块;203广播管理模块;301分组信息管理模块;302轮次管理模块;

    具体实施方式

    下面结合附图和具体实施例对本发明作进一步详述。在此需要说明的是,下面所描述的本发明各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。

    区块链是一种去中心,进行点对点的网络互联的数据传输方式,所谓的“去中心”便是不再有第三方节点的参与,所有的交易和数据传输只在节点双方进行一对一、一对多、多对多等方式的传输,传输的另一个含义也就是网络广播,传统的互联网技术需要中央服务器或者具有顶级配置的中转节点作为广播的核心散发区,但是换到区块链网络的话如果还有第三方存在的话,且第三方存在的作用起到决定整个区块链网络的基本运行的话,将是违背区块链去中心的设计初衷,特别是在当今的信息时代,如果一旦发生数据节点作怪或者产生故障将会对整个网络产生致命的影响,特别是对于如今的分布式网络,如何在节点之间建立起一套行之有效的广播规则并且严格按照广播规则进行数据广播将会是决定未来区块链技术的一个重要研究方向。

    在进行本发明方法的阐述之前先对“p2p网络”定义进行阐述,所谓的“p2p网络”也叫对等网络,即对等计算机网络,是一种在对等者(peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式,在p2p网络环境中,彼此连接的多台计算机之间都处于对等的地位,各台计算机有相同的功能,无主从之分,一台计算机既可作为服务器,设定共享资源供网络中其他计算机所使用,又可以作为工作站,整个网络一般来说不依赖专用的集中服务器,也没有专用的工作站。网络中的每一台计算机既能充当网络服务的请求者,又对其它计算机的请求做出响应,提供资源、服务和内容。通常这些资源和服务包括:信息的共享和交换、计算资源(如cpu计算能力共享)、存储共享(如缓存和磁盘空间的使用)、网络共享、打印机共享等。

    本发明针对上述研究方向,结合水波的原理提出一种用于区块链的水波式广播方法,本方法应用于分布式网络,如图1所示,具体方案如下所示:

    s1、启动节点并扫描网络,得到节点列表,与列表中的所有节点以及列表中节点对外具有连接关系的其它节点建立连接关系;

    优选的,s1中所述建立连接关系的过程包括:提取列表中节点信息,扫描节点自身是否具有该节点,若在数据库中已有该节点则跳过连接关系的建立,若没有则分析对应节点类型并添加到自身的节点列表中,结束该节点检查。

    节点的检查是节点之间建立连接关系至关重要的一环,因为区块链很重要的一个特性就是可信赖,节点与节点之间构建的前提是在建立关系前期就经过非常严格的合法性检查,这样做的目的就是为了保证链上数据的准确性和可信赖能力,只有经过节点检查才能保证后续数据回溯准确性的检查以及区块锻造时数据节点的安全性,减少后期区块链在上层应用造成数据攻击的一系列情况发生。

    s2、节点完成具有连接关系的节点列表后,提取当前区块链网络的共识信息以及共识信息中的广播规则,将所述广播规则传递到节点列表中并进行广播共识执行计算;

    优选的,s2中所述进行广播共识执行计算的过程包括:计算节点列表的长度n=length(l),计算列表可组成的最大矩形的最短边计算矩阵的另一条边s2=floor(n/s1),计算节点自身所在的位置i=indexof(sort(l))以及自身分组的开始位置start=n%i和结束位置end=s1*mod(n/i),通过提取自身本组的节点list=substr(n,start,end),保存自身本组的节点。

    优选的,如图6所示,所述广播规则包括:根据正方形面积最大化原则,以矩形上任意一条边作为节点广播的扩展范围,处于该正方形里面任何一个节点沿矩形上任意一条边的方向广播至处于同一条线上的另外一个节点,当出现同一条边上无法接收和发送数据时,改重选矩形其他边作为容错水波的中心点,节点个数n与发送数据次数w之间的关系为:.

    s3、开始发送广播数据,通过提取节点列表,进而获取节点信息,当与列表中的节点建立连接关系后向该节点发送数据;

    s4、节点接收发送过来的数据后检查该数据是否接收过,若数据接收过则丢弃,若数据没有接收过则重复广播共识计算和节点数据发送。

    区块链的运行过程需要提前用代码形式定义好共识规则,在该共识规则的基础上允许出现容错率,不同规模的区块链网络允许出现的容错率是动态调整的,该容错率简化认为是该共识规则在当前广播过程的执行次数,容错率的设定也有限定,不能越高越好,因为一旦如此的话虽然说广播规则的覆盖面会更广,但是在此条件下网络的算力以及存储能力等等各项开支也是损耗极大,一旦容错率等于网络的节点数会导致网络的整体瘫痪,因此来说容错率是结合网络能力以及广播效率需要两者,追求最大程度的效率,通过采用上述的水波式广播方法既可以尽可能的增加广播的覆盖面,也可以兼顾其拥有一定的容错率。

    根据上述的水波式广播方法虽然可以做到覆盖面广,深度够深的区块链网络,但是往往需要的区块链长度以及网络算力需要也会随之增高,为了针对更大规模的需要,本发明还提出“波中波”的广播方法,在分布式网络而言,就是将网络进行细分为多个子网,每个子网就是一个单独的小分布式网络,因为每个子网所拥有的节点数目比母网少的多,广播起来所需要的时间以及网络所消耗的算力都会大大降低,当然,网络拆分的层次并不单一,而是根据区块链网络广播的需要进行动态调整,通过拆分,可以使广播扩散消耗的时间越来越小,消息到达的延迟越高,拆分层次将根据这两种情况而定,以求达到效率跟时间的均衡,通过波中波的水波式广播方法,可以有效解决各种大小型网络中的数据快速扩散问题,大幅提高网络的吞吐能力。

    本发明在上述方法的基础上还延伸提出一种用于区块链的水波式广播系统,包括节点管理器100、共识管理器200以及分组管理器300,如图2-5所示,其具体涵盖内容跟作用如下所示:

    节点管理器100:用于管理当前网络中拥有的节点,节点会根据当前区块链网络接入类型加入自身的节点列表并记录,在记录时将区分节点的连接方式;

    所述节点管理器100又包括:

    节点信息管理模块101:用于管理节点的信息,包括存储节点的数据,以及为系统其它模块提供节点信息查询的服务;

    节点扫描模块102:用于扫描网络中的新节点,并检查分析节点的类型,并将节点扫描和分析的结果传递给节点信息模块101进行管理保存;

    在扫描过程中获悉包括但不限于节点连接速度、节点响应时间、节点操作系统在内的信息,由于所有节点都是按照一个明确的网络传输协议来运行的,所以节点扫描模块102只需要按照该协议即可发现是否存在这些节点,这里优先选择两种传输协议方式:

    1)协议一是所有节点开放一个固定的端口如编号为9000,只要在网络地址上编号9000的端口处于开放状态即可发现该节点,另外一个较为安全;

    2)协议二是所有节点在一个确定的端口开发一个数据请求,可以是加解密请求,也可以是固定数据请求,只要发现有网络地址上开放了该端口且其返回的数据符合该端口的解密算法,就可以发现该节点。

    上述两种传输协议在发现节点时,从发起扫描到确认节点,以及从节点返回的协议数据,可以获悉包括但不限于节点连接速度、节点响应时间、节点操作系统在内的信息.

    节点扫描模块102的运行前提是保证节点具有网络连接的能力,网络连接的能力来源于根据上层应用环境不同选择不同的网络连接方式,这里的网络连接方式包括有线网络、无线网络、蜂窝网络、3g网络、4g网络、蓝牙,上层协议支持http、https、webscoket、webrtc,它为节点扫描模块提供在这些网络环境下的网络连接能力。

    节点同步模块103:用于向其他节点同步节点信息,当发现到新的节点信息后,通过节点扫描模块102检查可用性以及分析类型,并由节点信息管理模块101进行保存,

    共识管理器200:用于管理当前区块链网络使用的共识方法,根据当前区块链网络的复杂程度选择单一共识方法或复合共识方法,在一个网络中可能有多套共识,同一套共识可能应用于不同的网络,比如主网和子网可以为不同的共识方法,同一个网络内固定网络与移动网络也可以为不同的共识方法,同一个网路中根据节点类型的不同也可以有不同的共识方法,比如单向节点和代理节点的共识方法不同;

    所述共识管理器200包括:

    共识规则管理模块201:用于定义与管理当前网络支持的共识规则,所述共识规则通过代码形式定义,所述共识规则包括直接水波式广播和接力式水波广播;

    所述直接水波式广播为网络通过建立水波组网将数据按照单一方向传递,过程中按照共识规则定义的容错率将使用不同程度的规模进行执行;

    所述接力式水波广播为网络将拆分为若干个小规模网络,在小规模网络中按照水波式组网进行广播规则的执行。

    共识执行模块202:用于将节点管理器100提供的节点按照共识规则定义内容进行分组,然后将分组内容交给分组管理器300进行管理;

    广播管理模块203:用于根据共识规则提取目标发送节点,并将数据依次发送至节点,在广播时,只广播给当前自己所在分组的节点,虽然这里只广播给了一个组的节点,但是在整体环境下几乎所有节点都将收到广播数据。

    分组管理器300:用于管理当前节点所在的分组,在不同区块链中,分组可能是一次性的也可能是永久的,也可能是动态更新的,这里将会记录每一轮分组有效期的分组,这个分组根据节点管理器100提供的节点列表来生成,生成过程中不用关心其它节点的分组情况。

    所述分组管理器300包括:

    分组信息管理模块301:用于管理历史分组信息,以及接收最新的共识规则生成新分组,并为上层应用按照当前所需要的分组提供分组信息;

    轮次管理模块302:用于记录当前的轮次以及历史轮次信息,并计算当前所在轮次和节点自身所在轮次中的分组位置。

    在该系统中,所述节点管理器100启动区块链网络中的节点,通过节点管理器100建立起节点之间的连接关系并生成节点列表,所述共识管理器200提取当前网络中的共识信息以及共识信息中的广播规则,将节点列表传递给该广播规则,共识管理器200开始执行共识计算,当节点管理器100获取来自其他节点发出的数据时,通过共识管理器200检查数据是否重复接收过,如果没有重复接收过则根据当前区块链网络的广播规则进行数据发送,由分组管理器300将数据传递到不同组别的节点列表上。所述节点管理器100、共识管理器200以及分组管理器300三者之间互相交叉网状连接,可以互相进行数据访问。

    本发明所提出的水波式广播并不是单一形态或者静态下而使用,而是根据动态网络的变化进行调整和组合使用,可以有效解决各种大小型网络中的数据快速扩散问题,大幅提高网络的吞吐能力,解决了数据在大规模p2p网络中广播导致的网络拥堵问题,实现了数据在大规模p2p网络中的快速扩散的作用。

    以上所述,仅是本发明的较佳实施例而已,并非对本发明的技术范围作任何限制,故但凡依本发明的权利要求和说明书所做的变化或修饰,皆应属于本发明专利涵盖的范围之内。


    技术特征:

    1.一种用于区块链的水波式广播方法,其特征在于,所述广播方法包括:

    s1、启动节点并扫描网络,得到节点列表,与列表中的所有节点以及列表中节点对外具有连接关系的其它节点建立连接关系;

    s2、节点完成具有连接关系的节点列表后,提取当前区块链网络的共识信息以及共识信息中的广播规则,将所述广播规则传递到节点列表中并进行广播共识执行计算;

    s3、开始发送广播数据,通过提取节点列表,进而获取节点信息,当与列表中的节点建立连接关系后向该节点发送数据;

    s4、节点接收发送过来的数据后检查该数据是否接收过,若数据接收过则丢弃,若数据没有接收过则重复广播共识计算和节点数据发送。

    2.根据权利要求1所述的一种用于区块链的水波式广播方法,其特征在于,s1中所述建立连接关系的过程包括:提取列表中节点信息,扫描节点自身是否具有该节点,若在数据库中已有该节点则跳过连接关系的建立,若没有则分析对应节点类型并添加到自身的节点列表中,结束该节点检查。

    3.根据权利要求1所述的一种用于区块链的水波式广播方法,其特征在于,

    s2中所述进行广播共识执行计算的过程包括:计算节点列表的长度n=length(l),计算列表可组成的最大矩形的最短边计算矩阵的另一条边s2=floor(n/s1),计算节点自身所在的位置i=indexof(sort(l))以及自身分组的开始位置start=n%i和结束位置end=s1*mod(n/i),通过提取自身本组的节点list=substr(n,start,end),保存自身本组的节点。

    4.根据权利要求1所述的一种用于区块链的水波式广播方法,其特征在于,所述广播规则包括:根据正方形面积最大化原则,以矩形上任意一条边作为节点广播的扩展范围,处于该正方形里面任何一个节点沿矩形上任意一条边的方向广播至处于同一条线上的另外一个节点,当出现同一条边上无法接收和发送数据时,改重选矩形其他边作为容错水波的中心点,节点个数n与发送数据次数w之间的关系为:

    5.一种用于区块链的水波式广播系统,其特征在于,所述系统包括:

    节点管理器:用于管理当前网络中拥有的节点,节点会根据当前区块链网络接入类型加入自身的节点列表并记录,在记录时将区分节点的连接方式;

    共识管理器:用于管理当前区块链网络使用的共识方法,根据当前区块链网络的复杂程度选择单一共识方法或复合共识方法;

    分组管理器:用于管理当前节点所在的分组,根据区块链类型的不同进行不同方式的分组,分组节点来源于节点管理器提供的节点列表来生成,

    在该系统中,所述节点管理器启动区块链网络中的节点,通过节点管理器建立起节点之间的连接关系并生成节点列表,所述共识管理器提取当前网络中的共识信息以及共识信息中的广播规则,将节点列表传递给该广播规则,共识管理器开始执行共识计算,当节点管理器获取来自其他节点发出的数据时,通过共识管理器检查数据是否重复接收过,如果没有重复接收过则根据当前区块链网络的广播规则进行数据发送,由分组管理器将数据传递到不同组别的节点列表上。所述节点管理器、共识管理器以及分组管理器三者之间互相交叉网状连接,可以互相进行数据访问。

    6.根据权利要求5所述的一种用于区块链的水波式广播系统,其特征在于,所述节点管理器包括:

    节点信息管理模块:用于管理节点的信息,包括存储节点的数据,以及为系统其它模块提供节点信息查询的服务;

    节点扫描模块:用于扫描网络中的新节点,并检查分析节点的类型,并将节点扫描和分析的结果传递给节点信息模块进行管理保存;

    节点同步模块:用于向其他节点同步节点信息,当发现到新的节点信息后,通过节点扫描模块检查可用性以及分析类型,并由节点信息管理模块进行保存。

    7.根据权利要求5所述的一种用于区块链的水波式广播系统,其特征在于,所述共识管理器包括:

    共识规则管理模块:用于定义与管理当前网络支持的共识规则,所述共识规则通过代码形式定义,所述共识规则包括直接水波式广播和接力式水波广播;

    共识执行模块:用于将节点管理器提供的节点按照共识规则定义内容进行分组,然后将分组内容交给分组管理器进行管理;

    广播管理模块:用于根据共识规则提取目标发送节点,并将数据依次发送至节点。

    8.根据权利要求7所述的一种用于区块链的水波式广播系统,其特征在于,

    所述直接水波式广播为网络通过建立水波组网将数据按照单一方向传递,过程中按照共识规则定义的容错率将使用不同程度的规模进行执行;

    所述接力式水波广播为网络将拆分为若干个小规模网络,在小规模网络中按照水波式组网进行广播规则的执行。

    9.根据权利要求1所述的一种用于区块链的水波式广播系统,其特征在于,所述分组管理器包括:

    分组信息管理模块:用于管理历史分组信息,以及接收最新的共识规则生成新分组,并为上层应用按照当前所需要的分组提供分组信息;

    轮次管理模块:用于记录当前的轮次以及历史轮次信息,并计算当前所在轮次和节点自身所在轮次中的分组位置。

    技术总结
    本发明公开了一种用于区块链的水波式广播方法,应用于分布式网络,通过与列表中的所有节点以及列表中节点对外具有连接关系的其它节点建立连接关系,提取当前区块链网络的共识信息以及共识信息中的广播规则,将所述广播规则传递到节点列表中并进行广播共识执行计算,开始发送广播数据,通过提取节点列表,进而获取节点信息,当与列表中的节点建立连接关系后向该节点发送数据,本发明还提出一种用于区块链的水波式广播系统,包括节点管理器、共识管理器、分组管理器,可以有效解决各种大小型网络中的数据快速扩散问题,大幅提高网络的吞吐能力。

    技术研发人员:杨税令
    受保护的技术使用者:厦门本能管家科技有限公司
    技术研发日:2019.08.20
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-7676.html

    最新回复(0)