为什么PBFT需要三阶段

2023-05-16

首先,第一阶段是预提议(pre-prepare),这一阶段的主要原因是使用领导可以降低通信复杂度,但是我对其没了解,就不瞎说了。

接着是提议(prepare)阶段,在这一阶段,所有节点需要收到2f+1条提议消息才能够接受消息,这里解释一下为什么是2f+1条:
PBFT假设系统中存在最多f个拜占庭节点,在领导节点是拜占庭节点的情况下,领导节点可以分别给f个正常节点(设为集合a)和f+1个正常节点(设为集合b)预提议不同的两条消息,接着每个拜占庭节点分别给集合a和集合b中的节点投票,此时f个节点会收到其2f条提议消息,f+1个节点会收到2f+1条提议消息,此时为了避免集合a和集合b达成不同的共识,就要使f个节点达不成共识,而f+1个节点可以达成共识,因此,在提议阶段,我们至少需要2f+1条提议消息;
拜占庭节点可能是不投票的,在所有安全节点投票的情况下,节点最多能收到2f+1条提议消息,因此,我们最多只能需要2f+1条提议消息,否则共识无法进行,失去活性。

最后是提交(commit)阶段。我们先假设没有提交阶段,那么少于f个节点接受并且提交了共识信息,而其他节点因为网络延迟等问题触发了视图变更协议,由于视图变更协议需要2f+1条消息,而如果恰好收到的是未提交消息的2f+1个节点发来的消息,那么领导者节点就不会认为该消息已经被提交,从而重新提议一条消息,出现冲突。一次提交阶段是一定需要的。
接下来解释为什么是2f+1条。我们必须保证已经被提交的消息不会因为视图变更而被认为没有被接受(不是安全区块)。为了保证活性,我们的视图变更协议最多收集2f+1条消息。这里除去f个拜占庭节点,我们希望剩下的f+1个节点中能够有至少一个节点给出最新的安全区块(也就是这个被提交的区块),在2f+1个诚实节点中,至少需要有f+1个节点的安全区块是最新的,才能够满足我们的这个希望,也就是至少有f+1个诚实节点是接受了该区块的。那么对于一条被提交的消息,如何保证至少f+1个诚实节点已经接受了区块呢?需要收集2f+1个区块的接受消息再提交区块(其中可能有f个拜占庭节点伪造的接受消息)。
假设不是2f+1条而是2f条,那么就有f+1个节点未接受该区块,在视图变更阶段,这f+1加上f个拜占庭节点,没有一个节点承认被提交的区块是安全区块,所以必须是2f+1条。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么PBFT需要三阶段 的相关文章

  • 多旋翼-六轴硬件选型

    挑战杯所用六轴 机架 定 桨叶机重 定 拉力 xff08 机重除以0 4 xff09 拉力 电池 桨叶 定 电机定 电调
  • 基于51的扫地车

    51复习 AT89S51系列单片机的ISP下载是通过P15 P16 P1 7 RST引脚来下载的 xff0c 而宏晶国产STC单片机则具有串口ISP功能 xff0c 可直接使用串口 xff0c 将程序下载进单片机 40个引脚 https b
  • pix2.4.8 从入手到装机(2021.4.4)

    2023 2 10 我重新完完整整的又走了一次 xff0c 记录了一下过程 xff1a 飞控是pix2 4 8 xff0c 固件是APM 原文 xff1a 咸鱼入手2套辣鸡pix xff0c 第一次使用并检查硬件好坏 xff0c 确认是否退
  • 焊板常用元器件(2021.4.6)

    钽电容 正负 xff1a 有线一端为正级 耐压 xff1a 2 Led Key buzzer 按键 xff1a 对角线焊到电路中 灯 xff1a 绿条是负 蜂鸣器 xff1a 区分有无源 xff0c 引脚 xff0c 有正负为有源 xff0
  • 恒温箱课程设计(2021.4.12)

    第一步 方案选择 淘宝闲鱼csdn 主要难点在于 xff1a 小控大是难点 xff0c 对执行器和驱动的选择 最终 电磁和固态继电器都不行 xff0c 要可控相位的继电器 xff0c 太贵了 只能固态了 xff0c if控制 xff0c 效
  • JVAV学习笔记(二)—接口

    JVAV学习笔记 xff08 二 xff09 接口 abstract class AbsDemo abstract void show1 abstract void show1 interface Inter public static f
  • CAD2020入门学习(2021.4.13)

    学习途径 xff1a 软件管家CAD2018网课 第一步 界面熟悉 第二步 新建 保存 关闭 第三步 基本操作 xff1a 鼠标 xff0c 命令 xff0c 相对坐标和极坐标 第四步 搜索 xff1a CAD快捷键 画直线 L画圆 C画弧
  • 32平衡车

    1 组装 底板和主板到了 xff0c 组装 xff0c 测试 问题 xff1a tb6612电容炸了 原因 xff1a xff1f xff1f xff1f xff08 1 xff09 钽电容纹波电流小 xff0c 扛过流能力弱 xff0c
  • 储物柜2022.1.1

    keil pack http www keil com dd2 pack keil 安装 httpsblog csdn netMatcha ice creamarticledetails118684582 Jlink驱动 https www
  • 【动手学深度学习】环境配置(详细记录,从vmware虚拟机安装开始)

    目录 装了很多次环境 xff0c 步骤已精简每一步都不可缺 xff0c 也得按顺序第一大步 xff1a VMware 安装 43 使用 VMware 下载及安装 ubuntu18 04 下载 VMware 使用 第二大步 xff1a ubu
  • 【物资投放无人机】记录( ROS + PX4 + YOLOV5 + ESP8266 + 舵机)

    目录 写在前面 xff1a 硬件环境写在前面 xff1a 软件环境一 无人机组装 调试 xff08 PX4或APM xff09 二 Jetson Nano 43 ROS 43 YOLO 目标检测实现 win10安装YOLOv5环境 训练模型
  • 【K210踩坑】pytorch模型转kmodel,Dock上使用。(最终未实现)

    目录 前言一 踩大坑二 pytorch 转 kmodel第 步 xff1a pytorch模型搭建 训练 保存第 步 xff08 思路一 xff09 xff1a pytorch 转 onnx 转 pb 转 tflite 转 kmodel1
  • 【常用命令】conda、linux、ros

    目录 一 conda xff08 0 xff09 获取帮助 xff08 1 xff09 列出所有环境 xff08 2 xff09 创建新环境 xff08 3 xff09 删除环境 xff08 4 xff09 激活环境 xff08 5 xff
  • 【车机协同slam】miniPC、Nano、T265、UWB linktrack P-B

    目录 0 前言0 1 软硬件0 2 实现步骤 一 装系统 换源 装ROS1 1 装系统 换源2 1 装ROS 二 T2652 1 ubuntu 安装 T265 SDK xff08 已测18 20 Nano xff09 xff1a 2 2 u
  • 【keil使用】

    目录 一 下载安装1 1下载安装破解1 2 pack包下载 二 颜色设置三 基础使用四 仿真使用 一 下载安装 1 1下载安装破解 1 2 pack包下载 二 颜色设置 三 基础使用 四 仿真使用
  • 【焊接基础】

    目录 一 焊接工具 xff08 多了解 xff09 一 常见元器件焊接1 1 稳压管1 2 保险丝1 3 二 常见电路2 1 降压电路2 2 防反接电路 三 焊接方法3 1 焊接步骤3 2 芯片 QFP封装3 3 芯片 BGA封装 四 常见
  • ONOS安装和运行

    安装运行ONOS 1 安装Karaf Maraf http archive apache org dist karaf 3 0 3 apache karaf 3 0 3 tar gz http archive apache org dist
  • 【mavros安装】GeographicLib踩坑及解决

    目录 xff08 0 xff09 介绍 xff08 1 xff09 安装mavros xff08 2 xff09 安装GeographicLib xff08 官网方法 xff0c 报错了就用下一个我用的方法 xff09 xff08 2 xf

随机推荐