posthuman - nodes
Arc Network Testnet
Arc Network Testnet websiteArc Network Testnet twitterArc Network Testnet discord

Arc Network Testnet

type:
testnet
chain id:
5042002
rpc:
https://rpc.testnet.arc.io
  • install guide
  • contributions

Arc Network Testnet — Full Node Installation Guide

POSTHUMAN supports Arc by publishing tested, operator-focused infrastructure documentation. This guide installs a non-signing Arc testnet follow node. It does not configure a validator or imply a partnership or endorsement by Arc or Circle.

Tested release: v0.8.0. Always review the official changelog and breaking changes before installation or upgrade.

v0.8.0 is mandatory on Arc Testnet. Circle requires it before timestamp 1788447600 (2026-09-03 15:00 UTC), when Zero8 activates; earlier versions are not supported after that moment. Arc forks activate on a wall-clock timestamp, not a block height — there is no on-chain plan and no approaching height to watch.

v0.8.0 also moves snapshots to Reth V2 storage format. A fresh install from a v0.8.0 snapshot needs no migration; a node restored from an older V1 snapshot does. Read BREAKING_CHANGES.md#v080 before upgrading such a node.

For Arc mainnet (5042), see the Arc Network card.

Requirements

  • Ubuntu 24.04 or another Linux distribution with glibc 2.39+
  • x86_64/amd64 or aarch64/arm64
  • 64 GB+ RAM
  • 1 TB+ TLC NVMe storage
  • stable 24 Mbps+ network connection
  • curl, tar, and sha256sum

The node consists of an Execution Layer (EL) and Consensus Layer (CL). The CL retrieves finalized blocks from Arc relay endpoints, verifies certificates, and sends blocks to the EL for execution.

1. Install verified binaries

The example below uses the official x86_64 Linux release and verifies the release-provided checksum before installation.

ARC_VERSION=v0.8.0 ARC_ARCHIVE=arc-node-v0.8.0-x86_64-unknown-linux-gnu.tar.gz ARC_TMP=$(mktemp -d) mkdir -p "$HOME/.arc/bin" curl -fL --retry 3 \ -o "$ARC_TMP/$ARC_ARCHIVE" \ "https://github.com/circlefin/arc-node/releases/download/$ARC_VERSION/$ARC_ARCHIVE" curl -fL --retry 3 \ -o "$ARC_TMP/$ARC_ARCHIVE.sha256" \ "https://github.com/circlefin/arc-node/releases/download/$ARC_VERSION/$ARC_ARCHIVE.sha256" (cd "$ARC_TMP" && sha256sum -c "$ARC_ARCHIVE.sha256") tar -xzf "$ARC_TMP/$ARC_ARCHIVE" -C "$HOME/.arc/bin" chmod 0755 "$HOME/.arc/bin/arc-node-execution" \ "$HOME/.arc/bin/arc-node-consensus" \ "$HOME/.arc/bin/arc-snapshots"

Verify all binaries:

$HOME/.arc/bin/arc-node-execution --version $HOME/.arc/bin/arc-node-consensus --version $HOME/.arc/bin/arc-snapshots --version

All three must report v0.8.0. The tag resolves to commit 66ad2d5aa6d9b41e8f689812004be4c7233a9e16.

The checksum step above is the only integrity control on this path: Circle states that GPG signature verification is disabled until the Arc release signing key is published.

2. Download snapshots

Arc does not currently support syncing a new node from genesis. Bootstrap both layers from the official snapshot service:

mkdir -p "$HOME/.arc/execution" "$HOME/.arc/consensus" $HOME/.arc/bin/arc-snapshots download \ --chain arc-testnet \ --el-profile=full \ --execution-path "$HOME/.arc/execution" \ --consensus-path "$HOME/.arc/consensus"

--el-profile defaults to minimal, which does not match the --full flag the execution layer uses below. Pass it explicitly, or archive for an archive node — there is no in-place conversion afterwards.

Testnet snapshots are roughly 68 GB compressed EL and 16 GB compressed CL, extracting to about 103 GB and 36 GB.

Do not use --force on an existing node unless you intentionally approved a destructive replacement and backed up required identity/config files.

3. Initialize the consensus identity

Run this once on a new node:

$HOME/.arc/bin/arc-node-consensus init \ --home "$HOME/.arc/consensus"

Back up $HOME/.arc/consensus/config/ securely. Never publish or print the private identity material.

4. Create systemd services

