Skip to main content

Core development

Archethic Node repository can be found here

Technology Stack

Archethic Blockchain node used a combination of Elixir & C programming languages to achieve fast and reliable decentralized network.

Why Elixir ?

Elixir is a dynamic, functional language for building scalable and maintainable applications.

It leverages the Erlang VM, known for running low-latency, distributed, and fault-tolerant systems.

Elixir is successfully used in web development, embedded software, data ingestion, and multimedia processing, across a wide range of industries.

When we are building P2P systems and Blockchain technologies we need to think about fault-tolerance, low-latency, concurrent/parallelism. Elixir matches all those requirements.

Because all Elixir code runs inside lightweight threads of execution (called processes) that are isolated and exchange information via messages, we can build fast processing of data which result in a high TPS for a better scalability.

The unavoidable truth about software running in production is that things will go wrong.

Even more when we take network, file systems, and other third-party resources into account.

Elixir provides supervisors which describe how to restart parts of your system when things go awry, going back to a known initial state that is guaranteed to work.

This feature ensures in case of failure, the entire system will not be down, and the isolation provided by the processes and their restarting strategy helps us to achieve it.

Functional programming promotes a coding style that helps developers write code that is short, concise, and maintainable.

Out of the box, Erlang VM provides the capability to hot reload code, which is the best case scenario if we want to provide an on-chain governance without restarting nodes.

Why C ?

We need to interact with hardware components and C seems the best candidate, so we are using this language to communicate with TPM for instance.

But also, for some intensive task which are really complex in computing, we rely on C to perform those processing.

Structure

Code base is divided into domains (contexts) for better single responsibility principle:

core structure