一种跨进程可扩展的共识方法及系统与流程

    专利2022-07-07  84


    本发明涉及区块链技术领域,尤其涉及一种跨进程可扩展的共识方法及系统。



    背景技术:

    在区块链中,由于其去中心化的设计,节点是各处分散且平行的,所以必须设计一套制度,来维护系统的运作顺序与公平性,从而统一区块链的版本,并奖励提供资源维护区块链的使用者,以及惩罚恶意的危害者。这样的制度,必须依赖某种方式来证明,是由谁取得了一个区块链的打包权(或称记帐权),并且可以获取打包这一个区块的奖励;又或者是谁意图进行危害,就会获得一定的惩罚,这就是共识机制。在区块链网络中,由于应用场景的不同,往往需要采用不同的共识算法。

    然而,现有区块链的共识处理方法,不支持跨进程的部署,共识算法模块和区块链系统仍需在一个进程内启动运行针对多个不同的共识算法,多个共识算法会消耗大量cpu和网络io资源;同时,每类共识算法需要设置一个对应的共识接口,导致接口过多。由于每类共识算法使用一套不同的接口,如果支持多种共识算法,则系统内接口定义数量是所有共识算法接口数的总和,维护不便,以致于区块链系统的流程不统一,系统复杂度高。由于各类共识算法使用各自的接口,导致区块链系统调度共识流程过程中会存在差异,针对每类共识算法还要有配套的共识调度流程对应,系统的代码量和复杂度上升。

    因此,现在亟需一种跨进程可扩展的共识方法及系统来解决上述问题。



    技术实现要素:

    针对现有技术存在的问题,本发明实施例提供一种跨进程可扩展的共识方法及系统。

    第一方面,本发明实施例提供了一种跨进程可扩展的共识方法,包括:

    与当前轮次进行区块共识的共识装置进行通信,并为所述共识装置执行的共识过程提供相应的通信接口,所述共识过程具体为:

    根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,并获取所述提案节点的提案通知和所述候选节点的提案区块信息;

    根据所述提案通知和提案区块生成规则,生成提案区块;

    根据所述提案区块信息和候选区块生成规则,生成候选区块;

    根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块;

    对所述确认区块进行保存,并生成新区块信号,以进行下一轮次的区块共识;

    其中,所述提案节点选举规则、所述提案区块生成规则、所述选区块生成规则和所述预设共识规则是根据区块共识当前轮次的共识算法确定的。

    进一步地,所述共识算法包括竞争性共识算法和合作性共识算法。

    进一步地,所述根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,包括:

    根据区块共识当前轮次的区块信号,确定当前轮次待组装的共识算法;

    通过提案节点选举接口与区块链系统进行通信,根据所述共识算法和所述提案节点选举规则,基于区块链系统进行提案节点选举,若所述共识算法为竞争性共识算法,则将所有节点作为提案节点;

    若所述共识算法为合作性共识算法,则通过预设选举方式选举提案节点;

    将未选举为提案节点的其他节点作为候选节点。

    进一步地,所述根据所述提案通知和提案区块生成规则,生成提案区块,包括:

    根据所述提案通知,确定当前轮次待组装的共识算法;

    通过提案区块生成接口与区块链系统进行通信,根据所述共识算法和所述提案区块生成规则,基于区块链系统生成提案区块,其中,所述提案区块生成规则具体为:

    若所述共识算法为竞争性共识算法,则通过进行竞争性共识运算操作,生成提案区块;

    若所述共识算法为合作性共识算法,则通过智能合约对生成的区块进行验证,将验证通过的区块作为提案区块。

    进一步地,所述根据所述提案区块信息和候选区块生成规则,生成候选区块,包括:

    根据所述提案区块信息,确定当前轮次待组装的共识算法;

    通过候选区块验证接口与区块链系统进行通信,根据所述共识算法和所述候选区块生成规则,基于区块链系统生成候选区块,其中,所述候选区块生成规则具体为:

    若所述共识算法为竞争性共识算法,则对非提案节点的区块进行验证,将验证通过的区块作为候选区块;

    若所述共识算法为合作性共识算法,判断非提案节点是否为当前轮次提案者发出的,若是,则对非提案节点的区块进行验证,并将验证通过的区块作为候选区块。

    进一步地,所述根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块,包括:

    通过共识接口与区块链系统进行通信,根据所述预设共识规则和当前轮次待组装的共识算法,基于区块链系统,将所述提案区块或所述候选区块作为目标提案区块进行共识,所述预设共识规则具体为:

    若所述共识算法为竞争性共识算法,则对所述目标提案区块进行有效性验证,若验证通过,得到共识后的确认区块;

    若所述共识算法为合作性共识算法,则验证所述目标提案区块的合法性,并对合法性验证通过的目标提案区块进行投票,若投票结果达到预设共识条件,得到共识后的确认区块。

    进一步地,所述方法还包括:

    与当前轮次进行区块共识的多个共识装置进行通信,并为每个共识装置执行的共识过程提供相应的通信接口。

    第二方面,本发明实施例提供了一种跨进程可扩展的共识系统,包括:

    网络模块,用于与当前轮次进行区块共识的共识装置进行通信,并为所述共识装置的各个模块提供相应的通信接口,所述共识装置具体包括:

    提案节点选举模块,用于根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,并获取所述提案节点的提案通知和所述候选节点的提案区块信息;

    提案模块,用于根据所述提案通知和提案区块生成规则,生成提案区块;

    监听提案模块,用于根据所述提案区块信息和候选区块生成规则,生成候选区块;

    共识模块,用于根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块;

    提交模块,用于对所述确认区块进行保存,并生成新区块信号,以进行下一轮次的区块共识;

    其中,所述提案节点选举规则、所述提案区块生成规则、所述选区块生成规则和所述预设共识规则是根据区块共识当前轮次的共识算法确定的。

    第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。

    第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。

    本发明实施例提供的一种跨进程可扩展的共识方法及系统,在需要扩展不同类型的共识算法时,直接部署相应的共识装置,与区块链系统进行网络对接,可以不占用区块链系统的资源,且各共识算法在独立运行环境中部署,互不干扰,保障资源使用。同时,基于一套接口,区块链系统可以使用标准流程即可支持不同共识算法的切换。

    附图说明

    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

    图1为本发明实施例提供的跨进程可扩展的共识方法的流程示意图;

    图2为本发明实施例提供的区块链系统和共识装置中共识算法的对接示意图;

    图3为本发明实施例提供的跨进程可扩展的共识系统的结构示意图;

    图4为本发明实施例提供的电子设备结构示意图。

    具体实施方式

    为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

    现有区块链的共识方法,不支持跨进程的部署,共识算法模块和区块链系统仍需在一个进程内启动运行针对多个不同的共识算法,多个共识算法会消耗大量cpu和网络io资源;同时,对于多个不同的共识算法,需要设置多个对应的共识接口,导致接口过多。每类共识算法使用一套不同的接口,如果支持多种共识算法,则系统内接口定义数量是所有共识算法接口数的总和,维护不便,以致于区块链系统的流程不统一,系统复杂度高。而对于tendermint算法,该算法模块是固定的,仅支持应用的可插拔,不支持共识算法的扩展和可插拔。

    图1为本发明实施例提供的跨进程可扩展的共识算法的流程示意图,如图1所示,本发明实施例提供了一种跨进程可扩展的共识方法,包括:

    步骤100,与当前轮次进行区块共识的共识装置进行通信,并为所述共识装置执行的共识过程提供相应的通信接口,所述共识过程具体为步骤101至步骤105。

    在本发明实施例中,将区块链系统与共识装置进行通信交互,实现与区块链系统间的解耦。为了实现共识装置可扩展可跨进程通信的特性,本发明实施例将共识装置与区块链系统之间的接口进行标准化设置,实现不同类型共识算法可使用同一套接口与区块链系统对接,区块链系统基于统一的流程即可适配不同的共识算法处理。图2为本发明实施例提供的区块链系统和共识装置中共识算法的对接示意图,可参考图2所示,基于标准的网络交互接口,区块链系统可以同时与多个不同类型的共识算法对接,实现多条区块链使用不同共识算法,且资源隔离,互不影响的特性;同时,共识算法作为独立进程部署,如果需要支持新的共识算法,则部署新的共识进程,易于扩展。

    步骤101,根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,并获取所述提案节点的提案通知和所述候选节点的提案区块信息。

    在本发明实施例中,首先确定共识轮次(本轮次)区块共识的提案节点,即需要产生新区块的节点,其中,共识轮次是指每个轮次由区块链系统各节点参与,按照预定规则确认出合法的区块。在确认本轮次的提案节点后,将提案节点和候选节点(未选举为提案节点的节点)分别进行相应后续处理。其中,根据共识算法的不同,每个轮次的提案节点可以是一个或多个(竞争性共识)。

    步骤102,根据所述提案通知和提案区块生成规则,生成提案区块。

    在本发明实施例中,接收提案节点对应的提案通知,从而生成新的提案区块,以将新的提案区块用于后续的共识流程。在本发明实施例中,需调用区块链系统产生新区块的接口,得到合法的区块及交易集合数据。

    步骤103,根据所述提案区块信息和候选区块生成规则,生成候选区块。

    在本发明实施例中,通过监听其他节点(候选节点)产生并广播的提案区块信息,并调用区块链系统的区块校验接口,对生成的候选区块进行区块及交易合法性的校验,如果校验通过,则将候选区块用于后续的共识流程。

    步骤104,根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块;

    步骤105,对所述确认区块进行保存,并生成新区块信号,以进行下一轮次的区块共识;

    其中,所述提案节点选举规则、所述提案区块生成规则、所述选区块生成规则和所述预设共识规则是根据区块共识当前轮次的共识算法确定的。需要说明的是,在本发明实施例中,在每一轮次的共识过程中,可根据共识信号确定对应的共识算法和本轮次所要使用的共识规则,其中,共识信号中包含有共识算法的类型和提案节点的选举方式等。

    在本发明实施例中,在获取到提案区块或候选区块后,按照预设共识规则,对该区块进行区块的确认,如果确认通过,调用区块链系统的存储区块接口将确认区块的信息进行保存,并发起打包新区块信号,以开启下一轮共识。

    本发明实施例提供的跨进程可扩展的共识方法,在需要扩展不同类型的共识算法时,直接部署相应的共识装置,与区块链系统进行网络对接,可以不占用区块链系统的资源,且各共识算法在独立运行环境中部署,互不干扰,保障资源使用。同时,基于一套接口,区块链系统可以使用标准流程即可支持不同共识算法的切换。

    在上述实施例的基础上,所述共识算法包括竞争性共识算法和合作性共识算法。

    在本发明实施例中,基于标准流程以及各步骤间协作,可适配实现多种类型共识算法。具体地,在遵守内部接口的前提下,可根据不同的共识算法扩展实现,每个步骤中的规则可以根据共识算法的特性要求进行组装,构建为一个共识装置。各步骤的具体实现,存在一些相互依赖的特性,如基于竞争性共识算法的提案节点选举,不能适配合作性共识算法的共识过程。该依赖关系需要进行管理和维护,避免在各步骤规则的组装过程中产生不兼容情况。同样的,本轮次的共识算法与区块链系统之间的交互接口是标准定义的。因此,本发明实施例提供可以基于一套接口与区块链系统进行集成,不存在兼容适配问题,从而实现了共识算法可插拔的特性。现对本发明实施例中的两类共识算法进行解释,一种为竞争性共识算法,是指各参与方按照一定规则(工作量证明等)竞争成为每一轮次进行竞争性共识运算,先运算出正确结果节点的为胜者,得到这一轮次的区块决定权;另一种为合作性共识算法,是指在此类共识算法中,各参与方合作协商出每一轮次的执行数据均需获得一定比例的票数,所以在一个轮次中只会产生全网唯一的共识结果,该类共识还可以细分为拜占庭容错类共识算法和一致性算法,其中一致性算法流程简单,可识别提案节点作恶的情况,即仅保证数据一致性,无法保证数据安全性。本发明实施例根据两类共识算法进行扩展,在提案节点选举、候选节点监听、提案区块生成以及共识过程等步骤中进行自适应调整,从而实现共识算法跨进程可扩展的效果。

    在上述实施例的基础上,所述根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,包括:

    根据区块共识当前轮次的区块信号,确定当前轮次待组装的共识算法;

    通过提案节点选举接口与区块链系统进行通信,根据所述共识算法和所述提案节点选举规则,基于区块链系统进行提案节点选举,若所述共识算法为竞争性共识算法,则将所有节点作为提案节点;

    若所述共识算法为合作性共识算法,则通过预设选举方式选举提案节点;

    将未选举为提案节点的其他节点作为候选节点。

    在本发明实施例中,通过提案节点选举接口与区块链系统进行通信,基于当前轮次的区块信号,提案节点的选举根据不同的共识算法,可以有多种实现版本,例如,对于工作量证明(proofofwork,简称pow)类的竞争性共识算法,每个节点均可以提案,无需选举,可直接执行后续步骤,从而发起提案操作;对于拜占庭容错类的合作性共识算法,按照预设选举方式选举确定提案者,该预设选举方式包括但不限于:轮流、预设期限或随机等选举方式,具体为,每个共识轮次选举更换提案节点、每个共识轮次无需投票按预设期限确定提案节点、连续多个共识轮次才更换提案节点;对于一致性算法,如果发现提案节点超时未提案或异常,则重新进行提案者选举,如果提案节点没有产生故障,则下一轮次依然是该节点进行提案。

    在上述实施例的基础上,所述根据所述提案通知和提案区块生成规则,生成提案区块,包括:

    根据所述提案通知,确定当前轮次待组装的共识算法;

    通过提案区块生成接口与区块链系统进行通信,根据所述共识算法和所述提案区块生成规则,基于区块链系统生成提案区块,其中,所述提案区块生成规则具体为:

    若所述共识算法为竞争性共识算法,则通过进行竞争性共识运算操作,生成提案区块;

    若所述共识算法为合作性共识算法,则通过智能合约对生成的区块进行验证,将验证通过的区块作为提案区块。

    在本发明实施例中,通过提案通知确定当前轮次所需的共识算法,然后针对不同类型的共识算法,通过提案区块生成接口与区块链系统进行通信,采取相应的提案区块生成方案。例如,对于pow类的竞争性共识算法,该步骤除了产生候选区块外,还需进行竞争性共识运算操作,其中,竞争性共识运算操作,是指在竞争性共识中,进行运算并尝试得到满足预置规则的操作,包括但不限于:难度计算、资源竞争和区块完整性计算,如,pow共识算法的挖矿运算。如果竞争性共识运算任务完成,则将完成的提案区块用于后续的共识步骤,需要说明的是,在本发明实施例中,如果基于候选区块生成规则的步骤生成的候选区块,先于本步骤生成的提案区块且通过共识验证,则暂停当前基于提案区块生成规则的运算操作。对于拜占庭容错类的合作性共识算法,首先调用区块链系统的产生提案区块接口,获得一个经过智能合约预执行的合法区块,从而对该区块进行后续共识步骤;对于一致性算法,处理流程与拜占庭容错类的合作性共识算法一致。

    在上述实施例的基础上,所述根据所述提案区块信息和候选区块生成规则,生成候选区块,包括:

    根据所述提案区块信息,确定当前轮次待组装的共识算法;

    通过候选区块验证接口与区块链系统进行通信,根据所述共识算法和所述候选区块生成规则,基于区块链系统生成候选区块,其中,所述候选区块生成规则具体为:

    若所述共识算法为竞争性共识算法,则对非提案节点的区块进行验证,将验证通过的区块作为候选区块;

    若所述共识算法为合作性共识算法,判断非提案节点是否为当前轮次提案者发出的,若是,则对非提案节点的区块进行验证,并将验证通过的区块作为候选区块。

    在本发明实施例中,对于pow类的竞争性共识算法,每个节点均可以提案,需持续监听其他节点(非提案节点)广播的提案区块,并通过候选区块验证接口与区块链系统进行通信,调用区块链接口验证区块交易合法性,如果区块合法性校验通过,则将该提案区块用于后续的共识步骤;如果合法性校验不通过,继续监听其他节点的候选区块。对于拜占庭容错类的合作性共识算法,如果本节点是提案节点,则拒绝该提案;如果是非提案节点,接收到广播的候选区块,先判断是否为本轮次提案者发出的,再调用区块链接口验证区块交易合法性,发送验证结果至后续的共识步骤;对于一致性算法,处理流程与拜占庭容错类合作性共识算法一致。

    在上述实施例的基础上,所述根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块,包括:

    通过共识接口与区块链系统进行通信,根据所述预设共识规则和当前轮次待组装的共识算法,基于区块链系统,将所述提案区块或所述候选区块作为目标提案区块进行共识,所述预设共识规则具体为:

    若所述共识算法为竞争性共识算法,则对所述目标提案区块进行有效性验证,若验证通过,得到共识后的确认区块;

    若所述共识算法为合作性共识算法,则验证所述目标提案区块的合法性,并对合法性验证通过的目标提案区块进行投票,若投票结果达到预设共识条件,得到共识后的确认区块。

    在本发明实施例中,通过共识接口与区块链系统进行通信,并基于当前轮次所需的共识算法,对区块进行共识,对于pow类的竞争性共识算法,在接收到提案区块或候选区块后,对其进行有效性校验,包括但不限于:区块签名校验、区块完整性校验和区块共识算法有效性交易(如竞争性共识运算结果是否正确),如果校验通过,则将验证通过的确认区块进行保存;否则,继续执行上述实施例中基于竞争性共识运算操作的提案区块生成步骤。

    对于拜占庭容错类合作性共识算法,如果区块是不合法的(提案区块的或候选区块对应的验证通过信息),则开始共识投票并投反对票;如果区块合法,按照预定规则进行投票、投票广播以及其他节点投票消息收集和验证操作,如果投票确认条件达成,则将确认区块进行保存;如果投票条件未达成,则继续本阶段处理。对于一致性算法,如果区块是不合法的,则投反对票;如果区块合法,非提案节点对提案区块进行预设规则投票确认后,并接受提案节点确认消息后,将确认区块进行保存;如果区块合法,提案节点收集到多于预设规则(满足一定量的投票数量)的赞成票后,将确认区块进行保存;如果未达成,则重新进行本阶段操作。在本发明实施例中,还可调用区块链系统中的共识状态查询接口和中断共识接口,对共识过程进行相应操作。

    在上述实施例的基础上,所述方法还包括:

    与当前轮次进行区块共识的多个共识装置进行通信,并为每个共识装置执行的共识过程提供相应的通信接口。

    在本发明实施例中,在进行多进程的共识时,可以设置多个上述实施例提供的共识装置,每个共识装置可采用不同类型的共识算法和区块链网络进行网络通信,从而实现多种共识算法多进程部署的可扩展性方案。

    图3为本发明实施例提供的跨进程可扩展的共识系统的结构示意图,如图3所示,本发明实施例提供了一种跨扩展可扩展的共识系统,包括:网络模块300,用于与当前轮次进行区块共识的共识装置301进行通信,并为所述共识装置301的各个模块提供相应的通信接口,所述共识装置301具体包括提案节点选举模块3011、提案模块3012、监听提案模块3013、共识模块3014和提交模块3015,其中,提案节点选举模块3011用于根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,并获取所述提案节点的提案通知和所述候选节点的提案区块信息;提案模块3012用于根据所述提案通知和提案区块生成规则,生成提案区块;监听提案模块3013用于根据所述提案区块信息和候选区块生成规则,生成候选区块;共识模块3014用于根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块;提交模块3015用于对所述确认区块进行保存,并生成新区块信号,以进行下一轮次的区块共识;其中,所述提案节点选举规则、所述提案区块生成规则、所述选区块生成规则和所述预设共识规则是根据区块共识当前轮次的共识算法确定的。

    在本发明实施例中,网络模块300作为共识装置301与区块链系统之间的交互通信模块,提供具有网络通信的能力的各种通信接口。通信接口包括但不限于:区块链系统提供的提案节点选举接口、提案区块生成接口、候选区块验证接口、共识接口、区块存储接口、中断提案区块接口和异常处理接口等,其中,共识接口还包括共识状态查询接口和中断共识接口等。

    通过上述各个通信接口,使得区块链系统通过网络模块300和提案节点选举模块3011、提案模块3012、监听提案模块3013、共识模块3014和提交模块3015进行交互,例如,接收区块链系统调用的中断共识接口,结束本轮次共识操作;接收区块链系统的共识状态查询接口,返回处理轮次、是否为提案节点和共识投票情况等信息到共识装置301;调用区块链系统的中断提案区块接口,停止当前提案区块操作;调用区块链系统的异常处理接口,告知其共识流程存在不可预知故障,区块链系统进行相应的异常处理。

    本发明实施例提供的跨进程可扩展的共识系统,在需要扩展不同类型的共识算法时,直接部署相应的共识装置,与区块链系统进行网络对接,可以不占用区块链系统的资源,且各共识算法在独立运行环境中部署,互不干扰,保障资源使用。同时,基于一套接口,区块链系统可以使用标准流程即可支持不同共识算法的切换。

    本发明实施例提供的系统是用于执行上述各方法实施例的,具体流程和详细内容请参照上述实施例,此处不再赘述。

    图4为本发明实施例提供的电子设备结构示意图,参照图4,该电子设备可以包括:处理器(processor)401、通信接口(communicationsinterface)402、存储器(memory)403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信。处理器401可以调用存储器403中的逻辑指令,以执行如下方法:与当前轮次进行区块共识的共识装置进行通信,并为所述共识装置执行的共识过程提供相应的通信接口,所述共识过程具体为:根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,并获取所述提案节点的提案通知和所述候选节点的提案区块信息;根据所述提案通知和提案区块生成规则,生成提案区块;根据所述提案区块信息和候选区块生成规则,生成候选区块;根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块;对所述确认区块进行保存,并生成新区块信号,以进行下一轮次的区块共识;其中,所述提案节点选举规则、所述提案区块生成规则、所述选区块生成规则和所述预设共识规则是根据区块共识当前轮次的共识算法确定的。

    此外,上述的存储器403中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

    另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的跨进程可扩展的共识算法,例如包括:与当前轮次进行区块共识的共识装置进行通信,并为所述共识装置执行的共识过程提供相应的通信接口,所述共识过程具体为:根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,并获取所述提案节点的提案通知和所述候选节点的提案区块信息;根据所述提案通知和提案区块生成规则,生成提案区块;根据所述提案区块信息和候选区块生成规则,生成候选区块;根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块;对所述确认区块进行保存,并生成新区块信号,以进行下一轮次的区块共识;其中,所述提案节点选举规则、所述提案区块生成规则、所述选区块生成规则和所述预设共识规则是根据区块共识当前轮次的共识算法确定的。

    以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

    通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

    最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。


    技术特征:

    1.一种跨进程可扩展的共识方法,其特征在于,包括:

    与当前轮次进行区块共识的共识装置进行通信,并为所述共识装置执行的共识过程提供相应的通信接口,所述共识过程具体为:

    根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,并获取所述提案节点的提案通知和所述候选节点的提案区块信息;

    根据所述提案通知和提案区块生成规则,生成提案区块;

    根据所述提案区块信息和候选区块生成规则,生成候选区块;

    根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块;

    对所述确认区块进行保存,并生成新区块信号,以进行下一轮次的区块共识;

    其中,所述提案节点选举规则、所述提案区块生成规则、所述候选区块生成规则和所述预设共识规则是根据区块共识当前轮次的共识算法确定的。

    2.根据权利要求1所述的跨进程可扩展的共识方法,其特征在于,所述共识算法包括竞争性共识算法和合作性共识算法。

    3.根据权利要求2所述的跨进程可扩展的共识方法,其特征在于,所述根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,包括:

    根据区块共识当前轮次的区块信号,确定当前轮次待组装的共识算法;

    通过提案节点选举接口与区块链系统进行通信,根据所述共识算法和所述提案节点选举规则,基于区块链系统进行提案节点选举,若所述共识算法为竞争性共识算法,则将所有节点作为提案节点;

    若所述共识算法为合作性共识算法,则通过预设选举方式选举提案节点;

    将未选举为提案节点的其他节点作为候选节点。

    4.根据权利要求2所述的跨进程可扩展的共识方法,其特征在于,所述根据所述提案通知和提案区块生成规则,生成提案区块,包括:

    根据所述提案通知,确定当前轮次待组装的共识算法;

    通过提案区块生成接口与区块链系统进行通信,根据所述共识算法和所述提案区块生成规则,基于区块链系统生成提案区块,其中,所述提案区块生成规则具体为:

    若所述共识算法为竞争性共识算法,则通过进行竞争性共识运算操作,生成提案区块;

    若所述共识算法为合作性共识算法,则通过智能合约对生成的区块进行验证,将验证通过的区块作为提案区块。

    5.根据权利要求2所述的跨进程可扩展的共识方法,其特征在于,所述根据所述提案区块信息和候选区块生成规则,生成候选区块,包括:

    根据所述提案区块信息,确定当前轮次待组装的共识算法;

    通过候选区块验证接口与区块链系统进行通信,根据所述共识算法和所述候选区块生成规则,基于区块链系统生成候选区块,其中,所述候选区块生成规则具体为:

    若所述共识算法为竞争性共识算法,则对非提案节点的区块进行验证,将验证通过的区块作为候选区块;

    若所述共识算法为合作性共识算法,判断非提案节点是否为当前轮次提案者发出的,若是,则对非提案节点的区块进行验证,并将验证通过的区块作为候选区块。

    6.根据权利要求2所述的跨进程可扩展的共识方法,其特征在于,所述根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块,包括:

    通过共识接口与区块链系统进行通信,根据所述预设共识规则和当前轮次待组装的共识算法,基于区块链系统,将所述提案区块或所述候选区块作为目标提案区块进行共识,所述预设共识规则具体为:

    若所述共识算法为竞争性共识算法,则对所述目标提案区块进行有效性验证,若验证通过,得到共识后的确认区块;

    若所述共识算法为合作性共识算法,则验证所述目标提案区块的合法性,并对合法性验证通过的目标提案区块进行投票,若投票结果达到预设共识条件,得到共识后的确认区块。

    7.根据权利要求1所述的跨进程可扩展的共识方法,其特征在于,所述方法还包括:

    与当前轮次进行区块共识的多个共识装置进行通信,并为每个共识装置执行的共识过程提供相应的通信接口。

    8.一种跨进程可扩展的共识系统,其特征在于,包括:

    网络模块,用于与当前轮次进行区块共识的共识装置进行通信,并为所述共识装置的各个模块提供相应的通信接口,所述共识装置具体包括:

    提案节点选举模块,用于根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次待进行区块共识的提案节点和候选节点,并获取所述提案节点的提案通知和所述候选节点的提案区块信息;

    提案模块,用于根据所述提案通知和提案区块生成规则,生成提案区块;

    监听提案模块,用于根据所述提案区块信息和候选区块生成规则,生成候选区块;

    共识模块,用于根据预设共识规则,对所述提案区块或所述候选区块进行共识,得到共识后的确认区块;

    提交模块,用于对所述确认区块进行保存,并生成新区块信号,以进行下一轮次的区块共识;

    其中,所述提案节点选举规则、所述提案区块生成规则、所述选区块生成规则和所述预设共识规则是根据区块共识当前轮次的共识算法确定的。

    9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述跨进程可扩展的共识方法的步骤。

    10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述跨进程可扩展的共识方法的步骤。

    技术总结
    本发明实施例提供一种跨进程可扩展的共识方法及系统,该方法包括:与共识装置进行通信,并为共识装置执行的共识过程提供相应的通信接口;根据区块共识当前轮次的区块信号和提案节点选举规则,确定当前轮次的提案节点和候选节点,并获取提案节点的提案通知和候选节点的提案区块信息;根据提案通知和提案区块生成规则,生成提案区块;根据提案区块信息和候选区块生成规则,生成候选区块;根据预设共识规则,对提案区块或候选区块进行共识,得到共识后的确认区块;对确认区块进行保存,并生成新区块信号,以进行下一轮次的区块共识。本发明实施例可不占用区块链系统的资源,且各共识算法在独立运行环境中部署,保障资源使用。

    技术研发人员:郭京京
    受保护的技术使用者:北京微芯区块链与边缘计算研究院
    技术研发日:2020.11.23
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-7427.html

    最新回复(0)