CN112150286A - 基于区块链的交易处理方法、装置、电子设备及存储介质 - Google Patents

基于区块链的交易处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112150286A
CN112150286A CN202011034989.XA CN202011034989A CN112150286A CN 112150286 A CN112150286 A CN 112150286A CN 202011034989 A CN202011034989 A CN 202011034989A CN 112150286 A CN112150286 A CN 112150286A
Authority
CN
China
Prior art keywords
transaction
transactions
executed
information
pool
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
CN202011034989.XA
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.)
OneConnect Smart Technology Co Ltd
OneConnect Financial Technology Co Ltd Shanghai
Original Assignee
OneConnect Financial Technology Co Ltd Shanghai
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 OneConnect Financial Technology Co Ltd Shanghai filed Critical OneConnect Financial Technology Co Ltd Shanghai
Priority to CN202011034989.XA priority Critical patent/CN112150286A/zh
Publication of CN112150286A publication Critical patent/CN112150286A/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
    • 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
    • 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/242Query formulation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Economics (AREA)
  • Mathematical Physics (AREA)
  • Development Economics (AREA)
  • Computational Linguistics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Computing Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本申请适用于区块链技术领域,提供了一种基于区块链的交易处理方法、装置、电子设备及存储介质,该方法包括:获取第一交易信息,该第一交易信息用于指示待执行的第一交易,该第一交易与M个第二交易存在依赖关系,M为正整数;若该M个第二交易中的至少一个交易未被执行,则将第一交易信息提交到区块链网络中的依赖交易池;在检测到该M个第二交易全部被执行的情况下,将第一交易信息提交到目标交易池,该目标交易池为区块链网络中用于执行交易的交易池。本申请提供的方案可以减少无效的交易处理,提升交易成功率。

Description

