CN112508574A - 一种区块链的并行交易执行方法、装置和电子设备 - Google Patents

一种区块链的并行交易执行方法、装置和电子设备 Download PDF

Info

Publication number
CN112508574A
CN112508574A CN202110145817.8A CN202110145817A CN112508574A CN 112508574 A CN112508574 A CN 112508574A CN 202110145817 A CN202110145817 A CN 202110145817A CN 112508574 A CN112508574 A CN 112508574A
Authority
CN
China
Prior art keywords
transaction
dependency
bucket
effective
intelligent contract
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
CN202110145817.8A
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.)
Beijing Holographic Zhixin Technology Co ltd
Original Assignee
Beijing Holographic Zhixin Technology 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 Beijing Holographic Zhixin Technology Co ltd filed Critical Beijing Holographic Zhixin Technology Co ltd
Priority to CN202110145817.8A priority Critical patent/CN112508574A/zh
Publication of CN112508574A publication Critical patent/CN112508574A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种区块链的并行交易执行方法、装置及电子设备,通过在智能合约部署时和区块链交易提交时主动声明、区块链协议栈通过代码分析主动发现和执行交易时通过世界状态的读写被动发现等方式发掘和维护智能合约间的依赖关系,然后在区块生成和验证时基于依赖关系将没有依赖关系的交易分到不同的交易桶、每个交易桶由一个单独的交易执行线程依据确定的顺序执行桶中的交易,从而实现对没有依赖关系的交易的并发执行。本发明并发执行没有依赖关系的交易的方式,与本发明前区块链协议栈顺次执行所有交易的方式相比,能够有效节省区块生成和验证时执行交易所需要的时间,从而提高区块链的并发能力、降低区块链的时延,改善区块链协议栈的整体性能。

Description

