一部矿池故障史,逐一命名。
我们公开来源集合中的每一起矿池事件,按日期索引。对每一起——出了什么错、ReserveGrid OS 的哪一层本可以拦下它、会触发哪个 reason code。本图谱自身不作论证;它让这些 code 自行论证。若某一行尚未接通,就标注 "unwired."。若某个 code 在 v2.0 之前并不存在,也会注明。
VOL · 2026
事故
入卷
已
在案。
公开事件,公开出处。每一件都映射到 Veldra 会发出的 reason code,以及本可在它离开矿池之前将其拦下的信任层。
半数网络不验证就挖矿 · 多个矿工损失超过 50K 美元。
在一次 soft-fork 激活之后,几个大型 pool 继续在一段未完全验证的 chain 上构建。SPV-mining:信任上一个区块的 header,在其上挖矿,之后再验证。该 chain 段后来证实包含一个无效区块。多个 pool 合计损失超过 50,000 美元的补贴和 fees。当时 bitcoin.org 发出的警报明确指出了跳过验证的成本。
- §01July 2015
- §02Half of network hashrate mining unvalidated headers
- §03>$50,000 combined direct loss · public estimate
- §04Bitcoin.org issued a network alert
SPV-mining 没有 v2_invariant_* code — verifier 无法观察自己从未收到的 header。结构性答案在 gateway 行为:无论上游 pool 做什么,validate-then-forward 都保持不变,因此配置错误的 proxy 无法通过 Veldra 前置的矿工把未验证的工作泄漏出去。
- [news]bitcoin.org · network alert (Jul 2015)
F2Pool 发出两个无效区块 · 生产环境的自定义 sigops patch。
F2Pool 部署了一个自定义 Bitcoin Core patch,降低了 coinbase 预留的 sigops 预算。高度 783,426 和 784,121 的两个区块发出去的 sigops 计数与网络不一致。两者均被拒。patch 在内,失败在外。
- §01Heights 783,426 · 784,121
- §02Custom patch reduced reserved sigops
- §03Coinbase sigops abnormal · sigops budget warning
- §04Public source: BitMEX Research, b10c
v2_invariant_sigops_mismatch 在 declared-vs-derived 偏差时触发;v2_invariant_sigops_exceed_max 在结构性突破时触发。任一都会在 gateway 拒绝该 template。
- [blog]BitMEX Research · F2Pool sigops
- [blog]b10c · sigops budget anomaly
F2Pool 审查了 6 个区块中受 OFAC 制裁的交易。
2023 年 11 月期间,F2Pool 挖出的六个区块漏掉了涉及受 OFAC 制裁地址的交易,而这些交易被网络其余部分接受。这种审查是不透明的 — 没有公开 policy,没有公开理由。无论你是否同意这种 policy,带命名编码的结构化过滤比沉默的遗漏更可审计。
- §016 blocks · Nov 2023
- §02Sanctioned txs absent · accepted elsewhere
- §03No public policy disclosure at the time
- §04Public coverage: CoinDesk, TheMinerMag, b10c
Veldra 在任何方向都不强制执行审查 policy。但坚持已应用的 filter 必须被命名 — 运营者会得到哪个 filter 在哪个 template 上运行的审计轨迹。
- [news]CoinDesk · F2Pool OFAC filtering
- [news]TheMinerMag · censorship report
- [blog]b10c · F2Pool tx omissions
Antpool 在每个 tip 之后的 30 秒内提供空块 jobs。
Antpool 的 job 分发在每个新区块之后的最初约 30 秒发送空 templates,直到完整的 template 可用。行业基线是 <1% 的空块;Antpool 全年保持在约 2%。运营上合法,经济上亏损。
- §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
L1 在默认 policy 下发出 template_tx_count_low_warning。选择以 verdict_warn_forward 显示该信号的运营者,可以在自己的 telemetry 中得到结构化信号,而不是在链上看到不透明的模式。
- [blog]b10c · empty block report
- [chain]mempool.space · empty block tracker
Antpool 矿池集群发送了 17 秒 coinbase 值过期的 jobs。
高度 874,037 / 873,559 / 875,590 的一次短暂 fork 期间,Antpool 的 job 分发路径派发了 coinbase 值基于上一个 tip 缓存的工作。被缓存的路径绕过了原本会拒绝零/过期 coinbase 的 policy。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
v2_invariant_coinbase_value_mismatch 在每个 template 上都从原始 coinbase outputs 重新计算 — verifier 不查阅任何缓存路径。过期的 coinbase 会立即在 re-derivation 比较器上失败。
- [blog]b10c · December 2024 coinbase fork notes
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 条件命名。
- §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)
v2_invariant_template_weight_mismatch 在 template 转发给矿工之前触发。没有 reorg,没有孤块,没有付款纠纷。
- [blog]b10c · 2-block reorg analysis
- [chain]mempool.space · block 941881 history
F2Pool 发出一个半空区块 · 上一个 tip 后 87 秒。
区块 878,889 进入时大约 50% 为空。原因:该 pool 的 block-maker 节点在没有 mempool.dat 的情况下重启,所以其 mempool 视图稀疏。区块是有效的;运营者只是赚到原本可得的一半 fees。一个 v3.x 的 mempool 偏差检测器会在 submission 之前标出这一缺口。
- §01Height 878,889 · ~50% template fill
- §0287 seconds after previous block
- §03Block-maker restarted without mempool.dat
- §04Block valid · fee revenue forgone
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 个。