Description
Umbrella issue tracking formal verification of Vyper safety properties.
Goals
Prove that Vyper programs, when executed according to our semantics, satisfy key safety properties that prevent common smart contract vulnerabilities.
Safety Properties
Memory Safety
Arithmetic Safety
Control Flow Safety
Type Safety
Approach
Each property follows a similar pattern:
- Define the property - What invariant should hold?
- Identify the mechanism - How does the semantics enforce it?
- Prove base cases - Default values, initial states
- Prove preservation - Each operation maintains the invariant
- Compose - Full program satisfies the property
Priority
Properties are roughly ordered by:
- Security impact (reentrancy, overflow)
- Proof difficulty (some are straightforward case analysis)
- Dependencies (type safety may depend on type-checking implementation)
Non-Goals (for now)
- Gas consumption bounds (requires EVM integration)
- Cross-contract call correctness (external calls still WIP)
- Optimizer correctness (separate work in Venom passes)
Description
Umbrella issue tracking formal verification of Vyper safety properties.
Goals
Prove that Vyper programs, when executed according to our semantics, satisfy key safety properties that prevent common smart contract vulnerabilities.
Safety Properties
Memory Safety
Arithmetic Safety
Control Flow Safety
Type Safety
Approach
Each property follows a similar pattern:
Priority
Properties are roughly ordered by:
Non-Goals (for now)