Libra技术系列解读

往期回顾:

move语言简介

move语法、解释器和验证器

本期详解“LibraBFT共识机制”

Libra白皮书中关于共识机制的描述

Libra 区块链采用了基于 LibraBFT 共识协议的 BFT 机制来实现所有验证者节点就将要执行的交易及其执行顺序达成一致。这种方法可以在网络中建立信任,因为即使某些验证者节点(最多三分之一的网络)被破坏或发生故障,BFT共识协议的设计也能够确保网络正常运行。与其他一些区块链中使用的“工作量证明”机制相比,这类共识协议还可实现高交易处理量、低延迟和更高能效的共识方法。

1. libra共识简介


Libra的共识采用的是LibraBFT共识,是一个为Libra设计的鲁棒的高效的状态复制系统。它基于一种新型的BFT共识算法,HotStuff(BFT Consensus in Lens of Blockchain),在扩展性和一致性上达到了较高的水平。LibraBFT 在HotStuff的基础上引入显示的活跃机制并提供了具体的延时分析。LibraBFT在3f+1个验证节点之间收集投票,这些验证者可能是诚实的节点也可能是拜占庭节点。在网络中有2f+1个诚实节点的前提下,Libra能够抵御f个验证节点的双花攻击和分叉攻击。LibraBFT在一个有全局统一时间(GST),并且网络最大延时(ΔT)可控的 Partial Synchrony的网络中是有效的。并且,LibraBFT在所有验证节点都重启的情况下,也能够保证网络的一致性。

Libra白皮书指出,其将以许可型区块链的方式起步。未来为了确保Libra的真正开放,始终以符合用户最佳利益的方式运作,Facebook的最终目标是让Libra网络成为"非许可型网络",但是其目前的挑战在于,他们目前还没有成熟的解决方案可以通过非许可型网络,提供支持全球数十亿人和交易所需的规模、稳定性和安全性。从“许可型”网络过渡到“非许可型”网络,共识层面还需要做非常大的改进。

2. HotStuff算法


2.1 HotStuff算法特点

HotStuff 是一个三阶段的BFT算法,允许一个新的leader简单地选择一个最新的的QC(Quorum certification)。它引入了一个第二阶段,允许副本在投票后在不需要请求leader请求的基础上改变他的决策。这一改进大大降低了复杂度,同时也降低了leader替换的复杂度。最后,由于长期委任所有的状态,这样HotStuff非常容易通过事件机制的方式实现,适合leader经常切换的场景。HotStuff主要有以下几个特性:

• 线性的视图切换:在GST后,对于一个诚实的leader,一旦被指定,会发给n个验证者来收集签名,以推动共识的决定;

• 乐观的响应:在GST后,对于一个诚实的leader,一旦被指定,只需要等最早的 n-f 个验证者返回消息就可以发起有效的提案,包括leader替换;

• 支持频繁切主:HotStuff还有一个特点是新leader的推动协议达成共识的成本不高于当前领导者的成本,所以其适用于leader切换的协议;

• 决策简单:HotStuff中副本只有两种消息类型和一个简单的规则来决定是否要接受一个提案,其通过投票和提交规则来达成一致性,通过Pacemaker来保证可用性,并且各阶段的算法复杂度低;

• 阈值签名:HotStuff使用阈值签名的方式来收集签名,使得签名的验证会更为简单;

2.2 HotStuff算法流程

2.2.1 Basic HotStuff

Basic HotStuff 协议是HotStuff的基本过程,他在一系列的视图中切换,视图以单调递增编号方式切换。在每个视图内,有一个唯一的达成共识的leader。每个副本在起本地数据结构中会记录所有请求的tree,tree的每个叶子节点是一个已经提出的提案。一个给定节点的分支是该节点到达树根的所有路径。按照HotStuff协议,随着视图的增长,分支会被提交。Leader需要像(n-f)个验证者采用阈值签名的方式收集签名,收集签名的过程主要包括3个阶段,PREPARE、PRE-COMMIT和COMMIT阶段,整个算法包括5个阶段,PREPARE、PRE-COMMIT、COMMIT、DECIDE和FINALLY阶段,如下图所示:

