Installing on macOS#

Note

Verified on macOS 15.5 (Intel, x86_64) against node-scala v1.8.1, 2026-10-28, in a clean environment rather than a new machine: an empty home directory, with Temurin 25.0.5 and Homebrew’s sbt the only JDK and build tool on the PATH, sbt packageAll built the tarball in 8 minutes. Started with the configuration from Join the Public Testnet, the node synced from genesis to the tip, height 100,688, in 17 minutes, and its block IDs matched the public node’s. The JDK came from the Temurin 25 tarball, the same build brew install --cask temurin@25 installs (the cask needs an administrator password).

Also verified on Apple silicon (macOS 15.7.9 on an Apple M1, a GitHub Actions macos-15 runner), 2026-10-28, following this page with its own commands: brew install --cask temurin@25 (Temurin 25.0.4.1, set as JAVA_HOME because the runner ships other JDKs) and brew install sbt (SBT 2.0.8, which builds node-scala’s SBT 1.13 project). sbt packageAll took 2 minutes, and the node synced from genesis to the tip, height 102,301, in 4 minutes, with block IDs matching the public node’s.

Docker is the simplest way to run a node; this page is for running it directly on macOS.

Prerequisites#

  • Homebrew

  • SBT, to build the node: brew install sbt

  • A node configuration file. For the public Testnet, use the one in Join the Public Testnet: the node’s built-in testnet profile is a different network.

Install the JDK#

brew install --cask temurin@25

This installs Eclipse Temurin 25, the JDK version node-scala is built and tested against.

Run from the tarball#

node-scala releases do not ship a node JAR or package (the v1.7.0 to v1.8.1 release assets are only dcc-grpc-server tarballs), and node-scala doesn’t publish a macOS package (.pkg/Homebrew formula). The supported way to run a node is the Docker image ghcr.io/decentral-america/node-scala. To run it directly on macOS, build from source below, then extract the universal tarball and start the node with its bin/ launcher:

tar -xzf node/target/universal/decentralchain-<version>.tgz
decentralchain-<version>/bin/node path/to/config/dcc.conf

There is no single “fat” JAR; the launcher runs the node from the tarball’s lib/ directory.

The node keeps its chain data, wallet and logs in ~/Library/Application Support/dcc-custom-21 with the Testnet configuration (21 is the chain ID ! in hexadecimal). Stop the node and delete that folder to sync again from scratch.

Build from source#

# JDK and SBT, if not already installed
brew install --cask temurin@25
brew install sbt

git clone https://github.com/Decentral-America/node-scala.git
cd node-scala

sbt packageAll   # builds the node tarball (and DEB packages)

The network comes from the configuration file you start the node with; for the public Testnet, use the one in Join the Public Testnet. To also run the unit tests, run sbt checkPR first: it takes over an hour and needs Node.js on the PATH.

See the node-scala README for integration-test setup.

Next steps#

Configuration · Sync and Rollback · Wallet and Generating