Configurando una red privada con Geth, no puedo desbloquear la cuenta e implementar contratos

He configurado una red privada con Geth con el siguiente comando:

geth --datadir="PathToDatadir" --mine -minerthreads 2 -verbosidad 3 -maxpeers 5 --ipcapi "admin,debug,eth,miner,net,personal,shh,txpool,web3" --ipcpath "geth.ipc" --puerto 30301 --rpc --rpcport 8101 --rpcapi eth,web3,personal --etherbase "e04fe31f4133f25ef3e5bfb39146edcf28724acd" --networkid 9990

Hasta ahora, todo bien.

Desarrollé un sistema de contratos usando truffle y testrpc y ahora estoy tratando de implementarlo en múltiples nodos. Cuando ejecuto la migración de trufas, me encuentro con problemas:

Ejecutando migración: 1_initial_migration.js Reemplazando migraciones... Error encontrado, rescate. Estado de la red desconocido. Revise las transacciones exitosas manualmente. Error: la cuenta está bloqueada

He configurado truffle para enviar desde una dirección que quiero (la misma que está definida como etherbase) pero la cuenta está bloqueada. Hay varias formas de desbloquear una cuenta usando Geth. La única forma en que parece funcionar para mí es si desbloqueo la cuenta de esta manera:

geth --desbloquear "e04fe31f4133f25ef3e5bfb39146edcf28724acd" --password "ruta completa a TxtPasswordfile"

¿La cuenta permanece desbloqueada para futuras invocaciones de Geth? El desbloqueo a través de personal.unlockAccount("address","fullPathtoTxtPasswordfile") en la consola tampoco funciona. web3.accounts tampoco está definido.

Así que parece que he logrado desbloquear las cuentas, pero truffleMigrate todavía me da el error de cuenta bloqueada. He encontrado problemas similares con el desbloqueo de cuentas, pero no he encontrado una solución para mi problema específico.

Parece que mi problema fue causado por no definir una red para usar cuando se ejecuta la migración de trufas.

Respuestas (1)

personal.unlockAccountno toma una ruta de archivo, toma una contraseña. Consulte: https://github.com/ethereum/go-ethereum/wiki/JavaScript-Console#personalunlockaccount

En la línea de comando, intente usar esto:

geth --unlock 0 --password "fullpathtofile"- el argumento de desbloqueo toma un índice. Puede ver los índices ejecutando geth account list.

Si desea asegurarse de que no se trata de un problema con el archivo, también puede hacer esto:

geth --unlock 0 --password <(echo "PASSWORD_HERE")

El <(command)formulario ejecuta el comando dentro del paréntesis y crea una canalización con nombre que pasa al programa, actuando como un archivo con el contenido de esa salida. Puede usar esto como una prueba para cuentas de prueba no confidenciales.

Gracias por la información útil. Ya pude desbloquear la cuenta dando la dirección entre paréntesis como parámetro. Sin embargo, si antepongo o agrego los indicadores de desbloqueo y contraseña al comando Geth más grande, recibo el siguiente mensaje: Fatal: no se pudieron enumerar las cuentas: índice de cuenta 0 fuera de rango [0, -1] la cuenta está bloqueada, mientras que yo la he desbloqueado en Geth.