CN117408704A - 交易重放检查方法、区块链节点及其设备 - Google Patents

交易重放检查方法、区块链节点及其设备 Download PDF

Info

Publication number
CN117408704A
CN117408704A CN202311439551.3A CN202311439551A CN117408704A CN 117408704 A CN117408704 A CN 117408704A CN 202311439551 A CN202311439551 A CN 202311439551A CN 117408704 A CN117408704 A CN 117408704A
Authority
CN
China
Prior art keywords
transaction
replay
block
transactions
information
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.)
Pending
Application number
CN202311439551.3A
Other languages
English (en)
Inventor
曹睿学
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Ant Blockchain Technology Shanghai Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ant Blockchain Technology Shanghai Co Ltd filed Critical Ant Blockchain Technology Shanghai Co Ltd
Priority to CN202311439551.3A priority Critical patent/CN117408704A/zh
Publication of CN117408704A publication Critical patent/CN117408704A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/405Establishing or using transaction specific rules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种区块链系统中的交易重放检查方法、区块链节点和设备,所述区块链节点运行有第一进程和第二进程,所述第二进程对应的内存中存储有防重放集合,防重放集合中包括多个第一交易各自的防重放信息、所属区块的区块号,第一交易为通过重放检查的交易,所述方法包括:第一进程将第二交易的防重放信息、所属区块的区块号发送给第二进程;第二进程在确定第二交易的防重放信息与防重放集合中的第三交易的防重放信息相同的情况中,确定第二交易的所属区块的区块号与第三交易是否相同;第二进程在第二交易的所属区块的区块号与第三交易相同的情况下,确定第二交易不是重放交易。

Description