1. PREPARE阶段:该阶段,leader发起一个high的提案(highQC),组成消息,消息内容 m = MSG(PREPARE, curProposal,highQC),并广播给所有的验证节点;验证节点在收到时上述提案消息后会进行投票,如果m的node超过本地已经判决过的node是则会投票,并返回消息给leader,m' = voteMSG(PREPARE,n.node,⊥)。

2. PRE-COMMIT阶段:该阶段,当Leader收到(n-f)个验证节点的PREPARE阶段的投票信息后,会发起一个 PREPARE的提案(prepareQC),组成消息,消息内容为 m = MSG(COMMIT, ⊥,prepareQC),并广播给所有的验证节点;验证节点在收到上述提案消息后会进行投票,并返回消息给leader,m' = voteMSG(PRE-COMMIT,m.justify.node,⊥)。

3. COMMIT阶段:该阶段,当Leader收到(n-f)个验证节点的PRE-COMMIT阶段的投票信息后,会发起一个 PRE-COMMIT的提案(precommitQC),组成消息,消息内容为 m = MSG(COMMIT, ⊥,precommitQC),并广播给所有的验证节点;验证节点在收到上述提案消息后会进行投票,并返回消息给leader,m' = voteMSG(COMMIT,m.justify.node,⊥)。

4. DECIDE阶段:该阶段,当Leader收到(n-f)个验证节点 COMMIT 的投票后,会生成一个COMMIT的提案(commitQC),组成消息,消息内容为 m = MSG(DECIDE,⊥,commitQC),并广播给所有的验证者;验证者在收到该消息后,会执行命令,并返回给客户端。

5. FINALLY阶段:如果系统进入下一个View,各个副本会发送一个消息给下一个View的leader,消息内容为 m = MSG(NEW-VIEW,⊥,prepareQC)。

2.2.2 Chained HotStuff

上图中可以看出来Basic HotStuff的各个phase中的流程都非常相似,作者又提出了一种Chained HotStuff来优化和简化Basic HotStuff。改进的点主要是改变每个PREPARE节点的View。这将大大降低通信消息的数量,并且可以对决策进行管道处理。Chained HotStuff的流程如下所示:

上述Figure1可以看出一个节点可以同时处于不同的View,通过链式的结构,一个提案在经过3个块后能够达成共识。其内部有一个状态转换器,通过genericQC实现提案的自动切换。其主要算法流程如下所示:

3. LibraBft改进


Libra 为了更好地适应其生态,对HotStuff进行了相应的优化,主要有5点:

1.首要的是Libra定义了安全的条件,提供了安全性、活性和乐观响应的扩展证明;

2.第二点:Libra 通过让验证器集体对区块的状态而不是事务的顺序进行签名,使得协议会更加鲁棒。同时还允许客户端使用QC验证从数据库里读出的数据。

3.第三点:Libra 设计了一个Pacemaker 来发出显示的超时信号,验证者通过他发出的提案自动进入下一个视图,而不需要一个同步的时钟;

4.第四点:Libra 希望让矿工变得不可预测,它最新提交的区块信息为种子生成一个可验证的随机数VRF,成为下一个矿工;

5.第五点:Libra 使用聚合签名的方式保留QC中验证者的身份,以提高验签效率,同时为这些验证者提供奖励。

如果你对百度超级链(Xuper)技术及应用感兴趣,

欢迎添加“百度超级链·小助手“微信,进入微信群交流。

或者拨打合作咨询电话+86-10-59924296

微信号:image-baidu

