In welchem ​​Format wird die Uhrzeit einer Bitcoin-Transaktion gespeichert?

Dies kann eine sehr einfach zu beantwortende Frage sein, aber ich konnte sie nicht schnell finden. Unabhängig davon, wenn Sie eine Transaktion in der Blockchain dekonstruieren und den Zeitwert der Transaktion herausziehen würden, welches Format hat der Zeitstempel?

Mit anderen Worten, wenn Sie den Ziehzeitwert herausziehen würden, wie kann ich ihn in einen aussagekräftigen Wert umwandeln?

Muss die Zeit sofort bekannt sein oder nur historische Daten (dh ohne Transaktionen aus den letzten sechs Blöcken). Auch welche Granularität. Löst die Kenntnis des Zeitstempels des Blocks das Problem oder benötigen Sie Echtzeit, wenn sie ankommen? Wie auch immer, diese Werte sind nicht unveränderlich – ist das eine Voraussetzung?
Nun, ich möchte den Zeitunterschied zwischen empfangenen Transaktionen für eine bestimmte Adresse überwachen. Mit anderen Worten, ich möchte sehen, wie oft Transaktionen an eine bestimmte Adresse gesendet werden. Die Daten müssen für das Netzwerk spezifisch sein, nicht unbedingt die Zeit, zu der der Benutzer die Zahlung in seinem Client gebucht hat.

Antworten (3)

Es gibt mehrere Dinge, die Sie mit dem Zeitpunkt der Transaktion meinen könnten:

  1. Wenn die Transaktion erstellt wird
  2. Wenn die Transaktion 90 % des Netzwerks bekannt ist
  3. Wenn die Transaktion zum ersten Mal in einen Block aufgenommen wird
  4. Wenn der Block 90 % des Netzwerks bekannt ist

Wir können 1 nicht kennen, weil es offline generiert worden sein könnte und es kein Zeitfeld gibt. Sie können davon ausgehen, dass 1 ungefähr 30 Sekunden vor 2 liegt, aber auch hier können Sie es nicht wissen.

Wir können 2 herausfinden, weil die Zeit, zu der wir die Transaktion erhalten, ziemlich dieselbe sein wird wie zu 90 % des Netzwerks. Für historische Daten hat blockchain.info eine API.

Wir können 3 herausfinden, weil der Block ein Zeitfeld enthält. Das kann jedoch bis zu einer Stunde dauern, und dem Netzwerk ist es egal. Trotzdem gibt es nicht viel Grund, darüber zu lügen.

4 herauszufinden ist so ziemlich dasselbe wie 2.

In Bezug auf Punkt 2 und Punkt 4 zeichnet blockchain.info nicht die Zeit auf, zu der sie die Sendung erhalten haben, oder? (was bedeutet, dass sie nur den Zeitstempel der erstellten Transaktion aufzeichnen, der um Stunden abweichen kann)
@ Pacerier Ich bin mir nicht sicher, was du meinst. Ich habe gerade gesagt, dass Transaktionen keinen Zeitstempel haben.

Wenn Sie sich wörtlich auf die Eigenschaft „time“ oder „blocktime“ einer Transaktion innerhalb der Blockchain beziehen, dann ist dieser Zeitstempel im Unix-Format.

Und wenn Sie mit "in einen sinnvollen Wert konvertieren" ein menschenlesbares Format meinen, können Sie eine Unix-Befehlszeile (z. B. Terminal unter OSX) verwenden, um eine schnelle Konvertierung durchzuführen:

Linux:

$ date -d @1395103695

Mac OS X:

$ date -j -f "%s" 1395103695

... was Folgendes zurückgeben würde:

Mon Mar 17 14:48:15 HST 2014
Aber dieser um Stunden abweichende Zeitstempel ist nicht wirklich nützlich , oder?
Das ist nicht wirklich die Frage von OP, dh welches Format hat der Zeitstempel innerhalb einer Transaktion in der Blockchain. Ich habe meine Antwort bearbeitet, weil ich folgere, dass das, was er mit "sinnvoll" meinte, "vom Menschen lesbar" ist. Der Nutzen dieser Daten ist subjektiv.

Transaktionen haben per se keine Zeit. Sie haben eine lock_time , die derzeit sowieso nicht verwendet wird.

Blöcke haben Zeitstempel, Bytes 69-72 nach dem Trimmen der Protokollheader und Prüfsummen. Einige mögen sagen, dass eine Transaktionszeit die Zeit des Blocks ist, in dem sie enthalten ist.

Eine andere Interpretation (die von blockchain.info verwendete) ist einfach das erste Mal, dass die Transaktion vom Peer empfangen wurde.

Ich denke, das würde funktionieren. Eigentlich habe ich eine Idee für ein Projekt, aber ich muss wissen, wann eine Transaktion in der Kette aufgetaucht ist (oder von einem Peer empfangen wurde, wie Sie vorschlagen). Ist der Zeitstempel auf dem Peer unzuverlässig?
Wenn Sie etwas Unveränderliches benötigen, ist nicht einmal der Zeitstempel für den Block nützlich, da eine Blockreorganisation auch dann noch erfolgen kann, wenn sich eine Transaktion in einem Block befindet.
@StephenGornick, das ist verwirrend, hast du etwas dagegen, darauf näher einzugehen? Meinen Sie, dass der aktuelle Zeitstempel für Block 200k api.blockcypher.com/v1/btc/main/blocks/200000 , der 2012-09-22T10:45:59Z lautet, in Zukunft geändert werden kann ?
Nur wenn ein Fork unterhalb von Block 200k entsteht und dieser die aktuelle Chain überholt. Der Zeitstempel im Block ist unveränderlich, aber die Transaktion kann in einem anderen Block mit einem anderen Zeitstempel erscheinen.
@cdecker Ist es ein willkürlicher Prozess, in dem Blocktransaktionen nach einer Neuorganisation enden, oder würden Sie erwarten, dass es sich um einen Block handelt, der ungefähr vor oder nach dem ursprünglichen Block erstellt wird?
Die natürlich vorkommenden Blockgabeln haben keine Koordination, daher wird erwartet, dass jeder Bergmann einfach das auswählt, was zu seiner Politik passt. Während einer Reorganisation kann diese Art der Zeitzuweisung also mit willkürlichen neuen Zeitstempeln enden.