Comencé una cadena de bloques privada usando el comando,
geth --networkid 1337 --datadir ~/home/xyz/testnet --ipcpath /home/xyz/.ethereum/geth.ipc --rpc --rpcapi eth,web3 --rpcport 8545 --rpcaddr localhost --rpccorsdomain "*";
Luego, en otra consola de terminal, inicio el minero y desbloqueo mi cuenta de prueba,
> miner.start(1)
true
> personal.unlockAccount(web3.eth.coinbase)
Unlock account 0xSomeAddress
Passphrase:
true
Mi archivo truffle.js contiene lo siguiente,
module.exports = {
build: {
"index.html": "index.html",
"app.js": [
"javascripts/app.js"
],
"app.css": [
"stylesheets/app.css"
],
"images/": "images/"
},
networks: {
"staging": {
network_id: 1337,
from: "0xAddress" // Unlocked Address
}
},
rpc: {
host: "localhost",
port: 8545
}
};
Finalmente, en otra terminal, ejecuto y compilo la aplicación truffle usando,
truffle compile
truffle migrate --network staging
Obtengo lo siguiente Account locked Error
como a continuación,
Running migration: 1_initial_migration.js
Deploying Migrations...
Migrations: 0xSomeAddress
Saving successful migration to network...
Error encountered, bailing. Network state unknown. Review successful transactions manually.
Error: account is locked
at Object.InvalidResponse (/usr/lib/node_modules/truffle/node_modules/ether-pudding/node_modules/web3/lib/web3/errors.js:35:16)
at /usr/lib/node_modules/truffle/node_modules/ether-pudding/node_modules/web3/lib/web3/requestmanager.js:86:36
at request.onreadystatechange (/usr/lib/node_modules/truffle/node_modules/web3/lib/web3/httpprovider.js:114:13)
at dispatchEvent (/usr/lib/node_modules/truffle/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:591:25)
at setState (/usr/lib/node_modules/truffle/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:610:14)
at IncomingMessage.<anonymous> (/usr/lib/node_modules/truffle/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:447:13)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)
¿Qué parte me estoy perdiendo aquí? ¿Es correcto el proceso que seguí? El mismo código se ejecuta de manera sublime testrpc
pero no en esta cadena de bloques privada, ¿qué parte esencial me estoy perdiendo?
Por favor aconséjame.
¿Es posible que no esté desbloqueado el tiempo suficiente?
web3.personal.unlockAccount(web3.personal.listAccounts[0],"password",15000); // 1st account, pw & time in seconds ...
Estaba teniendo el mismo problema, pero puede intentar verificar el estado de su cuenta por geth
sí mismo, funcionó para mí.
Cuando está sincronizando/actuando en la cadena de bloques, geth
utiliza un archivo para la comunicación entre procesos (IPC). Compruebe cuál es ese archivo en su caso, algo como:
INFO [10-02|17:49:23] IPC endpoint opened: /Users/josealves/Library/Ethereum/testnet/geth.ipc
Luego puede "adjuntar" geth
a esto escribiendo:
geth attach /Users/josealves/Library/Ethereum/testnet/geth.ipc
Entonces tendría un aviso donde puede enviar comandos a la cadena de bloques e interactuar con la sesión actual. Al escribir el personal
comando, puede encontrar el estado actual de su "billetera" de cuentas:
{
listAccounts: ["0xcb7fab56b707a54d17c791de41eaa9a399b3efef", "0x3a05b7c9f420f6b7c5f39ae29deab1352750bf26"],
listWallets: [{
accounts: [{...}],
status: "Locked",
url: (..)
}, {
accounts: [{...}],
status: "Locked",
url: (...)
}],
Allí obtendrá el estado actual de su cuenta, y probablemente ambos estén en el estado "Bloqueado". A continuación, puede desbloquearlos escribiendo:
personal.unlockAccount('0x3a05b7c9f420f6b7c5f39ae29deab1352750bf26')
A continuación, se le pedirá la contraseña de su cuenta y se desbloqueará.
Después estuvo bien migrar.
Aniket
godimedia