¿Cómo establecer correctamente los atributos para hash de bloque y nBits en PIVX Fork?

He clonado PIVX (básicamente una bifurcación DASH) y modificado los parámetros básicos. Compila bien. Cuando intento ejecutarlo, el servidor se inicia y el archivo de registro de depuración muestra los siguientes errores:

ERROR: CheckProofOfWork() : hash no coincide con nBits
ERROR: CheckBlockHeader() : prueba de trabajo fallida
ERROR: CheckBlock() : CheckBlockHeader falló

Para generar mi bloque de génesis he cambiado los siguientes parámetros:

  • pszTimestamp: usó una última noticia aleatoria.
  • vAlertPubKey: Usó la clave de alerta de los comandos de generación mencionados en este enlace de pastebin .
  • scriptPubKey: Usó el hexágono de génesis de los comandos de generación mencionados en este enlace de pastebin .

  • genesis.nTime: Obtuve la última marca de tiempo de Unix.

  • genesis.nNonce: Obtenido del algoritmo de creación de bloques de génesis mencionado en este enlace de pastebin .

Pude generar con éxito un nuevo hash de génesis, así como también una raíz de merkle. Pero después de compilarlo y me sale el error anterior.

Intenté buscar la solución en la web, pero la mayoría de ellos no tenían respuestas concretas o ninguna respuesta, excepto esta .

Explica que el hash de mi bloque de génesis es mayor que el hash objetivo que se obtiene usando nBitsvariable. Entonces, mi pregunta es ¿cómo me aseguro de que mi hash de génesis sea menor que el hash de destino para deshacerme de los errores mencionados?

Respuestas (1)

Encontré la respuesta. Sin embargo, corríjame si me equivoco al explicar esto.

Básicamente, una vez que tenemos entradas para el bloque, procesamos los datos. Este hashing se puede lograr utilizando múltiples técnicas, a saber. SHA256, codificación, X11, etc.

El problema con la generación de un hash para la génesis fue que usé el algoritmo scrypt para generar el hash. Es posible que encuentre enlaces a la papelera con este método scrypt_1024_1_1_256_sp_sse2.

Entonces, en mi caso, reemplacé esto con el método ofrecido por uint256la clase. Puede encontrar esta lógica de creación de génesis en este pastebin .

Siéntase libre de agregar cualquier cosa o corregirme si me equivoco.