一种基于有序平衡二叉树的分片方法及装置与流程

文档序号:20580440发布日期:2020-04-29 01:26阅读:185来源:国知局
一种基于有序平衡二叉树的分片方法及装置与流程

本发明涉及区块链技术领域,尤其涉及一种基于有序平衡二叉树的分片方法及装置。



背景技术:

在区块链系统达成共识的过程中,是通过区块链系统中对应节点进行投票实现的,投票的时间取决于区块链中节点的数量。

随着区块链系统中节点数量的增加,达成全局共识需要的时间也在不断增加,导致整个区块链系统的吞吐量受到了极大的挑战,为了解决这个问题,必须对区块链系统进行扩容,进而提高区块链系统的吞吐量。



技术实现要素:

有鉴于此,本发明提供了一种基于有序平衡二叉树的分片方法及装置,用于解决现有技术中随着区块链系统中节点数量的增加,达成全局共识需要的时间也在不断增加,导致整个区块链系统的吞吐量受到了极大的挑战,具体方案如下:

一种基于有序平衡二叉树的分片方法,包括:

当接收到目标节点加入目标网络的请求时,判断所述目标节点是否为所述目标网络的首节点;

若否,将所述请求发送给所述目标网络的目标区块链中的各个节点,接收所述各个节点对所述请求的响应,其中,所述目标区块链中的各个节点组成目标平衡二叉树;

依据所述响应,确定所述目标平衡二叉树的目标子树节点,将所述目标节点加入到所述目标子树节点中。

上述的方法,可选的,还包括:

若所述目标节点为所述目标网络的首节点,依据所述目标节点,构建所述目标区块链;

初始化所述目标区块链。

上述的方法,可选的,还包括:

判断与所述目标平衡二叉树是否失衡;

若是,确定所述目标平衡二叉树中的最小不平衡子树,依据所述最小不平衡子树对所述目标平衡二叉树进行调整。

上述的方法,可选的,依据所述响应,确定所述目标平衡二叉树的目标子树节点,将所述目标节点加入到所述目标子树节点中包括:

依据所述响应,确定所述目标节点与所述目标平衡二叉树中各个子树的网络距离;

在各个网络距离中选取最短网络距离,与所述最短网络距离对应的子树节点为所述目标子树节点。

上述的方法,可选的,还包括:

当检测到任意节点离开所述目标区块链时,判断所述任意节点是否为叶子节点;

若是,则直接离开,或;

若否,依次在所述任意节点对应的左右子树选取高度最高的节点代替所述任意节点,或;

若所述任意节点对应的左右子树高度相等,则默认选取与所述任意节点对应的左子树。

上述的方法,可选的,还包括:

当所述目标区块链中的交易双方节点进行交易时,获取所述交易双方节点在所述目标平衡二叉树中的位置;

依据所述位置,确定所述交易双方节点的最小公共父节点;

依据所述最小公共父节点完成共识,共识完成后,生成的目标区块由与所述交易双方节点对应分区的根节点进行广播。

上述的方法,可选的,还包括:

为所述目标区块链中各个节点分配加权因子。

一种基于有序平衡二叉树的分片装置,包括:

第一判断模块,用于当接收到目标节点加入目标网络的请求时,判断所述目标节点是否为所述目标网络的首节点;

发送与接收模块,用以若否,将所述请求发送给所述目标网络的目标区块链中的各个节点,接收所述各个节点对所述请求的响应,其中,所述目标区块链中的各个节点组成目标平衡二叉树;

确定与加入模块,用于依据所述响应,确定所述目标平衡二叉树的目标子树节点,将所述目标节点加入到所述目标子树节点中。

上述的装置,可选的,还包括:

第二判断模块,用于判断与所述目标平衡二叉树是否失衡;

确定与调整模块,用于若是,确定所述目标平衡二叉树中的最小不平衡子树,依据所述最小不平衡子树对所述目标平衡二叉树进行调整。

上述的装置,可选的,所述确定与加入模块包括:

第一确定单元,用于依据所述响应,确定所述目标节点与所述目标平衡二叉树中各个子树的网络距离;

第二确定单元,用于在各个网络距离中选取最短网络距离,与所述最短网络距离对应的子树节点为所述目标子树节点。

与现有技术相比,本发明包括以下优点:

本发明公开了一种基于有序平衡二叉树的分片方法,包括:当接收到目标节点加入目标网络的请求时,判断所述目标节点是否为所述目标网络的首节点;若否,将所述请求发送给所述目标网络的目标区块链中的各个节点,接收所述各个节点对所述请求的响应,其中,所述目标区块链中的各个节点组成目标平衡二叉树;依据所述响应,确定所述目标平衡二叉树的目标子树节点,将所述目标节点加入到所述目标子树节点中。上述的分片方法将所述目标区块链中的各个节点组成所述目标平衡二叉树,各个分片可以并行的处理交易,分片技术能提高交易处理和确认的并发度,进而可以提高所述目标区块链的吞吐量。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例公开的一种基于有序平衡二叉树的分片方法流程图;

