Con el hashrate actual, ¿cómo se tarda 10 minutos en resolver un bloque de bitcoin?

No importa cuán alta sea la dificultad (o cuán baja sea la meta), no entiendo cómo la red de Bitcoin tarda un promedio de 10 minutos en resolver cada bloque.

Para cualquier encabezado de bloque dado, solo hay 2^32 valores posibles para el nonce. Incluso si tenemos en cuenta que la marca de tiempo se puede cambiar hasta 1 hora (por ejemplo), eso es 3600 x 2^32 combinaciones posibles, que es aproximadamente 1.5e13

En blockchain.info dice que la tasa de hash actual de la red es 7,991,378,504 GH/s, lo que significa que, cada segundo, se calculan más hashes en varios órdenes de magnitud que la cantidad de hashes posibles que pueden resultar del encabezado del bloque actual. .

Entonces, ¿cómo es que los bloques no se resuelven en solo unos segundos y toman alrededor de 10 minutos?

Entiendo que los mineros quieren incluir tantas transacciones como puedan en un bloque para cobrar las tarifas, por lo que se podría argumentar que es mejor esperar hasta que haya muchas transacciones en un bloque antes de resolverlo. Pero incluso eso no tiene sentido, porque no hay absolutamente nada que perder al resolver cada bloque lo más rápido posible de todos modos.

Respuestas (1)

La minería básicamente funciona así:

  1. Haz un bloque de candidatos, prueba todos los nonces.
  2. Si ninguno produjo un bloque válido, cambie algo en la transacción de coinbase.
  3. Repita desde el paso 1.

Los mineros recopilan transacciones y luego intentan crear un bloque válido aplicando fuerza bruta a los nonces. La dificultad de crear un bloque está relacionada con el valor hash máximo que puede tener un bloque válido.

Por ejemplo, el encabezado actual de la cadena de bloques (al publicar esto) tiene un hash de bloque de 000000000000000000077d9c18fdbd5cf45b2652fe6db9089558eb8fc9fc3b397. Como puede ver, tiene muchos ceros a la izquierda, porque la mayoría de los hashes por encima de este valor son rechazados. Con los valores de 2^32 nonce y otros campos de encabezado, no puede probar suficientes bloques como para alcanzar cualquier hash de bloque lo suficientemente pequeño. Los mineros cambiarán algunos bytes en las transacciones (normalmente en la base de monedas) para crear aún más candidatos de bloque nuevos.

Además, diferentes mineros probarán diferentes bloques, ya que deberían tener diferentes receptores de las transacciones de la base de monedas.

Por lo tanto, la dificultad actual es tan alta que incluso si un minero calcula los hashes para todos los 2^32 nonces posibles, es poco probable que encuentre uno por debajo del objetivo actual. Por lo tanto, debe seguir intentándolo con una base de monedas diferente hasta que uno de los 2^32 anuncios realmente funcione. ¿Podría señalarme alguna documentación que explique todo sobre las transacciones de coinbase y los nuevos candidatos de bloque? Creo que eso es lo que falta en mi rompecabezas.
@EdwardEisenberg: Básicamente, los mineros son libres de elegir qué transacciones, o incluso si las hay, les gustaría incluir en un bloque minado. ¿Ejecutar a través de todos los nonces? No hay problema, simplemente agregue o elimine una transacción e inmediatamente tendrá otros billones de hashes para probar.
No es necesario eliminar o agregar transacciones. Hay algunos mineros maliciosos que incluso extraen bloques vacíos (aparte de la base de monedas), por lo que no tiene nada que cambiar en ese sentido. La transacción de coinbase puede contener datos arbitrarios y basta con poner algunos bytes nonce adicionales.