Was sind die Unterschiede zwischen den verschiedenen MTPs in Bitcoin?

Ich denke, es gibt 3 verschiedene MTPs (mittlere vergangene Zeit) in Bitcoin (obwohl dies möglicherweise falsch ist). David Harding sagte im IRC, dass es in Bitcoin v0.1 (Satoshis erster Veröffentlichung) ein MTP gibt. Es gibt auch MTP, wie es in BIP 9 verwendet wird, und dann gibt es MTP, wie es in BIP 113 definiert ist .

Wenn es tatsächlich 3 verschiedene MTPs in Bitcoin gibt, warum? Was war die Motivation?

Was meinst du mit drei verschiedenen? Sie sind alle gleich: der mittlere Zeitstempel der letzten 11 Blöcke.

Antworten (2)

Es gibt nur ein einziges Konzept der Median Time Past (MTP) in Bitcoin, die Medianzeit eines Blocks und der 10 Blöcke, die ihm in derselben Blockkette vorangehen. MTP wurde in Bitcoin schon immer als Teil der Regeln verwendet, die Knoten verwenden, um zu bestimmen, ob ein Block ein gültiges nTime-Feld in seinem Header hat. Diese Regeln sind:

  1. Die nTime eines Blocks muss größer sein als die MTP seines Elternblocks. Wenn beispielsweise der MTP eines Blocks ist 1618782748(der tatsächliche MTP des letzten Blocks, während ich dies schreibe), dann muss die nTime des nächsten Blocks sein 1618782748 + 1.

  2. Die nTime eines Blocks in UTC darf laut UTC-Uhr auf dem Rechner des lokalen Knotens nicht mehr als zwei Stunden in der Zukunft liegen.

Diese beiden Regeln ermöglichen es dem Bitcoin-Protokoll, das keine direkte Möglichkeit zur Bestimmung der Zeit hat, den Bereich der zulässigen Zeiten zu begrenzen. Das ist wichtig, weil die in Blockheadern angegebenen Zeiten verwendet werden, um Schwierigkeitsanpassungen zu berechnen, die versuchen, die durchschnittliche Blockproduktion bei etwa einem Block alle zehn Minuten zu halten. Diese Verwendung von MTP gibt es seit Bitcoin 0.1. (Diese Regeln allein haben sich bisher als gut genug erwiesen, aber mindestens eine zusätzliche Regel ist erforderlich, um Miner daran zu hindern, Schwierigkeiten erheblich zu manipulieren; siehe Time Warp Attack für Details über das Problem und den vorgeschlagenen Consensus Cleanup Soft Fork für eine Lösung. )

MTP hat die nützliche Eigenschaft, dass es monoton ansteigt – es geht nur nach oben, niemals nach unten (vorausgesetzt, es gibt keine Blockchain-Reorgs). BIP9 macht sich diese Eigenschaft zunutze, um sich nicht mit Fällen befassen zu müssen, in denen die Zeit rückwärts läuft.

MTP hat auch die nützliche Eigenschaft, dass es außerhalb der Kontrolle eines Miners liegt, der einen einzelnen Block erstellt (sie können höchstens zwischen zwei möglichen Optionen wählen, deren genaue Werte von früheren Minern festgelegt wurden). BIP113 nutzt diese Eigenschaft, um ein Anreizproblem im Zusammenhang mit zeitgebundenen Transaktionen zu beseitigen, bei denen Bergleute immer dazu ermutigt würden, Blöcke fast zwei Stunden in der Zukunft abzubauen. Das wäre kein großes Problem, aber es war schön, Minern zu ermöglichen, weiterhin genaue Zeiten für ihre Blöcke nach ihren eigenen Uhren zu melden.

Zusammenfassend hat Bitcoin nicht drei verschiedene MTPs – es hat eine monotone Uhr, die in drei verschiedenen Kontexten verwendet wird.

MTP ist definiert als der mittlere Zeitstempel der letzten 11 Blöcke.

BIP 9 bestimmt eine Blockhöhe basierend auf MTP. Alle 2016 Blöcke BIP 9 sagt: "Hat dieser nächste Block eine vergangene MTP-Start-/Timeout-Zeit?"

Sie würden erwarten, dass Sie die Blockhöhe vorhersagen können, die einem bestimmten zukünftigen BIP 9 MTP (Startzeit oder Timeout) entspricht. Damit sich diese Vorhersage als falsch herausstellt, müsste ein böswilliger Miner (oder mehrere Miner) den Zeitstempel auf mindestens 6 (Median von 11) der 11 Blöcke manipulieren. Alternativ könnten Bergleute den Bergbau einstellen, um absichtlich zu versuchen, Ihre vorhergesagte Blockhöhe zu verfälschen. Dies wäre natürlich sehr teuer, da sie auf potenzielle Blockbelohnungen verzichten würden.