一种区块链共识方法及系统与流程

文档序号:15818866发布日期:2018-11-02 22:54阅读:309来源:国知局
一种区块链共识方法及系统与流程

本发明涉及区块链技术领域,具体涉及了一种区块链共识方法及系统。

背景技术

目前,现有的互联网依然是信息互联网,极大地提高了传递信息的效率,然而却没有大大提高传递价值的效率。在没有银行或第三方信任机构的情况下,我们是无法在网络上进行价值交换的。下一代互联网,不仅能够实现信息通信,还能够实现价值的直接通信。区块链的诞生正是为了解决价值传递效率低的问题,目前区块链技术还在完成价值互联网的基础建设。

共识算法就是协调全网中所有数据一致性的算法协议,区块链中的各个节点按照该算法协议对数据进行验证确认,当得到大部分(不必全部节点)节点认可后,才算真实有效的数据,才能写入到区块链中,形成不可篡改的数据。共识机制解决了区块链如何在分布式场景下达成一致性的问题,可以从去中心化、网络通信成本、扩展性、安全机制、吞吐量、容错能力等方面来评估共识算法。

目前已经现了十余种共识机制算法,其中知名的有paxos、raft、pow(proofofwork,工作量证明)、pos(proofofstake,权益证明)、dpos(delegateproofofstake,股份授权证明)以及pbft(practicalbyzantinefaulttolerance,实用拜占庭容错算法)等。当然,没有一种共识机制是完美无缺的,同时这也意味着没有一种共识机制是适合所有应用场合的。

paxos算法是莱斯利·兰伯特于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。在传统分布式系统中,paxos是实现一致性的经典算法,但是这是一种需要协调者的机制,只有大多数法定人数接受读写操作才会确认,这是一种确定性强一致性。但是区块链是完全非集中化的,没有中央组织来决定哪些机器有权维护区块链,这样依靠法定人数的强一致性机制无法正常工作,因为无法指定法定人数。

raft是作为paxos的替代品而设计的共识算法。它提供了一种在集群中分布状态机的通用方法,确保集群中的每个节点都能在一系列的状态转换中达成一致。

pbft与paxos类似,也是一种采用许可投票、少数服从多数来选举领导者进行记账的共识机制。pbft算法在保证灵活性和安全性的前提下最大允许1/3的容错性,信息在节点之间互相交换后,各节点列出所有得到的信息最后以大多数的结果作为解决方法。

pow是依靠概率强一致性实现一致性共识的,称为nakamoto共识,是比特币创始人中本聪提出的。哈希算法具有不可逆的特点,因此,目前除了暴力计算外,还没有有效的算法进行解决。反之,如果获得符合要求的随机数值,则说明在概率上付出了对应的算力。谁的算力多,谁最先解决问题的概率就越大。pow不适用于私有链和联盟链,其原因首先是它是一个最终一致性共识算法,不是一个强一致性共识算法,以及pow的共识效率低。

pos主要思想是节点记账权的获得难度与节点持有的权益成反比,相对于pow,一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算竞争获取记账权的方式,可监管性弱。

dpos是pos概念的一种演变形式,记账权在一小部分参与者之间转移。这些参与记账的参与制是由每个节点选出的可以代表自己利益的,即类似于董事会的投票机制,选举出多个记账节点,后续提案由这些被选中的节点轮流处理。

上述各算法具有以下缺点:

虽然paxos、raft等传统的分布式一致性算法都是强调序列化,但是它们只考虑网络故障等非人为问题,而不考虑节点恶意篡改数据。此外,这些算法都是面向日志或数据库的,是更加底层的一致性算法,而区块链中涉及到的大多是交易数据,是偏向应用层的数据,不适用传统一致性方法。

pbft是一种可用的拜占庭容错算法,pbft并不依赖于代币的存在,共识效率高可以应用于高频交易场景。但是由于该算法的三个阶段是串行执行,存在共识通信复杂的问题。当有1/3或以上记账节点停止工作后,整个系统将无法运转。

pow是完全去中心化的,网络中节点可以自由进出,避免了建立和维护中心化信用机构的成本。pow的安全性直接取决于所花费计算工作量的大小。从能源角度来看,pow挖矿造成大量的资源浪费。据估计,在2013年,比特币采矿的能源消耗量(用于cpu和冷却系统运行的电力成本)等于爱尔兰国家。更大的问题是pow机制的共识达成的周期较长,每秒只能最多做7笔交易,不适合商业应用。基于挖矿的方式效率不高,且依赖于代币,但不是所有的应用场景都有代币的存在。

