Reinicio de la minería en una nueva transacción

Entendí que cuando entra una nueva transacción, los mineros tienen que empezar de nuevo, o al menos cambiar su merkle-tree para incluir la nueva transacción, esencialmente comenzando desde cero nuevamente.

Si miro las transacciones en tiempo real en https://blockchain.info/ , ¿cómo podrían los mineros hacer un bloque cuando nunca hay un descanso?

A menos que defina una ruptura como unos pocos microsegundos, y dado que cada segundo puede calcular, creo, miles de millones de hashes posibles, todavía me resulta difícil comprender cómo se "elige" o verifica un nuevo bloque en términos humanos comprensibles.

Cada nuevo hash tiene la misma probabilidad de éxito, independientemente de si es el primer hash probado en un bloque determinado o si ha habido millones antes. "Reiniciar" no es un concepto significativo; de todos modos, está "reiniciando" miles de millones de veces por segundo, por lo que prácticamente no se pierde nada al actualizar el encabezado con la nueva transacción.
@NateEldredge Digamos que ha probado 1000 nonces sin encontrar un bloque, entonces sabe que esos 1000 nonces no lo son, al menos para el bloque actual. Pero si algo cambia (es decir, el hash), entonces tiene que comenzar de nuevo en el sentido de que no tiene 1000 nonces incorrectos conocidos, sino 0. Pero creo que entiendo su punto de que, en términos de probabilidad, no hay mucho de una diferencia.
No. Estoy diciendo que hay cero diferencia. Conocer 1000 nonces que no funcionan es información inútil ; no tiene absolutamente ninguna relación con la probabilidad de que el próximo nonce funcione. Tenga en cuenta que no hay garantía de que cualquier nonce funcione en absoluto; podrías haber probado todos menos uno de los 2^32 nonces posibles para un bloque, y la probabilidad de que el último funcione sigue siendo la misma que para el primero que probaste: 1 en (dificultad * 2^32). (De hecho, para cualquier bloque dado, es extremadamente improbable que cualquiera de los 2^32 posibles valores de nonce funcionen).
Considere el siguiente experimento mental. Tengo un dado rojo con mil millones de caras. Lo hago rodar y te pido que adivines el número. Si aciertas, ganas. Si no, tiro de nuevo y te pido que adivines el nuevo número. Dado que volvemos a tirar cada vez, tener 1000 intentos incorrectos no ayuda ni perjudica sus posibilidades en la siguiente tirada. Y si después de 1000 jugadas, tiro el dado rojo y empiezo a usar un dado verde de mil millones de caras, no has perdido ningún "progreso".
Si el rango de nonce es, digamos, 1-1000000 (¿creo que hay un límite superior en bitcoin?), entonces su probabilidad aumenta, por probabilidad, si sabe a lo que me refiero. Entiendo que es posible que ningún nonce funcione en absoluto, pero entonces te estás acercando a usar un extraNonce, ¿o tal vez la dificultad está disminuyendo?
¡No! El comportamiento de la función hash es tal que cada nuevo intento es una nueva tirada del dado. "Empezar de nuevo" no cuesta nada porque no hay progreso que perder.
@NateEldredge, está bien, pero en este experimento, no podemos tirar dos veces el mismo lado de los dados, porque sabes que esa no era la respuesta. Pero supongo que tu punto es que con los dados no tienes elección. Pero te pregunto con un nonce que haces bien? ¿O quieres decir que tiras los dados por vez?
@NateEldredge, Ok, creo que entiendo lo que quieres decir. Entonces, esencialmente "reiniciar" la minería no importa, usar el mismo nonce con un hash diferente es inútil y no tiene relación con su resultado. (Pero al mismo tiempo, probar el mismo nonce una y otra vez en el mismo hash obviamente no cambiará nada. Pero cada vez que use un nonce diferente, restablecerá sus posibilidades)

Respuestas (2)

La minería se basa en la computación, pero no es constante, es aleatoria. Esencialmente, cada hash calculado genera un número aleatorio. Si el número aleatorio está por debajo del objetivo, es válido para crear un bloque. La probabilidad de que un único hash sea lo suficientemente bajo es minúscula (tiene más posibilidades de ganar la lotería varias veces seguidas), pero es por eso que necesita calcular muchos hash. El árbol merkle real no hace ninguna diferencia siempre que el árbol en sí sea válido. Los mineros no tienen ninguna obligación de incluir todas las transacciones en el mempool, por lo que normalmente enviarán bloques cada vez que encuentren un hash válido.

Entonces, en realidad, las actualizaciones del árbol merkle en realidad no importan. De hecho, puede ser útil ya que hay más nonces para probar.

¿Podría explicar cómo es útil y cómo significa más nonces para probar? Preferiblemente con un ejemplo.

Los mineros eligen qué transacciones incluir en sus bloques. Por lo tanto, no tienen que incorporar continuamente transacciones recién llegadas a los bloques que están probando. Pueden, si lo desean, por ejemplo, aprovechar el cobro de tarifas de transacción posiblemente más altas asociadas con nuevas transacciones.