Vyper ist eine vertragsorientierte, pythonartige Programmiersprache für die Ethereum Virtual Machine (EVM). Sie setzt bewusst auf Sicherheit, Einfachheit und Auditierbarkeit: Der Sprachumfang ist kleiner als bei Solidity, dafür sind die Konstrukte leichter formal zu verifizieren. Vyper entstand aus einem Forschungsvorschlag der Ethereum-Community um Vitalik Buterin; die erste Version 0.1.0 erschien 2018, aktuelle Releases sind 0.4.x.
Design-Prinzipien
- Sicherheit: Sichere Smart Contracts sollen natürlich entstehen — nicht gegen die Sprache ankämpfen.
- Einfachheit: Compiler und Sprache leicht verständlich halten.
- Auditierbarkeit: Maximale Lesbarkeit des Codes, weniger Angriffsfläche für Overengineering.
Bewusst fehlen: Modifier, komplexe Vererbung, Operator-Überladung und unbegrenzte Rekursion.
Syntax-Grundlagen
# @version 0.4.0
owner: public(address)
@external
def set_owner(new_owner: address):
self.owner = new_owner
@view
def get_owner() -> address:
return self.owner
Vyper ist statisch typisiert und einrückungsbasiert wie Python. Wichtige Bausteine: Dekorateure wie @external, @view, @pure, @payable und @nonpayable; Typen wie uint256, int128, bool, address, bytes32, Strings, Arrays, HashMap, Structs und Events; self. für Zustandsvariablen.
Compiler und Werkzeuge
vyper contract.vy # Bytecode auf stdout
vyper -f abi contract.vy # ABI als JSON
vyper -f bytecode contract.vy
vyper --version
Installation per pip install vyper oder Docker-Image; zum Experimentieren gibt es try.vyperlang.org. Entwicklungs-Frameworks mit Vyper-Support sind Ape (ape compile, ape test) und Brownie (brownie compile). Gegenüber Solidity erzeugt Vyper oft kleineren Bytecode — ein Vorteil bei den Gas-Kosten des Deployments.
Verwandte Grundlagen: Solidity-Befehle, Move-Befehle, Cairo-Befehle, Python-Befehle.