Replace YOUR_USERNAME in both unit files. The recommended same-host setup uses local IPC between EL and CL. RPC and metrics stay on loopback.

Create /etc/systemd/system/arc-execution.service:

[Unit] Description=Arc Node - Execution Layer After=network-online.target Wants=network-online.target [Service] Type=simple User=YOUR_USERNAME Group=YOUR_USERNAME RuntimeDirectory=arc Environment=RUST_LOG=info WorkingDirectory=/home/YOUR_USERNAME/.arc ExecStart=/home/YOUR_USERNAME/.arc/bin/arc-node-execution node \ --chain arc-testnet \ --datadir /home/YOUR_USERNAME/.arc/execution \ --full \ --disable-discovery \ --ipcpath /run/arc/reth.ipc \ --auth-ipc \ --auth-ipc.path /run/arc/auth.ipc \ --http \ --http.addr 127.0.0.1 \ --http.port 8545 \ --http.api eth,net,web3,txpool,trace,debug \ --metrics 127.0.0.1:9001 \ --enable-arc-rpc \ --rpc.forwarder https://rpc.testnet.arc.io/ Restart=always RestartSec=10 KillSignal=SIGTERM TimeoutStopSec=300 LimitNOFILE=1048576 [Install] WantedBy=multi-user.target

Create /etc/systemd/system/arc-consensus.service:

[Unit] Description=Arc Node - Consensus Layer After=arc-execution.service Requires=arc-execution.service [Service] Type=simple User=YOUR_USERNAME Group=YOUR_USERNAME Environment=RUST_LOG=info WorkingDirectory=/home/YOUR_USERNAME/.arc ExecStart=/home/YOUR_USERNAME/.arc/bin/arc-node-consensus start \ --home /home/YOUR_USERNAME/.arc/consensus \ --full \ --eth-socket /run/arc/reth.ipc \ --execution-socket /run/arc/auth.ipc \ --rpc.addr 127.0.0.1:31000 \ --follow \ --follow.endpoint https://rpc.testnet.arc.io,wss=rpc.testnet.arc.io \ --follow.endpoint https://rpc.drpc.testnet.arc.io,wss=rpc.drpc.testnet.arc.io \ --follow.endpoint https://rpc.blockdaemon.testnet.arc.io,wss=rpc.blockdaemon.testnet.arc.io/websocket \ --execution-persistence-backpressure \ --execution-persistence-backpressure-threshold=16 \ --metrics 127.0.0.1:29000 Restart=always RestartSec=10 KillSignal=SIGTERM TimeoutStopSec=300 LimitNOFILE=1048576 [Install] WantedBy=multi-user.target

Review the generated paths before starting:

sudo systemd-analyze verify \ /etc/systemd/system/arc-execution.service \ /etc/systemd/system/arc-consensus.service sudo systemctl daemon-reload sudo systemctl enable arc-execution arc-consensus sudo systemctl start arc-execution sudo systemctl start arc-consensus

5. Verify against external truth

Service state alone is not sufficient. Confirm the local height advances and compare it with an independent Arc RPC.

systemctl is-active arc-execution arc-consensus LOCAL_HEX=$(curl -fsS -H 'Content-Type: application/json' \ --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \ http://127.0.0.1:8545 | jq -r .result) REMOTE_HEX=$(curl -fsS -H 'Content-Type: application/json' \ --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \ https://rpc.testnet.arc.io | jq -r .result) printf 'local=%d remote=%d lag=%d\n' \ "$LOCAL_HEX" "$REMOTE_HEX" "$((REMOTE_HEX-LOCAL_HEX))" curl -fsS http://127.0.0.1:31000/ready

Repeat the height check after 30 seconds. The local height must increase. eth_syncing=false by itself is not proof that the node is current.

Inspect recent logs:

sudo journalctl -u arc-execution -u arc-consensus \ --since '10 minutes ago' --no-pager

Security notes

  • Keep JSON-RPC (8545), CL RPC (31000), and metrics (9001, 29000) on 127.0.0.1 for a normal follow node.
  • Do not expose debug, trace, or txpool namespaces publicly.
  • Do not expose the Engine API. The same-host configuration above uses IPC.
  • A public RPC provider requires Arc's separate hardened RPC-node profile, trusted peers, restricted namespaces, firewall review, and onboarding.
  • Preserve the previous binaries and unit files before every upgrade.

Official resources

Arc is a trademark of Circle Internet Group, Inc. and/or its affiliates.