pos依靠内部币龄和权益而不再需要大量消耗外部算力和资源,降低了pow消耗算力的问题,并且在一定程度上缩短了共识达成的时间。但是,pos还是需要挖矿,本质上没有解决商业应用的痛点。另外拥有代币数量大的节点获得记账权的几率更大,会使得网络的共识受少数富裕账户支配,从而失去公正性。

dpos机制减少了记账节点的规模,属于弱中心化,但同时也大大提高了效率,也更加节能。大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。

如上表是各算法的对比。现有的区块链共识的方案中pow、pos达成一致的效率很低,挖矿造成大量的资源浪费。而paxos和raft不适用于拜占庭模型中,pbft的通信复杂性高,交互的代价高。



技术实现要素:

本发明目的在于克服现有技术的缺点与不足,提供了一种区块链共识方法,可保证区块链网络中节点获得领导权利的随机性,减少节点作恶的可能性,虚拟节点的设置弥补了节点异构性的不足,使得区块链达成一致性的效率高,成本低,而且实现简单。

本发明还提供一种区块链共识系统。

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

一种区块链共识方法,包括以下步骤:

建立哈希环,并将节点及其虚拟节点的哈希值和区块的哈希值映射到同一个哈希环上;

根据当前区块映射到哈希环上的地址,确定可接收验证消息并产生下一个区块权利的节点,该节点为领导节点,其余节点为跟随节点;

领导节点收到超过一半跟随节点对当前验证通过的消息后,将当前区块加入到区块链,广播确认消息和打包好的下一个区块内容给跟随者节点;

跟随节点收到广播消息并对消息验证通过后,将当前区块加入到区块链,然后对下一个区块进行验证,将验证消息发送给下一个领导节点。

本发明的作用原理:本发明方法将区块和节点及其虚拟节点的哈希值映射到同一个哈希环上;根据当前区块的哈希值确定获得接收验证消息和产生下一个区块广播全网权利的节点,通过利用哈希函数的伪随机性,保证了区块链网络中选举领导节点的随机性,降低固定领导节点的安全风险。本发明将节点的加入和退出简化为一条待认证的交易消息,当全网对该消息达成共识后,该节点正式加入或退出区块链网络,优于raft、pbft算法增加节点的复杂度。

进一步地,所述哈希环地址的范围是[0,2a-1],并且首尾相接,其中a为正整数,a数值由节点数量决定。

作为本发明的一种改进,所述根据当前区块映射到哈希环上的地址,确定可接收验证消息并产生下一个区块权利的领导节点的具体方式为:

若当前区块哈希值映射到哈希环上对应位置存在节点,则该节点转换为领导节点,其他节点转换为跟随节点;

若当前区块哈希值映射到哈希环上对应位置不存在节点,则沿哈希环顺时针寻找第一个存在的节点,则该节点转换为领导节点,其他节点转换为跟随节点。

作为本发明的一种改进,所述当前区块获得跟随节点验证通过的条件是:当前区块的包含内容需要达到区块可容纳交易数最大值的上限或者当前区块的等待时间需要达到产生区块的上限时间。

进一步地,所述每个节点拥有属于自己的公钥和私钥以及全网中其他所有节点的信息,所述节点的信息包括节点的公钥、节点名称、ip、端口和状态。

进一步地,所述的验证通过消息包括发出该消息的节点对消息的数字签名。

进一步地,每个节点所对应的虚拟节点数量是根据节点的性能和诚实度来确定的。

一种区块链共识系统,包括:

初始化模块,用于建立哈希环,并将节点及其虚拟节点的哈希值和区块的哈希值映射到同一个哈希环上;

区块产生模块,用于根据当前区块映射到哈希环上的地址,确定可接收验证消息并产生下一个区块权利的节点,该节点为领导节点,其余节点为跟随节点;

共识模块,用于领导节点收到超过一半跟随节点对当前区块验证通过的消息后,将当前区块加入到区块链,并广播确认消息和打包好的下一个区块内容给跟随者节点;

验证模块,用于跟随节点收到广播消息并对消息验证通过后,将当前区块加入到区块链,然后对下一个区块进行验证,将验证消息发送给下一个领导节点。

作为本发明的一种改进,所述根据当前区块映射到哈希环上的地址,确定可接收验证消息并产生下一个区块权利的领导节点的具体方式为:

若当前区块哈希值映射到哈希环上对应位置存在节点,则该节点转换为领导节点,其他节点转换为跟随节点;

若当前区块哈希值映射到哈希环上对应位置不存在节点,则沿哈希环顺时针寻找第一个存在的节点,则该节点转换为领导节点,其他节点转换为跟随节点。