一种区块链的并行交易执行方法、装置和电子设备
技术领域
本发明涉及区块链技术领域,尤其是在区块生成和区块验证中交易执行这一技术领域。
背景技术
区块链网络上的节点在生成区块时,需要选择并依确定性的顺序,顺次执行一组交易,达成新的世界状态,方可生成区块,进而参与共识。同样,区块链节点在验证区块时,需要依同样的确定性的顺序,顺次执行区块里包含的一组交易并达成新的世界状态,方可验证区块并进而参与共识。
因为交易是顺次执行,为了提高出块速度,每个区块能够包含的交易数量可能非常有限,这严重影响区块链的并发能力等性能。执行逻辑复杂、耗时较长的交易时,这个问题就更突出。
发明内容
为了解决上述技术问题中的至少一个,本发明提供了一种区块链的并行交易执行方法、装置、电子设备和可读存储介质。
本发明的第一方面,提供了一种区块链的并行交易执行方法,包括:
获取每个交易的有效依赖关系;
根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶;
并行地执行每个交易桶中的交易。
可选地,获取每个交易的有效依赖关系,包括:
获取每个交易的目标智能合约的有效依赖关系;和/或,获取每个交易声明的有效依赖关系。
其中,预先设置每个交易的目标智能合约的有效依赖关系,直接获取每个交易的目标智能合约的有效依赖关系作为交易的有效依赖关系;或者,规定每个交易需要声明有效依赖关系,将交易声明的有效依赖关系作为交易的有效依赖关系;又或者,预先设置每个交易的目标智能合约的有效依赖关系,以及,每个交易需要声明有效依赖关系,将交易的目标智能合约的有效依赖关系和交易声明的有效依赖关系的并集作为交易的有效依赖关系。在本发明实施例中,有效依赖关系通过一个元数据表达,元数据包括未设定、不相关、以及至少一个地址三种取值情况。
可选地,获取每个交易的有效依赖关系,包括:
获取每个交易的目标智能合约的依赖关系和依赖解除;
获取所述每个交易声明的依赖关系和依赖解除;
根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系。
可选地,根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系,包括:
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均不为未设定时,计算所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系的并集,将所述并集减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易声明的显式依赖解除,得到所述任一交易的有效依赖关系。
其中,显式依赖解除指包括一个或多个地址的依赖解除。
可选地,根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系,包括:
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均为未设定时,确定所述任一交易的有效依赖关系为未设定;
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系中的一个为未设定时,将所述任一交易的目标智能合约的依赖关系和所述每个交易声明的依赖关系中的另一个减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易声明的显式依赖解除,得到所述任一交易的有效依赖关系。
其中,显式依赖解除指包括一个或多个地址的依赖解除。
可选地,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,包括:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为不相关时,为所述任一交易分配单独的交易桶。
可选地,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,包括:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为未设定时,将所述任一交易分配至用于存放有效依赖关系为未设定的至少一个交易的交易桶。
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为一个或多个地址时,将所述任一交易分配至用于存放有效依赖关系相同的交易的交易桶。
可选地,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,包括:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为未设定时,或者,当所述任一交易的有效依赖关系为一个或多个地址时,将所述任一交易分配至用于存放有效依赖关系不为不相关的至少一个交易的交易桶。
可选地,方法还包括:
当用于分配的交易桶不存在时,创建对应的交易桶。
可选地,并行地执行每个交易桶中的交易,包括:
为每个交易桶创建一个线程,各个线程并行地执行每个交易桶中的交易。
可选地,并行地执行每个交易桶中的交易,包括:
创建多个线程,每个线程对应至少一个用于存放有效依赖关系为不相关的交易的交易桶,和/或,每个线程对应至少一个用于存放有效依赖关系相同的交易的交易桶;
各个线程并行地执行对应的多个交易桶中的交易。
可选地,获取每个交易的有效依赖关系之后,还包括:
将所述有效依赖关系更新至区块链网络的世界状态数据。
可选地,所述执行每个交易桶中的交易之后,还包括:
判断所述每个交易桶中的交易在执行时使用的依赖关系与所述有效依赖关系是否一致;如果是,确定交易执行成功;否则,确定交易执行失败。
可选地,所述确定交易执行失败之后,还包括:
如果确定所述目标智能合约的依赖关系和/或依赖解除有误导致交易执行失败,修正所述目标智能合约的依赖关系和/或依赖解除,如果确定交易声明的依赖解除导致交易执行失败,执行惩罚交易发起方的处理流程。
可选地,当区块生成时,或者,当区块验证时,获取每个交易的有效依赖关系,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,并行地执行每个交易桶中的交易。
本发明的第二方面,提供了一种区块链的并行交易执行装置,包括:
有效依赖关系获取模块,用于获取每个交易的有效依赖关系;
交易桶分配模块,用于根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶;
交易执行模块,用于并行地执行每个交易桶中的交易。
可选地,所述有效依赖关系获取模块,具体用于:
获取每个交易的目标智能合约的有效依赖关系;和/或,获取每个交易声明的有效依赖关系。
可选地,所述有效依赖关系获取模块,具体用于:
获取每个交易的目标智能合约的依赖关系和依赖解除;
获取所述每个交易声明的依赖关系和依赖解除;
根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系。
可选地,所述有效依赖关系获取模块用于根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系时,具体用于:
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均不为未设定时,计算所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系的并集,将所述并集减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易声明的显式依赖解除,得到所述任一交易的有效依赖关系。
可选地,所述有效依赖关系获取模块用于根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系时,具体用于:
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均为未设定时,确定所述任一交易的有效依赖关系为未设定;
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系中的一个为未设定时,将所述任一交易的目标智能合约的依赖关系和所述每个交易声明的依赖关系中的另一个减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易声明的显式依赖解除,得到所述任一交易的有效依赖关系。
可选地,所述交易桶分配模块具体用于:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为不相关时,为所述任一交易分配单独的交易桶。
可选地,所述交易桶分配模块具体用于:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为未设定时,将所述任一交易分配至用于存放有效依赖关系为未设定的至少一个交易的交易桶。
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为一个或多个地址时,将所述任一交易分配至用于存放有效依赖关系相同的交易的交易桶。
可选地,所述交易桶分配模块还用于:
当用于分配的交易桶不存在时,创建对应的交易桶。
可选地,所述交易执行模块具体用于:
为每个交易桶创建一个线程,各个线程并行地执行每个交易桶中的交易。
可选地,所述交易执行模块具体用于:
创建多个线程,每个线程对应至少一个用于存放有效依赖关系为不相关的交易的交易桶,和/或,每个线程对应至少一个用于存放有效依赖关系相同的交易的交易桶;
各个线程并行地执行对应的多个交易桶中的交易。
可选地,装置还包括:
状态数据更新模块,用于将所述有效依赖关系更新至区块链网络的世界状态数据。
可选地,所述交易执行检验模块,用于判断所述每个交易桶中的交易在执行时使用的依赖关系与所述有效依赖关系是否一致;如果是,确定交易执行成功;否则,确定交易执行失败。
可选地,所述交易执行检验模块,还用于:
在确定交易执行失败之后,如果确定所述目标智能合约的依赖关系和/或依赖解除有误导致交易执行失败,修正所述目标智能合约的依赖关系和/或依赖解除,如果确定交易声明的依赖解除导致交易执行失败,执行惩罚交易发起方的处理流程。
本发明的第三方面,提供了一种电子设备,包括存储器和处理器,所述存储器用于存储计算机指令,所述计算机指令被所述处理器执行以实现如本发明第一方面所述的方法。
本发明的第四方面,提供了一种可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现本发明第一方面所述的方法。
本发明是一个区块链上智能合约交易执行的方法。在生成区块和验证区块时,该方法根据智能合约和交易本身的依赖关系对待执行的交易进行分桶(交易桶)。不同交易桶中的交易,彼此完全没有依赖关系,也就是说任何两个分属不同交易桶的交易,不会读写相同的“状态”。这样,就可以为每一个交易桶创建一个交易执行线程。同一个交易桶中的交易,由对应的交易执行线程顺次执行,但是分属不同交易桶的交易,由这些交易执行线程并行执行。这里,名词“线程”特指一个(或一组相同的)可供操作***调度、CPU执行的程序控制流程,在实现中不一定必须对应一个(或一组)操作***线程或进程。
依赖关系,可以在部署智能合约或提交交易时主动声明、区块链协议栈进行代码分析主动发现、执行交易时被动发现等方式获得和更新。依赖关系的作用范围,可以是合约级、交易级。合约级依赖关系,对面向该智能合约的所有业务交易适用,并记录到“世界状态”中。交易级的依赖关系,只对当前交易适用。交易级的依赖关系,有更高优先级。
一个区块链网络上的智能合约,经常互不依赖。在由配置多核CPU的区块链节点组成的区块链网络上,本发明的并行执行方法能够有效缩短区块生成和验证时交易执行的时间,从而节省整个区块共识全流程的时间,提高整个区块链的性能。
附图说明
附图示出了本发明的示例性实施方式,并与其说明一起用于解释本发明的原理,其中包括了这些附图以提供对本发明的进一步理解,并且附图包括在本说明书中并构成本说明书的一部分。
图 1是本发明的交易分桶和并行执行示例。
具体实施方式
下面结合附图和实施方式对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施方式仅用于解释相关内容,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分。
需要说明的是,在不冲突的情况下,本发明中的实施方式及实施方式中的特征可以相互组合。下面将参考附图并结合实施方式来详细说明。
一种区块链协议栈在生成区块时按确定性的顺序,顺次执行即将进入区块的交易,达成新的世界状态并计入新区块;在验证区块时依同样确定性的顺序,顺次执行区块中的交易,达成新的世界状态并与区块中的世界状态声明进行比对。
与上述的区块链协议栈不同,另一种区块链协议栈“前置”交易(提议)的真正执行,并把状态的读写结果和各个背书节点(endorser)的签名计入真正的交易。在生成和验证区块时,这些交易在排序节点(orderer)和提交节点(committer)的“执行”只是“验证”每个交易内包含的各个背书节点的签名,这个“执行”相对真正的交易执行通常要快。但是,如果一个交易的背书节点很多时,验证这些背书节点的签名也可能费时不菲。
因为在生成区块和验证区块时,交易是顺次执行,为了提高出块和共识速度,每个区块能够包含的交易数量可能非常有限,这严重影响区块链的并发能力等性能。如果是执行逻辑复杂、耗时较长的交易,这个问题就更突出。
本发明实施例提供的并行交易执行方法包括以下三个方面:
1、依赖关系与依赖解除。
本发明在智能合约的部署交易和提交智能合约执行的业务交易中引入两个新的可选的元数据,称为依赖关系(deprel)和依赖解除(deprem)。前者支持一个智能合约(在部署时)或一个业务交易(在提交时)通过显式的设定deprel来声明其依赖关系,后者支持一个智能合约或一个业务交易显式的解除其可可能继承的依赖。
依赖关系(deprel)和依赖解除(deprem)的取值为未设定(“undef”)、不相关(“n/a”),或者是有相关,后者用一组智能合约地址(或用户地址)的列表表示。
如果一个智能合约完全不依赖其他智能合约,或者一个业务交易除了继承目标智能合约的依赖关系之外没有其他依赖,则其deprel值应该设置为不相关(“n/a”)。
如果一个智能合约在部署时没有设定deprel,则区块链协议栈设置其依赖关系为未设定(“undef”)。如果一个业务交易在提交时没有设定deprel而且其目标智能合约的依赖列表为未设定(“undef”),则区块链协议栈设置其依赖列表为未设定(“undef”)。
一个业务交易的有效依赖关系(depeff),是其目标智能合约(或目标用户)的依赖关系和自身依赖关系的并集,但剔除其显式解除的依赖。
比如,如果智能合约A在部署时声明依赖关系(deprel)为 “0x1…1”, “0x2…2”,“0x3…3” 表明其有三个依赖,其智能合约地址分别为0x1…1和0x2...2和0x3…3。如果目标未智能合约为A的业务交易T在提交时声明其依赖关系(deprel)为“0x4…4”,声明其依赖解除(deprem)为 “0x1…1”,则业务交易T的有效依赖关系(depeff)为 “0x2…2”, “0x3…3”, “0x4…4”。
2、依赖关系的建立。
如图1所示,一个区块链协议栈会有一个自动或手工的所谓的合约部署模块(图块100),该模块接收并执行部署交易,以完成新智能合约在区块链网络上各个节点的部署。本发明对该模块添加新能力,即收集和发现依赖关系的能力,具体表现为:通过***署交易中的依赖关系(deprel)和依赖解除(deprem)设置,同时可选的,如果可能的话,分析新智能合约的代码主动发现依赖关系和依赖解除设置。从两个依赖关系(deprel)的并集,剔除两个依赖解除(deprem)的并集,得到该智能合约的有效依赖关系(depeff)并将其记录进入合约依赖状态库(图1图块101,第a)步)。
同样如图1所示,一个区块链协议栈会有一个所谓的状态收集模块(图块109)来收集交易执行之后形成的新的世界状态。本发明对该模块添加新能力,即分析各个并行执行的交易执行线程(图块106、107、108)完成交易执行之后收集的状态读写操作,判断交易分桶模块(图块102)依赖的有效依赖关系的真实性。如果一个交易依赖了未曾发现的依赖关系,则该交易会失败,同时其目标智能合约的有效依赖关系会相应更新并记录到合约依赖状态库(图块101,第(5)步)。
合约依赖状态库,是一个区块链网络的世界状态的一部分。
3、分桶及并行处理。
本发明在区块生成和验证时,基于各个交易的有效依赖关系对交易分桶,然后实现对无有效依赖关系的交易进行并行处理,以提高区块链的性能。
分桶原则如下:
(1)有效依赖关系为不相关(n/a)的交易,可以单独占桶,以实现最好的并发性能。
(2)有效依赖关系为未设定(“undef”)的交易,为了兼容性,都分配进入同一个交易桶。
(3)每一个独特的有效依赖关系,如果其既非未设定(undef)又非不相关(n/a),则分配一个单独的交易桶。
并发原则如下:
(1)每一个交易桶,对应创建一个交易执行线程(如图块106、107、108所示)。
(2)如果有效依赖关系为不相关(“n/a”)的交易桶过多、或者独特有效依赖关系的数量过多,可以考虑多个交易桶共享一个交易执行线程,以控制并发线程的数量(最大并发线程数量可以设定)。
基于以上的分桶原则,在区块生成和区块验证时,给定一组交易,本发明的并行处理流程如下:
(1)交易分桶模块(图块102)对每一个交易,基于其目标智能合约的地址,查询合约状态依赖库(图块101)得到目标智能合约的有效依赖关系,加上交易本身可能声明的依赖关系,剔除交易本身可能声明的依赖解除,得到该交易的有效依赖关系。
(2)如果该有效依赖关系没有对应的交易桶(如图块103、104、105所示),则创建交易桶。分配该交易到其有效依赖关系对应的交易桶。
(3)每个交易桶对应的并发线程,即交易执行线程(如图块106、107、108所示),按既定顺序依次执行其交易桶中的交易,并记录每个交易的状态读写操作。
(4)状态归集模块(图块109)在各个交易执行线程对其交易桶中的交易完成执行(或时间到)之后,收集各个已完成的交易的状态读写情况。
(5)状态归集模块(图块109)分析每个交易的状态读写用到的实际依赖关系。如果该实际依赖关系与分桶时确定的有效依赖关系不同,即判定为依赖违反,该交易的执行以失败处理。如果该等违反是因为目标智能合约的有效依赖关系有误,则修正该智能合约的有效依赖关系并更新合约依赖状态库。如果该等违反是因为业务交易的发起方施加显式的依赖解除(deprem)造成,则发起方应受相应惩罚,比如罚款、限期或永远拒绝服务等。
在区块生成和验证需要执行一组交易时,本发明基于每个交易的有效依赖关系,将交易分配给并行执行的交易执行线程,实现不相关交易的并行执行的方式,相比本发明之前的顺次执行方式,能够有效降低区块生成和验证时执行交易需要的时间,提高区块链协议栈的并发能力、降低其时延,改善区块链协议栈的整体性能。
应当理解,这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被该机器执行时,该机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的该程序代码中的指令,执行本发明的各种方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
本领域那些技术人员应当理解在本文所发明的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中发明的所有特征以及如此发明的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中发明的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的发明是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (28)

