交易撮合系统及其链上撮合方法、区块链节点与流程

文档序号:21323620发布日期:2020-06-30 20:57阅读:838来源:国知局
交易撮合系统及其链上撮合方法、区块链节点与流程

本申请涉及区块链技术领域,特别是涉及一种交易撮合系统及其链上撮合方法、区块链节点。



背景技术:

交易撮合引擎(matching/tradingengine),即用来撮合交易的软件,其广泛地应用在金融、证券、加密货币交易等领域。传统交易所的交易撮合引擎存在透明度低的问题,而区块链因具有去中心化、不易篡改的特点成为金融、证券、加密货币交易等领域的研究热点。

传统的交易所可以24小时不间断的运行撮合交易,然而,区块链中生成撮合交易是以区块为单位的,受出块时间以及gas花费的限制,一个区块可以打包撮合交易的数量是有限的。因此,目前基于区块链的交易撮合引擎是采用链下撮合结合链上结算的方式来处理多个交易对的。而这种方式是由交易所完成撮合交易的,仍然存在透明度低的问题。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够提高透明度和撮合效率的交易撮合系统及其链上撮合方法、区块链节点。

一种交易撮合系统,该系统应用于区块链节点,所述交易撮合系统包括交易对查询单元、撮合交易收集单元以及若干撮合执行单元:所述交易对查询单元、所述撮合交易收集单元与若干所述撮合执行单元并行执行;

所述交易对查询单元用于查询区块链中的交易对,并将查询到的交易对发送给所有所述撮合执行单元;

所述撮合执行单元用于抢占所述交易对查询单元发送的交易对,根据抢占到的交易对生成撮合交易,并向所述撮合交易收集单元发送撮合交易;

所述撮合交易收集单元用于接收撮合交易,并根据接收到的撮合交易返回交易撮合结果。

在其中一个实施例中,所述撮合交易收集单元具体用于判断系统时间是否达到出块截止时间;响应于判定所述系统时间没有达到所述出块截止时间,判断是否接收到撮合交易;响应于判定接收到撮合交易,计算接收到的撮合交易消耗的gas;根据消耗的gas判断剩余gas是否大于或等于预设阈值;响应于判定所述剩余gas大于或等于所述预设阈值,保存所述接收到的撮合交易;以及返回保存的撮合交易。

在其中一个实施例中,所述交易对查询单元具体用于响应于查询到交易对,将查询到的交易对发送给所有所述撮合执行单元;响应于没有查询到交易对,向所有所述撮合执行单元发送终止通知;

所述撮合执行单元具体用于判断是否收到所述交易对查询单元发送的终止通知;响应于判定没有收到所述交易对查询单元发送的终止通知,获取一个交易对;判断抢占到的交易对是否能撮合一笔交易;响应于判定抢占到的交易对能撮合一笔交易,判断是否收到所述撮合交易收集单元发送的终止通知;响应于判定没有收到所述撮合交易收集单元发送的终止通知,生成撮合交易;以及将生成的撮合交易发送给所述撮合交易收集单元。

在其中一个实施例中,所述交易对查询单元还具体用于判断是否收到所述撮合交易收集单元发送的终止通知;响应于判定没有收到所述撮合交易收集单元发送的终止通知,查询交易对;

则所述撮合执行单元还具体用于响应于判定收到所述撮合交易收集单元发送的终止通知或判定收到所述交易对查询单元发送的终止通知,向所述撮合交易收集单元发送完成通知;

所述撮合交易收集单元还具体用于响应于判定没有接收到撮合交易,判断是否收到任意一个所述撮合执行单元发送的完成通知,以及响应于判定收到任意一个所述撮合执行单元发送的完成通知,判断是否收到所有所述撮合执行单元发送的完成通知;以及响应于判定收到所有所述撮合执行单元发送的完成通知,向所述交易对查询单元和所有所述撮合执行单元发送终止通知,并返回保存的撮合交易。

