Glossar / Protokoll und Upgrades
Speedy Trial
- Was ist Speedy Trial?
- Speedy Trial ist die für Taproot verwendete Aktivierungskonfiguration: ein kurzes Signalgebungsfenster für Miner mit einer auf 90 Prozent gesenkten Schwelle und einer Inkraftsetzung, die auf eine feste spätere Blockhöhe verschoben wurde.
Spezifiziert im BIP-341.
Speedy Trial ist ein abgewandeltes Versionsbits-Deployment nach BIP-9, das in BIP-341 selbst geschrieben wurde und nicht in ein eigenes BIP. Miner hatten 109 Tage, vom 24. April bis zum 11. August 2021, um Bit 2 in 1.815 von 2.016 Blöcken zu setzen, wobei die Inkraftsetzung auf Block 709.632 festgelegt war. Diese Höhe der Inkraftsetzung wurde festgelegt, bevor die Signalgebung begann, sodass Halter den genauen Block kannten, an dem die Regeln wechseln würden.
Wie es funktioniert
Speedy Trial behält die Zählmethode von BIP-9 bei, ändert zwei seiner Zahlen und fügt einen Parameter hinzu, den BIP-9 nie hatte.
BIP-9 zählt die signalisierenden Blöcke über jeden Neuberechnungszeitraum von 2.016 Blöcken und verschiebt ein Deployment von STARTED auf LOCKED_IN, sobald ein Zeitraum genügend davon enthält. Seine Schwelle ist 1.916 Blöcke, 95 Prozent eines Zeitraums, und seine eigene Vorgabe für das Fenster ist ein Jahr, 31.536.000 Sekunden nach dem Startzeitpunkt. Sowohl der Start als auch der Timeout werden aus der medianen vergangenen Zeit gelesen, dem medianen Zeitstempel eines Blocks und seiner zehn Vorgänger, sodass die Uhr der Blockchain gehört und nicht der Uhr von irgendjemandem.
Das Taproot-Deployment senkte die Schwelle auf 1.815 Blöcke, 90 Prozent, und gab dem Fenster 9.417.600 Sekunden, vom Epochen-Zeitstempel 1619222400 bis 1628640000. Die Ergänzung war min_activation_height. Unter reinem BIP-9 wechselt ein festgeschriebenes Deployment an der nächsten Neuberechnungsgrenze auf ACTIVE, sodass die Festschreibung die Höhe der Inkraftsetzung nur an die 2.016 Blöcke bindet, die darauf folgen. Unter Speedy Trial wiederholt sich der Zustand LOCKED_IN, bis die Chain die angegebene Höhe erreicht, und geht erst dann auf ACTIVE über. Die Höhe im Mainnet war 709.632, was genau 352 Neuberechnungszeiträumen und damit einer Zeitraumgrenze entspricht. Das Deployment wurde dort aktiviert.
Die Trennung ist die ganze Idee. Die Signalgebung beantwortet eine Frage schnell, und die lange Lücke, die folgt, ist Zeit für alle anderen zum Aktualisieren und nicht Zeit, die mit Streiten verbracht wird.
Wo Sie es sehen
Die Parameter von Speedy Trial sind im Versionsfeld jedes Blocks lesbar, der während des Signalgebungsfensters 2021 gemint wurde.
Ein signalisierender Block trägt die oberen Bits 001 plus das eigene Bit des Deployments, sodass ein Taproot-Signal auf Bit 2 als Version 0x20000004 gelesen wird. Miner, die Arbeit anfordern, begegnen demselben Deployment über getblocktemplate, dessen Schlüssel "rules" die bereits aktiven Soft Forks nennt und dessen Schlüssel "vbavailable" jeden ausstehenden seinem Bit zuordnet. Der Name, den BIP-341 diesem Deployment gibt und damit die Zeichenfolge, die ein Miner liest, ist einfach "taproot".
Der Lauf desselben Deployments im testnet3 zeigt, wofür die Verzögerung gedacht war. Er verwendete identische Start- und Timeout-Zeitstempel, eine Schwelle von 1.512 Blöcken bei 75 Prozent und min_activation_height 0, sodass nichts über die eigene Lücke von einem Zeitraum nach BIP-9 hinaus verschoben wurde und es bei Höhe 2.011.968 aktiv wurde. Das Mainnet bekam die zusätzliche Wartezeit; das Testnetz hatte keine Wirtschaft, die es zu schützen galt. Auf signet waren die Regeln immer aktiv, sodass dort kein Versuch stattfand.
Speedy Trial vs. UASF
Ein von Nutzern aktivierter Soft Fork erzwingt das Ergebnis von der Node-Seite, und Speedy Trial lehnte diese Macht bewusst ab.
Der erzwingende Mechanismus ist in BIP-8 als lockinontimeout niedergeschrieben. Wird er auf true gesetzt, erhält das Deployment vor dem Timeout einen MUST_SIGNAL-Zeitraum, in dem Blöcke, die nicht signalisieren, ungültig werden, sobald der zulässige Anteil nicht signalisierender Blöcke eines Zeitraums aufgebraucht ist, was die Festschreibung garantiert, ob Miner zusammenarbeiten oder nicht. BIP-8 empfiehlt das Kennzeichen für jeden Soft Fork, bei dem politischer Widerstand eines nicht unerheblichen Teils der Miner zu erwarten ist, und warnt im selben Dokument, dass Nodes, die es ausführen, über einen längeren Zeitraum einer Chain mit geringerer Arbeit folgen können und sich möglicherweise bevorzugt untereinander verbinden müssen.
Speedy Trial trug kein solches Kennzeichen. Wurde die Schwelle vor dem Timeout verfehlt, ging das Deployment in FAILED über und tat nichts weiter, und das war der eingegangene Kompromiss: keine Garantie auf Aktivierung, kein Risiko einer Chain-Spaltung und in jedem Fall eine günstige Antwort.