基于区块链的数据处理方法、装置及设备
技术领域
本发明实施例涉及区块链领域,尤其涉及一种基于区块链的数据处理方法、装置及设备。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。在区块链技术中,分布式共识算法是区块链技术的基础。现有的分布式共识算法包括拜占庭容错(Byzantine Fault Tolerance,BFT)共识算法。
目前,在以BFT共识算法为基础的实用拜占庭容错(Practical Byzantine FaultTolerance,PBFT)系统(PBFT系统可以生成区块链)中,采用节点交互的模式来保证PBFT系统的安全性,即,PBFT系统中两两节点进行交互以保证PBFT系统的安全性。在上述PBFT链中,当区块链系统中的节点的数量增多时,使得PBFT系统上节点的交互次数以指数级增加,从而提高到了PBFT系统中运算量,进而导致PBFT系统中的数据处理效率较低。
发明内容
本发明实施例提供一种基于区块链的数据处理方法、装置及设备,用于降低区块链系统中节点间两两交互的次数,进一步地提高基于区块链的数据处理效率。
第一方面,本发明实施例提供一种基于区块链的数据处理方法,应用于区块链系统,所述区块链系统包括多个节点集合,每个节点集合包括一个主节点和至少一个从节点,包括:
第一主节点确定第一节点集合中的至少一个从节点对应的待处理的交易请求,每个从节点对应至少一个待处理的交易请求,所述第一节点集合为所述多个节点集合中的任意一个节点集合,所述第一主节点为所述第一节点集合中的主节点;
所述第一主节点确定每个交易请求对应的交易结果;
所述第一主节点根据每个交易请求对应的交易结果生成所述第一节点集合对应的数据处理结果。
在一种可能的实施方式中,所述多个节点集合为预设节点接收到至少一个节点发送的预设值个交易请求之后,根据所述至少一个节点中确定的。
在另一种可能的实施方式中,针对任意一个交易请求,所述第一主节点确定所述交易请求对应的交易结果,包括:
所述第一主节点向所述第一节点集合中的从节点发送所述交易请求对应的第一交易信息,第一交易信息中包括交易标识;
所述第一主节点接收所述第一节点集合中每个从节点发送的与所述交易标识对应的第二交易信息;
所述第一主节点根据所述第一交易信息和所述第二交易信息确定交易结果。
在另一种可能的实施方式中,所述第一主节点根据所述第一交易信息和所述第二交易信息确定交易结果,包括:
在所述第二交易信息中存在X个第二交易信息与所述第一交易信息相同,则确定所述交易结果,所述X为大于1的整数。
在另一种可能的实施方式中,所述第一主节点根据所述第一交易信息和所述第二交易信息确定交易结果之后,还包括:
所述第一主节点生成所述交易结果的哈希值。
在另一种可能的实施方式中,所述第一主节点根据每个交易请求对应的交易结果生成所述第一节点集合对应的数据处理结果,包括:
所述第一主节点获取每个交易结果对应的哈希值;
所述第一主节点根据每个交易结果对应的哈希值,生成所述数据处理结果。
在另一种可能的实施方式中,所述第一主节点为所述预设节点,所述方法还包括:
在所述多个节点集合对应的数据处理结果生成之后,根据所述多个节点集合对应的数据处理结果,生成区块。
第二方面,本发明实施例提供一种基于区块链的数据处理装置,应用于区块链系统,所述区块链系统包括多个节点集合,每个节点集合包括一个主节点和至少一个从节点,所述装置包括第一确定模块、第二确定模块和第一生成模块,其中,
所述第一确定模块用于,确定第一节点集合中的至少一个从节点对应的待处理的交易请求,每个从节点对应至少一个待处理的交易请求,所述第一节点集合为所述多个节点集合中的任意一个节点集合;
所述第二确定模块用于,确定每个交易请求对应的交易结果;
所述第一生成模块用于,根据每个交易请求对应的交易结果生成所述第一节点集合对应的数据处理结果。
在一种可能的实施方式中,所述多个节点集合为预设节点接收到至少一个节点发送的预设值个交易请求之后,根据所述至少一个节点中确定的。
在另一种可能的实施方式中,针对任意一个交易请求,所述第二确定模块具体用于:
向所述第一节点集合中的从节点发送所述交易请求对应的第一交易信息,第一交易信息中包括交易标识;
接收所述第一节点集合中每个从节点发送的与所述交易标识对应的第二交易信息;
根据所述第一交易信息和所述第二交易信息确定交易结果。
在另一种可能的实施方式中,所述第二确定模块具体用于:
在所述第二交易信息中存在X个第二交易信息与所述第一交易信息相同,则确定所述交易结果,所述X为大于1的整数。
在另一种可能的实施方式中,所述第二确定模块还用于:
生成所述交易结果的哈希值。
在另一种可能的实施方式中,所述第一生成模块具体用于:
获取每个交易结果对应的哈希值;
根据每个交易结果对应的哈希值,生成所述数据处理结果。
在另一种可能的实施方式中,所述主节点为所述预设节点,所述装置还包括第二生成模块,
所述第二生成模块用于,在所述多个节点集合对应的数据处理结果生成之后,根据所述多个节点集合对应的数据处理结果,生成区块。
第三方面,本发明实施例提供一种基于区块链的数据处理装置,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上述第一方面中任一项所述的数据处理方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上述第一方面中任一项所述的数据处理方法。
本发明实施例提供的一种基于区块链的数据处理方法、装置及设备,在区块链系统中,在主节点确定第一节点集合中的至少一个从节点对应的待处理的交易请求之后,主节点确定每个交易请求对应的交易结果,接着主节点根据每个交易请求对应的交易结果生成第一节点集合对应的数据处理结果。在上述过程中,第一节点集合中的至少一个从节点为提交交易请求的节点,数据处理结果的生成参考了第一节点集合中各个节点(除发送交易请求的节点)的交互信息,使得在主节点生成数据处理结果时,避免了无交易请求的节点参与区块链系统的交互,从而降低了区块链系统中节点间两两交互的次数,进而提高了基于区块链的数据处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为发明实施例提供的基于区块链的数据处理方法的应用场景示意图;
图2为本发明实施例提供的基于区块链的数据处理方法的流程示意图一;
图3为本发明实施例提供的确定一个交易请求对应的交易结果的方法流程示意图;
图4为本发明实施例提供的确定一个交易请求对应的交易结果的过程示意图;
图5为本发明实施例提供的基于区块链的数据处理方法的流程示意图二;
图6为本发明实施例提供的基于区块链的数据处理方法的流程示意图三;
图7为本发明实施例提供的一种基于区块链的数据处理装置的结构示意图;
图8为本发明实施例提供的另一种基于区块链的数据处理装置的结构示意图;
图9为本发明实施例提供的基于区块链的数据处理装置的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为发明实施例提供的基于区块链的数据处理方法的应用场景示意图。请参见图1,区块链系统中包括多个节点。在预设时段内,一些节点发送交易请求,一些节点未发送交易请求。系统中的节点可以通过预设算法从未发送交易请求的节点中选取主节点(例如主节点5和主节点8),以及从主节点中选取预设节点(例如主节点5)。预设节点可以将在预设时段内发送了交易请求的节点(下文简称从节点)进行集合划分,例如,第一节点集合包括从节点2、从节点3、从节点4,第二节点集合包括从节点6、从节点7、从节点1。区块链系统随机的为每个节点集合分配一个主节点,例如,为第一节点集合分配主节点5,为第二节点集合分配主节点8。在第一节点集合中,可由主节点5响应从节点2、从节点3和从节点4的交易请求,并生成交易结果1。在第二节点集合中,可由主节点8响应从节点6、从节点7和从节点1的交易请求,并生成交易结果2。预设节点可以根据交易结果1和交易结果2生成区块,并将区块写入以前的区块链中。
可选的,区块链系统中的节点可以为计算机、服务器。
可选的,可以通过分布式Raft算法从未提交交易请求的节点中选取主节点。
可选的,区块链系统中的所有无故障节点可以通过“投票”机制,从主节点中选取预设节点。
可选的,预设节点可以按照平均的原则对从节点划分节点集合,即每个节点集合中的从节点个数相同。
可选的,预设节点还可以接收到所有从节点提交的预设值个交易请求,并为接收到的每个交易请求分配编号。
可选的,在所述预设值大于交易请求阈值时,预设节点才能对提交了交易请求的从节点划分节点集合。
可选的,交易请求阈值可以为1万、2万等,具体的,在本申请中不做限定。
可选的,交易请求为服务器发送的交易信息,用于指示其他服务器要执行的动作。
可选的,在第一节点集合内,主节点5通过如下可行的方法生成交易结果1,具体的:主节点5可以执行从节点2、从节点4和从节点3提交的交易请求,并分别向从节点2、从节点4和从节点3发送与交易请求对应的交易结果。同时,主从节点5可以记录每一个交易结果,且在依次响应完本节点集合内的从节点提交的交易请求后,生成交易结果1。
可选的,在第二节点集合内,主节点8生成交易结果2的方法与主节点5生成交易结果1的方法相同。此处,不在赘述主节点8生成交易结果2的方法。
可选的,区块链是由各个区块依次连接而形成的链。
在申请中,对区块链系统中提交了交易请求的从节点进行平均集合划分处理,并给每一个节点集合随机分配一个主节点,使得在一个节点集合中,针对某一个交易请求,两两节点(包括该节点集合中的主节点和从节点)之间可以交互通信,且在交互通信之后,向提交了该交易请求的从节点发送交易结果。在上述过程中,两两节点之间的交互通信、以及提交了该交易请求的从节点发送交易结果只在一个节点集合内进行,从而降低了区块链系统中节点之间的交互次数。
可选的,区块链系统中还包括其他节点。图1仅是为了便于理解,示例性的展示区块链系统中的8个节点,而不是对区块链系统中节点的个数进行限定。
下面,以区块链系统中的节点个数大于或者等于m(3m+1)(m为故障节点的个数,其取值为大于或等于1的整数,在所述节点中包括m个主节点和3m2个从节点)为例,来说明预设节点如何对从节点的进行节点集合划分和编号、对交易请求进行编号。
例如,预设节点将3m2个从节点分为m个节点集合,每个节点集合包括3m个从节点,将m个节点集合中从节点编号为Nm,1、Nm,2、……、Nm,3m,将每个从节点发送的一个交易请求编号为nm,3m,x,其中,nm,3m,x可以代表从节点nm,3m发送的第x个交易请求。
可选的,预设节点还可以将m个主节点编号为N1、N2、……、Nm。
可选的,预设节点还可以向他主节点(例如N2,N3,…Nm)发送其对不同交易请求的编号、以及与该交易请求对应的从节点编号。
下面,通过具体实施例对本申请所示的技术方案进行详细说明。需要说明的是,下面几个具体实施例可以相互结合,对于相同或相似的内容,在不同的实施例中不再进行重复说明。
图2为本发明实施例提供的基于区块链的数据处理方法的流程示意图一。请参见图2,该方法可以包括:
S201:第一主节点确定第一节点集合中的至少一个从节点对应的待处理的交易请求,每个从节点对应至少一个待处理的交易请求,第一节点集合为所述多个节点集合中的任意一个节点集合,第一主节点为第一节点集合中的主节点。
本发明实施例的执行主体可以为服务器(主节点),也可以为设备在服务器中的基于区块链的数据处理装置。所述基于区块链的数据处理装置可以通过软件实现,也可以为通过软件和硬件的结合实现。
需要说明的是,基于区块链的数据处理方法应用于区块链系统,区块链系统包括多个节点集合,每个节点集合包括一个主节点和至少一个从节点。
可选的,区块链系统可以包括m个节点集合。
可选的,每个节点集合中可以包括主节点Nm和从节点Nm,1、Nm,2、……、Nm,3m。
可选的,在本申请中,由于每个集合包括1个主节点和3m个从节点,因此,每个节点集合中包括3m+1个节点。
可选的,第一主节点可以为N1、N2、……、Nm中的任意一个主节点。
可选的,第一节点集合可以为m个节点集合中的任意一个节点集合,例如N1、N1,1、N1,2、……、N1,3m。可选的,当第一节点集合包括N1、N1,1、N1,2、……、N1,3m时,第一主节点为N1。
可选的,第一主节点接收到预设节点发送的对不同交易请求的编号、以及与该交易请求对应的从节点编号之后,确定第一节点集合中的至少一个从节点对应的待处理的交易请求。
可选的,每个从节点可以提交x个交易请求。
可选的,x的取值可以为1、2、3等。
例如,从节点N1,1可以提交第一交易请求n1,1,1、第二交易请求n1,1,2、第x交易请求n1,1,x。
S202:第一主节点确定每个交易请求对应的交易结果。
可选的,针对一个交易请求,第一主节点可以采用图3实施例所述的方法,确定该交易请求对应的交易结果,具体的,请参见图3实施例。
图3为本发明实施例提供的确定一个交易请求对应的交易结果的方法流程示意图,该方法包括:
S301:第一主节点向第一节点集合中的从节点发送第一交易信息,第一交易信息中包括交易标识。
可选的,为了简化说明,将交易请求记为a。
可选的,交易请求a通常包括<REQUEST,o,t,c>,其中,REQUEST用于标识该信息为请求信息,o代表请求要执行的操作,t代表该信息发送的时间,用来保证客户端请求只会执行一次,c代表发送该请求的客户端(可以从节点N1,1、N1,2、……、N1,3m中的任意一个)。
可选的,第一交易信息包括<<PRE-PREPARE,v,n,d>,a>。其中,PRE-PREPARE用于标识该信息为第一交易信息,v代表当前视图编号,n代表交易请求的编号(其取值可以为n1,1,1、……、n1,1,x中的任一个),d为交易请求a的摘要。
可选的,交易标识可以为交易请求a的编号n。
S302:第一主节点接收第一节点集合中每个从节点发送的与交易标识对应的第二交易信息。
可选的,在从节点接收到第一主节点发送的第一交易信息之后,该从节点(除自身和和发送交易请求的从节点以外)会向其他从节点和第一主节点发送第二交易信息。
可选的,第二交易信息中包括发送该信息的节点编号i和交易标识n,例如第二交易信息可以为<PREPARE,v,n,d,i>,其中,PREPARE用于标识该信息为第二交易信息,其他字母的含义可参见S301。
可选的,i可以为N1,2,N1,3,…,N1,3m-1中的任意一个节点的编号。
需要说明的是,在S302中,在所有节点没有故障的情况下,第一主节点可以接收到3m-1个从节点发送的第二交易信息。
S303:第一主节点根据第一交易信息和第二交易信息确定交易结果。
在一种可能的实施方式中,在第二交易信息中存在X个第二交易信息与第一交易信息相同,则确定交易结果,X为大于1的整数。
可选的,由于第一节点集合中包括3m+1个节点,当X为m+1时,即在第二交易信息中存在m+1个第二交易信息与第一交易信息相同是,则第一主节点执行交易请求,并确定交易结果。
可选的,第一主节点确定交易结果的方法如下:第一主节点根据接收到的第一交易信息和二交易信息,判断第一交易信息和二交易信息中的v、n、是否相同,若相同,则第一主节点根据第一交易信息和二交易信息的内容提取、并保存信息(a,v,n,i)。在第一主节点保存信息(a,v,n,i)后,向其他从节点(除自身和发送该交易请求的节点以外)发送经自己签名的确认信息<COMMIT,v,n,Di(a),i>,其中COMMIT用于标识签名确认信息,Di(a)代表对第一主节点对交易请求a签名后的信息。
可选的,上述过程中,从节点也可以向其他节点发送经自己签名的确认信息<COMMIT,v,n,Di′(a),i>,其中Di′(a)代表对从节点对交易请求a签名后的信息。
可选的,在第一主节点可以接收到3m-1个从节点发送的确认信息<COMMIT,v,n,Di′(a),i>中,若其中有m+1个确认信息<COMMIT,v,n,Di′(a),i>与第一交易信息<<PRE-PREPARE,v,n,d>,a>中的v、n、d相同,则节点i执行请求信息a,并产生交易结果。
可选的,第一主节点接收到从节点发送的确认信息<COMMIT,v,n,Di′(a),i>后,可以对Di′(a)进行解密处理,以获得请求信息a的摘要d,并确定确认信息<COMMIT,v,n,Di′(a),i>中的v、n、d与第一交易信息中的v、n、d是否相同。
S203:第一主节点根据每个交易请求对应的交易结果生成第一节点集合对应的数据处理结果。
可选的,在第一节点集合中,针对每个交易请求,该节点集合内第一主节点均执行S301-S303,以确定每一个交易请求对应的交易结果,并记交易结果,从而形成第一节点集合的数据处理结果。
本发明实施例提供的一种基于区块链的数据处理方法,在区块链系统中,在第一主节点确定第一节点集合中的至少一个从节点对应的待处理的交易请求之后,第一主节点确定每个交易请求对应的交易结果,接着第一主节点根据每个交易请求对应的交易结果生成第一节点集合对应的数据处理结果。在上述过程中,第一节点集合中的至少一个从节点为提交交易请求的节点,数据处理结果的生成参考了第一节点集合中各个节点(除发送交易请求的节点)的交互信息,使得在第一主节点生成数据处理结果时,避免了无交易请求的节点参与区块链系统的交互,从而降低了区块链系统中节点间两两交互的次数,进而提高了基于区块链的数据处理效率。
同时,本申请提供的基于区块链的数据处理方法克服了现有的PBFT系统中,由于其节点的交互次数能够达到PBFT系统中节点交互次数的最大值,从而导致PBFT系统链运行效率低的问题。
可选的,在上述任一实施例的基础中,若m=2,则可以分为两个集合(第一节点集合和第二节点集合),其中,每个结合集合包括7个节点。下面,以第一节点集合中包括7个节点(6个从节点N1,1、N1,2、N1,3、N1,4、N1,5、N1,6,和1个主节点N1)为例,采用线条图,对该集合中两两节点交互,以确定一个交易请求对应的交易结果的过程,做进一步的详细说明。具体的,请参见图4。
图4为本发明实施例提供的确定一个交易请求对应的交易结果的过程示意图。请参见图4,其中,N1,1为发送一个交易请求的从节点,N1,6为个故障从节点,第一主节点确定一个交易请求对应的交易结果包括5个阶段,依次为“接收交易请求”、“第一主节点发送第一交易信息”、“从节点发送第二交易信息”、“信息确认”、“发送交易结果”。
(1)在“第一主节点接收交易请求”阶段中,包括:第一主节点N1接收到从节点N1,1发送一个交易请求a,其中a通常包括<REQUEST,o,t,N1,1>。
(2)在“第一主节点发送第一交易信息”阶段中,包括:
第一主节点N1向从节点N1,2、N1,3、N1,4、N1,5,和故障节点N1,6发送第一交易信息<<PRE-PREPARE,v,n1,1,1,d>,a>。
在该阶段中,还包括预设节点向第一主节点N1发送交易请求a的编号n1,1,1,第一主节点N1根据接收的交易请求a、编号n1组成第一交易信息<<PRE-PREPARE,v,n1,1,1,d>,a>。
需要说明的是,在该阶段中第一主节点N1不向N1,1发送第一交易信息。
(3)在“从节点发送第二交易信息”阶段中,包括:
从节点N1,2向从节点N1,3、N1,4、N1,5,和故障节点N1,6,和第一主节点N1发送第二交易信息<PREPARE,v,n1,1,1,d,N1,2>;
从节点N1,3向从节点N1,2、N1,4、N1,5,和故障节点N1,6,和第一主节点N1发送第二交易信息<PREPARE,v,n1,1,1,d,N1,3>;
从节点N1,4向从节点N1,2、N1,3、N1,5,和故障节点N1,6,和第一主节点N1发送第二交易信息<PREPARE,v,n1,1,1,d,N1,4>;
从节点N1,5向从节点N1,2、N1,3、N1,4,和故障节点N1,6,和第一主节点N1发送第二交易信息<PREPARE,v,n1,1,1,d,N1,5>;
需要说明的是,在该阶段中,从节点N1,2、N1,3、N1,4、N1,5,和第一主节点N1不向N1,1发送第二交易信息。且在该阶段中,由于从节点N1,6故障,因此无法发送第二交易信息。
(4)在“节点发送信息确认”阶段中,包括:
第一主节点N1向从节点N1,2、N1,3、N1,4、N1,5,和故障节点N1,6发送确认信息<COMMIT,v,n1,1,1,D1(a),N1>;
从节点N1,2向从节点N1,3、N1,4、N1,5,和故障节点N1,6,和第一主节点N1发送确认信息<COMMIT,v,n1,1,1,D2(a),N1,2>;
从节点N1,3向从节点N1,2、N1,4、N1,5,和故障节点N1,6,和第一主节点N1发送确认信息<COMMIT,v,n1,1,1,D3(a),N1,3>;
从节点N1,4向从节点N1,2、N1,3、N1,5,和故障节点N1,6,和第一主节点N1发送确认信息<COMMIT,v,n1,1,1,D4(a),N1,4>;
从节点N1,5向从节点N1,2、N1,4、N1,3,和故障节点N1,6,和第一主节点N1发送确认信息<COMMIT,v,n1,1,1,D5(a),N1,5>;
其中,D1(a)为N1对交易请求a签名后的信息,D2(a)为N1,2对交易请求a签名后的信息,D3(a)为N1,3对交易请求a签名后的信息,D4(a)为N1,4对交易请求a签名后的信息,D5(a)为N1,5对交易请求a签名后的信息。
需要说明的是,在该阶段中,节点N1、N1,2、N1,3、N1,4、N1,5不向N1,1发送确认信息。且在该阶段中,由于从节点N1,4故障,因此无法发送确认信息。
(5)在“节点发送交易结果”阶段中,包括:
第一主节点N1向从节点N1,1发送交易结果<REPLY,v,t,N1,1,N1,r>;
从节点N1,2向从节点N1,1发送交易结果<REPLY,v,t,N1,1,N1,2,r>;
从节点N1,3向从节点N1,1发送交易结果<REPLY,v,t,N1,1,N1,3,r>;
从节点N1,4向从节点N1,1发送交易结果<REPLY,v,t,N1,1,N1,4,r>;
从节点N1,5向从节点N1,1发送交易结果<REPLY,v,t,N1,1,N1,5,r>;其中,REPLY用于标识该信息为交易结果,r代表执行交易请求a后的结果。
可选的,在“节点发送交易结果”阶段中还包括,从节点N1,1接收5个交易结果,若在5个交易结果中,有3个交易结果中的同样的时间t和执行结果r,则从节点N1,1保存与交易请求a对应的时间t和执行结果r。
可选的,在上述5个阶段中,当前视图编号v不变。可选的,v为可以为0、1、2等整数。
需要说明的是,在上述5个阶段中,若第一主节点N1在预设时长内无法向从节点N1,1发送交易结果<REPLY,v,t,N1,1,N1,r>,则说明第一主节点N1出现故障。
可选的,预设时长可以为5秒、10等。
可选的,在第一主节点N1出现故障时,区块链系统自动触发视图更换协议。
可选的,在区块链系统中,所述视图更换协议用于指示从没有提交交易请求的节点中重新选取一个第一主节点N′,用第一主节点N′代替第一主节点N1执行上述5个阶段。
需要说明的是,在第一主节点N′代替第一主节点N1执行上述5个阶段的过程中,当前视图编号v改变成当前视图编号v′。
可选的,v′可以为二进制数01、10、011等。
在上述任一实施例的基础上,下面结合图5,对本发明实施例提供的数据处理方法作进一步的详细说明,具体的,请参见图5。
图5为本发明实施例提供的基于区块链的数据处理方法的流程示意图二。请参见图5,具体的,基于区块链的数据处理方法包括:
S501:第一主节点确定第一节点集合。
可选的,预设节点可以确定每个主节点对应的节点集合,并向每个主节点发送该主节点对应的节点集合中包括的从节点的标识。
可选的,在第一主节点接收到从节点的标识后,第一主节点可以根据从节点的标识确定第一节点集合,第一节点集合包括该第一主节点和接收到的从节点标识对应的从节点。
S502:第一主节点确定第一节点集合中每个从节点的交易请求对应的交易结果。
可选的,针对每一个交易请求,第一节点集合中的第一主节点均执行S301-S303,以获取与每个交易请求对应的交易结果。
S503:第一主节点生成每个交易结果的哈希值。
可选的,第一节点集合中的第一主节点根据一个交易请求对应的交易结果,利用哈希运算,生成该交易结果的哈希值。
S504:第一主节点根据每个交易结果的哈希值,生成数据处理结果。
可选的,第一节点集合中的第一主节点可以将每个交易结果对应的哈希值,再进行一次哈希运算,生成该集合的数据处理结果。
可选的,以第一节点集合中第一主节点执行了4个交易请求,并生成了与交易请求对应的交易结果,且获得了与交易结果对应的哈希值(hash 1、hash 2、hash 3、hash 4)为例,通过如下可行的方式,使第一主节点生成数据处理结果:
(1)第一主节点将hash 1和hash 2进行一次哈希运算,获得hash 5;
(2)第一主节点将hash 3和hash 4进行一次哈希运算,获得hash 6;
(3)第一主节点将hash 5和hash 6进行一次哈希运算,获得hash 7;其中hash 7为该集合的数据处理结果。
在上述任一实施例的基础上,下面,结合图6,对本发明实施例提供的基于区块链的数据处理方法做进一步的详细说明,具体的,请参见图6。
图6为本发明实施例提供的基于区块链的数据处理方法的流程示意图三。请参见图6,该方法包括:
S601:预设节点在接收到至少一个节点发送的预设值个交易请求后,确定多个节点集合。
可选的,每个节点集合包括一个主节点和至少一个从节点。
可选的,每个节点集合中的主节点和从节点的个数相同。
可选的,在本步骤中,预设节确定多个节点集合的方法与S201中第一主节点确定第一节点集合的方法相同。具体的,可参见S201。此处,不在赘述预设确定多个节点集合的方法。
S602:预设节点获取每个节点集合对应的数据处理结果。
可选的,每个节点集合中的主节点可以生成与其所在节点集合对应的数据处理结果。
可选的,每个节点集合中的主节点可以执行S502-S504,以使每个节点集合中的主节点生成该集合的数据处理结果,此处,不再赘述主节点生成数据处理结果的过程。
可选的,预设节点可以从每个节点集合中的主节点中,获取每个节点集合对应的数据处理结果。
S603:预设节点根据每个节点集合对应的数据处理结果,生成区块。
可选的,在预设节点获取到每个数据处理结果之后,将每个数据处理结果进行一次哈希运算,生成与预设值个交易请求对应的区块。
例如,区块链系统中m个节点集合,则可以生成m个数据处理结果。预设节点可以将m个数据处理结果进行一次哈希运算,生成与预设值个交易请求对应的区块。
需要说明的是,预设节点可以按照第一预设周期生成区块。
可选的,第一预设周期的时长可以为30分钟、1小时等。具体的,本申请不对第一预设周期的时长进行限定。
S604:预设节点将区块写入区块链中。
可选的,区块包括区块头和区块体。
可选的,区块头中通常包括上一个区块的哈希值、本区块的哈希值、以及生成本区块的哈希值的时间。
可选的,区块体中通常包括每一个交易信息、与交易信息对应的交易结果、与交易结果对应的哈希值。
可选的,在预设节点生成与预设值个交易请求对应的区块后,由于该区块头中包括了上一个区块的哈希值,因此,可以根据上一个区块的哈希值,在正确的位置,将与预设值个交易请求对应的区块写入区块链中。
可选的,在预设节点将区块写入区块链之后,还可以包括:区块链系统中的所有节点进行信息同步。
其中,所述所有节点包括主节点、从节点、以及未提交交易请求的节点。
可选的,按照第二预设周期,使得区块链系统中的所有节点的数据处理结果进行信息同步。
可选的,第二预设周期的时长可以为40分钟、2小时等。具体的,本申请不对第二预设周期的时长进行限定。
可选的,信息同步的目的为了使区块链系统中的所有节点的数据处理结果保持完全一致,并识别是否存在错误的数据处理结果。
可选的,在区块链系统中的所有节点进行信息同步之后,还包括:对不合法的交易请求进行对应的区块链账户管理“回滚”操作。
可选的,在识别出存在错误的数据处理结果之后,将错误数据处理结果对应的交易请求视作不合法的交易请求,并进行对应的区块链账户管理“回滚”操作。
可选的,区块链账户管理“回滚”操作通常包括:对区块链的内容进行重组、撤销之前交易结果。可选的,上述操作可以使在一个节点集合中,发送不合法交易请求的节点不能接收到该集合中其他节点发送的交易结果,即所述不合法交易请求不能被执行。
需要说明的是,在本发明实施例提供的基于区块链的数据处理方法,可以应用于节点个数大于或者等于m(3m+1)的区块链系统中,例如联盟链和私有链。
图7为本发明实施例提供的一种基于区块链的数据处理装置的结构示意图。请参见图7,基于区块链的数据处理装置应用于区块链系统,所述区块链系统包括多个节点集合,每个节点集合包括一个主节点和至少一个从节点,基于区块链的数据处理装置10包括第一确定模11、第二确定模块12和第一生成模块13,其中,
所述第一确定模块11用于,确定第一节点集合中的至少一个从节点对应的待处理的交易请求,每个从节点对应至少一个待处理的交易请求,所述第一节点集合为所述多个节点集合中的任意一个节点集合;
所述第二确定模块12用于,确定每个交易请求对应的交易结果;
所述第一生成模块13用于,根据每个交易请求对应的交易结果生成所述第一节点集合对应的数据处理结果。
可选的,所述基于区块链的数据处理装置可以设置在每个节点集合中的主节点中。
本发明实施例提供的基于区块链的数据处理装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述每个节点集合为预设节点接收到至少一个节点发送的预设值个交易请求之后,根据所述至少一个节点中确定的。
在一种可能的实施方式中,针对任意一个交易请求,所述第二确定模块12具体用于:
向所述第一节点集合中的从节点发送所述交易请求对应的第一交易信息,第一交易信息中包括交易标识;
接收所述第一节点集合中每个从节点发送的与所述交易标识对应的第二交易信息;
根据所述第一交易信息和所述第二交易信息确定交易结果。
在一种可能的实施方式中,所述第二确定模块12具体用于:
在所述第二交易信息中存在X个第二交易信息与所述第一交易信息相同,则确定所述交易结果,所述X为大于1的整数。
在一种可能的实施方式中,所述第二确定模块12还用于:
生成所述交易结果的哈希值。
在一种可能的实施方式中,所述第一生成模块具13体用于:
获取每个交易结果对应的哈希值;
根据每个交易结果对应的哈希值,生成所述数据处理结果。
图8为本发明实施例提供的另一种基于区块链的数据处理装置的结构示意图。在图7所示实施例的基础上,请参见图8,基于区块链的数据处理装置10还包括第二生成模14,
所述第二生成模块14用于,在所述多个节点集合对应的数据处理结果生成之后,根据所述多个节点集合对应的数据处理结果,生成区块。
本发明实施例提供的基于区块链的数据处理装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
图9为本发明实施例提供的基于区块链的数据处理装置的硬件结构示意图,如图9所示,基于区块链的数据处理装置20包括:至少一个处理器21和存储器22。可选地,该基于区块链的数据处理装置20还包括通信部件23。其中,处理器21、存储器22以及通信部件23通过总线94连接。
在具体实现过程中,至少一个处理器21执行所述存储器22存储的计算机执行指令,使得至少一个处理器21执行如上的基于区块链的数据处理方法。
处理器21的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述图9所示的实施例中,应理解,处理器可以是中央处理单元(英文:CentralProcessing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:DigitalSignal Processor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的基于区块链的数据处理方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个区块链单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者区块链设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。