web3中的共识:PBFT、Tendermint 与 DAG 共识

区块链共识机制全景解析:PBFT、Tendermint 与 DAG 共识

关键词:BFT、PBFT、Tendermint、HotStuff、DAG 共识、区块链安全、一致性协议

区块链系统的本质,是在一个不可信、分布式、可能存在恶意节点的环境中,就“账本状态”达成一致。而支撑这一目标的核心技术,就是共识机制(Consensus Mechanism)

本文将从拜占庭容错(BFT)理论出发,系统性介绍三类在区块链与分布式账本中极具代表性的共识机制:

  • PBFT(Practical Byzantine Fault Tolerance):经典 BFT 共识的起点
  • Tendermint:工程化落地最成功的 BFT 区块链共识之一
  • DAG 共识:突破“区块链线性结构”的新一代共识范式

同时,我们将结合 HotStuff / HotStuff-2 等研究工作,解释这些协议在**安全性(Safety)活性(Liveness)**之间的权衡逻辑。


一、共识问题与拜占庭容错基础

1. 什么是共识?

在分布式系统中,共识问题可以抽象为:

多个节点在消息可能丢失、延迟、篡改,甚至部分节点作恶的情况下,仍然对同一个值达成一致

在区块链语境下,这个“值”通常是:

  • 下一笔交易 / 区块
  • 某一高度(Height)的区块内容
  • 某个状态机的输入序列

2. 拜占庭故障模型(Byzantine Fault Model)

拜占庭故障指的是节点可能出现任意行为,包括:

  • 宕机
  • 发送错误消息
  • 恶意串谋
  • 对不同节点发送不同信息

经典结论:

在完全拜占庭环境中,若系统要保证安全性与活性,必须满足:

n≥3f+1n \ge 3f + 1n≥3f+1

其中 (f) 是最多可容忍的恶意节点数。

这也是 PBFT、Tendermint、HotStuff 等协议共同遵循的基础假设。


二、PBFT:经典 BFT 共识的原点

1. PBFT 的基本思想

PBFT(Practical Byzantine Fault Tolerance)由 Castro 和 Liskov 于 1999 年提出,是第一个可工程落地的拜占庭容错共识算法

其核心目标是:

  • 异步或部分同步网络
  • 容忍最多 (f<n/3)(f < n/3)(f<n/3) 个恶意节点
  • 实现单次共识的最终性(Single-Slot Finality)

PBFT 并不依赖区块链结构,本质是一个状态机复制(State Machine Replication)协议


2. 三阶段协议(Three-Phase Protocol)

PBFT 的一次共识包含三个阶段:

  1. Pre-Prepare(预准备)
    • 主节点(Primary)提出提案
  2. Prepare(准备)
    • 副本节点广播 Prepare 消息
    • 收集到 (2f) 个 Prepare 后进入 Commit
  3. Commit(提交)
    • 节点广播 Commit
    • 收集到 (2f + 1) 个 Commit 后正式提交

该设计确保:

  • 任意两个已提交值,至少有 (f+1) 个诚实节点交集
  • 恶意节点无法制造冲突提交

3. View Change 与通信复杂度

PBFT 的核心瓶颈在于 View Change(主节点切换)

  • 新 Leader 需要收集 (2f+1) 个节点的“锁状态(Lock/QC)”
  • 并将这些状态广播给所有节点

这导致:

  • 视图切换通信复杂度为 (O(n^2))
  • 整体最坏情况复杂度甚至达到 (O(n^3))

👉 这也是 PBFT 难以扩展到大规模区块链网络 的根本原因。

4. PBFT(三阶段 + View Change)

核心关键词Pre-Prepare → Prepare → Commit,O(n²) 广播

Replica 3Replica 2Replica 1PrimaryClientReplica 3Replica 2Replica 1PrimaryClientRequestPre-Prepare (v, n, m)Pre-PreparePre-PreparePreparePreparePreparePreparePreparePrepareCommitCommitCommitCommitCommitCommitReplyReplyReply

📌 解释重点

  • Prepare 阶段本质是锁定 proposal
  • Commit 阶段是达成不可逆共识
  • View Change 极其昂贵(没画出来,但你文中可以点)

三、Tendermint:工程化 BFT 区块链共识

1. Tendermint 的定位

Tendermint 并不是单一算法,而是一套完整的:

  • BFT 共识引擎(Tendermint Core)
  • 应用接口(ABCI)

它的目标非常明确:

将“共识”与“应用状态”彻底解耦,成为通用的 BFT 区块链内核。

Cosmos 生态正是建立在 Tendermint 之上。


2. 两阶段投票:Pre-vote / Pre-commit

在每个区块高度(Height)下,Tendermint 通过多个 Round 进行尝试:

  • Pre-vote:节点对提案投票
  • Pre-commit:在形成 (>2/3) Pre-vote 后进入提交投票

当某个区块在同一 Round 中获得:

  • 超过 (2/3) 投票权的 Pre-commit

则该区块被最终确定(Finality)


