CN112398692B - 共识流程处理方法、装置和电子设备 - Google Patents
共识流程处理方法、装置和电子设备 Download PDFInfo
- Publication number
- CN112398692B CN112398692B CN202011283174.5A CN202011283174A CN112398692B CN 112398692 B CN112398692 B CN 112398692B CN 202011283174 A CN202011283174 A CN 202011283174A CN 112398692 B CN112398692 B CN 112398692B
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- block chain
- consensus
- consensus process
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/30—Decision processes by autonomous network management units using voting and bidding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明提供了及一种共识流程处理方法、装置和电子设备。其中,该方法包括:从区块链中的节点中确定第一主节点和至少一个随从节点;响应于客户端的共识请求,第一主节点和随从节点并行发起共识流程,以使区块链中的节点执行共识流程;记录每个节点执行共识流程的进度状态;响应于区块链中的节点发起的视图切换操作,从随从节点中确定第二主节点;基于第二主节点的共识流程的进度状态,继续执行第二主节点的共识流程。该方式中,区块链可以在view change后可以继续执行第二主节点的共识流程,无需重新触发新的共识流程,从而节约view change后共识流程的时间。
Description
技术领域
本发明区块链技术领域,尤其是涉及一种共识流程处理方法、装置和电子设备。
背景技术
PBFT(Practical Byzantine Fault Tolerance)共识算法是一种可用的实战拜占庭容错算法,该算法是一个三阶段串行执行共识算法。PBFT是联盟币的共识算法的基础。在PBFT算法实现中,如果master节点(出块节点)出故障,所有正常节点都会发起view change(视图切换)共识事件,如果view change达成共识,则会发生区块链的视图切换,即将view值加1,然后重新选出新的出块节点,发起三阶段节点共识。在PBFT中,可以通过viewchange来解决PBFT共识过程中所遇到的一切异常问题,例如共识超时,出块节点出现异常等。
然而,由于PBFT是一个三阶段的共识流程,如果遇到了类似网络抖动或master节点出现异常等情况,都需要通过view change来重新触发新的共识流程,即重新选出新的master节点并重新发起新的三阶段共识,需要重新花费较长的时间进行三阶段的共识流程,因此耗费较长的时间。
发明内容
有鉴于此,本发明的目的在于提供一种共识流程处理方法、装置和电子设备,以节约view change后共识流程的时间。
第一方面,本发明实施例提供了一种共识流程处理方法,通过区块链中的节点执行共识流程中的操作;方法包括:从区块链中的节点中确定第一主节点和至少一个随从节点;响应于客户端的共识请求,第一主节点和随从节点并行发起共识流程,以使区块链中的节点执行共识流程;记录每个节点执行共识流程的进度状态;响应于区块链中的节点发起的视图切换操作,从随从节点中确定第二主节点;基于第二主节点的共识流程的进度状态,继续执行第二主节点的共识流程。
在本发明较佳的实施例中,上述从区块链中的节点中确定第一主节点和至少一个随从节点的步骤,包括:从区块链中的节点中确定第一主节点;从区块链中除第一主节点之外的节点中,选择预设个数的随从节点。
在本发明较佳的实施例中,上述从区块链中的节点中确定第一主节点的步骤,包括:通过以下算式从区块链中的节点中确定第一主节点:master_num=(block_number+view_number)%node_number;其中,master_num为第一主节点的标识,block_number为区块链的当前区块高度的标识,view_number为区块链的当前视图的标识,node_number为区块链中的节点的数量,%为取余计算符;上述从区块链中除第一主节点之外的节点中,选择预设个数的随从节点的步骤,包括:通过以下算式选择随从节点,并在每选择一个随从节点之后view_number的值加1,直至随从节点的个数达到预设个数:follower_num=(block_number+view_number+1)%node_number;其中,follower_num为随从节点的标识。
在本发明较佳的实施例中,上述方法还包括:响应于随从节点个数的设置操作,将设置操作设置的个数作为随从节点的预设个数;其中,设置操作允许设置的最大值小于区块链中节点的数量。
在本发明较佳的实施例中,上述第一主节点和随从节点并行发起共识流程的步骤,包括:第一主节点或随从节点获取客户端发送的共识请求,执行共识流程,并基于共识请求向区块链中的节点发送第一广播,以触发区块链中的节点并行执行共识流程;其中,第一广播包含共识请求;上述区块链中的节点执行共识流程的步骤,包括:区块链中的节点接收第一广播,并校验第一广播;如果第一广播完成校验,向区块链中的节点发送第二广播;其中,第二广播包含共识请求;区块链中的节点接收第二广播,如果区块链中的节点接收到的第二广播的数量大于预设的第一阈值,区块链中的节点执行共识请求,向区块链中的节点发送第三广播;区块链中的节点接收第三广播,如果区块链中的节点接收到的第三广播的数量大于预设的第二阈值,向客户端返回共识完成消息,以使客户端根据共识完成消息的数量确定共识请求是否完成。
在本发明较佳的实施例中,上述记录每个节点执行共识流程的进度状态的步骤,包括:在区块链中的节点中添加目标缓存,通过目标缓存记录共识流程的进度状态。
在本发明较佳的实施例中,上述通过目标缓存记录共识流程的进度状态的步骤,包括:在区块链中的节点校验第一广播时,将目标缓存中记录的共识流程的进度状态修改为预设的第一标识;在区块链中的节点执行共识请求时,将目标缓存中记录的共识流程的进度状态修改为预设的第二标识;在区块链中的节点向客户端返回共识完成消息时,将目标缓存中记录的共识流程的进度状态修改为预设的第三标识。
在本发明较佳的实施例中,上述响应于区块链中的节点发起的视图切换操作,从随从节点中确定第二主节点的步骤,包括:响应于区块链中的节点发起的视图切换操作,确定发起视图切换操作的节点的数量;如果发起视图切换操作的节点的数量大于预设的第三阈值,从随从节点中确定第二主节点。
在本发明较佳的实施例中,上述随从节点中确定第二主节点的步骤,包括:通过以下算式从随从节点中确定第二主节点:master_num1=(block_number+view_number1)%node_number;其中,master_num1为第二主节点的标识,block_number为区块链的当前区块高度的标识,view_number1为区块链的下一个视图的标识,node_number为区块链中的节点的数量,%为取余计算符。
在本发明较佳的实施例中,上述基于第二主节点的共识流程的进度状态,继续执行第二主节点的共识流程的步骤,包括:如果共识流程的进度状态为空值,继续执行第一主节点或随从节点获取客户端发送的共识请求的步骤;如果共识流程的进度状态为第一标识,继续执行区块链中的节点校验第一广播的步骤;如果共识流程的进度状态为第二标识,继续执行区块链中的节点执行共识请求的步骤;如果共识流程的进度状态为第三标识,继续执行区块链中的节点向客户端返回共识完成消息的步骤。
第二方面,本发明实施例还提供一种共识流程处理装置,通过区块链中的节点执行共识流程中的操作;装置包括:第一节点确定模块,用于从区块链中的节点中确定第一主节点和至少一个随从节点;共识流程发起模块,用于响应于客户端的共识请求,第一主节点和随从节点并行发起共识流程,以使区块链中的节点执行共识流程;进度状态记录模块,用于记录每个节点执行共识流程的进度状态;第二节点确定模块,用于响应于区块链中的节点发起的视图切换操作,从随从节点中确定第二主节点;共识流程执行模块,用于基于第二主节点的共识流程的进度状态,继续执行第二主节点的共识流程。
第三方面,本发明实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述的共识流程处理方法的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述的共识流程处理方法的步骤。
本发明实施例带来了以下有益效果:
本发明实施例提供的一种共识流程处理方法、装置和电子设备,区块链中的第一主节点和至少一个随从节点并行发起共识流程,记录每个共识流程的进度状态,在viewchange后可以从随从节点中确定第二主节点,根据记录的进度状态,继续执行第二主节点的共识流程。该方式中,区块链可以在view change后可以继续执行第二主节点的共识流程,无需重新触发新的共识流程,从而节约view change后共识流程的时间。
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种共识流程处理方法的流程图;
图2为本发明实施例提供的另一种共识流程处理方法的流程图;
图3为本发明实施例提供的一种共识流程处理方法的示意图;
图4为本发明实施例提供的一种共识流程处理装置的结构示意图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,在PBFT中可以通过view change来解决PBFT共识过程中所遇到的一切异常问题,view change之后需要重新触发新的共识流程,即重新选出新的master节点并重新发起新的三阶段共识,需要重新花费较长的时间进行三阶段的共识流程,因此耗费较长的时间。基于此,本发明实施例提供的一种共识流程处理方法、装置和电子设备,该技术可以应用于服务端、客户端、电脑、手机、平板电脑等可以实现人机交互的设备上,尤其可以适用于区块链的节点中。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种共识流程处理方法进行详细介绍。
本实施例提供了一种共识流程处理方法,通过区块链中的节点执行共识流程中的操作;参见图1所示的一种共识流程处理方法的流程图,该共识流程处理方法包括如下步骤:
步骤S102,从区块链中的节点中确定第一主节点和至少一个随从节点。
本实施例提供的方法可以应用于BFT(拜占庭容错技术)中,拜占庭容错技术是一类分布式计算领域的容错技术。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。
区块链中的共识是通过节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,就可以认为区块链对此也能够达成共识。区块链中的节点可以为具有交互功能,与区块链中的其他节点通信连接的设备,例如:电脑、手机、平板电脑、服务器等。
区块链中的主节点(master节点)也称为出块节点,在区块链的共识流程中,可以通过预先设定的主节点(即本实施例中的第一主节点)发起共识流程。在本实施例中除了可以确定主节点之外,还可以确定随从节点。随从节点的个数可以由区块链的管理人员进行设定,除了主节点之外,随从节点也可以发起共识流程。
步骤S104,响应于客户端的共识请求,第一主节点和随从节点并行发起共识流程,以使区块链中的节点执行共识流程。
本实施例的客户端可以为与区块链中的节点通信连接的设备。用户可以通过客户端向区块链发送共识请求,区块链在接收到上述共识请求后,可以使第一主节点和随从节点并行发起共识流程。其中,并行发起是指不同节点发起的共识流程独立运行,相互之间并不存在干扰。因此,在同一时间内同一个区块链内可能有多个并行的共识流程同时处理。
步骤S106,记录每个节点执行共识流程的进度状态。
在上述各个共识流程进行处理的过程中,区块链可以记录每个节点处理每个共识流程的进度状态,例如:可以记录节点1在处理共识流程1时的进度状态、节点3在处理共识流程2时的进度状态等。通过记录每个节点执行共识流程的进度状态,可以使管理人员清楚地确定每个共识流程的进度,也可以在区块链出现视图切换后,尽快继续共识流程。
步骤S108,响应于区块链中的节点发起的视图切换操作,从随从节点中确定第二主节点。
如果出现区块链的第一主节点突然宕机或者拒绝响应,第一主节点与其他节点的网络不畅通、通信丢包率较高等情况,则区块链可以进行视图切换(view change)操作。区块链中的节点可以以发起的视图切换操作,此时可以从上述随从节点中选择一个节点作为新的主节点(即第二主节点)代替第一主节点。
此外,如果没有进行视图切换操作,则可以有第一主节点继续作为区块链的主节点,继续进行上述的各个共识流程,并且将第一主节点的共识流程作为区块链的共识流程。
步骤S110,基于第二主节点的共识流程的进度状态,继续执行第二主节点的共识流程。
在以第二主节点作为区块链新的主节点后,可以根据记录的第二主节点的共识流程的进度状态继续执行第二主节点的共识流程,并且将第二主节点的共识流程作为区块链的共识流程。
该方式通过第二主节点代替第一主节点,第二主节点无需重新发起共识流程,只需要根据进度状态继续执行第二主节点的共识流程即可,因此可以节约重新发起共识流程的时间。
本发明实施例提供的一种共识流程处理方法,区块链中的第一主节点和至少一个随从节点并行发起共识流程,记录每个共识流程的进度状态,在view change后可以从随从节点中确定第二主节点,根据记录的进度状态,继续执行第二主节点的共识流程。该方式中,区块链可以在view change后可以继续执行第二主节点的共识流程,无需重新触发新的共识流程,从而节约view change后共识流程的时间。
本实施例提供了另一种共识流程处理方法,该方法在上述实施例的基础上实现;本实施例重点描述确定第一主节点和至少一个随从节点的具体实施方式。参见图2所示的另一种共识流程处理方法的流程图,本实施例中的共识流程处理方法包括如下步骤:
步骤S202,从区块链中的节点中确定第一主节点。
参见图3所示的一种共识流程处理方法的示意图,图3中的H为handle(处理)的缩写,B为broadcast(广播)缩写,P为proposal(提议)的缩写,S为sign(标识)的缩写,C为commit(确认)的缩写;H-P为handle_proposal的缩写,H-S为handle_sign的缩写,H-C为handle_commit的缩写;B-P为broadcast_proposal的缩写,B-S为broadcast_sign的缩写,B-C为broadcast_commit的缩写。
图3可以说明PBFT的实现流程,可以通过3个阶段(即图3中的1.proposal、2.sign和3.commit)保证消息的防篡改以及强一致性。
图3中的1.1leader select选择第一主节点和随从节点的步骤,可以通过下述算式从区块链中的节点中确定第一主节点:master_num=(block_number+view_number)%node_number;
其中,master_num为第一主节点的标识,block_number为区块链的当前区块高度的标识,view_number为区块链的当前视图的标识,node_number为区块链中的节点的数量,%为取余计算符,例如:5%2=1,6%3=0。
其中,在PBFT正常流程中,通过view(视图)来确定主节点,view可以为一个long类型的变量参数,正常情况下,view从0开始,即view_number的初始值等于0。
步骤S204,从区块链中除第一主节点之外的节点中,选择预设个数的随从节点。
在通过上述算式确定主节点之后,可以通过下述步骤从区块链中除第一主节点之外的节点中,选择预设个数的随从节点:
通过以下算式选择随从节点,并在每选择一个随从节点之后view_number的值加1,直至随从节点的个数达到预设个数:follower_num=(block_number+view_number+1)%node_number;其中,follower_num为随从节点的标识。
例如,预设个数可以预先设定为N个,N可以小于区块链中的节点的数量,在通过上述公式确定一个随从节点后,可以使view_number的值加1,继续通过上述公式确定下一个随从节点,直至确定的随从节点的数量为N。
上述第一主节点的标识和随从节点的标识均可以为数字,即将余数作为标识,可以预先将区块链中的节点以数字编号,在计算出第一主节点的和随从节点的标识后,将标识对应的区块链中的节点作为区块链的第一主节点的和随从节点。该方式中,可以通过上述公式从区块链中选取第一主节点和预设个数的随从节点。
预设个数可以由用户手动输入或者修改,可以通过下述步骤执行:响应于随从节点个数的设置操作,将设置操作设置的个数作为随从节点的预设个数;其中,设置操作允许设置的最大值小于区块链中节点的数量。
随从节点个数的设置操作可以理解为对随从节点个数的设定或修改,例如:通过节点个数的设置操作可以设定随从节点个数为3个,或者将随从节点个数由5个调整为3个。
可以将节点个数的设置操作设定的个数作为随从节点的预设个数,其中由于预设个数需要小于区块链中节点的数量,因此,上述设置操作允许设置的最大值小于区块链中节点的数量。该方式中,用户可以通过随从节点个数的设置操作调整随从节点的预设个数。
步骤S206,响应于客户端的共识请求,第一主节点和随从节点并行发起共识流程,以使区块链中的节点执行共识流程。
当区块链接收到客户端的共识请求后,可以由第一主节点和随从节点并行发起共识流程,并且有区块链中的节点并行执行每个共识流程。其中,第一主节点和随从节点可以通过下述步骤并行发起共识流程:
第一主节点或随从节点获取客户端发送的共识请求,执行共识流程,并基于共识请求向区块链中的节点发送第一广播,以触发区块链中的节点并行执行共识流程;其中,第一广播包含共识请求。
如图3所示,第一主节点或随从节点获取客户端发送的共识请求,执行共识流程,并基于共识请求向区块链中的节点发送第一广播(即图3中的1.2B-P),以触发区块链中的节点并行执行共识流程。区块链中的节点可以通过步骤B1-步骤B3执行共识流程:
步骤B1,区块链中的节点接收第一广播,并校验第一广播;如果第一广播完成校验,向区块链中的节点发送第二广播;其中,第二广播包含共识请求。
区块链中的节点接收第一广播后,需要对第一广播进行校验(即图3中的1.3H-P,如验签,以及系列校验),只有完成校验后,节点可以通过p2p(peer to peer lending,个人对个人)网络向区块链中的其他节点发送第二广播(即图3中的2.1B-S)。
步骤B2,区块链中的节点接收第二广播,如果区块链中的节点接收到的第二广播的数量大于预设的第一阈值,区块链中的节点执行共识请求,向区块链中的节点发送第三广播。
区块链中的节点接收第二广播,可以对共识请求进行验签处理,以及一些列校验,并进行sign票数归档,如果sign通过票数大于预设的第一阈值(第一阈值可以为节点总数的2/3),则该节点可以执行共识请求(即图3中的2.2H-S),并向区块链中的节点发送第三广播(即图3中的3.1B-C)。
步骤B3,区块链中的节点接收第三广播,如果区块链中的节点接收到的第三广播的数量大于预设的第二阈值,向客户端返回共识完成消息,以使客户端根据共识完成消息的数量确定共识请求是否完成。
区块链中的节点接收第三广播,对共识请求进行验签处理,以及一些列校验,在进行commit票数归档(即图3中的3.2H-C),如果commit通过票数大于预设的第二阈值(第二阈值可以为节点总数的2/3,第二阈值可以与第一阈值相同,也可以与第一阈值不同),则可以认为区块达成共识,然后落盘(do-commit)。
在本实施例中,主节点和随从节点(假设共有N个随从节点)都会发起共识流程,正常情况下主节点的共识流程(master_proposal)和随从节点(follower_proposal)的共识流程的处理方式一致,都经历了proposal->sign->commit。相对应地可以表示为:
【master_proposal】->【master_sign】->【master_commit】;
【follower1_proposal】->【follower1_sign】->【follower1_commit】;
【follower2_proposal】->【follower2_sign】->【follower2_commit】;
……
【followerN_pre-prepare】->【followerN_prepare】->【followerN_commit】。
步骤S208,记录每个节点执行共识流程的进度状态。
可以通过缓存来记录每个节点执行共识流程的进度状态,例如:在区块链中的节点中添加目标缓存,通过目标缓存记录共识流程的进度状态。
对于共识流程的不同状态,可以通过步骤C1-步骤C3设定不同的标识:
步骤C1,在区块链中的节点校验第一广播时,将目标缓存中记录的共识流程的进度状态修改为预设的第一标识。
在图3中的1.3H-P流程中,可以通过增加一个kv缓存node_to_propsoal_state_cache,即目标缓存,可以通过hashmap(哈希表)实现。通过目标缓存可以记录当前共识流程的进度状态。缓存中key为发起proposal的num_index(即节点的标识,可从proposal中获取),value为当前proposal的状态(状态值一共有三个,分别是pre、sign以及commit),这里的值为pre(即第一标识)。
步骤C2,在区块链中的节点执行共识请求时,将目标缓存中记录的共识流程的进度状态修改为预设的第二标识。
在图3中的2.2H-S流程中,可以依据proposal的num_index,从node_to_propsoal_state_cache获取相应的proposal状态(一般为pre),修改为sign(即第二标识)。
步骤C3,在区块链中的节点向客户端返回共识完成消息时,将目标缓存中记录的共识流程的进度状态修改为预设的第三标识。
在图3中的3.2H-C流程中,可以依据proposal的num_index,从node_to_propsoal_state_cache获取相应的proposal状态(一般为sign,修改为commit(即第三标识)。
该方式中,可以通过目标缓存记录共识流程的进度状态,并通过不同观点标识标注不同的共识流程的进度状态。
步骤S210,响应于区块链中的节点发起的视图切换操作,从随从节点中确定第二主节点。
在do-commit阶段过程中,即当前节点收到2/3以上的commit请求后,只会落盘master_proposal,即num_index所对应节点(master_node)发起的proposal,(可以通过添加num_index=(block_number+view_number)%node_number,来计算)。
在PBFT算法实现中,如果主节点出故障,所有正常节点都会发起view change共识事件,如果view change达成共识,则会发生视图切换操作,即将view值加1。例如,可以通过下述步骤进行视图切换操作:
响应于区块链中的节点发起的视图切换操作,确定发起视图切换操作的节点的数量;如果发起视图切换操作的节点的数量大于预设的第三阈值,从所随从节点中确定第二主节点。
每一个节点在在处理每一阶段的消息后,会立刻判断当前共识是否超时,如果超时,则发起视图切换操作,并且,当网络中有第三阈值(第三阈值可以为节点总数的2/3,第三阈值与第一阈值或第二阈值可以相同,也可以不同)以上的节点都对该视图切换操作达成一致时,则会切换主节点。
如果view_change已达成共识,这时view_number的值变成view_number1。可以通过以下算式从随从节点中确定第二主节点:master_num1=(block_number+view_number1)%node_number;
其中,master_num1为第二主节点的标识,block_number为区块链的当前区块高度的标识,view_number1为区块链的下一个视图的标识,node_number为区块链中的节点的数量,%为取余计算符。
步骤S212,基于第二主节点的共识流程的进度状态,继续执行第二主节点的共识流程。
可以依据master_num1,从node_to_propsoal_state_cache缓存中获取相应的proposal及其当前状态,依据这些状态做出以下流程处理,从而继续执行第二主节点的共识流程:
如果共识流程的进度状态为空值,继续执行第一主节点或随从节点获取客户端发送的共识请求的步骤;如果当前共识流程的值为null(空),则继续发起proposal流程。
如果共识流程的进度状态为第一标识,继续执行区块链中的节点校验第一广播的步骤;如果当前共识流程的值为pre,则继续发起proposal流程。
如果共识流程的进度状态为第二标识,继续执行区块链中的节点执行共识请求的步骤;如果当前共识流程的值的状态为sign,则继续发起sign流程。
如果共识流程的进度状态为第三标识,继续执行区块链中的节点向客户端返回共识完成消息的步骤;如果当前共识流程的值的状态为commit,则继续发起commit流程。
一般来说,master_num1所对应的新的master_node(即第二主节点)必定在follower_nodes(即随从节点)集合当中,我们假设master_node为follower1。一般情况下,follower与master的处理速度一致,这样一来,当切换到follower1时,即可在follower1所处理的阶段继续执行共识流程(pre-preare/prepare/commit),而不用重新执行共识流程,从而快速提高了view_change后的共识速度。
对应于上述方法实施例,本发明实施例提供了一种共识流程处理装置,通过区块链中的节点执行共识流程中的操作。如图4所示的一种共识流程处理装置的结构示意图,该共识流程处理装置包括:
第一节点确定模块41,用于从区块链中的节点中确定第一主节点和至少一个随从节点;
共识流程发起模块42,用于响应于客户端的共识请求,第一主节点和随从节点并行发起共识流程,以使区块链中的节点执行共识流程;
进度状态记录模块43,用于记录每个节点执行共识流程的进度状态;
第二节点确定模块44,用于响应于区块链中的节点发起的视图切换操作,从随从节点中确定第二主节点;
共识流程执行模块45,用于基于第二主节点的共识流程的进度状态,继续执行第二主节点的共识流程。
本发明实施例提供的一种共识流程处理装置,区块链中的第一主节点和至少一个随从节点并行发起共识流程,记录每个共识流程的进度状态,在view change后可以从随从节点中确定第二主节点,根据记录的进度状态,继续执行第二主节点的共识流程。该方式中,区块链可以在view change后可以继续执行第二主节点的共识流程,无需重新触发新的共识流程,从而节约view change后共识流程的时间。
上述第一节点确定模块,用于从区块链中的节点中确定第一主节点;从区块链中除第一主节点之外的节点中,选择预设个数的随从节点。
上述第一节点确定模块,用于通过以下算式从区块链中的节点中确定第一主节点:master_num=(block_number+view_number)%node_number;其中,master_num为第一主节点的标识,block_number为区块链的当前区块高度的标识,view_number为区块链的当前视图的标识,node_number为区块链中的节点的数量,%为取余计算符;上述第一节点确定模块,用于通过以下算式选择随从节点,并在每选择一个随从节点之后view_number的值加1,直至随从节点的个数达到预设个数:follower_num=(block_number+view_number+1)%node_number;其中,follower_num为随从节点的标识。
上述第一节点确定模块,还用于响应于随从节点个数的设置操作,将设置操作设置的个数作为随从节点的预设个数;其中,设置操作允许设置的最大值小于区块链中节点的数量。
上述共识流程发起模块,用于第一主节点或随从节点获取客户端发送的共识请求,执行共识流程,并基于共识请求向区块链中的节点发送第一广播,以触发区块链中的节点并行执行共识流程;其中,第一广播包含共识请求;上述共识流程发起模块,用于区块链中的节点接收第一广播,并校验第一广播;如果第一广播完成校验,向区块链中的节点发送第二广播;其中,第二广播包含共识请求;区块链中的节点接收第二广播,如果区块链中的节点接收到的第二广播的数量大于预设的第一阈值,区块链中的节点执行共识请求,向区块链中的节点发送第三广播;区块链中的节点接收第三广播,如果区块链中的节点接收到的第三广播的数量大于预设的第二阈值,向客户端返回共识完成消息,以使客户端根据共识完成消息的数量确定共识请求是否完成。
上述进度状态记录模块,用于在区块链中的节点中添加目标缓存,通过目标缓存记录共识流程的进度状态。
上述进度状态记录模块,用于在区块链中的节点校验第一广播时,将目标缓存中记录的共识流程的进度状态修改为预设的第一标识;在区块链中的节点执行共识请求时,将目标缓存中记录的共识流程的进度状态修改为预设的第二标识;在区块链中的节点向客户端返回共识完成消息时,将目标缓存中记录的共识流程的进度状态修改为预设的第三标识。
上述第二节点确定模块,用于响应于区块链中的节点发起的视图切换操作,确定发起视图切换操作的节点的数量;如果发起视图切换操作的节点的数量大于预设的第三阈值,从随从节点中确定第二主节点。
上述第二节点确定模块,用于通过以下算式从随从节点中确定第二主节点:master_num1=(block_number+view_number1)%node_number;其中,master_num1为第二主节点的标识,block_number为区块链的当前区块高度的标识,view_number1为区块链的下一个视图的标识,node_number为区块链中的节点的数量,%为取余计算符。
上述共识流程执行模块,用于如果共识流程的进度状态为空值,继续执行第一主节点或随从节点获取客户端发送的共识请求的步骤;如果共识流程的进度状态为第一标识,继续执行区块链中的节点校验第一广播的步骤;如果共识流程的进度状态为第二标识,继续执行区块链中的节点执行共识请求的步骤;如果共识流程的进度状态为第三标识,继续执行区块链中的节点向客户端返回共识完成消息的步骤。
本发明实施例提供的共识流程处理装置,与上述实施例提供的共识流程处理方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本发明实施例还提供了一种电子设备,用于运行上述共识流程处理方法;参见图5所示的一种电子设备的结构示意图,该电子设备包括存储器100和处理器101,其中,存储器100用于存储一条或多条计算机指令,一条或多条计算机指令被处理器101执行,以实现上述共识流程处理方法。
进一步地,图5所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述共识流程处理方法,具体实现可参见方法实施例,在此不再赘述。
本发明实施例所提供的共识流程处理方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和/或装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (13)
1.一种共识流程处理方法,其特征在于,通过区块链中的节点执行共识流程中的操作;所述方法包括:
从所述区块链中的节点中确定第一主节点和至少一个随从节点;
响应于客户端的共识请求,所述第一主节点和所述随从节点并行发起共识流程,以使所述区块链中的节点执行所述共识流程;
记录每个节点执行所述共识流程的进度状态;
响应于所述区块链中的节点发起的视图切换操作,从所述随从节点中确定第二主节点;
基于所述第二主节点的共识流程的进度状态,继续执行所述第二主节点的共识流程。
2.根据权利要求1所述的方法,其特征在于,从所述区块链中的节点中确定第一主节点和至少一个随从节点的步骤,包括:
从所述区块链中的节点中确定第一主节点;
从所述区块链中除所述第一主节点之外的节点中,选择预设个数的随从节点。
3.根据权利要求2所述的方法,其特征在于,从所述区块链中的节点中确定第一主节点的步骤,包括:
通过以下算式从所述区块链中的节点中确定第一主节点:master_num=(block_number+view_number)%node_number;
其中,master_num为所述第一主节点的标识,block_number为所述区块链的当前区块高度的标识,view_number为所述区块链的当前视图的标识,node_number为所述区块链中的节点的数量,%为取余计算符;
从所述区块链中除所述第一主节点之外的节点中,选择预设个数的随从节点的步骤,包括:
通过以下算式选择随从节点,并在每选择一个随从节点之后view_number的值加1,直至所述随从节点的个数达到预设个数:follower_num=(block_number+view_number+1)%node_number;其中,follower_num为所述随从节点的标识。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
响应于所述随从节点个数的设置操作,将所述设置操作设置的个数作为所述随从节点的预设个数;其中,所述设置操作允许设置的最大值小于所述区块链中节点的数量。
5.根据权利要求1所述的方法,其特征在于,所述第一主节点和所述随从节点并行发起共识流程的步骤,包括:
所述第一主节点或所述随从节点获取客户端发送的共识请求,执行共识流程,并基于所述共识请求向所述区块链中的节点发送第一广播,以触发所述区块链中的节点并行执行共识流程;其中,所述第一广播包含所述共识请求;
所述区块链中的节点执行所述共识流程的步骤,包括:
所述区块链中的节点接收所述第一广播,并校验所述第一广播;如果所述第一广播完成校验,向所述区块链中的节点发送第二广播;其中,所述第二广播包含所述共识请求;
所述区块链中的节点接收所述第二广播,如果所述区块链中的节点接收到的所述第二广播的数量大于预设的第一阈值,所述区块链中的节点执行所述共识请求,向所述区块链中的节点发送第三广播;
所述区块链中的节点接收所述第三广播,如果所述区块链中的节点接收到的所述第三广播的数量大于预设的第二阈值,向所述客户端返回共识完成消息,以使所述客户端根据所述共识完成消息的数量确定所述共识请求是否完成。
6.根据权利要求5所述的方法,其特征在于,记录每个节点执行所述共识流程的进度状态的步骤,包括:
在所述区块链中的节点中添加目标缓存,通过所述目标缓存记录所述共识流程的进度状态。
7.根据权利要求6所述的方法,其特征在于,通过所述目标缓存记录所述共识流程的进度状态的步骤,包括:
在所述区块链中的节点校验所述第一广播时,将所述目标缓存中记录的所述共识流程的进度状态修改为预设的第一标识;
在所述区块链中的节点执行所述共识请求时,将所述目标缓存中记录的所述共识流程的进度状态修改为预设的第二标识;
在所述区块链中的节点向所述客户端返回共识完成消息时,将所述目标缓存中记录的所述共识流程的进度状态修改为预设的第三标识。
8.根据权利要求1所述的方法,其特征在于,响应于所述区块链中的节点发起的视图切换操作,从所述随从节点中确定第二主节点的步骤,包括:
响应于所述区块链中的节点发起的视图切换操作,确定发起所述视图切换操作的节点的数量;
如果发起所述视图切换操作的节点的数量大于预设的第三阈值,从所述随从节点中确定第二主节点。
9.根据权利要求1所述的方法,其特征在于,从所述随从节点中确定第二主节点的步骤,包括:
通过以下算式从所述随从节点中确定第二主节点:master_num1=(block_number+view_number1)%node_number;
其中,master_num1为所述第二主节点的标识,block_number为所述区块链的当前区块高度的标识,view_number1为所述区块链的下一个视图的标识,node_number为所述区块链中的节点的数量,%为取余计算符。
10.根据权利要求7所述的方法,其特征在于,基于所述第二主节点的共识流程的进度状态,继续执行所述第二主节点的共识流程的步骤,包括:
如果所述共识流程的进度状态为空值,继续执行所述第一主节点或所述随从节点获取客户端发送的共识请求的步骤;
如果所述共识流程的进度状态为第一标识,继续执行所述区块链中的节点校验所述第一广播的步骤;
如果所述共识流程的进度状态为第二标识,继续执行所述区块链中的节点执行所述共识请求的步骤;
如果所述共识流程的进度状态为第三标识,继续执行所述区块链中的节点向所述客户端返回共识完成消息的步骤。
11.一种共识流程处理装置,其特征在于,通过区块链中的节点执行共识流程中的操作;所述装置包括:
第一节点确定模块,用于从所述区块链中的节点中确定第一主节点和至少一个随从节点;
共识流程发起模块,用于响应于客户端的共识请求,所述第一主节点和所述随从节点并行发起共识流程,以使所述区块链中的节点执行所述共识流程;
进度状态记录模块,用于记录每个节点执行所述共识流程的进度状态;
第二节点确定模块,用于响应于所述区块链中的节点发起的视图切换操作,从所述随从节点中确定第二主节点;
共识流程执行模块,用于基于所述第二主节点的共识流程的进度状态,继续执行所述第二主节点的共识流程。
12.一种电子设备,其特征在于,所述电子设备包括:处理设备和存储装置;
所述存储装置上存储有计算机程序,所述计算机程序在被所述处理设备运行时执行如权利要求1至10任一项所述的共识流程处理方法。
13.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理设备运行时执行如权利要求1至10任一项所述的共识流程处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011283174.5A CN112398692B (zh) | 2020-11-16 | 2020-11-16 | 共识流程处理方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011283174.5A CN112398692B (zh) | 2020-11-16 | 2020-11-16 | 共识流程处理方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112398692A CN112398692A (zh) | 2021-02-23 |
CN112398692B true CN112398692B (zh) | 2022-07-19 |
Family
ID=74599659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011283174.5A Active CN112398692B (zh) | 2020-11-16 | 2020-11-16 | 共识流程处理方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112398692B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113395165B (zh) * | 2021-05-28 | 2022-08-16 | 网易(杭州)网络有限公司 | 共识流程处理方法、装置、存储介质及计算机设备 |
CN113271365B (zh) * | 2021-07-20 | 2021-10-08 | 发明之家(北京)科技有限公司 | 一种区块链数据更新方法和系统 |
CN113645074A (zh) * | 2021-08-11 | 2021-11-12 | 永旗(北京)科技有限公司 | 一种基于区块链的共识方法 |
CN114928650B (zh) * | 2022-04-26 | 2023-06-30 | 成都质数斯达克科技有限公司 | 一种区块链数据共识方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109508982A (zh) * | 2018-11-21 | 2019-03-22 | 北京蓝石环球区块链科技有限公司 | 基于区块链主链加并行多子链的repb共识 |
CN110351133A (zh) * | 2019-06-28 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 用于区块链系统中的主节点切换处理的方法及装置 |
CN110784331A (zh) * | 2018-07-30 | 2020-02-11 | 华为技术有限公司 | 一种共识流程恢复方法及相关节点 |
CN111930845A (zh) * | 2020-08-12 | 2020-11-13 | 湖南宸瀚信息科技有限责任公司 | 一种区块链的共识方法、系统、终端、及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102134549B1 (ko) * | 2018-12-13 | 2020-07-27 | 알리바바 그룹 홀딩 리미티드 | 분산 시스템에서 프라이머리 노드의 체인지 수행 |
US10938750B2 (en) * | 2019-03-18 | 2021-03-02 | Advanced New Technologies Co., Ltd. | Consensus system downtime recovery |
US10944624B2 (en) * | 2019-06-28 | 2021-03-09 | Advanced New Technologies Co., Ltd. | Changing a master node in a blockchain system |
-
2020
- 2020-11-16 CN CN202011283174.5A patent/CN112398692B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110784331A (zh) * | 2018-07-30 | 2020-02-11 | 华为技术有限公司 | 一种共识流程恢复方法及相关节点 |
CN109508982A (zh) * | 2018-11-21 | 2019-03-22 | 北京蓝石环球区块链科技有限公司 | 基于区块链主链加并行多子链的repb共识 |
CN110351133A (zh) * | 2019-06-28 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 用于区块链系统中的主节点切换处理的方法及装置 |
CN111930845A (zh) * | 2020-08-12 | 2020-11-13 | 湖南宸瀚信息科技有限责任公司 | 一种区块链的共识方法、系统、终端、及存储介质 |
Non-Patent Citations (2)
Title |
---|
Qichao Zhang ; Zhuyun Qi ; Xiaoyou Liu ; Tao Sun ; Kai Lei.Research and Application of BFT Algorithms Based on the Hybrid Fault Model.《2018 1st IEEE International Conference on Hot Information-Centric Networking (HotICN)》.2019, * |
基于拜占庭容错的区块链共识算法研究;张良嵩;《中国优秀博硕士学位论文全文数据库(硕士)》;20200715;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112398692A (zh) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112398692B (zh) | 共识流程处理方法、装置和电子设备 | |
KR102469267B1 (ko) | 블록 체인 합의 방법, 어카운팅 노드 및 노드 | |
CN110049087B (zh) | 一种联盟链的可信度验证方法、系统、装置及设备 | |
CN109831487B (zh) | 分片文件验证方法及终端设备 | |
KR20210055734A (ko) | 블록 처리 방법들, 노드 및 시스템 | |
US9742667B2 (en) | Packet processing method, device and system | |
CN107493340B (zh) | 区块链网络中的数据分发校验方法、装置及系统 | |
CN110046901B (zh) | 联盟链的可信度验证方法、系统、装置及设备 | |
CN112600678B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN111683118A (zh) | 基于区块链的共识方法、装置、主节点设备及从节点设备 | |
CN110880147B (zh) | 一种交易处理方法、相关设备及计算机存储介质 | |
CN113608699A (zh) | 数据写入方法、装置及电子设备 | |
CN104461404A (zh) | 元数据存储方法、装置以及系统 | |
CN113395165B (zh) | 共识流程处理方法、装置、存储介质及计算机设备 | |
CN113242302A (zh) | 数据访问请求的处理方法、装置、计算机设备及介质 | |
CN106293996B (zh) | 数据同步方法、主设备、备份设备和系统 | |
CN113824755A (zh) | 区块链数据处理的方法、系统及相关装置 | |
CN113760519B (zh) | 分布式事务处理方法、装置、系统和电子设备 | |
CN113626139B (zh) | 一种高可用的虚拟机存储方法及装置 | |
CN113238893A (zh) | 多数据中心的容灾系统、方法、计算机设备及介质 | |
CN111756548A (zh) | 节点共识机制优化方法、系统、设备及存储介质 | |
CN108712374A (zh) | 一种请求控制方法、控制器及电子设备 | |
CN108718285A (zh) | 云计算集群的流量控制方法、装置及服务器 | |
CN111711537B (zh) | 备用主节点列表更新方法、装置及设备 | |
JP7222431B2 (ja) | 比較装置、通信システム、比較方法および比較プログラム |
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 |