La dificultad se ajusta en porcentajes muy granulares al objetivo de bloques de 10 minutos. Pero agregar otro cero al final de la cadena de ceros del requisito de hash de encabezado para un bloque válido aumentaría exponencialmente la dificultad. Entonces, ¿cómo es que el Alogrithm apunta con tanta precisión a la derecha con dificultad solo mediante el uso de "ceros"?
La dificultad en realidad está representada por el umbral objetivo codificado en el nBits
valor del encabezado del bloque. Donde la dificultad representa la representación legible por humanos ("con qué frecuencia debemos tratar de encontrar una solución"), el umbral objetivo define el prefijo que un bloque debe superar para ser válido. Esto significa que el hash de bloque de 256 bits interpretado como un número debe ser inferior al umbral de destino. Aunque nBits
es solo un valor de 4 bytes, es una representación comprimida de un número de 256 bits (32 bytes). El primer byte define el exponente, los tres bytes restantes dan una mantisa de 24 bits para el objetivo.
Si bien esto deja que la mayor parte de los 32 bytes en el umbral de destino se componga solo de ceros, la dificultad se puede ajustar de una manera mucho más granular que simplemente agregando ceros a la izquierda.
David Harding ha elaborado todos los detalles en ¿ Cómo se calcula la sección de destino de un encabezado de bloque? .
nBits
es una codificación compacta del objetivo.Como complemento a la respuesta de @Murch, me gustaría citar un ejemplo de Grokking Bitcoin :
El objetivo se escribe en el encabezado del bloque como 4 bytes,
ABCD
; el destino de 32 bytes se calcula comoBCD
× 2^(8*(A-3)). Eso esBCD
conA-3
cero bytes después. Es así de incómodo porque debemos poder expresar una amplia gama de objetivos, 1–2^256, con solo 32 bits. El objetivo en el bloque de Qi [un carácter del libro] se escribe como1c926eb9
, es decir,926eb9
con 25 cero bytes después (1c–3 = 19
, código hexadecimal para 25).
Rana fruncida