一种优化区块链可信节点与共识算法的装置
技术领域
本发明涉及计算机技术领域,具体涉及一种优化区块链可信节点与共识算法的装置。
背景技术
区块链架构是一种分布式的架构。其部署模式有公共链、联盟链、私有链三种,对应的是去中心化分布式系统、部分去中心化分布式系统和弱中心分布式系统。
在分布式系统中,多个主机(节点)通过异步通信方式组成网络集群。在这样的一个异步系统中,需要主机之间进行状态复制,以保证每个主机达成一致的状态共识。然而,异步系统中,可能出现无法通信的故障主机,而主机的性能可能下降,网络可能拥塞,这些可能导致错误信息在系统内传播。因此需要在默认不可靠的异步网络中定义容错协议,以确保各主机达成安全可靠的状态共识。
所谓共识,简单理解就是指大家都达成一致的意思。其实在现实生活中,有很多需要达成共识的场景,比如开会讨论,双方或多方签订一份合作协议等。而在区块链系统中,每个节点必须要做的事情就是让自己的账本跟其他节点的账本保持一致。如果是在传统的软件结构中,这几乎就不是问题,因为有一个中心服务器存在,也就是所谓的主库,其他的从库向主库看齐就行了。在实际生活中,很多事情人们也都是按照这种思路来的,比如企业老板发布一个通知,员工照着做。但是区块链是一个分布式的对等网络结构,在这个结构中没有哪个节点是“老大”,一切都要商量着来;所以在区块链系统中,如何让每个节点通过一个规则将各自的数据保持一致是一个很核心的问题,这个问题的解决方案就是制定一套共识算法,实现不同账本节点上的账本数据的一致性和正确性。这就需要借鉴已有的在分布式系统中实现状态共识的算法,确定网络中选择记账节点的机制,以及如何保障账本数据在全网中形成正确、一致的共识。
共识算法其实就是一个规则,每个节点都按照这个规则去确认各自的数据。我们暂且抛开算法的原理,先来想一想在生活中我们会如何解决这样一个问题:假设一群人开会,这群人中没有一个领导或者说老大,大家各抒己见,那么最后如何统一出一个决定出来,实际处理的时候,我们一般会在某一个时间段中选出一个人,那个人负责汇总大家的内容,然后发布完整的意见,其他人投票表决,每个人都有机会来做汇总发表,最后谁的支持者多就以谁的最终意见为准。这种思路其实就算是一种共识算法了。然而在实际过程中,如果人数不多并且数量是确定的,还好处理;如果人数很多且数量也不固定,那就很难通过这种方式投票决定了,效率太低。我们需要通过一种机制筛选出最有代表性的人,在共识算法中就是筛选出具有代表性的节点。
如何筛选其实就是设置一组条件,就像筛选尖子生一样,给一组指标让大家来完成,谁能更好地完成指标,谁就能有机会被选上。在区块链系统中,存在着多种这样的筛选方案,比如PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)、PoW(Proof of Work,工作量证明)、PoS(Proof of Stake,权益证明)、DPoS(Delegate Proofof Stake,委托权益证明)、Ripple(瑞波)等,各种不同的算法,其实就是不同的筛选方案。
由于区块链每一笔交易记账,均需要通过区块链网络广播到共识节点,基于共识算法先对账后记账,产生交易区块后再上链存证,因此,区块链的TPS和中心化系统比较,明显要慢,这也是区块链最大的缺点与技术瓶颈。
发明内容
本发明的目的是针对现有技术存在的不足,提供一种优化区块链可信节点与共识算法的装置。
为实现上述目的,本发明提供了一种优化区块链可信节点与共识算法的装置,该装置与区块链中的节点一一对应连接,包括处理模块、加密引擎、接口模块和存储模块,所述存储模块用于存储国密算法,所述处理模块用于控制加密引擎根据所述国密算法随机生成第一公私钥对和第二公私钥对,所述第一公私钥对包括第一公钥和第一私钥,所述第二公私钥对包括第二公钥和第二私钥,所述接口模块用于实现装置与节点连接,以将所述第一公钥和第二公钥提供至节点,所述节点将第一公钥和第二公钥发送至联盟节点机构,所述联盟节点机构采用第一公钥向联盟认证中心申请第一CA身份认证,并使其它节点的装置可通过联盟认证中心获取所述第一公钥,所述第一CA身份认证作为节点的身份信息建立信道并完成节点共识,所述联盟节点机构采用第二公钥向机构内部部门用户或管理员颁发第二CA身份认证,所述第二CA身份认证作为用户的身份信息,所述存储模块用于加密存储本节点的第一私钥和第二私钥以及从联盟认证中心获取其它节点的装置生成的第一公钥,所述接口模块用于接收待采用第一公钥加密的数据以及待采用第一私钥或第二私钥解密的数据,并将采用第一公钥加密后的数据以及采用第一私钥或第二私钥解密后的数据发出。
进一步的,所述完成节点共识包括:
设定每一节点的选举计时时间,所述节点的开始状态设定为Follower;
在某一节点选举计时结束后,将节点的状态变成Candidate,同时向其它节点发送选举请求信息;
其它节点根据raft算法结果返回选举信息,当其它节点返回的选举信息中赞同占比超过设定阈值时,则发送选举请求信息的节点的状态由Candidate变成leader;
状态为leader的节点每隔设定时间发送一个heartbeat,以保持所有节点的状态,状态为Follower的节点在收到heartbeat后重设选举计时时间。
进一步的,所述设定阈值为50%。
进一步的,如状态为leader的节点出现故障,则从状态为Follower的节点里再次选举出一个新的状态为leader的节点,原状态为leader的节点在故障恢复后,自动降级为Follower。
进一步的,若同时出现两个以上的节点的状态由Follower变成Candidate,且各状态为Candidate的节点的得到的赞同占比均未超出设定阈值时,则以选举计时先到的状态为Candidate的节点再次发送选举请求信息,进行下一轮选举,直至选举出新的leader节点。
进一步的,所述国密算法包括sm2、sm3和sm4算法。
进一步的,所述存储模块包括SRAM存储器和Flash存储器。
进一步的,所述接口模块包括USB接口、SPI接口、UART接口、GPIO接口和IIC接口中的一种或任意组合。
有益效果:本发明通过在区块链中的每个节点上增加一个装置,将fabric原生的软件实现的算法改成了由硬件芯片完成,节点的密钥生成和数据的加解密操作均在装置内进行,装置可采用现有的技术手段实现抗攻击特性,真正实现了物理上可信的区块链节点,不但提高了运算速度,也大大提升了算法的安全性。
附图说明
图1是本发明实施例的优化区块链可信节点与共识算法的装置的结构示意图。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,本实施例在以本发明技术方案为前提下进行实施,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围。
如图1至所示,本发明实施例提供了一种优化区块链可信节点与共识算法的装置,该装置与区块链中的节点一一对应连接,即一个节点连接一个本发明实施例的装置。该装置包括处理模块1、加密引擎2、接口模块3和存储模块4。其中,存储模块4包括SRAM存储器和Flash存储器。存储模块4用于存储国密算法,可采用的国密算法包括sm2、sm3和sm4算法。处理模块1用于控制加密引擎2根据国密算法随机生成第一公私钥对和第二公私钥对。其中,第一公私钥对包括第一公钥和第一私钥,第二公私钥对包括第二公钥和第二私钥,接口模块3用于实现装置与节点之间的连接,接口模块3将第一公钥和第二公钥提供至本装置连接的节点,节点将第一公钥和第二公钥发送至联盟节点机构,联盟节点机构采用第一公钥向联盟认证中心申请第一CA身份认证,并使其它节点的装置可通过联盟认证中心获取本节点的装置生成的第一公钥,第一CA身份认证作为节点的身份信息建立信道并完成节点共识,联盟节点机构采用第二公钥向机构内部部门用户或管理员颁发第二CA身份认证,第二CA身份认证作为用户的身份信息,存储模块4还用于加密存储本节点的装置的加密引擎2生成的第一私钥和第二私钥,还用于存储通过本节点的装置的接口模块3从联盟认证中心获取其它节点的装置生成的第一公钥,接口模块3用于接收待采用第一公钥加密的数据以及待采用第一私钥或第二私钥解密的数据,并将采用第一公钥加密后的数据以及采用第一私钥或第二私钥解密后的数据发出。
具体的,以区块链中包括A、B、C、D和E五个节点,A、B、C、D和E五个节点各连接一个本发明实施例的装置,A节点的装置的生成的第一公钥和第二公钥通过接口模块3发送至联盟节点机构,联盟节点机构进而,B、C、D和E这四个节点可通过联盟认证中心可获取到A节点的第一公钥并存储,同理,每一节点装置都可以通过联盟认证中心获取到该区块链中其它节点的第一公钥,并存储在各自的存储模块4中。第一公钥用于在数据发送时对数据进行加密,以A节点向C节点发送数据为例说明,A节点的装置的加密引擎2采用本装置的存储模块4存储的C节点的第一公钥进行加密,然后通过A节点的装置的接口模块3将加密后的数据发送给A节点,A节点进一步将加密后的数据发送给C节点,C节点的装置通过其接口模块3接收A节点发送来的数据,然后采用C节点自己的第一私钥对数据进行解密,然后通过C节点的装置的接口模块3将解密后的数据发送给节点C。第二公钥无需在存储模块4中存储,它往区块链上提交业务使用的,比如转账交易,第二公钥代表账户地址,别的用户可以通过第二公钥进行转账,该交易数据
本发明实施例是基于raft共识协议的来完成节点共识的,具体包括:
设定每一节点的选举计时时间,节点的开始状态设定为Follower。
在某一节点选举计时结束后,将节点的状态变成Candidate,同时向其它节点发送选举请求信息。
其它节点根据raft算法结果返回选举信息,当其它节点返回的选举信息中赞同占比超过设定阈值时,则发送选举请求信息的节点的状态由Candidate变成leader。此处的设定阈值优选为50%。
状态为leader的节点每隔设定时间发送一个heartbeat,以保持所有节点的状态,状态为Follower的节点在收到heartbeat后重设选举计时时间。
如状态为leader的节点出现故障,则从状态为Follower的节点里再次选举出一个新的状态为leader的节点,原状态为leader的节点在故障恢复后,自动降级为Follower。
若同时出现两个以上的节点的状态由Follower变成Candidate,且各状态为Candidate的节点的得到的赞同占比均未超出设定阈值时,则以选举计时先到的状态为Candidate的节点再次发送选举请求信息,进行下一轮选举,直至选举出新的leader节点。
本发明实施例的接口模块3可以采用USB接口、SPI接口、UART接口、GPIO接口和IIC接口中的一种或任意组合。
此外,本发明实例的装置还优选可通过现有的技术手段实现符合安可联盟标准、通过国家密码管理局密评3级认证和抗侧信道和物理攻击。并且具备防暴力拆解的自毁功能,预防异常攻击。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,其它未具体描述的部分,属于现有技术或公知常识。在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。