Skip to content
This repository has been archived by the owner on Mar 28, 2023. It is now read-only.
/ neo-boa Public archive

Python compiler for the Neo2 Virtual Machine, see neo3-boa for NEO3

License

Notifications You must be signed in to change notification settings

CityOfZion/neo-boa

Repository files navigation

neo-boa

Python compiler for the Neo Virtual Machine

⚠️ This repository is now a public archive

If you want to write smart contracts on Neo using Python check out the new N3 version: neo3-boa.


Coverage Status

Overview

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

Installation requires a Python 3.6 or later environment.

Pip

pip install neo-boa

Docker

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.

Manual

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

Usage

The compiler may be used like in the following example:

from boa.compiler import Compiler

Compiler.load_and_save('path/to/your/file.py')

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

from boa.compiler import Compiler

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

Docs

You can read the docs here.

Tests

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

python -m unittest discover boa_test

License

Donations

Accepted at ATEMNPSjRVvsXmaJW4ZYJBSVuJ6uR2mjQU

About

Python compiler for the Neo2 Virtual Machine, see neo3-boa for NEO3

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages