Ethereum: Constantinople Hardfork findet doch nicht statt

Mosaik von Konstantin IX Monomachos in der Hagia Sophia. Als Byzantinischer Kaiser hat Monomachus in Konstantinobel, heute Istanbul, geherrscht. Er starb um etwa 1050. Bild von Brad Hostetler via flickr.com. Lizenz: Creative Commons

Kurz bevor die Constantinople Hardfork aktiviert werden sollte, haben die Ethereum-Entwickler sie abgeblasen. Der Grund: Sicherheitsforscher haben einen Bug gefunden. Für Ethereum Node Betreiber bedeutet das: Ihr braucht erneut ein Update.

Die Constantinople Hardfork bei Ethereum hätte eigentlich heute, am 16. Januar, aktiviert werden sollen. Sie galt als unkontrovers und unproblematisch, da sie von allen Entwicklern und Börsen unterstützt wurde. Nun gab die Ethereum Foundation aber bekannt, dass die Fork abgesagt wird:

„Die Ethereum Core Entwickler und die Ethereum Security Community wurden darauf aufmerksam gemacht, dass ChainSecurity am 15. Januar 2019 potentielle Probleme mit Constantinople entdeckt haben. Wir untersuchen die möglichen Probleme und werden ein Update folgen lassen.“ Der Vorsicht wegen haben Schlüssel-Stakeholder der Ethereum-Community beschlossen, „dass es der beste Handlungsweg sein wird, die geplante Constantinople Fork zu verzögern, die bei Block 7.080.000 am 16. Januar 2019 geschehen wäre.“

Jeder, der einen Node betreibt – ob Privatmann, Miner, Börse oder Wallet-Service – muss Geth oder Parity updaten, bevor die Blockchain Block 7.080.000 erreicht. Für Geth gibt es bereits den Release 1.8.21, für Parity Version 2.2.7. Alternativ können User auch zu den Versionen 1.8.19 beziehungsweise 2.2.4 downgraden. Für „normale User“, also die, die MyEtherWallet, Trezor, Ledger oder Metamask verwenden, gibt es nichts zu tun. Ihre Anwendung wird reibungslos weiterlaufen, sobald die Service-Provider ihren Node aktualisiert haben.

Der Grund für die Verzögerung ist, dass ChainSecurity ein Problem mit EIP-1283 entdeckt hat. In einem Post erklärt ChainSecurity in der Tiefe, was es mit dem Bug auf sich hat. EIP-1283 hat die Gaspreise für eine gewisse Operation (SSTORE) gesenkt. Das ist der geplante Effekt. Ein unerwünschter Nebeneffekt davon ist jedoch, dass es zu „reentrancy attacks“ kommen kann, wenn Smart Contracts bestimmte Funktionen ausführen (address.transfer oder address.send).

Das Wiki von Consensys erklärt, das die „Reentrancy Attack“ ein breites Feld von Problemen von Smart Contracts umfasst: „Eine der großen Gefahren bei Aufruf externer Contracts ist, dass diese den Kontrollstrom übernehmen und dadurch deine Daten auf eine Weise ändern können, die die aufrufende Funktion nicht erwartet. Diese Klasse von Bugs kann viele  Formen haben, und die beiden großen Bugs, die zum Kollaps der DAO geführt haben, gehörten zu ihr.“

Der Code von EIP-1283 ist, erklärt ChainSecurity, auf eine überraschende Weise angreifbar: „Er simuliert einen sicheren geteilten Guthaben-Service. Zwei Parteien können sich zusammenschließen, um etwas zu erhalten, darüber entscheiden, wie sie das Guthaben aufteilen, und dann eine Zahlung erhalten, wenn beide einverstanden sind.“ Ein Angreifer kann einen solchen Smart Contract, in den er involviert ist, mit einer Transaktion angreifen. Dann führt der Angreifer eine Storage-Operation durch – die dank der Vergünstigungen durch EIP-1283 nun in eine transfer- oder send-Funktion passt – was die Aufteilung der Guthaben so manipuliert, dass alles zu ihm geht anstatt zu beiden Parteien.

An sich ist ein solcher Vertrag gut vorstellbar. Ein Contract bekommt eine Einzahlung auf verteilt sie nach einem bestimmten Schema an die Inhaber des Contracts. Klingt nützlich. Allerdings haben Sicherheitsanalysen von ChainSecurity und TrailOfBits bislang noch keinen Vertrag auf der Blockchain gefunden, der verletzbar ist. „Es gibt jedoch“, so die Ethereum Foundation, „ein Risiko von mehr als 0 Prozent, dass einige bestehende Verträge berührt werden.“

Um den Analysten die Zeit zu verschaffen, die Risiken mit Sorgfalt zu prüfen, wurde beschlossen, dass die Hard Fork verschoben wird. Wann genau, weiß derzeit noch keiner. Einfach nur EIP-1283 aus den Hardfork-Features zu entfernen, kann ebenfalls unerwünschte Nebeneffekte haben und muss zumindest getestet werden. Außerdem wollen die Ethereum-Entwickler das Feature ja, und vielleicht gibt es eine Möglichkeit, es zu aktivieren, ohne dass sich eine Angriffsfläche aufspannt.

Zu viel Zeit können sich die Entwickler dabei nicht lassen. Denn Constantinople entschärft ja auch die Difficulty Bomb. Das ist ein Algorithmus, der bestimmt, dass die Schwierigkeit des Minings ab einem gewissen Zeitpunkt exponentiell ansteigt. Das geht erst langsam, aber dann immer schneller, bis das Netzwerk quasi eingefroren ist, weil keiner mehr einen Block findet. Sichtbar ist der Effekt schon jetzt: Die Anzahl der am Tag gefundenen Blöcke ist von täglich gut 6.000 im Dezember auf gut 5.500 gesunken. Es ist zu erwarten, dass die Difficulty Bomb ab Februar immer deutlicher zu spüren sein wird.

Über Christoph Bergmann (1435 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 oder Bitcoin Cash an die folgende Adresse: 1BvayiASVCmGmg4WUJmyRHoNevWWo5snqC. 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.

4 Kommentare zu Ethereum: Constantinople Hardfork findet doch nicht statt

  1. Kartoffelkopf // 16. Januar 2019 um 16:22 // Antwort

    Danke Christoph nochmals für die genaue Zusammenfassung!

    Wenn es also keinen Hardfork gibt, ob nun Constantinople oder einen, welcher die Bombe entschärft, dann bleibt die Ethereum-Blockchain stehen.

    Das ist ja abgefahren.

  2. Es ist dem Team von ethereum erst einen Tag vor dem update aufgefallen, dass wenn man nur einen kleinen Parameter im Code verändert, welche krassen Folgen es für das ganze Netzwerk haben kann? Ui, das ging ja nochmal gut. Ein Entwickler von cardano meinte, bei denen könnte es nicht passieren, da der komplette code auf einem mathematischen-Model vorher aufgebaut wurde, dies würde bei ethereum jedoch fehlen.

    • Kartoffelkopf // 17. Januar 2019 um 14:13 // Antwort

      Programmcode ist auch Mathematik. Und wenn Programmcode Fehler enthalten kann, dann kann das ein vermeintlicher mathematischer Beweis auch. Mal abgesehen davon, dass schon die Grundannahmen falsch sein können.

      Imho ist Cardano nur der nächste Halt der Karavane, die sich von Newbies ernährt.

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