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.
personal.unlockAccount
no 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.
Transformar