1.一种区块链的并行交易执行方法,其特征在于,包括:
获取每个交易的有效依赖关系;
根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶;
并行地执行每个交易桶中的交易。
2.如权利要求1所述的方法,其特征在于,获取每个交易的有效依赖关系,包括:
获取每个交易的目标智能合约的有效依赖关系;和/或,获取每个交易声明的有效依赖关系。
3.如权利要求1所述的方法,其特征在于,获取每个交易的有效依赖关系,包括:
获取每个交易的目标智能合约的依赖关系和依赖解除;
获取所述每个交易声明的依赖关系和依赖解除;
根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系。
4.如权利要求3所述的方法,其特征在于,根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系,包括:
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均不为未设定时,计算所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系的并集,将所述并集减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易的显式依赖解除,得到所述任一交易的有效依赖关系。
5.如权利要求3所述的方法,其特征在于,根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系,包括:
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均为未设定时,确定所述任一交易的有效依赖关系为未设定;
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系中的一个为未设定时,将所述任一交易的目标智能合约的依赖关系和所述每个交易声明的依赖关系中的另一个减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易声明的显式依赖解除,得到所述任一交易的有效依赖关系。
6.如权利要求1所述的方法,其特征在于,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,包括:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为不相关时,为所述任一交易分配单独的交易桶。
7.如权利要求1所述的方法,其特征在于,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,包括:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为未设定时,将所述任一交易分配至用于存放有效依赖关系为未设定的至少一个交易的交易桶;
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为一个或多个地址时,将所述任一交易分配至用于存放有效依赖关系相同的交易的交易桶。
8.如权利要求6或7所述的方法,其特征在于,方法还包括:
当用于分配的交易桶不存在时,创建对应的交易桶。
9.如权利要求1所述的方法,其特征在于,并行地执行每个交易桶中的交易,包括:
为每个交易桶创建一个线程,各个线程并行地执行每个交易桶中的交易。
10.如权利要求1所述的方法,其特征在于,并行地执行每个交易桶中的交易,包括:
创建多个线程,每个线程对应至少一个用于存放有效依赖关系为不相关的交易的交易桶,和/或,每个线程对应至少一个用于存放有效依赖关系相同的交易的交易桶;
各个线程并行地执行对应的多个交易桶中的交易。
11.如权利要求1所述的方法,其特征在于,获取每个交易的有效依赖关系之后,还包括:
将所述有效依赖关系更新至区块链网络的世界状态数据。
12.如权利要求1所述的方法,其特征在于,所述执行每个交易桶中的交易之后,还包括:
判断所述每个交易桶中的交易在执行时使用的依赖关系与所述有效依赖关系是否一致;如果是,确定交易执行成功;否则,确定交易执行失败。
13.如权利要求12所述的方法,其特征在于,所述确定交易执行失败之后,还包括:
如果确定目标智能合约的依赖关系和/或依赖解除有误导致交易执行失败,修正所述目标智能合约的依赖关系和/或依赖解除,如果确定交易声明的依赖解除导致交易执行失败,执行惩罚交易发起方的处理流程。
14.如权利要求1所述的方法,其特征在于,
当区块生成时,或者,当区块验证时,获取每个交易的有效依赖关系,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,并行地执行每个交易桶中的交易。
15.一种区块链的并行交易执行装置,其特征在于,包括:
有效依赖关系获取模块,用于获取每个交易的有效依赖关系;
交易桶分配模块,用于根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶;
交易执行模块,用于并行地执行每个交易桶中的交易。
16.如权利要求15所述的装置,其特征在于,所述有效依赖关系获取模块,具体用于:
获取每个交易的目标智能合约的依赖关系和依赖解除;
获取所述每个交易声明的依赖关系和依赖解除;
根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系。
17.如权利要求16所述的装置,其特征在于,所述有效依赖关系获取模块用于根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系时,具体用于:
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均不为未设定时,计算所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系的并集,将所述并集减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易声明的显式依赖解除,得到所述任一交易的有效依赖关系。
18.如权利要求16所述的装置,其特征在于,所述有效依赖关系获取模块用于根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系时,具体用于:
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均为未设定时,确定所述任一交易的有效依赖关系为未设定;
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系中的一个为未设定时,将所述任一交易的目标智能合约的依赖关系和所述每个交易声明的依赖关系中的另一个减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易声明的显式依赖解除,得到所述任一交易的有效依赖关系。
19.如权利要求15所述的装置,其特征在于,所述交易桶分配模块具体用于:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为不相关时,为所述任一交易分配单独的交易桶。
20.如权利要求15所述的装置,其特征在于,所述交易桶分配模块具体用于:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为未设定时,将所述任一交易分配至用于存放有效依赖关系为未设定的至少一个交易的交易桶;
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为一个或多个地址时,将所述任一交易分配至用于存放有效依赖关系相同的交易的交易桶。
21.如权利要求19或20所述的装置,其特征在于,所述交易桶分配模块还用于:
当用于分配的交易桶不存在时,创建对应的交易桶。
22.如权利要求15所述的装置,其特征在于,所述交易执行模块具体用于:
为每个交易桶创建一个线程,各个线程并行地执行每个交易桶中的交易。
23.如权利要求15所述的装置,其特征在于,所述交易执行模块具体用于:
创建多个线程,每个线程对应至少一个用于存放有效依赖关系为不相关的交易的交易桶,和/或,每个线程对应至少一个用于存放有效依赖关系相同的交易的交易桶;
各个线程并行地执行对应的多个交易桶中的交易。
24.如权利要求15所述的装置,其特征在于,还包括:
状态数据更新模块,用于将所述有效依赖关系更新至区块链网络的世界状态数据。
25.如权利要求15所述的装置,其特征在于,还包括:
交易执行检验模块,用于判断所述每个交易桶中的交易在执行时使用的依赖关系与所述有效依赖关系是否一致;如果是,确定交易执行成功;否则,确定交易执行失败。
26.如权利要求25所述的装置,其特征在于,所述交易执行检验模块,还用于:
在确定交易执行失败之后,如果确定目标智能合约的依赖关系和/或依赖解除有误导致交易执行失败,修正所述目标智能合约的依赖关系和/或依赖解除,如果确定交易声明的依赖解除导致交易执行失败,执行惩罚交易发起方的处理流程。
27.一种电子设备,包括存储器和处理器,所述存储器用于存储计算机指令,其特征在于,所述计算机指令被所述处理器执行以实现如权利要求1-14的任一项所述的方法。
28.一种可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被处理器执行时实现如权利要求1-14的任一项所述的方法。
CN202110145817.8A 2021-02-03 2021-02-03 一种区块链的并行交易执行方法、装置和电子设备 Pending CN112508574A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110145817.8A CN112508574A (zh) 2021-02-03 2021-02-03 一种区块链的并行交易执行方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110145817.8A CN112508574A (zh) 2021-02-03 2021-02-03 一种区块链的并行交易执行方法、装置和电子设备