在其中一个实施例中,所述交易对查询单元具体用于响应于判定没有收到所述撮合交易收集单元发送的终止通知,使用迭代器模式查询交易对;和/或,所述撮合执行单元具体用于响应于判定没有收到所述撮合交易收集单元发送的终止通知,使用迭代器模式生成撮合交易。

本发明还提供一种交易撮合系统的链上撮合方法,该方法应用于区块链节点,该撮合方法包括:

交易对查询单元查询区块链中的交易对,并将查询到的交易对发送给若干撮合执行单元;

每一个所述撮合执行单元抢占所述交易对查询单元发送的交易对,根据抢占到的交易对生成撮合交易,并向撮合交易收集单元发送撮合交易;

撮合交易收集单元接收撮合交易,并根据接收到的撮合交易返回交易撮合结果;

所述交易对查询单元、所述撮合交易收集单元与若干所述撮合执行单元为并行执行的运行单元。

在其中一个实施例中,所述交易对查询单元查询交易,并将查询到的交易对发送给若干撮合执行单元,包括:

判断是否收到所述撮合交易收集单元发送的终止通知;

响应于判定没有收到所述撮合交易收集单元发送的终止通知,查询交易对;

响应于查询到交易对,将查询到的交易对发送给所有所述撮合执行单元;

响应于没有查询到交易对,向若干撮合执行单元发送终止通知;

则所述撮合执行单元抢占所述交易对查询单元发送的交易对,根据抢占到的交易对生成撮合交易,并向撮合交易收集单元发送撮合交易,包括:

判断是否收到所述交易对查询单元发送的终止通知;

响应于判定没有收到所述交易对查询单元发送的终止通知,抢占一个交易对;

判断抢占到的交易对是否能撮合一笔交易;

响应于判定抢占到的交易对能撮合一笔交易,判断是否收到所述撮合交易收集单元发送的终止通知;

响应于判定没有收到所述撮合交易收集单元发送的终止通知,生成撮合交易;

将生成的撮合交易发送给所述撮合交易收集单元;

则所述撮合交易收集单元接收撮合交易,并根据接收到的撮合交易返回交易撮合结果,包括:

判断系统时间是否达到出块截止时间;

响应于判定所述系统时间没有达到所述出块截止时间,判断是否接收到撮合交易;

响应于判定接收到撮合交易,计算接收到的撮合交易消耗的gas值;

根据消耗的gas值判断剩余gas值是否大于或等于预设阈值;

响应于判定所述剩余gas值大于或等于所述预设阈值,保存接收到的撮合交易;

响应于判定没有接收到撮合交易,判断是否收到任意一个所述撮合执行单元发送的完成通知;

响应于判定收到任意一个所述撮合执行单元发送的完成通知,判断是否收到所有所述撮合执行单元发送的完成通知;

响应于判定系统时间达到出块截止时间或判定所述剩余gas小于所述预设阈值,向所述交易对查询单元和所有所述撮合执行单元发送终止通知;

响应于判定收到所有所述撮合执行单元发送的完成通知,向所述交易对查询单元和所有所述撮合执行单元发送终止通知,并返回保存的撮合交易。

在其中一个实施例中,所述响应于判定没有收到所述撮合交易收集单元发送的终止通知,查询交易对,包括:

响应于判定没有收到所述撮合交易收集单元发送的终止通知,使用迭代器模式查询交易对。

在其中一个实施例中,所述响应于判定没有收到所述撮合交易收集单元发送的终止通知,生成撮合交易,包括:

响应于判定没有收到所述撮合交易收集单元发送的终止通知,使用迭代器模式生成撮合交易。

本发明还提供一种区块链节点,区块链节点包括:包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述任一实施例所述的区块链交易撮合方法。

本发明提供了一种交易撮合系统及其链上撮合方法、区块链节点,相对于传统的交易所来说,本发明提供的交易撮合系统应用于区块链节点,即采用链上撮合的方式,提高去中心化程度,提高交易撮合的透明度;通过并行执行的交易对查询单元、撮合交易收集单元与若干所述撮合执行单元将不同交易对的撮合并行化,通过并发撮合,有效提高链上撮合的效率,从而解决区块链在交易撮合方面的痛点问题。

