基于PeerTrust的DPos的共识节点评估方法与流程

文档序号:24346154发布日期:2021-03-19 12:29阅读:167来源:国知局
基于PeerTrust的DPos的共识节点评估方法与流程

本发明涉及委托权益证明技术领域,具体地说是基于peertrust的dpos的共识节点评估方法。



背景技术:

自从比特币问世以来,其底层技术区块链吸引了学术界和工业界越来越多的兴趣。共识机制作为区块链的一个核心组件,对于区块链的安全性以及性能起着决定性的作用。目前,区块链中主流的共识机制主要包括工作量证明机制pow、权益证明机制pos以及委托证明机制dpos等。

工作量证明机制需要矿工解决一个”数学难题”来竞争记账权。第一个计算出来的矿工,将会获得记账权以及对应的矿工奖励。但它存在大量能源消费以及低交易能力和较差的可扩展性。权益证明机制通过代币的方式来解决工作量证明机制大量能源的消耗问题。一定程度上节约了能源,提高了效率,但大多数相关的解决方案依旧处于理论阶段。同时它还存在网络流量压力大、实现起来中间步骤复杂,容易产生安全漏洞等缺点。

委托权益证明机制是对工作量证明机制和权益证明机制的进一步改进,是一种基于投票选举的共识机制。它类似于公司的董事会选举,候选节点通过投票一定数量的委托节点代表自己行使权力,并维护区块链网络的稳定运行。委托权益证明机制相比于以上两种,节约了资源、提高了系统的交易能力、降低了延迟性以及高可扩展的。

然而,委托权益证明存在如下问题:

1、投票需要花费时间、精力等,从而导致投票节点的积极性不高;

2、在坏节点的处理上,不能及时有效的阻止一些恶意节点的出现;

3、投票权重与账户余额呈正比,从而容易导致投票掌握在少数人手中。

基于上述问题,如何提高节点的可信度,降低恶意节点被选为共识节点的概率,提高系统安全性,是需要解决的技术问题。



技术实现要素:

本发明的技术任务是针对以上不足,提供基于peertrust的dpos的共识节点评估方法,来解决如何提高节点的可信度,降低恶意节点被选为共识节点的概率,提高系统安全性的问题。

第一方面,本发明提供一种基于peertrust的dpos的共识节点评估方法,包括如下步骤:

节点调用智能合约进行身份注册,基于节点提交的身份声明得到注册账户,并将验证有效的注册账户存入全局已注册账户列表中,所述智能合约和全局已注册账户列表均部署于区块链中;

初始化节点的信任值,所述节点作为候选节点参与投票,为所述候选节点投票的其他候选节点为投票节点;

对于每个候选节点,在下一个选举周期开始时,获取上一个周期所述候选节点自身的信任值,截止到当前周期开始时,统计所述候选节点从投票节点获得的总投票数,并统计所有投票节点的总节点数;

基于总节点数、总投票数以及每个投票节点自身的信任值,计算每个候选节点的最终的信任值;

对于所有候选节点,选择部分高信任值的候选节点作为共识节点,所述共识节点参与区块生成和验证。

作为优选,将验证有效的注册账户存入全局已注册账户列表中,包括如下步骤:

验证注册账户的有效性,包括验证所述注册账户是否已经注册过,验证所述注册账户是否为用户所属的外部账户,以及验证所述注册账户是否有一定数量的代币;

调用可信第三方提供的身份数据库接口验证所述节点的身份声明是否与数据库中信息一致;

验证所述节点的身份声明是否已被另一个账户注册过;

如果上述验证通过,将所述注册账户存入全局已注册账户列表中。

作为优选,通过如下公式计算每个候选节点最终的信任值:

其中,μ表示所述候选节点,α和β均表示权重因子,t(μ)表示所述候选节点的最终信任值,n(μ)表示总节点数,n(μ,i)表示为第i个投票节点,s(μ,i)表示总投票数,tv(v)表示投票节点v的信任值,t'(μ)表示所述候选节点自身的信任值。

作为优选,对于所有候选节点,选择部分高信任值的候选节点作为共识节点,包括如下步骤:

对于所述候选节点,基于最终信任值进行排序,选择最终信任值高的预定数量的候选节点作为共识节点;

对上述共识节点重新洗牌,上述共识节点轮流参与共识,进行区块的生产和验证。

作为优选,对于所有候选节点,基于最终信任值进行降序排序,选择排名靠前的预定数量的候选节点作为共识节点;

或者,对于所有候选节点,基于最终信任值进行升序排序,选择排名靠后的预定数量的候选节点作为共识节点。

更优的,还包括如下步骤:

所述候选节点通过账户有效性验证后,注销账户并退出所述区块链网络。

作为优选,所述候选节点通过账户有效性验证后,注销账户并退出所述区块链网络,包括如下步骤:

验证所述候选节点的注册账户是否存在与全局已注册账户列表中,如果是,允许注销所述候选节点的账户;

验证所述候选节点的信任值是否小于默认初始值,如果是,不允许注销所述候选节点的账户;

