一种基于智能合约的PBFT共识系统及方法与流程

文档序号:24306614发布日期:2021-03-17 00:59阅读:240来源:国知局
一种基于智能合约的PBFT共识系统及方法与流程

本发明涉及一种基于智能合约的pbft共识系统及方法,属于区块链共识算法技术领域。



背景技术:

区块链在金融、互联网和电子政务等领域的应用引起了全球的广泛关注和高度重视,世界上很多国家已将区块链技术上升至国家战略高度。共识算法作为区块链系统的核心技术之一,是保证区块链系统中分布式节点数据一致性的关键。

具体到共识算法上,公有链一般采用pow(proofofwork,工作量证明)算法,联盟链一般采用pbft(practicalbyzantinefaulttolerance,实用拜占庭容错)算法。pbft算法因对节点算力要求较低,能解决拜占庭问题,且较为高效,在联盟链中被广泛应用。

pbft算法通过运行三类基本协议维持全网节点的行动一致,协议包括一致性协议、检查点协议和视图切换协议。一致性协议主要通过共识过程中的预准备(pre-prepare)、准备(prepare)和确认(commit)三阶段共识以保证全网节点储存数据的一致性,同时允许在出现不超过1/3的作恶节点时,全网节点仍可以高效地完成共识。检查点协议是将系统服务器周期性地同步到某个同步的状态,系统设置一个检查点(checkpoint)的时间点,为此,全网节点可以定期处理日志并纠正服务器状态。为防止主节点(primary)发生宕机时,从节点(backup)无限期地等待,pbft算法引入视图的概念。当主节点出现宕机时将触发视图切换,v表示视图编号,视图切换成功,则v+1。

然而,视图切换存在一定的弊端:从节点发起的视图切换,通常需要得到视图中其他节点的认可。具体而言,从节点向该视图下的其他节点(包括主节点)发起视图切换请求,此次发起的请求仍需要共识节点进行共识,仍采用pbft算法进行共识。在视图切换请求的共识过程中,各节点将暂停对业务请求的共识。因此,基于视图切换请求的共识,实质上是一次额外的共识过程,将会增加网络通信开销,同时降低业务请求的共识效率。

此外,pbft算法在设计之初是为了解决拜占庭将军问题,并未考虑网络节点的动态变化,即不支持节点的动态加入或退出。但在实际移动节点的应用场景中,区块链系统往往需要满足较高的动态性要求,一方面由于节点本身的移动性引节点的动态变化,另一方面需要对作恶节点给予清除,对于算力强、信用高的节点给予进入。节点的动态变化在一定程度上可提升系统的灵活性和适用性。

智能合约是自动执行合约条款的可编程语言,只要投入使用即可依照内部规则自动执行合约内容,因此,可以利用智能合约改进现有的pbft算法。智能合约通过程序化的合约条款协助视图切换,支持节点的动态变化,从而提高pbft算法的共识效率。



技术实现要素:

本发明为解决目前的视图切换方式和节点动态变化的问题,提供了一种基于智能合约的pbft共识系统及方法。

本发明为解决上述技术问题采用以下技术方案:

一种基于智能合约的pbft共识系统,该系统包括:

智能合约监测模块,用于监测主节点、从节点、候补节点以及新用户;当监测到主节点触发视图切换条件时,该主节点被下一主节点替换;当监测到从节点触发从节点删除条件时,该从节点将从共识集合中删除;当监测到候补节点触发从节点添加条件时,共识节点根据候补节点的分值投票决定该候补节点是否加入共识集合;当监测到新用户触发候补节点添加条件时,授权候补节点将对新用户进行身份验证,决定该新用户是否加入候补集合;

视图切换模块,用于生成当前主节点的公钥hash值,根据预定排序规则计算获得下一主节点公钥hash值,并存储于视图切换模块内;用户根据下一主节点公钥hash值,将当前视图切换为新的主节点作为共识的新视图,以使得下一主节点能够发起共识及共识节点在新的视图下进行共识;

节点管理模块,用于根据智能合约监测模块的监测结果,实施共识节点和候补节点的增加、删除操作,更新共识集合和候补集合,并及时将更新后的共识集合和候补集合名单发送至节点集合模块;

节点集合模块,用于根据节点管理模块发送的共识集合和候补集合名单,确定当前共识集合和候补集合;共识集合用于对客户端发送的业务请求和规则升级请求进行共识确认,候补集合中授权候补节点用于对新用户进行身份验证,候补集合中的候补节点能够申请进入共识集合;

规则升级模块,当共识节点提出系统规则升级请求时,该模块将系统规则升级请求发送至共识集合,共识集合对系统规则升级请求进行pbft共识,并将共识结果反馈给规则升级模块;若系统规则升级请求获得共识集合的通过,规则升级模块则更新系统规则的版本号,终止旧版本号下系统规则合约的运行,并开始执行新版本号下的系统规则合约;若系统规则升级请求未获得共识集合的通过,规则升级模块将该系统规则升级请求删除;其中,系统规则包括触发条件、节点替换规则、新用户准入规则和节点分值计算规则。需要说明的是,只有共识节点有权提出系统规则升级请求,候补节点无权提出系统规则升级请求。

进一步,所述智能合约监测模块,包括:

时钟单元,用于设置一定时长,当时钟达到预定时长,触发智能合约监测模块监测主节点、从节点、候补节点、新用户状态,即让智能合约监测模块周期性地监测各节点是否满足触发条件。

进一步,所述节点管理模块,包括:

消息同步单元,用于在更新完共识集合与候补集合后,将更新后的共识集合与候补集合同步至全网各节点。

进一步,所述规则升级模块,包括:

消息同步单元,当系统规则升级请求获得共识集合通过时,该单元将升级的内容和更新后的版本号同步至全网各节点;

智能合约终止单元,当规则升级模块启动系统规则升级时,该单元终止旧版本号下系统规则合约的运行;

智能合约升级单元,当规则升级模块启动系统规则升级时,该单元调用新版本号下系统规则的合约,并运行。

进一步,主节点用于连接客户端,对客户端发送的需要共识的业务请求进行序号分配并广播至全网;共识节点包括主节点和从节点,对客户端的业务请求进行共识确认;候补集合中的候补节点能够申请加入共识集合,共识集合中的共识节点对申请加入共识集合的候补节点进行投票激活;共识节点能够对多个候补节点进行授权,授权候补节点有权对申请加入候补集合的新用户进行身份验证;新用户欲申请加入共识集合,应先通过授权候补节点的身份验证后成为候补节点,再根据共识集合的加入条件申请成为共识节点。

进一步,当智能合约监测模块监测到主节点出现宕机、多次共识失败时,自动触发视图切换条件,视图切换模块根据下一主节点的公钥hash值替换主节点;

当智能合约监测模块监测到从节点出现多次宕机、共识结果多次与全网相反时,从节点触发从节点删除条件,从节点将从共识集合中删除,进入候补集合中作为候补节点;

当智能合约监测模块监测到候补节点申请加入共识集合时,智能合约监测模块将所述候补节点名单发送至共识集合,共识节点结合所述候补节点分值对所述候补节点投票,节点管理模块根据共识集合允许容纳最大共识节点数和候补节点获得的票数,确定能够进入共识集合的候补节点名单,并将所述候补节点名单广播至全网各节点。

进一步,假设共识集合中共有n个共识节点,在达成正确共识的前提下,pbft共识系统最多能容忍共识集合中存在个宕机或恶意的节点。

一种基于智能合约的pbft共识方法,包括以下步骤:

客户端获取当前主节点的公钥hash值;

客户端向主节点发送需要共识的业务请求;

主节点接收到业务请求后,为需要共识的内容分配序号;

主节点获取当前共识集合,向从节点广播业务请求和共识集合;

从节点在接收到主节点的广播后,获取当前主节点的公钥hash值以及当前共识集合,验证进行广播的主节点的视图编号是否与当前主节点的视图编号一致,若不一致则不对接收到的广播进行确认,否则在当前主节点视图下验证广播内容,并将验证消息发送给其他共识节点;

