¿Con qué frecuencia los mineros recalculan la raíz de Merkle en la que están trabajando?

Creo que entendí la mayoría de las cosas sobre Bitcoin, pero todavía hay un misterio.

Podemos ver en https://blockchain.info/ que hay hasta 4/5 transacciones nuevas cada segundo. Mi pregunta es: ¿Los mineros recalculan la raíz de Merkle de 4 a 5 veces por segundo? ¿Qué sucede con las transacciones realizadas exactamente al mismo tiempo que se libera un bloque?

He visto que los mineros pueden elegir las transacciones que quieren aceptar, pero si fuera el caso, yo sería un minero, aceptaría tal vez 2 o 3 transacciones, encontraría el nonce y obtendría la recompensa de 25 bitcoins. ¿Por qué eso no es posible?

Les agradezco mucho sus respuestas y espero puedan ayudarme. Gracias.

Respuestas (2)

De hecho, hay muchas transacciones nuevas cada segundo. La forma en que los mineros lo manejan es doble:

  1. Si se encuentra una prueba de trabajo adecuada en cualquier raíz de Merkle, simplemente publique ese bloque y cualquier transacción que no haya llegado al bloque pase al siguiente bloque (suponiendo que haya tarifas suficientes)

  2. De lo contrario, calcule una nueva raíz Merkle de vez en cuando (varía según el minero, pero digamos por el bien del argumento que son 5 segundos) e intente calcular la prueba de trabajo con las transacciones incluidas.

La razón por la que los mineros no aceptan solo 2 o 3 transacciones es que es mucho trabajo encontrar el nonce para la prueba de trabajo, ya sea que haya 1 transacción o 1000 transacciones. Las probabilidades siguen siendo las mismas. Lo bueno de incluir más transacciones como minero es que obtienes más tarifas de minería de ellas.

Muchas gracias por sus respuestas y me ayuda mucho. Sin embargo, no entiendo por qué necesitamos aproximadamente 10 minutos para resolver un bloque. Por ejemplo, el último bloque nonce es ~2'909'195'137 y una máquina de minería estándar puede generar más de ~8'000' 000'000 hashes por segundo. Si podemos hacer eso, estaré seguro de que seré el primero en liberar el siguiente bloque y luego obtener la recompensa de 25 bitcoins en unos pocos segundos.
cualquier cosa que cambie sobre el bloque cambia el tiene, es decir, si usa una nueva marca de tiempo, agrega una transacción, cambia el orden de las transacciones... no hay garantía de encontrar un bloque para cualquier momento.

Mirando los campos en el encabezado del bloque , el campo nonce es un número entero de 32 bits. Esto significa que el nonce es un número entero en el rango de 0 a 4,294,967,295. Como señala, un minero con solo una GPU comercial puede calcular fácilmente esta cantidad de hashes en menos de un segundo.

En los primeros días de bitcoin, cuando el requisito de dificultad era mucho más bajo de lo que es ahora, los mineros recogían un montón de transacciones, tomaban Merkle Root, usaban la hora actual como marca de tiempo, creaban el encabezado y luego iteraban a través del rango. de nonces, y tenían una buena oportunidad de encontrar un nonce que (cuando se combinaba con el resto de la información en los encabezados) producía un hash SHA256 que cumplía con el requisito de dificultad.

Pero hoy en día, con el requisito de dificultad mucho más alto, los mineros tienen una posibilidad muy pequeña de encontrar un nonce que (cuando se combina con el resto de la información en los encabezados) produzca un hash SHA256 que satisfaga el requisito de dificultad después de iterar a través del rango de nonce valores. Por lo tanto, tienen que volver a intentarlo, cambiando algo más en los encabezados (por ejemplo, la marca de tiempo o las transacciones en el bloque), luego iterar a través del rango de valores nonce nuevamente con la esperanza de encontrar uno que satisfaga el requisito de dificultad. Este proceso se repite muchas veces, hasta que finalmente un minero encuentra la combinación ganadora de información de encabezado y nonce que produce un hash que satisface el requisito de dificultad, lo que debería ocurrir aproximadamente cada 10 minutos por diseño.