Cabecera de bloque y árboles Merkle

80 bytes que aseguran todo.

Cada bloque empieza con una cabecera de 80 bytes. Los mineros hashean solo esta cabecera, una y otra vez, así que debe comprometerse con todo el bloque.

Los seis campos

  1. Version (4 bytes): también se usa para señalización de soft fork vía version bits (BIP9).
  2. Previous block hash (32 bytes): enlaza al padre, formando la cadena.
  3. raíz Merkle (32 bytes): se compromete con cada transacción.
  4. Time (4 bytes): marca de tiempo Unix. Debe ser mayor que la mediana de los 11 bloques anteriores, y los nodos rechazan bloques con más de 2 horas de adelanto respecto a su propio reloj.
  5. nBits (4 bytes): el objetivo de dificultad en forma compacta.
  6. Nonce (4 bytes): el número que cambian los mineros.

El hash

El hash del bloque es SHA-256 aplicado dos veces a la cabecera. Un bloque solo es válido si ese hash, leído como número, está en o por debajo del objetivo. Por eso los hashes de bloque empiezan con muchos ceros.

No hay suficiente nonce

El nonce solo tiene unos 4.300 millones de valores, y los ASIC modernos lo agotan en una fracción de segundo. Los mineros también cambian la marca de tiempo, los version bits y el extraNonce en la transacción coinbase. Cambiar la coinbase cambia la raíz Merkle y da un espacio de búsqueda fresco.

El árbol Merkle

Los txid de las transacciones se hashean por pares, luego los resultados por pares, hasta una raíz. Si un nivel tiene un número impar de elementos, se duplica el último. Una prueba de que una transacción está en un bloque necesita solo unos log2(n) hashes. Eso es lo que usan las billeteras ligeras (SPV).

La regla de duplicación provocó CVE-2012-2459: dos listas distintas de transacciones podían dar la misma raíz. Bitcoin Core lo gestiona detectando esos bloques.

El segundo árbol de SegWit

Los datos de witness no están en el árbol de txid. En su lugar la coinbase incluye una salida OP_RETURN que se compromete con una segunda raíz Merkle de wtxids (BIP141). Así el witness también queda cubierto por la prueba de trabajo.

Cabeceras primero

Como las cabeceras son pequeñas, un nodo puede descargarlas todas (casi un millón de cabeceras, bastante menos de 100 MB) y comprobar la prueba de trabajo antes de descargar bloques.