共识节点在接收到主节点的广播后,进行pbft共识。

进一步,该方法具体包括:

1)、请求阶段

客户端获取当前主节点的公钥hash值后,向当前主节点发送需要共识的业务请求;

2)、预准备阶段

当前主节点在接收到客户端的业务请求消息后,为需要共识的内容分配序号;当前主节点获得最新的共识集合,并向所有从节点转发预准备消息;

3)、准备阶段

从节点获取当前主节点的公钥hash值,以验证进行广播的主节点的视图编号是否与当前主节点的视图编号一致,若不一致则不对接收到的广播进行确认,否则在当前主节点视图下验证广播内容,并将准备消息发送给其他共识节点;

4)、确认阶段

若某一共识节点接收到至少条来自其他共识节点的准备消息,则该共识节点向其他共识节点发送确认消息,否则该共识节点不向其他共识节点发送确认消息;其中,n是共识节点的数量;

5)、回复阶段

若某一共识节点接收到至少条来自其他共识节点的确认消息,则该共识节点向客户端发送回复消息,否则该共识节点不向客户端发送回复消息;

6)、反馈阶段

若客户端接收到至少条来自不同共识节点的相同的回复消息,则客户端发起的业务请求已经达成全网共识,客户端将达成共识的业务信息写入区块中;否则共识失败,客户端将业务信息删除;客户端都将共识结果作为反馈消息广播至全网各共识节点。

进一步,业务请求的消息格式为:

<request,m,t,c>

其中,request为业务请求名称,m为业务请求内容,t为请求时客户端追加的时间戳,c为发送业务请求的客户端身份;

预准备消息的消息格式为:

<<pre-prepare,v,n,d,s>,m>

其中,pre-prepare为预准备消息名称,v为当前主节点的视图编号,n为当前主节点对m分配的序号,d为m的摘要,s为当前共识集合;

准备消息的消息格式为:

<prepare,v,n,d,i>

其中,prepare为验证消息名称,i为从节点自身的编号;

确认消息的消息格式为:

<commit,v,n,d(m),i>

其中,commit为确认消息名称,d(m)为共识节点对m的可验证签名;

回复消息的消息格式为:

<reply,v,t,c,i,r>

其中,reply为回复消息名称,r为共识节点对m的回复内容;

反馈消息的消息格式为:

<feedback,v,t,c,r,f>

其中,feedback为反馈消息名称,r为共识节点对m的回复消息集合,f为客户端反馈的消息内容,若f=ture,则客户端发起的业务请求已经达成全网共识,客户端将业务信息写入区块中;若f=flase,则共识失败,客户端将业务信息删除。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:在共识过程中,智能合约监测模块主动监测视图切换条件的触发,若主节点触发了视图切换条件,则执行视图切换,进而,共识集合中的主节点被新的主节点替换。同时,共识视图也切换为新的主节点视图。基于此,共识视图切换是由智能合约监测模块所发起,避免从节点发起视图切换的共识请求,即避免视图切换过程出现额外的共识,能够降低视图切换过程中的网络通信开销,提高视图切换效率。同时,pbft共识过程引入智能合约,预置节点增删规则,自动监测节点添加和删除的触发条件,动态管理共识集合,从而实现共识集合的动态变化和新节点的动态加入和退出。

附图说明

图1为本申请实施例提供的共识集合和候补集合示意图,其中,(a)为共识集合,(b)是候补集合;

图2为本申请实施例提供的基于智能合约的共识系统示意图;

图3为本申请实施例提供的系统规则升级流程图;

图4为本申请实施例提供的pbft共识过程示意图。

具体实施方式

本申请的核心是提供一种基于智能合约的pbft共识系统及方法,视图切换过程无需额外的共识,提高视图切换效率,同时系统支持共识节点的动态添加和删除。

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

正如前所述,在实际应用中,区块链系统中所有共识节点的行为通常是随机的、动态的,即共识节点既可加入区块链系统,也可退出区块链系统。基于此,本申请实施例中增设了候补集合。共识集合与候补集合组成内容如图1中的(a)和(b)所示,共识集合包含主节点和从节点,主节点和从节点都属于共识节点。

