Un historial de fallos de pools, con nombre.
Cada incidente de pool de nuestro conjunto de fuentes públicas, indexado por fecha. Para cada uno — qué salió mal, qué capa de ReserveGrid OS lo habría detectado y qué reason code se habría disparado. El atlas no argumenta nada por sí solo; deja que los códigos argumenten por sí mismos. Si una fila está sin cablear, dice "sin cablear". Si un código no existía antes de la v2.0, lo dice.
VOL · 2026
BLOQUES
DEFECTUOSOS
EN
ACTA.
Incidentes públicos, fuentes públicas. Cada uno vinculado al reason code que Veldra emitiría y a la capa de confianza que lo habría detectado antes de que saliera del pool.
Media red mina sin validar · varios mineros pierden >$50K.
Tras la activación de un soft-fork, varios pools grandes siguieron construyendo sobre un segmento de chain sin validarlo del todo. SPV-mining: confiar en el header del bloque previo, minar encima, validar después. El segmento resultó contener un bloque inválido. Varios pools combinados perdieron más de $50.000 en subsidio y fees. La alerta de bitcoin.org en su momento hizo explícito el coste de saltarse la validación.
- §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 no tiene ningún v2_invariant_* code — el verifier no puede observar un header que nunca recibe. La respuesta structural es el comportamiento del gateway: validate-then-forward se mantiene sin importar lo que haga un pool upstream, así que un proxy mal configurado no puede filtrar trabajo no validado a través de un minero fronteado por Veldra.
- [news]bitcoin.org · network alert (Jul 2015)
F2Pool envía dos bloques inválidos · patch de sigops custom en producción.
F2Pool desplegó un patch custom de Bitcoin Core que redujo el presupuesto reservado de sigops para coinbase. Dos bloques en las alturas 783.426 y 784.121 se emitieron con un conteo de sigops que disentía del de la red. Ambos fueron rechazados. El patch fue interno, el fallo fue externo.
- §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 se dispara con divergencia declared-vs-derived; v2_invariant_sigops_exceed_max se dispara con la brecha structural. Cualquiera de los dos rechaza el template en el gateway.
- [blog]BitMEX Research · F2Pool sigops
- [blog]b10c · sigops budget anomaly
F2Pool censura 6 bloques de transacciones sancionadas por OFAC.
A lo largo de noviembre de 2023, seis bloques minados por F2Pool omitían transacciones que involucraban direcciones sancionadas por OFAC y que sí eran aceptadas por el resto de la red. La censura fue opaca — sin policy pública, sin razón pública. Esté uno de acuerdo con la policy o no, el filtrado estructurado con códigos nombrados es más auditable que la omisión silenciosa.
- §016 blocks · Nov 2023
- §02Sanctioned txs absent · accepted elsewhere
- §03No public policy disclosure at the time
- §04Public coverage: CoinDesk, TheMinerMag, b10c
Veldra no aplica una policy de censura en ningún sentido. Sí insiste en que un filtro aplicado sea nombrado — los operadores obtienen un rastro de auditoría de qué filtro corrió sobre qué template.
- [news]CoinDesk · F2Pool OFAC filtering
- [news]TheMinerMag · censorship report
- [blog]b10c · F2Pool tx omissions
Antpool sirve jobs de bloques vacíos durante 30 segundos tras cada tip.
La distribución de jobs de Antpool emite templates vacíos durante los primeros ~30 segundos tras cada nuevo bloque, hasta que un template completo esté disponible. La norma de la industria es <1% de bloques vacíos; Antpool se ha mantenido en ~2% durante el año. Operacionalmente legal; económicamente lesivo.
- §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 emite template_tx_count_low_warning bajo la policy por defecto. Los operadores que opten por exponer esto como verdict_warn_forward obtienen una señal estructurada en su telemetría en vez de un patrón opaco en la chain.
- [blog]b10c · empty block report
- [chain]mempool.space · empty block tracker
La flota de Antpool emite 17 segundos de jobs con valor de coinbase obsoleto.
Durante un fork breve en las alturas 874.037 / 873.559 / 875.590, la ruta de distribución de jobs de Antpool sirvió trabajo cuyo valor de coinbase estaba cacheado contra el tip anterior. La ruta cacheada burló la policy que habría rechazado un coinbase cero/obsoleto. 17 segundos de hashrate se quemaron en jobs que no podían ser válidos.
- §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 se calcula desde los outputs crudos de coinbase en cada template — no hay una ruta cacheada que el verifier consulte. Un coinbase obsoleto falla el comparador de re-derivation de inmediato.
- [blog]b10c · December 2024 coinbase fork notes
Foundry desencadena un reorg de 2 bloques en la altura 941.881.
Un bloque minado por Foundry produjo un segmento de cadena que dejó huérfanos un bloque de AntPool y uno de ViaBTC. El reason code que se dispara hoy es weight_ratio_exceeded; los invariant codes de v2.0.0 nombran la brecha entre declarado y derivado, y la condición structural-exceed-max, independientemente del umbral de policy.
- §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 se dispara antes de que el template se reenvíe al minero. Sin reorg, sin huérfanos, sin disputa de pago.
- [blog]b10c · 2-block reorg analysis
- [chain]mempool.space · block 941881 history
F2Pool envía un bloque medio vacío · 87 segundos después del tip anterior.
El bloque 878.889 llegó aproximadamente 50% vacío. Causa: el nodo block-maker del pool se había reiniciado sin mempool.dat, así que su vista de mempool estaba escasa. El bloque era válido; el operador simplemente ganó la mitad de las fees que habría ganado. Un detector de divergencia de mempool de v3.x habría marcado la brecha antes del submission.
- §01Height 878,889 · ~50% template fill
- §0287 seconds after previous block
- §03Block-maker restarted without mempool.dat
- §04Block valid · fee revenue forgone
Class M de v2.0.0 cruza el tx set del template contra una vista de mempool independiente. Una brecha del 50% excede la tolerancia por defecto del 4% en un orden de magnitud · v2_invariant_mempool_tolerance_exceeded se dispara.
- [chain]mempool.space · mononautical thread
- [news]PANews · F2Pool half-empty block
Construimos en torno a esto.
Ocho casos. Tres clases de pérdida. Un patrón: un defecto nombrado en los bytes pero sin nombre en la superficie que produjo el trabajo.
Veldra v2.0.0 los nombra. Veintidós códigos de invariante integrados en la misma versión. La Fase 1.5 añade siete más tras el ciclo de observación en producción.
Fuentes citadas por incidente. No se afirma que Veldra estuviera desplegado en ninguno de estos pools en aquel momento. El argumento es que la superficie de reason codes de v2.0.0 es la superficie que nombra estos fallos; eso es contrastable con el registro histórico.
Leer la arquitectura →