基于区块链的交易缓冲/加速方法及区块链交易处理系统与流程

文档序号:15935388发布日期:2018-11-14 02:18阅读:283来源:国知局

本发明涉及,特别涉及一种基于区块链的交易缓冲/加速方法及区块链交易处理系统。

背景技术

区块链技术具备去中心化、信息不可篡改性等特点,运用区块链技术可实现多方参与的交易事件(例如,转账交易、支付交易等),例如,银行a与银行b在区块链上进行交易,那么该区块链上所有其他节点都会知晓这笔交易,其他参与方可以一起参与确认交易准确性,防止信息的篡改。进一步地,区块链本质上是一个基于智能合约的分布式的数据库,区块链上面的信息就会被p2p(peer-to-peer,对等)网络分享到所有节点上去。

然而,现有的区块链数据交易系统架构中,交易操作共识的形成、交易数据在各个节点的读操作及/或写操作均过份依赖于智能合约的参与,区块链tps(transactionpersecond,每秒执行的事务或者交易的数量)过低从而严重限制了整体区块链的交易处理速度。



技术实现要素:

本发明的主要目的在于解决现有区块链tps过低,严重限制整体区块链的交易处理速度的问题。

为实现上述目的,本发明提出的一种基于区块链的交易缓冲/加速方法,该方法包括以下步骤:

当用户通过区块链网络层一个区块链节点在应用层发起一个带有交易参数的交易请求时,所述区块链上的智能合约对该交易请求的交易参数进行参数合法性校验;

当通过参数合法性校验,则该智能合约将该交易请求发送给交易缓冲/加速子系统进行交易处理,所述交易缓冲/加速子系统将交易处理结果通过异步方式写入区块链存储层中的存储区块。

优选地所述交易缓冲/加速子系统将交易处理结果通过异步方式写入区块链存储层中的存储区块的步骤包括:

定时将所有待入链存储的所述交易处理结果按照生成时间的先后顺序进行排序;

当所有待入链存储的所述交易处理结果的数量小于或者等于第一阈值数量时,按照排序顺序,将待入链存储的所述交易处理结果写入所述区块链存储层中的存储区块;

当所有待入链存储的所述交易处理结果的数量大于第一阈值数量时,将排序在前的第一阈值数量的待入链存储的所述交易处理结果,按照排序顺序写入所述区块链存储层中的存储区块,对剩余的待入链存储的所述交易处理结果进行缓存。

优选地,所述交易缓冲/加速子系统将交易处理结果通过异步方式写入区块链存储层中的存储区块的步骤包括:

当所述交易缓冲/加速子系统生成一个交易处理结果,则将该交易处理结果加入一个预先生成的入链存储结果队列,该入链存储结果队列用于缓存所有待入链存储的所述交易处理结果,该入链存储结果队列中的所有待入链存储的所述交易处理结果按照生成时间的先后顺序进行排序;

定时对该入链存储结果队列中的待入链存储的所述交易处理结果启动入链存储操作,并在启动所述入链存储操作后,判断该入链存储结果队列中的所有待入链存储的所述交易处理结果的数量是否小于第一阈值数量;

当所有待入链存储的所述交易处理结果的数量小于或者等于第一阈值数量时,按照排序顺序,将待入链存储的所述交易处理结果写入所述区块链存储层中的存储区块;

当所有待入链存储的所述交易处理结果的数量大于第一阈值数量时,将排序在前的第一阈值数量的待入链存储的所述交易处理结果,按照排序顺序写入所述区块链存储层中的存储区块,对剩余的待入链存储的所述交易处理结果继续进行缓存。

优选地,所述交易缓冲/加速子系统包括多个数据库群组,包含在所述智能合约中并与各个所述数据库群组通信的所述数据操作接口,及与所述数据操作接口通信的控制中心,其中:

每一个所述数据库群组分别包括与所述数据操作接口通信的集群负载均衡器,与所述集群负载均衡器通信的代理服务器群组,与所述代理服务器群组通信的第一备数据库和主数据库负载均衡器,与所述主数据库负载均衡器通信的主数据库,及与所述主数据库通信的第二备数据库,一个数据库群组的第一备数据库与另一个数据库群组的第二备数据库通信;

所述控制中心用于向所述智能合约下发用户群组分片规则;

所述智能合约用于在所述区块链上的一个节点发起带有交易方预设标识信息的数据交易请求后,调用所述数据操作接口,以根据所述控制中心下发的所述用户群组分片规则,确定该交易方预设标识信息对应的数据库群组及该数据交易请求对应的数据库群组下的数据库,并将该数据交易请求经由确定的所述数据库群组的代理服务器群组发送给确定的所述数据库进行数据读操作或写操作。

优选地,所述用户群组分片规则包括:

预先确定各个所述数据库群组与各个所述交易方预设标识信息的映射关系;

根据预先确定的各个所述数据库群组与各个所述交易方预设标识信息的映射关系,确定出所述数据交易请求的交易方预设标识信息对应的数据库群组;

根据预先确定的所述数据交易请求类型与所述数据库的映射关系,确定所述数据交易请求对应的数据库。

优选地,所述控制中心还用于:

当一个数据库群组发生异常时,将该数据库群组从数据交易请求服务队列中下线,将与该数据库群组中的第一备数据库通信的另一个数据库群组中的第二备数据库调整为主数据库,代为对该数据库群组对应的数据交易请求进行响应;

当该数据库群组恢复正常时,将另一个数据库群组中的第二备数据库中的数据同步给该数据库群组中的第一备数据库、第二备数据库及主数据库,并将该数据库群组加入到所述数据交易请求服务队列中上线。

优选地,所述主数据库负载均衡器还用于:

当一个数据库群组的主数据库发生异常时,将该数据库群组的原第二备数据库切换为该数据库群组的主数据库,代为对该主数据库对应的数据交易请求进行响应;

当该主数据库恢复正常时,将该主数据库作为新第二备数据库,切换为原第二备数据库的备数据库,并将原第二备数据库的数据同步给新第二备数据库。

此外,为实现上述目的,本发明提供一种区块链交易处理系统,该区块链交易处理系统适用于基于区块链的交易缓冲/加速方法,所述区块链交易处理系统包括智能合约及交易缓冲/加速子系统;其中:

所述智能合约,用于当用户通过区块链网络层一个区块链节点在应用层发起一个带有交易参数的交易请求时,对该交易请求的交易参数进行参数合法性校验;当通过参数合法性校验,则将该交易请求发送给交易缓冲/加速子系统进行交易处理;

所述交易缓冲/加速子系统,用于接收所述智能合约发送的交易请求,并根据接收的所述交易请求进行交易处理,并将交易处理结果通过异步方式写入区块链存储层中的存储区块。

优选地,所述交易缓冲/加速子系统还用于:

定时将所有待入链存储的所述交易处理结果按照生成时间的先后顺序进行排序;

当所有待入链存储的所述交易处理结果的数量小于或者等于第一阈值数量时,按照排序顺序,将待入链存储的所述交易处理结果写入所述区块链存储层中的存储区块;

当所有待入链存储的所述交易处理结果的数量大于第一阈值数量时,将排序在前的第一阈值数量的待入链存储的所述交易处理结果,按照排序顺序写入所述区块链存储层中的存储区块,对剩余的待入链存储的所述交易处理结果进行缓存。

优选地,所述交易缓冲/加速子系统还用于:

生成一个交易处理结果,则将该交易处理结果加入一个预先生成的入链存储结果队列,该入链存储结果队列用于缓存所有待入链存储的所述交易处理结果,该入链存储结果队列中的所有待入链存储的所述交易处理结果按照生成时间的先后顺序进行排序;

定时对该入链存储结果队列中的待入链存储的所述交易处理结果启动入链存储操作,并在启动所述入链存储操作后,判断该入链存储结果队列中的所有待入链存储的所述交易处理结果的数量是否小于第一阈值数量;

