基于DPoS的云端数据溯源区块链共识机制改进方法技术

技术编号:25695380 阅读:79 留言:0更新日期:2020-09-18 21:06
本发明专利技术属于区块链中的共识机制技术领域,具体涉及一种基于DPoS的云端数据溯源区块链共识机制改进方法。本发明专利技术将云计算资源量化为DPoS共识机制中的权益,根据权益的大小为每个节点开启一个类似于Raft共识中的有偏计时器,分散了投票的结果;结合了“一人一票”的投票方法,在提高节点选举效率的同时保证了优质云资源拥有者的当选概率;通过在共识过程中引入反馈机制,使得在共识过程中发现超过50%节点不认可的区块,立即重新开始节点选举流程,保证了区块产生的正确性。本发明专利技术在共识过程中对资源的消耗更少,在大规模节点的情况下,共识速度更快,共识速度不易受节点数量影响,可以更好的服务于面向云计算的数据溯源模型BlockCloud。

【技术实现步骤摘要】
基于DPoS的云端数据溯源区块链共识机制改进方法
本专利技术属于区块链中的共识机制
,具体涉及一种基于DPoS的云端数据溯源区块链共识机制改进方法。
技术介绍
共识机制是区块链系统整体中最为关键的要素,它的效率直接决定着区块链系统的性能。PoW共识机制目前虽然安全稳定的服务于比特币、以太坊等区块链环境,但却因对资源的消耗巨大,生产区块的时间过久而饱受诟病。PoS共识机制是为解决PoW共识消耗资源过大的问题而产生的,它虽然能极大的缓解挖矿对资源的消耗问题,但是其共识速度依旧不够快。DPoS共识机制是PoS共识机制的改进版,相比于PoS共识机制,它产出区块的速度更快,对资源的消耗也更少,但它对区块链系统的中心化作出了一定的妥协。应用于云端数据溯源模型BlockCloud的共识机制CloudPoS,是PoS共识机制在云计算模型中的一种应用,它的目标是保持云数据交易的分布式帐本的一致性状态。CloudPoS将云服务提供商CSP作为共识内容的一部分,CSP将扮演共识节点管理者的角色。在CloudPoS共识机制中,任何云用户都可以自由参与区块链共识流程,因为它们可以在CSP那里验证其身份和确定其与CSP的隶属关系。该机制将N个完全连接的云端节点{P1,P2,...,PN}称为Validator,这些节点是共识过程的参与者。在这种情况下,PoS中参与共识的节点将是云计算架构中的虚拟节点,N个云端节点负责维护区块链的整体运转。在共识开始之前,Validator将收集数据溯源作为交易,为之后区块的生成提供内容。与加密货币类似,共识节点必须拥有一定的来自CSP的虚拟资源,作为共识过程中的虚拟货币。CSP通过将参与共识的云用户的空闲资源,用做PoS共识机制中用户的权益。在CloudPoS中,共识的过程发生在一些不同的时间段间,这些时间段可以被定义为Epoch。在每个Epoch结束时,都会有一个包含交易的区块被成功确认,从而在区块链上扩展一个区块。在每个Epoch中,例如领导人选举、交易验证和多方确认等任务都将在新区块正式连入区块链之前完成。CloudPoS目前能够正常的服务于BlockCloud云端数据溯源模型,但是它存在着资源消耗过大的问题,随着参与共识的云端节点增多,共识所造成的资源消耗将急剧增加,从而严重影响共识效率。
技术实现思路
本专利技术的目的在于提供减少BlockCloud对资源的消耗,提高其工作效率以及提升其对大规模节点的支持能力的一种基于DPoS的云端数据溯源区块链共识机制改进方法。本专利技术的目的通过如下技术方案来实现:包括以下步骤:步骤1:区块链系统将向云服务提供商CSP询问云端虚拟节点集合N中每个节点所代表的用户为维护区块链贡献的资源量,根据资源量的多少从大到小将节点排序;步骤2:区块链系统向排序为前l的节点发送消息<HASH(PreBlockHead),Round,Ni>;其中,HASH(PreBlockHead)为前一个区块头部的哈希值;Round为当前选举的轮次信息;步骤3:收到信息的节点Ni从当前的区块链中获取前一个区块的区块头部,提取其中的Round信息后,将其加1,并计算前一个区块头部的哈希值HASH(PreBlockHead);步骤4:若节点Ni计算得出的HASH(PreBlockHead)与Round信息和收到的信息完全一致,则节点Ni计算HASH(HASH(PreBlockHead),Round,Ni)的值,并广播消息<HASH(HASH(PreBlockHead),Round,Ni),Ni>;否则节点Ni会忽略掉此条信息;步骤5:区块链系统将节点Ni划分到共识节点集合NC中,以(int)(Random()*l+i)作为该节点在本轮投票中的编号;步骤6:若区块链系统收到l条<HASH(HASH(PreBlockHead),Round,Ni),Ni>的验证消息,则区块链系统将共识节点集合NC进行广播;若区块链系统收到的验证消息不足l条,则区块链系统按照缺少的数量,依照排名顺延发送消息<HASH(PreBlockHead),Round,Ni>,返回步骤3;步骤7:区块链系统将云端虚拟节点集合N中未进入共识节点集合NC中的节点划分为交易节点集合NT;步骤8:区块链系统将向云服务提供商CSP确认共识节点集合NC中每个节点所代表的用户为维护区块链贡献的资源量,锁定用户资源;计算共识节点集合NC中的每个节点偏向成为见证者的概率{P1(Round),P2(Round),P3(Round),...,Pl(Round)};为共识节点集合NC中的每个节点开启TIMER;步骤9:当共识节点集合NC中的节点的TIMER到期后,区块链系统将向交易节点集合NT中的节点发送消息<(int)(Random()*l+i),Round>;步骤10:交易节点集合NT中的节点收到<(int)(Random()*l+i),Round>消息后,若确认Round信息无误且自身仍没有投过票,则将私钥和作为签名函数<Message>Prk=Sign(Message,Prk)的输入,计算得到后,广播消息步骤11:区块链系统收到从交易节点集合NT中的节点广播的消息后,将的公钥与信息作为解签名函数Message=Unsign(<Message>PrK,PuK)的输入,得到原始信息步骤12:区块链系统对已收到的相同的随机数(int)(Random()*l+i)进行统计,得出共识节点集合NC中每个节点获得的总票数;步骤13:区块链系统根据共识节点集合NC中每个节点获得的总票数进行排名,选出得票数量排名最高的前m个节点,构建见证者节点集合NW;共识节点集合NC中其余节点组成参与者节点集合NP;步骤14:区块链系统将见证者节点集合NW进行乱序处理后与参与者节点集合NP一并广播至区块链网络中,各节点更新自身的身份,并保存节点集信息;步骤15:见证者节点集合NW中的节点生成一个区块,区块中包含了上一个区块的哈希值HASH(PreBlock)、状态标签INITIAL、节点选举轮次Round、当前的见证者节点集合NW、生产区块的见证者节点序号,区块的时间戳TimeStamp、近期的交易TX和由交易信息生成的Merkle树的树根MerkleRoot;步骤16:区块链系统根据见证者节点集合NW中的排序,确认下一个生产区块的见证者节点是否能够继续参与共识过程,如果确认失败将触发节点的重新选举,而确认成功的见证者节点集合NW负责将自己生产的区块广播至区块链网络中;步骤17:交易节点集合NT中的节点转发收到的参与者节点集合中的节点提取中的交易信息TX,根据自己手中与TX对应的交易信息生成Merkle树,然后与收到的区块中的所有信息进行比较;若节点中的信息与收到的区块中的所有信息完全一致,则节点将自己的私钥与收到的区块作为签名函数的输入,签名后广播此消息;否则,节点将根据收到区块所提供的信息生成一个自己认为正确的区块将与自己的私钥作本文档来自技高网
...

【技术保护点】
1.一种基于DPoS的云端数据溯源区块链共识机制改进方法,其特征在于,包括以下步骤:/n步骤1:区块链系统将向云服务提供商CSP询问云端虚拟节点集合N中每个节点所代表的用户为维护区块链贡献的资源量,根据资源量的多少从大到小将节点排序;/n步骤2:区块链系统向排序为前l的节点发送消息<HASH(PreBlockHead),Round,N

【技术特征摘要】
1.一种基于DPoS的云端数据溯源区块链共识机制改进方法,其特征在于,包括以下步骤:
步骤1:区块链系统将向云服务提供商CSP询问云端虚拟节点集合N中每个节点所代表的用户为维护区块链贡献的资源量,根据资源量的多少从大到小将节点排序;
步骤2:区块链系统向排序为前l的节点发送消息<HASH(PreBlockHead),Round,Ni>;其中,HASH(PreBlockHead)为前一个区块头部的哈希值;Round为当前选举的轮次信息;
步骤3:收到信息的节点Ni从当前的区块链中获取前一个区块的区块头部,提取其中的Round信息后,将其加1,并计算前一个区块头部的哈希值HASH(PreBlockHead);
步骤4:若节点Ni计算得出的HASH(PreBlockHead)与Round信息和收到的信息完全一致,则节点Ni计算HASH(HASH(PreBlockHead),Round,Ni)的值,并广播消息<HASH(HASH(PreBlockHead),Round,Ni),Ni>;否则节点Ni会忽略掉此条信息;
步骤5:区块链系统将节点Ni划分到共识节点集合NC中,以(int)(Random()*l+i)作为该节点在本轮投票中的编号;
步骤6:若区块链系统收到l条<HASH(HASH(PreBlockHead),Round,Ni),Ni>的验证消息,则区块链系统将共识节点集合NC进行广播;
若区块链系统收到的验证消息不足l条,则区块链系统按照缺少的数量,依照排名顺延发送消息<HASH(PreBlockHead),Round,Ni>,返回步骤3;
步骤7:区块链系统将云端虚拟节点集合N中未进入共识节点集合NC中的节点划分为交易节点集合NT;
步骤8:区块链系统将向云服务提供商CSP确认共识节点集合NC中每个节点所代表的用户为维护区块链贡献的资源量,锁定用户资源;计算共识节点集合NC中的每个节点偏向成为见证者的概率{P1(Round),P2(Round),P3(Round),...,Pl(Round)};为共识节点集合NC中的每个节点开启TIMER;
步骤9:当共识节点集合NC中的节点的TIMER到期后,区块链系统将向交易节点集合NT中的节点发送消息<(int)(Random()*l+i),Round>;
步骤10:交易节点集合NT中的节点收到<(int)(Random()*l+i),Round>消息后,若确认Round信息无误且自身仍没有投过票,则将私钥和作为签名函数<Message>Prk=Sign(Message,Prk)的输入,计算得到后,广播消息
步骤11:区块链系统收到从交易节点集合NT中的节点广播的消息后,将的公钥与信息作为解签名函数Message=Unsign(<Message>PrK,PuK)的输入,得到原始信息
步骤12:区块链系统对已收到的相同的随机数(int)(Random()*l+i)进行统计,得出共识节点集合NC中每个节点获得的总票数;
步骤13:区块链系统根据共识节点集合NC中每个节点获得的总票数进行排名,选出得票数量排名最高的前m个节点,构建见证者节点集合NW;共识节点集合NC中其余节点组成参与者节点集合NP;
步骤14:区块链系统将见证者节点集合NW进行乱序处理后与参...

【专利技术属性】
技术研发人员:杨武玄世昌王巍苘大鹏吕继光陈治瑀
申请(专利权)人:哈尔滨工程大学
类型:发明
国别省市:黑龙江;23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1