区块链系统的数据共识方法、装置及硬件设备与流程

文档序号:20678092发布日期:2020-05-08 18:05阅读:236来源:国知局
区块链系统的数据共识方法、装置及硬件设备与流程

本发明涉及区块链技术领域,尤其涉及一种区块链系统的数据共识方法、装置及硬件设备。



背景技术:

区块链是一种与传统集中记账方式不同的记录技术,参与到区块链系统上的节点,可能不属于同一组织、彼此无须信任;区块链数据由所有节点共同维护,每个参与维护的节点都能获得一份完整记录的拷贝。与传统的记账技术相比,其特点包括:维护一条不断增长的链,只可能添加记录,而发生过的记录不可篡改;无须集中控制而能达成共识等特点。

由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致。因此区块链系统需要设计一种机制对在差不多时间内发生的事务的先后顺序进行共识。而随着区块链系统中不断增长的链,会导致数据共识的效率较低,因此目前亟需一种解决区块链系统数据共识效率低的方法。



技术实现要素:

本发明提供一种区块链系统的数据共识方法、装置、计算机设备及存储介质,用于提高区块链系统的数据共识效率。

本发明实施例提供一种区块链系统的数据共识方法,所述区块链系统中至少包含一个待验证队列,和多个验证节点,所述方法包括:

按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中;所述待验证队列中存储有多个等待共识的合约事物;

待共识时间到来之后,根据所述待验证队列中在所述预置时间间隔内的合约事物确定共识等级,每个所述共识等级对应有多个验证节点,不同的共识等级对应不同的验证节点;

对所述待验证队列中在所述预置时间间隔内的合约事物打包成一个合约集合,并计算所述合约集合的哈希值,将所述哈希值和所述合约集合封装成一个区块结构;

将所述区块结构广播给与所述共识等级对应的验证节点,以使得与所述共识等级对应的验证节点对所述区块结构内的合约事物进行验证;

接收所述共识等级对应的验证节点发送的验证合约集合,所述验证合约集合中包含所述满足触发条件的合约事物,每个所述合约事物均对应有验证节点通过个数,所述合约事物的验证节点通过个数为对所述合约事物验证通过的验证节点的个数;

获取所述验证合约集合中验证节点通过个数超过预置数值的合约事物,所述预置数值是根据所述共识等级对应的验证节点个数确定的;

确认所述验证节点通过个数超过预置数值的合约事物的数据共识成功。

本发明实施例提供一种区块链系统的数据共识装置,所述区块链系统中至少包含一个待验证队列,和多个验证节点,其特征在于,所述装置包括:

推送模块,用于按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中;所述待验证队列中存储有多个等待共识的合约事物;

确定模块,用于待共识时间到来之后,根据所述待验证队列中在所述预置时间间隔内的合约事物确定共识等级,每个所述共识等级对应有多个验证节点,不同的共识等级对应不同的验证节点;

封装模块,用于对所述待验证队列中在所述预置时间间隔内的合约事物打包成一个合约集合,并计算所述合约集合的哈希值,将所述哈希值和所述合约集合封装成一个区块结构;

广播模块,用于将所述区块结构广播给与所述共识等级对应的验证节点,以使得与所述共识等级对应的验证节点对所述区块结构内的合约事物进行验证;

接收模块,用于接收所述共识等级对应的验证节点发送的验证合约集合,所述验证合约集合中包含所述满足触发条件的合约事物,每个所述合约事物均对应有验证节点通过个数,所述合约事物的验证节点通过个数为对所述合约事物验证通过的验证节点的个数;

获取模块,用于获取所述验证合约集合中验证节点通过个数超过预置数值的合约事物,所述预置数值是根据所述共识等级对应的验证节点个数确定的;

所述确定模块,还用于确认所述验证节点通过个数超过预置数值的合约事物的数据共识成功。

一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述区块链系统的数据共识方法。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述区块链系统的数据共识装置。

本发明提供的一种区块链系统的数据共识方法、装置、计算机设备及存储介质,首先按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中;待共识时间到来之后,根据待验证队列中在预置时间间隔内的合约事物确定共识等级;然后对待验证队列中在预置时间间隔内的合约事物打包成一个合约集合,并计算合约集合的哈希值,将哈希值和合约集合封装成一个区块结构;将区块结构广播给与共识等级对应的验证节点,以使得与共识等级对应的验证节点对区块结构内的合约事物进行验证;接收共识等级对应的验证节点发送的验证合约集合,获取验证合约集合中验证节点通过个数超过预置数值的合约事物,最后确认验证节点通过个数超过预置数值的合约事物的数据共识成功。相对于现有技术中数据共识需要所有验证节点参与相比,本发明根据待验证队列中在预置时间间隔内的合约事物确定共识等级,然后根据共识等级对应的验证节点对合约事物进行验证,由于共识等级是根据合约事物确定的,即本发明可以基于合约事务的重要程度进行验证,从而通过本发明可提高区块链系统数据共识的效率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例中区块链系统的数据共识方法的一流程图;

图2是本发明一实施例中确认满足触发条件的合约事物的流程图;

图3是本发明一实施例中验证节点对区块结构内的合约事物进行验证的流程图;

图4是本发明一实施例中区块链系统的数据共识装置的一原理框图;

图5是本发明一实施例中计算机设备的一示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在一实施例中,如图1所示,提供一种区块链系统的数据共识方法,所述区块链系统中至少包含一个待验证队列,和多个验证节点。其中,每一个待验证队列可对应验证一个类型的合约事物,或是验证对应时间段的合约事物等,本发明实施例不做具体限定。该方法包括如下步骤:

s10,按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中。

其中,所述待验证队列中存储有多个等待共识的合约事物。预置时间间隔可以根据实际情况进行设定,如区块链中的合约事物越多,可将预置时间间隔设置的越短;区块链中的合约事物越少,可将预置时间间隔设置的越长。具体的,可将预置时间间隔设置成1秒、3秒、3秒等,本发明实施例不做具体限定。

在本发明提供的一个实施例中,如图2所示,步骤s10所述按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中,包括:

s101,逐条遍历每个合约事物对应的状态机及触发条件。

其中,所述状态机中记录有第一阶段交易和第二阶段交易节点分别对应的交易状态;所述触发条件为所述第一阶段交易和所述第二阶段交易节点均交易成功。需要说明的是,区块链系统包括第一交易阶段和第二交易阶段,第一交易阶段为预提交阶段:调用者发送交易到各个节点,例如从a账户转账10元到b账户的交易发送到p1、p2两个节点,p1、p2节点先模拟执行a-10、b+10的操作(模拟执行指的是做业务预设的校验如身份校验、安全校验、账户校验等,a-10、b+10的结果并不会真正落库,而是模拟真正转账的交易看是否可以成功,如模拟成功,会将a、b两个账户暂时上锁,即a、b账户无法做其他转账交易),各个节点将交易的状态记录入库;如模拟失败,不上锁,仅记录交易状态。

第二交易阶段为提交阶段:根据各个节点预提交的结果,执行提交或者回滚。沿用上例,如p1在第一交易阶段成功,p2在第二交易阶段失败,则将p1的第一阶段交易回滚(即释放a、b账户上的锁并更新数据库中的该笔交易的交易状态);如p1、p2第一阶段都失败,则都回滚;如p1、p2在第一交易阶段和第二交易阶段都成功,则都进行提交(a-10、b+10的数据真正落库,释放锁,更新交易状态)。

s102,将第一阶段交易和第二阶段交易节点均交易成功的合约事物推送到待验证队列中。

在本发明实施例中,逐条遍历每个合约事物对应的状态机及触发条件之后,获取预置时间间隔内第一交易阶段和第二交易阶段节点均交易成功的合约事物,然后将获取的合约推送给待验证队列中,以便于验证节点对待验证队列中的合约事物进行验证,确认合约事物是否达成共识。

