2026-01-15 16:21:59 +01:00

3.3 KiB

Scripts Directory

This directory contains build scripts for compiling the Logos Blockchain Circuits.

Files

build-local.sh

The main local build script that replicates the GitHub Actions workflow for local execution on Linux. It handles the complete build pipeline including:

  • Installing system dependencies (build-essential, cmake, libgmp-dev, etc.)
  • Installing Rust and Circom compiler
  • Installing Node.js and snarkjs
  • Downloading Powers of Tau file (~3GB)
  • Generating proving keys for all circuits (pol, poq, zksign, poc)
  • Compiling witness generators
  • Building prover and verifier from rapidsnark
  • Creating the final release bundle

Usage:

./build-local.sh [OPTIONS]

Options:

Option Description
--version VERSION Set the version (default: v0.0.0-local)
--skip-deps Skip installing system dependencies
--skip-circom Skip Circom installation
--skip-snarkjs Skip snarkjs installation
--skip-ptau Skip Powers of Tau download
--skip-proving-keys Skip proving key generation
--skip-prover Skip prover/verifier compilation
--skip-witness Skip witness generator compilation
--circuit CIRCUIT Build only specified circuit (pol, poq, zksign, poc)
--clean Clean all build artifacts before building
--help Show help message

docker-build.sh

A wrapper script that runs the build inside a Docker container to avoid polluting your host system with dependencies.

Usage:

./docker-build.sh [OPTIONS]

All options are passed directly to build-local.sh inside the container.

Examples:

./docker-build.sh                    # Full build
./docker-build.sh --help             # Show build-local.sh help
./docker-build.sh --circuit pol      # Build only PoL circuit
./docker-build.sh --clean            # Clean and rebuild
./docker-build.sh --skip-ptau        # Skip Powers of Tau download

Environment Variables:

Variable Description
DOCKER_BUILD=0 Skip rebuilding the Docker image
DOCKER_NOCACHE=1 Force rebuild Docker image without cache
SKIP_INSTALL=1 Skip installing artifacts to ~/.nomos-circuits after build

Dockerfile

Defines the Docker build environment based on Ubuntu 22.04 with all required dependencies pre-installed:

  • Build tools (gcc, cmake, make, nasm)
  • Libraries (libgmp, libsodium, nlohmann-json)
  • Node.js 20.x and snarkjs
  • Rust and Circom compiler

The container automatically initializes git submodules and runs the build with --skip-deps --skip-circom --skip-snarkjs since these are pre-installed.

Output

The build produces a tarball named nomos-circuits-{VERSION}-{OS}-{ARCH}.tar.gz containing:

nomos-circuits-v0.0.0-local-linux-x86_64/
├── VERSION
├── prover              # Rapidsnark prover binary
├── verifier            # Rapidsnark verifier binary
├── pol/
│   ├── witness_generator
│   ├── witness_generator.dat
│   ├── proving_key.zkey
│   └── verification_key.json
├── poq/
│   └── ...
├── zksign/
│   └── ...
└── poc/
    └── ...

Requirements

  • Local build: Linux x86_64 or aarch64, root access for dependencies
  • Docker build: Docker installed and running