当所有待入链存储的所述交易处理结果的数量小于或者等于第一阈值数量时,按照排序顺序,将待入链存储的所述交易处理结果写入所述区块链存储层中的存储区块;

当所有待入链存储的所述交易处理结果的数量大于第一阈值数量时,将排序在前的第一阈值数量的待入链存储的所述交易处理结果,按照排序顺序写入所述区块链存储层中的存储区块,对剩余的待入链存储的所述交易处理结果继续进行缓存。

本发明通过在区块链网络层,为各个区块链节点配置交易缓冲/加速子系统,大幅提高了区块链tps,并且对需入链存储的交易数据实现异步入链作业,大幅提高了交易数据入链操作的平稳性,有效支撑了高区块链tps。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。

图1为本发明基于区块链的交易缓冲/加速方法第一实施例的流程示意图;

图2为本发明交易缓冲/加速子系统的系统架构示意图;

图3为本发明区块链交易处理系统第一实施例的系统架构示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,图1为本发明基于区块链的交易缓冲/加速方法第一实施例的流程示意图。

本实施例中,该方法包括:

步骤s10,当用户通过区块链网络层一个区块链节点在应用层发起一个带有交易参数的交易请求时,区块链上的智能合约对该交易请求的交易参数进行参数合法性校验;

上述交易参数包括转出账户地址、转入账户地址、转账金额、转出手续费、转出账户的nonce(numberonce)值、交易签名等。

上述智能合约对交易请求的交易参数进行参数合法性校验,若通过参数合法性校验,则执行步骤s20,若未通过参数合法性校验,则不执行步骤s20。具体的参数合法性校验的方法可举例为:若转出账号不符合预设账号规则,则确定交易参数非法;若转入账号不符合预设账号规则,则确定交易参数非法;若转出账号在预先确定的黑名单中,则确定交易参数非法。

步骤s20,当通过参数合法性校验,则该区块链上的智能合约将该交易请求发送给交易缓冲/加速子系统进行交易处理,所述交易缓冲/加速子系统将交易处理结果通过异步方式写入区块链存储层中的存储区块。

优选地,本实施例中,上述交易缓冲/加速子系统将交易处理结果通过异步方式写入区块链存储层中的存储区块的步骤可具体为:

定时将所有待入链存储的交易处理结果按照生成时间的先后顺序进行排序;

当所有待入链存储的交易处理结果的数量小于或者等于第一阈值数量时,按照排序顺序,将待入链存储的交易处理结果写入区块链存储层中的存储区块;

当所有待入链存储的交易处理结果的数量大于第一阈值数量时,将排序在前的第一阈值数量的待入链存储的交易处理结果,按照排序顺序写入区块链存储层中的存储区块,对剩余的待入链存储的交易处理结果进行缓存。

优选地,本实施例中,上述交易缓冲/加速子系统将交易处理结果通过异步方式写入区块链存储层中的存储区块的步骤可具体为:

当交易缓冲/加速子系统生成一个交易处理结果,则将该交易处理结果加入一个预先生成的入链存储结果队列,该入链存储结果队列用于缓存所有待入链存储的交易处理结果,该入链存储结果队列中的所有待入链存储的交易处理结果按照生成时间的先后顺序进行排序;

定时对该入链存储结果队列中的待入链存储的交易处理结果启动入链存储操作,并在启动入链存储操作后,判断该入链存储结果队列中的所有待入链存储的交易处理结果的数量是否小于第一阈值数量;

当所有待入链存储的交易处理结果的数量小于或者等于第一阈值数量时,按照排序顺序,将待入链存储的交易处理结果写入区块链存储层中的存储区块;

当所有待入链存储的交易处理结果的数量大于第一阈值数量时,将排序在前的第一阈值数量的待入链存储的交易处理结果,按照排序顺序写入区块链存储层中的存储区块,对剩余的待入链存储的交易处理结果继续进行缓存。

