c8ntinuum builds the ctmd node binary from source. Use this page when you need a local developer build, an installed binary, or a self-contained distribution bundle.
The ctmd source (Apache 2.0) will be published in a public GitHub repository; the repository is to be announced. The steps on this page assume a checkout of that repository. Until it is published, use the release binaries listed in metadata.json: install them with deploy.sh as described in Full Node Installation, or, for a validator, with the manual mainnet install.
For local chain startup after the binary is built, see Local Development.

What gets built

The top-level Makefile builds ctmd from evmd/cmd/evmd. Builds use CGO and first build the Rust SP1 verifier dynamic library from rust/sp1verifier. The usual developer targets are:
make build creates a development binary under build/. make install installs the binary into BINDIR, which defaults to $(go env GOPATH)/bin or $HOME/go/bin if GOPATH is not available.

Prerequisites

  • Go matching go.mod and evmd/go.mod
  • make
  • Rust and Cargo for rust/sp1verifier
  • A working C toolchain for CGO builds
  • macOS dynamic-library tooling: otool and install_name_tool
  • Linux dynamic-library tooling: ldd; patchelf is recommended
Ledger support is enabled by default and requires gcc. To build without ledger support:
RocksDB support is enabled by default. If RocksDB is not detected, the build falls back to goleveldb unless ROCKSDB_REQUIRED=true is set. The build expects RocksDB 10.9.1, the version the grocksdb v1.10.7 bindings target. The Makefile checks only that RocksDB headers and libraries are present, not their version.

macOS setup

Install the Xcode Command Line Tools:
For a local RocksDB-backed build, install RocksDB and companion libraries with Homebrew:
Check the installed RocksDB version with brew info rocksdb; the build expects 10.9.1. The build system uses Homebrew prefixes when available and uses install_name_tool to fix local dynamic-library paths.

Linux setup

Install the core build tools and dynamic-library helpers:
If your distribution ships a RocksDB 10.9.1 development package, install it. Otherwise, build RocksDB 10.9.1 from source and set ROCKSDB_PREFIX, ROCKSDB_INCLUDE_DIR, or ROCKSDB_LIB_DIR so the Makefile can find it, or build with ROCKSDB_ENABLED=false. Distribution packages may be older than 10.9.1, and the Makefile accepts an older version without warning, so check the package version first.

Build commands

Check the local environment:
Build a development binary:
Install the binary:
Install into a custom directory:
Create a self-contained distribution bundle under build/dist:
Useful build overrides:

Outputs

make build writes:
make install writes:
make dist writes:
When RocksDB is enabled, install and dist targets also bundle the required RocksDB dynamic libraries that the build system can detect.

Verify the binary

For a development build:
For an installed build:
If ctmd is not found after make install, confirm that BINDIR is on your PATH:

Troubleshooting