交易重放检查方法、区块链节点及其设备
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种区块链系统中的交易重放检查方法、区块链节点及其设备
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
发明内容
本发明的目的在于提供一种区块链系统中的交易重放检查方法,以在服务架构的区块链节点中进行交易重放检查。
本说明书第一方面提供一种区块链系统中的交易重放检查方法,所述区块链系统中的区块链节点运行有第一进程和第二进程,所述第二进程对应的内存中存储有第一集合,所述第一集合包括多个第一交易各自的防重放信息、所属区块的区块号,所述第一交易为通过重放检查的交易,所述第一交易的防重放信息基于所述第一交易获取,所述方法由区块链节点执行,包括:
所述第一进程将第二交易的防重放信息、所属区块的区块号发送给第二进程;
所述第二进程在确定所述第二交易的防重放信息与所述第一集合中的第三交易的防重放信息相同的情况中,确定所述第二交易的所属区块的区块号与所述第三交易是否相同;
所述第二进程在所述第二交易的所属区块的区块号与所述第三交易相同的情况下,确定所述第二交易不是重放交易。
本说明书第二方面提供一种区块链系统中的交易重放检查方法,所述区块链系统的区块链节点中包括第一设备和第二设备,所述第二设备对应的内存中存储有第一集合,所述第一集合包括多个第一交易各自的防重放信息、所属区块的区块号,所述第一交易为通过重放检查的交易,所述第一交易的防重放信息基于所述第一交易获取,所述方法由所述第二设备执行,包括:
从所述第一设备接收第二交易的防重放信息、所属区块的区块号;
在确定所述第二交易的防重放信息与所述第一集合中的第三交易的防重放信息相同的情况中,确定所述第二交易的所属区块的区块号与所述第三交易是否相同;
在所述第二交易的所属区块的区块号与所述第三交易相同的情况下,确定所述第二交易不是重放交易。
本说明书第三方面提供一种区块链系统中的区块链节点,所述区块链节点中运行有第一进程和第二进程,所述第二进程对应的内存中存储有第一集合,所述第一集合包括多个第一交易各自的防重放信息、所属区块的区块号,所述第一交易为通过重放检查的交易,所述第一交易的防重放信息基于所述第一交易获取,
所述第一进程用于将第二交易的防重放信息、所属区块的区块号发送给第二进程;
所述第二进程用于在确定所述第二交易的防重放信息与所述第一集合中的第三交易的防重放信息相同的情况中,确定所述第二交易的所属区块的区块号与所述第三交易是否相同;在所述第二交易的所属区块的区块号与所述第三交易相同的情况下,确定所述第二交易不是重放交易。
本说明书第四方面提供一种区块链节点中的第二设备,所述第二设备对应的内存中存储有第一集合,所述第一集合包括多个第一交易各自的防重放信息、所属区块的区块号,所述第一交易为通过重放检查的交易,所述第一交易的防重放信息基于所述第一交易获取,所述第二设备包括:
接收单元,用于从所述区块链节点中的第一设备接收第二交易的防重放信息、所属区块的区块号;
确定单元,用于在确定所述第二交易的防重放信息与所述第一集合中的第三交易的防重放信息相同的情况中,确定所述第二交易的所属区块的区块号与所述第三交易是否相同;在所述第二交易的所属区块的区块号与所述第三交易相同的情况下,确定所述第二交易不是重放交易。
本说明书第五方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第二方面所述的方法。
本说明书第六方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第二方面所述的方法。
在本说明书实施例提供的方案中,对于分别使用控制进程进行调度、使用数据面进程进行防重放检查的区块链节点,通过在防重放集合中引入交易所属的区块号、以及交易在区块中的标识来进行防重放检查,避免了在该架构下对已经通过防重放检查的交易再次进行防重放检查时对该交易进行误判,实现了在该架构下正确地对交易进行防重放检查。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一实施例中的区块链架构图;
图2为一实施例中的流水线式的区块处理过程示意图;
图3为本说明书实施例中在控制进程未发生重启时对交易进行防重放检查的方法流程图;
图4为本说明书实施例中在控制进程发生重启之后对交易进行防重放检查的方法流程图;
图5为本说明书一实施例中的一种区块链节点中的第二设备的架构图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图1示出了一实施例中的区块链系统架构图。在图1所示的区块链系统中,区块链系统中包括N个节点,图1中示意示出节点1-节点8。节点之间的连线示意性的表示节点与节点之间的连接,所述连接例如可以为TCP连接等,用于在节点之间传输数据。这些节点上可存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链系统中的每个节点可通过执行相同的交易而产生区块链中的相同的状态,区块链系统中的每个节点可存储相同的状态数据库。
区块链领域中的交易可以指在区块链中执行并记录在区块链中的任务单元。交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data)。例如,在交易为转账交易的情况中,From字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,To字段表示接收该交易(即接收转账)的账户地址,Data字段中包括转账金额。
此外交易中还可以包括nonce字段和时间戳字段。其中,nonce字段用于指示交易发送账户(即From字段指示的账户)已发出的交易的数目。时间戳字段用于指示交易发出时的时间。nonce字段和时间戳字段可用于验证重放交易,从而避免重放攻击。在区块链中,重放攻击指的是恶意用户或者恶意节点重复广播已经被验证的交易,以欺骗网络中其他节点。在共识机制中,重放攻击也可能会影响区块链网络的安全性和公正性。例如,在一些共识机制中,恶意节点可以重复广播已经被验证的交易,从而增加自己的投票权重,从而影响区块链的共识结果。
一般来说,在相关技术中,在执行区块链中的交易时,是逐个区块完成的。例如,先进行对区块N处理,该处理例如包括共识、执行、持久化等操作,然后再进行对区块N+1的处理。在该情况下,假设区块链中一个区块的出块时间为t,则m个区块的出块时间为m*t,这使得区块链中的每秒执行交易(TPS)指标较低。
其中,在该相关技术中,在对区块N进行处理时,通过对区块N的共识,确定区块N中包括的多个交易以及该多个交易的排列顺序,该排列顺序可以称为Index。在完成对区块N的共识之后,可根据预先维护的防重放集合对区块N中的每个交易进行防重放检查,以检测该交易是否为重放交易。
该防重放集合中包括在先通过防重放检查的各个交易的交易要素信息。在一种实施方式中,防重放集合中可包括在距离当前时间最近的预设时长(例如30分钟)内通过防重放检查的各个交易的交易要素信息。对于防重放集合中的超出该预设时长的交易要素信息,可以定期进行清除处理。在该实施方式下,当对一个交易进行防重放检查时,首先确定该交易的时间戳是否在距离当前时间最近的预设时长内,如果超出该预设时长,则可判定该交易不合法,在不超出该预设时长的情况下,才基于该防重放集合对该交易进行防重放检查。
根据业务场景的不同和防重放检查的精度的不同,该交易要素信息例如包括以下三项信息中的至少一项:(1)交易哈希值;(2)交易的发送账户和交易中的nonce值;(3)交易的时间戳。例如,在交易较稀疏的业务场景中,可基于交易的时间戳进行对交易的防重放检查。可以理解,交易要素信息中还可以包括其他用于标识交易的信息。
在对目标交易进行防重放检查时,确定该目标交易的交易要素信息是否与防重放检查中任一交易的交易要素信息一致,如果确定结果为是,则确定该目标交易为重放交易,如果确定结果为否,则确定该目标交易不是重放交易,并且把该目标交易的交易要素信息记录到防重放集合中。
在另一种相关技术中,可对区块链节点提供服务化架构。具体是,如图1中所示,在节点中可设置多个进程,图中示意示出控制进程和数据面进程。该多个进程可以设置在单个计算设备中,或者可以分别设置在不同的计算设备中。不同的进程可提供不同的服务。例如,控制进程和数据面进程可分别设置多个进程,控制进程可提供共识服务、调度服务等,不同的数据面进程可提供防重放检查、交易执行、区块持久化等服务。
在服务化架构下,区块链节点可以以流水线的方式同时处理多个区块。图2为一实施例中的流水线式的区块处理过程示意图。如图2中所示,由控制进程、数据面进程1、数据面进程2和数据面进程3四个进程分别执行区块处理过程中的一个阶段。如图2中的与各个进程对应的斜虚线所示,控制进程用于进行对各个区块的共识,数据面进程1用于进行对各个区块中的交易的防重放检查,数据面进程2用于执行各个区块中的交易,数据面进程3用于对各个区块的相关数据(包括区块数据、执行区块产生的状态数据等)进行持久化。
图2中从左向右为时间发展方向,图中示出t1-t6共6段时间。其中,在t1时段,可由控制进程进行对区块N的共识;在t2时段,并行地,控制进程进行对区块N+1的共识,数据面进程1进行对区块N的防重放检查;在t3时段,并行地,控制进程进行对区块N+2的共识,数据面进程1进行对区块N+1的防重放检查,数据面进程2进行对区块N的交易的执行;在t4时段,并行地,数据面进程1进行对区块N+2的防重放检查,数据面进程2进行对区块N+1的交易的执行,数据面进程3进行对区块N的相关数据的持久化。可以理解,图2中仅示出对区块N、区块N+1和区块N+2的处理作为示例,实际中在区块N+2之后还有区块N+3、区块N+4等,在图2中未示出。
通过图2所示的由多个进程进行对区块的流水线式的处理,多个进程可并行地进行对不同区块的处理,从而可缩短对多个区块的总的处理时长。例如,如图2所示,图2中四个进程仅需要t1-t6六个时段即可完成对区块N-区块N+2三个区块的处理,相比于顺序处理三个区块的时长,大大缩短了总的区块处理时长,提高了区块链系统的交易执行效率。
在该服务架构下,各个区块链节点的控制进程共同进行对每个区块的共识,在每次共识之后,控制进程会将对区块的共识结果进行持久化存储。控制进程在对区块完成共识之后,调度数据面进程1进行对已共识的区块的防重放检查。参考图2,假设控制进程在t3时段结束时发生重启,此时,控制进程已经进行了对区块N、区块N+1和区块N+2的共识,但是都未调度进行对这三个区块的持久化。控制进程在重启之后,会到持久性存储介质(例如硬盘)中读取目前已经持久化的最新的区块(即区块N-1),然后从持久性存储介质中读取已经记录的在区块N-1之后的已经共识的若干区块(例如区块N、区块N+1、区块N+2)的共识结果,将按照共识顺序排列的该若干区块的共识结果发送给数据面进程1,以重新进行对这些区块的防重放检查。
数据面进程1可按照区块N、区块N+1、区块N+2的排列顺序依次对这三个区块进行防重放检查。以区块N为例,由于数据面进程1在时段t2已经进行了对区块N的防重放检查,因此在防重放集合中已经记录了区块N中的通过防重放检查的若干交易的交易要素信息,数据面进程1如果仍然与上文所述类似地,通过防重放集合中包括在先通过防重放检查各个交易的交易要素信息对该若干交易进行防重放检查,将会把改若干交易都判定为重放交易,从而造成对重放交易的误判。
在另一种情况中,由于控制进程与数据面进程之间通过远程过程调用(RemoteProcedure Call,RPC)机制进行进程间通信,RPC交互存在三种状态:成功、失败、未知。例如,进程1通过RPC向进程2发送信息,在进程2收到进程1的信息,并完成相应处理,并将结果送回给进程1的情况下,此次发送信息的状态为成功状态;在进程2对进程1的信息处理失败,并将指示处理失败的结果返回给进程1的情况下,此次发送信息的状态为失败状态;在进程1在超时时间内未收到进程2的回复的情况下,此次发送信息的状态为未知状态,其中导致RPC交互的“未知”状态的情况可能包括:进程2异常退出、由于网络问题导致请求丢失或响应丢失,等等。
在控制进程调用数据面进程1进行对区块N的防重放检查的返回状态为未知的情况中,控制进程需要重新调用数据面进程1进行对区块N的防重放检查。在该情况下,数据面进程1有可能已经对区块N的交易进行了防重放检查,在再次对区块N进行防重放检查时,按照现有的防重放检查的方案,将会把区块N中的交易判断为重放交易。
为解决上述问题,本说明书实施例提供一种在服务架构的区块链节点中的防重放检查的方法,通过在防重放集合中还记录各个通过防重放检查的交易所属的区块、以及在该区块中的Index,控制进程在对目标交易进行防重放检查时,除了将目标交易的防重放信息与防重放集合中的各个交易的防重放信息进行比对之外,还将目标交易所属的区块、以及在该区块中的Index与防重放集合中的各个交易所属的区块、以及在该区块中的Index进行比对,以确定目标交易是否为重放交易,从而避免对目标交易的误判。
图3为本说明书实施例中在控制进程未发生重启时对交易进行防重放检查的方法流程图。
如图3所示,在步骤S301,数据面进程向控制进程发送交易池中的多个交易作为待共识的区块(例如区块N)的多个交易。
区块链系统的结构可包括有主共识的结构和无主共识的结构。其中,在有主共识的结构中,区块链系统中包括主节点和多个从节点,主节点从客户端接收多个交易,将接收的多个交易放到交易池中,并从交易池获取多个交易,根据该多个交易生成共识提议,将该共识提议发送给各个从节点以进行对区块的共识。也就是说,在有主共识的结构下,从节点不需要从交易池获取交易以生成共识提议,区块链系统中仅主节点执行该步骤S301,从节点不需要执行步骤S301,而是从步骤S303开始执行。在无主共识的结构下,区块链系统中的每个节点可以与不同的客户端连接以从客户端接收交易,并将接收的交易放入本地的交易池中,因此,每个节点都可以执行步骤S301。
在将要进行共识提议的区块链节点中,控制进程在完成对上一个区块(例如区块N-1)的处理之后,即对区块N-1持久化之后,可向数据面进程1请求获取下一个区块(即区块N)的一批交易,以进行对区块N的处理。数据面进程1可响应于该请求,从交易池中获取一批交易,并将该批交易发送给控制进程。
在步骤S303,控制进程与其他区块链节点一起对多个交易进行共识。
控制进程可基于接收的多个交易生成共识提议,并将该共识提议发送给各个其他节点,以对该多个交易进行共识。
在一种实施方式中,控制进程生成的共识提议中包括该多个交易对应的区块号、该多个交易、以及各个交易在该区块中的Index。控制进程通过将共识提议发送给各个其他节点,使得其他节点可获取该多个交易,并基于预设的共识机制与其他节点一起对该多个交易进行共识。当前主流的共识机制包括:工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法等。其中,在各种共识算法中,通常在预设数目的节点对待共识的数据(即共识提议)达成一致之后,从而确定对该共识提议的共识成功。
在另一种实施方式中,控制进程生成的共识提议中包括该多个交易对应的区块号、该多个交易各自的交易哈希值、以及各个交易在该区块中的Index。控制进程同时通过交易广播,将区块中的多个交易广播给其他节点。通过该方式,可减少共识过程中的计算量,提高共识的效率。
控制进程在完成对区块N的共识之后,在持久性介质中存储区块N中多个交易各自的交易信息列表,所述交易信息列表包括用于对各个交易进行防重放检测的信息,该交易信息列表中包括与各个交易分别对应的一条信息,该条信息中包括对应的交易的防重放信息。在一种实施方式中,交易信息列表中包括各个交易的防重放信息和该交易在区块中的Index。其中,交易的防重放信息包括以下要素信息中的至少一项:交易哈希值;交易的发送账户和nonce;时间戳。根据不同的业务场景,可选择不同的交易要素信息作为防重放信息。例如,交易量较大的业务场景中,可在防重放信息中包括交易哈希值,或者,在交易量较小的业务场景中,可在防重放信息中包括时间戳。
在步骤S305,控制进程向数据面进程发送所述多个交易对应的区块号和交易信息列表。
如上文所述,控制进程与数据面进程之间通过RPC机制进行进程间通信。在控制进程调用数据面进程1进行对区块N的防重放检查的返回状态为未知的情况中,控制进程再次将区块N的多个交易对应的区块号和交易信息列表发送给数据面进程,以进行对区块N的交易重放检查,在该情况下,数据面进程有可能存在对区块N中的交易重复进行防重放检查。
控制进程在完成步骤S305之后,根据图2所示的流水线处理过程,控制进程可从数据面进程接收交易池中的多个交易作为区块N+1的多个交易,并开始与其他区块链节点的控制进程一起对区块N+1的共识过程,并在完成对区块N+1的共识之后,将区块N+1的多个交易的交易信息列表发送给数据面进程,从而使得数据面进程在完成对区块N的防重放检查之后,继续进行对区块N+1的防重放检查。
在步骤S307,数据面进程基于防重放集合对各个交易进行防重放检查。
在本说明书实施例中,防重放集合中包括多个元素,每个元素对应于一个非重放交易的信息,其中,一个元素中包括交易的防重放信息、交易所属的区块的区块号;或者在一种实施方式中,一个元素中包括交易的防重放信息、交易所属的区块的区块号、以及交易在该区块中的Index。
数据面进程按照上述多个交易中各个交易的Index的顺序对该多个交易依次进行防重放检查。对于该多个交易中的一个交易(下文称为目标交易),数据面进程可通过图3中的步骤S3071-S3072对该目标交易进行防重放检查。
具体是,在步骤S3071,数据面进程确定防重放集合中是否有目标交易的防重放信息。
如果防重放集合中不包括该目标交易的防重放信息,说明该目标交易为非重放交易,数据面进程可在防重放集合中添加与该目标交易对应的元素,其中,该目标交易对应的元素中包括该目标交易的防重放信息和所述区块的区块号,或者,该目标交易对应的元素中包括该目标交易的防重放信息、所述区块的区块号和该目标交易在该区块中的Index。
如果防重放集合中的一个元素中的防重放信息与该目标交易的防重放信息一致,则执行步骤S3072。
在步骤S3072,数据面进程确定目标交易的区块号是否与防重放集合中的所述元素中相同。
如上文所述,防重放集合中的每个元素可包括区块号和防重放信息,数据面进程在确定防重放集合中的一个元素包括目标交易的防重放信息之后,进一步确定该元素中的区块号是否与目标交易的区块号一致。如果目标交易的区块号与该元素中不一致,则可确定该目标交易为重放交易,如果目标交易的区块号与该元素中一致,则可认为该目标交易大概率不是重放交易,该目标交易大概率是重新进行防重放检查的交易。通过在防重放集合中加入交易所属的区块号,可以基于交易的区块号对重新进行防重放检查的交易(下文称为重入交易)进行筛查,如果防重放集合中的上述元素的区块号与目标交易的区块号不一致,则可立即确认该目标交易不是重入交易,即该目标交易为重放交易。而同一个区块中的两个交易(包括目标交易)为重放交易的概率相比于目标交易与更大范围内的多个交易中的一个交易为重放交易的概率要小得多,因此,可认为该目标交易大概率是重入交易,即不是重放交易,因此,该基于交易所属区块号的筛查减少了将重入交易误判为重放交易的概率。
在一种实施方式中,防重放集合中的每个元素可包括区块号、Index和防重放信息,数据面进程在确定防重放集合中的一个元素包括目标交易的防重放信息之后,进一步确定该元素中的区块号和Index是否与目标交易的区块号和Index一致。如果目标交易的区块号和Index中的任一项与该元素中不一致,则可确定该目标交易为重放交易,如果二者都与该元素中一致,则可确定该目标交易不是重放交易,该目标交易是重新进行防重放检查的交易。
通过步骤S3071-S3072对区块中的每个交易进行防重放检查,在重复对交易进行防重放检查的情况下,不会将非重放交易误判为重放交易,提高了防重放检查的正确性。
在步骤S309,数据面进程将用于指示区块中的重放交易的信息返回给控制进程。
例如,数据面进程可以将所述多个交易的重放交易的Index返回给控制进程,控制进程基于该信息可删除区块N中的该Index对应的交易,并指示数据面进程2执行区块N中的各个非重放交易。
图4为本说明书实施例中在控制进程发生重启之后对交易进行防重放检查的方法流程图。
在步骤S401,控制进程在重启之后,确定已共识、未持久化的若干区块,并获取该若干交易的交易信息列表。
控制进程在重启之后,首先从持久性介质中确定已经持久化存储的最新的区块,例如区块N-1。之后,控制进程从持久性介质中确定在区块N-1之后的已经共识的若干区块,例如如2所示,控制进程在完成对区块N+2的共识之后重启,在持久性介质中至少存储了区块N、区块N+1和区块N+2的交易信息列表,从而,控制进程可确定在区块N-1之后的已经共识的区块包括区块N、区块N+1和区块N+2三个区块。控制进程可读取区块N、区块N+1和区块N+2这三个区块各自的交易信息列表。
在步骤S403,控制进程将各个区块的交易信息列表发送给数据面进程。
在步骤S405,数据面进程基于防重放集合依次对若干区块中各个区块中的交易进行防重放检查。
在本说明书实例中,控制面进程响应于控制进程的信息,采用如图4中的的步骤S4051-S4052进行对上述若干区块的交易的防重放检查。其中,数据面进程依次对区块N、区块N+1和区块N+2中各个区块中的交易进行防重放检查,对于各个区块中的多个交易,按照各个交易的Index的顺序对该多个交易进行防重放检查。
其中,步骤S4051-S4052的具体实施可参考上文中对步骤S3071-S3072的描述,在此不再赘述。
在步骤S407,数据面进程在完成对若干区块的防重放检查之后,向控制进程返回用于指示各个区块中的重放交易的信息。该步骤可参考上文对步骤S309的描述,在此不再赘述。
图5为本说明书一实施例中的一种区块链节点中的第二设备的架构图,所述第二设备对应的内存中存储有第一集合,所述第一集合包括多个第一交易各自的防重放信息、所属区块的区块号,所述第一交易为通过重放检查的交易,所述第一交易的防重放信息基于所述第一交易获取,所述第二设备用于执行如图3或图4所示的方法,包括:
接收单元51,用于从所述区块链节点中的第一设备接收第二交易的防重放信息、所属区块的区块号;
确定单元52,用于在确定所述第二交易的防重放信息与所述第一集合中的第三交易的防重放信息相同的情况中,确定所述第二交易的所属区块的区块号与所述第三交易是否相同;在所述第二交易的所属区块的区块号与所述第三交易相同的情况下,确定所述第二交易不是重放交易。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如图3或图4所示的方法。
本说明书实施例还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如图3或图4所示的方法。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。

