Archipelago

Lec 9容错同步共识下界

讲义完成更新于 2026-09-17

Lec 9 容错同步共识下界

对应 Lynch《Distributed Algorithms》第 6.4–6.7 节与第 7.1 节 · 主题:拜占庭 n>3fn>3f、网络连通度、任何共识 f+1f+1 轮下界与 k-agreement

TL;DR

  • 借助六边形系统构造与不可区分性拼接,严格证明拜占庭共识在无签名情况下必须满足进程数 n>3fn > 3f(弱拜占庭亦无法逾越此界)。
  • 在不完全网络中,网络拓扑需满足连通度 conn(G)≥2f+1\mathrm{conn}(G) \ge 2f+1,以防御恶意节点在顶点割上的双面欺骗。
  • 即使仅存在停止故障,任何确定性共识算法都至少需要 f+1f+1 轮;将一致性放宽到至多 kk 个决定值时,紧界为 ⌊f/k⌋+1\lfloor f/k\rfloor + 1 轮。

1. 本讲要回答的核心问题

Lec 8 的算法代价不菲:拜占庭需 n>3fn>3f、所有算法都用 f+1f+1 轮。本讲证明这些代价并非偶然,而是问题固有的下界:

  1. 进程数: 拜占庭共识必须 n>3fn>3f;
  2. 连通度: 不完全图上需 conn(G)≥2f+1\mathrm{conn}(G)\ge 2f+1;
  3. 问题强度: 连弱拜占庭也逃不掉 n>3fn>3f;
  4. 轮数: 即便只有停止故障,也需 f+1f+1 轮;
  5. k-agreement: 放宽到 kk 个决定值,紧界为 ⌊f/k⌋+1\lfloor f/k\rfloor+1 轮。

贯穿全讲的技术是不可区分性(indistinguishability)与情景拼接(scenario argument)。

2. 拜占庭需 n>3fn>3f

2.1 基础情形:三进程容不下一个拜占庭故障

引理 6.26. 三个进程无法在一个可能故障的前提下求解拜占庭共识。

证明(六边形论证 / Hexagon Argument). 反设三进程算法 AA 容忍一个拜占庭故障。取 AA 中每个进程的两份拷贝,拼成一个六边形系统 SS:无撇拷贝 1,2,31,2,3 初值 00,带撇拷贝 1′,2′,3′1',2',3' 初值 11(首尾相接成环)。

