Sign inSign up

vyperlang/vyper

By vyperlang

•Updated about 21 hours ago

Image
2

50K+

vyperlang/vyper repository overview

Build Status Documentation Status Discord Telegram Twitter

PyPI Docker

Coverage Status Language grade: Python

⁠Getting Started

See Installing Vyper⁠ to install vyper. See Tools and Resources⁠ for an additional list of framework and tools with vyper support. See Documentation⁠ for the documentation and overall design goals of the Vyper language.

See learn.vyperlang.org⁠ for learning Vyper by building a Pokémon game. See try.vyperlang.org⁠ to use Vyper in a hosted jupyter environment!

Note: Vyper is constantly evolving, use with care and understand the risks associated with smart contract development.

⁠Installation

See the Vyper documentation⁠ for build instructions.

⁠Compiling a contract

To compile a contract, use:

vyper your_file_name.vy

generate bytecode

vyper -f bytecode file-name.vy > file-name.bin

generate abi

vyper -f abi file-name.vy > file-name.abi

There is also an online compiler⁠ available you can use to experiment with the language and compile to bytecode and/or IR.

Note: While the vyper version of the online compiler is updated on a regular basis it might be a bit behind the latest version found in the master branch of this repository.

⁠Contributing

  • See Issues tab, and feel free to submit your own issues
  • Add PRs if you discover a solution to an existing issue
  • For further discussions and questions, post in Discussions⁠ or talk to us on Discord⁠
  • For more information, see Contributing⁠

⁠Contributing Code

⁠Setup

Make sure you have uv installed

  1. Clone this repo and cd into it
  2. Run git fetch --tags [email protected]:vyperlang/vyper.git to get the tags necessary for version inference
  3. Run uv sync
  4. Run source .venv/bin/activate to activate the virtual environment
  5. Run vyper --version to verify the setup
  6. (optional) Run git config blame.ignoreRevsFile .git-blame-ignore-revs to improve git blame
⁠pip

Make sure you have pip (version 25.1 or above), setuptools, and pytest installed

  1. Clone this repo and cd into it
  2. Run git fetch --tags [email protected]:vyperlang/vyper.git to get the tags necessary for version inference
  3. Run python -m venv .venv to create a virtual environment
  4. Run source .venv/bin/activate to activate it
  5. Run make init to install the main dependencies
  6. Run make dev-init to install the dev dependencies
  7. Run vyper --version to verify the setup
  8. (optional) Run git config blame.ignoreRevsFile .git-blame-ignore-revs to improve git blame
⁠Commands
  • vyper path/to/file.vy to run your local copy of the compiler
  • pytest to test your changes Useful pytest flags: * -x: Fail test run on first test failure * --instafail: Show reason for test failure directly, instead of at the end of a test run * --disable-warnings: Hide warnings which occurred during tests
  • make mypy to type check your changes
  • make lint to check your files are correctly formatted (also runs mypy)
⁠Docker Setup

Note: This is only useful for contributors, if you just want to use vyper, look here⁠.

⁠Build the image:

docker build . -t vyper -f Dockerfile

⁠Check it runs:

docker run -v $(pwd):/code vyper --help

⁠Run vyper:

It works like vyper locally, with the difference that you should add /code/ before the local path:

docker run -v $(pwd):/code vyper /code/<path to vy file>

Example:

  • vyper -f abi_python examples/name_registry/name_registry.vy becomes
  • docker run -v $(pwd):/code vyper -f abi_python /code/examples/name_registry/name_registry.vy
⁠Other Tips
⁠Checking performance

To run a python performance profile (to find compiler perf hotspots):

PYTHONPATH=. python -m cProfile -s tottime vyper/cli/vyper_compile.py "$@"

The utility timer functions timeit, profileit and cumtimeit are available in vyper/utils.py.

⁠Getting call graph

To get a call graph from a python profile, install gprof2dot and xdot, and run it like gprof2dot -f pstats stats | xdot -. (See https://stackoverflow.com/a/23164271/⁠).

⁠Testing with hevm

Install hevm by downloading it from the releases page (https://github.com/ethereum/hevm/releases/latest⁠) and making sure it is in your PATH. hevm tests can be enabled with --hevm flag, and hevm tests can be selected with the -m hevm marker. For instance, pytest -m "hevm" --hevm.

⁠Fuzzing tests

Fuzzing test are very slow, so they are not run by default. To run them, use pytest -m "fuzzing".

Tag summary

Content type

Image

Digest

sha256:5f6de8a6d…

Size

207.3 MB

Last updated

about 21 hours ago

docker pull vyperlang/vyper