在本发明提供的另一个实施例中,所述按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中之前,所述方法还包括:确定所述合约事物的类型,并根据所述合约事物的类型确定对应的待验证队列,每个所述待验证队列对应存储对应类型的合约事物。其中,合约事物的类型具体可以为根据合约事物的交易金额的大小、交易的方式、用户级别、或是安全级别等分别进行确定,本发明实施例不做具体限定。需要说明的是,在根据合约事物的类型确定对应的待验证队列之前,本发明实施例需要为每个类型的合约事物设置对应的待验证队列。进一步的,本发明实施例在为每个类型的合约事物设置对应的待验证队列的同时,还可以依据合约事物类型的重要程度配置待验证队列的重要级别,合约事物类型的重要程度越高,重要级别设置的越高,待验证队列对应的共识等级设置的越高;合约事物类型的重要程度越低,重要级别设置的越低,待验证队列对应的共识等级设置的越低。

例如,若按照合约事物的类型为交易金额的大小,根据交易金额设置了三个等级分别为:0-1000元、1000元-5000元,5000元以上,则根据不同的交易金额可确定对应的三个待验证队列,并根据交易金额的大小为每个待验证队列设置共识等级,如高级别待验证队列对应5000元以上,中级别待验证队列对应1000元-5000元,低级别验证队列对应0-1000元。

相应的,所述按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中,包括:按照预置时间间隔将满足触发条件的合约事物推送到与所述合约事物的类型对应的待验证队列中。以便于在后续步骤中验证节点对验证队列中的合约事物进行验证。在本发明实施例中,根据合约事物的类型确定对应的待验证队列之后,根据合约事务的类型将预置时间间隔内的合约事物推送到对应的待验证队列中,从而使得与待验证队列对应的共识等级中的验证节点对合约事物进行验证。

s20,待共识时间到来之后,根据待验证队列中在预置时间间隔内的合约事物确定共识等级。

其中,每个所述共识等级对应有多个验证节点,不同的共识等级对应不同的验证节点。需要说明的是,不同的共识等级中对应的验证节点的个数也不同,共识等级越高,其中包含的验证节点的个数越多;共识等级越低,其中包含的验证节点的个数越少。具体的,本发明实施例可以根据所述合约事物的用户类型级别、信息安全级别、数据类型级别确定共识等级,本发明实施例不做具体限定。

s30,对待验证队列中在预置时间间隔内的合约事物打包成一个合约集合,并计算合约集合的哈希值,将哈希值和合约集合封装成一个区块结构。

s40,将区块结构广播给与共识等级对应的验证节点,以使得与共识等级对应的验证节点对区块结构内的合约事物进行验证。

具体的,共识等级对应的验证节点收到该区块结构后,会分解出区块结构里合约集合哈希值,与本验证节点哈希集合下的哈希值做比较;再发送一份本验证节点认可的合约集合给共识等级中其他的验证节点,通过这种多轮的发送和比较;共识等级对应的所有验证节点最终在规定的时间内对最新的合约集合达成一致。最新达成的合约集合会以区块结构的形式扩散到全网。每个区块结构包含以下信息:当前区块的哈希值、前一区块的哈希值、达成共识时的时间戳、以及其它描述信息;同时区块链最重要的信息是带有一组已经达成共识的合约集合;收到合约集合的节点,都会对每条合约进行验证,验证通过的合约才回最终写入区块链中,验证的内容主要是合约参与者的私钥签名是否与账户匹配。

在本发明提供的一个实施例中,如图3所示,步骤s40所述共识等级对应的验证节点对所述区块结构内的合约事物进行验证,包括:

s401,根据验证节点的计算能力确定各验证节点的验证顺序。

在本发明实施例中,在根据验证验证节点的计算能力确定各验证节点的验证顺序之后,需要对验证节点进行排序,以便于在后续步骤根据验证节点的顺序对区块结构中的合约事物进行验证。

s402,根据所述验证节点的验证顺序的高低依次对所述区块结构内的合约事物进行验证。

具体的,所述根据所述验证节点的验证顺序的高低依次对所述区块结构内的合约事物进行验证,包括:高优先级的验证节点对所述区块结构中的合约事物进行验证,并确定验证合约集合,所述验证合约集合中包含所述满足触发条件的合约事物,每个所述合约事物均对应有验证节点通过个数,所述合约事物的验证节点通过个数为对所述合约事物验证通过的验证节点的个数;高优先级的验证节点将其对合约事物的验证合约集合发送给次高优先级的验证节点,以使得所述次高优先级的验证节点对所述合约事物进行验证,并对所述合约事物的验证合约集合进行编辑,并将编辑后的合约事物的验证合约集合发送下一级的验证节点进行验证,直至共识登记对应的所有验证节点对所述合约事物验证完成。

s50,接收共识等级对应的验证节点发送的验证合约集合。

其中,所述验证合约集合中包含所述满足触发条件的合约事物,每个所述合约事物均对应有验证节点通过个数,所述合约事物的验证节点通过个数为对所述合约事物验证通过的验证节点的个数。

s60,获取验证合约集合中验证节点通过个数超过预置数值的合约事物。

其中,所述预置数值是根据所述共识等级对应的验证节点个数确定的;共识等级越高,其内包含的验证节点的个数越多,预置数值设置的越大;共识等级越低,其内包含的验证节点的个数越少,相应的预置数值设置的越小。

s70,确认验证节点通过个数超过预置数值的合约事物的数据共识成功。

本发明提供的一种区块链系统的数据共识方法,首先按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中;待共识时间到来之后,根据待验证队列中在预置时间间隔内的合约事物确定共识等级;然后对待验证队列中在预置时间间隔内的合约事物打包成一个合约集合,并计算合约集合的哈希值,将哈希值和合约集合封装成一个区块结构;将区块结构广播给与共识等级对应的验证节点,以使得与共识等级对应的验证节点对区块结构内的合约事物进行验证;接收共识等级对应的验证节点发送的验证合约集合,获取验证合约集合中验证节点通过个数超过预置数值的合约事物,最后确认验证节点通过个数超过预置数值的合约事物的数据共识成功。相对于现有技术中数据共识需要所有验证节点参与相比,本发明根据待验证队列中在预置时间间隔内的合约事物确定共识等级,然后根据共识等级对应的验证节点对合约事物进行验证,由于共识等级是根据合约事物确定的,即本发明可以基于合约事务的重要程度进行验证,从而通过本发明可提高区块链系统数据共识的效率。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

在本发明提供的一实施例中,提供一种区块链系统的数据共识装置,该区块链系统的数据共识装置与上述实施例中区块链系统的数据共识方法一一对应。如图4所示,所述区块链系统中至少包含一个待验证队列,和多个验证节点,区块链系统的数据共识装置包括:推送模块10、确定模块20、封装模块30、广播模块40、接收模块50、获取模块60。各功能模块详细说明如下:

推送模块10,用于按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中;所述待验证队列中存储有多个等待共识的合约事物;

确定模块20,用于待共识时间到来之后,根据所述待验证队列中在所述预置时间间隔内的合约事物确定共识等级,每个所述共识等级对应有多个验证节点,不同的共识等级对应不同的验证节点;

封装模块30,用于对所述待验证队列中在所述预置时间间隔内的合约事物打包成一个合约集合,并计算所述合约集合的哈希值,将所述哈希值和所述合约集合封装成一个区块结构;

广播模块40,用于将所述区块结构广播给与所述共识等级对应的验证节点,以使得与所述共识等级对应的验证节点对所述区块结构内的合约事物进行验证;

接收模块50,用于接收所述共识等级对应的验证节点发送的验证合约集合,所述验证合约集合中包含所述满足触发条件的合约事物,每个所述合约事物均对应有验证节点通过个数,所述合约事物的验证节点通过个数为对所述合约事物验证通过的验证节点的个数;

获取模块60,用于获取所述验证合约集合中验证节点通过个数超过预置数值的合约事物,所述预置数值是根据所述共识等级对应的验证节点个数确定的;

所述确定模块20,还用于确认所述验证节点通过个数超过预置数值的合约事物的数据共识成功。

进一步的,所述推送模块10,包括:

遍历单元11,用于逐条遍历每个合约事物对应的状态机及触发条件;所述状态机中记录有第一阶段交易和第二阶段交易节点分别对应的交易状态;所述触发条件为所述第一阶段交易和所述第二阶段交易节点均交易成功;

