Skip to content

circlefin/arc-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Arc

The Economic OS for the internet

Website

Important

Arc is currently in testnet, and this is alpha software currently undergoing audits.

Arc is an open EVM-compatible layer 1 built on Malachite consensus, delivering the performance and reliability needed to meet the new demands of the global internet economy.

Features

  • USDC as Gas - Pay gas in USDC for low, predictable fees on any transaction
  • Deterministic Sub-second Finality - Near-instant settlement finality powered by Malachite BFT consensus engine
  • Circle Platform Integration - Integrates with Circle’s full-stack platform (e.g., USDC, Wallets, CCTP, Gateway) to help you go from prototype to production faster
  • (Coming soon) Opt-in Configurable Privacy - Native privacy tooling enables selective shielding of sensitive financial data while preserving auditability

Documentation

  • 🚀 Execution - Execution binary and configuration
  • 🗳️ Consensus - Consensus binary and configuration
  • More: see Arc developer docs for guides, APIs, and specs

Run a Node

See Installation — Build from Source for how to build and install arc-node binaries, and Running an Arc Node for configuration and startup.

Development

Repository setup

Clone the repository (or pull the latest changes). This repository uses Git submodules; initialize and update them with:

git submodule update --init --recursive

Tip: To automatically fetch submodules on git pull, run in the repo root:

git config submodule.recurse true
git config fetch.recurseSubmodules on-demand

Prerequisites

Install required tools on MacOS with Homebrew:

brew install protobuf node yarn bufbuild/buf/buf

curl -L https://foundry.paradigm.xyz | bash
foundryup

Note: Hardhat only supports even Node.js versions (e.g., 20.x, 22.x). Odd versions like 25.x are not supported. See Hardhat's Node.js support policy for details.

Install JavaScript dependencies:

npm install

Build

Build the project:

make build

Code Quality

Format and lint your code:

make lint

Testing

The test suite includes unit tests, integration tests, contract tests, and smoke tests.

Run tests:

# Unit tests (Rust + linting)
make test-unit

# Integration tests
make test-it

# Contract tests (Solidity)
make test-unit-contract

# Smoke tests (end-to-end validation)
make smoke

# Run all tests
make test-all

Coverage

Generate and view test coverage (requires cargo-llvm-cov):

# Install cargo-llvm-cov on MacOS with Homebrew (one-time setup)
brew install cargo-llvm-cov

# Generate coverage for unit tests
make cov-unit

# Generate HTML report and open in browser
make cov-show

Local Testnet

Launch a full local testnet with 5 execution nodes, 5 consensus nodes, plus Prometheus, Grafana, and Blockscout:

make testnet

Note: If your development environment requires installing custom CA certificates, you can add them to the deployments/certs directory. They must be PEM-encoded and have a .crt extension. They will be automatically installed into the Docker images at build time.

To export a certificate from your system's keychain (macOS):

security find-certificate -p -c '<cert name>' > deployments/certs/<cert name>.crt

Interact with the testnet:

# Spam transactions
make testnet-spam

# Stop the testnet
make testnet-down

# Clean up all resources
make testnet-clean

For an in-depth look at system design and individual components, check out the Architecture Guide. For architectural decisions and their rationale, refer to our Architecture Decision Records (ADRs).

Contributing

We welcome contributions! Please follow these steps:

  1. Format and lint: make lint
  2. Build: make build
  3. Test: make test-unit
  4. Check coverage: make cov-show

For more details, see our Contributing Guide.

Resources

Acknowledgements

arc-node is open-source software, licensed under Apache 2.0, built from a number of open source libraries, and inspired by others. We would like to highlight several of them in particular and credit the teams that develop and maintain them.

Malachite - Malachite, a flexible BFT consensus engine written in Rust, was originally developed at Informal Systems and is now maintained by Circle as part of Arc. We thank Informal Systems for originating and stewarding Malachite, and their continued contributions to the project.

Reth / Paradigm - Reth is an EVM execution client that is used in Arc's execution layer via Reth SDK. We thank the Paradigm team for continuing to push the envelope with Reth and their continued emphasis on performance, extensibility, and customization, as well as their commitment to open source. Additionally, we're big fans of the Foundry toolchain as well!

libp2p - libp2p is used extensively through the arc-node consensus layer, and we thank the team for their development of it.

Tokio - Tokio is used extensively throughout the consensus and execution layers, and we are grateful to the team for their continued development and maintenance of it.

Celo - USDC is the native token on Arc and supports interacting with it through an ERC-20 interface; this "linked interface" design was first (as far as we know) pioneered on Celo, and we'd like to credit the team for devising it.

Alloy-rs - Alloy is used throughout the consensus and execution layers, and we are very thankful to the team for this excellent library.

Revm - Revm is used via the Reth SDK in the execution layer as the core EVM implementation. We thank the team for their continued development and maintenance of it.

Hardhat / Nomic Foundation - we thank the team for their continued development of the Hardhat toolchain.

Viem - we thank the team for their continued development of Viem and other libraries.

Packages

 
 
 

Contributors