Warum hat mein Ethereum-Knoten keine Peers?

Ich betreibe einen Ethereum-Knoten mit Geth und er kann keine Peers finden. Ich habe bereits den im Wiki vorgeschlagenen Zeitsynchronisierungsbefehl ausprobiert . Meine Bandbreite ist gut.

Ich erhalte peerCount als Null, selbst nachdem ich dieses admin.addPeer ("enode:ip:portnumb") ausprobiert habe. Dies gibt wahr, wenn ich es in der cmd-Eingabeaufforderung ausgeführt habe, aber net.peerCount ist 0 > admin.addPeer ("enode@169.254. 102.232:30340?discport=0") true > web3.net.peerCount 0 > net.peerCount 0 >

Antworten (3)

Verwendet standardmäßig gethPort 30303 für die Verbindung zu anderen Knoten. Möglicherweise müssen Sie Ihre Firewall ändern, um Datenverkehr über diesen Port zuzulassen.

Sie können die Anzahl Ihrer Peers überprüfen und eine Liste der Peers abrufen, wenn Sie mit der Javascript-Konsole verbunden sind ( geth attach).

instance: Geth/v1.3.2/darwin/go1.5.1
datadir: /Users/home/Library/Ethereum
coinbase: 0xd3cda913deb6f67967b99d67acdfa1712c293601
at block: 864339 (Sun, 17 Jan 2016 16:00:07 MST)
modules: admin:1.0 db:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 shh:1.0 txpool:1.0 web3:1.0
> net.peerCount
5
> admin.peers
[{
    caps: ["eth/61", "eth/62"],
    id: "03743aa20db17dc12d2e355f32b75964653408eaab2c6e0fad7b2600fef49b3c2ec938d436fc48e86582d732d8eb64935edddee7d5c9caf726261add05cf46fe",
    name: "Geth/v1.2.2/linux/go1.5",
    network: {
      localAddress: "10.0.1.48:30303",
      remoteAddress: "87.106.88.35:35646"
    },
    protocols: {
      eth: {
        difficulty: 2283869820384174300,
        head: "d0d57a2f8fea1c834ce277d031727fecc1baf617b69e4d169f87f7e2d56f04c6",
        version: 62
      }
    },
    ...
]

Wenn Sie einen gesunden Geth-Knoten haben, der woanders läuft, können Sie versuchen, Ihre Peer-Verbindung mit der admin.addPeerFunktion zu booten. Die Funktion sollte mit einer Enode - Adresse im Format aufgerufen werden, in dem admin.addPeer("enode://<id>@<ip_address>:<port>")die Werte ip_addressund portaus dem remoteAddressTeil der Peer-Informationen stammen und idder große lange Hex-String unter dem idSchlüssel für die Peer-Informationen ist. Für den obigen Peer wäre dies:

 admin.addPeer("enode://03743aa20db17dc12d2e355f32b75964653408eaab2c6e0fad7b2600fef49b3c2ec938d436fc48e86582d732d8eb64935edddee7d5c9caf726261add05cf46fe@87.106.88.35:35646")

Dies kann nützlich sein, wenn Sie irgendwie die Verbindung zu all Ihren Peers durch einen nicht netzwerkbasierten Mechanismus verlieren. Das Fehlen von Peers ist jedoch wahrscheinlich ein Netzwerkproblem, und das manuelle Hinzufügen von Peers wird möglicherweise bestenfalls als Notlösung dienen.

Ich habe auch bemerkt, dass ein originaler Raspberry Pi Probleme hat. Ich vermute, weil es so langsam ist, dass es nicht rechtzeitig reagiert und andere Peers nicht damit synchronisieren möchten.

Gut, dass Sie die Zeit überprüft haben, aber der häufigste Grund dafür, dass Peers nicht gefunden werden, ist die Firewall- und Netzwerkkonfiguration. Wenn eine Firewall ausgeführt wird, versuchen Sie, sie zu deaktivieren.

Ich verwende dieses Skript, wenn sich mein Knoten seltsam verhält ... offensichtlich müssen Sie es an Ihre Situation anpassen ...

#!/usr/bin/env bash
trap "exit" INT

LOCALIP=(192.168.10.11)   (put your machines IP here)

IP=$(dig +short myip.opendns.com @resolver1.opendns.com)

echo "Local IP: $LOCALIP"
echo "Public IP: $IP"

echo "Starting eth"
eth --bootstrap --peers 50 --remote 52.16.188.185:30303 --mining off  --public-ip $IP --listen-ip $LOCALIP -- listen 30303

Warnung – dies ist nichts, was Sie als Standard verwenden sollten. Es wird die Internetbandbreite wie verrückt verbrauchen.