BlockChain技术系列(五)- 拜占庭共识

obcpbft包是PBFT共识协议[1]的实现,其中提供了验证器之间的共识,虽然验证器的阈作为Byzantine,即,恶意的或不可预测的方式失败。在默认的配置中,PBFT容忍t<n/3的拜占庭验证器。

处理提供PBFT共识协议的参考实现,obcpbft 插件还包含了新颖的Sieve共识协议的实现。基本上Sieve背后的思想为non-deterministic交易提供了fabric层次的保护,这是PBFT和相似的协议没有提供的,obcpbft可以很容易配置为使用经典的PBFT或Sieve。

在默认配置中,PBFT和Sieve设计运行在至少3t +1 *验证器(副本),最多容忍T个出现故障(包括恶意或拜占庭*)副本。

5.1 概览

obcpbft插件提供实现了CPI接口的模块,他可以配置运行PBFT还是Sieve共识协议。模块化来自于,在内部,obcpbft定义了innerCPI 接口(即, inner consensus programming interface),现在包含在 pbft-core.go中。

innerCPI接口定义的所有PBFT内部共识(这里称为core PBFT并在pbft-core.go实现)和使用core PBFT的外部共识之间的相互作用。obcpbft包包含几个core PBFT消费者实现

  • obc-classic.go, core PBFT周围的shim,实现了innerCPI接口并调用CPI接口;
  • obc-batch.go, obc-classic的变种,为PBFT添加批量能力;
  • obc-sieve.go, core PBFT消费者,实现Sieve共识协议和innerCPI接口, 调用CPI interface.

总之,除了调用发送消息给其他 peer(innerCPI.broadcast 和 innerCPI.unicast),innerCPI接口定义了给消费者暴露的共识协议。 这使用了用来表示信息的原子投递的innerCPI.execute调用的一个经典的总序(原子)广播 API[2]。经典的总序广播在external validity checks [2]中详细讨论(innerCPI.verify)和一个功能相似的对不可靠的领导失败的检查Ω 3.

除了innerCPI, core PBFT 定义了core PBFT的方法。core PBFT最重要的方法是request有效地调用总序广播原语[2]。在下文中,我们首先概述core PBFT的方法和innerCPI接口的明细。然后,我们简要地描述,这将在更多的细节Sieve共识协议。

5.2 Core PBFT函数

下面的函数使用非递归锁来控制并发,因此可以从多个并行线程调用。然而,函数一般运行到完成,可能调用从CPI传入的函数。必须小心,以防止活锁。

5.2.1 newPbftCore

签名:

func newPbftCore(id uint64, config *viper.Viper, consumer innerCPI, ledger consensus.Ledger) *pbftCore

newPbftCore构造器使用指定的id来实例化一个新的PBFT箱子实例。config参数定义了PBFT网络的操作参数:副本数量N,检查点周期K,请求完成的超时时间,视图改变周期。

configuration keytypeexample valuedescription
general.Ninteger4Number of replicas
general.Kinteger10Checkpoint period
general.timeout.requestduration2sMax delay between request reception and execution
general.timeout.viewchangeduration2sMax delay between view-change start and next request execution

接口中传递的consumerledger参数是一旦它们全部排好序后用来查询应用状态和调用应用请求的。参阅下面这些接口的相应部分。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王祖龙Jason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值