Publications (1)

Publication Number Publication Date
CN112508574A true CN112508574A (zh) 2021-03-16

Family

ID=74952522

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110145817.8A Pending CN112508574A (zh) 2021-02-03 2021-02-03 一种区块链的并行交易执行方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN112508574A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024007690A1 (zh) * 2022-07-08 2024-01-11 腾讯科技(深圳)有限公司 一种基于区块链的交易处理方法、装置、设备、计算机可读存储介质及计算机程序产品

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106980649A (zh) * 2017-02-28 2017-07-25 阿里巴巴集团控股有限公司 写入区块链业务数据的方法和装置及业务子集合确定方法
US20170212781A1 (en) * 2016-01-26 2017-07-27 International Business Machines Corporation Parallel execution of blockchain transactions
CN107688999A (zh) * 2017-08-11 2018-02-13 杭州秘猿科技有限公司 一种基于区块链的并行交易执行方法
CN108564470A (zh) * 2018-04-17 2018-09-21 北京天德科技有限公司 一种区块链中并行建块的交易分发方法
CN110135985A (zh) * 2019-04-04 2019-08-16 杭州抖音科技有限公司 一种区块链上交易的并行执行方法及***
CN110532038A (zh) * 2019-08-19 2019-12-03 杭州趣链科技有限公司 一种基于Java智能合约的并行执行方法
CN110728578A (zh) * 2019-09-29 2020-01-24 南京金宁汇科技有限公司 区块链交易的并行执行方法、***及存储介质
CN110968437A (zh) * 2019-11-27 2020-04-07 杭州趣链科技有限公司 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质
CN112037061A (zh) * 2020-08-31 2020-12-04 深圳前海微众银行股份有限公司 区块链中交易的处理方法、装置、电子设备及存储介质
CN112150163A (zh) * 2020-11-26 2020-12-29 北京微芯区块链与边缘计算研究院 区块链的合约交易并行执行方法及装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212781A1 (en) * 2016-01-26 2017-07-27 International Business Machines Corporation Parallel execution of blockchain transactions
CN106980649A (zh) * 2017-02-28 2017-07-25 阿里巴巴集团控股有限公司 写入区块链业务数据的方法和装置及业务子集合确定方法
CN107688999A (zh) * 2017-08-11 2018-02-13 杭州秘猿科技有限公司 一种基于区块链的并行交易执行方法
CN108564470A (zh) * 2018-04-17 2018-09-21 北京天德科技有限公司 一种区块链中并行建块的交易分发方法
CN110135985A (zh) * 2019-04-04 2019-08-16 杭州抖音科技有限公司 一种区块链上交易的并行执行方法及***
CN110532038A (zh) * 2019-08-19 2019-12-03 杭州趣链科技有限公司 一种基于Java智能合约的并行执行方法
CN110728578A (zh) * 2019-09-29 2020-01-24 南京金宁汇科技有限公司 区块链交易的并行执行方法、***及存储介质
CN110968437A (zh) * 2019-11-27 2020-04-07 杭州趣链科技有限公司 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质
CN112037061A (zh) * 2020-08-31 2020-12-04 深圳前海微众银行股份有限公司 区块链中交易的处理方法、装置、电子设备及存储介质
CN112150163A (zh) * 2020-11-26 2020-12-29 北京微芯区块链与边缘计算研究院 区块链的合约交易并行执行方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024007690A1 (zh) * 2022-07-08 2024-01-11 腾讯科技(深圳)有限公司 一种基于区块链的交易处理方法、装置、设备、计算机可读存储介质及计算机程序产品

