jsonrpc eth_accounts no devuelve cuentas

Tengo un nodo geth en ejecución y al usar geth account newel comando creé una nueva cuenta:

$ geth account list

Cuenta #0: {47978a69f410d0f...} ...

Sin embargo, cuando uso la llamada json rpc para enumerar mis cuentas ether, se obtiene un resultado nulo:

$ curl -X POST --data

'{"jsonrpc":"2.0","método":"eth_accounts","params":[],"id":1}' http://127.0.0.1:8545

{"jsonrpc":"2.0","id":1,"resultado":[]}

¿Porqué es eso? ¿Alguna pista? ¡Gracias por adelantado!

Lancé geth con el siguiente comando:

$geth --rpc --rpcapi "db,eth,net,web3" --rpcport "8545" --testnet 
--etherbase "0x47978a6...."

¿Es posible que geth trabajando en testnet se confunda en las llamadas json rpc? ¿Debo especificar de alguna manera en estas llamadas para usar testnet y no mainnet?

Pruebe id:0o elimine idel parámetro.
Mismo resultado y error...:$ 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"}}´
¿Qué es id por cierto? ¿La identificación de qué?
eth.accounts[]es el índice de las billeteras que está consultando, en su caso 0, el coinbase.

Respuestas (3)

No necesita usar el paramscampo en su llamada. Al hacer esto, está ejecutando este comando: eth.accounts[]que devuelve un valor nulo. Si desea obtener una lista de todas las cuentas, debe ejecutar eth.accounts. Entonces, su comando RPC debería ser:

curl -X POST -d '{"method":"eth_accounts","id":1}' 127.0.0.1:8545

PD: Supongo que ya habilitó RPC en el puerto 8545. A través de la consola, puede usar admin.startRPC()para iniciar RPC.

Gracias por la simplificación, pero desafortunadamente, el mismo resultado: {"jsonrpc":"2.0","id":1,"result":[]}
¿Comprobaste con otros comandos?
Sí, responde correctamente a otros comandos: $ curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64 }' localhost:8545 {"jsonrpc":"2.0","id":64,"resultado":"0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"}
Tal vez el problema esté relacionado con geth usando testnet y json rpc usando mainnet... ¿es eso posible?

Habilite la API web3 RPC al iniciar geth :

geth --rpc --rpcapi "web3" --rpcport "8545"

o si desea que se ejecuten todas las API:

geth --rpc --rpcapi "db,eth,net,web3" --rpcport "8545"
Lo acabo de hacer, pero exactamente el mismo resultado, la lista de cuentas geth muestra la cuenta pero jsonrpc no :-(
El problema no es que la API no responda, sino que responde con un resultado nulo. De hecho, responde correctamente a otros comandos como: $ curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id ":64}' localhost:8545 {"jsonrpc":"2.0","id":64,"resultado":"0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"}
Es probable que no esté enviando el objeto JSON correcto. Use web3 y llame a la misma función: github.com/ethereum/wiki/wiki/JavaScript-API#web3ethaccounts ya que los parámetros curl son correctos (como se sugiere en la documentación).

Definitivamente, el problema está relacionado con el nodo que se ejecuta en testnet y la cuenta que es válida solo en mainnet.

Creé una nueva cuenta en testnet y la consulta json-rpc funcionó perfectamente:

$geth --lista de cuentas de testnet

$geth --testnet cuenta nueva Dirección: {3b877e80b5c0...}

$geth --testnet cuenta lista Cuenta #0: {3b877e80b5c0...

$ curl -X POST -d '{"método":"eth_accounts","id":0}' 127.0.0.1:8545 {"jsonrpc":"2.0","id":0,"resultado":[" 0x3b877e80...

¡Gracias por tu ayuda!

En la publicación original, la creación de la cuenta no tiene una opción de línea de comando --testnet, así que tal vez ese sea el caso. ¿El OP trató de encontrar la cuenta en la red principal?