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.