Was versteht man unter Bitcoin-Staub?

Ich habe den Begriff „Staub“ gesehen, der verwendet wird, um kleine Transaktionen zu beschreiben, die vom Bitcoin-Netzwerk als Spam angesehen werden könnten. Gibt es eine allgemein akzeptierte Definition dieses Begriffs?

Ich habe diese Frage beim Schreiben einer Antwort erstellt und keinen guten Link oder eine gute Definition für Staub gefunden. Ich werde meinen ersten Versuch einer Antwort posten, aber ich würde gerne etwas Definitiveres sehen.
Danke, ich verstehe ... es ist wie ein zu kleiner Transaktionsfehler. Und die Transaktion ist nicht abgeschlossen oder bereits ausgegeben?

Antworten (6)

Die Definition von Staub ist kundenspezifisch und keine Netzwerkvorschrift.

Bitcoin Core betrachtet eine Transaktionsausgabe als Staub, wenn ihr Wert niedriger ist als die Kosten für ihre Ausgabe zum dustRelayFeeKurs. Der Standardwert für dustRelayFeeist 3.000 sat/kvB¹, was zu denselben Staubwerten führt wie die vorherige Staubdefinition, die vor Bitcoin Core 0.15.0 verwendet wurde. Die vorherige Staubdefinition verband die Staubgrenze mit der minRelayTxFee- Rate und den Ausgabenkosten einer Ausgabe, die 1/3 ihres Wertes übersteigt.

Bei der Voreinstellung dustRelayFeevon 3.000 sat/kvB, angesichts der Größe einer P2PKH-Eingabe von 148 Byte und der Größe einer P2PKH-Ausgabe von 34 Byte, werden P2PKH-Ausgaben im Wert von weniger als 546 Satoshis von Bitcoin Core als Staub angesehen (546 Satoshi sind die kleinsten nicht -Staubwert). Für P2WPKH-Ausgaben betrachtet Bitcoin Core Ausgaben im Wert von weniger als 294 Satoshis ² Staub. Da die Eingabegrößen von Scripthash- und Taproot-Ausgaben nicht erkennbar sind , kombiniert Bitcoin Core ihre tatsächlichen Ausgabegrößen mit den Eingabegrößen der entsprechenden Keyhash-Typen für Dust-Schwellenwerte von 540 Satoshis für P2SH und 330 Satoshis für P2WSH und P2TR.

Das dustRelayFeekann mit der versteckten Befehlszeilenoption eingestellt werden -dustrelayfee.

Zusätzlich fügte Bitcoin Core 0.15.0 eine discard_rate. Der discard_rateentspricht der längsten Schätzung des Zielgebührensatzes (derzeit die Schätzung des Gebührensatzes von 1.000 Blöcken), liegt jedoch auf mindestens dustRelayFeeund höchstens 10.000 Satoshi/kvB. Jegliche Wechselgeldausgabe, die beim ausgegeben werden würde discard_rate, dh mehr kosten würde als ihr Wert beim discard_rate, wird automatisch in die Gebühr fallen gelassen, anstatt als Wechselgeldausgabe erstellt zu werden.

Andere Verwendungen von „Staub“
Beachten Sie, dass der Begriff „Staub“ auch umgangssprachlich verwendet wird, um sich auf alle UTXOs von verschwindend geringem Wert und auf UTXOs zu beziehen, deren Herstellung oder Ausgabe zum aktuellen Preis unwirtschaftlich ist . Ich verwende lieber den Begriff „ Sand “ für kleine, aber ausgabefähige UTXOs.


¹ Die Transaktionsgröße wurde vor Segwit in Bytes gemessen. Seit Segwit ist das relevante Maß das Transaktionsgewicht, das entweder in virtuellen Bytes (vbyte, vB) oder Gewichtseinheiten (wu) angegeben wird, wobei 4 wu = 1 vB. Bei Nicht-Segwit-Transaktionen entspricht ihre Größe ihrer virtuellen Größe: 1 B = 1 vB. Bei Segwit-Transaktionen ist ihre virtuelle Größe kleiner oder gleich ihrer Größe. Weitere Informationen zu diesen Einheiten finden Sie unter Gibt es einen Unterschied zwischen Bytes und virtuellen Bytes (vBytes)? .
² Der aufmerksame Leser könnte erwarten, dass die Staubgrenze für P2WPKH-Ausgaben 297 Satoshis beträgt, da P2WPKH-Ausgaben 31 Bytes und P2WPKH-Eingaben etwa 68 Vbytes sind, aber es scheint, dass die Staubgrenze für P2WPKH-Ausgaben warimplementiert , enthielt der Code einen Rundungsfehler in der vsize der Eingabe, der dazu führte, dass davon ausgegangen wurde, dass sie um ein vbyte kleiner ist, als sie tatsächlich ist. (Hutspitze an Crypt-iQ für den Hinweis .)

