Synchronisierung mit Mainnet/Ropsten-Blockchain

Wenn Sie den gethBefehl verwenden, beginnt der Knoten standardmäßig mit der Synchronisierung mit dem Ethereum Mainnet. Wenn Sie verwenden geth --testnet --networkid 3 --datadir <testnetdatapath>, stellt der Knoten eine Verbindung zu Ropsten her.

Wie kommt diese Verbindung zustande? Welche Schritte werden zu diesem Zeitpunkt ausgeführt? Mit Blockchain verbinden, Genesis herunterladen, andere Blöcke herunterladen? Wie wird diese Funktionalität erreicht?

Antworten (2)

Für die Synchronisierung spielt es keine Rolle, ob es sich um das Hauptnetz oder ein Testnetz wie Ropsten handelt. So würde der Prozess ungefähr ablaufen:

  1. Ihr Geth-Client sucht nach Peers im Netzwerk. Es verwendet das p2p-Netzwerkprotokoll von ÐΞV, um Peers zu entdecken und sich mit ihnen zu verbinden. Lesen Sie hier mehr , es ist ein Repo von Dokumenten, daher möchten Sie vielleicht relevante Markdown-Dateien lesen. Während der Initialisierung ist das Konzept der Bootnodes praktisch. Lesen Sie hier im Ethereum-Wiki mehr darüber, wie Peers entdeckt werden.

  2. Abhängig von Ihrem Synchronisierungsmodus ruft (und validiert) Ihr Knoten Blöcke von anderen Peers im Netzwerk. Zu diesem Zeitpunkt gibt Ihr eth.syncingParameter true zurück. Wenn die Synchronisierung abgeschlossen ist, bedeutet dies, dass Ihr Knoten mit anderen Knoten im Netzwerk auf dem neuesten Stand ist und Sie technisch über den neuesten Stand der Ethereum Virtual Machine informiert sind und Sie sogar die neuen Transaktionen abbauen oder einfach nur validieren können ihnen.

  3. Ab dem Start läuft auf dem Geth-Knoten auch der JSON-RPC-Server .

  4. Sobald die Synchronisierung abgeschlossen ist, ist Ihr Knoten zusätzlich in der Lage, Übertragungen neuer Transaktionen im Netzwerk zu senden und/oder zu hören.

AKTUALISIEREN:

Ich habe vergessen, Punkt 0 zu erwähnen, den @Ishmael in seiner Antwort erwähnt hat, dass der Genesis-Block im Quellcode selbst „fest codiert“ ist.

Geth hat in ihrem Quellcode die Genesis-Blöcke und die Bootnodes der Netzwerke, die sie unterstützen: Mainnet, Rinkeby, Ropsten usw.

Zu Beginn verbindet sich Geth mit Bootnodes und fordert neue Peers an. Sobald es mit neuen Peers verbunden ist, beginnt es mit dem Herunterladen von Blöcken und überprüft, ob sie vom Genesis-Block im Quellcode abstammen.