本实施例通过在区块链网络层(即:p2p(peer-to-peer,对等)网络层),为各个区块链节点配置交易缓冲/加速子系统,大幅提高了区块链tps,并且对需入链存储的交易数据实现异步入链作业,大幅提高了交易数据入链操作的平稳性,有效支撑了高区块链tps。

如图2所示,图2为本发明交易缓冲/加速子系统的系统架构图。

需要注意的是,图2中仅示出两个数据库群组210,并不意味着限定数据库群组210为两个,本发明对数据库群组210的数量不作限定,此外,代理服务器群组212中可包含多个代理服务器(图中未示出)。

本发明基于区块链的交易缓冲/加速方法第二实施例中,所述交易缓冲/加速子系统包括多个数据库群组210,包含在智能合约中并与各个数据库群组210通信的数据操作接口200(例如api,applicationprogramminginterface,应用程序编程接口),及与数据操作接口200通信的控制中心220,其中:

每一个数据库群组210分别包括与数据操作接口200通信的集群负载均衡器211(lvs),与集群负载均衡器211通信的代理服务器(dbproxy)群组212,与代理服务器群组212通信的第一备数据库214(slave)和主数据库负载均衡器213(haproxy),与主数据库负载均衡器213通信的主数据库215(master),及与主数据库215通信的第二备数据库216,一个数据库群组210的第一备数据库214与另一个数据库群组210的第二备数据库216通信;

控制中心220用于向智能合约下发用户群组分片规则;

智能合约用于在区块链上的一个节点发起带有交易方预设标识信息的数据交易请求后,调用数据操作接口200,以根据从控制中心220预先下发的用户群组分片规则,确定该交易方预设标识信息对应的数据库群组210及该数据交易请求对应的数据库群组210下的数据库,并将该数据交易请求经由确定的数据库群组210代理服务器群组212发送给确定的数据库进行数据读操作或写操作。

上述交易方预设标识信息可以是用户标识信息(例如,用户账户名),上述智能合约调用数据操作接口200的作用在于通过调用数据操作接口200,将该交易请求发送给交易缓冲/加速子系统进行交易处理。

优选地,本实施例中,所述用户群组分片规则包括:

预先确定各个数据库群组210与各个交易方预设标识信息的映射关系;

例如,各个数据库群组210可以分别对应一个不同的交易方预设标识信息集合,各个交易方预设标识信息集合中包括一个或多个交易方预设标识信息。

根据预先确定的各个数据库群组210与各个交易方预设标识信息的映射关系,确定出数据交易请求的交易方预设标识信息对应的数据库群组210;

根据预先确定的数据交易请求类型与数据库的映射关系,确定数据交易请求对应的数据库。

例如,数据读操作请求对应的数据库可以为第一备数据库214;数据写操作请求对应的数据库可以为主数据库215。

优选地,本实施例中,所述控制中心220还用于:

当一个数据库群组210发生异常时,将该数据库群组210从数据交易请求服务队列中下线,将与该数据库群组210中的第一备数据库214通信的另一个数据库群组210中的第二备数据库216调整为主数据库215,代为对该数据库群组210对应的数据交易请求进行响应;

上述对一数据库群组210发生异常的判断可具体为:若一个数据库群组210无法完成正常的数据读操作及/或写操作,则确定该数据库群组210发生异常。

当该数据库群组210恢复正常时,将另一个数据库群组210中的第二备数据库216中的数据同步给该数据库群组210中的第一备数据库214、第二备数据库216及主数据库215,并将该数据库群组210加入到数据交易请求服务队列中上线。

本实施例的控制中心220可在数据库群组210间动态的调整主数据库215,在当一数据库群组210发生异常时,可将另一数据库群组210中的第二备数据库216调整为主数据库215,当发生异常的数据库群组210恢复正常时,又重新启用该数据库群组210,从而在数据库组发生异常时,可自主快速的恢复服务。

