CN110659905B - 交易验证方法、装置、终端设备以及存储介质 - Google Patents
交易验证方法、装置、终端设备以及存储介质 Download PDFInfo
- Publication number
- CN110659905B CN110659905B CN201910895286.7A CN201910895286A CN110659905B CN 110659905 B CN110659905 B CN 110659905B CN 201910895286 A CN201910895286 A CN 201910895286A CN 110659905 B CN110659905 B CN 110659905B
- Authority
- CN
- China
- Prior art keywords
- thread
- verification
- transaction
- transaction data
- pool
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种交易验证方法、装置、终端设备以及存储介质,该方法包括:当接收到交易请求时,获取第一子线程池中包括的第一线程,获取第二子线程池中包括的第二线程,其中交易请求中包括交易数据,第一线程用于执行第一验证,第二线程用于执行第二验证;基于第一线程执行交易数据的第一验证以生成第一验证结果,同时基于第二线程执行交易数据的第二验证以生成第二验证结果;当第一验证结果和第二验证结果皆为验证通过时,将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。采用本申请实施例,可加快交易验证的速度,缩短交易验证的时间,适用性高。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种交易验证方法、装置、终端设备以及存储介质。
背景技术
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
现有技术中,区块链平台上的交易验证主要分为两块内容的验证:一方面是有状态验证,比如验证交易数据是否已经存在,账户余额是否足够等,另外一方面是无状态验证,例如验证交易签名。但是当前执行上述两种验证所花费的时间较长,因此适用性不高。
发明内容
本申请实施例提供一种交易验证方法、装置、终端设备以及存储介质,可加快交易验证的速度,缩短交易验证的时间,适用性高。
第一方面,本申请实施例提供了一种交易验证方法,该方法包括:
当接收到交易请求时,获取第一子线程池中包括的第一线程,获取第二子线程池中包括的第二线程,其中上述交易请求中包括交易数据,上述第一线程用于执行第一验证,上述第二线程用于执行第二验证;
基于上述第一线程执行上述交易数据的第一验证以生成第一验证结果,同时基于上述第二线程执行上述交易数据的第二验证以生成第二验证结果;
当上述第一验证结果和第二验证结果皆为验证通过时,将上述交易请求中包括的上述交易数据添加至交易池中作为待打包交易数据。
第二方面,本申请实施例提供了一种交易验证装置,该装置包括:
线程获取模块,用于当接收到交易请求时,获取第一子线程池中包括的第一线程,获取第二子线程池中包括的第二线程,其中上述交易请求中包括交易数据,上述第一线程用于执行第一验证,上述第二线程用于执行第二验证;
数据验证模块,用于基于上述第一线程执行上述交易数据的第一验证以生成第一验证结果,同时基于上述第二线程执行上述交易数据的第二验证以生成第二验证结果;
数据处理模块,用于当上述第一验证结果和第二验证结果皆为验证通过时,将上述交易请求中包括的上述交易数据添加至交易池中作为待打包交易数据。
结合第二方面,在一种可能的实施方式中,上述装置还包括线程调整模块,上述线程调整模块包括:
线程占用统计单元,用于获取上述第一子线程池中被占用的第一线程占用数和上述第二线程池中被占用的第二线程占用数;
空闲线程确定单元,用于根据第一线程总数、上述第一线程占用数、第二线程总数、上述第二线程占用数确定上述第一子线程池中的第一线程空闲数和上述第二子线程池中的第二线程空闲数;
线程调整单元,用于当上述第一线程空闲数与上述第二线程空闲数的比值小于第一预设阈值时,将部分第二线程从上述第二子线程池中移出以加入到上述第一子线程池中。
结合第二方面,在一种可能的实施方式中,上述第一验证为有状态验证;上述数据验证模块包括第一验证单元,上述第一验证单元具体用于:
基于上述第一线程计算上述交易数据对应的哈希值,并基于上述哈希值在上述交易池和区块链账本中进行遍历,若上述交易池和上述区块链账本中都不包括上述哈希值,则确定上述第一验证结果为验证通过。
结合第二方面,在一种可能的实施方式中,上述第二验证为无状态验证,上述交易数据中包括交易数据转出方、交易数据转移量、交易数据转入方、交易数字签名以及上述交易数据转出方对应的公钥;上述数据验证模块包括第二验证单元,上述第二验证单元具体用于:
基于上述第二线程根据上述公钥对上述交易数字签名进行解密以得到第一摘要信息;
基于上述第二线程计算上述交易发起方、上述交易数据转移量以及上述交易接收方对应的第二摘要信息;
若上述第一摘要信息和上述第二摘要信息相同,则确定上述第二验证结果为验证通过。
结合第二方面,在一种可能的实施方式中,上述线程获取模块包括:
线程负载获取单元,用于当接收到上述交易请求时,获取上述第一子线程池中各第一线程对应的各第一线程负载和上述第二子线程池中各第二线程对应的各第二线程负载;
线程确定单元,用于从上述各第一线程负载中确定出最小第一线程负载对应的第一线程,以及从上述各第二线程负载中确定出最小第二线程负载对应的第二线程。
结合第二方面,在一种可能的实施方式中,上述数据验证模块包括:
数据提取单元,用于提取上述交易数据中包括的第一交易数据和第二交易数据,将上述第一交易数据发送至上述第一线程,同时将上述第二交易数据发送至上述第二线程;
验证结果接收单元,用于接收上述第一线程根据上述第一交易数据执行第一验证生成并返回的第一验证结果,以及上述第二线程根据上述第二交易数据执行第二验证生成并返回的第二验证结果。
结合第二方面,在一种可能的实施方式中,上述交易数据中包括交易业务标识;上述线程获取模块具体用于:
从上述第一子线程池和上述第二子线程池中分别确定出与上述交易业务标识相同的最近一次交易数据对应的第一线程和第二线程。
第三方面,本申请实施例提供了一种终端设备,该终端设备包括处理器和存储器,该处理器和存储器相互连接。该存储器用于存储支持该终端设备执行上述第一方面和/或第一方面任一种可能的实现方式提供的方法的计算机程序,该计算机程序包括程序指令,该处理器被配置用于调用上述程序指令,执行上述所提供的方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述所提供的方法的步骤。
在本申请实施例中,当接收到交易请求时,通过获取第一子线程池中包括的第一线程和第二子线程池中包括的第二线程,可基于第一线程执行交易数据的第一验证以生成第一验证结果,同时基于第二线程执行交易数据的第二验证以生成第二验证结果,并且当第一验证结果和第二验证结果皆为验证通过时,将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。采用本申请实施例,通过并发执行交易数据的交易验证,可加快交易验证的速度,提高交易验证的效率,缩短交易验证的时间,适用性高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链节点系统的结构示意图;
图2是本申请实施例提供的交易验证方法的一流程示意图;
图3是本申请实施例提供的第一子线程池和第二子线程池的示意图;
图4是本申请实施例提供的交易验证方法的另一流程示意图;
图5是本申请实施例提供的基于第一线程和第二线程执行交易验证的示意图;
图6是本申请实施例提供的区块链账本和区块结构的示意图;
图7是本申请实施例提供的交易验证装置的结构示意图;
图8是本申请实施例提供的终端设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
区块链节点系统中任意区块链节点接收到一笔交易后,都不会立即将该笔交易打包到备选区块中,而是将该笔交易放到类似缓冲区的一个交易池里,后续根据一定的优先顺序从交易池中选择部分或全部交易进行打包,以此来保障自己能够获得尽可能多的交易费。应当理解的是,区块链节点系统中几乎每个区块链节点都会维护一个未确认交易的交易池,各区块链节点可根据这个交易池来追踪记录那些被网络所知晓、但还未被区块链所包含的交易(即未上链的交易)。例如,保存用户钱包的区块链节点会利用这个交易池来记录那些网络已经接收但还未被确认的、属于该用户钱包的预支付信息。
参见图1,图1是本申请实施例提供的一种区块链节点系统的结构示意图。如图1所示,区块链节点系统100是指用于进行区块链节点与区块链节点之间数据共享的系统,区块链节点系统100中可以包括多个区块链节点,各区块链节点之间相互连接,如图1所示区块链节点系统100中包括区块链节点10a,区块链节点10b,区块链节点10c,区块链节点10d和区块链节点10e,其中每个区块链节点都与其他区块链节点具有连接关系。可以理解的是,区块链节点系统中的任一区块链节点可以是任意形式的计算设备,如服务器、终端等,在此不做限制。每个区块链节点在进行正常工作时可以接收输入信息,并基于接收到的输入信息维护该区块链节点系统内的共享数据,例如,输入信息可以是交易请求等,在此不做限制。为了保证区块链节点系统内的信息互通,区块链节点系统中的每个区块链节点之间可以存在连接关系,区块链节点之间可以通过该连接关系进行信息传输。例如,当区块链节点系统中的任意区块链节点接收到一笔新交易时,通过对该笔交易进行验证并通过后,可将该笔交易广播给区块链节点系统中的其他区块链节点,并将该笔交易放入本地的交易池中,同时其他区块链节点通过接收交易并验证无误后,也可将该笔交易作为共享数据中的数据存储在各自的交易池中,以使得区块链节点系统中全部区块链节点上存储的数据均一致。
本申请实施例提供的交易验证方法,可广泛适用于能够对交易数据进行验证或处理的服务器或终端。其中,终端包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)等,在此不做限制。本申请实施例提供的方法,当接收到交易请求时,通过获取第一子线程池中包括的第一线程和第二子线程池中包括的第二线程,可基于第一线程执行交易数据的第一验证以生成第一验证结果,同时基于第二线程执行交易数据的第二验证以生成第二验证结果,并且当第一验证结果和第二验证结果皆为验证通过时,将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。采用本申请实施例,可加快交易验证的速度,提高交易验证的效率,缩短交易验证的时间,适用性高。
下面将结合图2至图8分别对本申请实施例提供的方法及相关装置分别进行详细说明。本申请实施例提供的方法中可包括用于获取第一线程和第二线程,基于获取的第一线程执行交易数据的第一验证以生成第一验证结果、基于获取的第二线程执行交易数据的第二验证以生成第二验证结果、以及在第一验证结果和第二验证结果皆为验证通过时将交易数据添加至交易池中等数据处理阶段。其中,上述各个数据处理阶段的实现方式可参见如下图2至图4所示的实现方式。
参见图2,图2为本申请实施例提供的交易验证方法的一流程示意图。本申请实施例提供的方法可以包括如下步骤101至103:
101、当接收到交易请求时,获取第一子线程池中包括的第一线程,获取第二子线程池中包括的第二线程。
在一些可行的实施方式中,当接收到交易请求时,通过获取第一子线程池中包括的第一线程和第二子线程池中包括的第二线程,可将获取到的第一线程用于执行第一验证,将获取到的第二线程用于第二验证。应当理解的是,第一子线程池和第二子线程池是根据交易验证需求将线程池进行划分后,所得到的两个子线程池,其中,每个子线程池中至少包括1个线程,为方便描述,可将第一子线程池中包括的线程简称为第一线程,将第二线程池中包括的线程简称为第二线程,且第一子线程池中第一线程的数量(即第一线程总数)与第二子线程池中第二线程的数量(即第二线程总数)之和等于线程池中的线程总数。例如参见图3,图3是本申请实施例提供的第一子线程池和第二子线程池的示意图。在本申请实施例中,第一验证可以为有状态验证,第二验证可以为无状态验证,或者第一验证为无状态验证,第二验证为有状态验证,为方便描述,本申请实施例中皆以第一验证为有状态验证,第二验证为无状态验证为例进行说明。通常而言,有状态验证是一种与存储有关的验证,其主要与终端的读写性能相关,比如验证交易数据是否已经存在,账户余额是否足够等,无状态验证则主要涉及终端的计算能力,例如验证交易签名等,在此不做限制。
102、基于第一线程执行交易数据的第一验证以生成第一验证结果,同时基于第二线程执行交易数据的第二验证以生成第二验证结果。
在一些可行的实施方式中,所接收到的交易请求中可包括交易数据,其中,交易数据可以是转账数据、审批数据、合同数据以及其他数据等,在此不做限制。为方便描述,以下本申请实施以交易数据为转账数据为例进行说明。通常而言,转账数据中可包括交易创建时间、交易数据转出方、交易数据转移量、交易数据转入方、第三方数据转移量,交易数字签名以及交易数据转出方对应的公钥等,在此不做限制。当执行交易数据的第一验证时,可基于第一线程计算交易数据对应的哈希值,并基于哈希值在交易池和区块链账本中进行遍历以判断该交易数据是否已经存在于交易池和区块链账本中,若交易池和区块链账本中皆不包括与上述哈希值相同的哈希值,则可确定上述交易数据不在交易池中且不在区块链账本中,因此第一验证结果为验证通过;当交易池或区块链账本中包括与上述哈希值相同的哈希值时,则可确定上述交易数据已经包含在了交易池中或交易数据已经上链(即已经写入了区块链账本),则第一验证结果为验证失败。可选的,为判断交易数据的有效性,还可以基于第一线程在区块链中获取交易数据转出方对应的历史数据余量,若历史数据余量不小于交易数据转移量和第三方数据转移量之和,则可确定第一验证结果为验证通过。这里,交易数据转移量是从交易数据转出方转至交易数据转入方的数据量,例如以转账为例,交易数据转移量是转出方账户向转入方账户转移的转账金额。第三方数据转移量是从交易数据转出方转至第三方(即非数据转入方,非数据转出方)的数据量,例如同样以转账为例,第三方数据转移量可以理解为转出方账户需要向银行支付的手续费,其中第三方即为银行方。历史数据余量可理解为交易数据转出方当前状态下剩余的数据量,以转账为例,历史数据余量可以是转出方账户当前的账户余额。不难理解的是,当交易数据转出方的历史数据余量小于交易数据转移量和/或历史数据余量小于第三方数据转移量和/或历史数据余量小于第三方数据转移量和交易数据转移量之和时,可确定第一验证结果为验证失败。可选的,第一验证还可以是验证交易数据的数据量是否小于预设数据量,或者第一验证还可以是验证交易数据转移量是否为非负等,在此不做限制。在执行交易数据的第二验证时,可基于第二线程通过公钥对交易数字签名进行解密以得到第一摘要信息,然后通过计算交易发起方、交易数据转移量以及交易接收方对应的第二摘要信息,可基于第一摘要信息和第二摘要信息确定交易数据的第二验证结果,其中若第一摘要信息和第二摘要信息相同,则确定第二验证结果为验证通过,若第一摘要信息与第二摘要信息不同,说明交易数据中包括的交易发起方、交易数据转移量和交易接收方在传输过程中被恶意篡改过,则确定第二验证结果为验证失败。
可选的,在一些可行的实施方式中,当针对一条交易数据进行第一验证和/或第二验证所需要验证的项数过多时,或者所接收到的一个交易请求中包括多笔交易数据时,或者同时接受到多个交易请求时,还可以分别从第一子线程池和/或第二子线程池中分配多个第一线程用于执行交易数据的第一验证,多个第二线程用于执行交易数据的第二验证,也就是说,可通过进一步增加并发执行的第一线程的数量和/或第二线程的数量以缩短第一验证和/或第二验证的验证时间。
103、当第一验证结果和第二验证结果皆为验证通过时,将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。
在一些可行的实施方式中,针对交易数据的交易验证,一些交易数据可能只需要进行第一验证,一些交易数据可能只需要进行第二验证,而某些交易数据可能既需要执行第一验证又要执行第二验证,因此针对只需要执行一种验证的交易数据,当其验证结果为验证通过时,即可将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。而针对需要同时执行两种验证的交易数据,只有当第一验证结果和第二验证结果皆为验证通过时,才将交易请求中包括的交易数据添加至交易池中作为待打包交易数据,而当第一验证结果和第二验证结果中任一验证结果为验证失败时,拒绝交易请求。
在本申请实施例中,当接收到交易请求时,通过获取第一子线程池中包括的第一线程和第二子线程池中包括的第二线程,可基于第一线程执行交易数据的第一验证以生成第一验证结果,同时基于第二线程执行交易数据的第二验证以生成第二验证结果,并且当第一验证结果和第二验证结果皆为验证通过时,将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。采用本申请实施例,可加快交易验证的速度,提高交易验证的效率,缩短交易验证的时间,适用性高。
参见图4,图4是本申请实施例提供的交易验证方法的另一流程示意图。本申请实施例提供的交易验证方法可通过如下步骤201至204提供的实现方式进行说明:
201、当接收到交易请求时,获取第一子线程池中各第一线程对应的各第一线程负载和第二子线程池中各第二线程对应的各第二线程负载,从各第一线程负载中确定出最小第一线程负载对应的第一线程,以及从各第二线程负载中确定出最小第二线程负载对应的第二线程。
在一些可行的实施方式中,当接收到交易请求时,通过获取第一子线程池中各第一线程对应的各第一线程负载,第二子线程池中各第二线程对应的各第二线程负载,可从各第一线程负载中确定出最小第一线程负载对应的第一线程用于执行本次交易的第一验证,以及从各第二线程负载中确定出最小第二线程负载对应的第二线程用于执行本次交易的第二验证。其中第一线程负载和第二线程负载可以是任务排队数,优选的,当第一子线程池和/或第二子线程池中存在空闲线程时,可将第一子线程池中的空闲线程确定为用于执行第一验证的第一线程,将第二子线程池中的空闲线程确定为用于执行第二验证的第二线程。应当理解的是,第一子线程池和第二子线程池是根据交易验证需求将线程池进行划分后,所得到的两个子线程池,其中,每个子线程池中至少包括1个线程,为方便描述,可将第一子线程池中包括的线程简称为第一线程,将第二线程池中包括的线程简称为第二线程,且第一子线程池中第一线程的数量(即第一线程总数)与第二子线程池中第二线程的数量(即第二线程总数)之和等于线程池中的线程总数。在本申请实施例中,第一验证可以为有状态验证,第二验证可以为无状态验证,或者第一验证为无状态验证,第二验证为有状态验证,为方便描述,本申请实施例中皆以第一验证为有状态验证,第二验证为无状态验证为例进行说明。通常而言,有状态验证是一种与存储有关的验证,其主要与终端的读写性能相关,比如验证交易数据是否已经存在,账户余额是否足够等,无状态验证则主要涉及终端的计算能力,例如验证交易签名等,在此不做限制。
可选的,在一些可行的实施方式中,为实现资源的最大利用率以及资源的集中管理,将相同业务类型或者具有相似业务处理流程的业务划分给相同的线程处理往往执行效率更高,更能缩短执行时间。因此当交易数据中还包括交易业务标识时,可从第一子线程池和第二子线程池中分别确定出与上述交易业务标识相同的最近一次交易数据对应的第一线程和第二线程作为处理本次交易数据对应的第一线程和第二线程。应当理解的是,上述交易业务标识为用来表示业务类型的标识,其中该标识可由数字、字母和/或符号组合而成,在此不做限制。
202、基于第一线程执行交易数据的第一验证以生成第一验证结果,同时基于第二线程执行交易数据的第二验证以生成第二验证结果。
在一些可行的实施方式中,所接收到的交易请求中可包括交易数据,其中,交易数据可以是转账数据、审批数据、合同数据以及其他数据等,在此不做限制。为方便描述,以下本申请实施以交易数据为转账数据为例进行说明。通常而言,转账数据中可包括交易创建时间、交易数据转出方、交易数据转移量、交易数据转入方、第三方数据转移量,交易数字签名以及交易数据转出方对应的公钥等,在此不做限制。参见图5,图5是本申请实施例提供的基于第一线程和第二线程执行交易验证的示意图。在执行第一验证和第二验证时,通过提取交易数据中包括的第一交易数据和第二交易数据,可将第一交易数据发送至第一线程,同时将第二交易数据发送至第二线程。其中第一交易数据为执行第一验证时所需要用到的交易数据中的部分或全部数据,同理第二交易数据可以是执行第二验证时所需要用到的交易数据中的部分或全部数据,在此不做限制。通过接收第一线程根据第一交易数据执行第一验证生成并返回的第一验证结果,以及第二线程根据第二交易数据执行第二验证生成并返回的第二验证结果,可根据第一验证结果和第二验证结果确定后续执行步骤。
例如,在一些可行的实施方式中,当执行交易数据的第一验证时,可基于第一线程计算交易数据对应的哈希值,并基于哈希值在交易池和区块链账本中进行遍历以判断该交易数据是否已经存在于交易池和区块链账本中,若交易池和区块链账本中皆不包括与上述哈希值相同的哈希值,则可确定上述交易数据不在交易池中且不在区块链账本中,因此第一验证结果为验证通过;当交易池或区块链账本中包括与上述哈希值相同的哈希值时,则可确定上述交易数据已经包含在了交易池中或交易数据已经上链(即已经写入了区块链账本),则第一验证结果为验证失败。参见图6,图6是本申请实施例提供的区块链账本和区块结构的示意图。如图6所示的区块链账本包括区块N,区块N+1和区块N+2,其中,N为正整数。每个区块中均可以包含前一个区块的哈希值以及相应的交易数据,即区块链账本中的区块所包含的数据具备唯一性和可追溯性。其中,如图6所示,区块N中可以包含该区块N的前一区块哈希值(即图6所示的区块N-1的哈希值)和交易数据X。同理,区块N+1中可以包含该区块N+1的前一区块哈希值(即图6所示的区块N的哈希值)和交易数据Y;以此类推,区块N+2中可以包含该区块N+2的前一区块哈希值(即图6所示的区块N+1的哈希值)和交易数据Z。进一步地,为便于理解,本申请实施例以区块N+1为例,阐述该区块N+1的区块结构。区块N+1可由图6所示的区块头和区块体组成,其中区块头中可以包含前一区块的哈希值(即图6所示的区块N的哈希值)、时间戳、计算的难度值、为生成区块N+1所设置的随机数,以及默克尔树根(即本区块的哈希值,这里本区块即区块N+1)等。此外,如图6所示的区块体中可以包含区块N+1生成之前、区块N生成之后的这段时间内从交易池中所获取并打包的交易数据1、交易数据2、交易数据3和交易数据4等,这些交易数据可以通过默克尔树的形式组织在一起。应当理解,默克尔树的构建过程是一个递归计算散列值的过程。以图6中的交易数据1、交易数据2、交易数据3和交易数据4为例,基于SHA256算法可分别计算得到交易数据1对应的哈希值1(即Hash1),交易数据2对应的哈希值2(即Hash2),交易数据3对应的哈希值3(即Hash3),交易数据4对应的哈希值4(即Hash4)。进一步的,将Hash1和Hash2串联起来,继续做散列变换,可以得到图6所示的哈希值12(即Hash12),以此类推,将Hash3和Hash4串联起来做散列变换,可以得到图6所示的哈希值34(即Hash34),从而可以进一步将Hash12和Hash34串联起来进行散列变换以得到哈希值1234(即Hash1234)。此时,本申请实施例可以将该最后得到的所有交易数据的哈希值作为区块N+1的默克尔树根。可以看到,默克尔树的可扩展性很好,不管交易数据有多少,最后都可以产生一个默克尔树以及固定长度的默克尔树根。
可选的,在一些可行的实施方式中,为判断交易数据的有效性,还可以基于第一线程在区块链中获取交易数据转出方对应的历史数据余量,若历史数据余量不小于交易数据转移量和第三方数据转移量之和,则可确定第一验证结果为验证通过。这里,交易数据转移量是从交易数据转出方转至交易数据转入方的数据量,例如以转账为例,交易数据转移量是转出方账户向转入方账户转移的转账金额。第三方数据转移量是从交易数据转出方转至第三方(即非数据转入方,非数据转出方)的数据量,例如同样以转账为例,第三方数据转移量可以理解为转出方账户需要向银行支付的手续费,其中第三方即为银行方。历史数据余量可理解为交易数据转出方当前状态下剩余的数据量,以转账为例,历史数据余量可以是转出方账户当前的账户余额。不难理解的是,当交易数据转出方的历史数据余量小于交易数据转移量和/或历史数据余量小于第三方数据转移量和/或历史数据余量小于第三方数据转移量和交易数据转移量之和时,可确定第一验证结果为验证失败。可选的,第一验证还可以是验证交易数据的数据量是否小于预设数据量,或者第一验证还可以是验证交易数据转移量是否为非负等,在此不做限制。
在一些可行的实施方式中,在执行交易数据的第二验证时,可基于第二线程通过公钥对交易数字签名进行解密以得到第一摘要信息,然后通过计算交易发起方、交易数据转移量以及交易接收方对应的第二摘要信息,可基于第一摘要信息和第二摘要信息确定交易数据的第二验证结果,其中若第一摘要信息和第二摘要信息相同,则确定第二验证结果为验证通过,若第一摘要信息与第二摘要信息不同,说明交易数据中包括的交易发起方、交易数据转移量和交易接收方在传输过程中被恶意篡改过,则确定第二验证结果为验证失败。
可选的,在一些可行的实施方式中,当针对一条交易数据进行第一验证和/或第二验证所需要验证的项数过多时,或者所接收到的一个交易请求中包括多笔交易数据时,或者同时接受到多个交易请求时,还可以分别从第一子线程池和/或第二子线程池中分配多个第一线程用于执行交易数据的第一验证,多个第二线程用于执行交易数据的第二验证,也就是说,可通过进一步增加并发执行的第一线程的数量和/或第二线程的数量以缩短第一验证和/或第二验证的验证时间。
203、当第一验证结果和第二验证结果皆为验证通过时,将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。
在一些可行的实施方式中,针对交易数据的交易验证,一些交易数据可能只需要进行第一验证,一些交易数据可能只需要进行第二验证,而某些交易数据可能既需要执行第一验证又要执行第二验证,因此针对只需要执行一种验证的交易数据,当其验证结果为验证通过时,即可将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。而针对需要同时执行两种验证的交易数据,只有当第一验证结果和第二验证结果皆为验证通过时,才将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。
204、获取第一子线程池中的第一线程空闲数和第二子线程池中的第二线程空闲数,当第一线程空闲数与第二线程空闲数的比值小于第一预设阈值时,将部分第二线程从第二子线程池中移出以加入到第一子线程池中。
在一些可行的实施方式中,为充分利用线程池中的线程资源,提高资源利用率,通过获取第一子线程池中被占用的第一线程占用数和第二线程池中被占用的第二线程占用数,可根据第一线程总数、第一线程占用数、第二线程总数、第二线程占用数确定出第一子线程池中的第一线程空闲数和第二子线程池中的第二线程空闲数,即第一线程总数与第一线程占用数之差等于第一线程空闲数,第二线程总数与第二线程占用数之差等于第二线程空闲数,且第一线程总数与第二线程总数之和始终等于线程总数。其中当第一线程空闲数与第二线程空闲数的比值小于或者等于第一预设阈值时,可将部分第二线程从第二子线程池中移出以加入到第一子线程池中。应当理解的是,调整后的第一子线程池中的第一线程总数与第二线程池中的第二线程总数之和等于线程池中的线程总数。可选的,在获取第一线程占用数和第二线程占用数之后,若第一线程占用数与第二线程占用数的比值大于第二预设阈值,则说明第一线程占用数大于第二线程占用数,因此也可将部分第二线程从第二子线程池中移出以加入到第一子线程池中。可选的,在获取第一线程占用数和第二线程占用数之后,若第一线程占用数与第一线程总数的比值大于第三预设阈值且第二线程占用数与第二线程总数的比值小于第四预设阈值,则可将部分第二线程从第二子线程池中移出以加入到第一子线程池中。应当理解的是,第一预设阈值、第二预设阈值、第三预设阈值以及第四预设阈值的大小具体可根据实际应用场景设置,在此不做限制。
在本申请实施例中,当接收到交易请求时,通过获取第一子线程池中各第一线程对应的各第一线程负载和第二子线程池中各第二线程对应的各第二线程负载,可从各第一线程负载中确定出最小第一线程负载对应的第一线程,以及从各第二线程负载中确定出最小第二线程负载对应的第二线程。基于第一线程执行交易数据的第一验证以生成第一验证结果,同时基于第二线程执行交易数据的第二验证以生成第二验证结果,并且当第一验证结果和第二验证结果皆为验证通过时,将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。采用本申请实施例,可加快交易验证的速度,提高交易验证的效率,缩短交易验证的时间,适用性高。
参见图7,图7是本申请实施例提供的交易验证装置的结构示意图。本申请实施例提供的交易验证装置包括:
线程获取模块31,用于当接收到交易请求时,获取第一子线程池中包括的第一线程,获取第二子线程池中包括的第二线程,其中上述交易请求中包括交易数据,上述第一线程用于执行第一验证,上述第二线程用于执行第二验证;
数据验证模块32,用于基于上述第一线程执行上述交易数据的第一验证以生成第一验证结果,同时基于上述第二线程执行上述交易数据的第二验证以生成第二验证结果;
数据处理模块33,用于当上述第一验证结果和第二验证结果皆为验证通过时,将上述交易请求中包括的上述交易数据添加至交易池中作为待打包交易数据。
在一些可行的实施方式中,上述装置还包括线程调整模块34,上述线程调整模块34包括:
线程占用统计单元341,用于获取上述第一子线程池中被占用的第一线程占用数和上述第二线程池中被占用的第二线程占用数;
空闲线程确定单元342,用于根据第一线程总数、上述第一线程占用数、第二线程总数、上述第二线程占用数确定上述第一子线程池中的第一线程空闲数和上述第二子线程池中的第二线程空闲数;
线程调整单元343,用于当上述第一线程空闲数与上述第二线程空闲数的比值小于第一预设阈值时,将部分第二线程从上述第二子线程池中移出以加入到上述第一子线程池中。
在一些可行的实施方式中,上述第一验证为有状态验证;上述数据验证模块32包括第一验证单元321,上述第一验证单元321具体用于:
基于上述第一线程计算上述交易数据对应的哈希值,并基于上述哈希值在上述交易池和区块链账本中进行遍历,若上述交易池和上述区块链账本中都不包括上述哈希值,则确定上述第一验证结果为验证通过。
结合第二方面,在一种可能的实施方式中,上述第二验证为无状态验证,上述交易数据中包括交易数据转出方、交易数据转移量、交易数据转入方、交易数字签名以及上述交易数据转出方对应的公钥;上述数据验证模块32包括第二验证单元322,上述第二验证单元322具体用于:
基于上述第二线程根据上述公钥对上述交易数字签名进行解密以得到第一摘要信息;
基于上述第二线程计算上述交易发起方、上述交易数据转移量以及上述交易接收方对应的第二摘要信息;
若上述第一摘要信息和上述第二摘要信息相同,则确定上述第二验证结果为验证通过。
在一些可行的实施方式中,上述线程获取模块31包括:
线程负载获取单元311,用于当接收到上述交易请求时,获取上述第一子线程池中各第一线程对应的各第一线程负载和上述第二子线程池中各第二线程对应的各第二线程负载;
线程确定单元312,用于从上述各第一线程负载中确定出最小第一线程负载对应的第一线程,以及从上述各第二线程负载中确定出最小第二线程负载对应的第二线程。
在一些可行的实施方式中,上述数据验证模块32包括:
数据提取单元323,用于提取上述交易数据中包括的第一交易数据和第二交易数据,将上述第一交易数据发送至上述第一线程,同时将上述第二交易数据发送至上述第二线程;
验证结果接收单元324,用于接收上述第一线程根据上述第一交易数据执行第一验证生成并返回的第一验证结果,以及上述第二线程根据上述第二交易数据执行第二验证生成并返回的第二验证结果。
结合第二方面,在一种可能的实施方式中,上述交易数据中包括交易业务标识;上述线程获取模块31具体用于:
从上述第一子线程池和上述第二子线程池中分别确定出与上述交易业务标识相同的最近一次交易数据对应的第一线程和第二线程。
具体实现中,上述交易验证装置可通过其内置的各个功能模块执行如上述图2至图4中各个步骤所提供的实现方式。例如,上述线程获取模块31可用于执行上述各个步骤中接收交易请求,以及获取第一线程和第二线程等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述数据验证模块32可用于执行上述各个步骤中基于第一线程执行第一验证、基于第二线程执行第二验证等相关步骤所描述的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述数据处理模块33可用于执行上述各个步骤中根据生成的第一验证结果和第二验证结果,确定是否将交易数据添加至交易池中等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述线程调整模块34可用于执行上述各个步骤中获取第一线程空闲数、获取第二空闲线程数、根据第一线程空闲数和第二线程空闲数调整第一线程总数和第二线程总数等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
在本申请实施例中,交易验证装置在接收到交易请求时,通过获取第一子线程池中包括的第一线程和第二子线程池中包括的第二线程,可基于第一线程执行交易数据的第一验证以生成第一验证结果,同时基于第二线程执行交易数据的第二验证以生成第二验证结果,并且当第一验证结果和第二验证结果皆为验证通过时,将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。采用本申请实施例,可加快交易验证的速度,提高交易验证的效率,缩短交易验证的时间,灵活性高,适用范围广。
参见图8,图8是本申请实施例提供的终端设备的结构示意图。如图8所示,本实施例中的终端设备可以包括:一个或多个处理器401和存储器402。上述处理器401和存储器402通过总线403连接。存储器402用于存储计算机程序,该计算机程序包括程序指令,处理器401用于执行存储器402存储的程序指令,执行如下操作:
当接收到交易请求时,获取第一子线程池中包括的第一线程,获取第二子线程池中包括的第二线程,其中上述交易请求中包括交易数据,上述第一线程用于执行第一验证,上述第二线程用于执行第二验证;
基于上述第一线程执行上述交易数据的第一验证以生成第一验证结果,同时基于上述第二线程执行上述交易数据的第二验证以生成第二验证结果;
当上述第一验证结果和第二验证结果皆为验证通过时,将上述交易请求中包括的上述交易数据添加至交易池中作为待打包交易数据。
在一些可行的实施方式中,上述处理器401用于:
获取上述第一子线程池中被占用的第一线程占用数和上述第二线程池中被占用的第二线程占用数;
根据第一线程总数、上述第一线程占用数、第二线程总数、上述第二线程占用数确定上述第一子线程池中的第一线程空闲数和上述第二子线程池中的第二线程空闲数;
当上述第一线程空闲数与上述第二线程空闲数的比值小于第一预设阈值时,将部分第二线程从上述第二子线程池中移出以加入到上述第一子线程池中。
在一些可行的实施方式中,上述第一验证为有状态验证;上述处理器401用于:
基于上述第一线程计算上述交易数据对应的哈希值,并基于上述哈希值在上述交易池和区块链账本中进行遍历,若上述交易池和上述区块链账本中都不包括上述哈希值,则确定上述第一验证结果为验证通过。
在一些可行的实施方式中,上述第二验证为无状态验证,上述交易数据中包括交易数据转出方、交易数据转移量、交易数据转入方、交易数字签名以及上述交易数据转出方对应的公钥;上述处理器401用于:
基于上述第二线程根据上述公钥对上述交易数字签名进行解密以得到第一摘要信息;
基于上述第二线程计算上述交易发起方、上述交易数据转移量以及上述交易接收方对应的第二摘要信息;
若上述第一摘要信息和上述第二摘要信息相同,则确定上述第二验证结果为验证通过。
在一些可行的实施方式中,上述处理器401用于:
当接收到上述交易请求时,获取上述第一子线程池中各第一线程对应的各第一线程负载和上述第二子线程池中各第二线程对应的各第二线程负载;
从上述各第一线程负载中确定出最小第一线程负载对应的第一线程,以及从上述各第二线程负载中确定出最小第二线程负载对应的第二线程用于执行第二验证。
在一些可行的实施方式中,上述处理器401用于:
提取上述交易数据中包括的第一交易数据和第二交易数据,将上述第一交易数据发送至上述第一线程,同时将上述第二交易数据发送至上述第二线程;
接收上述第一线程根据上述第一交易数据执行第一验证生成并返回的第一验证结果,以及上述第二线程根据上述第二交易数据执行第二验证生成并返回的第二验证结果。
在一些可行的实施方式中,上述交易数据中包括交易业务标识;上述处理器401用于:
从上述第一子线程池和上述第二子线程池中分别确定出与上述交易业务标识相同的最近一次交易数据对应的第一线程和第二线程。
应当理解,在一些可行的实施方式中,上述处理器401可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器402可以包括只读存储器和随机存取存储器,并向处理器401提供指令和数据。存储器402的一部分还可以包括非易失性随机存取存储器。例如,存储器402还可以存储设备类型的信息。
具体实现中,上述终端设备可通过其内置的各个功能模块执行如上述图2至图4中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
在本申请实施例中,终端设备在接收到交易请求时,通过获取第一子线程池中包括的第一线程和第二子线程池中包括的第二线程,可基于第一线程执行交易数据的第一验证以生成第一验证结果,同时基于第二线程执行交易数据的第二验证以生成第二验证结果,并且当第一验证结果和第二验证结果皆为验证通过时,将交易请求中包括的交易数据添加至交易池中作为待打包交易数据。采用本申请实施例,可加快交易验证的速度,提高交易验证的效率,缩短交易验证的时间,灵活性高,适用范围广。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图2至图4中各个步骤所提供的交易验证方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的交易验证装置或者上述终端设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smartmedia card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
Claims (8)
1.一种交易验证方法,其特征在于,所述方法包括:
当接收到交易请求时,获取第一子线程池中包括的第一线程,获取第二子线程池中包括的第二线程,其中所述交易请求中包括交易数据,所述交易数据包括交易数据转出方、交易数据转移量、交易数据转入方、交易数字签名以及所述交易数据转出方对应的公钥,所述第一线程用于执行第一验证,所述第二线程用于执行第二验证,所述第一验证为有状态验证且所述第二验证为无状态验证,或者,所述第一验证为无状态验证且所述第二验证为有状态验证;
基于所述第一线程执行所述交易数据的第一验证以生成第一验证结果,同时基于所述第二线程执行所述交易数据的第二验证以生成第二验证结果;
当所述第一验证结果和第二验证结果皆为验证通过时,将所述交易请求中包括的所述交易数据添加至交易池中作为待打包交易数据;
其中,若所述第一验证为有状态验证且所述第二验证为无状态验证,所述基于所述第一线程执行所述交易数据的第一验证以生成第一验证结果,同时基于所述第二线程执行所述交易数据的第二验证以生成第二验证结果,包括:
基于所述第一线程计算所述交易数据对应的哈希值,并基于所述哈希值在所述交易池和区块链账本中进行遍历,若所述交易池和所述区块链账本中都不包括所述哈希值,则确定所述第一验证结果为验证通过;
基于所述第二线程根据所述公钥对所述交易数字签名进行解密以得到第一摘要信息;基于所述第二线程计算所述交易数据转出方、所述交易数据转移量以及所述交易数据转入方对应的第二摘要信息;若所述第一摘要信息和所述第二摘要信息相同,则确定所述第二验证结果为验证通过。
2.根据权利要求1所述方法,其特征在于,所述方法还包括:
获取所述第一子线程池中被占用的第一线程占用数和所述第二线程池中被占用的第二线程占用数;
根据第一线程总数、所述第一线程占用数、第二线程总数、所述第二线程占用数确定所述第一子线程池中的第一线程空闲数和所述第二子线程池中的第二线程空闲数;
当所述第一线程空闲数与所述第二线程空闲数的比值小于第一预设阈值时,将部分第二线程从所述第二子线程池中移出以加入到所述第一子线程池中。
3.根据权利要求1所述方法,其特征在于,所述获取第一子线程池中包括的第一线程和第二子线程池中包括的第二线程,包括:
当接收到所述交易请求时,获取所述第一子线程池中各第一线程对应的各第一线程负载和所述第二子线程池中各第二线程对应的各第二线程负载;
从所述各第一线程负载中确定出最小第一线程负载对应的第一线程,以及从所述各第二线程负载中确定出最小第二线程负载对应的第二线程。
4.根据权利要求1所述方法,其特征在于,所述基于所述第一线程执行所述交易数据的第一验证以生成第一验证结果,同时基于所述第二线程执行所述交易数据的第二验证以生成第二验证结果,包括:
提取所述交易数据中包括的第一交易数据和第二交易数据,将所述第一交易数据发送至所述第一线程,同时将所述第二交易数据发送至所述第二线程;
接收所述第一线程根据所述第一交易数据执行第一验证生成并返回的第一验证结果,以及所述第二线程根据所述第二交易数据执行第二验证生成并返回的第二验证结果。
5.根据权利要求1所述方法,其特征在于,所述交易数据中包括交易业务标识;所述获取第一子线程池中包括的第一线程和第二子线程池中包括的第二线程,包括:
从所述第一子线程池和所述第二子线程池中分别确定出与所述交易业务标识相同的最近一次交易数据对应的第一线程和第二线程。
6.一种交易验证装置,其特征在于,所述装置包括:
线程获取模块,用于当接收到交易请求时,获取第一子线程池中包括的第一线程,获取第二子线程池中包括的第二线程,其中所述交易请求中包括交易数据,所述交易数据包括交易数据转出方、交易数据转移量、交易数据转入方、交易数字签名以及所述交易数据转出方对应的公钥,所述第一线程用于执行第一验证,所述第二线程用于执行第二验证,所述第一验证为有状态验证且所述第二验证为无状态验证,或者,所述第一验证为无状态验证且所述第二验证为有状态验证;
数据验证模块,用于基于所述第一线程执行所述交易数据的第一验证以生成第一验证结果,同时基于所述第二线程执行所述交易数据的第二验证以生成第二验证结果;
数据处理模块,用于当所述第一验证结果和第二验证结果皆为验证通过时,将所述交易请求中包括的所述交易数据添加至交易池中作为待打包交易数据;
其中,若所述第一验证为有状态验证且所述第二验证为无状态验证,所述数据验证模块包括:
第一验证单元,用于基于所述第一线程计算所述交易数据对应的哈希值,并基于所述哈希值在所述交易池和区块链账本中进行遍历,若所述交易池和所述区块链账本中都不包括所述哈希值,则确定所述第一验证结果为验证通过;
第二验证单元,用于基于所述第二线程根据所述公钥对所述交易数字签名进行解密以得到第一摘要信息;基于所述第二线程计算所述交易数据转出方、所述交易数据转移量以及所述交易数据转入方对应的第二摘要信息;若所述第一摘要信息和所述第二摘要信息相同,则确定所述第二验证结果为验证通过。
7.一种终端设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;
所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-5任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时所述处理器执行如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910895286.7A CN110659905B (zh) | 2019-09-20 | 2019-09-20 | 交易验证方法、装置、终端设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910895286.7A CN110659905B (zh) | 2019-09-20 | 2019-09-20 | 交易验证方法、装置、终端设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110659905A CN110659905A (zh) | 2020-01-07 |
CN110659905B true CN110659905B (zh) | 2023-09-22 |
Family
ID=69037550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910895286.7A Active CN110659905B (zh) | 2019-09-20 | 2019-09-20 | 交易验证方法、装置、终端设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659905B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111581214B (zh) * | 2020-05-07 | 2023-07-18 | 成都汉为科技有限公司 | 适用于能源区块链的并行merkle树构建与验证方法 |
CN111752717B (zh) * | 2020-07-08 | 2021-08-31 | 广州爱浦路网络技术有限公司 | Smf智能扩展方法和装置、smf会话建立的通信方法 |
CN115398397A (zh) | 2020-08-03 | 2022-11-25 | 支付宝(杭州)信息技术有限公司 | 区块链交易处理系统和方法 |
CN112019350B (zh) * | 2020-08-31 | 2024-02-02 | 光大科技有限公司 | 区块链的区块验证方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630609A (zh) * | 2016-02-24 | 2016-06-01 | 杭州复杂美科技有限公司 | 区块链的打包存储方法 |
CN107678865A (zh) * | 2017-09-20 | 2018-02-09 | 中国银行股份有限公司 | 基于交易分组的区块链的验证方法以及系统 |
CN108319704A (zh) * | 2018-02-05 | 2018-07-24 | 北京中关村科金技术有限公司 | 一种分析数据的方法、装置、设备及存储介质 |
CN108846674A (zh) * | 2018-07-12 | 2018-11-20 | 众安信息技术服务有限公司 | 在区块链中验证签名的方法和装置 |
WO2019041759A1 (zh) * | 2017-09-04 | 2019-03-07 | 深圳壹账通智能科技有限公司 | 服务器、区块链验签解密的方法及存储介质 |
CN109921895A (zh) * | 2019-02-26 | 2019-06-21 | 成都国科微电子有限公司 | 一种数据Hash值的计算方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201720767D0 (en) * | 2017-12-13 | 2018-01-24 | Barker Trevor | Computer-implemented system and method |
-
2019
- 2019-09-20 CN CN201910895286.7A patent/CN110659905B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630609A (zh) * | 2016-02-24 | 2016-06-01 | 杭州复杂美科技有限公司 | 区块链的打包存储方法 |
WO2019041759A1 (zh) * | 2017-09-04 | 2019-03-07 | 深圳壹账通智能科技有限公司 | 服务器、区块链验签解密的方法及存储介质 |
CN107678865A (zh) * | 2017-09-20 | 2018-02-09 | 中国银行股份有限公司 | 基于交易分组的区块链的验证方法以及系统 |
CN108319704A (zh) * | 2018-02-05 | 2018-07-24 | 北京中关村科金技术有限公司 | 一种分析数据的方法、装置、设备及存储介质 |
CN108846674A (zh) * | 2018-07-12 | 2018-11-20 | 众安信息技术服务有限公司 | 在区块链中验证签名的方法和装置 |
CN109921895A (zh) * | 2019-02-26 | 2019-06-21 | 成都国科微电子有限公司 | 一种数据Hash值的计算方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110659905A (zh) | 2020-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110659905B (zh) | 交易验证方法、装置、终端设备以及存储介质 | |
CN112862612B (zh) | 一种跨链发送资源的方法和装置 | |
CN107040585B (zh) | 一种业务校验的方法及装置 | |
CN111445333B (zh) | 区块生成方法、装置、计算机设备以及存储介质 | |
CN110189121B (zh) | 数据处理方法、装置、区块链客户端和区块链节点 | |
CN110570196A (zh) | 交易数据处理方法、装置、终端设备以及存储介质 | |
CN110163609B (zh) | 一种区块链中数据处理方法及装置 | |
CN108550038A (zh) | 一种应用于区块链的数据传播系统及方法 | |
CN111064583B (zh) | 一种门限sm2数字签名方法、装置、电子设备及存储介质 | |
CN111163130B (zh) | 一种网络服务系统及其数据传输方法 | |
CN110740044B (zh) | 数据处理方法、装置、系统和存储介质 | |
CN111010284B (zh) | 一种待共识区块的处理方法、相关装置及区块链系统 | |
CN110555079B (zh) | 数据处理方法、装置、设备以及存储介质 | |
CN112036878B (zh) | 数据处理方法及装置 | |
CN109587131A (zh) | 一种区块链网络间数据通信方法和装置 | |
CN111985007A (zh) | 一种基于区块链的合同签署与执行方法及装置 | |
CN110505311A (zh) | 一种同构区块链跨链交互方法和系统 | |
CN113556238B (zh) | 区块验证方法 | |
CN113409047B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN110221914B (zh) | 文件处理方法及装置 | |
CN109413099B (zh) | 基于证书的混合云加密通信方法、装置以及电子设备 | |
CN113935737A (zh) | 基于区块链的随机数生成方法及装置 | |
CN109921897A (zh) | 工作量证明计算的触发方法、装置、计算设备及存储介质 | |
CN109683995B (zh) | 一种打包区块、验证区块和智能合约执行的方法 | |
CN116722973A (zh) | Cpk密钥安全传输方法、存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |