c't 4/2018
S. 54
Hintergrund
Bitcoin-Zahlungen beschleunigen
Aufmacherbild

Turbo für Bitcoin

Warum man hängende Bitcoin-Transaktionen anschieben muss – und wie

Kaum ändert der Kurs seine Richtung, stoßen Spekulanten panisch ihre Bitcoins ab oder ordern zügig nach. Mit den dann sprunghaft steigenden Transaktionsgebühren bleiben Bitcoin-Transfers mit niedriger Gebühr tage- oder wochenlang im Mempool hängen. Dagegen hilft ein kleiner Schubs.

Bitcoin-Spekulanten können ziemlich nerven: Kaum stürzt der Kurs ab, so wie kurz vor Weihnachten und dann Mitte Januar, will alle Welt schnellstmöglich ihre Bitcoins loswerden. Immer mehr Verkäufer bieten freiwillig immer höhere Transaktionsgebühren, damit ihre Transaktion ja im nächsten Block berücksichtigt wird, bevor der Kurs noch weiter fällt – während der eigene Panikverkauf, zusammen mit Transaktionen anderer Geizhälse, kläglich im Sammelbecken (Mempool) der Miner untergeht. Die Strafe folgt, wenn die Angebote an Transaktionsgebühren nach dem Kursverfall wieder sinken und dann die vor Tagen oder gar Wochen abgeschickte Verkaufsorder doch noch ausgeführt wird – denn ein Verfallsdatum gibt es nicht.

Tatsächlich verliert man die Kontrolle über zumindest einen Teil seines Bitcoin-Vermögens, sobald man eine Transaktion abschickt. Der Grund ist, dass Guthaben nach dem Bitcoin-Regelwerk stets nur komplett ausgegeben werden kann: Der auf der sogenannten Input-Adresse vorhandene Betrag wird vollständig auf die in der Transaktion aufgeführten Output-Adressen verteilt. Das sind üblicherweise eine Empfängeradresse, auf der der gewünschte Überweisungsbetrag gutgeschrieben wird, und eine Wechselgeldadresse, auf der der Rest abzüglich der Transfer-Fee verbucht wird. Für die nächste Zahlung benutzt man dann die Wechselgeldadresse als neue Input-Adresse.

Vermögen eingefroren

Der Kontrollverlust besteht darin, dass die Wechselgeldadresse so lange leer ist, bis die Transaktion in der Blockchain bestätigt wurde – und das kann Tage und Wochen dauern, wenn man nur eine lausige Transfer-Fee anbietet. Denn die Miner wählen ganz kapitalistisch die für sie lukrativsten Transaktionen mit den höchsten Transfer-Fee-Geboten aus, um daraus den nächsten Block der Chain zu berechnen. Hat man sein Bitcoin-Vermögen auf mehrere Adressen verteilt, ist nur der Vermögensteil von der hängenden Transaktion blockiert, der auf der beteiligten Input-Adresse verbucht war. Die Bitcoins von anderen Adressen können Sie ungehindert ausgeben.

Anwender bemerken von dieser Blockade oft nichts: Die Bitcoin-Clients versuchen bei einer Überweisung, den Betrag von möglichst wenigen Input-Adressen einzusammeln, damit die Transaktionsgröße gering bleibt – den Rest schicken sie an eine bislang unbenutzte Wechselgeldadresse. So sammeln sich mit der Zeit mehrere Wechselgeldadressen mit Guthaben an, von denen sich der Bitcoin-Client bedienen kann, während eine andere Transaktion noch unterwegs und deren Wechselgeld noch nicht angekommen ist.

Moderne Clients erlauben immerhin, Wechselgeldadressen aus noch nicht ausgeführten Transaktionen als Input-Adressen für eine neue Überweisung zu verwenden und diese Überweisung auch abzuschicken, obwohl das Wechselgeld noch nicht angekommen ist. Was sie dem Anwender verheimlichen: Die neue Überweisung kann erst ausgeführt werden, nachdem die erste abgeschlossen ist. Das bemerken auch die Miner, wenn sie die Transaktion im Mempool finden. Somit ist die zweite Transaktion mindestens genauso lange unterwegs wie die erste, wahrscheinlich noch länger.

Bitcoin-Beschleuniger

Die einfachste Möglichkeit, hängenden Bitcoin-Transaktionen auf die Sprünge zu helfen, ist der kostenlose Transaction Accelerator des Mining-Pool-Betreibers und Online-Wallet-Anbieters ViaBTC. Indem man auf viabtc.com/tools/txaccelerator die Transaktions-ID der hängenden Überweisung einträgt, kann man sie für die ViaBTC-Miner priorisieren: Sie nehmen die Transaktion auch dann in den nächsten Block auf, wenn die gebotene Transfer-Fee dafür viel zu niedrig ist.

Die einzige Voraussetzung ist, dass die Transaktionsgebühr mindestens 0,0001 Bitcoin pro Kilobyte (10 Satoshi pro Byte) beträgt – also ungefähr 25 Cent für eine einfache Transaktion. Nutzen kann den Dienst jedermann ohne Registrierung, nicht nur Kunden von ViaBTC. Allerdings erlaubt ViaBTC nur 100 Priorisierungen pro Stunde. Kommt man zu spät, muss man bis zur nächsten vollen Stunde warten, bis man es wieder versuchen kann. Da gehört bei einem Kurssturz schon eine gute Portion Glück dazu, seine Transaktion beschleunigt zu bekommen.

