Zum Inhalt springen
buybitcoinsmart

Glossar / Protokoll und Upgrades

Median Time Past

Auch bekannt als MTP.

Was ist der Median Time Past?
Der Median Time Past ist die Konsensuhr von Bitcoin: der Median der vorherigen elf Blockzeitstempel und der Wert, gegen den jede zeitbasierte Locktime geprüft wird.

Spezifiziert im BIP-113.

Nodes nehmen die Zeitstempel der elf Blöcke vor dem Block, den sie validieren, sortieren sie und verwenden den mittleren Wert als aktuelle Zeit. Dieser Median liegt etwa sechs Blöcke zurück, er hinkt der Uhr also um ungefähr eine Stunde hinterher. Ein Coin, den Sie bis Mittag sperren, wird daher erst gegen ein Uhr nachmittags ausgebbar.

Wie es funktioniert

Der Median Time Past stammt aus einer Funktion namens GetMedianTimePast, die elf Blockeinträge rückwärts durchläuft, jeden Zeitstempel in ein Array kopiert, dieses sortiert und das mittlere Element zurückgibt.

Die Konstante, die BIP-113 festlegt, ist nMedianTimeSpan = 11, die Antwort ist also immer die sechstkleinste von elf Zahlen. Die Sortierung macht das Ergebnis vertrauenswürdig. Der Zeitstempel eines Blocks kann vor dem seines Vorgängers liegen, doch die Konsensregeln erzwingen bereits, dass jeder neue Zeitstempel über dem Median der elf davor liegt, der Median kann sich also nur vorwärts bewegen. Ein einzelner verzerrter Zeitstempel bringt einem Miner daher fast nichts.

Das Problem, das BIP-113 behob, war ein Anreiz und kein Fehler. Nach der alten Regel wurde die Zulässigkeit einer Transaktion am Zeitstempel des Blocks gemessen, der sie enthält, einer Zahl, die der Miner schreibt, und die Motivationssektion des BIP nennt das "a perverse incentive for miners to lie about the time of their blocks in order to collect more fees". Die Lösung war eine einzige Ersetzung: Konsensaufrufe an IsFinalTx nehmen GetMedianTimePast des vorherigen Blocks statt der eigenen Zeit des Blocks, und die Regel gilt für jede Transaktion, die Coinbase eingeschlossen.

Sie kam als BIP9-Versionbits-Softfork auf Bit 0, wobei die Signalgebung im Mainnet um Mitternacht UTC am 1. Mai 2016 begann und ein Jahr später auslief, und sie wurde zusammen mit BIP68 und BIP112 bereitgestellt, sodass die drei Timelock-Regeln als ein Paket ankamen.

Wo er auftritt

Der Median Time Past erscheint in der RPC-Ausgabe von Bitcoin Core als Feld namens mediantime, direkt neben dem rohen Feld time.

getblock gibt beide für jeden Block zurück, und getblockchaininfo meldet den Median der Spitze neben dem Zeitstempel der Spitze, was der schnellste Weg ist, die Stunde Verzögerung auf einem laufenden Node zu beobachten. getchaintxstats geht weiter und misst die Spanne seines Fensters als Differenz zwischen den Medianzeiten zweier Blöcke statt ihrer Header-Zeiten, ein verzerrter Zeitstempel an einem der beiden Enden bewegt das Ergebnis also kaum.

Spürbar wird es im Mempool. CheckFinalTxAtTip von Bitcoin Core bewertet einen Kandidaten am Median Time Past der aktuellen Spitze und einer um eins höheren Höhe, eine Wallet, die im Moment des Ablaufs einer Frist sendet, erhält daher eine Ablehnung statt einer Weiterleitung und muss es weiter versuchen, bis der Median zur Uhr an Ihrer Wand aufschließt.

Relative Timelocks erben dieselbe Uhr an beiden Enden. BIP-68 misst ein zeitbasiertes Sequenz-Lock, gezählt in Einheiten von 512 Sekunden, vom Median Time Past des Blocks vor dem, der den Coin gemint hat, bis zum Median Time Past des Blocks vor der Ausgabe, die Verzögerung tritt also zweimal auf und hebt sich größtenteils auf.

Median Time Past vs. der Zeitstempel im Blockheader

Der Median Time Past wird aus elf Header-Zeitstempeln berechnet, ist aber in keinem Block gespeichert, während ein Header-Zeitstempel ein Feld ist, das der Miner schreibt und jeder Node für immer behält.

Bitcoin verwendet beide, für unterschiedliche Aufgaben. Locktimes verwenden den Median, weil er monoton voranschreitet und nicht für Gebührenerträge nach vorn gezogen werden kann. Das Difficulty-Retargeting liest weiterhin die rohen Header-Zeiten: Bitcoin Core nimmt die Blockzeit des letzten Blocks im Fenster von 14 Tagen, subtrahiert die Blockzeit des ersten und skaliert das Ziel aus dieser Differenz neu. Zwei Uhren auf einer Blockchain wirken unordentlich, und das ist beabsichtigt. Ein Retargeting will die tatsächlich verstrichene Zeit über einen Zeitraum von zwei Wochen voller Blöcke, während eine Locktime eine Zahl will, die kein einzelner Miner bewegen kann.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Warum wird eine zeitgesperrte Transaktion etwa eine Stunde nach der von mir festgelegten Zeit bestätigt?

Weil Bitcoin zeitbasierte Locktimes gegen den Median Time Past prüft, den Median der vorherigen elf Blockzeitstempel, der der Uhr um ungefähr eine Stunde hinterherhinkt. BIP-113 sagt das in seinem Kompatibilitätsabschnitt. Wenn der genaue Zeitpunkt zählt, setzen Sie die Frist eine Stunde früher an, als sie wirksam werden soll.

Ist der Median Time Past in einem Block gespeichert?

Nein, jeder Node berechnet den Median Time Past selbst aus den elf Blockzeitstempeln vor dem Block, den er validiert. Bitcoin Core gibt das Ergebnis als Feld mediantime in getblock und getblockchaininfo aus, doch kein Teil der Blockdaten trägt es.

Beeinflusst der Median Time Past einen gewöhnlichen Bitcoin-Kauf?

Nein, eine gewöhnliche Auszahlung von einer Börse oder eine Zahlung aus einer Wallet trägt keine zeitbasierte Sperre, der Median Time Past verzögert sie also nie. Er zählt nur, wenn eine Ausgabe von einer zeitbasierten Locktime, einem OP_CHECKLOCKTIMEVERIFY-Skript oder einem zeitbasierten relativen Timelock abhängt.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Protokoll und Upgrades

Diese Seite auf Englisch lesen