docs/index.rst
.. image:: logo.svg :width: 140px :alt: Vyper logo :align: center
Vyper
Vyper is a Pythonic smart contract language that compiles to Ethereum Virtual Machine (EVM) <https://ethereum.org/learn/#ethereum-basics>_ bytecode.
It prioritises security, auditability, and simplicity.
.. _design-principles:
Safety by default
@nonreentrant decorator (see :ref:control-structures)type conversions <type_conversions>Predictable execution
Clean code reuse
Module imports <modules> instead of class inheritanceextcall and staticcall keywords for external contract interactionspure functions <function-mutability> that cannot modify stateVyper eliminates entire vulnerability classes by excluding features that enable dangerous patterns:
.. list-table:: :header-rows: 1 :widths: 25 75
foo(x) always means the same thingThese constraints mean developers cannot accidentally introduce dangerous patterns, even under time pressure or with limited blockchain experience.
Vyper uses decimal (not binary) fixed point numbers. This ensures that literals like 0.1 have exact representations, avoiding the subtle precision errors common in binary floating-point arithmetic.