Qué hay dentro de un bloque: cabecera, altura, tamaño y subsidio
Un bloque es una pequeña cabecera fija más un cuerpo de transacciones. Saber cuál es cuál explica de qué calcula realmente el hash la minería y por qué.
Dos partes, y solo una de ellas pasa por el hash
Un bloque tiene una cabecera y un cuerpo. El cuerpo son las transacciones, y puede ocupar unos cientos de bytes o varios megabytes según lo activa que esté la cadena. La cabecera es un resumen fijo del bloque, y en la mayoría de las cadenas ocupa exactamente 80 bytes.
La minería calcula el hash de la cabecera y de nada más. Es el dato más útil de este artículo, porque explica algo que de otro modo parece imposible: un minero prueba miles de millones de variaciones por segundo, y no podría hacerlo si cada intento supusiera volver a calcular el hash de un bloque lleno de transacciones. No lo supone. Vuelve a calcular el hash de 80 bytes.
Los seis campos de la cabecera
La cabecera contiene una versión, el hash del bloque anterior, la raíz de Merkle, una marca de tiempo, los bits de dificultad y el nonce. Cada uno está ahí por una razón, y dos de ellos hacen la mayor parte del trabajo.
El hash del bloque anterior es lo que la convierte en una cadena. Cada cabecera nombra a la anterior, así que reescribir un bloque antiguo cambiaría su hash, lo que rompería la cabecera siguiente, y la siguiente, hasta la punta. Ese es todo el argumento de seguridad de la prueba de trabajo en un solo campo.
La raíz de Merkle es un único hash que resume todas las transacciones del cuerpo. Cambia una transacción, aunque sea en un solo byte, y la raíz de Merkle cambia, así que la cabecera cambia, así que todos los hashes probados hasta entonces dejan de valer. Así es como 80 bytes pueden representar con honestidad un bloque de cualquier tamaño.
Los bits de dificultad son el objetivo por debajo del cual tiene que quedar el hash, en forma compacta. La marca de tiempo indica más o menos cuándo se creó el bloque, y se permite que sea aproximada. El nonce es el campo que el minero puede cambiar libremente, y es lo que hace posible la búsqueda.
El nonce se agota, y no pasa nada
El nonce es un contador pequeño, y un minero moderno agota todos los valores que puede contener casi al instante. Parece un callejón sin salida y no lo es, porque el nonce es solo lo más cómodo de cambiar, nunca lo único.
Cuando se agota, el minero cambia otra cosa que alimenta la cabecera. La marca de tiempo puede avanzar. La transacción coinbase puede alterarse ligeramente, lo que cambia la raíz de Merkle, lo que da una cabecera totalmente nueva en la que buscar. En un pool, para eso sirve exactamente el extranonce: permite que el pool dé a cada minero un punto de partida distinto, para que nunca haya dos moliendo los mismos números.
La altura es una posición, no un campo
La altura del bloque es cuántos bloques hubo antes de un bloque determinado. El bloque génesis tiene altura cero, el siguiente uno, y así sucesivamente. Es el número que ves junto a cada entrada en la página Bloques del pool y en cualquier explorador.
Conviene saber que la altura no se guarda realmente en la cabecera. Se deduce de dónde está el bloque en la cadena. En la mayoría de las cadenas modernas la altura también se escribe en la transacción coinbase, una regla añadida más tarde para que dos bloques a alturas distintas nunca puedan ser idénticos byte a byte, pero la respuesta de referencia sobre la altura de un bloque sigue siendo su posición.
Por eso también la altura es la forma natural de hablar de confirmaciones. Una transacción enterrada a seis bloques de profundidad es una cuyo bloque está seis alturas por debajo de la punta, y cada bloque adicional hace que reescribirla sea todavía más caro.
El tamaño es el cuerpo, y es lo que se llena
El tamaño del bloque es básicamente el tamaño del cuerpo, porque la cabecera es insignificante a su lado. Cuando se dice que una cadena tiene un límite de tamaño de bloque, se habla de cuántas transacciones caben, no de la cabecera.
Un bloque lleno y uno vacío requieren exactamente el mismo trabajo de minería. La dificultad decide lo difícil que es encontrar un bloque; el tamaño decide cuánto lleva el bloque. No tienen relación entre sí, y confundirlos es el origen de muchas intuiciones equivocadas sobre las comisiones.
Lo que sí afecta el tamaño es el mercado de comisiones. Cuando hay más transacciones queriendo entrar de las que caben, las que ofrecen comisiones más altas entran primero, y el total de comisiones del bloque sube. Eso va directamente a lo que paga el bloque.
La transacción coinbase y el subsidio
La primera transacción de cada bloque es especial. No tiene remitente, crea monedas de la nada y se las paga a quien hizo el bloque. Se llama transacción coinbase, y no tiene nada que ver con el exchange del mismo nombre.
Lo que paga es el subsidio más las comisiones de todas las demás transacciones del bloque. El subsidio es la parte recién emitida, fijada por el calendario de emisión de la cadena y reducida con el tiempo en la mayoría de las monedas. Las comisiones son lo que los usuarios añadieron a sus transacciones para que se incluyeran. Juntos forman la recompensa de bloque.
En un pool, la coinbase paga al pool, que luego reparte la recompensa entre todos los que aportaron shares a esa ronda. No es un rodeo: es la forma en que un pool puede pagar a muchas personas por una recompensa que llega como un único pago indivisible.
Por qué todo esto importa mientras minas
Hay tres cosas que se vuelven evidentes una vez que la forma de un bloque está clara, y las tres salen constantemente.
- Por qué un bloque nuevo invalida tu trabajo al instante. El campo del hash del bloque anterior ha cambiado, así que la cabecera en la que estabas buscando ya no existe. Todo lo que envíes para ella después es un share obsoleto, y ninguna velocidad lo arregla.
- Por qué el pool te envía trabajo nuevo tan a menudo. Cada transacción nueva que el pool quiere incluir cambia la raíz de Merkle, y una plantilla más reciente lleva más comisiones, es decir, más recompensa por el mismo esfuerzo.
- Por qué el tamaño del bloque nunca aparece en una estimación de ganancias. Lo que ganas lo deciden la dificultad, el subsidio y las comisiones, no cuántos bytes había en el cuerpo.
La página Bloques de este pool muestra la altura, la recompensa y cuándo se encontró, que es la parte útil de todo lo anterior resumida en una fila. El explorador te muestra el resto, incluida la transacción coinbase que lo pagó.