Ethereum POA (Proof of Authority) für private Netzwerke

Ich versuche, mit POA ein privates Netzwerk in Ethereum einzurichten, aber ich kann das nicht. unten Fehler bekommenPOA-FEHLER

Ich habe versucht, die Genesis-Datei mit dem Puppeth-Manager einzurichten. Die Genesis-Datei ist so eingerichtet, dass sie Clique als Algo verwendet. Ausschnitt der Genesis-Datei genesis.jsonverstehe ich aus dem Fehler, dass es mit der Versiegelung/Versiegelung des Blocks zusammenhängt. Aber wie definiert man die Konten, die für die Versiegelung verwendet werden können? Alle Hinweise in die richtige Richtung wären hilfreich

Antworten (3)

Haben Sie vor dem Erstellen der Genesis-Datei irgendwelche Versiegelungskonten erstellt?

Wenn nicht, erstellen Sie zuerst mindestens ein Sealer-Konto, indem Sie Folgendes ausführen:

geth account new --datadir /path/to/your/custom/datadir

Notieren Sie sich die dadurch generierte Adresse, und wenn Sie Puppeth ausführen, können Sie diese Adresse während des Genesis-Erstellungsprozesses zur vordefinierten Liste der Sealer-Konten hinzufügen.

Sobald dies erledigt ist, können Sie geth mit der neuen Datei genesis.json initialisieren:

geth --datadir /path/to/your/custom/datadir init genesis.json

Sobald Sie betriebsbereit sind, müssen Sie dieses Konto entsperren:

personal.unlockAccount(eth.accounts[0], "<password>", 0)

(Hinweis „0“ oben hält das Konto dauerhaft entsperrt, oder Sie können ein Zeitintervall in Sekunden angeben.)

Geben Sie dann Folgendes in die Konsole ein, um das Mining auf einem einzelnen Kern zu starten:

miner.start(1)

und Sie sollten Block Sealing bald als Beweis für erfolgreiches Mining sehen.

Entsperren Sie einfach Ihr Konto mit

personal.unlockAccount(eth.accounts[0], "Passwort", 86400)

Hinweis: Der letzte Parameter ist die Zeit, um das Konto in Sekunden entsperrt zu lassen.

Beginnen Sie dann mit dem Mining

Bergmann.start();

nein das ist nicht das problem das konto ist schon entsperrt
Wenn Sie puppeth zum Erstellen von Genesis.json verwendet haben, stellen Sie sicher, dass das Konto, das Sie als Sealer autorisiert haben, dasselbe ist wie das Konto, das Sie entsperrt haben. Versuchen Sie, es in einem neuen Datenverzeichnis anzugeben, und prüfen Sie, ob sich dadurch etwas ändert
Zu Ihrer Information, wenn Sie diesen letzten Parameter auf Null setzen, bleibt er entsperrt, bis Sie die Konsole schließen.

Schritte, um einen Miner-Knoten in Ihrer PoA-Blockchain zu erhalten:

  • Konto erstellen: geth --datadir=. Konto neu
  • Erstellen Sie Genesis JSON mit Puppeth
  • Genesis json ändern. Legen Sie die Sealer im Feld extraData in genesis.json fest:
    • 0x00... (64 Nullen) am Anfang
    • Konto (ohne 0x) (alle Konten, die Sie als Sealer festlegen möchten, stecken)
    • 00.. (130 Nullen) am Ende
  • Führen Sie den Knoten aus und entsperren Sie dieses Konto, --unlock=(Konto). Verwenden Sie auch den Parameter --mine