Wie priorisiert der Standard-Client Transaktionen?

Ich habe gehört, dass der Standard-Client priorisiert, welche Transaktion weitergeleitet werden soll, basierend auf den zerstörten Bitcoin-Tagen und der für die Transaktion gezahlten Gebühr, aber was ist die genaue Formel, die verwendet wird, um zu bestimmen, welche Transaktion eine höhere Priorität hat? Das heißt, wie priorisiert der Standard-Client, welche Transaktion zuerst an andere Knoten gesendet werden soll?

mögliches Duplikat von Was ist der Münzauswahlalgorithmus?
@StephenGornick Kein Duplikat, dies bezieht sich auf die Weiterleitung von Transaktionen, während sich die von Ihnen verlinkte auf die Priorisierung von Münzen bezieht, die in Transaktionen verwendet werden.
Vielleicht sollten Sie präzisieren, was Sie mit Relais meinen . Interessieren Sie sich für die Auftragstransaktionen, die an andere Peers weitergeleitet werden, oder für die Bestellung (und möglicherweise die Menge), die zum Erstellen neuer Blöcke berücksichtigt werden?

Antworten (2)

Die Priorität einer Transaktion ist (die Summe aus (Coin-Alter in Blöcken * Coin-Wert in Satoshis) über alle Eingaben in der Transaktion) dividiert durch die Größe der Transaktion in Bytes.

Hier ist eine zufällige Beispieltransaktion, die von http://bitcoincharts.com/bitcoin/txlist/ kopiert wurde :

Geben Sie hier die Bildbeschreibung ein

Es hat 2 Eingaben (die beide seitdem in anderen (bestätigten) Transaktionen ausgegeben wurden, wodurch diese Transaktion unbestätigt wird):

  • eine für 0,1005 BTC aus Block 165774
  • eine für 0,0995 BTC aus Block 165777

Es ist 439 Bytes lang und hat eine Priorität von 432.232.688.

Die neuesten Blöcke in der Blockchain sind zum Zeitpunkt des Schreibens 175262.

Ich summiere die (Alter * Werte) für jede Transaktion und dividiere durch Größe. Das + 1liegt daran, dass im neuesten Block bestätigte Transaktionen ein Alter von 1 und nicht 0 haben:

>>> current_block = 175262
>>> ((current_block - 165774 + 1) * 0.1005e8 +
     (current_block - 165777 + 1) * 0.0995e8) / 439
432232687.92710704

Wie Sie sehen können, steigt die Priorität einer Transaktion, wenn neue Blöcke gefunden werden.

Dies ist die Priorität, die der Client verwendet, um zu entscheiden, welche Transaktionen in abgebaute Blöcke aufgenommen werden sollen. Dies ist höchstwahrscheinlich das, was jemand wissen möchte, wenn er nach der Transaktionspriorität fragt.
Einverstanden. Tolle Antwort, aber nicht auf die richtige Frage. Es wäre eine ausgezeichnete Antwort auf diese Frage. Ich würde vorschlagen, dass Sie es dorthin kopieren und von hier entfernen.
Ich denke, das ist die Berechnung, auf die sich die Frage bezog. Es wird nur nicht verwendet, um zu entscheiden, welche Transaktionen weitergeleitet werden sollen. Es gibt keine Prioritätsberechnung bei der Entscheidung, welche Transaktionen weitergeleitet werden sollen.

Die Regeln für den Bitcoin.org-Client bestehen darin, die erste Transaktion, bei der eine Bitcoin-Adresse ausgegeben wird, zu behalten und zu verwerfen, ohne andere möglicherweise eingehende Transaktionen weiterzuleiten.

Die Priorität richtet sich also nach der chronologischen Ankunftszeit.

Es wurde von Variationen gesprochen , die eine Ersatztransaktion mit einer höheren Gebühr ermöglichen würden, um eine frühere Transaktion zu ersetzen, die noch nicht bestätigt wurde.

Und es gibt einen Angriffsvektor, der beschreibt, wie diese Priorität geändert werden kann, um doppelte Ausgaben zu ermöglichen .