obcpbft
包是PBFT共识协议[1]的实现,其中提供了验证器之间的共识,虽然验证器的阈作为Byzantine,即,恶意的或不可预测的方式失败。在默认的配置中,PBFT容忍tobcpbft
插件还包含了新颖的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
.
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 【BlockChain技术系列(五)- 拜占庭共识】 签名:
func newPbftCore(id uint64, config *viper.Viper, consumer innerCPI, ledger consensus.Ledger) *pbftCore
newPbftCore构造器使用指定的
id
来实例化一个新的PBFT箱子实例。config
参数定义了PBFT网络的操作参数:副本数量N,检查点周期K,请求完成的超时时间,视图改变周期。configuration key | type | example value | description |
---|---|---|---|
general.N |
integer | 4 | Number of replicas |
general.K |
integer | 10 | Checkpoint period |
general.timeout.request |
duration | 2s | Max delay between request reception and execution |
general.timeout.viewchange |
duration | 2s | Max delay between view-change start and next request execution |
consumer
和ledger
参数是一旦它们全部排好序后用来查询应用状态和调用应用请求的。参阅下面这些接口的相应部分。推荐阅读
- 推动NFT走出监管困境,BSN推出支持NFT基础设施网络
- 腾讯|SaaS的收入模型有哪些(终于有人讲明白了)
- 就业方向上什么才是最重要的(--- 来自程序猿的迷茫。(C++?Java?or算法?))
- 区块链中加密货币的含义
- 波场万倍潜力币HYL23号21:09分 正式上线JustSwap
- 《瀚兰房地产开发区块链应用及案例分享》BSN培训精华回顾
- 对联盟链而言,跨链协议为什么重要()
- 区块链能够应用在哪些行业
- BSN区块链服务网络中密钥托管模式和公钥上传模式有啥区别()
- 币圈人物传|币圈大佬今何在 唯有一诺正当时