WO2021047541A1 - 一种区块链内获取交易依赖关系的方法及装置 - Google Patents
一种区块链内获取交易依赖关系的方法及装置 Download PDFInfo
- Publication number
- WO2021047541A1 WO2021047541A1 PCT/CN2020/114229 CN2020114229W WO2021047541A1 WO 2021047541 A1 WO2021047541 A1 WO 2021047541A1 CN 2020114229 W CN2020114229 W CN 2020114229W WO 2021047541 A1 WO2021047541 A1 WO 2021047541A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- transaction
- shared variable
- transactions
- shared
- variable
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- 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
Abstract
一种区块链内获取交易依赖关系的方法及装置,其中方法为:获取多个交易(201);所述多个交易存在输入顺序;根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,获得所述多个交易的依赖关系(202);所述预设操作为:将第一交易的前序共享交易中输入顺序最靠后的第二交易,确定为所述第一交易所依赖的交易;所述前序共享交易为输入顺序位于所述第一交易之前且与所述第一交易具有同一共享变量的交易;所述共享变量为用于处理交易的各接口中的至少两个接口均具有的变量;所述第一交易为所述多个交易中任一交易。上述方法应用于金融科技(Fintech)时,可以为多个交易的依赖关系获取提供了方法,并为多个交易的执行提供了参考。
Description
相关申请的交叉引用
本申请要求在2019年09月09日提交中国专利局、申请号为201910848016.0、申请名称为“一种区块链内获取交易依赖关系的方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本发明涉及金融科技(Fintech)领域和区块链(Blockchain)领域,尤其涉及一种区块链内获取交易依赖关系的方法及装置。
随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链(Blockchain)、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变。目前,基于区块链的不可篡改性,金融科技领域中常通过区块链进行交易。
然而,随着交易量的不断增加,串行执行交易会导致大量交易长期排队。为了增加交易的执行的效率,可以考虑交易的并行执行情况,由于交易与交易之间可能存在相同的共享变量,而两个及以上存在相同共享变量的交易共享变量冲突并不能并行执行,因此交易与交易之间会形成执行先后顺序的依赖关系。为了避免交易间的共享变量冲突,需要依据交易依赖关系来并行执行交易。然而现有技术中,还没有区块链内获取交易依赖关系的方法,这不利于区块链内的交易执行,是一个亟待解决的问题。
发明内容
本申请实施例提供一种区块链内获取交易依赖关系的方法及装置,解决了现有技术中没有区块链内获取交易依赖关系的方法,不利于区块链内的交 易执行的问题。
第一方面,本申请实施例提供一种区块链内获取交易依赖关系的方法:获取多个交易;所述多个交易存在输入顺序;根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,获得所述多个交易的依赖关系;所述预设操作为:将第一交易的前序共享交易中输入顺序最靠后的第二交易,确定为所述第一交易所依赖的交易;所述前序共享交易为输入顺序位于所述第一交易之前且与所述第一交易具有同一共享变量的交易;所述共享变量为用于处理交易的各接口中的至少两个接口均具有的变量;所述第一交易为所述多个交易中任一交易。
上述方法下,按照输入顺序,获取多个交易后,根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,从而依次获取每个交易的所依赖的交易,减少了交易之间依赖关系混乱的几率,其中,由于前序共享交易执行之前必然已执行了前序共享交易的所依赖的交易,因此依赖关系中针对第一交易的每个共享变量,仅需考虑将第一交易的前序共享交易中输入顺序最靠后的第二交易,便能避免第一交易与第二交易存在共享变量冲突,本方法可以简化地描述出所述多个交易的依赖关系,从而为多个交易的依赖关系获取提供了方法,为多个交易的并行执行提供了参考。
一种可选实施方式中,所述根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,获得所述多个交易的依赖关系之后,还包括:依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易;在执行完毕之后,更新所述依赖关系并返回依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易的步骤。
上述方法中依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易;并在执行完毕之后,更新所述依赖关系并返回依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易的步骤,因此可以通过所述依赖关系获悉哪些交易并行执行时不会出现冲突,上述方式在不出现共享变量冲突的情况下,提升了多个交易的执行效率。
一种可选实施方式中,所述对所述多个交易中每个交易依次执行预设操作,包括:针对第一交易,若前序共享变量中的第一共享变量与所述第一交易的第二共享变量为同一共享变量,则将所述第一共享变量对应的第二交易确定为所述第一交易所依赖的交易,并更新所述第一共享变量对应于所述第一交易;所述前序共享变量是根据输入顺序在所述第一交易之前的交易的共享变量得到的;若所述前序共享变量中不包括所述第一交易的第二共享变量,则在所述前序共享变量中增加所述第二共享变量,并设置所述第二共享变量对应于所述第一交易。
上述方法中,针对第一交易,若前序共享变量中的第一共享变量与所述第一交易的第二共享变量为同一共享变量,则将所述第一共享变量对应的第二交易确定为所述第一交易所依赖的交易,并更新所述第一共享变量对应于所述第一交易;若所述前序共享变量中不包括所述第一交易的第二共享变量,则在所述前序共享变量中增加所述第二共享变量,并设置所述第二共享变量对应于所述第一交易,从而提供了一种共享变量与交易间的对应关系。
一种可选实施方式中,若所述前序共享变量为空,则确定所述第一交易对应的节点为有向图的一个顶点;将所述第一共享变量对应的第二交易确定为所述第一交易的依赖交易,包括:在所述有向图中建立所述第二交易对应节点指向所述第一交易对应节点的边;依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易,包括:执行所述有向图中入度为0的节点对应的交易;并在执行之后,删除已执行完毕的交易对应的节点以及节点的边,以更新所述有向图。
上述方法中,若所述前序共享变量为空,则确定所述第一交易对应的节点为有向图的一个顶点,在所述有向图中建立所述第二交易对应节点指向所述第一交易对应节点的边;执行所述有向图中入度为0的节点对应的交易;并在执行之后,删除已执行完毕的交易对应的节点以及节点的边,以更新所述有向图,从而可将多个交易的依赖关系与直观的有向图对应起来,提供了一种直观的多个交易的依赖关系的表示方法和执行方法。
第二方面,本申请提供一种区块链内获取交易依赖关系的装置,包括:获取模块,用于获取多个交易;所述多个交易存在输入顺序;处理模块,用于根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,获得所述多个交易的依赖关系;所述预设操作为:将第一交易的前序共享交易中输入顺序最靠后的第二交易,确定为所述第一交易所依赖的交易;所述前序共享交易为输入顺序位于所述第一交易之前且与所述第一交易具有同一共享变量的交易;所述共享变量为用于处理交易的各接口中的至少两个接口均具有的变量;所述第一交易为所述多个交易中任一交易。
一种可选实施方式中,所述处理模块还用于:依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易;在执行完毕之后,更新所述依赖关系并返回依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易的步骤。
一种可选实施方式中,所述处理模块具体用于:针对第一交易,若前序共享变量中的第一共享变量与所述第一交易的第二共享变量为同一共享变量,则将所述第一共享变量对应的第二交易确定为所述第一交易所依赖的交易,并更新所述第一共享变量对应于所述第一交易;所述前序共享变量是根据输入顺序在所述第一交易之前的交易的共享变量得到的;若所述前序共享变量中不包括所述第一交易的第二共享变量,则在所述前序共享变量中增加所述第二共享变量,并设置所述第二共享变量对应于所述第一交易。
一种可选实施方式中,所述处理模块还用于:若所述前序共享变量为空,则确定所述第一交易对应的节点为有向图的一个顶点;在所述有向图中建立所述第二交易对应节点指向所述第一交易对应节点的边;执行所述有向图中入度为0的节点对应的交易;并在执行之后,删除已执行完毕的交易对应的节点以及节点的边,以更新所述有向图。
上述第二方面及第二方面各个实施例的有益效果,可以参考上述第一方面及第一方面各个实施例的有益效果,这里不再赘述。
第三方面,本申请实施例提供一种计算机设备,包括程序或指令,当所 述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。
第四方面,本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。
图1为区块链的结构示意图;
图2为本申请实施例提供的一种区块链内获取交易依赖关系的方法的步骤流程示意图;
图3为本申请实施例提供的一种区块链内获取交易依赖关系的方法中交易依赖关系图的生成过程示意图;
图4为本申请实施例提供的一种区块链内获取交易依赖关系的方法中交易依赖关系图的生成过程示意图;
图5为本申请实施例提供的一种区块链内获取交易依赖关系的方法中交易依赖关系图的生成过程示意图;
图6为本申请实施例提供的一种区块链内获取交易依赖关系的方法中交易依赖关系图的生成过程示意图;
图7为本申请实施例提供的一种区块链内获取交易依赖关系的方法对应的整体流程示意图;
图8为本申请实施例提供的一种区块链内获取交易依赖关系的装置的结构示意图。
为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互结 合。
下面首先解释本申请实施例中出现的名词。
区块链:如图1所示,区块链是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的哈希(Hash)值,通过这种方式组成一条链。区块链的核心理念有两个,一个是密码学技术,另一个是去中心化思想,基于这两个理念做到区块链上的历史信息无法被篡改。
节点:网络中的每一个参与者就是一个节点,节点参与网络组建和数据交换。在区块链网络中,一个节点是指一个具有唯一身份的参与者,该节点具有一份完整的账本拷贝,具有参与区块链网络共识和账本维护的能力。
智能合约:智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约具体形式为部署在区块链上,完成特定功能的代码。举例来说,Solidity是一种主流的智能合约编程语言,用Solidity语言编写的智能合约,叫Solidity合约。当智能合约被部署到区块链上时,会产生合约地址,用户可通过合约地址调用此智能合约。智能合约中定义的函数,称为合约接口,对智能合约的调用,就是通过合约地址调用合约中的某个合约接口。
交易:交易是用户对部署在区块链上智能合约接口的一次操作请求。交易由用户发起,从用户的客户端发往区块链节点,区块链节点收到交易后,根据交易指定的合约地址和接口去调用相应的智能合约。
共享变量:在智能合约的接口(函数)中,对一些全局的变量进行了操作,这些全局变量有可能会被另一个合约接口进行操作。在智能合约的接口中所操作的全局变量,称为共享变量。一笔交易调用了一个智能合约的接口,涉及到对某些共享变量的操作。这些共享变量,称为这笔交易的共享变量。
交易依赖关系:若两笔交易同时操作了同一个共享变量,为了保证执行的正确性,此两笔交易会存在着执行先后顺序,一笔交易执行结束后,才能执行另一笔交易。交易依赖关系,描述了交易之间执行的先后顺序。存在依 赖关系的交易,必须按照依赖关系的先后顺序执行。不存在依赖关系的交易,可以并行执行。
在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,基于区块链的不可篡改性,金融科技领域中常通过区块链进行交易。然而,随着交易量的不断增加,然而,随着交易量的不断增加,串行执行交易会导致大量交易长期排队。为了增加交易的执行的效率,可以考虑交易的并行执行情况,由于交易与交易之间可能存在相同的共享变量,两个及以上存在相同共享变量的交易由于共享变量冲突并不能并行执行,因此交易与交易之间会形成执行先后顺序的依赖关系。为了避免交易间的共享变量冲突,需要依据交易依赖关系来并行执行交易。然而现有技术中,还没有区块链内获取交易依赖关系的方法,这种情况不符合银行等金融机构的需求,无法保证金融机构各项业务的高效运转。
为此,本申请提出一种区块链内获取交易依赖关系的方法,如图2所示,包括以下步骤:
步骤201:获取多个交易。
所述多个交易存在输入顺序。
步骤202:根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,获得所述多个交易的依赖关系。
所述预设操作(以下称为第一种预设操作)可以为:将第一交易的前序共享交易中输入顺序最靠后的第二交易,确定为所述第一交易所依赖的交易;所述前序共享交易为输入顺序位于所述第一交易之前且与所述第一交易具有同一共享变量的交易;所述共享变量为用于处理交易的各接口中的至少两个接口均具有的变量;所述第一交易为所述多个交易中任一交易。
或者,所述预设操作(以下称为第二种预设操作)可以为:若第一交易的前序交易组合中不存在与所述第一交易有相同共享变量的交易,则确定所述第一交易在所述多个交易中不存在所依赖的交易;共享变量为至少两个合约接口均具有的变量,交易为访问合约接口的请求;所述第一交易为所述多 个交易中任一交易;所述前序交易组合为所述第一交易在所述输入顺序之前所有交易的顺序组合;若所述前序交易组合中存在与所述第一交易有相同共享变量的至少一个第二交易,则将所述至少一个第二交易作为所述第一交易在所述多个交易中所依赖的交易;其中,所述至少一个第二交易中每个第二交易唯一对应所述第一交易中的一个共享变量,所述共享变量唯一对应的第二交易为:在所述前序交易组合中包含所述共享变量的顺序最靠后的交易。当所述第一交易为所述多个交易中首个交易时,则所述前序交易组合为空,所述前序交易组合中不存在与所述第一交易有相同共享变量的交易。
需要说明的是,若交易A和交易B满足以下条件,则称交易A为交易B所依赖的交易:(1)输入顺序中,交易A在交易B之前。(2)交易A与交易B有相同的至少一个共享变量。(3)交易A为,交易B输入顺序在之前的交易中,最后一个执行至少一个共享变量的交易。也就是说,交易A与交易B之间的交易(不包括交易A和交易B)与交易B不存在相同的共享变量。
若按照第一种预设操作,步骤201~步骤202的方法中,按照输入顺序,获取多个交易后,根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,从而依次获取每个交易的所依赖的交易,减少了交易之间依赖关系混乱的几率,其中,由于前序共享交易执行之前必然已执行了前序共享交易的所依赖的交易,因此依赖关系中针对第一交易的每个共享变量,仅需考虑将第一交易的前序共享交易中输入顺序最靠后的第二交易,便能避免第一交易与第二交易存在共享变量冲突,本方法可以简化地描述出所述多个交易的依赖关系,从而为多个交易的依赖关系获取提供了方法,为多个交易的并行执行提供了参考。
若按照第二种预设操作,步骤201~步骤202的方法中,按照输入顺序,获取多个交易后,根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,从而依次获取每个交易的所依赖的交易,减少了交易之间依赖关系混乱的几率,其中,当第一交易的前序交易组合中不存在与所述第一交易有相同共享变量的交易时,则确定所述第一交易在所述多个交易中不存在所 依赖的交易,仅需要考虑第一交易,若所述前序交易组合中存在与所述第一交易有相同共享变量的至少一个第二交易时,由于第二交易执行之前必然已执行了第二交易所依赖的交易,因此依赖关系中针对第一交易的每个共享变量,仅需考虑在所述前序交易组合中包含所述共享变量的顺序最靠后的一个第二交易,便能避免第一交易与第二交易存在共享变量冲突,本方法可以简化地描述出所述多个交易的依赖关系,从而为多个交易的依赖关系获取提供了方法,为多个交易的并行执行提供了参考。
步骤202之后,可根据所述多个交易的依赖关系,执行所述多个交易。具体可选实施方式中,可采用以下两种方式:
第一种执行所述多个交易的方式:
依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易;在执行完毕之后,更新所述依赖关系并返回依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易的步骤。
第二种执行所述多个交易的方式:
并行执行所述多个交易中不存在所依赖交易的交易组合;若在执行完毕之后,存在满足预设并行条件的至少两个交易,则将所述至少两个交易重新作为所述不存在所依赖交易的交易组合,以更新所述不存在所依赖交易的交易组合;返回所述并行执行所述多个交易中不存在所依赖交易的交易组合的步骤;所述预设并行条件为:所述至少两个交易在所述多个交易中所依赖的所有交易均在所述不存在所依赖交易的交易组合中。
需要说明的是,步骤202中,所述多个交易的依赖关系的具体可选实施方式,可采用以下两种方式:
步骤202的第一种具体实施方式为:
所述对所述多个交易中每个交易依次执行预设操作,包括:针对第一交易,若前序共享变量中的第一共享变量与所述第一交易的第二共享变量为同一共享变量,则将所述第一共享变量对应的第二交易确定为所述第一交易所依赖的交易,并更新所述第一共享变量对应于所述第一交易;所述前序共享 变量是根据输入顺序在所述第一交易之前的交易的共享变量得到的;若所述前序共享变量中不包括所述第一交易的第二共享变量,则在所述前序共享变量中增加所述第二共享变量,并设置所述第二共享变量对应于所述第一交易。
步骤202的第二种具体实施方式为:
获取所述第一交易的共享变量组合;若所述共享变量组合中每个共享变量的当前所在交易均为空,则确定所述前序交易组合中不存在与所述第一交易有相同共享变量的交易;将所述第一交易对应的节点作为有向图的一个顶点;将所述共享变量组合中每个共享变量的当前所在交易均记为所述第一交易;若所述共享变量组合中存在当前所在交易不为空的至少一个共享变量,则将所述至少一个共享变量的当前所在交易,作为所述至少一个第二交易;在所述有向图中,建立所述至少一个第二交易对应节点指向所述第一交易对应节点的边;将所述至少一个共享变量的中每个共享变量的当前所在交易均更新为所述第一交易;确定所述前序交易组合中不存在与所述第一交易有相同共享变量的交易;将所述第一交易对应的节点作为所述有向图的一个顶点;将所述当前所在交易记为所述第一交易。
显然,有向图不止一个顶点,首个交易必然没有所依赖的交易,后面的交易可能依赖前面的交易,也可能不依赖,如果不依赖,也可以作为顶点。
多个交易的依赖关系可根据有向图表示,具体可包括以下两种实施方式:
第一种根据有向图表示的方式为:
若所述前序共享变量为空,则确定所述第一交易对应的节点为有向图的一个顶点;将所述第一共享变量对应的第二交易确定为所述第一交易的依赖交易,包括:在所述有向图中建立所述第二交易对应节点指向所述第一交易对应节点的边;依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易,包括:执行所述有向图中入度为0的节点对应的交易;并在执行之后,删除已执行完毕的交易对应的节点以及节点的边,以更新所述有向图。
第二种根据有向图表示的方式为:
根据所述有向图,按照以下方式并行执行所述多个交易中的交易:并行 执行所述有向图中入度为0的节点在所述多个交易对应的交易;并在并行执行之后,删除已并行执行完毕的交易对应的节点以及节点的边,以更新所述入度为0的节点;返回所述并行执行所述有向图中入度为0的节点在所述多个交易对应的交易的步骤。
下面以有向图记录多个交易的依赖关系的方式为例,详细说明该本申请提出的一种区块链内获取交易依赖关系的方法。该方法中,直接生成不存在冗余依赖边的交易依赖关系,消除交易并行执行阶段判断交易依赖时冗余的开销。由于区块链中交易本身的输入存在先后顺序,两笔拥有同一个或多个共享变量的交易,其执行的先后顺序一定是输入区块链的先后顺序。顺序在前的交易先执行,顺序在后的交易后执行。因此,在根据某一个或多个共享变量所依赖的交易,建立交易依赖边时,只需要与依赖交易中最新的交易建立依赖边即可,本方案的核心方法是在记录共享变量对应的有依赖交易时,只记录当前最新交易的序号。交易依赖关系图的具体生成过程如下:
如表1所示,区块链中有4笔交易,对应的共享变量如下。
交易 | 共享变量 |
0 | A,B |
1 | A,C |
2 | D,E |
3 | A,D |
表1
若交易C的共享变量A与交易D满足以下条件,则称交易D为交易C的共享变量K所依赖的交易:(1)输入顺序中,交易D在交易C之前。(2)交易D中也有共享变量K。
交易0的共享变量为A、B。根据A查找有依赖的交易,为空,根据B查找有依赖的交易,为空。因此,如图3所示,此时交易依赖关系图只有一个交易0。
如图4所示,在交易0被处理后,更新有依赖的交易,在共享变量A和B处都记录下交易0。处理至交易1,交易1的共享变量为A,C。用A去查找有依赖的交易,发现有0,在交易依赖关系图中建立一条从0指向1的边,表示交易1依赖于交易0的执行结果。再用C去查找有依赖的交易,发现仍然有0,因为之前已经建立了边,故不再进行建边的操作。
如图5所示,处理至交易2时,在更新共享变量对应所依赖的交易时,直接用现有处理到的最新交易的序号,覆盖掉现有的记录,即共享变量A处,直接用1覆盖掉原有的0。之后,根据D查找有依赖的交易,为空,根据E查找有依赖的交易,为空。因此在交易依赖关系图中,交易2没有任何指向的边。交易2无依赖,新建一个2的顶点,无任何边指向。
如图6所示,在交易2被处理后,更新有依赖的交易,在共享变量D和E中都记录下交易2。之后处理交易3,交易3的共享变量是A和D。根据A查找有依赖的交易,由于共享变量A处仅记录最新交易的序号,因此在共享变量A处只需要考虑与交易1,即只需要建立一条从1指向3的边即可。D处查出交易2,建立2指向3的边。
因此,本方案通过只记录当前最新的交易序号,来消除冗余依赖边的建立,进而消除了在交易并行执行阶段判断交易依赖时冗余的开销。
下面结合图7,详细说明本申请提出的区块链内获取交易依赖关系整体流程。
步骤701:从区块链中取出至少一个交易。
具体来说,步骤701过程可以为,在区块链中选一个唯一的节点,先把交易打包成“待执行的区块”,然后发送给区块链中所有的节点,区块链中所有的节点都会用这个“待执行区块”去执行。步骤701~步骤708是在区块链中各节点执行“待执行区块”前进行的一步附加的操作。当然,从区块链中也可能取不到任何交易,这时便不会执行之后的步骤702~步骤708。需要说明的是,从区块链中取出的至少一个交易是按照交易输入区块链的输入顺序排列的。
步骤702:按至少一个交易的输入顺序取出一条未处理的交易。
步骤703:获取当前交易的共享变量。
步骤703中,获取共享变量的方法不限。
步骤704:查询当前交易的所有共享变量依赖的交易。
步骤705:根据查询到的依赖的交易,建立依赖关系,即建立从依赖交易指向当前交易的依赖边。
步骤706:将当前交易共享变量的依赖更新为当前交易。
步骤706保证共享变量的依赖记录中只有最新的交易。
步骤707:判断是否存在未处理的交易。
若是,返回步骤702,反之,执行步骤708。
步骤708:输出交易依赖关系图,供并行执行时使用;
如图8所示,本申请提供一种区块链内获取交易依赖关系的装置,包括:获取模块801,用于获取多个交易;所述多个交易存在输入顺序;处理模块802,用于根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,获得所述多个交易的依赖关系;所述预设操作为:将第一交易的前序共享交易中输入顺序最靠后的第二交易,确定为所述第一交易所依赖的交易;所述前序共享交易为输入顺序位于所述第一交易之前且与所述第一交易具有同一共享变量的交易;所述共享变量为用于处理交易的各接口中的至少两个接口均具有的变量;所述第一交易为所述多个交易中任一交易。
一种可选实施方式中,所述处理模块802还用于:依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易;在执行完毕之后,更新所述依赖关系并返回依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易的步骤。
一种可选实施方式中,所述处理模块802具体用于:针对第一交易,若前序共享变量中的第一共享变量与所述第一交易的第二共享变量为同一共享变量,则将所述第一共享变量对应的第二交易确定为所述第一交易所依赖的交易,并更新所述第一共享变量对应于所述第一交易;所述前序共享变量是 根据输入顺序在所述第一交易之前的交易的共享变量得到的;若所述前序共享变量中不包括所述第一交易的第二共享变量,则在所述前序共享变量中增加所述第二共享变量,并设置所述第二共享变量对应于所述第一交易。
一种可选实施方式中,所述处理模块802还用于:若所述前序共享变量为空,则确定所述第一交易对应的节点为有向图的一个顶点;在所述有向图中建立所述第二交易对应节点指向所述第一交易对应节点的边;执行所述有向图中入度为0的节点对应的交易;并在执行之后,删除已执行完毕的交易对应的节点以及节点的边,以更新所述有向图。
本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种区块链内获取交易依赖关系的方法及任一可选方法。
本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种区块链内获取交易依赖关系的方法及任一可选方法。
最后应说明的是:本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
- 一种区块链内获取交易依赖关系的方法,其特征在于,包括:获取多个交易;所述多个交易存在输入顺序;根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,获得所述多个交易的依赖关系;所述预设操作为:将第一交易的前序共享交易中输入顺序最靠后的第二交易,确定为所述第一交易所依赖的交易;所述前序共享交易为输入顺序位于所述第一交易之前且与所述第一交易具有同一共享变量的交易;所述共享变量为用于处理交易的各接口中的至少两个接口均具有的变量;所述第一交易为所述多个交易中任一交易。
- 如权利要求1所述的方法,其特征在于,所述根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,获得所述多个交易的依赖关系之后,还包括:依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易;在执行完毕之后,更新所述依赖关系并返回依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易的步骤。
- 如权利要求2所述的方法,其特征在于,所述对所述多个交易中每个交易依次执行预设操作,包括:针对第一交易,若前序共享变量中的第一共享变量与所述第一交易的第二共享变量为同一共享变量,则将所述第一共享变量对应的第二交易确定为所述第一交易所依赖的交易,并更新所述第一共享变量对应于所述第一交易;所述前序共享变量是根据输入顺序在所述第一交易之前的交易的共享变量得到的;若所述前序共享变量中不包括所述第一交易的第二共享变量,则在所述前序共享变量中增加所述第二共享变量,并设置所述第二共享变量对应于所述第一交易。
- 如权利要求3所述的方法,其特征在于,还包括:若所述前序共享变量为空,则确定所述第一交易对应的节点为有向图的一个顶点;将所述第一共享变量对应的第二交易确定为所述第一交易所依赖的交易,包括:在所述有向图中建立所述第二交易对应节点指向所述第一交易对应节点的边;依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易,包括:执行所述有向图中入度为0的节点对应的交易;并在执行之后,删除已执行完毕的交易对应的节点以及节点的边,以更新所述有向图。
- 一种区块链内获取交易依赖关系的装置,其特征在于,包括:获取模块,用于获取多个交易;所述多个交易存在输入顺序;处理模块,用于根据所述输入顺序,对所述多个交易中每个交易依次执行预设操作,获得所述多个交易的依赖关系;所述预设操作为:将第一交易的前序共享交易中输入顺序最靠后的第二交易,确定为所述第一交易所依赖的交易;所述前序共享交易为输入顺序位于所述第一交易之前且与所述第一交易具有同一共享变量的交易;所述共享变量为用于处理交易的各接口中的至少两个接口均具有的变量;所述第一交易为所述多个交易中任一交易。
- 如权利要求5所述的装置,其特征在于,所述处理模块还用于:依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易;在执行完毕之后,更新所述依赖关系并返回依据所述依赖关系,执行所述多个交易中不存在依赖交易的交易的步骤。
- 如权利要求6所述的装置,其特征在于,所述处理模块具体用于:针对第一交易,若前序共享变量中的第一共享变量与所述第一交易的第二共享变量为同一共享变量,则将所述第一共享变量对应的第二交易确定为所述第一交易所依赖的交易,并更新所述第一共享变量对应于所述第一交易;所述前序共享变量是根据输入顺序在所述第一交易之前的交易的共享变量得到的;若所述前序共享变量中不包括所述第一交易的第二共享变量,则在所述前序共享变量中增加所述第二共享变量,并设置所述第二共享变量对应于所述第一交易。
- 如权利要求7所述的装置,其特征在于,所述处理模块还用于:若所述前序共享变量为空,则确定所述第一交易对应的节点为有向图的一个顶点;在所述有向图中建立所述第二交易对应节点指向所述第一交易对应节点的边;执行所述有向图中入度为0的节点对应的交易;并在执行之后,删除已执行完毕的交易对应的节点以及节点的边,以更新所述有向图。
- 一种计算机设备,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至4中任意一项所述的方法被执行。
- 一种存储介质,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至4中任意一项所述的方法被执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910848016.0 | 2019-09-09 | ||
CN201910848016.0A CN110599166A (zh) | 2019-09-09 | 2019-09-09 | 一种区块链内获取交易依赖关系的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021047541A1 true WO2021047541A1 (zh) | 2021-03-18 |
Family
ID=68858195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2020/114229 WO2021047541A1 (zh) | 2019-09-09 | 2020-09-09 | 一种区块链内获取交易依赖关系的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110599166A (zh) |
WO (1) | WO2021047541A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110599166A (zh) * | 2019-09-09 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种区块链内获取交易依赖关系的方法及装置 |
CN111325928B (zh) * | 2020-04-01 | 2021-12-21 | 中国银行股份有限公司 | 银行自助设备的业务执行方法及装置 |
CN112037061A (zh) * | 2020-08-31 | 2020-12-04 | 深圳前海微众银行股份有限公司 | 区块链中交易的处理方法、装置、电子设备及存储介质 |
CN112950185B (zh) * | 2021-03-11 | 2023-10-20 | 杭州复杂美科技有限公司 | 一种基于并行执行的交易费支付方法、设备及储存介质 |
CN113867903B (zh) * | 2021-12-06 | 2022-04-01 | 深圳前海微众银行股份有限公司 | 一种区块链中智能合约的并行冲突域确定方法及装置 |
Citations (7)
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 |
CN107688999A (zh) * | 2017-08-11 | 2018-02-13 | 杭州秘猿科技有限公司 | 一种基于区块链的并行交易执行方法 |
CN108537543A (zh) * | 2018-03-30 | 2018-09-14 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
CN108595157A (zh) * | 2018-04-28 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN109636592A (zh) * | 2017-10-20 | 2019-04-16 | 北京航空航天大学 | 高性能智能合约设计 |
CN110147273A (zh) * | 2019-05-17 | 2019-08-20 | 深圳前海微众银行股份有限公司 | 一种任务执行方法及装置 |
CN110599166A (zh) * | 2019-09-09 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种区块链内获取交易依赖关系的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108564470B (zh) * | 2018-04-17 | 2021-09-28 | 北京天德科技有限公司 | 一种区块链中并行建块的交易分发方法 |
CN109377232B (zh) * | 2018-12-20 | 2021-08-24 | 众安信息技术服务有限公司 | 基于dag的区块链的交易定序方法及设备 |
CN110135985B (zh) * | 2019-04-04 | 2021-07-27 | 杭州抖音科技有限公司 | 一种区块链上交易的并行执行方法及系统 |
-
2019
- 2019-09-09 CN CN201910848016.0A patent/CN110599166A/zh active Pending
-
2020
- 2020-09-09 WO PCT/CN2020/114229 patent/WO2021047541A1/zh active Application Filing
Patent Citations (7)
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 |
CN107688999A (zh) * | 2017-08-11 | 2018-02-13 | 杭州秘猿科技有限公司 | 一种基于区块链的并行交易执行方法 |
CN109636592A (zh) * | 2017-10-20 | 2019-04-16 | 北京航空航天大学 | 高性能智能合约设计 |
CN108537543A (zh) * | 2018-03-30 | 2018-09-14 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
CN108595157A (zh) * | 2018-04-28 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN110147273A (zh) * | 2019-05-17 | 2019-08-20 | 深圳前海微众银行股份有限公司 | 一种任务执行方法及装置 |
CN110599166A (zh) * | 2019-09-09 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种区块链内获取交易依赖关系的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110599166A (zh) | 2019-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021047541A1 (zh) | 一种区块链内获取交易依赖关系的方法及装置 | |
JP6875557B2 (ja) | サービス・データをブロックチェーン・システムに書き込むための方法およびデバイス | |
CN107577427B (zh) | 用于区块链系统的数据迁移方法、设备和存储介质 | |
US20210357390A1 (en) | Systems and methods for blockchain interlinking and relationships | |
JP7362654B2 (ja) | 分割されたブロックチェーンネットワークにおけるブロックチェーンのブロックの維持管理 | |
US10733176B2 (en) | Detecting phantom items in distributed replicated database | |
CN111338766B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
JP6816297B2 (ja) | ブロックチェーンネットワークにおけるデータ分離 | |
EP4254183A1 (en) | Transaction processing method and apparatus, computer device, and storage medium | |
WO2020043048A1 (zh) | 一种平行链数据同步方法、设备和存储介质 | |
US8244686B2 (en) | High throughput, reliable replication of transformed data in information systems | |
WO2016177026A1 (zh) | 一种去中心化自治组织的数据处理方法及装置 | |
WO2021057482A1 (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN107391628A (zh) | 数据同步方法及装置 | |
CN106033439A (zh) | 一种分布式事务处理方法及系统 | |
JP7438603B2 (ja) | トランザクション処理方法、装置、コンピュータデバイス及びコンピュータプログラム | |
WO2021027612A1 (zh) | 一种区块链中的交易执行方法及装置 | |
EP3665595B1 (en) | Methods and devices for data traversal | |
US11070563B2 (en) | Trace-based transaction validation and commitment | |
CN110597835B (zh) | 一种基于区块链的交易数据删除方法及装置 | |
WO2019153506A1 (zh) | 公积金转移方法、计算机可读存储介质、终端设备及装置 | |
CN109492049A (zh) | 用于区块链网络的数据处理、区块生成及同步方法 | |
US20100145911A1 (en) | Serverless Replication of Databases | |
CN109739684A (zh) | 基于向量时钟的分布式键值数据库的副本修复方法与装置 | |
WO2016177075A1 (zh) | 一种业务数据关联关系校验方法、装置及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20863777 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
32PN | Ep: public notification in the ep bulletin as address of the adressee cannot be established |
Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 18.07.2022) |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20863777 Country of ref document: EP Kind code of ref document: A1 |