SS 不是用来解共识的——它只是一个合法的同步系统,每个进程只有邻居的局部命名,看不出有重复拷贝;对每个进程而言,SS 的局部视图与三角形系统 AA 完全一样。设 α\alpha 为 SS 在上述输入下的(唯一)执行:

  • 对 {2,3}\{2,3\} 看:α\alpha 像三角形 AA 中“进程 1 故障、2 和 3 初值 0”的执行 α1\alpha_1(那个“故障的 1”实为 1,1′,2′,3′1,1',2',3' 的组合,是合法拜占庭行为)。故 2,32,3 在 α1\alpha_1 决定 00 ⇒ 在 α\alpha 也决定 00。
  • 对 {1′,2′}\{1',2'\} 看:α\alpha 像“进程 3 故障、1′,2′1',2' 初值 1”的执行 α2\alpha_2。故 1′,2′1',2' 决定 11。
  • 对 {3,1′}\{3,1'\}(连接两侧的边)看:α\alpha 像“进程 2 故障”的执行 α3\alpha_3,迫使 33 与 1′1' 一致。

但 33 决定 00、1′1' 决定 11——三个视图给出的约束相互冲突,SS 不可能有良定义行为。矛盾。□\square

直觉: 把两份“输入相反”的算法拷贝缝成一个环,每条边在某个进程眼里都像“对面那半是个故障进程”。算法被迫同时满足两侧互斥的有效性,环上首尾“决定 0”与“决定 1”无法弥合。

2.2 一般情形 n≤3fn\le 3f

把 nn 个进程分成三组,每组 ≤f\le f 个,用一个三进程系统模拟(每组当一个“超级进程”,组内全故障等价于一个拜占庭进程)。于是 n≤3fn\le 3f 的解会给出三进程容一故障的解,与引理 6.26 矛盾。

定理. 拜占庭共识可解当且仅当 n>3fn>3f。

3. 不完全图的连通度

完全图之外,拜占庭共识的可解性取决于图的连通度 conn(G)\mathrm{conn}(G)(删去使图不连通的最少顶点数):

定理. 在 nn 节点图上拜占庭共识可解 当且仅当 n>3fn>3f 且 conn(G)≥2f+1\mathrm{conn}(G)\ge 2f+1。

直觉:连通度 ≤2f\le 2f 时,存在一个 ≤2f\le 2f 的顶点割把图分成两半;对手用 ff 个故障节点在割上“两面说不同的话”,两半各自被引向不同决定——这是六边形论证在图上的推广。

4. 弱拜占庭也需 n>3fn>3f

**弱拜占庭共识(Weak Byzantine Agreement)**只把有效性减弱为:

弱拜占庭有效性

若无任何故障且所有进程初值同为 vv,则只能决定 vv。 (即:只在“完全无故障”的执行里要求有效,比普通拜占庭弱得多。)

即便如此,同样的六边形/情景拼接方法可证:

定理. 弱拜占庭共识仍需 n>3fn>3f。

这说明 n>3fn>3f 的壁垒非常稳健——削弱有效性并不能绕过它。

5. 任何共识都需 f+1f+1 轮

最重要的轮数下界,即便只有停止故障、即便 V={0,1}V=\{0,1\} 也成立:

定理. 不存在能让所有非故障进程在 ≤f\le f 轮内决定的共识算法(停止或拜占庭)。

不失一般性地假设:完全图、所有进程恰在第 ff 轮末决定并停机、每轮每进程向所有人发消息、V={0,1}V=\{0,1\}。

通信模式是三元组集合 {(i,j,k):i≠j, 1≤k}\{(i,j,k):i\ne j,\,1\le k\} 的子集(哪些进程在第几轮发给谁,不含消息内容)。称其好,若:

  1. 所有 k≤fk\le f;
  2. 停止单调——若 (i,j,k)(i,j,k) 缺失则一切 (i,j′,k′)(i,j',k')(k′>kk'>k)也缺失(进程一旦某轮没发就永不再发);
  3. 至多 ff 个故障进程。 :::

5.1 先看 f=1f=1

反设有 1 轮算法 AA。构造一条执行链 exec(ρ0)→⋯→exec(ρn)\mathrm{exec}(\rho_0)\to\cdots\to\mathrm{exec}(\rho_n),使得:(a) 首执行唯一决定 00;(b) 末执行唯一决定 11;(c) 相邻两执行对某个“两边都非故障”的进程不可区分。

  • ρ0\rho_0:全 00、无故障,由有效性决定 00。
  • 逐步删去进程 1 发出的消息(一次一条):删去 1→21\to2 后,对除 1,21,2 外的进程不可区分(n≥3n\ge3 故存在这样的非故障进程),决定值不变……删完进程 1 的全部消息。
  • 把进程 1 的输入从 0 改成 1:因 1 此时不发消息,对其他进程不可区分。
  • 逐条补回进程 1 的消息,到达 ρ1\rho_1(仅进程 1 初值 1、无故障)。
  • 对进程 2,3,…,n2,3,\dots,n 重复,终于 ρn\rho_n(全 11、无故障),由有效性决定 11。

链上每步决定值不变,却从 00 走到 11,矛盾。□\square

5.2 一般 ff:分块论证

把 2r2r(r=fr=f)份 AA 拷贝拼成长链系统 SS,用“信息在 rr 轮内传播不到块 BB 中央”的论证:执行 α\alpha 与 α0\alpha_0 对块 BB 中除两端各 kk 个外的进程在前 kk 轮不可区分,于是对 BB 的中央进程 ii 在 rr 轮内不可区分。ii 在 α0\alpha_0 决定 00 ⇒ 在 α\alpha 也决定 00,但 α\alpha 中 ii 本应决定 11,矛盾。

直觉: 每“用掉一个故障”只能在不可区分链上推进一步;要把“全 0 决定 0”与“全 1 决定 1”连起来需要 f+1f+1 步,故至少 f+1f+1 轮。这与 Lec 4 着色下界的“降维/链式”论证同源。

6. k-Agreement:放宽一致性

把“全体决定同一值”放宽为“决定值落在某个大小 ≤k\le k 的集合里”:

::: definition k-Agreement 规范

  • 一致性: 存在 W⊆VW\subseteq V,∣W∣=k|W|=k,所有决定值 ∈W\in W。
  • 有效性(强版本): 任何决定值是某进程的初值。
  • 终止性: 所有非故障进程最终决定。 :::

6.1 算法 FloodMin

FloodMin: 每进程维护 min-val\textit{min-val}(初始为自己初值)。共 ⌊f/k⌋+1\lfloor f/k\rfloor+1 轮,每轮广播 min-val\textit{min-val} 并更新为收到值与自身的最小者;最后决定 min-val\textit{min-val}。

正确性核心引理:

引理 7.1. 活跃进程 min-val\textit{min-val} 之集 M(r)M(r) 随 rr 单调不增:M(r)⊆M(r−1)M(r)\subseteq M(r-1)。 引理 7.2. 若某轮 rr 至多 d−1d-1 个进程故障,则 ∣M(r)∣≤d|M(r)|\le d。

由引理 7.2:⌊f/k⌋+1\lfloor f/k\rfloor+1 轮中必有一轮故障数 ≤k−1\le k-1(否则总故障数 ≥k⋅(⌊f/k⌋+1)>f\ge k\cdot(\lfloor f/k\rfloor+1)>f),那一轮起 ∣M∣≤k|M|\le k 并保持,故 ≤k\le k 个决定值。

定理. FloodMin 在 ⌊f/k⌋+1\lfloor f/k\rfloor+1 轮内求解 k-agreement。且这是紧的——存在匹配下界 ⌊f/k⌋+1\lfloor f/k\rfloor+1。

7. 本讲小结与下界全景

下界结论故障类型技术
进程数n>3fn>3f拜占庭六边形 + 三组归约
连通度conn≥2f+1\mathrm{conn}\ge 2f+1拜占庭顶点割上的双面欺骗
问题强度弱拜占庭仍需 n>3fn>3f拜占庭同六边形方法
轮数f+1f+1 轮即便停止不可区分性链 / 分块
k-agreement⌊f/k⌋+1\lfloor f/k\rfloor+1(紧)停止M(r)M(r) 收缩 + 组合下界

核心方法论:不可区分性——构造一条相邻执行对某非故障进程“看起来一样”的链,迫使决定值无法沿链改变,从而把“显然该决定 0”与“显然该决定 1”逼出矛盾。