区块生成方法、装置、介质和计算设备与流程

文档序号:17996824发布日期:2019-06-22 01:18阅读:227来源:国知局
区块生成方法、装置、介质和计算设备与流程

本发明的实施方式涉及区块链技术领域,更具体地,本发明的实施方式涉及一种区块生成方法、装置、介质和计算设备。



背景技术:

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

在区块链系统中例如基于pbft共识协议生成区块的过程可以分为三个阶段,包括第一阶段——预准备(pre-prepare)、第二阶段——准备(prepare)、和第三阶段——确认(commit)。现有技术中通过串行的方式提交各个阶段的验证结果。其中,在第三阶段中要在确认交易落盘请求通过区块链系统基于共识协议的验证后,才进行数据落盘,然后基于该数据落盘生成新区块。



技术实现要素:

现有技术中生成区块的过成中上述三个阶段为串行执行,使得区块的生成速率受到一定的约束。

为此,非常需要一种改进的区块生成方法,以期能够通过改进区块生成的流程,来提高区块生成速率。

在本上下文中,本发明的实施方式期望提供一种改进的区块生成方法、装置、介质及计算设备。

在本发明实施方式的第一方面中,提供了一种区块生成方法。所述区块生成方法包括:第一节点接收交易信息,所述交易信息包括由客户端根据用户的交易操作而生成的交易数据,其中所述第一节点为区块链系统中的任意一个节点;在所述第一节点确定所述交易信息通过所述区块链系统基于共识协议的验证时,所述第一节点向所述区块链系统广播与所述交易信息对应的第一交易落盘请求,同时所述第一节点执行所述第一交易落盘请求对应的数据落盘操作;以及在所述第一节点确定所述第一交易落盘请求通过所述区块链系统基于所述共识协议的验证时,所述第一节点基于所述数据落盘操作生成新区块。

在本发明的一个实施例中,所述区块生成方法,还包括在所述第一节点确定所述第一交易落盘请求未通过所述区块链系统基于所述共识协议的验证时,所述第一节点对所述数据落盘操作中已落盘的数据进行回滚。

在本发明的一个实施例中,所述区块生成方法,还包括在所述第一节点等待所述区块链系统基于所述共识协议对所述第一交易落盘请求验证的结果的时长超过预设的超时时长时,所述第一节点对所述数据落盘操作中已落盘的数据进行回滚。

在本发明的一个实施例中,所述共识协议被设置为基于实用拜占庭容差算法而确定的协议。

在本发明的一个实施例中,在所述第一节点向所述区块链系统广播所述第一交易落盘请求之前,所述区块生成方法还包括:所述第一节点验证所述交易信息,并在验证通过后向所述区块链系统中的其他节点广播第一交易信息列表,所述第一交易信息列表包括所述交易信息及所述第一节点执行所述交易信息得到的第一执行结果;所述第一节点接收所述区块链系统中其他节点广播的第二交易信息列表;所述第二交易信息列表包括所述其他节点验证通过的所述交易信息及所述其他节点执行所述交易信息得到的第二执行结果;所述第一节点验证所述第二交易信息列表;以及当所述第一节点验证通过的所述第二交易信息列表的数量超过预定数量时,所述第一节点确定所述交易信息通过所述区块链系统基于所述共识协议的验证。

在本发明的一个实施例中,所述第一节点验证所述第二交易信息列表包括:所述第一节点验证所述第二交易信息列表中的所述交易信息,获得第一验证结果;在所述第一验证结果为验证通过时,验证所述第二执行结果与所述第一执行结果是否相同,获得第二验证结果;以及在所述第二验证结果为相同时,确定所述第二交易信息列表通过所述第一节点的验证。

在本发明的一个实施例中,在所述第一节点基于所述数据落盘操作生成新区块之前,所述区块生成方法还包括:所述第一节点接收所述区块链系统中其他节点广播的与所述交易信息对应的第二交易落盘请求;所述第一节点验证所述第二交易落盘请求与所述第一交易落盘请求是否相同;以及当所述第二交易落盘请求与所述第一交易落盘请求相同的数量超过预定数量时,所述第一节点确定所述第一交易落盘请求通过所述区块链系统基于所述共识协议的验证。