如果所述候选节点的注册账户位于全局已注册账户列表中,且所述候选节点的账户状态大于默认初始值,注销所述候选节点的注册账户,并将所述候选节点的信任值设置为0。

第二方面,本发明提供一种装置,包括:至少一个存储器和至少一个处理器;

所述至少一个存储器,用于存储机器可读程序;

所述至少一个处理器,用于调用所述机器可读程序,执行第一方面任一所述的方法。

第三方面,本发明提供一种介质,计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行第一方面任一所述的方法。

本发明的基于peertrust的dpos的共识节点评估方法、装置和介质具有以下优点:

1、调用智能合约进行身份注册,确保了节点的唯一性,避免节点没有受到惩罚就可以重新加入新的身份,放弃当前的身份;

2、通过引入peertrust对节点进行信任评估,从而选择网路中高质量的节点作为共识节点,降低安全风险,提高效率;

3、通过信任激励的方式提高节点参与投票的积极性,此外降低投票权重对于代币的依赖性。

附图说明

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

下面结合附图对本发明进一步说明。

图1为实施例1基于peertrust的dpos的共识节点评估方法的流程框图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。

本发明实施例提供基于peertrust的dpos的共识节点评估方法,用于解决如何提高节点的可信度,降低恶意节点被选为共识节点的概率,提高系统安全性的技术问题。

实施例1:

本发明的一种基于peertrust的dpos的共识节点评估方法,包括如下步骤:

s100、节点调用智能合约进行身份注册,基于节点提交的身份声明得到注册账户,并将验证有效的注册账户存入全局已注册账户列表中,所述智能合约和全局已注册账户列表均部署于区块链中;

s200、初始化节点的信任值,所述节点作为候选节点参与投票,为所述候选节点投票的其他候选节点为投票节点;

s300、对于每个候选节点,在下一个选举周期开始时,获取上一个周期所述候选节点自身的信任值,截止到当前周期开始时,统计所述候选节点从投票节点获得的总投票数,并统计所有投票节点的总节点数;

s400、基于总节点数、总投票数以及每个投票节点自身的信任值,计算每个候选节点的最终的信任值;

s500、对于所有候选节点,选择部分高信任值的候选节点作为共识节点,所述共识节点参与区块生成和验证。

为了确保节点身份的唯一性,本实施例引入了智能合约。在共识中使用基于身份的方法,它的逻辑是建立一个全局已注册列表来存储参与共识节点的身份声明。智能合约的声明是由身份所呈现的事实。这些声明由声明人签署,因此其真实性和完整性可以得到验证。节点调用智能合约可以成功注册,然后才能作为验证者参与共识。

在共识协议中,已注册的身份合约用于协助共识协议的操作。其主要任务注册参与共识节点的身份,并与现实世界中的身份信息相关联。注册合约应确保声明人账户的有效性,声明的有效性和声明的唯一性。因为只有一个身份注册合约,所以所有调用者都可以信任它的逻辑并使用它。

节点调用智能合约进行身份注册,具体步骤如下:将账户注册为普通节点,验证后,可以竞争成为共识节点,并将该账户存储在全局已注册账户列表中,并返回已注册账户列表。

注册帐户的步骤为:

(1)账户有效性检查,账户是否为用户所属的外部账户,账户是否已注册,账户是否有一定数量的代币;

(2)检查账户提交的该身份声明的有效性,使用可信第三方提供的身份数据库接口验证该身份声明是否与数据库信息一致;

(3)检查此帐户的唯一性,验证身份声明是否已被另一个帐户注册;

(4)如果通过了以上三项,将注册账户信任值设置为节点的初始信任值。

其中,peertrust算法是将交易反馈评价模型应用到计算节点直接信任值问题的经典算法,算法在计算信任值时考虑五个因素,分别为反馈评价、交易的次数、提供反馈评价节点的推荐可信度、与交易本身相关的因素以及与交易环境相关的因素。在本实施例中,引入peertrust对节点进行信任评估,从而选择网路中高质量的节点作为共识节点,降低安全风险,提高效率。

本实施例在基于peertrust的共识算法中,结合dpos共识算法对peertrust进行了修改,一个节点的信任值是由其他节点对它的投票支持、节点的信任值以及节点的自身的历史信任值来定义的。评估确定了四个重要参数,分别为:一个节点从其他节点那里获得的投票数、投票节点自身的信任值、节点自身的信任值以及参与投票的总节点数。

一个节点从其他节点那里获得的投票数,由于在dpos中,共识节点都是通过其他节点的投票来选出的,因此,在这里我们通过一个节点从其他节点接收到的投票数来评估节点。一个节点在这个周期内收到的投票数反映了该节点被全网节点支持的程度。

投票节点自身的信任值,参与投票的节点的信任值也很重要。一个节点在周期内收到的投票数反映了该节点被全网节点支持的程度。然而,由于可能会存在一些恶意节点产生恶意动机,如创建多个账号为自己投票。在trust-dpos信任模型中,我们引入投票节点的信任值,为信任值较高的节点分配更高的权重。