Similar Documents

Publication Publication Date Title
US9830194B2 (en) Migrating processes operating on one platform to another platform in a multi-platform system
US11500626B2 (en) Intelligent automatic merging of source control queue items
CN111882435B (zh) 在区块链中执行交易的方法及装置
CN105190536B (zh) 一种用于验证作业的***及方法
WO2024120205A1 (zh) 一种应用性能优化方法、装置、电子设备及存储介质
CN111932257B (zh) 一种区块链并行化处理方法及装置
US11100047B2 (en) Method, device and computer program product for deleting snapshots
WO2024119763A1 (zh) 一种容器集群算力调度方法及相关装置
CA3147339C (en) Method and device for writing blockchain data in parallel, computer equipment and storage medium thereof
CN111125040A (zh) 管理重做日志的方法、装置及存储介质
WO2024011860A1 (zh) 一种云操作***部署方法及装置
US11399071B2 (en) Program operation system and program operation method
EP3731454A2 (en) Method and apparatus for continuous delivery of permissioned blockchain application
JP5515889B2 (ja) 仮想マシンシステム、自動マイグレーション方法および自動マイグレーションプログラム
JP5845810B2 (ja) 分散コンピューティング環境におけるソフトウェアの解析の並列化のための効率的な部分計算
CN112508574A (zh) 一种区块链的并行交易执行方法、装置和电子设备
US11983168B2 (en) Block verification method, apparatus and device
WO2021129005A1 (zh) 一种区块链状态变更交易追溯的方法及装置
CN109359093A (zh) 一种规则文件更新方法和***
CN114356768A (zh) 通过占位符减少交易读写冲突的方法与装置
CN113821157B (zh) 一种本地磁盘挂载方法、装置、设备及存储介质
US11914603B2 (en) Data layout model generation system
US20230342775A1 (en) Adaptive block processor for blockchain machine compute acceleration engine
JP7016583B2 (ja) ソフトウェアのテスト方法、システムおよびプログラム
CN114416023A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20210316

RJ01 Rejection of invention patent application after publication