CN113190567B - 一种交易检测方法和装置 - Google Patents
一种交易检测方法和装置 Download PDFInfo
- Publication number
- CN113190567B CN113190567B CN202110465407.1A CN202110465407A CN113190567B CN 113190567 B CN113190567 B CN 113190567B CN 202110465407 A CN202110465407 A CN 202110465407A CN 113190567 B CN113190567 B CN 113190567B
- Authority
- CN
- China
- Prior art keywords
- transaction
- information
- transaction information
- replay
- determined
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000012217 deletion Methods 0.000 claims description 13
- 230000037430 deletion Effects 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 3
- 238000012986 modification Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Abstract
本说明书实施例提供了一种交易检测方法和装置,所述方法包括:获取第一交易的特征信息;获取交易信息集合,所述交易信息集合中的每个交易信息对应的交易都具有所述特征信息;在对于所述交易信息集合中的每个交易信息确定所述第一交易不是重放交易的情况中,将所述第一交易加入所述交易信息集合。
Description
技术领域
本说明书实施例涉及区块链技术领域,更具体地,涉及一种交易检测方法和装置。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。在区块链中执行交易之前,需要对交易进行重放检测,以防止相同的交易被重复执行。在相关技术中,使用单线程对多个交易串行进行重放检测。
发明内容
本说明书实施例旨在提供一种更有效的交易检测方案,使得提高对交易的重放检测的效率。
为实现上述目的,本说明书一个方面提供一种交易检测方法,包括:
获取第一交易的特征信息;
获取交易信息集合,所述交易信息集合中的每个交易信息对应的交易都具有所述特征信息;
在对于所述交易信息集合中的每个交易信息确定所述第一交易不是重放交易的情况中,将所述第一交易的信息加入所述交易信息集合。
在一种实施方式中,所述交易信息集合为交易链表。
在一种实施方式中,将所述第一交易的信息加入所述交易信息集合包括,将所述第一交易的信息写入到所述交易链表的尾部。
在一种实施方式中,将所述第一交易的信息写入到所述交易链表的尾部包括,通过原子写入操作的方式将所述第一交易的信息写入到所述交易链表的尾部。
在一种实施方式中,所述方法还包括,在写入失败的情况中,并且在相对于所述交易链表中新增加的交易信息确定所述第一交易不是重放交易的情况中,将所述第一交易的信息写入到所述交易链表的尾部。
在一种实施方式中,在获取交易信息集合之后,所述方法还包括,对所述交易信息集合加读锁,读取所述交易信息集合中的交易信息,在对所述交易信息集合读取完成之后,对所述交易信息集合释放读锁。
在一种实施方式中,所述交易信息集合中还包括第二交易的信息,所述方法还包括,在确定所述第二交易为重放交易的情况中,在所述交易信息集合的读锁释放之后,对所述交易信息集合加写锁,从所述交易信息集合删除所述第二交易的信息,在所述删除完成之后对所述交易信息集合释放写锁。
在一种实施方式中,所述方法还包括:所述交易信息集合还包括各个交易的接收时间,在所述交易信息集合的读锁释放之后,对所述交易信息集合加写锁,从所述交易信息集合删除接收时间早于预定时间的各个交易的信息,在所述删除完成之后对所述交易信息集合释放写锁。
在一种实施方式中,获取第一交易的特征信息包括,通过预定散列函数获取第一交易的特征信息,所述预定散列函数用于将任一交易映射为预定数目的特征信息中的一个特征信息。
在一种实施方式中,获取交易信息集合包括,确定特征信息归属表中与所述特征信息对应的位置是否已经写入其它交易的标识,如果确定未写入其它交易的标识,在所述位置写入所述第一交易的标识,并确定所述交易信息集合为空集,如果确定已经写入第三交易的标识,基于所述第三交易与所述交易信息集合的对应关系获取所述交易信息集合。
在一种实施方式中,所述方法还包括,在确定所述第二交易为重放交易的情况中,在无效交易表中对所述第二交易进行标记。
本说明书另一方面提供一种交易检测装置,包括:
获取单元,用于获取第一交易的特征信息,以及用于获取交易信息集合,所述交易信息集合中的每个交易信息对应的交易都具有所述特征信息;
加入单元,用于在对于所述交易信息集合中的每个交易信息确定所述第一交易不是重放交易的情况中,将所述第一交易的信息加入所述交易信息集合。
在一种实施方式中,所述交易信息集合为交易链表。
在一种实施方式中,所述加入单元具体用于,将所述第一交易的信息写入到所述交易链表的尾部。
在一种实施方式中,所述加入单元具体用于,通过原子写入操作的方式将所述第一交易的信息写入到所述交易链表的尾部。
在一种实施方式中,所述加入单元还用于,在写入失败的情况中,并且在相对于所述交易链表中新增加的交易确定所述第一交易不是重放交易的情况中,将所述第一交易的信息写入到所述交易链表的尾部。
在一种实施方式中,所述装置还包括,锁定单元,用于在获取交易信息集合之后对所述交易信息集合加读锁,读取所述交易信息集合中的交易信息,在对所述交易信息集合读取完成之后,对所述交易信息集合释放读锁。
在一种实施方式中,所述交易信息集合中还包括第二交易的信息,所述锁定单元还用于,在确定所述第二交易为重放交易的情况中,在所述交易信息集合的读锁释放之后,对所述交易信息集合加写锁,从所述交易信息集合删除所述第二交易的信息,在所述删除完成之后对所述交易信息集合释放写锁。
在一种实施方式中,所述交易信息集合还包括各个交易的接收时间,所述锁定单元还用于:在所述交易信息集合的读锁释放之后,对所述交易信息集合加写锁,从所述交易信息集合删除接收时间早于预定时间的各个交易的信息,在所述删除完成之后对所述交易信息集合释放写锁。
在一种实施方式中,所述获取单元还用于,通过预定散列函数获取第一交易的特征信息,所述预定散列函数用于将任一交易映射为预定数目的特征信息中的一个特征信息。
在一种实施方式中,所述获取单元还用于,确定特征信息归属表中与所述特征信息对应的位置是否已经写入其它交易的标识,如果确定未写入其它交易的标识,在所述位置写入所述第一交易的标识,并确定所述交易信息集合为空集,如果确定已经写入第三交易的标识,基于所述第三交易与所述交易信息集合的对应关系获取所述交易信息集合。
在一种实施方式中,所述装置还包括,标记单元,用于在确定所述第二交易为重放交易的情况中,在无效交易表中对所述第二交易进行标记。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的交易检测方案,可以通过多个线程对一批交易并行进行重放检测,提高了重放检测的效率。
附图说明
通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:
图1为一种区块链系统的架构图;
图2示出了根据本说明书实施例的一种交易检测方法的流程图;
图3示出了根据本说明书实施例的用于进行重放检测的数据结构示意图;
图4示出本说明书实施例提供的一种交易检测装置。
具体实施方式
下面将结合附图描述本说明书实施例。
图1为一种区块链系统的架构图。在图1示出的架构图中,节点1~节点6均为区块链中的节点。可以理解,图1仅示例性地示出6个区块链节点,实际上区块链中可以包括任意数目的区块链节点。在区块链中可通过共识确定一个记账节点(可以是区块链节点中的任意一个),记账节点可以确定属于将要生成的区块的多个交易以及该多个交易的执行顺序,并将该确定结果发送给区块链中的每个节点(或者全节点)。区块链中的任一节点在从记账节点接收到上述确定结果之后,可根据上述确定结果对所述多个交易进行重放检测,即确定所述多个交易中是否存在重放交易。
重放交易例如可以如下产生。例如,节点2对应的账户A签署了向节点6对应的账户B转账预定数额的交易并将该交易发送到区块链中,这笔交易中包括账户A的账户地址、账户B的账户地址、转账金额、账户A的交易计数(nonce)和账户A对该交易的签名。其中,交易计数用于表示账户A签署的交易的次序,由账户A签署的不同交易具有不同的交易计数。区块链中的各个节点在执行该交易之后,将会对账户A的余额减少所述预定数额,对账户B的余额增加所述预定数额,以完成该转账事务。然而,区块链中的恶意节点(例如账户6)在接收到该交易之后有可能将该交易再重新发送到区块链网络中(即进行交易重放),如果不对重放交易进行检测,区块链中将正常执行该交易,并再次对账户A的余额减少所述预定数额,对账户B的余额增加所述预定数额,从而导致错误的执行结果。
为此,在区块链中的记账节点确定属于将要生成的区块的一批交易之后,各个节点需要检测一下该批交易中是否存在重放交易,并删除该重放交易。具体是,节点确定该批交易与之前成块的交易相比是否存在相同的交易,并确定该批交易相互比较是否存在相同的交易,如果存在多个相同的交易,保留该多个相同交易中执行顺序最早的交易,将该多个相同交易中执行顺序排在后面的交易删除。由于交易中包括nonce参数,相同的多个交易一定是由同一个账户发出的同一个交易,因此该多个交易中必然存在重放交易。
在相关技术中,通过使用单线程串行对一批交易进行重放检测,效率较低。本说明书实施例提供一种多线程并行对一批交易进行重放检测的方案,从而大大提高了重放检测的效率。下文将详细描述根据本说明书实施例的重放检测方案。
图2示出了根据本说明书实施例的一种交易检测方法的流程图,包括:
步骤S202,获取交易i的特征信息;
步骤S204,获取交易信息集合,所述交易信息集合中的每个交易信息对应的交易都具有所述特征信息;
步骤S206,在对于所述交易信息集合中的每个交易信息确定交易i不是重放交易的情况中,将交易i的信息加入所述交易信息集合。
首先,在步骤S202,获取交易i的特征信息。
在本说明书实施例中,通过多个线程并行执行图2所示方法从而实现对一批交易并行进行重放检测。例如,通过线程t1-线程t3共3个线程并行对一批交易进行重放检测,该批交易中例如包括交易0-交易49共50个交易。在初始,线程t1-线程t3可各自从该批交易中获取一个交易用于执行该方法,其中,线程t1-线程t3可按照交易的执行顺序(或者交易编号的顺序)获取交易,或者可从该批交易中获取任一交易,对此不作限定。线程t1在例如获取到交易i之后,可获取交易i的特征信息,以用于基于该特征信息进行重放交易的判断。所述特征信息可以包括交易i的全部交易数据、交易数据的哈希值、部分交易数据、交易数据的函数映射数据等各种特征信息。具有相同特征信息的交易有可能为重放交易,因此,在本实施例中,各个线程可将具有相同特征信息的交易聚集到一个集合中,并通过该集合来确定是否存在重放交易。
例如,所述特征信息可以为交易的全部交易数据,在该情况中,可确定具有相同特征信息的交易一定为重放交易。然而,如果使用交易的全部交易数据作为所述特征信息,线程对两个交易的全部交易数据的比较较为费时。所述特征信息也可以为交易数据的哈希值,在该情况中,由于哈希值冲突的概率基本为零,因此,基本可确定具有相同特征信息的交易为重放交易。然而,由于交易的哈希值的数据量较大,如果基于交易的哈希值对各个交易信息集合进行记录,将需要较大的存储空间。
在本实施例一种实施方式中,通过预定散列函数f(HASHi)将交易i的哈希值映射为预定结果中的一个,从而获取交易i的特征信息。例如,f(HASHi)输出值为0-17共18个数值,f(HASHi)根据预定映射规则将交易i映射至例如数值2,从而可将2作为交易i的特征信息。
在步骤S204,获取交易信息集合,所述交易信息集合中的每个交易信息对应的交易都具有所述特征信息。
在一种实施方式中,可设置特征信息与交易信息集合的对应关系表,从而可根据该对应关系表获取与特征信息对应的交易信息集合。
在一种实施方式中,各个线程可基于图3所示的数据结构来执行本实施例的重放检测方法。如图3所示,在各个线程执行图2所示方法之前,可预先在内存中设置特征信息归属表、交易关联表和无效交易表。其中,特征信息归属表的每个存储位置(图3中的每个方格)对应于交易的特征信息,例如,在使用上述函数f(HASHi)获取交易的特征信息的情况中,特征信息归属表共包括18个存储位置,其中,特征信息归属表中的每个方格可填入与特征信息对应的交易信息集合的相关信息,以基于该特征信息归属表获取对应的交易信息集合。
在图3所示的实例中,线程t1在例如获取交易3之后,计算f(HASH3)=2,从而线程t1可确定特征信息归属表中的特征信息2对应的方格中是否已经写入交易编号,如果没有写入交易编号,即该表格中为初始的默认值-1,则将该-1修改为3,以指示交易3的特征信息为2。为了防止多个线程并行对该方格进行修改出现错误,可由多个线程通过排斥其它线程的方式来对该表格进行修改。其中,所述交易编号可以为全局编号,例如,该交易编号中包括区块号和该区块中的编号,或者该交易编号为从区块链中的第一个交易开始递增的编号。
具体是,在一种实施方式中,特征信息归属表中的每个存储位置可以设置为原子变量,所述原子变量为原子操作的基本单位,所述原子变量可保证一系列原子操作不被打断,保证了线程操作的安全性,所述原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会换到另一个线程。线程t1在确定计算f(HASH3)=2之后,读取特征信息归属表中的特征信息2对应的方格的值,在读取的值为“-1”的情况中,通过指示处理器执行指令atomic_cmp_xchg(&a,-1,3)来进行原子比较修改,其中&a,-1,3为对该指令的传入参数,&a为特征信息2对应的方格的内存地址,-1为修改前值,3为修改后值。指令atomic_cmp_xchg(&a,-1,3)的执行对应于原子操作,当执行该指令时,执行以下过程:读取地址&a的值,确定地址&a的值是否为-1,如果是-1,则将该地址的值修改为3,如果读取的值不是-1,则不进行修改,返回该读取的值。可以理解,对特征信息归属表的修改方式不限于通过原子操作来进行,也可以通过其他用于互斥的方式进行修改,例如可通过加锁的方式进行修改。线程t1在通过上述原子比较修改对特征信息2对应的方格进行操作之后,在修改成功的情况中,将特征信息2对应的方格中的值修改为3。如果线程t1在对所述方格进行该原子比较修改操作之前,另一个线程已经将该地址的值修改为非-1的另一个值,则在执行该原子比较修改操作时读取的所述地址的值将不是-1,此时线程t1将不对该地址进行修改,而是返回该地址中存储的值。
所述交易信息集合例如为通过图3中的交易关联表记录的交易链表的形式。在该交易关联表中,每个存储位置与一个交易相对应,如图3中所示,交易关联表中每个方格下方的交易编号用于指示该方格对应的交易。例如,该交易关联表用于记录多个交易之间的关联关系。可根据区块链中的成块速度来设置该交易关联表中包括的多个存储位置的数目,例如,区块链中的成块速度为10秒,考虑到通信延迟等因素,可将该交易关联表设置为可包括区块链节点在5分钟以内接收的交易的数目的存储位置。也就是说,通过交易关联表,不仅确定节点新接收的一批交易相互之间是否存在重放交易,还确定该批交易与预定时间内接收的已成块的交易之间是否存在重放交易。交易关联表中的每个方格中可存储该方格对应的交易关联的下一个交易的交易编号。
例如线程t2获取交易6,并计算f(HASH6)=2,与上文类似地,线程t2也首先读取特征信息归属表中特征信息2对应的存储位置的值。在读取到该值为3的情况中,线程t2在交易关联表中读取交易3对应的存储位置的值,假设如图3中所示,线程t2读取的交易3对应的存储位置的值为5,并且读取到交易5对应的存储位置的值为7,交易7对应的存储位置的值为-1,这指示交易3、交易5和交易7构成一个交易链表,其中交易3、交易5和交易7具有相同的特征信息。也就是说,在该实例中,交易链表中包括的交易编号构成了具有相同特征信息的交易信息集合,在特征信息归属表中,通过交易信息集合中包括的一个交易(即交易3)的交易编号将特征信息与该特征信息对应的交易信息集合关联起来。
在一种实施方式中,为了防止其它线程在线程t2读取交易链表时对交易链表中包括的重复交易的交易编号进行删除从而导致读取错误的结果,线程t2在读取交易链表之前可对该交易链表加读锁,以防止其它线程对该交易链表中的交易编号的删除,其它线程只有在确定该交易链表的读锁释放之后才可以进行对该交易链表中的交易编号的删除,与此同时,其它线程可并行地对该交易链表加读锁,以并行地读取该交易链表。可以理解,该实施方式不用于限制本实施例的范围,在交易链表中也可以不删除重放交易的交易编号,在该情况中,则不需要对交易链表上读锁和写锁。
在步骤S206,在对于所述交易信息集合中的每个交易信息确定交易i不是重放交易的情况中,将交易i加入所述交易信息集合。
在获取交易信息集合之后,依次对于所述交易信息集合中的交易j的信息,确定所述交易i与交易j中是否存在重放交易。
具体是,线程t2在获取上述包括交易3、交易5和交易7的编号的交易链表之后,依次相对于“交易3/交易6”、“交易5/交易6”和“交易7/交易6”确定是否存在重放交易,如果在该过程中确定交易6为重放交易,则记录交易6为无效交易,并终止该确定过程,如果在该过程中确定其他交易为重放交易,则记录其他交易为重放交易,并继续进行该确定过程直至对交易链表中的每个交易完成确定。假设交易的编号即表示交易的执行顺序,则如果确定两个交易相同的话,可确定交易编号靠后的一个交易为重放交易。其中,例如,可在确定两个交易的哈希值相等的情况下,确定两个交易相同。
在第一种示例情况中,线程t2在对“交易5/交易6”进行重放检测时,假设交易5和交易6的哈希值相等,则可确定交易6为重放交易,线程t2可对上述交易链表释放读锁,终止该方法的执行,并在无效交易表中交易6对应的存储位置将初始值“0”修改为1,以指示交易6为无效交易。
在第二种示例情况中,假设线程t2在对“交易7/交易6”进行重放检测时,假设交易7和交易6的哈希值相等,则可确定交易7为重放交易,交易6不是重放交易,线程t2可类似地在无效交易表中记录交易7为无效交易。在确定交易7为重放交易之后,由于交易链表有可能还上了读锁,可暂时不删除交易链表中的交易7,可在后期满足预定条件时,例如当交易链表中的交易数大于预定数目或者经过预定时段时,其他线程在确定该交易链表未上读锁的情况中,对该交易链表上写锁,基于无效交易表将该交易链表中的无效交易删除,在删除完成之后,对该交易链表释放写锁,并记录当前交易链表的尾部以便下一次进行无效交易删除时从该记录的尾部位置之后进行删除。
在一种实施方式中,在交易链表中记录交易编号时,还可以同时记录节点接收该交易的时间,当节点中的线程在如上所述对交易链表上写锁之后,还可以将交易链表中交易接收时间在预定时间(例如当前时间的前5分钟)之前的交易编号删除,该预定时间之前的交易为过时交易,其不可能为即将生成的区块中的交易,因此,可在交易链表中将其编号删除以释放存储空间。线程可在该删除完成之后释放上述写锁。
在上述第二种示例情况中,在对于交易链表中的每个交易(即交易3、交易5和交易7)都确定交易6不是重放交易之后,线程t2可通过原子修改操作的方式将交易6添加到该交易链表的末尾,例如,在交易关联表中交易7对应的存储位置中将“-1”修改为“6”,如果该原子修改操作失败,表示其他线程在该修改之前对交易链表插入了新的交易(例如交易9),则线程t2可确定在交易7之后插入的各个交易(例如交易9)与交易6之间是否存在重放交易,与上文类似地,如果确定交易6为重放交易,在无效交易表中进行记录并结束该方法,如果确定其他交易为重放交易,在无效交易表中进行记录,并再次发起原子修改操作,以再次将交易6添加到该交易链表的末尾,例如,在交易关联表中交易9对应的存储位置将“-1”修改为“6”。
通过如上方式,可通过交易链表记录具有相同特征信息的全部交易,并通过将待处理的交易与交易链表中的各个交易之间确定是否存在重放交易,从而在多个线程并行进行重放检测时保证了重放检测的正确性。多个线程在通过图2所示方法对一批交易完成了重放检测之后,可从无效交易表读取未被标记为无效的交易,从而获得经重放检测的待处理的多个交易。其中,在该过程中,可通过多数据单指令(Single InstructionMultipleData, simd指令)来从无效交易表中读取未被标记为无效的交易。
图4示出本说明书实施例提供的一种交易检测装置,包括:
获取单元41,用于获取第一交易的特征信息,以及用于获取交易信息集合,所述交易信息集合中的每个交易信息对应的交易都具有所述特征信息;
加入单元42,用于在对于所述交易信息集合中的每个交易信息确定所述第一交易不是重放交易的情况中,将所述第一交易的信息加入所述交易信息集合。
在一种实施方式中,所述交易信息集合为交易链表。
在一种实施方式中,所述加入单元42具体用于,将所述第一交易的信息写入到所述交易链表的尾部。
在一种实施方式中,所述加入单元42具体用于,通过原子写入操作的方式将所述第一交易的信息写入到所述交易链表的尾部。
在一种实施方式中,所述加入单元42还用于,在写入失败的情况中,并且在相对于所述交易链表中新增加的交易确定所述第一交易不是重放交易的情况中,将所述第一交易的信息写入到所述交易链表的尾部。
在一种实施方式中,所述交易检测装置还包括,锁定单元43,用于在获取交易信息集合之后对所述交易信息集合加读锁,读取所述交易信息集合中的交易信息,在对所述交易信息集合读取完成之后,对所述交易信息集合释放读锁。
在一种实施方式中,所述交易信息集合中还包括第二交易的信息,所述锁定单元43还用于,在确定所述第二交易为重放交易的情况中,在所述交易信息集合的读锁释放之后,对所述交易信息集合加写锁,从所述交易信息集合删除所述第二交易的信息,在所述删除完成之后对所述交易信息集合释放写锁。
在一种实施方式中,所述交易信息集合还包括各个交易的接收时间,所述锁定单元43还用于:在所述交易信息集合的读锁释放之后,对所述交易信息集合加写锁,从所述交易信息集合删除接收时间早于预定时间的各个交易的信息,在所述删除完成之后对所述交易信息集合释放写锁。
在一种实施方式中,所述获取单元41还用于,通过预定散列函数获取第一交易的特征信息,所述预定散列函数用于将任一交易映射为预定数目的特征信息中的一个特征信息。
在一种实施方式中,所述获取单元41还用于,确定特征信息归属表中与所述特征信息对应的位置是否已经写入其它交易的标识,如果确定未写入其它交易的标识,在所述位置写入所述第一交易的标识,并确定所述交易信息集合为空集,如果确定已经写入第三交易的标识,基于所述第三交易与所述交易信息集合的对应关系获取所述交易信息集合。
在一种实施方式中,所述交易检测装置还包括,标记单元44,用于在确定所述第二交易为重放交易的情况中,在无效交易表中对所述第二交易进行标记。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
通过本说明书实施例提供的交易检测方案,可以通过多个线程对一批交易并行进行重放检测,提高了重放检测的效率。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (24)
1.一种交易检测方法,包括:
获取第一交易的第一特征信息;
获取交易信息集合,所述交易信息集合中的每个交易信息对应的交易都具有所述第一特征信息;所述第一特征信息为预定数目的特征信息中的一个特征信息;
在对于所述交易信息集合中的每个交易信息确定所述第一交易不是重放交易的情况中,将所述第一交易的信息加入所述交易信息集合。
2.根据权利要求1所述的方法,其中,所述交易信息集合为交易链表。
3.根据权利要求2所述的方法,其中,将所述第一交易的信息加入所述交易信息集合包括,将所述第一交易的信息写入到所述交易链表的尾部。
4.根据权利要求3所述的方法,其中,将所述第一交易的信息写入到所述交易链表的尾部包括,通过原子写入操作的方式将所述第一交易的信息写入到所述交易链表的尾部。
5.根据权利要求3或4所述的方法,还包括,在写入失败的情况中,并且在相对于所述交易链表中新增加的交易信息确定所述第一交易不是重放交易的情况中,将所述第一交易的信息写入到所述交易链表的尾部。
6.根据权利要求1-4任一项所述的方法,其中,在获取交易信息集合之后,所述方法还包括,在对所述交易信息集合加读锁之后,读取所述交易信息集合中的交易信息,在对所述交易信息集合读取完成之后,对所述交易信息集合释放读锁。
7.根据权利要求6所述的方法,其中,所述交易信息集合中还包括第二交易的信息,所述方法还包括,在确定所述第二交易为重放交易的情况中,在所述交易信息集合的读锁释放之后,对所述交易信息集合加写锁,从所述交易信息集合删除所述第二交易的信息,在所述删除完成之后对所述交易信息集合释放写锁。
8.根据权利要求6所述的方法,还包括:所述交易信息集合还包括各个交易的接收时间,在所述交易信息集合的读锁释放之后,对所述交易信息集合加写锁,从所述交易信息集合删除接收时间早于预定时间的各个交易的信息,在所述删除完成之后对所述交易信息集合释放写锁。
9.根据权利要求1或2所述的方法,其中,获取第一交易的第一特征信息包括,通过预定散列函数获取第一交易的第一特征信息,所述预定散列函数用于将任一交易映射为预定数目的特征信息中的一个特征信息。
10.根据权利要求1或2所述的方法,其中,获取交易信息集合包括,确定特征信息归属表中与所述第一特征信息对应的位置是否已经写入其它交易的标识,如果确定未写入其它交易的标识,在所述位置写入所述第一交易的标识,并确定所述交易信息集合为空集,如果确定已经写入第三交易的标识,基于所述第三交易与所述交易信息集合的对应关系获取所述交易信息集合。
11.根据权利要求7所述的方法,还包括,在确定所述第二交易为重放交易的情况中,在无效交易表中对所述第二交易进行标记。
12.一种交易检测装置,包括:
获取单元,用于获取第一交易的第一特征信息,以及用于获取交易信息集合,所述交易信息集合中的每个交易信息对应的交易都具有所述第一特征信息;所述第一特征信息为预定数目的特征信息中的一个特征信息;
加入单元,用于在对于所述交易信息集合中的每个交易信息确定所述第一交易不是重放交易的情况中,将所述第一交易的信息加入所述交易信息集合。
13.根据权利要求12所述的装置,其中,所述交易信息集合为交易链表。
14.根据权利要求13所述的装置,其中,所述加入单元具体用于,将所述第一交易的信息写入到所述交易链表的尾部。
15.根据权利要求14所述的装置,其中,所述加入单元具体用于,通过原子写入操作的方式将所述第一交易的信息写入到所述交易链表的尾部。
16.根据权利要求14或15所述的装置,所述加入单元还用于,在写入失败的情况中,并且在相对于所述交易链表中新增加的交易信息确定所述第一交易不是重放交易的情况中,将所述第一交易的信息写入到所述交易链表的尾部。
17.根据权利要求12-15任一项所述的装置,所述装置还包括,锁定单元,用于在获取交易信息集合之后对所述交易信息集合加读锁,读取所述交易信息集合中的交易信息,在对所述交易信息集合读取完成之后,对所述交易信息集合释放读锁。
18.根据权利要求17所述的装置,其中,所述交易信息集合中还包括第二交易的信息,所述锁定单元还用于,在确定所述第二交易为重放交易的情况中,在所述交易信息集合的读锁释放之后,对所述交易信息集合加写锁,从所述交易信息集合删除所述第二交易的信息,在所述删除完成之后对所述交易信息集合释放写锁。
19.根据权利要求17所述的装置,所述交易信息集合还包括各个交易的接收时间,所述锁定单元还用于:在所述交易信息集合的读锁释放之后,对所述交易信息集合加写锁,从所述交易信息集合删除接收时间早于预定时间的各个交易的信息,在所述删除完成之后对所述交易信息集合释放写锁。
20.根据权利要求12或13所述的装置,其中,所述获取单元还用于,通过预定散列函数获取第一交易的第一特征信息,所述预定散列函数用于将任一交易映射为预定数目的特征信息中的一个特征信息。
21.根据权利要求12或13所述的装置,其中,所述获取单元还用于,确定特征信息归属表中与所述第一特征信息对应的位置是否已经写入其它交易的标识,如果确定未写入其它交易的标识,在所述位置写入所述第一交易的标识,并确定所述交易信息集合为空集,如果确定已经写入第三交易的标识,基于所述第三交易与所述交易信息集合的对应关系获取所述交易信息集合。
22.根据权利要求18所述的装置,还包括,标记单元,用于在确定所述第二交易为重放交易的情况中,在无效交易表中对所述第二交易进行标记。
23.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-11中任一项的所述的方法。
24.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110465407.1A CN113190567B (zh) | 2021-04-28 | 2021-04-28 | 一种交易检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110465407.1A CN113190567B (zh) | 2021-04-28 | 2021-04-28 | 一种交易检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190567A CN113190567A (zh) | 2021-07-30 |
CN113190567B true CN113190567B (zh) | 2021-09-28 |
Family
ID=76979712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110465407.1A Active CN113190567B (zh) | 2021-04-28 | 2021-04-28 | 一种交易检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190567B (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423402A (zh) * | 2017-07-27 | 2017-12-01 | 南方电网科学研究院有限责任公司 | 海量结构化数据中的重复数据检测方法和系统 |
CN108923972B (zh) * | 2018-06-30 | 2021-06-04 | 平安科技(深圳)有限公司 | 一种去重流量提示方法、装置、服务器及存储介质 |
US11250466B2 (en) * | 2018-07-30 | 2022-02-15 | Hewlett Packard Enterprise Development Lp | Systems and methods for using secured representations of user, asset, and location distributed ledger addresses to prove user custody of assets at a location and time |
CN109903050A (zh) * | 2019-03-02 | 2019-06-18 | 杭州复杂美科技有限公司 | 交易去重方法、交易构造方法、设备和存储介质 |
CA3060790C (en) * | 2019-04-12 | 2021-06-08 | Alibaba Group Holding Limited | Performing parallel execution of transactions in a distributed ledger system |
CN110298662B (zh) * | 2019-07-04 | 2022-03-22 | 中国工商银行股份有限公司 | 交易重复提交的自动化检测方法及装置 |
CN113438219B (zh) * | 2020-07-08 | 2023-06-02 | 支付宝(杭州)信息技术有限公司 | 一种基于区块链一体机的重放交易识别方法及装置 |
CN112348717A (zh) * | 2020-11-25 | 2021-02-09 | 山东师范大学 | 一种基于区块链的知识上链与获取方法及系统 |
CN112347193A (zh) * | 2020-11-27 | 2021-02-09 | 网易(杭州)网络有限公司 | 基于区块链的交易打包方法及装置、电子设备 |
CN112819628B (zh) * | 2021-02-01 | 2024-02-02 | 网易(杭州)网络有限公司 | 交易防重放的检测方法及装置、系统、电子设备、存储介质 |
-
2021
- 2021-04-28 CN CN202110465407.1A patent/CN113190567B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113190567A (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3678346A1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
EP3652885B1 (en) | Secure token passing via blockchains | |
CN111061769A (zh) | 一种区块链系统的共识方法及相关设备 | |
CN110022315B (zh) | 一种块链式账本中的权重管理方法、装置及设备 | |
CN111444192B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN112286939A (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN112737782B (zh) | 提供跨链消息的方法和装置 | |
CN111754350B (zh) | 并行获取区块链中的交易访问变量的编号的方法和装置 | |
CN110851535A (zh) | 基于区块链的数据处理方法、装置、存储介质及终端 | |
CN110781061A (zh) | 一种记录用户行为链路的方法及装置 | |
CN114780285A (zh) | 区块链数据恢复方法及装置、电子设备 | |
CN113362068B (zh) | 一种轻节点验证区块链状态转移的方法 | |
CN111444216A (zh) | 一种基于中心化块链式账本的数据块删除方法 | |
CN113596010B (zh) | 一种数据处理方法、装置、节点设备及计算机存储介质 | |
CN112988819B (zh) | 区块链交易执行方法、区块链节点及控制装置 | |
CN114741449A (zh) | 一种基于分布式数据库的对象存储方法及装置 | |
CN113190567B (zh) | 一种交易检测方法和装置 | |
CN112804359A (zh) | 提供跨链消息的方法和装置 | |
CN115470264A (zh) | 一种数据审计方法及装置、电子设备、存储介质 | |
CN113469815A (zh) | 数据管理方法及装置 | |
CN111383008B (zh) | 基于账户模型的区块链转账方法及装置 | |
CN109791541B (zh) | 日志序列号生成方法、装置及可读存储介质 | |
CN112070610A (zh) | 验证区块合法性的方法及节点、系统、电子设备、介质 | |
CN110569221A (zh) | 具有版本功能的文件系统管理方法、装置、设备和存储介质 | |
CN112001799B (zh) | 在区块链中执行智能合约的方法和装置 |
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 |