Zeit messen mit der Blockchain

Aus dem Original “Measuring Time with chain of blocks” vom 16.03.2019 von Tamas Blummer Bitcoin-Entwickler seit 2012, vorher: CLA @ Digital Asset Holdings, VP @ CoinTerra, CEO @ Bits of Proof, Ingenieur, Financial Risk Manager, verstorben 2020. Übersetzt von MichaelEp & janpaul.


Die jüngste Wiederentdeckung des Bitcoin-Quellcode vor der Erstveröffentlichung zeigt, dass Satoshi die Blockkette (Blockchain) als Zeitkette (Timechain) bezeichnet hat. Wir wollen hier untersuchen, wie gut die Blockchain zur Zeitmessung geeignet ist.

Miner müssen die Zeitstempel (Timestamps) ihrer Blöcke innerhalb bestimmter Grenzen setzen, und zwar müssen sowohl die letzten Blockzeiten als auch die Zeit, die von anderen Netzwerkteilnehmern aufgezeichnet wurde, berücksichtigt werden. Andernfalls wird der Block abgelehnt. Daher folgen die Blockzeitstempel in etwa der Echtzeit.

Die Frage, die ich hier untersuche, ist nicht die der Genauigkeit von Blockzeitstempeln, sondern ob die Anzahl der beobachteten Blöcke ein geeignetes Maß für Zeit ist.

Genau alle 2016 Blöcke wird die sogenannte Difficulty (der Schwierigkeitsgrad) neu kalibriert. Der Zweck dieser Kalibrierung ist, dass es zwei Wochen (1.209.600 Sekunden) dauern soll, um 2016 Blöcke zu produzieren. Mehrere Faktoren tragen dazu bei, dass dieses Ziel immer wieder verfehlt wird und eine Neu-Kalibrierung der Difficulty ausgelöst wird:

  • Die Difficulty steuert die erwartete Zeit bis zum nächsten Block. Die tatsächliche Zeit ist ein stochastischer Prozess mit einer bekannten signifikanten Varianz.
  • Bei der Neukalibrierung der Difficulty werden die Zeitstempel der Blöcke verwendet, die die Miner innerhalb bestimmter Grenzen frei wählen können.
  • Die Rechenkapazität der Miner ändert sich ständig. Die Neukalibrierung der Difficulty ist daher darauf ausgelegt, um mit diesem größten Einflussfaktor umgehen zu können. 

Die Varianz des stochastischen Mining-Prozesses gibt die Grenze der Präzision vor, die wir erwarten können; die anderen beiden Punkte werden die Sache noch schlimmer machen.

Da Mining reine Raterei ohne Annäherung an das Ergebnis ist, ist die Zeit bis zum Erfolg mit einem Mittelwert von 10 Minuten exponentiell verteilt. Unten ist eine Grafik der Wahrscheinlichkeiten abgebildet, dass das Netzwerk innerhalb einer bestimmten Zeitspanne einen Block findet:

Unterhaltsame Tatsache: Die Wahrscheinlichkeit, innerhalb von 10 Minuten einen Block zu finden beträgt nicht 0,5, sondern viel mehr: 0,63. Die mittlere Zeit zum Erfolg beträgt 10 Minuten, aber die Wahrscheinlichkeitsverteilung ist nicht „symmetrisch“ drum herum, da sie jeder Wartezeit eine Wahrscheinlichkeit ungleich Null zuweist.

Die Standardabweichung der Erfolgsverteilung beträgt ebenfalls 10 Minuten, daher sollten wir nicht erwarten, dass die Zeitmessung genauer ist als eben jene 10 Minuten. In Wirklichkeit ist sie wahrscheinlich schlechter. Wir wollen uns mal ansehen, wie schlecht sie tatsächlich ist.

Absolute Zeit

