当前位置:首页 > 物联网 > 区块链
[导读] 一、LibraBFT算法简介 基本概念: 1. SMR(State Machine Replication):在计算机领域,SMR是在网络中不同副本间进行状态复制的一种协议。

一、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个步骤:

第一,打包第n+1个区块Bn+1,并追加在最新的QC之上;

第二,将这个区块广播Bn+1给所有验证节点,诚实的验证节点会验证区块并返回投票信息给主节点。

第三,在没有bug的前提下,诚实节点会执行Bn+1。并且主节点在收集到足够的投票后会为这个区块发起一个QCn+1,并且广播。

经过上述一个周期的过程,链的长度会增长,变成h(init)← B1←C1.。. Bn+1←Cn+1。并且旧的leader会结束任期,新的leader会被选举出来并进行新一轮的区块打包。

二、Libra共识源码结构和子模块功能

Libra共识模块代码主要在 consensus 包中,它定义了Libra共识的抽象接口及其具体实现。目前Libra团队只实现了LibraBFT。consensus包是一个独立的可编译的单元,编译后生成一个库。其代码目录结构和各层级的模块的主要功能如下所示:

· consensus包目录结构如下:

· consensus包中各层级中定义的模块如下,如下所示:

三、Libra共识源码走读

1. Libra程序入口

Libra代码的入口在 。/libra_node/src/main.rs中,启动服务主流程的代码在 。/libra_node/src/main_node.rs,

上述NodeConfig是节点的配置,共识相关的配置在其之中,在 。/config/src/config.rs 中 ConsensusConfig结构中定义。

2. 共识模块初始化

初始化的代码在 。/consensus/src/consensus_provider.rs 中,该函数返回了一个 ChainedBftProvider 实例,该实例就是LibraBFT实例:

ChainedBftProvider 定义在 。/consensus/src/chained_bft/chained_bft_consensus_provider.rs 中,他有四个成员变量,分别是状态副本实例以及其余各个其他模块交互的客户端。

ChainedBftProvider 的new方法定义了其实例初始化的过程,

至此,共识实例初始化完毕~

3. 共识模块启动&运行流程

前面已经介绍完了共识模块初始化的过程,接下来我们看一下共识服务具体是如何运作的。LibraBFT服务启动函数是 ChainedBftProvider.start()。它实现了Libra共识的通用接口 ConsensusProvider,该接口定义在 。/consensus/src/consensus_provider.rs 中。ChainedBftProvider.start()的主要是启动smr,代码如下:

上述提到的 smr 是一个ChainedBftSMR的实例,ChainedBftSMR是libra StateMachineReplicaTIon接口的具体实现,ChainedBftSMR.start()是启动smr的完整流程。主要包括3个阶段,第一步:首先会同步到网络中的最新状态;第二步:初始化 block_store、proposal_generator、safety_rules、pacemaker、event_processor等;第三步:启动事件处理handler。

四、共识模块整体流程图

通过前面的介绍和代码走读,相信大家应该对libra共识的整体流程有一个比较清晰的认识了,接下来用一个流程图,帮助大家更加直观过整个流程。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