Eine zweite, teurere Möglichkeit ist, die Transaktionsgebühr nachträglich zu erhöhen. Das Verfahren nennt sich „Replace by Fee“ (RbF), wurde als Verbesserungsvorschlag 125 (Bitcoin Improvement Proposal, BIP-0125) Ende 2015 eingereicht und wird inzwischen von vielen Bitcoin-Clients unterstützt. Dabei sendet der Client eine zweite Transaktion, die die gleiche Input-Adresse wie die erste verwendet, jedoch eine höhere Fee auslobt.

Bei extrem niedrigen Transaktionsgebühren aktiviert Electrum automatisch das Replaceable-Flag, damit sich die Transfer-Fee später erhöhen lässt.

Damit die zweite Transaktion mit der höheren Gebühr akzeptiert wird, muss bereits die Ursprungstransaktion als „replaceable“, also austauschbar, gekennzeichnet worden sein. Beim Wallet-Client Electrum kann man dieses Flag über die Einstellungen standardmäßig immer setzen lassen. Unabhängig davon setzt Electrum das Replaceable-Flag automatisch, wenn Sie eine besonders niedrige Transfergebühr auswählen – Sie können es aber manuell wieder deaktivieren.

Transaktionen mit Replaceable-Flag zeigt Electrum in der Übersicht als austauschbar an. Mit wenigen Klicks sind sie mit höherer Transaktionsgebühr ausgestattet.

Indem Sie nicht eilige Transaktionen zunächst mit einer niedrigen Gebühr, aber gesetztem Replaceable-Flag absenden, können Sie viel Geld sparen: War die Fee deutlich zu niedrig, weshalb die Transaktion nach zwei oder drei Tagen noch immer nicht ausgeführt ist, können Sie es noch einmal mit einer etwas höheren versuchen. Klappt auch das nicht, erhöhen Sie die Gebühr weiter – bis die Transaktion schließlich doch in der Blockchain landet. Das lohnt sich besonders beim Aufräumen des Wallets, wenn Sie das Kleingeld Ihrer Wechselgeldadressen auf eine einzelne Adresse überweisen – solche Transaktionen sind gerne mal mehrere Kilobyte groß und in Zeiten hoher Gebühren entsprechend teuer.

Kinder haften für ihre Eltern

Die dritte Möglichkeit nennt sich „Child pays for Parent“, kurz CpfP, und ist teurer als Replace by Fee. Während bei Replace by Fee nur der Absender einer hängenden Transaktion Beine machen kann, können das bei Child pays for Parent eigentlich nur die Empfänger der Transaktion. Im Normalfall sind das der Besitzer der Empfangsadresse und der Besitzer der Wechselgeldadresse – also der Absender.

Das Verfahren nutzt die Gier der Miner aus, um die wegen zu geringer Transfer-Fee festhängende Transaktion doch noch bestätigt zu bekommen. Es funktioniert aber nur mit Bitcoin-Clients, die den Transfer unbestätigter Gelder erlauben – etwa von noch leeren Wechselgeldadressen wie bei Bitcoin Core oder Electrum.

Um eine eingehende Zahlung, die aufgrund zu niedriger Fee festhängt, zu beschleunigen, geben Sie das Geld schon vorab aus. Dazu genügt eine Überweisung von der Empfangsadresse, auf der das Geld eingehen wird, an eine andere Adresse Ihres Wallets. Bei der Transfer-Fee dürfen Sie allerdings nicht sparen, denn die muss außergewöhnlich hoch sein – so hoch, dass die hängende und die neue Transaktion zusammengenommen noch immer lukrativ für die Miner sind. Bei der Suche nach den lukrativsten Angeboten stolpern die Miner über Ihre fürstlich belohnte Transaktion und wählen sie sofort für den nächsten Block aus. Bei der Überprüfung, ob es sich um eine gültige Transaktion handelt, stellen sie jedoch fest, dass die Input-Adresse noch leer ist. Beim zweiten Blick in den Mempool finden die Miner die hängende Eltern-Transaktion und nehmen, sofern sich das immer noch für sie lohnt, beide in denselben Block auf. So zahlt die Kind-Transaktion die fehlenden Gebühren für die Eltern-Transaktion.

Da es sich um zwei Transaktionen handelt, sind die Gebühren in der Summe höher, als hätte der Absender die Gebühr mit Replace by Fee nachträglich erhöht. Dafür funktioniert Child pays for Parent auch bei Transaktionen ohne Replaceable-Flag und kann vom Empfänger ohne jegliche Kooperation des Absenders durchgeführt werden. So kann man auch Spekulationen des Absenders auf steigende oder fallende Kurse unterbinden, bei denen der Empfänger das Nachsehen hätte. Über diese und andere Tricks und Betrügereien, vor denen man sich beim Handel mit Bitcoins vorsehen sollte, berichten wir in einer späteren Ausgabe von c’t. (mid@ct.de)