Claims (16)

1.一种区块链系统中的交易重放检查方法,所述区块链系统中的区块链节点运行有第一进程和第二进程,所述第二进程对应的内存中存储有第一集合,所述第一集合包括多个第一交易各自的防重放信息、所属区块的区块号,所述第一交易为通过重放检查的交易,所述第一交易的防重放信息基于所述第一交易获取,所述方法由区块链节点执行,包括:
所述第一进程将第二交易的防重放信息、所属区块的区块号发送给所述第二进程;
所述第二进程在确定所述第二交易的防重放信息与所述第一集合中的第三交易的防重放信息相同的情况中,确定所述第二交易的所属区块的区块号与所述第三交易是否相同;
所述第二进程在所述第二交易的所属区块的区块号与所述第三交易相同的情况下,确定所述第二交易不是重放交易。
2.根据权利要求1所述的方法,所述第一集合中还包括所述多个第一交易各自在所属区块中的标识,所述方法还包括:所述第一进程将所述第二交易在所属区块中的标识发送给所述第二进程,
所述第二进程在所述第二交易的所属区块的区块号与所述第三交易相同的情况下,确定所述第二交易不是重放交易,包括:
所述第二进程在所述第二交易的所属区块的区块号和在所属区块中的标识与所述第三交易相同的情况下,确定所述第二交易不是重放交易。
3.根据权利要求1所述的方法,在所述第一进程将第二交易的防重放信息、所属区块的区块号发送给第二进程之前,所述方法还包括:
所述第一进程与其他区块链节点进行对第一区块的共识,在所述共识达成之后,在持久性介质中存储所述第一区块的交易信息列表,所述交易信息列表中包括所述第一区块中各个交易的区块号、在所述第一区块中的标识和防重放信息,所述第一区块中包括所述第二交易。
4.根据权利要求3所述的方法,所述方法还包括:
所述第一进程向所述第二进程请求获取待处理的所述第一区块对应的一批交易;
所述第二进程响应于所述第一进程的请求从交易池中获取多个第四交易,将所述多个第四交易发送给所述第一进程;
所述第一进程基于所述多个第四交易生成所述第一区块的共识提议,将所述共识提议发送给其他区块链节点,以进行对所述第一区块的共识。
5.根据权利要求3所述的方法,所述第一进程将第二交易的防重放信息、所属区块的区块号发送给第二进程包括:所述第一进程将所述第一区块的交易信息列表发送给所述第二进程,以进行对所述第一区块中的交易的防重放检查;
在所述第一进程将所述第一区块的交易信息列表发送给所述第二进程之后,所述方法还包括:所述第一进程与其他区块链节点进行第二区块的共识,所述第二区块为所述第一区块的下一个区块,在与其他区块链节点完成对所述第二区块的共识之后,将所述第二区块的交易信息列表发送给所述第二进程。
6.根据权利要求5所述的方法,所述方法还包括:
所述第二进程在完成对所述第一区块中的交易的防重放检查之后,进行对所述第二区块中的交易的防重放检查。
7.根据权利要求1所述的方法,在所述第一进程将第二交易的防重放信息、所属区块的区块号发送给第二进程之前,所述方法还包括:
所述第一进程在重启之后,基于在持久性介质中存储的持久化的区块和已共识的区块的交易信息列表,确定已共识、未持久化的若干区块,获取该若干区块各自的交易信息列表,所述交易信息列表中包括对应区块中各个交易的区块号、在所述区块中的标识和防重放信息,所述若干区块中包括所述第二交易。
8.根据权利要求1所述的方法,所述区块链节点包括第一设备和第二设备,所述第一设备用于运行所述第一进程,所述第二设备用于运行所述第二进程。
9.根据权利要求2所述的方法,还包括:所述第二进程在确定所述第一集合中不包括所述第二交易的防重放信息的情况下,确定所述第二交易为非重放交易,在所述第一集合中添加所述第二交易的防重放信息、所属区块的区块号和在所属区块中的标识。
10.根据权利要求2所述的方法,还包括:所述第二进程在所述第二交易的所属区块的区块号和在所属区块中的标识中的任一个与所述第三交易不同的情况下,确定所述第二交易是重放交易。
11.根据权利要求1所述的方法,所述防重放信息包括以下三项信息中的至少一项:
交易哈希值;
交易的发送账户和交易的nonce值;
交易的时间戳。
12.一种区块链系统中的交易重放检查方法,所述区块链系统的区块链节点中包括第一设备和第二设备,所述第二设备对应的内存中存储有第一集合,所述第一集合包括多个第一交易各自的防重放信息、所属区块的区块号,所述第一交易为通过重放检查的交易,所述第一交易的防重放信息基于所述第一交易获取,所述方法由所述第二设备执行,包括:
从所述第一设备接收第二交易的防重放信息、所属区块的区块号;
在确定所述第二交易的防重放信息与所述第一集合中的第三交易的防重放信息相同的情况中,确定所述第二交易的所属区块的区块号与所述第三交易是否相同;
在所述第二交易的所属区块的区块号与所述第三交易相同的情况下,确定所述第二交易不是重放交易。
13.一种区块链系统中的区块链节点,所述区块链节点中运行有第一进程和第二进程,所述第二进程对应的内存中存储有第一集合,所述第一集合包括多个第一交易各自的防重放信息、所属区块的区块号,所述第一交易为通过重放检查的交易,所述第一交易的防重放信息基于所述第一交易获取,
所述第一进程用于将第二交易的防重放信息、所属区块的区块号发送给第二进程;
所述第二进程用于在确定所述第二交易的防重放信息与所述第一集合中的第三交易的防重放信息相同的情况中,确定所述第二交易的所属区块的区块号与所述第三交易是否相同;在所述第二交易的所属区块的区块号与所述第三交易相同的情况下,确定所述第二交易不是重放交易。
14.一种区块链节点中的第二设备,所述第二设备对应的内存中存储有第一集合,所述第一集合包括多个第一交易各自的防重放信息、所属区块的区块号,所述第一交易为通过重放检查的交易,所述第一交易的防重放信息基于所述第一交易获取,所述第二设备包括:
接收单元,用于从所述区块链节点中的第一设备接收第二交易的防重放信息、所属区块的区块号;
确定单元,用于在确定所述第二交易的防重放信息与所述第一集合中的第三交易的防重放信息相同的情况中,确定所述第二交易的所属区块的区块号与所述第三交易是否相同;在所述第二交易的所属区块的区块号与所述第三交易相同的情况下,确定所述第二交易不是重放交易。
15.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求12所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求12所述的方法。
CN202311439551.3A 2023-10-31 2023-10-31 交易重放检查方法、区块链节点及其设备 Pending CN117408704A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311439551.3A CN117408704A (zh) 2023-10-31 2023-10-31 交易重放检查方法、区块链节点及其设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311439551.3A CN117408704A (zh) 2023-10-31 2023-10-31 交易重放检查方法、区块链节点及其设备

