Wie fügt man Geth an einen lokalen Paritäts-RPC-Port 8545 an?

Ich arbeite paritymit dem --jsonrpcFlag, das standardmäßig auf dem Port lauscht 8545.

Ich versuche, eine gethInstanz anzuhängen, wie in den Dokumenten beschrieben :

Hängen Sie eine Konsole an eine laufende Geth-Instanz an. Standardmäßig geschieht dies über IPC auf dem Standard-IPC-Endpunkt, aber bei Bedarf kann ein benutzerdefinierter Endpunkt angegeben werden:

geth attach                   # connect over IPC on default endpoint
geth attach ipc:/some/path    # connect over IPC on custom endpoint
geth attach http://host:8545  # connect over HTTP
geth attach ws://host:8546    # connect over websocket

Aber ich bekomme einen fatalen Fehler:

Fatal: Unable to attach to geth node - Invalid endpoint

Dies sind meine getesteten Befehle:

 ~ $ geth attach http://127.0.0.1:8545
Fatal: Unable to attach to geth node - Invalid endpoint
 ~ $ geth attach http://localhost:8545
Fatal: Unable to attach to geth node - Invalid endpoint
 ~ $ geth attach ws://localhost:8545
Fatal: Unable to attach to geth node - Invalid endpoint

Wie hängt man Geth an einen lokalen RPC auf Port 8545 an?

Antworten (3)

#Über Geth:

Wenn Sie Ihren Parity-Knoten ausführen, verwenden Sie das --gethFlag, z. B. parity --geth.

Gehen Sie dann in ein anderes Fenster und führen Sie geth attach.

Die Ausgabe davon ist:

Welcome to the Geth JavaScript console!
>

Das Tolle an Parity ist, dass Sie sich keine Gedanken über das Aktivieren von JSON-RPC machen müssen, da es standardmäßig aktiviert ist.

#Über Knoten:

Ein anderer Ansatz ist die Verwendung der NodeJS-Web3-Bibliothek, die dieselbe Funktionalität bietet. Vom Paritäts-Schnellstart :

npm install web3
node # Enter REPL
Web3 = require("web3");
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

Jetzt können Sie mit Parity genauso interagieren wie mit der Javascript-Konsole:

web3.eth.getBlockNumber().then(blockNumber => console.log(blockNumber)) // Regular Geth command, except connected to Parity
743397
Schön, --gethhat geklappt.
für web3 1.0.0 : web3.eth.isSyncing().then(console.log)
Die meisten web3-Befehle geben Promises zurück: also print callback res

Die kürzlich veröffentlichte Version 1.1 von Parity unterstützt die modules/rpc_modulesRPC-Methode und ermöglicht geth attach <rpcaddress>dies (geth 1.3.6 und 1.4.0 werden unterstützt).

Veröffentlichungsdetails: https://blog.ethcore.io/announcing-parity-1-1/

Beispiele:

Get 1.3.6

$ geth attach rpc://localhost

Get 1.4.0

$ geth attach http://localhost:8545

Brummen, fatal: Verbindung zum Geth-Knoten nicht möglich - wählen Sie Unix /home/user/.ethereum/geth.ipc: connect: Verbindung abgelehnt. Scheint noch nicht fertig zu sein.
Sie müssen den HTTP-RPC-Endpunkt angeben: geth attach rpc://localhost1.3.6 oder geth attach http://localhost:85451.4.0
Fühlen Sie sich frei, die Schaltfläche Bearbeiten zu verwenden, um Ihre Antwort zu verbessern.

Zusammenfassung

Ich glaube nicht, dass Sie geth attach(Version 1.3.6) eine Verbindung zu parity(Version Parity/v1.0.2-beta/x86_64-linux-gnu/rustc1.7.0) herstellen können.



Einzelheiten

geth attachIch habe die Verwendung von "to connect to " getestet parity --rpcund folgende Meldung erhalten

Fatal: Unable to initialize console - Unable to parse module response - <nil>

Also habe ich eine Ablaufverfolgung mit tcpdumpund die Ergebnisse folgen.

Angefangen habe ich paritymit folgenden Optionen:

parity --datadir datadir --rpc --rpcapi "web3,eth,net,personal"  --rpccorsdomain "*"

Ich begann tcpdumpmit dem folgenden Befehl (dh Dump-Daten im ASCII-Format auf der Schnittstelle lo(127.0.0.1) und Port 8545):

sudo tcpdump -A -i lo port 8545

Ich begann gethmit dem folgenden Befehl:

geth attach rpc:http://127.0.0.1:8545

Und hier sind die Ergebnisse von tcpdump(aufgeräumt):

IP localhost.38186 > localhost.8545
POST / HTTP/1.1
Host: 127.0.0.1:8545
User-Agent: Go-http-client/1.1
Content-Length: 57
Content-Type: application/json
Accept-Encoding: gzip

{"id":1,"jsonrpc":"2.0","method":"modules","params":null}

localhost.8545 > localhost.38186
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Date: Tue, 26 Apr 2016 09:51:20 GMT
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=utf-8
Access-Control-Allow-Headers: origin, content-type, accept
Allow: OPTIONS, POST

{"jsonrpc":"2.0","error":{"code":-32601,"message":"Method not found","data":null},"id":1}

gethfragt paritynach den Unterstützungsmodulen, versteht aber den Befehl paritymodulesgeth “ nicht, gibt also auf.

Ich habe versucht, ein paar verschiedene Optionen zu verwenden, aber die Ergebnisse sind ähnlich.

Ich habe den Quellcode nachverfolgt gethund festgestellt, dass cmd/geth/js.goes eine welcome()Methode gibt, die von der verbundenen RPC-Instanz anfordert, welche Module unterstützt werden. Dies ist, was Sie normalerweise sehen würden, wenn Sie eine Verbindung herstellen geth attachzu geth --rpc:

    modules: db:1.0 eth:1.0 net:1.0 web3:1.0

Aber parityscheint diese JSON-RPC-Methode nicht zu unterstützen.