Go-Ethereum

Truffle Migrations Account Locked Error with –network 命令

  • October 2, 2017

我已經使用命令啟動了一個私有區塊鏈,

geth --networkid 1337 --datadir ~/home/xyz/testnet --ipcpath /home/xyz/.ethereum/geth.ipc --rpc --rpcapi eth,web3 --rpcport 8545 --rpcaddr localhost --rpccorsdomain "*";

接下來,在另一個終端控制台中,我啟動礦機並解鎖我的測試帳戶,

> miner.start(1)
true


> personal.unlockAccount(web3.eth.coinbase)
 Unlock account 0xSomeAddress
 Passphrase: 
 true

我的 truffle.js 文件包含以下內容,

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
}
};

最後,在另一個終端中,我使用以下命令執行和編譯 truffle 應用程序,

truffle compile
truffle migrate --network staging

我得到如下Account locked Error如下所示,

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)

我在這裡錯過了哪一部分?我遵循的過程是否正確?相同的程式碼可以在這個私有區塊鏈上執行,testrpc但不能在這個私有區塊鏈上執行,我缺少什麼重要的部分?

請指教。

可能是解鎖時間不夠長?

web3.personal.unlockAccount(web3.personal.listAccounts[0],"password",15000); // 1st account, pw & time in seconds ...

我遇到了同樣的問題,但您可以嘗試使用geth自己檢查您的帳戶狀態,它對我有用。

當您在區塊鏈上同步/操作時,geth使用一個文件進行程序間通信 (IPC)。檢查您的案例中的該文件是什麼,例如:

INFO [10-02|17:49:23] IPC endpoint opened: /Users/josealves/Library/Ethereum/testnet/geth.ipc

然後,您可以通過鍵入以下內容“附加”geth到此:

geth attach /Users/josealves/Library/Ethereum/testnet/geth.ipc

然後,您將看到一個提示,您可以在其中向區塊鏈發送命令並與目前會話進行互動。通過鍵入personal命令,您可以找到帳戶“錢包”的目前狀態:

{
 listAccounts: ["0xcb7fab56b707a54d17c791de41eaa9a399b3efef", "0x3a05b7c9f420f6b7c5f39ae29deab1352750bf26"],
 listWallets: [{
     accounts: [{...}],
     status: "Locked",
     url: (..)
 }, {
     accounts: [{...}],
     status: "Locked",
     url: (...)
 }],

在那裡,您將獲得您帳戶的目前狀態,並且可能它們都處於“鎖定”狀態。然後,您可以通過鍵入以下內容來解鎖它們:

personal.unlockAccount('0x3a05b7c9f420f6b7c5f39ae29deab1352750bf26')

然後您將被要求輸入您的帳戶密碼,並且該密碼將被解鎖。

之後就可以遷移了。

引用自:https://ethereum.stackexchange.com/questions/10160