一种区块链节点共识方法、装置、电子设备及存储介质制造方法及图纸

技术编号:25314736 阅读:27 留言:0更新日期:2020-08-18 22:31
本发明专利技术实施例公开了一种区块链节点共识方法、装置、电子设备及存储介质,本发明专利技术实施例针对区块链数据结构特点,为每个区块均设置一个区块校验值,由前一个区块全部内容合并本区块值,然后再做哈希形成,如此相互衔接,因此,只要根据各节点最大区块编号和最大区块编号对应的区块校验值即可确定出网络中数据完备无偏差的区块链领导节点,此外,类似地,由于区块校验值由前一个区块全部内容合并本区块值,然后再做哈希形成,如此相互衔接,因此只要核对区块链最高位的区块校验值以及最大区块编号一致,就可以保证整个区块链数据的一致性。

【技术实现步骤摘要】
一种区块链节点共识方法、装置、电子设备及存储介质
本专利技术涉及计算机
,具体涉及一种区块链节点共识方法、装置、电子设备及存储介质。
技术介绍
区块链技术被认为是继蒸汽机、电力、互联网之后的颠覆性创新。如果说蒸汽机和电力解放了生产力,互联网改变了信息传递的方式,那么区块链作为构造信任的机器,将可能改变价值传递方式。区块链从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任“基础,创造了可靠的“合作”机制,具有广阔的运用前景。从科技层面来看,区块链涉及数学、密码学、互联网和计算机编程等很多科学技术问题。从应用视角来看,简单来说,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实”与“透明”,为区块链创造信任奠定基础。而区块链丰富的应用场景,基本上都基于区块链能够解决信息不对称问题,实现多个主体之间的协作信任与一致行动。对于区块链各节点来说,保持各节点数据一致性是非常重要的。Raft协议是为了使服务器节点数据保持一致性的一种共识算法,Raft协议主要使用了两种策略。一是将在Raft体系中,有一个强leader,由它全权负责接收客户端的请求命令,并将命令作为日志条目赋值给其他服务器,在确认安全的时候,将日志命令提交执行。二是当leader故障时,会选举产生一个新的leader。在强leader的帮助下,Raft将一致性问题分解为了三个子问题:1、leader选举:当已有的leader故障时必须选出一个新的leader。2、日志复制:leader接受来自客户端的命令,记录为日志,并复制给集群中的其他服务器,并强制其他节点的日志与leader保持一致。3、安全safety措施:通过一些措施确保系统的安全性,如确保所有状态机按照相同顺序执行相同命令的措施。在传统的Raft算法中,节点一种有三种状态:leader(领导)、candidate(候选人)、follower(群众)。节点都是从群众状态开始的,如果收到了来自领导的心跳信息,那它就保持群众状态,避免争抢成为候选人。领导会发送心跳信号来确立自己的地位,如果群众一段时间没有收到心跳,它就会认为领导不在了,发起新的一轮选举。在选举leader节点过程中,算法必须要解决的一个问题是:需要防止数据不完整、不准确的节点当选为新的领导节点。然而,目前的Raft算法并不能够很好地解决这个问题。例如,目前的Raft算法在选举leader节点过程中,无法保证选取出的新的领导节点是网络中数据完备无偏差的节点。
技术实现思路
由于现有方法存在上述问题,本专利技术实施例提出一种区块链节点共识方法、装置、电子设备及存储介质。第一方面,本专利技术实施例提供了一种区块链节点共识方法,包括:为每个区块增加区块校验值,所述区块校验值由前一个区块的全部内容合并当前区块的数据并进行哈希计算后确定;根据各节点最大区块编号和最大区块编号对应的区块校验值确定区块链的领导节点,以及,根据各节点最大区块编号对应的区块校验值检查各节点数据的一致性。进一步地,所述为每个区块增加区块校验值,所述区块校验值由前一个区块的全部内容合并当前区块的数据并进行哈希计算后确定,具体包括:在区块链底层为每个区块建立区块数据结构,所述区块数据结构包括:区块编号、数据值、前一区块编号、区块校验值和时间戳;其中,区块编号从统一的创世区块开始,创世编号为0,后面出现的区块编号顺序增加;数据值为外界传入的具体数据;前一区块编号为前一个区块的编号,与本区块编号相差整数1,时间戳为领导节点存储区块的具体时间;所述区块校验值的计算方式为:将前一区块的所有值进行序列化,得到前一区块序列化值,将前一区块序列化值叠加本区块的数据值,得到原始数值,应用国密SM3哈希散列加密算法,对所述原始数值进行哈希计算,得到本区块的区块校验值。进一步地,所述根据各节点最大区块编号和最大区块编号对应的区块校验值确定区块链的领导节点,以及,根据各节点最大区块编号对应的区块校验值检查各节点数据的一致性,具体包括:在预设时间内未收到领导节点的心跳时,各群众节点将自身节点转换成候选节点,并向除自身节点以外的其他各节点发送投票请求;所述投票请求中包括:本节点最大区块编号和最大区块编号对应的区块校验值;其中,所述最大区块编号的具体确定方法为:自身节点根据区块校验值就是前一个区块所有值加本区块数据值,然后取哈希这一逻辑,对自身区块链做自检,在不能满足这个条件时,则自身节点的最大区块编号为首次不能满足的区块编号减去1;其他各节点在接收到投票请求后,判断是否满足下述条件,并在确定满足下述条件后为候选节点投票:条件1:候选节点的最大区块编号不低于最近收到的来源于领导节点的最大区块编号和自身的最大区块编号;条件2:候选节点的最大区块编号对应的区块校验值和最近收到的来源于领导节点的最大区块编号对应的区块校验值以及自己节点的最大区块编号对应的区块校验值一致;条件3:选举节点也处于心跳超时状态;在确定候选节点收到的投票数量满足预设条件后,将候选节点转变成领导节点,并在成为领导节点的第一时间向除自身节点以外的其他节点发送心跳,所述其他节点在收到心跳后,第一时间把自身节点设置成为群众节点,并开始新一轮的心跳计时。进一步地,所述区块链节点共识方法,还包括:当任何一个节点在收到上链数据请求时,把所述上链数据请求转发给当前时刻的领导节点,由领导节点首先在本节点增加数据。进一步地,所述区块链节点共识方法,还包括:各群众节点在收到领导节点心跳时,把本节点最大区块编号对应的区块校验值发送给领导节点,领导节点根据各群众节点最大区块编号对应的区块校验值检查各群众节点是否与领导节点完整一致,若否,则将需要增加的节点数据发送给相应的群众节点,以保持整个系统数据的一致性。进一步地,所述区块链节点共识方法,还包括:为每一个节点设置客户端,客户端具备http调用接口,用于接受外来请求和回复请求;其中,http调用接口包括以下几种:一般存证:客户端接到明文存证请求后,查询此刻领导节点网络地址,转发给领导节点,领导节点统一编号,计算区块校验值,把数据保存到区块链,然后通过心跳机制,在整个节点网络中传播;密文存证:客户端接收到密文存证请求后,调用本地秘钥,对数据加密,然后接入所述一般存证的处理过程中;哈希存证:客户端接收到哈希存证请求后,调用国密SM3算法,对数据取哈希,然后接入所述一般存证的处理过程中;签名存证:客户端接收到签名存证请求后,调用本地国密SM2秘钥,对数据签名,然后把数据、签名、公钥值接入所述一般存证的处理过程中。进一步地,所述区块链节点共识方法采用rust语言进行代码实现。第二方面,本专利技术实施例提供了一种区块链节点共识装置,本文档来自技高网
...

