基于权重的区块链共识方法、系统、存储介质及电子设备
技术领域
本发明涉及区块链共识机制技术领域,特别涉及一种基于权重的区块链共识方法、系统、存储介质及电子设备。
背景技术
区块链具有分布式自治、可信透明、安全可靠、时序不可篡改等特性较好契合能源互联网所具有的设备智能、多能协同、供需分散等特点,应用于各个领域,以能源互联网为例,能源互联网作为一种泛能源系统,通过电力技术、数字化技术、信息技术等实现热能系统、电力系统、燃气系统等多能系统之间的互联互通,有效推动能量流、信息流和价值流深度融合,已成为能源生产、传输、存储到消费整个产业链的重要支撑基础设施,然而,能源互联网中数据传输损耗大、传输效率低下、交易成本高、交易可信性低、监管难度大等问题使得其落地应用面临诸多挑战。两者之间的深度融合即能源区块链,为解决这些问题提供了可能性。
发明人对现有的能源区块链的共识方法进行研究发现,能源区块链作为一种共享的分布式数据库技术,其中各个节点对能源区块链的影响是不同的,但现有技术中对每一个节点相同对待,最终共识结果的反馈的准确度偏低。
发明内容
有鉴于此,本发明提供了基于权重的区块链共识方法、装置、存储介质及电子设备,用以解决现有技术中能源区块链作为一种共享的分布式数据库技术,其中各个节点对能源区块链的影响是不同的,但现有技术中对每一个节点相同对待,最终共识结果的反馈的准确度偏低的问题。
具体方案如下:
一种基于权重的区块链共识方法,包括:
在目标块链的各个共识节点中选取领导主节点;
当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证;
依据每一个其余共识节点的权重和预设的投票数,确定与其对应的共识结果的目标票数,将所述目标票数反馈给所述领导主节点;
当反馈完成时,若共识结果的总票数大于预设的判定阈值,则判定达成共识。
上述的方法,可选的,还包括:
创建与所述交易请求对应的目标区块;
将所述目标区块添加到所述目标区块链中。
上述的方法,可选的,还包括:
对所述领导主节点的反馈过程进行计时;
当计时时长达到预设的反馈时长且所述领导主节点未反馈时,判定所述领导主节点失效;
在所述目标区块链中重新选取领导主节点。
上述的方法,可选的,在目标区块链的各个节点中选取领导主节点,包括:
获取所述目标区块链中各个共识节点的产能,确定所述目标区块链的总产能;
依据各个产能和所述总产能,确定各个共识节点的权重;
将各个共识节点中权重最高的共识节点作为领导主节点。
上述的方法,可选的,当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证,包括:
将交易请求传递给所述领导主节点进行广播;
将与所述交易请求对应的预备消息发送给所述目标区块链中的各个其余节点进行验证。
一种基于权重的区块链共识系统,包括:
选取模块,用于在能源区块链的各个共识节点中选取领导主节点;
验证模块,用于当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证;
反馈模块,用于依据每一个其余共识节点的权重和预设的投票数,确定与其对应的共识结果的目标票数,将所述目标票数反馈给所述领导主节点;
第一判定模块,用于当反馈完成时,若共识结果的总票数大于预设的判定阈值,则判定达成共识。
上述的系统,可选的,还包括:
计时模块,用于对所述领导主节点的反馈过程进行计时;
第二判定模块,当计时时长达到预设的反馈时长且所述领导主节点未反馈时,判定所述领导主节点失效;
重选模块,用于在所述目标区块链中重新选取领导主节点。
上述的系统,可选的,所述验证模块包括:
广播单元,用于将交易请求传递给所述领导主节点进行广播;
验证单元,用于将与所述交易请求对应的预备消息发送给所述目标区块链中的各个其余节点进行验证。
一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在的设备执行上述的基于权重的区块链共识方法。
一种电子设备,包括存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行上述的基于权重的区块链共识方法。
与现有技术相比,本发明包括以下优点:
本发明公开了一种基于权重的区块链共识方法,包括:在目标块链的各个共识节点中选取领导主节点;当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证;依据每一个其余共识节点的权重和预设的投票数,确定与其对应的共识结果的目标票数,将所述目标票数反馈给所述领导主节点;当反馈完成时,若共识结果的总票数大于预设的判定阈值,则判定达成共识。上述的方法,由于为每一个共识节点分配权重,令各个共识节点对所述目标区块链的影响是不同的,权重越高影响越大,提高了最终共识结果的反馈的准确度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种能源交易场景图;
图2为本发明提供的一种能源区块链示意图;
图3为本发明提供的一种基于权重的区块链共识方法流程图;
图4为本发明提供的一种区块链结构示意图;
图5为本发明提供的一种基于权重的区块链共识方法又一流程图;
图6为本发明提供的一种拜占庭容错投票共识流程图;
图7为本发明提供的一种能源区块链操作流程图;
图8为本发明提供的一种基于权重的区块链共识系统结构框图;
图9为本发明提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本发明实施例提供了一种基于权重的区块链共识方法,所述方法可以应用在能源区块链或者其它行业与区块链的融合过程中,本发明实施例中,以能源区块链为例进行说明,所述能源区块链可以为电量交易平台中,实现可追溯、不可篡改、多中心化的交易信息验证。能源区块链场景示意图如图1所示,场景中涉及的实体有能源厂、购买者、发生金钱交易时可能还会涉及到银行。购买者在多个能源厂中选择可以信任且能满足需求的节点进行交易,交易发生后生成一份账单,需要提供一个能源区块链来解决谁来记账、怎么记账、怎么校验信息的准确性等问题。基于上述场景的能源区块链如图2所示,链中主要包含三种节点。共识节点由能源厂实体构成,参与记账与校验的过程。共识节点包含领导状态与一般状态,初始状态为一般状态,当共识节点被选为领导主节点时状态变为领导状态。状态机制的设置是选择领导主节点的基础,可以帮助系统达到记账的目的。备份节点不参与信息校验,只负责对数据进行备份,目的是方便政府监管部门的监管。网管节点是一个轻量级的网管系统,可以实现协议的转换。网管节点提供API增加联盟连的可扩展性。参与者可以通过网关节点将交易数据应用在实际生活中。基于上述的能源区块链,本发明提供了一种基于权重的区块链共识方法,所述方法的执行主体可以为控制器或者处理器,所述共识方法属于投票类共识算法,投票类共识依赖于参与节点投票,典型的如实用拜占庭容错算法PBFT(Practical Byzantine Fault Tolerance),授权拜占庭容错算法dBFT(DelegatedByzantine Fault Tolerance)等。本发明面向能源区块链多能源协同应用场景,提出一种面向能源区块链的带权重实用拜占庭容错共识算法W-PBFT(Weight-Practical ByzantineFault Tolerance)。W-PBFT增加了权重机制,并且权重机制直接影响领导主节点的选取与数据校验方式,解决能源交易过程中节点记账一致性、安全性、可扩展性等问题。所述共识方法的执行流程如图3所示,包括:
S101、在目标区块链的各个共识节点中选取领导主节点;
本发明实施例中,所述目标区块链指图2所示的能源区块链,依据每一个共识节点的权重,在各个共识节点中选取领导主节点。如果共识节点被选为领导主节点那么此共识节点将获得记账权。获得记账权的共识节点负责生成区块并且将区块写入区块链中。
S102、当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证;
本发明实施例中,验证的过程需要分别在所述领导主节点和其余共识节点之间分别进行验证,若所述交易请求在所述领导主节点和/或者所述其余共识节点之间验证失败,对所述交易请求进行丢弃处理。当所述交易请求在领导主节点和所述其余共识节点之间验证成功时,对所述交易请求进行识别,得到共识结果,所述共识结果为可以为所述交易请求是否通过中的一种、两种或者其它的优选识别结果。
S103、依据每一个其余共识节点的权重和预设的投票数,确定与其对应的共识结果的目标票数,将所述目标票数反馈给所述领导主节点;
本发明实施例中,投票权是指在共识阶段共识节点表示是否验证通过校验,其中每一个共识节点的预设投票数是依据经验值或者实际情况进行确定的,每一个共识节点的权重大小是由其对应的产能决定的,其中每一个其余共识节点的目标票数为其对应的权重和预设的投票数的成绩,将每一个其余共识节点的目标票数反馈给所述领导主节点。
S104、当反馈完成时,若共识结果的总票数大于预设的判定阈值,则判定达成共识。
本发明实施例中,所述领导主节点统计每一个共识结果对应的总票数,若共识结果的总票数大于预设的判定阈值,则判定达成共识,其中,所述预设的判定阈值可以依据经验值和实际情况共同确定。
本发明实施例中,为了提高系统的容错性,增加了计时器的超时机制。当领导主节点失效导致其他节点无期限地等待请求的执行时,启动计时器。当计时时长达到预设的反馈时长且所述领导主节点未反馈时,判定所述领导主节点失效,新的领导主节点将消息向全网广播继续执行操作。
本发明公开了一种基于权重的区块链共识方法,包括:在目标块链的各个共识节点中选取领导主节点;当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证;依据每一个其余共识节点的权重和预设的投票数,确定与其对应的共识结果的目标票数,将所述目标票数反馈给所述领导主节点;当反馈完成时,若共识结果的总票数大于预设的判定阈值,则判定达成共识。上述的方法,由于为每一个共识节点分配权重,因此,各个共识节点对所述目标区块链的影响是不同的,权重越高影响越大,提高了最终共识结果的反馈的准确度。
本发明实施例中,图1所示的能源区块链交易场景中涉及不同的能源厂、不同的产能方式、不同的用户。能源厂为用户提供能源,用户为能源付费。根据场景的描述需要定义一个特殊的区块结构存储交易中所产生的信息。区块中包含区块头、交易数量、区块体。
参考图4是区块链的结构。其中,区块头中包括版本号、上一个区块哈希Hash值、默克尔Merkle根哈希、时间戳、权重等属性字段。版本号用来匹配当前软件的版本;上一个区块哈希Hash值用来链接区块结构;默克尔Merkle根哈希用来校验交易完整性;时间戳记录区块产生时间;权重表示联盟中共识节点投票重要性程度。交易数量用来统计区块体内包含的交易数。区块体内记录交易信息。其中包括交易占用的字节数、区块内存储的交易数据。交易数据中准确的记录了订单编号、交易时间、付款时间、发货时间、发货地址、购买者的信息、购买数量、购买价钱、能源设备、调度数据。由于区块链中结合了密码学,可以确保存入区块中的信息是可信的、不可篡改的。
领导主节点校验数据的正确性后将交易数据存入区块中。此时交易还没有正式加入到区块链当中。只有在达成共识之后,才会正式被记录在区块链内。
本发明实施例中,在目标区块链的各个节点中选取领导主节点的方法流程如图5所示,包括步骤:
S201、获取所述目标区块链中各个共识节点的产能,确定所述目标区块链的总产能;
本发明实施例中,获取所述目标区块链中每一个共识节点的产能,并将各个产能进行累加,得到所述目标区块链的总产能。
S202、依据各个产能和所述总产能,确定各个共识节点的权重;
本发明实施例中,权重评估是整个共识机制运行的基础,权重直接影响共识节点的记账权与投票权。所谓记账权是指在领导主节点选择阶段,如果共识节点被选为领导主节点那么此共识节点将获得记账权。获得记账权的共识节点负责生成区块并且将区块写入区块链中。投票权是指在共识阶段节点表示是否验证通过校验时,投的票数是由权重大小决定的。权重Wi计算方法为:
Ei是能源厂在政府注册时提供的产能。Wi衡量一个能源厂所产的能量占整个区块链中所产的能量的比例。
S203、将各个共识节点中权重最高的共识节点作为领导主节点。
本发明实施例中,协议开始时,每一个共识节点会广播它的公钥和权重。公钥是为了证明共识节点是有效节点,每个共识节点只接受有效节点发来的消息。共识节点i成为领导主节点的概率Pi是由权重Wi在所有共识节点权重中所占的比例决定的,Pi的表达式如下:
每个节点通过公平的竞选成为领导主节点,节点j被选择的概率为(1-p1)(1-P2)...(1-pj-1)Pj。选择被选择概率最大的节点作为领导节点。
本发明实施中,所述目标区块链的各个共识节点的权重和数量都会因为新的共识节点的加入而发生变化,每当有新的共识节点加入时,重新分配权重,若新共识节点加入时,正在进行共识判断,则采用原有权重完成本次识别后,在重新分配权重。
本发明实施例中,选择出领导主节点之后,交易验证过程参考附图6,当领导主节点接收请求后启动四阶段的协议向各节点发送广播请求。由领导主节点负责生成目标区块。
预准备阶段:领导主节点将交易进行校验并放在目标区块内。所述领导主节点分配一个序列号给收到的请求,然后向所有共识节点群发预准备消息。请求本身是不包含在预准备消息内的,这样就能使预准备消息足够小。预准备消息的目的是证明交易被赋予了相对应序号。此外,将“请求排序协议”和“请求传输协议”进行解耦,有利于对消息传输的效率进行深度优化。
准备阶段:其余共识节点接收到领导主节点的预准备消息后首先对预准备消息进行验证,如果是非法请求就丢弃。验证预准备消息通过的共识节点接收到交易列表后,根据排序模拟执行这些交易。由于序号确保了所有共识节点以同样的顺序执行所有请求,这样就保证了算法的正确性。所有交易执行完后,如果是正确的向全网广播准备消息。
提交阶段:如果节点收到了一定数量正确消息,会向全网广播提交结果。提交结果是由共识节点i的权重Wi乘以共识节点拥有票数Ti,即:
resulti=Wi×Ti (3)
响应阶段:系统中设定了一个预设的判定阈值ε,将所有权重票数相加得result=∑resuilt,若result≥ε,即所有的共识节点达成了共识。领导主节点会创建一个新的区块加入区块链尾部。
本发明实施例中,所述共识方法的整体操作流程如图7所示,其中,带权重实用拜占庭容错共识算法W-PBFT包含两个部分。第一部分是根据系统中的权重选择领导主节点,第二部分在实用拜占庭容错算法基础上进行投票验证从而达到共识。系统初始化指在能源区块链中,如果能源厂想要加入到区块链中,需要到一个信任的政府机构进行注册。注册通过后政府会将能源厂的ID加入区块链中,能源厂会获得一个公钥和ID证书。能源厂可以通过ID证书注册成为一个合法节点,公钥广播在全网后其它节点通过公钥识别其身份。
基于上述的方法,本发明实施例中,还提供了一种基于权重的区块链共识系统,所述共识系统的结构框图如图8所示,包括:
选取模块301,、验证模块302,、识别模块303,反馈模块304303和第一判定模块305304。
其中,
所述选取模块301,用于在能源区块链的各个共识节点中选取领导主节点;
所述验证模块302,用于当所述领导主节点接收到交易请求时,验证模块,将所述交易请求发送给各个其余共识节点进行验证;
所述反馈模块303,用于依据每一个其余共识节点的权重和预设的投票数,确定与其对应的共识结果的目标票数,将所述目标票数反馈给所述领导主节点;
所述第一判定模块304,用于当反馈完成时,若共识结果的总票数大于预设的判定阈值,则判定达成共识。
本发明公开了一种基于权重的区块链共识系统,包括:在目标块链的各个共识节点中选取领导主节点;当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证;依据每一个其余共识节点的权重和预设的投票数,确定与其对应的共识结果的目标票数,将所述目标票数反馈给所述领导主节点;当反馈完成时,若共识结果的总票数大于预设的判定阈值,则判定达成共识。上述的系统,由于为每一个共识节点分配权重,令各个共识节点对所述目标区块链的影响是不同的,权重越高影响越大,提高了最终共识结果的反馈的准确度。
本发明实施例中,所述共识系统还包括:
计时模块305、第二判定模块306和重选模块307
其中,
所述计时模块305,用于对所述领导主节点的反馈过程进行计时;
所述第二判定模块306,当计时时长达到预设的反馈时长且所述领导主节点未反馈时,判定所述领导主节点失效;
所述重选模块307,用于在所述目标区块链中重新选取领导主节点。
本发明实施例中,所述验证模块302包括:
广播单元308和验证单元309。
其中,
所述广播单元308,用于将交易请求传递给所述领导主节点进行广播;
所述验证单元309,用于将与所述交易请求对应的预备消息发送给所述目标区块链中的各个其余节点进行验证。
本发明实施例还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在的设备执行上述一种基于权重的区块链共识方法,所述方法具体包括:
在目标块链的各个共识节点中选取领导主节点;
当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证;
依据每一个其余共识节点的权重和预设的投票数,确定与其对应的共识结果的目标票数,将所述目标票数反馈给所述领导主节点;
当反馈完成时,若共识结果的总票数大于预设的判定阈值,则判定达成共识。
上述的方法,可选的,还包括:
创建与所述交易请求对应的目标区块;
将所述目标区块添加到所述目标区块链中。
上述的方法,可选的,还包括:
对所述领导主节点的反馈过程进行计时;
当计时时长达到预设的反馈时长且所述领导主节点未反馈时,判定所述领导主节点失效;
在所述目标区块链中重新选取领导主节点。
上述的方法,可选的,在目标区块链的各个节点中选取领导主节点,包括:
获取所述目标区块链中各个共识节点的产能,确定所述目标区块链的总产能;
依据各个产能和所述总产能,确定各个共识节点的权重;
将各个共识节点中权重最高的共识节点作为领导主节点。
上述的方法,可选的,当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证,包括:
将交易请求传递给所述领导主节点进行广播;
将与所述交易请求对应的预备消息发送给所述目标区块链中的各个其余节点进行验证。
本发明实施例还提供了一种电子设备,其结构示意图如图9所示,具体包括存储器401,以及一个或者一个以上的程序402,其中一个或者一个以上程序402存储于存储器401中,且经配置以由一个或者一个以上处理器403执行所述一个或者一个以上程序402包含用于进行以下操作的指令:
在目标块链的各个共识节点中选取领导主节点;
当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证;
依据每一个其余共识节点的权重和预设的投票数,确定与其对应的共识结果的目标票数,将所述目标票数反馈给所述领导主节点;
当反馈完成时,若共识结果的总票数大于预设的判定阈值,则判定达成共识。
上述的方法,可选的,还包括:
创建与所述交易请求对应的目标区块;
将所述目标区块添加到所述目标区块链中。
上述的方法,可选的,还包括:
对所述领导主节点的反馈过程进行计时;
当计时时长达到预设的反馈时长且所述领导主节点未反馈时,判定所述领导主节点失效;
在所述目标区块链中重新选取领导主节点。
上述的方法,可选的,在目标区块链的各个节点中选取领导主节点,包括:
获取所述目标区块链中各个共识节点的产能,确定所述目标区块链的总产能;
依据各个产能和所述总产能,确定各个共识节点的权重;
将各个共识节点中权重最高的共识节点作为领导主节点。
上述的方法,可选的,当所述领导主节点接收到交易请求时,将所述交易请求发送给各个其余共识节点进行验证,包括:
将交易请求传递给所述领导主节点进行广播;
将与所述交易请求对应的预备消息发送给所述目标区块链中的各个其余节点进行验证。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明所提供的一种基于权重的区块链共识方法、装置、存储介质及电子设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。