Ethereum: Der Gletscher schmilzt, aber Parity bricht weg

Wilde Jahresendzeit bei Ethereum: Die zweitgrößte Kryptowährung ging mit Turbulenzen ins neue Jahr. Es gab eine Hardfork, die verhindert hat, dass eine neue Eiszeit ausbricht, und einen Angriff auf Parity-Clients, der wohl tausende von Knoten vom Netz genommen hat. Ethereum hat die beiden Dramen gut überstanden – aber ein guter Start ins Jahr sieht anders aus.
Bei Ethereum war über die Weihnachtstage die Hölle los. Erstens hatten wir eine sehr straff getaktete Hardfork, die etwas nachgeholt hat, was die Entwickler bei der letzten Hardfork Anfang Dezember vergessen haben. Zweitens nutzte ein Angriff einen Bug in Parity aus, den das Netzwerk nur so schadlos überstanden hat, weil es mit Geth eine zweite Node-Software hat.
Bringen wir ein wenig Klarheit in die Ereignisse.
Muir Glacier: Die Gletscherschmelze
Die letzte Hardfork von Ethereum, Konstantinopel, fand am 8. Dezember. Sie führte einige kleine, für Laien eher kryptische, aber für Techniker wichtige Änderungen ein. Am markantesten dürfte sein, dass die Gaspreise für einige Operationen – also die Gebühren – von den Entwicklern teilweise neu justiert wurden, worin sich der preispolitische Anspruch der Ethereum-Entwickler äußert. Wie so oft hatte ein solcher Eingriff in die Preise auch nicht-beabsichtigte Nebenwirkungen, etwa dass manche Smart Contract außer Funktion gesetzt wurden.
Bei all diesen kleineren Änderungen haben die Entwickler aber vergessen, ein Ritual aller Ethereum-Hardforks zu befolgen: nämlich die Difficulty-Bomb (Schwierigkeits-Bombe) zu entschärfen.
Die Difficulty-Bomb ist relativ einfach zu erklären: Ein Algorithmus in Ethereum lässt die Schwierigkeit des Minings ab einem bestimmten Zeitpunkt exponentiell anwachsen. Das Mining wird erst langsam und kaum spürbar, dann aber immer rasanter schwieriger, bis schließlich das Netzwerk immer in einer neue Eiszeit einfriert. Abschalten kann man den Mechanismus nur durch eine Hardfork, was auch der einzige Grund für seine Existenz ist: Er zwingt die Ethereum-Entwickler dazu, in regelmäßigen Interwallen Hardforks durchzuführen, so lange, bis das Netzwerk den gewünschten Zustand erreicht hat. Die Ethereum-Szene nennt dieses Ziel Serenity oder Ethereum 2.0.
Eine Hardfork meint ein systemweites Upgrade. Alle Knoten im Netzwerk müssen es einspielen, ansonsten sind sie nach der Hardfork nicht mehr Teil des Netzwerks. Weil ein solches Upgrade außerordentlich schwierig zu koordinieren ist, und dabei immer das Risiko besteht, dass viele Knoten auf der Strecke bleiben oder es zu einer unbeachsichtigten Spaltung des Netzwerks kommt, scheuen die Bitcoin-Entwickler eine Hardfork wie kaum etwas anderes.

Die Anzahl der aktiven Knoten im Ethereum-Netzwerk nahm zur Konstantinopel-Hardfork deutlich ab, steht aber derzeit nicht merklich tiefer als im Oktober. Quelle: EtherNodes
Trotz der üblichen Befürchtungen ging die Kontantinopel-Hardfork an sich gut. Zwar hat ein relativ großer Teil der Knoten das Upgrade versäumt – die Anzahl der Full Nodes sank von gut 8.600 auf vorübergehend 7.000 – doch wer wie der Bitcoin-Entwickler Peter Todd daran Kritik übt, übersieht, dass die Anzahl der Nodes erst Ende November von 7.500 auf 8.500 angestiegen ist. Nach der Hardfork pendelte sie sich bei 7.500 ein, steht also genau wieder da, wo sie einen Monat vorher war. Es ist also alles gut.
Ungünstig war dagegen, dass die Ethereum-Entwickler offenbar vergessen haben, die Difficulty-Bombe zu entschärfen. Die Folge war, wie erwartet, dass die Interwalle zwischen den Blöcken kontinuierlich anstiegen, bis sie Ende des Jahres 17 anstatt 12,5 Sekunden betrugen. Auch dies ist noch längst nicht so dramatisch. Weil es über die Endjahrestage relativ ruhig zuging, spürten die User kaum etwas von der verringerten Kapazität des Netzwerks, die Gaspreise – also die Gebühren – blieben stabil, und die Miner konnten es sich sogar erlauben, die Gaslimits je Block nicht vollständig auszuschöpfen.

