区块链 共识算法面试题

介绍一下你所了解的共识算法。

 

Raft

什么是raft? Raft最初用于管理复制日志的共识算法,是能够实现非拜占庭下的强一致性的共识算法。

大致流程?

  1. 系统初始都为候选人角色,各自倒计时一个随机时间,某个节点的时间到了,便可以向其他节点发生请求,收到n/2-1的回复就成为leader节点。
  2. 其他节点变成follower,主节点向其他节点同步数据,其他节点收到后回复确认。
  3. 当主节点与其他节点断开,其他节点在选举leader节点,继续同步数据。当旧leader连回后,自动变成follower节点,同步其他节点数据。

缺点是什么? 算法不能解决拜占庭问题。

优点是什么? 节点之间能够同步相同的数据。

 

POW

POW是什么 工作量证明算法(在比特币和以太坊中使用)\\
大致过程 算法需要随机生成一个nonce(8字节)值,结合区块头(32字节),共40字节,经过多次哈希和异或计算,得到一个数,如果这个数小于2的256次方除以difficult。那个该节点就拥有区块的打包权利。
优点是什么 参与者无需经过许可就能参与挖矿计算,因此匿名性高。
缺点是什么

  1. 挖矿能量消耗大,不环保。
  2. tps低,容易发生分叉和回滚,导致打包后需要经过多个区块才能确认交易。

        

POS

POS是什么 权益证明算法,是一种比POW更加环保的算法,持币的用户拥有记账权和打包权,不同的山寨币可能会使用不同的标准。

大致流程?

  1. 持币者拥有区块打包权,可能因为币龄或者持币数更加容易打包区块。
  2. 拥有投票权的用户对候选区块进行投票,当票数超过固定一半,表示区块打包成功。

优点是什么 延迟低,能耗少。

缺点是什么

  1. 匿名性差,因为区块打包和持币数,币龄有关。
  2. 投票过程与投票人数有关,人数越多会越复杂。

PBFT 

PBFT是什么 PBFT实用拜占庭容错算法。是在联盟联中,共识节点较少的情况下拜占庭的一种解决方案。
大致过程?
        PBFT主要包含5个阶段(一共有3f+1个节点,其他f+1个正常节点,f个作恶节点,f个故障节点)。

  1. Request 阶段,客户端发送消息,消息摘要以及签名给主节点。
  2. pre prepare阶段,主节点验证客户端发来的消息是否有效,无效就丢弃。否则对消息签名,广播给其他节点。广播的消息中还有几个比较重要的参数,分别为消息的序号和视图的编号。
  3. prepare阶段,其他节点验证主节点签名有效性,并记录到log中。同时对信息摘要签名发送给其他节点。
  4. commit阶段,其他节点收到2f+1个prepare的消息,表示大多数节点认同m。节点广播commit消息。
  5. reply阶段,节点收到2f+1个commit消息,表示大多数节点达成共识,向客户端发送reply信息。客户端收到f+1个(相同的)确认消息,就知道共识完成。

        
        另外包含视图切换阶段,当主节点恶意修改编号,从节点可以发起viewchange,根据视图编号来选取新的主节点。或者主节点不发送客户端交易,客户端超时机制会给从节点发送消息,从节点检查主节点是否掉线或者作恶,发起viewchange。\\
        
优点是什么

  1.  PBFT在较少节点的有不错的性能,tps高。
  2. 发生分叉的几率低。
  3. 适用于联盟链,能够允许有(n-1)/3的恶意节点和(n-1)/3的故障节点。

缺点是什么

  1. PBFT仅适用于联盟链。
  2. 通信复杂度为n的平方,节点数量增加导致性能下降快。
  3. 网络不稳定情况下,会导致共识延迟高。

        详细介绍

你可能感兴趣的:(blockchian)