拜占庭容错共识算法

一、PBFT

节点类型:

主节点:通过轮换或者随机算法生成

主节点索引通过公式(block_number + current_view) % consensus_node_num计算得出;

节点计算当前leader索引与自己索引相同后,就开始打包区块。

其余节点(副本节点和观察者节点)

其中:主节点以及副本节点参与共识

主节点未因发生故障导致切换时,则称整个共识过程发生在一个视图内

共识过程:

1、客户端发送交易到节点,节点将交易放入交易持中,并广播交易请求

2、主节点的sealer线程开始打包区块(交易池中获取交易,打包为一个区块),将新区块编入Prepare包中,广播给所有共识节点

3、通过以下三个步骤完成请求的共识过程

①Pre-Prepare 阶段,共识节点判断Prepare包的合法性(若为空包,请求视图轮换),缓存合法Prepare包(过滤重复收到相同包),执行区块中的交易并缓存执行后的区块,广播签名包。

② Prepare 阶段,共识节点判断签名包的合法性(与本地缓存的执行后区块做比较),缓存合法的签名包,若签名包达到2*f+1,广播commit包

③Commit 阶段,共识节点判断commit包的合法性(与本地缓存的执行后区块做比较),缓存合法的commit包,若commit包达到2*f+1,将新区块上链。

BCOS提出的Prepare包的优化,降低网络负载

在一个由(3*f+1)个节点构成的系统中,只要有不少于(2*f+1)个非恶意节点正常工作,该系统就能达成一致性

换言之:在 N≥3F+1 的情況下一致性是可能解決,N 为总计算机数,F 为有问题的计算机总数

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值