CN112819628B - 交易防重放的检测方法及装置、系统、电子设备、存储介质 - Google Patents
交易防重放的检测方法及装置、系统、电子设备、存储介质 Download PDFInfo
- Publication number
- CN112819628B CN112819628B CN202110139193.9A CN202110139193A CN112819628B CN 112819628 B CN112819628 B CN 112819628B CN 202110139193 A CN202110139193 A CN 202110139193A CN 112819628 B CN112819628 B CN 112819628B
- Authority
- CN
- China
- Prior art keywords
- transaction
- replay
- hash
- candidate
- node
- 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 136
- 230000002265 prevention Effects 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 28
- 238000004364 calculation method Methods 0.000 claims abstract description 14
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012790 confirmation Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Abstract
本申请提供一种交易防重放的检测方法及装置、系统、电子设备、存储介质,方法包括:区块链节点针对候选交易的交易哈希转换为第一进制的哈希数值后,可以将哈希数值对防重放节点总数进行取余计算,从而确定候选交易对应的防重放节点;区块链节点向每一防重放节点发送防重放检测请求后,防重放节点可以依据防重放哈希表确定交易哈希对应的候选交易是否为重放交易,并返回防重放检测结果;区块链节点可以依据该防重放检测结果将非重放的候选交易放入待共识交易队列;本申请方案替代了相关的防重放机制,避免了对条件窗口的依赖,从而可以对区块链节点上的每一候选交易执行防重放检测,避免了因条件窗口的限制而导致出现无效交易的问题。
Description
技术领域
本申请涉及区块链数据处理技术领域,特别涉及一种交易防重放的检测方法及装置、系统、电子设备、计算机可读存储介质。
背景技术
区块链的防重放机制可以避免每笔交易(Transaction)对应的加密货币被重复使用。目前,联盟链的防重放机制是借助条件窗口来实现的。条件窗口用于限制可被执行防重放检查的交易。不同联盟链中条件窗口可以通过区块高度、时间、交易顺序等条件来实现。在以太坊中,区块链节点针对任一以太坊地址的交易,会基于交易中nonce值的顺序对交易进行防重放检查。当一笔交易通过防重放检查,确认为非重放交易时,后续可被打包进区块。当交易所在区块由各区块链节点达成共识后,交易被执行完成。
当一笔交易在区块链节点中因不满足条件窗口时,该交易始终无法被执行完成,这会导致联盟链中出现无效的交易。
发明内容
本申请实施例的目的在于提供一种交易防重放的检测方法及装置、系统、电子设备、计算机可读存储介质,用于规避因条件窗口的限制导致出现无效交易的问题。
一方面,本申请提供了一种交易防重放的检测方法,应用于区块链节点,包括:
针对本地的待检查交易队列中每一候选交易,将所述候选交易的交易哈希转换为第一进制的哈希数值;
根据每一候选交易的哈希数值,通过对防重放节点总数进行取余计算,确定所述候选交易对应的防重放节点;
向每一防重放节点发送防重放检测请求;其中,所述防重放检测请求携带与所述防重放节点对应的候选交易的交易哈希;
响应于所述防重放节点返回的防重放检测结果,将非重放的候选交易放入本地的待共识交易队列。
在一实施例中,所述将非重放的候选交易放入本地的待共识交易队列之后,所述方法还包括:
基于从所述待共识交易队列中拉取的多个候选交易执行共识;
针对每一共识成功交易,将所述共识成功交易的交易哈希转换为所述第一进制的哈希数值;其中,所述共识成功交易为已达成共识的候选交易;
根据每一共识成功交易的哈希数值,通过对所述防重放节点总数进行取余计算,确定所述共识成功交易对应的防重放节点;
向所述防重放节点发送共识确认消息;其中,所述共识确认消息包括与所述防重放节点对应的共识成功交易的交易哈希。
在一实施例中,在所述将所述候选交易的交易哈希转换为第一进制的哈希数值之前,所述方法还包括:
通过预设的对应于若干防重放节点的连接信息,与所述防重放节点建立连接。
另一方面,本申请还提供了一种交易防重放的检测方法,应用于防重放节点,包括:
接收区块链节点发送的防重放检测请求;其中,所述防重放检测请求中包括若干交易哈希;
针对所述防重放检测请求中每一交易哈希,判断防重放哈希表中是否存在所述交易哈希;
根据对应于每一交易哈希的判断结果,生成防重放检测结果;
向所述区块链节点返回所述防重放检测结果。
在一实施例中,所述防重放哈希表包括本地哈希缓存表和共识哈希表;
所述判断防重放哈希表中是否存在所述交易哈希,包括:
判断所述本地哈希缓存表中是否存在所述交易哈希;
若存在,确定所述交易哈希对应的候选交易为重放的候选交易;
若不存在,将所述交易哈希放入所述本地哈希缓存表,并判断所述共识哈希表中是否存在所述交易哈希;
如果存在,确定所述交易哈希对应的候选交易为重放的候选交易;
如果不存在,确定所述交易哈希对应的候选交易为非重放的候选交易。
在一实施例中,所述向所述区块链节点返回所述防重放检测结果之后,所述方法还包括:
接收所述区块链节点发送的共识确认消息;其中,所述共识确认消息包括多个共识成功交易的交易哈希;
从所述本地哈希缓存表中删除所述共识成功交易的交易哈希;
向所述共识哈希表中放入所述共识成功交易的交易哈希。
另一方面,本申请还提供了一种交易防重放的检测系统,包括:客户端设备、区块链节点、防重放节点;
所述客户端设备,用于通过本地的通用唯一识别码生成器为候选交易生成nonce值,并发送所述候选交易;
所述区块链节点,与所述客户端设备连接,用于将接收到的候选交易放入本地的待检查交易队列;针对本地的待检查交易队列中每一候选交易,将所述候选交易的交易哈希转换为第一进制的哈希数值;根据每一候选交易的哈希数值,通过对防重放节点总数进行取余计算,确定所述候选交易对应的防重放节点;向每一防重放节点发送防重放检测请求;其中,所述防重放检测请求携带与所述防重放节点对应的候选交易的交易哈希;响应于所述防重放节点返回的防重放检测结果,将非重放的候选交易放入本地的待共识交易队列;
所述防重放节点,与所述区块链节点连接,用于接收区块链节点发送的防重放检测请求;其中,所述防重放检测请求中包括若干交易哈希;针对所述防重放检测请求中每一交易哈希,判断防重放哈希表中是否存在所述交易哈希;根据对应于每一交易哈希的判断结果,生成防重放检测结果;向所述区块链节点返回所述防重放检测结果。
另一方面,本申请还提供了一种交易防重放的检测装置,应用于区块链节点,包括:
转换模块,用于针对本地的待检查交易队列中每一候选交易,将所述候选交易的交易哈希转换为第一进制的哈希数值;
确定模块,用于根据每一候选交易的哈希数值,通过对防重放节点总数进行取余计算,确定所述候选交易对应的防重放节点;
发送模块,用于向每一防重放节点发送防重放检测请求;其中,所述防重放检测请求携带与所述防重放节点对应的候选交易的交易哈希;
放入模块,用于响应于所述防重放节点返回的防重放检测结果,将非重放的候选交易放入本地的待共识交易队列。
另一方面,本申请还提供了一种交易防重放的检测装置,应用于防重放节点,包括:
接收模块,用于接收区块链节点发送的防重放检测请求;其中,所述防重放检测请求中包括若干交易哈希;
判断模块,用于针对所述防重放检测请求中每一交易哈希,判断防重放哈希表中是否存在所述交易哈希;
生成模块,用于根据对应于每一交易哈希的判断结果,生成防重放检测结果;
返回模块,用于向所述区块链节点返回所述防重放检测结果。
进一步的,本申请还提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述应用于区块链节点的交易防重放的检测方法。
进一步的,本申请还提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述应用于防重放节点的交易防重放的检测方法。
另外,本申请还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述应用于区块链节点的交易防重放的检测方法。
另外,本申请还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述应用于防重放节点的交易防重放的检测方法。
在本申请实施例中,区块链节点针对候选交易的交易哈希转换为第一进制的哈希数值后,可以将哈希数值对防重放节点总数进行取余计算,从而确定候选交易对应的防重放节点;区块链节点向每一防重放节点发送防重放检测请求后,防重放节点可以依据防重放哈希表确定交易哈希对应的候选交易是否为重放交易,并返回防重放检测结果;区块链节点可以依据该防重放检测结果将非重放的候选交易放入待共识交易队列;
本申请方案的防重放检测方法替代了相关的防重放机制,避免了对条件窗口的依赖,从而可以对区块链节点上的每一候选交易执行防重放检测,避免了因条件窗口的限制而导致出现无效交易的问题。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1为本申请一实施例提供的交易防重放的检测方法的应用场景示意图;
图2为本申请一实施例提供的电子设备的结构示意图;
图3为本申请另一实施例提供的电子设备的结构示意图;
图4为本申请一实施例提供的交易防重放的检测方法的流程示意图;
图5为本申请一实施例提供的判断防重放哈希表中是否存在交易哈希的流程示意图;
图6为本申请一实施例提供的防重放哈希表的更新方法的流程示意图;
图7为本申请一实施例提供的交易防重放的检测装置的框图;
图8为本申请另一实施例提供的交易防重放的检测装置的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1为本申请实施例提供的交易防重放的检测方法的应用场景示意图。如图1所示,交易防重放的检测系统包括客户端设备30、区块链节点40和防重放节点50,客户端设备30可以是向区块链发送交易、查看交易结果的用户终端。示例性的,客户端设备可以是搭载区块链钱包应用的手机、平板电脑或个人电脑等。区块链节点40可以是区块链网络中搭载区块链应用程序的计算机主机,用于承担交易的广播、验签和共识等工作;防重放节点50可以是与区块链节点40对接的计算机,用于承担防重放检测的工作。一个区块链节点40可以与多个防重放节点50建立网络连接,使得每个防重放节点50均可执行该区块链节点40所下发的防重放检测任务。
如图2所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图2中以一个处理器11为例。处理器11和存储器12通过总线10连接,存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程。在一实施例中,电子设备1可以是上述区块链节点40。
存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器11执行以完成本申请提供的应用于区块链节点的交易防重放的检测方法。
如图3所示,本实施例提供一种电子设备2,包括:至少一个处理器21和存储器22,图3中以一个处理器21为例。处理器21和存储器22通过总线20连接,存储器22存储有可被处理器21执行的指令,指令被处理器21执行,以使电子设备2可执行下述的实施例中方法的全部或部分流程。在一实施例中,电子设备2可以是上述防重放节点50。
存储器22可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器,电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,磁存储器,快闪存储器,磁盘或光盘。
本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器21执行以完成本申请提供的应用于防重放节点的交易防重放的检测方法。
参见图4,为本申请一实施例提供的交易防重放的检测方法的流程示意图,如图4所示,该方法可以包括以下步骤410-步骤460。
步骤410:区块链节点针对本地的待检查交易队列中每一候选交易,将候选交易的交易哈希转换为第一进制的哈希数值。
其中,待检查交易队列用于存储需要接收防重放检测的候选交易。
客户端设备在向区块链节点发起交易请求前,可以通过本地的UUID(UniversallyUnique Identifier,通用唯一识别码)生成器生成整个区块链系统中唯一的nonce值,将该nonce值写入候选交易,并未候选交易计算出交易哈希。客户端设备可以将携带该候选交易的交易请求发送至区块链节点。通常而言,每一交易的交易哈希都是唯一的。本申请通过为每一候选交易生成唯一的nonce值,可以确保每一交易哈希的唯一性,便于后续执行防重放检测。
区块链节点从客户端设备接收到候选交易,并对该候选交易验证签名后,可以将验签无误的候选交易放入待检查交易队列。
在需要对待检查交易队列中的候选交易执行防重放检测时,区块链节点可以针对待检查交易队列中每一候选交易,将候选交易的交易哈希转换为第一进制的哈希数值。其中,第一进制是预设的便于后续执行取余计算的进位计数制,第一进制可以是十进制、九进制、八进制等。区块链节点可以通过本地的进制转换工具,将交易哈希转换为第一进制的哈希数值。该哈希数值是第一进制下的交易哈希。
步骤420:区块链节点根据每一候选交易的哈希数值,通过对防重放节点总数进行取余计算,确定候选交易对应的防重放节点。
其中,防重放节点总数是与区块链节点对接的防重放节点的数量。由于各区块链节点对应的防重放节点的数量可能不同,区块链节点上配置的防重放节点总数也可以不一样。
区块链节点基于候选交易的哈希数值对本地预配置的防重放节点总数进行取余计算,获得余数,并基于该余数确定候选交易对应的防重放节点。
示例性的,区块链节点对应的防重放节点总数为3,各防重放节点的编号分别为0、1和2。区块链节点将任一候选交易的哈希数值对3取余后,得到余数1,可以确定该候选交易对应的防重放节点的编号为1;如果得到的余数为2,则该候选交易对应的防重放节点的编号为2;如果得到的余数为0,则该候选交易对应的防重放节点的编号为0。
步骤430:区块链节点向每一防重放节点发送防重放检测请求;其中,防重放检测请求携带与防重放节点对应的候选交易的交易哈希。
对于待检查交易队列中的候选交易,区块链节点在确定出候选交易对应的防重放节点后,可以为各防重放节点生成防重放检测请求。其中,防重放检测请求用于请求防重放节点执行防重放任务;防重放检测请求中包括交易哈希列表,该交易哈希列表包括与防重放节点对应的候选交易的交易哈希。区块链节点可以向各防重放节点发送防重放节点请求。
步骤440:防重放节点针对防重放检测请求中每一交易哈希,判断防重放哈希表中是否存在该交易哈希。
其中,防重放哈希表用于记录防重放节点处理过的交易哈希。
各防重放节点接收到防重放检测请求后,可以从中解析出交易哈希列表。防重放节点可以遍历交易哈希列表中每一交易哈希,判断本地的防重放哈希表中是否存在该交易哈希。一方面,如果交易哈希列表中不存在该交易哈希,说明该交易哈希对应的候选交易为非重防的候选交易。另一方面,如果交易哈希列表中存在该交易哈希,说明该交易哈希对应的候选交易为重放的候选交易。
步骤450:防重放节点根据对应于每一交易哈希的判断结果,生成防重放检测结果。
其中,防重放检测结果包括防重放节点接收到的所有交易哈希的检测结果。
防重放节点可以依据判断结果,为交易哈希列表中的交易哈希添加防重放检测标识。防重放检测标识包括重放标识和非重放标识,重放标识表示交易哈希对应的候选交易为重放的候选交易,非重放标识表示交易哈希对应的候选交易为非重放的候选交易。防重放节点可以基于已添加防重放检测标识的交易哈希列表,生成防重放检测结果。
步骤460:区块链节点响应于防重放节点返回的防重放检测结果,将非重放的候选交易放入本地的待共识交易队列。
防重放节点可以向区块链节点返回防重放检测结果。区块链节点接收其对接的防重放节点返回的防重放检测结果后,可以基于防重放检测结果,确定非重放的候选交易的交易哈希,并将非重放的候选交易放入待共识交易队列。区块链节点接收所有防重放节点返回的防重放检测结果,并依据所有防重放检测结果更新待共识交易队列后,可以从待检查交易队列中删除已经执行过防重放检测的候选交易,从而避免后续对同一候选交易重复执行防重放检测,浪费计算资源。
在一实施例中,防重放哈希表可以包括本地哈希缓存表和共识哈希表,其中,本地哈希缓存表用于记录防重放节点所处理过、且尚未达成共识的候选交易的交易哈希;共识哈希表用于记录防重放节点所处理过、且达成共识的候选交易的交易哈希。在一实施例中,本地哈希缓存表可以基于hashset数据结构来实现,共识哈希表可以基于key-value(关键字-值)数据库来实现。
防重放节点在判断防重放哈希表中是否存在交易哈希时,可以先后针对本地哈希缓存表和共识哈希表进行判断。参见图5,为本申请一实施例提供的判断防重放哈希表中是否存在交易哈希的流程示意图,如图5所示,该方法可以包括以下步骤441-步骤445。
步骤441:判断本地哈希缓存表中是否存在交易哈希。
步骤442:若存在,确定交易哈希对应的候选交易为重放的候选交易。
步骤443:若不存在,将交易哈希放入本地哈希缓存表,并判断共识哈希表中是否存在交易哈希。
针对交易哈希列表中每一交易哈希,防重放节点可以判断本地哈希缓存表中是否存该交易哈希。一方面,若存在,可以确定该交易哈希对应的候选交易为重放的候选交易。另一方面,若不存在,防重放节点可以将该交易哈希放入本地哈希缓存表,并进一步判断共识哈希表中是否存该交易哈希。
步骤444:如果存在,确定交易哈希对应的候选交易为重放的候选交易。
步骤445:如果不存在,确定交易哈希对应的候选交易为非重放的候选交易。
一方面,如果共识哈希表中存在该交易哈希,防重放节点可以确定该交易哈希对应的候选交易为重放的候选交易。另一方面,如果共识哈希表中不存在该交易哈希,防重放节点可以确定该交易哈希对应的候选交易为非重放的候选交易。
通过该措施,无论一笔交易是否被达成共识,防重放节点在接收到重放该交易的候选交易时,均可以确定后者为重放的候选交易。
在一实施例中,区块链节点在将候选交易构建候选区块,并基于共识机制为候选区块达成共识后,可以通知防重放节点更新自身的防重放哈希表。这里,防重放哈希表包括本地哈希缓存表和共识哈希表。
参见图6,为本申请一实施例提供的防重放哈希表的更新方法的流程示意图,如图6所示,该方法可以包括以下步骤610-步骤660。
步骤610:区块链节点基于从待共识交易队列中拉取的多个候选交易执行共识。
区块链节点可以从待共识交易队列中拉取多个候选交易,构建候选区块,并基于共识机制为候选区块达成共识。其中,共识机制可以是工作量证明(Proof of Work,PoW)、权益证明(Proof of Stake,PoS)、委托权益证明(Delegated Proof of Stake,DPOS)等共识机制中的任意一种。
步骤620:针对每一共识成功交易,区块链节点将共识成功交易的交易哈希转换为第一进制的哈希数值;其中,共识成功交易为已达成共识的候选交易。
步骤630:区块链节点根据每一共识成功交易的哈希数值,通过对防重放节点总数进行取余计算,确定共识成功交易对应的防重放节点。
当候选区块达成共识时,候选区块中的候选交易被执行成功,换而言之,候选区块中的候选交易已达成共识。此时,可将已达成共识的候选交易称为共识成功交易。
针对每一共识成功交易,区块链节点可以将共识成功交易的交易哈希转换为第一进制的哈希数值。
针对每一共识成功交易的哈希数值,区块链节点对防重放节点总数进行取余计算,获得余数,并基于该余数确定共识成功交易对应的防重放节点。
步骤640:区块链节点向防重放节点发送共识确认消息;其中,共识确认消息包括与防重放节点对应的共识成功交易的交易哈希。
区块链节点在确定出所有共识成功交易对应的防重放节点后,可以基于对应于防重放节点的共识成功交易的交易哈希,为各防重放节点生成共识确认消息。区块链节点可以向防重放节点发送上述共识确认消息。
步骤650:防重放节点从本地哈希缓存表中删除共识成功交易的交易哈希。
步骤660:防重放节点向共识哈希表中放入共识成功交易的交易哈希。
防重放节点接收上述共识确认消息,可知此前检测过的候选交易被执行完成。防重放节点可以从共识确认消息中解析出共识成功交易的交易哈希,进而从本地哈希缓存表中删除解析出的交易哈希,向共识哈希表中放入解析出的交易哈希。
通过该措施,区块链节点在为候选区块达成共识后,可以通知各个防重放节点更新自身的本地哈希缓存表和共识哈希表,以便于后续执行防重放检测。
在一实施例中,区块链节点在启动时,可以通过预设的对应于若干防重放节点的连接信息,与防重放节点建立连接。其中,连接信息可以包括防重放节点的IP(InternetProtocol Address,互联网协议地址)地址、MAC(Media Access Control Address,媒体存取控制位址)地址、端口号等信息。区块链节点上可以预配置对应的若干防重放节点的连接信息,并在启动时通过连接信息与防重放节点建立连接,以便在后续控制防重放节点执行防重放检测任务。联盟链中单位时间可以产生大量候选交易,通过分配防重放节点来执行防重放检测任务,可以提高防重放检测的效率。
参见图7,为本申请一实施例提供的交易防重放的检测装置的框图,该装置应用于区块链节点,如图7所示,该装置可以包括:
转换模块710,用于针对本地的待检查交易队列中每一候选交易,将所述候选交易的交易哈希转换为第一进制的哈希数值;
确定模块720,用于根据每一候选交易的哈希数值,通过对防重放节点总数进行取余计算,确定所述候选交易对应的防重放节点;
发送模块730,用于向每一防重放节点发送防重放检测请求;其中,所述防重放检测请求携带与所述防重放节点对应的候选交易的交易哈希;
放入模块740,用于响应于所述防重放节点返回的防重放检测结果,将非重放的候选交易放入本地的待共识交易队列。
参见图8,为本申请另一实施例提供的交易防重放的检测装置的框图,该装置应用于防重放节点,如图8所示,该装置可以包括:
接收模块810,用于接收区块链节点发送的防重放检测请求;其中,所述防重放检测请求中包括若干交易哈希;
判断模块820,用于针对所述防重放检测请求中每一交易哈希,判断防重放哈希表中是否存在所述交易哈希;
生成模块830,用于根据对应于每一交易哈希的判断结果,生成防重放检测结果;
返回模块840,用于向所述区块链节点返回所述防重放检测结果。
上述装置中各个模块的功能和作用的实现过程具体详见上述交易防重放的检测方法中对应步骤的实现过程,在此不再赘述。
在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (12)
1.一种交易防重放的检测方法,应用于区块链节点,其特征在于,包括:
针对本地的待检查交易队列中每一候选交易,将所述候选交易的交易哈希转换为第一进制的哈希数值;
根据每一候选交易的哈希数值,通过对防重放节点总数进行取余计算,确定所述候选交易对应的防重放节点;
向每一防重放节点发送防重放检测请求;其中,所述防重放检测请求携带与所述防重放节点对应的候选交易的交易哈希;
响应于所述防重放节点返回的防重放检测结果,将非重放的候选交易放入本地的待共识交易队列;
通过以下步骤确定所述防重放检测结果:
判断本地哈希缓存表中是否存在所述交易哈希;
若存在,确定所述交易哈希对应的候选交易为重放的候选交易;
若不存在,将所述交易哈希放入所述本地哈希缓存表,并判断共识哈希表中是否存在所述交易哈希;
如果存在,确定所述交易哈希对应的候选交易为重放的候选交易;
如果不存在,确定所述交易哈希对应的候选交易为非重放的候选交易。
2.根据权利要求1所述的方法,其特征在于,所述将非重放的候选交易放入本地的待共识交易队列之后,所述方法还包括:
基于从所述待共识交易队列中拉取的多个候选交易执行共识;
针对每一共识成功交易,将所述共识成功交易的交易哈希转换为所述第一进制的哈希数值;其中,所述共识成功交易为已达成共识的候选交易;
根据每一共识成功交易的哈希数值,通过对所述防重放节点总数进行取余计算,确定所述共识成功交易对应的防重放节点;
向所述防重放节点发送共识确认消息;其中,所述共识确认消息包括与所述防重放节点对应的共识成功交易的交易哈希。
3.根据权利要求1所述的方法,其特征在于,在所述将所述候选交易的交易哈希转换为第一进制的哈希数值之前,所述方法还包括:
通过预设的对应于若干防重放节点的连接信息,与所述防重放节点建立连接。
4.一种交易防重放的检测方法,应用于防重放节点,其特征在于,包括:
接收区块链节点发送的防重放检测请求;其中,所述防重放检测请求中包括若干交易哈希;
针对所述防重放检测请求中每一交易哈希,判断防重放哈希表中是否存在所述交易哈希;
根据对应于每一交易哈希的判断结果,生成防重放检测结果;
向所述区块链节点返回所述防重放检测结果;
所述防重放哈希表包括本地哈希缓存表和共识哈希表;
所述判断防重放哈希表中是否存在所述交易哈希,包括:
判断所述本地哈希缓存表中是否存在所述交易哈希;
若存在,确定所述交易哈希对应的候选交易为重放的候选交易;
若不存在,将所述交易哈希放入所述本地哈希缓存表,并判断所述共识哈希表中是否存在所述交易哈希;
如果存在,确定所述交易哈希对应的候选交易为重放的候选交易;
如果不存在,确定所述交易哈希对应的候选交易为非重放的候选交易。
5.根据权利要求4所述的方法,其特征在于,所述向所述区块链节点返回所述防重放检测结果之后,所述方法还包括:
接收所述区块链节点发送的共识确认消息;其中,所述共识确认消息包括多个共识成功交易的交易哈希;
从所述本地哈希缓存表中删除所述共识成功交易的交易哈希;
向所述共识哈希表中放入所述共识成功交易的交易哈希。
6.一种交易防重放的检测系统,其特征在于,包括:客户端设备、区块链节点、防重放节点;
所述客户端设备,用于通过本地的通用唯一识别码生成器为候选交易生成nonce值,并发送所述候选交易;
所述区块链节点,与所述客户端设备连接,用于将接收到的候选交易放入本地的待检查交易队列;针对本地的待检查交易队列中每一候选交易,将所述候选交易的交易哈希转换为第一进制的哈希数值;根据每一候选交易的哈希数值,通过对防重放节点总数进行取余计算,确定所述候选交易对应的防重放节点;向每一防重放节点发送防重放检测请求;其中,所述防重放检测请求携带与所述防重放节点对应的候选交易的交易哈希;响应于所述防重放节点返回的防重放检测结果,将非重放的候选交易放入本地的待共识交易队列;
所述防重放节点,与所述区块链节点连接,用于接收区块链节点发送的防重放检测请求;其中,所述防重放检测请求中包括若干交易哈希;针对所述防重放检测请求中每一交易哈希,判断防重放哈希表中是否存在所述交易哈希;根据对应于每一交易哈希的判断结果,生成防重放检测结果;向所述区块链节点返回所述防重放检测结果;
通过以下步骤确定所述防重放检测结果:
判断本地哈希缓存表中是否存在所述交易哈希;
若存在,确定所述交易哈希对应的候选交易为重放的候选交易;
若不存在,将所述交易哈希放入所述本地哈希缓存表,并判断共识哈希表中是否存在所述交易哈希;
如果存在,确定所述交易哈希对应的候选交易为重放的候选交易;
如果不存在,确定所述交易哈希对应的候选交易为非重放的候选交易。
7.一种交易防重放的检测装置,应用于区块链节点,其特征在于,包括:
转换模块,用于针对本地的待检查交易队列中每一候选交易,将所述候选交易的交易哈希转换为第一进制的哈希数值;
确定模块,用于根据每一候选交易的哈希数值,通过对防重放节点总数进行取余计算,确定所述候选交易对应的防重放节点;
发送模块,用于向每一防重放节点发送防重放检测请求;其中,所述防重放检测请求携带与所述防重放节点对应的候选交易的交易哈希;
放入模块,用于响应于所述防重放节点返回的防重放检测结果,将非重放的候选交易放入本地的待共识交易队列;
所述检测装置通过以下步骤确定所述防重放检测结果:
判断本地哈希缓存表中是否存在所述交易哈希;
若存在,确定所述交易哈希对应的候选交易为重放的候选交易;
若不存在,将所述交易哈希放入所述本地哈希缓存表,并判断共识哈希表中是否存在所述交易哈希;
如果存在,确定所述交易哈希对应的候选交易为重放的候选交易;
如果不存在,确定所述交易哈希对应的候选交易为非重放的候选交易。
8.一种交易防重放的检测装置,应用于防重放节点,其特征在于,包括:
接收模块,用于接收区块链节点发送的防重放检测请求;其中,所述防重放检测请求中包括若干交易哈希;
判断模块,用于针对所述防重放检测请求中每一交易哈希,判断防重放哈希表中是否存在所述交易哈希;
生成模块,用于根据对应于每一交易哈希的判断结果,生成防重放检测结果;
返回模块,用于向所述区块链节点返回所述防重放检测结果;
所述防重放哈希表包括本地哈希缓存表和共识哈希表;
所述判断模块在用于判断防重放哈希表中是否存在所述交易哈希时,所述判断模块用于:
判断所述本地哈希缓存表中是否存在所述交易哈希;
若存在,确定所述交易哈希对应的候选交易为重放的候选交易;
若不存在,将所述交易哈希放入所述本地哈希缓存表,并判断所述共识哈希表中是否存在所述交易哈希;
如果存在,确定所述交易哈希对应的候选交易为重放的候选交易;
如果不存在,确定所述交易哈希对应的候选交易为非重放的候选交易。
9.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-3任意一项所述的交易防重放的检测方法。
10.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求4-5任意一项所述的交易防重放的检测方法。
11.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成权利要求1-3任意一项所述的交易防重放的检测方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成权利要求4-5任意一项所述的交易防重放的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110139193.9A CN112819628B (zh) | 2021-02-01 | 2021-02-01 | 交易防重放的检测方法及装置、系统、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110139193.9A CN112819628B (zh) | 2021-02-01 | 2021-02-01 | 交易防重放的检测方法及装置、系统、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112819628A CN112819628A (zh) | 2021-05-18 |
CN112819628B true CN112819628B (zh) | 2024-02-02 |
Family
ID=75861318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110139193.9A Active CN112819628B (zh) | 2021-02-01 | 2021-02-01 | 交易防重放的检测方法及装置、系统、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112819628B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190567B (zh) * | 2021-04-28 | 2021-09-28 | 支付宝(杭州)信息技术有限公司 | 一种交易检测方法和装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018046009A1 (zh) * | 2016-09-12 | 2018-03-15 | 上海鼎利信息科技有限公司 | 一种区块链身份系统 |
WO2018119930A1 (zh) * | 2016-12-29 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 交易验证处理方法、装置及节点设备 |
CN108921556A (zh) * | 2018-07-02 | 2018-11-30 | 上海达家迎信息科技有限公司 | 一种区块链的验证方法、装置、设备及存储介质 |
CN110383279A (zh) * | 2018-12-29 | 2019-10-25 | 阿里巴巴集团控股有限公司 | 用于检测重放攻击的系统和方法 |
CN110431577A (zh) * | 2018-12-29 | 2019-11-08 | 阿里巴巴集团控股有限公司 | 用于检测重放攻击的系统和方法 |
CN110825755A (zh) * | 2019-10-30 | 2020-02-21 | 北京海益同展信息科技有限公司 | 区块链的共识方法、共识节点、电子设备、存储介质 |
CN111066046A (zh) * | 2019-04-26 | 2020-04-24 | 阿里巴巴集团控股有限公司 | 抗重放攻击认证协议 |
CN111181715A (zh) * | 2019-12-30 | 2020-05-19 | 杭州云象网络技术有限公司 | 一种基于一致性哈希共识协议的多方跨链方法 |
CN111177262A (zh) * | 2019-12-27 | 2020-05-19 | 中思博安科技(北京)有限公司 | 一种区块链共识方法、相关装置及系统 |
CN112070501A (zh) * | 2020-11-10 | 2020-12-11 | 支付宝(杭州)信息技术有限公司 | 一种区块链交易发起、验证方法及系统 |
-
2021
- 2021-02-01 CN CN202110139193.9A patent/CN112819628B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018046009A1 (zh) * | 2016-09-12 | 2018-03-15 | 上海鼎利信息科技有限公司 | 一种区块链身份系统 |
WO2018119930A1 (zh) * | 2016-12-29 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 交易验证处理方法、装置及节点设备 |
CN108921556A (zh) * | 2018-07-02 | 2018-11-30 | 上海达家迎信息科技有限公司 | 一种区块链的验证方法、装置、设备及存储介质 |
CN110383279A (zh) * | 2018-12-29 | 2019-10-25 | 阿里巴巴集团控股有限公司 | 用于检测重放攻击的系统和方法 |
CN110431577A (zh) * | 2018-12-29 | 2019-11-08 | 阿里巴巴集团控股有限公司 | 用于检测重放攻击的系统和方法 |
CN111066046A (zh) * | 2019-04-26 | 2020-04-24 | 阿里巴巴集团控股有限公司 | 抗重放攻击认证协议 |
CN110825755A (zh) * | 2019-10-30 | 2020-02-21 | 北京海益同展信息科技有限公司 | 区块链的共识方法、共识节点、电子设备、存储介质 |
CN111177262A (zh) * | 2019-12-27 | 2020-05-19 | 中思博安科技(北京)有限公司 | 一种区块链共识方法、相关装置及系统 |
CN111181715A (zh) * | 2019-12-30 | 2020-05-19 | 杭州云象网络技术有限公司 | 一种基于一致性哈希共识协议的多方跨链方法 |
CN112070501A (zh) * | 2020-11-10 | 2020-12-11 | 支付宝(杭州)信息技术有限公司 | 一种区块链交易发起、验证方法及系统 |
Non-Patent Citations (1)
Title |
---|
区块链共识算法研究与趋势分析;段希楠;延志伟;耿光刚;阎保平;;科研信息化技术与应用(第06期);45-53 * |
Also Published As
Publication number | Publication date |
---|---|
CN112819628A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108696589B (zh) | 区块链数据传输方法、装置、设备和存储介质 | |
CN104144419A (zh) | 一种身份验证的方法、装置及系统 | |
CN108920257B (zh) | 事务处理方法、装置、设备及存储介质 | |
CN113259479B (zh) | 一种数据处理方法以及设备 | |
CN110084600B (zh) | 决议事务请求的处理、验证方法、装置、设备及介质 | |
CN109101664B (zh) | 一种轻量级节点的数据传输方法、装置、设备和介质 | |
CN112819628B (zh) | 交易防重放的检测方法及装置、系统、电子设备、存储介质 | |
CN110969417A (zh) | 政务事项同步方法、装置、系统、计算机设备和存储介质 | |
KR102114532B1 (ko) | 정보 운용 | |
CN109600254B (zh) | 全链路日志的生成方法及相关系统 | |
CN114328029A (zh) | 一种应用资源的备份方法、装置、电子设备及存储介质 | |
CN112087475A (zh) | 一种云平台组件应用的消息推送方法、装置及消息服务器 | |
CN111327680B (zh) | 认证数据同步方法、装置、系统、计算机设备和存储介质 | |
CN116561179A (zh) | 数据查询方法、装置、设备及程序产品 | |
CN112231408B (zh) | 数据集成方法及装置、电子设备、存储介质 | |
CN114968822A (zh) | 接口测试方法、装置、计算机设备及存储介质 | |
CN114461912A (zh) | 一种信息处理方法、装置、电子设备及存储介质 | |
CN111489212B (zh) | 一种基于大数据的订单开票方法、装置、设备和介质 | |
CN104753755A (zh) | 系统接入方法、装置、应用客户端和im后台系统 | |
CN112465599A (zh) | 订单处理方法、订单处理系统及计算设备 | |
CN116720818B (zh) | 基于区块链的仓储处理方法、装置、计算机设备 | |
CN113379542B (zh) | 一种区块链交易的查询方法、装置、介质及电子设备 | |
US20170201879A1 (en) | Temporary Disposable Portable Identifier | |
CN113448931B (zh) | 数据处理方法、业务交易平台及业务提供平台 | |
CN114677137A (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 |