推送单元12,用于将所述第一阶段交易和所述第二阶段交易节点均交易成功的合约事物推送到所述待验证队列中。

进一步的,所述确定模块20,还用于确定所述合约事物的类型,并根据所述合约事物的类型确定对应的待验证队列,每个所述待验证队列对应存储对应类型的合约事物;

所述推送模块10,具体用于按照预置时间间隔将满足触发条件的合约事物推送到与所述合约事物的类型对应的待验证队列中。

所述确定模块20,具体用于根据所述合约事物的用户类型级别、信息安全级别、数据类型级别确定共识等级。

进一步的,所述装置还包括:

验证模块70,用于根据所述验证节点的计算能力确定各验证节点的验证顺序;根据所述验证节点的验证顺序的高低依次对所述区块结构内的合约事物进行验证。

所述验证模块70,具体用于高优先级的验证节点对所述区块结构中的合约事物进行验证,并确定验证合约集合,所述验证合约集合中包含所述满足触发条件的合约事物,每个所述合约事物均对应有验证节点通过个数,所述合约事物的验证节点通过个数为对所述合约事物验证通过的验证节点的个数;高优先级的验证节点将其对合约事物的验证合约集合发送给次高优先级的验证节点,以使得所述次高优先级的验证节点对所述合约事物进行验证,并对所述合约事物的验证合约集合进行编辑,并将编辑后的合约事物的验证合约集合发送下一级的验证节点进行验证,直至共识登记对应的所有验证节点对所述合约事物验证完成。

关于区块链系统的数据共识装置的具体限定可以参见上文中对于区块链系统的数据共识方法的限定,在此不再赘述。上述区块链系统的数据共识装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种区块链系统的数据共识方法。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:

按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中;所述待验证队列中存储有多个等待共识的合约事物;

待共识时间到来之后,根据所述待验证队列中在所述预置时间间隔内的合约事物确定共识等级,每个所述共识等级对应有多个验证节点,不同的共识等级对应不同的验证节点;

对所述待验证队列中在所述预置时间间隔内的合约事物打包成一个合约集合,并计算所述合约集合的哈希值,将所述哈希值和所述合约集合封装成一个区块结构;

将所述区块结构广播给与所述共识等级对应的验证节点,以使得与所述共识等级对应的验证节点对所述区块结构内的合约事物进行验证;

接收所述共识等级对应的验证节点发送的验证合约集合,所述验证合约集合中包含所述满足触发条件的合约事物,每个所述合约事物均对应有验证节点通过个数,所述合约事物的验证节点通过个数为对所述合约事物验证通过的验证节点的个数;

获取所述验证合约集合中验证节点通过个数超过预置数值的合约事物,所述预置数值是根据所述共识等级对应的验证节点个数确定的;

确认所述验证节点通过个数超过预置数值的合约事物的数据共识成功。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

按照预置时间间隔将满足触发条件的合约事物推送到待验证队列中;所述待验证队列中存储有多个等待共识的合约事物;

待共识时间到来之后,根据所述待验证队列中在所述预置时间间隔内的合约事物确定共识等级,每个所述共识等级对应有多个验证节点,不同的共识等级对应不同的验证节点;

对所述待验证队列中在所述预置时间间隔内的合约事物打包成一个合约集合,并计算所述合约集合的哈希值,将所述哈希值和所述合约集合封装成一个区块结构;

将所述区块结构广播给与所述共识等级对应的验证节点,以使得与所述共识等级对应的验证节点对所述区块结构内的合约事物进行验证;

接收所述共识等级对应的验证节点发送的验证合约集合,所述验证合约集合中包含所述满足触发条件的合约事物,每个所述合约事物均对应有验证节点通过个数,所述合约事物的验证节点通过个数为对所述合约事物验证通过的验证节点的个数;

获取所述验证合约集合中验证节点通过个数超过预置数值的合约事物,所述预置数值是根据所述共识等级对应的验证节点个数确定的;

确认所述验证节点通过个数超过预置数值的合约事物的数据共识成功。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1