Ich versuche ein privates Ethereum-Netzwerk einzurichten. Ich habe zwei Knoten in derselben Maschine (Windows 7) an zwei verschiedenen Ports gestartet.
Ich kann keinen Knoten als Peer des anderen Knotens hinzufügen. Was ich bisher gemacht habe, ist das.
Starten Sie zwei Knoten mit derselben Netzwerk-ID, verschiedenen Datenverzeichnisse und verschiedenen Ports.
Finde die Knotenadresse eines Knotens.
%Vor%Fügen Sie den Knoten dem anderen Partner hinzu.
%Vor%Aber wenn ich Peer-Informationen des zweiten Peers überprüfe, zeigt es, dass es keine Peers hat.
%Vor% Außerdem habe ich versucht, den ersten Peer als statischen Peer für den zweiten Knoten hinzuzufügen, indem ich die Knotenadresse zu data/static-nodes.json
hinzufüge, aber immer noch admin.peers
eine leere Liste zurückgibt.
Weiß jemand, wie man das repariert?
Es gibt viele Gründe, die verhindern könnten, dass die Knoten synchronisiert werden.
Einer der häufigsten, aber schwer zu findenden Gründe ist, dass die Systemuhren der Geräte nicht synchronisiert werden. Die Knoten werden nicht synchronisiert, auch wenn die Uhren sich nur um 12 Sekunden unterscheiden.
Von Ссылка :
Die Schwierigkeit passt sich dynamisch an, so dass durchschnittlich alle 12 Sekunden ein Block vom gesamten Netzwerk erzeugt wird (dh 12 s Blockzeit). Dieser Heartbeat unterbricht im Grunde die Synchronisation des Systemzustands und garantiert, dass das Beibehalten eines Forks (um Doppelausgaben zu ermöglichen) oder das Neuschreiben von Historien unmöglich ist, es sei denn, der Angreifer besitzt mehr als die Hälfte der Network Mining Power (sog. 51% Attacke).
Das Problem könnte gelöst werden, indem auf allen Geräten derselbe NTP-Server (vorzugsweise geografisch nahe am Netzwerk) verwendet wird.
Wenn Sie die Option --networkid 12345
in der Befehlszeile verwenden, wird die Netzwerk-ID des Netzwerks auf 12345
festgelegt. Stellen Sie sicher, dass die Einstellungen unter allen Knoten identisch sind und dass der Wert eine zufällige positive vorzeichenlose 32-Bit-Zahl ist (z. B. 1 ~ 2147483647). Verwenden Sie nicht 12345
, da möglicherweise zu viele Personen damit arbeiten.
Ethereum verwendet standardmäßig TCP und UDP-Ports 30303
, um miteinander zu kommunizieren. Bitte stellen Sie sicher, dass sowohl 30303/TCP
als auch 30303/UDP
nicht von der Firewall auf dem Gerät blockiert werden.
Eine weitere Option, die in der vorherigen Antwort fehlt, ist hier genesis.json: Sie sollte auf allen Knoten gleich sein.
Es gibt ein paar Probleme, die es verursachen könnten, wie in den anderen Antworten erwähnt. Es könnte sein, dass Sie nur einen Port konfigurieren und nicht beide. Sie müssen sowohl den Port als auch den rpcport festlegen. Der Ipc-Pfad muss entweder aktiviert oder deaktiviert werden, ebenso wie --ipcpath oder --ipcdisable.
Das Problem liegt wahrscheinlich in der Art und Weise, wie Sie die Knoten initialisiert haben, was meine Erfahrung ist.
Stellen Sie darüber hinaus sicher, dass Sie denselben Genesis-Block von beiden verwenden, der so aussehen sollte
%Vor%}
Sie können auch Ihren UDP-Port wie unten gezeigt mit Discport angeben und das Argument --bootnodes verwenden. Die Anweisungen für Bootknoten befinden sich in den beiden folgenden Ressourcen, die ich verlinkt habe.
%Vor%Dies sind zwei Durchgänge, die Sie für Ihre Initialisierung vergleichen können.
Tags und Links ethereum