▸ FAILURE ATLAS · 本层本可拦下的故障

一部矿池故障史,逐一命名。

我们公开来源集合中的每一起矿池事件,按日期索引。对每一起——出了什么错、ReserveGrid OS 的哪一层本可以拦下它、会触发哪个 reason code。本图谱自身不作论证;它让这些 code 自行论证。若某一行尚未接通,就标注 "unwired."。若某个 code 在 v2.0 之前并不存在,也会注明。

VELDRA
故障图谱
VOL · 2026
▬ 八件入卷

事故
入卷

在案。

公开事件,公开出处。每一件都映射到 Veldra 会发出的 reason code,以及本可在它离开矿池之前将其拦下的信任层。

本卷·已收录
08
案例 · 2015 → 2025
案号
01
/ 08
日期
Jul 2015
涉事方
F2Pool · BTCNuggets · others
分类
invalid · L2 · T1

半数网络不验证就挖矿 · 多个矿工损失超过 50K 美元。

在一次 soft-fork 激活之后,几个大型 pool 继续在一段未完全验证的 chain 上构建。SPV-mining:信任上一个区块的 header,在其上挖矿,之后再验证。该 chain 段后来证实包含一个无效区块。多个 pool 合计损失超过 50,000 美元的补贴和 fees。当时 bitcoin.org 发出的警报明确指出了跳过验证的成本。

50K 美元+ 直接损失 · 多个矿工
▬ 入档事实
  • §01July 2015
  • §02Half of network hashrate mining unvalidated headers
  • §03>$50,000 combined direct loss · public estimate
  • §04Bitcoin.org issued a network alert
v1 · gateway
v2 · invariant
v2.0.0 ▬ 裁决

SPV-mining 没有 v2_invariant_* code — verifier 无法观察自己从未收到的 header。结构性答案在 gateway 行为:无论上游 pool 做什么,validate-then-forward 都保持不变,因此配置错误的 proxy 无法通过 Veldra 前置的矿工把未验证的工作泄漏出去。

来源
  • [news]bitcoin.org · network alert (Jul 2015)
案号
02
/ 08
日期
Apr 2023
涉事方
F2Pool
分类
invalid · L2 · T2

F2Pool 发出两个无效区块 · 生产环境的自定义 sigops patch。

F2Pool 部署了一个自定义 Bitcoin Core patch,降低了 coinbase 预留的 sigops 预算。高度 783,426 和 784,121 的两个区块发出去的 sigops 计数与网络不一致。两者均被拒。patch 在内,失败在外。

2无效区块 · 同一运营者
▬ 入档事实
  • §01Heights 783,426 · 784,121
  • §02Custom patch reduced reserved sigops
  • §03Coinbase sigops abnormal · sigops budget warning
  • §04Public source: BitMEX Research, b10c
v1 · gateway
sigops_budget_warning
coinbase_sigops_abnormal
v2 · invariant
v2_invariant_sigops_mismatch
v2_invariant_sigops_exceed_max
v2.0.0 ▬ 裁决

v2_invariant_sigops_mismatch 在 declared-vs-derived 偏差时触发;v2_invariant_sigops_exceed_max 在结构性突破时触发。任一都会在 gateway 拒绝该 template。

来源
  • [blog]BitMEX Research · F2Pool sigops
  • [blog]b10c · sigops budget anomaly
案号
03
/ 08
日期
Nov 2023
涉事方
F2Pool
分类
censorship · L1 · T3

F2Pool 审查了 6 个区块中受 OFAC 制裁的交易。

2023 年 11 月期间,F2Pool 挖出的六个区块漏掉了涉及受 OFAC 制裁地址的交易,而这些交易被网络其余部分接受。这种审查是不透明的 — 没有公开 policy,没有公开理由。无论你是否同意这种 policy,带命名编码的结构化过滤比沉默的遗漏更可审计。