基于区块链的交易处理方法、装置、电子设备及存储介质
技术领域
本申请涉及区块链技术领域,尤其涉及一种基于区块链的交易处理方法、装置、电子设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链(blockchain)、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技转变。目前,基于区块链的不可篡改性,金融科技领域中常通过区块链进行交易。
目前,随着交易量的不断增加,串行执行交易会导致大量交易长期排队,并且交易与交易之间会形成执行先后顺序的依赖关系。这样的存在交易依赖关系的交易必须按照依赖关系的先后顺序执行,一笔交易执行结束后,才能执行另一笔交易。
然而,现实应用场景中,当前区块链技术对于现实中存在依赖关系的交易场景,需要人为介入按顺序操作。例如,假设存在买方、卖方、银行,卖方先发货,买方确认收货,最后发送划款指令给银行,如果以区块链交易形式,发货交易表示为tx1,确认收货交易表示为tx2,划款交易表示为tx3,那么tx3依赖tx2,tx2依赖tx1,若采用目前的当前区块链技术,则需要人为去查询等待上个交易是否已完成,并且若tx3的依赖交易未执行的情况下提前发起tx3执行,则会出现交易失败的情况,从而浪费计算资源。这不利于区块链内的交易执行,是一个亟待解决的问题。
发明内容
有鉴于此,本申请实施例提供了一种基于区块链的交易处理方法、装置、电子设备及计算机可读存储介质,以解决相关技术中某些交易由于具有依赖关系的交易未被执行而导致交易失败的问题。
本申请实施例的第一方面提供了一种基于区块链的交易处理方法,该方法包括:
区块链节点获取第一交易信息,所述第一交易信息用于指示待执行的第一交易,所述第一交易与M个第二交易存在依赖关系,M为正整数;
若所述M个第二交易中的至少一个交易未被执行,则所述区块链节点将所述第一交易信息提交到区块链网络的依赖交易池;
在检测到所述M个第二交易全部被执行的情况下,所述区块链节点将所述第一交易信息提交到目标交易池,所述目标交易池为所述区块链网络中用于执行交易的交易池。
在第一方面的可能实现方式中,所述在检测到所述M个第二交易全部被执行的情况下,将所述第一交易信息提交到目标交易池,包括:
获取所述依赖交易池中的第一依赖信息,所述第一依赖信息为指示所述M个第二交易中未被执行的交易的信息;
在所述第一依赖信息指示所述M个第二交易全部被执行的情况下,将所述第一交易信息提交到所述目标交易池。
在第一方面的可能实现方式中,所述方法还包括:
若检测到所述M个第二交易中的至少一个交易被执行,则所述区块链节点更新所述第一依赖信息。
在第一方面的可能实现方式中,在区块链节点获取第一交易信息之后,所述方法还包括:
所述区块链节点判断所述M个第二交易是否全部被执行;
若所述M个第二交易全部被执行,则所述区块链节点将所述第一交易信息提交到目标交易池。
在第一方面的可能实现方式中,在所述区块链节点将所述第一交易信息提交到所述目标交易池之后,所述方法还包括:
所述区块链节点根据所述第一交易信息,执行所述第一交易。
在第一方面的可能实现方式中,所述方法还包括:
所述区块链节点将所述目标交易池中的第三交易信息回滚到所述依赖交易池中,所述第三交易信息用于指示存在与N个第四交易存在依赖关系的第三交易,N为正整数。
进一步的,在第一方面的可能实现方式中,在所述区块链节点将所述目标交易池中的第三交易信息回滚到所述依赖交易池之后,所述方法还包括:
若所述第三交易未被执行且所述N个第四交易中的至少一个交易未被执行,则所述区块链节点将所述第三交易信息保留在所述依赖交易池;
若所述第三交易未被执行且所述N个第四交易全部被执行,则所述区块链节点将所述第三交易信息提交到所述目标交易池。
本申请实施例的第二方面提供了一种基于区块链的交易处理装置,其特征在于,包括获取单元和处理单元;
所述获取单元,用于获取第一交易信息,所述第一交易信息用于指示待执行的第一交易,所述第一交易与M个第二交易存在依赖关系,M为正整数;
所述处理单元,用于若所述M个第二交易中的至少一个交易未被执行,则将所述获取单元获取的所述第一交易信息提交到区块链网络的依赖交易池中;
所述处理单元,还用于在检测到所述M个第二交易全部被执行的情况下,将所述第一交易信息提交到目标交易池中,所述目标交易池为所述区块链网络中用于执行交易的交易池。
在第二方面的可能实现方式中,所述获取单元,具体用于获取所述依赖交易池中的第一依赖信息,所述第一依赖信息为指示所述M个第二交易中未被执行的交易的信息;
所述处理单元,具体用于在所述获取单元获取的所述第一依赖信息指示所述M个第二交易全部被执行的情况下,将所述第一交易信息提交到所述目标交易池。
在第二方面的可能实现方式中,所述处理单元,还用于若检测到所述M个第二交易中的至少一个交易被执行,则更新所述第一依赖信息。
在第二方面的可能实现方式中,所述处理单元,还用于在区块链节点获取第一交易信息之后,判断所述M个第二交易是否全部被执行;若所述M个第二交易全部被执行,则将所述第一交易信息提交到目标交易池中。
在第二方面的可能实现方式中,所述处理单元,还用于在将所述第一交易信息提交到所述目标交易池之后,根据所述第一交易信息,执行所述第一交易。
在第二方面的可能实现方式中,所述处理单元,还用于将所述目标交易池中的第三交易信息回滚到所述依赖交易池,所述第三交易信息用于指示存在与N个第四交易存在依赖关系的第三交易,N为正整数。
进一步的,在第二方面的可能实现方式中,所述处理单元,还用于在将所述目标交易池中的第三交易信息回滚到所述依赖交易池之后,若所述第三交易未被执行且所述N个第四交易中的至少一个交易未被执行,则将所述第三交易信息保留在所述依赖交易池;或者,若所述第三交易未被执行且所述N个第四交易全部被执行,则将所述第三交易信息提交到所述目标交易池。
本申请实施例的第三方面提供了一种电子设备,包括存储器、处理器以及存储在存储器中并可在电子设备上运行的计算机程序,该处理器执行计算机程序时实现第一方面提供的基于区块链的交易处理方法的各步骤。
本申请实施例的第四方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现第一方面提供的基于区块链的交易处理方法的各步骤。
实施本申请实施例提供的一种基于区块链的交易处理方法、装置、系统、电子设备及计算机可读存储介质具有以下有益效果:
本申请实施例中,在第一交易被提交区块链节点时,区块链节点可以在与第一交易存在依赖关系的M个第二交易未全部被执行的情况下,先暂不将第一交易信息提交至目标交易池中进行打包成块及执行,而是将第一交易信息提交到依赖交易池中,等待M个第二交易全部被执行后再将第一交易信息提交到目标交易池。由于在M个第二交易全部被执行之后,再执行第一交易,可以避免由于第一交易的依赖交易未执行而发起第一交易导致第一交易失败的情况,因此本申请实施例提供的方案可以减少无效的交易处理,提升交易成功率,从而减少网络、计算资源的浪费。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种基于区块链的交易处理方法的实现流程图;
图2是本申请实施例提供的一种基于区块链的交易处理方法的数据结构的示意图;
图3是本申请另一实施例提供的一种基于区块链的交易处理方法的实现流程图;
图4是本申请再一实施例提供的一种基于区块链的交易处理方法的实现流程图;
图5是本申请又一实施例提供的一种基于区块链的交易处理方法的实现流程图;
图6是本申请实施例提供的一种基于区块链的交易处理装置的结构框图;
图7是本申请实施例提供的一种电子设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
下面首先对本申请的权利要求书和说明书中涉及的一些名词或者术语进行解释说明。
(1)区块链:区块链是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的哈希(Hash)值,通过这种方式组成一条链。
(2)节点:网络中的每一个参与者就是一个节点,节点参与网络组建和数据交换。在区块链网络中,一个节点是指一个具有唯一身份的参与者,该节点具有一份完整的账本拷贝,具有参与区块链网络共识和账本维护的能力。
(3)交易:交易是用户对部署在区块链上智能合约接口的一次操作请求。交易由用户发起,从用户的客户端发往区块链节点,区块链节点收到交易后,根据交易指定的合约地址和接口去调用相应的智能合约。
(4)智能合约:智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约具体形式为部署在区块链上,完成特定功能的代码。
(5)交易依赖关系:描述了交易之间执行的先后顺序。例如,存在依赖关系的两笔交易,必须按照依赖关系的先后顺序执行,即一笔交易执行结束后,才能执行另一笔交易。
目前,在区块链现有技术模式下,各交易间相互独立,不存在依赖,一笔交易要么成功,要么失败。但是现实应用场景中,存在大量复杂的依赖需求。当前区块链技术无法满足,只能人为介入顺序操作,无法做到完全的自动化。举例而言,买方、卖方、银行,卖方先发货,买方确认收货,最后发送划款指令给银行,如果以区块链交易形式,发货交易是tx1,确认收货交易是tx2,划款交易是tx3,其中tx3依赖tx2,tx2依赖tx1,现在的情况是,需要人为去查询等待上个交易是否已完成。并且若tx3的依赖交易未执行的情况下提前发起tx3执行,则会出现交易失败的情况,从而浪费计算资源。
鉴于此,本申请实施例提供了一种基于区块链的交易处理方法,可以获取第一交易信息,该第一交易信息用于指示待执行的第一交易,该第一交易与M个第二交易存在依赖关系,M为正整数;若该M个第二交易中的至少一个交易未被执行,则将第一交易信息提交到区块链网络中的依赖交易池;在检测到该M个第二交易全部被执行的情况下,将第一交易信息提交到目标交易池,该目标交易池为区块链网络中用于执行交易的交易池。
通过该方案,在第一交易被提交区块链节点时,区块链节点可以在与第一交易存在依赖关系的M个第二交易未全部被执行的情况下,先暂不将第一交易信息提交至目标交易池中进行打包成块及执行,而是将第一交易信息提交到依赖交易池中,等待M个第二交易全部被执行后再将第一交易信息提交到目标交易池。由于在M个第二交易全部被执行之后,再执行第一交易,可以避免由于第一交易的依赖交易未执行而发起第一交易导致第一交易失败的情况,因此本申请实施例提供的方案可以减少无效的交易处理,提升交易成功率,从而减少网络、计算资源的浪费。
本申请实施例提供的基于区块链的交易处理方法的执行主体可以为电子设备(例如区块链节点),也可以为该电子设备中能够实现该基于区块链的交易处理方法的功能模块和/或功能实体,具体的可以根据实际使用需求确定,本申请实施例不作限定。下面以区块链节点为例,对本申请实施例提供的基于区块链的交易处理方法进行示例性的说明。
本申请实施例涉及区块链技术领域,本申请实施例提供基于区块链的交易处理方法应用于如何针对区块链网络中具有依赖关系的交易进行处理的场景。下面将结合附图详细描述本申请实施例提供的交易处理方法的具体实现方式。
请参阅图1,图1示出了本申请实施例提供的一种基于区块链的交易处理方法的实现流程图。如图1所示,该交易处理方法包括下述的步骤S11至S14。
S11:获取第一交易信息,该第一交易信息用于指示待执行的第一交易,该第一交易与M个第二交易存在依赖关系。
S12:判断M个第二交易是否全部被执行。
S13:若该M个第二交易中的至少一个交易未被执行,则将第一交易信息提交到区块链网络的依赖交易池中。
S14:在检测到M个第二交易全部被执行的情况下,将第一交易信息提交到目标交易池中。
S15:若M个第二交易全部被执行,则将第一交易信息提交到目标交易池。
其中,该目标交易池为区块链网络中用于执行交易的交易池。
在步骤S11中,M可以为正整数,例如M为2。可以理解,M个第二交易可以为与第一交易存在依赖关系的一个或多个交易。
在步骤S11中,第一交易信息中可以包括第一交易的标识及相关交易信息。该第一交易的标识可以唯一地标识第一交易。
需要说明的是,目标交易池可以指区块链数据结构中用于执行交易的传统交易池数据结构,而上述依赖交易池可以指本申请实施例在区块链数据结构的基础上增加的依赖交易池数据结构,可以用于暂时存放待执行的交易。下文将详细描述依赖交易池的具体数据结构及应用,此处不予赘述。
在本实施例中,在区块链节点获取第一交易信息之后,区块链节点可以先确定区块链网络中与第一交易存在依赖关系的交易有哪些,具体到本实施例中,区块链节点可以确定区块链网络中与第一交易存在依赖关系的交易为M个第二交易。示例性的,在本实施例中,区块链节点在接收到第一交易信息之后,可以根据第一交易的标识,查找该M个第二交易,例如可以将区块链网络中与第一交易的标识有关联关系或依赖关系的标识对应的交易,确定为该M个第二交易。
例如,假设存在买方、卖方、银行,卖方先发货,买方确认收货,最后发送划款指令给银行,发货交易表示为tx1,确认收货交易表示为tx2,划款交易表示为tx3,其中交易tx3依赖交易tx2,交易tx2依赖交易tx1。
具体到本申请实施例,示例性的,以第一交易为交易tx3为例,交易tx3与交易tx2和交易tx1(对应于上述M个第二交易)存在依赖关系。可以理解,交易tx3的执行依赖于交易tx2和交易tx1的执行,交易tx2和交易tx1中的任一个交易未被执行,则交易tx3不应被执行,换句话说,在交易tx2和交易tx1均被执行的情况下,交易tx3才可以被执行,否则会出现交易tx3失败的情况。
再示例性的,以第一交易为交易tx2为例,交易tx1为与交易tx2存在依赖关系的交易,也就是说,交易tx2与交易tx1(对应于上述M个第二交易)存在依赖关系。可以理解,交易tx2的执行依赖于交易tx1的执行,交易tx1未被执行,则交易tx2不应被执行,换句话说,在交易tx1被执行的情况下,交易tx2才可以被执行,否则会出现交易tx2失败的情况。
需要说明的是,在步骤S11中,上述存在依赖关系可以指第一交易与第二交易直接依赖,例如交易tx3直接依赖交易tx2,交易tx2直接依赖交易tx1;也可以指第一交易与第二交易间接依赖,例如交易tx3间接依赖交易tx1。具体可以根据实际使用需求确定,本申请实施例不作限定。
还需要说明的是,如何判断与第一交易存在依赖关系的交易可以依据相关技术中公开的方式来确定,具体实现方式可以参考相关技术,此处不予赘述。例如,第一交易信息可以指示与第一交易存在依赖关系的M个第二交易,因此区块链节点可以根据第一交易信息确定M个第二交易。
在一种可能的实现方式中,本申请实施例通过改进交易(Transaction)数据结构来记录某一交易存在哪些依赖交易。具体到本实施例,对交易(Transaction)数据结构做了下述改进:图2示出了以以太坊为例的数据结构改进的示意图,如图2所示,在Transaction原结构上增加字段relyTxs,类型是数组,该字段relyTxs可以存放与第一交易存在依赖关系的M个第二交易(以下将多个交易简称为第一交易的依赖交易)的散列值(即hash)。其中,每个第二交易的散列值可用txId表示,例如tx0、tx1、tx2和tx3。
在第一交易(记为tx0)被提交时,若存在第一交易的多个依赖交易(记为tx1、tx2和tx3),则可以将第一交易的多个依赖交易的txId添加到图2中的数组relyTxs。例如,如果第一交易tx0同时依赖M个第二交易:交易tx1、交易tx2和交易tx3,那么此交易依赖关系可表示为:tx0:{relyTxs:[txId1,txId2,txId3]}。
在一种可能的实现方式中,本实施例对数据结构进行改进,在依赖交易池中针对每个交易创建对应的数据项,以指示与该每个交易存在依赖关系的且未被执行的交易。
示例性的,在区块链的数据结构中增加依赖交易池数据结构:TxRelyPool,用于存放存在依赖交易(例如M个第二交易),具体结构如下:
typeTxRelyPoolstruct{
queue*LinkedList//链表结构,存储TxRely对象
}
typeTxRelystruct{
tx*Transaction//待执行交易
pendingRelyTxs[]*common.Hash//待执行交易中待查询是否已执行的依赖交易
}
在TxRely中,tx表示待执行交易,pendingRelyTxs表示待执行交易中的依赖交易,且这些依赖交易尚未被执行。需要说明的是,若查询到某一依赖交易已被执行,则从此数组中去除该依赖交易。
在TxRelyPool中,queue表示一个链表结构,用于存储TxRely对象,表示所有已提交但其依赖交易未被执行的交易。
结合上述结构,若以第一交易tx0的依赖交易包括tx1、tx2和tx3(分别对应txId1、txId2和txId3)为例,则交易依赖信息(即下文中的第一依赖信息)可表示为:tx0:{relyTxs:[txId1,txId2,txId3]}。
如此,通过查询上述交易依赖信息,可以快速确定与第一交易存在依赖关系的M个第二交易有哪些,从而可以提升交易处理效率。
进一步的,在步骤S12中,区块链节点在获取到第一交易信息并确定与第一交易存在依赖关系的M个第二交易之后,可以先判断与第一交易存在依赖关系的M个第二交易是否被执行,然后根据判断结果来确定将第一交易信息提交到依赖交易池或者提交到目标交易池。
需要说明的是,上述描述“M个第二交易中的至少一个交易未被执行”可以涵盖如下内容:该M个第二交易中的一部分交易未被执行,或者该M个第二交易中的全部交易均未被执行。
由于存在依赖关系的交易有先后执行顺序,必须按照执行顺序依次执行,否则会造成交易失败。具体到本实施例中,由于第一交易的执行依赖于M个第二交易的执行,因此M个第二交易全部被执行后,第一交易才能被执行,否则会造成交易失败。
可以理解的是,M个第二交易中的至少一个交易未被执行意味着:与第一交易存在先后执行顺序的M个第二交易没有全部被执行,因此若M个第二交易中的至少一个交易未被执行,则第一交易暂时不应被执行,应当在M个第二交易全部被执行之后再执行第一交易。
具体到本实施例,如图1所示,若M个第二交易中的至少一个交易未被执行,则区块链节点继续执行步骤S13和步骤S14,在此情况下第一交易暂时不被执行,第一交易是否执行以及何时执行需要进一步再判断;若M个第二交易全部被执行,则区块链节点继续执行步骤S15,在此情况下第一交易可被执行。
具体到步骤S13中,若M个第二交易中的至少一个交易未被执行,说明第一交易暂时不应被执行,则可以将第一交易信息提交到区块链网络中的依赖交易池,进一步判断条件满足时(即M个第二交易全部被执行)再执行第一交易。
在步骤S13之后的步骤S14中,在与第一交易存在依赖关系的所述M个第二交易全部被执行的情况下,第一交易可以被执行,因此可以将第一交易信息提交到目标交易池,这样可以提升交易成功率。
在步骤S15中,区块链节点可以将第一交易信息提交到区块链网络中的目标交易池,并在目标交易池中第一交易等待、排序、打包成块,然后被执行。
本申请实施例中,由于在M个第二交易全部被执行之后,再执行第一交易,可以避免由于第一交易的依赖交易未执行而发起第一交易导致第一交易失败的情况。因此上述方法可以提升交易成功率,并且可以自动处理存在依赖关系的交易,无需人为介入。因此,本申请实施例可以满足现实中存储在依赖关系的交易场景,自动处理具有依赖关系的交易,避免了人为介入,同时避免了存在依赖关系的交易的失败率,减少无效的交易处理,减少网络、计算资源的浪费。
在一种可能的实现方式中,在步骤S14中,可以在依赖交易池中创建第一交易的第一依赖信息,该第一依赖信息可以为指示M个第二交易中未被执行的交易的信息;进而可以根据第一依赖信息,确定M个第二交易是否全部被执行。
示例性的,图3是本申请又一实施例提供的一种话术生成方法的实现流程图。结合图1,如图3所示,步骤S14可以通过步骤S14A和步骤S14B实现。
S14A:获取依赖交易池中的第一依赖信息。
S14B:在第一依赖信息指示M个第二交易全部被执行的情况下,将第一交易信息提交到目标交易池。
在步骤S14A中,第一依赖信息可以包括M个第二交易中未被执行的交易的标识,也可以包括M个第二交易中未被执行的交易的数量,或者可以为其他任意可能的能够表示M个第二交易的被执行状况的信息,具体可以根据实际使用需求确定,本申请实施例不作限定。
示例性的,以第一依赖信息为数量为例,若第一依赖信息中的数量不为零,则说明第一交易存在未被执行的依赖交易;若第一依赖信息中的数量为零,则说明第一交易的依赖交易全部被执行。
再示例性的,以第一依赖信息为标识为例,若第一依赖信息中有标识,则说明第一交易存在未被执行的依赖交易;若第一依赖信息中没有标识,则说明第一交易的依赖交易全部被执行。
举例来说,第一依赖信息包括M个第二交易中未被执行的交易对应的交易标识,例如假设M个第二交易中的第二交易和第三交易未被执行,那么第一依赖信息中可以包括第二交易的标识和第三交易的标识。
示例性的,若以第一交易tx0的依赖交易包括tx1、tx2和tx3(分别对应txId1、txId2和txId3)为例,则在依赖交易池数据结构中创建得到第一依赖信息即为tx0:{relyTxs:[txId1,txId2,txId3]}。根据该第一依赖信息可知,与第一交易tx0存在依赖关系的且未被执行的交易包括交易tx1、交易tx2和交易tx3。
如此,通过查询第一依赖信息,可以快速判断与第一交易存在依赖关系的且未被执行的交易,即可以快速确定第一交易当前是否可以被执行,从而可以提升交易处理效率。
相应地,若第一依赖信息中不存在与第一交易存在依赖关系的交易的标识,则说明与第一交易存在依赖关系的M个第二交易全部被执行,在此情况下第一交易可以被执行,因此在区块链节点判定第一依赖信息中不存在交易标识的情况下,则区块链节点将第一交易信息提交到区块链网络中的目标交易池,并在目标交易池中执行第一交易。
本申请实施例中,区块链节点可以先判断区块链网络中与第一交易具有依赖关系的交易是否均已执行,然后根据判断结果,再作相应操作:在与第一交易存在依赖关系的M个第二交易未被执行的情况下,先暂不将第一交易信息提交至目标交易池中进行打包成块及执行,而是在依赖交易池中针对第一交易建立第一依赖信息,进而根据第一依赖信息,确定与第一交易存在依赖关系的M个第二交易是否全部被执行。并且在第一依赖信息指示M个第二交易全部被执行的情况下,将第一交易信息提交到目标交易池。因此,本申请实施例方法可以自动处理存在依赖关系的交易,无需人为介入,并且可以提升交易成功率。
请参阅图4,图4是本申请又一实施例提供的一种话术生成方法的实现流程图。相对于图3对应的实施例,本实施例提供的话术生成方法还包括步骤S16。
S16:若检测到M个第二交易中的至少一个交易被执行,则更新第一依赖信息。
示例性的,假设第一依赖信息为tx0:{relyTxs:[txId1,txId2,txId3]},其中第一交易tx0,M个第二交易分别为tx1,tx2和tx3,那么若检测到交易tx1被执行,则将第一依赖信息更新为tx0:{relyTxs:[txId2,txId3]}。然后,若检测到交易tx2被执行,则将第一依赖信息更新为tx0:{relyTxs:[txId3]}。进一步的,若检测到交易tx3被执行,则将第一依赖信息更新为tx0:{relyTxs:[]},此时第一依赖信息指示与第一交易tx0存在依赖关系的交易全部被执行,在此情况下恶意将第一交易信息提交到区块链网络的目标交易池中,并在目标交易池中第一交易等待、排序、打包成块,然后被执行。
需要说明的是,若TxRely对象中的tx所依赖的交易均已执行,则可以将TxRely对象从queue中移除。
通过上述方案,可以根据依赖交易被执行情况,实时更新第一依赖关系,从而可以提高交易处理的准确性。
下面结合上述改进后的数据结构,以发起第一交易tx0,其依赖交易为tx1和tx2为例进行示例性的说明。
首先,第一交易进入依赖交易池的流程包括如下步骤1.1和1.2:
步骤1.1:将第一交易tx0(其依赖交易为tx1和tx2)被提交区块链节点;
步骤1.2:区块链节点主动到区链上根据txId查询并判断tx1和tx2是否已执行。
若tx1和tx2是均未执行,则组成对象txRely0:{tx:tx0,pendingRelyTxs:[txId1,txId2]};
若tx1已执行,则组成对象txRely0:{tx:tx0,pendingRelyTxs:[txId2]};
若tx2已执行,则组成对象txRely0:{tx:tx0,pendingRelyTxs:[txId1]};
若tx1,tx2均已执行,将略过依赖交易池,直接提交tx0到区块链的目标交易池中。
其中,若存在未执行的依赖交易,则将txRely0放入依赖交易池TxRelyPool的queue中。
其次,第一交易在依赖交易池中的处理流程包括如下步骤2.1和2.2:
步骤2.1:根据预先设置的专门处理依赖交易的定时任务,定时遍历TxRelyPool的queue,获取TxRely对象的pendingRelyTxs值,根据里面的txId查询此txId是否已执行。
步骤2.2:若txId已执行,则从pendingRelyTxs移除此txId,移除后若pendingRelyTxs大小为0,说明TxRely对象中的tx所依赖的交易均已执行,将TxRely对象中的tx广播并移到目标交易池中等待打块。
其中,TxRely对象中的tx所依赖的交易均已执行,则将TxRely对象从queue中移除。
下面再结合图5,从全局角度来描述交易整体处理流程(a)至(e):
(a)第一交易tx0被提交,判断tx0是否有依赖交易;
(b)若tx0无依赖交易,则直接广播并提交到交易池,等待打包。若存在依赖交易,则将依赖交易的txId添加到第一交易tx0的relyTxs中,然后提交到依赖交易池。例如,若tx0有依赖交易tx1和tx2,则将依赖交易的txId添加到第一交易tx0的relyTxs中,然后提交到依赖交易池。
(c)专门处理依赖交易的定时任务,处理依赖交易池中的交易。
可选的,采用如下两种方式确认依赖是否已执行:方式一,主动到区块链上根据txId查询;方式二,区块链上执行交易后主动通知到依赖交易池,将所有已执行的交易广播并提交到,目标交易池。
(d)目标交易池中等待、排序、打包交易到块。
(e)提交并执行,将块加到区块链上。
本申请实施例中,由于在M个第二交易全部被执行之后,再执行第一交易,避免由于第一交易的依赖交易未执行而发起第一交易导致第一交易失败的情况。因此上述方法可以提升交易成功率,并且可以自动处理存在依赖关系的交易,无需人为介入。因此,本申请实施例可以满足现实中存储在依赖关系的交易场景,自动处理具有依赖关系的交易,避免了人为介入,同时避免了存在依赖关系的交易的失败率,减少无效的交易处理,减少网络、计算资源的浪费。
在一种可能的实现方式中,针对块回滚情况的处理,本申请实施例提供的基于区块链的交易处理方法还包括下述的步骤S17。
S17:将目标交易池中的第三交易信息回滚到依赖交易池中,该第三交易信息用于指示存在与N个第四交易存在依赖关系的第三交易。
其中,N可以为正整数。
本申请实施例中,对于块回滚的场景,可以对目标交易池中的交易进行过滤,将目标交易池中的存在交易依赖关系的交易移到依赖交易池中。
进一步可选的,对于回滚到依赖交易池的块中的第三交易,先检查第三交易是否需要执行;对于待执行的第三交易,判断是否其存在未被执行的依赖交易。
示例性的,在上述的步骤S17之后,本申请实施例提供的基于区块链的交易处理方法还包括下述的步骤S18和步骤S19。
步骤S18:若第三交易未被执行且N个第四交易中的至少一个交易未被执行,则将第三交易信息保留在依赖交易池中。
步骤S19:若第三交易未被执行且N个第四交易全部被执行,则将第三交易信息提交到目标交易池中。
如此,本申请实施例的方法可以减少无效的交易处理,并且可以自动处理存在依赖关系的交易,无需人为介入。
需要说明的是,本申请实施例提供的方法不限于上述列举的交易场景,可以理解,实际实现时还存在其他各种依赖关系的交易场景,此处不作限定。
本申请实施例中的交易处理方法可以避免交易失败,减少无效的交易处理,减少网络和计算资源浪费,并且可以自动处理存在依赖关系的交易,无需人为介入。
在本申请的所有实施例中,基于该交易处理方法提交到目标交易池的第一交易信息可以被上传至区块链,可保证第一交易信息的安全性和对用户的公正透明性。用户设备可以从区块链中下载得该第一交易信息,以便查证第一交易信息是否被篡改。本示例所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
请参阅图6,图6是本申请实施例提供的一种基于区块链的交易处理装置的结构框图。基于区块链的交易处理装置40包括获取单元41和处理单元42;
获取单元41用于获取第一交易信息,该第一交易信息用于指示待执行的第一交易,该第一交易与M个第二交易存在依赖关系,M为正整数;
处理单元42用于若上述M个第二交易中的至少一个交易未被执行,则将获取单元41获取的第一交易信息提交到区块链网络的依赖交易池中;
处理单元42还用于在检测到上述M个第二交易全部被执行的情况下,将第一交易信息提交到目标交易池中,该目标交易池为区块链网络中用于执行交易的交易池。
在第二方面的可能实现方式中,获取单元41具体用于获取依赖交易池中的第一依赖信息,该第一依赖信息用于指示M个第二交易中未被执行的交易;
处理单元42具体用于在获取单元41获取的第一依赖信息指示M个第二交易全部被执行的情况下,将第一交易信息提交到目标交易池。
在第二方面的可能实现方式中,处理单元42还用于若检测到上述M个第二交易中的至少一个交易被执行,则更新第一依赖信息。
在第二方面的可能实现方式中,处理单元42还用于在区块链节点获取第一交易信息之后,判断上述M个第二交易是否全部被执行;若上述M个第二交易全部被执行,则将所述第一交易信息提交到目标交易池中。
在第二方面的可能实现方式中,处理单元42还用于在将所述第一交易信息提交到所述目标交易池之后,根据所述第一交易信息,执行所述第一交易。
在第二方面的可能实现方式中,处理单元42还用于在将所述第一交易信息提交到目标交易池之后,将所述目标交易池中的第三交易信息回滚到所述依赖交易池,所述第三交易信息用于指示存在与N个第四交易存在依赖关系的第三交易,N为正整数。
进一步的,在第二方面的可能实现方式中,处理单元42还用于在将所述目标交易池中的第三交易信息回滚到所述依赖交易池之后,若所述第三交易未被执行且所述N个第四交易中的至少一个交易未被执行,则将所述第三交易信息保留在所述依赖交易池;或者,若所述第三交易未被执行且所述N个第四交易全部被执行,则将所述第三交易信息提交到所述目标交易池。
应当理解的是,图6示出的基于区块链的交易处理装置的结构框图中,各单元用于执行图1、图3和图4对应的实施例中的各步骤,而对于图1、图3和图4对应的实施例中的各步骤已在上述实施例中进行详细解释,具体请参阅图1、图3和图4所对应的实施例中的相关描述,此处不再赘述。
通过该方案,在第一交易被提交区块链节点时,区块链节点可以在与第一交易存在依赖关系的M个第二交易未全部被执行的情况下,先暂不将第一交易信息提交至目标交易池中进行打包成块及执行,而是将第一交易信息提交到依赖交易池中,等待M个第二交易全部被执行后再将第一交易信息提交到目标交易池。由于在M个第二交易全部被执行之后,再执行第一交易,可以避免由于第一交易的依赖交易未执行而发起第一交易导致第一交易失败的情况,因此本申请实施例提供的方案可以减少无效的交易处理,提升交易成功率,从而减少网络、计算资源的浪费。
图7是本申请另一实施例提供的一种电子设备的结构框图。如图7所示,该实施例的电子设备70包括:处理器71、存储器72以及存储在存储器72中并可在处理器71上运行的计算机程序73,例如基于区块链的交易处理方法的程序。处理器71执行计算机程序73时实现上述各个基于区块链的交易处理方法各实施例中的步骤,例如图1所示的S11至S15。或者,处理器71执行计算机程序73时实现上述图4对应的实施例中各单元的功能,例如,图6所示的获取单元41和处理单元42的功能,具体请参阅图6对应的实施例中的相关描述,此处不赘述。
示例性的,计算机程序73可以被分割成一个或多个单元,该一个或者多个单元被存储在存储器72中,并由处理器71执行,以实现本申请方案。该一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序73在电子设备70中的执行过程。
本领域技术人员可以理解,图7仅仅是电子设备70的示例,并不构成对电子设备70的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
所称处理器71可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器72可以是电子设备70的内部存储单元,例如电子设备70的硬盘或内存。存储器72也可以是电子设备70的外部存储设备,例如电子设备70上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器72还可以既包括电子设备70的内部存储单元也包括外部存储设备。存储器72用于存储计算机程序以及其他程序和数据。存储器72还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种基于区块链的交易处理方法,其特征在于,包括:
获取第一交易信息,所述第一交易信息用于指示待执行的第一交易,所述第一交易与M个第二交易存在依赖关系,M为正整数;
若所述M个第二交易中的至少一个交易未被执行,则将所述第一交易信息提交到区块链网络中的依赖交易池;
在检测到所述M个第二交易全部被执行的情况下,将所述第一交易信息提交到目标交易池,所述目标交易池为所述区块链网络中用于执行交易的交易池。
2.根据权利要求1所述的方法,其特征在于,所述在检测到所述M个第二交易全部被执行的情况下,将所述第一交易信息提交到目标交易池,包括:
获取所述依赖交易池中的第一依赖信息,所述第一依赖信息为指示所述M个第二交易中未被执行的交易的信息;
在所述第一依赖信息指示所述M个第二交易全部被执行的情况下,将所述第一交易信息提交到所述目标交易池。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若检测到所述M个第二交易中的至少一个交易被执行,则更新所述第一依赖信息。
4.根据权利要求1所述的方法,其特征在于,在区块链节点获取第一交易信息之后,所述方法还包括:
判断所述M个第二交易是否全部被执行;
若所述M个第二交易全部被执行,则将所述第一交易信息提交到目标交易池。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在将所述第一交易信息提交到所述目标交易池之后,所述方法还包括:
根据所述第一交易信息,执行所述第一交易。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述目标交易池中的第三交易信息回滚到所述依赖交易池,所述第三交易信息用于指示存在与N个第四交易存在依赖关系的第三交易,N为正整数。
7.根据权利要求6所述的方法,其特征在于,在将所述目标交易池中的第三交易信息回滚到所述依赖交易池之后,所述方法还包括:
若所述第三交易未被执行且所述N个第四交易中的至少一个交易未被执行,则将所述第三交易信息保留在所述依赖交易池;
若所述第三交易未被执行且所述N个第四交易全部被执行,则将所述第三交易信息提交到所述目标交易池。
8.一种基于区块链的交易处理装置,其特征在于,包括获取单元和处理单元;
所述获取单元,用于获取第一交易信息,所述第一交易信息用于指示待执行的第一交易,所述第一交易与M个第二交易存在依赖关系,M为正整数;
所述处理单元,用于若所述M个第二交易中的至少一个交易未被执行,则将所述获取单元获取的所述第一交易信息提交到区块链网络中的依赖交易池;
所述处理单元,还用于在检测到所述M个第二交易全部被执行的情况下,将所述第一交易信息提交到目标交易池,所述目标交易池为所述区块链网络中用于执行交易的交易池。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述方法的步骤。
CN202011034989.XA 2020-09-27 2020-09-27 基于区块链的交易处理方法、装置、电子设备及存储介质 Pending CN112150286A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011034989.XA CN112150286A (zh) 2020-09-27 2020-09-27 基于区块链的交易处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011034989.XA CN112150286A (zh) 2020-09-27 2020-09-27 基于区块链的交易处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN112150286A true CN112150286A (zh) 2020-12-29

