CN117097735A - 区块链数据传输方法、装置、设备、存储介质及程序产品 - Google Patents
区块链数据传输方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN117097735A CN117097735A CN202210510064.0A CN202210510064A CN117097735A CN 117097735 A CN117097735 A CN 117097735A CN 202210510064 A CN202210510064 A CN 202210510064A CN 117097735 A CN117097735 A CN 117097735A
- Authority
- CN
- China
- Prior art keywords
- node
- transaction
- data
- transaction data
- master
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 112
- 238000003860 storage Methods 0.000 title claims abstract description 57
- 230000005540 biological transmission Effects 0.000 title claims abstract description 47
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000012856 packing Methods 0.000 claims abstract description 51
- 230000008569 process Effects 0.000 claims description 58
- 238000001514 detection method Methods 0.000 claims description 41
- 230000002159 abnormal effect Effects 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 24
- 230000008859 change Effects 0.000 claims description 18
- 238000004806 packaging method and process Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 20
- 230000003993 interaction Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 11
- 238000012795 verification Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000005856 abnormality Effects 0.000 description 7
- 230000001960 triggered effect Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000012858 packaging process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种区块链数据传输方法、装置、设备、存储介质及程序产品,该方法包括:目标参与节点获取交易数据;获取第一主节点,基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点;第一主节点是指处于区块生成状态的主节点;N为正整数;N小于参与节点集群所包括的参与节点的节点总数;N个关联主节点中包括用于对交易数据进行打包上链的主节点;将交易数据发送至N个关联主节点,以使N个关联主节点对交易数据进行上链处理。采用本申请,可以降低网络风暴,提高区块链性能。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链数据传输方法、装置、设备、存储介质及程序产品。
背景技术
在区块链系统中,无论采用哪种共识算法,其核心在于将交易打包,一般情况下,交易是放于交易池中,交易打包是指将交易池中的交易取出,打包成一个区块或者提案的过程。因此,对于节点而言,接收交易是至关重要的,没有足够的交易,如果节点是主节点,就可能会较难进行打包,如果没有足够的交易则很难保证打包交易的数量,会导致整体性能的降低。因此,为了保证区块链的处理性能,一般情况下,节点会将收到的交易广播至所有节点,以保障节点可以获取到足够多的交易,而这一过程,会产生大量的数据传输,可能会导致网络风暴,导致网络的通信复杂度提升。
发明内容
本申请实施例提供了一种区块链数据传输方法、装置、设备、存储介质及程序产品,可以提高对区块链数据传输的效率,降低网络的通信复杂度。
本申请实施例一方面提供了一种区块链数据传输方法,该方法包括:
目标参与节点获取交易数据;
获取第一主节点,基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点;第一主节点是指处于区块生成状态的主节点;N为正整数;N小于参与节点集群所包括的参与节点的节点总数;N个关联主节点中包括用于对交易数据进行打包上链的主节点;节点选取类型用于表示处于区块生成状态的主节点的变化情况;
将交易数据发送至N个关联主节点,以使N个关联主节点对交易数据进行上链处理。
本申请实施例一方面提供了一种区块链数据传输方法,该方法包括:
数据获取模块,用于目标参与节点获取交易数据;
节点获取模块,用于获取第一主节点;
节点确定模块,用于基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点;第一主节点是指处于区块生成状态的主节点;N为正整数;N小于参与节点集群所包括的参与节点的节点总数;N个关联主节点中包括用于对交易数据进行打包上链的主节点;节点选取类型用于表示处于区块生成状态的主节点的变化情况;
数据发送模块,用于将交易数据发送至N个关联主节点,以使N个关联主节点对交易数据进行上链处理。
其中,该装置还包括:
第一上链模块,用于若目标参与节点处于区块生成状态,则目标参与节点根据交易数据生成第一初始区块,将第一初始区块发送至共识节点,在共识节点对第一初始区块共识通过时,基于第一初始区块生成第一待上链区块,对第一待上链区块进行上链处理;
状态确定模块,用于若目标参与节点未处于区块生成状态,则执行获取第一主节点的过程。
其中,该数据获取模块,包括:
交易解码单元,用于目标参与节点接收业务客户端发送的交易报文,对交易报文进行解码处理,得到交易报文对应的交易数据;
该装置还包括:
数据检测模块,用于对交易数据进行数据检测;
交易添加模块,用于若交易数据为合法数据,则将交易数据添加至目标参与节点的目标交易池,执行获取第一主节点的过程。
其中,该数据检测模块,包括:
签名检测单元,用于获取交易数据所关联的数据签名,对数据签名进行检测;或者,
身份检测单元,用于获取业务客户端的身份信息,对身份信息进行检测;或者,
对象检测单元,用于获取交易数据中所包括的交易关联对象,获取交易关联对象在交易数据中所对应的对象信息,对对象信息进行检测;或者,
重复检测单元,用于对交易数据进行重复性检测。
其中,节点选取类型包括节点轮换类型及节点确定类型;
该节点确定模块,包括:
固定节点确定单元,用于若节点选取类型为节点确定类型,则将参与节点集群中的第一主节点确定为关联主节点;
轮换节点确定单元,用于若节点选取类型为节点轮换类型,则获取目标参与节点的目标交易池中所包括的交易数据量,获取区块存储空间,基于交易数据量与区块存储空间确定初始区块数量,以第一主节点为基准,基于初始区块数量从参与节点集群中确定N个关联主节点。
其中,该装置还包括:
邻接获取模块,用于若N个关联主节点中存在网络异常节点,则在参与节点集群中,基于网络异常节点获取与N个关联主节点存在邻接关系的邻接主节点;
节点重确定模块,用于将N个关联主节点中除网络异常节点之外的正常主节点与邻接主节点确定为候选主节点;
交易发送模块,用于将交易数据发送至候选主节点,以使候选主节点对交易数据进行上链处理。
其中,该数据获取模块,包括:
数据接收单元,用于目标参与节点接收其他参与节点发送的交易数据;
该装置还包括:
交易处理模块,用于对交易数据进行数据检测,若交易数据为合法数据,则为交易数据添加未打包状态,为交易数据添加交易定时器,将携带未打包状态及交易定时器的交易数据添加至目标参与节点的目标交易池。
其中,该装置还包括:
第二上链模块,用于若目标参与节点处于区块生成状态,则目标参与节点从目标交易池中获取待上链交易数据,根据待上链交易数据生成第二初始区块,将第二初始区块发送至共识节点,在共识节点对第二初始区块共识通过时,基于第二初始区块生成第二待上链区块,对第二待上链区块进行上链处理;
交易池更新模块,用于若待上链交易数据携带定时器,则停止待上链交易数据所携带的定时器,删除目标交易池中的待上链交易数据。
其中,该装置还包括:
状态更新模块,用于若对第二初始区块共识失败,则将待上链交易数据的数据状态更新为已打包状态,将待上链交易数据重新添加至目标交易池中。
其中,该装置还包括:
状态获取模块,用于若交易定时器触发超时,则获取交易数据的数据状态;
节点触发模块,用于若交易数据的数据状态为未打包状态,则执行获取第一主节点的过程;
定时停止模块,用于若交易数据的数据状态为已打包状态,则停止交易定时器。
其中,该装置还包括:
区块投票模块,用于当目标参与节点接收到第二主节点发送的第三初始区块时,对第三初始区块进行投票,将针对第三初始区块的投票结果发送至第二主节点;第二主节点是指生成第三初始区块的主节点;
区块同步模块,用于若确定对第三初始区块共识通过,则获取第三初始区块所对应的第三待上链区块,对第三待上链区块进行上链同步;
该交易池更新模块,还用于获取第三待上链区块中所包括的已投票交易数据,删除目标参与节点的目标交易池中的已投票交易数据。
其中,该装置还包括:
该状态更新模块,还用于若确定对第三初始区块共识失败,则获取第三初始区块所包括的已投票交易数据,将已投票交易数据的数据状态更新为已打包状态;
交易重添模块,用于基于目标交易池的交易打包顺序,将已投票交易数据重新添加至目标交易池中。
本申请实施例一方面提供了一种计算机设备,包括处理器、存储器、输入输出接口;
处理器分别与存储器和输入输出接口相连,其中,输入输出接口用于接收数据及输出数据,存储器用于存储计算机程序,处理器用于调用该计算机程序,以使包含该处理器的计算机设备执行本申请实施例一方面中的区块链数据传输方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例一方面中的区块链数据传输方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例一方面中的各种可选方式中提供的方法。
实施本申请实施例,将具有如下有益效果:
在本申请实施例中,目标参与节点获取交易数据;获取第一主节点,基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点;第一主节点是指处于区块生成状态的主节点;N小于参与节点集群所包括的参与节点的节点总数;N个关联主节点中包括用于对交易数据进行打包上链的主节点;节点选取类型用于表示处于区块生成状态的主节点的变化情况;将交易数据发送至N个关联主节点,以使N个关联主节点对交易数据进行上链处理。通过以上过程,不会将交易数据广播至所有的节点,而是对交易数据的广播过程进行优化,将交易数据广播至部分节点,可以减少数据传输的交易数据的数据量,减少数据传输的网络占用空间,从而降低了整个区块链的网络通信复杂度,提高整体的处理性能,降低发生网络风暴的风险。进一步地,对交易数据进行广播到的节点是基于处于区块生成状态的第一主节点所确定的,使得确定到的N个关联主节点是后续可能会尽快打包的节点,也就是说,将交易数据发送至可能会进行交易打包的节点,使得需要进行交易打包的节点可以获得足够数量用于打包的交易数据,从而在降低网络风暴的情况下,保障区块链对交易数据的接收及打包的性能,进而提高区块链的整体性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种区块链数据传输的网络交互架构图;
图1b是本申请实施例提供的另一种区块链数据传输的网络交互架构图;
图2是本申请实施例提供的一种区块链数据传输场景示意图;
图3是本申请实施例提供的一种区块链数据传输的方法流程图;
图4是本申请实施例提供的一种节点确定场景示意图;
图5是本申请实施例提供了一种客户端数据处理流程示意图;
图6是本申请实施例提供的一种节点数据处理流程示意图;
图7是本申请实施例提供的一种共识交互流程图;
图8是本申请实施例提供的一种区块链数据传输装置示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,对本申请实施例中提到的区块链、区块、链及共识机制进行介绍。
1、区块链:狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。区块链的目标是实现一个分布的数据记录账本,此账本只允许添加,不允许删除。账本底层的基本结构是一个线性的链表。链表由一个个“区块”串联组成,后继区块中记录前继区块的哈希(Hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的方式进行快速检验。若网络中节点提议添加一个新的区块,必须经过共识机制对区块达成确认。
2、区块(Block):记录一段时间内发生的所有交易和状态结果等,是对当前账本状态的一次共识。具体的,对于区块链来说,每次写入数据,即上述的交易过程,就是创建一个区块。
3、链(Chain):由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。
4、共识机制:通过特殊节点的投票,在很短的时间内完成对交易的验证和确认,目标是使所有的诚实节点保存一致的区块链式图。
具体的,一条区块链是由一个个区块组成,每个区块都包括两部分:区块头和区块体,而区块头包括时间戳、当前哈希值和前继哈希值。其中,时间戳用于记录该区块的生成时间;当前哈希值,为该区块的哈希值;前继哈希值,为该区块的前继区块的哈希值;区块体,为该区块存储的交易信息。
其中,若在本申请中需要收集对象(如用户等)数据,则在收集前、收集中,显示提示界面或者弹窗,该提示界面或者弹窗用于提示用户当前正在收集XXXX数据,也就是说,该提示界面或者弹窗可以提示用户当前正在收集的数据是什么,或者还可以提示用户当前收集的数据用于什么用途等,仅仅在获取到用户对该提示界面或者弹窗发出确认操作后,开始执行数据获取的相关的步骤,否则结束。而且,对于获取到的用户数据,会在合理合法的场景或用途等上进行使用,对用户数据的使用方式或场景等符合相关法律规定。可选的,在一些需要使用用户数据但未得到用户授权的场景中,还可以向用户请求授权,在授权通过时,再使用用户数据。
在本申请实施例中,请参见图1a,图1a是本申请实施例提供的一种区块链数据传输的网络交互架构图。其中,该网络可以认为是一个区块链网络,该区块链网络可以包括见证网络101及共识网络102等,也就是说,可以认为该区块链网络为多层链结构,被分为见证网络101及共识网络102。可选的,见证网络101与共识网络102之间可以通过路由代理层进行交互。其中,该见证网络101可以包括至少两个第一类型节点,该至少两个第一类型节点的数量是由见证网络101的部署所确定的,不做限制,例如,该至少两个第一类型节点可以如图1a中所示,如第一类型节点10a、第一类型节点10b、第一类型节点10c、第一类型节点10d、第一类型节点10e、第一类型节点10f、第一类型节点10g及第一类型节点10h等,各个第一类型节点之间可以进行数据交互;该共识网络102可以包括至少两个第二类型节点,该至少两个第二类型节点的数量是由共识网络102的部署所确定的,不做限制,该第二类型节点可以是参与节点,例如,该至少两个第二类型节点可以如图1a中所示,如参与节点10i、参与节点10j、参与节点10k、参与节点10m、参与节点10n、参与节点10p、参与节点10q及参与节点10r等,各个参与节点之间可以进行数据交互。其中,见证网络101中的第一类型节点可以与共识网络102中的参与节点之间进行数据交互,见证网络101中的业务节点可以访问共识网络102,从共识网络102中同步数据,共识网络102中的参与节点可以向见证网络101发送数据等。可选的,见证网络101中的第一类型节点可以通过路由代理层,访问共识网络102,共识网络102中的参与节点可以通过路由代理层向见证网络101发送消息等。
其中,该见证网络101中的第一类型节点用于进行业务执行,可以通过身份认证等方式从共识网络102中获取区块头数据及部分授权可见的区块数据等。可选的,该第一类型节点可以是一种简单支付验证(Simplified Payment Verification,SPV)节点,或者是其他的轻量节点等。该共识网络102中的参与节点可以对区块进行共识上链,可以传输交易数据等,或者可以向见证网络101中的第一类型节点发送数据等。可选的,该见证网络101与共识网络102可以处于相同的网络环境下,如见证网络101与共识网络102均处于联盟网络中等;或者,该见证网络101与共识网络102可以处于不同的网络环境下,如,见证网络101处于公有网络中,而共识网络102处于私有网络中等,在此不做限制。可选的,当共识网络102处于私有网络中时,数据交互有共识网络102中的共识机制保障安全,可以不增加额外的身份管理和网络控制等,其中,为提高数据安全性,也可以对共识网络102中的数据交互进行进一步地安全验证,如身份管理及网络控制等。可选的,也可以不考虑该共识网络102所处的网络环境,对共识网络102中的数据交互进行进一步安全验证,如身份管理及网络控制等,在此不做限制。可选的,共识网络102中的参与节点,可以对第一类型节点以及其他可能的节点接入该共识网络102中的行为进行检测,以提高区块链网络中的数据访问的安全性。可选的,第一类型节点可以接收业务客户端所发送的交易数据,从至少两个第二类型节点中,确定N个关联主节点,将交易数据发送至N个关联主节点。可选的,至少两个第二类型节点可以认为是参与节点集群。
可选的,可以参见图1b,图1b是本申请实施例提供的另一种区块链数据传输的网络交互架构图。如图1b所示,区块链网络103中可以包括至少两个参与节点,例如图1b中,参与节点1031、参与节点1032及参与节点1033等。可选的,任意一个参与节点可以获取交易数据,从该至少两个参与节点中确定N个关联主节点,将交易数据广播至N个关联主节点,N为正整数,可以限定N小于参与节点集群所包括的参与节点的节点总数。可选的,可以进一步限定N小于或等于节点数量阈值,节点数量阈值可以认为是指在对交易数据进行打包上链的主节点基础上,进行容错处理所扩充获取的节点的最大数量,使得在减少需要发送的数据量的情况下,可以进行一定的容错,以提高区块链网络中数据处理的效率。
如图1a至图1b所示,可以认为区块链网络包括参与节点集群,该参与节点集群即为至少两个参与节点,本申请中所提及的目标参与节点可以是区块链网络中所包括的至少两个参与节点中的任意一个参与节点。可选的,该至少两个参与节点中,当前处于区块生成状态的参与节点可以认为是目标主节点,其中,该目标主节点可以认为是一种指示名称,用于指示当前时刻处于区块生成状态的参与节点(或者说是主节点),并不是指某一个具体的物理意义上的参与节点,也就是说,该目标主节点所指示的参与节点可能会发生变化。可选的,每个参与节点可以包括一个交易池,该交易池用于存储对应的参与节点所接收到的交易数据。
具体的,可以参见图2,图2是本申请实施例提供的一种区块链数据传输场景示意图。如图2所示,目标参与节点201可以获取交易数据,获取第一主节点,该第一主节点是指当前时刻处于区块生成状态的主节点,也就是说,该第一主节点此时为目标主节点,该区块生成状态是指可以生成区块的一个状态。目标参与节点201可以基于第一主节点及节点选取类型,从参与节点集群中确定N个关联主节点,N为正整数,N小于参与节点集群所包括的参与节点的节点总数。其中,由于该N个关联主节点是以第一主节点为基础进行确定的,而第一主节点是当前时刻处于区块生成状态的主节点,使得选取的N个关联主节点是后续会尽快打包交易进行上链的节点,以保障需要进行交易打包的节点可以获取到当前产生的交易数据,也就是可以获取到足够多用于交易打包的交易数据,保障交易打包的交易数量,从而保障区块链的正常运行,提高区块链整体性能。同时,目标参与节点201会从参与节点集群中选取部分的参与节点,作为关联主节点。
可选的,该参与节点集群可以包括至少两个参与节点,如图2所示,参与节点20a、参与节点20b、参与节点20c及参与节点20d等,由于该交易数据之前可能还存在需要进行打包上链的交易,使得在处于区块生成状态的主节点会发生变化时,随着该变化,可能会导致对交易数据进行打包上链的主节点不是该第一主节点,也就是说,该N个关联主节点可能包括第一主节点,也可能不包括第一主节点。
举例来说,假定第一主节点为参与节点20b,该交易数据之前不存在需要打包上链的交易,或存在较少需要打包上链的交易(如数量小于区块存储空间,或小于区块存储空间与容错范围之和等),则确定到N个关联主节点可能包括参与节点20b及参与节点20c等,目标参与节点201可以将该交易数据发送至N个关联主节点,如参与节点20b及参与节点20c等,也就是以N个关联主节点中包括第一主节点为例。进一步可选的,参与节点20b接收到该交易数据,可以基于该交易数据生成初始区块,并在初始区块共识通过后,更新初始区块,得到待上链区块202,将该待上链区块202添加至参与节点20b所维护的区块链203中。可选的,若参与节点20b出现异常,则N个关联主节点中除第一主节点(即参与节点20b)之外的关联主节点可以对交易数据进行上链处理,可选的,可以从N个关联主节点中获取与第一主节点之间存在邻接关系的主节点,该与第一主节点之间存在邻接关系的主节点可以对该交易数据进行上链处理等。
也就是说,无需将交易数据广播至所有的参与节点,而是只广播至选取出的N个关联主节点,减少了需要广播到的对象数量(即关联主节点的数量),从而减少区块链网络数据传输的数据量,减少网络占用空间,以减少网络带宽占用,进而降低网络风暴的风险,降低区块链整体的网络通信复杂度。
可以理解的是,本申请实施例中所提及的参与节点可以是一种计算机设备,本申请实施例中的计算机设备包括但不限于终端设备或服务器。换句话说,计算机设备可以是服务器或终端设备,也可以是服务器和终端设备组成的系统。其中,以上所提及的终端设备可以是一种电子设备,包括但不限于手机、平板电脑、台式电脑、笔记本电脑、掌上电脑、车载设备、增强现实/虚拟现实(Augmented Reality/Virtual Reality,AR/VR)设备、头盔显示器、可穿戴设备、智能音箱、数码相机、摄像头及其他具备网络接入能力的移动互联网设备(mobile internet device,MID)等。其中,以上所提及的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、车路协同、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
可选的,本申请还可以采用云存储技术管理区块链网络中所产生的数据等,其中,云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
进一步地,请参见图3,图3是本申请实施例提供的一种区块链数据传输的方法流程图。如图3所示,在图3所描述的方法实施例中,该区块链数据传输过程包括如下步骤:
步骤S301,目标参与节点获取交易数据。
在本申请实施例中,目标参与节点可以是区块链网络中的任意一个节点,该目标参与节点可以获取交易数据。可选的,该目标参与节点可以接收业务客户端所发送的交易数据;或者,该目标参与节点可以接收其他参与节点发送的交易数据等,在此不做限制。其中,该目标参与节点接收业务客户端所发送的交易数据时,相当于是业务客户端产生了交易数据,可以将该交易数据发送至区块链网络中的任意一个节点,接收到该业务客户端所发送的交易数据的节点可以称为目标参与节点。其中,该目标参与节点接收其他参与节点发送的交易数据时,可以认为其他参与节点在接收到交易数据时,基于处于区块生成状态的主节点,在参与节点集群中确定N个关联主节点,N为正整数,N小于参与节点集群所包括的参与节点的节点总数,此时,该由其他参与节点所确定的N个关联主节点中包括该目标参与节点,其他参与节点将交易数据广播至由其他参与节点所确定的N个关联主节点,目标参与节点可以接收到由其他参与节点所发送的交易数据。
可选的,目标参与节点可以获取交易报文,对该交易报文进行解码处理,得到该交易报文所对应的交易数据。具体的,可以认为该交易报文的数据类型是一种用于在网络中进行传输的类型,目标参与节点可以对该交易报文进行反序列化,以实现对交易报文的解码,得到该交易报文所对应的交易数据。可选的,该交易数据可以认为是需要添加至区块链网络中的一条交易,该交易数据所包括的内容可以由区块链网络及具体的交易相关的数据所确定的,例如,可以包括合约方法、合约名称、合约参数及其他相关字段等;或者,假定该条交易是双方交易,该交易数据可以包括接收方对象信息、发送方对象信息、交易对象(如虚拟资源或游戏资源等)及交易条件等,在此不做限制。当然,在可能的情况下,目标参与节点可以直接获取到交易数据。
进一步可选的,目标参与节点可以对交易数据进行数据检测,若该交易数据为合法数据,则可以将该交易数据添加至目标参与节点的目标交易池中,触发步骤S302;若该交易数据为非法数据,则可以丢弃该交易数据,可选的,还可以向发送该交易数据的设备(如业务客户端或其他参与节点等)发送交易异常消息。可选的,若目标参与节点处于区块生成状态,则目标参与节点可以进行交易共识过程。具体的,可以根据交易数据生成第一初始区块,将第一初始区块发送至共识节点,在共识节点对第一初始区块共识通过时,基于第一初始区块生成第一待上链区块,对第一待上链区块进行上链处理;或者,可以将交易数据发送至共识节点,在共识节点对交易数据共识通过时,基于交易数据生成第一待上链区块,对第一待上链区块进行上链处理等。也就是说,在本申请中的任意一个交易共识的过程中,可以在对需要上链的数据进行共识通过时,根据需要上链的数据生成区块,将由需要上链的数据所生成的区块进行上链处理;或者,可以先基于需要上链的数据生成初始区块,在对初始区块共识通过时,更新该初始区块,得到待上链区块,对该待上链区块进行上链处理等。进一步地,若目标参与节点未处于区块生成状态,即,目标参与节点当前不能进行交易打包,则可以触发步骤S302。可选的,目标参与节点可以将交易数据添加至目标参与节点的目标交易池中,从目标交易池中获取目标交易集合,该目标交易集合可以包括M条交易,M为正整数,目标参与节点可以对该目标交易集合进行交易共识过程,在对目标交易集合共识通过时,由目标交易集合生成待上链区块,对该待上链区块进行上链处理等。可选的,在上述将交易数据添加至目标参与节点的目标交易池的过程,或交易共识过程之前,可以对交易数据进行数据检测,若交易数据为合法数据,则执行后续的过程。
其中,在对交易数据进行数据检测时,目标参与节点可以采用h个数据检测方式中的d个数据检测方式,对该交易数据进行检测,h为正整数,d为小于或等于h的正整数,也就是说,d个数据检测方式是h个数据检测方式中的任意d个。其中,若采用d个数据检测方式均对交易数据检测成功,则确定交易数据为合法数据;若采用d个数据检测方式中的任意一个数据检测方式,对交易数据检测失败,则确定交易数据为非法数据。其中,该h个数据检测方式包括但不限于以下方式:(1)获取交易数据所关联的数据签名,对数据签名进行检测。具体的,可以获取产生该交易数据的业务客户端的设备公钥,采用该设备公钥对数据签名进行验签,若验签失败,则确定采用数据签名对该交易数据检测失败,可以确定交易数据为非法数据;若验签成功,则可以确定采用数据签名对该交易数据检测成功。(2)获取业务客户端的身份信息,对身份信息进行检测。若对该身份信息验证通过,则确定采用身份信息对交易数据检测成功;若对该身份信息验证失败,则确定采用身份信息对交易数据检测失败,可以确定交易数据为非法数据。(3)获取交易数据中所包括的交易关联对象,获取交易关联对象在交易数据中所对应的对象信息,对对象信息进行检测,其中,该交易关联对象是指该交易数据所涉及的对象,例如,该交易数据为双方交易,该交易关联对象可以包括接收方对象及发送方对象等。进一步地,若对该对象信息验证通过,则确定采用对象信息对交易数据检测成功;若对该对象信息验证失败,则确定采用对象信息对交易数据检测失败,可以确定交易数据为非法数据。(4)对交易数据进行重复性检测。若检测到交易数据中存在重复数据,则确定对交易数据重复检测失败,可以确定交易数据为非法数据;若检测到交易数据中不存在重复数据,则确定对交易数据重复检测成功等。
其中,以上仅为例举的几种可能的针对交易数据的数据检测方式,可以根据需要进行更新,如增加新的数据检测方式,或更改已有的数据检测方式,或删除部分已有的数据检测方式等,在此不做限制。
步骤S302,获取第一主节点,基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点。
在本申请实施例中,目标参与节点可以获取第一主节点,基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点,第一主节点是指处于区块生成状态的主节点,即,此时该第一主节点是目标主节点,N小于参与节点集群所包括的参与节点的节点总数。其中,该N个关联主节点中包括用于对交易数据进行打包上链的主节点,可选的,该N个关联主节点中还可以包括在对交易数据进行打包上链的主节点的基础上进行容错的主节点,使得当在交易打包过程中,存在主节点出现异常时,实际上对交易数据进行打包上链的主节点也可以接收到该交易数据。节点选取类型用于表示处于区块生成状态的主节点的变化情况,简单来说,就是用于表示目标主节点所指示的节点是否会发生变化。可选的,可以将由目标参与节点所确定的关联主节点记作第一关联主节点,将由其他参与节点所确定的关联主节点记作第二关联主节点。其中,该节点选取类型可以包括节点轮换类型及节点确定类型,该节点轮换类型是指共识算法所指示的目标主节点会发生变化的类型,例如,生成区块高度1的区块的目标主节点为参与节点1,生成区块高度2的区块的目标主节点可以为参与节点2等;该节点确定类型是指共识算法所指示的目标主节点不会进行轮换的类型,也就是说,当目标主节点所对应的参与节点发生异常时,才会从参与节点集群中选取下一个作为目标主节点的参与节点,例如,参与节点1为目标主节点,在参与节点1未发生异常时,区块链网络中所生成的区块都可以认为是由参与节点1所生成的。
具体的,可以参见图4,图4是本申请实施例提供的一种节点确定场景示意图。如图4所示,目标参与节点401可以从参与节点集群402中确定N个关联主节点,该参与节点集群402中可以包括目标参与节点401。具体的,基于节点选取类型及第一主节点403,从参与节点集群402中确定N个关联主节点。
可选的,一种情况①下,若该节点选取类型为节点确定类型,则将参与节点集群402中的第一主节点403确定为关联主节点,此时,该关联主节点的数量小于参与节点集群所包括的参与节点的节点总数。可选的,若该节点选取类型为节点确定类型,则可以从参与节点集群402中确定目标参与节点401所选取的支持主节点,将参与节点集群402中的第一主节点及支持主节点确定为关联主节点,此时,第一主节点及支持主节点的节点数量为N,N小于参与节点集群所包括的参与节点的节点总数,其中,支持主节点是指在第一主节点403出现异常时,该目标参与节点401可能会选取的下一个进行交易打包的主节点。此时,N个关联主节点包括第一主节点。
可选的,若第一主节点403出现网络异常,即,无法与该第一主节点403之间进行交互,则可以与参与节点集群402中的其他参与节点重新进行选举,得到处于区块生成状态的新主节点,也就是得到重新选举出的新的目标主节点,将该新主节点确定为关联主节点。
一种情况②下,若节点选取类型为节点轮换类型,则获取目标参与节点401的目标交易池中所包括的交易数据量,获取区块存储空间,基于交易数据量与区块存储空间确定初始区块数量,以第一主节点403为基准,基于初始区块数量从参与节点集群402中确定N个关联主节点404。N小于参与节点集群所包括的参与节点的节点总数。可选的,目标参与节点401可以获取存储的交易数据量,具体的,区块链网络中的每个参与节点可以维护一个交易存储变量,区块链网络中每接收到一条交易,可以对该交易存储变量的值加一,得到第一变更值,并将交易存储变量的第一变更值同步至各个参与节点中;区块链网络中每上链一个区块,就可以对该交易存储变量的值减去上链的区块所包括的交易的数量,得到第二变更值,并将交易存储变量的第二变更值同步至各个参与节点中,目标参与节点401可以获取该交易存储变量当前的值,作为交易数据量。具体的,目标参与节点401可以获取共识算法所对应的节点轮换顺序,以第一主节点403为基准,基于初始区块数量及节点轮换顺序从参与节点集群402中确定N个关联主节点404。其中,该区块存储空间是指一个区块中所能容纳的交易的数量,节点轮换顺序是指在该共识算法下,处于区块生成状态的区块的变换顺序,例如,连续轮换顺序或间隔轮换顺序等,在此不做限制,其中,该间隔轮换顺序中的间隔数量可以是根据共识算法所确定的。具体的,目标参与节点401可以获取第一主节点403的节点标识,基于该第一主节点403的节点标识及初始区块数量确定初始标识范围。基于初始标识范围,从参与节点集群402中确定N个关联主节点404。可选的,可以在初始标识范围中增加容错范围,得到目标标识范围,将参与节点集群402中,目标标识范围所对应的参与节点确定为N个关联主节点404。
可选的,该N可以小于或等于节点数量阈值,举例来说,可以根据该容错范围确定该节点数量阈值,例如,基于该容错范围的双倍,确定该节点数量阈值,或者,基于容错范围进行数量扩充,得到节点数量阈值,也就是,以理论上用于为交易数据进行打包上链的主节点为基础,进行前后容错处理,以得到N个关联主节点。通过该过程,使得当在区块链网络中的交易打包过程中,存在主节点出现异常时,实际上为该交易数据进行打包上链的主节点也可以接收到该交易数据,从而保障区块链网络的交易打包的正常运行,提高区块链网络的性能。例如,假定理论上由参与节点3对该交易数据进行打包上链,以该参与节点3为基础,进行前后容错处理,假定得到N个关联主节点包括参与节点1、参与节点2、参与节点3、参与节点4及参与节点5,其中,在参与节点2进行交易打包时,该参与节点2出现了异常,使得理论上由参与节点2进行打包上链的交易,顺延至参与节点3进行打包上链,导致了理论上由参与节点3进行打包上链的交易(包括交易数据),顺延至参与节点4进行打包上链,由上述对参与节点3进行前后容错处理过程,使得参与节点4也可以接收到该交易数据,从而可以直接对该交易数据进行打包上链,保障交易打包的正常运行。
例如,假定该节点轮换顺序为连续轮换顺序,则该第一主节点的下一个主节点是指在参与节点集群402中位于第一主节点下一个的参与节点,例如,假定第一主节点为L1,则该第一主节点的下一个主节点可以是L2等。假定区块存储空间为c,交易数据量为k,c为正整数,k为自然数,第一主节点403为Li,目标参与节点401可以获取第一主节点403的节点标识(即Li),基于该第一主节点403的节点标识及初始区块数量确定初始标识范围,其中,该初始区块数量可以表示为(k/c),也就是说,可以将交易数据量与区块存储空间的比值,确定为初始区块数量,该初始区块数量用于表示将目标交易池中所包括的交易全部打包所需的区块的最少数量。则可选的,该目标标识范围可以表示为Lx,{i+(k/c)-b}≤x≤{i+(k/c)+b},即,x=[i+(k/c)-b,i+(k/c)+b],可选的,该节点数量阈值可以是2b或(2b+1)等。其中,该目标交易池中所存在的交易至少需要初始区块数量(即k/c)个区块,也就是说,如果需要对交易数据进行打包,正常情况下,需要以第一主节点401为基准,轮换初始区块数量所对应的节点之后的主节点进行交易打包,也就是说,理论上,该交易数据是由节点标识为L{i+(k/c)}的主节点进行打包上链,其中,b是指容错范围,b为正整数,可选的,目标参与节点401可以在该初始标识范围中增加容错范围,得到目标标识范围,使得在减少需要发送的主节点的数量的情况下,在一定程度上扩大需要发送的主节点的范围,使得在某一轮共识时无法达成一致,或某一轮共识过程中进行交易打包的区块出现异常等时,仍有一定数量的节点存储有需要进行交易打包的交易,从而在一定程度上提高区块链网络的容错性,提高区块链网络的整体性能。进一步地,将参与节点集群402中,目标标识范围所对应的参与节点确定为N个关联主节点404。可选的,若从第一主节点开始进行交易打包,则可以对交易数据量与区块存储空间的比值进行向下取整处理,得到初始区块数量;若从第一主节点的下一个主节点开始进行交易打包,则可以对交易数据量与区块存储空间的比值进行向上取整处理,得到初始区块数量。其中,交易打包是指对交易进行打包上链。可选的,可以认为所有参与轮换的主节点之间是循环的,例如,假定存在d个参与节点,即参与节点的节点总数为d,d为正整数,若目标标识范围的最大范围边界大于节点总数,则可以重新开始节点轮换,基于节点轮换,从参与节点集群中确定目标标识范围所对应的N个关联主节点。可选的,可以获取区块链网络中的异常节点概率,获取参与节点的节点总数,根据异常节点概率与节点总数,确定容错范围;或者,可以直接获取业务对象(即业务人员等)提交的容错范围等,在此不做限制。
可选的,若N个关联主节点中存在网络异常节点,则在参与节点集群中,基于网络异常节点获取与N个关联主节点存在邻接关系的邻接主节点。具体的,可以基于共识算法确定参与节点集群中的各个参与节点之间的节点关系,基于节点关系及网络异常节点,获取与N个关联主节点存在邻接关系的邻接主节点,也就是说,该邻接关系是指打包交易的顺序相邻的节点关系,例如,参与节点1生成区块高度为1的区块,参与节点2生成区块高度为2的区块,则可以认为参与节点1与参与节点2之间存在邻接关系,即,该邻接主节点可以认为是N个关联主节点之后进行交易打包的主节点。将N个关联主节点中除网络异常节点之外的正常主节点与邻接主节点确定为候选主节点。将交易数据发送至候选主节点,以使候选主节点对交易数据进行上链处理。
可选的,也可以认为是,若N个关联主节点中存在网络异常节点,则在参与节点集群中,基于网络异常节点获取与N个关联主节点存在邻接关系的邻接主节点;将N个关联主节点中除网络异常节点之外的正常主节点与邻接主节点重新确定为N个关联主节点,执行步骤S303。
步骤S303,将交易数据发送至N个关联主节点,以使N个关联主节点对交易数据进行上链处理。
在本申请实施例中,目标参与节点可以将交易数据广播至N个关联主节点,以使N个关联主节点对交易数据进行上链处理,可选的,由于在发送交易数据时,可能会存在位于交易数据之前需要进行打包上链的交易,因此,该交易数据可能会出现不会实时上链的情况。举例来说,假定区块存储空间为2,即,一个区块可以包括2条交易,交易数据之前存在历史交易数据1、历史交易数据2及历史交易数据3(即交易数据量为3),其中,第一主节点为参与节点2,可以得到目标标识范围为[2+(3/2)-b,2+(3/2)+b]=[3-b,3+b],假定b为2,则目标标识范围为[1,5],此时,N个关联主节点包括参与节点1至参与节点5。具体的,参与节点2可以对历史交易数据1及历史交易数据2进行打包上链,参与节点3可以对历史交易数据3及交易数据进行打包上链,也就是说,N个关联主节点中包括用于对交易数据进行打包上链的主节点(此处指参与节点3)。可选的,若在参与节点3对历史交易数据3及交易数据进行打包上链的过程中,该参与节点3出现异常,换句话说,N个关联主节点中理论上用于对交易数据进行打包上链的主节点出现异常,则由与N个关联主节点中理论上用于对交易数据进行打包上链的主节点存在邻接关系的主节点,对交易数据进行上链处理,即,由参与节点4对历史交易数据3及交易数据进行打包上链。
在本申请实施例中,目标参与节点获取交易数据;获取第一主节点,基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点;第一主节点是指处于区块生成状态的主节点;N个关联主节点中包括用于对交易数据进行打包上链的主节点;节点选取类型用于表示处于区块生成状态的主节点的变化情况;将交易数据发送至N个关联主节点,以使N个关联主节点对交易数据进行上链处理。通过以上过程,不会将交易数据广播至所有的节点,而是对交易数据的广播过程进行优化,将交易数据广播至部分节点,可以减少数据传输的交易数据的数据量,减少数据传输的网络占用空间,从而降低了整个区块链的网络通信复杂度,提高整体的处理性能,降低发生网络风暴的风险。进一步地,对交易数据进行广播到的节点是基于处于区块生成状态的第一主节点所确定的,使得确定到的N个关联主节点是后续可能会尽快打包的节点,也就是说,将交易数据发送至可能会进行交易打包的节点,使得需要进行交易打包的节点可以获得足够数量用于打包的交易数据,从而在降低网络风暴的情况下,保障区块链对交易数据的接收及打包的性能,进而提高区块链的整体性能。
进一步地,请参见图5,图5是本申请实施例提供的一种客户端数据处理流程示意图。也就是说,以目标参与节点从业务客户端获取到交易数据为例进行描述,该过程可以包括如下步骤:
步骤S501,获取交易数据。
在本申请实施例中,目标参与节点可以接收业务客户端发送的交易数据。或者,目标参与节点可以接收业务客户端发送的交易报文,对该交易报文进行解码处理,得到交易报文对应的交易数据。具体可以参见图3中的步骤S301所示的具体描述。
步骤S502,检测交易数据的合法性。
在本申请实施例中,目标参与节点可以对交易数据进行数据检测,若该交易数据为合法数据,则执行步骤S503;若交易数据为非法数据,则执行步骤S506。具体的,该数据检测过程可以参见图3的步骤S301中的相关描述,在此不再进行赘述。
步骤S503,放入目标参与节点的目标交易池中。
在本申请实施例中,目标参与节点可以将该交易数据添加至目标参与节点的目标交易池中。进一步执行步骤S504,获取第一主节点,基于第一主节点及节点选取类型,确定N个关联主节点。可选的,若目标参与节点处于区块生成状态,则从目标交易池中获取目标交易集合,在对目标交易集合共识通过时,由目标交易集合生成待上链区块对该待上链区块进行上链处理;若目标参与节点未处于区块生成状态,则执行步骤S504。
步骤S504,确定N个关联主节点。
在本申请实施例中,目标参与节点可以获取第一主节点,基于第一主节点及节点选取类型,从参与节点集群中确定N个关联主节点。具体可以参见图3的步骤S302的具体描述,在此不再进行赘述。
步骤S505,将交易数据广播至N个关联主节点。
在本申请实施例中,目标参与节点可以将该交易数据广播至N个关联主节点。
可选的,若N个关联主节点中存在网络异常节点,即,存在无法连接或网络通信失败的节点,则可以在参与节点集群中,基于网络异常节点获取与N个关联主节点存在邻接关系的邻接主节点;将N个关联主节点中除网络异常节点之外的正常主节点与邻接主节点重新确定为N个关联主节点,将交易数据广播至N个关联主节点。该邻接主节点相当于是对初始得到的N个关联主节点进行顺延发送所对应的节点。
步骤S506,丢弃交易数据。
在本申请实施例中,目标参与节点可以丢弃该交易数据,可选的,还可以向业务客户端发送交易异常消息。
进一步可选地,请参见图6,图6是本申请实施例提供的一种节点数据处理流程示意图。也就是说,以目标参与节点从其他参与节点获取到交易数据为例进行描述,该过程可以包括如下步骤:
步骤S601,获取交易数据。
在本申请实施例中,目标参与节点可以接收其他参与节点发送的交易数据。或者,目标参与节点可以接收其他参与节点发送的交易报文,对该交易报文进行解码处理,得到交易报文对应的交易数据。具体可以参见图3中的步骤S301所示的具体描述。
步骤S602,检测交易数据的合法性。
在本申请实施例中,目标参与节点可以对交易数据进行数据检测,若该交易数据为合法数据,则执行步骤S603;若交易数据为非法数据,则执行步骤S606。具体的,该数据检测过程可以参见图3的步骤S301中的相关描述,在此不再进行赘述。
步骤S603,为交易数据添加未打包状态。
在本申请实施例中,目标参与节点可以为该交易数据添加未打包状态。其中,该交易数据的数据状态用于表示该交易数据是否进行了广播或共识,也就是相当于,表示交易数据是否经过上链处理。
步骤S604,为交易数据添加交易定时器。
在本申请实施例中,目标参与节点可以为交易数据添加交易定时器。可选的,可以为区块链网络中所产生或获取到的每一条交易,添加定时器,每一条交易指示一个交易数据,该定时器用于指示需要在定时器所对应的时间范围内,对对应的交易进行打包上链,若定时器触发超时,则可以基于共识算法,触发下一个主节点对该交易进行打包上链。举例来说,假定该区块链网络中的主节点顺序是“参与节点1—>参与节点2—>…—>参与节点d”,当前处于区块生成状态的主节点是参与节点2,假定参与节点2需要对交易数据1及交易数据2进行打包上链,交易数据1的定时器为1分钟,而从交易数据1添加至交易池,添加了定时器开始,已经经过了1分钟以上,则可以由参与节点3对交易数据1及交易数据2进行打包上链。
也就是说,目标参与节点在为交易数据添加交易定时器时,可以执行步骤S605。可选的,该交易定时器添加之后,可以认为一直处于工作中,若交易定时器触发超时,则执行步骤S607,通过交易定时器,使得交易数据可以尽可能地在指定时间内,将交易数据进行打包上链,一旦交易定时器触发超时,表示可能存在部分节点发生异常,该发生异常的部分节点在轮换时会触发最大轮换阈值,导致时间耗费,且发生异常的部分节点可能会无法正常进行交易打包,从而导致理论上对该交易数据进行打包上链的主节点会发生顺延,即需要由新的主节点对该交易数据进行打包上链,其中,处于区块生成状态(即进行交易打包)的主节点是基于节点轮换顺序进行轮换的,或者,若节点选取类型为节点确定类型,则处于区块生成状态的主节点出现异常时,可以重新选取新的处于区块生成状态的主节点。因此,可以触发步骤S607,若基于步骤S607触发了步骤S608,则可以重新获取当前处于区块生成状态的主节点(此处记作第一主节点),基于该第一主节点确定N个关联主节点,此时,该N个关联主节点包括上述对交易数据进行打包上链的新的主节点。从而使得区块链网络的交易打包过程一直运行,使得交易数据可以及时发送至可以对该交易数据进行打包上链的主节点中,使得该交易数据可以及时添加至区块链中,进而提高区块链网络的数据安全性。其中,可以认为,该节点轮换顺序是基于共识算法所确定的。一般情况下,基于节点轮换顺序,进行轮换的各个主节点可以依次进行交易打包,使得该交易数据可以在交易定时器所指示的时间范围内,由用于对该交易数据进行打包上链的主节点对该交易数据进行打包上链,若交易定时器触发了超时,则表示在各个主节点轮换的过程中,可能出现了部分节点异常的情况,导致位于交易数据之前的部分交易及该交易数据无法以理论上的主节点进行打包上链,因此,可以重新确定N个关联主节点,具体参见步骤S608。
步骤S605,放入目标参与节点的目标交易池中。
在本申请实施例中,目标参与节点可以将携带未打包状态及交易定时器的该交易数据添加至目标参与节点的目标交易池中。
其中,上述步骤S603至步骤S605等的执行顺序并不仅限于上述顺序,可以进行调换,例如,可以将交易数据添加至目标参与节点的目标交易池中,为交易数据添加未打包状态,为交易数据添加交易定时器等,在此不做限制。
可选的,若目标参与节点处于区块生成状态,则目标参与节点从目标交易池中获取待上链交易数据,根据待上链交易数据生成第二初始区块,将第二初始区块发送至共识节点。其中,可以基于交易打包顺序,从目标交易池中获取待上链交易数据,该待上链交易数据的数量为至少一个,即,可以认为该待上链交易数据对应至少一条交易。其中,该交易打包顺序可以包括常规打包顺序及异常打包顺序,该常规打包顺序用于表示交易池(此处是目标交易池)中,添加了一次的交易的打包顺序;异常打包顺序用于表示交易池(此处是目标交易池)中,出现过异常(如共识失败等)的交易的打包顺序等。简单来说,该交易打包顺序也可以认为是交易池中的交易的打包优先级,打包优先级越高的交易,越早打包。例如,假定常规打包顺序为依次打包顺序,即,先进先出的打包顺序,则可以从目标交易池中依次获取位于入池首位的交易数据,作为待上链交易数据,入池首位是指目标交易池中入池时间最小的位置,也就是说,入池时间越小,打包优先级越高,打包越早。其中,参与节点集群可以包括共识节点,该共识节点可以认为是除了出块节点之外的参与节点,如,此处,共识节点可以是指参与节点集群中除了目标参与节点之外的参与节点。在共识节点对第二初始区块共识通过时,基于第二初始区块生成第二待上链区块,对第二待上链区块进行上链处理。若待上链交易数据携带定时器,则停止待上链交易数据所携带的定时器,删除目标交易池中的待上链交易数据,此时,由于待上链交易数据所携带的定时器停止了,不会触发超时。进一步地,若对第二初始区块共识失败,则将待上链交易数据的数据状态更新为已打包状态,将待上链交易数据重新添加至目标交易池中。具体的,可以是基于异常打包顺序,将待上链交易数据重新添加至目标交易池中,例如,该异常打包顺序可以包括但不限于首位插入顺序(相当于直接将待上链交易数据添加至入池首位,使得下一次可以直接对该待上链交易数据进行重新打包上链)、随机插入顺序及后插入顺序(相当于将待上链交易数据以新的交易数据添加至目标交易池,重新进行上链排队)等。
步骤S606,丢弃交易数据。
在本申请实施例中,目标参与节点可以丢弃该交易数据,可选的,还可以向其他参与节点或业务客户端等发送交易异常消息。
步骤S607,检测交易数据的数据状态。
在本申请实施例中,目标参与节点可以获取交易数据的数据状态,若该交易数据的数据状态为未打包状态,则执行步骤S608;若该交易数据的数据状态为已打包状态,则执行步骤S610。
步骤S608,确定N个关联主节点。
在本申请实施例中,目标参与节点可以获取第一主节点,基于第一主节点及节点选取类型,从参与节点集群中确定N个关联主节点。具体可以参见图3的步骤S302的具体描述,在此不再进行赘述。
步骤S609,将交易数据广播至N个关联主节点。
在本申请实施例中,目标参与节点可以将该交易数据广播至N个关联主节点。
可选的,若N个关联主节点中存在网络异常节点,即,存在无法连接或网络通信失败的节点,则可以在参与节点集群中,基于网络异常节点获取与N个关联主节点存在邻接关系的邻接主节点;将N个关联主节点中除网络异常节点之外的正常主节点与邻接主节点重新确定为N个关联主节点,将交易数据广播至N个关联主节点。该邻接主节点相当于是对初始得到的N个关联主节点进行顺延发送所对应的节点。
步骤S610,停止交易定时器。
在本申请实施例中,可以认为已经对交易数据进行了重新广播,或者,该交易数据的数据状态为已打包状态,即,该交易数据经过了上链处理等,可以认为目标参与节点不需要再次对该交易数据进行广播,可以停止交易定时器,使得该交易数据的交易定时器无法触发超时。
可选的,当目标参与节点接收到第二主节点发送的第三初始区块时,对第三初始区块进行投票,将针对第三初始区块的投票结果发送至第二主节点;第二主节点是指生成第三初始区块的主节点。若确定对第三初始区块共识通过,则获取第三初始区块所对应的第三待上链区块,对第三待上链区块进行上链同步;获取第三待上链区块中所包括的已投票交易数据,删除目标参与节点的目标交易池中的已投票交易数据。可选的,若该已投票交易数据携带定时器,则可以停止该已投票交易数据的定时器,删除目标参与节点的目标交易池中的已投票交易数据。若确定对第三初始区块共识失败,则获取第三初始区块所包括的已投票交易数据,将已投票交易数据的数据状态更新为已打包状态;基于目标交易池的交易打包顺序,将已投票交易数据重新添加至目标交易池中。可选的,可以获取已投票交易数据的共识失败次数,若共识失败次数大于交易异常阈值,则可以删除该已投票交易数据。由于在对该已投票交易数据的共识过程中,参与节点集群中的各个参与节点可以参与对该已投票交易数据的共识过程,因此,各个参与节点也可以获取到该已投票交易数据的共识失败次数,可以基于共识失败次数,对已投票交易数据进行删除处理。
进一步可选的,可以参见图7,图7是本申请实施例提供的一种共识交互流程图。如图7所示,可以认为目标主节点会打包交易,生成初始区块,将初始区块发送至共识节点进行共识,具体的,可以参见如下步骤:
步骤S71a,打包交易,生成初始区块。
在本申请实施例中,目标主节点可以从目标主节点的交易池中获取交易集合,对交易集合进行打包,生成初始区块。
步骤S72a,广播,等待共识结果。
在本申请实施例中,目标主节点可以将初始区块广播至共识节点,以使共识节点对该目标主节点进行共识投票。
步骤S71b,接收初始区块,开始对该初始区块进行共识。
在本申请实施例中,共识节点接收目标主节点所发送的初始区块,开始对该初始区块进行共识。
进一步,目标主节点及共识节点对该初始区块进行共识,即图7中的共识过程。进一步地,还包括如下步骤:
步骤S73a,获取共识结果。
在本申请实施例中,目标主节点可以获取针对初始区块的共识结果,该共识结果包括共识节点针对初始区块的投票结果等。
步骤S74a,检测共识结果。
在本申请实施例中,目标主节点可以对该共识结果进行检测,若该针对初始区块的共识结果为共识成功结果,则执行步骤S75a;若针对初始区块的共识结果为共识失败结果,则执行步骤S77a。
步骤S75a,删除交易池中,初始区块所对应的交易集合。
在本申请实施例中,目标主节点可以根据初始区块及共识结果生成待上链区块,对该待上链区块进行上链处理。进一步的,可以删除交易池中,初始区块所对应的交易集合。可选的,若该交易集合携带定时器,则可以停止该交易集合的定时器,删除该交易集合。可选的,若该交易集合的数据状态为未打包状态,则还可以将交易集合的数据状态更新为已打包状态,删除该交易集合,当然,可以直接删除该交易集合,相应的交易集合的数据状态也就可以认为不存在了。
步骤S76a,开启新区块高度的处理流程。
在本申请实施例中,可以开启新区块高度的处理流程,具体的,可以基于节点轮换顺序,将下一个处于区块生成状态的主节点确定为目标主节点,由目标主节点进行下一个区块高度的处理流程。
步骤S77a,更新初始区块所对应的交易集合的数据状态,并将交易集合添加至交易池中。
在本申请实施例中,目标主节点可以更新初始区块所对应的交易集合的数据状态,具体是将初始区块对应的交易集合的数据状态更新为已打包状态,将交易集合重新添加至目标主节点的交易池中。当该交易集合的数据状态为已打包状态时,目标主节点无需对该交易集合进行广播。
步骤S78a,开启目标区块高度的新一轮的处理流程。
在本申请实施例中,可以开启新区块高度的处理流程。
步骤S72b,获取共识结果。
在本申请实施例中,共识节点可以获取针对初始区块的共识结果。
步骤S73b,检测共识结果。
在本申请实施例中,目标主节点可以对该共识结果进行检测,若该针对初始区块的共识结果为共识成功结果,则执行步骤S74b;若针对初始区块的共识结果为共识失败结果,则执行步骤S76b。
步骤S74b,删除交易池中,初始区块所对应的交易集合。
在本申请实施例中,共识节点可以获取初始区块所对应的待上链区块,对该待上链区块进行同步上链。进一步的,可以删除共识节点的交易池中,初始区块所对应的交易集合。可选的,若该交易集合携带定时器,则共识节点可以停止该交易集合的定时器,删除该共识节点的交易池中的交易集合。
步骤S75b,开启新区块高度的处理流程。
在本申请实施例中,共识节点可以开启新区块高度的处理流程。
步骤S76b,更新初始区块所对应的交易集合的数据状态,并将交易集合添加至交易池中。
在本申请实施例中,共识节点可以更新初始区块所对应的交易集合的数据状态,具体是将初始区块对应的交易集合的数据状态更新为已打包状态,将交易集合重新添加至共识节点的交易池中。
步骤S77b,开启目标区块高度的新一轮的处理流程。
其中,当目标参与节点为目标主节点,即目标参与节点处于区块生成状态时,可以执行上述步骤S71a至步骤S78a的过程,即执行目标主节点所对应的过程。当目标参与节点为共识节点,即目标参与节点未处于区块生成状态时,可以执行上述步骤S71b至步骤S77b的过程,即执行共识节点所对应的过程。
进一步地,请参见图8,图8是本申请实施例提供的一种区块链数据传输装置示意图。该区块链数据传输装置可以是运行于计算机设备中的一个计算机程序(包括程序代码等),例如该区块链数据传输装置可以为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,该区块链数据传输装置800可以用于图3所对应实施例中的计算机设备,具体的,该装置可以包括:数据获取模块11、节点获取模块12、节点确定模块13及数据发送模块14。
数据获取模块11,用于目标参与节点获取交易数据;
节点获取模块12,用于获取第一主节点;
节点确定模块13,用于基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点;第一主节点是指处于区块生成状态的主节点;N为正整数;N小于参与节点集群所包括的参与节点的节点总数;N个关联主节点中包括用于对交易数据进行打包上链的主节点;节点选取类型用于表示处于区块生成状态的主节点的变化情况;
数据发送模块14,用于将交易数据发送至N个关联主节点,以使N个关联主节点对交易数据进行上链处理。
其中,该装置800还包括:
第一上链模块15,用于若目标参与节点处于区块生成状态,则目标参与节点根据交易数据生成第一初始区块,将第一初始区块发送至共识节点,在共识节点对第一初始区块共识通过时,基于第一初始区块生成第一待上链区块,对第一待上链区块进行上链处理;
状态确定模块16,用于若目标参与节点未处于区块生成状态,则执行获取第一主节点的过程。
其中,该数据获取模块11,包括:
交易解码单元111,用于目标参与节点接收业务客户端发送的交易报文,对交易报文进行解码处理,得到交易报文对应的交易数据;
该装置800还包括:
数据检测模块17,用于对交易数据进行数据检测;
交易添加模块18,用于若交易数据为合法数据,则将交易数据添加至目标参与节点的目标交易池,执行获取第一主节点的过程。
其中,该数据检测模块17,包括:
签名检测单元171,用于获取交易数据所关联的数据签名,对数据签名进行检测;或者,
身份检测单元172,用于获取业务客户端的身份信息,对身份信息进行检测;或者,
对象检测单元173,用于获取交易数据中所包括的交易关联对象,获取交易关联对象在交易数据中所对应的对象信息,对对象信息进行检测;或者,
重复检测单元174,用于对交易数据进行重复性检测。
其中,节点选取类型包括节点轮换类型及节点确定类型;
该节点确定模块13,包括:
固定节点确定单元131,用于若节点选取类型为节点确定类型,则将参与节点集群中的第一主节点确定为关联主节点;
轮换节点确定单元132,用于若节点选取类型为节点轮换类型,则获取目标参与节点的目标交易池中所包括的交易数据量,获取区块存储空间,基于交易数据量与区块存储空间确定初始区块数量,以第一主节点为基准,基于初始区块数量从参与节点集群中确定N个关联主节点。
其中,该装置800还包括:
邻接获取模块19,用于若N个关联主节点中存在网络异常节点,则在参与节点集群中,基于网络异常节点获取与N个关联主节点存在邻接关系的邻接主节点;
节点重确定模块20,用于将N个关联主节点中除网络异常节点之外的正常主节点与邻接主节点确定为候选主节点;
交易发送模块21,用于将交易数据发送至候选主节点,以使候选主节点对交易数据进行上链处理。
其中,该数据获取模块11,包括:
数据接收单元112,用于目标参与节点接收其他参与节点发送的交易数据;
该装置800还包括:
交易处理模块22,用于对交易数据进行数据检测,若交易数据为合法数据,则为交易数据添加未打包状态,为交易数据添加交易定时器,将携带未打包状态及交易定时器的交易数据添加至目标参与节点的目标交易池。
其中,该装置800还包括:
第二上链模块23,用于若目标参与节点处于区块生成状态,则目标参与节点从目标交易池中获取待上链交易数据,根据待上链交易数据生成第二初始区块,将第二初始区块发送至共识节点,在共识节点对第二初始区块共识通过时,基于第二初始区块生成第二待上链区块,对第二待上链区块进行上链处理;
交易池更新模块24,用于若待上链交易数据携带定时器,则停止待上链交易数据所携带的定时器,删除目标交易池中的待上链交易数据。
其中,该装置800还包括:
状态更新模块25,用于若对第二初始区块共识失败,则将待上链交易数据的数据状态更新为已打包状态,将待上链交易数据重新添加至目标交易池中。
其中,该装置800还包括:
状态获取模块26,用于若交易定时器触发超时,则获取交易数据的数据状态;
节点触发模块27,用于若交易数据的数据状态为未打包状态,则执行获取第一主节点的过程;
定时停止模块28,用于若交易数据的数据状态为已打包状态,则停止交易定时器。
其中,该装置800还包括:
区块投票模块29,用于当目标参与节点接收到第二主节点发送的第三初始区块时,对第三初始区块进行投票,将针对第三初始区块的投票结果发送至第二主节点;第二主节点是指生成第三初始区块的主节点;
区块同步模块30,用于若确定对第三初始区块共识通过,则获取第三初始区块所对应的第三待上链区块,对第三待上链区块进行上链同步;
该交易池更新模块24,还用于获取第三待上链区块中所包括的已投票交易数据,删除目标参与节点的目标交易池中的已投票交易数据。
其中,该装置800还包括:
该状态更新模块25,还用于若确定对第三初始区块共识失败,则获取第三初始区块所包括的已投票交易数据,将已投票交易数据的数据状态更新为已打包状态;
交易重添模块31,用于基于目标交易池的交易打包顺序,将已投票交易数据重新添加至目标交易池中。
本申请实施例提供了一种区块链数据传输装置,该装置可以运行于目标参与节点中,获取交易数据;获取第一主节点,基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点;第一主节点是指处于区块生成状态的主节点;N个关联主节点中包括用于对交易数据进行打包上链的主节点;节点选取类型用于表示处于区块生成状态的主节点的变化情况;将交易数据发送至N个关联主节点,以使N个关联主节点对交易数据进行上链处理。通过以上过程,不会将交易数据广播至所有的节点,而是对交易数据的广播过程进行优化,将交易数据广播至部分节点,可以减少数据传输的交易数据的数据量,减少数据传输的网络占用空间,从而降低了整个区块链的网络通信复杂度,提高整体的处理性能,降低发生网络风暴的风险。进一步地,对交易数据进行广播到的节点是基于处于区块生成状态的第一主节点所确定的,使得确定到的N个关联主节点是后续可能会尽快打包的节点,也就是说,将交易数据发送至可能会进行交易打包的节点,使得需要进行交易打包的节点可以获得足够数量用于打包的交易数据,从而在降低网络风暴的情况下,保障区块链对交易数据的接收及打包的性能,进而提高区块链的整体性能。
参见图9,图9是本申请实施例提供的一种计算机设备的结构示意图。如图9所示,本申请实施例中的计算机设备可以包括:一个或多个处理器901、存储器902和输入输出接口903。该处理器901、存储器902和输入输出接口903通过总线904连接。存储器902用于存储计算机程序,该计算机程序包括程序指令,输入输出接口903用于接收数据及输出数据,如用于各个参与节点之间进行数据交互,或者用于参与节点与业务客户端之间进行数据交互;处理器901用于执行存储器902存储的程序指令。
其中,该处理器901可以执行如下操作:
目标参与节点获取交易数据;
获取第一主节点,基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点;第一主节点是指处于区块生成状态的主节点;N为正整数;N小于参与节点集群所包括的参与节点的节点总数;N个关联主节点中包括用于对交易数据进行打包上链的主节点;节点选取类型用于表示处于区块生成状态的主节点的变化情况;
将交易数据发送至N个关联主节点,以使N个关联主节点对交易数据进行上链处理。
在一些可行的实施方式中,该处理器901可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器902可以包括只读存储器和随机存取存储器,并向处理器901和输入输出接口903提供指令和数据。存储器902的一部分还可以包括非易失性随机存取存储器。例如,存储器902还可以存储设备类型的信息。
具体实现中,该计算机设备可通过其内置的各个功能模块执行如该图3中各个步骤所提供的实现方式,具体可参见该图3中各个步骤所提供的实现方式,在此不再赘述。
本申请实施例通过提供一种计算机设备,包括:处理器、输入输出接口、存储器,通过处理器获取存储器中的计算机程序,执行该图3中所示方法的各个步骤,进行区块链数据传输操作。本申请实施例实现了获取交易数据;获取第一主节点,基于节点选取类型及第一主节点,从参与节点集群中确定N个关联主节点;第一主节点是指处于区块生成状态的主节点;N个关联主节点中包括用于对交易数据进行打包上链的主节点;节点选取类型用于表示处于区块生成状态的主节点的变化情况;将交易数据发送至N个关联主节点,以使N个关联主节点对交易数据进行上链处理。通过以上过程,不会将交易数据广播至所有的节点,而是对交易数据的广播过程进行优化,将交易数据广播至部分节点,可以减少数据传输的交易数据的数据量,减少数据传输的网络占用空间,从而降低了整个区块链的网络通信复杂度,提高整体的处理性能,降低发生网络风暴的风险。进一步地,对交易数据进行广播到的节点是基于处于区块生成状态的第一主节点所确定的,使得确定到的N个关联主节点是后续可能会尽快打包的节点,也就是说,将交易数据发送至可能会进行交易打包的节点,使得需要进行交易打包的节点可以获得足够数量用于打包的交易数据,从而在降低网络风暴的情况下,保障区块链对交易数据的接收及打包的性能,进而提高区块链的整体性能。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序适于由该处理器加载并执行图3中各个步骤所提供的区块链数据传输方法,具体可参见该图3中各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,计算机程序可被部署为在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
该计算机可读存储介质可以是前述任一实施例提供的区块链数据传输装置或者该计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图3中的各种可选方式中所提供的方法,实现了对交易数据的广播过程的优化,不会将交易数据广播至所有的节点,而是将交易数据广播至部分节点,可以减少数据传输的交易数据的数据量,减少数据传输的网络占用空间,从而降低了整个区块链的网络通信复杂度,提高整体的处理性能,降低发生网络风暴的风险。进一步地,对交易数据进行广播到的节点是基于处于区块生成状态的第一主节点所确定的,使得确定到的N个关联主节点是后续可能会尽快打包的节点,也就是说,将交易数据发送至可能会进行交易打包的节点,使得需要进行交易打包的节点可以获得足够数量用于打包的交易数据,从而在降低网络风暴的情况下,保障区块链对交易数据的接收及打包的性能,进而提高区块链的整体性能。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在该说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程区块链数据传输设备的处理器以产生一个机器,使得通过计算机或其他可编程区块链数据传输设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程区块链数据传输设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程区块链数据传输设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (16)
1.一种区块链数据传输方法,其特征在于,所述方法包括:
目标参与节点获取交易数据;
获取第一主节点,基于节点选取类型及所述第一主节点,从参与节点集群中确定N个关联主节点;所述第一主节点是指处于区块生成状态的主节点;N为正整数;N小于所述参与节点集群所包括的参与节点的节点总数;所述N个关联主节点中包括用于对所述交易数据进行打包上链的主节点;所述节点选取类型用于表示处于所述区块生成状态的主节点的变化情况;
将所述交易数据发送至所述N个关联主节点,以使所述N个关联主节点对所述交易数据进行上链处理。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标参与节点处于所述区块生成状态,则所述目标参与节点根据所述交易数据生成第一初始区块,将所述第一初始区块发送至共识节点,在所述共识节点对所述第一初始区块共识通过时,基于所述第一初始区块生成第一待上链区块,对所述第一待上链区块进行上链处理;
若所述目标参与节点未处于所述区块生成状态,则执行所述获取第一主节点的过程。
3.如权利要求1所述的方法,其特征在于,所述目标参与节点获取交易数据,包括:
目标参与节点接收业务客户端发送的交易报文,对所述交易报文进行解码处理,得到所述交易报文对应的交易数据;
所述方法还包括:
对所述交易数据进行数据检测,若所述交易数据为合法数据,则将所述交易数据添加至所述目标参与节点的目标交易池,执行所述获取第一主节点的过程。
4.如权利要求3所述的方法,其特征在于,所述对所述交易数据进行数据检测,包括:
获取所述交易数据所关联的数据签名,对所述数据签名进行检测;或者,
获取所述业务客户端的身份信息,对所述身份信息进行检测;或者,
获取所述交易数据中所包括的交易关联对象,获取所述交易关联对象在所述交易数据中所对应的对象信息,对所述对象信息进行检测;或者,
对所述交易数据进行重复性检测。
5.如权利要求1所述的方法,其特征在于,所述节点选取类型包括节点轮换类型及节点确定类型;
所述基于节点选取类型及所述第一主节点,从参与节点集群中确定N个关联主节点,包括:
若所述节点选取类型为所述节点确定类型,则将所述参与节点集群中的所述第一主节点确定为关联主节点;
若所述节点选取类型为所述节点轮换类型,则获取所述目标参与节点的目标交易池中所包括的交易数据量,获取区块存储空间,基于所述交易数据量与所述区块存储空间确定初始区块数量,以所述第一主节点为基准,基于所述初始区块数量从参与节点集群中确定N个关联主节点。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述N个关联主节点中存在网络异常节点,则在所述参与节点集群中,基于所述网络异常节点获取与所述N个关联主节点存在邻接关系的邻接主节点;
将所述N个关联主节点中除所述网络异常节点之外的正常主节点与所述邻接主节点确定为候选主节点;
将所述交易数据发送至所述候选主节点,以使所述候选主节点对所述交易数据进行上链处理。
7.如权利要求1所述的方法,其特征在于,所述目标参与节点获取交易数据,包括:
目标参与节点接收其他参与节点发送的交易数据;
所述方法还包括:
对所述交易数据进行数据检测,若所述交易数据为合法数据,则为所述交易数据添加未打包状态,为所述交易数据添加交易定时器,将携带所述未打包状态及所述交易定时器的所述交易数据添加至所述目标参与节点的目标交易池。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
若所述目标参与节点处于所述区块生成状态,则所述目标参与节点从所述目标交易池中获取待上链交易数据,根据所述待上链交易数据生成第二初始区块,将所述第二初始区块发送至共识节点,在所述共识节点对所述第二初始区块共识通过时,基于所述第二初始区块生成第二待上链区块,对所述第二待上链区块进行上链处理;
若所述待上链交易数据携带定时器,则停止所述待上链交易数据所携带的定时器,删除所述目标交易池中的所述待上链交易数据。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
若对所述第二初始区块共识失败,则将所述待上链交易数据的数据状态更新为已打包状态,将所述待上链交易数据重新添加至所述目标交易池中。
10.如权利要求7所述的方法,其特征在于,所述方法还包括:
若所述交易定时器触发超时,则获取所述交易数据的数据状态;
若所述交易数据的数据状态为所述未打包状态,则执行所述获取第一主节点的过程;
若所述交易数据的数据状态为已打包状态,则停止所述交易定时器。
11.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标参与节点接收到第二主节点发送的第三初始区块时,对所述第三初始区块进行投票,将针对所述第三初始区块的投票结果发送至所述第二主节点;所述第二主节点是指生成所述第三初始区块的主节点;
若确定对所述第三初始区块共识通过,则获取所述第三初始区块所对应的第三待上链区块,对所述第三待上链区块进行上链同步;
获取所述第三待上链区块中所包括的已投票交易数据,删除所述目标参与节点的目标交易池中的所述已投票交易数据。
12.如权利要求11所述的方法,其特征在于,所述方法还包括:
若确定对所述第三初始区块共识失败,则获取所述第三初始区块所包括的所述已投票交易数据,将所述已投票交易数据的数据状态更新为已打包状态;
基于所述目标交易池的交易打包顺序,将所述已投票交易数据重新添加至所述目标交易池中。
13.一种区块链数据传输装置,其特征在于,所述装置包括:
数据获取模块,用于目标参与节点获取交易数据;
节点获取模块,用于获取第一主节点;
节点确定模块,用于基于节点选取类型及所述第一主节点,从参与节点集群中确定N个关联主节点;所述第一主节点是指处于区块生成状态的主节点;N为正整数;N小于所述参与节点集群所包括的参与节点的节点总数;所述N个关联主节点中包括用于对所述交易数据进行打包上链的主节点;所述节点选取类型用于表示处于所述区块生成状态的主节点的变化情况;
数据发送模块,用于将所述交易数据发送至所述N个关联主节点,以使所述N个关联主节点对所述交易数据进行上链处理。
14.一种计算机设备,其特征在于,包括处理器、存储器、输入输出接口;
所述处理器分别与所述存储器和所述输入输出接口相连,其中,所述输入输出接口用于接收数据及输出数据,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-12任一项所述的方法。
16.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210510064.0A CN117097735A (zh) | 2022-05-11 | 2022-05-11 | 区块链数据传输方法、装置、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210510064.0A CN117097735A (zh) | 2022-05-11 | 2022-05-11 | 区块链数据传输方法、装置、设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117097735A true CN117097735A (zh) | 2023-11-21 |
Family
ID=88768564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210510064.0A Pending CN117097735A (zh) | 2022-05-11 | 2022-05-11 | 区块链数据传输方法、装置、设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117097735A (zh) |
-
2022
- 2022-05-11 CN CN202210510064.0A patent/CN117097735A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108648084B (zh) | 一种区块链网络的数据处理方法、装置、设备及存储介质 | |
CN111600720B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN113282603B (zh) | 区块链共识节点校验方法、装置、设备以及存储介质 | |
US11614769B2 (en) | Asynchronous distributed coordination and consensus with threshold logical clocks | |
US11689372B2 (en) | Secure, energy-efficient public blockchain | |
CN111598566A (zh) | 基于混合跨链的网络支付系统 | |
CN110298754B (zh) | 一种应用于区块链的共识方法 | |
CN111679978B (zh) | 一种程序测试方法、程序测试装置、电子设备及存储介质 | |
Charapko et al. | Bridging paxos and blockchain consensus | |
KR20220074971A (ko) | 블록체인 기반 데이터 프로세싱 방법, 장치 및 디바이스, 그리고 판독가능 저장 매체 | |
Capretto et al. | Setchain: Improving Blockchain Scalability with Byzantine Distributed Sets and Barriers | |
CN116827957B (zh) | 基于多区块链的信息处理方法、装置、设备以及介质 | |
CN117097735A (zh) | 区块链数据传输方法、装置、设备、存储介质及程序产品 | |
Sun et al. | Mosaic-a blockchain consensus algorithm based on random number generation | |
CN117057913A (zh) | 区块链管理方法、装置、计算机、存储介质及程序产品 | |
CN116192394A (zh) | 区块共识方法、装置、计算机、可读存储介质及程序产品 | |
Ford et al. | Que sera consensus: Simple asynchronous agreement with private coins and threshold logical clocks | |
CN116886444B (zh) | 跨链数据处理方法、装置、计算机、存储介质及程序产品 | |
CN117036038B (zh) | 一种基于联盟链的交易处理方法、装置、设备及存储介质 | |
CN113225175B (zh) | 通过流言协议实现有向无环图共识算法的系统和方法 | |
CN118842590A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
RU2776826C2 (ru) | Способы и устройство для распределенной базы данных, которая позволяет удалять события | |
CN117335956A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN116483915A (zh) | 一种区块同步方法、相关装置、介质及程序产品 | |
CN118537123A (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 |