En 30 segundos
Todos los bloques tienen dos partes: una cabecera y la lista de pagos. La cabecera ocupa solo 80 bytes: la huella del bloque anterior, la hora, el objetivo de la red, un número llamado nonce y otra huella que resume todos los pagos, la raíz de Merkle. Y el bloque 0, de 2009, lleva dentro un titular de The Times: «el ministro, al borde de un segundo rescate a los bancos».
La cabecera: 80 bytes
Un bloque puede ocupar hasta unos megabytes por sus miles de pagos, pero su «carné de identidad» es diminuto:
| Campo | Tamaño | Qué es |
|---|---|---|
| Versión | 4 B | qué reglas sigue el bloque |
| Huella del bloque anterior | 32 B | el eslabón de la cadena (parte 1) |
| Raíz de Merkle | 32 B | una huella que resume todos los pagos |
| Hora | 4 B | segundos desde el 1/1/1970 (la forma estándar de guardar fechas en informática) |
Objetivo (bits) | 4 B | lo pequeña que tiene que ser la huella del bloque, en formato comprimido |
| Nonce | 4 B | el número que los mineros van cambiando (parte 4) |
4 + 32 + 32 + 4 + 4 + 4 = 80 bytes. La huella del bloque es:
huella = SHA-256( SHA-256( cabecera de 80 bytes ) )
Doble SHA-256, y solo sobre la cabecera. Por eso la cabecera tiene que «resumir» los pagos de alguna forma: para eso está la raíz de Merkle.
El árbol de Merkle
Se calcula la huella de cada pago, luego la de cada pareja de huellas, y así, nivel a nivel, hasta quedarse con una sola: la raíz. Con 4 pagos:
raíz
/ \
h(AB) h(CD)
/ \ / \
h(A) h(B) h(C) h(D)
(Si en un nivel queda un número impar, la última huella se empareja consigo misma.)
Dos consecuencias:
- Cambias un pago y cambia todo: cambia su huella, la de su pareja, la raíz… y por tanto la huella del bloque.
- Demostrar que un pago está dentro es baratísimo. No hace falta enseñar todos los pagos: basta con las huellas «hermanas» de cada nivel del camino hasta la raíz. En un bloque de 4.000 pagos son solo 12 huellas, porque el árbol tiene log₂ 4.000 ≈ 12 niveles. Así funcionan las carteras ligeras del móvil, que no descargan la cadena entera.
Este árbol lo describió el criptógrafo Ralph Merkle a finales de los años 70; Bitcoin lo usa tal cual.
El bloque 0
| Dato | Valor |
|---|---|
| Fecha | 3 de enero de 2009, 18:15:05 UTC |
| Huella | 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f |
| Nonce | 2083236893 |
Objetivo (bits) | 1d00ffff (el más fácil permitido) |
| Pagos | 1: la recompensa de 50 BTC al minero |
| Raíz de Merkle | 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b |
Fíjate en que la huella empieza por diez ceros: no es casualidad, es el trabajo de minado (parte 4).
El primer pago de cada bloque, el que crea las monedas nuevas, tiene un campo libre donde el minero puede escribir lo que quiera. En el bloque 0, Satoshi Nakamoto escribió:
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
Es el titular de portada de The Times de ese mismo día: el ministro de Hacienda británico, a punto de un segundo rescate a los bancos.
¿Por qué está ahí? Hay dos lecturas que no se excluyen:
- Sello de tiempo: un titular no se puede conocer antes de publicarse, así que demuestra que el bloque no se creó antes de esa fecha (y que Satoshi no se guardó una cadena minada en secreto).
- Mensaje: Bitcoin nació en plena crisis financiera, como dinero que no depende de los bancos.
Curiosidad: esos 50 BTC no se pueden gastar. El programa original no añadió ese primer pago a la lista de monedas disponibles, y así sigue.
Compruébalo tú: busca el bloque 0 en cualquier explorador de bloques y mira el texto del primer pago.
Datos
| Dato | Cómo se ha comprobado |
|---|---|
| Huella del bloque 0 | doble SHA-256 de su cabecera de 80 bytes, calculada con un script propio |
| Titular auténtico | la huella de su único pago coincide con la raíz de Merkle 4a5e1e4b… |
| Estructura del bloque | whitepaper de Bitcoin (secciones 4 y 7) y documentación para desarrolladores |
Lo que el vídeo simplifica
- El árbol de Merkle del vídeo usa pagos de ejemplo (va rotulado); Bitcoin calcula las huellas de transacciones en binario con doble SHA-256.
- «Objetivo» = el campo
bits: la huella del bloque, leída como número, tiene que quedar por debajo de él. En la parte 4 lo traducimos a «ceros». - La traducción del titular es libre: Chancellor es el ministro de Hacienda británico.