在本发明实施方式的第二方面中,提供了一种区块生成装置,设置于第一节点,所述第一节点为区块链系统中的任意一个节点。其中,所述区块生成装置包括交易接收模块、交易落盘模块、以及区块生成模块。交易接收模块用于接收交易信息,所述交易信息包括由客户端根据用户的交易操作而生成的交易数据。交易落盘模块用于在所述第一节点确定所述交易信息通过所述区块链系统基于共识协议的验证时,向所述区块链系统广播与所述交易信息对应的第一交易落盘请求,同时执行所述第一交易落盘请求对应的数据落盘操作。区块生成模块用于在所述第一节点确定所述第一交易落盘请求通过所述区块链系统基于所述共识协议的验证时,基于所述数据落盘操作生成新区块。

在本发明的一个实施例中,所述区块生成装置还包括回滚模块。所述回滚模块用于在所述第一节点确定所述第一交易落盘请求未通过所述区块链系统基于所述共识协议的验证时,对所述数据落盘操作中已落盘的数据进行回滚。

在本发明的一个实施例中,所述回滚模块还用于在所述第一节点等待所述区块链系统基于所述共识协议对所述第一交易落盘请求验证的结果的时长超过预设的超时时长时,对所述数据落盘操作中已落盘的数据进行回滚。

在本发明的一个实施例中,所述共识协议被设置为基于实用拜占庭容差算法而确定的协议。

在本发明的一个实施例中,所述区块生成装置还包括交易验证模块。所述交易验证模块用于在向所述区块链系统广播所述第一交易落盘请求之前执行:验证所述交易信息,并在验证通过后向所述区块链系统中的其他节点广播第一交易信息列表,所述第一交易信息列表包括所述交易信息及所述第一节点执行所述交易信息得到的第一执行结果;接收所述区块链系统中其他节点广播的第二交易信息列表,所述第二交易信息列表包括所述其他节点验证通过的所述交易信息及所述其他节点执行所述交易信息得到的第二执行结果;验证所述第二交易信息列表;以及当所述第一节点验证通过的所述第二交易信息列表的数量超过预定数量时,确定所述交易信息通过所述区块链系统基于所述共识协议的验证。

在本发明的一个实施例中,所述交易验证模块验证所述第二交易信息列表包括:验证所述第二交易信息列表中的所述交易信息,获得第一验证结果;在所述第一验证结果为验证通过时,验证所述第二执行结果与所述第一执行结果是否相同,获得第二验证结果;以及在所述第二验证结果为相同时,确定所述第二交易信息列表通过所述第一节点的验证。

在本发明的一个实施例中,所述区块生成装置还包括落盘请求验证模块。所述落盘请求验证模块用于在所述第一节点基于所述数据落盘操作生成新区块之前执行:接收所述区块链系统中其他节点广播的与所述交易信息对应的第二交易落盘请求;验证所述第二交易落盘请求与所述第一交易落盘请求是否相同;以及当所述第二交易落盘请求与所述第一交易落盘请求相同的数量超过预定数量时,确定所述第一交易落盘请求通过所述区块链系统基于所述共识协议的验证。

在本发明实施方式的第三方面,提供了一种计算机可读存储介质,其上存储有可执行指令,所述指令在被处理器执行时使处理器执行如上所述的区块生成方法。

在本发明实施方式的第四方面,提供了一种计算设备。所述计算设备包括存储有可执行指令的一个或多个存储器,以及一个或多个处理器。所述处理器执行所述可执行指令,用以实现如上所述的区块生成方法。

根据本发明实施方式的区块生成方法、装置、介质和计算设备,数据落盘操作可以与对第一交易落盘请求的验证并行执行,然后在获得区块链系统对第一交易落盘请求的验证结果时,根据验证结果确定是否生成新区块。其中,若第一交易落盘请求通过区块链系统基于共识协议的验证,则基于此前执行的数据落盘操作生成新区块。可见,根据本发明的实施例,在区块生成时无需像现有技术那样,唯有确定了第一交易落盘请求通过区块链系统的验证后才开始进行数据落盘。以此方式,根据本发明的实施例的方法、装置、介质和计算设备,可以显著提高了区块的生成速率,提高区块链系统的整体性能。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

