CN111767347B - 共识算法的切换方法、装置、节点设备及存储介质 - Google Patents
共识算法的切换方法、装置、节点设备及存储介质 Download PDFInfo
- Publication number
- CN111767347B CN111767347B CN202010735422.9A CN202010735422A CN111767347B CN 111767347 B CN111767347 B CN 111767347B CN 202010735422 A CN202010735422 A CN 202010735422A CN 111767347 B CN111767347 B CN 111767347B
- Authority
- CN
- China
- Prior art keywords
- consensus
- target
- consensus algorithm
- algorithm
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- Marketing (AREA)
- Health & Medical Sciences (AREA)
- Technology Law (AREA)
- Computing Systems (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Development Economics (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种共识算法的切换方法、装置、节点设备及存储介质,其中方法包括:若目标共识节点中区块链的区块高度大于或等于高度阈值,则基于目标配置信息执行启动目标共识算法的预处理操作;获取通知信息集合,通知信息集合中的一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;若通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且目标共识节点的预处理操作执行完成,则将第一共识算法切换为目标共识算法。采用本发明实施例在不需要停掉区块链网络的情况下,实现共识算法切换,保证了区块链网络的高可用性。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种共识算法的切换方法、装置、节点设备及存储介质。
背景技术
随着科技的不断发展,为了各种业务处理的安全性,多数企业将企业相关业务转移到区块链中进行比如电子发票业务、银行贷款业务等等。在区块链网络中执行的业务首先被打包到区块,由共识节点采用共识算法对区块进行共识验证,验证通过后该区块被连接到区块链上,从而实现了将业务保存到区块链。
为了提高共识验证的准确性,在区块链网络中经常涉及到共识算法的切换。目前常用的共识算法切换方式通常是冷启动,所谓冷启动是指停止区块链网络中的所有节点,配置新的共识算法;当新的共识算法配置完成后,重新启动所有节点。如此一来,在共识算法的切换过程中,用户的业务受到影响,并且由于区块链网络具有去中心化特点,通过冷启动方式切换共识算法的可执行性较低。因此,在区块链网络中,如何有效地共识算法切换成为当今研究的热点问题。
发明内容
本发明实施例提供了一种共识算法的切换方法、装置、节点设备及存储介质,在不需要停掉区块链网络的情况下,实现共识算法切换,保证了区块链网络的高可用性。
一方面,本发明实施例提供了一种共识算法的切换方法,所述方法由区块链网络中的目标共识节点执行,所述目标共识节点为所述区块链网络包括的多个共识节点中的任意一个,所述区块链网络中发布有目标共识算法对应的目标配置信息,所述区块链网络中运行有第一共识算法,所述方法包括:
若所述目标共识节点中区块链的区块高度大于或等于高度阈值,则所述目标配置信息执行启动目标共识算法的预处理操作;
获取通知信息集合,所述通知信息集合中的一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;
若所述通知信息集合中来自目标共识节点集合中共识节点的通知消息的数量大于数量阈值,且所述目标共识节点的预处理操作执行完成,则将所述第一共识算法切换为所述目标共识算法,所述目标共识节点集合是所述目标共识节点在执行启动目标共识算法的预处理操作过程中确定的。
一方面,本发明实施例提供了一种共识算法的切换装置,所述装置包括:
处理单元,用于若所述目标共识节点中区块链的区块高度大于或等于高度阈值,则基于所述目标配置信息执行启动目标共识算法的预处理操作;
获取单元,用于获取通知信息集合,所述通知信息集合中的一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;
切换单元,用于若所述通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且所述目标共识节点的预处理操作执行完成,则将所述第一共识算法切换为所述目标共识算法,所述目标共识节点集合是所述目标共识节点在执行启动目标共识算法的预处理操作过程中确定的。
在一个实施例中,所述处理单元在基于所述目标配置信息执行启动目标共识算法的预处理操作时,执行如下操作:根据所述目标配置信息从所述区块链网络的多个共识节点中确定用于运行所述目标共识算法的目标共识节点集合,以及基于所述目标配置信息配置与所述目标共识算法对应的共识算法模块。
在一个实施例中,所述切换单元在将所述第一共识算法切换为所述目标共识算法时,执行如下操作:调用所述第一共识算法的终止服务接口停止运行所述第一共识算法,并调用所述目标共识算法的启动服务接口启动运行所述目标共识算法。
在一个实施例中,所述切换装置还包括接收单元,所述接收单元,用于接收多个其他共识节点发送的多个通知信息,每个其他共识节点为所述多个共识节点中除所述目标共识节点外的任意一个共识节点;所述处理单元,还用于从接收到的多个通知信息中选择满足信息验证条件的至少一个通知信息存入通知信息集合;
其中,所述满足验证条件的至少一个通知信息中各个通知信息是由不同其他共识节点发送的,和/或,每个通知信息中携带的所述目标共识算法的相关信息与所述目标共识节点中存储的所述目标共识算法的相关信息相匹配,所述目标共识算法的相关信息包括所述目标共识算法、所述目标共识算法对应的目标配置信息以及运行所述目标共识算法的目标共识节点集合。
在一个实施例中,所述目标共识节点为所述目标共识节点集合中的任意一个,所述获取单元,还用于获取业务请求;所述处理单元,还用于采用所述目标共识算法对所述业务请求所请求的业务进行共识验证;共识验证通过后,将所述所请求的业务存储在所述区块链网络中。
在一个实施例中,所述切换装置还包括发送单元:
所述接收单元,还用于接收在所述区块链网络中发布目标共识算法的提案请求,所述提案请求是治理委员会中任意一个成员提交的;所述发送单元,用于向治理委员会中其他成员发送携带所述目标共识算法的投票通知,并获取所述其他成员返回的投票结果,所述投票通知用于提示所述其他成员针对所述目标共识算法进行投票,并返回投票结果;所述处理单元,还用于若投票结果中指示确认发布所述目标共识算法的投票结果的数量大于或等于数量阈值,则将所述目标共识算法发布到所述区块链网络中。
在一个实施例中,接收单元,还用于接收部署共识治理合约的部署请求,所述部署请求包括所述共识治理合约的标识;所述处理单元,还用于对所述部署请求验证通过后,基于所述共识治理合约的标识在所述区块链网络中部署所述共识治理合约。
在一个实施例中,所述对所述部署请求验证通过包括:所述部署请求的发送者具有部署共识治理合约的部署权限,以及所述区块链网络中不存在所述共识治理合约。
一方面,本发明实施例提供了一种节点设备,其特征在于,包括:处理器,适于实现一条或多条指令;以及计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行:
若所述目标共识节点中区块链的区块高度大于或等于高度阈值,则基于所述目标配置信息执行启动目标共识算法的预处理操作;
获取通知信息集合,所述通知信息集合中的一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;
若所述通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且所述目标共识节点的预处理操作执行完成,则将所述第一共识算法切换为所述目标共识算法,所述目标共识节点集合是所述目标共识节点在执行启动目标共识算法的预处理操作过程中确定的。
一方面,本发明实施例提供了一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时,用于执行如下步骤:
若所述目标共识节点中区块链的区块高度大于或等于高度阈值,则基于所述目标配置信息执行启动目标共识算法的预处理操作;
获取通知信息集合,所述通知信息集合中的一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;
若所述通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且所述目标共识节点的预处理操作执行完成,则将所述第一共识算法切换为所述目标共识算法,所述目标共识节点集合是所述目标共识节点在执行启动目标共识算法的预处理操作过程中确定的。
一方面,本发明实施例提供了一种计算机程序产品或计算机程序,所述计算机程序产品或所述计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中;节点设备的处理器从所述计算机存储介质中读取所述计算机指令,所述处理器执行所述计算机指令,使得节点设备执行上述共识算法的切换方法。
本发明实施例中,目标共识节点在检测到本地区块链的区块高度大于或等于高度阈值时,基于目标共识算法对应的目标配置信息执行启动目标共识算法的预处理操作;并获取通知信息集合,该通知信息集合中每一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;进一步地,若通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且目标共识节点的预处理操作执行完成,则将区块链网络中运行的第一共识算法切换为目标共识算法。在上述共识算法的切换过程中,待切换的目标共识算法预先发布到区块链网络中,当目标共识节点集合中有数量阈值个共识节点已执行完成启动目标共识算法的预处理操作时,便停止区块链网络中当前运行的第一共识算法,启动运行新的共识算法。实现了在区块链网络正常运行的情况下,切换共识算法,提高了区块链网络的高可用性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的一种区块链网络的结构示意图;
图1b是本发明实施例提供的一种区块链的结构示意图;
图2是本发明实施例提供的一种共识算法的切换方法的流程示意图;
图3是本发明实施例提供的另一种共识算法的切换方法的流程示意图;
图4是本发明实施例提供的一种共识算法的切换装置的结构示意图;
图5是本发明实施例提供的一种节点设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例提供了一种共识算法的切换方案,应用在区块链网络中,该区块链网络中存在管理人员预先发布待切换的目标共识算法,以及目标共识算法对应的目标配置信息。当区块链网络中的任意一个共识节点检测到区块链网络当前状况满足切换共识算法的条件时,比如区块链的区块高度大于或等于高度阈值,并且运行目标共识算法的目标共识节点集合中存在数量阈值个共识节点执行完成启动目标共识算的预处理操作,将区块链网络中运行的第一共识算法切换为目标共识算法。
基于上述的共识算法的切换方案,本发明实施例提供了一种共识算法切换系统。参见图1a,为本发明实施例提供的一种共识算法切换系统的结构示意图。图1a所示的共识算法切换系统可包括管理终端101、用户终端102以及区块链网络103。
在一个实施例中,所述管理终端101为区块链网络的治理委员会中任意一个成员使用的终端,所述用户终端102为基于区块链网络执行业务的用户。所述管理终端101和所述用户终端102均可以为智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表中的任意一种或多种。
在一个实施例中,所述区块链网络103中可以理解成一个数据共享系统,该数据共享系统用于进行节点与节点之间的数据共享。所述区块链网络103可以包括多个节点104,多个节点104可以是接入区块链网络103中的终端设备或者服务器。所述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
在一个实施例中,区块链网络103中每个节点104在进行正常工作时可以接收用户终端102或者管理终端101输入的信息,并基于接收到的输入信息维护区块链网络内的共享数据。为了保证区块链网络内的信息互通,区块链网络中的每个节点之间可以存在信息连接,节点中间可以通过上述信息连接进行信息传输。例如,当区块链网络中的任意节点接收到输入信息时,区块链网络中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链网络中全部节点上存储的数据均一致。
对于区块链网络中的每个节点,均具有与其对应的节点标识,而且区块链网络中的每个节点均可以存储有区块链网络中其他节点的节点标识,以便后续根据其他节中可维护一个如下表所述的节点标识列表,将节点名称和节点标识对应存储至节点标识列表中。其中,节点标识可以为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
节点名称 | 节点标识 |
节点1 | 117.114.151.174 |
节点2 | 117.116.189.145 |
… | … |
节点N | 119.123.789.258 |
在一个实施例中,区块链网络中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图1b,为本发明实施例提供的一种区块链的结构示意图。图1b所示的区块链中可以包括多个区块,创世区块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创世区块的下一区块以创世区块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳以及难度值。以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
由此可知,任意一个区块的区块头的哈希值用于标识该区块。在区块链网络中,除了用区块头的哈希值标识区块,该可以通过区块的区块高度来标识。但是,区块头的哈希值是唯一的,明确地标识一个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块头的哈希值;而区块高度是指区块在区块链中的位置,并不能唯一标识区块。
在一个实施例中,任意一个区块的区块高度可以指该区块与创世区块之间的区块。假设创世区块的区块高度为0,图1b中第二个区块与创世区块之间的区块为1个,因此第二个区块的区块高度为1,同理可得,第三个区块的区块高度为2。
在图1a所示的共识算法切换系统中,治理委员会的任意一个成员可以通过管理终端101向区块链网络103中发布一个目标共识算法,该目标共识算法是用于替换区块链网络中当前正在运行的第一共识算法。区块链网络103中多个节点中的各个共识节点在执行切换共识算法之前,设置映射目标共识算法的区块高度,当检测到本地区块链中的区块高度等于或大于高度阈值时,执行启动目标共识算法的预处理操作,比如配置新的共识算法模块以及从区块链网络包括的多个共识节点中选举新的共识节点等。每个共识节点的预处理操作执行完成后,向其他共识节点广播用于表示自己已经执行完成预处理操作的通知信息。
当任意一个共识节点接收到大于数量阈值个新的共识节点发送的通知信息,且该任意一个共识节点已经执行完成了预处理操作,则该共识节点可以将区块链网络中运行的第一共识算法切换为目标共识算法。
共识算法切换完成后,当用户通过用户终端102向区块链网络提交业务请求时,区块链网络将用户所请求的业务打包成区块,并由上述选举出的新的共识节点基于目标共识算法对该区块进行共识验证,并验证通过后将该区块连接到区块链上,以实现在区块链网络中存储用户所请求的业务。
在上述共识算法的切换过程中,待切换的目标共识算法预先发布到区块链网络中,当区块链网络中用于运行目标共识算法的多个新的共识节点中有数量阈值个共识节点已执行完成启动目标共识算法的预处理操作,便停止区块链网络中当前运行的第一共识算法,启动运行新的共识算法。实现了在区块链网络正常运行的情况下,切换共识算法,提高了区块链网络的高可用性。
基于上述的共识算法切换系统,本发明实施例提供了一种共识算法的切换方法。参考图2,为本发明实施例提供的一种共识算法的切换方法的流程示意图。图2所示的共识算法的切换方法可由区块链网络中的目标共识节点执行,所述目标共识节点可以指区块链网络包括的多个共识节点中的任意一个,区块链网络中发布有目标共识算法,以及目标共识算法对应的目标配置信息,且区块链网络中运行有第一共识算法。图2所示的共识算法的切换方法可包括如下步骤:
步骤S201、若目标共识节点中区块链的区块高度大于或等于高度阈值,则基于目标配置信息执行启动目标共识算法的预处理操作。
在一个实施例中,区块链网络中存储待切换的目标共识算法,该目标共识算法是由共识治理委员会发布到区块链网络中的。具体地,共识治理委员会在向区块链网络发布目标共识算法之前,需要在区块链网络中部署共识治理合约,以便于通过共识治理合约实现在区块链网络中发布目标共识算法。
在一个实施例中,共识治理委员会在区块链网络中发布了待切换的目标共识算法之后,在将区块链网络当前运行的第一共识算法切换至目标共识算法之前,区块链网络需要执行切换之前的准备工作。具体地,所述准备工作可以指每个共识节点基于目标共识算法的目标配置信息执行启动目标共识算法的预处理操作,所述预处理操作可以包括从多个共识节点中选举运行目标共识算法的目标共识节点集合;当目标共识节点集合中有有超过数量阈值个共识节点已完成执行启动目标共识算法的预处理操作时,确定区块链网络的准备工作执行完成。
下面以多个共识节点中的目标共识节点为例介绍每个共识节点如何执行启动目标共识算法的预处理操作。目标共识节点获取区块链网络中发布的目标共识算法,以及目标共识算法对应的目标配置信息;设置指定区块高度映射目标共识算法,也即设置高度阈值。可选的,目标共识节点可以将目标配置信息和高度阈值写入到共识治理合约中。
进一步的,目标共识节点定期检测本地存储的区块链中区块高度,若本地存储的区块链中区块高度小于高度阈值,则不进行切换操作,也即继续在区块链网络中运行第一共识算法;若本地存储的区块链中的区块高度大于或等于高度阈值时,则从共识治理合约中获取所述目标共识算法以及目标配置信息,并基于获取到的目标配置信息执行启动目标共识算法的预处理操作。
在一个实施例中,所述基于目标配置信息执行启动目标共识算法的预处理操作,可包括:根据所述目标配置信息从所述区块链网络的多个共识节点中确定用于运行所述目标共识算法的目标共识节点集合,以及基于所述目标配置信息配置与所述目标共识算法对应的共识算法模块。
其中,基于所述目标配置信息配置与目标共识算法对应的共识模块,可以包括将目标共识算法与账本信息的进行同步、目标共识算法上下文信息以及消息缓存池初始化等等。
可选的,目标共识节点在执行上述预处理操作完成后,向其他共识节点广播通知信息,该通知信息用于告知其他共识节点,目标共识节点已经执行完成了启动目标共识算法的预处理操作。同理的,其他共识节点在按照上述步骤执行完成启动目标共识算法的预处理操作之后,向目标共识节点广播通知信息。因此,目标共识节点可以接收到其他共识节点广播的多个通知信息,其中所述其他共识节点中可以包括各个共识节点选举出来的用于运行目标共识算法的目标共识节点集合中的多个共识节点。
步骤S202、获取通知信息集合。
在一个实施例中,目标共识节点接收到其他共识节点广播的多个通知信息后,对每条通知信息进行验证,将验证通过的通知信息组成通知信息集合。具体实现中,所述获取通知信息集合,包括:接收多个其他共识节点发送的多个通知信息,每个其他共识节点为所述多个共识节点中除所述目标共识节点外的任意一个共识节点;从接收到的多个通知信息中选择满足信息验证条件的至少一个通知信息存入通知信息集合;其中,所述满足验证条件的至少一个通知信息中各个通知信息是由不同其他共识节点发送的,和/或,每个通知信息中携带的所述目标共识算法的相关信息与所述目标共识节点中存储的所述目标共识算法的相关信息相匹配,所述目标共识算法的相关信息包括所述目标共识算法、所述目标共识算法对应的目标配置信息以及运行所述目标共识算法的目标共识节点集合。
其中,所述满足验证条件的至少一个通知信息中各个通知信息是由不同其他共识节点发送的,也即通知信息集合中每个通知信息不是同一个共识节点发送的重复的信息。
在一个实施例中,所述从接收到的多个通知信息中选择满足验证条件的至少一个通知信息,包括:针对任意一条通知信息,校验该通知信息的签名合法性,如果校验失败,则丢弃该通知信息;如果校验成功,则进一步校验该通知信息是否属于共识节点,如果校验失败,则丢弃该通知信息;若校验成功,则进一步校验是否已经接收到来自该其他共识节点的通知信息,如果是,则丢弃该通知信息;如果不是,则获取本地共识治理合约中存储的目标共识算法、目标共识节点集合以及目标配合信息,将本地获取到的这些信息与通知信息中携带的相应信息进行比较,若匹配,则将该通知信息作为满足验证条件的通知信息存入通知信息集合中。
步骤S203、若通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且目标共识节点的预处理操作执行完成,则将第一共识算法切换为目标共识算法。
在一个实施例中,如果通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,表明区块链网络中用于运行目标共识算法的多个共识节点已经有超过数量阈值个共识节点完成了启动目标共识算法的准备工作,此时可以执行共识算法切换的步骤。但是对于目标共识节点来说,执行共识算法切换的前提是目标共识节点完成执行启动目标共识算法的预处理操作。
基于此,对于目标共识节点来说,若通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且目标共识节点的预处理操作执行完成,则将区块链网络中运行的第一共识算法切换为目标共识算法。
在一个实施例中,所述将第一共识算法切换为目标共识算法,可包括:调用所述第一共识算法的终止服务接口停止运行所述第一共识算法,并调用所述目标共识算法的启动服务接口启动运行所述目标共识算法。
可选的,在启动目标共识算法之后,目标共识节点可以将上述通知信息集合中的通知信息打包存入到区块链上,以便于后续对切换共识算法的验证使用。
在一个实施例中,确定出通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值之后,将区块链网络中运行的第一共识算法切换为目标共识算法之前,目标共识节点可以将切换交易打包进区块,由多个共识节点对该区块进行共识验证;如果共识验证通过,则执行将区块链网络中运行的第一共识算法切换为目标共识算法的步骤。
在一个实施例中,启动目标共识算法之后,若目标共识节点为运行目标共识算法的目标共识节点集合中的任意一个,则获取业务请求;采用所述目标共识算法对所述业务请求所请求的业务进行共识验证;共识验证通过后,将所述所请求的业务存储在所述区块链网络中。
本发明实施例中,目标共识节点在检测到本地区块链的区块高度大于或等于高度阈值时,基于目标共识算法对应的目标配置信息执行启动目标共识算法的预处理操作;并获取通知信息集合,该通知信息集合中每一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;进一步地,若通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且目标共识节点的预处理操作执行完成,则将区块链网络中运行的第一共识算法切换为目标共识算法。在上述共识算法的切换过程中,待切换的目标共识算法预先发布到区块链网络中,当目标共识节点集合中有数量阈值个共识节点已执行完成启动目标共识算法的预处理操作时,便停止区块链网络中当前运行的第一共识算法,启动运行新的共识算法。实现了在区块链网络正常运行的情况下,切换共识算法,提高了区块链网络的高可用性。
基于上述共识算法切换系统以及方法,本发明实施例还提供了另一种共识算法的切换方法。参考图3,为本发明实施例提供的另一种共识算法的切换方法的流程示意图。图3所示的共识算法的切换方法可由目标共识节点执行,所述目标共识节点可以是区块链网络包括的多个共识节点中的任意一个。图3所示的共识算法的切换方法可包括如下步骤:
步骤S301、接收在区块链网络中发布目标共识算法的提案请求。
由前述可知,在实现对区块链网络中运行的共识算法切换之前,区块链网络中需要存在已发布的待切换的目标共识算法。所述目标共识算法可以是治理委员会的任意一个成员在区块链网络中发布的,具体实现中,可以通过步骤S301和步骤S302实现在区块链网络中发布目标共识算法。
在一个实施例中,目标共识算法的部署需要依赖共识治理合约,共识治理合约中定义了关于共识治理的数据以及操作,比如共识治理参数、合约注册数据表、查询共识节点列表、查询共识节点数、查询共识节点最小门限值、共识节点选举切换、添加共识节点、删除共识节点、黑名单操作、共识节点选举、切换共识算法、修改共识算法配置、权益抵押等内容中的任意一种或多种。因此,治理委员会在区块链网络中发布目标共识算法之前,需要先在区块链网络中部署共识治理合约。
具体实现中:接收部署共识治理合约的部署请求;对部署请求验证通过后,基于共识治理合约的标识在区块链网络中部署共识治理合约。其中,部署请求是治理委员会中的任意一个成员提交到区块链网络中的,所述部署请求中科包括共识治理合约的标识、系统创世合约的标识、操作方式为部署以及治理委员会签名等信息。
在一个实施例中,接收到部署请求后,对部署请求进行签名验证,如果签名验证失败,则可向治理委员会返回部署失败的提示信息;如果签名验证成功,则可以将部署请求加入到交易池中;目标共识节点对部署请求打包进区块,并进行共识验证和部署共识治理合约,所述部署共识治理合约可以是通过区块链网络中的虚拟机执行的。
在部署共识治理合约之前,首先通过部署请求中携带的系统创世合约的标识查找系统创世合约;查找到系统创世合约后,检查部署请求中携带的操作方式是否为部署操作;若是,则通过系统创世合约调用部署操作进行共识治理合约的部署。
在部署共识治理合约时,通过共识治理合约的标识查询是否区块链网络中已经部署过共识治理合约;若没有,则通过系统创世合约校验部署请求的发送者是否有权限部署合约;如果有,则以共识治理合约的标识为哈希,将共识治理合约数据写入缓存中。区块链网络对上述部署结果进行共识后,将部署结果以及共识治理合约写入账本,并可以将部署结果返回给治理委员会。
基于上述步骤,在区块链网络中部署了共识治理合约之后,治理委员会中的任意一个成员可以向区块链网络提交发布目标共识算法的提案请求。其中,所述提案请求中可包括系统创世合约的标识、共识治理合约的标识以及目标共识算法。
在一个实施例中,目标共识节点接收到提案请求之后,对提案请求进行签名验证,验证通过后,将提案请求加入到交易池中。进而,将提案请求打包进区块,对该区块进行共识,共识通过后执行在区块链网络中发布目标共识算法的步骤。
在执行在区块链网络中发布目标共识算法的过程中,通过提案请求中携带的系统创世合约的标识查找系统创世合约;查找到系统传世合约后,基于共识治理合约的标识查找共识治理合约,并调用共识治理合约中的切换共识算法操作进行发布共识算法的操作。具体地,检查提案请求的发送者是否有权限提案和投票;如果有,则进一步检查区块链网络是否支持所述提案请求中携带的所述目标共识算法;若支持,则将目标共识算法加入到提案列表中,等待投票。且将初始票数设置为1,即表示发送提案请求的治理委员会成员已投票。
步骤S302、向治理委员会中其他成员发送携带所述目标共识算法的投票通知并获取所述其他成员返回的投票结果。
在一个实施例中,在将目标共识算法加入到提案列表之后,区块链网络中的目标共识节点可以对上述执行结果进行共识后写入账本,并将执行结果返回给治理委员会成员。
在一个实施例中,目标共识节点还可以向其他成员发送携带目标共识算法的投票通知并获取其他成员返回的投票结果,所述投票通知用于提示所述其他成员针对所述目标共识算法进行投票,并返回投票结果。其中,其他成员对目标共识算法的投票结果可以包括:确认发布目标共识算法以及拒绝发布目标共识算法。
步骤S303、若投票结果中指示确认发布所述目标共识算法的投票结果的数量大于或等于数量阈值,则将所述目标共识算法发布到区块链网络中。
在一个实施例中,其他成员接收到投票通知后,可以向区块链网路提交投票结果,具体地,任意一个其他成员向区块链网络提交投票结果的流程可以如下:其他成员接收到投票通知后,对目标共识算法进行投票,将投票结果签名后以交易的形式提交到区块链网络中;目标共识节点接收到投票交易后,校验交易的签名合法性,如果校验失败,则返回投票错误的提示信息;如果校验成功,则将投票交易加入到交易池中;目标共识节点将投票交易进行打包共识;共识验证通过后,调用虚拟机执行交易。
执行过程中,通过系统创世合约的标识查询系统创世合约,如果未查找到,则返回投票失败;如果查找到系统创世合约,则继续通过系统传世合约和共识治理合约的标识查找共识治理合约,如果未查找到,则返回投票失败;如果查找到,则调用共识治理合约切换共识算法操作进行投票;检查发送投票交易的其他成员是否具有投票权限,如果没有,则返回投票失败;如果有,则检查投票信息是否和提案请求相匹配,如果匹配,则按照治理委员会成员每人一票的投票原则检查该投票是否为重复投票;如果不是,则将该投票结果加入到投票池,以便于目标共识节点根据投票池中的投票结果确定是否在区块链网络中发布共识算法。
在一个实施例中,如果目标共识节点检测到投票池的投票结果中指示确认发布目标共识算法的投票结果的数量大于或等于数量阈值,则将目标共识算法发布到区块链网络中。
步骤S304、若目标共识节点中区块链的区块高度大于或等于高度阈值,则基于目标配置信息执行启动目标共识算法的预处理操作;
步骤S305、获取通知信息集合,通知信息集合中的一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;
步骤S306、若通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且目标共识节点的预处理操作执行完成,则将第一共识算法切换为所述目标共识算法。
在一个实施例中,步骤S304-步骤S306中涉及的一些可行的实施方式可参见图2实施例中相关步骤的描述,在此不再赘述。
本发明实施例中,治理委员会预先在区块链网络中部署共识治理合约,以实现对区块链网络进行共识管理。部署共识管理合约成功后,治理委员会向区块链网络提交发布目标共识算法的提案请求,区块链网络中的目标共识节点接收提案请求;向治理委员会中其他成员发送携带所述目标共识算法的投票通知,并获取所述其他成员返回的投票结果;若投票结果中指示确认发布所述目标共识算法的投票结果的数量大于或等于数量阈值,则将所述目标共识算法发布到所述区块链网络中。
通过上述过程在区块链网络中发布了待切换的目标共识算法后,目标共识算法定时或实时地检测到本地区块链的区块高度,若区块高度大于或等于高度阈值时,基于目标共识算法对应的目标配置信息执行启动目标共识算法的预处理操作;并获取通知信息集合,该通知信息集合中每一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;进一步地,若通知信息集合中通知信息的数量大于数量阈值,且目标共识节点的预处理操作执行完成,则将区块链网络中运行的第一共识算法切换为目标共识算法。在上述共识算法的切换过程中,待切换的目标共识算法预先发布到区块链网络中,当目标共识节点集合中有数量阈值个共识节点已执行完成启动目标共识算法的预处理操作时,便停止区块链网络中当前运行的第一共识算法,启动运行新的共识算法。实现了在区块链网络正常运行的情况下,切换共识算法,提高了区块链网络的高可用性。
基于上述共识算法的切换方法的实施例,本发明实施例还提供了一种共识算法的切换装置。参考图4,为本发明实施例提供的一种共识算法的切换装置的结构示意图。图4所述的切换装置可以配置于节点设备上,所述节点设备可以是区块链网络中的任意一个节点,所述区块链网络中发布有目标共识算法对应的目标配置信息,所述区块链网络中运行有第一共识算法;图4所示的切换装置可运行如下单元:
处理单元401,用于若所述目标共识节点中区块链的区块高度大于或等于高度阈值,则基于所述目标配置信息执行启动目标共识算法的预处理操作;
获取单元402,用于获取通知信息集合,所述通知信息集合中的一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;
切换单元403,用于若所述通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且所述目标共识节点的预处理操作执行完成,则将所述第一共识算法切换为所述目标共识算法,所述目标共识节点集合是所述目标共识节点在执行启动目标共识算法的预处理操作过程中确定的。
在一个实施例中,所述处理单元401在基于所述目标配置信息执行启动目标共识算法的预处理操作时,执行如下操作:根据所述目标配置信息从所述区块链网络的多个共识节点中确定用于运行所述目标共识算法的目标共识节点集合,以及基于所述目标配置信息配置与所述目标共识算法对应的共识算法模块。
在一个实施例中,所述切换单元403在将所述第一共识算法切换为所述目标共识算法时,执行如下操作:调用所述第一共识算法的终止服务接口停止运行所述第一共识算法,并调用所述目标共识算法的启动服务接口启动运行所述目标共识算法。
在一个实施例中,所述切换装置还包括接收单元404:
所述接收单元404,用于接收多个其他共识节点发送的多个通知信息,每个其他共识节点为所述多个共识节点中除所述目标共识节点外的任意一个共识节点;
所述处理单元401,还用于从接收到的多个通知信息中选择满足信息验证条件的至少一个通知信息存入通知信息集合;
其中,所述满足验证条件的至少一个通知信息中各个通知信息是由不同其他共识节点发送的,和/或,每个通知信息中携带的所述目标共识算法的相关信息与所述目标共识节点中存储的所述目标共识算法的相关信息相匹配,所述目标共识算法的相关信息包括所述目标共识算法、所述目标共识算法对应的目标配置信息以及运行所述目标共识算法的目标共识节点集合。
在一个实施例中,若所述目标共识节点为所述目标共识节点集合中的任意一个,则获取单元402,还用于获取业务请求;所述处理单元401,还用于采用所述目标共识算法对所述业务请求所请求的业务进行共识验证;共识验证通过后,将所述所请求的业务存储在所述区块链网络中。
在一个实施例中,所述切换装置还包括发送单元405:
所述接收单元404,还用于接收在所述区块链网络中发布目标共识算法的提案请求,所述提案请求是治理委员会中任意一个成员提交的;
所述发送单元405,用于向治理委员会中其他成员发送携带所述目标共识算法的投票通知,并获取所述其他成员返回的投票结果,所述投票通知用于提示所述其他成员针对所述目标共识算法进行投票,并返回投票结果;
所述处理单元401,还用于若投票结果中指示确认发布所述目标共识算法的投票结果的数量大于或等于数量阈值,则将所述目标共识算法发布到所述区块链网络中。
在一个实施例中,所述接收单元404,还用于接收部署共识治理合约的部署请求,所述部署请求包括所述共识治理合约的标识;所述处理单元401,还用于对所述部署请求验证通过后,基于所述共识治理合约的标识在所述区块链网络中部署所述共识治理合约。
在一个实施例中,所述对所述部署请求验证通过包括:所述部署请求的发送者具有部署共识治理合约的部署权限,以及所述区块链网络中不存在所述共识治理合约。
根据本发明的一个实施例,图2和图3所示的共识算法的切换方法所涉及各个步骤可以是由图4所示的共识算法的切换装置中的各个单元来执行的。例如,图2所述的步骤S201可由图4所示的共识算法的切换装置中的处理单元401来执行,步骤S202可由共识算法的切换装置中获取单元402执行,步骤S203可由共识算法的切换装置中的切换单元来执行;再如,图3所示的共识算法中,步骤S301可由共识算法的切换装置中接收单元404来执行,步骤S302可由共识算法的切换装置中的发送单元405来执行,步骤S303和步骤S304可由共识算法的切换装置中处理单元401来执行,步骤S305可由共识算法的切换装置中获取单元402来执行,步骤S306可由共识算法的切换装置中的切换单元403来执行。
根据本发明的另一个实施例,图4所示的共识算法的切换装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于共识算法的切换装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本发明的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2以及图3所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图4中所示的共识算法的切换装置,以及来实现本发明实施例共识算法的切换方法。所述计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述计算设备中,并在其中运行。
本发明实施例中,目标共识节点在检测到本地区块链的区块高度大于或等于高度阈值时,基于目标共识算法对应的目标配置信息执行启动目标共识算法的预处理操作;并获取通知信息集合,该通知信息集合中每一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;进一步地,若通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且目标共识节点的预处理操作执行完成,则将区块链网络中运行的第一共识算法切换为目标共识算法。在上述共识算法的切换过程中,待切换的目标共识算法预先发布到区块链网络中,当目标共识节点集合中有数量阈值个共识节点已执行完成启动目标共识算法的预处理操作时,便停止区块链网络中当前运行的第一共识算法,启动运行新的共识算法。实现了在区块链网络正常运行的情况下,切换共识算法,提高了区块链网络的高可用性。
基于上述方法以及装置实施例,本发明实施例提供了一种节点设备。参考图5,为本发明实施例提供的一种节点设备的结构示意图,图5所示的节点设备可以对应前述目标共识节点,所述目标共识节点为区块链网络中的任意一个共识节点,所述区块链网络中发布有目标共识算法对应的目标配置信息,所述区块链网络中运行有第一共识算法。图5所述的节点设备至少包括处理器501、输入接口502、输出接口503以及计算机存储介质504。其中,处理器501、输入接口502、输出接口503以及计算机存储介质504可通过总线或其他方式连接。
计算机存储介质504可以存储在迁移设备的存储器中,所述计算机存储介质1104用于存储计算机程序,所述计算机程序包括程序指令,所述处理器1101用于执行所述计算机存储介质504存储的程序指令。处理器1101(或称CPU(Central Processing Unit,中央处理器))是节点设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行:若所述目标共识节点中区块链的区块高度大于或等于高度阈值,则所述目标配置信息执行启动目标共识算法的预处理操作;获取通知信息集合,所述通知信息集合中的一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;若所述通知信息集合中来自目标共识节点集合中共识节点的通知消息的数量大于数量阈值,且所述目标共识节点的预处理操作执行完成,则将所述第一共识算法切换为所述目标共识算法,所述目标共识节点集合是所述目标共识节点在执行启动目标共识算法的预处理操作过程中确定的。
本发明实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是节点设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括节点设备中的内置存储介质,当然也可以包括节点设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了节点设备的操作系统。并且,在该存储空间中还存放了适于被处理器401加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,所述计算机存储介质可由处理器401加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关图2所示共识算法的切换方法的相应步骤。具体实现中,计算机存储介质中的一条或多条指令由处理器401加载并执行如下步骤:若所述目标共识节点中区块链的区块高度大于或等于高度阈值,则所述目标配置信息执行启动目标共识算法的预处理操作;获取通知信息集合,所述通知信息集合中的一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;若所述通知信息集合中来自目标共识节点集合中共识节点的通知消息的数量大于数量阈值,且所述目标共识节点的预处理操作执行完成,则将所述第一共识算法切换为所述目标共识算法,所述目标共识节点集合是所述目标共识节点在执行启动目标共识算法的预处理操作过程中确定的。
在一个实施例中,所述处理器401在基于所述目标配置信息执行启动目标共识算法的预处理操作时,执行如下操作:根据所述目标配置信息从所述区块链网络的多个共识节点中确定用于运行所述目标共识算法的目标共识节点集合,以及基于所述目标配置信息配置与所述目标共识算法对应的共识算法模块。
在一个实施例中,所述处理器401在将所述第一共识算法切换为所述目标共识算法时,执行如下操作:调用所述第一共识算法的终止服务接口停止运行所述第一共识算法,并调用所述目标共识算法的启动服务接口启动运行所述目标共识算法。
在一个实施例中,所述处理器401在获取通知信息集合时,执行如下操作:接收多个其他共识节点发送的多个通知信息,每个其他共识节点为所述多个共识节点中除所述目标共识节点外的任意一个共识节点;从接收到的多个通知信息中选择满足信息验证条件的至少一个通知信息存入通知信息集合;其中,所述满足验证条件的至少一个通知信息中各个通知信息是由不同其他共识节点发送的,和/或,每个通知信息中携带的所述目标共识算法的相关信息与所述目标共识节点中存储的所述目标共识算法的相关信息相匹配,所述目标共识算法的相关信息包括所述目标共识算法、所述目标共识算法对应的目标配置信息以及运行所述目标共识算法的目标共识节点集合。
在一个实施例中,若所述目标共识节点为所述目标共识节点集合中的任意一个,则所述将所述区块链网络中运行的第一共识算法切换为所述目标共识算法后,所述处理器401还执行:获取业务请求;采用所述目标共识算法对所述业务请求所请求的业务进行共识验证;共识验证通过后,将所述所请求的业务存储在所述区块链网络中。
在一个实施例中,所述处理器401还用于执行:接收在所述区块链网络中发布目标共识算法的提案请求,所述提案请求是治理委员会中任意一个成员提交的;向治理委员会中其他成员发送携带所述目标共识算法的投票通知,并获取所述其他成员返回的投票结果,所述投票通知用于提示所述其他成员针对所述目标共识算法进行投票,并返回投票结果;若投票结果中指示确认发布所述目标共识算法的投票结果的数量大于或等于数量阈值,则将所述目标共识算法发布到所述区块链网络中。
在一个实施例中,所述处理器401还用于执行:接收部署共识治理合约的部署请求,所述部署请求包括所述共识治理合约的标识;对所述部署请求验证通过后,基于所述共识治理合约的标识在所述区块链网络中部署所述共识治理合约。
在一个实施例中,所述对所述部署请求验证通过包括:所述部署请求的发送者具有部署共识治理合约的部署权限,以及所述区块链网络中不存在所述共识治理合约。
本发明实施例中,目标共识节点在检测到本地区块链的区块高度大于或等于高度阈值时,基于目标共识算法对应的目标配置信息执行启动目标共识算法的预处理操作;并获取通知信息集合,该通知信息集合中每一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;进一步地,若通知信息集合中来自目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且目标共识节点的预处理操作执行完成,则将区块链网络中运行的第一共识算法切换为目标共识算法。在上述共识算法的切换过程中,待切换的目标共识算法预先发布到区块链网络中,当目标共识节点集合中有数量阈值个共识节点已执行完成启动目标共识算法的预处理操作,便停止区块链网络中当前运行的第一共识算法,启动运行新的共识算法。实现了在区块链网络正常运行的情况下,切换共识算法,提高了区块链网络的高可用性。
根据本申请的一个方面,本发明实施例还提供了一种计算机产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。处理器401从计算机可读存储介质读取该计算机指令,处理器401执行该计算机指令,使得该虚拟加密机的迁移设备执行图2所示的切换方法,具体地:若所述目标共识节点中区块链的区块高度大于或等于高度阈值,则所述目标配置信息执行启动目标共识算法的预处理操作;获取通知信息集合,所述通知信息集合中的一个通知信息用于表示一个共识节点已执行完成启动目标共识算法的预处理操作;若所述通知信息集合中来自目标共识节点集合中共识节点的通知消息的数量大于数量阈值,且所述目标共识节点的预处理操作执行完成,则将所述第一共识算法切换为所述目标共识算法,所述目标共识节点集合是所述目标共识节点在执行启动目标共识算法的预处理操作过程中确定的。
以上所揭露的仅为本发明部分实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种共识算法的切换方法,其特征在于,所述方法由区块链网络中的目标共识节点执行,所述目标共识节点为所述区块链网络包括的多个共识节点中的任意一个;所述区块链网络中发布有目标共识算法对应的目标配置信息,所述区块链网络中运行有第一共识算法;所述方法包括:
若所述目标共识节点中区块链的区块高度大于或等于高度阈值,则基于所述目标配置信息执行启动目标共识算法的预处理操作;所述预处理操作包括:根据所述目标配置信息从所述区块链网络的多个共识节点中确定用于运行所述目标共识算法的目标共识节点集合,以及基于所述目标配置信息配置与所述目标共识算法对应的共识算法模块;其中,所述目标共识节点集合中包括用于运行所述目标共识算法的共识节点;
获取通知信息集合,所述通知信息集合中的一个通知信息用于表示一个其他共识节点已执行完成启动所述目标共识算法的预处理操作,所述其他共识节点是指所述区块链网络包括的多个共识节点中除所述目标共识节点外的任意一个共识节点;
若所述通知信息集合中来自所述目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且所述目标共识节点的预处理操作执行完成,则将所述第一共识算法切换为所述目标共识算法,所述目标共识节点集合是所述目标共识节点在执行启动目标共识算法的预处理操作过程中确定的。
2.如权利要求1所述的方法,其特征在于,所述将所述第一共识算法切换为所述目标共识算法,包括:
调用所述第一共识算法的终止服务接口停止运行所述第一共识算法,并调用所述目标共识算法的启动服务接口启动运行所述目标共识算法。
3.如权利要求1所述的方法,其特征在于,所述获取通知信息集合,包括:
接收多个其他共识节点发送的多个通知信息,每个其他共识节点为所述多个共识节点中除所述目标共识节点外的任意一个共识节点;
从接收到的多个通知信息中选择满足信息验证条件的至少一个通知信息存入通知信息集合;
其中,所述满足验证条件的至少一个通知信息中各个通知信息是由不同其他共识节点发送的,和/或,每个通知信息中携带的所述目标共识算法的相关信息与所述目标共识节点中存储的所述目标共识算法的相关信息相匹配,所述目标共识算法的相关信息包括所述目标共识算法、所述目标共识算法对应的目标配置信息以及运行所述目标共识算法的目标共识节点集合。
4.如权利要求1所述的方法,其特征在于,若所述目标共识节点为所述目标共识节点集合中的任意一个,则所述将所述第一共识算法切换为所述目标共识算法后,所述方法还包括:
获取业务请求;
采用所述目标共识算法对所述业务请求所请求的业务进行共识验证;
共识验证通过后,将所述所请求的业务存储在所述区块链网络中。
5.如权利要求1所述的方法,其特征在于,包括:
接收在所述区块链网络中发布目标共识算法的提案请求,所述提案请求是治理委员会中任意一个成员提交的;
向治理委员会中其他成员发送携带所述目标共识算法的投票通知,并获取所述其他成员返回的投票结果,所述投票通知用于提示所述其他成员针对所述目标共识算法进行投票,并返回投票结果;
若投票结果中指示确认发布所述目标共识算法的投票结果的数量大于或等于数量阈值,则将所述目标共识算法发布到所述区块链网络中。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
接收部署共识治理合约的部署请求,所述部署请求包括所述共识治理合约的标识;
对所述部署请求验证通过后,基于所述共识治理合约的标识在所述区块链网络中部署所述共识治理合约。
7.如权利要求6所述的方法,其特征在于,所述对所述部署请求验证通过包括:所述部署请求的发送者具有部署共识治理合约的部署权限,以及所述区块链网络中不存在所述共识治理合约。
8.一种共识算法的切换装置,其特征在于,包括:
处理单元,用于若目标共识节点中区块链的区块高度大于或等于高度阈值,则基于目标配置信息执行启动目标共识算法的预处理操作,所述目标共识节点为区块链网络包括的多个共识节点中任意一个;所述区块链网络中发布有目标共识算法对应的目标配置信息,所述区块链网络中运行有第一共识算法;所述预处理操作包括:根据所述目标配置信息从所述区块链网络的多个共识节点中确定用于运行所述目标共识算法的目标共识节点集合,以及基于所述目标配置信息配置与所述目标共识算法对应的共识算法模块;其中,所述目标共识节点集合中包括用于运行所述目标共识算法的共识节点;
获取单元,用于获取通知信息集合,所述通知信息集合中的一个通知信息用于表示一个其他共识节点已执行完成启动所述目标共识算法的预处理操作,所述其他共识节点是指所述区块链网络包括的多个共识节点中除所述目标共识节点外的任意一个共识节点;
切换单元,用于若所述通知信息集合中来自所述目标共识节点集合中共识节点的通知信息的数量大于数量阈值,且所述目标共识节点的预处理操作执行完成,则将所述第一共识算法切换为所述目标共识算法,所述目标共识节点集合是所述目标共识节点执行启动目标共识算法的预处理操作过程中确定的。
9.一种节点设备,其特征在于,包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-7任一项所述的共识算法的切换方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时,用于执行如权利要求1-7任一项所述的共识算法的切换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010735422.9A CN111767347B (zh) | 2020-07-27 | 2020-07-27 | 共识算法的切换方法、装置、节点设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010735422.9A CN111767347B (zh) | 2020-07-27 | 2020-07-27 | 共识算法的切换方法、装置、节点设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111767347A CN111767347A (zh) | 2020-10-13 |
CN111767347B true CN111767347B (zh) | 2021-09-10 |
Family
ID=72727603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010735422.9A Active CN111767347B (zh) | 2020-07-27 | 2020-07-27 | 共识算法的切换方法、装置、节点设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767347B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112241436A (zh) * | 2020-10-26 | 2021-01-19 | 云账户技术(天津)有限公司 | 一种区块链网络的切换方法及装置 |
CN112511312B (zh) * | 2020-11-23 | 2023-10-17 | 北京微芯区块链与边缘计算研究院 | 一种可组装的共识方法及系统 |
CN112822247B (zh) * | 2020-12-31 | 2023-04-07 | 新奥数能科技有限公司 | 系统异步通讯方法、装置、电子设备和计算机可读介质 |
CN112398956B (zh) * | 2021-01-20 | 2021-04-13 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN113138853A (zh) * | 2021-04-09 | 2021-07-20 | 浙商银行股份有限公司 | 区块链系统自适应服务降级方法、设备及存储介质 |
CN113761062A (zh) * | 2021-08-26 | 2021-12-07 | 浙商银行股份有限公司 | 一种自适应共识算法切换方法、设备及存储介质 |
CN114296831A (zh) * | 2021-12-30 | 2022-04-08 | 迅鳐成都科技有限公司 | 区块链共识算法动态加载方法、装置、系统及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018112074A1 (en) * | 2016-12-14 | 2018-06-21 | Ocient Llc | System and method for utilizing a designated leader within a database management system |
US10102265B1 (en) * | 2017-04-12 | 2018-10-16 | Vijay K. Madisetti | Method and system for tuning blockchain scalability for fast and low-cost payment and transaction processing |
CN109688012A (zh) * | 2018-12-29 | 2019-04-26 | 杭州趣链科技有限公司 | 一种联盟链节点热备切换的方法 |
CN111327414A (zh) * | 2020-01-20 | 2020-06-23 | 布比(北京)网络技术有限公司 | 一种区块链共识方法、系统及计算机存储介质、电子设备 |
CN111461887A (zh) * | 2020-04-01 | 2020-07-28 | 杭州溪塔科技有限公司 | 一种区块链的共识处理方法、装置和电子设备 |
-
2020
- 2020-07-27 CN CN202010735422.9A patent/CN111767347B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018112074A1 (en) * | 2016-12-14 | 2018-06-21 | Ocient Llc | System and method for utilizing a designated leader within a database management system |
US10102265B1 (en) * | 2017-04-12 | 2018-10-16 | Vijay K. Madisetti | Method and system for tuning blockchain scalability for fast and low-cost payment and transaction processing |
CN109688012A (zh) * | 2018-12-29 | 2019-04-26 | 杭州趣链科技有限公司 | 一种联盟链节点热备切换的方法 |
CN111327414A (zh) * | 2020-01-20 | 2020-06-23 | 布比(北京)网络技术有限公司 | 一种区块链共识方法、系统及计算机存储介质、电子设备 |
CN111461887A (zh) * | 2020-04-01 | 2020-07-28 | 杭州溪塔科技有限公司 | 一种区块链的共识处理方法、装置和电子设备 |
Non-Patent Citations (1)
Title |
---|
区块链共识算法研究综述;郑敏等;《信息网络安全》;20190731(第9期);第8-24页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111767347A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111767347B (zh) | 共识算法的切换方法、装置、节点设备及存储介质 | |
CN111782275B (zh) | 基于区块链的交易处理方法及装置、电子设备 | |
CN109598504B (zh) | 基于区块链的交易处理方法及装置、电子设备 | |
CN111625593B (zh) | 基于区块链的数据处理方法、装置、计算机设备 | |
CN110661658B (zh) | 一种区块链网络的节点管理方法、装置及计算机存储介质 | |
CN111010382A (zh) | 在区块链网络中处理数据请求的方法和装置 | |
CN110569251A (zh) | 一种数据处理方法、相关设备及计算机可读存储介质 | |
EP4332870A1 (en) | Transaction data processing method and apparatus, computer device and storage medium | |
CN110602108B (zh) | 基于区块链网络的数据通信方法、装置、设备及存储介质 | |
CN110730225A (zh) | 基于区块链的物联网的数据处理方法、物联网及存储介质 | |
CN111698315B (zh) | 针对区块的数据处理方法、数据处理装置及计算机设备 | |
CN107423942B (zh) | 一种业务流转的方法及装置 | |
CN111489256A (zh) | 用于多链区块链系统中的跨链处理方法、设备及系统 | |
CN111400112A (zh) | 分布式集群的存储系统的写入方法、装置及可读存储介质 | |
CN111314172A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN115131022B (zh) | 基于区块链的数字资产交易方法、装置、设备及介质 | |
CN111899019A (zh) | 一种黑名单多方交叉验证和共享的方法及系统 | |
WO2017067374A1 (zh) | 一种消息推送方法及推送服务器 | |
CN113641391B (zh) | 升级区块链系统的方法、装置及终端设备 | |
CN113886495A (zh) | 验证区块链数据的方法、装置、电子设备和存储介质 | |
CN111526165B (zh) | 联盟链中的共识方法和系统 | |
CN113259326A (zh) | 基于联盟链网络的共识优化方法、装置和计算机设备 | |
CN108173892B (zh) | 云端镜像操作方法和装置 | |
JP2024506093A (ja) | クロスチェーントランザクション処理方法と装置、電子機器及びコンピュータプログラム | |
CN111683164B (zh) | 一种ip地址的配置方法及vpn服务系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40031360 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |