Usando una plantilla de bloque para minar

Nov 25 2020

Estoy un poco confundido acerca de cómo uso la plantilla de bloque. Vi esta pregunta que me lleva a pensar que tal vez necesite llamar a esta función hasta que obtenga un hash que se ajuste a la dificultad. Básicamente, ¿cuáles son las llamadas de función que necesito realizar para extraer una plantilla de bloque para poder luego llamar al bloque de envío?

Lo siento, si esta es una pregunta vaga, estoy bastante confundido.

También he visto esta pregunta, pero nuevamente no responde realmente a qué función debo llamar.

Solo para más contexto, llamo a monero desde un repositorio de bazel, por lo que las cosas son un poco complicadas y complejas.

Respuestas

2 jtgrassie Nov 26 2020 at 09:52

Estoy un poco confundido acerca de cómo uso la plantilla de bloque ... Básicamente, ¿cuáles son las llamadas de función que debo realizar para extraer una plantilla de bloque para luego llamar a enviar bloque?

Una plantilla de bloque es solo eso, una plantilla para un bloque en el que un minero puede trabajar (hash repetido) para intentar encontrar una solución (un hash que cumpla con la dificultad de la red) y luego enviarlo a la red.

Entonces, primero, un minero obtiene una plantilla de bloque, generalmente usando el método daemon get_block_template .

A continuación, el minero actualiza de manera relacionada el espacio nonce 1 y realiza un hash 2 (utilizando la función hash RandomX). Si / cuando el hash resultante (que es solo un número) cumple con la dificultad de la red, pueden enviar el bloque a la red utilizando el método demonio submit_block .

Por último, los nodos pares validan que cualquier hash de bloques propuesto cumple con la dificultad de la red. Si ningún otro minero envía un bloque válido (o cadena de bloques) con más trabajo realizado, después de 60 bloques, el minero recibe la recompensa.

1, el espacio nonce puede ser cualquier combinación del campo nonce en el encabezado del bloque o en cualquier espacio reservado de la transacción minera.

2 lo que realmente obtiene hash es un blob de hash de bloque, que es una concatenación del encabezado del bloque, un hash de raíz merkle de las transacciones de bloques y una variación del recuento de txs ( src ). Un minero puede usar directamente el blob de hash de bloque devuelto desde get_block_templateo puede construir el blob de hash de bloque por sí mismo usando el blob de plantilla de bloque. Este último es necesario si el minero está cambiando el espacio reservado del miner tx.