Vyper, Solidity und Scrypto: So vergleichen sich die Smart-Contract-Sprachen

Ein Blick auf drei verschiedene Programmiersprachen für Blockchain-Netzwerke und deren Vergleich.

Das Ethereum-Netzwerk brachte Smart Contracts in den Blockchain-Raum und machte Konzepte wie dezentrale Finanzierung (DeFi) möglich. 

Smart Contracts können Prozesse automatisch ausführen, sobald bestimmte Bedingungen erfüllt sind. Zusammen mit dieser neuen Technologie wurde eine neue Programmiersprache namens Solidity entwickelt.

Da die Blockchain-Industrie weiter wächst und neue Blockchain-Netzwerke entstehen, werden zusätzliche Programmiersprachen in den Raum gebracht, insbesondere Vyper und Scrypto.

Programmiersprachen sind eine Reihe von Regeln, die Text- und Zahlenfolgen in maschinenlesbaren Code umwandeln. Vereinfacht gesagt ermöglichen Programmiersprachen Computern, Anweisungen zu verstehen, die von Menschen eingegeben werden. Wenn es um die Blockchain-Industrie geht, sind Solidity, Python und Javascript einige der am häufigsten verwendeten Sprachen, aber sie funktionieren alle unterschiedlich.

Was ist Festigkeit?

Solidity ist eine objektorientierte Programmiersprache auf hoher Ebene zum Erstellen intelligenter Verträge auf der Ethereum-Blockchain und anderen Blockchain-Netzwerken wie BNB Smart Chain und Avalanche. Die Sprache wurde 2014 entwickelt und weist Ähnlichkeiten mit Programmiersprachen wie JavaScript, C++ und Python auf.

Da es sich bei Solidity um eine Hochsprache handelt, wird Computercode in einer leicht verständlichen und für Menschen lesbaren Weise anstelle von Einsen und Nullen eingegeben. Beispielsweise enthält Solidity-Code Wörter und Ausdrücke wie „Funktion“ und „Vertrag“ sowie geschweifte Klammern und Zahlen.

Da es sich bei Solidity um eine objektorientierte Programmiersprache handelt, dreht sich Solidity um die Verwendung von „Objekten“, bei denen es sich um Codeteile handelt, die wiederverwendet werden können, um ähnliche Codeteile zu erstellen, ohne den ursprünglichen Code jedes Mal neu schreiben zu müssen.

Solidity verwendet auch einen Compiler, um den für Menschen lesbaren High-Level-Code in maschinenlesbaren Code umzuwandeln, der auf der Ethereum Virtual Machine (EVM) ausgeführt wird.

Was ist Vyper?

Vyper ist eine vertragsorientierte, pythonische Programmiersprache für intelligente Verträge, die für die Verwendung mit dem EVM entwickelt wurde. Die Sprache wurde entwickelt, um Solidity zu verbessern, indem sie die Sicherheit und Lesbarkeit des Codes verbessert. Vyper konzentriert sich stark auf die Hörbarkeit seines Codes. Aus diesem Grund ist eines seiner Prinzipien, dass Menschen in der Lage sein sollten, so viel Vyper-Code wie möglich zu lesen. 

Vyper zielt auch darauf ab, es jedem so schwer wie möglich zu machen, irreführenden Code zu schreiben. Einfachheit für den Leser (dh einen Prüfer) ist wichtiger als Einfachheit für den Schreiber (dh Entwickler). Auf diese Weise wird es einfacher, bösartigen Code innerhalb eines Smart Contracts oder einer dezentralen Anwendung (DApp) zu identifizieren.

Was ist Scrypto?

Scrypto ist eine Asset-orientierte intelligente Vertragssprache. Die Sprache wurde von Radix entwickelt, basiert auf Rust und behält die meisten Features von Rust bei, während sie spezifische Funktionen und Syntax für Radix Engine v2 hinzufügt. Da Scrypto Asset-orientiert ist, kann es mit Assets wie Token interagieren, die eine Art Ressource innerhalb der Sprache darstellen. 

In Programmiersprachen wie Solidity existieren ERC-20-Token als Smart Contracts auf dem EVM. Assets in Scrypto sind Ressourcen, die in Containern und Tresoren vorhanden sind. Einfach ausgedrückt ist es, als hätte man einen Eimer (den Behälter) und füllt ihn mit Münzen (dem Vermögenswert), die in einem Sparschwein (dem Tresor) aufbewahrt werden können.

Kürzlich: Die Nachfrage nach Talenten im Bereich Krypto hängt mit zunehmender Reife der Branche weniger vom Markt ab

Scrypto konzentriert sich auch darauf, entwicklerfreundlich zu sein, indem es ihnen erlaubt, nur den notwendigen Code zu schreiben, während sie mit den Containern und Ressourcen interagieren, um die Funktionalität innerhalb einer DApp zu ermöglichen. Sicherheit ist ein weiteres Prinzip, bei dem Entwickler einer DApp spezifische Anweisungen geben können, anstatt pauschale Berechtigungen zu erteilen.

