jsonrpc eth_accounts gibt keine Konten zurück

Ich habe einen laufenden Geth-Knoten und mit dem geth account newBefehl habe ich ein neues Konto erstellt:

$ geth account list

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

Wenn Sie jedoch den json-RPC-Aufruf verwenden, um meine Ether-Konten aufzulisten, wird ein Nullergebnis erhalten:

$ curl -X POST --data

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

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

Warum ist das so? Irgendein Hinweis? Danke im Voraus!

Geth habe ich mit folgendem Befehl gestartet:

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

Ist es möglich, dass Geth, das an Testnet arbeitet, bei JSON-RPC-Aufrufen verwirrt wird? Muss ich in diesen Aufrufen irgendwie angeben, dass Testnet und nicht Mainnet verwendet werden soll?

Versuchen Sie es id:0oder entfernen idSie param.
Gleiches Ergebnis und Fehler...:$ 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"}}´
Was ist übrigens id? Die ID von was?
eth.accounts[]ist der Index der Wallets, die Sie abfragen, in Ihrem Fall 0die Coinbase.

Antworten (3)

Sie müssen das paramsFeld in Ihrem Aufruf nicht verwenden. Dadurch führen Sie diesen Befehl aus: eth.accounts[]der einen Nullwert zurückgibt. Wenn Sie eine Liste aller Konten erhalten möchten, sollten Sie ausführen eth.accounts. Ihr RPC-Befehl sollte also lauten:

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

PS: Ich gehe davon aus, dass Sie RPC bereits auf Port 8545 aktiviert haben. Über die Konsole können Sie admin.startRPC()RPC starten.

Danke für die Vereinfachung, aber leider gleiches Ergebnis: {"jsonrpc":"2.0","id":1,"result":[]}
Hast du es mit anderen Befehlen überprüft?
Ja, es reagiert korrekt auf andere Befehle: $ curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64 }' localhost:8545 {"jsonrpc":"2.0","id":64,"result":"0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"}
Vielleicht hängt das Problem damit zusammen, dass Geth Testnet und Json RPC mit Mainnet verwendet ... ist das möglich?

Aktivieren Sie die web3- RPC-API, wenn Sie geth starten :

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

oder wenn Sie möchten, dass alle APIs ausgeführt werden:

geth --rpc --rpcapi "db,eth,net,web3" --rpcport "8545"
Ich habe es gerade getan, aber genau das gleiche Ergebnis, die Geth-Kontoliste zeigt das Konto an, aber jsonrpc nicht :-(
Das Problem ist nicht, dass die API nicht reagiert, sondern ein Nullergebnis antwortet. Tatsächlich reagiert es korrekt auf andere Befehle wie: $ curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id ":64}' localhost:8545 {"jsonrpc":"2.0","id":64,"result":"0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"}
Wahrscheinlich senden Sie nicht das richtige JSON-Objekt. Verwenden Sie web3 und rufen Sie dieselbe Funktion auf: github.com/ethereum/wiki/wiki/JavaScript-API#web3ethaccounts , da die Curl-Parameter korrekt sind (wie in der Dokumentation vorgeschlagen).

Das Problem hängt definitiv damit zusammen, dass der Knoten im Testnetz läuft und das Konto nur im Hauptnetz gültig ist.

Ich habe ein neues Konto im Testnet erstellt und die json-rpc-Abfrage hat perfekt funktioniert:

$geth --testnet Kontoliste

$geth --testnet Konto neue Adresse: {3b877e80b5c0...}

$geth --testnet account list Konto #0: {3b877e80b5c0...

$ curl -X POST -d '{"method":"eth_accounts","id":0}' 127.0.0.1:8545 {"jsonrpc":"2.0","id":0,"result":[" 0x3b877e80...

Danke für Ihre Hilfe!

Im ursprünglichen Beitrag hat die Erstellung des Kontos keine --testnet-Befehlszeilenoption, also ist das vielleicht der Fall. Hat das OP versucht, das Konto im Mainnet zu finden?