Der Beitrag „Beherrschen Sie die Programmiersprache Solidity in 5 Minuten: Das Rückgrat der Ethereum Smart Contracts“ erschien zuerst auf Coinpedia Fintech News

Einführung:

Haben Sie sich schon einmal gefragt, wie die Eskalation in der Blockchain-Branche unsere Sicht auf digitale Assets völlig verändert hat? Diese Entwicklung wäre ohne Ethereum, eine globale Open-Source-Plattform für dezentrale Apps (dApps), nicht möglich gewesen. Sie ist der Eckpfeiler der nativen Kryptowährung Ether (ETH).

Ether (ETH) ist mit einer aktuellen Obergrenze von 404,86 Milliarden USD nach Bitcoin (BTC) die zweitgrößte Kryptowährung der Welt. Sie ist auch für ihre Proof-of-Stake-Validierungsmethode bekannt. Ethereum ist für jeden zugänglich, der eine skalierbare, programmierbare und dezentralisierte sichere Plattform sucht.

Das grundlegende Potenzial von Ethereum liegt in der primären Sprache für seine Smart Contracts: Solidity. Lassen Sie uns tiefer in die Grundlagen von Solidity eintauchen.

Einführung in Solidität:

Was ist Solidität?

Solidity ist die vorherrschende Sprache, die von Ethereum eingeführt wurde, um Smart Contracts zu erstellen. Es handelt sich um eine hochrangige, objektorientierte, statisch typisierte Sprache, die für Smart Contracts entwickelt wurde. Solidity ist eine relativ neue Sprache, die 2014 von Gavin Wood vorgestellt und später unter Christian Reitwiessner und Alex Beregszaszi weiterentwickelt wurde. Obwohl sie neu ist, ist sie zur Lieblingssprache der Ethereum-Entwickler geworden.

Seine Hauptfunktionen sind die folgenden: Es unterstützt Mehrfachvererbung zusammen mit C3-Linearisierung, komplexen benutzerdefinierten Datentypen, Bibliotheken und sogar Vererbungen und führt außerdem (ABI)Application-Binärinterferenz ein, die die Typensicherheit gewährleistet und die Natural Language Specification einschließt.

Warum Solidity für Ethereum?

Solidity weist Ähnlichkeiten mit Sprachen wie C++, JavaScript und Python auf und läuft auf einer Ethereum Virtual Machine (EVM), die auf Ethereum-Knoten gehostet wird, die mit der Blockchain verbunden sind. Es ist immens nützlich und kann industrielle, nützliche und leistungsstarke Anwendungen erstellen, die benutzerdefinierte Bibliotheken und Vererbung unterstützen. Es gewährleistet eine nahtlose Bereitstellung und Ausführung von Verträgen auf den Ethereum-Knoten.

Die Ethereum Virtual Machine dient in erster Linie als Laufzeitumgebung für Smart Contracts. Sie wird genutzt und ist darauf ausgerichtet, die Sicherheit und Implementierung von nicht vertrauenswürdigem Code über ein internationales Netzwerk öffentlicher Knoten zu gewährleisten.

Solidity kompiliert die von der EVM ausgeführten Ethereum-Bytecodes. Es konzentriert sich auf die Verhinderung eines Denial-of-Service-Angriffs und garantiert, dass die Programme keinen Zugriff auf die Zustände der anderen Programme haben, und bestätigt außerdem die Unterbindung jeglicher Schlussfolgerungen.

Solidity-Syntax und -Struktur

Grundlegende Syntax

Sprachen wie C++, JavaScript und Python beeinflussen Solidity. Solidity verwendet eine ECMAScript-ähnliche Syntax, hat aber eine statische Typisierung. Die für Solidity verwendete Implementierungssprache war C++. Es hat ein imperatives Paradigma, das erfordert, dass Funktionen in jedem Schritt implizit codiert werden.

Es enthält die typischen Datenstrukturen wie Mappings, Arrays und andere Datentypen wie Integer, Booleans und Adressen, die Oops und benutzerdefinierte Strukturen unterstützen. Funktionen sind die grundlegenden Blöcke der Sprache, die die Statusvariablen ändern können und Rückgabetypen haben.

Struktur eines Solidity-Vertrags

Wir beginnen den Smart Contract mit einer Präambel, die das Pragma „Solidity Version“ definiert, das die Version des für den Code verwendeten Solidity-Compilers deklariert und den Namen des Vertrags enthält. Zweitens gibt das Schlüsselwort „Contract“ an, wie der Codeausschnitt mit der Angabe des Vertrags beginnen soll, unter den der Code fällt.