优选地,本实施例中,所述主数据库负载均衡器213还用于:

当一个数据库群组210的主数据库215发生异常时,将该数据库群组210的原第二备数据库216切换为该数据库群组210的主数据库215,代为对该主数据库215对应的数据交易请求进行响应;

当该主数据库215恢复正常时,将该主数据库215作为新第二备数据库216,切换为原第二备数据库216的备数据库,并将原第二备数据库216的数据同步给新第二备数据库216。

本实施例的主数据库负载均衡器213可实现在一数据库群组210中动态调整主数据库215,从而在主数据库215发生异常时,可自主快速的恢复服务。

此外,本发明还提出一种区块链交易处理系统,该区块链交易处理系统适用于基于区块链的交易缓冲/加速方法。

如图3所示,图3为本发明区块链交易处理系统1第一实施例系统架构示意图。

本实施例中,所述区块链交易处理系统1包括智能合约10及交易缓冲/加速子系统20;

所述智能合约10,用于当用户通过区块链网络层一个区块链节点在应用层发起一个带有交易参数的交易请求时,对该交易请求的交易参数进行参数合法性校验;当通过参数合法性校验,则将该交易请求发送给交易缓冲/加速子系统20进行交易处理;

所述交易缓冲/加速子系统20,用于接收所述智能合约10发送的交易请求,并根据接收的所述交易请求进行交易处理,并将交易处理结果通过异步方式写入区块链存储层中的存储区块。

上述交易参数包括转出账户地址、转入账户地址、转账金额、转出手续费、转出账户的nonce(numberonce)值、交易签名等。

上述智能合约10对交易请求的交易参数进行参数合法性校验,若通过参数合法性校验,则调用交易缓冲/加速子系统20,若未通过参数合法性校验,则不调用调用交易缓冲/加速子系统20。具体的参数合法性校验的方法可举例为:若转出账号不符合预设账号规则,则确定交易参数非法;若转入账号不符合预设账号规则,则确定交易参数非法;若转出账号在预先确定的黑名单中,则确定交易参数非法。

优选地,本实施例中,上述交易缓冲/加速子系统20还用于:

定时将所有待入链存储的交易处理结果按照生成时间的先后顺序进行排序;

当所有待入链存储的交易处理结果的数量小于或者等于第一阈值数量时,按照排序顺序,将待入链存储的交易处理结果写入区块链存储层中的存储区块;

当所有待入链存储的交易处理结果的数量大于第一阈值数量时,将排序在前的第一阈值数量的待入链存储的交易处理结果,按照排序顺序写入区块链存储层中的存储区块,对剩余的待入链存储的交易处理结果进行缓存。

优选地,本实施例中,上述交易缓冲/加速子系统20还用于:

当生成一个交易处理结果,则将该交易处理结果加入一个预先生成的入链存储结果队列,该入链存储结果队列用于缓存所有待入链存储的交易处理结果,该入链存储结果队列中的所有待入链存储的交易处理结果按照生成时间的先后顺序进行排序;

定时对该入链存储结果队列中的待入链存储的交易处理结果启动入链存储操作,并在启动入链存储操作后,判断该入链存储结果队列中的所有待入链存储的交易处理结果的数量是否小于第一阈值数量;

当所有待入链存储的交易处理结果的数量小于或者等于第一阈值数量时,按照排序顺序,将待入链存储的交易处理结果写入区块链存储层中的存储区块;

当所有待入链存储的交易处理结果的数量大于第一阈值数量时,将排序在前的第一阈值数量的待入链存储的交易处理结果,按照排序顺序写入区块链存储层中的存储区块,对剩余的待入链存储的交易处理结果继续进行缓存。

本实施例通过在区块链网络层,为各个区块链节点配置交易缓冲/加速子系统20,大幅提高了区块链tps,并且对需入链存储的交易数据实现异步入链作业,大幅提高了交易数据入链操作的平稳性,有效支撑了高区块链tps。