作为本发明的一种改进,所述当前区块获得跟随节点验证通过的条件是:当前区块的包含内容需要达到区块可容纳交易数最大值的上限或者当前区块的等待时间需要达到产生区块的上限时间。

进一步地,所述每个节点拥有属于自己的公钥和私钥以及全网中其他所有节点的信息,所述节点的信息包括节点的公钥、节点名称、ip、端口和状态。

进一步地,每个节点所对应的虚拟节点数量是根据节点的性能和诚实度来确定的。

一种区块链共识系统,包括:存储器和至少一个处理器,其中:所述存储器存储有程序,并被配置成由所述至少一个处理器执行以下步骤:

建立哈希环,并将节点及其虚拟节点的哈希值和区块的哈希值映射到同一个哈希环上;

根据当前区块映射到哈希环上的地址,确定可接收验证消息并产生下一个区块权利的节点,该节点为领导节点,其余节点为跟随节点;

领导节点收到超过一半跟随节点对当前区块验证通过的消息后,将当前区块加入到区块链,广播确认消息和打包好的下一个区块内容给跟随者节点;

跟随节点收到广播消息并对消息验证通过后,将当前区块加入到区块链,然后对下一个区块进行验证,将验证消息发送给下一个领导节点。

与现有技术相比,本发明具有以下优点:

1、在区块链中创新地提出了哈希环空间的设计,区块和节点及其虚拟节点的哈希值映射到同一个哈希环上,根据当前区块的哈希值确定获得接收验证消息和产生下一个区块广播全网权利的节点,通过利用哈希函数的伪随机性,保证了区块链网络中选举领导节点的随机性,降低固定领导节点的安全风险。

2、在共识过程中,pbft算法利用通信复杂度o(n2)来达成共识,保证安全性;本发明方法中利用两轮通信复杂度为o(n)的消息传递达到共识效果,本发明方法的安全性通过密码学模型来保证,通信复杂度上优于pbft算法。

3、将节点的加入和退出简化为一条待认证的交易消息,当全网对该消息达成共识后,该节点正式加入或退出区块链网络,优于raft、pbft算法增减节点的复杂度。

4、引入虚拟节点技术,实现节点覆盖的均匀性。一个物理节点的虚拟节点数量,决定节点获得记账权的概率,通过对节点的虚拟节点增减来管理节点获得记账权的概率,并且通过虚拟节点个数的不同来缩小各节点之间的差异化,达到合理、有效的资源分配。

附图说明

图1为本发明区块链共识方法的流程图;

图2为本发明区块链共识方法哈希环的示意图;

图3为本发明区块链共识系统的示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。

实施例

请参考图1和图2,一种区块链共识方法,包括以下步骤:

s1、建立哈希环,并将节点及其虚拟节点的哈希值和区块的哈希值映射到同一个哈希环上;其中,所述哈希环地址的范围是[0,2a-1],并且首尾相接,其中a为正整数,a数值由节点数量决定。

本发明引入虚拟节点技术,实现节点覆盖的均匀性,一个物理节点的虚拟节点数量,决定节点获得记账权的概率,通过对节点的虚拟节点增减来管理节点获得记账权的概率,并且通过虚拟节点个数的不同来缩小各节点之间的差异化,达到合理、有效的资源分配。

s2、根据当前区块映射到哈希环上的地址,确定可接收验证消息并产生下一个区块权利的节点,该节点为领导节点,其余节点为跟随节点;具体地:

所述根据当前区块映射到哈希环上的地址,确定可接收验证消息并产生下一个区块权利的领导节点的具体方式为:

若当前区块哈希值映射到哈希环上对应位置存在节点,则该节点转换为领导节点,其他节点转换为跟随节点;

若当前区块哈希值映射到哈希环上对应位置不存在节点,则沿哈希环顺时针寻找第一个存在的节点,则该节点转换为领导节点,其他节点转换为跟随节点。

也即是本发明根据当前区块的哈希值确定获得接收验证消息和产生下一个区块广播全网权利的节点,通过利用哈希函数的伪随机性,保证了区块链网络中选举领导节点的随机性,降低固定领导节点的安全风险。

s3、领导节点收到超过一半跟随节点对当前区块验证通过的消息后,将当前区块加入到区块链,广播确认消息和打包好的下一个区块内容给跟随者节点。

在共识过程中,pbft算法利用通信复杂度o(n2)来达成共识,保证安全性;本发明方法中利用两轮通信复杂度为o(n)的消息传递达到共识效果,本发明方法的安全性通过密码学模型来保证,通信复杂度上优于pbft算法。