附图说明

图1为一实施例中区块链网络的架构示意图;

图2为一实施例中交易撮合系统的结构示意图;

图3为一实施例中交易撮合系统的链上撮合方法的流程示意图;

图4为又一实施例中步骤s410的流程示意图;

图5为又一实施例中步骤s430的流程示意图;

图6为又一实施例中步骤s450的流程示意图;

图7为一实施例中区块链节点的结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本文中所使用的术语“第一”、“第二”、等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。

1)区块链(blockchain),是由区块(block)形成的加密的、链式的交易的存储结构。每个区块的头部既可以包括区块中所有交易的哈希值,同时也包含前一个区块中所有交易的哈希值,从而基于哈希值实现区块中交易的防篡改和防伪造;新产生的交易被填充到区块并经过区块链节点的共识后,会被追加到区块链的尾部从而形成链式的增长。

2)区块链网络,通过共识的方式将新区块纳入区块链的一系列的节点的集合。区块链网络可以包括多个节点,该多个节点形成一个去中心化的、能够协同运转的数据库存储系统。任意两个节点1之间采用p2p(peertopeer,点对点)协议进行网络通信,如图1所示。

3)区块链节点,即区块链网络中的节点,可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

4)交易,也称为交易请求,交易包括了需要提交到区块链网络执行的操作,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。

5)gas,用于表示执行某些操作所需的计算量(能耗),当发生交易等操作时会消耗相应的gas。

6)出块时间,节点产生区块的时间。在使用一些像dpos的共识算法,节点需要在指定时间内出块,若到达指定时间,即使还可继续打包撮合交易,撮合过程也必须终止;这个指定时间为出块截止时间。

如图2所示,其是本发明实施例提供的交易撮合系统的结构示意图。该交易撮合系统应用于区块链节点。该交易撮合系统包括交易对查询单元11(tradepairproducer)、撮合交易收集单元13(collector)以及若干撮合执行单元15(matchtxworker)。

交易对查询单元11、撮合交易收集单元13与若干撮合执行单元15为并行执行的运行单元。示例性地,该系统包括5个线程,撮合执行单元15的数量为3个,分别为15a、15b和15c。

可选的,交易对查询单元11对应1个线程,撮合交易收集单元13对应1个线程,3个撮合执行单元15与3个线程一一对应。需要说明的是,撮合执行单元的个数和系统的线程数的数量仅为示例性说明,本发明对此不作限定。

其中,撮合执行单元15的启动个数可根据cpu支持的并行级别设置;具体地,可根据cpu的多个内核中每个内核的当前使用率,基于内核数量、每个内核的主频和每个内核的当前使用率确定cpu支持的并行级别。

交易对查询单元11用于查询区块链中的交易对,并将查询到的交易对发送给所有撮合执行单元15。

具体地,在区块链中,数据的存储采用较为轻量级的数据库,如leveldb。leveldb支持按照价格进行排序,从而满足委托单按照价格排序的需要。由于内存中可存放的委托单是有限的,因此,采用轻量级的数据库能够有效提高撮合性能。此外,链中已有的交易对也存入数据库。

进一步,可使用迭代器(iterator)模式查询委托单、查询交易对。

撮合执行单元15用于抢占交易对查询单元11发送的交易对,根据抢占到的交易对生成撮合交易,并向撮合交易收集单元13发送撮合交易。其中,抢占是指多个单元以竞争的方式获取。具体地,可以是以进程竞争或协程竞争等方式获取交易对。在本实施例中,撮合执行单元15a、15b和15c以协程竞争的方式获取交易对,以实现并发撮合。示例性地,在交易对查询单元11发过来的交易对中,撮合执行单元15a抢占40%的交易对。