具体的,主节点用于连接客户端,对客户端发送的业务请求进行序号分配并广播至全网,共识节点对客户端的业务请求进行共识确认,即共识集合用于对业务请求的共识确认;候补集合中的候补节点可申请加入共识集合,共识节点对所述申请加入共识集合的候补节点进行投票激活。共识节点可对多个候补节点进行授权,所述授权候补节点有权对申请加入候补集合的新用户进行身份验证,所述新用户包括政府部门、企业和个人,身份验证内容包括用户信用情况、企业/个人信息。新用户欲申请加入共识集合,应先通过授权候补节点的身份验证,成为候补节点,再根据共识集合的加入条件申请成为共识节点,即新用户不能直接申请加入共识集合。

为实现共识节点的动态加入、退出,本申请实施例中引入智能合约管理共识系统,基于智能合约的共识系统示意图如图2所示。系统由5个模块组成,包括视图切换模块、智能合约监测模块、节点管理模块、节点集合模块和规则升级模块。

具体的,视图切换模块包括主节点替换单元、下一主节点公钥hash值和当前主节点公钥hash值。在数字化交易的区块链系统中,数字签名是区块链技术的根基技术之一,可确保数字世界身份验证的可靠性。数字签名并不是传统笔迹签名的电子版,而是利用密码学技术保证身份验证的方法。公钥和私钥是通过数字签名算法得到的一对密钥,私钥仅对自己可见,公钥对外公开,若用其中一种密钥加密,必须通过另一种密钥解密。如使用私钥加密,则必须使用对应公钥解密。在本申请实施例中,节点用私钥对数据的加密过程即为该节点对数据进行数字签名的过程。

具体的,在本申请实施例中,公私钥对的生成过程如下:

系统根据智能合约内的预定步骤将节点信息经由安全散列算法生成一个唯一身份识别标识码;

唯一身份识别标识码作为密码学加密算法(如sodium签名算法)的输入条件,加密算法输出为节点的唯一公私钥对。

私钥保存于节点本地,仅对自己可见,公钥对全网节点公开。节点公钥通过hash函数计算得到公钥hash值,系统根据智能合约内的预定排序规则对公钥hash值排序,得到下一主节点公钥hash值,并将所述的下一主节点公钥hash值存储于视图切换模块中。本实施例中公钥hash值的预定排序规则可以按照公钥hash值从大到小的顺序,也可以按照公钥hash值从小到大的顺序。

智能合约监测模块由5个单元组成,包括主节点状态、从节点状态、候补节点状态和新用户注册。

具体的,当智能合约监测模块监测到主节点出现宕机、多次共识失败时,自动触发主节点替换条件,视图切换模块根据下一主节点公钥hash值替换主节点。所述主节点宕机指主节点在预定时间内未响应客户端发送的业务请求,主节点宕机时进行视图切换可以避免从节点无限期地等待;所述主节点多次共识失败指主节点发送的业务请求多次未能得到全网共识节点的支持确认,主节点多次共识失败时进行视图切换可以避免主节点作恶。

当智能合约监测模块监测到从节点出现多次宕机、共识结果多次与全网相反时,从节点触发从节点删除条件,从节点将从共识集合中删除,进入候补集合中作为候补节点。所述从节点宕机指从节点未对主节点广播的消息做出回复,所述从节点共识结果与全网相反指从节点对业务请求的回复与最终达成共识的结果不一致。因pbft共识算法至多只能在1/3节点宕机或作恶情况下达成正确共识,从节点出现多次宕机、共识结果多次与全网相反时进行从节点的及时删除,可维持共识节点处于诚实状态,从而维护共识系统正常运转,提高共识效率。

当智能合约监测模块监测到候补节点申请加入共识集合时,智能合约监测模块将所述候补节点名单发送至共识集合,共识节点结合所述候补节点分值对所述候补节点投票,节点管理模块根据共识集合允许容纳最大共识节点数和候补节点获得的票数,确定可进入共识集合的候补节点名单,并将所述候补节点名单广播至全网各节点。

