Wie kann ich berechnen, wie lange es gedauert hat, bis eine Transaktion bestätigt wurde?

Ist es möglich zu berechnen – oder sogar vernünftig zu schätzen – wie lange es gedauert hat, bis eine Transaktion in einen Block aufgenommen wurde, nachdem sie zum ersten Mal erstellt wurde?

Ich frage nach bereits bestätigten Transaktionen, die bereits in der Blockchain enthalten sind – und alle Transaktionen – nicht nur diejenigen, die mir gehören.

Ich baue derzeit ein Projekt auf, das eine bestimmte Blockchain nach allen Informationen/Attributen kratzt, die ein Benutzer wünscht. Sie können es sich hier ansehen – seien Sie gewarnt, es ist noch lange nicht reif für die Produktion und noch nicht einmal Version 1 – aber der Entwicklungszweig nähert sich.

Wie ich aus den Dokumenten und der Antwort auf diese Frage verstehe, ist das Attribut "Zeit erhalten" nicht, wie manche vielleicht denken, die Zeit, zu der eine Transaktion "in einen Block aufgenommen" wurde, sondern die Zeit, zu der mein Kunde die Transaktion zum ersten Mal bemerkt hat - dieses Attribut ist auch nicht verfügbar bei Verwendung von getrawtransaction. Das ist also ein No-Go.

Idealerweise suche ich nach der Zeit, zu der eine Transaktion erstellt (gesendet) wird, und nach der Zeit, zu der sie in einen Block aufgenommen (bestätigt) wird.

Basierend auf den obigen Informationen ist meine Idee:

  • für neue (unbestätigte) Transaktionen erfassen wir die Zeit, zu der mein Knoten die Transaktion zum ersten Mal bemerkt
  • dann zeichnen wir die Zeit auf, zu der mein Knoten bemerkt, dass er bestätigt ist

Dies würde mir zumindest einen Hinweis darauf geben, wie lange es dauert, bis neu erstellte Transaktionen bestätigt werden. Natürlich fügt die Latenz hier eine Menge Rauschen hinzu, aber es ist zumindest ein Schritt in die richtige Richtung!

Ich möchte dies nach Möglichkeit für bestehende, bestätigte Transaktionen tun.

Vielen Dank für Ihre Zeit.

Ich betreibe seit einiger Zeit einen Full Node, um einen Proxy für diese Informationen zu extrahieren, indem ich einen Echtzeit-Tracker der Transaktionen führe, die den Roh-Mempool durchlaufen, einen Zeitstempel hinzufüge, als mein Node die Transaktions-ID zum ersten Mal sah, und dann den Zeitunterschied berechnete nachdem die Transaktion in einen Block aufgenommen wurde ... Ich sehe keinen anderen Weg, der es ermöglichen würde, die Wartezeit ex-post zu bestimmen, zB nachdem die Transaktion in einen Block aufgenommen wurde, ohne den rohen Mempool zu verfolgen.

Antworten (1)

Leider besteht zumindest für Bitcoin und Litecoin (und wahrscheinlich die meisten Bitcoin-Derivatblockketten) die einzige Möglichkeit, diese Informationen zu erhalten, darin, dass ein Knoten/Client zu dem Zeitpunkt zuhört, zu dem die Transaktion im Netzwerk erscheint.

Andernfalls verwendet Ihr Client einfach den Zeitstempel des Blocks für jede Transaktion.

Dieses Design bedeutet, dass das Abrufen dieser Informationen nur möglich ist, wenn ein Dritter verwendet wird, der zu diesem Zeitpunkt eine Kopie der Blockchain verwaltet, oder möglicherweise einen Dump der Blockchain einer vertrauenswürdigen Quelle erhält, was sollte (ich glaube, obwohl ich es nicht getestet habe). selbst) behalten die Zeitstempel des ursprünglichen Clients bei.

Wäre toll, wenn das jemand bestätigen könnte. Ich werde es selbst tun, wenn ich die Gelegenheit bekomme, es zu testen, aber das wird möglicherweise nicht in absehbarer Zeit passieren.