调用 web3.eth.personal.unlockAccount 会抛出错误
Posted
技术标签:
【中文标题】调用 web3.eth.personal.unlockAccount 会抛出错误【英文标题】:Calling web3.eth.personal.unlockAccount throws error 【发布时间】:2018-06-24 09:09:00 【问题描述】:我在web3 1.0.0-beta.27
,我运行了一个私有区块链:
geth --identity "node" --nodiscover --maxpeers 0 --datadir path/to/data --networkid 123 --ws --wsport 8546 --wsorigins "*" 控制台
然后在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
在网上搜索这个问题,我应该用--rpcapi="db,eth,net,web3,personal,web3"
启动geth
进程,但是添加这个标志并没有帮助,即使rpc
只是ipc
的一种,对吗?
此外,在 geth 控制台上,我可以使用以下方式解锁帐户
personal.unlockAccount(sender, 'password')
【问题讨论】:
【参考方案1】:您已将 personal
添加到 rpcapi
,但正在通过 WS 进行连接。您需要将其添加到wsapi
。
rpc 只是一种 ipc 对吗?
三种连接协议是 IPC-RPC、JSON-RPC 和 WS-RPC。 rpc*
配置参数用于 JSON-RPC(通过 HTTP),而不是 IPC/WS。
【讨论】:
以上是关于调用 web3.eth.personal.unlockAccount 会抛出错误的主要内容,如果未能解决你的问题,请参考以下文章