Bitcoin Cash: Hardfork im Mai wird Schnorr-Signaturen aktivieren

Kaum hat sich der Staub um die Hardfork im vergangenen November gelegt, stellt Bitcoin ABC die nächste Hardfork für Bitcoin Cash vor: Am 15. Mai werden Schnorr-Signaturen aktiviert und es wird ein Bug der letzten Hardfork ausgemerzt. Anders als im vergangenen Jahr gibt es nicht nur keinen Streit um die Fork, sondern nicht einmal eine Diskussion.

Es ist herrlich, wenn all die Neinsager und Querköpfe weg sind. Die Entwickler von ABC, die noch im vergangenen November wegen ihrer Hardfork-Pläne unter erheblichen Druck geraten sind, konnten sich nun in Ruhe und Frieden auf einen Weg vorwärts einigen und diesen auch ohne Geschrei und Diskussion umsetzen. Am 15. Mai wird Bitcoin Cash (BCH) erneut eine Hardfork aktivieren. Diese wird allerdings nur zwei Features enthalten: Schnorr-Signaturen und die Rettung von Coins, die versehentlich an SegWit-Adressen gesendet worden sind.

Schnorr als Alternative

Der aufregendste, aber auch komplizierteste Teil der Hardfork sind Schnorr-Signaturen. Der Schnorr-Algorithmus gilt weithin als Verbesserung des von Bitcoin verwendeten ECDSA-Signaturalgorithmus. Wie dieser beruht er auf einer elliptischen Kurve. Er wurde Anfang der 90er vom deutschen Mathematiker Claus-Peter Schnorr entwickelt und patentiert. Das Patent lief jedoch 2008 ab, womit Schnorr rechtlich unbedenklich benutzt werden kann.

Die Firma Blockstream plant schon seit einigen Jahren, Schnorr für Bitcoin zu aktivieren. Nun scheint es jedoch, als käme (ausgerechnet) Bitcoin Cash ihnen zuvor. Es gibt einige Gründe, weshalb Schnorr-Signaturen für Kryptowährungen reizvoll sind: Erstens sind sie ein Stückchen schneller. Zweitens erlauben sie es nativ, mit mehreren Schlüsseln zu signieren, womit sich Multisig-Adressen nicht länger durch die verdächtige „3“ am Anfang verraten. Drittens sind sie von Natur aus resistent gegen Malleabilität. Und viertens ist es möglich, mit Schnorr Signaturen zu verschmelzen, womit eine Transaktion, die aus mehreren Inputs besteht, nicht mehr jede Signatur von jedem einzelnen Input separat mitführen muss. Kurzum: Schorr kann die Skalierbarkeit und die Privatsphäre verbessern, während die Beseitigung der Malleabilität für Bitcoin Cash den Weg zum Lightning-Netzwerk freimacht.

Bei der Implementierung übernimmt Bitcoin ABC im Kern die kryptographische Spezifizierung und Arbeit des Bitcoin-Core-Entwicklers Pieter Wuille. In der konkreten Umsetzung unterscheidet sich die Version von ABC aber stark von der, die Bitcoin Core plant. Ein Vorteil von Schnorr ist dabei, dass es gar nicht so viel anders ist als das bisher verwendete ECDSA: Indem man dieselbe elliptische Kurve secp256k1 benutzt, ist ein ECDSA-Schlüsselpaar auch ein Schnorr-Schlüsselpaar. Privater Schlüssel und Adresse können also gleich bleiben, es ändert sich nur der Vorgang, eine Signatur zu erstellen und zu prüfen. Der Code, um Signaturen zu prüfen, wird dabei so modifiziert, dass er erkennt, welche Art von Signatur vorliegt.

Damit wird es möglich, die neuen Signaturen langsam und relativ undisruptiv einzuführen. Wallets können bleiben, wie sie sind, aber haben auch die Möglichkeit, Schnorr-Signaturen zu benutzen. Langfristig wird es, so die Spezifizierung, sogar möglich, ECDSA vollständig zu entfernen, ohne dass dabei Adressen und Schlüssel blockiert werden. Diesen Vorteilen steht ein theoretischer Nachteil gegenüber – wenn einer der beiden Algorithmen gebrochen wird, sind auch Schlüssel, die diesen nie verwendet haben, kompromitiert.

Zunächst wird Schnorr nur als einfache Signaturoperation eingeführt. Das Verschmelzen der Input-Signaturen wird soweit ich es sehe nicht unterstützt, wie auch Multisig noch nicht Schorr-fähig ist. Damit sind die beiden stärksten Vorteile von Schnorr auch nach der Hardfork noch nicht verfügbar. Was bleibt ist eine geringe Reduktion der Signaturgröße sowie die Beseitigung von „Third-Party-Malleability“, was es möglich macht, Bitcoin Cash ans Lightning-Netzwerk anzubinden.

Rettung für verlorene Coins

Das zweite Element der Mai-Hardfork ist die Bergung von Coins, die an SegWit-Adressen gesendet wurden. Auch dieses Problem ist relativ komplex zu beschreiben. SegWit-Adressen sind ja P2SH (Pay-to-Script-Hash)-Adressen, die offiziell unter „Anyone can spend“ laufen: Jeder kann die Coins auf ihnen ausgeben. Hinter diesem Skript erkennen Nodes und Miner, die das SegWit-Update mitgemacht haben, jedoch ein Skript, das weiterhin eine Signatur verlangt. Wenn eine Kryptowährung wie Bitcoin Cash allerdings kein SegWit kennt, und ein User versehentlich Coins auf eine SegWit-Adresse sendet – etwa weil er die Wallet verwechselt – dann können die Coins quasi von jedem, der sie erkennt, ausgegeben werden.

Bisher war es in solchen Fällen möglich, einen Miner zu bitten, die Coins zu bergen, indem er eine „Nicht-Standard-Transaktion“ gemacht hat. Das war aufwändig und hatte seinen Preis – aber brachte immerhin die Coins zurück. Seit der November-Hardfork ist dies aber nicht mehr möglich. Die ABC-Entwickler haben versehentlich einen Bug eingeführt, der die Transaktion der Miner vollständig ungültig gemacht hat, womit alle Bitcoin Cash, die an SegWit-Adressen gesendet wurden, effektiv eingefroren sind. Mit der Hardfork im Mai soll es nun wieder möglich werden, solche Transaktionen zu bilden.

Es ist zu erwarten, dass die Hardfork reibungslos über die Bühne geht. Eine Diskussion der Features, die diesen Namen verdient, fand und findet nicht statt. Jeder scheint einverstanden zu sein und zu akzeptieren, dass der Release von Bitcoin ABC, der die Hardfork aktiviert, definiert, was Bitcoin Cash ist. Bitcoin Unlimited, im November noch hin- und hergerissen zwischen den beiden Fronten ABC und SV, scheint bereit zu sein, ABC widerspruchslos zu folgen.