3. 锁定规则(Locking Rules)

Tendermint 的安全性依赖一套严格的锁定规则:

  • 一旦节点 Pre-commit 某区块,即被锁定
  • 只能在**更高 Round 出现合法 Polka((>2/3) Pre-vote)**时解锁

这正是经典的:

Lock–Commit(或 Commit–Adopt)范式

4. 活性与 Δ 等待

与 PBFT 不同,Tendermint 在 View Change(Round 切换)中:

  • 不携带完整的锁状态证书
  • 而是通过 等待一个 (O(Δ)) 的超时,确保新提议者看到所有诚实节点的状态

结果是:

  • ✅ View Change 通信复杂度降为 (O(n))
  • ❌ 协议 不具备响应性(Non-Responsive)

这也是 Tendermint 在论文与工程上一个非常清晰的取舍。


5. Tendermint(两阶段 + Lock + 超时)

核心关键词Propose → Prevote → Precommit,锁规则 + 超时驱动

2/3 prevote

timeout

2/3 precommit

timeout

Propose

Prevote

Precommit

Commit

📌 解释重点

  • Prevote ≈ PBFT Prepare(但更弱)
  • Lock 发生在 Precommit
  • 超时(Δ)是 Tendermint 能前进的前提
  • Safety > Liveness(工程上非常重要)

四、从 HotStuff 到 HotStuff-2:两阶段是否足够?

1. 活性问题的本质

在 PBFT / Tendermint / HotStuff 这类协议中,系统在 Leader 失败时可能处于三种状态:

  1. 无人锁定、无人提交
  2. 少数节点锁定,但无人提交
  3. 超过 (2f+1) 节点锁定,部分节点已提交

由于节点无法区分自己处于哪种状态,协议必须“偏向安全性”:

默认假设最坏情况(状态 3)

这正是 View Change 复杂性的根源。


2. HotStuff:三阶段换线性视图切换

HotStuff 通过引入 额外的 Key 阶段,建立新的不变量:

  • 如果某个锁存在
  • 则至少 (2f+1) 节点“知道”它的存在

这样,新 Leader 无需等待 Δ,即可安全推进。

代价是:

  • 协议从 2 阶段 → 3 阶段

3. HotStuff-2 的关键洞察

HotStuff-2 重新审视了问题,提出一个极其“简单但深刻”的观察:

如果 Leader 能拿到前一 View 的锁证书,就无需等待;否则等待 Δ 也不损失响应性。

即:

  • 有证书 → 响应式推进
  • 无证书 → 明确等待 Δ

最终结论是:

  • 两阶段足够实现 BFT
  • 同时满足:
    • 线性 View Change
    • 响应性
    • 最坏 (O(n^2)) 通信复杂度

4. HotStuff(三阶段 → 管道化 → Leader 线性)

核心关键词Prepare → Pre-Commit → Commit,QC + 单向通信

Validator 3Validator 2Validator 1LeaderValidator 3Validator 2Validator 1LeaderQC 驱动下一轮\n形成流水线Propose(B1)Propose(B1)Propose(B1)Vote(B1)Vote(B1)Vote(B1)QC(B1)QC(B1)QC(B1)

📌 解释重点

  • PBFT 的三阶段压缩到多个区块之间
  • 不再是全网广播,而是:
    • Validator → Leader
    • Leader → Validator
  • View Change 变成 Leader rotation

👉 这是 Tendermint → HotStuff 质变的地方


五、DAG 共识:打破“区块线性化”的新范式

1. 为什么需要 DAG?

传统区块链的核心限制在于:

  • 全网一次只能产生一个区块
  • 吞吐量、确认延迟受限于链结构

DAG(Directed Acyclic Graph)通过允许:

  • 多个交易 / 事件并行产生
  • 通过偏序关系而非线性链排序

显著提升了吞吐能力。


2. DAG 共识的典型特征

  • 数据结构:有向无环图,而非区块链
  • 共识方式:
    • Gossip 协议
    • 虚拟投票(Virtual Voting)
    • 拓扑排序

代表项目包括:

  • Hedera Hashgraph
  • IOTA Tangle
  • Nano

3. DAG vs Blockchain

维度BlockchainDAG
数据结构线性区块链有向无环图
并发性
吞吐受限
最终性明确依赖算法
去中心化更容易常依赖委员会

DAG 并非“取代区块链”,而是:

在高吞吐、低费用、企业级场景中的一种重要补充。

4. DAG 共识(并行区块 + 因果顺序)

核心关键词Partial Order,不是“没有共识”

Block A

Block B

Block C

Block D

Block E

Block F

📌 解释重点

  • 没有单一链头
  • 共识的是:
    • 哪些区块被接受
    • 因果关系
  • 全序(Total Order)通常:
    • 事后计算
    • 或弱化(虚拟投票 / 费用排序)

六、总结:共识机制的演化脉络

从 PBFT 到 Tendermint,再到 HotStuff / DAG,我们可以清晰看到一条演进主线:

降低通信复杂度

线性 Leader + QC

并行化数据结构