Family

ID=73894591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011034989.XA Pending CN112150286A (zh) 2020-09-27 2020-09-27 基于区块链的交易处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112150286A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108537543A (zh) * 2018-03-30 2018-09-14 百度在线网络技术(北京)有限公司 区块链数据的并行处理方法、装置、设备和存储介质
CN108595157A (zh) * 2018-04-28 2018-09-28 百度在线网络技术(北京)有限公司 区块链数据的处理方法、装置、设备和存储介质
CN110910237A (zh) * 2019-11-20 2020-03-24 腾讯科技(深圳)有限公司 区块链中的数据处理方法、装置及智能终端、存储介质
CN111506783A (zh) * 2020-04-08 2020-08-07 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
CN111597077A (zh) * 2020-05-13 2020-08-28 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备以及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108537543A (zh) * 2018-03-30 2018-09-14 百度在线网络技术(北京)有限公司 区块链数据的并行处理方法、装置、设备和存储介质
CN108595157A (zh) * 2018-04-28 2018-09-28 百度在线网络技术(北京)有限公司 区块链数据的处理方法、装置、设备和存储介质
CN110910237A (zh) * 2019-11-20 2020-03-24 腾讯科技(深圳)有限公司 区块链中的数据处理方法、装置及智能终端、存储介质
CN111506783A (zh) * 2020-04-08 2020-08-07 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
CN111597077A (zh) * 2020-05-13 2020-08-28 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备以及存储介质