图1示意性地示出了根据本发明实施方式的区块生成方法、装置、介质和计算设备的应用场景;

图2a示意性地示出了根据本发明实施例的区块生成方法的流程图;

图2b示意性地示出了根据本发明另一实施例的区块生成方法的流程图;

图3示意性地示出了根据本发明又一实施例的区块生成方法的流程图;

图4示意性地示出了根据本发明再一实施例的区块生成方法的流程图;

图5示意性地示出了根据本发明实施例的基于pbft共识协议生成区块的流程图;

图6示意性地示出了根据本发明实施例的区块生成装置的框图;

图7示意性地示出了根据本发明实施例的适用于实现区块生成方法的程序产品的示意图;以及

图8示意性示出了根据本发明实施例的适用于实现区块生成方法的计算设备的框图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

根据本发明的实施方式,提出了一种区块生成的方法、装置、介质和计算设备。

在本文中,需要理解的是,所涉及的术语解释如下:

pbft:是practicalbyzantinefaulttolerance的缩写,意为实用拜占庭容错算法。该算法是miguelcastro(卡斯特罗)和barbaraliskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。能够容纳将近1/3的错误节点误差。

此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。

下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。

发明概述

本发明人发现,现有技术中生成区块时,要在确定交易落盘请求通过区块链系统的验证后,才进行数据落盘,然后才能基于该数据落盘生成新区块。然而,发明人发现,可以在一个节点确定了交易信息通过区块链系统的验证后就进行数据落盘,然后在得到区块链系统对与该数据落盘对应的交易落盘请求的验证结果后,根据该验证结果确定是否生成新区块。这样在,保证区块生成的正确性的同时,还能够加快区块的生成速率。从而,数据落盘操作的执行可以不必等待对交易落盘请求的验证之后再执行,而是可以与对交易落盘请求的验证并行执行。其中,在获得对第一交易落盘请求的验证结果时,若第一交易落盘请求通过区块链系统基于共识协议的验证,则基于此前执行的数据落盘操作生成新区块;若第一交易落盘请求没有通过区块链系统基于共识协议的验证,则对此前执行的数据落盘操作中已落盘的数据进行回滚,这种情况下不生成新区块。以此方式,在对第一交易落盘请求的验证结果为通过的情况下,由于数据已经提前落盘,相比于现有技术,区块的生成耗时中减少了等待数据落盘的时间,因而提高了生成区块的速率,可以提高整个区块链系统的性能。

在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。

应用场景总览

首先参考图1。

图1示意性地示出了根据本发明实施方式的区块生成方法、装置、介质和计算设备的应用场景。

如图1所示,该应用场景可以包括区块链系统100以及一个或多个客户端101。客户端101可以通过网络(图中未示出)与区块链系统100通信。用户可以通过客户端101访问区块链系统100。

区块链系统100可以包括多个节点,例如图1所示的节点a、b、c、d。该多个节点可以相互通信。每个节点对应一个数据库,该多个节点可以形成一个分布在全球各地、能够协同运转的数据库存储系统。各节点享有同其他所有节点同样的权利与义务。各节点可以通过某种共识机制(例如,基于pbft算法而确定的共识协议)来确定某个节点是否可以接入该区块链系统100。任意一个节点在其对应的数据库中进行读写操作,其他节点会根据某种机制完成同步,从而实现在区块链系统100中所有节点对应的数据库中的数据完全一致。

客户端101可以通过各自对应的后台管理服务器与区块链系统100进行信息交互。

应该理解,图1示出的客户端的数目、以及区块链系统中的节点的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、以及任意数目的区块链系统的节点。

示例性方法

下面结合图1的应用场景,参考图2a~图5来描述根据本发明示例性实施方式的区块生成方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。

图2a示意性地示出了根据本发明实施例的区块生成方法的流程图。

如图2a所示,该区块生成方法可以包括操作s210~操作s230。

在操作s210,第一节点接收交易信息,该交易信息包括由客户端101根据用户的交易操作而生成的交易数据,其中第一节点为区块链系统100中的任意一个节点(例如,节点a、b、c、d中的任意一个)。

