¿Cómo funciona la minería en el objetivo en movimiento (las variables cambian cada segundo)?

En bitcoin, los mineros procesan el encabezado dos veces con la función SHA256. Este encabezado consta de los campos enumerados a continuación:

  • versión (v)
  • anteriorHashBlock (p)
  • merkleRaíz (m)
  • tiempo (t)
  • dificultad (d)
  • una vez (n)

Simplifiquemos y digamos que soy un minero de grupo con un rango de nonce de 1-100. Entonces, si hago mi parte y encuentro que en el minuto 9 el valor de Nonce de 91, resuelve el rompecabezas (prueba de trabajo). Pero cuando envío a la red, merkleRoot y la hora han cambiado, por lo que el nonce que encontré ya no es cierto. Sabemos que el hash cambia drásticamente con el más mínimo cambio de entrada, pero en esta fórmula, no una sino DOS variables cambian constantemente durante mi período de extracción (en este caso, 9 minutos). La transacción ocurrió y la hora cambió. Entonces, ¿cómo se cumple esta fórmula durante todo el tiempo de minería?

SHA256(v + p + m + t + d + n(91)) => 0000000asd8f686asd6das

¿ Dónde m y t cambian constantemente? ¿No sería 91 irrelevante a la hora de encontrar?

Respuestas (2)

Los mineros realistas ejecutan los 2^32 nonces posibles en mucho menos de un segundo.

Si se produjo una transacción después de que comenzó su búsqueda nonce, entonces su bloque no incluirá esa transacción. No hay problema con eso.

Si la hora cambió después de que extrajiste tu bloque, entonces tu bloque no tendrá la hora exacta. Nuevamente, no hay problema con eso.

Y si lo piensas bien, no puede haber ningún problema con eso. ¿Cómo sabría alguien cuándo extrajo el bloque o si la transacción ocurrió antes o después de que extrajo el bloque? Es la minería lo que permite que Bitcoin esté de acuerdo con estas cosas, así que si extrajiste el bloque, eres tú quien puede elegir.

¿De dónde viene 2^32? ¿Es el máximo posible nonce? ¿O es una parte acordada de la minería del pool? si tarda solo un segundo, ¿qué hago el resto de 10 minutos?
Hay 2^32 nonces posibles ya que el nonce es de 32 bits. Tal vez tengas la idea errónea de que hay un bloque mágico que todos los mineros intentan extraer. Un minero está tratando de extraer cualquier bloque válido que le pague la recompensa. Si no puede minar un bloque en particular, volverá a intentarlo con un bloque ligeramente diferente. Si tiene mucho hardware rápido, puede estar tratando de extraer cientos de posibles bloques diferentes a la vez. En promedio, alguien en algún lugar tiene éxito una vez cada 10 minutos. Así de difícil es la minería.
gracias por responder por cierto! tienes razón, tenía este concepto erróneo... pero ¿significa que podría ser imposible encontrar el premio mayor con ciertos criterios... quiero decir, simplemente no existe... así que digamos que tengo m y t, y sin importar el momento en que lo use, ¿es imposible obtener un hash con cierto 0? ¿entonces eso significa que tienes que modificar el tiempo o merkleRoot?
@Prostak Correcto. Es trivial obtener un nuevo merkleRoot simplemente cambiando ligeramente la transacción que le paga la recompensa minera. Eso te da un bloque completamente nuevo para probar los 2^32 nonces.
Cuando dices "cientos de posibles bloques diferentes a la vez", ¿qué quieres decir? ¿Qué variantes introducen para bloquear? ¿tiempo? y cambiar la lista de transacciones? o hay una manera de modificar smth más?
Por lo general, cambian la transacción que les paga la recompensa en bloque y las tarifas de transacción. Cambiar un byte en la transacción es suficiente para darles un bloque completamente nuevo para probar los 2^32 nonces.

Como minero, eliges tu propio merkleRooty time.

Esta es la misma razón por la que diferentes mineros buscan diferentes nonces: el suyo merkleRootcontiene su transacción de recompensa, mientras que el merkleRootde un minero diferente contiene su transacción de recompensa.

¿Qué quieres decir con "tú eliges"? ¿Quiere decir que elige transacciones para recoger en bloque? pero en ese caso, tampoco elige, porque tiene que tomar transacciones que ocurrieron antes... según tengo entendido, las transacciones máximas son 2400, por lo que debe tomar al menos este máximo
No tiene que tomar transacciones que ocurrieron antes. Tiene su elección de transacciones válidas. Y puede introducir sus propias transacciones si lo desea. La minería es la forma en que acordamos qué transacciones ocurrieron, por lo que si extrae un bloque, puede elegir ese bloque. Siempre y cuando sean válidos, por supuesto.
Sí, quiero decir que los mineros eligen las transacciones que les gustaría incluir en un bloque. Así es como los mineros pueden aumentar los costos de transacción, eligiendo incluir solo transacciones con altas tarifas de transacción incluidas. Si los mineros de alguna manera tuvieran que incluir las transacciones más antiguas, entonces nadie se molestaría en incluir las tarifas de transacción.
@DavidSchwartz corrígeme si me equivoco, pero ¿tienes que elegir transacciones ANTES de comenzar a elegir el nonce? porque merkleRoot cambia el resultado? en otras palabras, si minó el nonce exitoso, ¿no puede cambiar la lista de transacciones después? entonces, ¿tienes que elegir las transacciones exactas antes de comenzar a minar?
@GregHewgill misma pregunta por favor ^^
@Prostak Tienes que decidir qué bloque quieres extraer antes de intentar extraerlo. Luego intenta extraerlo probando los 2 ^ 32 nonces. Casi siempre fallas, por lo que simplemente comienzas el proceso nuevamente con un bloque diferente. Y cualquier operación minera realista está tratando de extraer cientos de posibles bloques a la vez. Una vez que encuentre un nonce, habrá extraído ese bloque exacto. Cambiarlo de alguna manera rompe el hash y lo invalida.
Sí, usted elige las transacciones que le gustaría incluir antes de comenzar a minar. Cuando encuentre un nonce exitoso, le conviene transmitirlo de inmediato, porque desea su recompensa de bloque.
gracias chicos, aprendí de ustedes que nonce es un número relativamente pequeño... pensé que los 10 minutos, todos los mineros de todo el mundo intentaban iterar a través de posibilidades de hash... quiero decir que nonce en sí era un hash con 2^ 160 posibilidades... así que los 10 minutos, los mineros iteran a su manera estos 2^160... pero parece que los mineros iteran jugando el juego de adivinanzas con variables, no solo una vez... @GregHewgill