BIP34, BIP66 und BIP65 sollten bei eindeutigen Blockhöhen erzwungen werden. Warum beanspruchen verschiedene Quellen unterschiedliche Blockhöhen für die Durchsetzung?

Uneinheitlicher Konsens/Aktivierung von BIPs

BIP34

Höhe des aktivierten Blocks 227.835 ( BitMEX-Referenz )

Höhe des aktivierten Blocks 227.930 ( Bitcoin-Entwicklerreferenz )

Höhe des aktivierten Blocks 227.931 ( Github-Referenz )

BIP66

Aktivierte Blockhöhe 363.724 ( Vorherige Frage )

Aktivierte Blockhöhe 363.725 ( Github-Referenz )

Höhe des aktivierten Blocks 363.731 ( BitMEX-Referenz )

BIP65

Höhe des aktivierten Blocks 388.380 ( BitMEX-Referenz )

Höhe des aktivierten Blocks 388.381 ( Github-Referenz )

Verwirrende Dokumentation

BIP34 sagt, dass es aktiviert wird, wenn 950 von 1000 Blöcken für Version 2 signalisieren. Es ist nicht klar, ob dies den aktuellen Block einschließt oder sich auf frühere Blöcke bezieht

BIP66 sagt, dass es aktiviert wird, wenn 950 der vorherigen 1000 Blöcke für Version 3 signalisieren. Der Client merkt jedoch an, dass 951 der vorherigen 1001 Blöcke sagen. Dann sagt BIP66, dass es mit dem Protokoll von BIP34 aktiviert wird. Jetzt haben wir drei mögliche Methoden. Sie passen nicht zusammen.

Irgendwelche Ratschläge, was hier los ist?

Antworten (1)

Ich beginne mit der Erklärung der verwirrenden Dokumentation.

BIP34 sagt, dass es aktiviert wird, wenn 950 von 1000 Blöcken für Version 2 signalisieren. Es ist nicht klar, ob dies den aktuellen Block einschließt oder sich auf frühere Blöcke bezieht

Es bezieht sich auf vorherige Blöcke. Um festzustellen, ob die Regeln für den Block auf Höhe aktiv sind n, prüfen wir, ob 950 der Blöcke von n-1001bis n-1Version 2 oder höher signalisieren.

BIP66 sagt, dass es aktiviert wird, wenn 950 der vorherigen 1000 Blöcke für Version 3 signalisieren. Der Client merkt jedoch an, dass 951 der vorherigen 1001 Blöcke sagen. Dann sagt BIP66, dass es mit dem Protokoll von BIP34 aktiviert wird. Jetzt haben wir drei mögliche Methoden. Sie passen nicht zusammen.

Es gibt nur zwei mögliche Methoden, und sie sind eigentlich dasselbe. 950 des vorherigen 1000-Blocks ist dasselbe wie die BIP 34-Methode. Und das ist eigentlich das Gleiche wie der 951 aus dem Vorgänger 1001, wenn man eine etwas andere Perspektive betrachtet. In jedem Fall verwendet BIP 66 denselben Mechanismus wie BIP 34. Insbesondere verwenden sie eine Funktion namens IsSuperMajority, um zu bestimmen, ob sie aktiv sind. Beide verwenden also denselben Mechanismus. Das Problem ist, wie wir diesen Mechanismus beschreiben.

Die Formulierung „950 von den vorherigen 1000 Blöcken“, die in BIPs verwendet wird, ist so, wie ich sie zuvor beschrieben habe. Es bestimmt, ob die Regeln für Block durchgesetzt werden, nindem es sich die 1000 Blöcke ansieht, die ihm vorausgehen. Hier nwird also weder in die Zählung noch in die Reihenfolge einbezogen.

Der Wortlaut „951/1001“ enthält Block n. Es betrachtet die Blöcke von n-1001bis Block n(einschließlich) und prüft, ob 951 dieser Blöcke die richtige Versionsnummer haben. Diese beiden Formulierungen sind identisch, da die 1001er den Aktivierungsblock enthält, die 1000er jedoch nicht.

Eine Möglichkeit, sich den 950/1000 vorzustellen, ist: Nachdem Sie eine Sequenz von 1000 Blöcken gesehen haben, bei denen 950 Blöcke die neue Version signalisieren, muss der nächste Block, der abgebaut werden soll, den neuen Regeln folgen. Die neuen Regeln stehen kurz vor der Durchsetzung.

Man kann sich den 951/1001 so vorstellen: Nachdem eine Folge von 1001-Blöcken gesehen wurde, in der 951-Blöcke die neue Version signalisieren, hat der 1001. Block in dieser Folge bereits die neuen Regeln durchgesetzt und die Durchsetzung hat bereits begonnen.

Grundsätzlich sind Menschen schlecht darin, Dinge mit Worten zu beschreiben. Es ist alles viel klarer, wenn Sie sich den Code ansehen.


Nun zu den Abweichungen. Ich habe ein Python-Skript geschrieben, das die IsSuperMajority-Prüfung durchführt, um diese Zahlen zu überprüfen.

BIP 34

Ich bin mir nicht sicher, woher BitMex seine Blockhöhe hat. Die Überprüfung dieser Höhe sowie davor und danach führt nicht zur Aktivierung. Also ich glaube das ist einfach falsch.

Nun, für 277930 vs. 277931 ist dies ein Interpretationsproblem. Wie ich zuvor mit dem 950/100 vs. 951/1001 besprochen habe, hängt dies von Inklusivität und Perspektive ab. Bei Höhe 277930 wurde eine Folge von 1000 Blöcken gefunden, wobei 950 Blockversion 2 hatte. Das bedeutet also, dass bei Höhe 277930 die Regeln nicht für diesen Block erzwungen wurden, sondern für den nächsten, dh 277931. Bitcoin Core verwendet 277931 da dies der erste Block ist, für den die BIP 34-Regeln erzwungen werden, ist dies der Wert, der im Quellcode enthalten ist.

GIP 66

Die Diskrepanz von 363724 zu 363725 ist dasselbe wie die Diskrepanz von 277930 zu 277931 in BIP 34.

Die Nummer von BitMex ist etwas verwirrender. Dies macht nur dann Sinn, wenn sie sich die etwas schwierige Aktivierung von BIP 66 ansehen. Aufgrund des Spionage-Mining durch Bergleute gab es eine unbeabsichtigte Kettengabelung, als BIP 66 aktiviert wurde. Block 363725 war der erste Block, in dem die neuen Regeln durchgesetzt werden sollten. Ein Miner, der nicht aktualisiert hatte, fand jedoch einen Block 363725. Da er nicht aktualisiert wurde, war dieser Block nach den neuen Regeln ungültig und der größte Teil des Netzwerks lehnte ihn ab. Aber viele Bergleute haben diesen Block nicht vollständig validiert und darauf abgebaut. Dies stellte sich als erheblicher Teil der Hashrate heraus und sie produzierten schließlich eine Gabelung mit einer Länge von 6 Blöcken, bevor die gültige Hauptkette sie einholte und überholte. Dies geschah mit Block 363731. Man könnte also sagen, dass BIP 66 aktiviert wurde.

Aber das ist nicht das Ende dieser Geschichte. Am nächsten Tag gab es aufgrund des gleichen Problems eine 3-Block-Fork. Man könnte also auch sagen, dass BIP 66 einen Tag später aktiviert wurde.

Wie auch immer, BIP 66 begann mit der Durchsetzung, wobei Block 363725 der erste Block nach den neuen Regeln war.

BIP 65

Die Diskrepanz von 388380 zu 388381 ist dasselbe wie die Diskrepanz von 277930 zu 277931 in BIP 34.

Ich kann Ihrer Argumentation bezüglich der BIP 66-Aktivierung nicht folgen. Es gab zwei Kettenspitzen, die erloschen sind, weil aktivierte Regeln nicht befolgt wurden. Sie gehören nicht zur besten Kette. Wie ändert sich, dass die Regeln ab Block 363.725 durchgesetzt wurden?
Ich habe eher versucht, etwas zu finden, das für ihre Zahl Sinn macht, aber ich stimme zu, dass es nicht so viel Sinn macht.
Das war eine super Antwort. Danke. Darf ich Sie in meiner Studie zitieren?