Was war der Grund, das EVM zu erfinden?

Was war der Grund, die Ethereum Virtual Machine (EVM) zu erfinden? Warum nicht eine vorhandene virtuelle Maschine wie die Java-VM nutzen. Der große Vorteil wäre, dass die vorhandenen Toolsets für die Java-Entwicklung verwendet werden könnten.

Die gestellte Frage ist zu weit gefasst und würde eine meinungsbasierte Antwort hervorrufen. Könnten Sie es so überarbeiten, dass es mehr um objektive Designziele geht?

Antworten (3)

Der wichtige Punkt in Ihrer Frage ist also, warum eine neue VM und keine Java-VM. ok, wählen wir stattdessen eine Java VM, was bekommen wir? :

1 - komplexer und umfangreicher Bytecode => wie speichert man ihn in der Blockchain zu welchem ​​Preis? (In dem Wissen, dass eine einzelne Java-Methode eine Größe von bis zu 64 KB haben kann) ist eine solche VM oder Sprache nicht platzsparend.

2 - nutzlose Funktionen und Sicherheitsbedenken : Netzwerkzugriff, E/A-Stream, Datei-W/R ... => jede dieser Funktionen impliziert große Sicherheitsprobleme. Denken Sie darüber nach, Sie können einen Code schreiben, der eine andere Maschine anpingt (des Todes) oder auf geschützte Dateien zugreift oder sogar die privaten Schlüssel des Bergmanns stiehlt. Sogar in einer Sandbox könnte ein Fehler auftreten und die Funktion „Schreiben/Lesen“ von Dateien könnte die Sicherheit des gesamten Systems beeinträchtigen. Daher müssen wir all diese Funktionen entfernen, was für eine lizenzierte VM eine schwierige Aufgabe ist. Wir müssen uns daran erinnern, dass eine Blockchain-VM isoliert werden sollte, ohne dass sie mit der externen Umgebung kommunizieren kann.

3- Wenn Sie eine JVM haben, würden Sie Java oder eine andere JVM-Sprache verwenden, die nicht an den Blockchain-Kontext angepasst sind ( fehlender Determinismus, Speicher- und Hardwarezugriff, höhere Ausführungslatenz, Gleitkomma usw. ). Stellen Sie sich vor, Sie haben einen Java-Bytecode mit einem Rand (), was wäre das Ergebnis und wie erreichen Sie dann den Konsens?.

4- Schwacher DDos-Widerstand (wie würden Sie ein Gas-ähnliches System in einer komplexen VM wie Java VM einrichten? ).

3 - JAVA VM ist ein lizenziertes Sun-Produkt , daher können Sie es nicht anpassen, um es in die Umgebung von Ethereum zu integrieren (wie würden Sie beispielsweise die Gaskosten berechnen, um Dos-Angriffe zu vermeiden?)? Um dieses Problem zu lösen, müssen Sie Ihre eigene Java VM schreiben, was eine komplexe Aufgabe ist, lesen Sie: https://softwareengineering.stackexchange.com/questions/71561/java-and-jvm-license .

Außerdem können Sie diese Antwort lesen, warum Sie eine neue Vertragssprache erstellen sollten: Was ist der Vorteil, neue intelligente Vertragssprachen wie Solidity zu erstellen, anstatt andere Sprachen zu verwenden?

Vitalik Buterin hielt am 28. April 2016 eine Präsentation über Ethereum vor Hyperledger und hatte diese Folie:

EVM-Anforderungen

● Kleine Codegröße (damit sehr viele Verträge von vielen Benutzern von einem Knoten gespeichert werden können)

● VM-Sicherheit, die darauf ausgelegt ist, nicht vertrauenswürdigen Code von willkürlichen Parteien auszuführen

● Mehrere Implementierungen (zur Gegenprüfung und zur Verringerung der Entwicklerzentralisierung in der öffentlichen Kette)

● Perfekter Determinismus (für Konsens)

● Unendlicher Schleifenwiderstand

  • Dies selbst muss vollkommen deterministisch bewerkstelligt werden; Timeouts sind ein No-Go

Vitalik verdeutlichte den dritten Punkt als die bei Bitcoin beobachtete Entwicklerzentralisierung, bei der eine einzige Implementierung als Protokoll gilt.

In der Präsentation war keine Zeit vorhanden, um die Bewertung anhand vorhandener virtueller Maschinen zu diskutieren.

Intelligente Verträge müssen ein absolut deterministisches Ergebnis haben, da sie auf mehreren Maschinen ausgeführt werden. Es musste auch den Zustand in der Blockchain speichern. Da keine VM diese Anforderungen erfüllte, musste eine neue erstellt werden. EVM wurde entwickelt, um alle Anforderungen zu erfüllen und gleichzeitig so viel Flexibilität wie möglich zu ermöglichen.