发明内容
本申请的目的在于提供一种基于联盟链的交易方法、系统及一种服务器和一种计算机可读存储介质,保证交易请求能够及时得到正常处理,同时解决了节点间负载不均衡的问题,有效降低了单个节点过载的概率。
为实现上述目的,本申请提供了一种基于联盟链的交易方法,应用于基于proxy的服务器,所述方法包括:
当获取到路由查询请求后,根据所述路由查询请求确定对应的目标联盟链;
基于所述目标联盟链上节点的运行状态及负载大小确定所述路由查询请求对应的路由表;所述路由表中包含运行状态正常且负载符合预设条件的用于处理目标交易的节点信息;
将所述路由表下发至所述路由查询请求的发起方,以使所述发起方根据所述路由表内的节点信息发起所述目标交易。
可选的,还包括:
对每条联盟链上的节点进行实时监控。
可选的,所述对每条联盟链上的节点进行实时监控,包括:
获取每条联盟链上的节点上传的节点运行状态。
可选的,所述获取每条联盟链上的节点自动上传的节点运行状态之后,还包括:
对上传运行状态的节点进行签名校验,以判断上报信息的准确性。
可选的,所述对每条联盟链上的节点进行实时监控,包括:
实时监测是否发生节点上线事件、节点下线事件或节点接入事件,并在监控到所述节点上线事件、所述节点下线事件或所述节点接入事件后推送对应的提示信息。
可选的,所述实时监测是否发生节点上线事件、节点下线事件或节点接入事件之后,还包括:
若监测到发生所述节点接入事件,则对新增节点的证书有效性进行校验;
若所述证书有效性校验通过,则对所述新增节点的节点权限进行校验;
若所述节点权限校验通过,则将新增节点保存至所述新增节点对应的待接入联盟链的路由信息中;
将所述新增节点的信息广播至所述待接入联盟链的其他节点,以使所述其他节点建立与所述新增节点的连接。
所述实时监测是否发生节点上线事件、节点下线事件或节点接入事件之后,还包括:
若监测到发生所述节点下线事件,则将下线节点从节点所在联盟链的路由信息中删除;
将所述下线节点的信息广播至所述节点所在联盟链的其他节点,以使所述其他节点断开与所述下线节点的连接。
可选的,所述基于所述目标联盟链上节点的运行状态及负载大小确定所述路由查询请求对应的路由表之前,还包括:
对发起方权限进行校验,并在所述发起方权限校验通过后启动所述基于所述目标联盟链上节点的运行状态及负载大小确定所述路由查询请求对应的路由表的步骤。
可选的,所述基于所述目标联盟链上节点的运行状态及负载大小确定所述路由查询请求对应的路由表,包括:
获取所述目标联盟链上运行正常的目标节点;
将所述目标节点中负载值小于预设值的节点添加至所述路由表中,并按照所述负载值从小到大的顺序进行排列。
可选的,还包括:
获取所述发起方根据所述路由表内的节点信息发起的所述目标交易;
对发起方权限以及所述交易请求对应交易账户的账户有效性进行校验;
若所述发起方权限和所述账户有效性均校验通过,则允许执行所述目标交易。
为实现上述目的,本申请提供了一种基于联盟链的交易系统,应用于基于proxy的服务器,所述系统包括:
第一确定模块,用于当获取到路由查询请求后,根据所述路由查询请求确定对应的目标联盟链;
第二确定模块,用于基于所述目标联盟链上节点的运行状态及负载大小确定所述路由查询请求对应的路由表;所述路由表中包含运行状态正常且负载符合预设条件的用于处理目标交易的节点信息;
路由下发模块,用于将所述路由表下发至所述路由查询请求的发起方,以使所述发起方根据所述路由表内的节点信息发起所述目标交易。
为实现上述目的,本申请提供了一种服务器,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现前述公开的任一项所述基于联盟链的交易方法的步骤。
为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述公开的任一项所述基于联盟链的交易方法的步骤。
为实现上述目的,本申请提供了一种区块链系统,包括至少两条单链组成的联盟链以及前述公开的服务器。
通过以上方案可知,本申请提供的一种基于联盟链的交易方法,应用于基于proxy的服务器,包括:当获取到路由查询请求后,根据所述路由查询请求确定对应的目标联盟链;基于所述目标联盟链上节点的运行状态及负载大小确定所述路由查询请求对应的路由表;所述路由表中包含运行状态正常且负载符合预设条件的用于处理目标交易的节点信息;将所述路由表下发至所述路由查询请求的发起方,以使所述发起方根据所述路由表内的节点信息发起所述目标交易。
本申请中,在基于proxy的服务器获取到路由查询请求后,首先从服务器连接的多条联盟链中确定当前路由请求对应的目标联盟链,并根据目标联盟链上节点实际的运行状态以及负载大小动态确定出用于处理目标交易的节点,以便发起方利用运行正常且负载符合预设条件的节点发起目标交易,保证交易请求能够及时得到正常处理,同时解决了节点间负载不均衡的问题,有效降低了单个节点过载的概率。本申请还公开了一种基于联盟链的交易系统、一种服务器和一种计算机可读存储介质及一种区块链系统,同样能实现上述技术效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在现有技术中,联盟链主要是作为单链进行使用,通过证书以及链上的智能合约规则校验节点和用户的接入权限。参见图1所示,用户在发送交易时看到的只是孤立的私有节点,如果用户私有节点出现故障,则无法自行找到其他可以节点对交易请求进行正常及时地处理;且由于用户间的请求量并不均衡,导致部分繁忙的节点存在大量交易堆积,而其他节点却空闲的节点负载不均衡问题。
因此,本申请实施例公开了一种基于联盟链的交易方法,保证交易请求能够及时得到正常处理,同时解决了节点间负载不均衡的问题,有效降低了单个节点过载的概率。
参见图2所示,本申请实施例公开了一种基于联盟链的交易方法,应用于基于proxy的服务器,方法包括:
S11:当获取到路由查询请求后,根据所述路由查询请求确定对应的目标联盟链;
本步骤中,在基于proxy的服务器获取到路由查询请求后,根据路由查询请求确定对应的目标联盟链。
proxy是分布式协调服务的一种实现,是一种采用raft协议(Replicated AndFault Tolerant,分布式一致性协议)的分布式数据存储服务,使用集群部署,能够实现分布式的配置共享和服务发现功能,并且能够保证集群中数据的一致性。本申请实施例中,基于proxy的服务器可以是在开源proxy的基础上进行相应的封装得到的服务器。
参见图3所示,本申请实施例利用基于proxy的服务器连接多条联盟链,用户通过客户端分别与联盟链节点以及服务器进行通信。
具体地,路由查询请求用于在用户在发起交易之前获取处理本次交易的节点信息,用户将路由查询请求发送至基于proxy的服务器,其中,路由查询请求中包含待处理的交易信息,服务器根据交易信息和路由查询请求从与服务器连接的多个联盟链中确定交易信息中交易账户所在的目标联盟链。
S12:基于所述目标联盟链上节点的运行状态及负载大小确定所述路由查询请求对应的路由表;所述路由表中包含运行状态正常且负载符合预设条件的用于处理目标交易的节点信息;
本步骤中,在获取到路由查询请求并确定对应的目标联盟链之后,根据目标联盟链上各个节点的运行状态以及负载值确定出用户处理待处理的目标交易的节点,并生成路由表。一种具体的实施方式中,基于目标联盟链上节点的运行状态及负载大小确定路由查询请求对应的路由表的过程可以具体为:获取目标联盟链上运行正常的目标节点;将目标节点中负载值小于预设值的节点添加至所述路由表中,并按照负载值从小到大的顺序进行排列。
可以理解的是,根据联盟链上节点的运行状态和负载值大小确定用于处理本次交易的节点,能够避免选择故障节点进行交易,进而避免节点无法及时正常处理交易;进一步确定正常节点中负载值小于预设值的节点,能够避免部分节点负载过高、而部分节点却较为空闲的情况。其中,预设值可以为预先通过人工或系统设定的值,该值为不影响节点正常运行的负载值,本发明对此不做具体限定。
由于需要基于联盟链节点的运行状态及负载大小确定路由表,本申请实施例还进一步包括:对每条联盟链上的节点进行实时监控。通过对节点的实时监控,能够及时掌握各节点的基本状态。
在现有技术节点的管理过程中,通过CA(Certification Authority,认证机构)签发的证书对节点进行管理。然而,由于CA证书有其对应的有效期,一经签发,节点在证书过期之前始终有权限接入链中,若某一节点作恶,由于其证书还有效,无法快速将作恶节点进行剔除。因而本申请对每条联盟链上的节点进行实时监控,能够快速识别作恶节点并剔除,保证了联盟链的安全性。
S13:将所述路由表下发至所述路由查询请求的发起方,以使所述发起方根据所述路由表内的节点信息发起所述目标交易。
本实施例中,确定用于处理目标交易的路由表后,将路由表下发至路由查询请求的发起方,从而发起方能够利用路由表内的节点信息发起目标交易。一种具体的实施方式中,路由表中包含多个候选节点,节点均为运行状态正常的节点,且按照负载值从小到大的顺序进行排列。发起方接收到路由表后,首先利用第一个节点发起目标交易,若发起失败,可根据路由表中节点的顺序利用第二个节点发起交易,直至发送成功。
本申请中,在基于proxy的服务器获取到路由查询请求后,首先从服务器连接的多条联盟链中确定当前路由请求对应的目标联盟链,并根据目标联盟链上节点实际的运行状态以及负载大小动态确定出用于处理目标交易的节点,以便发起方利用运行正常且负载符合预设条件的节点发起目标交易,保证交易请求能够及时得到正常处理,同时解决了节点间负载不均衡的问题,有效降低了单个节点过载的概率。
本申请实施例中针对节点实时监控过程的一种具体实施方式进行了进一步的说明和优化。参见图4所示,具体的:
S21:获取每条联盟链上的节点上传的节点运行状态;
S22:对上传运行状态的节点进行签名校验,以判断上报信息的准确性。
本实施例中,在节点启动后可以自动上传对应的节点运行状态,从而实现对节点状态的监控。进一步地,在获取到节点上传的节点运行状态后,对上传信息的节点进行签名校验,若校验通过,则表征上报的信息为合法准确的信息,将其进行记录;若校验未通过,则表征节点为非法节点,上传的信息可能是错误的信息,此时忽略该上报信息,通过上述校验可以确保上报信息的准确性。
本申请实施例中针对节点实时监控过程的另一种具体实施方式进行了进一步的说明和优化。参见图5所示,具体的:
S31:实时监测是否发生节点上线事件、节点下线事件或节点接入事件,并在监控到所述节点上线事件、所述节点下线事件或所述节点接入事件后推送对应的提示信息;
本实施例中,利用基于proxy的服务器主动对节点进行监测,查看是否发生了节点上线事件、节点下线事件或节点接入事件。其中,节点上线事件可以为节点启动;节点下线事件可以包括节点因故障下线或节点被管理员强制下线,从而断开与服务器的连接;节点接入事件为在联盟链新增节点。
在监控到上述节点上线事件、节点下线事件或节点接入事件之后,本实施例可以向运维人员推送相应的提示信息,使得联盟链管理员可以及时了解系统运行状态,进一步确保服务的稳定可靠。
S32:若监测到发生节点接入事件,则对新增节点的证书有效性进行校验;
S33:若所述证书有效性校验通过,则对所述新增节点的节点权限进行校验;
S34:若所述节点权限校验通过,则将新增节点保存至所述新增节点对应的待接入联盟链的路由信息中;
S35:将所述新增节点的信息广播至所述待接入联盟链的其他节点,以使所述其他节点建立与所述新增节点的连接;
参见图6所示,若监测到发生了节点接入事件,即接收到节点申请接入的请求后,对该新增节点的证书有效性进行校验,从而检验节点的身份是否合法。若证书有效性的校验未通过,则节点接入失败;若证书有效性校验通过,则进一步对节点的权限进行校验,若节点权限校验未通过,则节点接入失败;若节点权限校验通过,则根据新增节点的信息对待接入联盟链的路由信息进行更新,其中,待接入联盟链为新增节点请求接入的联盟链。具体地,将新增节点的信息保存至待接入联盟链对应的路由信息中,并将新增节点的信息广播至待接入联盟链的其他节点上,以便其他节点记录新增节点的信息,并建立与新增节点的连接,节点接入成功。只有链上所有节点都添加了新增节点的路由信息,在用户发送交易请求获取交易路由信息时,才可能将新增节点的路由信息返回至用户。
S36:若监测到发生节点下线事件,则将下线节点从节点所在联盟链的路由信息中删除;
S37:将所述下线节点的信息广播至所述节点所在联盟链的其他节点,以使所述其他节点断开与所述下线节点的连接。
本实施例中,若监测到发生节点下线事件,则调整该下线节点所在联盟链对应的路由信息,即将下线节点从路由信息中删除,并将下线节点的信息广播至当前链上的其他节点,以便其他节点断开与下线节点的连接,完成节点的下线,并将节点的变化信息记录,推送对应的提示信息至管理员。
本申请实施例公开了另一种基于联盟链的交易方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。参见图7、图8所示,具体的:
S41:当获取到路由查询请求后,根据所述路由查询请求确定对应的目标联盟链;
S42:对所述路由查询请求的发起方进行权限校验;
S43:若权限校验通过,则基于所述目标联盟链上节点的运行状态及负载大小确定所述路由查询请求对应的路由表;所述路由表中包含运行状态正常且负载符合预设条件的用于处理目标交易的节点信息;
S44:将所述路由表下发至所述路由查询请求的发起方,以使所述发起方根据所述路由表内的节点信息发起所述目标交易。
本实施例中,在获取到路由查询请求后,首先对路由查询请求对应的发起方进行权限校验,并在权限校验通过后才启动基于目标联盟链上节点的运行状态及负载大小确定路由查询请求对应的路由表的步骤。若权限校验未通过,则返回失败信息。通过对发起方的权限校验,能够进一步保证系统的安全性,避免非法用户对联盟链的访问。
本申请实施例公开了又一种基于联盟链的交易方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。参见图9所示,具体的:
S51:当获取到路由查询请求后,根据所述路由查询请求确定对应的目标联盟链;
S52:基于所述目标联盟链上节点的运行状态及负载大小确定所述路由查询请求对应的路由表;所述路由表中包含运行状态正常且负载符合预设条件的用于处理目标交易的节点信息;
S53:将所述路由表下发至所述路由查询请求的发起方;
S54:获取所述发起方根据所述路由表内的节点信息发起的所述目标交易;
S55:对发起方权限以及所述交易请求对应交易账户的账户有效性进行校验;
S56:若所述发起方权限和所述账户有效性均校验通过,则允许执行所述目标交易。
本申请实施例中,在将确定的路由表下发至路由查询请求的发起方之后,发起方将根据路由表的节点信息向对应的节点发起目标交易,该节点再将目标交易发送至服务器,当服务器接收到目标交易后,将对发起方权限以及交易请求中涉及到的交易账户的有效性进行校验,并在权限和有效性均校验通过后,方可允许执行目标交易。
需要说明的是,节点和用户(即请求发起方)均将自己的公钥通过管理平台注册到基于proxy的服务器中,同时管理员对公钥进行权限分配,在每个节点或用户与服务器进行交互时,需要使用自己的证书私钥进行签名,从而服务器通过预先注册的公钥对节点或用户的签名进行校验,并在校验通过后,根据公钥对应的权限校验当前发起方即将访问的接口是否属于设定的权限,如果属于,则校验通过。
下面对本申请实施例提供的一种基于联盟链的交易系统进行介绍,下文描述的一种基于联盟链的交易系统与上文描述的一种基于联盟链的交易方法可以相互参照。
参见图10所示,本申请实施例提供的一种基于联盟链的交易系统应用于基于proxy的服务器,所述系统包括:
第一确定模块101,用于当获取到路由查询请求后,根据所述路由查询请求确定对应的目标联盟链;
第二确定模块102,用于基于所述目标联盟链上节点的运行状态及负载大小确定所述路由查询请求对应的路由表;所述路由表中包含运行状态正常且负载符合预设条件的用于处理目标交易的节点信息;
路由下发模块103,用于将所述路由表下发至所述路由查询请求的发起方,以使所述发起方根据所述路由表内的节点信息发起所述目标交易。
关于上述模块101至103的具体内容可参考前述实施例公开的内容,在此不再进行赘述。
本申请还提供了一种服务器,参见图11所示,本申请实施例提供的一种服务器包括:
存储器100,用于存储计算机程序;
处理器200,用于执行所述计算机程序时可以实现上述实施例所提供的任一种基于联盟链的交易方法的步骤。
具体的,存储器100包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。处理器200在一些实施例中可以是一中央处理器(CentralProcessing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,为服务器提供计算和控制能力,执行所述存储器100中保存的计算机程序时,可以实现前述任一个实施例所公开的基于联盟链的交易方法的步骤。
本申请还提供了一种计算机可读存储介质,该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述公开的任一种基于联盟链的交易方法的步骤。
本申请中,在基于proxy的服务器获取到路由查询请求后,首先从服务器连接的多条联盟链中确定当前路由请求对应的目标联盟链,并根据目标联盟链上节点实际的运行状态以及负载大小动态确定出用于处理目标交易的节点,以便发起方利用运行正常且负载符合预设条件的节点发起目标交易,保证交易请求能够及时得到正常处理,同时解决了节点间负载不均衡的问题,有效降低了单个节点过载的概率。
进一步地,本申请还提供了一种区块链系统,包括至少两条单链组成的联盟链以及前述公开的服务器。
关于该区块链系统的具体构造可以参考前述实施例中公开的相应内容,在此不再进行赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。