在具体实现中,作为一种实施例,系统根据以下公式计算各节点分值:

si[t+δt]=si[t]+ci+ii+di+fi

式中,si[t]为节点i在时刻t的分值,si[t+δt]为节点i在时刻t+δt的分值,时刻t与时刻t+δt的时间差为δt。ci为节点i在时间δt内完成共识所获得的分值,ii为节点i在时间δt内完成新用户身份验证所获得的分值,di为节点i在时间δt内出现宕机所获得的分值,di≤0。若节点i为主节点,则fi表示主节点i发起的业务请求共识失败所获得的分值;若节点i为从节点,则fi表示从节点i共识结果与全网相反所获得的分值,fi≤0。

在具体实现中,作为一种实施例,节点管理模块在确定可进入共识集合的候补节点数量时,需考虑共识集合现有共识节点的数量,因随着共识节点数量的增加,共识效率逐渐降低。基于此,需控制共识集合的共识节点数量,假设共识集合a允许容纳最大共识节点数为n,此时a允许容纳的最大作恶或宕机共识节点数为(n-1)/3。节点管理模块根据n和共识集合节点数a确定可进入共识集合的候补节点数b,即b=n-a。节点管理模块根据b选出票数前b个候补节点加入共识集合。

当智能合约监测模块监测到新用户注册时,授权候补节点验证新用户信息,并判断所述新用户是否符合加入条件,若新用户符合条件则加入候补集合作为候补节点,若不符合条件则不允许加入。

节点管理模块由4个单元组成,包括消息同步单元、从节点删除、从节点添加和候补节点添加。

具体的,当智能合约监测模块监测到相关节点触发相应条件时,节点管理模块运行节点添加或删除指令,实现节点的动态添加和删除。

智能合约一旦写入区块链则无法进行修改,以保证区块链的可信性。然而,实际应用中往往需要灵活性高、可调节性强的区块链系统。为此,本发明采用升级的方式对规则进行更新。当共识节点提出系统规则升级请求时,该模块将系统规则升级请求发送至共识集合,共识集合对系统规则升级请求进行pbft共识,并将共识结果反馈给规则升级模块;若系统规则升级请求获得共识集合的通过,规则升级模块则更新系统规则的版本号,终止旧版本号下系统规则合约的运行,并开始执行新版本号下的系统规则合约;若系统规则升级请求未获得共识集合的通过,规则升级模块将该系统规则升级请求删除;其中,系统规则包括触发条件、节点替换规则、新用户准入规则和节点分值计算规则。需要说明的是,只有共识节点有权提出系统规则升级请求,候补节点无权提出系统规则升级请求。

规则升级模块,包括:

消息同步单元,当系统规则升级请求获得共识集合通过时,该单元将升级的内容和更新后的版本号同步至全网各节点;

智能合约终止单元,当规则升级模块启动系统规则升级时,该单元终止旧版本号下系统规则合约的运行;

智能合约升级单元,当规则升级模块启动系统规则升级时,该单元调用新版本号下系统规则的合约,并运行。

具体的,在本申请实施例中,系统规则升级的流程图如图3所示,详细的实现过程如下:

(1)共识节点提出系统规则升级请求,并将系统规则升级的内容、目的和版本号提交至规则升级模块;

(2)规则升级模块验证系统规则升级的内容、目的和版本号是否符合标准,若符合,则将系统规则升级的内容、目的和版本号打包后广播至全网各共识节点,并继续执行;若不符合,则向提出系统规则升级请求的共识节点反馈请求失败的消息,并终止执行。在具体的实现过程中,相关专业人员可根据实际情况制定系统规则升级内容、目的和版本号的验证标准;

(3)全网共识节点对系统规则升级请求进行pbft共识;

(4)若系统规则升级请求获得共识集合的通过,消息同步单元将升级的内容和版本号同步至全网各节点(包括共识节点、候补节点),并继续执行;若规则升级请求未获得共识集合的通过,规则升级模块向提出系统规则升级请求的共识节点反馈规则升级请求共识未通过的消息,并终止执行;

