Wie genau ist die Bitcoin-Netzwerkzeit?

Wurden Beobachtungen gemacht, um auf die Genauigkeit der Bitcoin-Netzwerkzeit zu schließen?

Es wäre interessant zu wissen, ob NIST oder irgendeine andere Autorität das Phänomen verfolgt hat.

Sie könnten es selbst über Bitcoins verfolgen -blocknotify. Scheint einfach einzurichten, lustig und interessant!

Antworten (3)

Aus diesem Blogbeitrag, der den Timejacking-Angriff beschreibt :

Jeder Knoten verwaltet intern einen Zähler, der die Netzwerkzeit darstellt. Dies basiert auf der mittleren Zeit der Peers eines Knotens, die in der Versionsnachricht gesendet wird, wenn sich Peers verbinden. Der Netzwerkzeitzähler wird jedoch auf die Systemzeit zurückgesetzt, wenn die Medianzeit um mehr als 70 Minuten von der Systemzeit abweicht. Eine sehr vernünftige Methode, um die mittlere Netzwerkzeit zu schätzen.

Blockzeitstempel basieren also auf der „Netzwerkzeit“, die wiederum eine der folgenden ist:

  • Die von Peers angekündigte mittlere Zeit (falls zwischen ±70 Minuten von der Systemzeit entfernt)
  • Systemzeit

Die Netzwerkzeit wird verwendet, um neue Blöcke zu validieren. Als Vorsichtsmaßnahme lehnen Knoten jeden Blockzeitstempel ab, der mehr als 2 Stunden von der aktuellen Netzwerkzeit entfernt ist. Blockzeitstempel, die vor der Medianzeit der letzten 11 Blöcke liegen, werden ebenfalls zurückgewiesen. Diese Validierung legt Ober- und Untergrenzen für den akzeptablen Bereich von Blockzeitstempeln fest.

Blockzeitstempel sind also:

  • < 2 Stunden ab "Netzzeit".
  • > Median der letzten 11 Blöcke.

Ich muss meine Lektionen zur Fehlerfortpflanzung auffrischen, aber ich denke, dies führt zu einer Genauigkeit von etwa ±3 Stunden.

Natürlich ist dies nur eine obere Fehlergrenze, aber die eigentliche Frage bleibt: Was ist die tatsächliche Blockchain-Genauigkeit? (was eine sehr interessante Frage ist.) Der einzige Weg, um sicher zu sein, besteht darin, sie tatsächlich zu verfolgen und mit einem bekannten perfekten Zeitstempel zu vergleichen. Ich weiß nicht, ob jemand das schon einmal gemacht hat und konnte keine Referenzen finden.

Es ist nicht genau, die Zeiten im Netzwerk von Bitcoin sind Mediane anderer Knoten.

Aber es muss eine gewisse Fehlerquote geben, oder? Die Frage ist nicht "ist es richtig?" aber "wie genau ist es?" . Es wäre interessant, abs(real_stamp - block_stamp)die Zeit zu verfolgen.

Wenn ein Knoten einen Block findet, sendet er ihn im Wesentlichen mit dem gewünschten Zeitstempel, was nicht bedeutet, dass er überhaupt genau ist. Natürlich sind Knoten darauf programmiert, dies nicht zu tun, aber das bedeutet nicht, dass sie es nicht können. Andere Knoten sind so programmiert, dass sie Blöcke mit sinnvollen Zeitstempeln akzeptieren : Wenn ich beispielsweise einen Block mit einem Zeitstempel erhalte, der auf einen weit in der Zukunft liegenden Zeitraum eingestellt ist, werde ich ihn wahrscheinlich ablehnen.

Es ist also nicht ganz genau, aber genau genug, weil die Mehrheit der Knoten den Bitcoin-Knoten verwendet, der mit einer bestimmten Zeitstempellogik programmiert ist, um den Zeitstempel basierend auf der mittleren Zeit der Peers eines Knotens zu generieren, die in der Versionsnachricht gesendet wird wenn Gleichgesinnte sich verbinden.

Aber wie genau ist „genau genug“ ?
Nun, da ein Block mehr oder weniger alle 10 Minuten ausgestrahlt wird, würde ich ihm im schlimmsten Fall einen 10-Minuten-Margenfehler geben.