Mana-Ethereum: Vorbereitung auf Konstantinopel

Die Constantinople Hard Fork soll Mitte Januar 2019 im Ethereum Mainnet im Block 7.080.000 stattfinden. In diesem Beitrag diskutieren wir die bevorstehenden Änderungen am Protokoll und beschreiben, wie POA-Netzwerk , Consensys und Compound Finance arbeiten zusammen, um Mena-Ethereum , einen neuen Open-Source-Ethereum-Client, zu entwickeln.

Diese Woche feierte das Mana-Ethereum-Projekt einen Meilenstein – eine vollständige Synchronisierung mit dem Ropsten-Testnetz! Dies ist wichtig, da Ropsten derzeit Konstantinopel betreibt, eine neue harte Gabel mit einer geplanten Veröffentlichung im Januar im Ethereum-Mainnet. Diese Synchronisierung bedeutet, dass Mana-Ethereum den Konstantinopel-Spezifikationen entspricht und es uns ermöglicht, in Zukunft einen voll funktionsfähigen Knoten im Ethereum-Mainnet auszuführen.

Konstantinopel ist ein absichtliches Upgrade – es war von Anfang an Teil der Ethereum-Roadmap. Es ist der zweite Teil eines zweiteiligen Updates namens “Metropolis”. Teil eins, „Byzanz“, wurde im Oktober 2017 integriert.

Konstantinopel wird Funktionen einführen, um die Netzwerkeffizienz zu erhöhen, die Transaktionskosten einiger intelligenter Verträge zu senken und die Mining-Belohnungen von 3ETH auf 2ETH zu senken. Damit wird das Netzwerk weiter auf den Übergang zur Validierung des Proof of Stake vorbereitet, der mit der „Serenity“ einhergeht. (auch als Casper bekannt) harte Gabel.

Nach einer Testphase für Ropsten, in der einige anfängliche Probleme aufgetreten sind, die inzwischen behoben wurden, ist die Veröffentlichung des Hauptnetzes für Konstantinopel jetzt für Block 7.080.000 geplant.

Dank der Zusammenarbeit von Consensys, Compound Finance und dem POA-Netzwerk bereiten wir uns auf Konstantinopel vor, während wir unseren neuen Ethereum-Kunden Mana-Ethereum entwickeln.

Mana-Ethereum

Mana-Ethereum ist ein in Elixir geschriebener Ethereum-Client. Ein Ethereum-Client implementiert die virtuelle Ethereum-Maschine, sodass ein Knoten im Netzwerk mit der Ethereum-Blockchain interagieren kann. Der Kunde muss die im Ethereum Yellow Paper beschriebenen Spezifikationen genau befolgen, um mit der Blockchain zu synchronisieren und Blockbelohnungen, intelligente Verträge und Transaktionen zu überprüfen. Wenn eine harte Gabelung auftritt, muss ein Ethereum-Client seinen Code aktualisieren, um mit den neuen Kettenspezifikationen zu synchronisieren.

Auf jedem Knoten im Netzwerk wird ein Ethereum-Client ausgeführt. Geth und Parity werden von den meisten Knoten verwendet, es gibt jedoch zusätzliche Clients, die das Ökosystem diversifizieren und zur Überprüfung des Protokolls beitragen. Diese Clients sind in einer Vielzahl von Sprachen (wie C ++, Python und sogar JavaScript) geschrieben, um die Eigenschaften und einzigartigen Fähigkeiten jeder Sprache zur Codierung des EVM zu nutzen.

Wir haben uns aus mehreren Gründen für die Implementierung von Mana-Ethereum mit Elixir entschieden.

Wir machen weiterhin Fortschritte bei Mana-Ethereum, da wir 100% der allgemeinen Ethereum-Tests bestehen und bei Ropsten vollständig synchronisiert sind. Um für Konstantinopel zu planen, haben wir alle erforderlichen EIPs (Ethereum Improvement Protocols ) implementiert. So lief es.

