区块链共识算法简介,区块链共识算法介绍

  

  免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。   

  

  边肖:记得要集中注意力。   

  

  来源:趣链科技   

  

  原标题:区块链简介|如何用共识算法构建区块链共识网络?   

  

  作者:赵超越   

  

  大家好,相信关注区块链的你们一定对经常听到的“共识”这个词充满了好奇。作为区块链灵魂的共识算法是什么?   

  

  今天在线解决三大问题:共识算法是什么?你有什么?前途如何?   

  

  

共识算法到底是什么?

  

  

  在理解这个概念之前,或许我们要先回顾一下。什么是区块链?上一期我们给出的那句话的总结是:“区块链是由分布式数据存储、点对点传输、共识机制、加密算法等技术组成的分布式数据库技术。它可以为存款和证书追溯、业务协作、数字资产、数据交换等高价值场景提供互信的解决方案。”   

  

  其中,共识机制就是我们今天要讲的——共识算法。   

  

  一致性算法是一种用于确保分布式系统一致性的机制。这里的一致性可以是交易顺序、账簿、节点状态等的一致性。   

  

  上一期家庭财务的例子,夫妻各自管理账本的时候,每笔新增收入都需要双方核对,确认后会分别记入各自账本,并确认双方账本是否一致。其中“一起核对”和“确认双方账本一致”的过程就是共识。   

  

     

  

  

共识算法有哪些?

  

  

  要想达成共识,就得解决一个问题:听谁的?   

  

  比比谁更强,谁更快:POW工作量证明、Raft算法。   

  

  以《王者荣耀》为例。五个路人刚刚组队,需要选出一个指挥官来决定比赛过程中如何交换信息,保证动作的一致性,共同赢得团体赛的好名次。   

  

  建议国王快跑去比赛。这个趣味比赛要求玩家随机选择英雄,使用英雄技能。谁先到达终点,谁就获胜,并担任指挥官。这就意味着用同一个英雄,他的技能更熟练,他的位移更准确迅速,他的能力更强,他的经验更充足,他自然更能胜任指挥官的工作。   

  

  这种方法的原理是比特币使用的工作量证明机制(POW)。区块链中哪个节点的计算能力更强,就更有可能找到下一个块的有效值。但是像这个例子中,玩家除了常规种族外还需要比王者更快的种族,对于不擅长玩位移英雄的玩家来说是不公平的。与区块链相对应的是,节点在处理链中的信息时,也要时不时地与其他节点争夺计算能力。POW算法最终变成了计算能力的竞争,浪费了大量的计算能力,让POW失去了公平的初衷。   

  

  为了节省计算能力消耗,有人说不如去五军对决,每人占一个buff点,等待随机刷新的重生石。谁先等待新的重生之石,谁就成为候选人。如果他同时等待,就同时当选为候选人,所以不需要增加太多的竞争。候选人有资格竞选指挥官,指挥官由大家选举产生。每个人只有一张宝贵的选票,第一个获得半数以上选票的候选人可以当选指挥官。该方法的原理是Raft算法。就像每个人都需要等待重生石随机刷新一样,Raft算法中的普通节点(玩家)需要等待一个随机的时间才能成为候选节点(候选者)。没有投票的普通节点可以投票给候选节点,获得半数以上选票的候选节点可以成为领袖节点(指挥官)。   

  

  拒绝作恶:RBFT算法、BFT类拜占庭容错算法   

  

  但即使通过以上两种方式选出指挥官,也不代表团队可以步调一致,取得最后的胜利。可能有些队员其实是“演员”,实际上是不服从指挥。而是把指挥官的命令虚假的发给其他队友,带他们单独行动。在这种情况下,保证参赛队伍在比赛过程中能够交流真实有效的信息就显得尤为重要。在区块链,这被称为邪恶节点(拜占庭节点)的存在。这个时候系统应该如何达成共识?   

  

  这种情况下,干脆取消指挥官竞选,大家都有机会担任指挥官,在实战中考验大家的指挥能力。在每一个游戏中,系统都会不断的给出提示,比如“摧毁敌方防御塔”。指挥官从这些信息中筛选出有用的信息,然后将进攻指令传达给其他队友。队友收到消息后,可以判断这个命令是否合理。如果他们认为合理,就会回复“收到”。一旦收到其他队友三分之二以上的“收到”回复,就知道大部分队友都会配合,就可以放心进攻了。在一场比赛结束时,如果超过2/3的队友认为这场比赛的指挥官不称职,就会更换指挥官人选。   

  

  这就是基金链高鲁棒性的拜占庭容错算法(RBFT)的原理。客户端(系统)向主节点(指挥者)发送请求,主节点(指挥者)收到请求后向所有从节点(团队成员)发送消息。从节点向所有其他节点发送消息来确认接收。收到2/3以上确认消息的从节点执行命令,同时通知其他所有节点,最后将执行结果反馈给客户端。如果主节点出现,   

  

  此外,RBFT算法在常见的拜占庭容错算法的基础上做了很多改进,比如使用恢复机制提高系统的可靠性和可扩展性,当播放器(从节点)因为网络堵塞等原因重新播放链接时(来自拜占庭   

状态中恢复)时,队员能够自动回顾重连过程中错过的战局信息与小队指令(区块信息),让队员能够跟上游戏进度。

  

RBFT算法-王者荣耀版示意图

  

RBFT算法示意图 更优化的传递共识:NoxBFT算法、HotStuff算法

  

但又有人提出,当小队的人数(区块链内节点)变多时,BFT类的算法的要求的所有队友互相交流就会有些麻烦,所有人最好仅与指挥官交流。

  

为了降低交流的成本,且确保指挥官的指令得到了大部分人的认可,每个人都会在回复指挥官的消息中附上自己的头像(可以理解为指纹、签名,其他人不可盗用) ,而指挥官在给所有人发送最终指令时,会附上这些头像的集合,来证明指令经过了大家的认可,否则队员可以无视指令。除此之外,还把更换指挥官的步骤直接挪到比赛中,以免指挥官在比赛中临时断线或者状态不佳总发送错误指令。

  

这就是HotStuff算法的原理,它将 BFT 的网状通信网络拓扑变成了星形通信网络拓扑,节点(队员)不再通过 p2p 网络将消息广播给其它节点(队员),而是将消息发送给主节点(指挥官),由主节点处理后发送给其它节点。得益于星型通信网络拓扑,系统的通信复杂度得到了大大降低。它通过将视图切换流程(更换指挥官)和正常流程(比赛)进行合并,也降低了视图切换的复杂度。

  

Basic HotStuff 的流程

  

在借鉴HotStuff算法的理念后,自研NoxBFT算法,在大规模组网环境下,能够有效降低区块链网络传输的复杂度,提升系统的共识效率与可扩展性。

  

所以,我们支持哪些共识算法?我们的共识模块采用可拔插的模块化设计,用户可针对不同的业务场景需求按需选择不同的共识算法。目前支持RBFT、NoxBFT、Raft共识算法,这三类算法分别有其适合的场景。

  

RBFT:具有高性能高鲁棒性,设计了动态数据自动恢复机制与动态共识节点增删机制,大大增强了共识模块的可用性,提升了系统的整体交易吞吐能力和系统稳定性,可达到万级TPS以及毫米级延迟。适用于一般数量级的节点组成的网络环境。

  

NoxBFT:借鉴Hotstuff算法后自研,通过星型网络拓扑结构将全网网络复杂度由O(n2)降低至O(n),减少了一个量级,并进一步优化算法的活性、可靠性以及数字签名性能,有效解决大规模节点组网场景下共识效率低下、可扩展性不强的问题,现已支持以千为数量级的大规模节点扩展。

  

Raft:区块链平台支持Raft共识算法保证账本一致性,在联盟各方足够信任的前提下,实现高效共识。该算法仅限于强信任联盟链场景中使用。

  

共识算法未来发展方向

区块链共识算法从一开始的算力密集型算法POW、POS开始,后来逐渐演变出减少耗能的选举型共识方式BFT等,整体性能上有4-5个数量级的提升。但随着节点数量增多到几百个甚至更大的共识节点规模,需要交换的信息增多,系统负载及网络通信量增大,性能会有所下降,可扩展性也较弱。如何突破共识性能、带宽瓶颈,实现大规模节点高效共识、增强可扩展性是当前共识研究的重要发展方向。

  

目前,共识算法的研究尝试结合更多的技术进行优化,比如引入VRF(可验证随机函数)保证主节点选取随机性和公平性,应用DAG(有向无环图)数据结构提升系统吞吐量、结合密码学算法优化共识效率等等,整体趋势上是向混合型共识算法演变。

相关文章