Solidity ist die wichtigste Sprache für Smart Contracts auf der Ethereum-Blockchain. Sie ist objektorientiert, statisch typisiert und wird über den Compiler solc in Bytecode für die Ethereum Virtual Machine (EVM) übersetzt.

Kernbefehle und Struktur

  • pragma solidity ^0.8.0; — legt die Compiler-Version fest.
  • contract Token { ... } — definiert einen Smart Contract (ähnlich einer Klasse).
  • constructor() { ... } — wird einmalig beim Deployment ausgeführt.
  • function transfer(address to, uint amount) public { ... } — definiert eine Funktion mit Sichtbarkeit (public, private, internal, external).
  • modifier onlyOwner() { ... } — kapselt Zugriffsprüfungen und wiederverwendbare Logik.
  • require(bedingung, "Fehlermeldung"); — prüft Bedingungen und macht die Transaktion bei Fehlschlag rückgängig.
  • revert("Grund"); — bricht die Ausführung bewusst ab.
  • event Transfer(address indexed from, address indexed to, uint value); — deklariert ein Event für die Blockchain-Logausgabe.
  • mapping(address => uint) public balances; — assoziatives Datenfeld auf der Blockchain.
  • msg.sender, msg.value — globale Variablen für Absender und überwiesenen Wert.

Gas und Sicherheit

Jede Operation auf der EVM kostet Gas — Entwickler optimieren Contracts, um die Gebühren zu senken. Seit Solidity 0.8 schlagen arithmetische Über- und Unterläufe automatisch fehl (Revert), in unchecked { ... }-Blöcken kann man diese Prüfung bewusst deaktivieren.

Der Compiler solc wird meist über das Build-Tool forge (Foundry) oder truffle aufgerufen; solc --version zeigt die installierte Compiler-Version an. Smart Contracts laufen auf der Ethereum-Blockchain; die Transaktionskosten hängen direkt vom Gas-Verbrauch des Bytecodes ab.

Wie Zig vermeidet auch Solidity versteckte Kosten: Dort, wo Zig Speicher explizit verwaltet, macht Solidity jede Ressourcennutzung über Gas sichtbar und abrechenbar. Verwandte Grundlagen: Java-Befehle.