基于信任机制的区块链DPoS共识方法与流程

文档序号:17430081发布日期:2019-04-17 03:22阅读:323来源:国知局
基于信任机制的区块链DPoS共识方法与流程

本发明涉及一种基于信任机制的区块链dpos共识方法,该方法引入节点信任度和信任能级概念,利用信任机制降低代理节点选取及记账节点工作中恶意节点对系统的影响,并能够提高节点参与的积极性,属于区块链技术领域。



背景技术:

区块链可以看作是一种分布式账本(分布式数据库),依靠“群智”(分布式共识机制)构建可信共识的分布式系统,具有记录不可篡改性、可溯源性。区块链是人类信用进化史上继血亲信用、贵金属信用、央行纸币信用之后的一个里程碑。共识机制是区块链的核心,解决了如何在一个缺乏信任、完全自由开放的网络中达成共识的问题。

目前区块链的共识方法主要包括:工作量证明(proofofwork,pow)、权益证明(proofofstake,pos)、股份授权证明(delegateproofofstake,dpos)。其中,pow共识方法较为成熟,通过分布式节点的算力竞争来保证数据的一整性和数据的安全性,但其强大的算力造成了资源浪费(主要是电力资源),并且10分钟的交易确认时间不适合小额交易的商业应用。pos共识方法由系统中具有最高权益而非最高算力的节点获得记账权,其权益体现为节点对特定货币的所有权。pos一定程度解决了pow算力浪费的问题,并能缩短达成共识的时间,但其信用基础不够牢靠,并且存在垄断的风险。dpos是一种“民主集中式”的记账方式,由系统中节点投票选出代表,代表进行记账。dpos能解决pow浪费能源问题,也能弥补pos中拥有记账权益的参与者未必希望参与记账的缺点,但不能及时有效的阻止一些破坏节点的出现,给网络造成安全隐患。



技术实现要素:

发明目的:本发明目的是提出一种基于信任机制的区块链dpos共识方法,以解决区块链dpos共识方法中恶意节点占领记账权产生的安全隐患,以及散户投票积极性不高的问题。

技术方案:为实现上述发明目的,本发明采用如下技术方案:

一种基于信任机制的区块链dpos共识方法,该方法为区块链系统中节点定义信任度,并根据信任度值高低分为normal、warning、error三个信任能级;区块链网络中信任能级达到normal的节点可以选择申请竞选代理节点,将信任能级降到error的记账节点强制踢出代理节点集合;具体地,所述方法包括以下步骤:

(1)初始化区块链系统中节点信任度;

(2)利用信任权利机制选举出代理节点;选举过程中信任度能级为error的节点无法参加代理节点竞选,由信任能级不为error的节点为代理节点候选者投票,根据节点信任度与加入区块链系统的时间计算每个节点的投票权重,选取得票数前n个节点作为代理节点,n为系统设定的代理节点个数;其中,节点的信任度越高以及加入系统的时间越长,节点投票所占权重越大,若节点信任能级达到error状态,则时间清零直到恢复到waring状态再重新计算时间;

(3)在步骤(2)选取的代理节点中根据基于可验证随机函数选取出记账节点;同一时刻,区块链网络中仅有一个记账节点;记账节点执行一定时间的任务后选取下一个记账节点,重复n次后,进行下一轮的代理节点选取;

(4)在区块链网络运行过程中对节点行为进行信任奖惩;对于记账节点,如果产生恶意区块,则扣除信任度,如果产生正确区块则奖励信任度,若记账节点信任能级降到error状态则会被强制踢出代理节点集合;对于普通节点,参与投票可以获得信任度奖励。

在优选的实施方案中,步骤(2)中按照如下公式计算每个节点的投票权重:

其中,代表节点ndi的投票权重,代表节点ndi的信任度,代表节点ndi加入区块链系统的时间,若节点达到error状态,则时间清零直到状态恢复到waring状态再重新计算时间。

在优选的实施方案中,步骤(2)中按照如下公式计算代理节点候选者的得票数:

其中,vote(cj,ndi)代表节点ndi给代理节点候选者cj的投票情况,代表代表节点候选者cj的得票数。