图2为本申请实施例公开的一种基于有序平衡二叉树的分片方法又一流程图;

图3为本申请实施例公开的一种基于有序平衡二叉树的分片方法又一流程图;

图4为本申请实施例公开的一种平衡二叉树的调整方法示意图;

图5为本申请实施例公开的一种基于有序平衡二叉树的分片装置结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

本发明公开了一种基于有序平衡二叉树的分片方法,应用在区块链领域,随着区块链中节点数量的增加,达成共识所需要的时间也不断增加,导致区块链系统的吞吐量受影响,为了解决上述问题,需要对区块链进行扩容,分片技术是一种常见的扩容方法,其中,分片的基本思想是将整个网络中的节点分成不同的碎片,各个分片能够并行处理不同的交易。验证者只需要验证网络交易的一部分,工作量被分摊在各个分片上,分片技术能够提高交易处理和确认的并发度,进而提高整个系统的吞吐量。所述分片方法的执行流程如图1所示,包括步骤:

s101、当接收到目标节点加入目标网络的请求时,判断所述目标节点是否为所述目标网络的首节点;

本发明实施例中,所述目标节点为当前请求加入目标网络的节点,判断所述目标节点是否为所述目标网络的首节点,可以通过所述目标网络反馈的标识进行确定,其中,所述标识可以为电信号、数字或者其它标识,例如,当所述目标网络反馈高电平时,判定所述目标节点为所述目标网络的首节点,当所述目标网络反馈为低电平时,判定所述目标节点不是所述目标网络的首节点,其中,本发明实施例中对所述标识的具体形式不进行限定。

s102、将所述请求发送给所述目标网络的目标区块链中的各个节点,接收所述各个节点对所述请求的响应,其中,所述目标区块链中的各个节点组成目标平衡二叉树;

本发明实施例中,当所述目标节点不是所述目标网络的首节点时,获取与所述目标网络对应的目标区块链,其中,所述目标区块链中的各个节点以目标平衡二叉树的形式存在,每一个节点对应所述目标平衡二叉树中的一个根节点、子树节点或者叶子节点形式存在,其中,任何一个子树节点都可以作为一个独立的分区。各个节点接收到所述请求后会对其进行响应,其中,所述响应可以为一个回复消息,本发明实施例中,对所述响应的具体形式不进行限定。

s103、依据所述响应,确定所述目标平衡二叉树的目标子树节点,将所述目标节点加入到所述目标子树节点中。

本发明实施例中,初始时,需要设定所述目标平衡二叉树的高度差为1,依据接收到所述响应的时间,来判断所述目标节点与所述各个节点的网络距离。即接收到一个节点的回复消息越快,则与该节点的网络距离越近,在各个网络距离中选取最短网络距离,与所述最短网络距离对应的子树节点为所述目标子树节点,将所述目标节点加入到所述目标子树节点中。

本发明公开了一种基于有序平衡二叉树的分片方法,包括:当接收到目标节点加入目标网络的请求时,判断所述目标节点是否为所述目标网络的首节点;若否,将所述请求发送给所述目标网络的目标区块链中的各个节点,接收所述各个节点对所述请求的响应,其中,所述目标区块链中的各个节点组成目标平衡二叉树;依据所述响应,确定所述目标平衡二叉树的目标子树节点,将所述目标节点加入到所述目标子树节点中。上述的分片方法将所述目标区块链中的各个节点组成所述目标平衡二叉树,各个分片可以并行的处理交易,分片技术能提高交易处理和确认的并发度,进而可以提高所述目标区块链的吞吐量。

s104、对所述目标网络进行初始化。

本发明实施例中,当所述目标节点为所述目标网络的首节点时,需要对所述目标网络进行初始化,包括:

s11、创建初始账户、交易有所述初始账户发起;

s12、创建创世块。目标区块链的启动,需要创建第一个区块,也就是创世块,创世块中需要配置一些基本设置:

独立的区块链网络id,网络id在连接其他节点的时候会用到,不同id网络的节点无法相互连接。

挖矿难易程度,挖矿难度决定了出块的效率,可根据业务需求进行配置,业务需求决定了数据产出的效率,可以根据业务上所需要的数据产出效率来配置挖矿难度

初始账户余额,初始化阶段,初始账户的余额

每个区块的生成需要消耗的资源的上限。每个区块的生成需要消耗一定数量的token。

