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

一种区块链网络点对点数据传输方法与流程

2022-06-01 03:12:00 来源:中国专利 TAG:


1.本发明涉及区块链技术领域,具体涉及一种区块链网络点对点数据传输方法。


背景技术:

2.区块链是一个共享账本,具有可追溯、不可篡改、透明和共同维护的特征。区块链系统采用去中心化的设计,网络节点分散且相互独立,所以由不同节点组成的系统之间必须依赖一个制度来维护系统的数据一致性,并奖励提供区块链服务的节点,以及惩罚恶意节点,这样的机制即为共识机制。较为常用的有:工作量证明算法、权益证明算法、股份授权证明算法、实用拜占庭容错算法。实现共识的过程需要节点之间进行大量的数据广播,在区块链网络中传递大量的数据。随着区块链应用的发展,区块链上承载的业务增多,导致区块链网络出现拥堵甚至堵塞。因而需要研究更高效率的区块链节点之间的数据传输方法。
3.如中国专利cn109559122a,公开日2019年4月2日,一种区块链数据传输方法及区块链数据传输系统,该方法包括:对交易数据进行至少两次哈希运算,获得第一摘要信息;利用至少两个私钥对第一摘要信息进行多次加密,获得交易数据的数字签名信息;将交易数据、交易数据的数字签名信息以及至少两个私钥对应的至少两个公钥发送给区块链网络节点。其技术方案通过至少两次哈希算法,提高了哈希内部操作复杂度和哈希输出长度,使得任意输入改变都可以产生不同的输出,提高了抵御攻击的能力,且在不牺牲抵御冲突前提下具有高效性,同时利用至少两个私钥进行多次加密,即多重数字签名技术增加了信息可信度,能充分验证信息不是伪造的,且在传播过程中未被篡改,提高了数字钱包安全性。但其不能解决目前区块链网络数据传输效率低的技术问题。


技术实现要素:

