区块链中的交易分组方法和区块链节点技术

技术编号:38011681 阅读:12 留言:0更新日期:2023-06-30 10:32
一种区块链中的交易分组方法和区块链节点,所述方法包括:从待分组的多个交易中获取多个第一交易,所述多个第一交易调用相同的合约;确定各个所述第一交易将要访问的所述合约的状态变量对应的标识集合,所述标识集合中包括所述状态变量在合约执行时的变量标识,所述变量标识用于确定所述状态变量在状态数据库中的键;根据各个所述第一交易的标识集合对所述多个第一交易进行分组。述多个第一交易进行分组。述多个第一交易进行分组。

【技术实现步骤摘要】
区块链中的交易分组方法和区块链节点


[0001]本说明书实施例属于区块链
,尤其涉及一种区块链中的交易分组方法和区块链节点。

技术介绍

[0002]区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。

技术实现思路

[0003]本专利技术的目的在于提供一种区块链中的交易分组方案,以提高区块链中的交易分组的性能。
[0004]本说明书第一方面提供一种区块链中的交易分组方法,由区块链节点执行,包括:
[0005]从待分组的多个交易中获取多个第一交易,所述多个第一交易调用相同的合约;
[0006]确定各个所述第一交易将要访问的所述合约的状态变量对应的标识集合,所述标识集合中包括所述状态变量在合约执行时的变量标识,所述变量标识用于确定所述状态变量在状态数据库中的键;
[0007]根据各个所述第一交易的标识集合对所述多个第一交易进行分组。
[0008]本说明书第二方面提供一种区块链节点,包括:
[0009]获取单元,用于从待分组的多个交易中获取多个第一交易,所述多个第一交易调用相同的合约;
[0010]确定单元,用于确定各个所述第一交易将要访问的所述合约的状态变量对应的标识集合,所述标识集合中包括所述状态变量在合约执行时的变量标识,所述变量标识用于确定所述状态变量在状态数据库中的键;
[0011]分组单元,用于根据各个所述第一交易的标识集合对所述多个第一交易进行分组。
[0012]本说明书第三方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面所述的方法。
[0013]本说明书第四方面提供一种区块链节点,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
[0014]在本说明书实施例提供的方案中,对于调用相同合约的多个交易,通过确定各个交易将要访问的状态变量在合约执行中的标识,从而根据各个交易请求访问的状态变量的标识对该多个交易进行分组。如此,减少了交易分组的计算量和占用的存储资源,提高了交易分组的精细程度,进一步提高了交易执行的并行程度。
附图说明
[0015]为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0016]图1是一实施例中部署智能合约的示意图;
[0017]图2是一实施例中调用智能合约的示意图;
[0018]图3是一实施例中区块存储结构的示意图;
[0019]图4是一实施例中区块存储结构的示意图;
[0020]图5是一实施例中交易处理过程中涉及的EVM虚拟机模块的示意图;
[0021]图6是一实施例中slot结构的示意图;
[0022]图7是一实施例中slot结构的示意图;
[0023]图8为本说明书实施例中的一种在区块链中对交易分组的方法流程图;
[0024]图9为本说明书实施例中对交易进行分组的方法流程图;
[0025]图10为本说明书实施例中一种区块链节点的架构图。
具体实施方式
[0026]为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
[0027]区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(Private Blockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(体现为参与者在区块链上的节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
[0028]不论是公有链、私有链还是联盟链,大部分可以提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
[0029]以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实
际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”)。部署在区块链上的智能合约可以是字节码的形式。
[0030]例如图1所示,Bob将一个包含创建智能合约信息的交易发送到以太坊网络后,节点1的EVM可以执行这个交易并生成对应的合约实例。图中1中的“0x6f8ae93
…”
代表了这个合约的地址,交易的data字段保存的可以是字节码,交易的to字段为一个空的账户。节点间通过共识机制达成一致后,这个合约成功创建,后续用户可以调用这个合约。
[0031]合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址,合约代码和账户存储将保存在该合约账户中。智能合约的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。换句话说,智能合约使得区块链上产生包含合约代码和账户存储(Storage)的虚拟账户。
[0032]前述提到,包含创建智能合约的交易的data字段保存的可以是该智能合约的字节码。字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多方面考虑,开发者可以不直接书写字节码,而是选择一门高级语言编写智能合约代码。高级语言编写的智能合约代码,经过编译器编译,生成字节码,进而该字节码可本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链中的交易分组方法,由区块链节点执行,包括:从待分组的多个交易中获取多个第一交易,所述多个第一交易调用相同的合约;确定各个所述第一交易将要访问的所述合约的状态变量对应的标识集合,所述标识集合中包括所述状态变量在合约执行时的变量标识,所述变量标识用于确定所述状态变量在状态数据库中的键;根据各个所述第一交易的标识集合对所述多个第一交易进行分组。2.根据权利要求1所述的方法,其中,所述合约与按照大小顺序排列的多个编号对应,其中,所述变量标识包括所述多个编号中的一个编号,所述状态变量的键基于所述合约的合约地址和该状态变量的变量标识生成。3.根据权利要求1或2所述的方法,所述标识集合中包括第一集合和第二集合,所述第一集合包括所述第一交易请求读取的所述合约的状态变量的变量标识,所述第二集合包括所述第一交易请求写入的所述合约的状态变量的变量标识,所述根据各个所述第一交易的标识集合对所述多个第一交易进行分组包括:根据各个所述第一交易的第一集合和第二集合,在两个第一交易之间存在访问冲突的情况下,将该两个交易分到相同的交易组中。4.根据权利要求1或2所述的方法,所述状态变量中包括第一状态变量,所述第一状态变量为定长变量,所述第一状态变量的第一变量标识通过预先基于所述第一状态变量在所述合约中的声明位置确定。5.根据权利要求4所述的方法,所述第一状态变量的第一变量标识通过如下步骤确定:生成所述合约的抽象语法树,所述抽象语法树包括顺序排列的多个节点,所述多个节点与所述合约中声明的多个对象对应,所述多个节点的排列顺序与所述多个对象在所述合约中的声明位置对应,所述多个对象中包括所述第一状态变量;根据所述第一状态变量对应的第一节点在所述抽象语法树中的排列位置,确定所述第一变量标识。6.根据权利要求2所述的方法,所述状态变量中包括第二状态变量,所述第二状态变量与目标参数符合第一映射关系,所述第一映射关系与所述多个编号中的第一编号对应,所述第一编号基于所述第一映射关系在所述合约中的声明位置确定,所述确定各个所述第一交易请求访问的所述合约的状态变量对应的标识集合包括:基于所述目标参数和所述第一编号确定所述第二状态变量的第二变量标识。7.根据权利要求6所述的方法,所述第一编号通过如下步骤确定:生成所述合约的抽象语法树,所述抽象语法树包括顺序排列的多个节点,所述多个节点与所述合约中声明的多个对象对应,所述多个节点的排列顺序与所述多个对象在所述合约中的声明位置对应,所述多个对象中包括所述第一映射关系;根据所述第一映射关系对应的第二节点在所述抽象语法树中的排列位置,确...

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

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

1