在操作s220,在第一节点确定该交易信息通过区块链系统100基于共识协议的验证时,第一节点向区块链系统100广播与该交易信息对应的第一交易落盘请求,同时第一节点执行第一交易落盘请求对应的数据落盘操作。该第一交易落盘请求例如可以用于请求区块链系统100基于共识协议对该交易信息、以及第一节点对该交易信息的执行结果等数据进行验证。该数据落盘操作可以是将该第一交易落盘请求中请求验证的数据进行落盘,具体而言例如可以将该交易信息以及第一节点对该交易信息的执行结果等存储到对应的数据库中。

在操作s230,在第一节点确定第一交易落盘请求通过区块链系统100基于共识协议的验证时,第一节点基于该数据落盘操作生成新区块。在第一节点确定第一交易落盘请求通过区块链系统100基于共识协议的验证时,说明该数据落盘操作中已落盘的数据有效,此时可以对已落盘的数据进行封装(例如,基于共识协议形成区块头、区块体等),从而生成新区块。

根据本发明的实施例,区块链系统100的共识协议可以被设置为基于实用拜占庭容差算法pbft而确定的协议(以下简称pbft共识协议)。

图2b示意性地示出了根据本发明另一实施例的区块生成方法的流程图。

如图2b所示,该区块生成方法包括操作s210和操作s220以及操作s231,并根据操作s231的判断结果进一步选择执行操作s232或者操作s233。

其中,在操作s231,第一节点确定第一交易落盘请求是否通过区块链系统100基于共识协议的验证。若是,则执行操作s232;若否,则可以执行操作s233。根据本发明的另一些实施例,还设置有等待超时判断,即在第一节点等待区块链系统100基于共识协议对第一交易落盘请求验证的结果的时长超过预设的超时时长时,也执行操作s233。

在操作s232,在第一节点确定第一交易落盘请求通过区块链系统100基于共识协议的验证时,基于该数据落盘操作生成新区块。

在操作s233,在第一节点确定第一交易落盘请求未通过区块链系统100基于共识协议的验证时,第一节点对该数据落盘操作中已落盘的数据进行回滚;或者,在第一节点等待区块链系统100基于共识协议对第一交易落盘请求验证的结果的时长超过预设的超时时长时,第一节点对该数据落盘操作中已落盘的数据进行回滚。例如,预设的超时时长为5s,当超过5s第一节点都没能确定出第一交易落盘请求是否通过区块链系统100的验证,此时第一节点就可以对已落盘的数据进行回滚。

在一个实施例中,当该数据落盘操作例如是将该交易信息以及第一节点对该交易信息的执行结果等存储到对应的数据库时,对已落盘的数据进行回滚,可以是将已存储到数据库中的数据从数据库中清除。该清除例如可以是从数据库中删除已落盘的数据,或者也可以是对已落盘的数据作特定的记录(例如,记录进行回滚的原因是等待超时还是第一交易落盘请求未验证通过),以指示第一节点不能使用该已落盘的数据来生成区块。

可见,根据本发明实施方式的区块生成方法,数据落盘操作可以与第一交易落盘请求的验证并行执行,然后在获得对第一交易落盘请求的验证结果时,根据验证结果确定是否基于此前执行的数据落盘操作来生成新区块。其中,若第一交易落盘请求通过区块链系统100基于共识协议的验证则基于此前执行的数据落盘操作生成新区块。相比于现有技术,本发明实施例的区块生成方法区块的生成耗时中减少了在确定第一交易落盘请求通过区块链系统100基于共识协议的验证后等待数据落盘的时间,从而提高了生成区块的速率。

另外若确定第一交易落盘请求未通过区块链系统100基于共识协议的验证,或者等待验证的时长超过预设的超时时长时,根据本发明实施例的方法会对已落盘的数据进行回滚。对于数据回滚的节点,将不生成新区块,而是会同步其他节点生成的新区块,从而实现在区块链系统100中所有节点对应的数据库中的数据完全一致,在区块链系统100一轮的区块生成结束后,所有节点的块高一致。由此可见,本发明实施例的方法,可以提高新区块的生成速率,进而提高区块链系统100的整体性能。

