一、LibraBFT算法简介 上一篇对于LibraBFT进行了相关的介绍,本文在正式开始前,先再介绍一下相关的概念和流程: 基本概念: 1. SMR(State Machine Replication):在计算机领域,SMR是在网络中不同副本间进行状态复制的一种协议。 2. Safety: 简单地理解就是共识的一致性保证,即诚实的节点能够达到状态一致; 3. Liveness: 简单地理解为区块链网络的可用性,类似于分布式系统中的分区可用性; 4. Epochs,实际的应用中,参与协议的节点的状态是随着时间而发展的,LibraBFT中通过epoch来支持这种状态更迭。 a. 每个epoch都是基于他的前一个epoch发展的。或者基于一个系统定义的初始epoch; b. 每个epoch有一个唯一的epochid所标识; c. 每当一个新的epochid被提交,当前这个epoch会结束,下一个epoch会开始; 5. LibraBFT假设网络是一个有全局稳定时间(GST),并且最大延时(ΔT)可控的 Partial Synchrony的网络; 6. LibraBFT假设非拜占庭节点一定会按照协议履行职责并且能保证可用。 7. Records,LibraBFT的状态是由一系列records组成的。主要包括四种,blocks、votes、quorum certificates(QCs)和 timeouts。 基本流程:
当一个节点被选择成主时,它会执行下面3个步骤: · consensus包中各层级中定义的模块如下,如下所示:
三、Libra共识源码走读
上述NodeConfig是节点的配置,共识相关的配置在其之中,在 ./config/src/config.rs 中 ConsensusConfig结构中定义。
ChainedBftProvider 定义在 ./consensus/src/chained_bft/chained_bft_consensus_provider.rs 中,他有四个成员变量,分别是状态副本实例以及其余各个其他模块交互的客户端。
ChainedBftProvider 的new方法定义了其实例初始化的过程,
至此,共识实例初始化完毕~ 上述提到的 smr 是一个ChainedBftSMR的实例,ChainedBftSMR是libra StateMachineReplication接口的具体实现,ChainedBftSMR.start()是启动smr的完整流程。主要包括3个阶段,第一步:首先会同步到网络中的最新状态;第二步:初始化 block_store、proposal_generator、safety_rules、pacemaker、event_processor等;第三步:启动事件处理handler。
四、共识模块整体流程图 —- 编译者/作者:不详 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
【Libra 技术解读】详解Libra共识源码
2019-07-10 不详 来源:网络
- 上一篇:向Tezos添加门限签名方案(TSS)
- 下一篇:区块链搜索:谷歌将如何改变区块链
LOADING...
相关阅读:
- 瑞波首席执行官布拉德·加林豪斯(Brad Garlinghouse)反对Coinbase的“不政2020-10-26
- Pionex派网携手币安,全新交易工具开启「区块链券商」新赛道 - 律动B2020-10-26
- Binance Launchpad添加了游戏宠物宇宙Axie Infinity2020-10-26
- 物联网区块链平台 IoTeX 将于 11 月 3 日上线「销毁空投」计划,将共销毁2020-10-26
- 〔YAS你问我答,第两百三十九篇〕play是主网平台币,等同于yas2020-10-26