Die Intervalle zwischen den Blöcken sind über die Weihnachtstage etwas angestiegen. Quelle: EtherScan.io
Aber natürlich musste etwas passieren, um zu verhindern, dass Ethereum vereist. Die Ethereum-Entwickler programmierten also die nächste Hardfork: Muir Glacier. Das könnte eine Art Wortspiel sein; der Muir Glacier in Alaska ist ein relativ schnell schrumpfender Gletscher, womit die Entwickler andeuten, dass die Muir Glacier Hardfork einen Gletscher schmelzt. Der Termin war der 1. Januar, also nicht einmal einen Monat nach der letzten Hardfork und gerade mal zwei Wochen nach der Ankündigung. Aber die straffe Deadline traf offenbar auf ein diszipliniertes und gut informiertes Update. Die Anzahl der Full Nodes war kurz nach dem 1. Januar wieder auf demselben Stand wie zuvor.
Alle haben mitgemacht, es ging also einmal mehr gut.
Schöne Worte für eine schlechte Nachricht
In den Charts sieht man allerdings, dass an Neujahr kurzzeitig rund 3.000 der 7.500 Nodes vom Netz gingen. Das hatte aber weniger mit der Hardfork zu tun, sondern mit einem anderen, nicht weniger dramatischen Ereignis: Es gab einen Bug in Parity.
Parity ist ein Client von Ethereum in der Sprache Rust. Zusammen mit Geth in Go bildet er das Rückgrat von Ethereum; Parity steht dafür, besser zu performen als Geth. Als es 2016 / 2017 einen Bug in Geth gab, konnte nur die Präsenz von Parity das Netzwerk retten, das ansonsten wohl (vorübergehend) abgeschmiert wäre. Dieses Ereignis galt als Beweis dafür, dass mehrere Implementierungen eine Blockchain sicherer machen.
Nun war es an der Zeit für Geth, das Netzwerk zu retten, weil Parity ausfiel. Am 31. Dezember kündete Parity einen Bug an: “Wir haben einige Berichte darüber, dass Parity Nodes nicht synchronisieren, untersucht, und gehen davon aus, dass ein Angriff stattfindet.” Zuvor hatte es auf Github zahlreiche Meldungen darüber gegeben, dass Parity Nodes die Ethereum-Blockchains nicht vollständig synchronisieren können, weil sie einen Block – der laut Geth und den Blockexplorern valide war – als ungültig ansahen. Die Folge war, dass sie steckenblieben.
Dahinter stand wohl ein Angriff. Bitcoin-Sicherheitsforscher Sergio Lerner erklärte ihn mit diesen Worten:
Die Attacke sei simpel: “Man sendet einem Parity-Knoten einen Block mit ungültigen Transaktionen, aber einem gültigen Header (den man von einem anderen Block hernimmt). Der Knoten wird dann den Blockheader als ungültig markieren und immer ablehnen. Doch der Header selbst ist im Netzwerk weiterhin gültig.” Das heißt, ein Angreifer hat es geschafft, es 3.000 Parity-Knoten vorzugaukeln, ein Block sei ungültig, obwohl er gültig war. So einfach war Parity, eine Software, auf der etwa 22 Prozent aller Ethereum-Nodes laufen, vom Netz zu nehmen.

