La dificultad de minería es parte del mecanismo sofisticado que regula el funcionamiento de la red Bitcoin.
A través del proceso de minería, las transacciones están “aseguradas” gracias a la potencia informática que ofrecen los mineros, que participan en una competencia que tiene como recompensa un cierto número de satoshis de bitcoin. Este número se reduce a la mitad cada cuatro años como resultado del proceso de Halving.
¿Qué calculan los mineros?
Los mineros calculan hashes criptográficos en la cabecera del bloque. Para cada nuevo hash, el software de minería usa un número aleatorio llamado Nonce. Para que la extracción de un bloque se convierta en un “trabajo” difícil, el minero debe encontrar un hash que sea inferior a un número determinado.
La dificultad es un número que regula el tiempo que les toma a los mineros extraer el siguiente bloque, que luego se agregará a la cadena de bloques. En promedio, este tiempo es de diez minutos.Como se mencionó, la dificultad se “ajusta” cada dos semanas, de hecho, esto sucede cada 2016 bloques. Después de este intervalo, cada nodo realiza una operación que consiste en multiplicar el tiempo esperado por los 2016 bloques (2016 x 10 minutos) y divide el resultado con un número que se obtiene multiplicando el tiempo real por los 2016 bloques. Entonces, si, por ejemplo, el tiempo real es de 8 minutos, el resultado es:
2016 x 10 / 2016 x 8 = 1.25
Por lo tanto, cada nodo utilizará este número para establecer la nueva dificultad para los próximos bloques de 2016. Teniendo en cuenta que la nueva dificultad se obtendrá del resultado de la multiplicación entre la dificultad actual y el resultado de la operación anterior (en nuestro ejemplo 1.25)
Nueva dificultad de minería ajustada a x 1.25
Relación entre dificultad y grupo objetivo
El tiempo de bloque promedio se mantiene a través de la variación de la dificultad. Para entender cómo sucede esto, podemos usar como ejemplo el juego de lanzar los dados.
Supongamos que tenemos dos dados clásicos y establecemos, como regla, que el jugador gana (y por lo tanto obtiene una recompensa) cuando la suma resultante del lanzamiento de los dados es menor o igual a un número establecido previamente. Si se elige un número muy alto, por ejemplo 10, la probabilidad de encontrar un número menor o igual a 10 será muy alta. En este caso, para perder, el jugador debe sumar 6 más 5 o un doble 6. Sin embargo, si se elige un número mucho más bajo, como 4, los lanzamientos que se realizarán para obtener un resultado igual o inferior a este número tendrán que ser muchos más. Como este número, llamado valor objetivo, se vuelve pequeño, la dificultad aumenta. Por lo tanto, la dificultad muestra una variación del valor objetivo de su valor original.
Si el juego estuviera regulado por software y se tuviera que establecer un tiempo de liquidación fijo, el objetivo se ajustaría para mantener un tiempo de pago promedio igual al establecido por el sistema2.
La dificultad de minería en Bitcoin
La dificultad en Bitcoin funciona de manera más o menos similar. Los mineros generan números con la esperanza de que uno de ellos sea menor o igual que el valor objetivo. Los números son muy grandes y son hexadecimales. Cada bloque almacena una representación comprimida del objetivo llamada Bits. Los bits son en realidad una versión abreviada del objetivo, introducida para ahorrar espacio dentro del encabezado del bloque.
La dificultad se “ajusta” cada dos semanas más o menos para mantener el tiempo promedio de extracción sin cambios a medida que se agregan nuevos nodos a la red.