在优选的实施方案中,步骤(3)中采用rsa-fdh-vrf可验证随机函数在代理节点中抽选记账节点。具体包括如下步骤:

(3.1)代理节点通过rsa加密方法计算得到公钥和私钥,用于身份的证明;

(3.2)代理节点按得票数递减顺序轮流抽签,若抽签结果满足设定的阈值范围,则该代理节点抽中成为该轮次的记账节点,并向系统广播抽签结果和零知识证明;若当前代理节点抽取结果不满足设定的阈值范围,则转到下一个代理节点进行抽签直至抽取成功;

(3.3)节点接收到记账节点广播的随机数和零知识证明,对其进行验证,若验证成功则接收该节点为记账节点,否则按步骤(3.2)重新进行记账节点抽取;所有代理节点都抽签后则进行下一轮的代理节点选取。

在优选的实施方案中,在区块链网络运行过程中,对于所有节点,随着时间的流逝节点的信任度会以一定速度减少。具体地,步骤(4)中按照如下公式统计节点的信任度:

其中,为节点ndi获得的信任奖励,为节点ndi的信任惩罚,为节点ndi信任衰退的速度,δt为节点最近一次投票与系统最新一次投票次数差,若节点新一轮投票成功,则δt=0。

有益效果:本发明通过对节点进行信任奖惩和信任能级监控,及时将恶意节点排除在代理节点之外,并能提高普通节点的参与积极度,采用随机可确认函数选举记账节点,防止选举节点被预知,提高区块链共识方法的安全性。与现有技术相比,本发明提供的基于信任机制的区块链dpos共识方法具有如下优点:

(1)本发明以信任度作为节点权利评价指标,不需要额外的代币分发,可以避免个别节点控制系统的情况;

(2)本发明通过可验证随机函数抽选记账节点,选择结果具有随机性、不可预知性,可以避免选取结果被预知从而记账节点遭受提前攻击的情况。

(3)本发明利用信任奖惩机制,并对节点信任能级实时追踪,及时处理恶意节点,提高共识方法安全性。

附图说明

图1是基于信任机制的dpos共识方法的整体流程图;

图2是采用可验证随机函数进行记账节点抽取的流程图。

具体实施方式

下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

如图1所示,本发明实施例公开的一种基于信任机制的区块链dpos共识方法,该方法在具体实施时,首先为区块链系统中节点定义信任度和信任能级,然后通过信任权利机制选举出代理节点,接着采用可验证随机函数在代理节点中抽选出记账节点,最后在区块链网络运行中,对节点行为进行信任奖惩。具体各步骤的实施如下:

步骤1,初始化区块链系统中节点信任度。本实施例中信任度(trust,t)代表区块链系统中节点的信任程度的大小,信任度最大值为100,最小为0。区块链系统中节点按信任度分为error、warning、normal三个信任度能级,信任度能级按信任度值分级。本例中,节点信任度在[0,50)区间内为error能级,在[50,70)区间内为warning能级,在[70,100]区间内为normal能级。系统中所有节点集合记为nd={nd0,nd1,nd2,...,ndn-1},n为系统节点个数,所有新加入系统的节点信任度被初始化为初始值tinit,tinit=70。

步骤2,选取代理节点。本实施例中代理节点是在区块链系统中由信任权利机制选取出的n(n为奇数)个代表,非代理节点为普通节点。代理节点是记账节点候选人,在代理节点中选取记账节点。记账节点负责交易的确认、智能合约的执行、区块的打包与广播。代理节点的存在可以减少参与记账节点选取的节点数量,提高选取的效率。考虑到传统dpos共识方法采用持币数量作为股份权利证明,需要额外的代币分发,适用范围小,并且小散户的投票积极性不高。本实施例采用信任权利机制作为选举代理节点的方案,免去了冗余的代币制度,同时能提高小散户投票的参与度,该步骤实施过程分为2个子步骤:

子步骤2-1,节点申请竞选代理节点。本实施例中区块链系统中信任度能级达到normal的节点可以申请竞选代理节点成为代理节点候选者,组成代理节点候选者集合c={c0,c1,c2...cm-1},m为代理节点候选者的个数。信任度能级为error的节点无法参加代理节点竞选,以规避恶意节点对系统的影响。