进一步,可使用迭代器模式生成撮合交易。

撮合交易收集单元13用于接收撮合交易,并根据接收到的撮合交易返回交易撮合结果。

本实施例提供的交易撮合系统应用于区块链节点,撮合过程由区块链完成,提高了去中心化程度,避免因链下撮合带来透明度低的问题。通过并行执行的交易对查询单元11、撮合交易收集单元13与若干撮合执行单元15将不同交易对的撮合并行化,通过并发撮合提高链上撮合效率,解决在链上撮合出块时间和gas的限制下撮合效率低的问题,从而解决区块链在交易撮合方面的痛点问题。

进一步,撮合交易收集单元13具体用于判断系统时间是否达到出块截止时间;响应于判定系统时间没有达到出块截止时间,判断是否接收到撮合交易;响应于判定接收到撮合交易,计算接收到的撮合交易消耗的gas;根据消耗的gas判断剩余gas是否大于或等于预设阈值;响应于判定剩余gas大于或等于预设阈值,保存接收到的撮合交易;以及返回保存的撮合交易。

即通过先判断是否到达出块截止时间,后接收撮合交易,减少不必要的开销;在接收撮合交易后,先判断剩余gas大于或等于预设阈值以确定剩余gas是否足够,后保存撮合交易,进一步提高撮合效率,提高撮合性能。

具体地,撮合交易收集单元13返回保存的撮合交易。

具体地,交易对查询单元11用于响应于查询到交易对,将查询到的交易对发送给所有撮合执行单元;以及响应于没有查询到交易对,向所有撮合执行单元发送终止通知。

撮合执行单元15具体用于判断是否收到交易对查询单元发送的终止通知;响应于判定没有收到交易对查询单元11发送的终止通知,抢占一个交易对;判断抢占到的交易对是否能撮合一笔交易;响应于判定抢占到的交易对能撮合一笔交易,判断是否收到撮合交易收集单元13发送的终止通知;响应于判定没有收到撮合交易收集单元13发送的终止通知,生成撮合交易;以及将生成的撮合交易发送给撮合交易收集单元13。

若干撮合执行单元15以线程竞争的方式获取交易对,利于提高并发撮合效率。撮合执行单元15在抢占到的交易对能撮合一笔交易后,根据是否收到撮合交易收集单元13发送的终止通知来确定是否生成撮合交易,避免在出块截止时间到达或gas不足的情况下继续工作,从而减少不必要的开销,提高并发撮合的可靠性。

在又一个实施例中,交易对查询单元11具体用于判断是否收到撮合交易收集单元13发送的终止通知;响应于判定没有收到撮合交易收集单元13发送的终止通知,查询交易对;以及响应于查询到交易对,将查询到的交易对发送给所有撮合执行单元。

具体地,交易对查询单元11在查询交易对时,若查询到存在下一个交易对,则将查询到的交易对发送给所有撮合执行单元15。

可选的,交易对查询单元11使用迭代器模式查询交易对。

交易对查询单元11还具体用于响应于没有查询到下一个交易对,向所有撮合执行单元发送终止通知;响应于判定收到撮合交易收集单元13发送的终止通知,结束程序;以及在向所有撮合执行单元发送终止通知后,结束程序。

撮合执行单元15具体用于判断是否收到交易对查询单元11发送的终止通知;响应于判定没有收到交易对查询单元11发送的终止通知,抢占一个交易对;判断抢占到的交易对是否能撮合一笔交易;响应于判定抢占到的交易对能撮合一笔交易,判断是否收到撮合交易收集单元13发送的终止通知。

撮合执行单元15还具体用于响应于判定没有收到撮合交易收集单元13发送的终止通知,生成撮合交易;可选的,撮合执行单元15使用迭代器模式生成撮合交易。

撮合执行单元15还具体用于将生成的撮合交易发送给撮合交易收集单元13;响应于判定收到撮合交易收集单元13发送的终止通知或判定收到交易对查询单元11发送的终止通知,向撮合交易收集单元13发送完成通知。