PBFT

Tendermint

HotStuff

DAG

  • 理论可行 → 工程可用 → 高性能可扩展
  • 持续优化:
    • 通信复杂度
    • Leader 切换成本
    • 响应性
    • 并行度

共识机制从来不是“银弹”,而是:

在安全性、活性、性能、去中心化之间不断权衡的工程艺术。

Read more

【大作业-46】基于YOLO12的无人机(航拍)视角的目标检测系统

【大作业-46】基于YOLO12的无人机(航拍)视角的目标检测系统

基于YOLO12的无人机(航拍)视角的目标检测系统 🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳 【大作业-46】基于yolo12的航拍(无人机)视角目标检测与追踪系统 🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳 各位小伙伴大家好,今天我们为大家带来的是基于无人机视角下的目标检测,主要是对常规的行人、车辆这些目标进行检测,并且接着这个机会我们对yolo12的新模块进行一下说明,和之前的内容一样,我们的教程中包含了标注好的数据集、训练好的yolov5、yolov8、yolo11以及yolo12的模型,还有一个配套的图形化界面。本次的数据集包含的类别如下: 0: pedestrian 行人 1: people 人 2: bicycle 自行车 3: car 汽车 4: van 货车 5: truck 卡车 6: tricycle 三轮车 7: awning-tricycle 遮阳篷三轮车 8: bus 公交车 9: motor 摩托车 以下是部分数据示例。

机器人灵巧手:技术演进、市场格局与未来前景

机器人灵巧手:技术演进、市场格局与未来前景

机器人灵巧手:技术演进、市场格局与未来前景 机器人灵巧手作为具身智能的”最后一厘米”,正经历从实验室技术到产业化落地的关键转折点。2025年,全球灵巧手市场规模已达63.39亿元,中国市场规模更高达501.33亿元,年复合增长率超过300%。随着特斯拉Optimus Gen3等产品的量产计划推进,灵巧手技术正向”全感知”和”自适应”方向发展,逐步突破”性能、成本、可靠性”的”不可能三角”。从驱动系统看,空心杯电机和微型丝杠+腱绳传动方案成为主流;感知系统则通过触觉传感器与AI视觉融合实现突破。产业链国产化率已达70%以上,核心部件如空心杯电机、谐波减速器、传感器等均实现自主可控。未来5-10年,灵巧手有望从工业制造向家庭服务、医疗康养、特种作业等多元场景扩展,2030年全球市场规模预计达450亿元,2035年销量将突破百万只,迎来百亿级市场。 一、技术发展路径与核心模块创新 灵巧手技术发展经历了三个主要阶段:1970-1990年的基础结构阶段,1990-2020年的系统集成阶段,以及2020年至今的”全感知”和”自适应”

数字频率计FPGA实现中的测频方法比较

FPGA数字频率计设计实战:四种测频方法深度解析与选型指南 你有没有遇到过这样的情况?在FPGA项目中需要测量一个信号的频率,结果发现读数总是在跳动,尤其是在低频段——明明是100 Hz的信号,显示却在98~102之间来回“跳舞”。或者,在高速脉冲测量时,响应太慢,根本跟不上动态变化。 这背后,其实不是你的代码写错了,而是 测频方法选错了 。 在嵌入式和测量系统开发中, 数字频率计 早已不再是实验室专用设备,它已经渗透到通信、工业控制、传感器接口乃至消费电子的方方面面。而FPGA凭借其天然的并行处理能力,成为实现高精度、实时频率测量的理想平台。 但问题来了:面对琳琅满目的“测频方案”——直接法、周期法、多周期同步、等精度……到底该用哪一个?它们真的只是“理论不同”吗?为什么有些方法在低频表现惊艳,到了高频反而不如人意? 今天,我们就来一次彻底拆解。不讲空话套话,只聚焦四个核心维度: 测量精度、动态范围、资源开销、实现复杂度 ,带你从原理到代码,

PX4使用mid360通过fastlio算法实现无人机定点模式悬停

PX4使用mid360通过fastlio算法实现无人机定点模式悬停

无人机为自主搭建,px4固件版本使用为1.15.4(pixhawk 6cmini),机载电脑为jetson orin nano,激光雷达为大疆的mid360,激光雷达通过开源算法fastlio获取当前位置信息,转换为ENU坐标系下的位置通过mavros话题发布给px4,实现无人机定位效果,使用过程中无光流无GPS。其中远程控制软件为nomachine,使用路由器为千兆(使用电脑热点或者较差路由器可能会导致远程连接巨卡并且是不是掉线,因此尽量选择一个好一点的路由器来进行远程控制),同时orin nano可能存在一些问题,当出现下图标志时,nomachine才可以进行远程操控,并非开机立刻启动。                                首先搭建mid360实现fastlio所需环境,可以得到激光雷达获取到的当前定位信息,即可以通过打印激光雷达当前的odometry信息完成雷达的定位即无人机当前位置。         启动雷达: roslaunch livox_ros_driver2 msg_MID360.launch         启动fa