s13、初始化目标区块链,制定区块链相关数据保存的本地目录,将所述初始账户与矿工绑定,并开始挖矿。

本发明实施例中,当所述目标节点加入到所述目标平衡二叉树中时,需要判定所述目标平衡二叉树是否失衡,判断过程的流程图如下:

s201、判断所述目标平衡二叉树中所述目标节点到所述目标平衡二叉树中的根节点的路径中是否存在左右子树的高度大于2子树;

s202、确定所述目标平衡二叉树中的最小不平衡子树;

本发明实施例中,若存在,所述最小不平衡子树为以所述目标节点为起点,在所述目标平衡二叉树中向上查找,以第一个平衡因子的绝对值超过1节点为根的子树作为所述最小不平衡子树,其中,所述平衡因子为左子树高度与右子树高度的差,平衡因子的取值只可能为0,1,-1分别对应着左右子树等高,左子树比较高,右子树比较高。

s203、依据所述最小不平衡子树对所述目标平衡二叉树进行调整。

本发明实施例中,当左子树高时,包括:

a)ll型

在ll型的不平衡二叉树中,首先找到最小不平衡子树,再以其根结点向右旋转,向右旋转后,相当于右边的子树树高增加了1,而左边的子树树高降低了1,而原本的树高之差为,那么就能够将根的平衡因子就化为0。旋转之后为“原来根结点的左孩子作为新的根结点”。

对不平衡二叉树以根结点为中心,向右旋转如图3-1所示。旋转步骤如下

i、将2作为根结点

ii、将3作为2的右孩子

iii、将2的右孩子作为3的左孩子(维护树的有序性,只是此处为null而已)

b)lr型

对于lr,要分为两步进行旋,如图3-2所示。旋转之后为“原来根结点的左孩子的右孩子作为新的根结点”。

第一以较高子树的根,即1,为中心向左旋转。具体步骤如下。

i、将2的左子树作为1的右子树(维护树的有序性,只是此处为null而已)

ii、将1作为2的左子树

iii、将2作为3的左子树

第二以原树的根,即3为中心,向右旋转。旋转后,1,2,3的平衡因子变为0。

当右子树高时,包括:

a)rr型

旋转的示意图如图3-3所示,步骤如下。旋转之后为“原来根结点的右孩子作为新的根结点”。

i、将2作为根结点

ii、将1作为2的左孩子

iii、将2的左孩子作为1的右孩子(维护树的有序性,只是此处为null而已)

b)rl型

与lr型类似,我们需要进行两次旋转,旋转的示意图如图3-4所示,旋转之后为“原来根结点的右孩子的左孩子作为新的根结点”。

第一,以根结点的右孩子即3为中心向右旋转。具体步骤如下

i、将2作为1的右孩子

ii、将3作为2的右孩子

iii、将2的右孩子作为3的左孩子(维护树的有序性,只是此处为null而已)

第二,以原根结点即1,作为中心,向左旋转。具体步骤如下

i、将2作为根结点

ii、将1作为2的左孩子

iii、将2的左孩子作为1的右孩子(维护树的有序性,只是此处为null而已)

本发明实施例中,节点可以加入所述目标区块链,所述目标区块链中节点也可以离开所述目标区块链,当检测到所述目标区块链中的任意节点离开所述目标区块链时,判断所述任意节点是否为叶子节点,若是,则直接离开,若否,依次在所述任意节点对应的左右子树选取高度最高的节点代替所述任意节点,若所述任意节点对应的左右子树高度相等,则默认选取与所述任意节点对应的左子树。

本发明实施例中,所述目标区块链适用于不用节点之间进行交易的,交易的过程如图4所示,包括步骤:

s301、当所述目标区块链中的交易双方节点进行交易时,获取所述交易双方节点在所述目标平衡二叉树中的位置;

本发明实施例中,当所述目标区块链中的交易双方节点进行交易时,其中,所述交易双方节点可以处在同一分区中,也可以处在不同的分区中,所述位置可以为根节点、子树节点或者叶子节点。

s302、依据所述位置,确定所述交易双方节点的最小公共父节点;

本发明实施例中,最小公共父节点就是该节点的左子树和右子树分别包含两个节点,且两个节点要分别位于不同的子树中,因此,依据所述交易双方节点确定其所属于的子树节点,依据所述子树节点逐层向上查找所述最小公共父节点。

s303、依据所述最小公共父节点完成共识,共识完成后,生成的目标区块由与所述交易双方节点对应分区的根节点进行广播。

本发明实施例中,确定所述最小公共父节点所在分区,在该分区内完成共识,本发明实施例中以pow共识机制来实现,pow的工作量证明流程包括:

