Kurz erklärt: Solidity ist eine statisch typisierte, an JavaScript, C++ und Python angelehnte Programmiersprache zur Entwicklung von Smart Contracts, die auf der Ethereum Virtual Machine (EVM) und kompatiblen Netzwerken ausgeführt werden.
Herkunft und Entwicklung
Solidity wurde 2014 von Gavin Wood vorgeschlagen und anschliessend massgeblich von Christian Reitwiessner, Alex Beregszaszi und weiteren Mitgliedern des Ethereum-Teams entwickelt. Die Sprache erschien erstmals 2015 zusammen mit dem Ethereum-Mainnet und wird seither als quelloffenes Projekt gepflegt.
Solidity ist die am weitesten verbreitete Sprache für Smart Contracts. Alternativen im Ethereum-Umfeld sind unter anderem Vyper (Python-nah) und Yul als Zwischensprache. Der Solidity-Compiler (solc) übersetzt den Quellcode in EVM-Bytecode, der von jeder EVM-kompatiblen Blockchain ausgeführt werden kann.
Technische Merkmale
Solidity ist eine vertragsorientierte Sprache. Zentrale Bausteine sind sogenannte contracts, die Zustandsvariablen, Funktionen, Modifier, Events und benutzerdefinierte Typen bündeln.
- Statische Typisierung mit Typen wie
uint256,address,bool,bytesundmapping. - Vererbung zwischen Verträgen sowie abstrakte Verträge und Interfaces.
- Sichtbarkeitsstufen (
public,private,internal,external) für Funktionen und Variablen. - Gas-Modell: Jede Operation verbraucht Gas, das in Gwei abgerechnet wird.
Da einmal veröffentlichte Verträge in der Regel unveränderlich sind, hat Fehlerfreiheit hohe Bedeutung. Bekannte Fehlerklassen sind etwa Reentrancy, Ganzzahl-Überläufe und fehlerhafte Zugriffskontrollen.
Anwendung und Ökosystem
Mit Solidity werden unter anderem Token-Verträge nach den Standards ERC-20, ERC-721 und ERC-1155, dezentrale Finanzanwendungen (DeFi), Börsen-Protokolle und Governance-Systeme (DAOs) umgesetzt.
Zum Werkzeugkasten gehören Entwicklungsumgebungen wie Remix, Hardhat und Foundry sowie Bibliotheken wie OpenZeppelin, die auditierte Standardverträge bereitstellen. Sicherheitsaudits und formale Verifikation sind bei produktiven Verträgen üblich.
Häufige Fragen
Wofür wird Solidity verwendet?
Solidity dient zur Programmierung von Smart Contracts, also von selbst ausführenden Programmen auf Ethereum und EVM-kompatiblen Blockchains. Damit lassen sich Token, DeFi-Anwendungen und andere dezentrale Logiken umsetzen.
Ist Solidity nur für Ethereum nutzbar?
Nein. Solidity-Code wird zu EVM-Bytecode kompiliert und läuft daher auf allen EVM-kompatiblen Netzwerken, etwa Polygon, BNB Smart Chain, Avalanche C-Chain oder Arbitrum.
Welche Sprache aehnelt Solidity?
Die Syntax orientiert sich an JavaScript, C++ und Python. Der Aufbau in Verträgen mit Vererbung und Sichtbarkeitsstufen erinnert an objektorientierte Sprachen.
Kann ein Solidity-Vertrag nachträglich geändert werden?
In der Regel ist veröffentlichter Vertragscode unveränderlich. Änderungen sind nur über Entwurfsmuster wie Proxy-Verträge möglich, die Aufrufe an austauschbare Logikverträge weiterleiten.
Welche Risiken bestehen bei Solidity-Code?
Programmierfehler können zu Verlusten führen, da Verträge oft Werte verwalten und unveränderlich sind. Typische Fehlerklassen sind Reentrancy, Überläufe und mangelhafte Zugriffskontrolle. Audits sind deshalb üblich.
Zusammenfassung
Solidity ist die 2014 vorgeschlagene und ab 2015 mit Ethereum eingeführte Programmiersprache für Smart Contracts. Sie ist statisch typisiert, vertragsorientiert und wird zu EVM-Bytecode kompiliert, der auf Ethereum und kompatiblen Blockchains läuft. Solidity bildet die technische Grundlage vieler Token-Standards und DeFi-Anwendungen.
Weiterführende Quellen
- Solidity Dokumentation (offiziell): docs.soliditylang.org
- Wikipedia: Solidity: de.wikipedia.org