archethic-foundation / archethic-node

Official Archethic Blockchain node, written in Elixir
GNU Affero General Public License v3.0
69 stars 21 forks source link
arch-consensus archethic blockchain elixir p2p smart-contracts transaction-chain

Archethic

Welcome to the Archethic Node source repository ! This software enables you to build the first transaction chain and next generation of blockchain focused on scalability and human oriented.

Archethic features:

Development

Our codebase aims to reach the guidelines of Elixir projects. We are focusing on the best quality.

The source code can change to respect the best quality of reading and regarding best practices.

Current implemented features:

Running a node for development purpose

Using Elixir

Requirements:

Platforms supported:

At first, clone the repository:

git clone https://github.com/archethic-foundation/archethic-node.git
cd archethic-node

Get dependencies:

mix deps.get

Install the static assets

cd assets ; npm install; cd -

To start a single node:

iex -S mix

To clean the data

make clean

To start mutiple node, you need to update some environment variables:

# Start the first node
iex -S mix

# Start second node
ARCHETHIC_CRYPTO_SEED=node2 ARCHETHIC_P2P_PORT=3003 ARCHETHIC_HTTP_PORT=4001 ARCHETHIC_HTTPS_PORT=5001 iex -S mix

# To start other node, increment the environment variables

Using docker

Requires docker compose plugin

At first, clone the repository:

git clone https://github.com/archethic-foundation/archethic-node.git
cd archethic-node

Build the image:

docker build -t archethic-node .

To start a single node:

# You can run node up to node3
docker compose up node1
docker compose up node2
docker compose up node3

To start all nodes at the same time:

docker compose up

To run benchmarks:

docker compose up bench

To run the playbooks to validate non regression:

docker compose up validate

Using snap

Work in progress ..

Running a node for testnet / mainnet

Will be opened regarding roadmap advancement

Contribution

Thank you for considering to help out with the source code. We welcome contributions from anyone and are grateful for even the smallest of improvement.

Please to follow this workflow:

  1. Fork it!
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Licence

AGPL