¿Cómo podemos estar seguros de que se encontrará un nuevo bloque?

¿Cómo sabemos que la función HASH producirá una salida que satisfaga la dificultad, es decir, que esté por debajo de 0000...xxxx...xxx?

¿Es posible que no se encuentre ninguna prueba para que el HASH produzca esa salida 000...xxx...?

SHA-256 tiene 115792089237316195423570985008687907853269984665640564039457584007913129639936 combinaciones posibles. No te preocupes.

Respuestas (2)

Lo importante aquí es que cada pool de minería/minero solitario está trabajando en una entrada diferente : tienen diferentes transacciones de base de monedas y están trabajando en diferentes conjuntos de transacciones. Se puede agregar más entropía cambiando el nonce y el extranonce, agregando otra transacción o cambiando el orden de las transacciones.

Si bien puede haber entradas de bloque que no funcionen con ningún nonce, la red completa atraviesa tantas entradas diferentes que, en algún momento, se descubrirá un bloque válido.

Encontrar un bloque es un proceso de Poisson

Debido a que el proceso hash se implementa como un proceso de Poisson , si el poder hash de la red coincide con la dificultad, el tiempo esperado para encontrar el siguiente bloque es exactamente 10 minutos en cada momento.

La probabilidad de Xencontrar una cantidad de bloques en un período de tiempo en el que esperaría encontrar λbloques se puede calcular con la siguiente fórmula :Probabilidad de que un número de ocurrencias varíe de las ocurrencias esperadas

Entonces, para calcular la probabilidad de que un intervalo entre bloques sea más largo que la media (10 minutos en un mundo ideal) por un factor λ, obtenemos p(0|λ) = exp(-λ)*(λ^0)/(0!) = exp(-λ)*1/1 = exp(-λ), por ejemplo, la probabilidad de que un intervalo de bloque sea

  • más de 10 minutos es 36.8%
  • más de 20 minutos es 13.5%
  • más de 30 minutos es 5.0%
  • más de 1 hora es 0.25%
  • más de 2 horas es 0.0006%
  • más de un día es 2.89*exp(-63)

Si bien no es imposible que ocurran tiempos más largos, es muy poco probable que suceda.

Bits aleatorios adicionales con los que me topé mientras investigaba para esta pregunta

En los últimos dos años, el tiempo promedio de confirmación de bloque de siete días nunca ha superado los 15 minutos. Ver tiempo promedio de confirmación de transacción de Bitcoin

En los primeros días de Bitcoin, las fluctuaciones más grandes eran más comunes debido a la potencia minera fluctuante, consulte, por ejemplo, ¿Cuál es la brecha de tiempo más larga entre bloques en 2010 - 2011? .

Puede encontrar una lista de todos los intervalos de bloques hasta enero de 2014 ordenados por longitud aquí: Intervalos de bloques ordenados .
La primera columna denomina los bloques que forman el intervalo, la segunda columna da el intervalo del bloque en segundos. Fuente: runeks en reddit: ¿Cuál es el tiempo más largo entre bloques en la historia de bitcoin?

¿Qué significan für y sonst en este contexto?
@NickODell: für = for, sonst = else. Es decir, para números naturales es la fórmula superior, para valores negativos siempre es cero.

No podemos saber con absoluta certeza que se encontrará un bloque. Sin embargo, podemos calcular aproximadamente las probabilidades.

La dificultad de bloque actual requiere aproximadamente 63 bits cero al comienzo del hash. La probabilidad de encontrar un bloque con un hash es de aproximadamente 2**(-63). La probabilidad de no encontrar un bloque es (1 - 2**(-63)). La probabilidad, por lo tanto, de no encontrar un bloque después Nde los intentos de hash es (1 - 2**(-63))**N.

La tasa de hash de la red actual es de aproximadamente 30 000 000 GH/s, o 3e16 H/s. En 10 minutos, la red puede hacer alrededor de 1.8e19 hashes. Usando este valor como se indicó Nanteriormente y calculando el resultado , se obtiene 0.14205174, que nuevamente es la probabilidad de no encontrar un bloque después de 10 minutos.

Dado lo anterior, puedes extender el tiempo y calcular algunas probabilidades más:

Sin resultado en una hora => 0.00000821 = 8.21e-6
Sin resultado en un día => 8.96e-123

Es extremadamente improbable que no se encuentre ningún resultado para un bloque después de un día.

@Zaph: Es fácil calcular la probabilidad de obtener un hash exitoso para la minería de bitcoins con un solo intento de hash . Eso es como lanzar un dado y obtener 1 (probabilidad 1/6). Sin embargo, la parte interesante es cuántas veces tienes que tirar un dado para que salga 1 en algún momento. No puedes decir con certeza que puedes lanzar un dado 6 veces y obtener un 1. Ni siquiera puedes decir eso por 10 lanzamientos, o 100 lanzamientos, o un millón. Para un dado, la probabilidad de tirar Nveces y nunca obtener un 1 es (5/6)**N.
@GregHewgill: Si bien mi primer intento de calcular las probabilidades fue muy similar al suyo, ya he aprendido que la búsqueda de bloques es un proceso de Poisson, y mi intento inicial fue incorrecto. Ahora he proporcionado lo que creo que son las probabilidades correctas y también la fórmula que se puede usar para calcularlas.
@Murch: el proceso de Bernoulli (que he descrito) y el proceso de Poisson (que usted ha descrito) están estrechamente relacionados. El proceso de Poisson modela el tiempo continuo; el proceso de Bernoulli modela el tiempo discreto. Ambos enfoques pueden modelar con éxito el proceso de minería de Bitcoin.