CN117808587A - 交易去重方法及区块链系统中的节点 - Google Patents
交易去重方法及区块链系统中的节点 Download PDFInfo
- Publication number
- CN117808587A CN117808587A CN202311847360.0A CN202311847360A CN117808587A CN 117808587 A CN117808587 A CN 117808587A CN 202311847360 A CN202311847360 A CN 202311847360A CN 117808587 A CN117808587 A CN 117808587A
- Authority
- CN
- China
- Prior art keywords
- transaction
- node
- check
- consensus
- proposer
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000004590 computer program Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 8
- 230000006872 improvement Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 102100029768 Histone-lysine N-methyltransferase SETD1A Human genes 0.000 description 6
- 101000865038 Homo sapiens Histone-lysine N-methyltransferase SETD1A Proteins 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 101150117538 Set2 gene Proteins 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本说明书实施例提供了交易去重方法及区块链系统中的节点。该方法可由区块链系统中的第一节点执行,包括:接收第一交易,第一交易中包括发送者账户、nonce值和指定共识提议者;确定第一交易中的指定共识提议者是否指示第一节点;响应于确定第一交易中的指定共识提议者指示第一节点,对第一交易进行第一检查,第一检查包括:基于通过第一检查的若干第二交易各自包括的多个第一要素,确定第一交易是否为重放交易,该多个第一要素包括发送者账户和nonce值;响应于第一检查的确定结果为否,确定第一交易通过第一检查,并将第一交易缓存到第一节点中的交易池。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及交易去重方法及区块链系统中的节点。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。在区块链中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证数据区块不可篡改和不可伪造。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
发明内容
本发明的目的在于提供一种交易去重方案,能在异步无主共识场景下尽可能的避免多个共识提议者重复提议相同的交易,造成资源(如共识提议者的带宽和计算资源等)的浪费,从而提高区块链系统的整体性能。
本说明书第一方面提供一种交易去重方法,由区块链系统中的第一节点执行,所述方法包括:接收第一交易,所述第一交易中包括发送者账户、nonce值和指定共识提议者;确定所述第一交易中的指定共识提议者是否指示所述第一节点;响应于确定所述第一交易中的指定共识提议者指示所述第一节点,对所述第一交易进行第一检查,所述第一检查包括:基于通过所述第一检查的若干第二交易各自包括的多个第一要素,确定所述第一交易是否为重放交易,所述多个第一要素包括发送者账户和nonce值;响应于所述第一检查的确定结果为否,确定所述第一交易通过所述第一检查,并将所述第一交易缓存到所述第一节点中的交易池。
本说明书第二方面提供一种区块链系统中的节点,包括:接收单元,被配置成接收第一交易,所述第一交易中包括发送者账户、nonce值和指定共识提议者;确定单元,被配置成确定所述第一交易中的指定共识提议者是否指示所述节点;检查单元,被配置成响应于确定所述第一交易中的指定共识提议者指示所述节点,对所述第一交易进行第一检查,所述第一检查包括:基于通过所述第一检查的若干第二交易各自包括的多个第一要素,确定所述第一交易是否为重放交易,所述多个第一要素包括发送者账户和nonce值;存储单元,被配置成响应于所述第一检查的确定结果为否,确定所述第一交易通过所述第一检查,并将所述第一交易缓存到所述节点中的交易池。
本说明书第三方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如第一方面描述的方法。
本说明书第四方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如第一方面描述的方法。
本说明书第五方面提供一种计算机程序产品,当该计算机程序产品在计算机中执行时,令计算机执行如第一方面描述的方法。
在本说明书实施例提供的方案中,支持用户在交易中指定共识提议者,这样在异步无主共识场景下,能尽可能的避免多个共识提议者重复提议相同的交易,造成资源(如共识提议者的带宽和计算资源等)的浪费。由此,能提高区块链系统的整体性能,例如提高区块链系统的吞吐量,降低区块链系统的延迟等。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一实施例中的区块链系统架构图;
图2是本说明书实施例中交易去重方法的流程图;
图3是本说明书实施例中共识前的交易去重过程的示意图;
图4是本说明书实施例中共识前的交易去重过程的示意图;
图5是本说明书实施例中共识前的交易去重过程的示意图;
图6是本说明书实施例中交易去重方法的流程图;
图7是本说明书实施例中共识后的交易去重过程的示意图;
图8是本说明书实施例中交易比对过程的示意图;
图9是本说明书实施例中共识后的交易去重过程的示意图;
图10是本说明书实施例中区块链系统中的节点的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图1示出了一实施例中的区块链系统架构图。在图1所示的区块链系统架构图中,区块链系统中包括N个节点,图1中示意示出节点1-节点8。节点之间的连线示意性的表示节点与节点之间的连接,所述连接例如可以为TCP连接等,用于在节点之间传输数据。这些节点上可存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链系统中的每个节点可通过执行相同的交易而产生区块链系统中的相同的状态,区块链系统中的每个节点可存储相同的状态数据库。
区块链系统中的每个节点可以包括交易池,交易池可以是用于缓存该节点接收的待上链的交易的内存区域。在一个例子中,该节点可以包括用于提供缓存服务的缓存进程,该交易池可以包含在该缓存进程中。其中,进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。
区块链领域中的交易可以指在区块链系统中执行并记录在区块链系统中的任务单元。交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data)。例如,在交易为转账交易的情况中,From字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,To字段表示接收该交易(即接收转账)的账户地址,Data字段中包括转账金额。
区块链技术区别于传统技术的去中心化特点之一,就是在各个节点上进行记账,或者称为分布式记账,而不是传统的集中式记账。区块链系统要成为一个难以攻破的、公开的、不可篡改数据记录的去中心化诚实可信系统,需要在尽可能短的时间内做到分布式数据记录的安全、明确及不可逆。不同类型的区块链网络中,为了在各个记录账本的节点中保持账本的一致,通常采用共识算法来保证。例如,区块链节点之间可以实现区块粒度的共识机制,比如在节点(例如某个独特的节点)产生一个区块后,如果产生的这个区块得到其他节点的认可,其他节点记录相同的区块。再例如,区块链节点之间可以实现交易粒度的共识机制,比如在节点(例如某个独特的节点)获取一笔区块链交易后,如果这笔区块链交易得到其他节点的认可,认可该区块链交易的各个节点可以分别将该区块链交易添加至自身维护的最新区块中,并且最终能够确保各个节点产生相同的最新区块。共识机制是区块链节点就区块信息(或称区块数据)达成全网一致共识的机制,可以保证最新区块被准确添加至区块链。当前主流的共识机制包括:工作量证明(Proof of Work,POW)、股权证明(Proof ofStake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法等。其中,在各种共识算法中,通常在预设数目的节点对待共识的数据(即共识提议)达成一致之后,从而确定对该共识提议的共识成功。具体是,在PBFT算法中,对于N≥3f+1个共识节点,可容忍f个恶意节点,也就是说,当N个共识节点中2f+1个节点达成一致时,可确定共识成功。
目前,区块链系统还可以采用异步共识算法,例如异步拜占庭共识(Honey BadgerByzantine Fault Tolerance,HBBFT)算法等。异步共识算法可以是在异步网络中运行的共识算法,异步共识中不存在唯一的主节点,每个节点每一轮都可以提议自己的交易。可以理解,异步共识算法也可称为异步无主共识算法。在异步共识中,每个节点都能提议若干笔交易,当不同节点打包的交易集合存在相同的交易时,会造成交易重复的后果。重复的交易既不会对区块链系统的状态有影响,又占用了系统的资源。
本说明书实施例提供了一种交易去重方案,能在异步无主共识场景下尽可能的避免多个共识提议者重复提议相同的交易,造成资源的浪费,从而提高区块链系统的整体性能。
图2是本说明书实施例中交易去重方法的流程图。该方法可由区块链系统中的任意节点(下文中称为第一节点)执行,并且包括如下所示的步骤S201-S209。
如图2所示,在步骤S201,第一节点接收交易Tx1,交易Tx1中包括发送者账户、nonce值和指定共识提议者。
其中,第一节点可以接收用户设备发送的交易Tx1,或者接收区块链系统中的其他节点转发的交易Tx1。交易Tx1中可以包括发送者账户、nonce值和指定共识提议者。该nonce值可以代表从该发送者账户发出的交易数。该指定共识提议者可以是该发送者账户对应的用户在交易Tx1中设置的,可以具体实现为节点标识。该指定共识提议者可以表示该用户希望由该指定共识提议者指示的区块链节点对交易Tx1进行提议。进一步地,交易Tx1中还可以包括其他要素,例如包括时间戳、资源总额(Gas上限)等。
需要说明,在一种实施场景中,区块链系统可以只允许用户设备将待发送的交易发送至该交易中的指定共识提议者指示的节点。在该实施场景下,如图3中所示,在步骤S201中,第一节点可以接收用户设备发送的交易Tx1。之后,第一节点可以接着执行步骤S203。其中,图3是本说明书实施例中共识前的交易去重过程的示意图。
在另一种实施场景中,区块链系统可以允许用户设备根据实际需求,将待发送的交易发送至该交易中的指定共识提议者指示的节点;或者,将待发送的交易发送至其他节点,由该其他节点向该交易中的指定共识提议者指示的节点转发该交易。在该实施场景下,在步骤S201中,第一节点可以如图4中所示,接收用户设备发送的交易Tx1;或者如图5中所示,接收区块链系统中的其他节点发送的交易Tx1。之后,第一节点可以如图4和图5中所示,接着执行步骤S203。其中,图4和图5均是本说明书实施例中共识前的交易去重过程的示意图。
在步骤S203,第一节点确定交易Tx1中的指定共识提议者是否指示第一节点。
具体地,在交易Tx1中的指定共识提议者用节点标识表示时,第一节点可以确定自己的节点标识与该指定共识提议者是否相同。如果确定二者相同,则可以确定该指定共识提议者指示第一节点。如果确定二者不相同,则可以确定该指定共识提议者不指示第一节点。
第一节点在确定交易Tx1中的指定共识提议者指示第一节点后,可以接着执行步骤S205。
另外,在第一节点确定交易Tx1中的指定共识提议者不指示第一节点的情况下,在图3对应的实施场景中,第一节点可以如图3中所示,拒收交易Tx1;在图4对应的实施场景中,第一节点可以如图4中所示,向交易Tx1中的指定共识提议者指示的第二节点转发交易Tx1,从而使得第二节点处理交易Tx1;在图5对应的实施场景中,第一节点可以响应于交易Tx1的来源为其他节点转发,而获知交易Tx1是在通过该其他节点进行的第一检查后由该其他节点在区块链系统中广播的,从而转去执行步骤S209。其中,第一检查可以理解为共识前的交易重放检查。
在步骤S205,第一节点响应于确定交易Tx1中的指定共识提议者指示第一节点,对交易Tx1进行第一检查,第一检查包括:基于通过第一检查的若干交易Tx2各自包括的多个第一要素,确定交易Tx1是否为重放交易,该多个第一要素包括发送者账户和nonce值。
具体地,第一节点中可以缓存有用于第一检查的集合Set1,集合Set1包括该若干交易Tx2各自的交易信息,该交易信息包括其对应的交易Tx2的多个第一要素,该多个第一要素包括发送者账户和nonce值。其中,为了节省第一节点的存储空间,提升第一检查的执行效率,可以使得集合Set1存储在近一段时间内发送的交易Tx2的交易信息。该近一段时间可以是近第一设定时长,第一设定时长例如可以为5分钟或10分钟等。或者,该近一段时间可以是基于当前时间、最新区块的时间戳和第二设定时长确定的第一时间段,第一时间段的起始时间可以是该时间戳指示的时间与第二设定时长的差值,第一时间段的结束时间可以是当前时间。其中,第二设定时长例如可以是5分钟、6分钟或7分钟等。以最新区块的时间戳指示的时间为12:00,当前时间为12:01,第二设定时长为5分钟为例,第一时间段的起始时间可以为12:00与5分钟的差值,即11:55;第一时间段的结束时间为12:01。应该理解,第一设定时长和第二设定时长可以根据实际需求配置,在此不做具体限定。
需要说明,由于第一节点只对指定共识提议者为本节点的交易进行第一检查,因而集合Set1中的各条交易信息各自对应的交易Tx2中的指定共识提议者均指示第一节点,交易Tx2中的指定共识提议者不能用于区分不同的交易Tx2,因此可以不用将指定共识提议者作为第一要素。另外,在区块链系统采用nonce值递增策略的情况下,同一用户发送的不同的交易包括不同的nonce值,例如发送的新旧交易包括不同的nonce值,交易中的发送者账户和nonce值的组合可以唯一表示该交易,因而上述多个第一要素可以只包括发送者账户和nonce值。当区块链系统允许同一用户发送的新旧交易包括相同的nonce值和不同的时间戳时,交易中的发送者账户和nonce值的组合可能不能唯一表示该交易,需要将时间戳作为第一要素,使得上述多个第一要素在包括发送者账户和nonce值同时,还包括时间戳。
在对交易Tx1进行第一检查的过程中,可以在集合Set1中查找所包括的上述多个第一要素与交易Tx1中的对应要素相同的交易信息。若查找到该交易信息,则可以确定交易Tx1是重放交易。若未查找到该交易信息,则可以确定交易Tx1不是重放交易。其中,重放交易可以理解为重复发送的交易,可称为重复交易。接着,若第一检查的确定结果为是,则第一节点可以确定交易Tx1未通过第一检查,从而拒收交易Tx1。若第一检查的确定结果为否,则第一节点可以执行步骤S207。
在步骤S207,第一节点响应于第一检查的确定结果为否,确定交易Tx1通过第一检查。
其中,在确定交易Tx1通过第一检查后,第一节点可以接着执行步骤S209。进一步地,第一节点还可以将交易Tx1的交易信息写入集合Set1。
在步骤S209,第一节点将交易Tx1缓存到第一节点中的交易池。
图2对应的实施例提供的方案,支持用户在交易中指定共识提议者,这样在异步无主共识场景下,能尽可能的避免多个共识提议者重复提议相同的交易,造成资源的浪费。另外,该方案还可以由交易中的指定共识提议者指示的节点,在缓存该交易前对该交易进行共识前的交易重放检查,这样能避免交易的重复执行。由此,能提高区块链系统的整体性能,例如提高区块链系统的吞吐量,降低区块链系统的延迟等。
在一种实施方式中,区块链系统还可以支持用户在交易中自定义过期时间,用户基于发送的交易中的过期时间可以判断该交易是否失败,例如,如果用户感知到最新区块的时间戳指示的时间和如前所述的第二设定时长的差值超过了该过期时间,则可以认定该交易失败。用户如果认定该交易失败,则可以发送指定其他共识提议者、或者更改时间戳、或者更改nonce值的新交易,避免新旧交易被重复执行。
下面,结合图6,介绍在区块链系统支持用户在交易中自定义过期时间的情况下的交易去重方案。其中,图6是本说明书实施例中交易去重方法的流程图,该方法包括如下所示的步骤S601-S611。
如图6所示,在步骤S601,第一节点接收交易Tx1,交易Tx1中包括发送者账户、nonce值、指定共识提议者和过期时间。
在步骤S603,第一节点确定交易Tx1中的指定共识提议者是否指示第一节点。
其中,关于步骤S601、S603的解释,可参考前文中步骤S201、S203的相关说明,在此不再赘述。
在步骤S605,第一节点响应于确定交易Tx1中的指定共识提议者指示第一节点,基于交易Tx1中的过期时间确定交易Tx1是否为过期交易。
具体地,第一节点可以确定当前时间是否晚于交易Tx1中的过期时间。若确定结果为是,则可以确定交易Tx1是过期交易,从而可以拒收交易Tx1。若确定结果为否,则可以确定交易Tx1不是过期交易,从而接着执行步骤S607。
在步骤S607,第一节点响应于确定交易Tx1不是过期交易,对交易Tx1进行第一检查,第一检查包括:基于通过第一检查的若干交易Tx2各自包括的多个第一要素,确定交易Tx1是否为重放交易,该多个第一要素包括发送者账户和nonce值。
在步骤S609,第一节点响应于第一检查的确定结果为否,确定交易Tx1通过第一检查。
在步骤S611,第一节点将交易Tx1缓存到第一节点中的交易池。
关于步骤S607-S611的解释,可参考前文中步骤S205-S209的相关说明,在此不再赘述。
图6对应的实施例提供的方案,支持用户在交易中指定共识提议者,这样在异步无主共识场景下,能尽可能的避免多个共识提议者重复提议相同的交易,造成资源的浪费。另外,该方案还可以支持用户在交易中自定义过期时间,以及由交易中的指定共识提议者指示的节点,在缓存该交易前对该交易进行过期检查和共识前的交易重放检查,这样能有效避免交易的重复执行。由此,能提高区块链系统的整体性能。
第一节点在通过执行前文中描述的交易去重方案确定交易Tx1通过第一检查,并将交易Tx1缓存到第一节点中的交易池之后,可以在区块链系统中广播交易Tx1,例如向区块链系统中的其他节点发送交易Tx1。后续,第一节点或其他节点可以生成与交易Tx1有关的共识提议,进而对交易Tx1进行共识。
在一种实施场景中,为了能更好的避免多个共识提议者重复提议相同的交易,区块链系统可以只允许节点提议指定共识提议者为本节点的交易。基于此,第一节点可以从自己的交易池中获取包括交易Tx1的多个交易,例如按照交易的时间戳由小到大顺序从交易池中获取该多个交易,该多个交易各自包括的指定共识提议者均指示第一节点。之后,第一节点可以生成针对该多个交易的第一共识提议,并与区块链系统中的其他节点对第一共识提议进行共识。其中,第一共识提议可以包括该多个交易,或者包括该多个交易各自的交易信息,该交易信息可以包括交易哈希值,或者包括发送者账户和nonce值,或者包括发送者账户、nonce值和以下至少一项:时间戳、指定共识提议者。
在另一种实施场景中,区块链系统可以允许节点提议指定共识提议者是本节点的交易,及指定共识提议者不是本节点的交易。为了促使节点只提议指定共识提议者是本节点的交易,从而尽可能的避免多个共识提议者重复提议相同的交易,对于由非指定共识提议者提议的交易,在该交易执行完成后,可以给该交易中的指定共识提议者指示的节点一定的奖励,但不给该非指定共识提议者任何奖励。基于此,第一节点在接收到区块链系统中的其他节点(如第三节点)发送的针对包括交易Tx1的交易集合的第二共识提议后,可以与第三节点和其他节点对第二共识提议进行共识。后续,在交易Tx1执行完成后,可以在区块链系统中为第一节点对应的账户的账户余额增加预设额度值。
根据前文中的描述,区块链系统中的节点只对指定共识提议者是本节点的交易进行共识前的交易重放检查,其他节点对该检查的结果不一定是信任的。基于此,在对如前所述的共识提议(第一共识提议或第二共识提议)共识成功之后,且在执行该共识提议针对的每个交易之前,区块链系统中参与该共识提议的共识的各个节点均可以对该交易进行共识后的交易重放检查(可称为第二检查)。
下面,以交易Tx1为例,结合图7,介绍共识后的交易去重过程。其中,图7是本说明书实施例中共识后的交易去重过程的示意图,该交易去重过程可以由区块链系统中的任意节点执行,并且包括如下所示的步骤S701-S703。
如图7所示,在步骤S701,在对交易Tx1的共识成功之后且执行交易Tx1之前,对交易Tx1进行第二检查,第二检查包括:基于通过第二检查的若干交易Tx3各自包括的多个第二要素,确定交易Tx1是否为重放交易,该多个第二要素包括发送者账户和nonce值。
具体地,以如前所述的第一节点为执行主体为例,第一节点可以缓存有用于第二检查的集合Set2,集合Set2包括该若干交易Tx3各自的交易信息,该交易信息包括其对应的交易Tx3的多个第二要素,该多个第二要素包括发送者账户和nonce值。其中,为了节省第一节点的存储空间,提升第一检查的执行效率,可以使得集合Set2存储近一段时间内发送的交易Tx3的交易信息。其中,该段时间可以是基于交易Tx1所在的区块的时间戳和如前所述的第二设定时长确定的第二时间段,第二时间段的起始时间可以是该时间戳指示的时间和第二设定时长的差值,第二时间段的结束时间可以是该时间戳指示的时间和第二设定时长的总和。
需要说明,由于第一节点可能会对包括不同的指定共识提议者的交易进行第二检查,因而集合Set2中可能存在包括不同的指定共识提议者的交易Tx3的交易信息。在区块链系统采用nonce值递增策略的情况下,同一用户发送的不同的交易包括不同的nonce值,例如发送的新旧交易包括不同的nonce值,交易中的发送者账户和nonce值的组合可以唯一表示该交易,因而上述多个第二要素可以只包括发送者账户和nonce值。当区块链系统允许同一用户发送的新旧交易包括相同的nonce值,以及包括不同的时间戳和/或不同的指定共识提议者时,交易中的发送者账户和nonce值的组合可能不能唯一表示该交易,需要将时间戳和/或指定共识提议者作为第二要素,使得上述多个第二要素在包括发送者账户和nonce值同时,还包括时间戳和/或指定共识提议者。
在对交易Tx1进行第二检查的过程中,可以在集合Set2中查找所包括的上述多个第二要素与交易Tx1中的对应要素相同的交易信息。若查找到该交易信息,则可以确定交易Tx1是重放交易。若未查找到该交易信息,则可以确定交易Tx1不是重放交易。以上述多个第二要素包括发送者账户、nonce值、时间戳和指定共识提议者为例,对于上述若干交易Tx3中任意的交易Tx3,如图8中所示,只要交易Tx1中的发送者账户、nonce值、时间戳和指定共识提议者与该交易Tx3中的对应要素均相同,即便交易Tx1和该交易Tx3中的Gas上限不同,也可以判定交易Tx1是与该交易Tx3相同的重放交易。其中,图8是本说明书实施例中交易比对过程的示意图。
接着,若第二检查的确定结果为是,则第一节点可以接着执行步骤S703。若第二检查的确定结果为否,则第一节点可以确定交易Tx1通过第二检查,从而执行交易Tx1。另外,在确定交易Tx1通过第二检查之后,第一节点还可以将交易Tx1的交易信息写入集合Set2。
在步骤S703,响应于第二检查的确定结果为是,确定交易Tx1未通过第二检查,从交易Tx1所在的区块中移除交易Tx1。
其中,第一节点可以响应于第二检查的确定结果为是,确定交易Tx1未通过第二检查,从而跳过交易Tx1,从交易Tx1所在的区块中移除交易Tx1。
图7对应的实施例提供的方案,通过在对交易的共识成功之后且执行该交易之前,对该交易进行共识后的交易重放检查,并在确定该交易未通过该交易重放检查后,从该交易所在的区块中移除该交易,能有效的避免交易的重复执行,避免重复的交易上链后挤占有限的系统资源,从而能提高区块链系统的整体性能。
根据前文中的描述,区块链系统可以支持用户在交易中自定义过期时间。为了避免将过期的交易上链,在共识后的交易去重过程中还可以进行交易过期检查。
具体地,参看图9,其是本说明书实施例中共识后的交易去重过程的示意图。该交易去重过程可以由区块链系统中的任意节点执行,并且包括如下所示的步骤S901-S905。
如图9所示,在步骤S901,在对交易Tx1的共识成功之后且执行交易Tx1之前,基于交易Tx1中的过期时间,确定交易Tx1是否为过期交易。
具体地,可以确定当前时间是否晚于交易Tx1中的过期时间。若确定结果为是,则可以确定交易Tx1是过期交易,从而可以跳过交易Tx1,从交易Tx1所在的区块中移除交易Tx1。若确定结果为否,则可以确定交易Tx1不是过期交易,从而接着执行步骤S903。
在步骤S903,对交易Tx1进行第二检查,第二检查包括:基于通过第二检查的若干交易Tx3各自包括的多个第二要素,确定交易Tx1是否为重放交易,该多个第二要素包括发送者账户和nonce值。
其中,该多个第二要素还可以包括时间戳和/或指定共识提议者。若确定交易Tx1是重放交易,则可以接着执行步骤S905。关于步骤S903的解释,可参考前文中步骤S701的相关说明,在此不再赘述。
在步骤S905,响应于第二检查的确定结果为是,确定交易Tx1未通过第二检查,从交易Tx1所在的区块中移除交易Tx1。
图9对应的实施例提供的方案,通过在对交易的共识成功之后且执行该交易之前,对该交易进行过期检查和共识后的交易重放检查,并在确定该交易未通过该交易重放检查后,从该交易所在的区块中移除该交易,能更有效的避免交易的重复执行,避免重复的交易上链后挤占有限的系统资源,从而能提高区块链系统的整体性能。
根据前文中的描述,本说明书实施例提供的方案,可以在共识前或者共识后利用交易的多元组对待验证的交易进行交易重放检查,能有效避免交易的重复执行,既能提高区块链系统的吞吐量,降低区块链系统的延迟,同时也可以通过指定交易的过期时间来优化用户的体验。
图10是本说明书实施例中区块链系统中的节点的结构示意图。该节点可以执行如图2至图7、图9所示的方法,并且包括:接收单元1001,被配置成接收第一交易,第一交易中包括发送者账户、nonce值和指定共识提议者;确定单元1002,被配置成确定第一交易中的指定共识提议者是否指示该节点;检查单元1003,被配置成响应于确定第一交易中的指定共识提议者指示该节点,对第一交易进行第一检查,第一检查包括:基于通过第一检查的若干第二交易各自包括的多个第一要素,确定第一交易是否为重放交易,该多个第一要素包括发送者账户和nonce值;存储单元1004,被配置成响应于第一检查的确定结果为否,确定第一交易通过第一检查,并将第一交易缓存到该节点中的交易池。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,当该计算机程序在计算机中执行时,令计算机执行如图2至图7、图9所示的方法。
本说明书实施例还提供了一种计算设备,包括存储器和处理器,其中,该存储器中存储有可执行代码,该处理器执行该可执行代码时,实现如图2至图7、图9所示的方法。
本说明书实施例还提供了一种计算机程序产品,其中,当该计算机程序产品在计算机中执行时,令计算机执行如图2至图7、图9所示的方法。
在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 (15)
1.一种交易去重方法,由区块链系统中的第一节点执行,所述方法包括:
接收第一交易,所述第一交易中包括发送者账户、nonce值和指定共识提议者;
确定所述第一交易中的指定共识提议者是否指示所述第一节点;
响应于确定所述第一交易中的指定共识提议者指示所述第一节点,对所述第一交易进行第一检查,所述第一检查包括:基于通过所述第一检查的若干第二交易各自包括的多个第一要素,确定所述第一交易是否为重放交易,所述多个第一要素包括发送者账户和nonce值;
响应于所述第一检查的确定结果为否,确定所述第一交易通过所述第一检查,并将所述第一交易缓存到所述第一节点中的交易池。
2.根据权利要求1所述的方法,其中,所述接收第一交易,包括:
接收用户设备发送的第一交易;
所述方法还包括:
响应于确定所述第一交易中的指定共识提议者指示所述区块链系统中的第二节点,拒收所述第一交易,或者向所述第二节点转发所述第一交易。
3.根据权利要求1所述的方法,其中,所述第一交易和所述多个第一要素还包括时间戳。
4.根据权利要求1所述的方法,其中,所述第一交易中还包括过期时间;
所述方法还包括:
基于所述过期时间确定所述第一交易是否为过期交易;
所述对所述第一交易进行第一检查,包括:
响应于确定所述第一交易不是过期交易,对所述第一交易进行第一检查。
5.根据权利要求1所述的方法,其中,所述第一节点缓存有第一集合,所述第一集合包括所述若干第二交易各自的交易信息,所述交易信息包括其对应的第二交易的所述多个第一要素;
在确定所述第一交易通过所述第一检查之后,还包括:
将所述第一交易的交易信息写入所述第一集合。
6.根据权利要求1所述的方法,其中,在将所述第一交易缓存到所述第一节点中的交易池之后,还包括:
在对所述第一交易的共识成功之后且执行所述第一交易之前,对所述第一交易进行第二检查,所述第二检查包括:基于通过所述第二检查的若干第三交易各自包括的多个第二要素,确定所述第一交易是否为重放交易,所述多个第二要素包括发送者账户和nonce值;
响应于所述第二检查的确定结果为是,确定所述第一交易未通过所述第二检查,从所述第一交易所在的区块中移除所述第一交易。
7.根据权利要求6所述的方法,其中,所述第一交易还包括时间戳,所述多个第二要素还包括时间戳和/或共识提议者。
8.根据权利要求6所述的方法,其中,所述第一交易中还包括过期时间;
在对所述第一交易的共识成功之后且执行所述第一交易之前,还包括:
基于所述过期时间确定所述第一交易是否为过期交易;
所述对所述第一交易进行第二检查,包括:
响应于确定所述第一交易不是过期交易,对所述第一交易进行第二检查。
9.根据权利要求6所述的方法,其中,所述第一节点中缓存有第二集合,所述第二集合包括所述若干第三交易的交易信息,所述交易信息包括其对应的第三交易的所述多个第二要素;
所述方法还包括:
响应于所述第二检查的确定结果为否,确定所述第一交易通过所述第二检查,并将所述第一交易的交易信息写入所述第二集合。
10.根据权利要求1-9之一所述的方法,还包括:
从所述交易池中获取包括所述第一交易的多个交易;
生成针对所述多个交易的第一共识提议,并与所述区块链系统中的其他节点对所述第一共识提议进行共识。
11.根据权利要求10所述的方法,其中,所述多个交易各自包括的指定共识提议者均指示所述第一节点。
12.根据权利要求6所述的方法,其中,在将所述第一交易缓存到所述第一节点中的交易池之后,还包括:
向所述区块链系统中的其他节点发送所述第一交易;
响应于接收到所述区块链系统中的第三节点发送的针对包括所述第一交易的交易集合的第二共识提议,与所述第三节点和其他节点对所述第二共识提议进行共识;
在对所述第一交易进行第二检查之后,还包括:
响应于所述第二检查的确定结果为否,确定所述第一交易通过所述第二检查,从而执行所述第一交易;
在所述第一交易执行完成后,在所述区块链系统中为所述第一节点对应的账户的账户余额增加预设额度值。
13.一种区块链系统中的节点,包括:
接收单元,被配置成接收第一交易,所述第一交易中包括发送者账户、nonce值和指定共识提议者;
确定单元,被配置成确定所述第一交易中的指定共识提议者是否指示所述节点;
检查单元,被配置成响应于确定所述第一交易中的指定共识提议者指示所述节点,对所述第一交易进行第一检查,所述第一检查包括:基于通过所述第一检查的若干第二交易各自包括的多个第一要素,确定所述第一交易是否为重放交易,所述多个第一要素包括发送者账户和nonce值;
存储单元,被配置成响应于所述第一检查的确定结果为否,确定所述第一交易通过所述第一检查,并将所述第一交易缓存到所述节点中的交易池。
14.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-12中任一项所述的方法。
15.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311847360.0A CN117808587A (zh) | 2023-12-28 | 2023-12-28 | 交易去重方法及区块链系统中的节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311847360.0A CN117808587A (zh) | 2023-12-28 | 2023-12-28 | 交易去重方法及区块链系统中的节点 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117808587A true CN117808587A (zh) | 2024-04-02 |
Family
ID=90432949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311847360.0A Pending CN117808587A (zh) | 2023-12-28 | 2023-12-28 | 交易去重方法及区块链系统中的节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117808587A (zh) |
-
2023
- 2023-12-28 CN CN202311847360.0A patent/CN117808587A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107450979B (zh) | 一种区块链共识方法及装置 | |
TWI682652B (zh) | 資料處理方法及裝置 | |
CN111767143B (zh) | 交易数据处理方法、装置、设备及系统 | |
CN111930486B (zh) | 任务选取数据处理方法、装置、设备及存储介质 | |
CN109002357B (zh) | 资源分配方法、装置及物联网系统 | |
CN114710507B (zh) | 一种共识方法、区块链节点、介质和共识节点 | |
CN116305298B (zh) | 一种算力资源管理方法、装置、存储介质及电子设备 | |
CN114390063B (zh) | 用于区块链网络的消息广播方法、区块链节点和区块链系统 | |
CN110134735A (zh) | 分布式事务日志的存储方法及装置 | |
CN116366666A (zh) | 区块链系统中的链状态更新方法和区块链节点 | |
CN117808587A (zh) | 交易去重方法及区块链系统中的节点 | |
CN114782016A (zh) | 基于智能合约的债权数据处理方法、装置及区块链系统 | |
CN114528121A (zh) | 电网台账数据分发方法及装置 | |
CN114697344B (zh) | 区块链系统中共识节点的确定方法、区块链系统、节点、存储介质及计算设备 | |
CN115174572B (zh) | 区块链中的数据组播方法、区块链节点和存储介质 | |
CN116016552A (zh) | 区块链网络的数据传输方法、装置、电子设备及存储介质 | |
CN116366667A (zh) | 区块链网络的数据传输方法、装置、电子设备及存储介质 | |
CN115174573B (zh) | 区块链系统中的数据广播方法、节点和区块链系统 | |
CN116170388A (zh) | 一种区块链网络的转发表生成方法及其数据传输方法 | |
CN114979160B (zh) | 区块链任务的分配方法、装置、电子设备及计算机可读存储介质 | |
CN115150409B (zh) | 在区块链系统中执行交易的方法、区块链系统、节点及计算机可读存储介质 | |
CN116188016A (zh) | 区块链系统中的交易执行方法及装置 | |
CN116431312A (zh) | 区块链系统中的交易执行方法和区块链节点 | |
CN116170453A (zh) | 针对区块链网络的数据分发方法及装置 | |
CN117808476A (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 |