Bug in Bitcoin Cash (BCH): Vorsicht vor SegWit-Adressen

Bitcoin Cash (BCH) und Bitcoin (BTC) benutzen dasselbe Adressformat. Es war schon immer ungünstig, wenn man versehentlich Bitcoin Cash an eine Bitcoin-Adresse gesendet hat. Eine unbeabsichtliche Folge der November-Hardfork macht die Sache noch schlimmer: BCH, die an eine SegWit-Adresse gesendet werden, sind vorerst nicht mehr zu retten.

Man könnte meinen, die November-Hardfork von Bitcoin Cash (BCH) habe mit dem Coinsplit von Bitcoin SV (BSV) und dem Verfall des Kurses schon genügend Unheil gebracht. Nun zeigt sich allerdings, dass die Fork noch eine weitere unbeabsichtigte, negative Folge hat.

Sende niemals BCH an eine BTC-Adresse. Schon gar nicht, wenn es eine SegWit-Adresse ist

Die ABC-Entwickler haben einen Teil der Regeln von BIP62 – die ein Teil von SegWit sind – für die Fork übernommen. Das Ziel ist es, durch sie die Transaction Mallebility einzuschränken. Eine dieser Regeln bedeutet „Clean Stack“. Die Beschreibung in der ABC-Spezifizierung sagt dem Laien relativ wenig: Eine Transaktion sei nur gültig, „wenn nur ein Item, das ungleich Null ist, im Stack bleiben kann, bis das Script evaluiert ist. Wenn zusätzliche Datenelemente im Stack verbleiben, wird das Script die Transaktion als ungültig bewerten.“

Soso. Und jetzt? Offenbar hat niemand zuvor gewusst, dass die „Clean Stack“-Regel eine unangenehme Folge hat.

Um die Folge zu verstehen, muss man wissen, dass Bitcoin (BTC) und Bitcoin Cash (BCH) dasselbe Adressformat benutzen, das mit einer „1“ oder einer „3“ beginnt. Um Verwechslungen zu vermeiden, hat Bitcoin Cash das „cashaddr“-Format eingeführt, das mit einem „q“ oder einem „p“ beginnt und das Präfix „bitcoincash:“ hat. Da beide Format weiterhin gültig sind, muss jede Wallet allerdings auch das alte Format akzeptieren.

Wenn nun jemand versehentlich BCH an eine BTC-Adresse sendet, ist dies an sich nicht so schlimm. Schließlich gilt ein Schlüssel für eine gewöhnliche Adresse auch auf der anderen Chain. Man muss ihn halt exportieren und woanders importieren, was ein wenig Arbeit ist, vor allem wenn man die Coins auf einer Börse lagert. Aber sie sind im Zweifel nicht verloren.

Unangenehm wird es allerdings, wenn die Bitcoin-Adresse eine SegWit-Adresse ist. Da immer mehr Bitcoin-Wallets und Börsen standardmäßig SegWit-Adressen bilden, kommt dies relativ häufig vor. Das Problem ist, dass sich SegWit durch ein sogenanntes „Anyone-Can-Spend“-Skript in die Transaktion hineinschleicht. Die BTC-Miner verstehen SegWit. Sie sehen den Algorithmus hinter dem Anyone-Can-Spend, und minen die Transaktion nur, wenn sie die zugehörige Signatur veröffentlicht.

Prüfe doppelt, wenn du BCH überweist und die Zieladresse mit einer „3“ oder einem „p“ beginnt

Die BCH Miner dagegen kennen SegWit nicht. Sie nehmen das Anyone-Can-Spend wörtlich: Jeder konnte den Coin ausgeben. Um zu verhindern, dass ein Bitcoin Cash auf einer SegWit-Adresse gestohlen wird, sobald der Besitzer sie durch eine Transaktion enthüllt, hat der Mining-Pool BTC.com einen Service angeboten, mit dem man die Coins retten konnte. Dazu bildet der Pool nach Nachweis des privaten Schlüssels die Transaktion privat, und veröffentlicht sie direkt im Block. Das hat eine Gebühr gekostet und manchmal gedauert, aber es hat immerhin funktioniert. Man konnte die Coins retten.

Die „Clean Stack“-Regel hat nun auch dieses Verfahren obsolet gemacht. Wenn ich es richtig verstehe, macht sie die „Anyone-Can-Spend“-Transaktion ungültig, womit keine Möglichkeit mehr bleibt, von einer SegWit-Adresse aus eine gültige BCH-Transaktion zu bilden. Anders gesagt: Die Coins sind endgültig eingelockt.

