En 30 segundos
Respuesta corta: la dificultad de minería mide lo difícil que es encontrar un bloque válido de Bitcoin. Cada 2.016 bloques (unas dos semanas) todos los nodos la recalculan con la misma fórmula: si el último tramo fue más rápido de lo previsto (un bloque cada 10 minutos), la dificultad sube; si fue más lento, baja, y nunca cambia más de 4 veces de golpe. Así Bitcoin mantiene su ritmo de un bloque cada 10 minutos de media tanto si hay pocos mineros como si hay muchos, y la emisión de bitcoin nuevos sigue su calendario.
Qué son el objetivo (target) y la dificultad
Para minar un bloque hay que conseguir que el hash de su cabecera (doble SHA-256), leído como un número de 256 bits, sea menor o igual que el objetivo o target. Cuanto más pequeño es el objetivo, menos hashes lo cumplen y más intentos hacen falta de media (lo explicamos paso a paso en prueba de trabajo). El objetivo es el dato que usa el protocolo; la dificultad es una forma más cómoda de leerlo para personas: cuántas veces más difícil es que con el objetivo más fácil permitido.
| Concepto | Qué es |
|---|---|
| Objetivo (target) | Un número de 256 bits. El hash del bloque tiene que ser menor o igual que él. Va en la cabecera de forma compacta, en el campo nBits (4 bytes). |
| Objetivo de dificultad 1 | El más fácil permitido en la red principal: nBits = 0x1d00ffff, es decir, 0xffff × 2208. Es el del bloque génesis (2009). |
| Dificultad | Objetivo de dificultad 1 ÷ objetivo actual. Si el objetivo se hace la mitad de grande, la dificultad se duplica. Nunca baja de 1. |
| Hashes por bloque | De media, unos dificultad × 232 (232 ≈ 4.295 millones). Es una media: cada bloque concreto puede salir con muchos menos o muchos más intentos. |
Dificultad actual y próximo ajuste
Datos en vivo de la red, leídos de la API pública de mempool.space cada vez que abres la página. El cambio previsto es una estimación que se va afinando conforme avanza el tramo.
No se han podido cargar los datos en vivo (sin conexión o API no disponible). Consulta la dificultad actual y el próximo ajuste en mempool.space/mining.
Cómo se ajusta cada 2.016 bloques
No hay ningún reloj central ni nadie que decida la dificultad. Cuando la cadena llega a una altura múltiplo de 2.016, cada nodo hace la misma cuenta con las marcas de tiempo de los bloques: cuánto tardó el último tramo frente a las dos semanas previstas (2.016 × 10 min = 20.160 min = 1.209.600 segundos). La regla está en Bitcoin Core, en la función CalculateNextWorkRequired de pow.cpp:
Las dos líneas dicen lo mismo, porque objetivo y dificultad son inversos. Si el tramo tardó menos de dos semanas, había más potencia de la que la dificultad suponía: el objetivo baja y la dificultad sube. Si tardó más, al revés. El resultado nunca puede ser más fácil que el objetivo de dificultad 1.
El límite: como mucho ×4 o ÷4 por ajuste
Antes de aplicar la fórmula, el tiempo medido se acota entre ¼ y 4 veces las dos semanas: entre 3,5 y 56 días. Por eso en un solo ajuste la dificultad puede como mucho multiplicarse por 4 o dividirse entre 4. Si la potencia cambiara más que eso, la red tardaría varios ajustes en recuperar el ritmo. En la práctica los cambios son mucho menores: la mayor bajada de la historia fue de en torno al 28 %, en julio de 2021, cuando China prohibió la minería y buena parte de los mineros tuvo que apagar y trasladarse.
El fallo off-by-one: 2.015 intervalos en vez de 2.016
Un detalle conocido del código original de Satoshi: el tiempo del tramo se mide desde la marca de tiempo del primer bloque hasta la del último. Entre 2.016 bloques solo hay 2.015 intervalos, pero el resultado se compara con 2.016 × 10 minutos. Si los bloques salieran exactamente cada 10 minutos, el tramo mediría 20.150 minutos en lugar de 20.160 y la dificultad subiría un 0,05 % (2.016 ÷ 2.015) sin que hubiera más potencia. Es un sesgo minúsculo que hace que, a potencia constante, los bloques tarden de media unos 10 minutos y 0,3 segundos.
Más delicado es que los tramos no se solapan: el último bloque de un tramo no se usa como inicio del siguiente. Eso es lo que permite el ataque teórico llamado time warp, en el que una mayoría de mineros manipularía las marcas de tiempo para bajar la dificultad artificialmente. No se ha corregido porque cambiarlo es un cambio de consenso (un soft fork); la propuesta Consensus Cleanup plantea cerrar ese hueco limitando las marcas de tiempo en el cambio de tramo. Mientras tanto, cada marca de tiempo ya debe ser mayor que la mediana de los 11 bloques anteriores y no más de 2 horas en el futuro según el reloj de cada nodo.
Dificultad y hashrate: dos caras de lo mismo
El hashrate es la potencia de cálculo total de los mineros: cuántos hashes por segundo prueba la red. Nadie lo publica ni lo puede medir directamente; se estima a partir de la dificultad y de lo rápido que salen los bloques. Si salen a su ritmo de 10 minutos (600 segundos):
La relación va en los dos sentidos, pero con retraso: cuando entran máquinas nuevas, los bloques empiezan a salir más rápido de inmediato, y la dificultad solo las «alcanza» en el siguiente ajuste. Por eso, entre ajustes, el tiempo medio por bloque se desvía un poco de los 10 minutos. Y por eso más mineros no hacen Bitcoin más rápido ni crean más monedas: solo lo hacen más caro de atacar.
Ejemplo con números
Supón una dificultad de 100 billones (1014), un número redondo del orden de los que la red alcanzó a partir de 2024. Con la fórmula anterior, la red necesita de media unos 1014 × 4.295 millones ≈ 4,3 × 1023 hashes por bloque, es decir, unos 716 EH/s (716 trillones de hashes por segundo) para sacar uno cada 10 minutos. Ahora veamos qué haría el ajuste según lo que tarde el tramo de 2.016 bloques:
| Duración del tramo | Cálculo | Nueva dificultad |
|---|---|---|
| 14 días (lo previsto) | 14 ÷ 14 = 1 | 100 billones (sin cambios) |
| 12 días (entró potencia) | 14 ÷ 12 ≈ 1,167 | 116,7 billones (+16,7 %) |
| 16 días (se fue potencia) | 14 ÷ 16 = 0,875 | 87,5 billones (−12,5 %) |
| 3 días (subida enorme) | 14 ÷ 3,5 (tope) = 4 | 400 billones (×4, no ×4,67) |
Tras el ajuste a 12 días, con la misma potencia (unos 835 EH/s) los bloques vuelven a salir cada ~10 minutos. En el último caso el tope ×4 se queda corto: el tramo siguiente seguiría siendo más rápido de lo previsto y el siguiente ajuste volvería a subir la dificultad. Para verlo en movimiento, usa el simulador de dificultad de la página de minería o el de prueba de trabajo.
Por qué es tan importante
Sin ajuste de dificultad, cada mejora de las máquinas aceleraría los bloques y la emisión: los 21 millones se habrían minado en pocos años y las confirmaciones serían caóticas. Con él, el calendario de emisión y el halving cada 210.000 bloques se cumplen con bastante precisión, y la seguridad crece con la potencia: cuanto más alta la dificultad, más energía y equipos haría falta para reescribir bloques confirmados. Es un mecanismo de realimentación sencillo, sin nadie al mando, que lleva funcionando desde 2009.
Preguntas frecuentes
¿Qué es la dificultad de minería de Bitcoin?
Una medida de lo difícil que es encontrar un bloque válido: cuántas veces más difícil es que con el objetivo más fácil permitido (dificultad 1). La red la ajusta para que salga un bloque cada 10 minutos de media.
¿Cada cuánto se ajusta la dificultad?
Cada 2.016 bloques, unas dos semanas si los bloques salen cada 10 minutos. Todos los nodos hacen el mismo cálculo con las marcas de tiempo de los bloques; nadie lo decide.
¿Cuánto puede cambiar la dificultad en un ajuste?
Como máximo se multiplica por 4 o se divide entre 4, porque el tiempo medido del tramo se acota entre 3,5 y 56 días antes de aplicar la fórmula.
¿Qué relación hay entre dificultad y hashrate?
El hashrate se estima a partir de la dificultad: hashrate ≈ dificultad × 2^32 ÷ 600 segundos. Si entra potencia, los bloques se aceleran y la dificultad sube en el siguiente ajuste; si se va, baja.
¿Qué es el fallo off-by-one del ajuste de dificultad?
El código mide el tiempo entre el primer y el último bloque del tramo, que son 2.015 intervalos, pero lo compara con 2.016 × 10 minutos. Eso sube la dificultad un 0,05 % de más. No se corrige porque exigiría un cambio de consenso.
¿Dónde veo la dificultad actual y el próximo ajuste?
En esta misma página (datos en vivo de mempool.space) o directamente en mempool.space/mining, que muestra la dificultad, el hashrate y una estimación del próximo ajuste.
Sigue aprendiendo
Fuentes: Bitcoin Core, src/pow.cpp (CalculateNextWorkRequired) y chainparams.cpp (2 semanas, 10 minutos, powLimit); bitcoin.org: referencia de la cadena de bloques (nBits); Bitcoin Wiki: Difficulty; datos en vivo de la API de mempool.space (/api/v1/difficulty-adjustment y /api/v1/mining/hashrate). Las cifras del ejemplo son ilustrativas.