Was sind die Vor- und Nachteile, neue Sprachen wie Solidity für Smart Contracts zu erstellen, anstatt andere Computersprachen wie Golang oder Python zu verwenden?
Jede Programmiersprache ist für eine bestimmte Einsatzumgebung und Zielaufgaben konzipiert; und diese Einschränkungen bestimmen fast alle Designentscheidungen darüber, welche Funktionen unterstützt und welche weggelassen werden sollen.
Vor einiger Zeit habe ich ziemlich viel Zeit damit verbracht, einen Go -> EVM-Cross-Compiler zu erstellen. Ich habe es geschafft, ein paar triviale Programme auszuführen, und es hat definitiv viel Spaß gemacht, aber ziemlich bald habe ich begonnen, die Grenzen der EVM zu stoßen, die mit den Kernannahmen hinter Go kollidieren:
Diese Herausforderungen waren die Hauptgründe, warum ich mich gegen die Fortsetzung meiner Portierung von Go auf die EVM entschieden habe, aber sie zeigen wirklich, dass moderne Sprachen auf unzähligen Funktionen basieren, die die zugrunde liegenden Betriebssysteme unterstützen, die wiederum auf Annahmen über die zugrunde liegende Hardware beruhen Leistungsfähigkeit und die damit verbundenen Kosten.
Die EVM ist in dieser Hinsicht ein ganz anderes Biest, sodass die Anwendung derselben Annahmen zu einer höchst suboptimalen Codeausführung führt. Daher wurde die Entscheidung getroffen, eine speziell auf die EVM-Ausführungsumgebung zugeschnittene Sprache zu entwickeln. Es ist in der Tat wahrscheinlich viel mehr Arbeit, als eine vorhandene Sprachsyntax (!) zu portieren , aber es führt auch zu einer brauchbaren Umgebung im Vergleich zu allen möglichen "dokumentierten Einschränkungen", dass etwas zwar gültiger Go-Code ist, aber nicht verwendet werden kann weil "xyz".
Beachten Sie, dass es sehr gut sein kann, dass das ursprüngliche EVM-Design schlecht ist und erweitert, aktualisiert oder sogar vollständig ersetzt wird, wenn jemand eine viel bessere Lösung findet, um Dinge zu tun. Aber das ist eine zukünftige Möglichkeit, während Solidität ein aktuelles Bedürfnis ist.
Insbesondere in der Welt der Smart Contracts ist der Code so konzipiert, dass er mit EVM zusammenarbeitet, und daher gibt es einige wichtige Anforderungen an eine Sprache, die in Smart Contracts verwendet werden soll.
Der Compiler muss in der Lage sein, Code auszugeben, der für die Codegröße optimiert ist (während viele andere Sprachen dazu neigen, die Berechnungseffizienz zu optimieren).
Optimieren Sie für Sicherheit und Revisionsfähigkeit.
Es ist auch möglich, dass es andere organisatorische/soziale Vorteile für die Verwendung einer neuen Sprache gibt, wie z
Siehe die andere Antwort von @Péter Szilágyi für ein Beispiel für den Versuch, die Go-Sprache zu verwenden, um in einen EVM-Bytecode zu kompilieren
Referenz: Vitalik antwortet, warum eine neue Sprache in AMA
Es gibt mehrere Herausforderungen. Zunächst einmal neigen vorhandene C++- und andere Compiler dazu, Code auszugeben, der wirklich nicht für kompakte Codegröße optimiert ist; z.B. Selbst das einfachste Programm gibt eine Datei aus, die länger als 4 KB ist. Das ist in Ordnung für Computer, wo Speicher billig ist, aber schrecklich für Blockchains, wo Speicher teuer ist. Daher sind spezialisierte Compiler erforderlich
Zweitens müssen intelligente EVM-Vertragssprachen mit einem besonders starken Fokus auf Sicherheit entwickelt werden, was den meisten bestehenden Sprachen nicht im gleichen Maße am Herzen liegt.
Ich bin mir nicht sicher, ob es einfach wäre, meine Antwort in die Antwort von @ Péter Szilágyi einzufügen, also mache ich sie zu einer separaten.
eth