Coin Selection bezeichnet die Auswahl der Mittel, aus denen eine Wallet eine Bitcoin-Transaktion zusammensetzt. Ein Guthaben ist kein durchgehender Betrag: Es besteht aus einzelnen, noch nicht ausgegebenen Outputs früherer Transaktionen, den UTXOs. Die Wallet muss genügend davon für die Zahlung und ihre Gebühr auswählen. Meist geschieht das automatisch; die manuelle Auswahl heißt Coin Control. Das Netzwerk prüft die Gültigkeit der fertigen Transaktion, schreibt aber nicht allen Wallets dasselbe Auswahlverfahren vor.
Anna möchte 60000 sat bezahlen. Ihre Wallet bereitet die Zahlung vor: eine Anwendung oder ein Gerät, mit dem sie Bitcoin empfangen und senden kann. Die Abkürzung sat steht für Satoshi, die kleinste Einheit, in der Beträge in Bitcoin-Transaktionen erfasst werden. Sie verfügt über einen UTXO mit 100000 sat. Ähnlich wie bei einem Geldschein kann sie davon nicht einfach einen Teil abbuchen: Ein Input der neuen Transaktion gibt diesen Output vollständig aus. Die Transaktion erzeugt einen Output mit 60000 sat für den Händler und bei einer Gebühr von 1000 sat einen weiteren mit 39000 sat für Anna. Dieser zweite Output ist das Wechselgeld, auch Change genannt. Es handelt sich nicht um eine spätere Erstattung des Händlers; er entsteht direkt in ihrer eigenen Transaktion. Die Gebühr ist die Differenz zwischen der Summe der Inputs und aller Outputs. [1] [7]
Die Wallet kann dieselbe Zahlung aus unterschiedlichen UTXOs finanzieren. Mehr Inputs bedeuten jedoch meist mehr Daten und damit bei gleichem Gebührensatz eine höhere Gebühr. Diese ist kein Prozentsatz des überwiesenen Betrags. Sie richtet sich nach der virtuellen Größe der Transaktion, gemessen in vB, also virtuellen Bytes. Dieses Maß berücksichtigt die unterschiedliche Gewichtung der Bestandteile. Ein UTXO mit 10000 sat benötigt beispielsweise einen Input von geschätzt 68 vB. Bei 10 sat/vB kostet dieser Input 680 sat und trägt somit 9320 sat zum Rest der Zahlung bei: seinen effektiven Wert. Die übrigen Teile verursachen ebenfalls Kosten. Die tatsächliche Input-Größe hängt von den im Script festgelegten Ausgabebedingungen und den Signaturdaten ab. Ein Script ist ein kurzes Programm, das die Ausgabebedingungen beschreibt. Bei einer gewöhnlichen Zahlung erstellt die Wallet mit einem privaten Schlüssel, einem geheimen Zahlenwert, eine digitale Signatur: eine überprüfbare Freigabe der Ausgabe. [2] [3] [7]
Anna hat vielleicht viele kleine Beträge erhalten. Sie zu einem größeren eigenen Output zusammenzuführen heißt Konsolidierung. Später braucht sie dadurch womöglich weniger Inputs. Dafür fällt schon heute eine Gebühr an, und die verwendeten Outputs werden öffentlich miteinander verknüpft. Alles automatisch zusammenzuführen ist deshalb keine sinnvolle Grundeinstellung. Bitcoin Core vergleicht Kosten auch anhand der waste metric: einer Bewertung, die die Differenz zwischen Input-Kosten heute und bei einem angenommenen langfristigen Gebührensatz berücksichtigt, ergänzt um die Kosten für Erzeugung und spätere Ausgabe des Wechselgelds oder den als Gebühr abgegebenen Überschuss. Der langfristige Satz ist eine Arbeitsannahme, keine Prognose. Diese Bewertung misst Kosten, nicht Privatsphäre. [2] [6]
Anna hat einen Eingang als Gehalt und einen anderen als Geschenk beschriftet. Gibt sie beide gemeinsam aus, erhalten Beobachter der Blockchain einen Hinweis auf eine Verbindung. Das beweist nicht, dass alle Inputs einer einzigen Person gehören: Transaktionen können auch gemeinsam erstellt werden. Mit Coin Control wählt Anna bestimmte UTXOs aus; Beschriftungen helfen ihr, deren Herkunft zu erinnern. Eine Beschriftung ist eine Notiz in der Wallet, keine Nachricht in der Blockchain. BIP 329 beschreibt die Übertragung dieser Notizen und der Angabe, ob die Wallet einen bestimmten Output als ausgebbar betrachtet. Das ist eine lokale Wallet-Einstellung, die die Regeln des Bitcoin-Netzwerks nicht verändert. Das Format selbst wählt keine Mittel aus. Exportierte Beschriftungen können sensible Zusammenhänge offenlegen. Auch eine Zahlung ohne Wechselgeld garantiert keine Anonymität. [4] [6]
Das angezeigte Guthaben ist nicht unbedingt vollständig sofort nutzbar. Manche Outputs hat die Wallet bewusst ausgeschlossen, andere warten auf Bestätigung oder auf erfüllte Ausgabebedingungen. Die Auswahl muss außerdem Größen- und Gewichtslimits der Transaktion beachten. Wird ein unbestätigter Eingang ausgegeben, hängt die neue Zahlung von der früheren Transaktion ab, die ihn erzeugt hat. Diese heißt in diesem Zusammenhang Vorfahr. Für die Bestätigung der gesamten Kette kann eine zusätzliche Gebühr nötig sein. RPC, die Schnittstelle zur Steuerung von Bitcoin Core 29.0 durch Programme, bietet bei walletcreatefundedpsbt die Option include_unsafe. Sie erlaubt auch riskante unbestätigte Inputs. Wird die ursprüngliche Transaktion so ersetzt, dass der benötigte Output entfällt, kann die abhängige Zahlung nicht bestätigt werden. Allein das vorübergehende Entfernen der ursprünglichen Transaktion aus dem Speicher eines Knotens ändert hingegen nicht ihre Gültigkeit. [3] [5]
Wie durchsucht die Wallet ihre Möglichkeiten? Branch-and-bound, kurz BnB, erprobt Input-Kombinationen und verwirft Suchzweige, die kein geeignetes Ergebnis liefern können. Gesucht wird eine Zahlung ohne separaten Wechselgeld-Output. Eine exakte Übereinstimmung ist nicht erforderlich: Der zulässige Bereich umfasst auch einen Überschuss bis zu den Kosten für Erzeugung und spätere Ausgabe des Wechselgelds. Dieser Überschuss wird zur Gebühr; er bleibt nicht irgendwo in der Wallet verborgen. Deshalb ist eine Zahlung ohne Wechselgeld nicht zwangsläufig die günstigste. Die Suche hat nur begrenzt viele Versuche und findet möglicherweise weder eine vorhandene Lösung noch die beste aller Kombinationen. [2]
Bitcoin Core 29.0 vergleicht Kandidaten aus BnB, Knapsack und Single Random Draw (SRD). Das sind unterschiedliche Verfahren, um passende Inputs zu finden. CoinGrinder kommt hinzu, wenn der effektive Gebührensatz mehr als das Dreifache des langfristigen Satzes beträgt; dieses Verfahren sucht eine Auswahl mit geringem Gewicht und Wechselgeld. Die Kandidaten werden anhand der zuvor erklärten waste metric verglichen. Soll die Gebühr von den Empfängerbeträgen abgezogen werden, wird BnB ausgelassen. Dies beschreibt genau diese Version, keine Pflicht für sämtliche Wallets und keine Aussage über das neueste Release. [3]
Für eine gewöhnliche Zahlung musst du keine Programmparameter kennen. Vor dem Signieren solltest du aber Empfänger, Betrag, Gesamtgebühr und eigenes Wechselgeld verstehen. Für Fortgeschrittene: In walletcreatefundedpsbt von Bitcoin Core 29.0 lassen sich Inputs durch txid, die Kennung der ursprünglichen Transaktion, und vout, die Positionsnummer ihres Outputs, angeben. add_inputs steuert, ob die Wallet weitere Inputs ergänzen darf. Die Einheiten unterscheiden sich: fee_rate verwendet sat/vB, feeRate hingegen BTC/kvB, also Bitcoin pro 1000 virtuelle Bytes. Das Ergebnis ist ein PSBT, ein Format zur Weitergabe einer vorbereiteten Transaktion zum Signieren. Seine Erstellung allein sendet nichts und bestätigt keine Zahlung. Weder die manuelle Auswahl noch das Format garantieren den richtigen Empfänger oder die Gültigkeit unbestätigter Inputs. [5]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit UTXO, Coin Control, Change Address, Fee Rate, PSBT, Bitcoin-Privatsphäre. Auf diesen Eintrag verweisen außerdem Watch-only Wallet, Change Address, Inventing Bitcoin.