一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种区块链网络中基于ILT的区块编码传输方法

2022-11-14 13:09:49 来源:中国专利 TAG:

一种区块链网络中基于ilt的区块编码传输方法
技术领域
1.本发明涉及区块编码传输方法,尤其涉及一种区块链网络中基于ilt的区块编码传输方法。


背景技术:

2.通信代价对块传输性能影响主要表现为块的大小和通信带宽两个方面。更大的区块,表明比特币网络中可以承载更多的交易,有利于区块链扩展性的提升,但也会带来问题,即需要更多的时间来传播区块,不利于区块同步。反之,小区块提高了区块同步时间,但是不利于区块链的扩展。通信带宽是节点本身的通信能力,通信带宽越高,节点在传输区块花费的时间越少。反之,节点花费时间越多。
3.如图1为现有的块传输协议,该协议方法存在着节点因交易不一致而不断同步的时间花费,这需要消耗不必要的带宽,同时在传输中需要传输整个块,而导致单个区块的传输效率低下,重传几率增大。在当前协议内,需要注意几点重要信息:1)需要通过节点对区块本身算力要求进行验证和对交易本身进行验证;2)需要确认节点的传输对象是否在线和能否接受区块的状态;3)只有前面两个通过才能进行完整区块传输。在不违背上述3点重要原则下,假设节点a在收到区块信息后,由于区块验证同样需要时间,那么可以在此时间段内,选择优先发送inv消息,通知节点b发送当前节点状态以及当前信道通信信息;当节点a收到信息后根据收到的信道信息以及节点b的状态信息,确定发送的方式。该发送方式是以不改变区块本体信息和不改变区块内交易信息为主要前提的,目的是为了区块在不同状态条件下的快速、安全、完整的传输到目的节点。但区块链网络中存在节点在传输区块时遇到区块过大、传输信道状态不佳而导致区块重传现象,而传输区块的不稳定会影响区块的最终确认,进而降低了网络的安全性。


技术实现要素:

