一、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共识的整体流程有一个比较清晰的认识了,接下来用一个流程图,帮助大家更加直观过整个流程。
现在的智能机器人可以和人类沟通吗
TT Electronics推出两款能够拓展、提高其高性能CR和HR系列产品的新电阻器
新唐科技新一代增强型32位MCU,内建两组CAN总线
应用冠层分析仪掌握作物生长情况
从昕诺飞进博会看未来照明技术发展方向
LibraBFT算法的概念和基本工作流程解析
LCR-8200系列高频LCR电桥的性能特点及应用
水产养殖自动监控系统简介
戴尔将收购数据中心自动化专家Scalent系统
微电网的作用是什么?
服装生产工艺流程图
蒸汽排管散热器的简单介绍
3D打印硅胶膜首次应用于文物提取
新型富氧氧化物的晶体结构中含有管状通道
挑选夹层连接器要注意以下几点
云视频会议市场走向成熟
虚拟主机与云服务器的区别 如何选择
监控行业无线遥控器的发展趋势
如何选择收音机电子管
萨科微slkor副总经理贺俊驹:构建新型电力系统实现“双碳”目标