Vorbereitung auf Konstantinopel

Die Vorbereitung auf eine geplante harte Gabel ist eine Herausforderung, da jede im Update enthaltene EIP präzise implementiert werden muss. Wir haben Mana-Ethereum für einfache Verzweigung und Codemodularität entwickelt, was bei der Vorbereitung auf Konstantinopel hilfreich war.

Konstantinopel führt 5 neue EIPs in die Ethereum-Plattform ein.

Die meisten dieser Änderungen haben keine großen Auswirkungen auf Blockchain-Benutzer. Intelligente Vertragsentwickler können bei einigen Vorgängen neue Funktionen nutzen und die Gaskosten senken. Diese inkrementellen Verbesserungen dienen dazu, die Netzwerkfunktionalität aufrechtzuerhalten und sich auf eine größere Verschiebung vorzubereiten, wenn „Serenity (Casper)“ den Nachweis des Einsatzes erbringt.

Die größten Auswirkungen auf das Netzwerk können sich daraus ergeben, dass alle Knoten ihre Clients aktualisieren. Auf vielen Knoten werden derzeit ältere Versionen von Ethereum-Clients ausgeführt. Für die Konstantinopel-Gabelung müssen alle Knoten auf die neuesten Client-Versionen aktualisiert werden. Dies sollte zu einem schnelleren und sichereren Netzwerk führen.

Unsere Erfahrung

Während unserer Implementierung stellten wir fest, dass die meisten EIPs einfach zu handhaben waren. Verglichen mit dem Byzanz-Update, mit dem unter anderem zkSNARKs eingeführt wurden, waren die Konstantinopel-Updates einfacher zu implementieren.

Eine Herausforderung, mit der wir konfrontiert waren, betraf SSTORE, den durch EIP-1283 modifizierten Speichervorgang. Vor dieser Implementierung haben wir die anfänglichen Speicherwerte während der Transaktionen überschrieben, da der anfängliche Wert nicht zur Berechnung der Gaskosten benötigt wurde. Mit dieser EIP wurde jedoch die Notwendigkeit eingeführt, auf drei Werte zuzugreifen, um Gas zu berechnen: den Anfangswert, der vor der Transaktionsausführung gespeichert wurde, den aktuellen Wert und den neuen Wert.

Um dieses Hindernis zu überwinden, haben wir einen Speichercache zur Verwendung während der Transaktionsausführung erstellt. Wir können jetzt vom permanenten Speicher (Merkle Patricia Trie) auf den Anfangswert und vom Speichercache auf den aktuellen Wert zugreifen. Die nachfolgenden Werte werden erst nach erfolgreicher Transaktion in den permanenten Speicher geschrieben.

Dieser Caching-Prozess half uns bei der Implementierung von EIP1283 und bot die Möglichkeit, unseren Kunden zu optimieren. Unsere Ausführungsgeschwindigkeit wurde durch Hinzufügen eines Speichercaches um 30% erhöht!

Was kommt als nächstes für Mana-Ethereum

?

Unser Fokus liegt weiterhin auf der Implementierung eines voll funktionsfähigen, produktionsbereiten Kunden. Die Konstantinopel-Synchronisierung war ein wichtiger Meilenstein, und wir arbeiten jetzt an einer JSON-RPC-Blockverarbeitung und einer Warp-Synchronisierungsimplementierung.

Eines unserer Hauptziele beim Mana-Ethereum-Projekt ist die Erstellung eines Ethereum-Clients, der Open Source ist, gut dokumentiert ist und aus sauberem, modularem Code besteht. Wir sind dabei, diesen Kunden von Grund auf aufzubauen, und wir werden weiterhin Fortschritte teilen, wenn wir uns dem Start nähern.

Verbinden Sie sich mit uns:

Website: https://poa.network/

Twitter: https://twitter.com/poanetwork

Medium: https://medium.com/poa-network

Forum: https://forum.poa.network/

Reddit: https://reddit.com/r/poa