具体地,撮合执行单元15还用于响应于判定抢占到的交易对不能撮合一笔交易,判断是否收到交易对查询单元11发送的终止通知;在将生成的撮合交易发送给撮合交易收集单元13后,判断抢占到的交易对是否能撮合一笔交易;在向撮合交易收集单元13发送完成通知后,结束程序。

撮合交易收集单元13具体用于判断系统时间是否达到出块截止时间;响应于判定所述系统时间没有达到出块截止时间,判断是否接收到撮合交易;响应于判定接收到撮合交易,计算该撮合交易消耗的gas;根据消耗的gas判断剩余gas是否大于或等于预设阈值;响应于判定剩余gas大于或等于预设阈值,保存该撮合交易;响应于判定没有接收到撮合交易,判断是否收到任意一个撮合执行单元15发送的完成通知,响应于判定收到任意一个撮合执行单元15发送的完成通知,判断是否收到所有撮合执行单元15发送的完成通知。

撮合交易收集单元13还具体用于响应于判定系统时间达到出块截止时间或判定所述剩余gas小于预设阈值,向交易对查询单元11和所有撮合执行单元15发送终止通知;响应于判定收到所有撮合执行单元15发送的完成通知,向交易对查询单元11和所有撮合执行单元15发送终止通知,并返回保存的撮合交易。

具体地,撮合交易收集单元13还用于响应于没有收到所有撮合执行单元15发送的完成通知,判断系统时间是否达到出块截止时间;以及在返回保存的撮合交易后,结束程序。

本实施例提供的交易撮合系统应用于区块链节点,即采用链上撮合的方式,通过并行执行的交易对查询单元11、撮合交易收集单元13与若干撮合执行单元15将不同交易对的撮合并行化,通过并行执行的撮合执行单元15抢占交易对,以及根据抢占到的交易对生成撮合交易,实现并发撮合,即便受到出块时间的限制以及gas花费等限制,仍然能够有效提高链上撮合的效率;通过交易对查询单元11、撮合交易收集单元13与若干撮合执行单元15之间的通知机制,进一步提高并发撮合的可靠性;通过迭代器模式减少性能开销。

如图3所示,本发明实施例还提供了一种交易撮合系统的链上撮合方法,该撮合方法应用于区块链节点,交易撮合系统包括交易对查询单元、撮合交易收集单元以及若干撮合执行单元。所述交易对查询单元、所述撮合交易收集单元与若干所述撮合执行单元并行执行,即交易对查询单元、撮合交易收集单元与每一个撮合执行单元为并行执行的单元。

该撮合方法包括步骤s410-s450。

步骤s410,交易对查询单元查询区块链中的交易对,并将查询到的交易对发送给若干撮合执行单元。

具体地,在区块链中,数据的存储采用轻量级数据库,如leveldb。leveldb支持按照价格进行排序,从而满足委托单按照价格排序的需要。由于内存中可存放的委托单是有限的,因此,采用轻量级的数据库能够有效提高撮合性能。此外,链中已有的交易对也需存入数据库。

结合图4示,步骤s410包括:

步骤s4101、交易对查询单元判断是否收到撮合交易收集单元发送的终止通知。

步骤s4102、响应于判定没有收到撮合交易收集单元发送的终止通知,交易对查询单元查询交易对。

步骤s4103、响应于查询到交易对,交易对查询单元将查询到的交易对发送给所有撮合执行单元。

步骤s4104、响应于没有查询到交易对,交易对查询单元向若干撮合执行单元发送终止通知。

进一步,步骤s4102包括:响应于判定没有收到撮合交易收集单元发送的终止通知,交易对查询单元使用迭代器模式查询交易对。

具体地,交易对查询单元查询到存在下一个交易对时,将查询到的交易对发送给所有撮合执行单元15。

在又一实施例中,步骤s410还包括:交易对查询单元在向所有撮合执行单元发送终止通知后,结束程序。响应于判定收到撮合交易收集单元13发送的终止通知,交易对查询单元结束程序;