Die Entwickler haben das Problem erkannt und diskutieren es in ihrem Videotreffen am 3. Januar. Möglicherweise werden sie das Feature mit der nächsten oder übernächsten Hardfork, also im Mai oder November, wieder entfernen. Für Coins, die bereits an SegWit-Adressen gesendet wurden, besteht also noch Hoffnung.

Bis dahin: Vergewissert euch zweimal, ob ihr wirklich an eine BCH-Adresse sendet, vor allem dann, wenn sie mit einer 3 beginnt.

Über Christoph Bergmann (1504 Beiträge)
Das Bitcoinblog wird von Bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder. Christoph hat vor kurzem ein Buch geschrieben: Bitcoin: Die verrückte Geschichte vom Aufstieg eines neuen Geldes. Das Buch stellt Bitcoin in seiner ganzen Pracht dar. Ihr könnt es direkt auf der Webseite Bitcoin-Buch.org bestellen - natürlich auch mit Bitcoin - oder auch per Amazon. Natürlich freuen wir uns auch über Spenden in Bitcoin, Bitcoin Cash oder Bitcoin SV an die folgende Adresse: 1BergmanNpFqZwALMRe8GHJqGhtEFD3xMw. Wer will, kann uns auch Hier mit Lightning spenden. Tipps für Stories sind an christoph.bergmann@mailbox.org immer erwünscht. Wer dies privat machen möchte, sollte meinen PGP-Schlüssel verwenden.

9 Kommentare zu Bug in Bitcoin Cash (BCH): Vorsicht vor SegWit-Adressen

  1. Was für eine Unordnung und die Folge, wenn man versucht Seite an Seite mit BTC zu sein.
    Dieser zeitnahe Hinweis kann für den ein oder anderen BCH-Holder geldwert sein. Danke!

  2. Danke für den Hinweis. Ich habe zwar noch nie versehentlich an BTC Adresse gesendet, an Segwit erst recht nicht, aber man weiss es nie. Es ist gut immer aufzupassen, wohin man Coins sendet.

  3. Wer hat schon BCH ?selber Schuld,außer von 2017

    • In 2017 gab es für die „Dividende“ noch teils sehr gute Preise zu erzielen…

    • Viele, die Community wächst, es kommen immer neue Projekte hinzu.
      Fühlt sich wie vor der Blocksize Debatte an.
      Auch damals gab es Kritik an Bitcoin: Sind es jetzt die BTC Maximalisten war es früher die halbe Tech Szene, Bänker und co.

  4. Dann muss BCH halt segwit implementieren.

    *weg duck*

  5. Wie soll das mit dem Entfernen denn funktionieren? Da werden doch Leute jetzt eine Datenbank mit allen verwaisten Segwit-Adressen anlegen, die Transaktionen zum Ausgeben schon mal vorbereiten (Anyone can spend) und beim ersten Block, ab dem das wieder geht, wird das Netzwerk geflutet von den Transaktionen, die das Strandgut einsammeln wollen. Kein Zweifel, dass das Netzwerk das schafft. Kombiniere das noch mit einer 51%-Attacke, wie sie Ethereum Classic gerade erlebt hat. Dann ist klar, wer die Coins bekommt. Es stehen mehr als genug Sha-256-Miner auf der Welt, um das zu realisieren. Von Spitzen-Hashrates bei 70 EH ist Bitcoin weit entfernt (ca. 40 EH). Der Rest wartet auf steigende Kurse. Es müsste also möglich sein, für den Tag X etwas zu mobilisieren, wenn genug Strandgut rumliegt. Für BCH braucht man derzeit „nur“ 1-2 EH.
    Also müssen sie wohl doch Segwit einführen, um die Coins geordnet ihren Eigentümern zur Verfügung zu stellen.

    • Man erkennt SegWit-Adresse nicht. Sie sehen genauso aus wie P2SH Adressen (starten mit einer 3 oder einem p). Aber klar könnte man alle P2SH-Adressen indizieren und dann Anyone-Can-Spends vorbereiten.

  6. Interessant. Aber so wie ein Miner entscheiden kann, ob eine Anyone-can-spend-Transaktion gültig ist für eine 3er-Adresse im Unterschied zu einer 3er-Adresse, die eine 2-von-3-Signatur oder sonstiges braucht, muss das ja jeder nachvollziehen können, ob der Anyone-can-spend erfolgreich wäre. Dass ich das nicht mit dem Blick auf die erste Ziffer hinbekomme, ist mir schon klar.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s