The following is a list of prerequisites required to start developing on Oasis Core:
Linux (if you are not on Linux, you will need to either set up a VM with the proper environment or, if Docker is available for your platform, use the provided Docker image which does this for you, see below).
NOTE: The repository has the most up-to-date files generated by protoc-gen-go committed for convenience. Installing protoc-gen-go is only required if you are a developer making changes to protobuf definitions used by Go.
(OPTIONAL) jemalloc (version 5.2.1, built with 'je_' jemalloc-prefix)
Alternatively set OASIS_BADGER_NO_JEMALLOC="1" environment variable when building oasis-node code, to build BadgerDB without jemalloc support.
NOTE: jemalloc needs to be installed to the (default) /usr/local prefix (i.e. you can't use ./configure --prefix=$HOME/.local ...) because upstream authors hardcode its path.
In the following instructions, the top-level directory is the directory where the code has been checked out.
Using the Development Docker Image
If for some reason you don't want or can't install the specified prerequisites on the host system, you can use our development Docker image. This requires that you have a recent version of Docker installed.
Oasis development environment with all the dependencies preinstalled is available in the oasisprotocol/oasis-core-dev:master image. To run a container, do the following in the top-level directory:
If you are curious, this target will internally run the following command:
docker run -t -i \
--name oasis-core \
--security-opt apparmor:unconfined \
--security-opt seccomp=unconfined \
-v $(pwd):/code \
-w /code \
All the following commands can then be used from inside the container. See the Docker documentation for detailed instructions on working with Docker containers.