图3示意性地示出了根据本发明又一实施例的区块生成方法的流程图。

如图3所示,根据本发明实施例的区块生成方法,在操作s210之后、及操作s220之前,可以基于共识协议对接收的交易信息进行验证,具体过程可以包括操作s310~操作s340。

首先在操作s310,第一节点验证该交易信息,并在验证通过后向区块链系统100中的其他节点广播第一交易信息列表,第一交易信息列表包括该交易信息及第一节点执行该交易信息得到的第一执行结果。

然后在操作s320,第一节点接收区块链系统100中其他节点广播的第二交易信息列表。第二交易信息列表包括其他节点验证通过的该交易信息及其他节点执行该交易信息得到的第二执行结果。

接着在操作s330,第一节点验证第二交易信息列表。根据本发明的实施例,操作s330具体可以包括:第一节点验证第二交易信息列表中的该交易信息,获得第一验证结果;在第一验证结果为验证通过时,验证第二执行结果与第一执行结果是否相同,获得第二验证结果;以及在第二验证结果为相同时,确定第二交易信息列表通过第一节点的验证。

此后在操作s340,当第一节点验证通过的第二交易信息列表的数量超过预定数量时,第一节点确定该交易信息通过区块链系统100基于共识协议的验证。该预定数量根据区块链系统100的共识协议来确定。例如,在本发明实施例采用的pbft共识协议中,该预定数量可以被设置为超过区块链系统100当前节点总数量的2/3以上。

以下以交易信息为用于指示区块链系统100执行5+3的操作为例,对本发明实施例进行示例性说明如下。

在操作s310中第一节点接收到交易信息时,第一节点可以对数字5和3本身进行检查,验证5和3数字本身是否有被伪造。当确定5和3数字本身没有伪造时,第一节点可以执行5+3操作,得到执行结果(即,第一执行结果,例如为5+3=8),然后第一节点可以将交易信息以及第一执行结果封装形成第一交易信息列表,并将该第一交易信息列表向区块链系统100进行广播。需要说明的是,若第一节点数字5和3本身进行检查后发现数字5和3本身存在伪造,则第一节点确定交易信息被伪造。在这种情况下,该第一节点将不执行该交易信息。

区块链系统100中其他节点也会执行操作s310。即,在接收到交易信息时,对交易信息本身进行检查,并在检查通过后执行5+3操作,得到相应的执行结果(即,第二执行结果),然后向区块链系统100进行广播该第二交易信息列表。该第二交易信息列表包括了交易信息和第二执行结果。

然后,在操作s320中区块链系统100中每个节点会接收到其他节点广播的交易列表信息。具体地,对于第一节点,可以接收到上述第二交易信息列表。

之后,在操作s330中,区块链系统100中每个节点会对接收到交易列表信息进行验证。以第一节点为例,该第一节点可以首先对第二交易信息列表中的交易信息进行验证,例如检测其中的数字5和3本身,确保5和3数字本身没有伪造。当验证通过后,该第一节点验证第二交易信息列表中的第二执行结果。例如,第一节点可以验证其他节点的第二执行结果是否也是5+3=8;如果是,则说明存在其他节点与第一节点接收到的交易信息以及执行结果相同,此时第一节点可以确定第二交易信息列表通过第一节点的验证。

与此同时,第一节点可以统计通过自己验证的第二交易信息列表的个数。然后在操作s340中当第一节点确定有超过预定数量的第二交易信息列表通过验证时,第一节点可以确定在整个区块链系统100中有超过预定数量的其他节点也接收到了与自己相同的交易信息,并且这些超过预定数量的其他节点也得到了与自己相同执行结果。此时,第一节点可以确定交易信息通过区块链系统100的验证。

根据本发明实施例,在此之后第一节点可以向整个区块链系统100广播交易落盘请求,同时进行数据落盘操作。然后等区块链系统100对交易落盘请求验证通过后,就可以快速在已落盘的数据的基础上生成新区块。

图4示意性地示出了根据本发明再一实施例的区块生成方法的流程图。

如图4所示,根据本发明实施例的区块生成方法,在操作s220之后、及操作s230之前,可以基于共识协议对第一交易落盘请求进行验证,具体的验证过程可以包括操作s410~操作s430。