Publications (1)

Publication Number Publication Date
CN117408704A true CN117408704A (zh) 2024-01-16

Family

ID=89490577

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311439551.3A Pending CN117408704A (zh) 2023-10-31 2023-10-31 交易重放检查方法、区块链节点及其设备

Country Status (1)

Country Link
CN (1) CN117408704A (zh)

Similar Documents

Publication Publication Date Title
CN109949157B (zh) 一种业务数据的上链方法、装置及系统
CN107450979B (zh) 一种区块链共识方法及装置
CN107450981B (zh) 一种区块链共识方法及设备
CN107391320B (zh) 一种共识方法及装置
CN107040585B (zh) 一种业务校验的方法及装置
CN111327703B (zh) 一种基于区块链的共识方法及装置
CN111008841B (zh) 一种业务处理系统、业务处理的方法、装置及设备
CN113743942B (zh) 交易执行方法、区块链、主节点和主存储设备
CN112506671B (zh) 区块链中的交易处理方法、装置及电子设备
CN115098594A (zh) 在区块链系统中执行交易的方法、区块链系统和节点
CN113744063B (zh) 区块链中执行交易的方法及装置
CN109376988B (zh) 一种业务数据的处理方法和装置
CN113744062B (zh) 在区块链中执行交易的方法、区块链节点和区块链
CN115185755A (zh) 一种异常检测方法、装置、存储介质及电子设备
CN112291321B (zh) 业务处理方法、装置及系统
CN116933886B (zh) 一种量子计算执行方法、系统、电子设备及存储介质
CN117408704A (zh) 交易重放检查方法、区块链节点及其设备
CN115658357A (zh) 重放区块链交易的方法及装置
CN116366666A (zh) 区块链系统中的链状态更新方法和区块链节点
CN110245115B (zh) 一种文件处理方法、引擎及系统
CN114782016A (zh) 基于智能合约的债权数据处理方法、装置及区块链系统
CN114697344B (zh) 区块链系统中共识节点的确定方法、区块链系统、节点、存储介质及计算设备
CN109903048B (zh) 一种出块方法、共识方法和装置
CN117319411A (zh) 一种基于可靠传输协议的异步共识方法、区块链节点
CN117997698A (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