anoma / anoma
- четверг, 19 декабря 2024 г. в 00:00:05
Reference implementation of Anoma
This is an implementation of the Anoma protocol, whose specs can be found here.
Work is merged into base on a bi-weekly (once every two weeks)
schedule.
Development can be followed in multiple ways:
To run a working Anoma Node the following dependencies are required:
xcode-select --installDownload the Anoma release for your platform, extract it, and run bin/anoma.
To compile a working Anoma Node the following dependencies are required:
xcode-select --installLIB and INCLUDE environment variables point to this installationmix escript.install hex protobufTo install the dependencies as well as Anoma run:
mix deps.get
mix escript.install hex protobuf
mix compileTo start an Anoma instance run one of these:
iex -S mix # starts an interactive shell
mix run --no-halt # starts a non-interactive shellSee 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:
docker build -t <IMAGE> .
<IMAGE> is your chosen image namedocker 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 hostPlease 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 compileThe 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-darwinOnce 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.