子步骤2-2,投票选取n个代理节点。信任能级不为error的节点(包括代理节点候选者本身)可以为代理节点候选者投票,以节点信任度与加入区块链系统的时间作为信任度权利证明的量纲计算最终的投票结果。首先按公式(1)计算每个节点的投票权重。

公式(1)中,代表节点ndi的投票权重,代表节点ndi的信任度,代表节点ndi加入区块链系统的时间,若节点达到error状态,则时间清零直到状态恢复到waring状态再重新计算时间。节点的信任度越高以及加入系统的时间越长,节点投票所占权重越大。

然后根据公式(2)、公式(3)计算每个节点最终加权后获得的票数,最后选取得票数前n个节点作为代理节点d={d0,d1,d2,...,dn-1}。

公式(2)中vote(cj,ndi)表示节点ndi给代理节点候选者cj的投票情况,公式(3)中代表节点候选者cj的得票数。

步骤3,选取记账节点。同一时刻,区块链网络中仅有一个记账节点。记账节点执行一定时间的任务后选取下一个记账节点,重复n次后,进行下一轮的代理节点选取。传统dpos方法中常用的记账节点选取机制有轮询机制、投票选取机制。轮询机制每一次的选取结果可以提前被预知,记账节点容易遭受攻击。投票选取流程冗余且由于代理节点个数较小容易进行协同作弊。本实施例采用rsa-fdh-vrf可验证随机函数在代理节点中抽选记账节点,选取结果具有随机性,可以验证选取结果的真实性,并且抽取结果不能被预知。如图2所示,该步骤具体又分为3个子步骤。

子步骤3-1,代理节点生成密钥对。对于代理节点di通过rsa加密方法计算得到公钥和私钥用于身份的证明。

子步骤3-2,记账节点选取。代理节点按得票数递减顺序轮流通过公式(4)、公式(5)、公式(6)进行抽签,若抽签结果result>θ(θ为预先设定的阈值),则该代理节点抽中成为该轮次的记账节点,并向系统广播抽签结果result和零知识证明proof。

messaget=hash(sig(messaget-1,t))(4)

公式(4)中t代表当前选取轮次,sig为rsa签名函数,公式(5)、公式(6)中rsafdhvrf_hash、rsafdhvrf_proof分别为rsa-fdh-vrf的签名生成函数和证明生成函数,messaget表示第t轮次的随机信息,初始值messag0e由代理节点协议生成。

若当前代理节点抽取结果result≤θ,则转到下一个代理节点进行抽签直至抽取成功。

子步骤3-3,其他节点验证抽取结果。节点接收到记账节点广播的随机数和零知识证明,按公式(7)对其进行验证,若验证成功则接收该节点为记账节点,否则按子步骤3-2重新进行记账节点抽取。

公式(7)中rsafdhvrf_verify为rsa-fdh-vrf的零知识验证函数,结果为true代表验证成功,false代表验证失败。

步骤4,对节点行为进行信任奖惩。本实施例中对于节点的恶意行为进行信任惩罚,对节点的积极表现进行奖励,以提高节点参与度,减少恶意行为。

首先对于记账节点,如果产生恶意区块,则扣除信任度,如果产生正确区块则奖励一定信任度。若记账节点信任能级降到error状态,则系统进入中断状态,将error状态的记账节点踢出代理节点集合,按步骤2中的投票结果顺位补充一个代理节点,并重新选举记账节点。

其次对于普通节点,参与记账节点投票可以获得信任度奖励,若投中的记账节点在任期信任能级保持在normal状态,则可获得额外的信任奖励。

对于所有节点,都存在信任衰退,即随着时间的流逝节点的信任值会以一定速度减少。信任衰退机制可以督促节点参与到区块链系统的运行中去。

最终节点的信任度按公式(8)进行统计。

公式(8)中为节点ndi获得的信任奖励,为节点ndi的信任惩罚,为节点ndi信任衰退的速度,δt为节点最近一次投票与系统最新一次投票次数差。若节点新一轮投票成功,则δt=0,不产生信用衰退,以此鼓励节点积极参与投票。

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