obteniendo un error en el archivo de génesis no válido máximo: la cadena hexadecimal tiene una longitud impar

Estoy tratando de crear un bloque de génesis en mi mac para una red ethereum local, pero recibo el error:

archivo de génesis no válido: la cadena hexadecimal tiene una longitud impar

cuando lo hago

Mi código es el siguiente:

{ 
  "nonce": "0x0000000000000042", 
  "timestamp": "0x0", 
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 
  "extraData": "0x0", 
  "gasLimit": "0x8000000", 
  "difficulty": "0x400", 
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 
  "coinbase": "0x3333333333333333333333333333333333333333", 
  "alloc": { }
}
al ejecutar qué comando está recibiendo este error?
dl.dropboxusercontent.com/u/4270001/testnet_genesis.json Enlace al archivo Ropsten testnet genesis.json. Blog sobre el cambio de Morden a Ropsten: blog.ethereum.org/2016/11/20/from-morden-to-ropsten

Respuestas (5)

El mismo problema me paso con geth 1.6, con un archivo de genesis similar al tuyo.

Geth del viernes pasado actualizado a 1.6 ( https://github.com/ethereum/go-ethereum/releases/tag/v1.6.0 ).

En este lanzamiento:

El manejo de JSON de bloques de Génesis es más estricto y seguro. En particular, la mayoría de los campos JSON ahora requieren el prefijo "0x". (#3794)

Encontré esta página de documentación: https://github.com/ethereum/go-ethereum/wiki/Private-network

En esta página hay un ejemplo de un archivo de génesis que funciona en geth 1.6.

Creo que su archivo de génesis funciona con versiones anteriores.

Gracias Atrofia. También estaba enfrentando el mismo problema y después de depurar durante 2 días, encontré esta publicación y mi problema se resolvió.

Tuve el mismo problema y descubrí que el problema era:

"datos extra": "0x0",

Si lo cambias a:

"datos extra": "0x00",

El problema desaparece.

Sin embargo, en este punto tendrá otro problema porque en la última versión de geth necesita una sección de configuración. Agregue lo siguiente y debería estar listo para comenzar.

"configuración": { }

¡Funciona para mi! Buena solución. @Brad Lucas
Lea más sobre la configuración aquí: github.com/ethereum/go-ethereum/wiki/…

Estaba usando el mismo archivo JSON que el anterior y recibí el mismo error "hexadecimal no válido". Según la sugerencia anterior, cambié al nuevo archivo JSON según el enlace (ver más abajo). Ahora puedo inicializar con éxito la cadena sin obtener el error hexadecimal. Sin embargo, recibo un error diferente cuando intento iniciar un nodo de minería. Me pregunto si es porque esto incluye algunas cuentas prefinanciadas. ¿Hay sintaxis disponible para el génesis JSON anterior, pero con un archivo vacío? (sin cuentas prefinanciadas).

{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "200000000",
    "gasLimit": "2100000",
    "alloc": {
        "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
        "f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
    }
}
Abra una nueva publicación en lugar de publicar aquí.

Como se señaló en otra respuesta, esto parece ser un cambio con el lanzamiento de geth 1.6.0.

Dado que genesis.jsonse descargó en lugar de generarse, no estoy seguro de si es apropiado editar el archivo genesis.json.

Instalé geth 1.5.9 y pude usarlo $ geth init genesis.jsoncon el formato anterior que se muestra en la pregunta.

Me enfrento al mismo problema y lo resuelvo siguiendo algunas reglas. Esas reglas son "mixhash" = Tienes que escribir datos 64 veces después de 0x, "coinbase" =Tienes que escribir datos 40 veces después de 0x, "timestamp"= 0x00, "parenthash"=Tienes que escribir datos 64 veces después de 0x , "extraData"= "0x00" En este caso, mis datos json son como:

{
"nonce": "0x000000142",
"difficulty": "0x4000",
"alloc": {
    "6b3fb267ff816af81091946a7e8": {
        "balance": "1000"
    },
    "70604ec24664b629abfa3604fc0140": {
        "balance": "100000"
    }
},
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parenthash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"gasLimit": "0xfffff"

}