En 30 segundos
Prueba de trabajo es el requisito que debe cumplir cada bloque de Bitcoin: su cabecera de 80 bytes, pasada dos veces por SHA-256, tiene que dar un número menor o igual que un objetivo fijado por la red. No hay atajo: los mineros prueban valores del nonce a ciegas, miles de millones de veces por segundo. Encontrar uno cuesta mucha energía; comprobarlo, un solo cálculo. Por eso reescribir la historia sería carísimo, y por eso los nodos no necesitan confiar en nadie.
Qué problema resuelve
En un dinero digital sin banco hay que decidir quién tiene razón cuando dos personas enseñan historiales distintos, y evitar el doble gasto. Si votar fuera gratis, alguien podría crear mil identidades falsas y ganar. La prueba de trabajo liga el "voto" a un recurso físico: el cálculo. La cadena válida es la que acumula más trabajo, y ese trabajo no se puede falsificar. Satoshi Nakamoto la tomó de Hashcash, un sistema de Adam Back contra el spam, y la adaptó para encadenar bloques (white paper, sección 4).
Qué se hashea: la cabecera de 80 bytes
Los mineros no hashean el bloque entero, solo su cabecera, que resume todo lo demás. El resultado es el identificador del bloque. Y se calcula con doble SHA-256: SHA-256(SHA-256(cabecera)).
| Campo | Bytes | Para qué sirve |
|---|---|---|
| Version | 4 | Versión de las reglas del bloque (y señales de actualización). |
| hashPrevBlock | 32 | Hash del bloque anterior: es lo que encadena los bloques. |
| hashMerkleRoot | 32 | Resumen de todas las transacciones del bloque. |
| Time | 4 | Marca de tiempo aproximada del bloque. |
| nBits | 4 | Objetivo codificado de forma compacta (de él sale la dificultad). |
| Nonce | 4 | El número que el minero cambia para probar suerte. |
Cambiar un solo bit de la cabecera produce un hash completamente distinto e impredecible. Con 32 bits, el nonce solo da unos 4.300 millones de valores y un ASIC los agota en una fracción de segundo, así que los mineros también varían el extranonce (un campo de la transacción coinbase, que cambia la raíz de Merkle) y la marca de tiempo. Más en minería de Bitcoin.
Pruébalo tú: minar en miniatura
Escribe un texto y cambia el nonce: verás su hash SHA-256 al instante. Objetivo: que el hash empiece por N ceros. Es la misma idea que en Bitcoin, pero muchísimo más fácil (aquí, un SHA-256 simple sobre texto; Bitcoin usa doble SHA-256 sobre la cabecera y un objetivo mucho más estricto). Pulsa "Minar solo" para que el navegador pruebe nonces por ti.
Válido: el hash cumple el objetivo. Comprobarlo ha costado un solo cálculo; encontrarlo, todos los intentos de arriba.
Todavía no cumple el objetivo. Cambia el nonce o pulsa "Minar solo".
Tu navegador no permite calcular SHA-256 aquí (hace falta una página segura, https). Prueba con otro navegador.
Objetivo y dificultad
El bloque es válido si su hash, leído como un número de 256 bits, es menor o igual que el objetivo (target). Cuanto más pequeño es el objetivo, menos hashes lo cumplen y más intentos hacen falta de media. La dificultad es solo una forma cómoda de expresarlo: cuántas veces es más difícil que con el objetivo más fácil permitido (el del bloque génesis). Con cada cero hexadecimal más que se exige, hacen falta unas 16 veces más pruebas, igual que en la demo de arriba.
Un ejemplo con números. El objetivo se guarda en la cabecera de forma compacta (nBits): un byte de exponente y tres de coeficiente. El objetivo más fácil, el del bloque génesis, es nBits = 0x1d00ffff, es decir, 0xffff × 2208: un hash válido tiene que empezar por unos 32 bits a cero. Ese objetivo equivale a dificultad 1. Si el objetivo fuera la mitad de grande, la dificultad sería 2 y harían falta el doble de intentos de media: dificultad = objetivo de dificultad 1 ÷ objetivo actual. A dificultad 1 se necesitan unos 4.300 millones (232) de hashes por bloque; hoy, muchísimos más. Consulta la dificultad y el hashrate actuales en mempool.space.
El ajuste cada 2.016 bloques
Los nodos no miden el tiempo con un reloj central: lo deducen de las marcas de tiempo de los bloques. Cada 2.016 bloques (unas dos semanas si se mantiene un bloque cada 10 minutos) recalculan el objetivo según lo que tardó ese tramo, y nunca lo cambian más de un factor 4 de una vez. Si hay más potencia, la dificultad sube; si se va potencia, baja. Así el ritmo medio se mantiene en torno a 10 minutos por bloque sin importar cuántos mineros haya.
Dos detalles que suelen contarse mal. 1) El límite de factor 4 va en ambos sentidos: el tiempo medido del tramo se acota entre ¼ y 4 veces las dos semanas esperadas, así que el objetivo nunca sube más de ×4 ni baja más de ÷4 en un ajuste. 2) Hay un fallo histórico (off-by-one) que forma parte del consenso: el tiempo se mide entre el primer y el último bloque del tramo, que son 2.015 intervalos, no 2.016, pero se compara con 2.016 × 10 min. Si los bloques salen exactamente cada 10 minutos, el tramo mide 20.150 min en vez de 20.160 y la dificultad sube un 0,05 % (2.016 ÷ 2.015) sin que haya más potencia. Es minúsculo, pero no se corrige porque exigiría un cambio de consenso (fork). Ejemplo: si un tramo tarda 10 días en vez de 14, el objetivo se multiplica por 10 ÷ 14 y la dificultad sube ~40 %.
Simulador: qué pasa cuando cambia la potencia
Mueve el control: imagina que durante un tramo de 2.016 bloques la potencia de minado cambia. Verás cuánto tarda el tramo, cuánto ajusta la dificultad y cómo el ritmo vuelve a ~10 minutos.
+0 %Con una caída tan grande el ajuste llega a su límite (factor 4): haría falta más de un tramo para recuperar los 10 minutos.
Fórmula: nueva dificultad = dificultad anterior × (20.160 min ÷ tiempo real del tramo). Fuente: Bitcoin Core, pow.cpp (CalculateNextWorkRequired).
Costoso de producir, barato de verificar
Esta asimetría es la clave. Para producir un bloque válido, un minero hace una cantidad enorme de hashes, con electricidad y hardware ASIC. Para verificarlo, cualquier nodo calcula un único doble SHA-256 y compara con el objetivo, además de comprobar las demás reglas. Quien añade un bloque demuestra que gastó recursos reales, y todo el mundo lo comprueba en un instante sin fiarse del minero. Si el bloque no cumple las reglas, los nodos lo rechazan y ese gasto se pierde.
Por qué da seguridad (y qué es el 51 %)
Cada bloque contiene el hash del anterior. Para cambiar una transacción antigua hay que rehacer la prueba de trabajo de ese bloque y de todos los posteriores, y además hacerlo más deprisa que el resto de la red, que sigue trabajando en la cadena honesta. Cuantos más bloques se apilan encima de una transacción, más trabajo habría que rehacer y más seguro es que no se revierta. Por eso se habla de confirmaciones.
El ataque del 51 % es el caso de alguien que controla más de la mitad de la potencia de cálculo. Podría reorganizar bloques recientes, gastar dos veces sus propias monedas y censurar transacciones. No podría robar monedas ajenas sin la firma, crear bitcoin de la nada ni cambiar las reglas: los nodos rechazarían esos bloques. Y le saldría carísimo, porque tendría que mantener esa potencia gastando energía continuamente.
Cuántas confirmaciones. Una transacción sin confirmar no tiene ninguna protección; con 1 confirmación ya está en un bloque; con 6 (~1 hora) es el estándar clásico para cantidades grandes. Satoshi calculó en el white paper (sección 11) la probabilidad de que un atacante alcance a la cadena honesta: con el 10 % de la potencia, es del 20 % con 1 confirmación y del 0,02 % con 6; solo con más del 50 % acaba alcanzándola siempre. Para importes pequeños bastan menos; para importes enormes, más.
Preguntas frecuentes
¿Qué es la prueba de trabajo en Bitcoin?
Es el mecanismo por el que cada bloque demuestra que alguien gastó mucho cálculo en producirlo: su cabecera, con doble SHA-256, debe dar un hash menor o igual que el objetivo de la red. Se tarda mucho en encontrarlo y un instante en comprobarlo.
¿Qué es el nonce?
Es un campo de 32 bits de la cabecera del bloque que el minero cambia una y otra vez. Como cualquier cambio altera por completo el hash, probar nonces es la forma de buscar un hash que cumpla el objetivo. Cuando se agotan los valores, se varía otro dato de la cabecera (extranonce, marca de tiempo).
¿Por qué Bitcoin usa doble SHA-256?
Satoshi aplicó SHA-256 dos veces a la cabecera y a los identificadores de bloque y transacción. No se explicó en el white paper; suele entenderse como una precaución de diseño, y el protocolo la mantiene porque cambiarla rompería la compatibilidad.
¿Se puede hacer trampa o saltarse el trabajo?
No. Un nodo recalcula el hash de la cabecera y lo compara con el objetivo, así que un bloque sin trabajo suficiente se rechaza al instante. Tampoco hay un atajo matemático conocido: la única forma de dar con un hash válido es probar.
¿Gasta demasiada energía la prueba de trabajo?
El gasto es deliberado: es lo que hace costoso atacar la red. Se puede discutir si compensa, y hay quien aprovecha energía sobrante o difícil de aprovechar de otro modo. Lo que no es cierto es que sea un desperdicio sin función: ese coste es precisamente la fuente de seguridad. Más en Mitos y FUD.
Sigue aprendiendo
Fuentes: white paper de Bitcoin (sección 4, prueba de trabajo), Bitcoin Core (reglas de consenso: pow.cpp, ajuste cada 2.016 bloques con límite de factor 4), Bitcoin Wiki: Block hashing algorithm y Proof of work. Contenido educativo, no asesoramiento financiero.