节点自身的信任值,节点的信任值计算不仅取决于当前周期内其他节点对它的支持,还依赖于节点在上一个周期的信任值。

参与投票的总节点数,节点投票的积极性以及分布式网络中节点的参与程度,对于衡量节点的信任值也是一个重要参数。

本申请的核心思想是由持币者投票选出一定数量的具有高信任值的节点代表他们行使权力,参与到trust-dpos共识算法的执行过程中,即成为见证人。被选出的代表参与共识,如果出块者不称职,则投票者可以将其投票出局。每个周期重新选举一次见证人代表。该方法由所有节点的分布式网络来执行。本申请中,获取共识节点的工作了流程为:

1)计算节点的信任值

在这一步中,当下一个选举周期开始时,首先获取上一个周期节点的信任值、截至到当前周期开始时,节点所获取的投票数以及对应投票节点的信任值,然后通过如下公式计算所有节点的信任值:

其中,μ表示所述候选节点,α和β均表示权重因子,t(μ)表示所述候选节点的最终信任值,n(μ)表示总节点数,n(μ,i)表示为第i个投票节点,s(μ,i)表示总投票数,tv(v)表示投票节点v的信任值,t'(μ)表示所述候选节点自身的信任值,log是防止数值太大,使数据更加平稳;

2)从节点中选择见证人代表

这一步是从所有节点中选择一部分参与者参与达成共识的过程。在这里,我们根据步骤1)中的计算结果,将节点进行降序排名,选举排名最靠前的21个节点作为见证人列表中的节点,参与共识,进行区块的生成和验证;

3)见证人之间达成共识,轮流出块

在这一步中,将见证人列表重新洗牌,由见证人轮流出块,如果出块者不称职,则投票者可以将其投票出局。

步骤s500中,对于所有的候选节点,基于最终信任值进行排序,选择最终信任值高的预定数量的候选节点作为共识节点;对上述共识节点重新洗牌,上述共识节点轮流参与共识,进行区块的生产和验证。本实施例中,对于所有候选节点,基于最终信任值进行降序排序,选择排名靠前的预定数量的候选节点作为共识节点。

当用户想要退出共识时,可以注销账户。注销的帐户被视为无效帐户。它不能参与协商一致,该帐户将从注册帐户列表中删除。

退出时,需要进行账户有效性验证,如果通过账户有效性验证,则注销账户并退出区块链网络。

注销帐户具体的执行步骤为:

(1)验证上述候选节点的注册账户是否存在与全局已注册账户列表中,如果是,允许注销上述候选节点的账户;

(2)验证上述候选节点的信任值是否小于默认初始值,如果是,不允许注销上述候选节点的账户;

(3)如果上述候选节点的注册账户位于全局已注册账户列表中,且上述候选节点的账户状态大于默认初始值,注销上述候选节点的注册账户,并将上述候选节点的信任值设置为0。

本发明的基于peertrust和dpos的共识计算方法,具体执行流程为:

step1、第一次进入系统的节点首先调用智能合约进行身份注册;

step2、账户的有效性检查,验证内容涉及:账户是否已注册、账户是否是用户所属的外部账户以及账户是否有一定数量的代币;

step3、验证成功后,将账户记录在全局已注册列表中,并返回已注册列表,节点将获得参与系统的权限;

step4、给节点分配一个初始化信任值;

step5、节点作为候选节点参与投票;

step6、统计一个节点从其他节点那里获得的投票数;

step7、获取投票节点自身的信任值和参与投票的总节点数;

step8、获取节点自身的信任值;

step9、根据以下计算节点的一个信任值;

step10、计算所有参与节点的一个信任值,并进行降序排序;

step11、选择排名靠前的前21个节点,并将节点重新洗牌,有它们轮流参与共识,进行区块的生成和验证;

step12、节点退出网络的有效性检查:该帐户是否在注册表中、是否现有帐户的状态小于默认初始值;

step13、如果符合退出条件,注销帐户信任值设为0。

本发明基于peertrust和dpos的共识计算方法,基于智能合约进行身份注册,确保了节点的唯一性,避免节点没有受到惩罚就可以重新加入新的身份,放弃当前的身份;通过引入peertrust对节点进行信任评估,从而选择网路中高质量的节点作为共识节点,降低安全风险,提高效率;并通过信任激励的方式提高节点参与投票的积极性,此外降低投票权重对于代币的依赖性。

实施例2:

本发明的一种装置,包括:至少一个存储器和至少一个处理器,上述至少一个存储器,用于存储机器可读程序;上述至少一个处理器,用于调用所述机器可读程序,执行实施例1公开的方法。

实施例3:

本发明的一种介质,为计算机可读介质,该计算机可读介质上存储有计算机指令,上述计算机指令在被处理器执行时,使上述处理器执行实施例1公开的方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。

在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。

用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。

此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。

此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。

需要说明的是,上述各流程和各系统结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。

上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。

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