调用web3.eth.personal.unlockAccount会引发错误

时间:2018-01-15 17:33:27

标签: javascript blockchain ethereum web3 geth

我在web3 1.0.0-beta.27,我运行了一个私有区块链:     geth --identity“node”--nodiscover --maxpeers 0 --datadir path / to / data --networkid 123 --ws --wsport 8546 --wsorigins“*”console

然后在app.ts文件中我有:

import * as Web3 from 'web3';

var web3   = new Web3(new Web3.providers.WebsocketProvider('ws://localhost:8546'));

web3.eth.getAccounts().then(accounts => {
    var sender = accounts[0];
    web3.eth.personal.unlockAccount(sender, 'password');
});

但我得到错误:

Unhandled rejection Error: Returned error: The method personal_newAccount does not exist/is not available

在线搜索此问题,我应该使用geth启动--rpcapi="db,eth,net,web3,personal,web3"进程,但是添加此标记无效,即使rpc只是ipc的一种personal.unlockAccount(sender, 'password') 对吗?

此外,在geth控制台上,我可以使用

解锁帐户
{{1}}

1 个答案:

答案 0 :(得分:1)

您向self.assertTrue(password.validate("asdfA1qw")) 添加了personal,但是通过WS连接。您需要将其添加到rpcapi

  

rpc只是一种ipc正确吗?

3种连接协议是IPC-RPC,JSON-RPC和WS-RPC。 wsapi配置参数用于JSON-RPC(通过HTTP),而不是IPC / WS。