s4、跟随节点收到广播消息并对消息验证通过后,将当前区块加入到区块链,然后对下一个区块进行验证,将验证消息发送给下一个领导节点。

本发明的作用原理:本发明方法将区块和节点及其虚拟节点的哈希值映射到同一个哈希环上;根据当前区块的哈希值确定获得接收验证消息和产生下一个区块广播全网权利的节点,通过利用哈希函数的伪随机性,保证了区块链网络中选举领导节点的随机性,降低固定领导节点的安全风险。

而且,在本实施例中,所述当前区块获得跟随节点验证通过的条件是:当前区块的包含内容需要达到区块可容纳交易数最大值的上限或者当前区块的等待时间需要达到产生区块的上限时间。

在本实施例中,所述每个节点拥有属于自己的公钥和私钥以及全网中其他所有节点的信息,所述节点的信息包括节点的公钥、节点名称、ip、端口和状态。

在本实施例中,所述的验证通过消息包括发出该消息的节点对消息的数字签名。

在本实施例中,每个节点所对应的虚拟节点数量是根据节点的性能和诚实度来确定的。

请参考图3,一种根据上述区块链共识方法而实施的区块链共识系统,包括:

初始化模块,用于建立哈希环,并将节点及其虚拟节点的哈希值和区块的哈希值映射到同一个哈希环上;

区块产生模块,用于根据当前区块映射到哈希环上的地址,确定可接收验证消息并产生下一个区块权利的节点,该节点为领导节点,其余节点为跟随节点;

共识模块,用于领导节点收到超过一半跟随节点对当前区块验证通过的消息后,将当前区块加入到区块链,并广播确认消息和打包好的下一个区块内容给跟随者节点;

验证模块,用于跟随节点收到广播消息并对消息验证通过后,将当前区块加入到区块链,然后对下一个区块进行验证,将验证消息发送给下一个领导节点。

具体地,在所述区块产生模块中,所述根据当前区块映射到哈希环上的地址,确定可接收验证消息并产生下一个区块权利的领导节点的具体方式为:

若当前区块哈希值映射到哈希环上对应位置存在节点,则该节点转换为领导节点,其他节点转换为跟随节点;

若当前区块哈希值映射到哈希环上对应位置不存在节点,则沿哈希环顺时针寻找第一个存在的节点,则该节点转换为领导节点,其他节点转换为跟随节点。

具体地,在所述共识模块中,所述当前区块获得跟随节点验证通过的条件是:当前区块的包含内容需要达到区块可容纳交易数最大值的上限或者当前区块的等待时间需要达到产生区块的上限时间。

本申请实施例中还提供一种区块链共识系统,包括:存储器和至少一个处理器,其中:所述存储器存储有程序,并被配置成由所述至少一个处理器执行以下步骤:

建立哈希环,并将节点及其虚拟节点的哈希值和区块的哈希值映射到同一个哈希环上;

根据当前区块映射到哈希环上的地址,确定可接收验证消息并产生下一个区块权利的节点,该节点为领导节点,其余节点为跟随节点;

领导节点收到超过一半跟随节点对当前区块验证通过的消息后,将当前区块加入到区块链,广播确认消息和打包好的下一个区块内容给跟随者节点;

跟随节点收到广播消息并对消息验证通过后,将当前区块加入到区块链,然后对下一个区块进行验证,将验证消息发送给下一个领导节点。

以下是本发明在实际产业上的一种应用,具体是将本发明应用到高性能计算中的分布式存储节点的权限管理和数据价值管理时,首先建立一个哈希环,然后将分布式存储节点和其虚拟节点映射到哈希环上。接着将分布式存储节点权限和分布式存储数据的价值通过特定规则运算后,保存在该区块链系统上。

对于分布式存储节点权限变更和分布式存储数据价值的转移可以简化为一条条交易记录存储在区块链的区块bcurrent中。将bcurrent映射到同一个哈希环上;根据bcurrent映射到哈希环上的地址,沿顺时针找到第一个节点选为领导节点,领导节点获得接收bcurrent的验证结果以及产生下一个区块bnext的权利;其它节点为跟随节点,用于接收、验证区块并且发送确认消息。当bcurrent链接到区块链上时,代表共识达成,也即是分布式存储节点的权限修改成功或者是分布式存储数据的价值传递成功。

采用本发明可以保证分布式存储节点的权限修改和分布式存储数据的价值传递信息不会被防止篡改和伪造,实现分布式存储节点权限管理和分布式存储数据价值转移操作的安全性和可靠性。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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