CN112070497B - 基于智能合约设计的关联交易重排方法、系统及介质 - Google Patents
基于智能合约设计的关联交易重排方法、系统及介质 Download PDFInfo
- Publication number
- CN112070497B CN112070497B CN202010943228.XA CN202010943228A CN112070497B CN 112070497 B CN112070497 B CN 112070497B CN 202010943228 A CN202010943228 A CN 202010943228A CN 112070497 B CN112070497 B CN 112070497B
- Authority
- CN
- China
- Prior art keywords
- transaction
- uplink
- component
- result
- current
- 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.)
- Active
Links
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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- 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/27—Replication, 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)
- Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于智能合约设计的关联交易重排方法、系统及介质,设计了在有关联交易进行上链且需要保证关联交易上链的顺序的情况下,基于智能合约实现保证关联交易顺序上链的重排机制,所属方法包括,基于智能合约我们设计了交易的双向链表和交易结果映射表两种结构,其中通过交易的双向链表结构我们可以很清楚的知道关联交易中的前后置关系,从而达到交易重排的机制,使得关联交易的顺序得到保证,数据的可靠性更高,而通过交易结果映射表我们可以高效的根据交易id检索出交易的上链结果。
Description
技术领域
本发明涉及区块链技术领域,具体地,涉及基于智能合约设计的关联交易重排方法、系统及介质。
背景技术
目前,以比特币、以太坊为代表的绝大多数的区块链都采用了区块+链式结构,其特点在于全网的交易都在一条单链环环相扣的链上被记录。即使每个节点收到的广播交易不完全一致,但链式区块会通过工作量证明(PoW)、权益证明(PoS)等机制让某一节点提出的区块得到全网的共识。这种线性增长的区块链结构保证了单笔交易的有序性。但是随着区块链的业务的成熟,业务的交易复杂度也提高了,由目前的单笔交易上链衍生到多笔关联交易顺序上链(多笔交易之间有关联,交易之间有前后置关系,需要等前置交易上完链,才能进行后置交易上链),目前行业技术中对关联交易顺序上链的技术方案大部分是通过外部业务系统维护交易的关联关系,通过循环的调用链查询前置交易的上链状态来决定后置交易是否继续发起上链,这种技术方案带来的问题是性能非常慢,而且需要依赖外部系统来进行关联关系的维护,成本太高。
专利文献CN201911128389.7公开了一种基于区块链的数据上链异常重试方法,该专利是基于独立的扫描模块对上链异常的数据进行扫描后满足重试上链要求后进行重试上链,需要依赖独立的扫描模块不断的去扫描异常上链的数据成本太高,如果是关联交易进行异常重试上链也会导致顺序被打乱,导致数据的不可靠,专利中也没有提及如何解决关联交易的重试上链的问题,而我们的方法针对异常重试上链的关联交易也可以很高效的进行交易重排,保证重试上链交易的顺序性和数据的可靠性。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于智能合约设计的关联交易重排方法、系统及介质。
根据本发明提供的一种基于智能合约设计的关联交易重排方法,在智能合约中设计了交易分发组件、交易处理组件、关联交易组件、交易缓冲池、交易结果hash映射表,基于以上组件实现关联的交易的顺序上链的控制。
优选地,包括:
步骤1:交易分发组件接收上链的交易数据包;
步骤2:交易分发组件对数据包进行拆解,从解析的每笔交易中判断该交易是否有关联交易;
步骤3:交易分发组件对没有关联交易的数据转发给交易处理组件直接进行上链操作;
步骤4:交易分发组件对有关联交易的数据转发给关联交易组件;
步骤5:关联交易组件接收到交易之后,首先对交易进行前后置交易关系解析;
步骤6:关联交易组件根据解析出来的每笔交易的前后置交易关系,对前置交易进行交易上链结果检索;
步骤7:关联交易组件通过交易上链结果hash映射表线性检索到前置交易是否上链成功;
步骤8:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为上链成功时,则直接把当前交易准发给交易处理组件进行上链,接收到交易处理组件反馈当前交易上链成功以后,需要去交易池中检索一下是否有当前交易的后置交易需要处理上链的,如果有则进行处理上链;
步骤9:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为未上链或未知时,则把当前交易放置到交易缓冲池的双向链表中等待上链。
优选地,所述步骤S5中所述的对交易进行前后置交易关系解析指:关联交易组件接收到交易数据之后,通过交易数据中的前置交易字段是否为空,解析出当前这笔交易与其他交易的前后置关系。
优选地,所述步骤1:
交易分发组件主要负责接收业务系统请求上链的交易数据包,接收的上链的交易数据包里可以包含多笔交易;
所述步骤2:
数据包中解析出来的每笔交易信息中会包含自己的前置交易的id,如果前置交易id为空则说明无前置交易;
所述步骤3:
交易处理组件主要负责处理交易上链逻辑,当交易上链成功以后,交易处理组件会把交易的上链结果快速同步至交易上链结果映射hash表;
所述步骤4:
关联交易组件主要负责处理有关联交易逻辑的交易;
所述步骤5:
关联交易组件通过解析交易数据体中的前置交易id,来判断交易是否是关联交易,如果前置交易id为空则说明无前置交易;
所述步骤6:
关联交易组件根据前置交易id,去交易上链结果映射hash表通过key的指针索引,知道前置交易是否上链成功。
优选地,所述步骤8包括:
步骤8.1:关联交易组件检索到每笔交易中的前置交易如果已经上链成功,则直接把当前交易准发给交易处理组件进行上链,交易处理组件处理完当前交易上链成功以后,在同步交易结果只交易上链结果映射hash表以后,通过方法弹栈的方式反馈上链结果给关联交易组件,关联交易组件接收到交易处理组件反馈后,在通过当前交易id去交易缓冲池中链表指针检查当前交易是否是后置交易需要处理;
步骤8.2:关联交易组件如果检测到交易池中有当前交易的后置交易需要处理,则会把交易池的后置交易的数据拿出来,转发给交易处理组件进行上链,利用方法弹栈方法再借助递归算法直到处理完成所有的后置交易上链为止。
优选地,所述步骤9:
关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为未上链或未知时,则会把当前交易放置到交易缓冲池中,交易缓冲池设计的是一个双向链表结构存储池,只需要根据当前交易的前置交易id指针方式就可以很方便的把当前交易拼接到交易缓冲池中对应前置交易的后面,形成链表结构,前后相接,方便后续上链处理。
根据本发明提供的一种基于智能合约设计的关联交易重排系统,在智能合约中设计了交易分发组件、交易处理组件、关联交易组件、交易缓冲池、交易结果hash映射表,基于以上组件实现关联的交易的顺序上链的控制。
优选地,包括:
模块1:交易分发组件接收上链的交易数据包;
模块2:交易分发组件对数据包进行拆解,从解析的每笔交易中判断该交易是否有关联交易;
模块3:交易分发组件对没有关联交易的数据转发给交易处理组件直接进行上链操作;
模块4:交易分发组件对有关联交易的数据转发给关联交易组件;
模块5:关联交易组件接收到交易之后,首先对交易进行前后置交易关系解析;
模块6:关联交易组件根据解析出来的每笔交易的前后置交易关系,对前置交易进行交易上链结果检索;
模块7:关联交易组件通过交易上链结果hash映射表线性检索到前置交易是否上链成功;
模块8:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为上链成功时,则直接把当前交易准发给交易处理组件进行上链,接收到交易处理组件反馈当前交易上链成功以后,需要去交易池中检索一下是否有当前交易的后置交易需要处理上链的,如果有则进行处理上链;
模块9:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为未上链或未知时,则把当前交易放置到交易缓冲池的双向链表中等待上链。
优选地,所述模块S5中所述的对交易进行前后置交易关系解析指:关联交易组件接收到交易数据之后,通过交易数据中的前置交易字段是否为空,解析出当前这笔交易与其他交易的前后置关系;
所述模块1:
交易分发组件主要负责接收业务系统请求上链的交易数据包,接收的上链的交易数据包里可以包含多笔交易;
所述模块2:
数据包中解析出来的每笔交易信息中会包含自己的前置交易的id,如果前置交易id为空则说明无前置交易;
所述模块3:
交易处理组件主要负责处理交易上链逻辑,当交易上链成功以后,交易处理组件会把交易的上链结果快速同步至交易上链结果映射hash表;
所述模块4:
关联交易组件主要负责处理有关联交易逻辑的交易;
所述模块5:
关联交易组件通过解析交易数据体中的前置交易id,来判断交易是否是关联交易,如果前置交易id为空则说明无前置交易;
所述模块6:
关联交易组件根据前置交易id,去交易上链结果映射hash表通过key的指针索引,知道前置交易是否上链成功;
所述模块8包括:
模块8.1:关联交易组件检索到每笔交易中的前置交易如果已经上链成功,则直接把当前交易准发给交易处理组件进行上链,交易处理组件处理完当前交易上链成功以后,在同步交易结果只交易上链结果映射hash表以后,通过系统弹栈的方式反馈上链结果给关联交易组件,关联交易组件接收到交易处理组件反馈后,在通过当前交易id去交易缓冲池中链表指针检查当前交易是否是后置交易需要处理;
模块8.2:关联交易组件如果检测到交易池中有当前交易的后置交易需要处理,则会把交易池的后置交易的数据拿出来,转发给交易处理组件进行上链,利用系统弹栈系统再借助递归算法直到处理完成所有的后置交易上链为止;
所述模块9:
关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为未上链或未知时,则会把当前交易放置到交易缓冲池中,交易缓冲池设计的是一个双向链表结构存储池,只需要根据当前交易的前置交易id指针方式就可以很方便的把当前交易拼接到交易缓冲池中对应前置交易的后面,形成链表结构,前后相接,方便后续上链处理。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现上述中任一项所述的基于智能合约设计的关联交易重排方法的步骤。
与现有技术相比,本发明具有如下的有益效果:
本发明公开的是基于智能合约在交易池中设计了双向链表和交易结果映射表两种结构,其中基于交易池中的双向链表我们可以很清楚的知道关联交易中的前后置关系,通过交易结果映射表我们可以很快速的通过交易id检索到交易的上链结果,业务系统发起批量交易,无需关心交易关联的顺序,我们通过交易池中的双向链表结构可以很高效的控制关联交易顺序上链,很大程度的提高链的交易性能和检索效率,我们通过交易id快速检索到前置交易的上链状态,来决定后置交易是否可以上链,可以很高效实现关联交易的重排来保证了关联交易的顺序性和数据的可靠性。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1中是本发明提供的技术方案中方法流程示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
下面通过实施例,对本发明进行更为具体地说明。
实施例1:
本发明涉及一种基于智能合约设计的关联交易重排方法,该方法在智能合约中设计了交易分发组件、交易处理组件(是负责对转发过来的交易进行上链处理,上链成功之后把交易结果添加到交易记过映射hash表当中,然后再返回交易结果)、关联交易组件、交易缓冲池、交易结果hash映射表。基于以上组件实现了关联的交易的顺序上链的控制。如图1所示,具体方法步骤为:
步骤1:交易分发组件接收上链的交易数据包
步骤2:交易分发组件对数据包进行拆解,从解析的每笔交易中判断该交易是否有关联交易
步骤3:交易分发组件对没有关联交易的数据转发给交易处理组件直接进行上链操作
步骤4:交易分发组件对有关联交易的数据转发给关联交易组件
步骤5:关联交易组件接收到交易之后,首先对交易进行前后置交易关系解析,关联交易组件接收到交易数据之后,通过交易数据中的前置交易字段是否为空,解析出当前这笔交易与其他交易的前后置关系(关联关系)
步骤6:关联交易组件根据解析出来的每笔交易的前后置交易关系(关联交易的意思就是两笔交易之间有关联,例如A->B,AB两笔交易有关联关系,A是B的前置交易,B是A的后置交易,B交易的上链需要等待前置交易A上链完成之后才能进行上链,AB两笔交易就是前后置交易关系),对前置交易进行交易上链结果检索
步骤7:关联交易组件通过交易上链结果hash映射表(散列表Hash table,也叫哈希表,是根据关键码值Key value而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表,交易上链结果映射hash表是基于hash表数据结构对交易id和交易结果进行映射存储)线性检索到前置交易是否上链成功
步骤8:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为上链成功时,则直接把当前交易准发给交易处理组件进行上链,接收到交易处理组件反馈当前交易上链成功以后,需要去交易池中检索一下是否有当前交易的后置交易需要处理上链的,如果有则进行处理上链
步骤9:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为未上链或未知时,则把当前交易放置到交易缓冲池的双向链表中(双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后置结点)等待上链
所述步骤1包括:
步骤1.1:交易分发组件主要负责接收业务系统请求上链的交易数据包,接收的上链的交易数据包里可以包含多笔交易
所述步骤2包括:
步骤2.1:数据包中解析出来的每笔交易信息中会包含自己的前置交易的id,如果前置交易id为空则说明无前置交易
所述步骤3包括:
步骤3.1:交易处理组件主要负责处理交易上链逻辑,当交易上链成功以后,交易处理组件会把交易的上链结果快速同步至交易上链结果映射hash表
所述步骤4包括:
步骤4.1:关联交易组件主要负责处理有关联交易逻辑的交易(是指交易分发组件会解析交易每一笔交易数据,根据交易数据中是前置交易字段的值是否为空来判断当前这笔交易是否是关联交易,如果有关联交易则转发给关联交易组件,否则直接转发给交易处理组件进行上链)
所述步骤5包括:
步骤5.1:关联交易组件通过解析交易数据体中的前置交易id,来判断交易是否是关联交易,如果前置交易id为空则说明无前置交易
所述步骤6包括:
步骤6.1:关联交易组件根据前置交易id,去交易上链结果映射hash表通过key的指针索引,可以非常快的知道前置交易是否上链成功
所述步骤8包括:
步骤8.1:关联交易组件检索到每笔交易中的前置交易如果已经上链成功,则直接把当前交易准发给交易处理组件进行上链,交易处理组件处理完当前交易上链成功以后,在同步交易结果只交易上链结果映射hash表以后,通过方法弹栈的方式(调用顺序反方向依次返回)反馈上链结果给关联交易组件,关联交易组件接收到交易处理组件反馈后,在通过当前交易id去交易缓冲池中链表指针检查当前交易是否是后置交易需要处理
步骤8.2:关联交易组件如果检测到交易池中有当前交易的后置交易需要处理,则会把交易池的后置交易的数据拿出来,转发给交易处理组件进行上链,利用方法弹栈方法再借助递归算法(在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。计算理论可以证明递归的作用可以完全取代循环,因此在很多函数编程语言(如Scheme)中习惯用递归来实现循环)直到处理完成所有的后置交易上链为止
所述步骤9包括:
步骤9.1:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为未上链或未知时,则会把当前交易放置到交易缓冲池中,交易缓冲池设计的是一个双向链表结构存储池,只需要根据当前交易的前置交易id指针方式就可以很方便的把当前交易拼接到交易缓冲池中对应前置交易的后面,形成链表结构,前后相接,方便后续上链处理
实施例2:
1.1:某一业务系统向链提交了一个交易数据包,交易数据包中包含三笔关联交易ABC和单笔交易D,假设ABC三笔关联交易的关联关系为B->C->A(B属于C的前置交易,C属于A的前置交易),智能合约的交易分发组件首先接收到交易数据包,然后对数据包进行解析,通过逐条遍历ABCD四笔交易的方式处理数据包中四笔交易,通过交易数据中的前置交易id判断交易是否属于关联交易,如果不是则直接转发给交易处理组件进行上链处理,如果是则把数据转发给关联交易重排组件,可以看出交易分发组件会把ABC交易依次转发给关联交易重排组件,D交易转发给交易处理组件
1.2:关联交易重排组件接收到A交易之后,首先会解析A交易数据中的前置交易为B,根据B交易id去交易上链结果hash映射表中检索上链结果,此时B交易的上链结果为未上链成功,关联交易重排组件会把A交易先存入缓冲池中的双向链表结构中,A交易的在缓冲池的存储结构为C->A(A交易的前置指针为C),A交易会在链中等待自己的前置交易上链之后才会被处理上链
1.3:关联交易重排组件接收到B交易,首先会解析B交易数据中的前置交易的id为空,就会直接把B交易转发给交易处理组件进行上链处理,交易处理组件对B交易进行上链处理,上链成功后交易处理组件会把B交易的上链结果同步至交易上链结果hash映射表,然后依据方法弹栈原理将B交易上链结果反馈给关联交易重排组件,关联交易重排组件接收到交易处理组件B交易的上链成功的反馈,此时会根据B交易的id去交易缓冲池中检索B交易的后置指针,检索后发现B交易在缓冲池中没有后置指针,关联交易重排组件无需成对B交易的进行交易重排,则直接依据弹栈原理返回B交易的上链结果返回值交易分发组件,在依次返回至业务系统
1.4:关键交易重排组件接受到C交易,首先会解析C交易数据中的前置交易为B,根据B交易id去交易上链结果hash映射表中检索上链结果,此时B交易的上链结果为已经上链,则直接把C交易转发给交易处理组件,上链成功后交易处理组件会把C交易的上链结果同步至交易上链结果hash映射表,然后依据方法弹栈原理将C交易上链结果反馈给关联交易重排组件,关联交易重排组件接收到交易处理组件B交易的上链成功的反馈,此时会根据C交易的id去交易缓冲池中检索C交易的后置指针,检索后发现C交易在缓冲池中发现后置指针为A,则此时交易关联组件会从交易缓冲池中拿出来A的交易数据转发给交易处理组件进行上链,然后依据方法弹栈原理将A交易上链结果反馈给关联交易重排组件,关联交易重排组件接收到交易处理组件A交易的上链成功的反馈,此时会根据A交易的id去交易缓冲池中检索A交易的后置指针,检索后发现A交易在缓冲池中没有后置指针,关联交易重排组件无需成对A交易的进行交易重排,则直接依据弹栈原理返回A+C交易的上链结果返回值交易分发组件,在依次返回至业务系统(这里设计的是一个递归算法,会根据交易处理组件的反馈结果递归的去处理相应交易后置交易,直到全部处理完成为止)
1.5:交易处理组件接收到D交易,交易处理组件对D交易进行上链处理,上链成功后交易处理组件会把D交易的上链结果同步至交易上链结果hash映射表,然后依据方法弹栈原理将D交易上链结果反馈给交易分发组件,依次再反馈至业务系统。
在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (7)
1.一种基于智能合约设计的关联交易重排方法,其特征在于,在智能合约中设计了交易分发组件、交易处理组件、关联交易组件、交易缓冲池、交易结果hash映射表,基于以上组件实现关联的交易的顺序上链的控制;
包括:
步骤1:交易分发组件接收上链的交易数据包;
步骤2:交易分发组件对数据包进行拆解,从解析的每笔交易中判断该交易是否有关联交易;
步骤3:交易分发组件对没有关联交易的数据转发给交易处理组件直接进行上链操作;
步骤4:交易分发组件对有关联交易的数据转发给关联交易组件;
步骤5:关联交易组件接收到交易之后,首先对交易进行前后置交易关系解析;
步骤6:关联交易组件根据解析出来的每笔交易的前后置交易关系,对前置交易进行交易上链结果检索;
步骤7:关联交易组件通过交易上链结果hash映射表线性检索到前置交易是否上链成功;
步骤8:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为上链成功时,则直接把当前交易准发给交易处理组件进行上链,接收到交易处理组件反馈当前交易上链成功以后,需要去交易池中检索一下是否有当前交易的后置交易需要处理上链的,如果有则进行处理上链;
步骤9:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为未上链或未知时,则把当前交易放置到交易缓冲池的双向链表中等待上链;
所述步骤9:
关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为未上链或未知时,则会把当前交易放置到交易缓冲池中,交易缓冲池设计的是一个双向链表结构存储池,只需要根据当前交易的前置交易id指针方式就可以很方便的把当前交易拼接到交易缓冲池中对应前置交易的后面,形成链表结构,前后相接,方便后续上链处理。
2.根据权利要求1所述的基于智能合约设计的关联交易重排方法,其特征在于,所述步骤5中所述的对交易进行前后置交易关系解析指:关联交易组件接收到交易数据之后,通过交易数据中的前置交易字段是否为空,解析出当前这笔交易与其他交易的前后置关系。
3.根据权利要求1所述的基于智能合约设计的关联交易重排方法,其特征在于,所述步骤1:
交易分发组件主要负责接收业务系统请求上链的交易数据包,接收的上链的交易数据包里可以包含多笔交易;
所述步骤2:
数据包中解析出来的每笔交易信息中会包含自己的前置交易的id,如果前置交易id为空则说明无前置交易;
所述步骤3:
交易处理组件主要负责处理交易上链逻辑,当交易上链成功以后,交易处理组件会把交易的上链结果快速同步至交易上链结果映射hash表;
所述步骤4:
关联交易组件主要负责处理有关联交易逻辑的交易;
所述步骤5:
关联交易组件通过解析交易数据体中的前置交易id,来判断交易是否是关联交易,如果前置交易id为空则说明无前置交易;
所述步骤6:
关联交易组件根据前置交易id,去交易上链结果映射hash表通过key的指针索引,知道前置交易是否上链成功。
4.根据权利要求1所述的基于智能合约设计的关联交易重排方法,其特征在于,所述步骤8包括:
步骤8.1:关联交易组件检索到每笔交易中的前置交易如果已经上链成功,则直接把当前交易准发给交易处理组件进行上链,交易处理组件处理完当前交易上链成功以后,在同步交易结果只交易上链结果映射hash表以后,通过方法弹栈的方式反馈上链结果给关联交易组件,关联交易组件接收到交易处理组件反馈后,在通过当前交易id去交易缓冲池中链表指针检查当前交易是否是后置交易需要处理;
步骤8.2:关联交易组件如果检测到交易池中有当前交易的后置交易需要处理,则会把交易池的后置交易的数据拿出来,转发给交易处理组件进行上链,利用方法弹栈方法再借助递归算法直到处理完成所有的后置交易上链为止。
5.一种基于智能合约设计的关联交易重排系统,其特征在于,在智能合约中设计了交易分发组件、交易处理组件、关联交易组件、交易缓冲池、交易结果hash映射表,基于以上组件实现关联的交易的顺序上链的控制;
包括:
模块1:交易分发组件接收上链的交易数据包;
模块2:交易分发组件对数据包进行拆解,从解析的每笔交易中判断该交易是否有关联交易;
模块3:交易分发组件对没有关联交易的数据转发给交易处理组件直接进行上链操作;
模块4:交易分发组件对有关联交易的数据转发给关联交易组件;
模块5:关联交易组件接收到交易之后,首先对交易进行前后置交易关系解析;
模块6:关联交易组件根据解析出来的每笔交易的前后置交易关系,对前置交易进行交易上链结果检索;
模块7:关联交易组件通过交易上链结果hash映射表线性检索到前置交易是否上链成功;
模块8:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为上链成功时,则直接把当前交易准发给交易处理组件进行上链,接收到交易处理组件反馈当前交易上链成功以后,需要去交易池中检索一下是否有当前交易的后置交易需要处理上链的,如果有则进行处理上链;
模块9:关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为未上链或未知时,则把当前交易放置到交易缓冲池的双向链表中等待上链;
所述模块9:
关联交易组件通过前置交易id去交易上链结果映射hash中检索到前置交易的上链结果为未上链或未知时,则会把当前交易放置到交易缓冲池中,交易缓冲池设计的是一个双向链表结构存储池,只需要根据当前交易的前置交易id指针方式就可以很方便的把当前交易拼接到交易缓冲池中对应前置交易的后面,形成链表结构,前后相接,方便后续上链处理。
6.根据权利要求5所述的基于智能合约设计的关联交易重排系统,其特征在于,所述模块5中所述的对交易进行前后置交易关系解析指:关联交易组件接收到交易数据之后,通过交易数据中的前置交易字段是否为空,解析出当前这笔交易与其他交易的前后置关系;
所述模块1:
交易分发组件主要负责接收业务系统请求上链的交易数据包,接收的上链的交易数据包里可以包含多笔交易;
所述模块2:
数据包中解析出来的每笔交易信息中会包含自己的前置交易的id,如果前置交易id为空则说明无前置交易;
所述模块3:
交易处理组件主要负责处理交易上链逻辑,当交易上链成功以后,交易处理组件会把交易的上链结果快速同步至交易上链结果映射hash表;
所述模块4:
关联交易组件主要负责处理有关联交易逻辑的交易;
所述模块5:
关联交易组件通过解析交易数据体中的前置交易id,来判断交易是否是关联交易,如果前置交易id为空则说明无前置交易;
所述模块6:
关联交易组件根据前置交易id,去交易上链结果映射hash表通过key的指针索引,知道前置交易是否上链成功;
所述模块8包括:
模块8.1:关联交易组件检索到每笔交易中的前置交易如果已经上链成功,则直接把当前交易准发给交易处理组件进行上链,交易处理组件处理完当前交易上链成功以后,在同步交易结果只交易上链结果映射hash表以后,通过系统弹栈的方式反馈上链结果给关联交易组件,关联交易组件接收到交易处理组件反馈后,在通过当前交易id去交易缓冲池中链表指针检查当前交易是否是后置交易需要处理;
模块8.2:关联交易组件如果检测到交易池中有当前交易的后置交易需要处理,则会把交易池的后置交易的数据拿出来,转发给交易处理组件进行上链,利用系统弹栈系统再借助递归算法直到处理完成所有的后置交易上链为止。
7.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的基于智能合约设计的关联交易重排方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010943228.XA CN112070497B (zh) | 2020-09-09 | 2020-09-09 | 基于智能合约设计的关联交易重排方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010943228.XA CN112070497B (zh) | 2020-09-09 | 2020-09-09 | 基于智能合约设计的关联交易重排方法、系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112070497A CN112070497A (zh) | 2020-12-11 |
CN112070497B true CN112070497B (zh) | 2023-07-18 |
Family
ID=73663213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010943228.XA Active CN112070497B (zh) | 2020-09-09 | 2020-09-09 | 基于智能合约设计的关联交易重排方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112070497B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112866359B (zh) * | 2021-01-05 | 2023-05-09 | 卓望数码技术(深圳)有限公司 | 数据上链方法、装置、电子设备及存储介质 |
CN113052687B (zh) * | 2021-04-30 | 2024-02-02 | 中国银行股份有限公司 | 一种交易路由分发方法和相关装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111461711A (zh) * | 2020-03-12 | 2020-07-28 | 上海宓猿信息技术有限公司 | 一种区块链交易的追踪系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2811729C (en) * | 2013-04-02 | 2023-03-14 | Ontario Lottery And Gaming Corporation | System and methods for managing and using information in a lottery system |
WO2017098519A1 (en) * | 2015-12-08 | 2017-06-15 | Tallysticks Limited | A system and method for automated financial transaction validation, processing and settlement using blockchain smart contracts |
JP7273053B2 (ja) * | 2017-12-01 | 2023-05-12 | クアント ネットワーク リミテッド | ブロックチェーン通信と順序付け |
US20190318353A1 (en) * | 2018-04-12 | 2019-10-17 | Bank Of America Corporation | Real time data processing platform for resources on delivery interactions |
US11030217B2 (en) * | 2018-05-01 | 2021-06-08 | International Business Machines Corporation | Blockchain implementing cross-chain transactions |
CN109858909A (zh) * | 2019-01-11 | 2019-06-07 | 平安科技(深圳)有限公司 | 基于区块链的知识产权交易方法、装置、设备和存储介质 |
CN111030846A (zh) * | 2019-11-18 | 2020-04-17 | 杭州趣链科技有限公司 | 一种基于区块链的数据上链异常重试方法 |
CN111507730A (zh) * | 2020-05-12 | 2020-08-07 | 北京俩撇科技有限公司 | 一种区块链跨链方法及装置 |
CN111539712A (zh) * | 2020-05-18 | 2020-08-14 | 北京俩撇科技有限公司 | 一种基于区块链的下单、结账方法及装置 |
CN111539700B (zh) * | 2020-07-08 | 2020-10-23 | 南京科绽信息技术有限公司 | 一种提高区块链数字资产转账交易执行效率的方法 |
-
2020
- 2020-09-09 CN CN202010943228.XA patent/CN112070497B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111461711A (zh) * | 2020-03-12 | 2020-07-28 | 上海宓猿信息技术有限公司 | 一种区块链交易的追踪系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112070497A (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112070497B (zh) | 基于智能合约设计的关联交易重排方法、系统及介质 | |
US6463439B1 (en) | System for accessing database tables mapped into memory for high performance data retrieval | |
US7984042B2 (en) | System and method for providing highly available database performance | |
CN1552032B (zh) | 数据库 | |
KR101616967B1 (ko) | 다수의 처리 명령어를 실시간으로 취급하고 처리하는 것과 관련된 개선 | |
US6085189A (en) | Database system and method for supporting current of cursor updates and deletes from a select query from one or more updatable tables in single node and MPP environments | |
US6622152B1 (en) | Remote log based replication solution | |
US20050210023A1 (en) | Query optimizer using implied predicates | |
US20020035559A1 (en) | System and method for a decision engine and architecture for providing high-performance data querying operations | |
US20050262045A1 (en) | Database management system and method for query process for the same | |
US7222123B2 (en) | Technique for using a current lookup for performing multiple merge operations using source data that is modified in between the merge operations | |
CN111563095B (zh) | 一种基于HBase的数据检索装置 | |
CN103176988A (zh) | 基于SaaS的数据迁移系统 | |
US7899784B2 (en) | Method and apparatus for performing multi-table merge operations in a database environment | |
US20190278757A1 (en) | Distributed Database Management System with Dynamically Split B-Tree Indexes | |
CN111694893B (zh) | 一种基于日志解析的部分回滚解析方法和数据同步系统 | |
CN111694811B (zh) | 一种批量数据入库方法及装置 | |
Dann et al. | Non-relational databases on FPGAs: Survey, design decisions, challenges | |
CN106649530B (zh) | 云详单查询管理系统及方法 | |
US7617189B2 (en) | Parallel query processing techniques for minus and intersect operators | |
CN112182031B (zh) | 数据查询方法及装置、存储介质、电子装置 | |
US20040243589A1 (en) | Method and apparatus for performing multiple merge operations using source data that is modified in between the merge operations | |
US9946779B2 (en) | Pipleline merge operations using source data and multiple destination data structures | |
CN109901822B (zh) | 对象互转方法、装置及存储介质、服务器 | |
KR920002571B1 (ko) | 분산처리시스템에 있어서의 데이터처리방법 |
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 |