在操作s410,第一节点接收区块链系统100中其他节点广播的与该交易信息对应的第二交易落盘请求。

然后在操作s420,第一节点验证第二交易落盘请求与第一交易落盘请求是否相同。例如,验证第二交易落盘请求中要落盘的数据与第一交易落盘请求中的数据是否相同。

接着在操作s430,当第二交易落盘请求与第一交易落盘请求相同的数量超过预定数量时,第一节点确定第一交易落盘请求通过区块链系统100基于共识协议的验证。类似的,该预定数量也是根据区块链系统100的共识协议来确定。例如,在本发明实施例采用的pbft共识协议中,该预定数量被设置为超过区块链系统100当前节点总数量的2/3以上。

继续以交易信息为用于指示区块链系统100执行5+3的操作为例进行说明。其他节点会执行与第一节点相同的操作。即在第一节点向外发出交易落盘请求(即,第一交易落盘请求)时,其他节点也会发出交易落盘请求(即,第二交易落盘请求)。因此,每个节点都会接收到区块链系统100中其他节点广播的交易落盘请求,即,在操作s410中第一节点会接收到其他节点广播的交易落盘请求(即,第二交易落盘请求)。对于第一节点,在接收到该第二交易落盘请求后,在操作s420中可以首先对数字5和3本身进行检查,确保5和3数字本身没有伪造,然后统计5+3结果为8的第二交易落盘请求的数量,同理当第二交易落盘请求与第一交易落盘请求相同的数量超过区块链系统100当前总节点数量的2/3时,第一节点可以确定在整个区块链系统100中有超过2/3的其他节点要落盘的数据与自己相同,因此,第一节点可以确定第一交易落盘请求中的数据可信赖,从而在操作s430中可以确定第一交易落盘请求通过区块链系统100基于共识协议的验证。此后,第一节点就可以在操作s230中基于已落盘的数据生成新区块。

图5示意性地示出了根据本发明实施例的基于pbft共识协议生成区块的流程图。

以下结合图1的应用场景,对本发明实施例的区块生成方法进行示例性说明。假设当前区块链系统100中所有节点的块高block_height为10。因为是新一轮区块共识所以所有节点视图view为1。区块链系统100接收到来自客户端101的该交易信息,然后根据pbft共识协议,执行该交易信息并记录在区块链系统100的新区块中。其中,新区块的生成过程可以简述如下。

根据pbft共识协议,每个节点的区块生成可以分为三个阶段,例如如图5所示的处理第一阶段、处理第二阶段和处理第三阶段。以第一节点为节点a为例进行说明,区块链系统100中的其他节点b、c、d执行与节点a相同的操作逻辑。

在处理第一阶段,节点a接收到来自客户端101的该交易信息(操作s210)后,节点a先自己验证该交易信息是否正确。例如,节点a对验证获得的交易信息是否被篡改等。一种情况下,当验证不通过时,节点a结束操作不再继续执行,即节点a在本轮不生成新区块,待其他节点生成新区块后通过同步机制进行数据同步。另一种情况下,当验证通过时,节点a可以执行交易信息,得到第一执行结果。然后,节点a向区块链系统100广播第一交易信息列表(操作s310),然后进入处理第二阶段。其中该第一交易信息列表包括该交易信息及第一节点执行该交易信息得到的第一执行结果。

在处理第二阶段中,首先节点a结合区块链系统100中其他节点对该交易信息的验证结果,来确定该交易信息是否通过区块链系统100的验证。具体地,节点a会接收到区块链系统100中其他节点广播的第二交易信息列表,然后执行前述的操作s320~操作s340,来确定该交易信息是否通过区块链系统100的验证。当验证不通过时节点a结束操作不再继续执行,即节点a在本轮不生成新区块,待其他节点生成新区块后通过同步机制进行数据同步。当验证通过时,即节点a确定该交易信息通过区块链系统100的验证时,节点a可以向全网广播第一交易落盘请求,同时执行数据落盘操作(操作s220),然后在处理第二阶段中节点a一方面执行数据落盘操作,一方面等待处理第三阶段对该第一交易落盘请求的验证结果。

