Wäre es möglich, das von den Bitcoin-Clients verwendete p2p-Protokoll ohne Hard-Fork zu ändern?

Ich habe mir https://en.bitcoin.it/wiki/Protocol_documentation angesehen, wo das p2p-Protokoll dokumentiert ist. Obwohl es Unvollständigkeit angibt, dachte ich, es ist ein guter Ausgangspunkt, um das Protokoll zu verstehen. Nach meinem anfänglichen Verständnis basiert das Protokoll auf C-Strukturen, die direkt über die Leitung gesendet werden. Dies macht Implementierungen in anderen Sprachen komplexer.

Wäre es möglich, ein neues Protokoll basierend auf einer bekannten Kommunikationsmethode (z. B. JSON) einzuführen und einen reibungslosen Übergang zwischen den Protokollen zu ermöglichen? Zum Beispiel bei Bridge-Knoten, die in einer Übergangszeit zwei Protokolle nutzen?

Ich habe eine Implementierung des Protokolls in Javascript erstellt: github.com/getbitpocket/bitcoin-p2p-messages Es gibt auch bereits viele Implementierungen in anderen Sprachen. Beachten Sie, dass die Nachrichtennutzlast bei der aktuellen Serialisierung viel geringer ist als bei json. Ich denke, dies wird sich in Zukunft nicht zu einer JSON-Serialisierung ändern.

Antworten (1)

Ja, das p2p-Protokoll selbst ist nicht konsenskritisch. Natürlich kann es nicht zwei völlig getrennte Netzwerke geben, also müssen Sie darauf achten, Brücken zwischen den beiden zu schaffen. Aber ansonsten könnten Sie ein Sneakernet-P2P-Netzwerk aufbauen, in dem die Leute USB-Sticks austauschen, wenn Sie möchten.

Es stimmt zwar, dass Sie die P2P-Protokolle in vielen Fällen ändern können, aber einige Nachrichtenformate sind konsenskritisch. Beispielsweise kann das Blocknachrichtenformat nicht geändert werden, da der Blockheader, wie im Protokoll definiert, gehasht wird, um nach einem gültigen PoW zu suchen.
@cdecker Nein, das ist innerhalb des neuen benutzerdefinierten p2p-Netzwerks, nach dem OP fragt, nicht kritisch, nur wenn es mit dem "normalen" Bitcoin kommuniziert. Das ist die Rolle dieser Brücken, die ich erwähnt habe. Innerhalb des benutzerdefinierten P2P-Netzwerks können Sie beispielsweise das JSON-Format verwenden oder sie in JPEG-Dateien oder in IBLT-Blöcken oder irgendetwas Verrücktem verstecken. Beachten Sie, dass Matt's Relay Network etwas Ähnliches macht: Es verbindet sich mit dem Bitcoin-p2p-Netzwerk, verwendet aber intern nicht das Bitcoin-p2p-Protokoll.