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ⁿ
| Ceros | Intentos de media |
|---|---|
| 1 | 16 |
| 4 | 16⁴ = 65.536 |
| 8 | 16⁸ ≈ 4.300 millones (lo que pedía la red en 2009) |
| 19 | 16¹⁹ ≈ 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:
- En vez de «hola», se usa la cabecera del bloque (80 bytes, parte 3), y el nonce es uno de sus campos.
- Se aplica SHA-256 dos veces.
- 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:
- Rehacer todo su trabajo.
- Rehacer el de todos los bloques siguientes, porque cada uno guarda la huella del anterior.
- 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
| Dato | Valor | Cómo se ha comprobado |
|---|---|---|
| Mini-minero | 4 ceros en el intento 85.200 (1, 2 y 3 ceros: nonces 12, 192 y 563) | ejecutando el script de arriba |
| Ceros en 2009 / hoy | 8 / 19 | objetivo = 0xffff · 2²⁰⁸ / dificultad; dificultad 140,58 billones (ajuste del 16/10/2026, bloque 971.712) |
| Fuentes de la dificultad | pickaxe.io, coinotag | |
| Probabilidad de alcanzar la cadena | cae exponencialmente | whitepaper 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».