6区块 · 缺失的受制裁 txs
▬ 入档事实
  • §016 blocks · Nov 2023
  • §02Sanctioned txs absent · accepted elsewhere
  • §03No public policy disclosure at the time
  • §04Public coverage: CoinDesk, TheMinerMag, b10c
v1 · gateway
template_tx_filter_policy_applied
v2 · invariant
v2.0.0 ▬ 裁决

Veldra 在任何方向都不强制执行审查 policy。但坚持已应用的 filter 必须被命名 — 运营者会得到哪个 filter 在哪个 template 上运行的审计轨迹。

来源
  • [news]CoinDesk · F2Pool OFAC filtering
  • [news]TheMinerMag · censorship report
  • [blog]b10c · F2Pool tx omissions
案号
04
/ 08
日期
2024 · ongoing
涉事方
Antpool
分类
empty · L1 · T3

Antpool 在每个 tip 之后的 30 秒内提供空块 jobs。

Antpool 的 job 分发在每个新区块之后的最初约 30 秒发送空 templates,直到完整的 template 可用。行业基线是 <1% 的空块;Antpool 全年保持在约 2%。运营上合法,经济上亏损。

2% 空块率 · 对比 <1% 基线
▬ 入档事实
  • §01~30 seconds of empty jobs per new tip
  • §02~2% empty block rate · vs <1% network norm
  • §03Pattern stable across the year · not an outage
  • §04Operator can opt out of the practice with policy
v1 · gateway
template_tx_count_low_warning
v2 · invariant
v2_invariant_mempool_tolerance_exceeded
v2.0.0 ▬ 裁决

L1 在默认 policy 下发出 template_tx_count_low_warning。选择以 verdict_warn_forward 显示该信号的运营者,可以在自己的 telemetry 中得到结构化信号,而不是在链上看到不透明的模式。

来源
  • [blog]b10c · empty block report
  • [chain]mempool.space · empty block tracker
案号
05
/ 08
日期
Sep 2024
涉事方
Antpool · BTC.com · Poolin · Binance Pool · EMCD · Rawpool
分类
structural · L2 · T3

五个 pool 共用一个 template 来源 · 占网络算力 26%。

对 2024 年 9 月区块的 template 相似性分析显示,BTC.com(99%)、Poolin(98%)和三个较小的 pool 都在转发来自同一上游的 templates。该来源出现一个缺陷就会传播到网络算力的四分之一。这不是过去的失败;而是让本图谱其余部分不可避免的结构性条件。

26% 网络占比 · 单一 template 来源
▬ 入档事实
  • §01BTC.com 99% template match · Poolin 98% match
  • §02Binance Pool · EMCD · Rawpool also dependent
  • §03Combined network share 26%+ from one origin
  • §04No single-pool fix would have addressed this
v1 · gateway
v2 · invariant
v2_invariant_*
v2.0.0 ▬ 裁决

在每个 pool 边界做独立的 re-derivation 打破了单一来源的依赖。过去失败的图谱变成每个 pool 的下限;缺陷不再向下游传播。

来源
  • [blog]b10c · template similarity analysis
案号
06
/ 08
日期
Dec 2024
涉事方
Antpool · proxy fleet
分类
near-miss · L2 · T2

Antpool 矿池集群发送了 17 秒 coinbase 值过期的 jobs。

高度 874,037 / 873,559 / 875,590 的一次短暂 fork 期间,Antpool 的 job 分发路径派发了 coinbase 值基于上一个 tip 缓存的工作。被缓存的路径绕过了原本会拒绝零/过期 coinbase 的 policy。17 秒的算力被烧在了不可能有效的 jobs 上。

17无效 jobs 秒数
▬ 入档事实
  • §01Heights 874,037 · 873,559 · 875,590
  • §0217 seconds of stale-coinbase jobs distributed
  • §03Cached coinbase values from the prior tip
  • §04No block accepted on the bad templates