Verträge können analog zu Klassen in OOPs betrachtet werden. Jeder Vertrag hat die folgenden Deklarationen von Zustandsvariablen: Funktionen mit Rückgabetypen und Methoden, Modifikatoren, Ereignisse, Strukturtypen, Enumerationen und Fehler.

Jeder Teil des Codes hat seine eigene Funktion. Statusvariablen werden zum Speichern der Vertragsdaten verwendet, Funktionen zum Definieren des Verhaltens, Ereignisse für die Kommunikation zwischen dem Vertrag und den externen Funktionen und Modifikatoren zum Auferlegen von Regeln.

Schreiben eines einfachen Smart Contracts in Solidity

Einrichten der Entwicklungsumgebung

Solidity Smart Contract kann sowohl im Offline- als auch im Online-Modus implementiert werden

  • Offline-Modus: Um Solidity offline auszuführen, müssen Sie Node.js, Truffle Global und Ganache-CLI auf Ihrem System haben. Anschließend können Sie Smart Contracts implementieren, ein Truffle-Projekt erstellen und über die Truffle-Konsole interagieren.

  • Online-Modus: Remix IDE wird zum Kompilieren und Ausführen der Smart Contracts verwendet. Die folgenden Schritte sind erforderlich:

  1. Beginnen Sie mit der Remix IDE, legen Sie die Umgebung fest und erstellen Sie eine neue Datei

  2. Erstellen Sie einen Smart-Contract-Code und kompilieren Sie ihn

  3. Code bereitstellen und ausführen 

  4. Debuggen und Methodenaufruf

 Beispiel eines einfachen Solidity-Vertrags

//Pragma solidity>=0.4.22///Titel des Vertrags///Autorvertrag Storage{  uint256 private data;     Funktion set(uint256 _data) public{      data=_data;  }  Funktion get() public view returns(uint256){       Return data;  }}

Sehen wir uns ein einfaches Beispiel eines Solidity-Vertrags an:

Ausschnitt:

Der obige Codeausschnitt ermöglicht dem Benutzer, eine einzelne vorzeichenlose Ganzzahl zu speichern. Hier speichert die Set-Funktion die Daten und die Get-Funktion ruft sie ab. Sie können solche kurzen und einfachen Beispiele ausprobieren, um Ihre Reise in diesem Bereich zu beginnen.

Erweiterte Funktionen in Solidity

Vererbung und Bibliotheken

Abgesehen von der übersichtlichen Art, Verträge zu schreiben, ist die Vererbung das bemerkenswerteste Merkmal von Solidity. Vererbung bezieht sich auf die Verwendung von Klassen oder das Vererben der Eigenschaften einer Klasse in OOPS. Ebenso können Benutzer die Eigenschaften und Methoden eines Vertrags in einem anderen erben. Dies macht den Code lesbarer, erleichtert das Schreiben und erhöht die Wiederverwendbarkeit des Codes. Bibliotheken in Solidity sind ein Segen, da sie Ihnen dabei helfen, die Darstellung Ihres Codes zu organisieren, sodass Sie ihn durch entsprechende Änderungen modularisieren können.

Bewährte Sicherheitsmethoden

Sicherheit ist beim Schreiben von Smart Contracts von entscheidender Bedeutung. Es gibt einige häufige Schwachstellen, wie z. B. Reentrancy-Angriffe und Integer-Überläufe. Ein Reentrancy-Angriff liegt vor, wenn Ihr Code anfällig für Ausnutzung ist, wenn eine Funktion einen externen Aufruf durchführt, bevor sie ihren eigenen Status aktualisiert. Daher ermöglicht es dem externen Vertragselement, die Funktion erneut zu betreten und in Aktionen wie das Zurückziehen einzugreifen, indem es diese wiederholt.

Eine weitere Schwachstelle ist der bekannte Integer-Überlauf, der auftritt, wenn das Ergebnis einer Operation die maximale Grenze überschreitet, die der zugewiesene Datentyp enthalten kann. Um diese Schwachstellen zu beheben, wäre es daher am besten, die SafeMath-Bibliothek zu verwenden, gründliche Prüfungen durchzuführen und Checks-Effects-Interactions-Muster zu implementieren.

Die neuesten Methoden, die sich zur Gewährleistung der Sicherheit als wirksam erweisen, sind einfache Vertragsdesigns und Fuzz-Tests, die zwar etwas unkonventionell klingen, aber durch Tests mit zufälligen Daten dabei helfen, versteckte Probleme zu finden. Ein weiterer strategischer Schachzug wären große Kopfgeldprogramme, bei denen die Sicherheitscommunity Beiträge leistet, die Fehler behebt und hohe Kopfgelder aussetzt.