Nehmen wir die ersten 556.875 Bitcoin-Blöcke, die (gemäß den von den Minern gesetzten Zeitstempeln) zwischen 2009-01-03 18:15:05 und 2019-01-03 18:19:56 produziert wurden. Das sind ungefähr 10 Jahre oder, präzise, 315.533.091 Sekunden.

Die angepeilte Zeitspanne für 556.875 Blöcke beträgt 556.875 / 2016 * 1.209.600 = 334.125.000 Sekunden, was bedeutet, dass die Bitcoin-Uhr deutlich schneller tickte als die ursprüngliche Zielvorgabe. So viele Blöcke hätten wir eigentlich erst 215 Tage später haben sollen.

Dies sollte uns nicht weiter überraschen, da Bitcoins Mining-Difficulty in den ersten 10 Jahren stetig in die Höhe schnellte, und zwar aufgrund der ständig steigenden Mining-Kapazitäten und folglich einer Block-Produktion, die zu jeder Zeit schneller war als die Zielvorgabe.

Messung von Zeit mit einem Rechenvorgang

Ein Block auf der Kette kann erst nach seinem Vorgänger erstellt werden, da er den vorherigen Hash in seine Berechnung einbeziehen muss. Daher war die für einen Block aufgewendete Arbeit fortlaufend zu der für den vorherigen Block aufgewendeten Arbeit. Das Fortschreiten der Kette von Blöcken ist also das Ergebnis einer fortlaufenden Berechnung, auch wenn die Berechnung für den einzelnen Block in hohem Maße parallelisierbar ist.

Die Herstellung von n Blöcken erfordert eine Berechnung, die voraussichtlich insgesamt n*10 Minuten in Anspruch nehmen wird. Die auf Zeitstempeln basierenden Schwierigkeitsanpassungen (Difficulty Adjustments) sind nur dazu da, um periodisch Messfehler auszugleichen, das eigentliche Werkzeug der Zeitmessung ist der Rechenvorgang selbst.

Wenn die Hardware, die den Rechenvorgang ausführt, bekannt und konstant wäre, dann wäre eine Schwierigkeitsanpassung nicht erforderlich.

Jegliche Ungenauigkeit der Bitcoin-Uhr, die über die durch die stochastische Natur des Minings implizierte Varianz hinausgeht, ist auf Schwankungen der Rechenkapazität des Netzwerks und die Ungenauigkeit der Blockzeitstempel zurückzuführen.

Es ist unmöglich, die durch falsche Blockzeitstempel verursachte Ungenauigkeit zu quantifizieren, da niemand eine objektive Aufzeichnung der Zeitpunkte hat, zu denen die Blöcke tatsächlich erstellt wurden. Die Ungenauigkeit wird jedoch durch diese Quelle begrenzt, da die Bitcoin-Knoten es ablehnen, einen Block mit einem Zeitstempel anzuhängen, der mehr als zwei Stunden vor ihrer eigenen Systemzeit liegt.

Falsche Zeitstempel führen zu einer falschen Schätzung der Rechengeschwindigkeit des Netzwerks. Es gibt eine potentielle, aber nie beobachtete und bald behobene “Time-Warp-Attacke” auf Bitcoin, die den Effekt falscher Zeitstempel vervielfachen könnte. Diese Quelle der Ungenauigkeit hatte in der Vergangenheit vernachlässigbare Auswirkungen auf die Schwierigkeitsanpassungen und wird in Zukunft sogar noch weniger bedeutend sein.

Das Netzwerk unterschätzte jedoch regelmäßig seine eigene Rechengeschwindigkeit.

Die mittlere Blockzeiten innerhalb von zwei Wochen in Minuten

Die Anzahl der produzierten Blöcke ist ein Näherungswert für die verstrichene Zeit, aber diese Uhr ist auf lange Sicht stark verzerrt und auf kurze Sicht sehr ungenau. Sie ist wirklich schlecht, aber immer noch die beste unfälschbare Zeitmessung, die wir haben.