Mit welcher Formel wird der Staub berechnet?
Sollte Staub auch für Testnet/Regtest-Transaktionen in Betracht gezogen werden?
Wenn das Gewicht der Erstellung einer Ausgabe und der späteren Ausgabe dieser Eingabe geringer ist als die dafür erforderlichen Gebühren bei 3 s/vB, ist es Staub. Dh die Staubschwelle für Bitcoin Core liegt bei 3×(input_size+output_size).
Ja, aber ich weiß nicht, wie ich input_size finden soll. Ich habe hier eine Frage gestellt: bitcoin.stackexchange.com/questions/113649/… vielleicht kennen Sie die Lösung. Ich denke, dass es ein anderes Thema ist und in einer anderen Frage beantwortet werden sollte. Vielleicht kannst du mir helfen

Ich bin mir nicht sicher, ob es eine genaue Definition von Staub gibt. Das Armory-Client-Wiki sagt:

Senden von weniger als 0,01 BTC an einen Empfänger – Das Netzwerk betrachtet diese kleinen Ausgaben als „Staub“ und entmutigt sie, indem es eine Gebühr verlangt. Wenn es nicht entmutigt würde, könnte jemand 1,0 BTC nehmen und 1.000.000 Transaktionen zu je 0,000001 BTC kostenlos erstellen, was das Netzwerk verstopfen würde. Das ist also eine Definition von Staub.

Eine weitere Definition von Staub ist die neue Mindestausgabegröße von 5,46 uBTC, die zu 0.8.2 hinzugefügt wird.

Dieser Pull definiert „unwirtschaftlichen Staub“ als 5,46 uBTC (546 Satoshis, etwa 0,007 $ zu aktuellen Preisen) und behandelt jede Transaktion mit Ausgaben von weniger als 546 Satoshis als nicht standardmäßig (wird nicht weitergeleitet, wird nicht abgebaut). 546 Satoshis ergeben sich aus den Kosten (in Gebühren) für die Ausgabe eines TxOut/TxIn.

(Beachten Sie, dass bei der ursprünglichen Veröffentlichung die Staubschwelle bei 5430 Satoshis lag, aber das war falsch und wurde später auf die richtige Zahl festgelegt. Die Gebühren sind ebenfalls um das 10 -fache gesunken. )

Ich glaube jedoch nicht, dass die Definition von Staub den Kern der Antwort grundlegend ändert.

Im Allgemeinen können sich die genaue Definition von Staub und der Schwellenwert dafür, was als Staub gilt, im Laufe der Zeit mit dem Transaktionsvolumen (und damit dem Wettbewerb um Platz in der Blockchain) und den Wechselkursen ändern.

0,01 BTC als Staub zu betrachten, ist wahrscheinlich veraltet; es stammt wahrscheinlich aus der Zeit, als Bitcoins weniger als 10 US-Dollar wert waren.
Beachten Sie, dass der Mindestbetrag für alle Ausgaben gilt, auch für Wechselgeld. Der Satoshi-Client ist so eingerichtet, dass er den Minern nur den extra kleinen Betrag als Gebühr einbezieht, anstatt Wechselgeld für einen kleinen Betrag zu erstellen.

Um „Staub“ zu verstehen, müssen Sie einige Dinge verstehen:

Erstens ist ein UTXO eine nicht ausgegebene Transaktionsausgabe. Dies ist im Wesentlichen ein Stück Bitcoin irgendwo auf der Blockchain, das nicht ausgegeben wird.

