区块生成方法及装置制造方法及图纸

技术编号:37746130 阅读:10 留言:0更新日期:2023-06-05 23:32
本说明书提供一种区块生成方法及装置。所述方法应用于区块链网络中的第一节点,第一节点包含缓存进程和预执行进程,包括:所述预执行进程依赖正在打包的区块的区块信息预执行第一交易,并将预执行完毕的第一交易发送至所述缓存进程;所述缓存进程确定第一交易的预执行过程中依赖的所述区块信息,并确定当前时刻自身正在打包的当前区块的第一区块信息;所述缓存进程在所述区块信息为区别于第一区块信息的第二区块信息的情况下,触发所述预执行进程依赖第一区块信息重新预执行第一交易;所述缓存进程在所述区块信息为第一区块信息的情况下,将第一交易打包至所述当前区块中。将第一交易打包至所述当前区块中。将第一交易打包至所述当前区块中。

【技术实现步骤摘要】
区块生成方法及装置


[0001]本说明书实施例属于区块链
,尤其涉及一种区块生成方法及装置。

技术介绍

[0002]区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。用户可以通过区块链节点参与实现区块链的相关事务,例如,区块链系统中分别对应不同用户的多个区块链节点,可以基于同态加密、零知识证明等隐私技术针对某一节点的私有数据进行安全多方计算(Secure Multi

Party Computation,SMPC)等。
[0003]现阶段的区块链节点在将待执行的交易打包进区块之前,通常会对其进行预执行并得到预执行读写集等结果,以便在将交易打包进区块之后,可以根据上述结果对区块中的交易进行分组执行。其中,有些交易的预执行过程或执行过程需要依赖自身所处区块的区块信息。
[0004]在相关技术中,通常在预执行完成之后的共识过程中将交易打包进区块(或称成块),此时预执行过程与成块过程是相互独立的两个过程。由于预执行需要耗费一定的时间,所以依赖正在打包区块的区块信息预执行的某些交易,在预执行完成后可能并未被打包至该区块。对此,若依赖这些交易当前所处区块的区块信息执行这些交易,将导致这部分交易的实际执行结果与其预执行结果不同,从而可能导致分组错误而引起区块链产生分叉。

技术实现思路

