Skip to content

Build and manage local blockchain development networks with production state

License

Notifications You must be signed in to change notification settings

kangeunchan/devnet-builder

 
 

Repository files navigation

devnet-builder

Build and manage local blockchain development networks with production state

TL;DR

git clone https://github.com/altuslabsxyz/devnet-builder.git && cd devnet-builder
make build
./build/devnet-builder deploy

After ~2 minutes, you'll have a running local blockchain network with:


Table of Contents


Prerequisites

  • Docker (for docker mode - recommended)
  • curl (for network operations)
  • jq (for JSON processing)
  • zstd or lz4 (for snapshot decompression)

Verify Prerequisites

docker --version
curl --version
jq --version
zstd --version || lz4 --version

Quick Start

Build from Source

git clone https://github.com/altuslabsxyz/devnet-builder.git
cd devnet-builder
make build

# This builds three binaries:
#   ./build/devnet-builder  - Main CLI (interactive, recommended)
#   ./build/dvb             - Daemon-based CLI (kubectl-style)
#   ./build/devnetd         - Daemon server (for dvb)

Deploy Your First Devnet

Option 1: Using devnet-builder (recommended for most users)

# Deploy with default settings (4 validators, mainnet data, docker mode)
./build/devnet-builder deploy

# Check status
./build/devnet-builder status

# View logs
./build/devnet-builder logs -f

# Stop when done
./build/devnet-builder stop

Option 2: Using dvb with daemon (kubectl-style workflow)

# Start the daemon
./build/devnetd &

# Provision using interactive wizard
./build/dvb provision -i

# Or apply from YAML configuration
./build/dvb apply -f devnet.yaml

# List devnets
./build/dvb get devnets

# View detailed status
./build/dvb describe my-devnet

Common Variations

# Single validator (fastest startup)
devnet-builder deploy --validators 1

# With 5 funded test accounts
devnet-builder deploy --accounts 5

# Use testnet data instead of mainnet
devnet-builder deploy --network testnet

# Local binary mode (requires binary, 1-4 validators max)
devnet-builder deploy --mode local --validators 2

# Docker mode with many validators (1-100)
devnet-builder deploy --mode docker --validators 10

Architecture

The project provides three binaries for different use cases:

Binary Purpose Use Case
devnet-builder Full-featured interactive CLI Most users, interactive workflows
dvb Daemon-based kubectl-style CLI Automation, YAML-driven workflows
devnetd Daemon server Required for dvb commands

devnet-builder is a standalone CLI that handles everything internally - ideal for interactive use and simple deployments.

dvb + devnetd follow a client-server architecture similar to kubectl/kube-apiserver. The daemon manages devnet lifecycle and state, while dvb provides a declarative interface with YAML support.


Basic Commands

devnet-builder (Standalone CLI)

Command Description
devnet-builder deploy Deploy a new devnet (provision + start)
devnet-builder status Show devnet status
devnet-builder logs [node] View node logs
devnet-builder stop Stop running nodes
devnet-builder start Restart stopped nodes
devnet-builder destroy Remove all devnet data
devnet-builder export Export blockchain state
devnet-builder export-keys Export validator/account keys
devnet-builder upgrade Upgrade chain version
devnet-builder networks List available network plugins

dvb (Daemon CLI)

Command Description
dvb apply -f <file> Apply devnet configuration from YAML
dvb get devnets List all devnets
dvb get devnet <name> Get specific devnet details
dvb describe <devnet> Show detailed devnet info with events
dvb provision -i Interactive provisioning wizard
dvb start <devnet> Start a stopped devnet
dvb stop <devnet> Stop a running devnet
dvb destroy <devnet> Remove a devnet
dvb logs <devnet> [node] View logs from devnet nodes
dvb daemon status Check if daemon is running

For complete command reference, see docs/commands.md.


Documentation

For detailed documentation, see the docs/ directory:

V2 Architecture (daemon-based)


Test Accounts

Devnet creates pre-funded test accounts for development.

Export Keys

# View all test accounts
devnet-builder export-keys

# JSON format for scripts
devnet-builder export-keys --json

# Export only accounts (not validators)
devnet-builder export-keys --type accounts

State Export

Export blockchain state at any height for testing upgrades, snapshots, or state analysis:

# Export current state
devnet-builder export

# List all exports
devnet-builder export list

# Inspect export details
devnet-builder export inspect <export-path>

# Custom output directory
devnet-builder export --output-dir /path/to/exports

# Force overwrite existing export
devnet-builder export --force

Network Configuration

Configure your tools to connect to the local devnet:

Parameter Value
Network Name Local Devnet
RPC URL http://localhost:26657
EVM JSON-RPC http://localhost:8545
WebSocket ws://localhost:8546

Plugin System

devnet-builder supports multiple blockchain networks through a plugin architecture. Create custom plugins for any Cosmos SDK-based chain.

# List available networks
devnet-builder networks

# Deploy with specific blockchain network
devnet-builder deploy --blockchain stable
devnet-builder deploy --blockchain ault

# Build plugins separately
make plugins          # Build public plugins
make plugins-private  # Build private plugins
make plugin-osmosis   # Build specific plugin

Troubleshooting

Quick Fixes

Docker not running:

sudo systemctl start docker
# or on macOS
open -a Docker

Port already in use:

lsof -i :26657

Previous devnet exists:

devnet-builder destroy --force
devnet-builder deploy

Daemon not running (for dvb):

# Check daemon status
dvb daemon status

# Start daemon
devnetd

For more troubleshooting help, see docs/troubleshooting.md.


License

This project is licensed under the MIT License.

About

Build and manage local blockchain development networks with production state

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 96.4%
  • Shell 3.2%
  • Makefile 0.4%