Um eine Transaktion zu erstellen, werden 1 oder mehrere UTXOs verwendet, um die Eingaben zu bilden, und 1 oder mehrere UTXOs werden im Prozess „geboren“. Nachdem die Transaktionen bestätigt wurden, sind die UTXOs, die die Eingaben bildeten, jetzt nur noch „TXOs“ (d. h. sie wurden ausgegeben).

Um sicherzustellen, dass eine Transaktion bestätigt wird, muss eine Gebühr hinzugefügt werden, die proportional zur Gesamtgröße der Transaktion ist, d. h. der Anzahl der Bytes, die die Transaktion in der Blockchain einnimmt. Je mehr UTXOs als Eingaben verwendet werden, desto größer wird die Transaktion und desto höher ist die zu zahlende Gebühr.

Wenn ich 1 BTC in 1 UTXO gespeichert habe, kostet mich das Senden weniger als 1 BTC, verteilt auf 10 UTXOs von 0,1 BTC, und es kostet mich weniger, das zu senden als 100 UTXOs von 0,01 BTC.

Die Gebühren werden als Satoshis pro Byte berechnet und schwanken je nach Auslastung des Netzwerks.

Für jeden UTXO, den Sie in einer Transaktion verwenden möchten, wird eine Gebühr erhoben.

Jeder UTXO nimmt eine Anzahl von Bytes in der Transaktion ein.

Wenn Sie die Gebühr pro Byte mit der Anzahl der vom UTXO aufgenommenen Bytes multiplizieren und den im UTXO enthaltenen Wert überschreiten, wird dieses UTXO als "Staub" bezeichnet.

Ein „Staub“-UTXO ist also ein UTXO, das es nicht wert ist, in eine Transaktion aufgenommen zu werden, da dies zu einer Gebührenerhöhung führen würde, die höher ist als der Wert des UTXO.

Kommentardefinition von Staub aus dem eigentlichen Bitcoin-Repo auf Github , gefunden in der Datei policy.cpp:

// "Dust" is defined in terms of dustRelayFee,
// which has units satoshis-per-kilobyte.
// If you'd pay more in fees than the value of the output
// to spend something, then we consider it dust.
// A typical spendable non-segwit txout is 34 bytes big, and will
// need a CTxIn of at least 148 bytes to spend:
// so dust is a spendable txout less than
// 182*dustRelayFee/1000 (in satoshis).
// 546 satoshis at the default rate of 3000 sat/kB.
// A typical spendable segwit txout is 31 bytes big, and will
// need a CTxIn of at least 67 bytes to spend:
// so dust is a spendable txout less than
// 98*dustRelayFee/1000 (in satoshis).
// 294 satoshis at the default rate of 3000 sat/kB.

Staubige Ausgaben sind wirklich kleine Ausgaben einer Transaktion. Bitcoin-Transaktionen sind 0 Summen, also muss das, was hineingeht, auch herauskommen. Wenn Sie eine Transaktion durchführen, um etwas Geld von Ihrer Adresse an eine andere Adresse zu senden, wird der Rest an eine Änderungsadresse gesendet, über die Sie die Kontrolle haben. Wenn dieser Rest wirklich klein ist, dann wird er "staubig". Wenn Sie dann versuchen, eine weitere Transaktion mit diesem staubigen, nicht ausgegebenen Output (UTXOs) durchzuführen, werden Miner die Transaktion ablehnen und sie wird nicht bestätigt, ergo bewegt sich die Bitcoin nicht.

Das Bitcoin-Netzwerk hat je nach Version, die ein Miner ausführt, unterschiedliche Definitionen dessen, was als staubige UTXOs gilt. Wenn diese Seite die richtige Version von Bitcoin ist, die auf Knoten läuft, liegt der Großteil des Netzwerks bei 0.10 und 0.9.*. Für 0.9.3 beträgt die Staubgrenze 546 Satoshis . Für Version .10 glaube ich, dass es 546 ist, und frühere Versionen von 0.9 waren meiner Meinung nach mit 10x um 5.000 Satoshis höher.

Bitcoin-Staub bezieht sich auf die Tausenden und Abertausenden winziger Transaktionen, mit denen einige Websites das Netzwerk und damit die Blockchain überschwemmen.

Ich denke, normalerweise bezieht es sich eher auf die Transaktionsergebnisse, nicht auf die Transaktionen.