Istanbul BFT共识算法解读

Istanbul BFT共识算法详细文档

Istanbul BFT作为BFT类算法的一种已经有过在以太坊上的实践。虽然Istanbul目前还存在一些潜在的问题,但其算法思想和实现还是值得学习和借鉴的。

术语

  • Validator: 区块验证者。
  • Proposer: 出块者。
  • Round: 共识的轮数。一轮从出块者提出一个区块proposal开始,结束于区块提交或者轮数改变(轮数改变可能由于出错或者区块更新)。
  • Proposal: 提出的一个在处理中的新的区块。
  • Sequence: proposal的高度。块高和sequence相对应。
  • Blocklog: 将来的信息记录在backlog里面。core.backlogs
  • Round state: RoundSequence绑定在一起组成view
  • Consensus proof: 提交的区块签名。每个validator对区块验证后会对其进行签名。
  • Snapshot: validator的投票状态。

共识算法描述

Istanbul BFT修改自PBFT算法,包括三个阶段:PRE-PREPAREPREPARE以及COMMIT。在N个节点的网络中,这个算法可以最多容忍F个出错节点,其中N=3F+1。在每一轮开始前,validator会选择其中一个作为proposer,默认以轮询的方式(除此之外还有sticky的方式,搜索stickyProposer方法去看细节)。然后proposer会提出一个区块的proposal,并且广播PRE-PREPARE信息。一旦一个validator收到PRE-PREPARE信息,会把状态标记为PRE-PREPARED,然后广播PREPARE信息。这一步是为了确保所有的validator在同一个seqnence和round(代码中为view)上进行共识验证。一旦收到2F+ 1PREPARE信息,validator进入PREPARED状态然后广播COMMIT信息。这一步是为了通知节点的peer已经接收到了提出的区块,并且即将插入区块到链中。最后,validator等待2F + 1COMMIT信息,然后进入COMMITTED状态然后插入区块到链中。
Istanbul BFT算法中的区块是确定的,意味着链没有分叉并且合法的区块一定是在链中。为了防止一个恶意节点生成不同的链,在把区块插入进链之前,每一个validator必须把2F + 1COMMIT签名放进区块头的extraData字段。因此,区块时可以自我验证的(因为有签名)并且轻客户端也支持。然而动态的extraData也会造成区块的hash计算问题。因为一个区块可以被不同的validator验证,所以会有不同的签名,所以同一个区块会有不同的hash。解决的方案是,计算区块hash的时候把COMMIT签名排除在外。因此我们任然可以在保证block hash一致性的同时进行共识验证。

共识状态

  • New Round: 一个proposer发送新的区块proposal。validator等待PRE-PREPARE信息。
  • PRE-PREPARED: 一个validator已经收到PRE-PREPARE信息,并且广播PREPARE信息。然后等待2F + 1PREPARE或者COMMIT信息。
  • PREPARED: 一个validator已经收到2F + 1PREPARE信息并且广播COMMIT信息。然后等待2F + 1COMMIT信息
  • COMMITTED: 一个validator已经收到2F + 1COMMIT信息并且此时能够把提出的block插入链中。
  • FINAL COMMITTED: 一个validator已经成功把区块插入了链中,并且等待下一轮。
  • ROUND CHANGE: 一个validator等待关于同一个round下的2F + 1ROUND CHANGE信息。

状态转换

  • NEW ROUND -> PRE-PREPARED:

    • Proposer在txpool中收集交易。
    • Proposer提出一个区块proposal并且广播给validator。然后进入PRE-PREPARED状态。
    • 每一个validator进入到PRE-PREPARED状态,一旦收到PRE-PREPARED信息并且伴随着以下情况:
      • 区块proposal是来自于有效的proposer。
      • 区块头有效。
      • 区块proposal的sequence和round和validator的状态匹配。
    • Validator广播PREPARE信息给其他validators。
  • PRE-PREPARED -> PREPARED:
    • Validator收到2F + 1个有效的PREPARE信息,因此而进入PREPARED状态。有效信息需要满足以下条件:

      • sequence和round匹配。
      • 交易hash匹配。
      • 信息是来自已知的validators。
    • 一旦进入PREPARED状态,Validator广播COMMIT信息。
  • PREPARED -> COMMITTED:
    • Validator收到2F + 1个·有效的COMMIT信息,以此进入COMMITTED状态。有效的信息需要满足以下条件:

      • sequence和round匹配。
      • block hash匹配
      • 信息是来自已知的validators。
  • COMMITTED -> FINAL COMMITTED:
    • Validator把2F + 1个commitment签名放进区块头的extraData并且尝试插入区块进区块链。
    • 当插入区块成功,Validator进入FINAL COMMITTED状态。
  • FINAL COMMITTED -> NEW ROUND:
    Validators选一个新的proposer开始新的一轮。

潜在问题

原文地址:https://www.cnblogs.com/zhoujunjie/p/11231030.html

时间: 2025-01-16 20:28:09

Istanbul BFT共识算法解读的相关文章

区块链快速入门(四)——BFT(拜占庭容错)共识算法

区块链快速入门(四)--BFT(拜占庭容错)共识算法 一.BFT简介 1.拜占庭将军问题简介 拜占庭将军问题(Byzantine Generals Problem)是Leslie Lamport(2013年的图灵奖得主)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子.拜占庭将军问题简易的非正式描述如下:拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人.这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击

