У меня есть работающий узел geth, и с помощью geth account new
команды я создал новую учетную запись:
$ geth account list
Аккаунт №0: {47978a69f410d0f...} ...
Тем не менее, при использовании вызова json rpc для вывода списка моих эфирных счетов получается нулевой результат:
$ curl -X POST --data
'{"jsonrpc":"2.0","метод":"eth_accounts","params":[],"id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","id":1,"результат":[]}
Это почему? Любой намек? Заранее спасибо!
Я запустил geth следующей командой:
$geth --rpc --rpcapi "db,eth,net,web3" --rpcport "8545" --testnet
--etherbase "0x47978a6...."
Возможно ли, что geth, работающий в тестовой сети, запутается в вызовах json rpc? Нужно ли мне как-то указывать в этих вызовах, чтобы использовать тестовую сеть, а не основную сеть?
Вам не нужно использовать params
поле в вашем вызове. Делая это, вы выполняете эту команду: eth.accounts[]
которая возвращает нулевое значение. Если вы хотите получить список всех учетных записей, вы должны выполнить eth.accounts
. Итак, ваша команда RPC должна быть:
curl -X POST -d '{"method":"eth_accounts","id":1}' 127.0.0.1:8545
PS: Я предполагаю, что вы уже включили RPC на порту 8545. Через консоль вы можете admin.startRPC()
запустить RPC.
Включите API web3 RPC при запуске geth :
geth --rpc --rpcapi "web3" --rpcport "8545"
или если вы хотите, чтобы все API запускались:
geth --rpc --rpcapi "db,eth,net,web3" --rpcport "8545"
Определенно проблема связана с тем, что узел работает в тестовой сети, а учетная запись действительна только в основной сети.
Я создал новую учетную запись в тестовой сети, и запрос json-rpc работал отлично:
$get --список учетных записей testnet
$geth --testnet новый адрес учетной записи: {3b877e80b5c0...}
$geth --testnet список учетных записей Учетная запись №0: {3b877e80b5c0...
$ curl -X POST -d '{"метод":"eth_accounts","id":0}' 127.0.0.1:8545 {"jsonrpc":"2.0","id":0,"результат":[" 0x3b877e80...
Спасибо за вашу помощь!
никсмак
id:0
или удалитеid
параметр.Хуан Игнасио Перес Сакристан
$ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":0}' http://127.0.0.1:8545 {"jsonrpc":"2.0","id":0,"result":[]}
$ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[]}' http://127.0.0.1:8545 {"jsonrpc":"2.0","error":{"code":-32700,"message":"missing request id"}}´
Хуан Игнасио Перес Сакристан
никсмак
eth.accounts[]
— это индекс кошельков, которые вы запрашиваете, в вашем случае0
это coinbase.