【Libra 技术解读】详解LibraBFT共识机制相关推荐

  1. 详解LibraBFT共识机制

    [Libra 技术解读]详解LibraBFT共识机制 ---------------- 版权声明:本文为CSDN博主「百度超级链xuper」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上 ...

  2. Cube 技术解读 | 详解「支付宝」全新的卡片技术栈

    简介:魔方卡片(Cube),让 App 首页实现敏捷更新. CodeHub#7 正式落幕,来自蚂蚁集团的技术专家「京君」与掘金社区的开发者们分享了「支付宝」全新的卡片技术栈--魔方卡片(Cube). ...

  3. 知识图谱技术发展详解(一)

    一.万维网现状 1.当前的Web是一种面向人的网络,很多繁琐的过程依旧需要人工的参与. 2.以搜索引擎为例,目前的搜索引擎主要依靠关键字匹配,因此存在如下问题: (1)高匹配.低精度,搜索出来的内容中 ...

  4. Web端即时通讯技术原理详解

    Web端即时通讯技术原理详解 前言 在web端的IM即时通讯应用,由于浏览器的兼容性以及其固有的"客户端请求服务器处理并响应"的C/S通信模型,造成了要在浏览器中实现一个兼容性较好 ...

  5. 【干货】PMcaff干货课程学习精彩分享:Apple Watch 技术特性详解

    昨天PMcaff给大家推荐了Apple Watch的发布会,好多小伙伴们在后台留言,所以PMcaff小咖今天给大家找来一篇干货,看完感觉还不错,在这里分享给大家. 作为苹果主推的智能穿戴产品,Appl ...

  6. Android网络开发技术实战详解

    <Android网络开发技术实战详解> 基本信息 作者: 朱桂英 丛书名: Android移动开发技术丛书 出版社:电子工业出版社 ISBN:9787121173493 上架时间:2012 ...

  7. c语言handler指针,详解C++ new-handler机制

    当 operator new 不能满足一个内存分配请求时,它抛出一个 exception(异常).很久以前,他返回一个 null pointer(空指针),而一些比较老的编译器还在这样做.你依然能达到 ...

  8. IP协议相关技术终极详解

    IP协议相关技术终极详解 DNS域名解析协议 概述 域名的层级关系 域名的解析流程 ARP地址解析协议 概述 为什么需要ARP协议? ARP协议是属于哪一层呢? ARP协议和DNS协议的区别 ARP协 ...

  9. Java程序员进阶必读,最全微服务架构技术点详解来啦

    前言 微服务作为这个互联网时代最火的技术之一,想必大家即使没有学习过也有所了解,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服 ...

最新文章

  1. c++语言文件流,C++ IO类、文件输入输出、string流详细讲解
  2. 迁移学习的魔法:任何人都将能使用深度学习
  3. Pycharm常用的使用方法
  4. mysql5.7.11 创建用户_修改更新查找MySQL5.7.x的root用户的默认密码
  5. ubuntu中flashcache使用教程
  6. 【NOIP2015】【Vijos1979】信息传递(有向图最小环大小)
  7. body签名json序列号乱序,null参数问题
  8. BP算法和RNN_RNN/LSTM BPTT详细推导以及梯度消失问题分析
  9. python如何下载os库_python下载os库的方法
  10. 用iSSH代替Mobile Terminal管理iOS
  11. 中国移动智能网关(光猫)超级管理员账户密码 型号: PT924G
  12. 解决 1080端口已被占用
  13. 谷歌浏览器html插件字体大小,字体换加插件,自定义Chrome网页字体,更改字体样式,调整字体大小...
  14. 2021年登高架设免费试题及登高架设找解析
  15. Java 枚举和泛型
  16. 数据结构——哈夫曼树及其应用
  17. 计算机基础西南大学,西南大学计算机基础.docx
  18. 不要用PS啦,python+opencv代码给证件照换底色
  19. J2EE达内18天笔记
  20. 转——解决游戏王DL的steam版锁区问题

热门文章

  1. 教程|GIS制图教程02
  2. Swift — UIKit 之(8)—— 持久层|用户偏好设置
  3. react函数组件实现四栏轮播图切换
  4. Wordpress采集支持中英Wordpress采集
  5. 搞“两弹一星”也离不开计算尺
  6. 什么是RGB模式与BGR模式
  7. MyEclipse2017使用maven搭建SSM项目
  8. 【R语言】ggplot2---散点图的边框和颜色填充问题
  9. Python自动化测试框架学习日记
  10. 笔记本计算机打开任务管理器,笔记本电脑按哪个键打开任务管理器