[0005]本专利技术的目的在于提供一种区块生成方法、节点和区块链系统。
[0006]第一方面,提供了一种区块生成方法,应用于区块链网络中的第一节点,第一节点包含缓存进程和预执行进程,所述方法包括:
[0007]所述预执行进程依赖正在打包的区块的区块信息预执行第一交易,并将预执行完毕的第一交易发送至所述缓存进程;
[0008]所述缓存进程确定第一交易的预执行过程中依赖的所述区块信息,并确定当前时刻自身正在打包的当前区块的第一区块信息;
[0009]所述缓存进程在所述区块信息为第一区块信息的情况下,将第一交易打包至所述当前区块中;
[0010]所述缓存进程在所述区块信息为区别于第一区块信息的第二区块信息的情况下,触发所述预执行进程依赖第一区块信息重新预执行第一交易。
[0011]第二方面,提供了另一种区块生成方法,应用于区块链网络中的第一节点,第一节点包含缓存进程和预执行进程,所述方法包括:
[0012]所述预执行进程依赖正在打包的区块的区块信息预执行交易组中的至少部分交
易,并将预执行完毕的所述至少部分交易发送至所述缓存进程;
[0013]所述缓存进程确定所述至少部分交易的预执行过程中依赖的所述区块信息,并确定当前时刻自身正在打包的当前区块的第一区块信息;
[0014]所述缓存进程在所述区块信息为第一区块信息的情况下,将所述至少部分交易打包至所述当前区块中;
[0015]所述缓存进程在所述区块信息为区别于第一区块信息的第二区块信息的情况下,触发所述预执行进程依赖第一区块信息重新预执行所述至少部分交易。
[0016]第三方面,提供了一种区块生成装置,应用于区块链网络中的第一节点,第一节点包含缓存进程和预执行进程,所述装置包括:
[0017]预执行单元,用于使所述预执行进程依赖正在打包的区块的区块信息预执行第一交易,并将预执行完毕的第一交易发送至所述缓存进程;
[0018]信息确定单元,用于使所述缓存进程确定第一交易的预执行过程中依赖的所述区块信息,并确定当前时刻自身正在打包的当前区块的第一区块信息;
[0019]交易打包单元,用于使所述缓存进程在所述区块信息为第一区块信息的情况下,将第一交易打包至所述当前区块中;
[0020]重新预执行单元,用于使所述缓存进程在所述区块信息为区别于第一区块信息的第二区块信息的情况下,触发所述预执行进程依赖第一区块信息重新预执行第一交易。
[0021]第四方面,提供了另一种区块生成装置,应用于区块链网络中的第一节点,第一节点包含缓存进程和预执行进程,所述装置包括:
[0022]预执行单元,用于使所述预执行进程依赖正在打包的区块的区块信息预执行交易组中的至少部分交易,并将预执行完毕的所述至少部分交易发送至所述缓存进程;
[0023]信息确定单元,用于使所述缓存进程确定所述至少部分交易的预执行过程中依赖的所述区块信息,并确定当前时刻自身正在打包的当前区块的第一区块信息;
[0024]交易打包单元,用于使所述缓存进程在所述区块信息为第一区块信息的情况下,将所述至少部分交易打包至所述当前区块中;
[0025]重新预执行单元,用于使所述缓存进程在所述区块信息为区别于第一区块信息的第二区块信息的情况下,触发所述预执行进程依赖第一区块信息重新预执行所述至少部分交易。
[0026]根据本说明书一个或多个实施例的第四方面,提出了一种电子设备,包括:
[0027]处理器;
[0028]用于存储处理器可执行指令的存储器;
[0029]其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面中任一项所述的方法。
[0030]根据本说明书一个或多个实施例的第五方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面中任一项所述方法的步骤。
[0031]通过上述实施例,第一节点中的预执行进程可以依赖正在打包的区块的区块信息预执行第一交易,并将预执行完毕的第一交易发送至缓存进程。接收到第一交易的缓存进程可以获取该交易的执行过程中依赖的所述区块信息,并确定当前时刻自身正在打包的当
前区块的第一区块信息;然后判断所述区块信息和第一区块信息是否相同为同一信息:若二者为同一信息,则将第一交易打包至所述当前区块中;否则触发预执行进程依赖第一区块信息重新预执行第一交易。
[0032]可见,本方案将交易的成块过程前置,即将成块过程与预执行过程合并,使得任一交易的成块情况可以反馈影响该交易的预执行过程。由于第一交易的预执行过程依赖所述区块信息,而所述缓存进程当前时刻正在打包当前区块,所以若所述区块信息为区别于第一区块信息的第二区块信息,即表明第一交易的预执行过程并非依赖当前区块的第一区块信息,此时若强行将第一交易打包至当前区块,在该区块通过共识后节点依赖该区块的区块信息(即第一区块信息)实际执行该交易得到的执行结果将与其预执行结果不同,从而可能引起区块链分叉。反之,若所述区块信息为当前区块的第一区块信息,即表明第一交易的预执行过程是依赖当前区块的第一区块信息完成的,此时将第一交易打包至当前区块,能够确保在该区块通过共识后节点可以依赖第一区块信息实际执行第一交易,从而得到与预执行结果相同的执行结果,能够有效避免区块链分叉。
附图说明
[0033]为了更清楚地说明本说明书实施例的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块生成方法,应用于区块链网络中的第一节点,第一节点包含缓存进程和预执行进程,所述方法包括:所述预执行进程依赖正在打包的区块的区块信息预执行第一交易,并将预执行完毕的第一交易发送至所述缓存进程;所述缓存进程确定第一交易的预执行过程中依赖的所述区块信息,并确定当前时刻自身正在打包的当前区块的第一区块信息;所述缓存进程在所述区块信息为区别于第一区块信息的第二区块信息的情况下,触发所述预执行进程依赖第一区块信息重新预执行第一交易;所述缓存进程在所述区块信息为第一区块信息的情况下,将第一交易打包至所述当前区块中。2.根据权利要求1所述的方法,所述预执行进程依赖正在打包的区块的区块信息预执行第一交易,并将预执行完毕的第一交易发送至所述缓存进程,包括:所述预执行进程接收所述缓存进程发送的交易组和所述缓存进程正在打包的区块的区块信息,所述交易组中至少包含第一交易;所述预执行进程依赖接收到的所述区块信息预执行所述交易组中包括第一交易在内的至少部分交易,并将预执行完毕的所述至少部分交易发送至所述缓存进程。3.根据权利要求2所述的方法,所述预执行进程依赖接收到的所述区块信息预执行所述交易组中包括第一交易在内的至少部分交易,包括:所述预执行进程在所述交易组中还包含第二交易的情况下,依赖所述区块信息分别预执行第一交易和第二交易,并将预执行完毕的第一交易和第二交易发送至所述缓存进程。4.根据权利要求2所述的方法,所述缓存进程将第一交易打包至所述当前区块中,包括:所述缓存进程在所述当前区块的最大交易数量与已打包交易数量之差不小于所述交易组中所述至少部分交易的交易数量的情况下,将所述至少部分交易打包至所述当前区块,其中,所述已打包交易数量为当前时刻已打包至所述当前区块中的交易的数量;和/或;所述缓存进程在所述当前区块的最大交易数据量与已打包交易数据量之差不小于所述交易组中所述至少部分交易的数据量的情况下,将所述至少部分交易打包至所述当前区块,其中,所述已打包交易数据量为当前时刻已打包至所述当前区块中的交易的数据量。5.根据权利要求4所述的方法,在所述至少部分交易包括多个交易的情况下,所述缓存进程将所述至少部分交易打包至所述当前区块,包括:所述缓存进程按照所述多个交易的预执行顺序依次将各个交易打包至所述当前区块。6.根据权利要求1所述的方法,所述预执行进程依赖正在打包的区块的区块信息预执行第一交易,包括:所述预执行进程通过预设的应用程序编程接口调用正在打包的区块的区块信息,并依赖该区块信息预执行第一交易。7.根据权利要求1所述的方法,所述缓存进程确定第一交易的预执行过程中依赖的所述区块信息,包括:所述缓存进程接收所述预执行进程与第一交易关联发送的所述区块信息;或者,所述缓存进程根据自身维护的交易和预执行过程所依赖区块信息的对应关系,查找第
一交易对应的所述区块信息。8.根据权利要求1所述的方法,所述缓存进程触发所述预执行进程依赖第一区块信息重新预执行第一交易,包括:所述缓存进程将第一区块信息作为第一交易的上下文信息提供至所述预执行进程,以由所述预执行进程依赖第一区块信息重新预执行第一交易。9.根据权利要求1所述的方法,第一节点还包含计算进程,所述方法还包括:所述预执行进程将第一交易的预执行读写集和/或预执行结果发送至所述缓存进程;所述缓存进程将第一交易打包至所述当前区块中,包括:所述缓存进程触发所述计算进程执行第一交易,并获取所述计算进程返回的第一交易的执行读写集和/或执行结果;以及,在第一交易的所述预执行读写集与所述执行读写集相同;和...

【专利技术属性】
技术研发人员:王毅飞
申请(专利权)人:蚂蚁区块链科技上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1