No se puede crear una red de prueba privada usando geth. nodeInfo.genesis es de la red principal

Estoy tratando de crear mi red de prueba privada usando geth. Sin embargo, incluso cuando uso un bloque CustomGenesis de un archivo json, cuando inicio geth y ejecuto admin.nodeInfo, el génesis y los hashes principales son de la red principal.

Aquí está CustomGenesis.json: -

{
"nonce": "0x0ae067964324234907200d849",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0x8000000",
"difficulty": "0x4000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x16d38897146fb767e709386f416bbc88aed53171",
"alloc": {
    "0x16d38897146fb767e709386f416bbc88aed53171": {
            "balance": "10000000000000000000"
    }
}
}

Aquí está el comando que estoy usando para iniciar mi red de prueba privada:

geth --identity "Dev1" --datadir "/home/dev1admin/ethereum/private_test1/chain" --port "30304" --nodiscover --ipcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --rpcapi "db,eth,net,web3" --autodag --networkid 1729 --nat "none" --verbosity 5 console init "/home/dev1/ethereum/private_test1/CustomGenesis.json"

La salida del comando admin.nodeInfo: -

{
enode:"enode://0e576e1aa07d4ee4ea7fc34fe7a0e46ef16f9b835ce58b76dd7b675eea67d7546c3daf3b3115badabc24235d1056c508b108ba7d0f88bbf3687edae5db9165f7@[::]:30304?discport=0",
id: "0e576e1aa07d4ee4ea7fc34fe7a0e46ef16f9b835ce58b76dd7b675eea67d7546c3daf3b3115badabc24235d1056c508b108ba7d0f88bbf3687edae5db9165f7",
ip: "::",
listenAddr: "[::]:30304",
name: "Geth/Dev1/v1.5.5-stable-ff07d548/linux/go1.7.3",
ports: {
discovery: 0,
listener: 30304
},
protocols: {
eth: {
  difficulty: 17179869184,
  genesis: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
  head: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
  network: 1729
}
}
}

No quiero usar la opción --dev con geth porque quiero preasignar algo de éter. Además, simplemente usar una identificación de red para diferenciar entre redes me parece incorrecto (también quiero poder configurar un nonce personalizado para asegurarme de que nadie más se conecte a mi red a menos que conozcan mi nonce).

Respuestas (2)

Tu initcomando es muy largo. Esto le impidió notar que le dio órdenes a Geth 2: consoley init. Se fue con el primero.

Entonces, ¿qué tal si mantienes lo estrictamente necesario y eliminas consoley el ":

geth --datadir /home/dev1admin/ethereum/private_test1/chain --verbosity 5 init /home/dev1/ethereum/private_test1/CustomGenesis.json

La cuenta a la que está asignando ether ya debe existir para que se genere a través del archivo de génesis. Las cuentas viven fuera de la cadena de bloques (Geth las almacena en la carpeta datadir/keystore) para que pueda crearlas en una cadena de bloques y copiarlas en otra.

Aquí hay un posible flujo de trabajo:

  1. Inicie geth con su archivo de génesis personalizado y directorio de datos
  2. Cree las cuentas a través de personal.newAccount()
  3. Actualice el archivo de génesis con las cuentas que creó en el n.° 2
  4. Eliminar el directorio datadir/geth
  5. Inicie geth nuevamente con su archivo de génesis personalizado y directorio de datos

Puede encontrar útil mi repositorio de github sobre la configuración de una red ethereum privada:

https://github.com/chafey/ethereum-private-network

Los pasos que escribiste no funcionaron. En los pasos que seguí, no creo que el error se deba a agregar una cuenta que no existe a los campos etherbase y preasignación (cambio eso más tarde después de crear una nueva cuenta y luego reinicio el cliente). Si el error se debió a eso, geth (idealmente) no debería haber comenzado o debería haber dado un error.
Geth solo asignará el éter a las cuentas cuando se ejecute el comando init. Por lo tanto, las cuentas deben crearse antes de ejecutar init. No creo que pueda ejecutar init y console al mismo tiempo; ejecute init primero, luego vuelva a iniciarlo con console si lo desea.
Gracias. Eso funciono. Debería haber notado la consola extra.