在处理第三阶段,节点a会接收区块链系统100中节点b、或c、或d广播的第二交易落盘请求。节点a执行如上的操作s420~操作s430,来实现基于pbft共识协议验证第一交易落盘请求。然后将验证结果通知给处理第二阶段中等待验证结果的线程。

接着节点a继续处理第二阶段的后半程,即节点a根据处理第三阶段的验证结果确定是否基于该数据落盘操作来生成新区块。具体地,在节点a确定第一交易落盘请求通过区块链系统100的验证时,节点a确认该数据落盘操作有效,可以基于该数据落盘操作生成新区块(操作s232)。或者,在节点a确定第一交易落盘请求未通过区块链系统100的验证时,节点a对已落盘的数据进行回滚,这样节点a不生成第10个区块,而是指向第9个区块(操作s233)。再或者,在节点a等待区块链系统100对第一交易落盘请求验证的结果的时长超过预设的超时时长时,节点a对已落盘的数据进行回滚,这样节点a不生成第10个区块,而是指向第9个区块(操作s233)。

以此方式,在本实施例中,在基于pbft共识协议生成区块时,把现有技术中处理第三阶段的交易落盘请求与数据落盘操作的串行处理变更为并行处理。更为具体的,将数据落盘操作提前至处理处理第二阶段。以此方式,提高了基于pbft共识协议生成区块的效率。

示例性装置

在介绍了本发明示例性实施方式的方法之后,接下来,参考图6对本发明示例性实施方式的区块生成装置进行介绍。

图6示意性地示出了根据本发明实施例的区块生成装置600的框图。

如图6所示,该区块生成装置600包括交易接收模块610、交易落盘模块620、以及区块生成模块630。该区块生成装置600可以设置于第一节点,第一节点为区块链系统100中的任意一个节点。

交易接收模块610用于接收交易信息,该交易信息包括由客户端101根据用户的交易操作而生成的交易数据(操作s210)。

交易落盘模块620用于在第一节点确定该交易信息通过区块链系统100基于共识协议的验证时,向区块链系统100广播与该交易信息对应的第一交易落盘请求,同时执行第一交易落盘请求对应的数据落盘操作(操作s220)。在本发明的一个实施例中,共识协议被设置为基于实用拜占庭容差算法而确定的协议。

区块生成模块630用于在第一节点确定第一交易落盘请求通过区块链系统100基于共识协议的验证时,基于该数据落盘操作生成新区块(操作s230)。

在本发明的一个实施例中,区块生成装置600还包括回滚模块640。回滚模块640用于在第一节点确定第一交易落盘请求未通过区块链系统100基于共识协议的验证时,对该数据落盘操作中已落盘的数据进行回滚(操作s233)。

在本发明的一个实施例中,回滚模块640还用于在第一节点等待区块链系统100基于共识协议对第一交易落盘请求验证的结果的时长超过预设的超时时长时,对该数据落盘操作中已落盘的数据进行回滚(操作s233)。

在本发明的一个实施例中,区块生成装置600还包括交易验证模块650。交易验证模块650用于在向区块链系统100广播第一交易落盘请求之前基于共识协议验证交易信息,具体包括:第一节点自己验证该交易信息,并在验证通过后向区块链系统100中的其他节点广播第一交易信息列表,第一交易信息列表包括该交易信息及第一节点执行该交易信息得到的第一执行结果(操作s310);接收区块链系统100中其他节点广播的第二交易信息列表,第二交易信息列表包括其他节点验证通过的该交易信息及其他节点执行该交易信息得到的第二执行结果(操作s320);验证第二交易信息列表(操作s330);以及当第一节点验证通过的第二交易信息列表的数量超过预定数量时,确定该交易信息通过区块链系统100基于共识协议的验证(操作s340)。

在本发明的一个实施例中,交易验证模块650验证第二交易信息列表包括:验证第二交易信息列表中的该交易信息,获得第一验证结果;在第一验证结果为验证通过时,验证第二执行结果与第一执行结果是否相同,获得第二验证结果;以及在第二验证结果为相同时,确定第二交易信息列表通过第一节点的验证。