4.本发明要解决的技术问题是:目前区块链网络数据传输效率低的技术问题。提出了一种区块链网络点对点数据传输方法,能够有效提高节点之间传输数据的效率。
5.为解决上述技术问题,本发明所采取的技术方案为:一种区块链网络点对点数据传输方法,包括:约定传输二进制数d的长度l和自变量x的长度m;生成n个一元多项式,获得每个一元多项式的值域,获得n个一元多项式的总值域;将n个一元多项式排序并编号;获得未落入总值域的二进制数d的取值,记入遗漏集合;发送数据的节点将数据转为二进制数据流,将二进制数据流补位后截取为若干个长度l的二进制数d;检查二进制数d是否属于遗漏集合,若属于遗漏集合,则直接发送二进制数d;若不属于遗漏集合,则从n个一元多项式中选择一个,计算出相应的自变量x的值,将自变量x和一元多项式的编号y发送给接收数据的节点;接收数据的节点判断收到的数据长度是否等于l,若等于l则直接接受数据,若小于l,则将自变量x的值代入编号y对应的一元多项式,获得二进制数d;全部二进制数据流发送完成后,发送数据的节点将补位的位数发送给接收数据的节点;接收数据的节点去除补位后,获得二进制数据流,即获得传输的数据。
6.作为优选,发送数据的节点统计遗漏集合内的二进制数d被传输的次数;将被传输
次数超过预设阈值的二进制数d移入补充集合;为补充集合内的二进制数d排序,将排序序号作为自变量,形成样本数据;使用样本数据建立一元多项式,将一元多项式关联编号后,加入的约定一元多项式。
7.作为优选,使用样本数据建立一元多项式f(x)的方法包括:样本数据记为(xi,fi),i∈[1,k],k为样本数据数量;建立k个单项,每个单项对应一个样本数据,建立通用特征式,所述通用特征式为自变量减每个样本数据xi值后相乘的乘式;为每个单项建立单项特征式,单项特征式为通用特征式除以自变量减单项对应样本数据xi值后再乘自变量所得的乘式;计算每个单项的单项特征式的取值,将自变量的值设为单项对应样本数据交xi值,代入单项特征式,再乘样本数据的取值fi与自变量xi的比值,得出单项特征值;使用单项对应样本数据的取值fi除以单项特征值,作为单项特征式的项系数,构成单项表达式;k个单项的单项表达式求和即完成一元多项式f(x)的建立。
[0008]
作为优选,使用样本数据建立一元多项式f(x)的方法包括:样本数据记为(xi,fi),i∈[1,k],k为样本数据数量;建立k个单项,每个单项对应一个样本数据,建立通用特征式,所述通用特征式为自变量减每个样本数据xi值后相乘的乘式;为每个单项建立单项特征式,单项特征式为通用特征式除以自变量减单项对应样本数据xi值后再乘自变量的z次方所得的乘式,z为指定的指数值;计算每个单项的单项特征式的取值,将自变量的值设为单项对应样本数据交xi值,代入单项特征式,再乘样本数据的取值fi与自变量xi的比值,得出单项特征值;使用单项对应样本数据的取值fi除以单项特征值,作为单项特征式的项系数,构成单项表达式;k个单项的单项表达式求和即完成一元多项式f(x)的建立。
[0009]
作为优选,指定指数值z的方法为:为每个单项特征式生成的z使得样本数据的取值fi与自变量xi^z的比值最接近1。
[0010]
作为优选,发送数据的节点一次发送k个二进制数d,发送k个二进制数d的方法包括:获得每个二进制数d的自变量值x和编号y;获得编号y的最大值,进而获得编号y的最大值占用的字节数;全部编号y补位至所述字节数;将k个二进制数d对应的自变量值x和编号y发送给接收数据的节点;接收数据的节点将收到的字节数除以k,获得每个二进制数d对应的自变量值x和编号y占用字节数;自变量x的长度m为约定值,进而获得编号y占用字节数,获得编号y值;进而恢复每个二进制数d,获得传输的数据。
[0011]
本发明的实质性效果是:通过事先约定一元多项式,进而能够使用占用字节数少的自变量及编号代替占用字节数多的二进制数d,减少了需要传输的字节数,从而提高区块链网络的数据传输效率;通过一次传输多个二进制数d,进一步提高数据传输的效率。
附图说明
[0012]
图1为实施例一点对点数据传输方法示意图。
[0013]
图2为实施例一补充一元多项式方法示意图。
[0014]
图3为实施例一使用样本数据建立一元多项式方法示意图。
[0015]
图4为实施例二使用样本数据建立一元多项式方法示意图。
[0016]
图5为实施例二发送k个二进制数d方法示意图。
具体实施方式
[0017]
下面通过具体实施例,并结合附图,对本发明的具体实施方式作进一步具体说明。
[0018]
实施例一:一种区块链网络点对点数据传输方法,请参阅附图1,包括:步骤a01)约定传输二进制数d的长度l和自变量x的长度m;步骤a02)生成n个一元多项式,获得每个一元多项式的值域,获得n个一元多项式的总值域;步骤a03)将n个一元多项式排序并编号;步骤a04)获得未落入总值域的二进制数d的取值,记入遗漏集合;步骤a05)发送数据的节点将数据转为二进制数据流,将二进制数据流补位后截取为若干个长度l的二进制数d;步骤a06)检查二进制数d是否属于遗漏集合,若属于遗漏集合,则直接发送二进制数d;步骤a07)若不属于遗漏集合,则从n个一元多项式中选择一个,计算出相应的自变量x的值,将自变量x和一元多项式的编号y发送给接收数据的节点;步骤a08)接收数据的节点判断收到的数据长度是否等于l,若等于l则直接接受数据,若小于l,则将自变量x的值代入编号y对应的一元多项式,获得二进制数d;步骤a09)全部二进制数据流发送完成后,发送数据的节点将补位的位数发送给接收数据的节点;步骤a10)接收数据的节点去除补位后,获得二进制数据流,即获得传输的数据。
[0019]
约定的一元多项式形式表达为:f(x)=a0 a1*x a2*x^2

