•Guías de los vídeos

Guías / Cripto · Serie 1 · Parte 04 / 04

Así se mina un bloque

Minar no es resolver problemas dificilísimos, es probar números. El minero de juguete, la probabilidad detrás de los ceros y la respuesta a la pregunta de la serie.

Portada del vídeo «Así se mina un bloque»
85.200 intentos

En 30 segundos

Minar Bitcoin no es resolver problemas matemáticos dificilísimos: es probar números hasta dar con uno que sirva. Coges el bloque, le añades un número (el nonce), calculas la huella. ¿No empieza por ceros? Pruebas el siguiente. Mi ordenador necesita 85.200 intentos para sacar 4 ceros, y cada cero más lo hace 16 veces más difícil. En 2009 la red pedía 8; hoy pide 19. Eso es la prueba de trabajo.

El minero de juguete

Este es el script real del vídeo. Prueba hola0, hola1, hola2… hasta que la huella empieza por N ceros:

// minar.mjs · uso: node minar.mjs hola 4
import {createHash} from 'node:crypto';

const [text = 'hola', zeros = '4'] = process.argv.slice(2);
const goal = '0'.repeat(Number(zeros));
for (let nonce = 0; ; nonce++) {
  const hash = createHash('sha256').update(text + nonce).digest('hex');
  if (hash.startsWith(goal)) {
    console.log(`${text}${nonce} → ${hash}`);
    console.log(`${nonce + 1} intentos`);
    break;
  }
}

Resultado:

hola85199 → 0000755d0fcdda53afe92ecf435286b802fe63872fd881f086aba589783df83b
85200 intentos

Guárdalo como minar.mjs y ejecútalo con Node.js. Prueba con 5 o 6 ceros y verás cómo se dispara.

Es una lotería: la probabilidad

Por el efecto avalancha (parte 2), cada huella se comporta como un número al azar. Cada carácter hexadecimal tiene 16 valores posibles, así que la probabilidad de que el primero sea 0 es 1/16; de que lo sean los dos primeros, 1/16 × 1/16 = 1/256. Con n ceros:

probabilidad por intento = 1 / 16ⁿ        intentos de media = 16ⁿ
CerosIntentos de media
116
416⁴ = 65.536
816⁸ ≈ 4.300 millones (lo que pedía la red en 2009)
1916¹⁹ ≈ 7,6·10²² (hoy se piden 19 «y un poco más»: unos 6·10²³)

¿Por qué a mí me hicieron falta 85.200 y no 65.536? Porque es azar: los intentos anteriores no te acercan al premio, igual que en la lotería no «toca» más por haber comprado muchos años. La probabilidad de necesitar más de 85.200 intentos para 4 ceros es

(1 − 1/65.536)^85.200 ≈ e^(−1,3) ≈ 27 %

Mala suerte, pero nada raro: más o menos 1 de cada 4 veces pasa.

Del juguete a Bitcoin

En Bitcoin es lo mismo, con tres diferencias:

  1. En vez de «hola», se usa la cabecera del bloque (80 bytes, parte 3), y el nonce es uno de sus campos.
  2. Se aplica SHA-256 dos veces.
  3. El objetivo no son «N ceros» sino un número: la huella, leída como número, tiene que ser menor que el objetivo. Contar ceros es una aproximación: cada cero hexadecimal divide el objetivo entre 16.

El objetivo va comprimido en el campo bits de la cabecera. Por ejemplo, 1d00ffff (el del bloque 0) se lee como «0x00ffff × 256 elevado a (0x1d − 3)»:

objetivo = 0xffff · 2²⁰⁸  →  huella < 00000000ffff0000…  →  8 ceros

La dificultad mide cuántas veces más pequeño es el objetivo actual que ese de 2009. Hoy vale unos 140,58 billones, y eso equivale a 19 ceros.

Un detalle práctico: el nonce solo tiene 4 bytes, unos 4.300 millones de valores, y un minero moderno los agota en una fracción de segundo. Cuando se acaban, cambia otro dato del bloque (la hora, o un campo libre del primer pago) y vuelve a empezar con huellas nuevas.

La respuesta a la pregunta de la serie

¿Qué impide falsificar la blockchain si recalcular huellas es facilísimo? Que no basta con recalcular: cada huella tiene que quedar por debajo del objetivo, y eso cuesta, de media, del orden de 10²³ intentos por bloque. Para falsificar un bloque tendrías que:

  1. Rehacer todo su trabajo.
  2. Rehacer el de todos los bloques siguientes, porque cada uno guarda la huella del anterior.
  3. Hacerlo más rápido que toda la red junta, que sigue añadiendo bloques mientras tanto. Los nodos siempre siguen la cadena con más trabajo acumulado.

Satoshi lo calculó en el whitepaper (sección 11): si el atacante tiene menos potencia que el resto, su probabilidad de alcanzar a la red cae exponencialmente con cada bloque que va por detrás. Por eso se recomienda esperar unas 6 confirmaciones (≈ 1 hora) en pagos grandes. La única forma de ganar la carrera es tener más potencia que todos los demás mineros sumados: el ataque del 51 %.

Datos

DatoValorCómo se ha comprobado
Mini-minero4 ceros en el intento 85.200 (1, 2 y 3 ceros: nonces 12, 192 y 563)ejecutando el script de arriba
Ceros en 2009 / hoy8 / 19objetivo = 0xffff · 2²⁰⁸ / dificultad; dificultad 140,58 billones (ajuste del 16/10/2026, bloque 971.712)
Fuentes de la dificultadpickaxe.io, coinotag
Probabilidad de alcanzar la cadenacae exponencialmentewhitepaper de Bitcoin, sección 11

Lo que el vídeo simplifica

  • El minero de juguete usa SHA-256 simple sobre texto; Bitcoin, doble SHA-256 sobre la cabecera binaria.
  • «Ceros» = ceros hexadecimales al principio de la huella. El objetivo real es un número y no siempre cae en un cero exacto: con la dificultad de hoy, la huella necesita 19 ceros y un poco más.
  • «Más rápido que toda la red» = el ataque del 51 %.

Siguiente

¿Y quién decide cuántos ceros hay que sacar? En la serie 2, «La red».