Proof of Work en Minería de Bitcoin: Comprendiendo SHA-256, Hexadecimal y el Concepto de Target

GusGus
5 min read

1. Introducción

La minería de Bitcoin es un proceso computacional basado en el algoritmo Proof of Work (PoW), donde los mineros compiten para encontrar un hash válido que cumpla con una condición impuesta por la red. Este hash se genera a través del algoritmo SHA-256 y debe ser menor que un número objetivo (target), definido por la dificultad de la red. Este documento explica cómo funciona este proceso, desde la generación de hashes hasta la validación de un bloque.


2. El Algoritmo SHA-256 en Minería

Bitcoin utiliza el algoritmo SHA-256 (Secure Hash Algorithm 256 bits) para procesar bloques de transacciones. SHA-256 genera un valor hash de 256 bits, que se representa comúnmente como 64 caracteres en hexadecimal.

Ejemplo de un hash SHA-256:

00000000000A3BCD1234EF567890ABCDEF1234567890ABCDEF1234567890ABCD

Cada vez que un minero intenta resolver un bloque, toma los datos del bloque, agrega un número aleatorio (nonce) y calcula:

Hash=SHA256(SHA256(datos del bloque+nonce))\text{Hash} = SHA256(SHA256(\text{datos del bloque} + \text{nonce}))Hash=SHA256(SHA256(datos del bloque+nonce))

El minero modifica el nonce y repite el proceso hasta encontrar un hash que cumpla con la condición.


3. Representación Hexadecimal y Comparación con el Target

Los hashes en Bitcoin son números binarios de 256 bits, pero se representan en hexadecimal para hacerlos más legibles. En este formato, cada carácter hexadecimal representa 4 bits, por lo que un hash completo tiene 64 caracteres hexadecimales.

Bitcoin establece un target, que es un número de 256 bits en hexadecimal. Un hash válido debe ser menor que este target.

Ejemplo de target en hexadecimal:

00000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Ejemplo de hash generado:

00000000000A3BCD1234EF567890ABCDEF1234567890ABCDEF1234567890ABCD

Como el hash es menor que el target, es válido y gana el bloque.


4. El Número Máximo en SHA-256 (256 bits)

El número más grande posible en un hash SHA-256 es aquel donde todos los caracteres en hexadecimal son "F", lo que representa el valor más alto posible en 256 bits.

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Este es el mayor número que un hash SHA-256 puede generar.

🔹 Su equivalente en decimal

(2256)−1(2^{256}) - 1(2256)−1

115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936

Este valor es el límite superior absoluto para cualquier hash SHA-256. Cualquier hash válido en minería de Bitcoin debe estar por debajo del target, el cual es un número dentro de este rango.


5. ¿Por Qué Algunos Hashes Son Válidos y Otros No?

Cada intento de minado genera un hash aleatorio. Si este es mayor que el target, el intento es inválido y el minero debe probar otro nonce.

Ejemplo con valores en decimal para mayor claridad:

IntentoHash generado (Decimal)Target (Decimal)Válido?
1950,000,000,000500,000,000,000❌ No válido
2750,000,000,000500,000,000,000❌ No válido
3320,000,000,000500,000,000,000✅ Válido

El hash válido es aquel que es menor al target.


6. Impacto del Target en la Dificultad

Bitcoin ajusta el target cada 2,016 bloques (~2 semanas) para garantizar que la minería de un bloque ocurra cada 10 minutos en promedio.

6.1 Target Alto vs. Target Bajo

  • Target alto (fácil de minar): Hay más valores posibles menores al target → Más hashes válidos → Se encuentran más rápido.

  • Target bajo (difícil de minar): Hay menos valores posibles menores al target → Menos hashes válidos → Se requieren más intentos.

Ejemplo:

🔹 Target alto (fácil)

Target = 500,000,000,000

Intentos:

Intento 1: Hash = 950,000,000,000 ❌ No válido
Intento 2: Hash = 750,000,000,000 ❌ No válido
Intento 3: Hash = 320,000,000,000 ✅ Válido

🔹 Target bajo (difícil)

Target = 50,000,000,000

Intentos:

Intento 1: Hash = 950,000,000,000 ❌ No válido
Intento 2: Hash = 750,000,000,000 ❌ No válido
Intento 3: Hash = 320,000,000,000 ❌ No válido
Intento 4: Hash = 15,000,000,000 ✅ Válido

Cuanto más bajo es el target, más intentos se necesitan para encontrar un hash válido.


7. ¿Cómo Se Encuentra un Hash Válido? (Proceso de Minería Paso a Paso)

  1. El minero toma la información del bloque:

     Transacciones + Hash del bloque anterior + Nonce
    
  2. Calcula SHA-256 dos veces:

     Hash = SHA256(SHA256(bloque + nonce))
    
  3. Compara el hash con el target:

    • Si el hash < target, el bloque es válido y el minero gana la recompensa.

    • Si el hash > target, se prueba otro nonce y se repite el proceso.

  4. El primer minero que encuentre un hash válido transmite su bloque a la red y gana.


8. Conclusión

La minería de Bitcoin se basa en fuerza bruta, donde los mineros prueban millones de nonces hasta encontrar un hash que sea menor que el target. Cuanto más bajo es el target, más difícil es minar un bloque, porque hay menos valores posibles que cumplan la condición.

Dado que la mayoría de los intentos generan hashes basura (mayores al target), los mineros necesitan hardware especializado (ASICs) para hacer más intentos por segundo y aumentar sus probabilidades de éxito.

El ajuste del target garantiza que la red de Bitcoin mantenga su ritmo de producción de bloques estable (cada 10 minutos), adaptándose a la potencia de cómputo de la red. 🚀


Referencias

  • Nakamoto, S. (2008). Bitcoin: A Peer-to-Peer Electronic Cash System.

  • Antonopoulos, A. (2017). Mastering Bitcoin: Unlocking Digital Cryptocurrencies.

  • Bitcoin Wiki: https://en.bitcoin.it/wiki/Difficulty

0
Subscribe to my newsletter

Read articles from Gus directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Gus
Gus