an*x^n。本实施例约定的n个一元多项式如表1所示。
[0020]
表1 本实施例约定的一元多项式编号y一元多项式136*x^10 28*x^8 32*x^6-15*x^4 9*x^2 12*x-20217*x^8 4*x^6 24*x^5-6*x^4 20*x^3 15*x 110
……
n12*x^12 7*x^10-39*x^8-28*x^6 12*x^5 11*x^3 130*x-36自变量x的长度为4位,即半个字节,编号y的占用的长度不限。传输数据的前4位为变量x的值,剩余位均表示编号y的值。想要完整的覆盖l位二进制数取值范围,需要大量的一元多项式,此时编号y占用的字节数也比较多。理论上,若一次传输中,将l位二进制数取值范围内的每个取值都传输一次,则实际传输的字节数将基本相等。然而本实施例采用了遗漏集合的方案,即只使用一元多项式表示部分取值,因而减少了一元多项式的数量,使编号y的最大值占用字节数减少。处于遗漏集合之外的取值,其对应的当自变量x和编号y占用的位数不会超过长度l。处于遗漏集合内的取值,则采用直接传输原值的方法,以此实现整体上减少需要传输的字节数的效果,提高了数据传输的效率。
[0021]
减少需要传输的字节数的效果优劣取决于两个方面。第一为当编号y不超过上限值时,n个一元多项式总值域覆盖的范围,覆盖的范围越大,则减少的字节数越多,传输速率提高效率越好。编号y的上限值与自变量x的长度的和等于二进制数d的长度l。其次则与传输的数据未落入遗漏集合外的概率有关。若传输的二进制数d全部属于遗漏集合,则本方案将不会提升传输效率。若传输的二进制数d全部未落入遗漏集合,且使用到的一元多项式的编号y占用最少的字节数时,本实施例具有最佳的效果。若传输数据部分落入遗漏集合,另一部分未落入遗漏集合,则本实施例必然具有一定的提高传输效率的效果。
[0022]
请参阅附图2,本实施例以如下方法添加补充一元多项式,包括:步骤b01)发送数
据的节点统计遗漏集合内的二进制数d被传输的次数;步骤b02)将被传输次数超过预设阈值的二进制数d移入补充集合;步骤b03)为补充集合内的二进制数d排序,将排序序号作为自变量,形成样本数据;步骤b04)使用样本数据建立一元多项式,将一元多项式关联编号后,加入的约定一元多项式。通过在实际使用中,将使用概率比较高的二进制数d取值,借助补充一元多项式实现,实现进一步提高数据传输效率的效果。
[0023]
请参阅附图3,使用样本数据建立一元多项式f(x)的方法包括:步骤c01)样本数据记为(xi,fi),i∈[1,k],k为当前被分配的取值数量;步骤c02)建立k个单项,每个单项对应一个样本数据,建立通用特征式,通用特征式为自变量减每个样本数据xi值后相乘的乘式;步骤c03)为每个单项建立单项特征式,单项特征式为通用特征式除以自变量减单项对应样本数据xi值所得的乘式;步骤c04)计算每个单项的单项特征式的取值,将自变量的值设为单项对应样本数据xi值,代入单项特征式,得出单项特征值;步骤c05)使用单项对应样本数据的取值fi除以xi的商再除以单项特征值,作为单项特征式的项系数,再乘以自变量,构成单项表达式;步骤c06)k个单项的单项表达式求和即完成一元多项式f(x)的建立。如样本数据为:(0x0a,0x139e80)、(0x21,0x67a6d)、(0x30,0x4bb40)和(0x9e,0x3e1a70),则通用特征式为:(x-0x0a)*(x-0x21)*(x-0x30)*(x-0x9e)。建立4个单项,每个单项对应一个样本数据。
[0024]
对于第一个样本数据(0x0a,0x139e80),其单项特征式为:(x-0x21)*(x-0x30)*(x-0x9e),单项特征值为(0x0a-0x21)*(0x0a-0x30)*(0x0a-0x9e)=-0x23*-0x38*-0x148=-0x9cf40。对于第二个样本数据(0x21,0x67a6d),其单项特征式为:(x-0x0a) *(x-0x30)*(x-0x9e),单项特征值为(x-0x0a) *(x-0x30)*(x-0x9e)=(0x21-0x0a) *(0x21-0x30)*(0x21-0x9e)=0x17*-0x15*-0x125=0x228cf。对于第三个样本数据(0x30,0x4bb40),其单项特征式为:(x-0x0a)*(x-0x21)*(x-0x9e),单项特征值为(0x30-0x0a)*(0x30-0x21)*(0x30-0x9e)=0x26*0xf*-0x110=-0x25da0。对于第四个样本数据(0x9e,0x3e1a70),其单项特征式为:(x-0x0a)*(x-0x21)*(x-0x30),单项特征值为(0x9e-0x0a)*(0x9e-0x21)*(0x9e-0x30)=0x94*0x7d*0x6e=0x1f0d38。进而获得4个单项的单项表达式,将单项表达式求和获得:f(x)= ((0x139e80/0x0a)/-0x9cf40)*x*(x-0x21)*(x-0x30)*(x-0x9e) ((0x67a6d/0x21)/0x228cf)*x*(x-0x0a)*(x-0x30)*(x-0x9e) ((0x4bb40/0x30)/-0x25da0)*x*(x-0x0a)*(x-0x21)*(x-0x9e) ((0x3e1a70/0x9e)/0x1f0d38)*x*(x-0x0a)*(x-0x21)*(x-0x30)=-(0x139e80/0x621880)*(x^4-0xef*x^3 0x3474*x^2-0x184d4*x) (0x67a6d/0x4742af)(x^4-0xd8*x^3 0x25ac*x^2-0x12840*x)-(0x4bb40/0x718e00)(x^4-0xc9*x^3 0x1bd4*x^2-0xcbac*x) (0x3e1a70/(0x132a2890))(x^4-0x5b*x^3 0x5a0*x^2-0x189c*x)。完成一元多项式f(x)的建立。
[0025]
本实施例的有益技术效果是:通过事先约定一元多项式,进而能够使用占用字节数少的自变量及编号代替占用字节数多的二进制数d,减少了需要传输的字节数,从而提高区块链网络的数据传输效率。
[0026]
实施例二:
一种区块链网络点对点数据传输方法,相对于实施例一,本实施例提供了新的技术方案使用样本数据建立一元多项式f(x),请参阅附图4,包括:步骤d01)样本数据记为(xi,fi),i∈[1,k],k为样本数据数量;步骤d02)建立k个单项,每个单项对应一个样本数据,建立通用特征式,通用特征式为自变量减每个样本数据xi值后相乘的乘式;步骤d03)为每个单项建立单项特征式,单项特征式为通用特征式除以自变量减单项对应样本数据xi值后再乘自变量的z次方所得的乘式,z为指定的指数值;步骤d04)计算每个单项的单项特征式的取值,将自变量的值设为单项对应样本数据交xi值,代入单项特征式,得出单项特征值;步骤d05)使用单项对应样本数据的取值fi除以单项特征值,作为单项特征式的项系数,构成单项表达式;步骤d06)k个单项的单项表达式求和即完成一元多项式f(x)的建立。指定指数值z的方法为:为每个单项特征式生成的z使得样本数据的取值fi与单项特征值比值的绝对值最接近1。z为正整数。
[0027]
本实施例中,样本数据为:(0x0a,0x139e80)、(0x21,0x67a6d)、(0x30,0x4bb40)和(0x9e,0x3e1a70),则通用特征式为:(x-0x0a)*(x-0x21)*(x-0x30)*(x-0x9e)。建立4个单项,每个单项对应一个样本数据。
[0028]
第一个样本数据的单项特征式为:(x-0x21)*(x-0x30)*(x-0x9e)*x^z,单项特征值为(0x0a-0x21)*(0x0a-0x30)*(0x0a-0x9e)*0x0a^z=-0x23*-0x38*-0x148*0x0a^z=-0x9cf40*0x0a^z,使得0x139e80/(-0x9cf40*0x0a^z)的绝对值最接近1的z值为1。第二个样本数据的单项特征式为:(x-0x0a)*(x-0x30)*(x-0x9e)*x^z,单项特征值为(x-0x0a) *(x-0x30)*(x-0x9e)*0x21^z=(0x21-0x0a)*(0x21-0x30)*(0x21-0x9e)*0x21^z=0x17*-0x15*-0x125*0x21^z=0x228cf*21^z,使得0x67a6d/(0x228cf*0x21^z)的绝对值最接近1的z值为1。同样获得后续样本数据的单项特征时和单项特征值,完成一元多项式的建立。
[0029]
发送数据的节点一次发送k个二进制数d,请参阅附图5,发送k个二进制数d的方法包括:步骤e01)获得每个二进制数d的自变量值x和编号y;步骤e02)获得编号y的最大值,进而获得编号y的最大值占用的字节数;步骤e03)全部编号y补位至字节数;步骤e04)将k个二进制数d对应的自变量值x和编号y发送给接收数据的节点;步骤e05)接收数据的节点将收到的字节数除以k,获得每个二进制数d对应的自变量值x和编号y占用字节数;步骤e06)自变量x的长度m为约定值,进而获得编号y占用字节数,获得编号y值;步骤e07)进而恢复每个二进制数d,获得传输的数据。
[0030]
k取值为3,3个二进制数d的自变量x值分别为0x3,0x9,0xd,对应使用的一元多项式的编号分别为0x5,0xe,0xc9。自变量x占用半个字节是已约定的,编号y根据实际值确定占用的字节数。0x5,0xe占用半个字节,0xc9占用一个字节。为此,需要将全部y值均调整为占用1个字节。即将0x5,0xe改写为0x05,0x0e,添加高四位0值。而后发送给接收数据的节点。传输的内容使用十六进制表示为0x30x050x90x0e0xd0xc9。数据之间无间隔符号,跟根据长度进行划分。每个二进制数d对应的字节长度为1.5字节,即12位。接收数据的节点由此能够复原出3个二进制数d。k个二进制数d中,存在落入遗漏集合的,则全部k个二进制数d均发送原文。本实施例通过一次传输多个二进制数d,进一步提高数据传输的效率。
[0031]
以上所述的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献