Mittwoch, 16. August 2017

Bitcoin Transaction kommt nicht an

Meist sind zu niedrige Gebühren schuld, dass Bitcoin Transaktionen unbestätigt bleiben. Dieses liegt m.E. vor allem an der schlechten Bitcoin-Core GUI und es kann zu leicht passieren, dass zu geringe Gebühren berechnet werden und die Transaction auch nach Tagen noch “unconfirmed” ist.

Nun hat man mehrere Möglichkeiten:
  • Noch länger warten und hoffen
  • Ist man Empfänger kann man per “Child-Pays-For-Parent” versuchen mit höheren Gebühren die eingehende Transaktion direkt weiter zu verwenden
  • Die Transaktion “übersteuern” indem die gleichen Coins “nochmal”, dieses mal mit höheren Gebühren, ausgegeben werden (double spending)
  • Durch das Verfahren “Replace by Fee (RBF)” könnte man noch im Nachgang die Gebühr erhöhen. Dazu hätte aber der Bitcoin Core Client vorher mit der Option “-walletrbf” gestartet werden müssen um RBF-Transaktionen zu erstellen.

Meist ist das nicht der Fall. Ich gehe daher wie folgt vor:

  • Zunächst verhindere ich, dass meine Transaction von meinem Client erneut gesendet wird. Dieses erreiche ich, in dem ich den Bitcoin Core Qt client mit der Option -walletbroadcast=0 starte
  • In der GUI suche ich die betreffende Transaktion, wähle diese aus und wähle “Abandon transaction”. Was in der deutschen GUI etwas sperrig mit “Transaction einstellen” übersetzt ist.
  • Wenn das Feld ausgegraut ist, kann man versuchen den Befehl über per RPC abzusetzen. Hierzu kopiert man sich vorher die Transaktions ID und führt den Befehl abandontransaction <txid> im Debug Fenster / Konsole aus.

Falls die Fehlermeldung

Transaction not eligible for abandonment (code -5)

erscheint, beende ich den Bitcoin core client, suche das Daten-Verzeichnis und Lösche die Datei “mempool.dat”.

Danach starte ich den Client erneut und nun sollte “Transaktion Einstellen” auswählbar sein bzw. der RPC Befehl abandontransaction erfolgreich durchgeführt werden.

Später wieder daran denken die Option -walletbroadcast zu entfernen.

4 Kommentare:

D4yw41k3r hat gesagt…

Das hat funktioniert, vielen Dank!!

Frage: Im Blockchain Explorer ist die Transaktion immer noch "unbestätigt". Ist das ok so, oder muss ich der Blockchain noch irgendwie mitteilen, dass die Zahlung storniert worden ist?

tobsen hat gesagt…

Die Transaktion belibt m.E. unbestätigt - schließlich wurden die Coins über eine andere Transaktion eigentlich per "double-spending" ausgegeben. Leider gibt es soweit ich weiß keine Möglichkeit die Zahlung auch im Netzwerk als "storniert" zu markieren. Am dichtesten drann wäre das "Replace by Fee" Feature, welches aber vor der Transaktionserstellung hätte aktiviert sein müssen (siehe Blogeintrag).

D4yw41k3r hat gesagt…

Hmm. Bitcoin core hat gerade für erhöhten Puls bei mir gesorgt, weil er die Transaktion offensichtlich nochmal losgeschickt hatte (nach Neustart und trotz abandontransaction). Wie kann ich dem Client sagen, dass er die ganze Transaktion einstellen und nicht wiederholen soll?

tobsen hat gesagt…

Wie im blogpost beschrieben: walletbroadcast disablen, tx abadon, ggf. mempool.dat löschen. Damit hat dein client die tx vergessen. Das bitcoin netzwerk wird die transaction aber vermutlich noch kennen. Daher dann bitcoin core neustarten und die coins in einer neuen Transaktion verwenden. Wird diese neue transaktion dann akzeptiert ist die alte ungültig, da es sonst zu "double spending" kommt.