CN112669155A - 基于区块链的交易分发执行方法、装置服务器及存储介质 - Google Patents
基于区块链的交易分发执行方法、装置服务器及存储介质 Download PDFInfo
- Publication number
- CN112669155A CN112669155A CN202011636119.XA CN202011636119A CN112669155A CN 112669155 A CN112669155 A CN 112669155A CN 202011636119 A CN202011636119 A CN 202011636119A CN 112669155 A CN112669155 A CN 112669155A
- Authority
- CN
- China
- Prior art keywords
- transaction
- read
- write
- transactions
- sets
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 239000012634 fragment Substances 0.000 claims abstract description 112
- 239000003999 initiator Substances 0.000 claims abstract description 45
- 238000001514 detection method Methods 0.000 claims abstract description 34
- 238000012163 sequencing technique Methods 0.000 claims abstract description 10
- 238000004458 analytical method Methods 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 8
- 238000013467 fragmentation Methods 0.000 description 8
- 238000006062 fragmentation reaction Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种基于区块链的交易分发执行方法、装置、服务器及存储介质,包括:获取多个交易对应的多个交易信息,包括当前交易的发起者地址,交易合约地址和交易类型;根据多个交易信息,将多个交易划分到不同分片中,位于同一分片中的交易关联;并行执行不同分片中的多个交易,得到每个交易各自对应的第一读写集;对多个第一读写集进行排序,得到排序后的第一读写集的集合,并对第一读写集的集合进行冲突检测,以确定第一读写集的集合中任意相邻两个第一读写集之间是否冲突;若第一读写集的集合中的多个第一读写集之间不冲突,则对第一读写集的集合中的多个第一读写集进行合并,得到最终的读写集以确认多个交易执行无误。
Description
技术领域
本申请涉及区块链技术领域,具体涉及一种基于区块链的交易分发执行方法、装置、服务器及存储介质。
背景技术
区块链是一种新型去中心化协议,能安全的存储数字货币交易或其他数据,信息不可伪造或篡改。区块链上的交易由区块链上的所有节点共同完成,由共识算法保持其一字型,区块链上维护一个公共的账本,公共账本位于存储区块上的任何节点以保证其不可伪造或篡改。
现有的区块链处理交易的过程中,没有记录交易的具体对应的合约变量或账户地址是如何更改的,且没有区分跨合约交易和非法交易,无法保证交易执行的准确性和执行的效率。
发明内容
本申请提供一种基于区块链的交易分发执行方法、装置、服务器及存储介质,旨在解决现有技术下的区块链的交易执行过程中,没有记录交易执行的过程,且交易执行的准确性和执行效率低的问题。
一方面,本申请提供一种基于区块链的交易分发执行方法,其特征在于,
所述区块链包括多个区块,所述多个区块中的每个区块均包括多个分片;
所述方法包括:
获取多个交易对应的多个交易信息,所述多个交易信息中各交易信息包括当前交易的发起者地址,当前交易的交易合约地址和当前交易的交易类型;
根据所述多个交易信息,将所述多个交易划分到不同分片中,位于同一分片中的所述交易关联;
并行执行不同分片中的多个交易,得到每个交易各自对应的第一读写集;
对多个所述第一读写集进行排序,得到排序后的第一读写集的集合,并对所述第一读写集的集合进行冲突检测,以确定所述第一读写集的集合中任意相邻两个第一读写集之间是否冲突;
若所述第一读写集的集合中的多个所述第一读写集之间不冲突,则对所述第一读写集的集合中的多个所述第一读写集进行合并,得到最终的读写集以确认所述多个交易执行无误。
另一方面,本申请提供一种基于区块链的交易分发执行装置,所述区块链包括多个区块,所述多个区块中的每个区块均包括多个分片;
所述基于区块链的交易分发执行装置,包括:
获取模块,所述获取模块用于获取多个交易对应的多个交易信息,所述多个交易信息中各交易信息包括当前交易的发起者地址,当前交易的交易合约地址和当前交易的交易类型;
划分模块,所述划分模块用于根据所述多个交易信息,将所述多个交易划分到不同分片中,位于同一分片中的所述交易关联;
执行模块,所述执行模块用于并行执行不同分片中的多个交易,得到每个交易各自对应的第一读写集;
冲突检测模块,所述冲突检测模块用于对多个所述第一读写集进行排序,得到排序后的第一读写集的集合,并对所述第一读写集的集合进行冲突检测,以确定所述第一读写集的集合中任意相邻两个第一读写集之间是否冲突;
合并模块,所述合并模块用于若所述第一读写集的集合中的多个所述第一读写集之间不冲突,则对所述第一读写集的集合中的多个所述第一读写集进行合并,得到最终的读写集以确认所述多个交易执行无误。
另一方面,本申请还提供一种服务器,所述服务器包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现如上任一项所述的基于区块链的交易分发执行方法。
另一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行如上任一项所述的基于区块链的交易分发执行方法中的步骤。
本申请中通过利用区块链中不同交易对应的包括交易的发起者地址、交易的交易合约地址和交易类型等交易信息,将交易划分到不同的分片并行执行,保证交易执行的效率;且利用读写集记录交易执行的过程,同时也利用读写集避免了执行过程中产生的非法交易,提高了交易执行的准确性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的区块链中交易分发执行系统的场景示意图;
图2为本申请实施例中提供的基于区块链的交易分发执行方法的一实施例流程示意图;
图3为本申请实施例中提供的交易划分的一实施例流程示意图;
图4为本申请实施例中提供的得到预分析结果的一实施例流程示意图;
图5为本申请实施例中提供的交易划分的一实施例示意图;
图6为本申请实施例中提供的将交易划分到分片中的一实施例流程示意图;
图7为本申请实施例提供的将交易划分到分片中的另一实施例流程示意图;
图8为本申请实施例提供的读写集冲突检测一实施例流程示意图;
图9为本申请实施例提供的读写集合并的一实施例流程示意图;
图10为本申请实施例提供的读写集合并一实施例示意图;
图11为本申请实施例提供的合并交易的另一实施例流程示意图;
图12为本申请实施例提供的基于区块链的交易分发执行装置;
图13示出了本申请实施例所涉及到的服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
本申请实施例提供一种基于区块链的交易分发执行方法、装置、服务器及存储介质,以下进行详细说明。
以下介绍本申请涉及到的名词:
区块链:区块链(Blockchain)是一个信息技术领域的术语,是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造、全程留痕、可以追溯、公开透明、集体维护等特征。区块链是一个交易记录的集合,由相连的区块构成,每个区块中包含一些有序交易,每笔交易都可以当做对世界状态的一次查询或者更新。区块中的交易的顺序是在区块被创建之初就定了。
分片技术:扩容,本意是可以通过数据库拆开成小段,改变网络内部各步骤之间的验证方式实现分片,增加吞吐量。由此可见,分片是一项复杂的工作,现在很多项目为了实现扩容,采用分片技术(Sharding)。分片是一种基于数据库分成若干片段的传统概念扩容技术,它将数据库分割成多个碎片并将这些碎片放置在不同的服务器上,在底层公有链的系统内,网络上的交易将被分成不同的碎片,其由网络上的不同节点组成。因此,只需要处理一小部分输入的交易,并且通过与网络上的其他节点并行处理就能完成大量的验证工作。将网络分割为碎片会使得更多的交易同时被处理和验证。
区块链分片是指将区块链执行模块进行横向拓展,从原先每个节点包含一个执行模块拓展为每个节点具有若干个执行模块,每个执行模块可独立执行、验证交易,不同的分片使用同一个账本保存状态数据,由统一的分片管理者来管理分片。
如图1所示,为本申请实施例提供的区块链中交易分发执行系统的场景示意图,该系统可以包括多个主机100和服务器200,主机100和服务器200网络连接,服务器200中集成有基于区块链的交易分发执行装置,如图1中的服务器,主机100可以访问服务器200。
本发明实施例中服务器200主要用于获取多个交易对应的多个交易信息,多个交易信息中各交易信息包括当前交易的发起者地址,当前交易的交易合约地址和当前交易的交易类型;根据多个交易信息,将多个交易划分到不同分片中,位于同一分片中的交易关联;并行执行不同分片中的多个交易,得到每个交易各自对应的第一读写集;对多个第一读写集进行排序,得到排序后的第一读写集的集合,并对第一读写集的集合进行冲突检测,以确定第一读写集的集合中任意相邻两个第一读写集之间是否冲突;若第一读写集的集合中的多个第一读写集之间不冲突,则对第一读写集的集合中的多个第一读写集进行合并,得到最终的读写集以确认多个交易执行无误。
本发明实施例中,该服务器200可以是独立的服务器,也可以是服务器组成的服务器网络或服务器集群,例如,本发明实施例中所描述的服务器200,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云服务器。其中,云服务器由基于云计算(Cloud Computing)的大量计算机或网络服务器构成。本发明的实施例中,服务器与主机之间可通过任何通信方式实现通信,包括但不限于,基于第三代合作伙伴计划(3rd Generation Partnership Project,3GPP)、长期演进(Long Term Evolution,LTE)、全球互通微波访问(Worldwide Interoperability for Microwave Access,WiMAX)的移动通信,或基于TCP/IP协议族(TCP/IP Protocol Suite,TCP/IP)、用户数据报协议(User Datagram Protocol,UDP)的计算机网络通信等。
可以理解的是,本发明实施例中所使用的主机100可以是既包括接收和发射硬件的设备,即具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种主机可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备。具体的主机100具体可以是台式终端或移动终端,主机100具体还可以是手机、平板电脑、笔记本电脑等中的一种。
本领域技术人员可以理解,图1中示出的应用环境,仅仅是与本申请方案一种应用场景,并不构成对本申请方案应用场景的限定,其他的应用环境还可以包括比图1中所示更多或更少的服务器,或者服务器网络连接关系,例如图1中仅示出1个服务器和2个主机,可以理解的,该区块链中的交易分发执行系统还可以包括一个或多个其他服务器,或/且一个或多个与服务器网络连接的主机,具体此处不作限定。
另外,如图1所示,该区块链中的交易分发执行系统还可以包括存储器300,用于存储数据,如存储区块链数据,例如区块链中的交易执行时的数据等。
需要说明的是,图1所示的区块链中的交易分发执行系统的场景示意图仅仅是一个示例,本发明实施例描述的区块链中的交易分发执行系统以及场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着区块链中的交易分发执行系统的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
如图2所示,为本申请实施例提供的基于区块链的交易分发执行方法的一实施例流程示意图,该基于区块链的交易分发执行方法包括:
21、获取多个交易对应的多个交易信息。
具体的,对于区块链中不同的交易来说,交易信息一般包括交易的发起者地址from,交易的合约地址to以及交易的交易类型vmType等多种信息,且一个交易对应一个交易信息,交易一般为多个,而多个交易对应的交易信息一般也为多个。
在本申请的一些实施例中,区块链技术可以应用在比特币领域,而在比特币领域中的交易一般为用户之间的转账操作;当然也可以包括其他操作,例如创建智能合约,或是智能合约的调用操作等。其中,每一笔交易一般都包含几个关键字段:“from”表示交易发起者,“to”表示交易接收者,“value”表示交易金额,“data”表示附带的信息。
区块链中一般包括外部账户和合约账户,外部账户就是用户使用的账户,其中包括了用户的私钥和钱包等重要信息;合约账户用来存放一个智能合约,通常是由外部账户创建的。所有的交易都由发起者的账户的私钥进行签名,保证不可篡改,以保证交易的安全性。对于普通转账操作来说,“from A,to B,value C”表示从外部账户A向外部账户B转账,转账金额为C;对于创建智能合约来说,“from A,to(空),value C,data D”表示外部账户A创建一个智能合约,向该合约账户里转账C,合约的代码为D;对于调用智能合约来说,“fromA,to E,data F”表示外部账户A调用合约账户E的智能合约,本次调用传入的参数为F。
对于一个区块链中的交易来说,交易对应的交易信息一般包括交易的发起者地址,交易的交易合约地址和交易的交易类型;在获取了交易对应的交易信息后,可以根据每个交易对应的交易信息对交易进行划分。
22、根据多个交易信息,将多个交易划分到不同的分片中,位于同一分片中的交易关联。
在多个交易划分到不同的分片中执行前,所有的交易对应一个交易的初始顺序,即多个交易在划分前是按照一定的顺序排列的。在本申请的实施例中,由于区块链上的交易存在先后顺序,即某一笔交易的执行可能依赖之前某个交易的执行结果才能正确执行。而在将多个交易划分到不同的分片中时,将相互关联的交易划分到同一个分片中执行。
具体的,在获取了每个交易对应的交易信息后,可以将多个交易划分到不同的分片中进行后续执行过程。需要说明的是,在不同的分片中的多个交易可以并行执行,以提高交易执行的效率。因此若是将多个交易划分到不同的分片中并行执行,则同一个分片中的交易通常互相关联;即将相互关联的交易划分到同一个分片中串行执行,而不同分片之间的交易并行执行。
23、并行执行不同分片中的多个交易,得到每个交易各自对应的第一读写集。
在划分多个交易到不同的分片后,可以在分片中执行每个交易。在本申请的实施例中,可以利用读写集(Read-Write Set)记录交易的执行过程。交易的读写集记录了每笔交易产生的执行结果,不管交易的执行过程多么复杂,最终产生的执行结果都是读取了一些状态数据或者要写入一些状态数据,通过对交易产生的读写集进行对比可知道并行执行的交易之间是否存在冲突。
其中,读写集可以包括读集(Read Set)和写集(Write Set);读集包含模拟交易读取的键值(Key)和版本的列表,写集包含键值(Key)、写入的新值、以及删除标记(即是否删除Key)。
具体的,在背书节点(Endorser)模拟执行交易的过程中,会生成读写集(Read-Write Set)。读集包含了唯一键值的列表,还有在模拟执行过程中交易读取的已提交键值。写集也包含了一个唯一键值的列表,还有在模拟执行过程中交易写入的键值。交易过程中有删除键,它会记录删除标记。如果在一个交易中对同一个键进行了多次更新,则会以最后一个为准。交易只会读取已提交的数据,即使在交易中更新了某个键值的值。就是说,不支持读取本次交易更新后的结果。读集会包含键值的版本,写集只会包含键值的最新值。
同时还可以使用读写集的读集部分校验一笔交易的有效性,使用写集更新相关键值的版本和写入的键值。在验证阶段,如果一笔交易中每个读集中的键与世界状态中对应键的版本号一致,那么该笔交易被认为是有效的。如果一笔交易通过了有效性验证,可以使用写集更新世界状态。在更新阶段,写集中每个键所对应的世界状态中的该键值的值都会被设置为写集中确定的值。并且,世界状态中的键的版本也更新到最新版本。
在本申请的实施例中,每一个交易在执行过程中均会生成对应的第一读写集,第一读写集为多个;在得到多个第一读写集后,还需要对多个第一读写集进行合并。
需要说明的是,在本申请的实施例中,每个交易对应的第一读写集中包括至少一个读写操作;交易在执行的过程中即按照至少一个读写操作执行并生成与至少一个读写操作对应的第一读写集。同一个第一读写集中,读写操作按照交易的实际执行顺序排序。
在本申请的实施例中,同一个分片中可以包括多个交易,而每一个交易均会生成对应的第一读写集,因此在交易执行结束后,一个分片可以包括多个第一读写集,且多个第一读写集之间按照多个交易的实际执行顺序排列。同时,由于多个分片中的交易并行执行,因此在交易执行结束后,一个区块中会生成不同分片中的多个交易各自对应的第一读写集。
24、对多个第一读写集进行排序,得到排序后的第一读写集的集合,并对第一读写集的集合进行冲突检测,以确定第一读写集的集合中任意相邻两个第一读写集之间是否冲突。
具体的,由于同一个分片中的多个交易是按照顺序排列执行的,因此同一个分片中多个交易产生的多个第一读写集也是按照交易执行的顺序排序的。而由于不同分片中的多个交易是并行执行的,不同交易的执行过程和执行所需的时间并不相同,因此不同分片产生的多个第一读写交易集之间并不完全是按照交易处理的顺序排列的。若是需要将所有交易对应的第一读写集进行合并,首先需要对所有交易对应的多个第一读写集进行排序,再进行冲突检测。
只有排序后得到的第一读写集的集合中的多个第一读写集之间,两两互不冲突,即整个第一读写集的集合中的所有的第一读写集之间互不冲突,才能对第一读写集的集合中的多个第一读写集进行合并。
25、若第一读写集的集合中的多个第一读写集之间不冲突,则对第一读写集的集合中的多个第一读写集进行合并,得到最终的读写集以确认多个交易执行无误。
在本申请的实施例中,当所有的交易在同一个分片中串行执行时,生成的多个读写集两两之间是互不冲突的,因此可以对所有交易各自对应的读写集进行合并。当所有的交易划分到不同分片中并行执行时,执行的过程中可能出现错误导致交易对应的读写集之间冲突而无法合并,读写集之间冲突也说明交易执行的过程中出现了问题或错误。因此可以判断不同分片中并行执行的多个交易各自对应的第一读写集之间是否冲突,若不冲突,则多个第一读写集可以合并;且说明多个交易在执行过程中没有出现错误。
本申请中通过利用不同交易对应的包括交易的发起者地址、交易的交易合约地址和交易类型等交易信息,将交易划分到不同的分片并行执行,保证交易执行的效率;且利用读写集记录交易执行的过程,同时也利用读写集避免了执行过程中产生的非法交易,提高了交易执行的准确性。
在本申请的一些实施例中,根据多个交易信息,将多个交易划分到不同的分片中,可以包括:对多个交易对应的多个交易信息进行分析,得到预分析结果;根据预分析结果对多个交易进行划分,将多个交易划分到不同的分片中。
其中,交易预分析是指将互相存在关联的交易分析出来,例如两笔交易都会对同一个账户地址下相同的状态数据进行修改,或者下一笔交易使用的状态数据依赖于上一笔交易的执行结果,这些交易之间则被认为是有关联的,需要将这些交易分发到同一个分片内。
具体的,如图3所示,为本申请实施例提供的交易划分的一实施例流程示意图,可以包括:
31、根据多个交易信息中各交易的交易类型,确定多个交易信息中相同交易类型的交易。
32、将相同交易类型的交易划分到预设的各交易类型对应的交易列表中。
33、对各交易类型对应的交易列表中的交易进行交易地址比对分析,得到预分析结果。
34、根据预分析结果对多个交易进行划分,将多个交易划分到不同的分片中。
具体的,在本申请的实施例中,每个交易对应的交易信息可以包括交易的发起者地址,交易的交易合约地址以及交易的交易类型。可以先根据交易对应的交易类型对所有的交易进行分类。
即可以先获取每个交易对应的交易类型,并确定多个交易中交易类型相同的交易;在确认了交易类型相同的多个交易后,可以将交易类型相同的多个交易划分到预设的各交易类型对应的交易列表中。其中,一种交易类型对应一个交易列表,而不同的交易类型对应多个交易列表。即在本申请的实施例中,当所有交易对应的交易类型为多个时,预设的各交易类型对应的交易列表也为多个,且在每个预设的各交易类型对应的交易列表中,包括至少一个交易;同一个预设的交易类型对应的交易列表中的所有交易的交易类型相同。
而对于各交易类型对应的交易列表中的相同交易类型的交易,还需要对这些交易进行地址对比分析,得到预分析结果;并根据预分析结果对交易进行二次划分。具体的,可以根据交易的发起者地址和交易合约地址,对预设的各交易类型对应的交易列表中的交易进行二次划分,并将多个交易划分到不同的分片中。
在本申请的实施例中,根据交易的发起者地址和交易合约地址划分交易,即需要考虑“from”和“to”字段的影响。由于一次交易调用主要会修改“from”和“to”表示的两个账户地址下的状态数据,所以可以根据每个交易类型中的交易对应的发起者地址和交易合约地址,即根据“from”和“to”表示的两个账户地址,对相同交易类型的交易进行二次分类。
如图4所示,为本申请实施例提供的得到预分析结果的一实施例流程示意图,其中对各交易类型对应的交易列表中的交易进行地址对比分析,得到预分析结果,可以包括:
41、确定各交易类型对应的交易列表中各交易,各交易的发起者地址或各交易的交易合约地址相同的交易,得到多组关联交易。
42、根据多组关联交易,新建多个关联交列表,每组关联交易对应一个关联交易列表。
43、将每组关联交易划分到每组关联交易对应的关联交易列表中。
在本申请的实施例中,每个交易均对应一个交易的发起者地址和交易调用的交易合约地址,在根据交易类型将所有的交易划分到预设的各交易类型对应的交易列表中后,还需要根据每个交易对应的发起者地址和交易合约地址,对各交易类型对应的交易列表中的交易进行二次划分,得到预分析结果。
在上述实施例中,根据每个交易对应的发起者地址和交易合约地址对交易进行二次分类时,可以将交易的发起者地址或交易的交易合约地址相同的交易划分在同一个交易列表中。即若是交易的发起者地址相同或是交易的交易合约地址相同,则代表交易之间存在关联,交易为关联交易,需要将关联交易划分到同一个交易列表中。
在本申请的实施例中,可以先对同一个交易类型对应的交易列表中的多个交易,进行根据交易的发起者地址或交易合约地址的分类;将同一个交易类型对应的交易列表中的交易中,交易的发起者地址或交易合约地址相同的交易认为是关联交易,并新建关联交易列表,将关联交易划分到对应的关联交易列表中。
在上述实施例中,对于不同交易类型对应的交易列表中的交易,若是交易的发起者地址或交易合约地址相同,也说明这些交易互相关联,是关联交易。即使关联交易由于交易类型不同,位于不同交易类型对应的不同交易列表中,也需要将关联交易划分在同一个关联交易列表中。
具体的,在本申请的实施例中,若是同一个交易类型对应的交易列表中,有两笔交易之前存在有相同的“from”或“to”的情况下,说明两笔交易的发起者地址或交易合约地址相同,代表这两笔交易互相关联,需要将关联的两笔交易划分到同一个关联交易列表中。
同时,若是不同交易类型对应的交易列表中的交易,存在交易的发起者地址或交易的交易合约地址相同的情况,即不同交易类型对应的交易列表中的交易存在有相同的“from”或“to”的情况下,代表这两笔交易互相关联,也需要将关联的两笔交易划分到同一个关联交易列表中。
在本申请的实施例中,可以先对各交易类型对应的交易列表中的各交易进行地址对比分析,得到每一个交易类型对应的至少一个关联交易列表;再对多个关联交易列表中交易的发起者地址或交易合约地址相同的交易对应的关联列表进行合并,得到最终的关联交易列表。
也可以同时对每个交易类型对应的交易列表中的各交易进行地址对比分析,直接将交易的发起者地址或交易合约地址相同的交易划分到同一个关联交易列表中,无需再对管理交易列表进行合并,直接得到最终的关联交易列表。
在本申请的实施例中,根据交易对应的交易发起者地址和交易合约地址进行二次划分后,可以得到的多个关联交易列表,不同的关联交易列表中的交易之间互不关联,而同一个关联交易列表中的交易互相关联。
如图5所示,为本申请实施例提供的交易划分的一实施例示意图,在该实施例中可以包括六个交易,分别为:from:a,to:c,vmType:1;from:b,to:c,vmType:1;from:d,to:e,vmType:1;以及from:x,to:z,vmType:2;from:y,to:z,vmType:2;from:d,to:f,vmType:3。在本申请的实施例中,前述六个交易按照一定的顺序排列。
首先需要获取这六个交易各自对应的交易信息,包括交易的发起者地址、交易的交易合约地址和交易的交易类型。以交易from:a,to:c,vmType:1为例,该交易的交易发起者地址为a,交易合约地址为c,交易类型为vmType1。
在获取了每个交易对应的交易信息后,就可以根据每个交易对应的交易信息,将这六个交易划分到不同的分片中并行执行,且位于同一分片中的交易之间关联。
具体的,可以先根据这六个交易各自对应的交易类型,确定相同交易类型的交易,并将相同类型的交易划分到预设的各交易类型对应的交易列表中。根据交易类型,这六个交易可以分别被划分为:
上述六个交易按照交易类型的不同划分到三个预设的交易类型对应的交易列表中。而在根据交易类型对交易进行划分后,还需要对各交易类型对应的交易列表中的交易进行地址比对分析,得到预分析结果;再根据预分析结果对各交易进行二次划分。
具体的,以交易类型vmType:1对应的交易列表为例,vmType:1对应的交易列表中包括三个交易,分别为from:a,to:c,vmType:1;from:b,to:c,vmType:1和from:d,to:e,vmType:1。在这三个交易中from:a,to:c,vmType:1和from:b,to:c,vmType:1中交易都是“from:a”,即这两个交易从a发出,这两个交易中存在相同的交易发起者地址,这两个交易为关联交易。在得到的关联交易后,可以新建关联交易列表,并将这组关联交易划分到新建的关联交易列表中。而对于from:d,to:e,vmType:1,在vmType:1对应的交易列表中,没有与之存在相同交易发起者地址或交易合约地址的关联交易,因此将from:d,to:e,vmType:1单独划分到一个关联交易列表中。
在上述实施例中,在划分交易类型vmType:1对应的交易列表中的所有交易后,继续对交易类型vmType:2和交易类型vmType:3中的交易进行划分,直至将所有的交易划分到新的关联交易列表中。
请参考图5,如图5所示,对各交易类型对应的交易列表中的各交易进行二次划分后,关联交易被划分到不同的关联交易列表中,在同一个关联交易列表中的交易之间互相关联;而不同的关联交易列表之间,关联交易列表中的交易不关联。如图5中所示,位于同一个关联交易列表中的多个交易的交易类型可以相同,也可以不同;但位于同一个交易列表中的多个交易中,至少存在交易的发起者地址或交易的交易合约地址相同的情况。
在上述实施例中,在对交易进行二次划分时,可以同时对每个交易类型对应的交易列表中的多个交易进行地址对比分析,得到预分析结果。也可以按照交易类型的顺序,依次对每个交易类型对应的交易列表进行地址对比分析:先将同一个交易类型对应的交易列表中的交易,根据交易发起者地址或交易合约地址划分到不同的关联交易列表中,再对具有相同交易发起者地址或交易合约地址,但交易类型不同的交易对应的关联交易列表进行合并。
或是同时对所有的交易类型对应的交易列表中的交易进行地址对比分析,将具有相同交易发起者地址或交易合约地址的交易划分到不同的关联交易列表中,不需要再次进行关联交易列表的合并。
需要说明的是,在本申请的实施例中,未划分的多个交易具有一个初始的交易顺序,而将多个交易划分到不同的关联交易列表中后,关联交易列表中的交易也按照初始的交易顺序进行排列。
在上述实施例中,将多个交易划分到不同的关联交易列表中后,需要将每个关联交易列表中的关联交易划分到不同的分片中并行执行。
如图5所示,具有相同交易合约地址的from:a,to:c,vmType:1和from:b,to:c,vmType:1划分到同一个关联交易列表中,且将这个关联交易列表划分到分片一中执行。而交易from:d,to:e,vmType:1划分到另一个关联交易列表中,而交易from:d,to:e,vmType:1对应的关联交易列表被划分到分片二中执行。
而交易from:d,to:e,vmType:1和交易from:d,to:f,vmType:3两个交易的交易类型虽然不同,但两个交易的交易发起者地址相同,两个交易为关联交易,因此也需要将这两个交易划分到同一个关联交易列表中。因此交易from:d,to:e,vmType:1和交易from:d,to:f,vmType:3在同一个关联交易列表中,且两者都被划分到分片二中执行。
在本申请的另一些实施例中,多个交易中还有可能存在其他特殊类型的交易,比如跨合约交易。针对特殊类型的交易,可以进一步获取交易的调用参数(payload)来进行进一步的分析。具体的,若是多个交易中包括跨合约交易,则可以获取跨合约交易的调用参数;根据跨合约交易对应的调用参数,和跨合约交易对应的交易信息,进一步将跨合约交易划分到多个分片中。
具体的,对于跨合约交易来说,跨合约交易修改的地址的状态数据无法在“from”和“to”中体现出来,所以这个时候会导致无法分析出交易之间的依赖关系,即无法确定多个交易之间是否关联。但跨合约交易是小概率事件,且本申请中同时通过每个交易对应的读写集冲突检测来保证交易执行的最终正确性;因此还是可以利用本申请提供的交易分发执行方法对跨合约交易进行预分析。
对于跨合约交易来说,可以进一步获取跨合约交易的调用参数,利用调用参数对跨合约交易进行划分。例如java合约可以通过调用参数获取交易涉及到的跨合约地址以及交易会修改的合约数据结果,进一步的将跨合约地址也和“from”、“to”等交易对应的交易信息一起并列分析。而对于同一个合约地址,只要交易修改的数据结构不同,交易即可并行执行。在本申请的实施例中,利用调用参数对跨合约交易进行划分的过程可以参考现有技术,此处不做任何限定。
在本申请的实施例中,将所有的交易划分到不同的关联交易列表中后,还需要将所有的关联交易列表划分到不同的分片中执行。如图6所示,为本申请实施例提供的将交易划分到分片中的一实施例流程示意图,可以包括:
61、获取多个分片对应的分片数量。
62、获取多个交易对应的第一交易总量。
63、获取多个关联交易列表中每个关联交易列表中的交易对应的第二交易总量。
64、根据分片数量和第一交易总量,确定多个分片中各分片接收的交易数量平均值。
65、根据第二交易总量和平均值的大小,将多个关联交易列表划分到多个分片中。
在本申请的实施例中,由于交易为多个,为了保证交易执行的效率通常将多个交易划分到多个分片中并行执行;而为了进一步提高交易执行的效率,减少所有交易执行完毕所需的时间,可以将所有的交易尽可能均分到每个分片中并行执行;避免部分分片中需要执行的交易数量过多,执行所需的时间过多。
因此可以先获取所有分片对应的分片数量,并获取所有的交易对应的第一交易总量;根据分片数量和第一交易总量来确定每一个分片可以接收的交易的数量的平均值,进而将关联交易列表进行划分。
但由于多个关联交易列表中的每个关联交易列表中的交易均对应一个第二交易总量,而不同的关联交易列表中的交易数量对应的第二交易总量均不相同。因此在实际划分时,不仅需要考虑每个分片可以接收的交易数量的平均值,也需要考虑各关联交易列表中交易对应的第二交易总量。即需要根据各关联交易列表中各交易对应的第二交易总量,和每个分片可以接收的交易数量的平均值的大小,将多个关联交易列表中的交易进行划分。
如图7所示,为本申请实施例提供的将交易划分到分片中的另一实施例流程示意图,可以包括:
71、确认第二交易总量大于平均值的第一目标关联交易。
72、将同一个第一目标关联交易中的交易划分到同一个第一目标分片中。
73、确认第二交易总量小于平均值的第二目标关联交易。
74、将第二目标关联交易划分到除第一目标分片之外的其他分片中。
具体的,每一个关联交易列表中的交易对应的第二交易总量均不同,但每一个关联交易列表中的交易均是关联的;因此在划分关联交易列表中的交易时,即使关联交易列表中的第一目标关联交易对应的第二交易总量大于平均值,也需要将这些交易划分到同一个分片中。即关联交易列表中的交易需要划分在同一个分片中执行。
而若是关联交易列表中的第二目标关联交易对应的第二交易总量小于平均值,那么需要先将第一目标关联交易先划分到第一目标分片中,再对剩下的第二目标关联交易划分到除第一目标分片之外的其他分片中。
具体的,可以获取除第一目标分片之外的其他分片对应的分片数量,即未分配关联交易列表的第二目标分片对应的分片数量;再获取所有的第二目标关联交易对应的第三交易总量;再获取各第二目标关联交易中每个关联交易各自对应的第四交易总量。
进一步根据未分配关联交易列表的第二目标分片对应的分片数量,以及所有的第二目标关联交易对应的第三交易总量,计算得到第二目标分片中各分片应该获取的交易数量的平均值。对比各第二目标关联交易中每个关联交易各自对应的第四交易总量,与第二目标分片中各分片应该获取的交易数量的平均值之间的大小;将第四交易总量大于第二目标分片中各分片应该获取的交易数量的平均值的关联交易划分到同一个第二目标分片中;而对于第四交易总量小于第二目标分片中各分片应该获取的交易数量的平均值的关联交易,再次计算未划分关联交易列表的分片应该接受的交易数量的平均值,并再次进行划分。
即在本申请的实施例中,将多个关联交易列表对应的交易划分到不同的分片中时,需要先获取当前能够分配交易的分片的数量、需要进行划分的关联交易列表的数量,以及需要进行划分的各关联交易列表中每个关联交易列表各自对应的交易数量。根据前述内容可以计算出当前能够分配的分片中,每个分片应该接受的交易数量的平均值,再将关联交易列表中交易数量大于平均值的关联交易列表划分到同一个分片中。而对于关联交易列表中交易数量小于平均值的关联交易列表,则重新对未分配的关联交易列表和分片计算平均值,重新进行分配。
在本申请的一个具体实施例中,未进行划分的交易可以为[0,1,2,3,4,5,6,7,8,9,10],而进行前述的划分后,分配到每个分片中的交易可以为[[0,3,5],[1,2],[4,9,10],[6],[7,8]]。其中[0,3,5],[1,2]、[4,9,10]和[7,8]分别为一个关联交易,而[6]不存在与之关联的交易,因此将[6]单独划分到一个分片中执行。
在上述交易划分时,需要使得同一个关联交易列表中的所有关联的交易划分在同一个分片中执行;而一个分片中可以包括多个互不关联的关联交易列表。这样划分使得不同分片间交易数量的方差最小,避免部分分片中的交易数量过多,执行时间过长。
在本申请的实施例中,当将所有的交易划分到不同的分片中后,交易将在分片中执行并生成读写集记录交易的执行情况。由于多个交易是在不同的分片中并行执行的,因此需要对多个交易对应的多个读写集进行合并,以得到最终的读写集,根据最终的读写集,判断交易的执行情况。在本申请的实施例中,交易分发预分析可以减少最后读写集冲突的概率,但是静态的交易预分析很难在执行前将无关交易完全区分开,所以需要读写集冲突检测来保证最后交易结果的正确性;即交易预分析和读写集冲突检测两者需要协同工作。
在本申请的一些实施例中,以第一读写集的集合中任意相邻两个第一读写集为第一目标读写集和第二目标读写集,且第一目标读写集的顺序在第二目标读写集之前。如图8所示,为本申请实施例提供的读写集冲突检测一实施例流程示意图,可以包括:
81、确定第一目标读写集中的最后一个读写集为第一目标操作集。
82、确定第二目标读写集中的第一个读写集为第二目标操作集。
83、若第一目标操作集为写集,第二目标操作集为读集,判断在第二目标读写集之前的读写集中是否存在与第二目标操作集对应的第三目标操作集。
84、若存在,判断第三目标操作集与第二目标操作集是否在同一个分片中生成。
85、若第三目标操作集和第二目标操作集不在同一个分片中生成,则认为第一目标读写集和第二目标读写集冲突。
具体的,当所有的交易在同一个分片中串行执行时,生成的读写集之间不存在冲突可以直接合并;而当交易划分到不同的分片中并行执行时,交易生成的读写集之间可能存在冲突导致读写集无法合并。而读写集无法合并也说明交易在执行过程中出现了问题,则需要将交易重新执行。
在本申请的实施例中,以所有的交易并行执行后均生成一个第一读写集为例,一个交易对应第一读写集,而所有交易生成的多个读写集会生成一个第一读写集的集合,第一读写集的集合中包括了所有交易各自对应的第一读写集。且在第一读写集的集合中,所有的第一读写集按照未划分到分片前的交易的顺序排序。以第一读写集的集合中任意相邻两个第一读写集为第一目标读写集和第二目标读写集,且第一目标读写集的顺序在第二目标读写集之前。
在本申请的实施例中,第一目标读写集对应第一读写操作集合,且第一读写操作集合中包括至少一个读写操作,第一读写操作集合中记录了第一目标读写集对应的交易的执行过程。同理,第二目标读写集对应第二读写操作集合,且第二读写操作集合中包括至少一个读写操作,第二读写操作集合中记录了第二目标读写集对应的交易的执行过程。
在本申请的实施例中,读写集记录了每笔交易的数据修改集,包括读取了什么状态的数据,修改了什么状态的数据,读写集状态数据冲突判断会存在四种情况,包括:读读、读写、写读和写写,只有在前序交易先对某个键值key的状态数据进行修改,后序交易再去读取该键值key的状态数据且两笔交易不在同一个分片内执行的情况下,才会产生冲突。且读写集的冲突检测需要保证读写集对应的交易两者的执行顺序为前后相邻。
以相邻的第一目标读写集和第二目标读写集为例,若是第一目标读写集对应的第一读写操作集合中的最后一个读写操作为写操作,即生成的第一目标读写集中最后的写操作改变了键值的状态数据。此时冲突检测到第二目标读写集对应的第二读写操作集合中,若是第二目标读写集对应的第二读写操作集合中的第一个操作为读操作,即第二目标读写集中的第二目标操作集为读操作,需要读取对应的键值的状态数据。因此,需要判断在已经完成冲突检测的读写集中是否存在与第二目标操作集对应的第三目标操作;即判断在已经完成的冲突检测的读写集中,是否存在与第二目标操作中需要读取的键值对应的键值。其中,已经完成冲突检测的读写集包括第一目标读写集。
具体的,若第二目标操作集为读集,即第二目标操作集中的读操作需要读取键值key,并确认键值key对应的状态数据。那么需要在包括第一目标读写集的已经完成冲突检测的所有的第一读写集中,确认是否有对应的键值key。若是存在有对应的键值key,即在第二目标读写集之前的读写集中存在与第二目标操作集对应的第三目标操作集。
若是存在与第二目标操作集对应的第三目标操作集,则需要判断第二目标操作集中读取键值的读操作执行的分片,与第三目标操作集中的读取或更新键值的操作执行的分片,两者是否相同;即第三目标操作集和第二目标操作集是否在同一个分片中执行生成。若是第三目标操作集和第二目标操作集不在同一个分片中生成,则可以认为第一目标读写集和第二目标读写集冲突。
而若是相邻的第一目标读写集和第二目标读写集之间不冲突,即第一读写集的集合中的多个第一读写集之间不冲突,则说明交易在并行执行中没有出现错误,可以将第一读写集的集合中的多个第一读写集进行合并。
如下为冲突检测的一实施例:交易T1、T2和T3各自对应的第一读写集分别为:T1->Write(k1,v1',1),Write(k3,v2',1);T2->Read(k1,1),Write(k2,v3',1);T3->Read(k3,2);以交易T2和交易T3对应的第一读写集分别为第一目标读写集和第二目标读写集。在第一目标读写集中的最后一个读写集为写操作Write(k2,v3',1),改变了世界状态中键值k2的状态数据,在分片1中将k2的值更新为v3'。而第二目标读写集中的第一个读写集为读操作Read(k3,2),需要读取键值key3的状态数据,且该读操作在分片2中进行。
在上述实施例中,需要在以完成冲突检测的所有读写集中判断是否存在与键值key3对应的读写操作,即确定是否存在与第二目标操作集对应的第三目标操作集。因此,在交易T1和交易T2对应的读写集中确认是否存在与键值k3对应的操作,而交易T1对应的读写集中存在与键值k3对应的操作Write(k3,v2',1);即交易T1对应的读写集中更新了键值k3的状态数据,且在分片1中进行。而交易T3对应的读写集中,键值k3对应的读操作在分片2中进行。两者不是在同一个分片中进行,因此可以认为交易T2和交易T3两者对应的读写集之间冲突。
需要说明的是,在上述实施例中,在第二目标读写集之前的所有的读写集包括第一目标读写集,因此第三目标读写集可以为第一目标读写集;即与第二目标读写集相邻的第一目标读写集中,存在与第二目标读写集中的读操作需要读取的键值key对应的键值key。
在本申请的实施例中,第一读写集包括读集和写集,读集和写集均包括一个键值;而多个交易中各交易均对应至少一个读集或一个写集,因此多个交易中各交易对应至少一个键值。
若第一读写集的集合中的多个第一读写集之间不冲突,则可以对第一读写集的集合中的多个第一读写集进行合并,得到最终的读写集,以确定多个交易执行无误,如图9所示,为本申请实施例提供的读写集合并的一实施例流程示意图,可以包括:
91、确定交易中相同键值对应的至少一个写集。
其中,第一读写集的集合中的多个第一读写集按照交易未划分前的初始顺序排列,而一个读写集中包括至少一个读集或至少一个写集,或是多个读集或写集。而第一读写集中的读集和写集按照交易实际执行的顺序排列。因此可以确定每一个读集和写集的排列顺序。
对于第一读写集的集合来说,读集和写集按照交易未划分前的初始顺序排列,而对于某个确定的第一读写集来说,第一读写集中的读集和写集按照交易实际执行的顺序排列。
而不同的交易可以对同一个键值进行处理,或是读操作或是写操作,因此可以确定相同键值对应的至少一个写集。
92、确定至少一个写集中,处于最后顺序的写集。
由于读集和写集是按照顺序排列的,在确定了相同键值对应的至少一个写集后,可以确认该键值对应的处于最后顺序的写集。
93、保留最后顺序的写集。
对于相同键值对应的至少一个写集来说,每一个写集均改变了该键值的状态数据,而写集又是按照顺序排列的,因此处于最后顺序的写集改变了键值的状态数据后,该键值对应的状态数据不会再被改变。需要保留处于最后顺序的写集,可以根据处于最后顺序的写集,确定键值最终的状态数据。
94、遍历所有键值中每个键值各自对应的至少一个写集,得到所有键值中每个键值各自对应的写集,合并得到最终的读写集。
由于多个交易中包括多个不同的键值,可以利用前述步骤遍历所有键值中每个键值各自对应的至少一个写集,以得到所有键值中每个键值各自对应的处于最后顺序的写集。再合并所有键值中每个键值各自对应的处于最后顺序的写集,得到最终的读写集。
95、根据最终的读写集,确认多个交易执行无误。
在上述实施例中,读写集的读集未保留,仅保留每个键值对应的处于最后顺序的写集。每个键值对应的处于最后顺序的写集更新了键值的状态数据后,每个键值的状态数据不会再改变。
在本申请的一些实施例中,也可以按照排列顺序先将相邻两个第一读写集之间进行合并,使得合并后的第一读写集数量为合并前的第一读写集的数量的一半;然后对合并后的第一读写集进行二次合并,使得第一读写集的数量又减少为一半;经过多次合并后,得到最终的读写集。若需要合并的第一读写集的数量为奇数,可以将最后一个第一读写集加入到后一轮合并过程中。
需要说明的是,在上述实施例中,不考虑非法交易的情况。即所有的交易均为合法交易,每个交易对应的第一读写集为合法的读写集。
如图10所示,为本申请实施例提供的读写集合并一实施例示意图。其中交易1、2、3和4分别产生读写集RWSet1、RWSet2、RWSet3和RWSet4,其中交易1、3、4在分片shard1中执行,交易2在分片shard2中执行;因此RWSet1和RWSet2需要按前述规则进行读写集的冲突判断,若是读写集之间不冲突,则合并读写集RWSet1和RWSet2。其中,读集将记录交易在不同分片内的读记录,写集则用后序的交易直接覆盖前序交易就好。
对于RWSet3和RWSet4的情况,由于交易3和4在相同分片内执行则可直接合并,以此规则不断的进行合并。
如图10中所示,交易1在分片shard1中执行,交易2在分片shard2中执行;且对于交易3和交易4来说,交易3和交易4在分片1中更新了键值keyA的状态数据,在分片2中更新了键值keyC的状态数据,而在分片1中还读取了键值keyB的状态数据。
在本申请的实施例中,若是所有交易各自执行后生成的读写集之间互不冲突,则可以对所有交易各自执行后生成的读写集进行合并,得到最终的读写集。且最终的读写集可以写入(即存储)在区块链的账本中。
如图11所示,为本申请实施例提供的合并交易的另一实施例流程示意图,可以包括:
1101、若第一读写集的集合中的多个第一读写集冲突,则退出合并。
1102、将所有交易划分到同一个分片中执行,得到多个交易中每个交易各自对应的第二读写集。
1103、合并多个第二读写集。
具体的,若是第一读写集的集合中的多个第一读写集之间存在冲突,此时多个第一读写集无法合并;在检测到多个第一读写集存在冲突时,就退出合并;且将多个交易并行执行生成的多个第一读写集抛弃。此时需要将所有的交易按照顺序划分到同一个分片中串行执行,重新生成多个交易中各交易对应的第二读写集,得到第二读写集的集合。
由于第二读写集的集合中的多个第二读写集是多个交易在同一个分片中串行执行的,因此第二读写集的集合中的多个第二读写集之间不存在冲突,可以直接进行合并,无需进行冲突检测。
然而在本申请的其他实施例中,交易在执行的过程中会出现错误导致出现非法交易以及非法交易对应的非法读写集。若是第一/第二读写集的集合中存在非法交易对应的非法读写集,则应该将非法读写集从第一/第二读写集的集合中直接剔除,并对剩下的第一/第二读写集继续进行合并,得到最终的读写集。
其中,非法交易可以为某个交易中的读集读取了某个键值key,而该键值key在已经完成的交易对应的读写集中没有与之对应的键值key,即该交易中的键值key没有被任何其他交易进行改变,无法获取与之对应的键值key;那么该交易为非法交易。
在本申请的一个具体实施例中,在读写集中一个读集可以用元组Read(k,shard)表示,写集可以用元组(k,val,shard)表示;其中,key为键值,val是键值key的具体值或世界状态,shard可以为执行交易分片号。在该实施例中,对于出现冲突的情况不做中断合并的处理,只为说明冲突的情况。
在该实施例的区块中可以包括五个交易,分别为T1,T2,T3,T4和T5,所有的交易都基于同一个世界状态的基础。下面的内容展示了这些交易的世界状态和交易执行时的读写活动:
World state:(k1,v1),(k2,v2),(k3,v3),(k4,v4),(k5,v5)
T1->Write(k1,v1',1),Write(k2,v2',1),Write(k3,v3',1)
T2->Read(k1,2),Write(k3,v3',2)
T3->Write(k2,v2”,2)
T4->Read(k3,1),Write(k3,v3”,1)
T5->Read(k5,3),Write(k6,v6',3)
在本实施例中,可以认为这些交易的执行顺序为T1至T5,而这些交易在同一个区块中的不同分片中执行。
在进行冲突检测时,对于交易T1来说,交易T1可以通过验证,因为交易T1没有执行任何读操作,仅有写操作。同时交易T1中的写操作使得世界状态中的键k1和k2被更新为(k1,v1'),(k2,v2'),(k3,v3')。
而对于交易T2来说,交易T2没有通过验证。由于交易T2中第一个读写操作为读操作,而交易T1中的最后一个操作为写操作,那么此时需要对交易T1和T2进行冲突检测。对于交易T2中的读写操作来说,交易T2中的第一个读写操作为读操作,读取了键k1,但键k1在交易T1中被更新,且在分片1中被更新。而交易T2中读取键k1的操作是在分片2中进行的,两个相邻的读写操作不是在同一个分片中进行,交易T1和T2各自对应的读写集之间冲突。
在本申请的实施例中,当两个交易对应的读写集之间冲突时,应当退出冲突检测和合并。但在该实施例中,对于冲突的读写集不做退出处理,仅为说明冲突的具体情况。
因此交易T1的读写集和T2的读写集之间冲突后,继续验证交易T3的读写集。而交易T3的读写集通过了验证,因为交易T3没有执行任何读操作,只有写操作,且将世界状态中的键k2更新为(k2,v2”)。而对于交易T4来说,交易T4的读写集中第一个读写操作为读操作,同时,交易T3中的最后一个读写操作为写操作,那么需要判断交易T3的读写集和交易T4的读写集之间是否冲突。
对于交易T4来说,交易T4的读写集中首先读取了键k3,且读操作在分片1中进行。而修改k3的操作只在交易T1中出现,而交易T1也是在分片1中进行的,即交易T4和交易T1是在同一个分片1中执行的,交易T4合法。最终,经过交易T4,世界状态中的k3被更新为(k3,v3”)。
对于交易T5来说,交易T5中的第一个操作为读操作,而交易T4中的最后一个操作为写操作,因此需要判断交易T4读写集和交易T5的读写集之间是否冲突。对于交易T5来说,交易T5读取了键k5,但在交易T5之间的交易T1-T4中,没有被其他任何交易改变,所以可以判定交易K5为非法交易,应当剔除交易T5对应的读写集,仅对除非法交易外的其他正常交易对应的读写集进行合并,得到最终的读写集。
在本申请的实施例中,由于使用读写集的形式记录交易执行过程的状态的变更,因此可以通过读写集判断并行执行的交易之间是否存在冲突。且对于非法交易,也可以通过非法交易对应的读写集直接判断交易是否为非法交易。
为了更好实施本申请实施例中基于区块链的交易分发执行方法、在基于区块链的交易分发执行方法基础之上、本申请实施例中还提供一种基于区块链的交易分发执行装置、如图12所示为本申请实施例提供的基于区块链的交易分发执行装置,所述基于区块链的交易分发执行装置1200包括:
获取模块1201,获取模块1201用于获取多个交易对应的多个交易信息,多个交易信息中各交易信息包括当前交易的发起者地址,当前交易的交易合约地址和当前交易的交易类型。
划分模块1202,划分模块1202用于根据所述多个交易信息,将所述多个交易划分到不同分片中,位于同一分片中的所述交易关联。
执行模块1203,执行模块1203用于并行执行不同分片中的多个交易,得到每个交易各自对应的第一读写集。
冲突检测模块1204,冲突检测模块1204用于对多个第一读写集进行排序,得到排序后的第一读写集的集合,并对第一读写集的集合进行冲突检测,以确定第一读写集的集合中任意相邻两个第一读写集之间是否冲突。
合并模块1205,合并模块1205用于若第一读写集的集合中的多个第一读写集之间不冲突,则对第一读写集的集合中的多个第一读写集进行合并,得到最终的读写集,以确认多个交易执行无误。
本申请提供的基于区块链的交易分发执行装置,利用区块链中不同交易对应的包括交易的发起者地址、交易的交易合约地址和交易类型等交易信息,将交易划分到不同的分片并行执行,保证交易执行的效率;且利用读写集记录交易执行的过程,同时也利用读写集避免了执行过程中产生的非法交易,提高了交易执行的准确性。
其中,在本申请的一些实施例中,划分模块1202主要可以用于根据多个交易信息中各交易的交易类型,确定多个交易信息中相同交易类型的交易;将相同交易类型的交易划分到预设的各交易类型对应的交易列表中;对各交易类型对应的交易列表中的交易进行地址比对分析,得到预分析结果;根据预分析结果对多个交易进行划分,将多个交易划分到不同的分片中。
具体的,划分模块1202对各交易类型对应的交易列表中的交易进行地址比对分析,得到预分析结果,可以包括:确定各交易类型对应的交易列表中各交易中,各交易的发起者地址或各交易的交易合约地址相同的交易,得到多组关联交易;根据多组关联交易,新建多个关联交易列表,每组关联交易对应一个关联交易列表;将每组关联交易划分到每组关联交易对应的关联交易列表中,关联交易列表为多个,每个交易列表中的交易之间互相关联。
具体的,划分模块1202根据预分析结果对多个交易进行分片,将多个交易划分到不同的分片中,可以包括:获取多个分片对应的分片数量;获取多个交易对应的第一交易总量;获取多个关联交易列表中每个关联交易列表中的交易对应的第二交易总量;根据分片数量和第一交易总量,确定多个分片中各分片接收的交易数量平均值,所述平均值为多个分片中各分片中接收的第一目标交易数量;判断每个第二交易总量与平均值的大小,将多个关联交易列表划分到多个分片中。
具体的,划分模块1202判断每个第二交易总量与所述平均值的大小,将多个关联交易列表划分到多个分片中,可以包括:确认第二交易总量大于平均值的第一目标关联交易;将同一个第一目标关联交易中的所有交易划分到同一个第一目标分片中;确认第二交易总量小于平均值的第二目标关联交易;将第二目标关联交易划分到除第一目标分片之外的其他分片中。
在本申请的另一些实施例中,以第一读写集的集合中任意相邻的两个第一读写集为第一目标读写集和第二目标读写集,且第一目标读写集在第二目标读写集之前,第一目标读写集和第二目标读写集均包括至少一个读写操作。
冲突检测模块1204对第一读写集的集合进行冲突检测,可以包括:确定第一目标读写集中的最后一个读写集为第一目标操作集;确定第二目标读写集中的第一个读写集为第二目标操作集;若第一目标操作集为写集,第二目标操作集为读集,判断在第二目标读写集之前的读写集中是否存在与第二目标操作集对应的第三目标操作集;若存在,判断第三目标操作集与第二目标操作集是否在同一个分片中生成;若第三目标操作集和第二目标操作集不在同一个分片中生成,则认为第一目标读写集和第二目标读写集冲突。
其中,第一读写集包括读集和写集,多个交易中各交易均对应至少一个键值,读集和写集均包括一个键值;若第一读写集的集合中的多个第一读写集之间不冲突,合并模块1205对第一读写集的集合中的多个第一读写集进行合并,得到最终的读写集,以确认多个交易执行无误,可以包括:
确定交易中相同键值对应的至少一个写集,至少一个写集按照第一读写集的集合中的多个第一读写集的顺序排序;确定至少一个写集中,处于最后顺序的写集;保留最后顺序的写集;遍历所有键值中每个键值各自对应的至少一个写集,得到所有键值中每个键值各自对应的写集,合并得到最终的读写集;根据最终的读写集,确认多个交易执行无误。
本申请还提供一种服务器、其集成了本申请实施例所提供的任一种基于区块链的交易分发执行模块,如图13所示,其示出了本申请实施例所涉及到的服务器的结构示意图、具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器1301、一个或一个以上计算机可读存储介质的存储器1302、电源1303和输入单元1304等部件。本领域技术人员可以理解、图4中示出的服务器结构并不构成对服务器的限定、可以包括比图示更多或更少的部件、或者组合某些部件、或者不同的部件布置。其中:
处理器1301是该服务器的控制中心、利用各种接口和线路连接整个服务器的各个部分、通过运行或执行存储在存储器1302内的软件程序和/或模块、以及调用存储在存储器1302内的数据、执行服务器的各种功能和处理数据、从而对服务器进行整体监控。可选的、处理器1301可包括一个或多个处理核心;优选的、处理器1301可集成应用处理器和调制解调处理器、其中、应用处理器主要处理操作系统、用户界面和应用程序等、调制解调处理器主要处理无线通信。可以理解的是、上述调制解调处理器也可以不集成到处理器1301中。
存储器1302可用于存储软件程序以及模块、处理器1301通过运行存储在存储器1302的软件程序以及模块、从而执行各种功能应用以及数据处理。存储器1302可主要包括存储程序区和存储数据区、其中、存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外、存储器1302可以包括高速随机存取存储器、还可以包括非易失性存储器、例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地、存储器1302还可以包括存储器控制器、以提供处理器1301对存储器1302的访问。
服务器还包括给各个部件供电的电源1303、优选的、电源1303可以通过电源管理系统与处理器1301逻辑相连、从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1303还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元1304、该输入单元1304可用于接收输入的数字或字符信息、以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出、服务器还可以包括显示单元等、在此不再赘述。具体在本实施例中、服务器中的处理器1301会按照如下的指令、将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器1302中、并由处理器1301来运行存储在存储器1302中的应用程序,从而实现各种功能,如下:
获取多个交易对应的多个交易信息,多个交易信息中各交易信息包括当前交易的发起者地址,当前交易的交易合约地址和当前交易的交易类型;根据多个交易信息,将多个交易划分到不同分片中,位于同一分片中的交易关联;并行执行不同分片中的多个交易,得到每个交易各自对应的第一读写集;对多个第一读写集进行排序,得到排序后的第一读写集的集合,并对第一读写集的集合进行冲突检测,以确定第一读写集的集合中任意相邻两个第一读写集之间是否冲突;若第一读写集的集合中的多个第一读写集之间不冲突,则对第一读写集的集合中的多个第一读写集进行合并,得到最终的读写集以确认多个交易执行无误。
本申请还提供一种计算机可读存储介质、该存储介质可以包括:只读存储器(ROM、Read Only Memory)、随机存取记忆体(RAM、Random Access Memory)、磁盘或光盘等。存储介质存储有计算机程序、该计算机程序被处理器进行加载、以执行本申请实施例所提供的任一种基于区块链的交易分发执行方法中的步骤。例如、所述计算机程序被处理器进行加载可以执行如下步骤:
获取多个交易对应的多个交易信息,多个交易信息中各交易信息包括当前交易的发起者地址,当前交易的交易合约地址和当前交易的交易类型;根据多个交易信息,将多个交易划分到不同分片中,位于同一分片中的交易关联;并行执行不同分片中的多个交易,得到每个交易各自对应的第一读写集;对多个第一读写集进行排序,得到排序后的第一读写集的集合,并对第一读写集的集合进行冲突检测,以确定第一读写集的集合中任意相邻两个第一读写集之间是否冲突;若第一读写集的集合中的多个第一读写集之间不冲突,则对第一读写集的集合中的多个第一读写集进行合并,得到最终的读写集,以确认多个交易执行无误。
需要说明的是、本申请实施例方法由于是在电子设备中执行、各电子设备的处理对象均以数据或信息的形式存在、例如时间、实质为时间信息、可以理解的是、后续实施例中若提及尺寸、数量、位置等、均为对应的数据存在、以便电子设备进行处理、具体此处不作赘述。
以上对本申请实施例所提供的一种基于区块链的交易分发执行方法、装置、服务器及存储介质进行了详细介绍、本文中应用了具体个例对本发明的原理及实施方式进行了阐述、以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时、对于本领域的技术人员、依据本发明的思想、在具体实施方式及应用范围上均会有改变之处、综上所述、本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种基于区块链的交易分发执行方法,其特征在于,所述区块链包括多个区块,所述多个区块中的每个区块均包括多个分片;
所述方法包括:
获取多个交易对应的多个交易信息,所述多个交易信息中各交易信息包括当前交易的发起者地址,当前交易的交易合约地址和当前交易的交易类型;
根据所述多个交易信息,将所述多个交易划分到不同分片中,位于同一分片中的所述交易关联;
并行执行不同分片中的多个交易,得到每个交易各自对应的第一读写集;
对多个所述第一读写集进行排序,得到排序后的第一读写集的集合,并对所述第一读写集的集合进行冲突检测,以确定所述第一读写集的集合中任意相邻两个第一读写集之间是否冲突;
若所述第一读写集的集合中的多个所述第一读写集之间不冲突,则对所述第一读写集的集合中的多个所述第一读写集进行合并,得到最终的读写集,以确认所述多个交易执行无误。
2.根据权利要求1所述的基于区块链的交易分发执行方法,其特征在于,所述根据所述多个交易信息,将所述多个交易划分到不同分片中,包括:
根据所述多个交易信息中各交易的交易类型,确定所述多个交易信息中相同交易类型的交易;
将所述相同交易类型的交易划分到预设的各交易类型对应的交易列表中;
对所述各交易类型对应的交易列表中的交易进行地址比对分析,得到预分析结果;
根据所述预分析结果对多个交易进行划分,将所述多个交易划分到不同的分片中。
3.根据权利要求2所述的基于区块链的交易分发执行方法,其特征在于,所述对所述各交易类型对应的交易列表中的交易进行地址比对分析,得到预分析结果,包括:
确定所述各交易类型对应的交易列表中各交易中,各交易的发起者地址或各交易的交易合约地址相同的交易,得到多组关联交易;
根据所述多组关联交易,新建多个关联交易列表,每组关联交易对应一个关联交易列表;
将每组关联交易划分到每组关联交易对应的关联交易列表中,所述关联交易列表为多个,每个所述交易列表中的交易之间互相关联。
4.根据权利要求3所述的基于区块链的交易分发执行方法,其特征在于,所述根据所述预分析结果对多个交易进行分片,将所述多个交易划分到不同的分片中,包括:
获取所述多个分片对应的分片数量;
获取所述多个交易对应的第一交易总量;
获取多个所述关联交易列表中每个关联交易列表中的交易对应的第二交易总量;
根据所述分片数量和所述第一交易总量,确定所述多个分片中各分片接收的交易数量平均值,所述平均值为所述多个分片中各分片中接收的第一目标交易数量;
判断每个所述第二交易总量与所述平均值的大小,将多个所述关联交易列表划分到所述多个分片中。
5.根据权利要求4所述的基于区块链的交易分发执行方法,其特征在于,所述判断每个所述第二交易总量与所述平均值的大小,将多个所述关联交易列表划分到所述多个分片中,包括:
确认所述第二交易总量大于所述平均值的第一目标关联交易;
将同一个所述第一目标关联交易中的所有交易划分到同一个第一目标分片中;
确认所述第二交易总量小于所述平均值的第二目标关联交易;
将所述第二目标关联交易划分到除所述第一目标分片之外的其他分片中。
6.根据权利要求1所述的基于区块链的交易分发执行方法,其特征在于,所述第一读写集的集合中的读写集按照顺序排列,以所述第一读写集的集合中任意相邻的两个第一读写集为第一目标读写集和第二目标读写集,且所述第一目标读写集在所述第二目标读写集之前,所述第一目标读写集和所述第二目标读写集均包括至少一个读写操作;
所述对所述第一读写集的集合进行冲突检测,包括:
确定所述第一目标读写集中的最后一个读写集为第一目标操作集;
确定所述第二目标读写集中的第一个读写集为第二目标操作集;
若所述第一目标操作集为写集,所述第二目标操作集为读集,判断在所述第二目标读写集之前的读写集中是否存在与所述第二目标操作集对应的第三目标操作集;
若存在,判断所述第三目标操作集与所述第二目标操作集是否在同一个分片中生成;
若所述第三目标操作集和所述第二目标操作集不在同一个分片中生成,则认为所述第一目标读写集和所述第二目标读写集冲突。
7.根据权利要求6所述的基于区块链的交易分发执行方法,其特征在于,所述第一读写集包括读集和写集,所述多个交易中各交易均对应至少一个键值,所述读集和所述写集均包括一个键值;
所述若所述第一读写集的集合中的多个所述第一读写集之间不冲突,则对所述第一读写集的集合中的多个所述第一读写集进行合并,得到最终的读写集,以确定所述多个交易执行无误,包括:
确定交易中相同键值对应的至少一个写集,所述至少一个写集按照所述第一读写集的集合中的多个所述第一读写集的顺序排序;
确定所述至少一个写集中,处于最后顺序的写集;
保留所述最后顺序的写集;
遍历所有键值中每个键值各自对应的至少一个写集,得到所有键值中每个键值各自对应的写集,合并得到最终的读写集;
根据所述最终的读写集,确认所述多个交易执行无误。
8.根据权利要求1所述的基于区块链的交易分发执行方法,其特征在于,所述方法还包括:
若所述第一读写集的集合中的多个所述第一读写集冲突,则退出合并;
将所述所有交易划分到同一个分片中执行,得到所述多个交易中每个交易各自对应的第二读写集;
合并多个所述第二读写集;和/或,
若所述第一读写集的集合中存在非法交易对应的非法读写集,则将所述非法读写集剔除,继续进行合并;和/或,
若多个所述交易中包括跨合约交易,则获取所述跨合约交易的调用参数;
根据所述跨合约交易对应的所述调用参数,和所述跨合约交易对应的交易信息,将所述跨合约交易划分到所述多个分片中。
9.一种基于区块链的交易分发执行装置,其特征在于,所述区块链包括多个区块,所述多个区块中的每个区块均包括多个分片;
所述基于区块链的交易分发执行装置,包括:
获取模块,所述获取模块用于获取多个交易对应的多个交易信息,所述多个交易信息中各交易信息包括当前交易的发起者地址,当前交易的交易合约地址和当前交易的交易类型;
划分模块,所述划分模块用于根据所述多个交易信息,将所述多个交易划分到不同分片中,位于同一分片中的所述交易关联;
执行模块,所述执行模块用于并行执行不同分片中的多个交易,得到每个交易各自对应的第一读写集;
冲突检测模块,所述冲突检测模块用于对多个所述第一读写集进行排序,得到排序后的第一读写集的集合,并对所述第一读写集的集合进行冲突检测,以确定所述第一读写集的集合中任意相邻两个第一读写集之间是否冲突;
合并模块,所述合并模块用于若所述第一读写集的集合中的多个所述第一读写集之间不冲突,则对所述第一读写集的集合中的多个所述第一读写集进行合并,得到最终的读写集以确认所述多个交易执行无误。
10.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现权利要求1至9中任一项所述的基于区块链的交易分发执行方法。
11.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行权利要求1至9任一项所述的基于区块链的交易分发执行方法中的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011636119.XA CN112669155B (zh) | 2020-12-31 | 2020-12-31 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
PCT/CN2021/139508 WO2022143242A1 (zh) | 2020-12-31 | 2021-12-20 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011636119.XA CN112669155B (zh) | 2020-12-31 | 2020-12-31 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112669155A true CN112669155A (zh) | 2021-04-16 |
CN112669155B CN112669155B (zh) | 2024-05-03 |
Family
ID=75413645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011636119.XA Active CN112669155B (zh) | 2020-12-31 | 2020-12-31 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112669155B (zh) |
WO (1) | WO2022143242A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157451A (zh) * | 2021-04-19 | 2021-07-23 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行区块的方法及装置 |
CN113205417A (zh) * | 2021-04-27 | 2021-08-03 | 华东师范大学 | 一种面向联盟链的交易并行处理方法及系统 |
CN113743941A (zh) * | 2021-11-04 | 2021-12-03 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中执行交易的方法、区块链和主节点 |
CN113869902A (zh) * | 2021-12-03 | 2021-12-31 | 深圳前海微众银行股份有限公司 | 一种区块链交易执行方法及装置 |
CN113867709A (zh) * | 2021-12-01 | 2021-12-31 | 深圳前海微众银行股份有限公司 | 区块链智能合约读写集构建方法及装置 |
CN114022148A (zh) * | 2021-12-24 | 2022-02-08 | 杭州趣链科技有限公司 | 基于区块链的交易冲突检测方法、装置、设备和存储介质 |
CN114328133A (zh) * | 2022-03-16 | 2022-04-12 | 北京微芯感知科技有限公司 | 单机构分布式冲突检测方法、系统和存算分离架构 |
WO2022143242A1 (zh) * | 2020-12-31 | 2022-07-07 | 杭州趣链科技有限公司 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
WO2024007690A1 (zh) * | 2022-07-08 | 2024-01-11 | 腾讯科技(深圳)有限公司 | 一种基于区块链的交易处理方法、装置、设备、计算机可读存储介质及计算机程序产品 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116012164B (zh) * | 2023-03-17 | 2023-06-30 | 安徽中科晶格技术有限公司 | 基于虚拟账户的区块链跨分片交易方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018076760A1 (zh) * | 2016-10-27 | 2018-05-03 | 上海亿账通区块链科技有限公司 | 基于区块链的交易事务处理方法、系统、电子装置及存储介质 |
CN109508337A (zh) * | 2018-11-12 | 2019-03-22 | 杭州秘猿科技有限公司 | 一种交易并行执行方法、装置、电子设备及系统 |
CN110428329A (zh) * | 2019-07-01 | 2019-11-08 | 扬州腾邮大数据网络科技有限公司 | 一种多区块链的分片处理方法和装置 |
WO2020022958A1 (en) * | 2018-07-27 | 2020-01-30 | Aioz Pte Ltd | Method and apparatus for transaction verification in a blockchain-based network |
CN111736963A (zh) * | 2020-06-08 | 2020-10-02 | 中国科学院计算技术研究所 | 一种用于无主链多分片区块链的事务处理系统及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210314154A1 (en) * | 2018-10-17 | 2021-10-07 | Hewlett-Packard Development Company, L.P. | Apparatus and method for dynamic sharding of concurrent blockchains |
CN111127013B (zh) * | 2019-12-24 | 2023-12-29 | 深圳大学 | 基于区块链的去中心化数据交易方法、装置、设备及介质 |
CN111294234B (zh) * | 2020-01-17 | 2022-07-29 | 麦科思(苏州)数据科技有限公司 | 一种基于智能合约优化模型的并行区块链分片方法 |
CN111680050B (zh) * | 2020-05-25 | 2023-09-26 | 杭州趣链科技有限公司 | 一种联盟链数据的分片处理方法、设备和存储介质 |
CN112669155B (zh) * | 2020-12-31 | 2024-05-03 | 杭州趣链科技有限公司 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
-
2020
- 2020-12-31 CN CN202011636119.XA patent/CN112669155B/zh active Active
-
2021
- 2021-12-20 WO PCT/CN2021/139508 patent/WO2022143242A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018076760A1 (zh) * | 2016-10-27 | 2018-05-03 | 上海亿账通区块链科技有限公司 | 基于区块链的交易事务处理方法、系统、电子装置及存储介质 |
WO2020022958A1 (en) * | 2018-07-27 | 2020-01-30 | Aioz Pte Ltd | Method and apparatus for transaction verification in a blockchain-based network |
CN109508337A (zh) * | 2018-11-12 | 2019-03-22 | 杭州秘猿科技有限公司 | 一种交易并行执行方法、装置、电子设备及系统 |
CN110428329A (zh) * | 2019-07-01 | 2019-11-08 | 扬州腾邮大数据网络科技有限公司 | 一种多区块链的分片处理方法和装置 |
CN111736963A (zh) * | 2020-06-08 | 2020-10-02 | 中国科学院计算技术研究所 | 一种用于无主链多分片区块链的事务处理系统及方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022143242A1 (zh) * | 2020-12-31 | 2022-07-07 | 杭州趣链科技有限公司 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
CN113157451A (zh) * | 2021-04-19 | 2021-07-23 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行区块的方法及装置 |
CN113157451B (zh) * | 2021-04-19 | 2023-12-05 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行区块的方法及装置 |
CN113205417A (zh) * | 2021-04-27 | 2021-08-03 | 华东师范大学 | 一种面向联盟链的交易并行处理方法及系统 |
CN113743941A (zh) * | 2021-11-04 | 2021-12-03 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中执行交易的方法、区块链和主节点 |
CN113867709A (zh) * | 2021-12-01 | 2021-12-31 | 深圳前海微众银行股份有限公司 | 区块链智能合约读写集构建方法及装置 |
WO2023098058A1 (zh) * | 2021-12-01 | 2023-06-08 | 深圳前海微众银行股份有限公司 | 区块链智能合约读写集构建方法及装置 |
CN113867709B (zh) * | 2021-12-01 | 2022-04-12 | 深圳前海微众银行股份有限公司 | 区块链智能合约读写集构建方法及装置 |
CN113869902A (zh) * | 2021-12-03 | 2021-12-31 | 深圳前海微众银行股份有限公司 | 一种区块链交易执行方法及装置 |
CN114022148B (zh) * | 2021-12-24 | 2022-04-22 | 杭州趣链科技有限公司 | 基于区块链的交易冲突检测方法、装置、设备和存储介质 |
WO2023116079A1 (zh) * | 2021-12-24 | 2023-06-29 | 杭州趣链科技有限公司 | 基于区块链的交易冲突检测方法、装置、设备和存储介质 |
CN114022148A (zh) * | 2021-12-24 | 2022-02-08 | 杭州趣链科技有限公司 | 基于区块链的交易冲突检测方法、装置、设备和存储介质 |
CN114328133A (zh) * | 2022-03-16 | 2022-04-12 | 北京微芯感知科技有限公司 | 单机构分布式冲突检测方法、系统和存算分离架构 |
WO2024007690A1 (zh) * | 2022-07-08 | 2024-01-11 | 腾讯科技(深圳)有限公司 | 一种基于区块链的交易处理方法、装置、设备、计算机可读存储介质及计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
WO2022143242A1 (zh) | 2022-07-07 |
CN112669155B (zh) | 2024-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112669155B (zh) | 基于区块链的交易分发执行方法、装置服务器及存储介质 | |
EP3678346B1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
CN111338766B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
CN105630609B (zh) | 区块链的打包存储方法 | |
CN110334152B (zh) | 一种数据同步方法、装置及服务器 | |
JP2023546249A (ja) | トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム | |
CN112597153B (zh) | 一种基于区块链的数据存储方法、装置及存储介质 | |
EP4030287A1 (en) | Transaction processing method and apparatus, computer device, and storage medium | |
CN111444027B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
US11100047B2 (en) | Method, device and computer program product for deleting snapshots | |
US8046413B2 (en) | Automatic commutativity detection for generalized paxos | |
CN110188110A (zh) | 一种构建分布式锁的方法及装置 | |
CN113672375A (zh) | 资源分配预测方法、装置、设备及存储介质 | |
CN114997990A (zh) | 分布式对账方法,装置及系统 | |
CN115412336B (zh) | 联盟链账本篡改攻击检测方法、装置及电子设备 | |
CN115048462A (zh) | 一种基于区块链的数字资产合成方法及装置 | |
CN108021678A (zh) | 一种结构紧凑的键值对存储结构及快速键值对查找方法 | |
CN113132433B (zh) | 一种区块链分片方法、装置、电子设备及存储介质 | |
CN111857883A (zh) | 页面数据校验方法、装置、电子设备及存储介质 | |
US11789922B1 (en) | Admitting for performance ordered operations of atomic transactions across a distributed database | |
Pan et al. | HyperChain: A Dynamic State Sharding Protocol Supporting Smart Contracts to Achieve Low Cross-Shard and Scalability | |
US20230376467A1 (en) | Identity resolution system | |
CN115098228B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
US20230421398A1 (en) | System and method for inserting transactions into transaction pools | |
CN117668099A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |