【技术实现步骤摘要】
区块生成方法及装置
[0001]本说明书实施例属于区块链
,尤其涉及一种区块生成方法及装置。
技术介绍
[0002]区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。用户可以通过区块链节点参与实现区块链的相关事务,例如,区块链系统中分别对应不同用户的多个区块链节点,可以基于同态加密、零知识证明等隐私技术针对某一节点的私有数据进行安全多方计算(Secure Multi
‑
Party Computation,SMPC)等。
[0003]现阶段的区块链节点在将待执行的交易打包进区块之前,通常会对其进行预执行并得到预执行读写集等结果,以便在将交易打包进区块之后,可以根据上述结果对区块中的交易进行分组执行。其中,有些交易的预执行过程或执行过程需要依赖自身所处区块的区块信息。
[0004]在相关技术中,通常在预执行完成之后的共识过程中将交易打包进区块(或称成块),此时预执行过程与成块过程是相互独立的两个过程。由于预执行需要耗费一定的时间,所以依赖正在打包区块的区块信息预执行的某些交易,在预执行完成后可能并未被打包至该区块。对此,若依赖这些交易当前所处区块的区块信息执行这些交易,将导致这部分交易的实际执行结果与其预执行结果不同,从而可能导致分组错误而引起区块链产生分叉。
技术实现思路
[0005]本专 ...
【技术保护点】
【技术特征摘要】
1.一种区块生成方法,应用于区块链网络中的第一节点,第一节点包含缓存进程和预执行进程,所述方法包括:所述预执行进程依赖正在打包的区块的区块信息预执行第一交易,并将预执行完毕的第一交易发送至所述缓存进程;所述缓存进程确定第一交易的预执行过程中依赖的所述区块信息,并确定当前时刻自身正在打包的当前区块的第一区块信息;所述缓存进程在所述区块信息为区别于第一区块信息的第二区块信息的情况下,触发所述预执行进程依赖第一区块信息重新预执行第一交易;所述缓存进程在所述区块信息为第一区块信息的情况下,将第一交易打包至所述当前区块中。2.根据权利要求1所述的方法,所述预执行进程依赖正在打包的区块的区块信息预执行第一交易,并将预执行完毕的第一交易发送至所述缓存进程,包括:所述预执行进程接收所述缓存进程发送的交易组和所述缓存进程正在打包的区块的区块信息,所述交易组中至少包含第一交易;所述预执行进程依赖接收到的所述区块信息预执行所述交易组中包括第一交易在内的至少部分交易,并将预执行完毕的所述至少部分交易发送至所述缓存进程。3.根据权利要求2所述的方法,所述预执行进程依赖接收到的所述区块信息预执行所述交易组中包括第一交易在内的至少部分交易,包括:所述预执行进程在所述交易组中还包含第二交易的情况下,依赖所述区块信息分别预执行第一交易和第二交易,并将预执行完毕的第一交易和第二交易发送至所述缓存进程。4.根据权利要求2所述的方法,所述缓存进程将第一交易打包至所述当前区块中,包括:所述缓存进程在所述当前区块的最大交易数量与已打包交易数量之差不小于所述交易组中所述至少部分交易的交易数量的情况下,将所述至少部分交易打包至所述当前区块,其中,所述已打包交易数量为当前时刻已打包至所述当前区块中的交易的数量;和/或;所述缓存进程在所述当前区块的最大交易数据量与已打包交易数据量之差不小于所述交易组中所述至少部分交易的数据量的情况下,将所述至少部分交易打包至所述当前区块,其中,所述已打包交易数据量为当前时刻已打包至所述当前区块中的交易的数据量。5.根据权利要求4所述的方法,在所述至少部分交易包括多个交易的情况下,所述缓存进程将所述至少部分交易打包至所述当前区块,包括:所述缓存进程按照所述多个交易的预执行顺序依次将各个交易打包至所述当前区块。6.根据权利要求1所述的方法,所述预执行进程依赖正在打包的区块的区块信息预执行第一交易,包括:所述预执行进程通过预设的应用程序编程接口调用正在打包的区块的区块信息,并依赖该区块信息预执行第一交易。7.根据权利要求1所述的方法,所述缓存进程确定第一交易的预执行过程中依赖的所述区块信息,包括:所述缓存进程接收所述预执行进程与第一交易关联发送的所述区块信息;或者,所述缓存进程根据自身维护的交易和预执行过程所依赖区块信息的对应关系,查找第
一交易对应的所述区块信息。8.根据权利要求1所述的方法,所述缓存进程触发所述预执行进程依赖第一区块信息重新预执行第一交易,包括:所述缓存进程将第一区块信息作为第一交易的上下文信息提供至所述预执行进程,以由所述预执行进程依赖第一区块信息重新预执行第一交易。9.根据权利要求1所述的方法,第一节点还包含计算进程,所述方法还包括:所述预执行进程将第一交易的预执行读写集和/或预执行结果发送至所述缓存进程;所述缓存进程将第一交易打包至所述当前区块中,包括:所述缓存进程触发所述计算进程执行第一交易,并获取所述计算进程返回的第一交易的执行读写集和/或执行结果;以及,在第一交易的所述预执行读写集与所述执行读写集相同;和...
【专利技术属性】
技术研发人员:王毅飞,
申请(专利权)人:蚂蚁区块链科技上海有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。