Go-Ethereum

帳戶已鎖定。如何使用 json-rpc 解鎖它?

  • October 27, 2016

當嘗試使用 geth 節點(版本 1.4.10-stable-5f55d95a,在 testnet 上執行)上通過 json-rpc 介面發送事務時,eth_sendTransaction我收到以下錯誤消息:

-32000

$$ message $$=> 帳戶被鎖定

我嘗試使用以下命令解鎖帳戶:

geth --testnet --exec "personal.unlockAccount(eth.accounts[0], password, 3600)" attach true http://localhost:8545

但我得到另一個錯誤:

致命:無法附加到遠端 geth:無效端點

嘗試按照如何使用 geth 解鎖帳戶中的說明進行解鎖?

geth --testnet --unlock 0x3b877e80b... --password password

也會拋出這個錯誤:

致命:無法打開數據庫:資源暫時不可用

根據之前的 URL 解鎖帳戶的另一個選項是使用 Geth 互動式 Javascript 控制台。但是如何啟動這樣的控制台?

我看到有人在程式碼 -32000 消息上遇到同樣的問題:帳戶已鎖定,但任何此類命令

geth --unlock

不在我的 geth 節點上工作。

無論如何都可以通過json-rpc介面直接解鎖帳戶嗎?

為什麼 geth 不允許我解鎖我的乙太坊帳戶?為什麼是“無效端點”?

  1. 命令attach應該是這樣的:
$ geth --testnet --exec "personal.unlockAccount(eth.accounts[0], \"password\", 3600)" 附加 http://localhost:8545

確保您已包含personal在您--rpcapi "eth,web3,personal"啟動的第一個 Geth 中。

  1. 命令 withunlock應該用作第一次Geth 啟動的一部分:
  • 擁有一個password.txt包含與要解鎖的帳戶一樣多的行的文件。每行有password沒有".
  • 然後添加--unlock "0x3b877e80b..." --password password.txt到您的 Geth 命令行。
  1. 除此之外,要使用控制台啟動 Geth,只需console在最後添加。因此,當您在 Geth 控制台中時,您可以鍵入:
> 個人.unlockAccount(eth.accounts[0])
// 或者
> 個人.unlockAccount(eth.accounts[0], "密碼")
// 或者
> 個人.unlockAccount(eth.accounts[0], "密碼", 3600)

編輯:

風險自負,因為呼叫中包含明文密碼,通過 RPC 直接呼叫解鎖是:

$ curl -X POST --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["0x7642b...", "password", 3600],"id":67 }' http://localhost:8545
{"jsonrpc":"2.0","id":67,"result":true}

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