在本发明的一个实施例中,区块生成装置600还包括落盘请求验证模块660。落盘请求验证模块660用于在第一节点基于该数据落盘操作生成新区块之前验证第一交易落盘请求,具体包括:接收区块链系统100中其他节点广播的与该交易信息对应的第二交易落盘请求(操作s410);验证第二交易落盘请求与第一交易落盘请求是否相同(操作s420);以及当第二交易落盘请求与第一交易落盘请求相同的数量超过预定数量时,确定第一交易落盘请求通过区块链系统100基于共识协议的验证(操作s430)。

该区块生成装置600可以用于执行参考图2a~图5所描述的区块生成方法,使得数据落盘操作可以与对第一交易落盘请求的验证并行执行,然后在获得对第一交易落盘请求的验证结果时,根据验证结果确定是否基于此前执行的数据落盘操作来生成新区块。以此方式,可以显著提高例如基于pbft共识协议生成区块的速率,从而提高区块链系统100的整体性能。

示例性介质

在介绍了本发明示例性实施方式的方法和装置之后,接下来,参考图7对本发明示例性实施方式的适用于实现区块生成方法的介质进行说明。

根据本发明的实施例,还提供了一种计算机可读存储介质,其上存储有可执行指令,指令在被处理器执行时使处理器执行根据本发明实施例的区块生成方法。

在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算设备上运行时,程序代码用于使计算设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的区块生成方法的操作,例如,计算设备可以执行如图2a中所示的操作s210,第一节点接收交易信息,该交易信息包括由客户端101根据用户的交易操作而生成的交易数据,其中第一节点为区块链系统100中的任意一个节点;操作s220,在第一节点确定该交易信息通过区块链系统100基于共识协议的验证时,第一节点向区块链系统100广播与该交易信息对应的第一交易落盘请求,同时第一节点执行第一交易落盘请求对应的数据落盘操作;以及操作s230,在第一节点确定第一交易落盘请求通过区块链系统100基于共识协议的验证时,第一节点基于该数据落盘操作生成新区块。

程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

如图7所示,描述了根据本发明实施例的适用于实现区块生成方法的程序产品700,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在计算设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言——诸如java,c++等,还包括常规的过程式程序设计语言——诸如“c”,语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)一连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

示例性计算设备

在介绍了本发明示例性实施方式的方法、装置和介质之后,接下来,参考图8本发明示例性实施方式的适用于实现区块生成方法的计算设备进行说明。

根据本发明的实施例,还提供了一种计算设备。计算设备包括存储有可执行指令的一个或多个存储器,以及一个或多个处理器。处理器执行可执行指令,用以实现根据本发明实施例的区块生成方法。

本发明实施例还提供了一种计算设备。所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

在一些可能的实施方式中,根据本发明的计算设备可以至少包括至少一个处理单元、以及至少一个存储单元。其中,存储单元存储有程序代码,当程序代码被处理单元执行时,使得处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的区块生成方法的操作,例如,处理单元可以执行如图2a中所示的操作s210,第一节点接收交易信息,该交易信息包括由客户端101根据用户的交易操作而生成的交易数据,其中第一节点为区块链系统100中的任意一个节点;操作s220,在第一节点确定该交易信息通过区块链系统100基于共识协议的验证时,第一节点向区块链系统100广播与该交易信息对应的第一交易落盘请求,同时第一节点执行第一交易落盘请求对应的数据落盘操作;以及操作s230,在第一节点确定第一交易落盘请求通过区块链系统100共识协议的验证时,第一节点基于该数据落盘操作生成新区块。

下面参照图8来描述根据本发明的这种实施方式的适用于实现区块生成方法的计算设备800。如图8所示的计算设备800仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图8所示,计算设备800以通用计算设备的形式表现。计算设备80的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830。

总线830包括数据总线、控制总线和地址总线。

存储单元820可以包括易失性存储器,例如随机存取存储器(ram)821和/或高速缓存存储器822,还可以进一步包括只读存储器(rom)823。

存储单元820还可以包括具有一组(至少一个)程序模块824的程序/实用工具825,这样的程序模块824包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

计算设备800也可以与一个或多个外部设备840(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(i/o)接口850进行。并且,计算设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与计算设备800的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

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