Was ist Solidity in der Blockchain? Die Sprache von Ethereum
Solidity ist die wichtigste Programmiersprache, um Smart Contracts auf Ethereum und anderen Blockchains zu schreiben, die die Ethereum Virtual Machine (EVM) nutzen. Die meisten Token, dezentralen Börsen und DeFi-Apps, die du aus einer Krypto-Wallet heraus nutzen kannst, sind in Solidity geschrieben.
Um Krypto zu kaufen oder zu halten, musst du Solidity nicht lernen. Aber die Sprache erklärt, warum jeder den Code von Smart Contracts prüfen kann, warum Bugs in diesem Code Nutzer Geld kosten können und worauf du achten solltest, bevor du einem Token vertraust.
Was ist Solidity in der Blockchain?
Solidity ist eine höhere Programmiersprache, die dafür entwickelt wurde, Smart Contracts zu schreiben: Programme, die dauerhaft auf einer Blockchain gespeichert sind und genau so laufen, wie sie geschrieben sind. Sie ist die Hauptsprache von Ethereum und der vielen Netzwerke, die das Design von Ethereum übernehmen.
Die Idee stammt von Gavin Wood, einem der Mitgründer von Ethereum, aus dem Jahr 2014, und die Sprache wurde danach vom Ethereum-Team entwickelt. Sie ist Open Source und ändert sich weiterhin regelmäßig: Neue Funktionen kommen hinzu, ältere Muster werden abgeschafft. Wenn du JavaScript, C++ oder Python kennst, wird dir Solidity-Code vertraut vorkommen: Er nutzt geschweifte Klammern, Funktionen und Variablen und unterstützt Vererbung, sodass ein Contract auf anderen aufbauen kann.
Drei Merkmale unterscheiden die Programmiersprache Solidity von allgemeinen Programmiersprachen:
- Vertragsorientiert. Der Grundbaustein ist ein Contract, keine App. Ein Contract hält seine eigenen Daten und sein eigenes Geld, und andere Contracts oder Wallets interagieren mit ihm über seine Adresse.
- Statisch typisiert. Jede Variable hat einen festen Datentyp, etwa eine Zahl, eine Adresse oder eine Zeichenkette, den der Solidity-Compiler vor dem Deployment prüft.
- Auf Geld und Gas ausgelegt. Ether zu senden ist Teil der Sprache, und jede Operation kostet Gas, effizienter Code ist für Nutzer also günstiger.
Wie Solidity-Code auf der Ethereum Virtual Machine läuft
Solidity-Code läuft nicht auf einem einzelnen Server. Ein Entwickler schreibt ihn, der Solidity-Compiler wandelt ihn in Bytecode um, und dieser Bytecode wird auf der Blockchain gespeichert, wo jeder Knoten im Peer-to-Peer-Netzwerk ihn in der Ethereum Virtual Machine (EVM) ausführen kann.
Die EVM ist die Laufzeitumgebung, die sich alle Ethereum-Knoten teilen. Wenn du eine Transaktion an einen Contract sendest, führt jeder Knoten denselben Funktionsaufruf mit denselben Eingaben aus und muss zum selben Ergebnis kommen. Deshalb sind Smart Contracts vorhersehbar, und deshalb können sie auch keine Website abrufen oder eine Datei lesen: Alles, was sie nutzen, muss auf der Chain liegen oder mit der Transaktion gesendet werden.
Das Bereitstellen (Deployment) eines Contracts funktioniert wie eine besondere Transaktion. Der Ersteller des Contracts sendet den kompilierten Code an das Netzwerk, zahlt eine Gebühr, die sich nach dem Gaspreis richtet, und der Contract bekommt eine eigene, dauerhafte Adresse. Neu bereitgestellte Contracts lassen sich normalerweise nicht bearbeiten. Entwickler, die später Änderungen vornehmen wollen, müssen das vorab einplanen, zum Beispiel mit einem Upgrade-Mechanismus, der auf eine neue Version verweist.
Wo Solidity Daten speichert
Solidity hat Regeln dafür, wo Daten liegen, die sogenannte Data Location. Werte im Contract-Speicher (Storage) werden auf die Blockchain geschrieben und bleiben dort; Werte im Arbeitsspeicher (Memory) existieren nur, solange eine Funktion läuft. In den Storage zu schreiben, kostet deutlich mehr Gas, und das ist ein Grund, warum sorgfältiger Solidity-Code gespeicherte Daten auf ein Minimum beschränkt.
Ein einfacher Smart Contract in Solidity
Die meisten Einführungen beginnen mit einem einfachen Smart Contract, der eine Zahl speichert. Seine Datei beginnt mit zwei Standardzeilen: einem Kommentar SPDX-License-Identifier, der die Open-Source-Lizenz angibt, und einer Zeile pragma solidity, die festlegt, welche Compiler-Version der Code braucht.
Der Contract selbst, oft SimpleStorage genannt, enthält dann:
- Eine Zustandsvariable wie
uint256 storedNumber, eine Ganzzahl, die im Contract-Speicher liegt. - Eine Funktion
set, die jeder aufrufen kann, um diese Zahl zu ändern. Der Aufruf ist eine Transaktion und kostet deshalb Gas. - Eine Funktion
getmit der Kennzeichnungpublic view returns (uint256), die die Zahl liest, ohne etwas zu ändern. Das Lesen ist kostenlos, wenn du es über deinen eigenen Knoten oder deine Wallet-App machst.
Ein etwas größeres klassisches Beispiel ist ein einfacher Coin. Er führt eine Zuordnung (Mapping) von Adressen zu öffentlichen Guthaben, eine address owner oder einen Minter, den der Konstruktor-Code beim Erstellen des Contracts festlegt, eine Mint-Funktion, die nur die Adresse des Erstellers aufrufen darf, um neue Coins zu erzeugen, und eine Send-Funktion für eine Coin-Überweisung zwischen bestehenden Konten. Jeder ERC-20-Token beruht auf einer ausführlicheren Version derselben Idee.
Entwicklungswerkzeuge und Frameworks
Solidity-Entwickler arbeiten selten in einem einfachen Texteditor. Zu den gängigen Entwicklungswerkzeugen gehören:
- Remix, eine browserbasierte IDE, in der du Smart Contracts in Solidity schreiben, kompilieren und testen kannst, ohne etwas zu installieren.
- Entwicklungs-Frameworks wie Hardhat und Foundry, mit denen Entwickler Contracts testen, die Blockchain simulieren und Smart Contracts per Skript bereitstellen können. Hardhat nutzt JavaScript-Code für Tests; mit Foundry können Entwickler Tests direkt in Solidity schreiben.
- Gemeinsame Bibliotheken mit geprüften Bausteinen, etwa Standard-Token-Contracts, damit Teams Code, der mit Geld umgeht, nicht neu erfinden müssen.
Es gibt auch andere Sprachen. Vyper ist eine einfachere, Python-ähnliche Sprache für die EVM, und andere Blockchains nutzen ganz andere, etwa Rust auf Solana. Für Smart Contracts auf Ethereum ist Solidity aber mit Abstand die häufigste Wahl.
Warum Solidity für dich wichtig ist
Solidity ist für dich wichtig, weil der Code entscheidet, was ein Token oder eine DeFi-App mit deinem Geld tun kann, egal, was auf der Website steht. Auf Ethereum kannst du diesen Code meist lesen: Block-Explorer zeigen für viele Contract-Adressen den verifizierten Quellcode.
Du musst ihn nicht Zeile für Zeile lesen, um einen Teil dieser Informationen zu nutzen:
- Wer darf minten? Kann eine Owner-Adresse unbegrenzt neue Token erzeugen, kann dein Anteil jederzeit verwässert werden.
- Lassen sich Überweisungen blockieren? Bei manchen Contracts kann der Owner Adressen einfrieren oder den Handel pausieren. Bei regulierten Stablecoins ist das normal, bei einem neuen Meme-Token aber ein Warnsignal.
- Ist der Code verifiziert und geprüft? Nicht verifizierter Code ist ein Warnzeichen. Ein Audit beseitigt das Risiko nicht, bedeutet aber, dass jemand den Code auf bekannte Fehler geprüft hat.
In der EU muss jemand, der einen neuen Token öffentlich anbietet, nach MiCA in der Regel ein Kryptowerte-Whitepaper veröffentlichen. Dieses Dokument beschreibt das Projekt, aber nur der Solidity-Contract zeigt, was mit den Token tatsächlich passiert. Passen beide nicht zusammen, entscheidet der Code.
Bugs in Solidity haben einige der größten Verluste bei Krypto verursacht, von Reentrancy-Angriffen, bei denen ein Contract dazu gebracht wird, in derselben Transaktion zweimal auszuzahlen, bis zu einfachen Rechenfehlern. Das ist der Hauptgrund, größere Beträge in bekannten, lange laufenden Contracts zu halten. Auf unserer Seite zu Smart Contracts findest du die weiteren Risiken, und auf der Seite zu ERC-20-Token, wie die meisten Token aufgebaut sind.
So lernst du Solidity
Wenn du Solidity lernen willst, fang mit der offiziellen Dokumentation und ihren Beispiel-Contracts an, die alles abdecken, von einem einfachen Speicher-Contract bis zu Abstimmungen und verdeckten Auktionen. Schreib und teste kleine Contracts in Remix in einem Testnetz, in dem das Ether keinen Wert hat, bevor du etwas mit echtem Geld bereitstellst. Wenn du zuerst Ethereum und Gas-Gebühren verstehst, ist die Sprache viel leichter nachzuvollziehen.
Das Fazit
Solidity ist die Sprache hinter den meisten Smart Contracts auf Ethereum und EVM-kompatiblen Blockchains. Sie verwandelt Regeln über Geld in Code, den jeder Knoten auf dieselbe Weise ausführt. Du musst sie nicht selbst schreiben, aber zu wissen, was sie kann, hilft dir, die richtigen Fragen zu einem Token oder einer App zu stellen, bevor du ihnen deine Krypto anvertraust.
Verwandte Begriffe
Häufige Fragen
Wofür wird Solidity verwendet?
Mit Solidity werden Smart Contracts geschrieben: Token, dezentrale Börsen, Lending-Apps, NFT-Kollektionen und DAOs auf Ethereum und anderen EVM-kompatiblen Blockchains.
Ist Solidity schwer zu lernen?
Die Grundlagen sind gut zugänglich, wenn du JavaScript, Python oder C++ kennst, weil die Syntax vertraut aussieht. Contracts ohne Sicherheitslücken zu schreiben, ist schwieriger, weil Fehler öffentlich sind, echtes Geld kosten und sich nach dem Deployment meist nicht beheben lassen.
Ähnelt Solidity C++?
Teilweise. Solidity übernimmt Ideen aus C++, Python und JavaScript, etwa die Syntax mit geschweiften Klammern und die Vererbung, hat aber eigene Regeln für Gas, Speicher und den Umgang mit Geld, die allgemeine Programmiersprachen nicht haben.
Muss ich Solidity kennen, um in Krypto zu investieren?
Nein. Aber zu wissen, was Solidity ist, hilft dir zu verstehen, warum es das Smart-Contract-Risiko gibt und warum Funktionen, die im Code eines Tokens versteckt sind, etwa wer neue Token erzeugen (minten) darf, für dich als Halter wichtig sind.