So fügen Sie weitere Autoritätsknoten im Private Chain Proof of Authority hinzu

Szenario: Ich betreibe eine private Kette mit einigen Autoritätsknoten. Das gesamte Netzwerk läuft einwandfrei.

  • Frage

    Wie soll ich weitere Autoritätsknoten im Netzwerk hinzufügen? Andere als die in der Genesis-Datei definierten.

  • Versuch 1

    Ich habe die Genesis-Datei aller Knoten im Netzwerk geändert und neu gestartet. Alle sind sich über die neue Autorität einig. Es wurde vom Netzwerk akzeptiert.

  • Problem

    Jetzt füge ich einen neuen Non-Authority-Knoten mit der aktualisierten Genesis-Datei hinzu. Es wird nicht korrekt synchronisiert, stattdessen stoppt es nach einem Fehler bei Block Nr. 2:

    Fehler: Engine(NotProposer(Nicht übereinstimmend {erwartet: 00ad89..., gefunden: 0068... }))

  • Mögliche Lösung

    Ich ändere die Genesis und entferne die eine Autorität, die zuvor hinzugefügt wurde, und versuche, sie zu synchronisieren. Es wird korrekt mit dem Block synchronisiert, in dem die Autorität hinzugefügt wurde. Dann stoppt die Synchronisierung. Dann ändere ich Genesis erneut, um diese Autorität hinzuzufügen, um sie mit dem neuesten Block zu synchronisieren.

Ich bin mir nicht sicher, ob dies der richtige Weg ist, Autoritätsknoten im Netzwerk hinzuzufügen?

Info: Ich verwende die Aura Consensus Engine mit Parität.

Antworten (4)

Das OP gibt an, dass sie Parität verwenden, die ich anfangs übersehen hatte. Aber nur für allgemeine Informationen, hier ist der Prozess für Geth-Benutzer in einem PoA-Netzwerk.

Verwenden

clique.propose('....')

Sie müssen ein Konto für den neuen Knoten mit erstellen

geth --datadir ... new account

Fügen Sie dann clique.propose(..) zu einem Großteil der Knoten hinzu. Versuchen Sie alles, um sicher zu sein.

Am Ende der Frage befindet sich ein Hinweis, der besagt, dass OP verwendetI am running aura consensus engine using parity
Okay, das habe ich übersehen. Soll ich meine Antwort löschen? Ist eine Löschung möglich?
Sie können Ihre Antwort aktualisieren, mit einem Hinweis oben, der besagt, dass For people using geth, you can use...er Benutzern helfen könnte, die hier landen.
OK, ich habe einen kurzen Kommentar zu geth hinzugefügt.

Sie können https://github.com/paritytech/parity-deploy ausprobieren. Durch Ausführen:

$ ./parity-deploy.sh --config aura

Sie sollten in der Ausgabe von docker-compose.yml sehen, welche Konfiguration für eine Proof-of-Authority-Kette erforderlich ist.

Ihre Antwort kann nützlich sein, um eine neue Kette zu betreiben, aber die Frage bezieht sich auf das Hinzufügen von Autoritäten in einer bestehenden Kette.

Ich habe Autoritätsadressen in der Genesis angegeben, also musste ich, um dies zu ändern, meine Kette aufspalten. Und spezifizieren Sie die Blöcke, an denen neue Validatoren/Behörden in Kraft treten würden:

Die alte Genesis sah so aus:

"engine": {
    "authorityRound": {
        "params": {
            "stepDuration": "5",
            "validators": {
                "list": [
                    "0x0.........8c9606a754bb5aa561a9ec6c283695",
                    "0x0.........91ed16e1ede42c6b2e3f5801701e05",
                    "0x0.........0b08407ee70e974009af14b650ab08",
                    "0x0.........0b4c529b06622f944e7f0007568256",
                    "0x0.........c237037bd59a5bf36cc15f097a18a1"
                ]
            },
            "maximumUncleCountTransition": 9000,
            "maximumUncleCount": 0
        }
    }
}

Jetzt möchte ich weitere Adressen zu dieser Liste hinzufügen. In New Genesis kann ich also multiListen verwenden. Es sollte Informationen darüber enthalten, wann neue Validierer in Kraft getreten sind. New Genesis würde so aussehen:

"engine": {
    "authorityRound": {
        "params": {
            "stepDuration": "5",
            "validators": {
                "multi": {
                    "0": {
                        "list": [
                            "0x0.........8c9606a754bb5aa561a9ec6c283695",
                            "0x0.........91ed16e1ede42c6b2e3f5801701e05",
                            "0x0.........0b08407ee70e974009af14b650ab08",
                            "0x0.........3b4c529b06622f944e7f0007568256",
                            "0x0.........c237037bd59a5bf36cc15f097a18a1"
                        ]
                    },
                    "414437": {
                        "list": [
                            "0x0.........8c9606a754bb5aa561a9ec6c283695",
                            "0x0.........91ed16e1ede42c6b2e3f5801701e05",
                            "0x0.........0b08407ee70e974009af14b650ab08",
                            "0x0.........3b4c529b06622f944e7f0007568256",
                            "0x0.........c237037bd59a5bf36cc15f097a18a1",
                            "0x0.........d18c1521383a798b151c2b252ed774"
                        ]
                    },
                    "432727": {
                        "list": [
                            "0x0.........8c9606a754bb5aa561a9ec6c283695",
                            "0x0.........91ed16e1ede42c6b2e3f5801701e05",
                            "0x0.........0b08407ee70e974009af14b650ab08",
                            "0x0.........0b4c529b06622f944e7f0007568256",
                            "0x0.........9237037bd59a5bf36cc15f097a18a1",
                            "0x0.........818c1521383a798b151c2b252ed774",
                            "0x0.........253452bb06ebc3657ce438150aaeb6"
                        ]
                    }
                }
            },
            "maximumUncleCountTransition": 9000,
            "maximumUncleCount": 0
        }
    }
}
wie hast du deine Kette gegabelt? neugierig, da es etwas ist, das ich vielleicht bald tun muss
@Data_Kid schau dir das an wiki.parity.io/…

Mit dem Kovan-Validierungsset müssen Sie diesen Schmerz nicht mehr durchmachen. Sie müssen lediglich einen Vertrag in Ihrem POA-Netzwerk bereitstellen und Validatoren hinzufügen/entfernen, indem Sie mit dem Vertrag interagieren.

Verweise: