Вызов web3.eth.personal.unlockAccount вызывает ошибку

Я использую 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

В поисках этой проблемы в Интернете мне следовало начать geth процесс с --rpcapi="db,eth,net,web3,personal,web3", однако добавление этого флага не помогает, хотя rpc - это просто своего рода ipc правильно?

Кроме того, на консоли geth я могу разблокировать учетную запись с помощью

personal.unlockAccount(sender, 'password')

person xiaolingxiao    schedule 15.01.2018    source источник


Ответы (1)


Вы добавили personal в rpcapi, но подключаетесь через WS. Вам нужно добавить его в wsapi.

rpc это просто вид ipc правильный?

Три протокола подключения: IPC-RPC, JSON-RPC и WS-RPC. Параметры конфигурации rpc* предназначены для JSON-RPC (через HTTP), а не для IPC / WS.

person Adam Kipnis    schedule 15.01.2018