【技术保护点】
1.一种区块链节点共识方法,其特征在于,包括:/n为每个区块增加区块校验值,所述区块校验值由前一个区块的全部内容合并当前区块的数据并进行哈希计算后确定;/n根据各节点最大区块编号和最大区块编号对应的区块校验值确定区块链的领导节点,以及,根据各节点最大区块编号对应的区块校验值检查各节点数据的一致性。/n

【技术特征摘要】
1.一种区块链节点共识方法,其特征在于,包括:
为每个区块增加区块校验值,所述区块校验值由前一个区块的全部内容合并当前区块的数据并进行哈希计算后确定;
根据各节点最大区块编号和最大区块编号对应的区块校验值确定区块链的领导节点,以及,根据各节点最大区块编号对应的区块校验值检查各节点数据的一致性。


2.根据权利要求1所述的区块链节点共识方法,其特征在于,所述为每个区块增加区块校验值,所述区块校验值由前一个区块的全部内容合并当前区块的数据并进行哈希计算后确定,具体包括:
在区块链底层为每个区块建立区块数据结构,所述区块数据结构包括:区块编号、数据值、前一区块编号、区块校验值和时间戳;其中,区块编号从统一的创世区块开始,创世编号为0,后面出现的区块编号顺序增加;数据值为外界传入的具体数据;前一区块编号为前一个区块的编号,与本区块编号相差整数1,时间戳为领导节点存储区块的具体时间;所述区块校验值的计算方式为:将前一区块的所有值进行序列化,得到前一区块序列化值,将前一区块序列化值叠加本区块的数据值,得到原始数值,应用国密SM3哈希散列加密算法,对所述原始数值进行哈希计算,得到本区块的区块校验值。


3.根据权利要求2所述的区块链节点共识方法,其特征在于,所述根据各节点最大区块编号和最大区块编号对应的区块校验值确定区块链的领导节点,以及,根据各节点最大区块编号对应的区块校验值检查各节点数据的一致性,具体包括:
在预设时间内未收到领导节点的心跳时,各群众节点将自身节点转换成候选节点,并向除自身节点以外的其他各节点发送投票请求;所述投票请求中包括:本节点最大区块编号和最大区块编号对应的区块校验值;其中,所述最大区块编号的具体确定方法为:自身节点根据区块校验值就是前一个区块所有值加本区块数据值,然后取哈希这一逻辑,对自身区块链做自检,在不能满足这个条件时,则自身节点的最大区块编号为首次不能满足的区块编号减去1;
其他各节点在接收到投票请求后,判断是否满足下述条件,并在确定满足下述条件后为候选节点投票:条件1:候选节点的最大区块编号不低于最近收到的来源于领导节点的最大区块编号和自身的最大区块编号;条件2:候选节点的最大区块编号对应的区块校验值和最近收到的来源于领导节点的最大区块编号对应的区块校验值以及自己节点的最大区块编号对应的区块校验值一致;条件3:选举节点也处于心跳超时状态;
在确定候选节点收到的投票数量满足预设条件后,将候选节点转变成领导节点,并在成为领导节点的第一时间向除自身节点以外的其他节点发送心跳,所述其他节点在收到心跳后,第...

【专利技术属性】
技术研发人员:王奇王海英
申请(专利权)人:中信梧桐港供应链管理有限公司
类型:发明
国别省市:北京;11

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

1