Parity läuft auf 22 Prozent aller Ethereum-Nodes. Quelle: Ethernodes.
Dank Geth lief Ethereum aber dennoch weiter, und die Parity-Knoten hatten genügend Zeit, das von Parity herausgegebene Update einzuspielen und die Blockchain aufzuarbeiten. Es ging noch einmal alles gut. Wenn man mehrere Implementierungen hat, bleibt das Netzwerk auch dann schadlos, wenn eine ausfällt.
Allerdings steht es auf der Kippe, ob Ethereum noch für längere Zeit zwei vollwertige Implementierungen haben wird. Denn wie es aussieht, möchte sich Parity von Ethereum zurückziehen. Das legt ein Post mit dem unscheinbaren Titel “Der Übergang von Parity zur OpenEthereum DAO” nahe. Parity habe, erklärt das Post, als ein Ethereum-Client angefangen, aber begonnen, “Token-agnostisch” zu werden, indem man etwa Clients für BTC, ETC und ZEC entwickelt habe. Mit Substrate, einem Blockchain-und Smart-Contracts-Framework sowie dem Polkadot-Projekt, gehe Parity – die Firma! – noch einen Schritt weiter.
Unter diesen Umständen wird es immer schwieriger möglich, “eine so große, extrem komplexe und mittlerweile auch recht alte Codebase” für Ethereum zu erhalten und dabei an der dezentralen Entscheidungsfindung bei Ethereum teilzunehmen. Daher “geben wir einen unglücklicherweise sehr großen Anteil an Zeit für relativ mundäne Wartungsarbeit aus, die von anderen in der Community besser erledigt werden kann.” Den Stakeholdern sei es immer schwerer zu vermitteln, weshalb man so viel Expertise dafür verwende, “legacy Technologie zu warten.”
Nun zieht Parity die Konsequenz: Die Firma wird nicht länger aktiv am Parity-Client weiterarbeiten, sondern den Code an eine DAO übergeben, die sie warten wird. Parity wird “wiedergeboren als ein neues, dezentrales Projekt”, redet Parity die Entscheidung schön: “als OpenEthereum.” Die Entwickler selbst werden sich in Zukunft auf Polkadot fokusieren, und daher auch ihr offizielles, bezahltes Mandat als ein Serenity-Team mit der Ethereum-Foundation niederlegen.
Anders ausgedrückt: Parity will sein eigenes Ding machen, anstatt sich mit der mühseligen Node-Entwicklung für Ethereum zu mühen. Dass dieses eigene Ding mit Polkadot eine Plattform für verschiedene Blockchains ist, die es noch gar nicht gibt, und für die noch nicht einmal klar ist, ob es jemals eine Marktnachfrage geben wird, ist seltsam. Von einem aktiven Client einer sehr aktiven Blockchain katapultiert sich Parity damit ins Niemandsland der theoretischen Entwicklung ohne Ökosystem.
Die Beziehung zwischen dem Kern von Ethereum – das von der Ethereum-Foundation herausgegebene, offene Geth – und Parity, einem von einer Firma herausgegebenen Client, war in den letzten Monaten und Jahren oft schwierig. Zwar hat Parity sich sehr um Ethereum verdient gemacht, als es in den Jahren 2016 und 2017 zum systemerhaltenen Client wurde; ohne Parity wäre die ICO-Welle dieser Jahre vermutlich niemals zustande gekommen.
Allerdings hat Parity spätestens mit der Polkadot ICO klargestellt, dass sie als Firma planen, Chain-agnostisch werden. Bugs im Multisig-Smart-Contract von Parity haben nicht nur einmal, sondern zweimal einen erheblichen Reputationsverlust nach sich gezogen. Besonders peinlich war, dass Parity dabei auch die eigenen, bei der ICO eingenommenen Ether verloren hat. Dass die Firma dann später leise und laut versucht hat, die Bergung der dadurch eingefrorenen Token – worunter auch die Einnahmen der Firma aus der ICO waren – in eine Hardfork zu bringen, hat die Beziehung weiter verdüstert und Vorwürfe eines Interessenskonfliktes ausgelöst. Zur Eskalation kam es dann, als die Ethereum-Community in Parity ein neues Blockstream vermutet hat, was Feindseligkeiten gegen die Firma zur Folge hat, die den Berliner Release-Manager Afri Schoedon zum Abschied von Ethereum getrieben haben.
Es war also schon lange absehbar, dass Parity und Ethereum einmal getrennte Wege gehen werden. Ein Verlust für die zweitgrößte Kryptowährung ist es aber dennoch.
Kommentar verfassen