Altcoins Talks - Cryptocurrency Forum

Local => Kryptowährung Forum => Presse => Topic started by: Ferki on January 08, 2019, 06:18:03 PM

Title: Bug in Bitcoin Cash (BCH): Vorsicht vor SegWit-Adressen
Post by: Ferki on January 08, 2019, 06:18:03 PM
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.

source:  https://bitcoinblog.de/2019/01/08/bug-in-bitcoin-cash-bch-vorsicht-vor-segwit-adressen/