本发明涉及金融科技(fintech)领域,尤其涉及一种确定区块链共识节点的方法及装置。
背景技术:
随着计算机技术的发展,越来越多的技术(例如:区块链、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,大数据技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对大数据技术提出的更高的要求。
在区块连系统中,通过共识算法实现去中心化的网络状态,其中,基于拜占庭容错算法是一种高性能共识算法,其只允许容错1/3的节点作恶或宕机,因此,对于目前的共识算法中,选取共识节点尤为重要。
现有技术中,一般预先配置共识节点,或通过共识算法,如dpos(delegateproofofstake,委托权益证明)选取出共识节点。但是,通过预先配置共识节点的方法缺少灵活性,在共识节点作恶或宕机时,无法更换,根据共识算法选取共识节点的方法易被人操控,有贿选的可能,公平性低。
因此,现需要一种确定共识节点的方法,用于逐步淘汰掉表现不佳的共识节点,提高确定共识节点的容错能力和恢复能力,并给予了其他节点被确定为共识节点的可能性,提高确定共识节点的公平性。
技术实现要素:
本发明实施例提供一种确定区块链共识节点的方法及装置,用于防止攻击者使用女巫攻击低成本建立大量的账号破坏区块链系统,提高确定共识节点的容错能力和恢复能力。
第一方面,本发明实施例提供一种确定区块链共识节点的方法,包括:
从区块链获取具有候选身份的节点的承诺值;所述候选身份是通过所述节点发起的共识注册交易获得的;所述承诺值是所述共识注册交易中用于表征申请成为共识节点的担保能力;
确定所述节点在所述区块链的历史区段作为共识节点所共识的区块数量和正确共识区块的准确率;
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的优先级。
上述技术方案中,节点通过发起共识注册交易成为候选节点,以使自身存在被确定为共识节点的可能,因共识注册交易中包括承诺金,防止了攻击者使用女巫攻击低成本建立大量的账号破坏区块链系统,通过承诺金以及节点作为共识节点所共识的区块数量和正确共识区块的准确率确定节点的优先权,根据优先权确定在节点中确定共识节点,从而使优先权高的节点,即正常共识区块、高效的、不处于宕机状态的节点,被确定为共识节点,提高了确定共识节点的容错能力和恢复能力。
可选的,确定所述节点的随机信标;
根据所述随机信标与所述节点的标识,确定所述节点的随机数;
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的优先级,包括:
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的权重;
根据所述权重和所述随机数,确定所述优先级。
上述技术方案中,节点的优先权是通过节点的权重和随机数确定的,对于从未作为共识节点且具有候选身份的节点,自身不存在共识区块数量和准确率,即在承诺值相同的情况下,该节点的权重相比于作为过共识节点的节点,其权重较低,通过随机数给予了该节点的权重大于作为过共识节点的节点的权重的可能,因此对于每个具有候选身份的节点,给予了其被确定为共识节点的可能性,提高了确定共识节点的公平性。
可选的,确定所述节点的随机信标,包括:
将所述区块链中设定区块的区块头中的随机信标,作为所述节点的随机信标;所述随机信标是共识节点对所述设定区块的前一区块的区块头中的随机信标通过可验证随机函数生成的。
上述技术方案中,用于确定节点随机数的随机信标是通过区块头中的随机信标确定的,其中,区块头中的随机信标可以被区块链中的其他节点共识,防止在确定节点随机数时作弊,提高了确定共识节点的公平性。
可选的,根据所述随机信标与所述节点的标识,确定所述节点的随机数,包括:
按照预设的截取规则,分别对所述随机信标和所述节点的标识进行截取;并对截取后的随机信标和截取后的节点的标识进行异或运算,得到运算结果;
将所述运算结果按照预设的处理规则得到所述随机数。
上述技术方案中,通过随机信标和节点的标识确定节点随机数,其中,节点的标识为在区块链上可验证的标识,可以被区块链中的其他节点共识,防止在节点确定为共识节点时作弊,提高了确定共识节点的公平性,通过截取规则,减少了在确定节点的随机数时的计算量。
可选的,确定所述节点在所述区块链的历史区段作为共识节点所共识的区块数量和正确共识区块的准确率,包括:
确定所述节点自首个区块至当前区块的各历史区段中所共识的区块数量;
根据所述节点作为共识节点的最近n个历史区段中正确共识区块的状况,确定所述准确率;n为正整数。
可选的,最近n个历史区段包括最近一次的第一历史区段及位于所述第一历史区段之前的第二历史区段;
根据所述节点作为共识节点的最近n个历史区段中正确共识区块的状况,确定所述准确率,包括:
若所述节点在所述第一历史区段中正确共识的区块满足设定条件,则将所述第一历史区段中正确共识区块的第一比值和所述第二历史区段中正确共识区块的第一调整值中的最小值,确定为所述准确率;所述第一调整值是对第二历史区段中正确共识区块的第二比值增加激励值得到的;
若所述节点在所述第一历史区段中正确共识的区块不满足设定条件,则将所述第一历史区段中正确共识区块的第一比值和所述第二历史区段中正确共识区块的第二调整值中的最大值,确定为所述准确率;所述第二调整值是对第二历史区段中正确共识区块的第二比值减少惩罚值得到的;所述惩罚值大于所述激励值。
上述技术方案中,通过设置的激励值和惩罚值确定节点作为共识节点的准确率,可以将正常进行共识、效率较高、不做恶、不处于宕机状态的节点的准确率更高,进而使其权重越高,被确定为共识节点的可能性越大,使做恶或宕机的节点被逐渐淘汰,提高了确定共识节点的容错能力和恢复能力。
可选的,所述方法还包括:
接收所述节点的共识注销请求;
在所述共识注销请求共识上链后,确定所述节点为未具有普通身份的节点,并将所述承诺值反馈至所述节点。
上述技术方案中,通过共识注销请求,可以将承诺值反馈至节点,维护了用户的利益,保证了用户成为候选节点的体验。
第二方面,本发明实施例提供一种确定区块链共识节点的装置,包括:
获取模块,用于从区块链获取具有候选身份的节点的承诺值;所述候选身份是通过所述节点发起的共识注册交易获得的;所述承诺值是所述共识注册交易中用于表征申请成为共识节点的担保能力;
处理模块,用于确定所述节点在所述区块链的历史区段作为共识节点所共识的区块数量和正确共识区块的准确率;
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的优先级。
可选的,所述处理模块还用于:
确定所述节点的随机信标;
根据所述随机信标与所述节点的标识,确定所述节点的随机数;
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的优先级,包括:
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的权重;
根据所述权重和所述随机数,确定所述优先级。
可选的,所述处理模块具体用于:
将所述区块链中设定区块的区块头中的随机信标,作为所述节点的随机信标;所述随机信标是共识节点对所述设定区块的前一区块的区块头中的随机信标通过可验证随机函数生成的。
可选的,所述处理模块具体用于:
按照预设的截取规则,分别对所述随机信标和所述节点的标识进行截取;并对截取后的随机信标和截取后的节点的标识进行异或运算,得到运算结果;
将所述运算结果按照预设的处理规则得到所述随机数。
可选的,所述处理模块具体用于:
确定所述节点自首个区块至当前区块的各历史区段中所共识的区块数量;
根据所述节点作为共识节点的最近n个历史区段中正确共识区块的状况,确定所述准确率;n为正整数。
可选的,最近n个历史区段包括最近一次的第一历史区段及位于所述第一历史区段之前的第二历史区段;
所述处理模块具体用于:
若所述节点在所述第一历史区段中正确共识的区块满足设定条件,则将所述第一历史区段中正确共识区块的第一比值和所述第二历史区段中正确共识区块的第一调整值中的最小值,确定为所述准确率;所述第一调整值是对第二历史区段中正确共识区块的第二比值增加激励值得到的;
若所述节点在所述第一历史区段中正确共识的区块不满足设定条件,则将所述第一历史区段中正确共识区块的第一比值和所述第二历史区段中正确共识区块的第二调整值中的最大值,确定为所述准确率;所述第二调整值是对第二历史区段中正确共识区块的第二比值减少惩罚值得到的;所述惩罚值大于所述激励值。
可选的,所述处理模块还用于:
控制获取单元接收所述节点的共识注销请求;
在所述共识注销请求共识上链后,确定所述节点为未具有普通身份的节点,并将所述承诺值反馈至所述节点。
第三方面,本发明实施例还提供一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述确定区块链共识节点的方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述确定区块链共识节点的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构示意图;
图2为本发明实施例提供的一种确定区块链共识节点的方法的流程示意图;
图3为本发明实施例提供的一种区块和交易的结构示意图;
图4为本发明实施例提供的一种区段的示意图;
图5为本发明实施例提供的一种确定区块链共识节点的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在现有技术中,区块链的共识机制包括很多种方法,如pow(proofofwork,工作量证明)、pos(proofofstake,股权证明机制)、poi(proofofimportance,重要度证明共识算法)、pbft(practicalbyzantinefaulttolerance,实用拜占庭容错算法)等,其中,pbft是通过多轮投票,共识出新的区块,由于共识节点之间需要互传大量投票信息,十分耗费网络带宽,因此,适合共识节点较少的情况。拜占庭容错算法能容错少于总共识节点数1/3的错误节点,如果错误节点超出这个比例,则会影响算法的存活性和安全性。
因此,对于选取共识节点是否作恶,效率是否高,节点是否处于宕机显得尤为重要。目前确定pbft中的共识节点一般分为两种,第一种方法,通过预先配置确定共识节点,如,配置a节点,默认a节点可以正常进行共识、效率较高、不做恶、不处于宕机状态,确定a节点为共识节点。
第二种方法,通过共识算法,选举出共识节点,例如dpos(delegateproofofstake,委托权益证明),通过投票选取出共识节点。
但上述方法中,第一种方法缺乏灵活性,没有动态的共识节点可以进行选择,如果共识节点出现逐步宕机,宕机节点无法在共识节点列表中被淘汰。第一种方法易被攻击者操作,如女巫攻击操作共识节点,使共识节点转变为作恶节点,使其贿选,导致选取共识节点的过程公平性不佳。
因此,现需要一种确定共识节点的方法,用于逐步淘汰掉表现不佳的共识节点,提高确定共识节点的容错能力和恢复能力,并给予了其他节点被确定为共识节点的可能性,提高确定共识节点的公平性。
图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构包括节点100,具有候选身份的节点200和共识节点300。
其中,节点100为用户在区块链系统中任一节点,节点100发送共识注册交易至区块链系统,在该共识注册交易上链后,将节点100确定为具有候选身份的节点200。
具有候选身份的节点200具有被确定为共识节点的可能,通过确定具有候选身份的节点200在区块链系统上成为区块链的下一区段的共识节点的优先级,确定具有候选身份的节点200是否被确定为共识节点300。
在具有候选身份的节点200被确定为共识节点300之后,共识节点300共识区块链的下一区段新产生的区块,在完成共识任务后,转变为具有候选身份的节点200。
需要说明的是,节点100在成为具有候选身份的节点200或共识节点300之后,可以通过发送共识注销请求,再次转变为节点100,具体的,在具有候选身份的节点200或共识节点300发送共识注销请求之后,经过预设的锁定期,再次转变为节点100。如具有候选身份的节点200发送共识注销请求,在共识注销请求共识上链后,经过预设的锁定期,确定具有候选身份的节点200为未具有普通身份的节点100。共识节点300发送共识注销请求,在共识注销请求共识上链且共识节点300完成共识任务后,经过预设的锁定期,确定共识节点300为未具有普通身份的节点100。
需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
基于上述描述,图2示例性的示出了本发明实施例提供的一种确定区块链共识节点的方法的流程,该流程可由确定区块链共识节点的装置执行。
如图2所示,该流程具体包括:
步骤210,从区块链获取具有候选身份的节点的承诺值。
本发明实施例中,候选身份是通过节点发起的共识注册交易获得的,承诺值是共识注册交易中用于表征申请成为共识节点的担保能力。
具体的,如图1所示,区块链系统中的任一节点发送共识注册交易且该共识注册交易共识上链后,将该节点确定为具有候选身份的节点,其中,共识注册交易包括交易金额,其交易金额被确定为具有候选身份的节点的承诺值。
举例说明,图3示例性的示出了一种区块和交易的结构示意图,如图3所示,区块中包括区块头、交易列表和投票列表。其中,交易列表中包括交易类型、交易发起方地址、交易接收方地址、交易金额和交易序列号,节点的共识注册交易被打包进区块且该区块被共识上链后,交易列表中的交易金额为该节点申请成为共识节点的担保能力。
步骤220,确定所述节点在所述区块链的历史区段作为共识节点所共识的区块数量和正确共识区块的准确率。
本发明实施例中,根据区块的高度将区块链分为多个区段,例如,将100个区块划分为1个区段,则重创世区块后的100个区块为第一个区段(1-100),然后再根据节点在区块链的历史区段确定准确率。
进一步的,确定节点自首个区块至当前区块的各历史区段中所共识的区块数量,再根据节点作为共识节点的最近n个历史区段中正确共识区块的状况,确定准确率,其中,n为正整数。
本发明实施例中,根据最近n个历史区段中正确共识区块的状况可以确定出节点作为共识节点的效率,是否处于宕机或作恶等情况,具体的,最近n个历史区段包括最近一次的第一历史区段及位于第一历史区段之前的第二历史区段。
进一步地,若节点在第一历史区段中正确共识的区块满足设定条件,则将第一历史区段中正确共识区块的第一比值和第二历史区段中正确共识区块的第一调整值中的最小值,确定为准确率,其中,第一调整值是对第二历史区段中正确共识区块的第二比值增加激励值得到的。
若节点在第一历史区段中正确共识的区块不满足设定条件,则将第一历史区段中正确共识区块的第一比值和第二历史区段中正确共识区块的第二调整值中的最大值,确定为准确率,其中,第二调整值是对第二历史区段中正确共识区块的第二比值减少惩罚值得到的,惩罚值大于激励值。
本发明实施例中,节点作为共识节点所共识的区块数量是节点自首个区块至当前区块的各历史区段中所共识的区块数量,例如,创世区块的区块高度为0,从创世区块至当前区块(区块高度为500)中,节点作为共识节点所共识的区块高度是301-500,共200个区块。
在确定节点作为下一区段的共识节点的准确率时,需要先判断节点在第一历史区段中正确共识的区块满足设定条件,例如,预设条件为节点在第一历史区段中正确共识的区块的第一比值是否大于预设阈值(如第一阈值为0),若节点在第一历史区段中正确共识的区块的第一比值大于预设阈值,则将第一历史区段中正确共识区块的第一比值和第二历史区段中正确共识区块的第一调整值中的最小值,确定为准确率,其中,节点在第一历史区段中正确共识的区块的第一比值为节点在第一历史区段中正确共识的区块数量与第一历史区段中区块的数量的比值,如节点在第一历史区段中正确共识的区块数量为60,第一历史区段中区块的数量为100,则第一比值为0.6。第一调整值是节点在第二历史区段中正确共识区块的第二比值增加激励值得到的,节点在第二历史区段中正确共识的区块的第二比值为节点在第二历史区段中正确共识的区块数量与第二历史区段中区块的数量的比值,激励值可以是用户根据预设的。
具体如下述公式(1)所示。
p(m)=min(p(m-2) p1,p(m-1));p(m-1)>q……………………(1);
其中,p(m)为节点作为下一区段的共识节点的准确率,p(m-1)为节点在第一历史区段中正确共识的区块的第一比值,p(m-2)为节点在第二历史区段中正确共识的区块的第二比值,p1为激励值,q为预设阈值。
示例性的,若节点在第一历史区段中正确共识的区块不大于预设阈值,则将第一历史区段中正确共识区块的第一比值和第二历史区段中正确共识区块的第二调整值中的最大值,确定为准确率,其中,第二调整值是对第二历史区段中正确共识区块的第二比值减少惩罚值得到的,且惩罚值大于激励值。具体如下述公式(2)所示。
p(m)=max(p(m-2)-p2,a);p(m-1)≤q………………………(2);
其中,p(m)为节点作为下一区段的共识节点的准确率,p(m-1)为节点在第一历史区段中正确共识的区块的第一比值,p(m-2)为节点在第二历史区段中正确共识的区块的第二比值,p2为惩罚值,q为预设阈值。
上述惩罚值p2(如惩罚值p2为0.1)大于激励值p1(如激励值p1为0.01),以加快淘汰不满足预设条件的节点,需要说明的是,在不同的应用场景中,惩罚值p2也可以不大于激励值p1,在此不做惩罚值p2和激励值p1的大小限定。
示例性的,若节点最近n个历史区段仅包括最近一次的第一历史区段或未包括最近一次的第一历史区段,则将预设值(如预设值为0.3)作为节点作为下一区段的共识节点的准确率。
步骤230,根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的优先级。
本发明实施例中,确定节点成为所述区块链的下一区段的共识节点的优先级还包括节点的随机数。
进一步地,确定节点的随机信标,根据随机信标与节点的标识,确定节点的随机数,然后根据节点的权重和随机数,确定优先级。其中,节点的权重是根据承诺值、共识区块数量和准确率确定的。具体如下述公式(3)确定节点的权重。
w=a×f1 b×f2 c×f3……………………………………………(3);
其中,w为节点的权重,a为第一预设权重(如a为0.3),f1=10000/(1 e(s1×(s-s2))),s为押金数,s1为第一预设值(如s1为-0.0002),s2为第二预设值(如s2为12000),b为第二预设权重(如b为0.2),f2=10000/(1 e(n1×(n-n2))),n为节点自首个区块至当前区块的各历史区段中所共识的区块数量,n1为第三预设值(如n1为-0.001),n2为第四预设值(如n2为5000),c为第三预设权重,f3=10000×p,p为节点作为下一区段的共识节点的准确率。
根据上述公式(1)、公式(2)和公式(3),下面在具体实例中阐述确定节点成为区块链的下一区段的共识节点的权重。
实例1
节点k的押金数为5000,节点k做过两次以上的共识节点,期间累计共识区块数量为860,最近一次的第一历史区段的区块数量为100个,节点k共识区块数量为60个,则节点k在最近一次的第一历史区段作为共识节点的准确率为0.6,若节点k在第二历史区段作为共识节点的准确率为0.7,则f1=1000/(1 e(-0.0002×(5000-12000)))=1978,f2=10000/(1 e(-0.001×(860-3000)))=1052,f3=10000×min(0.7 0.01,0.6)=6000,w=0.2×1978 0.3×1052 0.5×6000=3711。
本发明实施例中,优先级是根据节点的权重和随机数确定的,其中,随机数是根据随机信标与节点的标识确定的,随机信标是区块头中的随机信标。
进一步地,将区块链中设定区块的区块头中的随机信标,作为节点的随机信标,其中,随机信标是共识节点对设定区块的前一区块的区块头中的随机信标通过可验证随机函数生成的。例如,确定301-400区段的节点的随机数,设定区块为区块高度为200的区块,区块高度为200的区块的随机信标是区块高度为199的区块通过vrf(verifiablerandomfunction,可验证随机函数)确定的,具体的,区块高度为200利用区块高度为199的区块的随机信标作为公共的输入x,使用节点自身的私钥,代入vrf求值函数得到的随机信标y存入区块的vrfrandomnumber(随机信标y)中,证明p转换成hex编码的字符串存入vrfproof中。其他节点可以使用区块高度为200的区块的vrfrandomnumber作为随机信标y,vrfproof作为证明p,根据已知的区块高度为200的区块的共识节点公钥以及区块高度为199的区块的随机信标(输入x),代入验证函数,验证随机信标是否合法生成。
需要说明的是,设定区块可以为区块链上已有的任一区块,例如,设定区块为第二历史区段的最后一个区块(如区块高度为300的区块),用于确定下一区段(区块高度为401-500的区段)的共识节点。
每个区块头中都有可验证的随机信标。
本发明实施例中,根据设定区块的随机信标和节点的标识确定出节点的随机数,其中,设定区块的区块头中的随机信标和节点的标识可以被区块链中的其他节点共识,防止在确定节点随机数时作弊,提高了确定共识节点的公平性。
进一步地,按照预设的截取规则,分别对随机信标和节点的标识进行截取,并对截取后的随机信标和截取后的节点的标识进行异或运算,得到运算结果,然后将运算结果按照预设的处理规则得到随机数。
本发明实施例中,预设的截取规则可以为随机信标指定数量的规则,例如将随机信标的前16位字符与节点的标识(如节点的地址或公钥)的前8位字符进行截取,然后将截取后的随机信标和截取后的节点的标识先进行二进制码转化,得到对应的二进制码,然后再将二进制码进行异或运算并转化为整数(运算结果),然后将运算结果按照预设的处理规则得到随机数。其中,预设的处理规则包括以下几种可实施方式:
第一种可实施方式:
将运算结果除以10000后取余数,再将所述余数除以10000得到节点的随机数,或直接将运算结果除以10000后取余数得到随机数。
第二种可实施方式:
将运算结果除以10000后取余数,再将所述余数除以10000得到第一小数,若第一小数小于第一阈值(如第一阈值为0.2),则将第一阈值确定为节点的随机数,且/或若第一小数大于第二阈值(如第二阈值为0.6),则将第二阈值确定为节点的随机数。
第三种可实施方式:
将运算结果除以400后取余数,再将所述余数除以1000得到节点的随机数。
需要说明的是,上述实施方式中的各除数是根据二进制码的数量确定的,因16位二进制码转化为整数最大为5位数,预设的处理规则包括但不局限上述所述的实施方式,在此不再做限定。
为了更好的解释上述技术方案,下面根据上述实例1在具体实例中阐述确定节点的优先级。
实例2
节点k的节点地址(节点的标识)为0x70a53c226d0a……50e,设定区块的区块头中的随机信标为2779096485,则节点地址的二进制码为0111000010100101,随机信标二进制码为1010010110100101,然后进行异或运算得到节点的随机数l=(1010010110100101⊕0111000010100101%10000)/10000=(54528%10000)/10000=0.4528。
节点的优先级=(权重w×随机数l)=3711×0.4528=1680。需要说明的是,节点的优先级计算为取整数计算,所得结果为整数。
示例性的,若根据上述第一种可实施方法,直接将运算结果除以10000后取余数得到随机数,则随机数l为4528,则节点的优先级=(权重w 随机数l)=3711 4528=8239。
需要说明的是,可以根据多种算法通过权重w×随机数l确定出节点的优先级,在此不做具体限定。
为了更好的解释上述技术方案,图4示例性的示出了一种区段的示意图,下面结合图4在具体实例中解释上述技术方案。
实例3
区块链上的每100个区块划分为一个区段,当前区块链为(0,100],(101,200],(201,300],……(701,800]多个区段,下一区段为(801,900],其中,最开始的两个区段((0,100]和(101,200])由创世块所配置的一批共识节点进行共识,从第三个区段((201,300])开始由上述技术方案确定出共识节点进行区块共识。如,节点a、b、c、d、e在第三个区段发送共识注册交易至区块链系统。交易被打包在(601,700]区段的区块中,共识注册交易的交易金额被确定为节点的承诺值。在交易对应的区块被共识上链之后,节点a、b、c、d、e具有候选身份。
然后根据上述实例1和实例2中所述的确定节点优先权的方法,确定出各节点的权重和随机数,进而得到各节点的优先权,根据优先权的大小,确定出节点a、b、c、d为共识节点,则节点a、b、c、d被确定为区段(801,900]的共识节点。
然后被确定为共识节点的节点a、b、c、d建立网络连接。当区块高度为800的区块出块结束后,节点a、b、c、d成为区段(801,900]的共识节点,负责运行拜占庭容错共识算法,共识区块高度为801至900的区块。
本发明实施例中,用户可以根据共识注销请求,将具有候选身份的节点或被确定为共识节点的节点注销,具体的,在具有候选身份的节点或被确定为共识节点的节点发送共识注销请求之后,经过预设的锁定期,将节点注销,详细方法如图1所示,在此不再做赘述。
基于相同的技术构思,图5示例性的示出了本发明实施例提供的一种确定区块链共识节点的装置的结构示意图,该装置可以执行确定区块链共识节点的方法的流程。
如图5所示,该装置具体包括:
获取模块510,用于从区块链获取具有候选身份的节点的承诺值;所述候选身份是通过所述节点发起的共识注册交易获得的;所述承诺值是所述共识注册交易中用于表征申请成为共识节点的担保能力;
处理模块520,用于确定所述节点在所述区块链的历史区段作为共识节点所共识的区块数量和正确共识区块的准确率;
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的优先级。
可选的,所述处理模块520还用于:
确定所述节点的随机信标;
根据所述随机信标与所述节点的标识,确定所述节点的随机数;
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的优先级,包括:
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的权重;
根据所述权重和所述随机数,确定所述优先级。
可选的,所述处理模块520具体用于:
将所述区块链中设定区块的区块头中的随机信标,作为所述节点的随机信标;所述随机信标是共识节点对所述设定区块的前一区块的区块头中的随机信标通过可验证随机函数生成的。
可选的,所述处理模块520具体用于:
按照预设的截取规则,分别对所述随机信标和所述节点的标识进行截取;并对截取后的随机信标和截取后的节点的标识进行异或运算,得到运算结果;
将所述运算结果按照预设的处理规则得到所述随机数。
可选的,所述处理模块520具体用于:
确定所述节点自首个区块至当前区块的各历史区段中所共识的区块数量;
根据所述节点作为共识节点的最近n个历史区段中正确共识区块的状况,确定所述准确率;n为正整数。
可选的,最近n个历史区段包括最近一次的第一历史区段及位于所述第一历史区段之前的第二历史区段;
所述处理模块520具体用于:
若所述节点在所述第一历史区段中正确共识的区块满足设定条件,则将所述第一历史区段中正确共识区块的第一比值和所述第二历史区段中正确共识区块的第一调整值中的最小值,确定为所述准确率;所述第一调整值是对第二历史区段中正确共识区块的第二比值增加激励值得到的;
若所述节点在所述第一历史区段中正确共识的区块不满足设定条件,则将所述第一历史区段中正确共识区块的第一比值和所述第二历史区段中正确共识区块的第二调整值中的最大值,确定为所述准确率;所述第二调整值是对第二历史区段中正确共识区块的第二比值减少惩罚值得到的;所述惩罚值大于所述激励值。
可选的,所述处理模块520还用于:
控制获取单元510接收所述节点的共识注销请求;
在所述共识注销请求共识上链后,确定所述节点为未具有普通身份的节点,并将所述承诺值反馈至所述节点。
基于相同的技术构思,本发明实施例还提供一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述确定区块链共识节点的方法。
基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述确定区块链共识节点的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
1.一种确定区块链共识节点的方法,其特征在于,包括:
从区块链获取具有候选身份的节点的承诺值;所述候选身份是通过所述节点发起的共识注册交易获得的;所述承诺值是所述共识注册交易中用于表征申请成为共识节点的担保能力;
确定所述节点在所述区块链的历史区段作为共识节点所共识的区块数量和正确共识区块的准确率;
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的优先级。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述节点的随机信标;
根据所述随机信标与所述节点的标识,确定所述节点的随机数;
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的优先级,包括:
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的权重;
根据所述权重和所述随机数,确定所述优先级。
3.如权利要求2所述的方法,其特征在于,确定所述节点的随机信标,包括:
将所述区块链中设定区块的区块头中的随机信标,作为所述节点的随机信标;所述随机信标是共识节点对所述设定区块的前一区块的区块头中的随机信标通过可验证随机函数生成的。
4.如权利要求2所述的方法,其特征在于,根据所述随机信标与所述节点的标识,确定所述节点的随机数,包括:
按照预设的截取规则,分别对所述随机信标和所述节点的标识进行截取;并对截取后的随机信标和截取后的节点的标识进行异或运算,得到运算结果;
将所述运算结果按照预设的处理规则得到所述随机数。
5.如权利要求1至4任一项所述的方法,其特征在于,确定所述节点在所述区块链的历史区段作为共识节点所共识的区块数量和正确共识区块的准确率,包括:
确定所述节点自首个区块至当前区块的各历史区段中所共识的区块数量;
根据所述节点作为共识节点的最近n个历史区段中正确共识区块的状况,确定所述准确率;n为正整数。
6.如权利要求5所述的方法,其特征在于,最近n个历史区段包括最近一次的第一历史区段及位于所述第一历史区段之前的第二历史区段;
根据所述节点作为共识节点的最近n个历史区段中正确共识区块的状况,确定所述准确率,包括:
若所述节点在所述第一历史区段中正确共识的区块满足设定条件,则将所述第一历史区段中正确共识区块的第一比值和所述第二历史区段中正确共识区块的第一调整值中的最小值,确定为所述准确率;所述第一调整值是对第二历史区段中正确共识区块的第二比值增加激励值得到的;
若所述节点在所述第一历史区段中正确共识的区块不满足设定条件,则将所述第一历史区段中正确共识区块的第一比值和所述第二历史区段中正确共识区块的第二调整值中的最大值,确定为所述准确率;所述第二调整值是对第二历史区段中正确共识区块的第二比值减少惩罚值得到的;所述惩罚值大于所述激励值。
7.如权利要求5所述的方法,其特征在于,所述方法还包括:
接收所述节点的共识注销请求;
在所述共识注销请求共识上链后,确定所述节点为未具有普通身份的节点,并将所述承诺值反馈至所述节点。
8.一种确定区块链共识节点的装置,其特征在于,包括:
获取模块,用于从区块链获取具有候选身份的节点的承诺值;所述候选身份是通过所述节点发起的共识注册交易获得的;所述承诺值是所述共识注册交易中用于表征申请成为共识节点的担保能力;
处理模块,用于确定所述节点在所述区块链的历史区段作为共识节点所共识的区块数量和正确共识区块的准确率;
根据所述承诺值、所述共识区块数量和所述准确率,确定所述节点成为所述区块链的下一区段的共识节点的优先级。
9.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至7一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1至7一项所述的方法。
技术总结