v1 · gateway
coinbase_value_zero_rejected
v2 · invariant
v2_invariant_coinbase_value_mismatch
v2.0.0 ▬ 裁决

v2_invariant_coinbase_value_mismatch 在每个 template 上都从原始 coinbase outputs 重新计算 — verifier 不查阅任何缓存路径。过期的 coinbase 会立即在 re-derivation 比较器上失败。

来源
  • [blog]b10c · December 2024 coinbase fork notes
案号
07
/ 08
日期
Date not pinned in source
涉事方
Foundry · AntPool · ViaBTC
分类
orphan · L2 · T2

Foundry 在高度 941,881 触发 2 区块 reorg。

Foundry 挖出的一个区块产生了一段链,使 AntPool 的一个区块和 ViaBTC 的一个区块成为孤块。今天会触发的 reason code 是 weight_ratio_exceeded;v2.0.0 的 invariant codes 独立于 policy 阈值,为 declared-vs-derived 偏差和 structural-exceed-max 条件命名。

2孤立区块
▬ 入档事实
  • §01Height 941,881 · 2 confirmations rolled back
  • §02AntPool block · ViaBTC block · both orphaned
  • §03Reason code that fires today: weight_ratio_exceeded
  • §04Found post-hoc by independent observers (b10c)
v1 · gateway
weight_ratio_exceeded
v2 · invariant
v2_invariant_template_weight_mismatch
v2_invariant_weight_exceeds_max
v2.0.0 ▬ 裁决

v2_invariant_template_weight_mismatch 在 template 转发给矿工之前触发。没有 reorg,没有孤块,没有付款纠纷。

来源
  • [blog]b10c · 2-block reorg analysis
  • [chain]mempool.space · block 941881 history
案号
08
/ 08
日期
Jan 2025
涉事方
F2Pool
分类
empty · L3 · T3

F2Pool 发出一个半空区块 · 上一个 tip 后 87 秒。

区块 878,889 进入时大约 50% 为空。原因:该 pool 的 block-maker 节点在没有 mempool.dat 的情况下重启,所以其 mempool 视图稀疏。区块是有效的;运营者只是赚到原本可得的一半 fees。一个 v3.x 的 mempool 偏差检测器会在 submission 之前标出这一缺口。

50% template 填充率 · tip 后 87 秒
▬ 入档事实
  • §01Height 878,889 · ~50% template fill
  • §0287 seconds after previous block
  • §03Block-maker restarted without mempool.dat
  • §04Block valid · fee revenue forgone
v1 · gateway
v2 · invariant
v2_invariant_mempool_tolerance_exceeded
v2.0.0 ▬ 裁决

v2.0.0 的 Class M 将 template 的 tx 集合与独立的 mempool 视图交叉比对。50% 的缺口超出默认 4% 容忍度一个数量级 · v2_invariant_mempool_tolerance_exceeded 触发。

来源
  • [chain]mempool.space · mononautical thread
  • [news]PANews · F2Pool half-empty block
▬ 卷终

我们就是围绕这些构建的。

八个案例。三类损失。一种模式:缺陷在字节中有名,在产出该工作的表面上却无名。

Veldra v2.0.0 为它们命名。同一发衕中接通 22 个 invariant 码。Phase 1.5 在生产观测期后增加 7 个。

声明

每起事故均附出处。此处不声称 Veldra 当时部署于上述任何矿池。论点是:v2.0.0 的 reason-code 表面正是能为这些故障命名的表面;这一点可对照历史记录检验。

阅读架构 →
▸ 下一步阅读
架构 →
单个 template 如何穿过网关、独立重推导、Class D 与 Class M:六个步骤,每一阶段都点名对应的码。
Q&A · 运营者评估 →
六个直白的问题,依次排列。它做什么。它告诉你什么。如何配置。成本。为什么不用现有工具。今天哪些已经接通。
产品总览 →
reason-code 总图 · TOML 键 · 遥测 · 接入模式 · 路线图。