s21、生成merkle根哈希。即所述目标区块链中的任一节点生成一笔交易,并与其他所有即将被打包的交易通过merkle树算法生成merkle根哈希,生成merkle根哈希的过程如下:

在所述目标区块链的最底层,和哈希列表一样,把数据分成小的数据块,有相应地哈希和它对应。但是往上走,并不是直接去运算根哈希,而是把相邻的两个哈希合并成一个字符串,然后运算这个字符串的哈希,这样每两个哈希就结婚生子,得到了一个”子哈希“。如果最底层的哈希总数是单数,那到最后必然出现一个单身哈希,这种情况就直接对它进行哈希运算,所以也能得到它的子哈希。于是往上推,依然是一样的方式,可以得到数目更少的新一级哈希,最终必然形成一棵倒挂的树,到了树根的这个位置,就剩下一个merkle根哈希了。

s22、组装区块头。区块头将被作为计算出工作量证明输出的一个输入参数,因此第一步计算出来的merkle根哈希和区块头的其他组成部分组装成区块头

s23、计算工作量证明的输出

工作量证明的输出=sha256(sha256(区块头))

if(工作量证明的输出<目标值),证明工作量完成

if(工作量证明的输出>=目标值),变更随机数,递归i的逻辑,继续与目标值比对。其中,所述目标值可以依据经验或者具体情况进行限定,本发明实施例中对所述目标值的取值不进行限定。

s24、完成工作量证明的节点才能将区块提交到所述目标区块链上,并告知目标网络中的其他节点,当超过半数的其他节点都认证该区块是生成效率最快的区块,则该区块就被认证为正式的区块。

进一步的,由于节点所处高度越高,节点需要参与的共识流程更多,节点参与共识所获得的激励需要经过一个跟节点高度正相关的加权因子进行加权处理,即节点所获得的激励=正常激励*(1+节点高度*0.1)。

本发明实施例中,网络分片技术能够提高交易处理和交易确认的并发度,进而提高整个区块链网络的吞吐量。基于有序平衡二叉树能够尽可能的保证网络距离相近的节点位于同一分区,减少网络带来的开销,这样能够进一步提高共识机制的效率;另一方面,平衡二叉树自动调成平衡的特性能够保证二叉树的平衡结构稳定在一定的水平,既减少了节点数量的变化给区块链网络的性能带来的影响,又减少人力维护区块链网络的成本。

基于上述的一种基于有序平衡二叉树的分片方法,本发明实施例中还提供了一种基于有序平衡二叉树的分片装置,所述分片装置的结构框图如图5所示,包括:

第一判断模块401、发送与接收模块402和确定与加入模块403。

其中,

所述第一判断模块401,用于当接收到目标节点加入目标网络的请求时,判断所述目标节点是否为所述目标网络的首节点;

所述发送与接收模块402,用以若否,将所述请求发送给所述目标网络的目标区块链中的各个节点,接收所述各个节点对所述请求的响应,其中,所述目标区块链中的各个节点组成目标平衡二叉树;

所述确定与加入模块403,用于依据所述响应,确定所述目标平衡二叉树的目标子树节点,将所述目标节点加入到所述目标子树节点中。

本发明公开了一种基于有序平衡二叉树的分片装置,包括:当接收到目标节点加入目标网络的请求时,判断所述目标节点是否为所述目标网络的首节点;若否,将所述请求发送给所述目标网络的目标区块链中的各个节点,接收所述各个节点对所述请求的响应,其中,所述目标区块链中的各个节点组成目标平衡二叉树;依据所述响应,确定所述目标平衡二叉树的目标子树节点,将所述目标节点加入到所述目标子树节点中。上述的分片装置将所述目标区块链中的各个节点组成所述目标平衡二叉树,各个分片可以并行的处理交易,分片技术能提高交易处理和确认的并发度,进而可以提高所述目标区块链的吞吐量。

本发明实施例中,所述分片装置还包括:

第二判断模块404和确定与调整模块405。

其中,

所述第二判断模块404,用于判断与所述目标平衡二叉树是否失衡;

所述确定与调整模块405,用于若是,确定所述目标平衡二叉树中的最小不平衡子树,依据所述最小不平衡子树对所述目标平衡二叉树进行调整。

本发明实施例中,所述确定与加入模块405包括:

第一确定单元406和第二确定单元407。

其中,

所述第一确定单元406,用于依据所述响应,确定所述目标节点与所述目标平衡二叉树中各个子树的网络距离;

所述第二确定单元407,用于在各个网络距离中选取最短网络距离,与所述最短网络距离对应的子树节点为所述目标子树节点。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上对本发明所提供的一种基于有序平衡二叉树的分片方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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