The Arc node can be installed in three ways:
downloading pre-built binaries via arcup,
building from source,
or using Docker images.
After installation, refer to Running an Arc Node for how to start the node (binaries or Docker Compose).
Versions of the Arc node across networks may not be compatible. Consult the table below to confirm which version to run for each network.
| Network | Version |
|---|---|
| Arc Testnet | v0.6.0 |
This repository includes arcup, a script that installs Arc node binaries
into $ARC_BIN_DIR directory, defaulting to ~/.arc/bin:
curl -L https://raw.githubusercontent.com/circlefin/arc-node/main/arcup/install | bashMore precisely, the configured paths
for Arc nodes are based on the $ARC_HOME variable, with ~/.arc as default value.
If $ARC_BIN_DIR is not set, its default value is $ARC_HOME/bin, defaulting
to ~/.arc/bin.
$ARC_BIN_DIR must be part of the system PATH.
To be sure that the binaries installed under $ARC_BIN_DIR are available in
the PATH, load the produced environment file:
source $ARC_HOME/envNext, verify that the three Arc binaries are installed:
arc-snapshots --version
arc-node-execution --version
arc-node-consensus --versionThe arcup script should also be in the PATH
and can be used to update Arc binaries:
arcupThe Arc node source code is available in the https://github.com/circlefin/arc-node repository:
1. Clone arc-node
git clone https://github.com/circlefin/arc-node.git
cd arc-node
git checkout $VERSION$VERSION is a tag for a released version.
Refer to the Versions section to find out which one to use.
2. Install Rust:
Make sure that you have rust installed. If not, it can be installed with the following commands:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/envWith Rust installed, install the dependencies for your operating system:
- Ubuntu:
sudo apt-get install libclang-dev pkg-config build-essential - macOS:
brew install llvm pkg-config - Windows:
choco install llvmorwinget install LLVM.LLVM
These are needed to build bindings for Arc node execution's database.
3. Build and install:
The following commands produce three Arc node binaries:
arc-node-execution, arc-node-consensus, and arc-snapshots:
cargo install --path crates/node
cargo install --path crates/malachite-app
cargo install --path crates/snapshotscargo install places compiled binaries into ~/.cargo/bin, which is added
to PATH by loading ~/.cargo/env.
Include the parameter --root $BASE_DIR to install the compiled binaries into
$BASE_DIR/bin instead (for instance, --root /usr/local).
In either case, Arc node binaries should be in the PATH.
Verify by calling them:
arc-snapshots --version
arc-node-execution --version
arc-node-consensus --versionRunning an Arc node requires two Docker images — one for each layer:
| Image | Description |
|---|---|
arc-execution |
Execution Layer (EL) — EVM, RPC, transaction pool |
arc-consensus |
Consensus Layer (CL) — BFT consensus, follow mode |
You can either pull pre-built images from the public registry or build them from source. Both approaches are described below.
Pre-built multi-arch images (amd64 and arm64) are published to Cloudsmith.
Set $ARC_VERSION to the release from the Versions table,
then pull:
docker pull docker.cloudsmith.io/circle/arc-network/arc-execution:$ARC_VERSION
docker pull docker.cloudsmith.io/circle/arc-network/arc-consensus:$ARC_VERSIONAlternatively, build images from a release tag:
git clone https://github.com/circlefin/arc-node.git && cd arc-node
git checkout v$ARC_VERSION
docker buildx bake \
--set "*.args.GIT_COMMIT_HASH=$(git rev-parse v$ARC_VERSION^{commit})" \
--set "*.args.GIT_VERSION=v$ARC_VERSION" \
--set "*.args.GIT_SHORT_HASH=$(git rev-parse --short v$ARC_VERSION^{commit})" \
--set "arc-execution.tags=arc-execution:$ARC_VERSION" \
--set "arc-consensus.tags=arc-consensus:$ARC_VERSION"After obtaining the images, see Running an Arc Node: Docker for how to start the node.