Solidity ist eine statisch typisierte höhere Programmiersprache für Smart Contracts auf der Ethereum Virtual Machine (EVM). Entwickler definieren damit den Vertragszustand, Funktionen, Ereignisse und Regeln für den Umgang mit digitalen Vermögenswerten.
Vom Quellcode zum Smart Contract
Ein Compiler übersetzt Solidity-Quellcode in EVM-Bytecode. Die Application Binary Interface (ABI) beschreibt, wie andere Software Funktionen aufruft und Daten interpretiert. Die Bereitstellung eines Contracts und Änderungen seines On-Chain-Zustands benötigen Transaktionen und Gas. Das Lesen vorhandener Zustände über einen lokalen Node-Aufruf erfordert dagegen nicht unbedingt eine kostenpflichtige Transaktion.
Solidity eignet sich etwa für Token, Treuhandfunktionen und Governance. Die Syntax mag JavaScript-Entwicklern vertraut erscheinen; die Ausführung folgt jedoch Blockchain-Regeln statt dem Verhalten eines Browsers. Compiler-Einstellungen und die vom Zielnetzwerk unterstützten EVM-Funktionen beeinflussen die Kompatibilität.
Einsehbarer Code und Sicherheit
Veröffentlichter, verifizierter Quellcode erleichtert den Abgleich mit einem bereitgestellten Contract, belegt aber nicht dessen Sicherheit. Zugriffsrechte, externe Aufrufe, Annahmen über Oracles und administrative Befugnisse müssen weiterhin geprüft werden.
Eine als private markierte Variable ist auf einer öffentlichen Blockchain kein Geheimnis. Reentrancy kann entstehen, wenn ein externer Aufruf erneut in einen Contract eintritt, bevor dessen Zustand sicher aktualisiert wurde. Tests und unabhängige Sicherheitsprüfungen verringern Risiken, beseitigen sie aber nicht.