Das anstehende Ethereum-Upgrade „Constantinople“ und „Petersburg“ – warum es nun doch kommt und was es mit „Petersburg“ auf sich hat

Das im Jänner aufgrund von Sicherheitsbedenken kurzfristig abgesagte „Constantinople“-Upgrade wird nun doch ausgerollt und zusätzlich im selben Augenblick mit dem „Petersburg“-Upgrade wieder korrigiert. Klingt kompliziert? Ist es auch. Unser Software Developer und Ethereum-Spezialist Johannes Zweng erklärt:

Das bei Block 7.080.000 (~17. Jänner 2019) geplante „Constantinople“-Upgrade, in diesem Fall ein Hardfork, soll nun zusammen mit dem „Petersburg“-Upgrade, das eine Neuerung von „Constantinople“ umgehend wieder rückgängig macht, nachgeholt werden. Das Upgrade wurde aufgrund von Sicherheitsbedenken bei Smart Contracts abgesagt, nachdem es bereits im Oktober 2018 aufgrund eines anderen Problems verschoben wurde. Da einige Ethereum-basierte Blockchains das Constantinople-Upgrade aber bereits vorher durchgeführt hatten und dieses somit nicht mehr widerrufen können, einigte man sich nun darauf, dass das Constantinople-Upgrade mit seinen Sicherheitsbedenken vorerst angewendet werden soll. Unmittelbar danach soll aber das „Petersburg“-Upgrade, das die Sicherheitslücke umgehend wieder schließt, ausgerollt werden.

Im „Constantinople“-Upgrade hätten mehrere einzelne neue Features (sog. EIPs – Ethereum Improvement Proposals) aktiviert werden sollen (siehe hier für eine Auflistung der EIPs in Constantinople). Weniger als zwei Tage vor dem Upgrade, am 15. Jänner, wurde von der Firma ChainSecurity ein mögliches neues Sicherheitsproblem beschrieben, das durch das Constantinople-Upgrade (neue Gas-price-Logik in EIP 1283) entstanden wäre. Für mehr Details zum Sicherheitsproblem empfehlen wir das damalige Blog-Posting der Ethereum Foundation bzw. den Artikel von ChainSecurity, der die Diskussion erst ins Rollen gebracht hat (der entscheidende Hinweis an ChainSecurity kam übrigens aus Österreich, nämlich von Ralph Pichler, einem Ethereum-Spezialisten unseres Forschungspartners  RIAT in Wien, wie ChainSecurity in ihrem Artikel auch dankend erwähnt).

Das Ergebnis war, dass erneut – dieses Mal „in letzter Minute“ – das Update auf „Constantinople“ verschoben wurde.

Da das Upgrade erstmal auf unbestimmte Zeit verschoben wurde, wurde überlegt, wie weiter vorgegangen werden sollte: Soll man das EIP 1283 (in welchem die problematische Änderung der Gas-price-Kalkulation enthalten ist) anpassen bzw. korrigieren? Und wenn ja, wie genau soll das passieren? Ist genug Zeit dafür, das Problem zu lösen? Oder sollte man wie geplant fortfahren und das eine problematische EIP einfach ausklammern?

Schlussendlich hat man sich auf Zweiteres geeinigt: Das eine problematische EIP 1283 soll vorerst aufgeschoben und im nächsten Upgrade sollen erst einmal nur die anderen EIPs, die für „Constantinople“ vorgesehen waren, aktiviert werden (hier nochmals die Liste aller für „Constantinople“ vorgesehenen EIPs).

Aber auch das hat so seine Tücken: Zum Zeitpunkt, als das Upgrade am Ethereum Mainnet (also die produktive Ethereum-Blockchain, die wir alle kennen) abgesagt wurde, war das „Constantinople“-Upgrade auf anderen Ethereum-basierten Blockchains bereits aktiviert. Allen voran auf dem „Ropsten“-Testnet (wobei man hier noch argumentieren hätte können, dass es sich ohnehin nur um Testnet handelt und man dieses daher auch verwerfen und ein neues starten könnte). Aber auch auf anderen, produktiven Blockchains, die ebenfalls auf der Ethereum-Codebasis aufbauen (zum Bsp. in der ARTIS-Blockchain) wurde „Constantinople“ bereits früher aktiviert. Das bedeutet, dass es auf diesen Blockchains schon Transaktionen nach den neuen Regeln gegeben haben kann, die für immer in der Blockchain verankert sind. Man kann diesen Code-Teil also nicht einfach aus dem Source-Code der Ethereum Nodes entfernen, als hätte es ihn nie gegeben.

Um diesem Umstand Rechnung zu tragen, wurde der erste Entschluss nochmal überdacht und beschlossen, dass das Upgrade „Constantinople“ in der vorgesehenen Form (mitsamt der neuen, problematischen Gas-price-Berechnung in EIP 1283) durchgeführt werden soll und ein weiteres, zusätzliches Upgrade (Codename „Petersburg“) quasi „nachgeschoben“ wird, welches nur diese eine problematische Änderung wieder rückgängig machen soll.

Also im Ablauf so:

Das heißt, dass die Blockchains (wie zum Bsp. ARTIS), die „Constantinople“ bereits aktiviert haben, das „Petersburg“-Update nachziehen können. Am Ethereum Mainnet wird es wiederum die besondere Situation geben, dass das „Constantinople“- und „Petersburg“-Upgrade im selben Block (also zeitgleich) aktiviert werden und somit das EIP 1283 zu keinem Zeitpunkt aktiv wird.

Und genau dieses Upgrade (Kombination aus „Constantinople“ und „Petersburg“) wird im Ethereum-Main-Netzwerk bei Block 7280000 – voraussichtlich am 28. Februar – stattfinden. (Countdown: https://amberdata.io/blocks/7280000)

Möchten Sie immer über die neusten Informationen in der Kryptowelt informiert sein? Melden Sie sich für unseren Newsletter an!