CN112883068A - 区块链交易执行方法、区块链节点及控制装置 - Google Patents

区块链交易执行方法、区块链节点及控制装置 Download PDF

Info

Publication number
CN112883068A
CN112883068A CN202110481574.5A CN202110481574A CN112883068A CN 112883068 A CN112883068 A CN 112883068A CN 202110481574 A CN202110481574 A CN 202110481574A CN 112883068 A CN112883068 A CN 112883068A
Authority
CN
China
Prior art keywords
transactions
block
transaction
parameter
parameters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110481574.5A
Other languages
English (en)
Inventor
卓海振
陆钟豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Ant Blockchain Technology Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd, Ant Blockchain Technology Shanghai Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202110481574.5A priority Critical patent/CN112883068A/zh
Publication of CN112883068A publication Critical patent/CN112883068A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/12Accounting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Technology Law (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Computational Linguistics (AREA)
  • General Business, Economics & Management (AREA)
  • Computing Systems (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书提供一种区块链交易执行方法、区块链节点及控制装置,根据该方法,获取属于第一区块的多个交易;获取所述多个交易各自的第一集合;任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;基于所述多个交易各自的第一集合执行所述多个交易。从而在执行各个交易期间,无需再从存储区的状态数据库中逐一获取各个交易各自读取的参数的值,减少了区块链的节点的IO操作,达到了减小时延的目的。

Description

区块链交易执行方法、区块链节点及控制装置
技术领域
本说明书一个或多个实施例涉及区块链技术领域,特别涉及一种区块链交易执行方法及区块链节点。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
目前来说,区块链中在通过共识确定区块包括的多个交易之后,将区块包括的多个交易通知区块链的各个节点。区块链的各个节点获取并执行该区块中的多个交易,根据多个交易的执行结果生成区块,并在对生成的区块进行共识之后将区块存入节点的区块数据库中。区块链中的例如记账节点可以在对区块进行共识之后向用户返回交易的收据。
发明内容
本说明书一个或多个实施例的目的在于提供一种区块链交易执行方法及区块链节点。
根据第一方面,提供一种区块链交易执行方法,应用于区块链的节点,包括:
获取属于第一区块的多个交易;
获取所述多个交易各自的第一集合;任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;
基于所述多个交易各自的第一集合执行所述多个交易。
可选的,所述基于所述多个交易各自的第一集合执行所述多个交易,包括:
对于所述多个交易各自的第一集合中每个读取的参数的标识,若缓存区中未存储该标识对应的参数的值,从状态数据库中获取该参数的值,并将该参数的值存入所述缓存区;
基于所述缓存区存储的各个参数的值,执行所述多个交易。
可选的,所述获取所述多个交易各自的第一集合,包括:
在获取所述多个交易之后,从各个交易获取各自访问的参数的标识,得到所述多个交易各自的第一集合。
可选的,所述访问的参数还包括写入的参数;
其中,所述获取属于第一区块的多个交易,包括:获取多个区块的全部交易,所述多个区块包括所述第一区块;
其中,所述获取所述多个交易各自的第一集合,包括:获取所述全部交易各自的第一集合;
其中,所述基于所述多个交易各自的第一集合执行所述多个交易,包括:
基于所述全部交易各自的第一集合,对所述全部交易进行分组,以获取多个交易组;
对所述多个交易组并行进行如下处理:对于每个交易组,串行执行该交易组中包括的交易。
可选的,在执行完成属于所述第一区块的全部交易之前,所述方法还包括:
对已执行完成的部分交易的执行结果进行共识。
可选的,所述对已执行完成的部分交易的执行结果进行共识,包括:
通过所述区块链的多个节点对所述部分交易的执行结果进行共识验证,以确定所述部分交易是否各自执行成功。
可选的,所述缓存区包括第一缓存区和第二缓存区;所述将该参数的值存入所述缓存区,包括:将该参数的值存入所述第一缓存区;
其中,所述方法还包括:
在对已执行完成的部分交易的执行结果进行共识之后,将所述部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于所述共识成功的各个交易各自所属的区块,存储到所述第二缓存区中。
可选的,所述对于所述多个交易各自的第一集合中每个读取的参数的标识,若缓存区中未存储该标识对应的参数的值,从状态数据库中获取该参数的值,包括:
在确定属于第二区块的全部交易中共识成功的各个交易的执行结果中包括的写入的各个参数的值都存储到所述第二缓存区中之后,对于所述多个交易各自的第一集合中每个读取的参数的标识,若所述第一缓存区和所述第二缓存区中都未存储该标识对应的参数的值,从状态数据库中获取该参数的值;其中,所述第二区块为所述第一区块的前一个区块。
可选的,所述方法还包括:
将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。
可选的,在所述第一区块的全部交易执行并共识完成之后,所述方法还包括:
在确定对第二区块进行的区块共识成功的情况中,基于所述第二区块的哈希值以及属于所述第一区块的全部交易的数据,生成所述第一区块的区块头;其中,所述第二区块为所述第一区块的前一个区块;
对所述第一区块进行区块共识;
若对所述第一区块的区块共识成功,将所述第一区块的区块头存入所述区块数据库中。
可选的,在属于所述第一区块的全部交易中共识成功的各个交易的执行结果中包括的写入的参数的值都存入所述第二缓存区之后,还包括:根据所述第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态。
根据第二方面,提供一种区块链交易执行方法,应用于区块链的节点,所述区块链的节点包括控制装置以及计算装置,所述方法包括:
所述控制装置获取属于第一区块的多个交易,并获取所述多个交易各自的第一集合;任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;
所述控制装置基于所述多个交易各自的第一集合,对所述多个交易进行预处理,并将所述多个交易和所述预处理的结果发送给所述计算装置;
所述计算装置基于所述预处理的结果执行所述多个交易。
可选的,所述区块链的节点还包括存储装置;
其中,所述控制装置基于所述多个交易各自的第一集合,对所述多个交易进行预处理,包括:
对于所述多个交易各自的第一集合中每个读取的参数的标识,若所述控制装置的缓存区中未存储该标识对应的参数的值,所述控制装置从所述存储装置的状态数据库中获取该参数的值,并将该参数的值存入所述缓存区;
其中,所述预处理的结果包括存入所述缓存区的各个参数的值。
可选的,所述控制装置获取所述多个交易各自的第一集合,包括:
在获取所述多个交易之后,所述控制装置从各个交易获取各自访问的参数的标识,得到所述多个交易各自的第一集合。
可选的,所述访问的参数还包括写入的参数;
其中,所述控制装置获取属于第一区块的多个交易,包括:所述控制装置获取多个区块的全部交易,所述多个区块包括所述第一区块;
其中,所述控制装置获取所述多个交易各自的第一集合,包括:所述控制装置获取所述全部交易各自的第一集合;
其中,所述控制装置基于所述多个交易各自的第一集合,对所述多个交易进行预处理,包括:
所述控制装置基于所述全部交易各自的第一集合,对所述全部交易进行分组,以获取多个交易组;其中,所述预处理的结果包括所述多个交易组;
其中,所述计算装置基于所述预处理的结果执行所述多个交易,包括:
所述计算装置对所述多个交易组并行进行如下处理:对于每个交易组,串行执行该交易组中包括的交易。
可选的,在所述计算装置执行完成属于所述第一区块的全部交易之前,所述方法还包括:
所述控制装置对已执行完成的部分交易的执行结果进行共识。
可选的,所述缓存区包括第一缓存区和第二缓存区;所述将该参数的值存入所述缓存区,包括:将该参数的值存入所述第一缓存区;
其中,在所述控制装置对已执行完成的部分交易的执行结果进行共识之后,所述方法还包括:
所述控制装置将所述部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于所述共识成功的各个交易各自所属的区块,存储到所述第二缓存区中。
可选的,所述对于所述多个交易各自的第一集合中每个读取的参数的标识,若所述控制装置的缓存区中未存储该标识对应的参数的值,所述控制装置从所述存储装置的状态数据库中获取该参数的值,包括:
在确定属于第二区块的全部交易中共识成功的各个交易的执行结果中包括的写入的各个参数的值都存储到所述第二缓存区中之后,对于所述多个交易各自的第一集合中每个读取的参数的标识,若所述控制装置的所述第一缓存区和所述第二缓存区中都未存储该标识对应的参数的值,所述控制装置从所述存储装置的状态数据库中获取该参数的值;其中,所述第二区块为所述第一区块的前一个区块。
可选的,所述方法还包括:
所述控制装置指示所述存储装置将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。
可选的,在所述存储装置将所述第一区块的全部交易执行并共识完成之后,所述方法还包括:
在确定对第二区块进行的区块共识成功的情况中,所述控制装置基于所述第二区块的哈希值以及属于所述第一区块的全部交易的数据,生成所述第一区块的区块头;其中,所述第二区块为所述第一区块的前一个区块;
所述控制装置对所述第一区块进行区块共识;
若对所述第一区块的区块共识成功,所述控制装置指示所述存储装置将所述第一区块的区块头存入所述区块数据库中。
可选的,在属于所述第一区块的全部交易中共识成功的各个交易的执行结果中包括的写入的参数的值都存入所述第二缓存区之后,所述方法还包括:所述控制装置指示所述存储装置根据所述第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态。
根据第三方面,提供一种区块链的节点,所述节点包括:
第一获取模块,用于获取属于第一区块的多个交易;
第二获取模块,用于获取所述多个交易各自的第一集合;任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;
执行模块,用于基于所述多个交易各自的第一集合执行所述多个交易。
根据第四方面,提供一种区块链的节点,所述区块链的节点包括控制装置以及计算装置;
其中,所述控制装置,用于获取属于第一区块的多个交易以及所述多个交易各自的第一集合;基于所述多个交易各自的第一集合,对所述多个交易进行预处理,并将所述多个交易和所述预处理的结果发送给所述计算装置;其中,任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;
所述计算装置,用于基于所述预处理的结果执行所述多个交易。
根据第五方面,提供用于区块链节点的控制装置,包括:
获取单元,用于获取属于第一区块的多个交易,并获取所述多个交易各自的第一集合;任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;
预处理单元,用于对所述多个交易进行预处理,并指示所述区块链节点基于所述预处理的结果执行所述多个交易。
根据第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述第一方面或第二方面中任一项的所述的方法。
根据第七方面,提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述第一方面或第二方面中任一项所述的方法。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书的实施例提供的区块链交易执行的方法和区块链节点,获取属于第一区块的多个交易以及该多个交易各自的第一集合,并基于上述多个交易各自的第一集合执行上述多个交易。其中,任一交易的第一集合包括该交易读取的参数的标识。由于本实施例在执行属于第一区块的多个交易之前,预先获取了各个交易各自读取的参数的标识。因此,基于各个交易各自读取的参数的标识,可以预先确定各个交易各自读取的参数的值。在执行各个交易期间,无需再从存储区的状态数据库中逐一获取各个交易各自读取的参数的值,从而减少了区块链的节点的IO操作,达到了减小时延的目的。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1A是本说明书根据一示例性实施例示出的一种区块链系统的架构图;
图1B是本说明书根据一示例性实施例示出的区块链系统中任意一个区块链节点的结构示意图;
图2是本说明书根据一示例性实施例示出的一种区块链交易执行方法的流程图;
图3是本说明书根据一示例性实施例示出的另一种区块链交易执行方法的流程图;
图4是本说明书根据一示例性实施例示出的另一种区块链交易执行方法的流程图;
图5是本说明书根据一示例性实施例示出的另一种区块链交易执行方法的流程图;
图6是本说明书根据一示例性实施例示出的另一种区块链交易执行方法的流程图;
图7是本说明书根据一示例性实施例示出的另一种区块链交易执行方法的流程图;
图8是本说明书根据一示例性实施例示出的另一种区块链交易执行方法的流程图;
图9是本说明书根据一示例性实施例示出的一种区块链交易执行场景的示意图;
图10是本说明书根据一示例性实施例示出的另一种区块链交易执行场景的示意图;
图11是本说明书根据一示例性实施例示出的一种区块链节点的结构框图;
图12是本说明书根据一示例性实施例示出的另一种区块链节点的结构框图;
图13是本说明书根据一示例性实施例示出的一种用于区块链节点的控制装置的结构框图;
图14是本说明根据一示例性实施例示出的一种计算设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
如图1A所示,是根据一示例性实施例示出的一种区块链系统的架构图。图1B是该区块链系统中任意一个区块链节点的结构示意图。
在图1A示出的架构图中,节点1~节点6均为区块链系统中的区块链节点。可以理解,图1A仅是示例性的示出6个区块链节点,实际上区块链系统中可以包括任意数目的区块链节点。在区块链节点中,可以包括一个记账节点(可以是区块链节点中的任意一个),记账节点至少可以确定多个交易以及该多个交易的执行顺序。在本实施例中,记账节点还可以确定每个交易读取的参数的键和写入的参数的键。在一些实现方式中,记账节点可以将上述多个交易的顺序以及每个交易读取的参数的键和写入的参数的键打包成对应于区块的数据包,并将该数据包发送给区块链系统中其它的各个区块链节点。在另一些实现方式中,记账节点也可以将上述多个交易、上述多个交易的顺序以及每个交易读取的参数的键和写入的参数的键打包成对应于区块的数据包,并将该数据包发送给区块链系统中其它的各个区块链节点。
在图1B示出的示意图中,每个区块链节点都可以包括控制装置M、计算装置C和存储装置S。其中,控制装置M可以用于执行除交易以外的各种操作。控制装置M可以包括获取模块、预取模块、分组模块、共识模块、通信模块以及处理模块等。控制装置M中还设置有缓存区,该缓存区可以包括第一缓存区、第二缓存区和第三缓存区。计算装置C可以用于执行交易。计算装置C可以包括任意数目的计算模块,计算模块之间相互独立。存储装置S存储有区块链的区块数据库和状态数据库等。控制装置M、计算装置C和存储装置S可以分别为单独的实体计算设备或计算设备集群,也可以为计算设备中的一个用于实现特定功能的虚拟装置。
具体来说,针对区块链系统中的任意一个区块链节点,该区块链节点的控制装置M的获取模块首先可以获取多个区块的全部交易、该全部交易的执行顺序以及该全部交易中各个交易各自的第一集合,任一交易的第一集合包括该交易读取的参数的键和写入的参数的键。
一方面,控制装置M的预取模块可以基于上述各个交易各自的第一集合,确定各个交易各自读取的参数的键,并确定各个交易各自读取的参数的值。使上述各个交易各自读取的参数的键值对,均被记录在缓存区中。具体地,预取模块可以从上述各个交易各自的第一集合中获取各个交易各自读取的各个参数的键,并在该缓存区中的第一缓存区和第二缓存区查找上述各个参数的键对应的值(即该参数的值)。对于任一参数,若第一缓存区和第二缓存区均未存储该参数的键对应的值,则预取模块可以从存储装置S存储的状态数据库中获取该参数的值,并存入第一缓存区。若第二缓存区中存有该参数的键对应的值,则可以在第一缓存区通过引用的方式记录该参数的值。使得该缓存区中至少存储有上述各个交易各自读取的参数的键值对。
另一方面,控制装置M的获取模块可以将获取的多个区块的全部交易、该全部交易的执行顺序以及该全部交易中各个交易各自读取的参数的键和各自写入的参数的键传输至分组模块。分组模块可以基于该全部交易各自读取的参数的键和各自写入的参数的键,确定具有关联关系的交易,并基于确定的结果,对该全部交易进行分组,以获取多个交易组。使得具有关联关系的交易均被分到同一个交易组,剩下的没有关联关系的交易,可以随机分配。其中,具有关联关系的交易可以是读取或写入的参数有重叠的交易。
接着,控制装置M的通信模块可以将获取的上述多个交易组以及缓存区存储的各个交易各自读取的参数的键值对传输至计算装置C,由计算装置C基于各个交易各自读取的参数的键值对,并行处理多个交易组。其中,计算装置C中的一个计算模块可以对应于一个独立的线程,也可以对应于一个独立的计算设备,可以由不同的计算模块并行执行不同的交易组。对于每个交易组,串行执行该交易组中包括的各个交易。计算装置C可以将各个交易的执行结果返回给控制装置M的通信模块。由通信模块将各个交易的执行结果存入第三缓存区。
对于上述多个区块中的任意一个区块,在计算装置C执行完成该区块中的全部交易之前(例如,每执行完成一组交易组的交易),控制装置M的共识模块可以通过与区块链的其它节点的共识模块进行交互,对已执行完成的部分交易的执行结果进行共识,以确定该部分交易是否各自执行成功。控制装置M的处理模块可以将对各个交易的共识结果相对于各个交易存入第三缓存区,区块链中与客户端对接的节点在上述共识之后可以将共识成功的各个交易的执行结果返回给客户端。
在对已执行完成的部分交易的执行结果进行共识之后,控制装置M的处理模块可以获取部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,并将共识成功的各个交易的执行结果中包括的写入参数的值,相对于上述共识成功的各个交易各自所属的区块,存储到第二缓存区中。
接着,在对属于该区块的至少部分交易的执行结果完成共识之后,控制装置M的存储模块可以向存储装置S发送一个写入请求,该写入请求携带该至少部分交易各自的交易体、从第三缓存区获取的交易的执行结果及共识结果等,该执行结果例如具有交易收据的形式。存储装置S根据该写入请求将该至少部分交易的交易体和执行结果等数据作为该区块的至少部分区块体,存入区块数据库中,并将该至少部分交易的共识结果也存储到区块数据库中。
在该区块中的全部交易执行并共识完成之后,在确定对该区块的前一个区块进行的区块共识成功的情况下,控制装置M的处理模块可以从存储装置S中读取当前世界状态,并基于前一个区块的哈希值、当前世界状态以及属于该区块的全部交易的数据,生成该区块的区块头。
最后,控制装置M的共识模块可以基于生成的区块头,对该区块进行区块共识。若对该区块的区块共识成功,控制装置M的存储模块可以向存储装置S发送写块请求,使存储装置S将该区块的区块头存入区块数据库中。另外,在属于该区块的全部交易中共识成功的各个交易的执行结果中包括的写入的参数的值都存入第二缓存区之后,可以根据第二缓存区中相对于该区块存储的各个参数的值,更新状态数据库中的世界状态。然后,控制装置M的处理模块可以从第二缓存区中删除相对于该区块存储的各个参数的值。
下面将结合具体的实施例对本说明书提供的方案进行详细描述。
如图2所示,图2是根据一示例性实施例示出的一种区块链交易执行方法的流程图,该方法可以应用于任意一个区块链的节点中。本领域技术人员可以理解,该区块链的节点可以为任何具有计算、处理能力的设备、平台、服务器或设备集群。该方法包括以下步骤:
在步骤202中,获取属于第一区块的多个交易。
在步骤204中,获取该多个交易各自的第一集合。
在本实施例中,任一交易的第一集合可以包括该交易访问的参数的标识。例如,参数的标识可以是参数的键,也可以是参数的映射编号,还可以是其它任意合理形式的参数的唯一性标识。可以理解,本实施例对参数的标识的具体形式方面不限定。其中,访问的参数至少可以包括读取的参数。
在本实施例中,可以仅获取第一区块的多个交易以及该多个交易各自的第一集合,也可以获取多个区块(该多个区块包括第一区块)的全部交易以及该全部交易各自的第一集合,本实施例对此方面不限定。
在本实施例的一种实现方式中,区块链系统中的记账节点可以确定多个交易,并进一步获取每个交易访问的参数的标识,得到多个交易各自的第一集合。然后,将上述多个交易以及各自的第一集合打包成对应于第一区块的数据包,并将对应于第一区块的数据包发送给区块链系统中其它的各个区块链节点。因此,对于非记账节点,可以直接从对应于第一区块的数据包中获取属于第一区块的多个交易以及该多个交易各自的第一集合。对于记账节点,可以通过预执行每个交易(预执行交易时并不改变世界状态),从而获取每个交易访问的参数的标识。或者,也可以读取智能合约中预先记录的每个交易访问的参数的标识,等等。可以理解,本实施例对记账节点获取每个交易访问的参数的标识的具体方式方面不限定。
在本实施例的另一种实现方式中,区块链系统中的记账节点确定多个交易后,直接将上述多个交易打包成对应于第一区块的数据包,并将对应于第一区块的数据包发送给区块链系统中其它的各个区块链节点。对于非记账节点,可以直接从对应于第一区块的数据包中获取属于第一区块的多个交易。对于区块链系统中的任意一个节点,均可以通过预执行每个交易,从而获取每个交易访问的参数的标识。或者,也可以读取智能合约中预先记录的每个交易访问的参数的标识,等等。
在本实施例的又一种实现方式中,区块链系统中的任意一个节点,在获取多个交易之后,可以从各个交易获取各自访问的参数的标识,得到多个交易各自的第一集合。具体来说,任一交易的预设字段中包含该交易访问的参数的标识。对于区块链系统中的记账节点,在获取多个交易后,一方面,可以从各个交易的预设字段中获取各个交易各自访问的参数的标识,得到多个交易各自的第一集合。另一方面,可以将该多个交易打包成对应于第一区块的数据包,并将对应于第一区块的数据包发送给区块链系统中其它的各个区块链节点。对于区块链系统中的非记账节点,在获取多个交易之后,也可以从各个交易的预设字段中获取各个交易各自访问的参数的标识,得到多个交易各自的第一集合。由于本实现方式中,各个交易中包含了各自访问的参数的标识,因此,使得区块链系统中的各个节点能够直接从各个交易获取各自的第一集合,从而降低了执行交易之前的准备时间。
在步骤206中,基于上述多个交易各自的第一集合执行上述多个交易。
在本实施例中,区块链的节点可以基于上述多个交易各自的第一集合执行上述多个交易。例如,可以仅基于第一区块的多个交易各自的第一集合,执行该多个交易。也可以基于多个区块(该多个区块包括第一区块)的全部交易各自的第一集合,执行该全部交易。
在一种实现方式中,区块链系统中的任一节点可以获取属于第一区块中的多个交易,并获取该多个交易各自的第一集合。在执行该多个交易之前,可以预先基于该多个交易各自的第一集合,对该多个交易读取的参数的值进行预取。具体是,对于任意一个交易的第一集合中任意一个读取的参数的标识,首先从本地缓存区中查找该标识对应的参数的值,若本地缓存区中未存储该标识对应的参数的值,则从状态数据库中获取该参数的值,并将该参数的标识和值关联地(例如以键值对的形式)存储至本地缓存区中。在如上述对上述多个交易进行参数预取之后,该节点可以基于本地缓存区中存储的各个参数的值,执行该多个交易。
在另一种实现方式中,访问的参数除了可以包括读取的参数,还可以包括写入的参数。区块链系统中的任一节点可以基于获取的多个区块的全部交易各自的第一集合,对多个区块的全部交易进行分组,以获取多个交易组,并行处理多个交易组。对于每个交易组,串行执行该交易组中包括的交易。
在又一种实现方式中,访问的参数包括读取的参数以及写入的参数。对于区块链系统中的任一节点,可以获取多个区块(包括第一区块)的全部交易以及该全部交易各自的第一集合。一方面,在执行该全部交易之前,可以预先基于该全部交易各自的第一集合,对该全部交易读取的参数的值进行预取,并将该全部交易读取的参数的标识和值关联地存储至本地缓存区中。另一方面,可以基于该全部交易各自的第一集合,对该全部交易进行分组,以获取多个交易组。然后,基于该缓存区存储的各个参数的值,并行处理多个交易组。对于每个交易组,串行执行该交易组中包括的交易。
本说明书的上述实施例提供的区块链交易执行的方法,获取属于第一区块的多个交易以及该多个交易各自的第一集合,并基于上述多个交易各自的第一集合执行上述多个交易。其中,任一交易的第一集合包括该交易读取的参数的标识。由于本实施例在执行属于第一区块的多个交易之前,预先获取了各个交易各自读取的参数的标识。因此,基于各个交易各自读取的参数的标识,可以预先确定各个交易各自读取的参数的值。在执行各个交易期间,无需再从存储区的状态数据库中逐一获取各个交易各自读取的参数的值,从而减少了区块链的节点的IO操作,达到了减小时延的目的。
如图3所示,图3根据一示例性实施例示出的另一种区块链交易执行方法的流程图,该实施例描述了执行多个交易的过程,该方法可以应用于任一区块链的节点中,包括以下步骤:
在步骤302中,获取属于第一区块的多个交易。
在步骤304中,获取该多个交易各自的第一集合。
在本实施例中,任一交易的第一集合可以包括该交易访问的参数的标识。例如,参数的标识可以是参数的键,也可以是参数的映射编号,还可以是其它任意合理形式的参数的唯一性标识。可以理解,本实施例对参数的标识的具体形式方面不限定。其中,访问的参数至少可以包括读取的参数。
在步骤306中,对于多个交易各自的第一集合中每个读取的参数的标识,若缓存区中未存储该标识对应的参数的值,从状态数据库获取该参数的值,并将该参数的值存入缓存区。
在本实施例中,区块链的节点首先获取属于第一区块的多个交易以及该多个交易各自的第一集合。在执行该多个交易之前,区块链的节点可以基于该多个交易各自的第一集合,对该多个交易读取的参数的值进行预取。具体来说,对于任意一个交易的第一集合中任意一个读取的参数的标识,首先从本地缓存区中查找该标识对应的参数的值,若本地缓存区中未存储该标识对应的参数的值,则从状态数据库中获取该参数的值,并将该参数的标识和值关联地(例如以键值对的形式)存储至本地缓存区中。使得在执行该多个交易之前,在该缓存区中存储有属于第一区块的全部交易各自读取的参数的标识和值。
在本实施例中,缓存区至少可以包括第一缓存区,第一缓存区可以用于存储各个交易各自的第一集合中读取的参数的标识和值。可选地,缓存区还可以进一步包括第二缓存区,第二缓存区可以用于存储各个交易各自的第一集合中写入的参数的标识和值。例如,在确定属于第二区块的全部交易中共识成功的各个交易的执行结果中包括的写入的各个参数的值都存储到第二缓存区中之后,对于第一区块的多个交易各自的第一集合中每个读取的参数的标识,若第一缓存区和第二缓存区中都未存储该标识对应的参数的值,从状态数据库中获取该参数的值。其中,第二区块为第一区块的前一个区块。
在步骤308中,基于该缓存区存储的各个参数的值,执行多个交易。
在本实施例中,该区块链的节点可以基于该缓存区中存储的各个参数的值,执行该多个交易。
需要说明的是,对于与图2实施例中相同的步骤,在上述图3实施例中不再进行赘述,相关内容可参见图2实施例。
本说明书的上述实施例提供的区块链交易执行方法,获取属于第一区块的多个交易以及该多个交易各自的第一集合,任一交易的第一集合可以包括该交易读取的参数的标识。对于多个交易各自的第一集合中每个读取的参数的标识,若缓存区中未存储该标识对应的参数的值,从状态数据库获取该参数的值,并将该参数的值存入缓存区,基于该缓存区存储的各个参数的值,执行该多个交易。由于本实施例在属于第一区块的多个交易执行之前,在缓存区中预先存储了第一区块的各个交易各自读取的参数的标识和值,使得区块链的节点能够基于缓存中存储的各个参数的值,执行各个交易。因此,在执行各个交易期间,无需再通过IO操作从存储区的状态数据库中逐一获取各个交易各自读取的参数的值,从而进一步减少了区块链的节点在执行交易期间的IO操作,有助于减小执行交易导致的时延。
如图4所示,图4根据一示例性实施例示出的另一种区块链交易执行方法的流程图,该实施例描述了执行多个交易的过程,该方法可以应用于任一区块链的节点中,包括以下步骤:
在步骤402中,获取多个区块的全部交易。
在步骤404中,获取该全部交易各自的第一集合。
在本实施例中,多个区块可以包括第一区块。在经过多次共识后,可以获取多个区块的全部交易以及该全部交易各自的第一集合。其中,任一交易的第一集合可以包括该交易访问的参数的标识。例如,参数的标识可以是参数的键,也可以是参数的映射编号,还可以是其它任意合理形式的参数的唯一性标识。可以理解,本实施例对参数的标识的具体形式方面不限定。其中,访问的参数包括读取的参数和写入的参数。
在步骤406中,基于该全部交易各自的第一集合,对该全部交易进行分组,以获取多个交易组。
在本实施例中,可以将该多个区块的全部交易放在一起进行分组。具体来说,首先,可以获取该多个区块的全部交易各自的第一集合。然后,可以根据全部交易各自的第一集合,确定存在访问冲突的多个交易。基于该确定的结果对全部交易进行分组得到多个交易组,使得存在访问冲突的交易分到同一个交易组,剩下的不存在访问冲突的交易,可以随机分配。
其中,存在访问冲突的交易可以是读取或写入的参数有重叠的交易。在一种实现方式中,可确定读取相同参数的至少两个交易或写入相同参数的至少两个交易存在访问冲突。在另一种实现方式中,可确定写入参数a的交易与各个读取参数a的交易存在访问冲突。例如,交易A的读取的参数包括a,交易B写入的参数包括a,则可确定交易A和交易B存在访问冲突。
在本实施例中,每个交易组中包括的交易的数量可以相同也可以不同,并且,每个交易组中包括的交易可以按照交易接收时间的顺序进行排序。可以理解,还可以按照其它的方式对全部交易进行分组,本实施例对分组的具体方式方面不限定。
例如,获取的多个区块的全部交易包括交易1、交易2、交易3、交易4、交易5、交易6、交易7、交易8、交易9和交易10。基于这些交易各自的第一集合,可以确定交易1和交易3存在访问冲突,交易3和交易7存在访问冲突;交易4、交易6和交易9存在访问冲突;剩下交易2、交易5、交易8、和交易10与其它交易相互之间均不存在访问冲突。可以将交易1、交易3和交易7分为一个交易组,将交易4、交易6和交易9分为一个交易组,将交易2、交易5、交易8、和交易10分为一个交易组。
在步骤408中,对该多个交易组并行进行如下处理:对于每个交易组,串行执行该交易组中包括的交易。
在本实施例中,可以通过异步线程或者不同的计算设备,并行处理多个交易组。对于每个交易组,可以串行执行该交易组中包括的交易。
需要说明的是,对于与图2和图3实施例中相同的步骤,在上述图4实施例中不再进行赘述,相关内容可参见图2和图3实施例。
本说明书的上述实施例提供的区块链交易执行方法,通过获取多个区块的全部交易以及该全部交易各自的第一集合,任一交易的第一集合包括该交易读取的参数和写入的参数的标识,基于该全部交易各自的第一集合,对该全部交易进行分组,以获取多个交易组,并行处理多个交易组,其中,对于每个交易组,串行执行该交易组中包括的交易。由于本实施例对多个区块的全部交易进行分组得到多个交易组,并并行执行多个交易组,无需等待一个区块中的交易都执行完成后再执行下个区块的交易,因此,提高了交易执行的效率,降低了由于等待前一个区块中交易的完成而产生的时延。
如图5所示,图5根据一示例性实施例示出的另一种区块链交易执行方法的流程图,该实施例详细描述了执行完成属于第一区块的全部交易之前的过程,该方法可以应用于任一区块链的节点中,包括以下步骤:
在步骤502中,获取属于第一区块的多个交易。
在步骤504中,获取该多个交易各自的第一集合。
在本实施例中,任一交易的第一集合可以包括该交易访问的参数的标识。例如,参数的标识可以是参数的键,也可以是参数的映射编号,还可以是其它任意合理形式的参数的唯一性标识。可以理解,本实施例对参数的标识的具体形式方面不限定。其中,访问的参数至少可以包括读取的参数。
在步骤506中,基于上述多个交易各自的第一集合执行上述多个交易。
在步骤508中,对已执行完成的部分交易的执行结果进行共识。
在本实施例中,在执行完成属于第一区块的全部交易之前,可以对已执行完成的部分交易的执行结果进行共识。具体来说,可以通过区块链的多个节点对该部分交易的执行结果进行共识验证,以确定该部分交易是否各自执行成功。在一种实现方式中,可以对属于第一区块的交易进行分组,得到多个交易组,当执行完成一个交易组后,就对这个交易组的各个交易各自对应的执行结果进行共识。在另一种实现方式中,还可以按照执行完成的顺序,对预设数量的交易的执行结果进行共识。
需要说明的是,该已执行完成的部分交易可以都属于第一区块,也可以有部分交易不属于第一区块。例如,若交易组A中包括交易a,交易b,交易c和交易d。其中,交易a,交易b和交易c是属于第一区块的部分交易,交易d属于第一区块的下一个区块。在执行完成交易组A后,对这个交易组的各个交易各自对应的执行结果进行共识。此时,已执行完成的部分交易可以有一部分属于第一区块,另一部分交易不属于第一区块。
在本实施例中,可以由每个区块链的节点对该部分交易的各个交易各自对应的执行结果进行哈希计算,得到各个执行结果的哈希值。通过对各个执行结果的哈希值进行比对完成对各个执行结果的共识。针对任一交易,如果每个区块链的节点,或者大于预设数量的区块链的节点,得到的该交易对应的执行结果的哈希值均相同,则确定该交易执行成功。可以理解,还可以通过其它任意合理的方式对已执行完成的部分交易的执行结果进行共识,本实施例对此方面不限定。
在本实施例中,在完成对各个执行结果的共识后,还可以基于共识的结果,得到该部分交易各自共识后的收据。可以由区块链系统中的记账节点,或和客户端对接的节点将该部分交易各自共识后的收据返回给客户端。其中,记账节点或和客户端对接的节点,可以是区块链系统中任一节点。
需要说明的是,对于与图2-图4实施例中相同的步骤,在上述图5实施例中不再进行赘述,相关内容可参见图2-图4实施例。
本说明书的上述实施例提供的区块链交易执行方法,获取属于第一区块的多个交易以及该多个交易各自的第一集合,基于上述多个交易各自的第一集合执行上述多个交易,对已执行完成的部分交易的执行结果进行共识。由于本实施例在执行完成部分交易时,就对完成的部分交易的执行结果进行共识,无需等待属于第一区块的全部交易均执行完成,就可以向客户端返回基于共识的结果得到的共识后的收据。因此,降低了由于等待属于第一区块的全部交易均执行完成而产生的时延。
如图6所示,图6根据一示例性实施例示出的另一种区块链交易执行方法的流程图,该实施例描述了维护缓存的过程,该方法可以应用于任一区块链的节点中,包括以下步骤:
在步骤602中,获取属于第一区块的多个交易。
在步骤604中,获取该多个交易各自的第一集合。
在本实施例中,任一交易的第一集合可以包括该交易访问的参数的标识。例如,参数的标识可以是参数的键,也可以是参数的映射编号,还可以是其它任意合理形式的参数的唯一性标识。可以理解,本实施例对参数的标识的具体形式方面不限定。其中,访问的参数至少包括读取的参数。
在步骤606中,基于该多个交易各自的第一集合执行多个交易。
在一种实现方式中,区块链系统中的任一节点可以获取属于第一区块中的多个交易,并获取该多个交易各自的第一集合。在执行该多个交易之前,可以预先基于该多个交易各自的第一集合,对该多个交易读取的参数的值进行预取。在预取之后,可以基于本地缓存区中存储的各个参数的值,执行该多个交易。
在另一种实现方式中,访问的参数除了可以包括读取的参数,还可以包括写入的参数。区块链系统中的任一节点可以基于获取的多个区块的全部交易各自的第一集合,对多个区块的全部交易进行分组,以获取多个交易组,并行处理多个交易组。
在又一种实现方式中,访问的参数包括读取的参数以及写入的参数。对于区块链系统中的任一节点,可以获取多个区块(包括第一区块)的全部交易以及该全部交易各自的第一集合。一方面,在执行该全部交易之前,可以预先基于该全部交易各自的第一集合,对该全部交易读取的参数的值进行预取,并将该全部交易读取的参数的标识和值关联地存储至本地缓存区中。另一方面,可以基于该全部交易各自的第一集合,对该全部交易进行分组,以获取多个交易组。然后,基于该缓存区存储的各个参数的值,并行处理多个交易组。
在步骤608中,对已执行完成的部分交易的执行结果进行共识。
在步骤610中,在对已执行完成的部分交易的执行结果进行共识之后,将该部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于该共识成功的各个交易各自所属的区块,存储到缓存区包括的第二缓存区中。
在本实施例中,缓存区可以包括第一缓存区和第二缓存区,第一缓存区可以用于存储各个交易各自的第一集合中读取的参数的标识和值,第二缓存区可以用于存储各个交易各自的第一集合中写入的参数的标识和值。
在本实施例中,在对已执行完成的部分交易的执行结果进行共识之后,可以确定该部分交易是否各自执行成功。对于该部分交易中共识成功的交易,可以基于该共识成功的交易对应的执行结果,获取该共识成功的交易写入的参数的值。并在该缓存区包括的第二缓存区中相对于该共识成功的交易所属的第一区块存储该共识成功的交易写入的参数的值,从而对该缓存区存储的数据进行更新维护。
需要说明的是,对于与图2-图5实施例中相同的步骤,在上述图6实施例中不再进行赘述,相关内容可参见图2-图5实施例。
本说明书的上述实施例提供的区块链交易执行方法,获取属于第一区块中的多个交易以及该多个交易各自的第一集合,任一交易的第一集合包括该交易读取的参数和写入的参数的标识,基于该多个交易各自的第一集合执行多个交易。对已执行完成的部分交易的执行结果进行共识,以确定该部分交易是否各自执行成功,并在对已执行完成的部分交易的执行结果进行共识之后,将该部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于所述共识成功的各个交易各自所属的区块,存储到缓存区包括的第二缓存区中。本实施例在部分交易共识成功后,基于共识成功的各个交易各自写入的参数的值,及时更新维护缓存区中的数据。从而解决了交易数据更新维护滞后的问题。
如图7所示,图7根据一示例性实施例示出的另一种区块链交易执行方法的流程图,该实施例详细描述了更新区块数据库的过程,该方法可以应用于任意一个区块链的节点中,包括以下步骤:
在步骤702中,获取属于第一区块的多个交易。
在步骤704中,获取该多个交易各自的第一集合。
在本实施例中,任一交易的第一集合可以包括该交易访问的参数的标识。例如,参数的标识可以是参数的键,也可以是参数的映射编号,还可以是其它任意合理形式的参数的唯一性标识。可以理解,本实施例对参数的标识的具体形式方面不限定。其中,访问的参数至少包括读取的参数。
在步骤706中,基于该多个交易各自的第一集合执行多个交易。
在一种实现方式中,区块链系统中的任一节点可以获取属于第一区块中的多个交易,并获取该多个交易各自的第一集合。在执行该多个交易之前,可以预先基于该多个交易各自的第一集合,对该多个交易读取的参数的值进行预取。在预取之后,可以基于本地缓存区中存储的各个参数的值,执行该多个交易。
在另一种实现方式中,访问的参数除了可以包括读取的参数,还可以包括写入的参数。区块链系统中的任一节点可以基于获取的多个区块的全部交易各自的第一集合,对多个区块的全部交易进行分组,以获取多个交易组,并行处理多个交易组。
在又一种实现方式中,访问的参数包括读取的参数以及写入的参数。对于区块链系统中的任一节点,可以获取多个区块(包括第一区块)的全部交易以及该全部交易各自的第一集合。一方面,在执行该全部交易之前,可以预先基于该全部交易各自的第一集合,对该全部交易读取的参数的值进行预取,并将该全部交易读取的参数的标识和值关联地存储至本地缓存区中。另一方面,可以基于该全部交易各自的第一集合,对该全部交易进行分组,以获取多个交易组。然后,基于该缓存区存储的各个参数的值,并行处理多个交易组。
在步骤708中,对已执行完成的部分交易的执行结果进行共识。
在步骤710中,将该部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于所述共识成功的各个交易各自所属的区块,存储到第二缓存区中。
在本实施例中,在对已执行完成的部分交易的执行结果进行共识之后,可以将该部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于所述共识成功的各个交易各自所属的区块,存储到第二缓存区中。
在步骤712中,将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。
在本实施例中,可以将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。具体来说,在对属于第一区块的至少部分交易的执行结果完成共识之后,可以将该至少部分交易的数据作为第一区块的至少部分区块体,存入区块数据库中。其中,任一交易的数据可以至少包括该交易的交易体以及执行结果等数据。还可以将该至少部分交易的共识结果也存储到区块数据库中。
在步骤714中,在第一区块的全部交易执行并共识完成之后,在确定对第二区块进行的区块共识成功的情况中,基于第二区块的哈希值以及属于第一区块的全部交易的数据,生成第一区块的区块头,并对第一区块进行区块共识。
在步骤716中,若对第一区块的区块共识成功,将第一区块的区块头存入区块数据库。
在步骤718中,在属于第一区块的全部交易中共识成功的各个交易的执行结果中包括的写入的参数的值都存入第二缓存区之后,根据第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态。
在步骤720中,从第二缓存区中删除相对于第一区块存储的各个参数的值。
在本实施例中,完成第一区块中的所有交易之后,在确定对第二区块进行的区块共识成功的情况中,可以基于第二区块的哈希值以及属于第一区块的全部交易的数据,生成第一区块的区块头,并对第一区块进行区块共识。其中,第二区块为第一区块的前一个区块。具体来说,区块共识就是比较各个区块链的节点对应的第一区块的区块头的哈希值是否均相同,如果均相同则区块共识成功。其中,区块头中可以包括但不限于交易根、状态根、收据根等数据,通过对区块头进行共识,也即对区块头的正确性及世界状态的正确性进行了验证。若对第一区块的区块共识成功,可以将第一区块的区块头存入区块数据库。
在本实施例中,在属于第一区块的全部交易中共识成功的各个交易的执行结果中包括的写入的参数的值都存入第二缓存区之后,可以根据第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态。
在本实施例中,在根据第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态之后,可以将第二缓存区中部分用于更新状态数据库的数据删除,以释放部分缓存。例如,当第一区块中的全部交易执行完成后,接收到下一个区块的交易,若下一个区块中存在任一交易读取的参数为第一区块中任一交易写入的参数时,则可以保留该缓存区存储的第一区块中该交易写入的参数的值。而删除该缓存区存储的第一区块中其它各个交易各自写入的参数的值,从而释放部分缓存。
需要说明的是,对于与图2-图6实施例中相同的步骤,在上述图7实施例中不再进行赘述,相关内容可参见图2-图6实施例。
本说明书的上述实施例提供的区块链交易执行方法,获取属于第一区块的多个交易以及该多个交易各自的第一集合,任一交易的第一集合包括该交易读取的参数和写入的参数的标识,基于该多个交易各自的第一集合执行多个交易,对已执行完成的部分交易的执行结果进行共识,以确定该部分交易是否各自执行成功,对于该部分交易中共识成功的交易,在缓存区包括的第二缓存区中相对于该共识成功的交易所属的第一区块存储该共识成功的交易写入的参数的值,将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中,在第一区块的全部交易执行并共识完成之后,在确定对第二区块进行的区块共识成功的情况中,基于第二区块的哈希值以及属于第一区块的全部交易的数据,生成第一区块的区块头,并对第一区块进行区块共识。若对第一区块的区块共识成功,将第一区块的区块头存入区块数据库,并根据第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态。由于本实施例,采用了缓存区存储并更新各个交易各自写入的参数的值,因此,可以直接利用缓存区中存储的数据更新区块链的状态数据库,并将完成共识的各个交易的数据存入区块数据库中。从而解决了交易数据在数据库中更新滞后的问题,提高了成块速度,进一步减小了时延。
应当注意,尽管在上述的实施例中,以特定顺序描述了本说明书实施例的方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
图8是根据一示例性实施例示出的一种区块链交易执行方法的流程图。该方法由区块链的节点的控制装置、计算装置和存储装置共同执行,可以理解,图中仅示出一个区块链的节点作为示意,并在区块链的节点中只示出一个计算装置作为示意,在实际区块链中,可包括多个区块链的节点,区块链的节点中可以包括多个计算装置,其都执行与图中所示相同的过程。
在步骤802中,控制装置获取多个区块的全部交易以及该全部交易各自的第一集合。
在本实施例中,区块链系统中的每个区块链节点的控制装置,首先可以获取多个区块的全部交易以及该全部交易各自的第一集合。其中,任一交易的第一集合可以包括该交易访问的参数的标识。例如,参数的标识可以是参数的键,也可以是参数的映射编号,还可以是其它任意合理形式的参数的唯一性标识。可以理解,本实施例对参数的标识的具体形式方面不限定。其中,访问的参数可以包括读取的参数和写入的参数。
在一种实现方式中,控制装置获取该多个区块的全部交易后,可以通过预执行每个交易,从而获取每个交易各自的第一集合。或者,也可以读取智能合约中预先记录的每个交易各自的第一集合,等等。
在另一种实现方式中,控制装置接收到该多个区块的多个数据包,并获取该多个区块的全部交易后,可以直接从接收到的上述数据包中获取每个交易各自的第一集合。
在又一种实现方式中,每个交易的预设字段中包括该交易读取的参数的标识和写入的参数的标识。控制装置获取该多个区块的全部交易后,可以直接从每个交易中的预设字段中获取每个交易各自的第一集合。
在步骤804中,对于多个区块的全部交易读取的参数,控制装置从存储装置进行参数值的预取。
具体是,在一种实施方式中,在所述多个区块的前一个区块的世界状态已经存储到存储装置中之后,对于多个区块的全部交易各自的第一集合中每个读取的参数的标识,确定缓存区包括的第一缓存区中是否存储有该标识对应的参数的值,如果没有的话,控制装置向存储装置发送对该参数的读取请求,存储装置在接收到读取请求之后,从状态数据库中读取该参数的值,并将该参数的值发送给控制装置,控制装置在接收该参数的值之后将该参数的键值对存储到第一缓存区中。
在另一种实施方式中,在所述多个区块的前一个区块包括的全部交易的执行结果已经共识结束,并且共识成功的交易的执行结果已经更新到缓存区包括的第二缓存区中之后,对于多个区块的全部交易各自的第一集合中每个读取的参数的标识,确定第一缓存区和第二缓存区中是否存储有该标识对应的参数的值,如果没有的话,控制装置与上一实施方式类似地从存储装置接收该参数的值并存储到第一缓存区中。如果第二缓存区中存储有该标识对应的参数的值,则控制装置将该值存储到第一缓存区中,或者在第一缓存区中进行对该参数的值的引用。
在又一种实施方式中,在所述多个区块的前一个区块包括的全部交易的执行结果已经共识结束,并且共识成功的交易的执行结果已经更新到第二缓存区中之后,控制装置确定全部交易包括的全部读取的参数的标识,从这些全部读取的参数的标识中删除在第二缓存区中存储该标识对应的参数的值的标识,从而获取全部目标标识。从而控制装置可通过至少一次读取请求从存储装置获取将这些全部目标标识对应的参数的值,并将这些目标标识对应的参数的值存储到第一缓存区中。
在本实施例中,控制装置可以首先基于多个区块的全部交易各自的第一集合中每个读取的参数的标识,确定上述全部交易各自读取的参数的值是否存储在缓存区中。接着,控制装置可以基于上述确定的结果,向存储装置发送请求,以请求获取上述全部交易各自读取的参数的值中未存储在缓存区中的参数的值。
在本实施例中,存储装置响应于控制装置发送的请求,从状态数据库中获取上述未存储在缓存区中的参数的值,并将这些参数的值一并返回给控制装置。使得控制装置在处理一个或多个区块的交易的过程中,只需通过一次和存储装置之间的IO操作,减小了执行交易导致的时延。
在本实施例中,控制装置接收到存储装置发送的上述缓存区中未存储的参数的值之后,将上述缓存区中未存储的参数的值存入上述缓存区中的第一缓存区。
在步骤806中,控制装置基于该多个区块的全部交易各自的第一集合,对该全部交易进行分组,以获取多个交易组。
在本实施例中,控制装置可以基于该多个区块的全部交易各自的第一集合,对全部交易进行分组,以获取多个交易组。具体来说,首先,控制装置可以获取该多个区块的全部交易各自的第一集合。
然后,可以根据全部交易各自的第一集合,确定存在访问冲突的多个交易,并基于该确定的结果对全部交易进行分组得到多个交易组,使得存在访问冲突的交易分到同一个交易组,剩下的不存在访问冲突的交易,可以随机分配。每个交易组中包括的交易的数量可以相同也可以不同,并且,每个交易组中包括的交易可以按照交易接收时间的顺序进行排序。
可以理解,还可以按照其它的方式对全部交易进行分组,本实施例对分组的具体方式方面不限定。
在步骤808中,控制装置向计算装置发送第一缓存区存储的各个参数的值及多个交易组。
在步骤810中,计算装置基于第一缓存区中存储的各个参数的值,并行处理多个交易组,对于每个交易组,串行执行该交易组中包括的交易。
在本实施例中,控制装置可以将第一缓存区存储的各个参数的值以及多个交易组一并发送给计算装置。计算装置可以基于接收到的上述各个参数的值,并行处理多个交易组。对于每个交易组,按照交易接收时间顺序串行执行该交易组中包括的交易。
本实施例对多个区块的全部交易进行分组得到多个交易组,并并行执行多个交易组,无需等待一个区块中的交易都执行完成后再执行下个区块的交易,因此,提高了交易执行的效率,降低了由于等待前一个区块中交易的完成而产生的时延。
在步骤812中,计算装置向控制装置发送已执行完成的部分交易的执行结果。
在步骤814中,控制装置对已执行完成的部分交易的执行结果进行共识。
在本实施例中,针对该多个区块中的任意一个区块,在计算装置执行完成该区块中的全部交易之前,可以将已执行完成的部分交易的执行结果发送给控制装置。由控制装置在多个区块链的节点之间,对已执行完成的部分交易进行共识验证,以确定该部分交易中的各个交易是否各自执行成功。
在本实施例中,控制装置可以将对各个交易的共识结果相对于各个交易存入缓存区包括的第三缓存区,区块链中与客户端对接的节点在上述共识之后可以将共识成功的各个交易的执行结果返回给客户端。
本实施例在执行完成一个区块的部分交易时,就对完成的部分交易的执行结果进行共识,无需等待该区块中的全部交易均执行完成,就可以向客户端返回基于共识的结果得到的共识后的收据。因此,降低了由于等待该区块中的全部交易均执行完成而产生的时延。
在步骤816中,控制装置将共识成功的各个交易的执行结果中包括的写入参数的值,相对于该共识成功的各个交易各自所属的区块,存储在上述缓存区中的第二缓存区中。
在本实施例中,在对已执行完成的部分交易的执行结果进行共识之后,控制装置可以利用共识成功的各个交易的执行结果中包括的写入的参数的值,更新上述第二缓存区中的数据。使得第二缓存区中存储的各个参数的值均为最新得到的数值,即该参数最新的状态。
本实施例在部分交易共识成功后,基于共识成功的交易写入的参数的值,及时更新第二缓存区中存储的数据。从而解决了交易数据更新滞后的问题。
在步骤818中,控制装置请求将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。
在步骤820中,存储装置将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。
在本实施例中,针对该多个区块中的任意一个区块,在对属于该区块的至少部分交易的执行结果完成共识之后,控制装置可以获取该至少部分交易的数据,并向存储装置发送请求,以请求存储装置将该至少部分交易的数据作为该区块的至少部分区块体,存入区块数据库中。存储装置响应于上述请求,将该至少部分交易的数据作为该区块的区块体,存入区块数据库中。其中,任一交易的数据可以至少包括该交易的交易体以及执行结果等数据。还可以将该至少部分交易的共识结果也存储到区块数据库中。
在步骤822中,在该多个区块中的任一区块的全部交易执行并共识完成之后,控制装置生成该区块的区块头,并对该区块进行区块共识。
在本实施例中,针对该多个区块中的任意一个区块,在该区块的全部交易执行并共识完成之后,在控制装置在确定对该区块的前一个区块进行的区块共识成功的情况中,控制装置可以基于前一个区块的哈希值以及属于该区块的全部交易的数据,生成该区块的区块头。并基于该区块头对该区块进行区块共识。
在步骤824中,若对该区块的区块共识成功,控制装置请求将该区块的区块头存入区块数据库中。
在步骤826中,存储装置将该区块的区块头存入区块数据库中。
在步骤828中,控制装置请求更新状态数据库中的世界状态。
在步骤830中,存储装置更新状态数据库中的世界状态。
在本实施例中,在根据第二缓存区中相对于该区块存储的各个参数的值,更新状态数据库中的世界状态之后,可以将第二缓存区中部分用于更新状态数据库的数据删除,以释放部分缓存。例如,当该区块中的全部交易执行完成后,接收到下一个区块的交易,若下一个区块中存在任一交易读取的参数为该区块中任一交易写入的参数时,则可以保留该缓存区存储的该区块中该交易写入的参数的值。而删除该缓存区存储的该区块中其它各个交易各自写入的参数的值,从而释放部分缓存。
本实施例可以先将该部分交易作为区块体,存入区块数据库中,针对多个区块中的任意一个区块,在该区块的前一个区块已经生成,并且该区块的全部交易都执行完成再生成该区块的区块头并将该区块的区块头存入区块数据库中,因此,相比于在区块的全部交易执行完成之后生成区块并存储区块的方案,减少了区块存入区块数据库所需要的时长,有利于降低时延。并且,本实施例采用了缓存区存储并更新各个交易各自写入的参数的值,因此,可以直接利用缓存区中存储的数据更新区块链的状态数据库,并将完成共识的各个交易的数据存入区块数据库中。从而解决了交易数据在数据库中更新滞后的问题。
下面结合一个完整的应用实例,对本说明书一个或多个实施例的方案进行示意性说明。
应用场景可以为:区块链的节点A处理区块101、区块102和区块103中的交易的过程。其中,节点A包括控制装置、计算装置以及存储装置。
具体来说,首先,经过区块链的多个节点的共识之后,区块101、区块102和区块103各自对应的数据包被发送至区块链的各个节点,任一区块对应的数据包中可包括属于该区块的多个交易各自的第一集合,任一交易的第一集合包括该交易读取参数和写入参数的键。其中,区块101对应于交易1~交易6,区块102对应于交易7~交易12,区块103对应于交易13~交易18。节点A的控制装置接收到区块101、区块102和区块103各自对应的数据包,并从区块101对应的数据包中获取交易1~交易6以及各自的第一集合,从区块102对应的数据包中获取交易7~交易12以及各自的第一集合,从区块103对应的数据包中获取交易13~交易18以及各自的第一集合。
接着,一方面,节点A的控制装置基于交易1~交易18各自的第一集合,从缓存区中查找交易1~交易18各自对应的读取参数的值。基于上述查找的结果,确定交易1、交易3以及交易9各自对应的读取参数的值存储于第二缓存区中(例如存储的与区块100对应的写入参数的值),控制装置从第二缓存区中获取这些参数的值并存储到第一缓存区中。交易2、交易4 ~交易8以及交易10~交易18各自对应的读取参数的值未存储于第二缓存区中。节点A的控制装置可通过至少一次读取操作从节点A的存储装置的状态数据库中获取交易2、交易4 ~交易8以及交易10~交易18各自对应的读取参数的值,并将获取到的数据存入第一缓存区中。使得第一缓存区中存储了交易1~交易18各自对应的读取参数的键和值。
另一方面,节点A的控制装置可以利用交易1~交易18各自的第一集合构成参数集合。根据该参数集合,确定交易1~交易3、交易6以及交易7存在访问冲突,交易4、交易5以及交易11~交易13存在访问冲突,剩下的交易8~交易10以及交易14~交易18相互之间均不存在访问冲突。可以将交易1~交易18放在一起进行分组,使得存在访问冲突的多个交易均被分到同一个交易组,剩下的不存在访问冲突的多个交易,可以随机分配。可以得到交易组a,交易组b和交易组c。其中,交易组a包括交易1~交易3、交易6、交易7以及交易16,交易组b包括交易4、交易5、交易11~交易13以及交易17,交易组c包括交易8~交易10、交易14~交易15以及交易18。
然后,节点A的控制装置可以将第一缓存区中存储的交易1~交易18各自对应的读取参数的键和值,以及交易组a,交易组b和交易组c发送至节点A的计算装置。计算装置可以基于交易1~交易18各自对应的读取参数的键和值,并行执行交易组a,交易组b和交易组c。并且,对于任意一个交易组,依次串行执行该交易组中包括的交易。计算装置可以随时将执行完成的交易的结果返回给计算装置。
接着,在执行完成交易1~交易18之前,可以通过区块链的多个节点基于执行完成的交易的结果,对已执行完成的部分交易进行共识,以确定部分交易是否各自执行成功。例如,在执行完成交易组a中所有交易时,可以对交易组a中所有交易进行共识(或者,也可以在执行完成交易组a中的交易1~交易3,对交易1~交易3进行共识),确定交易组a中所有交易是否执行成功。如果节点A为区块链中的记账节点,或和客户端对接的节点,则可以将共识成功的各个交易的执行结果返回给客户端,对于共识失败的交易,向客户端返回执行失败信息。继而,已执行完成的部分交易进行共识之后,例如,在对交易组a中所有交易共识之后,节点A的控制装置获取交易组a中的共识成功的各个交易的执行结果中包括的写入的参数的值,并在第二缓存区中存储交易组a中的共识成功的各个交易的执行结果中包括的写入的参数的值,以对缓存中存储的数据进行更新维护。具体来说,节点A的控制装置可以将共识成功的交易的执行结果中包括的写入的参数的值对应于该交易所属的区块存储在第二缓存区中。其中,对于同一个区块中共识成功的串行执行的多个交易,按照该多个交易的执行顺序依次将各个交易的写入参数的值相对于该区块存储到第二缓存区中,以保证参数状态的正确性。例如,如图9所示,在交易组a中的交易1~交易3都共识成功的情况中,首先将交易1的执行结果中包括的写入的参数key1和key2的值value1和value2对应于交易1所属的区块101存储在第二缓存区中,即存储到图9中的区块101的写集中,之后将交易2中写入的参数值存储到第二缓冲区中区块101的写集中,假设交易2中包括写入的参数key1的值value3,则在区块101的写集中以value3覆盖之前写入key1的值value1(图9中未示出),之后再将交易3中写入的参数的值存储到区块101的写集中。当如此在区块101的写集中存储区块101中的全部共识成功的交易的写入参数的值之后,由于该写集通过在对交易进行小批次共识之后进行存储所获取,从而可直接将该写集中包括的参数值更新到状态数据库中与区块101对应的世界状态中。接着,当区块101中的所有交易(交易1~交易6)均执行完成并共识之后,节点A的控制装置可以将区块101中的所有交易(交易1~交易6)的数据作为区块101的区块体,存入节点A的存储装置的区块数据库中。图10示出区块101的结构示意图。如图10所示,区块101中包括区块头和区块体,所述区块体中包括交易1~交易6各自的数据,其中,每个交易的数据中例如包括交易的交易体以及执行结果等数据。其中,交易1~交易6的交易体可以以交易树的数据结构进行存储,交易1~交易6的收据可以以收据树的数据结构进行存储。
然后,控制装置在确定对区块100进行的区块共识成功的情况中,基于区块100的哈希值以及属于区块101的全部交易的数据,生成如图10所示的区块101的区块头。如图10所示,区块头中包括头哈希、父哈希、交易根、收据根、状态根等数据。其中,头哈希为区块101的区块头中的除头哈希之外的数据的哈希值,父哈希为区块100的头哈希,交易根为区块101中的交易树的根哈希值,收据根为区块101中的收据树的根哈希值,状态根为区块101对应的状态树的根哈希值。其中,控制装置可基于图9中的区块101的写集确定区块101对状态树的更改,从而获取所述更改中的状态树的根哈希值。
之后,控制装置可对区块101进行区块共识,即与多个节点一起验证区块101的头哈希是否一致(或近似一致),如果一致则确定区块共识成功。若对区块101的区块共识成功,则将区块101的区块头存入存储装置的区块数据库中。
节点A的控制装置也可以在对区块101的区块共识成功之后,使用上述获取的区块101对状态树的更改,更新存储装置的状态数据库中的世界状态。在对区块101的区块共识成功之后,控制装置可将图9中的区块101的写集进行删除,从而释放缓存。
以此类推,依次完成区块102以及区块103的所有交易后,依次更新存储装置中的状态数据库以及区块数据库。当相对于区块103更新状态数据库中的世界状态之后,可暂时保留第二缓存区中的与区块103对应的参数的键和值,以用于对下一个区块进行参数预取。
可见,应用上述方案,在执行各个交易时,无需通过IO操作从存储区的状态数据库中获取各个交易各自读取的参数的值,从而减少了区块链的节点的IO操作,达到了减小时延的目的,提高了交易执行的效率,解决了交易数据更新滞后的问题,能够使得缓存区中存储的参数的值更为准确,提高了交易执行的成功率。
与前述区块链交易执行方法实施例相对应,本说明书还提供了区块链的节点的实施例。
如图11所示,图11是本说明书根据一示例性实施例示出的一种区块链的节点,该节点可以包括:第一获取模块1101,第二获取模块1102和执行模块1103。
其中,第一获取模块1101,用于获取属于第一区块的多个交易。
第二获取模块1102,用于获取该多个交易各自的第一集合,任一交易的第一集合包括该交易访问的参数的标识,访问的参数包括读取的参数。
执行模块1103,用于基于该多个交易各自的第一集合执行该多个交易。
在一些实施方式中,执行模块1103可以包括:存储子模块和执行子模块(图中未示出)。
其中,存储子模块,用于对于多个交易各自的第一集合中每个读取的参数的标识,若缓存区中未存储该标识对应的参数的值,从状态数据库中获取该参数的值,并将该参数的值存入所述缓存区。
执行子模块,用于基于缓存区存储的各个参数的值,执行该多个交易。
在另一些实施方式中,第二获取模块1102被配置用于:
在获取多个交易之后,从各个交易获取各自访问的参数的标识,得到该多个交易各自的第一集合。
在另一些实施方式中,访问的参数还可以包括写入的参数。
其中,第一获取模块1101被配置用于:获取多个区块的全部交易,多个区块包括第一区块。
其中,第二获取模块1102被配置用于:获取多个区块的全部交易各自的第一集合。
其中,执行模块1103可以包括:分组子模块和处理子模块(图中未示出)。
其中,分组子模块,用于基于多个区块的全部交易各自的第一集合,对多个区块的全部交易进行分组,以获取多个交易组。
处理子模块,用于对该多个交易组并行进行如下处理:对于每个交易组,串行执行该交易组中包括的交易。
在另一些实施方式中,该节点还可以包括:结果共识模块(图中未示出)。
其中,结果共识模块,用于在执行完成属于第一区块的全部交易之前,对已执行完成的部分交易的执行结果进行共识。
在另一些实施方式中,结果共识模块被配置用于:
通过区块链的多个节点对已执行完成的部分交易的执行结果进行共识验证,以确定该部分交易是否各自执行成功。
在另一些实施方式中,缓存区可以包括第一缓存区和第二缓存区。存储子模块通过如下方式将该参数的值存入所述缓存区:将该参数的值存入所述第一缓存区。
其中,该节点还可以包括:存储模块(图中未示出)。
其中,存储模块,用于在对已执行完成的部分交易的执行结果进行共识之后,将该部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于该共识成功的各个交易各自所属的区块,存储到第二缓存区中。
在另一些实施方式中,存储子模块通过如下方式从状态数据库中获取该参数的值:
在确定属于第二区块的全部交易中共识成功的各个交易的执行结果中包括的写入的各个参数的值都存储到第二缓存区中之后,对于多个交易各自的第一集合中每个读取的参数的标识,若第一缓存区和第二缓存区中都未存储该标识对应的参数的值,从状态数据库中获取该参数的值。其中,第二区块为第一区块的前一个区块。
在另一些实施方式中,该节点还可以包括:区块体存入模块(图中未示出)。
其中,区块体存入模块,用于将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。
在另一些实施方式中,该节点还可以包括:生成模块,区块共识模块和区块头存入模块(图中未示出)。
其中,生成模块,用于在第一区块的全部交易执行并共识完成之后,在确定对第二区块进行的区块共识成功的情况中,基于第二区块的哈希值以及属于第一区块的全部交易的数据,生成第一区块的区块头。其中,第二区块为第一区块的前一个区块。
区块共识模块,用于对第一区块进行区块共识。
区块头存入模块,用于若对第一区块的区块共识成功,将第一区块的区块头存入区块数据库中。
在另一些实施方式中,该节点还可以包括:更新模块(图中未示出)。
其中,更新模块,用于在属于第一区块的全部交易中共识成功的各个交易的执行结果中包括的写入的参数的值都存入第二缓存区之后,根据第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态。
如图12所示,图12是本说明书根据一示例性实施例示出的区块链的节点的结构框图,该节点可以包括:控制装置1201以及计算装置1202。
其中,控制装置1201,用于获取属于第一区块的多个交易以及多个交易各自的第一集合。基于该多个交易各自的第一集合,对该多个交易进行预处理,并将该多个交易和预处理的结果发送给计算装置1202。其中,任一交易的第一集合包括该交易访问的参数的标识,访问的参数包括读取的参数。
计算装置1202,用于基于所述预处理的结果执行多个交易。
在一些实施方式中,区块链的节点还可以包括存储装置(图中未示出)。
其中,控制装置1201通过如下方式基于该多个交易各自的第一集合,对该多个交易进行预处理:对于该多个交易各自的第一集合中每个读取的参数的标识,若控制装置1201的缓存区中未存储该标识对应的参数的值,控制装置1201从存储装置的状态数据库中获取该参数的值,并将该参数的值存入缓存区。其中,预处理的结果可以包括存入缓存区的各个参数的值。
在另一些实施方式中,控制装置1201通过如下方式获取该多个交易各自的第一集合:在获取该多个交易之后,控制装置1201从各个交易获取各自访问的参数的标识,得到该多个交易各自的第一集合。
在另一些实施方式中,访问的参数还可以包括写入的参数。
其中,控制装置1201通过如下方式获取属于第一区块的多个交易:获取多个区块的全部交易,该多个区块包括第一区块。
控制装置1201通过如下方式获取多个交易各自的第一集合:获取多个区块的全部交易各自的第一集合。
控制装置1201通过如下方式基于多个交易各自的第一集合,对多个交易进行预处理:
基于多个区块的全部交易各自的第一集合,对多个区块的全部交易进行分组,以获取多个交易组,其中,预处理的结果包括该多个交易组。
其中,计算装置1202通过如下方式基于预处理的结果执行多个交易:
对多个交易组并行进行如下处理:对于每个交易组,串行执行该交易组中包括的交易。
在另一些实施方式中,在计算装置1202执行完成属于第一区块的全部交易之前,控制装置1201对已执行完成的部分交易的执行结果进行共识。
在另一些实施方式中,缓存区包括第一缓存区和第二缓存区。
其中,控制装置1201通过如下方式将该参数的值存入所述缓存区:将该参数的值存入第一缓存区。
其中,在控制装置1201对已执行完成的部分交易的执行结果进行共识之后,控制装置1201将已执行完成的部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于共识成功的各个交易各自所属的区块,存储到第二缓存区中。
在另一些实施方式中,控制装置1201在确定属于第二区块的全部交易中共识成功的各个交易的执行结果中包括的写入的各个参数的值都存储到第二缓存区中之后,对于多个交易各自的第一集合中每个读取的参数的标识,若控制装置1201的第一缓存区和第二缓存区中都未存储该标识对应的参数的值,控制装置1201从存储装置的状态数据库中获取该参数的值。其中,第二区块为第一区块的前一个区块。
在另一些实施方式中,控制装置1201还被配置用于:
指示存储装置将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。
在另一些实施方式中,控制装置1201还被配置用于:
在存储装置将第一区块的全部交易执行并共识完成之后,在确定对第二区块进行的区块共识成功的情况中,基于第二区块的哈希值以及属于第一区块的全部交易的数据,生成第一区块的区块头。其中,第二区块为第一区块的前一个区块,并对第一区块进行区块共识。若对第一区块的区块共识成功,指示存储装置将第一区块的区块头存入区块数据库中。
在另一些实施方式中,控制装置1201还被配置用于:
在第一区块中的多个交易执行完成,并将多个交易及各自对应的收据作为第一区块的区块体,按照各自所属区块存入区块数据库中之后,在确定第一区块的前一个区块存入区块数据库的情况中,基于前一个区块的哈希值、第二缓存区中存储的第一区块对应的各个参数的值对应的世界状态以及第一区块的区块体,生成第一区块的区块头,并对第一区块的区块头进行区块共识。
在另一些实施方式中,控制装置1201还被配置用于:
在属于第一区块的全部交易中共识成功的各个交易的执行结果中包括的写入的参数的值都存入第二缓存区之后,指示存储装置根据第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态。
如图13所示,图13是本说明书根据一示例性实施例示出的一种用于区块链节点的控制装置的结构框图,该控制装置可以包括:获取单元1301以及预处理单元1302。
其中,获取单元1301,用于获取属于第一区块的多个交易,并获取多个交易各自的第一集合。任一交易的第一集合包括该交易访问的参数的标识,访问的参数包括读取的参数。
预处理单元1302,用于对多个交易进行预处理,并指示区块链节点基于预处理的结果执行多个交易。
在另一些实施方式中,预处理单元1302通过如下方式对多个交易进行预处理:对于多个交易各自的第一集合中每个读取的参数的标识,若缓存区中未存储该标识对应的参数的值,从区块链节点的状态数据库中获取该参数的值,并将该参数的值存入缓存区。其中,预处理的结果包括存入缓存区的各个参数的值。
在另一些实施方式中,该控制装置还可以包括:结果共识单元(图中未示出)。
其中,结果共识单元,用于在区块链节点执行完成属于第一区块的全部交易之前,对已执行完成的部分交易的执行结果进行共识。
在另一些实施方式中,缓存区包括第一缓存区和第二缓存区。预处理单元1302通过如下方式将该参数的值存入所述缓存区:将该参数的值存入第一缓存区。
其中,该控制装置还可以包括:存储单元(图中未示出)。
其中,存储单元,用于将上述部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于共识成功的各个交易各自所属的区块,存储到第二缓存区中。
在另一些实施方式中,该控制装置还可以包括:第一指示单元(图中未示出)。
其中,第一指示单元,用于指示区块链节点将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。
在另一些实施方式中,该控制装置还可以包括:生成单元,区块共识单元和第二指示单元(图中未示出)。
其中,生成单元,用于在区块链节点将第一区块的全部交易执行并共识完成之后,在确定对第二区块进行的区块共识成功的情况中,基于第二区块的哈希值以及属于第一区块的全部交易的数据,生成第一区块的区块头。
区块共识单元,用于对第一区块进行区块共识。其中,第二区块为第一区块的前一个区块。
第二指示单元,用于若对第一区块的区块共识成功,指示区块链节点将第一区块的区块头存入区块数据库中。
在另一些实施方式中,该控制装置还可以包括:第三指示单元(图中未示出)。
其中,第三指示单元,用于在属于第一区块的全部交易中共识成功的各个交易的执行结果中包括的写入的参数的值都存入第二缓存区之后,指示区块链节点根据第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书一个或多个实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书一个或多个实施例还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图2至图8任一实施例提供的区块链交易执行方法。
对应于上述的区块链交易执行方法,本说明书一个或多个实施例还提出了图14所示的根据本说明书的一示例性实施例的电子设备的示意结构图。请参考图14,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成区块链交易执行装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (25)

1.一种区块链交易执行方法,应用于区块链的节点,所述方法包括:
获取属于第一区块的多个交易;
获取所述多个交易各自的第一集合;任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;
基于所述多个交易各自的第一集合执行所述多个交易。
2.根据权利要求1所述的方法,其中,所述基于所述多个交易各自的第一集合执行所述多个交易,包括:
对于所述多个交易各自的第一集合中每个读取的参数的标识,若缓存区中未存储该标识对应的参数的值,从状态数据库中获取该参数的值,并将该参数的值存入所述缓存区;
基于所述缓存区存储的各个参数的值,执行所述多个交易。
3.根据权利要求1所述的方法,所述获取所述多个交易各自的第一集合,包括:
在获取所述多个交易之后,从各个交易获取各自访问的参数的标识,得到所述多个交易各自的第一集合。
4.根据权利要求1所述的方法,其中,所述访问的参数还包括写入的参数;
其中,所述获取属于第一区块的多个交易,包括:获取多个区块的全部交易,所述多个区块包括所述第一区块;
其中,所述获取所述多个交易各自的第一集合,包括:获取所述全部交易各自的第一集合;
其中,所述基于所述多个交易各自的第一集合执行所述多个交易,包括:
基于所述全部交易各自的第一集合,对所述全部交易进行分组,以获取多个交易组;
对所述多个交易组并行进行如下处理:对于每个交易组,串行执行该交易组中包括的交易。
5.根据权利要求2所述的方法,其中,在执行完成属于所述第一区块的全部交易之前,所述方法还包括:
对已执行完成的部分交易的执行结果进行共识。
6.根据权利要求5所述的方法,其中,所述对已执行完成的部分交易的执行结果进行共识,包括:
通过所述区块链的多个节点对所述部分交易的执行结果进行共识验证,以确定所述部分交易是否各自执行成功。
7.根据权利要求5所述的方法,其中,所述缓存区包括第一缓存区和第二缓存区;所述将该参数的值存入所述缓存区,包括:将该参数的值存入所述第一缓存区;
其中,所述方法还包括:
在对已执行完成的部分交易的执行结果进行共识之后,将所述部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于所述共识成功的各个交易各自所属的区块,存储到所述第二缓存区中。
8.根据权利要求7所述的方法,其中,所述对于所述多个交易各自的第一集合中每个读取的参数的标识,若缓存区中未存储该标识对应的参数的值,从状态数据库中获取该参数的值,包括:
在确定属于第二区块的全部交易中共识成功的各个交易的执行结果中包括的写入的各个参数的值都存储到所述第二缓存区中之后,对于所述多个交易各自的第一集合中每个读取的参数的标识,若所述第一缓存区和所述第二缓存区中都未存储该标识对应的参数的值,从状态数据库中获取该参数的值;其中,所述第二区块为所述第一区块的前一个区块。
9.根据权利要求7所述的方法,还包括:
将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。
10.根据权利要求9所述的方法,在所述第一区块的全部交易执行并共识完成之后,还包括:
在确定对第二区块进行的区块共识成功的情况中,基于所述第二区块的哈希值以及属于所述第一区块的全部交易的数据,生成所述第一区块的区块头;其中,所述第二区块为所述第一区块的前一个区块;
对所述第一区块进行区块共识;
若对所述第一区块的区块共识成功,将所述第一区块的区块头存入所述区块数据库中。
11.根据权利要求10所述的方法,在属于所述第一区块的全部交易中共识成功的各个交易的执行结果中包括的写入的参数的值都存入所述第二缓存区之后,还包括:根据所述第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态。
12.一种区块链交易执行方法,应用于区块链的节点,所述区块链的节点包括控制装置以及计算装置,所述方法包括:
所述控制装置获取属于第一区块的多个交易,并获取所述多个交易各自的第一集合;任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;
所述控制装置基于所述多个交易各自的第一集合,对所述多个交易进行预处理,并将所述多个交易和所述预处理的结果发送给所述计算装置;
所述计算装置基于所述预处理的结果执行所述多个交易。
13.根据权利要求12所述的方法,其中,所述区块链的节点还包括存储装置;
其中,所述控制装置基于所述多个交易各自的第一集合,对所述多个交易进行预处理,包括:
对于所述多个交易各自的第一集合中每个读取的参数的标识,若所述控制装置的缓存区中未存储该标识对应的参数的值,所述控制装置从所述存储装置的状态数据库中获取该参数的值,并将该参数的值存入所述缓存区;
其中,所述预处理的结果包括存入所述缓存区的各个参数的值。
14.根据权利要求12所述的方法,其中,所述控制装置获取所述多个交易各自的第一集合,包括:
在获取所述多个交易之后,所述控制装置从各个交易获取各自访问的参数的标识,得到所述多个交易各自的第一集合。
15.根据权利要求12所述的方法,其中,所述访问的参数还包括写入的参数;
其中,所述控制装置获取属于第一区块的多个交易,包括:所述控制装置获取多个区块的全部交易,所述多个区块包括所述第一区块;
其中,所述控制装置获取所述多个交易各自的第一集合,包括:所述控制装置获取所述全部交易各自的第一集合;
其中,所述控制装置基于所述多个交易各自的第一集合,对所述多个交易进行预处理,包括:
所述控制装置基于所述全部交易各自的第一集合,对所述全部交易进行分组,以获取多个交易组;其中,所述预处理的结果包括所述多个交易组;
其中,所述计算装置基于所述预处理的结果执行所述多个交易,包括:
所述计算装置对所述多个交易组并行进行如下处理:对于每个交易组,串行执行该交易组中包括的交易。
16.根据权利要求13所述的方法,其中,在所述计算装置执行完成属于所述第一区块的全部交易之前,所述方法还包括:
所述控制装置对已执行完成的部分交易的执行结果进行共识。
17.根据权利要求16所述的方法,其中,所述缓存区包括第一缓存区和第二缓存区;所述将该参数的值存入所述缓存区,包括:将该参数的值存入所述第一缓存区;
其中,在所述控制装置对已执行完成的部分交易的执行结果进行共识之后,所述方法还包括:
所述控制装置将所述部分交易中共识成功的各个交易的执行结果中包括的写入参数的值,相对于所述共识成功的各个交易各自所属的区块,存储到所述第二缓存区中。
18.根据权利要求17所述的方法,其中,所述对于所述多个交易各自的第一集合中每个读取的参数的标识,若所述控制装置的缓存区中未存储该标识对应的参数的值,所述控制装置从所述存储装置的状态数据库中获取该参数的值,包括:
在确定属于第二区块的全部交易中共识成功的各个交易的执行结果中包括的写入的各个参数的值都存储到所述第二缓存区中之后,对于所述多个交易各自的第一集合中每个读取的参数的标识,若所述控制装置的所述第一缓存区和所述第二缓存区中都未存储该标识对应的参数的值,所述控制装置从所述存储装置的状态数据库中获取该参数的值;其中,所述第二区块为所述第一区块的前一个区块。
19.根据权利要求17所述的方法,还包括:
所述控制装置指示所述存储装置将完成共识的各个交易的数据作为其所属区块的至少部分区块体,存入区块数据库中。
20.根据权利要求19所述的方法,在所述存储装置将所述第一区块的全部交易执行并共识完成之后,还包括:
在确定对第二区块进行的区块共识成功的情况中,所述控制装置基于所述第二区块的哈希值以及属于所述第一区块的全部交易的数据,生成所述第一区块的区块头;其中,所述第二区块为所述第一区块的前一个区块;
所述控制装置对所述第一区块进行区块共识;
若对所述第一区块的区块共识成功,所述控制装置指示所述存储装置将所述第一区块的区块头存入所述区块数据库中。
21.根据权利要求20所述的方法,在属于所述第一区块的全部交易中共识成功的各个交易的执行结果中包括的写入的参数的值都存入所述第二缓存区之后,还包括:所述控制装置指示所述存储装置根据所述第二缓存区中相对于第一区块存储的各个参数的值,更新状态数据库中的世界状态。
22.一种区块链节点,包括:
第一获取模块,用于获取属于第一区块的多个交易;
第二获取模块,用于获取所述多个交易各自的第一集合;任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;
执行模块,用于基于所述多个交易各自的第一集合执行所述多个交易。
23.一种区块链节点,包括控制装置以及计算装置;
其中,所述控制装置,用于获取属于第一区块的多个交易以及所述多个交易各自的第一集合;基于所述多个交易各自的第一集合,对所述多个交易进行预处理,并将所述多个交易和所述预处理的结果发送给所述计算装置;其中,任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;
所述计算装置,用于基于所述预处理的结果执行所述多个交易。
24.一种用于区块链节点的控制装置,包括:
获取单元,用于获取属于第一区块的多个交易,并获取所述多个交易各自的第一集合;任一交易的第一集合包括该交易访问的参数的标识;所述访问的参数包括读取的参数;
预处理单元,用于对所述多个交易进行预处理,并指示所述区块链节点基于所述预处理的结果执行所述多个交易。
25.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-21中任一项所述的方法。
CN202110481574.5A 2021-04-30 2021-04-30 区块链交易执行方法、区块链节点及控制装置 Pending CN112883068A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110481574.5A CN112883068A (zh) 2021-04-30 2021-04-30 区块链交易执行方法、区块链节点及控制装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110481574.5A CN112883068A (zh) 2021-04-30 2021-04-30 区块链交易执行方法、区块链节点及控制装置

Publications (1)

Publication Number Publication Date
CN112883068A true CN112883068A (zh) 2021-06-01

Family

ID=76040265

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110481574.5A Pending CN112883068A (zh) 2021-04-30 2021-04-30 区块链交易执行方法、区块链节点及控制装置

Country Status (1)

Country Link
CN (1) CN112883068A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656510A (zh) * 2021-08-26 2021-11-16 支付宝(杭州)信息技术有限公司 区块链系统中执行交易的方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107392611A (zh) * 2017-03-24 2017-11-24 阿里巴巴集团控股有限公司 一种发送交易信息和共识验证的方法及装置
CN108572986A (zh) * 2017-03-13 2018-09-25 华为软件技术有限公司 一种数据更新的方法及节点设备
CN109410084A (zh) * 2018-10-17 2019-03-01 郑称德 基于电子商务的农贸系统的移动支付控制方法及农贸系统
CN109685657A (zh) * 2018-12-25 2019-04-26 众安信息技术服务有限公司 在区块链网络中处理交易的方法和节点设备以及存储介质
WO2019208861A1 (ko) * 2018-04-26 2019-10-31 (주)넥슨코리아 전자 지갑을 이용한 암호화폐의 거래 서비스를 제공하는 장치 및 방법
CN111241061A (zh) * 2020-01-09 2020-06-05 平安科技(深圳)有限公司 状态数据库的写入方法、数据处理装置及存储介质
CN111523147A (zh) * 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 一种基于区块链的核身方法及相关硬件

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108572986A (zh) * 2017-03-13 2018-09-25 华为软件技术有限公司 一种数据更新的方法及节点设备
CN107392611A (zh) * 2017-03-24 2017-11-24 阿里巴巴集团控股有限公司 一种发送交易信息和共识验证的方法及装置
WO2019208861A1 (ko) * 2018-04-26 2019-10-31 (주)넥슨코리아 전자 지갑을 이용한 암호화폐의 거래 서비스를 제공하는 장치 및 방법
CN109410084A (zh) * 2018-10-17 2019-03-01 郑称德 基于电子商务的农贸系统的移动支付控制方法及农贸系统
CN109685657A (zh) * 2018-12-25 2019-04-26 众安信息技术服务有限公司 在区块链网络中处理交易的方法和节点设备以及存储介质
CN111241061A (zh) * 2020-01-09 2020-06-05 平安科技(深圳)有限公司 状态数据库的写入方法、数据处理装置及存储介质
CN111523147A (zh) * 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 一种基于区块链的核身方法及相关硬件

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656510A (zh) * 2021-08-26 2021-11-16 支付宝(杭州)信息技术有限公司 区块链系统中执行交易的方法及装置

Similar Documents

Publication Publication Date Title
EP3678346B1 (en) Blockchain smart contract verification method and apparatus, and storage medium
CN113064730A (zh) 区块链交易执行方法、区块链节点及控制装置
CN112887437B (zh) 区块链交易处理方法、区块链节点和区块链系统
CN108681565B (zh) 区块链数据并行处理方法、装置、设备和存储介质
CN112884587B (zh) 区块链交易执行方法、区块链节点及控制装置
US20210049715A1 (en) Blockchain-based data procesing method, apparatus, and electronic device
CN112988819B (zh) 区块链交易执行方法、区块链节点及控制装置
CN112883067A (zh) 区块链交易执行方法、区块链节点及控制装置
CN102426594A (zh) 对数据库进行操作的方法和系统
CN109951547A (zh) 事务请求并行处理方法、装置、设备和介质
CN111882435A (zh) 在区块链中执行交易的方法及装置
CN113596010B (zh) 一种数据处理方法、装置、节点设备及计算机存储介质
CN106776791A (zh) 一种基于云服务的模式串匹配验证方法及装置
CN110675255A (zh) 在区块链中并发执行交易的方法和装置
CN110443712A (zh) 合约冲突检测方法、装置、可读存储介质和计算机设备
CN112988818B (zh) 区块链交易执行方法、区块链节点及控制装置
CN112884588B (zh) 区块链交易执行方法、区块链节点及控制装置
CN105051708A (zh) 用于包含存储器节点的分布式存储器系统的设备及方法
CN112883068A (zh) 区块链交易执行方法、区块链节点及控制装置
CN116361232A (zh) 片上缓存的处理方法、装置、芯片及存储介质
CN113743943B (zh) 在区块链中执行交易的方法、区块链、主节点和从节点
CN112667593A (zh) 一种ETL流程执行hbase快速装载的方法与装置
CN110689344A (zh) 在区块链中并发执行交易的方法和装置
CN114022148B (zh) 基于区块链的交易冲突检测方法、装置、设备和存储介质
CN113743949B (zh) 在区块链中执行交易的方法、区块链、主节点和从节点

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination