Skip to content
Python compiler for the Neo Virtual Machine
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github updated withdraw test Oct 24, 2017
docs Update changelog, version bump Oct 30, 2018
fixtures Update boa tests to work with new awesome fixture setup (#93) Sep 21, 2018
.coverage update fixture wallet Feb 27, 2018
.travis.yml Version bump Aug 26, 2018
CHANGELOG.rst Update changelog, version bump Oct 30, 2018 update license Aug 9, 2018
Makefile updating docs Oct 18, 2017
requirements.txt use coz_bytecode instead of bytecode, move to v0.4.0 Mar 30, 2018
requirements_dev.txt adding python 3.7 compatibility Aug 26, 2018
requirements_test.txt point requirements source back to the CoZ build Oct 20, 2018
setup.cfg Update changelog, version bump Oct 30, 2018


Python compiler for the Neo Virtual Machine

Coverage Status


The neo-boa compiler is a tool for compiling Python files to the .avm format for usage in the Neo Virtual Machine which is used to execute contracts on the Neo Blockchain.

The compiler supports a subset of the Python language ( in the same way that a boa constrictor is a subset of the Python snake species)

What does it currently do

  • Compiles a subset of the Python language to the .avm format for use in the Neo Virtual Machine
  • Works for Python 3.6+
  • supports dictionaries
  • Adds debugging map for debugging in neo-python or other NEO debuggers

What will it do

  • Compile a larger subset of the Python language

Get Help or give help

  • Open a new issue if you encounter a problem.
  • Or ping @localhuman on the NEO official community chatroom.
  • Pull requests welcome. New features, writing tests and documentation are all needed.


Installation requires a Python 3.6 or later environment.


pip install neo-boa


This project contains a Dockerfile to batch compile Python smart contracts. Clone the repository and navigate into the docker sub directory of the project. Run the following command to build the container:

docker build -t neo-boa .

The neo-boa Docker container takes a directory on the host containing python smart contracts as an input and a directory to compile the .avm files to as an output. It can be executed like this:

docker run -it --rm -v /absolute/path/input_dir:/python-contracts -v /absolute/path/output_dir:/compiled-contracts neo-boa

The -v (volume) command maps the directories on the host to the directories within the container.


Clone the repository and navigate into the project directory. Make a Python 3 virtual environment and activate it via:

python3 -m venv venv
source venv/bin/activate

or, to install Python 3.6 specifically:

virtualenv -p /usr/local/bin/python3.6 venv
source venv/bin/activate

Then, install the requirements:

pip install -r requirements.txt


The compiler may be used like in the following example:

from boa.compiler import Compiler


For legacy functionality without NEP8 stack isolation compatibility, use the following:

from boa.compiler import Compiler

Compiler.load_and_save('path/to/your/', use_nep8=False)


You can read the docs here.


Install neo-python ( or use requirements_test.txt) and run the following command

python -m unittest discover boa_test



Accepted at ATEMNPSjRVvsXmaJW4ZYJBSVuJ6uR2mjQU

You can’t perform that action at this time.