一种混杂模式区块分组的生成、加载方法及装置
技术领域
本申请涉及数字资产交易领域,尤其涉及一种混杂模式区块分组的生成、加载方法及装置。
背景技术
数字资产交易所是为所有交易者提供购买或出售数字资产并兑换成其它资产的实体平台,是连接数字资产投资一级和二级市场的桥梁。数字资产是由一群向往着公正、透明、自由的技术极客们开发的,数字资产本身就是点对点、透明、去中心化的货币信用体系,所以数字资产交易、流通、支付等所需要的环境必然也是要去中心化的。
用户对数字资产享有绝对控制权,交易撮合、清结算在区块链上进行,整个交易过程透明、公开,不可篡改。但是现有技术中,在区块链上进行交易撮合和清结算时,出现订单薄混乱,在每次交易撮合或清结算等数字资产交易中需要对订单薄重新梳理,才可以清晰订单薄的内容,加大交易时的工作量。
所以,如何能使数字资产交易时清晰订单薄的内容,减少交易时的工作量,成为了业内亟待解决的问题。
发明内容
本申请提供了一种混杂模式区块分组的生成、加载方法及装置,以解决现有技术中,数字资产交易时,不清晰订单薄的内容的问题。
第一方面,本申请提供一种混杂模式区块分组的生成方法,所述生成方法包括:
获取有效订单簿的快照,打包成订单快照块,存储在第一区块单元中;
获取阶段订单簿的快照,打包成订单快照差分块,按时间顺序存储在不同的第二区块单元中,所述第一区块单元和第二区块单元组成区块分组;
获取订单请求,打包成订单请求块,存储在第一区块单元中,且位于对应的订单快照块之后,或者存储在第二区块单元中,且位于对应的订单快照差分块之后;
获取撮合引擎的交易撮合结果,将交易撮合结果打包成交易撮合块,存储在第一区块单元或第二区块单元,且位于对应的一个或多个订单请求块之后,所述订单快照块、订单快照差分块、订单请求块和交易撮合块的头部结构均分别包括区块hash值和前一个区块hash值,所述交易撮合块的头部结构还包括订单快照块hash值。
第二方面,本申请提供一种混杂模式区块分组的加载方法,所述加载方法包括:
撮合引擎获取最新区块分组;
加载最新区块分组中第一区块单元中的订单快照块;
依次加载每个第二区块单元中的订单快照差分块;
加载第一区块单元或第二区块单元中的订单请求块和交易撮合块;
利用加载后的订单请求块和交易撮合块排序、订单快照块和订单快照差分块,更新订单薄。
结合第二方面,在第二方面的第一种可能的实现方式中,所述依次加载每个第二区块单元中的订单快照差分块的步骤包括:
按顺序加载一个第二区块单元中的订单快照差分块;
判断最新区块分组中是否存在未被加载订单快照差分块的第二区块单元;
如果最新区块分组中存在未被加载订单快照差分块的第二区块单元,重复执行按顺序加载一个第二区块单元中的订单快照差分块,直至最新区块分组中不存在未被加载订单快照差分块的第二区块单元。
第三方面,本申请提供一种混杂模式区块分组的生成装置,所述生成装置包括:
第一打包单元,用于获取有效订单簿的快照,打包成订单快照块,存储在第一区块单元中;
第二打包单元,用于获取阶段订单簿的快照,打包成订单快照差分块,按时间顺序存储在不同的第二区块单元中,所述第一区块单元和第二区块单元组成区块;
第三打包单元,用于获取订单请求,打包成订单请求块,存储在第一区块单元中,且位于对应的订单快照块之后,或者存储在第二区块单元中,且位于对应的订单快照差分块之后;
第四打包单元,用于获取撮合引擎的交易撮合结果,将交易撮合结果打包成交易撮合块,存储在第一区块单元或第二区块单元,且位于对应的一个或多个订单请求块之后,所述订单快照块、订单快照差分块、订单请求块和交易撮合块的头部结构均分别包括区块hash值和前一个区块hash值,所述交易撮合块的头部结构还包括订单快照块hash值。
第四方面,本申请提供一种混杂模式区块分组的加载装置,所述加载装置包括:
获取单元,用于撮合引擎获取最新区块分组;
第一加载单元,用于加载最新区块分组中第一区块单元中的订单快照块;
第二加载单元,用于依次加载每个第二区块单元中的订单快照差分块;
第三加载单元,用于加载第一区块单元或第二区块单元中的订单请求块和交易撮合块;
更新单元,用于利用加载后的订单请求块和交易撮合块排序、订单快照块和订单快照差分块,更新订单薄。
结合第四方面,在第四方面的第一种可能的实现方式中,所述第二加载单元包括:
第四加载单元,用于按顺序加载一个第二区块单元中的订单快照差分块;
判断单元,用于判断最新区块分组中是否存在未被加载订单快照差分块的第二区块单元;
第五加载单元,用于如果最新区块分组中存在未被加载订单快照差分块的第二区块单元,重复执行按顺序加载一个第二区块单元中的订单快照差分块,直至最新区块分组中不存在未被加载订单快照差分块的第二区块单元。
第五方面,本申请提供一种服务器,被配置为:
获取有效订单簿的快照,打包成订单快照块,存储在第一区块单元中;
获取阶段订单簿的快照,打包成订单快照差分块,按时间顺序存储在不同的第二区块单元中,所述第一区块单元和第二区块单元组成区块分组;
获取订单请求,打包成订单请求块,存储在第一区块单元中,且位于对应的订单快照块之后,或者存储在第二区块单元中,且位于对应的订单快照差分块之后;
获取撮合引擎的交易撮合结果,将交易撮合结果打包成交易撮合块,存储在第一区块单元或第二区块单元,且位于对应的一个或多个订单请求块之后,所述订单快照块、订单快照差分块、订单请求块和交易撮合块的头部结构均分别包括区块hash值和前一个区块hash值,所述交易撮合块的头部结构还包括订单快照块hash值。
第六方面,本申请提供一种服务器,被配置为:
撮合引擎获取最新区块分组;
加载最新区块分组中第一区块单元中的订单快照块;
依次加载每个第二区块单元中的订单快照差分块;
加载第一区块单元或第二区块单元中的订单请求块和交易撮合块;
利用加载后的订单请求块和交易撮合块排序、订单快照块和订单快照差分块,更新订单薄。
由以上技术方案可知,本申请的一种混杂模式区块分组的生成、加载方法及装置,所述生成方法包括:获取有效订单簿的快照,打包成订单快照块,存储在第一区块单元中;获取阶段订单簿的快照,打包成订单快照差分块,按时间顺序存储在不同的第二区块单元中,所述第一区块单元和第二区块单元组成区块分组;获取订单请求,打包成订单请求块,存储在第一区块单元中,且位于对应的订单快照块之后,或者存储在第二区块单元中,且位于对应的订单快照差分块之后;获取撮合引擎的交易撮合结果,将交易撮合结果打包成交易撮合块,存储在第一区块单元或第二区块单元,且位于对应的一个或多个订单请求块之后,所述订单快照块、订单快照差分块、订单请求块和交易撮合块的头部结构均分别包括区块hash值和前一个区块hash值,所述交易撮合块的头部结构还包括订单快照块hash值。在生成方法中,在区块分组中有序的存储订单薄,以便在每次交易撮合或清结算等数字资产交易中快速的达成交易。在加载方法中,撮合引擎按照最新区块分组中存储的订单快照块、订单快照差分块、订单请求块和交易撮合块的顺序加载订单薄,可以避免撮合结果混乱的情况发生。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种混杂模式区块分组的生成方法的实施例的流程图;
图2为本申请提供的区块分组的结构示意图;
图3为本申请提供的区块单元的结构示意图;
图4为本申请提供的一种混杂模式区块分组的加载方法第一实施例的流程图;
图5为本申请提供的未排序的区块单元;
图6为本申请提供的将图5中的区块单元排序后的区块单元;
图7为本申请提供的一种混杂模式区块分组的加载方法第二实施例的流程图;
图8为本申请提供的一种混杂模式区块分组的生成装置的结构示意图;
图9为本申请提供的一种混杂模式区块分组的加载装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下结合附图,详细说明本申请各实施例提供的技术方案。
现有技术中,在区块链上进行交易撮合和清结算时,出现订单薄混乱,在每次交易撮合或清结算等数字资产交易中需要对订单薄重新梳理,才可以清晰订单薄的内容,加大交易时的工作量。
请参阅图1,为本申请提供的一种混杂模式区块分组的生成方法的实施例的流程图,所述生成方法包括:
步骤S100、获取有效订单簿的快照,打包成订单快照块,存储在第一区块单元中;
本申请实施例将订单薄存储在区块中,所述区块存储在区块链的节点上。所述区块包括订单快照块、订单快照差分块、订单请求块和交易撮合块。
具体的,订单薄中存储数字资产交易订单数据,例如,订单类型(市价单、限价单、止损单、止损限价单等)、订单时间、时效性、价格和数量等。
本申请实施例中,有效订单薄是指在订单失效期内,没有过期的数字资产交易订单数据。另外,有效订单薄的快照是指某时刻有效订单薄的完整备份。
步骤S200、获取阶段订单簿的快照,打包成订单快照差分块,按时间顺序存储在不同的第二区块单元中,所述第一区块单元和第二区块单元组成区块分组;
具体的,阶段订单薄的快照是指新增的订单薄的备份,举例来说,有效订单薄的快照是指每周固定时间进行一次全备份,而阶段订单薄的快照是指每天进行的增量备份。阶段订单薄是有效订单薄的变化数据集。
步骤S300、获取订单请求,打包成订单请求块,存储在第一区块单元中,且位于对应的订单快照块之后,或者存储在第二区块单元中,且位于对应的订单快照差分块之后;
具体的,所述订单快照块和订单快照差分块分别是订单请求块的累计,当存在多个订单请求块时会归档为订单快照块或订单快照差分块。所以,订单请求块可以存储在与订单快照块对应的第一区块单元中,也可以存储在与订单快照差分块的第二区块单元中。
区块链接收到的订单请求,经节点确认后打包成订单请求块,所述订单请求可以为买方的订单请求或卖方的订单请求。
步骤S400、获取撮合引擎的交易撮合结果,将交易撮合结果打包成交易撮合块,存储在第一区块单元或第二区块单元,且位于对应的一个或多个订单请求块之后,所述订单快照块、订单快照差分块、订单请求块和交易撮合块的头部结构均分别包括区块hash值和前一个区块hash值,所述交易撮合块的头部结构还包括订单快照块hash值。
具体的,撮合引擎将当前订单进行撮合匹配,匹配后的结果打包成交易撮合块。交易撮合块的数量不多于订单请求块的数量,交易撮合块是对之前一个或者多个订单请求的撮合结果。
为了使订单薄更加清晰,本申请实施例提供一种混杂模式区块分组的生成方法,所述区块分组(GOB,group of block)包括第一区块单元(session1)和若干第二区块单元(session2),所述第一区块单元(session1)中存储订单快照块(S块),订单请求块(R块)和与订单请求块对应的交易撮合块(M块),所述第二区块单元(session2)中存储订单快照差分块(Sd块),订单请求块(R块)和与订单请求块对应的交易撮合块(M块)。S块、Sd块、R块和M块均为区块。区块结构中增加R块hash值,用于M块保存前驱R块的hash值。区块分组的结构如下图2所示,图3是一个区块单元的的结构示意图,该区块单元(session)的第一个区块为S块或Sd块,后面区块有多个R块和M块,并且M块数量不多于R块数量,本申请实施例可以一个R块产生一个M块,也可以多个R块产生一个M块。所述S块、Sd块、R块和M块的头部结构均分别包括区块hash值(Hash)和前一个区块hash值(Preblock hash),所述M块的头部结构还包括与M块对应的订单快照块hash值(R block hash)。
再次参阅图3,第四个区块为M块,由第二个区块R块产生,两个区块之间可以间隔一个或多个R块。第六个区块为M块,由于第四个区块M块是第二个区块R块的匹配结果,第三个区块R块和第五个区块R块之后的M块只有第六个区块,所以第六个区块M块是第三个区块R块和第五个区块R块的撮合结果。
由以上实施例可知,本申请的一种混杂模式区块分组的生成方法实施例,获取有效订单簿的快照,打包成订单快照块,存储在第一区块单元中;获取阶段订单簿的快照,打包成订单快照差分块,按时间顺序存储在不同的第二区块单元中,所述第一区块单元和第二区块单元组成区块分组;获取订单请求,打包成订单请求块,存储在第一区块单元中,且位于对应的订单快照块之后,或者存储在第二区块单元中,且位于对应的订单快照差分块之后;获取撮合引擎的交易撮合结果,将交易撮合结果打包成交易撮合块,存储在第一区块单元或第二区块单元,且位于对应的一个或多个订单请求块之后,所述订单快照块、订单快照差分块、订单请求块和交易撮合块的头部结构均分别包括区块hash值和前一个区块hash值,所述交易撮合块的头部结构还包括订单快照块hash值。本申请实施例中,有序的存储订单薄,以便在每次交易撮合或清结算等数字资产交易中快速的达成交易,为实现去中心化交易进行链上撮合、清结算、实现交易快速达成提供一种解决方案,并使用区块链技术实现了订单的有序化。
参阅图4,为本申请提供的一种混杂模式区块分组的加载方法第一实施例的流程图,所述加载方法包括:
步骤S500、撮合引擎获取最新区块分组;
具体的,区块链的每个节点会有多个区块分组,所以需要找到最新的。每个节点的多个区块分组都是相同的内容。
本申请实施例,混杂模式区块分组适合多交易对多撮合引擎的场景。
步骤S600、加载最新区块分组中第一区块单元中的订单快照块;
步骤S700、依次加载每个第二区块单元中的订单快照差分块;
需要说明的是,获得最新区块分组中的订单快照块和订单快照差分块,合并变更即获得当前最新的订单薄,撮合引擎可以直接使用。如果撮合引擎不将订单薄加载至最新,将导致撮合结果混乱。
步骤S800、加载第一区块单元或第二区块单元中的订单请求块和交易撮合块。
步骤S900、利用加载后的订单请求块和交易撮合块排序、订单快照块和订单快照差分块,更新订单薄。
本申请实施例中,订单请求块和交易撮合块的排序方法是,将交易撮合块移动到匹配的订单请求块之后,对新排序的区块进行解析,如图5所示,图5是未排序的区块单元,图6是排序后的区块单元,由于在区块单元中,第四个区块M块是第二个区块R块的撮合结果,第六个M块是第三个区块R块和第五个区块R块的撮合结果,所以将排序后,将第四个区块M块移动到第二个区块R块之后,第六个区块M块是第三个区块R块和第五个区块R块的撮合结果,将第六个区块M块放在第五个区块R块之后。
由以上实施例可知,本申请的一种混杂模式区块分组的加载方法第一实施例,步骤S500、撮合引擎获取最新区块分组;步骤S600、加载最新区块分组中第一区块单元中的订单快照块;步骤S700、依次加载每个第二区块单元中的订单快照差分块;步骤S800、加载第一区块单元或第二区块单元中的订单请求块和交易撮合块。步骤S900、利用加载后的订单请求块和交易撮合块排序、订单快照块和订单快照差分块,更新订单薄。本申请实施例中,撮合引擎加载最新区块分组中存储的订单快照块、订单快照差分块、订单请求块和交易撮合块后,排序所述订单请求块和交易撮合块,最终实现加载订单薄,可以避免撮合结果混乱的情况发生。
参阅图7,为本申请提供的一种混杂模式区块分组的加载方法第二实施例的流程图,该第二实施例与第一实施例的不同之处在于,所述依次加载每个第二区块单元中的订单快照差分块的步骤包括:
步骤S701、按顺序加载一个第二区块单元中的订单快照差分块;
步骤S702、判断最新区块分组中是否存在未被加载订单快照差分块的第二区块单元;
步骤S703、如果最新区块分组中存在未被加载订单快照差分块的第二区块单元,重复执行按顺序加载一个第二区块单元中的订单快照差分块,直至最新区块分组中不存在未被加载订单快照差分块的第二区块单元。
由以上实施例可知,本申请的一种混杂模式区块分组的加载方法第二实施例,本申请实施例中,在订单快照块后逐个加载订单快照差分块。如果最新区块分组中存在未被加载订单快照差分块的第二区块单元,则继续按顺序加载下一个第二区块单元中的订单快照差分块,直至最新区块分组中不存在未被加载订单快照差分块的第二区块单元。此时,撮合引擎加载至最新订单薄状态,进入准备撮合状态。
参阅图8,为本申请提供的一种混杂模式区块分组的生成装置的结构示意图,所述生成装置包括:第一打包单元100,用于获取有效订单簿的快照,打包成订单快照块,存储在第一区块单元中;第二打包单元200,用于获取阶段订单簿的快照,打包成订单快照差分块,按时间顺序存储在不同的第二区块单元中,所述第一区块单元和第二区块单元组成区块;第三打包单元300,用于获取订单请求,打包成订单请求块,存储在第一区块单元中,且位于对应的订单快照块之后,或者存储在第二区块单元中,且位于对应的订单快照差分块之后;第四打包单元400,用于获取撮合引擎的交易撮合结果,将交易撮合结果打包成交易撮合块,存储在第一区块单元或第二区块单元,且位于对应的一个或多个订单请求块之后,所述订单快照块、订单快照差分块、订单请求块和交易撮合块的头部结构均分别包括区块hash值和前一个区块hash值,所述交易撮合块的头部结构还包括订单快照块hash值。
参阅图9,为本申请提供的一种混杂模式区块分组的加载装置,所述加载装置包括:获取单元500,用于撮合引擎获取最新区块分组;第一加载单元600,用于加载最新区块分组中第一区块单元中的订单快照块;第二加载单元700,用于依次加载每个第二区块单元中的订单快照差分块;第三加载单元800,用于加载第一区块单元或第二区块单元中的订单请求块和交易撮合块;更新单元900,用于利用加载后的订单请求块和交易撮合块排序、订单快照块和订单快照差分块,更新订单薄。
在本申请提供得一种混杂模式区块分组的加载装置的另一实施例中,所述第二加载单元包括:第四加载单元,用于按顺序加载一个第二区块单元中的订单快照差分块;判断单元,用于判断最新区块分组中是否存在未被加载订单快照差分块的第二区块单元;第五加载单元,用于如果最新区块分组中存在未被加载订单快照差分块的第二区块单元,重复执行按顺序加载一个第二区块单元中的订单快照差分块,直至最新区块分组中不存在未被加载订单快照差分块的第二区块单元。
本申请提供一种服务器,被配置为:获取有效订单簿的快照,打包成订单快照块,存储在第一区块单元中;获取阶段订单簿的快照,打包成订单快照差分块,按时间顺序存储在不同的第二区块单元中,所述第一区块单元和第二区块单元组成区块分组;获取订单请求,打包成订单请求块,存储在第一区块单元中,且位于对应的订单快照块之后,或者存储在第二区块单元中,且位于对应的订单快照差分块之后;获取撮合引擎的交易撮合结果,将交易撮合结果打包成交易撮合块,存储在第一区块单元或第二区块单元,且位于对应的一个或多个订单请求块之后,所述订单快照块、订单快照差分块、订单请求块和交易撮合块的头部结构均分别包括区块hash值和前一个区块hash值,所述交易撮合块的头部结构还包括订单快照块hash值。
第六方面,本申请提供一种服务器,被配置为:撮合引擎获取最新区块分组;加载最新区块分组中第一区块单元中的订单快照块;依次加载每个第二区块单元中的订单快照差分块;加载第一区块单元或第二区块单元中的订单请求块和交易撮合块;利用加载后的订单请求块和交易撮合块排序、订单快照块和订单快照差分块,更新订单薄。
具体实现中,本申请还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的数字资产地址转移的进程提示方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:Read-OnlyMemory,简称:ROM)或随机存储记忆体(英文:Random Access Memory,简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于用于身份认证的安全网络中间件及其实现方法和装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。