Entwickeln und Bereitstellen von Solidity-Verträgen

Entwicklungs-Workflow

Der Arbeitsablauf ist wie folgt:

  1. Konzeptualisierung der Idee: Der Entwickler sollte einen klaren Zweck für den Vertrag entwickeln.

  2. Verträge schreiben: Schreiben Sie sauberen, lesbaren Code mit IDEs wie Remix IDE, Truffle oder Hardhat.

  3. Testen: Verwenden Sie geeignete Test-Frameworks in den IDEs

  4. Debuggen: Debuggen Sie den Code, um etwaige Probleme zu beheben, und prüfen Sie, ob der Code wie erwartet funktioniert.

  5. Sicherheitscheck: Überprüfen Sie mit Sicherheitstools wie MythX, ob Schwachstellen vorliegen.

  6. Bereitstellen: Stellen Sie abschließend den Vertrag bereit und stellen Sie eine nahtlose Integration sicher.

Bereitstellung im Ethereum-Netzwerk

Bei der Bereitstellung von Smart Contracts muss viel Wert auf die Genauigkeit des Codes gelegt werden. Daher stellen wir unseren Smart Contract vor der Interaktion mit dem Hauptnetzwerk zunächst in Ethereum-Testnetzwerken wie Robstan, Kovan oder Rinkben bereit. Sie ermöglichen es uns, Fehler im Code zu finden und zu beheben. Das neuere Testnetzwerk ist Goerli, das 2018 eingeführt wurde und einen Proof-of-Authority-Konsensmechanismus verwendet.

 Sobald Sie den Vertrag abgeschlossen haben, können Sie ihn im Mainnet bereitstellen. Für die Bereitstellung im Mainnet fallen Gasgebühren in Ether (ETH) an. Daher ist ein genauer Code ohne Unstimmigkeiten erforderlich. Plattformen wie Infura und Metamask stellen Ihnen APIs und Wallet-Dienste zur Verfügung. Sobald Ihre Verträge bereitgestellt sind, sind sie daher unveränderlich und öffentlich.

Eine Alternative zu den herkömmlichen Truffle- und Hardhat-IDEs ist Brownie. Es bietet eine Befehlszeilenschnittstelle und eine interaktive Konsole und verwendet pytest. Daher ist Brownie für Entwickler, die mit Python vertraut sind, sicherlich ein Pluspunkt!

Zukunft von Solidity und Ethereum Smart Contracts

Entwicklung der Solidität

Solidity hat sich unglaublich weiterentwickelt. Der aktuelle Schwerpunkt liegt auf Sicherheitsupdates, Effizienz und Wiederverwendbarkeit. Eine große Community, die hinter dieser Entwicklung steht, verbessert sie ständig und trägt dazu bei, Solidity dorthin zu bringen, wo es heute ist.

Auch das Entwickler-Ökosystem wächst in vielen Ländern. Um Solidity-Entwickler zu werden, benötigen Sie solide Grundlagen in der Computerprogrammierung.

Trends und Innovationen

Aktuelle Trends bei Solidity sind die Entwicklung von Smart Contracts, einschließlich Layer-2-Lösungen, kettenübergreifende Interoperabilität und KI-Integration. Diese Innovation hat die Blockchain-Branche und die Entwicklung von dApps revolutioniert.

Neben dem Fokus auf die Verbesserung der Programmanalyse und Korrektheit zielen die Forscher darauf ab, fortgeschrittene kryptografische Schemata wie das TAVS-E-Voting-Protokoll in Solidity zu integrieren. Um die Benutzerfreundlichkeit zu verbessern und die bytebasierte Analyse zu lösen, werden neue Tools wie SolSEE entwickelt.

Abschluss

Zusammenfassend lässt sich sagen, dass Solidity die Säule von Ethereum und der Entwicklung von Smart Contracts ist. Es bietet ein sicheres, zuverlässiges und gut aufgebautes Framework für die Erstellung von dApps. Da die Blockchain-Technologie in der Branche weiterhin glänzt, bleibt Solidity als ihr Pionier einer der stärksten Wachstumstreiber. Machen Sie also alles bereit und betreten Sie die Arena einer dezentralen Zukunft!

Lesen Sie auch: Kryptographie 101: Der Schlüssel zur Blockchain-Entwicklung für Anfänger