4.发明目的:本发明的目的是提供一种降低单个区块的大小、减少重传的概率和提高传输效率的区块链网络中基于ilt的区块编码传输方法。
5.技术方案:本发明的区块编码传输方法,包括步骤如下:
6.s10,当节点收到区块时,对传输信道状态进行预测,并对传输信道状态进行划分;
7.s20,采用块编码算法对区块进行编码;
8.s30,当节点对区块编码完成后,用改进的pichu块传输协议向邻居节点发送编码包;
9.s40,当节点收到足够编码包时,采用块译码算法进行译码。
10.进一步,所述步骤s10中,通过计算信道的平均传输带宽来预测信道的传输状态,平均传输带宽的计算公式如下:
[0011][0012]
其中,p是平均传输带宽;q
max
表示传输过程中最大传输数据量,q
max
=max{q1,q2,
q3,

,qi},1≤i≤n;q
min
表示最小传输数据量;1200表示两个单位时间1200秒;
[0013]
区块通过信道的预计时间如下:
[0014][0015]
其中,d是节点间的距离,s/n是信噪比;
[0016]
设节点信道阈值为tr,当tb小于tr时,表示信道处于空闲状态;反之,信道处于拥堵状态。
[0017]
进一步,所述步骤s20中,对区块进行编码是对若干分组进行线性组合生成新的编码包的过程,其中每一个编码包是相互独立的,具体步骤如下:
[0018]
s211,将全部交易分组按照顺序排列;
[0019]
s212,根据度分布函数,生成度d;
[0020]
s213,随机选取不重复的交易分组作为编码分组的邻接元,并记录交易原始分组位置;
[0021]
s214,将随机选取的交易分组进行异或,组成编码包;
[0022]
s215,产生一个编码包集合,该集合中包含编码包的度和邻接元信息,将该集合信息发送给接收方。
[0023]
进一步,通过度分布函数产生一个度数d,然后产生d个随机数,依据随机数选取d个分组,则随机数的大小应大于0且小于分组数w:
[0024][0025]
其中,m
t
表示区块中交易总数;h表示构成分组的交易所形成的mi-merkle tree高度;2
h-1
表示划分为一个分组中的交易数;
[0026]
将选取的分组进行异或并记录其原始位置形成编码包;
[0027]
所述度指一个编码包需要几个分组进行编码;则度分布函数如下:
[0028][0029]
其中,s为度为1的分组个数,w表示总的分组数,δ表示译码失败概率;e表示编码包总个数,e》w》s;
[0030]
当度d=1时,度分布函数是度为1的分组数占总分组数的比重;当度d为其他值时,在理想soliton分布的基础上增加1-δ概率恢复函数。
[0031]
进一步,所述步骤s30中,所述块传输协议采用改进的pichu块传输协议对编码包进行传输,对于区块的验证是对区块头进行验证,对分块的验证为识别分块信息。
[0032]
进一步,所述步骤s40中,块译码算法进行译码的具体步骤如下:
[0033]
s231,接收端接收到一定量的编码包,依据编码得到编码包内的度和分组,将编码包与分组之间的关系构成tanner图;
[0034]
s232,找到度d为1的编码包符号,恢复与之对应的分组s1,删除度为1的编码包,将分组s1与自身连接的其它编码包进行异或,然后在区块中保存分组s1,如此,与分组s1相连的编码包度数会降1;
[0035]
s233,重复步骤s232,直到恢复所有的分组则译码成功;
[0036]
s234,将分组内交易按照mi-merkle tree顺序构建,得到完整的区块。
[0037]
进一步,所述mi-merkle tree是根据区块内原有的merkle树,按照一定高度的交易进行哈希分组;
[0038]
当交易数为m
t
值时,其merkel树的高度为当树的高度大于等于8时,对区块内交易进行划分分组。
[0039]
本发明与现有技术相比,其显著效果如下:
[0040]
1、本发明根据信道状态对传输区块内的交易进行合理分组,并提出ilt算法对分组信息编码,通过编码后的信息降低了单个区块的大小,减少了重传的概率;
[0041]
2、本发明采用将区块划分成分组,并将分组编码成编码包,从而将完整的区块传输改变为小块的传播;采用这种方法,即使传输过程出错也不需要重传,因为该编码方式本身就具有一定的容错性,从而提升了区块传输效率。
附图说明
[0042]
图1为现有的块传输协议示意图;
[0043]
图2为本发明的总流程示意图;
[0044]
图3为本发明的块传输过程示意图;
[0045]
图4为新区块头信息的示意图;
[0046]
图5为交易分组信息示意图;
[0047]
图6为原merkeltree结构示意图;
[0048]
图7为mi-merkeltree结构示意图;
[0049]
图8为编码过程示意图;
[0050]
图9为编码流程图;
[0051]
图10为编码包的格式示意图;
[0052]
图11中的(a)为确定分组s1的示意图,
[0053]
图11中的(b)为将s1值与其相连的分组异或的示意图,
[0054]
图11中的(c)为将s1对应的编码包和连接度删除后的示意图,
[0055]
图11中的(d)为通过度为1的编码包确定s2的示意图,
[0056]
图11中的(e)为将s2相连其他的编码包异或,并删除连接度的示意图,
[0057]
图11中的(f)为通过度为1确定分组s3;
[0058]
图12为新传输协议的示意图;
[0059]
图13为基于信道状态的块传输算法示意图;
[0060]
图14为不同节点数量下的块同步时间示意图;
[0061]
图15为不同交易数量下的块同步时间示意图;
[0062]
图16为不同节点数量下的块传输成功率示意图;
[0063]
图17为不同交易数量下的块传输成功率示意图;
[0064]
图18不同节点下的编码包重传率示意图;
[0065]
图19为不同交易数量下的编码包重传率示意图。
具体实施方式
[0066]
下面结合说明书附图和具体实施方式对本发明做进一步详细描述。
[0067]
图2所示,本发明根据信道状态对传输区块内的交易进行合理分组,并提出ilt算法(improved luby transform)对分组信息编码,通过编码后的信息降低了单个区块的大小,减少了重传的概率。同时,通过新的传输协议在区块传输稳定性的基础上加快了传输效率。
[0068]
本发明对传输协议考虑以下因素:1)节点是否已经收到区块;2)减少一次传输的交易数量进而减少单次传输的区块大小。
[0069]
构建区块链网络的块传输过程的三个元素如下:区块、分组和编码包。具体定义如下:
[0070]
区块:用block定义区块,区块内存放着不同的交易信息,这些交易信息以满二叉树结构组成一个merkel tree。
[0071]
分组:采用packet定义分组,分组是将区块中的merkle tree中的交易信息按照高度为h划分为一组,将每个组中交易信息组成的结构定义为mi-merkel tree。
[0072]
编码包:使用encoding package定义编码包,编码包是将分组信息进行编码所得,得到的编码包将传输给其他未收到区块的节点。
[0073]
区块是块传输的重要元素;而分组是将区块划分,目的是减少单个传输的区块大小;编码包则是最终在节点间传输的单元。
[0074]
(一)信道状态预测
[0075]
信道预测是节点需要发送区块时,预先对传输信道进行测量的过程。为此,对信道做如下假设:a1)节点拥有足够的下载带宽,上传带宽受限;a2)节点的下载带宽已知,且每个节点连接多个其它节点;a3)不限制区块链网络的拓扑结构、节点分布的稀释度。通过计算信道的平均传输带宽来预测信道的传输状态,具体如式(1)所示:
[0076][0077]
式(1)中,p是平均传输带宽;q
max
表示传输过程中最大传输数据量,q
max
=max{q1,q2,q3,

,qi},qi(1≤i≤n),n表示传输次数;q
min
表示最小传输数据量。1200表示两个单位时间1200秒,为了更加精确的判断当前信道是否在传输区块时处于拥堵状态,需要对区块通过信道时间进行预测。
[0078]
通过式(2)计算当前区块通过信道的预计时间:
[0079][0080]
式(2)中,d是节点间的距离,s/n是信噪比。通过式(2)可以得到区块通过信道的大概时间。
[0081]
为此,引入tr值,该值是节点信道阈值,通过节点信道阈值反映信道的传输的拥堵情况:当tb小于tr时,表示信道处于空闲状态;反之,信道处于拥堵状态。
[0082]
(二)基于ilt算法的块传输过程
[0083]
在区块链网络中,区块可以看成是一个连续的数据段。而节点间块传输是采用ilt编码将区块划分为分组,降低单个节点的传输压力,提高区块的传输效率和稳定性。基于
ilt编码的块传输过程是一个从编码、传输和译码的过程。具体过程如图3所示,假设节点a已经验证通过了区块,需要将区块传输给其它相邻的节点b、c、d。节点b和d的传输信道状态优于节点c的信道状态,所以节点b和节点d相比较节点c可以更快的收到区块信息。此时,节点a通过ilt编码的方式将编码包传输给节点b、c和d。当节点b收到足够分组信息,通过译码的方式得到完整区块信息,并验证区块信息。当节点c由于传输受限可能没有及时收到分组情况,将由节点b将收到的编码包传输给节点c。
[0084]
在区块编码前需要对区块进行修改,目的是适应信道的传输状态和减少传输时的额外通信成本。因此,采用新的区块结构,将完整的区块分为区块头部信息和分组信息。区块头部信息用于保存区块信息和交易数信息,分组信息则保存具体的交易信息。区块头信息具体如图4所示,在原始区块头中加入2字节的number,用以表示交易数量。原因是区块头和分组信息是分开传输的,接收方收到区块头信息就可以得到具体的交易数量信息,并在验证过程能够确认是否收到全部交易信息。
[0085]
由于一个区块中存放上千交易信息,因此需要对交易进行分组,分组信息如图5所示,symbol部分表示mi-merkle tree的哈希值(32字节),剩余部分存放交易信息。
[0086]
mi-merkle tree是根据区块内原有的merkle树,按照高度为h的交易进行哈希分组,得到的分组不会打乱原始交易信息顺序,也有利于节点重构区块和验证。原始merkle tree结构如图6所示,tx1表示交易1,ha1表示为该交易的哈希值,ha1,2表示将ha1和ha2进行哈希得到的值,以此类推其他表示。由此可知,区块中保存着16笔交易,通过两两哈希,最终生成merkel tree的根哈希值。
[0087]
为了减少单次传输区块的大小,需要对该哈希过程进行改进。假设对图6中16笔交易进行划分分组,merkel树一共5层,当选取h=3时,其分组中的交易数为4,分组数就是4组,将这4组中的交易所构成的子merkel tree的结构就是提出的mi-merkel tree,具体如图7所示,mi-merkel tree的构造是选取原始的merkel子树的生成过程,从而减少单次传输的区块大小。因此,当交易数为m
t
值时,其merkel树的高度为当树的高度大于等于8时,意味着区块过大,需要对区块内交易进行划分分组。
[0088]
ilt算法的编码过程、译码过程和传输过程如下:
[0089]
(21)编码过程
[0090]
区块编码过程主要是对若干分组进行线性组合生成新编码包的过程。当图3中节点a传输区块信息给节点b时,首先需要对全部的分组按顺序排列,然后根据度分布函数确定度d,并依据度d随机选择分组。最后将选取的分组进行异或,生成新的编码包。ilt编码需要在选择d个分组进行编码时,d在概率上是满足度分布函数的。编码过程具体如图8所示,当选取度为3时,则从交易分组中选取3个进行编码。因此,ilt编码的每一个编码包是相互独立的,编码的流程图如图9所示,一个编码的具体步骤如下:
[0091]
211)将全部交易分组按照顺序排列;
[0092]
212)根据优化的度分布函数,确定编码分组的度d;
[0093]
213)随机选取不重复的交易分组作为编码分组的邻接元,并记录交易原始分组位置;
[0094]
214)将随机选取的交易分组进行异或,组成编码包;
[0095]
215)产生一个编码包集合,该集合中包含编码包的度和邻接元信息,将该集合信
息发送给接收方。
[0096]
图9中,通过度分布函数产生一个度数d,然后产生随机数,依据随机数选取d个分组,因此随机数的大小应大于0且小于分组数w。
[0097][0098]
其中,h表示构成分组的交易所形成的mi-merkle tree高度。
[0099]
将选取的分组进行异或并记录其原始位置,直到所有的分组编码完成。产生的编码包的格式如图10所示,度数(degree)用来表示构成编码包的分组数,比如该编码包有3个不同分组构成,则度数为3。原始分组位置(original packet location)是记录分组原始的顺序,最后分组数据(packet data)用来保存分组。
[0100]
(22)优化度分布函数
[0101]
度分布函数是ilt算法的核心,度的选取直接影响编码的编译优劣性。度分布函数是一种概率分布函数,它的实质是有概率的选取合适的度。本发明的度主要指一个编码包需要几个分组进行编码。因此在设计度分度函数应该考虑两点:
[0102]
b1)在每次迭代中都有一个度为1的分组出现;
[0103]
b2)尽量确保编码的度数和时间复杂度呈线性关系。
[0104]
则优化的度分布函数如下:
[0105][0106]
式(4)中,s为度为1的分组个数,w表示总的分组数,δ表示译码失败概率;e表示编码包总个数(e》w》s)。
[0107]
用投球入桶来解释式(4):假设有s个桶,为了保证球以1-δ的概率投入桶中,至少需要s ln(s/δ)个球,为了确保余下的w-s分组都能以1-δ概率恢复,对应该分组数需要的编码包个数至少为当度d为1时,度分布函数是度为1的分组数占总分组数的比重。当度为其他值时,在理想soliton分布的基础上增加1-δ概率恢复函数,增加译码效率。
[0108]
(23)译码过程
[0109]
ilt码译码需要两个信息:分组和度。分组和度被包含在编码包中,通过编码包获取分组和度。采取的译码算法是置信传播算法,具体步骤如下:
[0110]
231)接收端接收到一定量的编码包,依据编码得到编码包内的度和分组,将编码包与分组之间的关系构成tanner图,如图11(a)-(f)所示;
[0111]
232)找到度d为1的编码包符号,恢复与之对应的分组s1,删除度为1的编码包,将分组s1与自身连接的其它编码包进行异或,然后在区块中保存s1分组,这样与s1相连的编码包度数会降1;
[0112]
233)重复步骤232,直到可以恢复所有的分组则译码成功;
[0113]
234)将分组按照顺序构建,得到完整的区块。
[0114]
图11中的(a)-(f),圆表示分组,正方形表示编码包。图11中的(a)通过编码包度数
为1确定分组s1。图11中的(b)将s1值与其相连的分组异或,并将s1对应的编码包和连接度删除,此时得到图11中的(c)。然后在图11(c)中找到下一个度为1的编码包,通过图11中的(c)中度为1的编码包确定s2,删除s2所连度为1的编码包。接下来将图11中的(d)中s2相连其他的编码包异或,并删除连接度得到图11中的(e)。最后通过度为1确定分组s3,得到图11中的(f)。
[0115]
(24)块传输协议
[0116]
为了减少带宽消耗提出基于ilt算法的块传输协议。新传输协议是根据改进的pichu块传输协议中将对编码包进行传输,如图12所示。对于区块的验证主要是对区块头进行验证,对分块的验证集中表现为识别分块信息,而不是对分块内交易进行验证。该协议考虑到以下因素:
[0117]
c1)需要考虑到对等节点的安全性和效率问题;
[0118]
c2)需要注意到节点在重构块时交易是否满足一致性;
[0119]
c3)需要考虑到节点的搅动(churn)带来的传输块中断和重传。
[0120]
图12中根据lt算法改进后,一旦节点a收到块,就对块验证同时需要发送inv(blockhead)消息给节点b,如果此时收到节点b发送的get信息,等待验证完区块信息就需要对块进行分组,将分组后进行ilt编码为k个编码包(sym_chunk)进行发送。节点b只需要收到个编码包时,就可以重新构造该块。因此,本发明的传输协议具有以下的优势:
[0121]
d1)确保区块传输的完整性和安全性,完整性体现在ilt算法不会对区块产生破坏同时确保节点能够收到一致的区块,安全性体现在验证区块信息的同时验证区块内交易信息;
[0122]
d2)保证节点间的充分“了解”,这意味着节点在选择前明确知道相邻节点信道信息;
[0123]
d3)对传输带宽的消耗减少,依据信道状态调节分组数量,降低传输带宽的消耗。
[0124]
(三)块传输过程
[0125]
本发明通过ilt编码算法、ilt译码算法以及块传输协议来显示块传输过程,具体如图13所示,总共调用两个算法和一个协议:编码算法(算法1)、译码算法(算法2)和传输协议(协议1),当节点收到区块时,预测邻居节点信道状态,并将信道状态划分。接下来对区块进行编码(算法1),当节点对区块编码完成,采用改进的pichu块传输协议(协议1),向邻居节点传输编码包。当收到编码包时进行译码,调用译码算法(算法2)。各算法如下:
[0126]
(31)块编码算法
[0127]
本发明的块编码算法,用来对区块的分组编码。具体如算法1所示:
[0128]
算法1
[0129][0130][0131]
算法1中,当节点i收到区块时,需要对信道进行测量,通过计算平均传输时间与节点信道阈值的比较,确定当前传输信道的状态(步骤a1至a3)。根据信道状态确定分组数,接下来通过度分布函数来确定包含的分组并计算度分度函数(步骤a5至a8),将随机选取的分组进行异或得到编码包(步骤a9至a11)。发送编码包集合s(步骤a12)。如果区块本身很小,就不需要进行编码传输(步骤a13至a15)。
[0132]
(32)块传输协议
[0133]
本发明的块传输协议,将编码包传输给其他节点。具体信息如协议1所示:
[0134]
协议1
[0135][0136]
结合图12和块传输协议给出具体描述如下:
[0137]
首先,该协议中sym_chunk表示为采用ilt编码后的编码包,节点a收到块信息,在进行块头信息验证后向邻居节点传播inv消息。
[0138]
其次,如果节点b收到inv(blockhead)信息并且节点b没有收到该区块,会返回一
个get信息,这里的目的有以下几点:1)需要提示节点b没有块信息,现在节点b处于可接收块状态;2)测试ab节点间的传输距离;3)需要节点b的传输信道状态信息。
[0139]
然后,节点b将验证完的inv(blockhead)消息转发给节点c,同样节点c如果没有区块也会发送get消息给节点b。
[0140]
为了防止节点a没有验证块就进行传输,节点a在收到get信息不会立即传输块,必须要等到验证块信息结束才能传输块。如果节点a验证完块信息却没有收到节点b发送到get消息,只需要等待1个单位时间间隔,之后可以视为节点b已经离开,放弃接收来自节点b的get消息,并结束发送任务。
[0141]
最后,节点a发送编码包给节点b,节点b收到编码包后进行译码,得到区块内分组,并验证分组内交易信息。再依据节点c发送的信道信息,如果信道状态信息与节点ab间信道状态信息一致,直接发送编码包。如果不一致,发送新的编码包给节点c。当节点c接收并验证完区块时,发送fin消息给节点b,表示已经完成区块验证。
[0142]
(33)块译码算法
[0143]
本发明的译码算法,用于将接收到的编码包译码,得到分组信息,最终得到区块。具体如算法2所示:
[0144]
算法2
[0145][0146]
算法2中,当节点j收到编码包s时,首先将编码包内度数取出,并将原始分组位置保存下(步骤b1至b2)。依据度为1的编码包,将编码包内分组数据进行异或,不断迭代恢复原始分组(步骤b3至b5)。如果全部分组已经恢复,接下来验证分组信息,并依据保存的分组位置恢复区块,最终得到完整区块(步骤b6至b11)。
[0147]
根据算法1所示,算法时间复杂度主要由度分布函数的选择影响,依据度分布函数,每个分组中选取交易数的概率约为ln(|w|/m
t
),|w|为分组数,m
t
为交易数。因此在算法1中的时间复杂度为o(|w|*ln(|w|/m
t
))。算法2的时间复杂度主要有译码和迭代度数组成,因此时间复杂度为o(k)。对于算法1和算法2的空间复杂度主要由节点传输的编码包决定的,因此空间复杂度为o(k)。
[0148]
(四)验证
[0149]
为了测试基于块传输的ilt算法和协议的传输性能和可靠性,通过设计实验并与velocity和kadcast的块传输方法进行对比。先构建实验环境,设计实验过程和具体的实验
参数,然后通过设置三个指标(块同步时间、块传输成功率和编码包重传率)来表现对比实验具体方向,最后是实验的结果和分析。
[0150]
(41)实验设置
[0151]
具体参数设置如表1:
[0152]
表1参数设置表
[0153]
参数描述取值n节点总数100、500、1000、5000b
t
交易大小500bytespo初始节点参与概率1θ在线阈值0.3zc当前节点加入网络概率0.5b
l
最大节点带宽155mbpsm
t
交易数量100、500、1000、2000h分组高度8、10tr阈值30ss/n信噪比10dbδ译码失败概率0.15
[0154]
初始节点参与率设置为1,设置在线阈值为0.3和当前节点参与率0.5。
[0155]
(42)实验指标
[0156]
本实验是对块传输时间、块传输成功率以及块重传率三个指标进行测量,三个指标的计算式如下:
[0157]
(d1)块同步时间(tg)
[0158]
块同步时间表示一个块最终在链上确认的时间,表达式如下:
[0159]
tg=max{t
ia
}
ꢀꢀꢀ
(7)
[0160]
式(7)中,t
ia
表示节点i收到一个块的时间。
[0161]
(d2)区块传输成功率(p
bt
)
[0162]
表示在t时间内所有节点成功收到区块数占总区块数的比率,表达式如下:
[0163][0164]
式(8)中,r表示总区块数,ii表示节点i收到块的数量,f表示节点总数。
[0165]
(d3)编码包重传率(qi)
[0166]
表示区块未能传输成功而重传的编码包重传率,表达式如下:
[0167][0168]
式(9)中,m表示传输编码包的总数,ki表示节点i邻居节点数,vi表示节点i重传编码包数。
[0169]
(43)实验结果和分析
[0170]
(431)块同步时间
[0171]
在块同步时间中,通过测量不同节点下块同步时间的差异来表现块传输算法的传
输性能,如图14所示,分别测量节点数为100、500、1000和5000情况下,不同的块传输算法表现出较大差异。当节点数为100、500时,三个传输算法差异不明显,这是三个算法都采用无速率擦除算法,而在节点较少情况下,同步时间差距不大。当节点数达到1000和5000时,velocity算法块同步时间明显比其它两个算法更大,这是因为该算法在划分区块过程中,采取等块划分原则,将区块划分为等大小的片段,没有充分考虑到区块结构和信道状态。kadcast算法中在节点数为1000和5000的块同步时间都大于本发明的算法,kadcast算法在传输区块时,采用结构化拓扑传输区块,由于区块链网络是无结构的,因此该算法在传输前需要依据节点分布构造一个类似k-桶的树形传输模型,这时通过优化传输路径的方式传输区块,但是随着节点数的增加,其构造结构化的传输路径所需要的时间和成本也在不断增加。而本发明的块传输算法结合信道状态和ilt算法,能够在拥堵的信道中不降低译码效率的情况下,通过降低分组数进而减少传输的编码包数量,这将大大减少块的同步时间。
[0172]
通过增加交易数量来显示不同区块大小情况下的块同步时间,如图15所示,块内交易数量不同,不同的块传输算法的块同步时间相差很大。同样100交易数量情况下,三者相差都不是很大。面对较小的区块传输时,其表现不是非常突出。这是因为小区块在传统的比特币网络或者以太坊网络中,其传输时间少、传输速率快。当区块内交易数量增加到500时,通过块同步时间可以看出velocity算法同步时间最多,并且随着交易量的增加其块同步时间也随之增大,这是因为velocity算法在块增大的同时其划分区块数也不断增大,而且增加的编码包数量相较于其它两个算法比较多。当交易数量达到1000时,kadcast算法相较于本发明方法的同步时间增加,并且交易量达到2000时,两者间的差距更加明显,这是因为kadcast算法在块传输过程中,通过不同路径传输区块;且这种方式没有充分考虑到块在同一个信道中传输造成的信道拥堵的情况。本发明的ilt算法可以在区块内交易增加同时依据信道的状态,适应性调节分组数量,减少编码包的传输大小并提高块同步时间。因此,随着区块内交易增加,ilt算法也能表现出相较于其它算法很少的同步时间。
[0173]
(432)块传输成功率
[0174]
块传输成功率是区块通过节点间的传输最终能成功在区块链上确定的概率,通过不同的节点数可以看出不同的传输算法的块传输成功率差异。如图16所示,采用节点数为500和节点数为5000时,显示三个算法的块传输成功率特征。当节点为500时,velocity算法中位数在0.8左右,而kadcast算法在0.87-0.89之间,ilt算法在0.9左右。由此,velocity算法在块传输成功率上相较于其它算法明显不足,这是因为该算法在传输编码包时没有考虑传输信道的受限情况,对于传输带宽受限的部分节点就意味着不能及时收到一定量的编码包信息,这导致了块传输成功率降低。对于kadcast算法,它的优势在考虑的传输路径以及传输过程中包丢失的情况,因此在节点500时的块传输成功率上和ilt算法相差不大。但是当节点为5000时,网络中部分节点不稳定现象导致块传输成功率下降。然而,本发明的itl算法充分考虑传输信道状态通过优先传输合适的编码包信息,确保区块快速、稳定的传输给其它节点,即使面对部分节点的带宽受限以及不稳定的情况,通过新传输协议可以经其他邻居节点传输给受限节点,提高了传输的可靠性。
[0175]
如图17所示,在不同交易数量下的块传输成功率,随着交易量的增加,块传输成功率都呈现下降的趋势。因为随着交易增加,区块的同步时间和验证时间也随之增加。验证时间是区块传输成功率的重要因素,而具体的验证时间分为算力验证和区块内交易验证,算
力验证是验证区块是否符合算力要求,交易验证是确认该交易信息是否存在。在velocity算法中,区块验证是要在区块被完整接收后才能进行验证,这不仅影响区块的传输而且也延迟了区块验证时间;同时,velocity算法是将区块等分传输的,并且通过无速率擦除算法构造缺失的编码包信息;因此,velocity算法在块传输成功率是优于kadcast算法的;但是其验证是有一定延迟的,这很大程度上影响了块的最终确认。而kadcast算法在随交易数量增大的同时其块传输成功率下降较快,因为kadcast算法采用udp协议传输,导致其接收包的稳定性不佳;虽然kadcast算法采用fec算法来减少包重传,但是在传输信道受限的情况下,无法保证区块的完整性。而本发明的ilt算法是将交易按照mi-merkl tree结构进行划分,这保证每一个分组都是一个完整交易信息,也就提供了验证交易信息的方式。在交易量增加时,可以根据信道控制编码包的数量,减少传输信道的影响,增加区块传输成功率。
[0176]
(433)编码包重传率
[0177]
编码包重传概率是考虑算法在加快块传输的同时也能保证传输的稳定性,这有利于区块的验证和最终确认。不同节点下的编码包重传率,如图18所示,当节点数为500时,三个算法在总体数据上表现差异不是太大,velocity算法的编码包重传率集中在0.19~0.25范围内,而kadcast和ilt算法则分别集中在0.22~0.27和0.15~0.25范围内。当节点数为5000时,首先kadcast算法的编码包重传率很大,该重传率集中在0.5~0.57之间,中位数和均值都集中在0.55,这远大于velocity和ilt算法。这是因为kadcast采用udp协议进行传输,这是不可靠传输。虽然kadcast算法也通过fec算法来减少包重传概率,但当传输节点带宽受限时,节点的包重传概率将大大上升。而velocity算法和ilt算法数据比较集中,这是因为两者都采用编码包的分组传输算法,接收方接收到一定的编码包就可恢复丢失的编码包,因此在包重传率相较于kadcast算法较小。
[0178]
如图19所示为不同交易数量下的编码包重传率,随着交易数量的上升,kadcast算法的重传率不断的上升。当交易量为500时,kadcast比velocity算法高0.1,比ilt算法高0.2。而且随着交易量增加,差距也在扩大。这是因为kadcast算法在交易量增大的情况下,区块也随之增加,传输区块时就需要更大的带宽,而此时节点的传输性能依旧未变,因此包重传率也不断增加。而velocity算法和ilt算法对区块先编码再传输的方式,减少了因区块增加而带来的传输受限的情况,同样这两个算法都采用tcp协议传输提高每一个传输的可靠性;但是velocity算法没有对传输信道进行测量,也没有对区块进行合理划分,这导致传输的丢包现象大部分是节点未能及时收到一定编码包造成重传。而本发明的ilt算法在交易数量增加时,根据信道状态减少分组数量来提高传输速率。因此即使交易量不断增加,ilt算法的包重传率相较其它两个算法还是比较低的。
[0179]
实施例
[0180]
实验环境是操作系统为windows 10,处理器为i7 3.0ghz,8g运行内存。采用omnet 5.4模拟器,它是一个离散事件驱动的仿真模拟器来模拟区块链网络中块传输过程,主要有以下组成部分:
[0181]
(h1)块产生事件:在实验中挖矿部分是通过计时器对块产生进行控制,在挖矿事件中所产生的挖矿时间是通过一个随机值来得到。
[0182]
(h2)块传输事件:块传输事件是当节点上一个块产生事件结束后开始进行。
[0183]
为模拟块传输过程中块大小的变化,块大小是由包含的交易数量决定,而在模拟
中交易大小固定为500bytes。本次实施例的运行次数为50次,每次实验的节点在线是满足马尔可夫链,这符合区块链网络中节点的不稳定性。因此每次节点参与度pn满足下式:
[0184][0185]
式(10)中,pn表示节点在线概率,po表示节点上次在线概率,l表示固定在线时间系数;zi表示节点i重新加入网络的概率,如式(11)所示:
[0186][0187]
式(11)对节点重新加入的概率设置,ce表示当前链的长度;cm是挖矿随机值,其中cm∈{1,2,

,ce};zc表示为当前节点加入的概率。
[0188]
当节点的pn大于或等于设定在线阈值θ,节点表示为在线;反之,表示节点不在线。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献