一种基于区块链的交易系统及交易方法
本申请要求在2019年2月26日提交中国专利局、申请号为201910141898.7、发明名称为“基于区块链的高并发快速交易及验证方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及区块链技术领域,特别涉及一种基于区块链的交易系统及交易方法。
背景技术
区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。
对于发生在区块链中的交易来说,完成一笔交易至少需要两个步骤,第一个步骤用于验证该笔交易是否合法;第二个步骤用于在交易合法的前提下,将该笔交易进行记账并全网同步,最终完成全网共识。例如,比特币网络和以太坊网络处理交易时,上述两个步骤是同步进行的,也就是说在对交易进行验证的同时生成区块。验证和记账分属于两个不同的进程,以“并行”的方式实现“同时”,有利于提高效率。然而,区块的作用在于记账,记账的前提是验证,因此,必然产生由于“验证与记账”的时序性和“验证与记账”的并行性之间的矛盾。例如,当待验证交易数量过多时,这种交易机制容易造成较长时间的等待和交易排队较多的情况。
基于此,目前亟需一种基于区块链的交易系统,用于解决当待验证交易过多时,现有技术中的交易机制容易造成较长时间的等待和交易排队较多的问题。
发明内容
本申请提供了一种基于区块链的交易系统及交易方法,可用于解决当待验证交易过多时,现有技术中的交易机制容易造成较长时间的等待和交易排队较多的技术问题。
第一方面,本申请实施例提供一种基于区块链的交易系统,所述系统中的节点相互建立网络连接;所述系统中的部分节点被配置为交易验证节点,除所述交易验证节点以外的部分节点被配置为交易记账节点;
所述交易验证节点进一步被配置为:从第一预设数据库中获取第一交易请求,以及对所述第一交易请求进行合法性验证,如果所述第一交易请求通过合法性验证,在所述第一交易请求中附加所述交易验证节点的签名,以及将附加签名后的第一交易请求存储至第二预设数据库中;
所述交易记账节点进一步被配置为:从第二预设数据库中获取第二交易请求,以及根据第二交易请求中附加的签名,如果确定所述第二交易请求为合法交易,生成所述第二交易请求对应的第一区块链数据,存储所述第一区块链数据。
在一种可能的实现方式中,所述交易验证节点进一步被配置为:接收交易发起节点或所述交易验证节点的邻近节点发送的交易请求,将所述交易请求存储至第一预设数据库中。
在一种可能的实现方式中,所述交易验证节点进一步被配置为:从第一预设数据库中获取第一交易请求的历史验证次数,如果所述第一交易请求的历史验证次数大于第一阈值,放弃对所述第一交易请求进行的合法性验证,以及将所述第一交易请求存储至第二预设数据库中;如果所述第一交易请求的历史验证次数小于或等于第一阈值,对所述第一交易请求进行合法性验证。
在一种可能的实现方式中,所述交易验证节点进一步被配置为:在对所述第一交易请求进行合法性验证之后,更新所述第一交易请求的历史验证次数。
在一种可能的实现方式中,所述交易验证节点进一步被配置为:如果所述第一交易请求未通过合法性验证,忽略所述第一交易请求,并返回从第一预设数据库中获取新的交易请求的步骤。
在一种可能的实现方式中,所述交易记账节点进一步被配置为:如果所述第二交易请求中附加的签名的数量大于第二阈值,确定所述第二交易请求为合法交易。
在一种可能的实现方式中,所述交易记账节点进一步被配置为:如果所述第二交易请求中附加的签名的数量小于或等于第二阈值,确定所述第二交易请求为不合法交易。
在一种可能的实现方式中,所述交易记账节点进一步被配置为:在生成所述第二交易请求所对应的区块链数据之后,从第二预设数据库中删除所述第二交易请求。
在一种可能的实现方式中,所述系统中除所述交易验证节点和所述交易验证节点以外的节点被配置为交易参与节点;
所述交易参与节点进一步被配置为:生成所述第一区块链数据对应的摘要信息,以及根据所述摘要信息生成第二区块链数据,存储所述第二区块链数据。
第二方面,本申请实施例提供一种基于区块链的交易方法,所述方法应用于基于区块链的交易系统,所述系统中的部分节点被配置为交易验证节点,除所述交易验证节点以外的部分节点被配置为交易记账节点;所述方法包括:
所述交易验证节点从第一预设数据库中获取第一交易请求,以及对所述第一交易请求进行合法性验证,如果所述第一交易请求通过合法性验证,在所述第一交易请求中附加所述交易验证节点的签名,以及将附加签名后的第一交易请求存储至第二预设数据库中;
所述交易记账节点从第二预设数据库中获取第二交易请求,以及根据第二交易请求中附加的签名,如果确定所述第二交易请求为合法交易,生成所述第二交易请求对应的第一区块链数据,存储所述第一区块链数据。
在一种可能的实现方式中,所述方法还包括:
所述交易验证节点接收交易发起节点或所述交易验证节点的邻近节点发送的交易请求,将所述交易请求存储至第一预设数据库中。
在一种可能的实现方式中,所述交易验证节点在对所述第一交易请求进行合法性验证之前,所述方法还包括:
所述交易验证节点从第一预设数据库中获取第一交易请求的历史验证次数,如果所述第一交易请求的历史验证次数大于第一阈值,放弃对所述第一交易请求进行的合法性验证,以及将所述第一交易请求存储至第二预设数据库中;如果所述第一交易请求的历史验证次数小于或等于第一阈值,对所述第一交易请求进行合法性验证。
在一种可能的实现方式中,所述交易验证节在对所述第一交易请求进行合法性验证之后,所述方法还包括:
所述交易验证节点更新所述第一交易请求的历史验证次数。
在一种可能的实现方式中,所述方法还包括:
如果所述第一交易请求未通过合法性验证,所述交易验证节点忽略所述第一交易请求,并返回从第一预设数据库中获取新的交易请求的步骤。
在一种可能的实现方式中,所述交易记账节点确定所述第二交易请求为合法交易,包括:
如果所述第二交易请求中附加的签名的数量大于第二阈值,所述交易记账节点确定所述第二交易请求为合法交易。
在一种可能的实现方式中,所述方法还包括:
如果所述第二交易请求中附加的签名的数量小于或等于第二阈值,所述交易记账节点确定所述第二交易请求为不合法交易。
在一种可能的实现方式中,所述交易记账节点在生成所述第二交易请求所对应的区块链数据之后,所述方法还包括:
所述交易记账节点从第二预设数据库中删除所述第二交易请求。
在一种可能的实现方式中,所述系统中除所述交易验证节点和所述交易验证节点以外的节点被配置为交易参与节点;
所述方法还包括:
所述交易参与节点生成所述第一区块链数据对应的摘要信息,以及根据所述摘要信息生成第二区块链数据,存储所述第二区块链数据。
上述基于区块的交易系统中,交易验证节点可以从第一预设数据库中获取第一交易请求,以及对第一交易请求进行合法性验证,如果第一交易请求通过合法性验证,在第一交易请求中附加该交易验证节点的签名,以及将附加签名后的第一交易请求存储至第二预设数据库中;交易记账节点可以从第二预设数据库中获取第二交易请求,以及根据第二交易请求中附加的签名,如果确定第二交易请求为合法交易,可以生成第二交易请求对应的第一区块链数据,并存储第一区块链数据。采用上述交易系统,通过将系统中的节点配置为交易验证节点和交易记账节点,为系统中的节点赋予不同的角色,如此,交易验证节点负责对交易进行验证,交易记账节点负责记账,两者分工明确。对于交易验证节点而言,无需依赖交易记账节点的完成状态,可以提高交易验证的效率,缩短交易验证的时间;对于交易记账节点而言,可以直接从第二预设数据库中获取已验证的交易请求,而无需再进行交易的验证,可以把资源都用在记账权的争夺和数据的同步上,从而提高交易记账的效率,缩短交易记账的时间。综上,采用本申请提供的交易系统,能够有效避免当待验证交易过多时,造成较长时间的等待和交易排队较多的情况。
附图说明
图1是本申请实施例提供的一种基于区块链的交易系统的结构示意图;
图2是本申请实施例提供一种基于区块链的交易系统处理交易的流程示意图;
图3是本申请实施例提供一种基于区块链的交易系统中发生交易的流程示意图;
图4是本申请实施例提供的一种交易验证节点进行合法性验证的方法所对应的流程示意图;
图5是本申请实施例提供的一种交易记账节点处理交易的方法所对应的流程示意图;
图6是本申请实施例提供的一种交易系统处理交易的整体性流程的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本申请提供的技术方案中,所述区块链一方面指网络系统中交易产生的记账数据,另一方面指运行区块链技术的网络,即区块链网络。其中,区块链网络是指具有去中心化应用架构的点对点(P2P)网络,所述区块链网络能够进行分布式存储、公共共识、数字加密、交易记账以及验证。即涵盖了分布式技术、密码学、P2P网络架构以及各种可能被应用的共识算法的交易平台。
区块链或区块链信息是在区块链网络中发生交易时,根据交易数据生成的记账信息,即多笔具体的交易组成一个区块,多个区块形成一条区块链。区块链网络中,包括相互建立点对点网络连接的节点,每一个节点都配置有相应的共识机制,如智能合约,并且具有足够的运算能力,以进行交易验证和记账程序。节点上还具有符合某种统一标准的接口规范,以实现通过接口规范接入更多的节点或者其他类型的区块链网络。
下面首先结合图1对本申请实施例适用的可能的系统架构进行介绍。
请参考图1,其示例性示出了本申请实施例提供的一种基于区块链的交易系统的结构示意图。由图1可知,本申请提供的交易系统中的节点相互建立网络连接。其中,该交易系统中的部分节点可以被配置为交易验证节点,除交易验证节点以外的部分节点可以被配置为交易记账节点。
以图1示出的示意图为例,在当前时间段内,节点1、节点2、节点3和节点4可以被配置为交易验证节点,节点5、节点6、节点7和节点8可以被配置为交易记账节点,节点9、节点10和节点11可以被配置为交易参与节点。
需要说明的是,图1仅为一种示例性说明,本申请不对交易验证节点、交易记账节点和交易参与节点各自的数量进行限定。此外,图1示出的仅为一个时间段内交易系统中各节点的配置情况,在另一时间段内,交易系统中各节点的配置情况可以发送改变,比如原来是交易验证节点中的节点1,在下一时间段可能被配置为交易记账节点(或交易参与节点),类似地,原来是交易记账节点中的节点5,在下一时间段可能被配置为交易验证节点(或交易参与节点);或者,交易系统中各节点的配置情况也可以不发生改变,具体不做限定。
基于图1所示的系统架构,图2示例性示出了本申请实施例提供一种基于区块链的交易系统处理交易的流程示意图。
如图2所示,交易验证节点(如图2中示出的节点1)可以进一步被配置为:从第一预设数据库中获取第一交易请求,然后对第一交易请求进行合法性验证,如果第一交易请求通过合法性验证,则在第一交易请求中附加交易验证节点的签名,以及将附加签名后的第一交易请求存储至第二预设数据库中。
交易验证节点还可以进一步被配置为:如果第一交易请求未通过合法性验证,忽略第一交易请求,并返回从第一预设数据库中获取新的交易请求的步骤(图2中未示出)。
交易记账节点(如图2中示出的节点5)进一步被配置为:从第二预设数据库中获取第二交易请求,以及根据第二交易请求中附加的签名,如果确定第二交易请求为合法交易,则生成第二交易请求对应的第一区块链数据,以及存储第一区块链数据。
上述基于区块的交易系统中,交易验证节点可以从第一预设数据库中获取第一交易请求,以及对第一交易请求进行合法性验证,如果第一交易请求通过合法性验证,在第一交易请求中附加该交易验证节点的签名,以及将附加签名后的第一交易请求存储至第二预设数据库中;交易记账节点可以从第二预设数据库中获取第二交易请求,以及根据第二交易请求中附加的签名,如果确定第二交易请求为合法交易,可以生成第二交易请求对应的第一区块链数据,并存储第一区块链数据。采用上述交易系统,通过将系统中的节点配置为交易验证节点和交易记账节点,为系统中的节点赋予不同的角色,如此,交易验证节点负责对交易进行验证,交易记账节点负责记账,两者分工明确。对于交易验证节点而言,无需依赖交易记账节点的完成状态,可以提高交易验证的效率,缩短交易验证的时间;对于交易记账节点而言,可以直接从第二预设数据库中获取已验证的交易请求,而无需再进行交易的验证,可以把资源都用在记账权的争夺和数据的同步上,从而提高交易记账的效率,缩短交易记账的时间。综上,采用本申请提供的交易系统,能够有效避免当待验证交易过多时,造成较长时间的等待和交易排队较多的情况。
具体来说,第一预设数据库可以是以表格的形式呈现,或者也可以是以队列的形式呈现,具体不做限定,第一预设数据库中可以包括多个待验证交易。相应地,第二预设数据库可以是以表格的形式呈现,或者也可以是以队列的形式呈现,具体不做限定,第二预设数据库中可以包括多个已验证交易。
需要说明的是:(1)第一预设数据库和第二预设数据库可以是两个独立的数据库,或者也可以是同一个数据库;当第一预设数据库和第二预设数据库是同一个数据库时,交易验证节点可以直接在第一交易请求中附加交易验证节点的签名,交易记账节点可以直接获取附加油签名的第二交易请求。(2)第一预设数据库和第二预设数据库可以均以先进先出的原则,处理数据库中的交易请求。
具体实施过程中,如图3所示,为本申请实施例提供一种基于区块链的交易系统中发生交易的流程示意图。
所述交易验证节点(如图3中示出的节点1)进一步被配置为:接收交易请求,以及将交易请求存储至第一预设数据库中。
从图3中可以看出,交易验证节点(即节点1)接收到的交易请求来源于节点0。节点0可以是交易发起节点,也可以是交易验证节点(即节点1)的邻近节点。也就是说,交易验证节点节点(如图3中示出的节点1)可以进一步被配置为:接收交易发起节点或交易验证节点的邻近节点发送的交易请求。
根据实际应用环境的不同,交易发起点与交易验证节点之间的交易形式也不同。交易验证节点接收交易发起节点发送的交易请求的情形可能有以下两种。
一种情形是,如果交易发起节点可以与直接交易验证节点进行交易或信息交互,则可以直接通过交易发起节点向交易验证节点发送交易请求。这种方式最适合于交易发起节点与交易验证节点处于同一个区块链网络内的交易,即交易发起节点也是该交易系统内的节点。
另一种情形是,如果交易发起节点不能直接与交易验证节点进行交易或信息交互,则可以通过交易发起节点广播交易请求。具体可以为先向邻近节点广播该交易请求,邻近节点再结合自身的角色,确定是完成交易还是继续广播,直到交易验证节点接收到该交易请求。
交易验证节点接收其邻近节点发送的交易数据对应的情形可以是,交易发起节点未知交易验证节点的位置信息,通过广播的形式在区块链中发送交易请求,如此,随着信息的扩散,交易验证节点可以通过其邻近节点接受到交易请求。
需要说明的是,上述两种情形仅为示例性说明,在其他可能的示例中,如果交易发起节点是交易验证节点的邻近节点,那么,交易验证节点也可以看作是直接接收到交易发起节点发送的交易请求。
本申请实施例中,同为交易验证节点的节点数量可能有多个,那么,在发生交易时,可能存在多个交易验证节点都接收到交易请求的情况。此时,为了避免多个交易验证节点将相同的交易请求存储至第一预设数据库,以致交易记账节点多次记账的情况,交易验证节点之间可以达成共识,比如,针对相同的交易请求,约定最早存储到第一预设数据库中的交易请求是有效的;又比如,采用去中心的方式,根据交易请求的存储次数来决定是否进行记账。
具体实施过程中,一种可能的实施方式为,交易验证节点接收到交易请求后,可以查询第一预设数据库中是否有相同的交易请求,如果第一预设数据库中没有相同的交易请求,则将该交易请求存储至第一预设数据库;如果第一预设数据库中有相同的交易请求,则忽略该交易请求。
另一种可能的实施方式为,交易验证节点在将接收到的交易请求存储至第一预设数据库之后,还可以在交易系统中广播,从而可以通知其它交易验证节点不必再存储该交易请求。
又一种可能的实现方式为,多个交易验证节点都接收到交易请求后,多个交易验证节点都对该交易请求进行验证,并按照先后顺序存储至第一预设数据库;进而,交易记账节点可以根据该交易请求被存储的次数(即被验证的次数)来判断是否可以进行记账操作,进一步地,当交易记账节点完成记账操作后,交易验证节点可以通过同步数据区块来确认交易已经完成记账,再删除第一预设数据库的交易请求。
本申请实施例中,交易验证节点对第一交易请求进行合法性验证时,一个示例中,当交易验证节点确定第一交易请求通过合法性验证后,就可以在第一交易请求中附加交易验证节点的签名,以及将附加签名后的第一交易请求存储至第二预设数据库中。
另一个示例中,考虑到交易验证节点可能会出现验证出错的情况,如果只有一个交易验证节点对第一交易请求进行验证的话,验证结果可能会出现错误。因此,本申请实施例还提供另一种交易验证节点进行合法性验证的方法。
如图4所示,为本申请实施例提供的一种交易验证节点进行合法性验证的方法所对应的流程示意图。
交易验证节点(如图4中示出的节点1)还可以进一步被配置为:从第一预设数据库中获取第一交易请求的历史验证次数,如果第一交易请求的历史验证次数大于第一阈值,放弃对第一交易请求进行的合法性验证,以及将第一交易请求存储至第二预设数据库中;如果第一交易请求的历史验证次数小于或等于第一阈值,对第一交易请求进行合法性验证。
也就是说,在图4示出的方法中,多个交易验证节点可以对同一个交易请求进行多次验证。只有当该交易请求的历史验证次数大于第一阈值时,说明该交易请求被多个交易验证节点(历史验证次数大于或等于交易验证节点的数量)认可,此时交易验证节点才会将附加有签名的该交易请求存储至第二预设数据库中。
需要说明的是,第一阈值可以是本领域技术人员根据经验和实际情况确定的,具体不做限定。
进一步地,如果第一交易请求合法,则在第一交易请求中附加交易验证节点的签名;如果第一交易请求不合法,则忽略第一交易请求。
更进一步地,当交易验证节点完成对第一交易请求的合法性验证之后,可以更新第一交易请求的历史验证次数,并将更新后的历史验证次数存储至第一预设数据库中。
采用上述方法,对于第一预设数据库中的交易请求,其验证次数是可以限定的。如此,可以进一步提高交易验证节点的验证效率,缩短其它交易请求的验证等待时间。
本申请实施例中,交易验证节点在对交易请求进行合法性验证时,只有在确定该交易请求通过合法性验证之后,才会在该交易请求中附加该交易验证节点的签名。也就是说,对于未通过合法性验证的交易请求而言,该交易请求中不会附加有交易验证节点的签名。
基于此,交易记账节点判断第二交易请求是否为合法交易,可以根据第二交易请求中附加的签名来确定。
具体地,如图5所示,为本申请实施例提供的一种交易记账节点处理交易的方法所对应的流程示意图。交易记账节点(如图5中示出的节点5)可以进一步被配置为:如果第二交易请求中附加的签名的数量大于第二阈值,则确定第二交易请求为合法交易;如果第二交易请求中附加的签名的数量小于或等于第二阈值,则确定第二交易请求为不合法交易。
需要说明的是,第二阈值可以是本领域技术人员根据经验和实际情况确定的,具体不做限定。
进一步地,如果确定第二交易请求为合法交易,则生成第二交易请求对应的第一区块链数据,存储所述第一区块链数据;如果第二交易请求为不合法交易,则从第二预设数据库删除第二交易请求。
更进一步地,如图5所示,交易记账节点(如图5中示出的节点5)还可以进一步被配置为:在生成第二交易请求所对应的区块链数据之后,从第二预设数据库中删除第二交易请求。
为了更加清楚地描述本申请实施例提供的一种基于区块链的交易系统,下面结合图6,对本申请中的交易系统处理交易的整体性流程进行描述。
如图6所示,在发送交易时,交易验证节点(如图6中示出的节点1)可以接收交易发起节点或交易验证节点的邻近节点(如图6中示出的节点0)发送的交易请求,以及将交易请求存储至第二预设数据库中。
并且,交易验证节点(如图6中示出的节点1)还可以从第一预设数据库中获取第一交易请求,然后对第一交易请求进行合法性验证,如果第一交易请求通过合法性验证,则在第一交易请求中附加交易验证节点的签名,以及将附加签名后的第一交易请求存储至第二预设数据库中;如果第一交易请求未通过合法性验证,忽略第一交易请求,并返回从第一预设数据库中获取新的交易请求的步骤。
交易记账节点(如图6中示出的节点5)可以从第二预设数据库中获取第二交易请求,以及根据第二交易请求中附加的签名,如果确定第二交易请求为合法交易,生成第二交易请求对应的第一区块链数据,存储第一区块链数据并从第二预设数据库删除第二交易请求。
交易记账节点(如图6中示出的节点5)根据第二交易请求中附加的签名,如果确定第二交易请求为不合法交易,则从第二预设数据库删除第二交易请求。
交易参与节点(如图6中示出的节点9)可以生成第一区块链数据对应的摘要信息,以及根据摘要信息生成第二区块链数据,存储第二区块链数据。
需要说明的是,交易参与节点本质上是网络的使用者,其通过查询交易验证节点的第二预设数据库,向交易记账节点同步第一区块链数据,来完成其自身的业务和交易的闭环。这个过程中,对于实时性要求并不高的场景,可以通过第一区块链数据进行最终确认,而对于那些实时性高要求,就可以通过查询第二预设数据库快速完成相关的确认工作。
如此,交易验证节点可以从第一预设数据库中获取第一交易请求,以及对第一交易请求进行合法性验证,如果第一交易请求通过合法性验证,在第一交易请求中附加该交易验证节点的签名,以及将附加签名后的第一交易请求存储至第二预设数据库中;交易记账节点可以从第二预设数据库中获取第二交易请求,以及根据第二交易请求中附加的签名,如果确定第二交易请求为合法交易,可以生成第二交易请求对应的第一区块链数据,并存储第一区块链数据。交易参与节点可以生成第一区块链数据对应的摘要信息,以及根据摘要信息生成第二区块链数据,存储第二区块链数据。采用上述交易系统,通过将系统中的节点配置为交易验证节点和交易记账节点,为系统中的节点赋予不同的角色,如此,交易验证节点负责对交易进行验证,交易记账节点负责记账,两者分工明确。对于交易验证节点而言,无需依赖交易记账节点的完成状态,可以提高交易验证的效率,缩短交易验证的时间;对于交易记账节点而言,可以直接从第二预设数据库中获取已验证的交易请求,而无需再进行交易的验证,可以把资源都用在记账权的争夺和数据的同步上,从而提高交易记账的效率,缩短交易记账的时间。综上,采用本申请提供的交易系统,能够有效避免当待验证交易过多时,造成较长时间的等待和交易排队较多的情况。
基于同样的发明构思,本申请实施例还提供一种基于区块链的交易方法,所述方法应用于基于区块链的交易系统,所述系统中的部分节点被配置为交易验证节点,除所述交易验证节点以外的部分节点被配置为交易记账节点;所述方法包括:
所述交易验证节点从第一预设数据库中获取第一交易请求,以及对所述第一交易请求进行合法性验证,如果所述第一交易请求通过合法性验证,在所述第一交易请求中附加所述交易验证节点的签名,以及将附加签名后的第一交易请求存储至第二预设数据库中;
所述交易记账节点从第二预设数据库中获取第二交易请求,以及根据第二交易请求中附加的签名,如果确定所述第二交易请求为合法交易,生成所述第二交易请求对应的第一区块链数据,存储所述第一区块链数据。
在一种可能的实现方式中,所述方法还包括:
所述交易验证节点接收交易发起节点或所述交易验证节点的邻近节点发送的交易请求,将所述交易请求存储至第一预设数据库中。
在一种可能的实现方式中,所述交易验证节点在对所述第一交易请求进行合法性验证之前,所述方法还包括:
所述交易验证节点从第一预设数据库中获取第一交易请求的历史验证次数,如果所述第一交易请求的历史验证次数大于第一阈值,放弃对所述第一交易请求进行的合法性验证,以及将所述第一交易请求存储至第二预设数据库中;如果所述第一交易请求的历史验证次数小于或等于第一阈值,对所述第一交易请求进行合法性验证。
在一种可能的实现方式中,所述交易验证节在对所述第一交易请求进行合法性验证之后,所述方法还包括:
所述交易验证节点更新所述第一交易请求的历史验证次数。
在一种可能的实现方式中,所述方法还包括:
如果所述第一交易请求未通过合法性验证,所述交易验证节点忽略所述第一交易请求,并返回从第一预设数据库中获取新的交易请求的步骤。
在一种可能的实现方式中,所述交易记账节点确定所述第二交易请求为合法交易,包括:
如果所述第二交易请求中附加的签名的数量大于第二阈值,所述交易记账节点确定所述第二交易请求为合法交易。
在一种可能的实现方式中,所述方法还包括:
如果所述第二交易请求中附加的签名的数量小于或等于第二阈值,所述交易记账节点确定所述第二交易请求为不合法交易。
在一种可能的实现方式中,所述交易记账节点在生成所述第二交易请求所对应的区块链数据之后,所述方法还包括:
所述交易记账节点从第二预设数据库中删除所述第二交易请求。
在一种可能的实现方式中,所述系统中除所述交易验证节点和所述交易验证节点以外的节点被配置为交易参与节点;
所述方法还包括:
所述交易参与节点生成所述第一区块链数据对应的摘要信息,以及根据所述摘要信息生成第二区块链数据,存储所述第二区块链数据。
采用上述交易方法,交易验证节点负责对交易进行验证,交易记账节点负责记账,两者分工明确。对于交易验证节点而言,无需依赖交易记账节点的完成状态,可以提高交易验证的效率,缩短交易验证的时间;对于交易记账节点而言,可以直接从第二预设数据库中获取已验证的交易请求,而无需再进行交易的验证,可以把资源都用在记账权的争夺和数据的同步上,从而提高交易记账的效率,缩短交易记账的时间。综上,采用本申请提供的交易系统,能够有效避免当待验证交易过多时,造成较长时间的等待和交易排队较多的情况。
在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序或智能合约,所述计算机程序或智能合约被节点加载并执行以实现上述实施例提供的事务处理方法。可选地,上述计算机可读存储介质可以是只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域的技术人员可以清楚地了解到本申请实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。