CN110430066A - 用于减少区块链交易重复广播的方法、设备及存储介质 - Google Patents
用于减少区块链交易重复广播的方法、设备及存储介质 Download PDFInfo
- Publication number
- CN110430066A CN110430066A CN201910633128.4A CN201910633128A CN110430066A CN 110430066 A CN110430066 A CN 110430066A CN 201910633128 A CN201910633128 A CN 201910633128A CN 110430066 A CN110430066 A CN 110430066A
- Authority
- CN
- China
- Prior art keywords
- block chain
- transaction
- chain node
- broadcast
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/185—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1854—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1886—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with traffic restrictions for efficiency improvement, e.g. involving subnets or subdomains
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了用于减少区块链交易重复广播的方法、设备及存储介质,属于区块链技术领域。当第二区块链节点产生第一交易后,广播第一交易到与第二区块链节点相连接的区块链节点上;当第二区块链节点收到第一区块链节点发来的第二交易后,第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点;广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上。针对现有技术中交易重复广播会影响网络的带宽的技术问题,该技术方案可以有效减少区块链交易在节点之间的重复广播次数,降低对区块链网络带宽的占用,使得区块链网络稳定工作。
Description
技术领域
本发明涉及区块链底层技术领域,尤其涉及用于减少区块链交易重复广播的方法、设备及存储介质。
背景技术
目前区块链项目中交易的广播处理如下:
1)区块链节点接收到或创建好交易后,首先进入Mempool缓存池中;
2)Mempool缓存池对此交易校验之后通过P2P模块广播此交易;
3)P2P模块将整个交易的内容广播给相连接的所有节点(目前一个区块链节点最多连接25个节点);
4)其他节点收到广播的交易之后存储到自己的Mempool缓存池中,然后继续广播给相连接的其余节点。
现有方案中广播的是交易的整个内容,每个区块链节点可能会收到25个从不同的节点广播来的相同交易,这样存在交易重复广播,会影响网络的带宽。
发明内容
1.发明要解决的技术问题
为了克服上述技术问题,本发明提供了一种用于减少区块链交易重复广播的方法、设备及存储介质。可以有效减少区块链交易在节点之间的重复广播次数,降低对区块链网络带宽的占用,使得区块链网络稳定工作。
2.技术方案
为解决上述问题,本发明提供的技术方案为:
第一方面,本发明提供了用于减少区块链交易重复广播的方法,适用于区块链节点,包括:当第二区块链节点产生第一交易后,广播第一交易到与第二区块链节点相连接的区块链节点上;或,当第二区块链节点收到第一区块链节点发来的第二交易后,第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点;广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上。
进一步地,所述当第二区块链节点产生第一交易后包括:验证第一交易;若验证通过,则广播第一交易到与第二区块链节点相连接的区块链节点上;若验证不通过,则不作处理。
进一步地,所述若验证通过还包括:第二区块链节点存储第一交易。
进一步地,所述第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点后,还包括:检测第二区块链节点是否存在第二交易;若存在,则广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上。
进一步地,若不存在,则第二区块链节点验证第二交易;若验证通过,则广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上;若验证不通过,则不作处理。
进一步地,所述若验证通过还包括:第二区块链节点存储第二交易。
进一步地,所述广播第一交易包括广播第一交易原始信息及其哈希值,所述广播第二交易包括广播第二交易原始信息及其哈希值。
进一步地,所述足以唯一识别交易的标识为足以唯一识别第二交易的标识,或交易ID号,或交易名称。
进一步地,当第二区块链节点产生第一交易,设置轮次i为零后,广播第一交易及轮次i到与第二区块链节点相连接的区块链节点上;或,当第二区块链节点收到第一区块链节点发来的第二交易及轮次i后,第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点;判断i<Turn是否为真;若是,则i=i+1,广播第二交易及轮次i到除第一区块链节点外,与第二区块链节点相连接的区块链节点上;若否,广播足以唯一识别第二交易的标识到与第二区块链节点相连接的区块链节点上;其中,第一交易或第二交易至少被广播的轮次数Turn由公式
∑QTurn=Number
确定,轮次i为大于等于零的整数,Number为区块链网络中的区块链节点总数;Q为在区块链网络中,任一区块链节点连接的区块链节点个数。
进一步地,第三区块节点收到第二区块链节点发来的足以唯一识别第二交易的标识,记录足以唯一识别第二交易的标识和第二区块链节点;检测第三区块链节点上是否存在第二交易?若是,则广播足以唯一识别第二交易的标识到除第二区块链节点外,与第三区块链节点相连接的区块链节点上;若否,则向第二区块链节点请求获取第二交易;接收第二交易,验证第二交易是否通过?若验证通过,则广播足以唯一识别第二交易的标识到除第二区块链节点外,与第三区块链节点相连接的区块链节点上;若验证不通过,则不作处理。
第二方面,本发明提供了用于减少区块链交易重复广播的系统,适用于区块链节点,包括:交易接收记录模块,用于当第二区块链节点收到第一区块链节点发来的第二交易后,第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点;交易广播模块,用于当第二区块链节点产生第一交易后,广播第一交易到与第二区块链节点相连接的区块链节点上;或,还用于当交易接收记录模块记录足以唯一识别第二交易的标识和第一区块链节点后,广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上。
进一步地,还包括验证模块,用于第二区块链节点验证第一交易或第二交易。
进一步地,还包括交易判断模块,用于在第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点后,检测第二区块链节点是否存在第二交易;还用于在第三区块节点收到第二区块链节点发来的足以唯一识别第二交易的标识,记录足以唯一识别第二交易的标识和第二区块链节点后;检测第三区块链节点上是否存在第二交易。
进一步地,还包括交易存储模块,第二区块链节点存储第一交易或第二交易。
进一步地,还包括交易构建模块,用于构建交易,包括但不限:构建第一交易或,第二交易。进一步地,还包括广播轮次模块,用于当第二区块链节点产生第一交易,设置轮次i为零;或用于判断i<Turn是否为真;若是,还用于设置i=i+1。
第三方面,本发明提供了一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。
第四方面,本发明提供了一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上任一项所述的方法。
3.有益效果
采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:
本发明的技术方案过滤掉已经收到交易的节点,只广播给还没有收到交易的节点,这样可以减少交易的重复广播从而降低带宽的占用。
附图说明
图1为本发明用于减少区块链交易重复广播的方法的流程图。
图2为图1提供的一优选实施例用于减少区块链交易重复广播的方法的流程图。
图3为图1提供的第一优选实施例所示方法的流程图。
图4为实施例2提供的系统结构示意图。
图5为图4提供的第一个优选实施例系统结构示意图。
图6为图4提供的第二个优选实施例系统结构示意图。
图7为图4提供的第三个优选实施例系统结构示意图。
图8为本发明的一种设备结构示意图;
图9为实施例3中节点D广播交易Tx-D的示意图。
图10为实施例3中节点A广播交易Tx-1的示意图。
图11为图1提供的第二优选实施例所示方法的流程图。
图12为图1提供的第三优选实施例所示方法的流程图。
图13为图1提供的第四优选实施例所示方法的流程图。
图14为图4提供的第四个优选实施例系统结构示意图。
图15为图4提供的第五个优选实施例系统结构示意图。
具体实施方式
为进一步了解本发明的内容,结合附图及实施例对本发明作详细描述。
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
本发明中所述的第一、第二等词语,是为了描述本发明的技术方案方便而设置,并没有特定的限定作用,均为泛指,对本发明的技术方案不构成限定作用。
本申请的技术方案描述了交易的广播方法,可在现有的区块链网络上推广应用,比如比特币,以太坊、Chain33、EOS等,不受各种区块链网络共识算法,以及挖矿机制的限制,均可推广使用;另外,关于交易的原始信息,每个区块链网络中对于交易格式内容的定义均存在一些差异,当本申请的技术方案在不同的区块链网络中推广应用时,所述的交易原始信息与该区块链网络所规定的交易格式及内容相一致,即本申请所述的交易原始信息根据不同区块链网络关于交易的定义不同而不同,在不同的区块链网络上应用时,适应它们关于交易自身的格式及内容定义,本申请中的交易原始信息作相应的变化。本申请所述的交易包括含有资产交换的交易,也包括含有外带数据的交易。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
实施例1
本实施例提出用于减少区块链交易重复广播的方法,适用于区块链节点,如图1所示,第一种情况,S101、当第二区块链节点产生第一交易后,广播第一交易到与第二区块链节点相连接的区块链节点上;
另外还包括第二种情况,
S103、当第二区块链节点收到第一区块链节点发来的第二交易后,第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点;
S105、广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上。
对于一个区块链节点而言,一笔交易要么是其他区块链节点发来的,要么是该区块链节点自身产生的,而区块节点自身可以并发处理交易,因此以上两种情况,可能会同时存在于同一个区块链节点上,或者由同一个区块链节点在不同的时间上完成,但区块节点可能存在的两种情况均不影响该技术方案自身的执行。
如图2所示,对于第一种情况而言,进一步地改进是,S1101、当第二区块链节点产生第一交易后包括:验证第一交易;
S1103、验证是否通过;若验证通过,则广播第一交易到与第二区块链节点相连接的区块链节点上;进一步地,若验证通过还包括:第二区块链节点存储第一交易;
若验证不通过,则不作处理。
如图3所示,对于第二种情况而言,进一步地改进是,
S1031、当第二区块链节点收到第一区块链节点发来的第二交易后,第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点;
S1033、检测第二区块链节点是否存在第二交易;
若存在,则广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上。
若不存在,则,
S1035、第二区块链节点验证第二交易是否通过;
若验证通过,则广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上;进一步地,若验证通过还包括:第二区块链节点存储第二交易;
若验证不通过,则不作处理,同时,向第一区块链节点发出第二交易验证不通过的消息。
进一步地,需要说明的是,以上所述广播第一交易包括广播第一交易原始信息及其哈希值,所述广播第二交易包括广播第二交易原始信息及其哈希值。
所述足以唯一识别交易的标识为交易哈希值,或交易哈希值的部分字节,或交易ID号,或交易名称。在一个确定的区块链项目中,因每个交易的收发地址,及交易内容等各不相同,所以交易哈希值具有唯一识别交易的特性。交易ID号类比于中国公民使用的身份证号码,在一个确定的区块链项目中,交易名称也可以唯一识别一笔交易,但并不代表所有区块链项目都是,在本方法实际应用过程中,应根据具体应用场景而定。
所述所述足以唯一识别交易的标识还可以为交易哈希值的部分字节:假设F(x)是对交易哈希值取部分字节的函数,那么函数F(x),以F(Hash-Tm)为例,实现的效果是,对交易Tm的哈希值Hash-Tm,取其前第1-5个字节,后第1-5个字节,或者中间位置第1-5个字节,也可以是中间9个字节,或者,末尾9个字节,或者,前9个字节,但无论怎么取值,均可以保证足以唯一识别出所述第二交易Tm的哈希值Hash-Tm,从而进一步减小交易广播的大小。
若一笔交易内容已经被区块链网络中的大多数节点收到并存储在本地时,对于一个区块节点再次进行交易广播时,大概率发生的情况会是,接收到该区块链节点发来交易的节点可能已经存在该笔交易了,因交易本身也占有一定的空间大小,那么当交易在节点之间广播时,对区块链网络带宽存在一定的占用。为减少或缓解这种占用,本实施例作出进一步改进如下:
第一种情况,如图11,S701、第二区块链节点产生第一交易,设置轮次i为零;S703、广播第一交易及轮次i到与第二区块链节点相连接的区块链节点上;
第二种情况,如图12,S801、当第二区块链节点收到第一区块链节点发来的第二交易及轮次i后,第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点;S802、判断i<Turn是否为真;若是,则
S803、i=i+1,广播第二交易及轮次i到除第一区块链节点外,与第二区块链节点相连接的区块链节点上;若否,则
S804、广播足以唯一识别第二交易的标识到除第一区块链节点外,与第二区块链节点相连接的区块链节点上;
其中,第一交易或第二交易至少被广播的轮次数Turn由公式
∑QTurn=Number
确定,轮次i为大于等于零的整数,Number为区块链网络中的区块链节点总数;Q为在区块链网络中,任一区块链节点连接的区块链节点个数。
在一个区块链网络中,其中,轮次数Turn用于决定第一交易广播到该区块链网络的大多数节点,因在一个确定的区块链网络中,任一区块链节点连接的区块链节点个数不尽相同,所以Q的取值也是灵活的,可以是所有区块链节点连接的区块链节点个数的众数、平均数、或者是一个估值——估计一笔交易被广播,经过上述公式确定的轮次i后,可以被广播到大多数节点的数值,其余没有被广播到的节点,可以由本方案中的其余内容确定。
所述第二交易哈希值包括第二交易哈希值的部分字节:假设F(x)是对交易哈希值取部分字节的函数,那么函数F(x),以F(Hash-Tm)为例,实现的效果是,对交易Tm的哈希值Hash-Tm,取其前第1-5个字节,后第1-5个字节,或者中间位置第1-5个字节,也可以是中间9个字节,或者,末尾9个字节,或者,前9个字节,但无论怎么取值,均可以保证足以唯一识别出所述第二交易Tm的哈希值Hash-Tm,从而进一步减小交易广播的大小。
进一步地,如图13所示,第三区块节点收到第二区块链节点发来的第二交易哈希值,S901、记录足以唯一识别第二交易的标识和第二区块链节点;
S902、检测第三区块链节点上是否存在第二交易?若是,则
S903、广播足以唯一识别第二交易的标识到除第二区块链节点外,与第三区块链节点相连接的区块链节点上;若否,则
S904、向第二区块链节点请求获取第二交易;接收第二交易;
S905、验证第二交易是否通过?若验证通过,则
执行步骤S903;若验证不通过,则S906、不作处理。
实施例2
与实施例1所述的方法相对应地,本实施例提出用于减少区块链交易重复广播的系统,如图4所示,适用于区块链节点,包括:交易接收记录模块,用于记录足以唯一识别第二交易的标识和第一区块链节点;交易广播模块,用于广播第一交易或第二交易。
交易接收记录模块,用于当第二区块链节点收到第一区块链节点发来的第二交易后,第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点;
现有区块链网络中的节点多设有设有P2p模块,用于广播交易,本实施例中的交易广播模块也具有广播交易的功能,但又区别于现有区块链网络中的P2p模块,本实施例中的交易广播模块,用于当第二区块链节点产生第一交易后,广播第一交易到与第二区块链节点相连接的区块链节点上;
或,还用于当交易接收记录模块记录足以唯一识别第二交易的标识和第一区块链节点后,广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上。
进一步地改进是,如图5所示,还包括验证模块,用于第二区块链节点验证第一交易或第二交易。
进一步地改进是,如图6所示,还包括交易判断模块,用于检测是否存在第二交易。具体地,用于在第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点后,检测第二区块链节点是否存在第二交易。查询交易是否存在的方式有很多种,本实施例通过足以唯一识别第二交易的标识,包括进行查询比对判断,如交易哈希值,或根据函数F(x)倒推,经交易哈希值的部分字节判别,或交易ID号,或交易名称。实际应用中还可以采用其他方式判断。
进一步地改进是,如图7所示,还包括交易存储模块,第二区块链节点用来存储第一交易或第二交易,等待被打包进区块中共识。如图14所示,还包括交易构建模块,用于构建交易,如包括但不限于构建第一交易,或第二交易。如图15所示,还包括广播轮次模块,用于当第二区块链节点产生第一交易,设置轮次i为零;或用于判断i<Turn是否为真;若是,还用于设置i=i+1。
实施例3
本实施例提出用于减少区块链交易重复广播的方法及其系统,涉及一种区块链交易广播方法,用于减少交易的重复广播,降低区块链网络带宽的占用。
假定区块链节点D上安装有钱包客户端,钱包客户端通过一个账户地址,创建了一笔交易Tx-D,区块链节点D按照如图2、4、5和7所示,验证模块验证交易Tx-D,若验证不通过,则交易Tx-D不作任何处理,被舍弃;若验证通过,则区块链节点D存储交易Tx-D在节点内的交易存储模块上;同时通过交易广播模块,广播交易Tx-D到与区块链节点D连接的区块链节点上,如图9所示。
假定区块链节点A与其他25个区块链节点B-1,B-2,B-3......B-25相连接,且这些节点之间也是互相连接的,区块链节点A上没有交易Tx-1;
区块链节点B-1接收到某个客户端(钱包)发来的交易Tx-1的信息及其哈希值,将交易Tx-1发送给区块链节点B-1的Mempool模块(相当于验证模块)做交易校验(验证),验证通过后,在将交易Tx-1存储在交易存储模块的同时,节点B-1的交易广播模块广播交易Tx-1的原始信息及其哈希值给区块链节点A和其他与节点B-1连接的区块链节点。
区块链节点A和其他区块链节点接收到交易Tx-1的信息及其哈希值后,区块链节点A的交易接收记录模块记录Tx-1-hash->B-1,即记录交易Tx的哈希值以及区块链节点B-1,用于标记区块链节点B-1已经有交易Tx-1,节点A从区块链节点B-1收到交易Tx-1了,交易判断模块根据交易Tx-1的哈希值判断区块链节点A上是否存在交易Tx-1;
若区块链节点上存在所述交易Tx-1(此处以区块链节点A为例说明,其他区块链节点类似);则:
如图10所示,区块链节点A的交易广播模块广播交易Tx-1的信息及其哈希值到除区块链节点B-1以外的其他与区块链节点A连接的区块链节点,以减少带宽占用;
若区块链节点A上不存在所述交易Tx-1;则:
区块链节点A的验证模块验证交易Tx-1的信息,若交易验证不通过,则:不作处理,同时,区块链节点A向区块链节点B-1发送交易Tx-1验证不通过的消息;
若交易验证通过,节点A的交易存储模块存储交易Tx-1的信息及其哈希值,交易Tx-1等待被打包进区块以进行共识。
因节点B-1同时向与之连接的其他25个区块链节点广播了交易Tx-1的信息,受限于各个节点的硬件条件,网络条件,可能会存以下情况:区块链节点B-2收到了节点B-1广播的交易Tx-1后,又将交易Tx-1广播了出去,在区块链节点A收到节点B-1广播来的交易Tx-1之后,又收到了节点B-2广播的交易Tx,那么对应的处理方法如下:
区块链节点A的交易接收记录模块记录Tx-1-hash->B-2,用于标记区块链节点B-2已经有交易Tx-1了,节点A从区块链节点B-2收到交易Tx-1了,节点A的交易判断模块根据交易Tx-1的哈希值判断区块链节点A上是否存在交易Tx-1;经查询发现已经存在交易Tx-1,那么不需要再验证交易Tx-1,也不需要再存储交易Tx-1,节省了节点的CPU计算和存储资源;只需区块链节点A的交易广播模块广播交易Tx-1的信息及其哈希值到除区块链节点B-1和B-2以外的其他与区块链节点A连接的区块链节点,减少交易Tx-1重复广播的次数,以减少带宽占用。
若区块链节点上存在所述交易Tx-1的信息及其哈希值(此处仍以区块链节点A为例说明,其他区块链节点类似);
则,区块链节点A的交易接收记录模块记录Tx-1-hash->B-1,用于标记区块链节点B-1已经有交易Tx-1的信息及其哈希值了,区块链节点A收到节点B-1发来的交易Tx-1;交易区块链节点A广播交易Tx-1的信息及其哈希值时,需要过滤掉区块链节点B-1,广播给除区块链节点B-1以外的其他区块链节点,以减少带宽占用。此时交易Tx-1的信息及其哈希值不需要再发送给区块链节点A的Mempool模块处理,不用再对交易Tx-1的信息及其哈希值进行验证和存储了,减少了对区块链节点A的CPU计算和存储资源的占用。
区块链节点A还可能也收到了其他区块链节点广播的交易Tx-1的信息及其哈希值;假如收到区块链节点B-2广播的交易Tx-1的信息及其哈希值,此时区块链节点A的交易接收记录模块已经有Tx-1-hash->B-1的记录,所以只需要再记录Tx-1-hash->B-2标记就可以,用于标记区块链节点B-2已经有交易Tx-1的信息及其哈希值了,区块链节点A广播交易Tx-1的信息及其哈希值时,需要过滤掉区块链节点B-1和B-2,广播给除区块链节点B-1和B-2以外的其他区块链节点,以减少带宽占用。此时交易Tx-1的信息及其哈希值不需要再发送给区块链节点A的验证模块处理,不用再对交易Tx-1的信息及其哈希值进行验证和存储了,减少了对区块链节点A的CPU计算和存储资源的占用。
与此同时,在区块链节点A接收区块链节点B-1发来的交易Tx-1的信息及其哈希值,以及节点B-2发来的交易Tx-1的信息及其哈希值时。
其他区块链节点同时也收到了区块链节点B-1发来的交易Tx-1的信息及其哈希值,或节点B-2发来的交易Tx-1的信息及其哈希值,处理方式与区块链节点A相同,属于不同线程处理,同步进行。
区块链交易广播方案基本原理是区块链节点A广播交易给相连接的其他25个节点B1-B25,而这些节点再广播给各自相连接的其他25个节点。
这样就可以推算出第一轮广播之后有25个节点收到了交易。
第二轮广播由这收到交易的25个节点广播给各自相连接的另外25个节点,第二轮广播之后会有25*25个节点收到此交易。
第三轮广播由这25*25个节点给各自相连接的另外25个节点广播,第三轮广播之后会有25*25*25个节点收到此交易。
这样推算广播三轮之后整个网络中会有1+25+25*25+25*25*25这么多节点收到此交易。采用本实施例提出的上述用于减少交易的重复广播的一种区块链交易广播方法后,可以确保三轮广播之后,不存在有区块链节点是重复收到交易的情况发生。
由此可以得出,可以通过监控区块链网络中的区块链节点数量及其之间的连接情况,以及交易被广播的轮次来判断一笔交易是否已经被广播到大多数区块链节点上了。
假定区块链网络中的区块链节点总数为Number,一笔交易至少被广播的轮次设为Turn,Turn为整数;
∑QTurn=Number
轮次i为大于等于零的整数,Number为区块链网络中的区块链节点总数;Q为在区块链网络中,任一区块链节点连接的区块链节点个数,Q与实施例1中所述取值方法相同。
通过以上公式来确定Turn,一笔交易在区块链网络中被广播Turn轮次后,基本可以确定该笔交易已经被广播到区块链网络中的大多数区块链节点上了。
其中,区块链网络中的区块链节点总数Number是动态变化的,所以,Turn值也会随之动态变化,根据以上公式进行动态调整,但这不影响一笔交易在区块链网络中的广播过程。
为进一步降低带宽的占用,本实施例提出了一种区块链交易广播方法,用于减少交易广播的信息内容,只广播交易哈希值,来降低区块链网络带宽的占用。
从本实施例提出的用于减少交易重复广播的一种区块链交易广播方法可以看出,实际上在交易广播到第二轮的时候,有些区块链节点可能会收到从不同区块链节点发来的交易信息及其哈希值的重复广播;采用本实施例提出的用于减少交易重复广播的一种区块链交易广播方法后,不用再对这些已经收到的交易进行验证和存储了,即减少了对区块链节点的CPU计算和存储资源的占用;但这些交易信息及其哈希值占用一定的空间大小,在重复广播时占用了区块链网络的带宽资源。当无法避免这种重复广播交易的情况时,可以控制重复广播交易的大小,从而降低区块链网络带宽的占用。
假定一笔交易被广播Turn轮次后已经被广播到区块链网络中的大多数区块链节点上了,接下来的广播对很多区块链节点而言都是重复时,那么就只广播交易哈希值,减小广播交易的大小,以减少对区块链网络带宽资源的占用。
假定区块链节点A的交易构建模块产生交易Tx-A,首先验证模块进行验证,验证通过后,存储到交易存储模块,然后通知交易广播模块广播交易Tx-A到相连接的其他节点。此时查询节点A的交易接收记录模块有关交易Tx-A-hash对应的记录应为无,因为此交易是本节点刚产生的第一次广播,设置轮次i=0,将交易Tx-A的原始交易信息及其哈希值,以及轮次i一起广播给相连接的其他区块链节点。
在区块链网络中,理想情况下,同时会有25个节点收到区块链节点A发来的交易Tx-A的信息及其哈希值,以及轮次i;作以下处理:
收到区块链节点A发来的交易Tx-A的信息及其哈希值,以及轮次i的区块链节点,进行如下处理:交易接收记录模块记录Tx-A-hash-i>A,即记录交易Tx-A的哈希值、轮次i以及区块链节点A,用于标记区块链节点A已经有交易Tx-A了,交易判断模块根据交易Tx-A的哈希值判断本区块链节点上是否存在交易Tx-A;若本区块链节点上存在所述交易Tx-A;则不验证交易Tx-A,则判断轮次i<Turn是否为真;
若是,则i=i+1,即轮次i自增1后,广播交易Tx-A原始信息及轮次i到除节点A以外,与本区块链节点相连接的其他区块链节点上;
若否,则广播交易Tx-A哈希值到除节点A以外,与本区块链节点相连接的其他区块链节点上;
若本区块链节点上不存在所述交易Tx-A,则验证交易Tx-A,若验证不通过,则不作处理,同时,向节点A发送交易Tx-A验证不通过的消息;
若验证通过,则判断轮次i<Turn是否为真;
若是,则i=i+1,即轮次i自增1后,广播交易Tx-A原始信及轮次i到除节点A以外,与本区块链节点相连接的其他区块链节点上;
若否,则广播交易Tx-A哈希值到除节点A以外,与本区块链节点相连接的其他区块链节点上。
若接收到交易Tx-A哈希值,与本区块链节点相连接的其他区块链节点上不存在交易Tx-A,则向本区块链节点请求获取交易Tx-A原始信息,本区块链节点接收到所述请求后,将交易Tx-A原始信息发送给对应的区块链节点,对应的区块链节点收到交易Tx-A原始信息,交易接收记录模块记录交易Tx-A哈希值及本区块链节点;验证交易Tx-A,若验证通过,则广播交易Tx-A哈希值到除本区块链节点以外,与对应的区块链节点相连接的其他区块链节点上;若验证不通过,则不作处理,同时,向本区块链节点发送交易Tx-A验证不通过的消息。
实施例4
一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。
一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上实施例1-3任一技术方案所述的方法。
图8为本发明一实施例提供的一种设备的结构示意图。
如图8所示,作为另一方面,本申请还提供了一种设备500,包括一个或多个中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有设备500操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本申请公开的实施例,上述任一实施例描述的方法可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一实施例描述的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (16)
1.用于减少区块链交易重复广播的方法,其特征在于,包括:
当第二区块链节点产生第一交易后,广播第一交易到与第二区块链节点相连接的区块链节点上;
或,当第二区块链节点收到第一区块链节点发来的第二交易后,第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点;广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上。
2.根据权利要求1所述的方法,其特征在于,所述第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点后,还包括:
检测第二区块链节点是否存在第二交易;
若存在,则广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上。
3.根据权利要求1所述的方法,其特征在于,所述足以唯一识别第二交易的标识为交易哈希值,或交易哈希值的部分字节,或交易ID号,或交易名称。
4.根据权利要求1所述的方法,其特征在于,所述广播第一交易包括广播第一交易原始信息及其哈希值,所述广播第二交易包括广播第二交易原始信息及其哈希值。
5.根据权利要求2所述的方法,其特征在于,若不存在,则第二区块链节点验证第二交易;
若验证通过,则广播第二交易到除第一区块链节点之外,与第二区块链节点相连接的区块链节点上;
若验证不通过,则不作处理。
6.根据权利要求5所述的方法,其特征在于,所述若验证通过还包括:第二区块链节点存储第二交易。
7.根据权利要求1-5任一项所述的方法,其特征在于,当第二区块链节点产生第一交易,设置轮次i为零后,广播第一交易及轮次i到与第二区块链节点相连接的区块链节点上;
或,当第二区块链节点收到第一区块链节点发来的第二交易及轮次i后,第二区块链节点记录足以唯一识别第二交易的标识和第一区块链节点;判断i<Turn是否为真;
若是,则i=i+1,广播第二交易及轮次i到除第一区块链节点外,与第二区块链节点相连接的区块链节点上;
若否,则广播足以唯一识别第二交易的标识到除第一区块链节点外,与第二区块链节点相连接的区块链节点上;
其中,第一交易或第二交易至少被广播的轮次数Turn由公式
∑QTurn=Number
确定,轮次i为大于等于零的整数,Number为区块链网络中的区块链节点总数;Q为在区块链网络中,任一区块链节点连接的区块链节点个数。
8.根据权利要求7所述的方法,其特征在于,第三区块节点收到第二区块链节点发来的足以唯一识别第二交易的标识,记录足以唯一识别第二交易的标识和第二区块链节点;检测第三区块链节点上是否存在第二交易?若是,
则广播足以唯一识别第二交易的标识到除第二区块链节点外,与第三区块链节点相连接的区块链节点上;若否,
则向第二区块链节点请求获取第二交易;接收第二交易,验证第二交易是否通过?若验证通过,则广播足以唯一识别第二交易的标识到除第二区块链节点外,与第三区块链节点相连接的区块链节点上;若验证不通过,则不作处理。
9.用于减少区块链交易重复广播的系统,其特征在于,根据权利要求1所述的一种方法,包括:
交易接收记录模块,用于记录足以唯一识别第二交易的标识和第一区块链节点;
交易广播模块,用于广播第一交易或第二交易。
10.根据权利要求9所述的系统,其特征在于,还包括验证模块,用于验证第一交易或第二交易。
11.根据权利要求9所述的系统,其特征在于,还包括交易判断模块,用于检测是否存在第二交易。
12.根据权利要求9所述的系统,其特征在于,还包括交易存储模块,用于第二区块链节点存储第一交易或第二交易。
13.根据权利要求9所述的系统,其特征在于,还包括交易构建模块,用于构建交易。
14.根据权利要求9所述的系统,其特征在于,还包括广播轮次模块,用于当第二区块链节点产生第一交易,设置轮次i为零;或用于判断i<Turn是否为真;若是,还用于设置i=i+1。
15.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-9中任一项所述的方法。
16.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910633128.4A CN110430066B (zh) | 2019-07-15 | 2019-07-15 | 用于减少区块链交易重复广播的方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910633128.4A CN110430066B (zh) | 2019-07-15 | 2019-07-15 | 用于减少区块链交易重复广播的方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110430066A true CN110430066A (zh) | 2019-11-08 |
CN110430066B CN110430066B (zh) | 2021-07-06 |
Family
ID=68409424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910633128.4A Active CN110430066B (zh) | 2019-07-15 | 2019-07-15 | 用于减少区块链交易重复广播的方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110430066B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111404897A (zh) * | 2020-03-06 | 2020-07-10 | 深圳前海达闼云端智能科技有限公司 | 消息分发方法、装置、存储介质及电子设备 |
CN111464630A (zh) * | 2020-03-31 | 2020-07-28 | 杭州复杂美科技有限公司 | 交易广播方法、设备和存储介质 |
CN111614761A (zh) * | 2020-05-21 | 2020-09-01 | 腾讯科技(深圳)有限公司 | 区块链消息传输方法、装置、计算机以及可读存储介质 |
CN111724148A (zh) * | 2020-06-22 | 2020-09-29 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的交易广播方法及节点 |
CN112929432A (zh) * | 2021-02-01 | 2021-06-08 | 杭州复杂美科技有限公司 | 一种基于重复广播历史的广播方法、设备及储存介质 |
CN113438092A (zh) * | 2021-06-29 | 2021-09-24 | 上海万向区块链股份公司 | 一种交易广播方法及系统 |
CN114338699A (zh) * | 2021-11-18 | 2022-04-12 | 山大地纬软件股份有限公司 | 一种基于动态策略的区块链通信方法及系统 |
CN115086319A (zh) * | 2022-06-13 | 2022-09-20 | 杭州复杂美科技有限公司 | 多子网区块链网络及其交易广播方法、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050094658A1 (en) * | 2003-10-08 | 2005-05-05 | Jen-Kai Chen | Method and apparatus for multicast packet transmission |
CN107146087A (zh) * | 2017-04-11 | 2017-09-08 | 广东网金控股股份有限公司 | 一种基于区块链联盟链的快速共识记账方法及系统 |
CN109102287A (zh) * | 2018-08-13 | 2018-12-28 | 中国联合网络通信集团有限公司 | 区块链记账方法、装置、设备及存储介质 |
CN109101836A (zh) * | 2018-08-09 | 2018-12-28 | 全链通有限公司 | 区块链网络的记账方法和系统 |
CN109410044A (zh) * | 2018-08-22 | 2019-03-01 | 泰链(厦门)科技有限公司 | 区块链系统及其中利用非生产者节点闲置计算资源的方法 |
CN109426949A (zh) * | 2017-08-29 | 2019-03-05 | 华为技术有限公司 | 一种跨链交易方法及装置 |
CN109472602A (zh) * | 2018-11-23 | 2019-03-15 | 全链通有限公司 | 一种验证交易的方法、一种节点及一种区块链系统 |
CN109767220A (zh) * | 2019-01-15 | 2019-05-17 | 中国联合网络通信集团有限公司 | 基于区块链的交易方法及基于区块链的交易系统 |
-
2019
- 2019-07-15 CN CN201910633128.4A patent/CN110430066B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050094658A1 (en) * | 2003-10-08 | 2005-05-05 | Jen-Kai Chen | Method and apparatus for multicast packet transmission |
CN107146087A (zh) * | 2017-04-11 | 2017-09-08 | 广东网金控股股份有限公司 | 一种基于区块链联盟链的快速共识记账方法及系统 |
CN109426949A (zh) * | 2017-08-29 | 2019-03-05 | 华为技术有限公司 | 一种跨链交易方法及装置 |
CN109101836A (zh) * | 2018-08-09 | 2018-12-28 | 全链通有限公司 | 区块链网络的记账方法和系统 |
CN109102287A (zh) * | 2018-08-13 | 2018-12-28 | 中国联合网络通信集团有限公司 | 区块链记账方法、装置、设备及存储介质 |
CN109410044A (zh) * | 2018-08-22 | 2019-03-01 | 泰链(厦门)科技有限公司 | 区块链系统及其中利用非生产者节点闲置计算资源的方法 |
CN109472602A (zh) * | 2018-11-23 | 2019-03-15 | 全链通有限公司 | 一种验证交易的方法、一种节点及一种区块链系统 |
CN109767220A (zh) * | 2019-01-15 | 2019-05-17 | 中国联合网络通信集团有限公司 | 基于区块链的交易方法及基于区块链的交易系统 |
Non-Patent Citations (1)
Title |
---|
(美)阿南萨拉姆.斯瓦米等: "《无线传感器网络:信号处理与通信》", 31 December 2015 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111404897A (zh) * | 2020-03-06 | 2020-07-10 | 深圳前海达闼云端智能科技有限公司 | 消息分发方法、装置、存储介质及电子设备 |
CN111464630A (zh) * | 2020-03-31 | 2020-07-28 | 杭州复杂美科技有限公司 | 交易广播方法、设备和存储介质 |
CN111614761A (zh) * | 2020-05-21 | 2020-09-01 | 腾讯科技(深圳)有限公司 | 区块链消息传输方法、装置、计算机以及可读存储介质 |
CN111724148A (zh) * | 2020-06-22 | 2020-09-29 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的交易广播方法及节点 |
CN111724148B (zh) * | 2020-06-22 | 2024-03-22 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的交易广播方法及节点 |
CN112929432A (zh) * | 2021-02-01 | 2021-06-08 | 杭州复杂美科技有限公司 | 一种基于重复广播历史的广播方法、设备及储存介质 |
CN112929432B (zh) * | 2021-02-01 | 2022-07-15 | 杭州复杂美科技有限公司 | 一种基于重复广播历史的广播方法、设备及储存介质 |
CN113438092A (zh) * | 2021-06-29 | 2021-09-24 | 上海万向区块链股份公司 | 一种交易广播方法及系统 |
CN114338699A (zh) * | 2021-11-18 | 2022-04-12 | 山大地纬软件股份有限公司 | 一种基于动态策略的区块链通信方法及系统 |
CN114338699B (zh) * | 2021-11-18 | 2024-01-30 | 山大地纬软件股份有限公司 | 一种基于动态策略的区块链通信方法及系统 |
CN115086319A (zh) * | 2022-06-13 | 2022-09-20 | 杭州复杂美科技有限公司 | 多子网区块链网络及其交易广播方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110430066B (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110430066A (zh) | 用于减少区块链交易重复广播的方法、设备及存储介质 | |
CN110336676A (zh) | 一种区块链交易广播方法和系统、设备及存储介质 | |
CN108200203B (zh) | 基于双层网络的区块链系统 | |
CN107392608B (zh) | 基于区块链系统的数字资产交易方法及区块链系统 | |
CN108876380A (zh) | 一种基于中心化结算与区块链存证的交易方法及系统 | |
CN109325762A (zh) | 平行链跨链交易方法、设备和存储介质 | |
CN109377216A (zh) | 一种基于中心化结算与区块链存证的交易方法及系统 | |
CN109522362A (zh) | 基于区块链数据的非完全数据同步方法、系统及设备 | |
WO2022143242A1 (zh) | 基于区块链的交易分发执行方法、装置服务器及存储介质 | |
KR20170040079A (ko) | 블록 검증을 위한 복수의 일방향 함수를 지원하는 블록 체인 | |
CN108347483B (zh) | 基于双层网络的去中心化计算系统 | |
CN108681565A (zh) | 区块链数据并行处理方法、装置、设备和存储介质 | |
Daneshgar et al. | Blockchain: a research framework for data security and privacy | |
CN110443610A (zh) | 用于减少交易组重复广播的方法和系统、设备及存储介质 | |
CN110289999B (zh) | 一种数据处理方法、系统及装置 | |
CN110430067A (zh) | 用于减少区块重复广播的方法和系统、设备及存储介质 | |
WO2023077795A1 (zh) | 区块链权限管理方法和区块链系统、设备、程序及介质 | |
CN109558454A (zh) | 平行链挖矿共识方法、设备和存储介质 | |
CN110445626A (zh) | 区块打包、广播方法和系统、设备及存储介质 | |
CN109005208B (zh) | 用于推送信息的方法和装置 | |
CN110336677A (zh) | 区块打包、广播方法和系统、设备及存储介质 | |
CN110490734B (zh) | 交易组构建、广播方法和系统、设备及存储介质 | |
CN112491900A (zh) | 异常节点识别方法、装置、设备及介质 | |
CN110445843A (zh) | 平行链区块推送方法、设备和存储介质 | |
CN109493015A (zh) | 一种资产转移方法、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |