This is an implementation of the Anoma protocol, whose specs can be found here.
- Contributors documentation
- Specification
- Developer Docs (Coming Soon™)
- User Docs (Coming Soon™)
Work is merged into base
on a bi-weekly (once every two weeks)
schedule.
Development can be followed in multiple ways:
- Issues are put into the project overview
- This is a good way to see what work is assigned and the various views into how goals are being met
- What's Cooking on Anoma
- Research Forums
- This is good for seeing discussions on the direction of Anoma
- The architecture posts in particular are a practical vision for how the codebase's architecture will evolve. Around two of these get posted per week
- Issues and pull requests
- This is good for viewing new issues and work coming in, but the other views are typically a better way to view this
To run a working Anoma Node the following dependencies are required:
- Mac OS X Development Environment:
- Install Apple Command Line Developer Tools:
xcode-select --install
- Install MacPorts (or equivalent package manager)
- Install Apple Command Line Developer Tools:
- Install ncurses (Mac OS X only)
- Install OpenSSL:
- Mac OS X and Linux: use package manager
- Windows: not required
Download the Anoma release for your platform, extract it, and run bin/anoma
.
Dependencies needed regardless of platform.
- Elixir: consult the installation instructions here
- Rust: consult the installation instructions here.
- Protobuf: consult the installation instructions here
- Elixir plugin for protobufs
protoc-gen-elixir
mix escript.install hex protobuf
Ensure Apple Command Line Developer Tools are installed.
xcode-select --install
Using brew
, install the following dependencies.
brew install elixir cmake protobuf git
Dependencies that you might not have installed.
apt install cmake
- Install Build Tools for Visual Studio 2022 (Workload: Visual C++ build tools)
- Install PowerShell
To install the dependencies as well as Anoma run:
mix deps.get
mix compile
To start an Anoma instance run one of these:
iex -S mix # starts an interactive shell
mix run --no-halt # starts a non-interactive shell
See the Contributing section for how to get the best use of the interactive shell.
Further see the Known issues section if you encounter an issue.
To work with Docker images, do the following:
- Install Docker, this is necessary for both building and running Docker images
- Build the Anoma image from the repository root:
docker build -t <IMAGE> .
<IMAGE>
is your chosen image name
- Run the Anoma image:
docker run -it --network host <IMAGE> <SUBCOMMAND>
<IMAGE>
is the name of Anoma Docker image to be run<SUBCOMMAND>
is interpreted by the Anoma binary--network host
will enable connections from the host
Please read the contributor's guide for in depth details about the codebase.
For some versions of OSX (and Linux), our enacl package may have compilation issues.
To get around it please run
git checkout mariari/no-libsodium
mix clean
mix deps.get
mix compile
The rust compiler can be quite picky about our cairo dependencies. This is likely caused by an incompatible rust-toolchain.
To get around it you may have to run a command like:
rustup toolchain add 1.76.0
# for OSX you may try 1.76.0-aarch64-apple-darwin
Once this is had, the Cairo issues should go away.
This codebase follows a git style similar to git or linux.
New code should be based on base
, and no attempt to keep it up to
sync with main
should be had. When one's topic is ready, just submit
a PR on github and a maintainer will handle any merge conflicts.
There are bi-weekly releases, so do not be afraid if a maintainer says
the PR is merged but it's still open, this just means that it's merged
into next
or main
and will be included in the next scheduled
release.
For more information on a smooth git experience check out the git section in contributor's guide
Happy hacking, and don't be afraid to submit patches.