CN112991066A - 联盟链中的共识方法、装置和电子设备 - Google Patents
联盟链中的共识方法、装置和电子设备 Download PDFInfo
- Publication number
- CN112991066A CN112991066A CN202110457168.5A CN202110457168A CN112991066A CN 112991066 A CN112991066 A CN 112991066A CN 202110457168 A CN202110457168 A CN 202110457168A CN 112991066 A CN112991066 A CN 112991066A
- Authority
- CN
- China
- Prior art keywords
- consensus
- transaction
- target
- node
- client
- 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
Images
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
- 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/42—Confirmation, e.g. check or permission by the legal debtor of payment
Abstract
本说明书公开了一种联盟链中的共识方法、装置和电子设备,该方法包括:目标共识节点接收来自客户端的交易请求,所述目标共识节点与所述客户端之间存在网络连接,所述交易请求中携带目标交易;所述目标共识节点在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;所述目标共识节点在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
Description
技术领域
本文件涉及计算机技术领域,尤其涉及一种联盟链中的共识方法、装置和电子设备。
背景技术
目前,采用实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)主要包括两个部分,即包括Normal Case Phase和View Change Phase这两个部分。其中,Normal Case Phase部分包括request(请求阶段)、pre-prepare(预准备阶段)、prepare(准备阶段)、commit(提交阶段)和reply(响应阶段)这几个阶段来完成共识。
其中,request和reply分别对应于client(客户端)发起的交易请求和返回给client的交易执行结果。然而,在通常情况下,client不会与所有的共识节点都有网络连接,client通常会与其中的一个或两个共识节点之间存在网络连接。在这种情况下,在上述request过程中,与client连接的共识节点在接收到client发起的交易请求后,通常将该交易请求转发给共识主节点。而如果共识主节点作恶,该共识主节点可能会对client发起的交易请求进行忽略或丢弃,进而无法完成共识操作,也就无法返回给client交易执行结果。
发明内容
本说明书实施例提供了一种联盟链中的共识方法、装置和电子设备。
为解决上述技术问题,本说明书实施例是这样实现的:
第一方面,提出了一种联盟链中的共识方法,包括:
目标共识节点接收来自客户端的交易请求,所述目标共识节点与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
所述目标共识节点在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
所述目标共识节点在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
第二方面,提出了一种联盟链中的共识节点,包括:
请求接收模块,接收来自客户端的交易请求,所述目标共识节点与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
请求广播模块,在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
消息发送模块,在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
第三方面,提出了一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
接收来自客户端的交易请求,其中,所述电子设备属于联盟链中的共识节点,且与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
接收来自客户端的交易请求,其中,所述电子设备属于联盟链中的共识节点,且与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
本说明书实施例采用上述技术方案至少可以达到下述技术效果:
基于本说明书实施例提供的方案,与客户端存在网络连接的目标共识节点能够将来自客户端的交易请求广播给联盟链中的其它共识节点。而且在包含有交易请求中的交易的提议在联盟链中达成共识并且对交易请求中的交易执行完成之后,目标共识节点还可以将收集的f+1个针对交易请求中的目标交易的交易执行结果的有效的确认反馈消息返回至客户端。由于与客户端存在网络连接的目标共识节点的可靠性较高,由该目标共识节点将客户端的交易请求广播至联盟链中的其它共识节点,并且收集来自其它共识节点的交易执行结果的确认反馈消息返回至客户端,避免了客户端发起的交易请求会丢失的情况。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书一个实施例提供的一种联盟链中的共识方法的实现流程示意图;
图2为本说明书一个实施例提供的联盟链中的共识方法中目标共识节点为联盟链中的共识主节点的实现流程示意图;
图3为本说明书一个实施例提供的联盟链中的共识方法中目标共识节点为联盟链中的共识备份节点的实现流程示意图;
图4为本说明书一个实施例提供的一种联盟链中的目标共识节点的结构示意图;
图5为本说明书一个实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本文件的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本文件一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文件保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
如背景技术中所述,在很多联盟链场景中,客户端通常都不会与联盟链中的所有共识节点都有网络连接,一般一个客户端会与联盟链中的一个或两个共识节点建立网络连接。这样,客户端会将交易请求(request)发送给联盟链中与其存在网络连接的一个共识节点。当与客户端存在网络连接的共识节点是共识主节点时,如果共识主节点作恶,则无法保证客户端发送的交易请求在交易收集阶段由该主节点打包。即共识主节点可能在打包交易环节故意忽略或丢弃某些交易。而当与客户端存在网络连接的共识节点是共识备份节点时,共识备份节点将该request转发给共识主节点之后,该request也可能被共识主节点丢弃。这样也无法保证客户端发送的request中携带的交易的被区块链系统处理。
针对此,本说明书一个或多个实施例提供的一种联盟链中的共识方法的实现流程示意图如图1所示,包括:
步骤110,目标共识节点接收来自客户端的交易请求,该目标共识节点与客户端之间存在网络连接,该交易请求中携带目标交易。
应理解,在联盟链场景中,客户端通常不会与联盟链中的所有共识节点之间都存在网络连接。通常情况下,客户端可以和联盟链中的一个或几个共识节点之间预先建立好网络连接,该网络连接可以是可靠的网络连接。具体连接方式比如可以是基于传输控制协议(TCP,Transmission Control Protocol)的网络连接方式。在客户端有对一个或多个交易有交易执行的需求时,可将携带有该一个或多个交易的交易请求(request)发送给与其存在网络连接的目标共识节点。
可选地,与客户端存在网络连接的目标共识节点既可以是联盟链中的共识备份节点,也可以是联盟链中的共识主节点。
应理解,与客户端存在网络连接的目标共识节点由客户端所在的联盟方负责维护,该目标共识节点通常可认为是高可靠的。如果目标共识节点对客户端发送的交易请求进行篡改或者不给客户端返回对交易请求中的交易的交易执行结果的reply消息,联盟方本身的维护机制则能够及时感知到。
步骤120,目标共识节点在联盟链中广播交易请求,以使得联盟链中的共识节点对包含有目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作。
当与客户端存在网络连接的目标共识节点是联盟链中的共识主节点时,如果该共识主节点作恶,比如给联盟链中的一部分共识备份节点发送携带有目标请求中的交易的共识提议a,给联盟链中的另一部分共识备份节点发送携带有其他交易的共识提议b。这就导致联盟链中的共识备份节点无法对共识提议a或共识提议b达成共识,也就无法完成对包含交易请求中携带的交易的提议的共识操作。
而当与客户端存在网络连接的目标共识节点是联盟链中的共识备份节点时,共识备份节点接收到了客户端发送的交易请求后,会将该交易请求发送给联盟链中的共识主节点。共识主节点接收到该交易请求后,也可能会将该目标请求丢弃,从而造成交易请求丢包,也无法完成对交易请求中携带的交易的共识操作。
本说明书实施例为了避免上述两种情况,无论与客户端存在网络连接的目标共识节点是联盟链中的共识主节点还是共识备份节点。该目标共识节点在接收到客户端发送的交易请求之后,都可将该交易请求广播至联盟链中的其它共识节点。这样,即使联盟链中的共识主节点作恶,或者共识主节点接收到目标共识主节点转发来的目标请求后丢弃该交易请求,联盟链中的其它共识节点也能够在目标共识节点接收到来自客户端的交易请求之后,收到目标共识节点广播的交易请求。
应理解,当目标共识节点为联盟链中的共识主节点时,目标共识节点在联盟链中广播交易请求之后,还是可以由联盟链中的共识主节点发起对交易请求中的交易的共识操作。具体地,目标共识节点在联盟链中广播交易请求之后,本说明书实施例提供的方法还包括:
目标共识节点对交易请求进行校验;
当交易请求通过校验时,目标共识节点将交易请求中的交易打包得到提议,并基于交易请求之前的请求,为提议分配待写入的区块编号和视图编号;
目标共识节点在联盟链中广播携带有提议、待写入的区块编号和所述视图编号和提议的摘要的pre-prepare消息。
上述交易请求的格式可以是<REQUEST, o, t, c>请求。其中,o是交易请求所请求联盟链进行的具体操作,t为客户端向目标共识节点发送交易请求时由客户端追加的时间戳,c是客户端标识。REQUEST中包含消息内容m(即交易请求中携带的交易)、消息内容m的摘要d(m)、以及客户端对交易请求的签名。
联盟链中的共识主节点在收到客户端的交易请求,可以进行以下校验:
(1)验证客户端对交易请求的签名是否正确。
(2)如果验证客户端对交易请求的签名不正确,则确定该交易请求为非法的交易请求,此时可以丢弃该非法的交易请求。而如果验证客户端对交易请求的签名是正确的,共识主节点则可以为交易请求分配一个编号n,该编号n主要用于对来自客户端的交易请求进行排序。然后由共识主节点在联盟链中广播pre-prepare消息以及共识主节点对pre-prepare消息的签名。
可选地,当目标共识节点为联盟链中的共识备份节点时,目标共识节点在联盟链中广播交易请求之后,同样还是可以由联盟链中的共识主节点发起对目标请求中的交易的共识操作。具体地,目标共识节点在联盟链中广播交易请求之后,本说明书实施例提供的方法还包括:
联盟链中的共识主节点在得到交易请求后,对交易请求进行校验;
当交易请求通过校验时,共识主节点将交易请求中的交易打包得到提议,并基于交易请求之前的请求,为提议分配待写入的区块编号和视图编号;
共识主节点在联盟链中广播携带有提议、待写入的区块编号和视图编号和提议的摘要的pre-prepare消息。
可选地,当目标共识节点为联盟链中的共识备份节点时,为避免联盟链中的共识主节点作恶,导致客户端的交易请求被故意忽略或丢弃。本说明书实施例除了通过目标共识节点将客户端的交易请求广播至联盟链以外,还可在联盟链中的共识节点接收到该交易请求后,开启定时器。这样,即便是共识主节点作恶,不对客户端的交易请求中的交易进行打包得到待共识的提议,联盟链中的其它共识节点也可以在开启定时器的预设时间段后触发视图切换操作,以更换联盟链中的共识主节点。具体地,目标共识节点在所述联盟链中广播交易请求之后,本说明书实施例提供的方法还包括:
接收到交易请求的共识节点针对交易请求开启定时器;
接收到交易请求的共识节点在针对交易请求开启定时器之后,若在预设时间段内未完成对交易请求的共识操作,则在联盟链中发起视图切换操作。
可选地,共识主节点在联盟链中广播携带有提议、待写入的区块编号和视图编号和提议的摘要的pre-prepare消息之后,本说明书实施例提供的方法还包括:
接收到pre-prepare消息的共识备份节点对pre-prepare消息进行校验,并在校验通过后在联盟链中广播针对提议的prepare消息;
接收到prepare消息的共识节点对prepare消息进行校验,并在校验通过后在联盟链中广播commit消息;
接收到commit消息的共识节点对commit消息进行校验,并在接收到2f个通过校验的commit消息时,对提议中的目标交易进行交易执行操作,以及将对目标交易的交易执行结果广播至联盟链中;
接收到交易执行结果的共识节点对目标交易的交易执行结果进行交易确认,并在联盟链中广播对交易执行结果确认反馈消息和对应的签名。
其中,接收到pre-prepare消息的共识备份节点可以对接收到的pre-prepare消息进行校验。如果接收到pre-prepare消息的共识备份节点未能通过接收到pre-prepare消息的校验,则可以将接收到的pre-prepare消息视为非法请求并丢弃。而如果接收到pre-prepare消息的共识备份节点对接收到pre-prepare消息通过校验,该共识备份节点则可以向联盟链中的其他共识节点包括共识主节点发送prepare消息以及共识备份节点i对其的签名。
接收到prepare消息的共识节点对prepare消息进行校验,如果接收到prepare消息未能通过校验,则可视为非法请求并丢弃。如果接收到prepare消息的共识节点收到了2f+1个验证通过的prepare消息,则可向联盟链中的其他共识节点包括共识主节点发送commit消息以及对该commit消息的签名。
接收到commit消息的共识节点对commit消息进行校验,如果接收到commit消息未通过校验,则可确定其为非法请求并丢弃。如果共识节点收到了2f+1个验证通过的COMMIT消息,则表明联盟链中的大部分共识节点已经达成共识。此时接收到commit消息的共识节点则可以对交易请求中的交易进行交易执行操作,并在联盟链中广播对交易请求中的交易的交易执行结果,以使得联盟链中的其它共识节点对该交易执行结果进行确认。
接收到交易执行结果的共识节点对交易执行结果进行交易确认,并在联盟链中广播对目标交易的交易执行结果的确认反馈消息和对确认反馈消息的签名。其中,该确认反馈消息即为接收到目标交易的交易执行结果的共识节点对目标交易的交易执行结果的确认反馈。此时,联盟链中的目标共识节点,可收集其接收到的来自其它共识节点对目标交易的交易执行结果的确认反馈消息和对确认反馈消息的签名。
图2和图3分别为本说明书实施例提供的方法中,目标共识节点为联盟链中的共识主节点和共识备份节点时的共识过程示意图。
在图2中,目标共识节点为联盟链中的共识主节点,由目标共识节点接收来自客户端的交易请求。目标共识节点在接收到来自客户端的交易请求后,首先可以将该交易请求广播至联盟链中的其它共识节点。其次,由该目标共识节点在联盟链中发起针对包含该交易请求中携带的交易的提议的共识操作。然后,由联盟链中的共识节点对交易请求中携带的交易进行交易执行操作,以及在交易执行操作后在联盟链中广播交易执行结果。再,接收到针对交易请求中的交易的交易执行结果的共识节点则可以对该交易执行结果进行交易确认,并在交易确认后在联盟链中广播针对该交易执行结果的确认反馈消息(reply消息)以及对该确认反馈消息的签名。最后,可以由目标共识节点收集联盟链中的其它共识节点的确认反馈消息和对确认反馈消息的签名,并由目标共识节点将通过校验的有效确认反馈消息汇总并返回至客户端。
在图3中,目标共识节点为联盟链中的共识备份节点,由目标共识节点接收来自客户端的交易请求。目标共识节点在接收到来自客户端的交易请求后,首先可以将该交易请求广播至联盟链中的其它共识节点。其次由该联盟链中的共识主节点在联盟链中发起针对包含该目标请求中携带的交易的提议的共识操作。然后,由联盟链中的共识节点对交易请求中携带的交易进行交易执行操作,以及在交易执行操作后在联盟链中广播交易执行结果。再,接收到针对交易请求中的交易的交易执行结果的共识节点则可以对该交易执行结果进行交易确认,并在交易确认后在联盟链中广播针对该交易执行结果的确认反馈消息(reply消息)以及对该确认反馈消息的签名。最后,由目标共识节点收集联盟链中的其它共识节点的确认反馈消息和对确认反馈消息的签名,并由目标共识节点将通过校验的有效确认反馈消息汇总并返回至客户端。
步骤130,目标共识节点在收到接收到联盟链的至少f个其它共识节点针对提议的交易执行结果的确认反馈消息后,向客户端发送目标交易的交易执行结果,其中,f为联盟链允许的异常共识节点最大数量。
可选地,为了减少客户端校验交易执行结果的确认反馈消息的工作量,本说明书实施例中的目标共识节点可以对其收集到的交易执行结果的确认反馈消息进行校验,并将校验通过的有效交易执行结果的确认反馈消息返回至客户端。具体地,目标共识节点在收到接收到联盟链的至少f个其它共识节点针对提议的交易执行结果的确认反馈消息后,向客户端发送目标交易的交易执行结果,包括:
目标共识节点对接收到联盟链的其它共识节点针对提议的交易执行结果的确认反馈消息、和对应的签名进行验证;
如果目标共识节点接收到至少f个通过验证的针对提议的交易执行结果的确认反馈消息,则将目标共识节点对提议的交易执行结果的确认反馈消息、和至少f个通过验证的针对提议的交易执行结果的确认反馈消息发送给客户端。
应理解,客户端通常对与其存在网络连接的共识节点之间存在较强的信任关系。为减少客户端处校验交易执行结果的确认反馈消息的工作量,本说明书实施例中的目标共识节点可将联盟链中的其它共识节点产生的交易执行结果的确认反馈消息和签名预先收集起来。并由目标共识节点对这些交易执行结果的确认反馈消息和签名校验通过后,通过目标共识节点将校验通过后的有效交易执行结果的确认反馈消息转发给客户端。具体地,目标共识节点对接收到联盟链的其它共识节点针对提议的交易执行结果的确认反馈消息、和对应的签名进行验证,包括:
目标共识节点基于公钥对接收到联盟链的其它共识节点针对提议的交易执行结果的确认反馈消息对应的签名进行验证,得到待验证的确认反馈消息;
目标共识节点基于接收到的针对提议的交易执行结果的确认反馈消息、待验证的确认反馈消息和目标共识节点对提议的交易执行结果的确认反馈消息的一致性,对接收到联盟链的其它共识节点针对提议的交易执行结果的确认反馈消息进行验证。
基于本说明书实施例提供的方案,与客户端存在网络连接的目标共识节点能够将来自客户端的交易请求广播给联盟链中的其它共识节点。而且在包含有交易请求中的交易的提议在联盟链中达成共识并且对交易请求中的交易执行完成之后,目标共识节点还可以将收集的f+1个针对交易请求中的目标交易的交易执行结果的有效的确认反馈消息返回至客户端。由于与客户端存在网络连接的目标共识节点的可靠性较高,由该目标共识节点将客户端的交易请求广播至联盟链中的其它共识节点,并且收集来自其它共识节点的交易执行结果的确认反馈消息返回至客户端,避免了客户端发起的交易请求会丢失的情况。
图4是本说明书实施例提供的联盟链中的目标共识节点400的结构示意图。请参考图4,在一种软件实施方式中,联盟链中的目标共识节点400可包括:
请求接收模块410,接收来自客户端的交易请求,所述目标共识节点与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
请求广播模块420,在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
消息发送模块430,在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
可选地,在一种实施方式中,所述目标共识节点为所述联盟链中的共识备份节点;或者
所述目标共识节点为所述联盟链中的共识主节点。
可选地,在一种实施方式中,当所述目标共识节点为所述联盟链中的共识主节点时,所述请求广播模块420,用于:
对所述交易请求进行校验;
当所述交易请求通过校验时,将所述交易请求中的交易打包得到提议,并基于所述交易请求之前的请求,为所述提议分配待写入的区块编号和视图编号;
在所述联盟链中广播携带有所述提议、所述待写入的区块编号和所述视图编号和所述提议的摘要的pre-prepare消息。
可选地,在一种实施方式中,所述消息发送模块430,用于:
对接收到所述联盟链的其它共识节点针对所述提议的交易执行结果的确认反馈消息、和对应的签名进行验证;
如果接收到至少f个通过验证的针对所述提议的交易执行结果的确认反馈消息,则将所述目标共识节点对所述提议的交易执行结果的确认反馈消息、和所述至少f个通过验证的针对所述提议的交易执行结果的确认反馈消息发送给所述客户端。
可选地,在一种实施方式中,所述消息发送模块430,用于:
基于公钥对接收到所述联盟链的其它共识节点针对所述提议的交易执行结果的确认反馈消息对应的签名进行验证,得到待验证的确认反馈消息;
基于接收到的针对所述提议的交易执行结果的确认反馈消息、所述待验证的确认反馈消息和所述目标共识节点对所述提议的交易执行结果的确认反馈消息的一致性,对接收到所述联盟链的其它共识节点针对所述提议的交易执行结果的确认反馈消息进行验证。
联盟链中的目标共识节点400能够实现图1~图3的方法实施例的方法,具体可参考图1~图3所示实施例的联盟链中的共识方法,不再赘述。
图5是本说明书的一个实施例提供的电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。应理解,在本说明书实施例中,该电子设备作为联盟链中的共识节点部署在联盟链中。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
可选地,处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成联盟链共识装置,该共识装置可以作为图4所示的联盟链中的共识节点,或者部署在联盟链的共识节点上。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
接收来自客户端的交易请求,其中,所述电子设备属于联盟链中的共识节点,且与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
上述如本说明书图1所示实施例揭示的联盟链中的共识方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书一个或多个实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书一个或多个实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1的联盟链中的共识方法,本说明书在此不再赘述。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
此外,本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令。
可选地,上述指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图1所示实施例的方法,并具体用于执行以下方法:
接收来自客户端的交易请求,其中,所述电子设备属于联盟链中的共识节点,且与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (10)
1.一种联盟链中的共识方法,包括:
目标共识节点接收来自客户端的交易请求,所述目标共识节点与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
所述目标共识节点在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
所述目标共识节点在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
2.如权利要求1所述的方法,
所述目标共识节点为所述联盟链中的共识备份节点;或者
所述目标共识节点为所述联盟链中的共识主节点。
3.如权利要求2所述的方法,当所述目标共识节点为所述联盟链中的共识主节点时,所述目标共识节点在所述联盟链中广播所述交易请求,包括:
所述目标共识节点对所述交易请求进行校验;
当所述交易请求通过校验时,所述目标共识节点将所述交易请求中的交易打包得到提议,并基于所述交易请求之前的请求,为所述提议分配待写入的区块编号和视图编号;
所述目标共识节点在所述联盟链中广播携带有所述提议、所述待写入的区块编号和所述视图编号和所述提议的摘要的pre-prepare消息。
4.如权利要求2所述的方法,当所述目标共识节点为所述联盟链中的共识备份节点时,所述目标共识节点在所述联盟链中广播所述交易请求之后,所述方法还包括:
所述联盟链中的共识主节点在得到所述交易请求后,对所述交易请求进行校验;
当所述交易请求通过校验时,所述共识主节点将所述交易请求中的交易打包得到提议,并基于所述交易请求之前的请求,为所述提议分配待写入的区块编号和视图编号;
所述共识主节点在所述联盟链中广播携带有所述提议、所述待写入的区块编号和所述视图编号和所述提议的摘要的pre-prepare消息。
5.如权利要求3或4所述的方法,所述共识主节点在所述联盟链中广播携带有所述待共识的提议、所述待写入的区块编号和所述视图编号和所述待共识的提议的摘要的pre-prepare消息之后,所述方法还包括:
接收到所述pre-prepare消息的共识备份节点对所述pre-prepare消息进行校验,并在校验通过后在所述联盟链中广播针对所述提议的prepare消息;
接收到所述prepare消息的共识节点对所述prepare消息进行校验,并在校验通过后在所述联盟链中广播commit消息;
接收到所述commit消息的共识节点对所述commit消息进行校验,并在接收到2f个通过校验的commit消息时,对所述提议中的目标交易进行交易执行操作,以及将对所述目标交易的交易执行结果广播至所述联盟链中;
接收到所述交易执行结果的共识节点对所述目标交易的交易执行结果进行交易确认,并在联盟链中广播对所述交易执行结果确认反馈消息和对应的签名。
6.如权利要求5所述的方法,所述目标共识节点在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,包括:
所述目标共识节点对接收到所述联盟链的其它共识节点针对所述提议的交易执行结果的确认反馈消息、和对应的签名进行验证;
如果所述目标共识节点接收到至少f个通过验证的针对所述提议的交易执行结果的确认反馈消息,则将所述目标共识节点对所述提议的交易执行结果的确认反馈消息、和所述至少f个通过验证的针对所述提议的交易执行结果的确认反馈消息发送给所述客户端。
7.如权利要求1所述的方法,所述目标共识节点在所述联盟链中广播所述交易请求之后,所述方法还包括:
接收到所述交易请求的共识节点针对所述交易请求开启定时器;
接收到所述交易请求的共识节点在针对所述交易请求开启定时器之后,若在预设时间段内未完成对所述交易请求的共识操作,则在所述联盟链中发起视图切换操作。
8.一种联盟链中的共识节点,包括:
请求接收模块,接收来自客户端的交易请求,所述共识节点与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
请求广播模块,在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
消息发送模块,在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
9.一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
接收来自客户端的交易请求,其中,所述电子设备属于联盟链中的共识节点,且与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
10.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
接收来自客户端的交易请求,其中,所述电子设备属于联盟链中的共识节点,且与所述客户端之间存在网络连接,所述交易请求中携带目标交易;
在所述联盟链中广播所述交易请求,以使得所述联盟链中的共识节点对包含有所述目标交易的提议进行共识操作、交易执行操作及交易执行结果的确认操作;
在收到接收到所述联盟链的至少f个其它共识节点针对所述提议的交易执行结果的确认反馈消息后,向所述客户端发送所述目标交易的交易执行结果,其中,f为所述联盟链允许的异常共识节点最大数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110457168.5A CN112991066A (zh) | 2021-04-27 | 2021-04-27 | 联盟链中的共识方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110457168.5A CN112991066A (zh) | 2021-04-27 | 2021-04-27 | 联盟链中的共识方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112991066A true CN112991066A (zh) | 2021-06-18 |
Family
ID=76340296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110457168.5A Pending CN112991066A (zh) | 2021-04-27 | 2021-04-27 | 联盟链中的共识方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112991066A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023160086A1 (zh) * | 2022-02-24 | 2023-08-31 | 蚂蚁区块链科技(上海)有限公司 | 一种区块链的交易处理方法、区块链节点及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391320A (zh) * | 2017-03-10 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种共识方法及装置 |
CN109345386A (zh) * | 2018-08-31 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 基于区块链的交易共识处理方法及装置、电子设备 |
CN110677485A (zh) * | 2019-09-30 | 2020-01-10 | 大连理工大学 | 一种基于信用的动态分层拜占庭容错共识方法 |
-
2021
- 2021-04-27 CN CN202110457168.5A patent/CN112991066A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391320A (zh) * | 2017-03-10 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种共识方法及装置 |
CN109345386A (zh) * | 2018-08-31 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 基于区块链的交易共识处理方法及装置、电子设备 |
CN110677485A (zh) * | 2019-09-30 | 2020-01-10 | 大连理工大学 | 一种基于信用的动态分层拜占庭容错共识方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023160086A1 (zh) * | 2022-02-24 | 2023-08-31 | 蚂蚁区块链科技(上海)有限公司 | 一种区块链的交易处理方法、区块链节点及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11095750B2 (en) | Method, apparatus, and electronic device for processing consensus requests in a blockchain consensus network | |
JP6883106B2 (ja) | 分散システム、メッセージ処理方法、ノード、クライアント及び記憶媒体 | |
CN109447810B (zh) | 并行区块链共识方法、系统、电子设备和计算机可读存储介质 | |
CN108648078B (zh) | 一种交易预处理方法、装置及电子设备 | |
CN106385319B (zh) | 区块链网络中信息的验证方法及系统 | |
CN111523899B (zh) | 联盟链的共识方法、数据校验方法、装置及系统 | |
CN111143883B (zh) | 基于区块链的数字内容取证方法、装置及设备 | |
US20210312438A1 (en) | Blockchain consensus method and device and electronic equipment | |
CN112600678A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN107612877B (zh) | 验证多媒体文件合法性的方法、装置和系统 | |
CN112036878B (zh) | 数据处理方法及装置 | |
CN112988470B (zh) | 联盟链中的共识方法、共识节点和系统 | |
WO2023016429A1 (zh) | 一种可再投票的二元共识方法、装置、电子设备及存储介质 | |
CN111224782B (zh) | 基于数字签名的数据校验方法、智能设备及存储介质 | |
CN112991066A (zh) | 联盟链中的共识方法、装置和电子设备 | |
CN111555858A (zh) | 一种基于块链式存储的实用拜占庭容错共识方法 | |
CN112261427B (zh) | 恶意节点的识别方法及装置、电子设备 | |
CN111526165B (zh) | 联盟链中的共识方法和系统 | |
CN112994891A (zh) | 一种基于门限签名的交易请求共识方法和系统 | |
CN112991067B (zh) | 一种区块链共识方法、装置和系统 | |
CN113285811B (zh) | 数据传输的验证方法和装置、系统和计算机可读存储介质 | |
CN115310974A (zh) | 一种跨链交易的处理方法、计算机设备及介质 | |
CN112037062B (zh) | 交易共识方法、装置、电子设备及可读存储介质 | |
CN116846888A (zh) | 区块链网络的共识处理方法、装置、设备及存储介质 | |
CN111461728B (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 |