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?
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 :
Es hat 2 Eingaben (die beide seitdem in anderen (bestätigten) Transaktionen ausgegeben wurden, wodurch diese Transaktion unbestätigt wird):
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 + 1
liegt 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.
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 .
Stefan Gornik
BinaryMage
Stéphane Gimenez