步骤s430,每一个撮合执行单元抢占交易对查询单元发送的交易对,根据抢占到的交易对生成撮合交易,并向撮合交易收集单元发送撮合交易。

结合图5所示,步骤s430包括:

步骤s4301、撮合执行单元判断是否收到交易对查询单元发送的终止通知。

步骤s4302、响应于判定没有收到交易对查询单元发送的终止通知,撮合执行单元抢占一个交易对。

步骤s4303、撮合执行单元判断抢占到的交易对是否能撮合一笔交易。

步骤s4304、响应于判定抢占到的交易对能撮合一笔交易,撮合执行单元判断是否收到撮合交易收集单元发送的终止通知。

步骤s4305、响应于判定没有收到撮合交易收集单元发送的终止通知,撮合执行单元生成撮合交易。进一步,s4305包括:响应于判定没有收到撮合交易收集单元发送的终止通知,撮合执行单元使用迭代器模式生成撮合交易。

步骤s4306、撮合执行单元将生成的撮合交易发送给撮合交易收集单元。

在又一实施例中,步骤s430还包括:撮合执行单元响应于判定抢占到的交易对不能撮合一笔交易,跳转至步骤s4301;在将生成的撮合交易发送给撮合交易收集单元后,撮合执行单元跳转至步骤s4303;在向撮合交易收集单元13发送完成通知后,撮合执行单元结束程序。

步骤s450,撮合交易收集单元接收撮合交易,并根据撮合交易返回交易撮合结果。

结合图6所示,步骤s450包括:

步骤s4501、撮合交易收集单元判断系统时间是否达到出块截止时间;

步骤s4502、响应于判定所述系统时间没有达到所述出块截止时间,撮合交易收集单元判断是否接收到撮合交易;

步骤s4503、响应于判定接收到撮合交易,撮合交易收集单元计算接收到的撮合交易消耗的gas值;

步骤s4504、撮合交易收集单元根据消耗的gas值判断剩余gas值是否大于或等于预设阈值;

步骤s4505、响应于判定剩余gas值大于或等于预设阈值,撮合交易收集单元保存接收到的撮合交易;

步骤s4506、响应于判定没有接收到撮合交易,撮合交易收集单元判断是否收到任意一个撮合执行单元发送的完成通知;

步骤s4507、响应于判定收到任意一个撮合执行单元发送的完成通知,撮合交易收集单元判断是否收到所有撮合执行单元发送的完成通知;

步骤s4508、响应于判定系统时间达到出块截止时间或判定剩余gas小于预设阈值,撮合交易收集单元向交易对查询单元和所有撮合执行单元发送终止通知;

步骤s4509、响应于判定收到所有撮合执行单元发送的完成通知,撮合交易收集单元向交易对查询单元和所有撮合执行单元发送终止通知,并返回保存的撮合交易。

在又一实施例中,步骤s450还包括:响应于没有收到所有撮合执行单元发送的完成通知,撮合交易收集单元跳转至步骤s4501。

本实施例通过并行执行的交易对查询单元、撮合交易收集单元与若干撮合执行单元将不同交易对的撮合并行化,通过并发撮合提高链上撮合效率,解决在链上撮合出块时间和gas的限制下撮合效率低的问题;通过交易对查询单元、撮合交易收集单元与若干撮合执行单元之间的通知机制,进一步提高效率;通过迭代器模式减少性能开销。

应该理解的是,虽然图3-图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。

在一个实施例中,提供了一种区块链节点,该区块链节点可以用独立的服务器或者是多个服务器组成的服务器集群来实现,其内部结构图可以如图7所示。该区块链节点包括通过设备总线连接的处理器、存储器、网络接口和数据库。其中,该区块链节点的处理器用于提供计算能力。该区块链节点的存储器包括非易失性计算机可读存储介质、内存储器。该非易失性计算机可读存储介质存储有操作设备、计算机程序和数据库。该内存储器为非易失性计算机可读存储介质中的操作设备和计算机程序的运行提供环境。该区块链节点的数据库用于存储数据。具体地,数据库采用较为轻量级的数据库,如leveldb。该区块链节点的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时实现一种交易撮合系统的链上撮合方法。