Similar Documents

Publication Publication Date Title
CN109426949B (zh) 一种跨链交易方法及装置
CN112804349B (zh) 区块链共识网络中处理共识请求的方法、装置和电子设备
US20220253548A1 (en) Method and system for a distributed computing system
US20210256016A1 (en) Blockchain system and method
US6889253B2 (en) Cluster resource action in clustered computer system incorporation prepare operation
JP3779263B2 (ja) 共同作業システムのためのコンフリクトの解決
WO2020211483A1 (zh) 区块链中智能合约的存储、执行方法及装置和电子设备
CN111932257B (zh) 一种区块链并行化处理方法及装置
CN113064764B (zh) 在区块链系统中执行区块的方法及装置
WO2023184881A1 (zh) 提案共识执行方法、区块链系统、设备和存储介质
CN110599166A (zh) 一种区块链内获取交易依赖关系的方法及装置
CN110599175A (zh) 一种区块处理方法及相关设备
WO2021045829A1 (en) Byzantine consensus without centralized ordering
CN114157550B (zh) 一种基于无冲突事务合并的联盟区块链系统
CN107274284B (zh) 双向撮合方法、装置以及交易系统
CN114119242B (zh) 基于自适应窗口分片的联盟链性能优化方法及装置
CN112150286A (zh) 基于区块链的交易处理方法、装置、电子设备及存储介质
US11481385B1 (en) Graph database system to safely store data at high volume and scale
US11522966B2 (en) Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment
CN111339089B (zh) 一种应用于区块链的数据存储与获取方法及装置
US11971903B2 (en) Atomically bridging transactions across different blockchains
CN115438053A (zh) 区块存储方法、区块链系统、设备和存储介质
CN117764728A (zh) 一种区块链跨合约调用方法、装置、设备及存储介质
CN116701415A (zh) 一种跨链事务的执行方法及相关设备
CN113538138A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20201229