请同时参照图2,本发明区块链交易处理系统1第二实施例中,所述交易缓冲/加速子系统20包括多个数据库群组210,包含在智能合约10中并与各个数据库群组210通信的数据操作接口200(例如api,applicationprogramminginterface,应用程序编程接口),及与数据操作接口200通信的控制中心220,其中:

每一个数据库群组210分别包括与数据操作接口200通信的集群负载均衡器211(lvs),与集群负载均衡器211通信的代理服务器(dbproxy)群组212,与代理服务器群组212通信的第一备数据库214(slave)和主数据库负载均衡器213(haproxy),与主数据库负载均衡器213通信的主数据库215(master),及与主数据库215通信的第二备数据库216,一个数据库群组210的第一备数据库214与另一个数据库群组210的第二备数据库216通信;

控制中心220用于向智能合约10下发用户群组分片规则;

智能合约10用于在区块链上的一个节点发起带有交易方预设标识信息的数据交易请求后,调用数据操作接口200,以根据从控制中心220预先下发的用户群组分片规则,确定该交易方预设标识信息对应的数据库群组210及该数据交易请求对应的数据库群组210下的数据库,并将该数据交易请求经由确定的数据库群组210代理服务器群组212发送给确定的数据库进行数据读操作或写操作。

上述交易方预设标识信息可以是用户标识信息(例如,用户账户名),上述智能合约10调用数据操作接口200的作用在于通过调用数据操作接口200,将该交易请求发送给交易缓冲/加速子系统20进行交易处理。

优选地,本实施例中,所述用户群组分片规则包括:

预先确定各个数据库群组210与各个交易方预设标识信息的映射关系;

例如,各个数据库群组210可以分别对应一个不同的交易方预设标识信息集合,各个交易方预设标识信息集合中包括一个或多个交易方预设标识信息。

根据预先确定的各个数据库群组210与各个交易方预设标识信息的映射关系,确定出数据交易请求的交易方预设标识信息对应的数据库群组210;

根据预先确定的数据交易请求类型与数据库的映射关系,确定数据交易请求对应的数据库。

例如,数据读操作请求对应的数据库可以为第一备数据库214;数据写操作请求对应的数据库可以为主数据库215。

优选地,本实施例中,所述控制中心220还用于:

当一个数据库群组210发生异常时,将该数据库群组210从数据交易请求服务队列中下线,将与该数据库群组210中的第一备数据库214通信的另一个数据库群组210中的第二备数据库216调整为主数据库215,代为对该数据库群组210对应的数据交易请求进行响应;

上述对一数据库群组210发生异常的判断可具体为:若一个数据库群组210无法完成正常的数据读操作及/或写操作,则确定该数据库群组210发生异常。

当该数据库群组210恢复正常时,将另一个数据库群组210中的第二备数据库216中的数据同步给该数据库群组210中的第一备数据库214、第二备数据库216及主数据库215,并将该数据库群组210加入到数据交易请求服务队列中上线。

本实施例的控制中心220可在数据库群组210间动态的调整主数据库215,在当一数据库群组210发生异常时,可将另一数据库群组210中的第二备数据库216调整为主数据库215,当发生异常的数据库群组210恢复正常时,又重新启用该数据库群组210,从而在数据库组发生异常时,可自主快速的恢复服务。

优选地,本实施例中,所述主数据库负载均衡器213还用于:

当一个数据库群组210的主数据库215发生异常时,将该数据库群组210的原第二备数据库216切换为该数据库群组210的主数据库215,代为对该主数据库215对应的数据交易请求进行响应;

当该主数据库215恢复正常时,将该主数据库215作为新第二备数据库216,切换为原第二备数据库216的备数据库,并将原第二备数据库216的数据同步给新第二备数据库216。

本实施例的主数据库负载均衡器213可实现在一数据库群组210中动态调整主数据库215,从而在主数据库215发生异常时,可自主快速的恢复服务。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

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