本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算设备的限定,具体的计算设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种区块链节点,包括存储器和处理器,存储器中存储有计算机程序,该区块链节点实现交易撮合系统的链上撮合方法:

交易撮合系统包括交易对查询单元、撮合交易收集单元以及若干撮合执行单元:所述交易对查询单元、所述撮合交易收集单元与若干所述撮合执行单元并行执行;所述撮合方法包括:

所述交易对查询单元查询区块链中的交易对,并将查询到的交易对发送给若干撮合执行单元;

每一个所述撮合执行单元抢占所述交易对查询单元发送的交易对,根据抢占到的交易对生成撮合交易,并向所述撮合交易收集单元发送撮合交易;

所述撮合交易收集单元接收撮合交易,并根据接收到的撮合交易返回交易撮合结果。

具体地,撮合交易收集单元返回交易撮合结果,以便写入区块链的新区块。

在一个实施例中,所述交易对查询单元查询交易,并将查询到的交易对发送给若干撮合执行单元,包括:

判断是否收到所述撮合交易收集单元发送的终止通知;

响应于判定没有收到所述撮合交易收集单元发送的终止通知,查询交易对;

响应于查询到交易对,将查询到的交易对发送给所有所述撮合执行单元;

响应于没有查询到交易对,向若干撮合执行单元发送终止通知;

则所述撮合执行单元抢占所述交易对查询单元发送的交易对,根据抢占到的交易对生成撮合交易,并向撮合交易收集单元发送撮合交易,包括:

判断是否收到所述交易对查询单元发送的终止通知;

响应于判定没有收到所述交易对查询单元发送的终止通知,抢占一个交易对;

判断抢占到的交易对是否能撮合一笔交易;

响应于判定抢占到的交易对能撮合一笔交易,判断是否收到所述撮合交易收集单元发送的终止通知;

响应于判定没有收到所述撮合交易收集单元发送的终止通知,生成撮合交易;

将生成的撮合交易发送给所述撮合交易收集单元;

则所述撮合交易收集单元接收撮合交易,并根据接收到的撮合交易返回交易撮合结果,包括:

判断系统时间是否达到出块截止时间;

响应于判定所述系统时间没有达到所述出块截止时间,判断是否接收到撮合交易;

响应于判定接收到撮合交易,计算接收到的撮合交易消耗的gas值;

根据消耗的gas值判断剩余gas值是否大于或等于预设阈值;

响应于判定所述剩余gas值大于或等于所述预设阈值,保存接收到的撮合交易;

响应于判定没有接收到撮合交易,判断是否收到任意一个所述撮合执行单元发送的完成通知;

响应于判定收到任意一个所述撮合执行单元发送的完成通知,判断是否收到所有所述撮合执行单元发送的完成通知;

响应于判定系统时间达到出块截止时间或判定所述剩余gas小于所述预设阈值,向所述交易对查询单元和所有所述撮合执行单元发送终止通知;

响应于判定收到所有所述撮合执行单元发送的完成通知,向所述交易对查询单元和所有所述撮合执行单元发送终止通知,并返回保存的撮合交易。

在一个实施例中,所述响应于判定没有收到所述撮合交易收集单元发送的终止通知,查询交易对,包括:

响应于判定没有收到所述撮合交易收集单元发送的终止通知,使用迭代器模式查询交易对。

在一个实施例中,所述响应于判定没有收到所述撮合交易收集单元发送的终止通知,生成撮合交易,包括:

响应于判定没有收到所述撮合交易收集单元发送的终止通知,使用迭代器模式生成撮合交易。

本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算设备的限定,具体的计算设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取计算机可读存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1