(5)规则升级模块启动规则升级,智能合约终止单元终止旧版本号下相应系统规则合约的运行,调用新版本号下相应系统规则合约,并执行。

节点集合模块由4个单元组成,包括共识集合、候补集合、共识机制和节点分值。共识机制用于共识节点对业务请求和规则升级请求进行pbft共识,pbft的共识过程如图4所示。在图4中,从节点3表示宕机、恶意节点,其对客户端、其他共识节点发送的消息不给予回复或是回复错误消息,即从节点3在共识过程中不起作用甚至干扰共识过程。

具体的,基于智能合约的pbft共识算法实现过程如下:

1、请求阶段

客户端c从视图切换模块获取当前主节点的公钥hash值,确定当前主节点0。然后,客户端c向主节点0发送业务请求,消息格式为:

<request,m,t,c>

其中,request为消息名称,m为业务请求内容,t为请求时客户端c追加的时间戳,c为发送业务请求的客户端c身份。请求阶段完成了将需要共识的业务请求内容从客户端c传递到主节点0的任务。

2、预准备阶段

主节点0在接收到客户端c的业务请求消息后,为需要共识的内容m分配序号。然后,主节点0从节点集合模块获得最新的共识集合,并向所有从节点转发pre-prepare消息,消息格式为:

<<pre-prepare,v,n,d,s>,m>

其中,pre-prepare为消息名称,v为当前主节点的视图编号,n为当前主节点对消息m分配的序号,d为消息m的摘要,s为最新的共识集合。预准备阶段完成了业务请求内容m的序号分配,并将业务请求内容m从主节点0传递到从节点的任务。

3、准备阶段

从节点从视图切换模块获取当前主节点的公钥hash值,以确定当前主节点的视图编号v′。从节点验证v′和v,若v′=v,则表明从节点在当前主节点视图下,从节点将对主节点0发送的消息进行确认;若v′≠v,则表明从节点不在当前主节点视图下,从节点将不对主节点0发送的消息进行确认。若从节点在当前主节点视图下,则从节点验证主节点分配的序号和消息内容,并将准备消息发送给其他共识节点(包括主节点0),消息格式为:

<prepare,v,n,d,i>

其中,prepare为消息名称,i为节点自身的编号。准备阶段完成了当前主节点的视图编号、主节点分配的序号和消息内容验证的任务。

4、确认阶段

若某一共识节点接收到至少条来自其他共识节点的准备消息,则该共识节点向其他共识节点发送确认消息,否则该共识节点不向其他共识节点发送确认消息,消息格式为:

<commit,v,n,d(m),i>

其中,commit为消息名称,d(m)为节点对消息m的可验证签名。确认阶段完成了共识节点对消息的确认和节点签名的验证。

5、回复阶段

若某一共识节点接收到至少条来自其他共识节点的确认消息,则该共识节点向客户端发送回复消息,否则该共识节点不向客户端发送回复消息,消息格式为:

<reply,v,t,c,i,r>

其中,reply为消息名称,r为共识节点对消息的回复内容。

6、反馈阶段

若客户端接收到至少条来自不同共识节点的相同的回复消息,则客户端发起的业务请求已经达成全网共识,客户端将达成共识的业务信息写入区块中;否则共识失败,客户端将业务信息删除;客户端都将共识结果作为反馈消息广播至全网各共识节点。反馈消息的消息格式为:

<feedback,v,t,c,r,f>

其中,feedback为反馈消息名称,r为共识节点对m的回复消息集合,f为客户端反馈的消息内容,若f=ture,则说明全网共识节点共识成功,业务信息可写入区块中;若f=flase,则说明全网节点共识失败,客户端将业务信息删除。

以上对本申请所提供的一种基于智能合约的pbft共识方法及系统进行了详细介绍。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统模块实施例而言,由于其基本相似于方法实施例,所以描述地比较简单,相关之处参见方法实施例的部分说明即可。

应当指出,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也在本申请权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1