Wie die intelligenten Vertragssprachen verglichen werden

Solidity verfügt über eine große Auswahl an Online-Lernressourcen und viel Community-Unterstützung aufgrund seiner Verwendung in großen Blockchain-Netzwerken wie Ethereum. Solidity verfügt auch über eine breite Palette von Funktionen aus der objektorientierten Programmierung (OOP), wodurch es modular und einfacher zu beheben ist, wenn ein Problem auftritt. Sollte beispielsweise ein Objekt einer bestimmten Klasse ausfallen, könnte dies bis zum Ursprung der Klasse zurückverfolgt werden. 

Dies funktioniert, weil Solidity Kapselung verwendet, was bedeutet, dass jedes Objekt in sich abgeschlossen ist und jede Funktion unabhängig arbeitet. Die Modularität der Programmiersprache ermöglicht es Entwicklern auch, gleichzeitig an mehreren Objekten zu arbeiten, wodurch Smart Contracts effizienter erstellt, repariert und bereitgestellt werden können.

Vyper ist eine einfachere Programmiersprache als Solidity und betont Transparenz, Einfachheit der Sprachstruktur und Hörbarkeit. Vyper hat auch weniger Funktionen als Solidity, was aus Sicherheitsgründen absichtlich so gemacht wurde. Der eingeschränkte Funktionsumfang reduziert die Anzahl der Schwachstellen, die böswillige Akteure ausnutzen können.

Beispielsweise verwendet Solidity Modifikatoren, die angeben, dass Prüfungen vor und nach der Ausführung eines Prozesses durchgeführt wurden. Vyper verwendet jedoch keine Modifikatoren, da die Entwickler glauben, dass dies das Schreiben von irreführendem Code erleichtert. Es ermutigt Einzelpersonen auch, Code zu entwickeln, der durch die Datei springt und die Hörbarkeit verringert. Da in Vyper keine Modifikatoren vorhanden sind, ist es unmöglich, Statusänderungen zum Code hinzuzufügen.

Eine weitere Funktion, die von Vyper ausgeschlossen ist, ist die Vererbung. In Solidity können mehrere Verträge Funktionen von einem übergeordneten Vertrag erben. Wenn es Meinungsverschiedenheiten gibt, ist es auch erforderlich, dass Einzelpersonen die Vorrangnormen verstehen. Vyper verwendet keine Klassenvererbung, da es eine potenzielle Quelle für Komplexität im Code eliminiert, was zu einer verbesserten Hörbarkeit beiträgt. Im Allgemeinen ist Vyper eine minimalistischere Programmiersprache, die einige Funktionalitäten gegen erhöhte Sicherheit und eine bessere Untersuchung ihrer Codebasis eintauscht, um Benutzer von Vyper-basierten Smart Contracts besser zu schützen.

Während Solidity eine der beliebtesten und bekanntesten Programmiersprachen im Blockchain-Bereich ist, haben einige Sprachen einfachere Lernkurven für Entwickler. Darüber hinaus erleichtern einfachere Programmiersprachen die Gewinnung neuer Entwickler für die Branche.

Adam Simmons, Chief Strategy Officer bei RDX Works – den Entwicklern hinter Radix – sagte gegenüber Cointelegraph: „Die richtigen Tools für den Job zu haben, macht einen großen Unterschied – und im Moment haben Blockchain-Entwickler nicht die richtigen Tools. Dabei geht es nicht nur darum, die Sprachen einfacher zu machen, sondern Entwicklertools zu entwickeln, die intuitiv und sicher sind“, fährt er fort:

„Auf seinem Höhepunkt wuchs DeFi in nur zwei Jahren auf über 200 Milliarden US-Dollar TVL – es gibt also eindeutig eine sehr hohe Nachfrage. Doch trotz dieses 200-fachen Kapitalwachstums stieg die Zahl der Entwickler nur um das 2-fache auf insgesamt rund 19,000 (von rund 30 Millionen Entwicklern weltweit).“

Trotz des hohen Wachstums im dezentralisierten Finanzbereich wuchs die Zahl der Entwickler nicht mit der Nachfrage. Simmons glaubt, dass Entwickler Solidity möglicherweise als zu schwierig empfunden haben, um in die Blockchain-Entwicklung überzugehen:

„Aufgrund der steilen Lernkurve von Solidity und der hohen Sicherheitsrisiken zögern Entwickler, Vollzeit in Web3 einzusteigen. Trotz der hochtalentierten Entwickler und Millionen von Dollar, die für Sicherheitsaudits ausgegeben werden, blutet DeFi immer noch Geld aus Hacks und Exploits. Dies allein reicht aus, um Entwickler davon abzuhalten, den Raum zu betreten.“