解密区块链最强心脏 迅雷链共识算法详解

11月10日在广州贝塔咖啡举办的迅雷链技术沙龙上,迅雷链底层工程师张骁就迅雷链共识算法的内在细节,向到场的开发者和区块链爱好者做了详细解读.DPoA+PBFT的算法保证了分布式系统中的强一致性和高效率共识,吸引了在场来宾的关注. 什么是共识算法? 张骁认为,区块链建立在分布式系统上,有若干个节点,每个节点都会维护自己的数据,这些数据需要保证一致性.如果不同的节点提供的数据不同,就不是一个能够正常对外工作的分布式系统.所以在区块链中,需要把这些数据通过复制和同步,来保持一致性,这个过程就叫做共识.

《Nodejs开发加密货币》之二十四:DPOS机制(分布式共识算法)

前言 共识机制是分布式应用软件特有的算法机制.在中心化的软件里,再复杂的问题都可以避开使用复杂的算法逻辑(当然,如果能用算法统领,代码会更加简洁.高效),在开发设计上可以省却一定的麻烦.但在分布式软件开发中,节点间的互操作,节点行为的统一管理,没有算法理论作为支撑,根本无法实现.所以,要想开发基于分布式网络的加密货币,共识机制无法回避. 在第一个部分,专门用一篇文章<共识机制,可编程的"利益"转移规则>来介绍共识机制的作用,也对比了当前加密货币领域常用的三种共识算法原理和优

1.4 [区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)

近几天对区块链中几种常见的共识机制(PBFT,Raft,PoW,PoS,DPoS,Ripple)进行了总结.尽量使用简单易懂语言,篇幅较大,想了解的可以只读每个算法介绍中前边的原理.本篇文章主要参考<区块链技术指南>,首先表示感谢! ---Begin--- 区块链架构是一种分布式的架构.其部署模式有公共链.联盟链.私有链三种,对应的是去中心化分布式系统.部分去中心化分布式系统和弱中心分布式系统. 在分布式系统中,多个主机通过异步通信方式组成网络集群.在这样的一个异步系统中,需要主机之间进行状态

程序语言的奥妙:算法解读 &mdash;&mdash;读书笔记

算法(Algorithm) 是利用计算机解决问题的处理步骤. 算法是古老的智慧.如<孙子兵法>,是打胜仗的算法. 算法是古老智慧的结晶,是程序的范本. 学习算法才能编写出高质量的程序. 懂得了算法,游戏水平会更高. 比如下棋,如果懂得棋谱,就不需要每次考虑"寻找最好的一步棋",按照棋谱 就可以走出最好的几步棋.棋谱是先人们智慧的结果,因此掌握多种棋谱的人更 容易在对弈中获得胜利. 算法的学习类似学习游戏攻略. 算法是编写好程序的"棋谱". 算法必须满足&

龙爱量子科技用新共识模式解读“‘量子+’产业新形态“

主持人:感谢原科技部政策法规司司长王宇先生刚才的精彩发言.很多固有模式已经被打破.接下来让我们一同聆听殷秀军先生为我们带来"中国新共识经济模式解读"的主题发言.有请殷秀军先生! 殷秀军:感谢大家能够抽出时间来共同研讨这个话题.感谢郭主席和龙爱量子的林董事长.感谢各位领导和专家. 我代表亚创联专家团,代表龙爱量子区块链的开发支持方,代表各位专家向大家解读一下新共识经济这种模式.显然,我没有足够的资格来讲这个模式.这个模式是一场革命,是一个创新.这个模式如果在行动中.在劳动中,正如刚才司长

张正友相机标定算法解读

张正友标定算法解读 一直以来想写篇相机标定方面的东西,最近组会上也要讲标定方面东西,所以顺便写了.无论是OpenCV还是matlab标定箱,都是以张正友棋盘标定算法为核心实现的,这篇PAMI的文章<A Flexible New Technique for Camera Calibration>影响力极大,张正友是浙江大学的机械系出身,貌似现在是微软的终身教授了.我就简单的介绍下算法的核心原理,公式的推理可能有点多. 一 基本问题描述:空间平面的三维点与相机平面二维点的映射. 假设空间平面中三维

区块链的共识算法 及 分叉 的通俗讲解 (一)

作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/ 腾讯云专栏: https://cloud.tencent.com/developer/user/1148436/activities 本文不做一般入门的区块链描述讲解.着重简述讲解: 区块链的分叉 共识算法 目录

区块链快速入门(三)——CFT(非拜占庭容错)共识算法

区块链快速入门(三)--CFT(非拜占庭容错)共识算法 一.CFT简介 CFT(Crash Fault Tolerance),即故障容错,是非拜占庭问题的容错技术.Paxos 问题是指分布式的系统中存在故障(crash fault),但不存在恶意(corrupt)节点的场景(即可能消息丢失或重复,但无错误消息)下的共识达成问题,是分布式共识领域最为常见的问题.最早由Leslie Lamport用 Paxon 岛的故事模型来进行描述而得以命名.解决Paxos问题的算法主要有Paxos系列算法和Ra