„Mit den richtigen Sprachen und Tools können Entwickler die gesamte Branche viel schneller wachsen lassen. So wie Spiele-Engines Entwicklern in den 90er Jahren die Werkzeuge zur Verfügung stellten, um die Produktion von Videospielen zu revolutionieren, werden die richtigen Web3-Sprachen und -Tools es Entwicklern ermöglichen, das Wachstum von Web3 zu beschleunigen“, fügte Simmons hinzu.

Auch Scrypto setzt auf Sicherheit, Einfachheit und Benutzerfreundlichkeit. Scrypto-Transaktionen konzentrieren sich auf Vermögenswerte. Sie definieren, wie der Benutzer Systemressourcen verteilen möchte. Sie können auch angeben, wie zurückgegebene Ressourcen vom Benutzer oder einer anderen Komponente in einer Transaktion mit mehreren Komponenten gehandhabt werden sollen.

Transaktionen auf Ethereum sind normalerweise ein Aufruf zu einem Smart Contract (da DApps und Token auf Ethereum Smart Contracts sind). Im Gegensatz dazu beinhalten Transaktionen auf Scrypto das Verschieben von Vermögenswerten von einer Komponente zu einer anderen.

Wenn Benutzer A beispielsweise 10 benutzerdefinierte Token an Benutzer B senden möchte, würde seine Transaktion zeigen, dass er versucht, 10 Token aus dem Tresor abzuheben, der sie enthält. Die Transaktion zeigt auch, dass sie diese Token an die Einzahlungsmethode der Kontokomponente von Benutzer B senden. Da Ressourcen (in diesem Fall die Tokens) irgendwo gespeichert werden müssen, wird ein Bucket (Container) verwendet, um die Tokens von Benutzer A zu Benutzer B zu übertragen.

Im obigen Beispiel überträgt der Benutzer einen Bucket, der die Ressourcen (die Token) enthält, an die Einzahlungsmethode des zweiten Benutzers, anstatt einen Token Smart Contract aufzurufen. Die Interaktion mit DApps funktioniert ähnlich, wobei Benutzer Token von ihren Konten abheben und sie an die relevante Komponente weitergeben, mit der sie interagieren möchten. Zusammenfassend verfolgt Scrypto einen Asset-basierten Ansatz, bei dem Benutzer tatsächliche Assets speichern und weitergeben. Der Asset-basierte Ansatz erleichtert Entwicklern auch das Codieren von DApps, da es einfacher ist, mit Token (Ressourcen), Token-Pools (Tresoren) und Benutzern (Komponenten) zu interagieren.

Ein weiteres Beispiel: Wenn eine Swapping-DApp (wie Uniswap) mit Scrypto codiert wäre, müssten die Entwickler nur die Handelsmethode für den Swap codieren. Zuerst müsste der DEX den eingehenden Container von Token A eines Benutzers identifizieren und dann den Wechselkurs berechnen. Als nächstes werden die eingehenden Token hinterlegt und der DEX sendet die korrekte Menge an Token B an den Benutzer zurück.

Welche Programmiersprache sollten Blockchain-Entwickler wählen?

Entwickler können traditionelle Programmiersprachen (C++, Python, JavaScript) für die Blockchain-Entwicklung sowie speziell entwickelte Lösungen wie Solidity, Vyper und Scrypto verwenden. Mehrere Programmiersprachen können für den Blockchain-Bereich von Vorteil sein, da sie Entwicklern eine Reihe von Tools zur Verfügung stellen, mit denen sie arbeiten können. 

Beispielsweise könnten Entwickler, die mit C++, JavaScript und Python vertraut sind, Solidity attraktiv finden. Entwickler, die mit Python vertraut sind, werden sich möglicherweise für Vyper interessieren, während Entwickler, die mit Rust vertraut sind, möglicherweise die Scrypto-Sprache verwenden.

Kürzlich: Social Tokens werden der Motor von Web3 sein, von Fangemeinden bis hin zu Anreizen

Simmons stimmt dem zu und sagte gegenüber Cointelegraph: „Wenn mehr Sprachen zu Web3 kommen, werden wir wahrscheinlich eine Zeit sehen, in der es einige konkurrierende Ansätze gibt. Da diese Sprachen für den Produktmarkt geeignet sind und Entwicklern vor allem ermöglichen, leistungsstarke, nützliche und sichere DApps zu erstellen, werden wir wahrscheinlich sehen, dass sich die Branche zu denen hingezogen fühlt, die die besten Ergebnisse liefern.“

Solidity wird natürlich die Wahl für Entwickler sein, die an Ethereum und ähnlichen Blockchain-Netzwerken arbeiten möchten. Gleichzeitig könnten Vyper und Scrypto Entwickler anziehen, die Einfachheit und zusätzliche Sicherheit bevorzugen. Scrypto ist möglicherweise auch für Entwickler aufgrund seiner erhöhten Einfachheit und seines anlagenorientierten Ansatzes vorzuziehen.

Quelle: https://cointelegraph.com/news/vyper-solidity-and-scrypto-how-the-smart-contract-languages-compare