You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First lumerad version that activates EVM key style. Used by scripts to decide secp256k1 vs eth_secp256k1 key derivation. Default: v1.20.0
denom.bond
string
Staking/bond denomination
denom.mint
string
Minting denomination
denom.minimum_gas_price
string
Minimum gas price with denom suffix
docker
Field
Type
Description
network_name
string
Docker bridge network name
container_prefix
string
Prefix for container names
volume_prefix
string
Prefix for volume names
paths
Field
Type
Description
base.host
string
Base path on the host machine
base.container
string
Base path inside containers
directories.daemon
string
Daemon home directory name (relative to base)
daemon
Field
Type
Description
binary
string
Daemon binary name
keyring_backend
string
Keyring backend (test, file, or os)
genesis-account-mnemonics
Array of BIP-39 mnemonics. Each validator gets one mnemonic (by index) for its genesis account. Must have at least as many entries as validators.
sn-account-mnemonics
Array of BIP-39 mnemonics for Supernode and sncli accounts. The first N entries (where N = number of validators) are used for Supernode keys; the next N are used for sncli keys. Must have at least 2 * N entries.
api
Field
Type
Description
enable_unsafe_cors
bool
Enable CORS headers on REST API for browser access
json-rpc
Field
Type
Description
enable
bool
Enable EVM JSON-RPC endpoint
address
string
HTTP listen address
ws_address
string
WebSocket listen address
api
string
Comma-separated list of enabled API namespaces
enable_indexer
bool
Enable EVM transaction indexer
lumera-uploader
Field
Type
Description
enabled
bool
Global enable flag
grpc_port
int
gRPC listen port (default 50051)
http_port
int
HTTP gateway listen port (default 8080)
max_accounts
int
Number of funded uploader accounts to create per validator (minimum 1)
account_balance
string
Funding amount per account (with or without denom suffix)
Note: For Lumera < v1.11.0, this section was called "network-maker". Scripts accept both keys for backward compatibility.
hermes
Field
Type
Description
enabled
bool
Whether to start the Hermes IBC relayer container
validators.json
Array of validator specifications. Each entry defines one validator container with its ports, keys, and optional service configurations.
Note: All sub-objects except initial_distribution are optional and use omitempty. Real validators rarely set every block — see devnet/config/validators.json for the canonical examples (V2 carries multisig + multisig-flagged test_accounts; V3 carries lumera-uploader; V4 carries single-sig test_accounts).
Field reference
Field
Type
Description
name
string
Docker service name (also used as container suffix)
moniker
string
CometBFT moniker displayed on the network
key_name
string
Keyring key identifier for the validator account
port
int
Host-mapped P2P port
rpc_port
int
Host-mapped RPC port
rest_port
int
Host-mapped REST API port
grpc_port
int
Host-mapped gRPC port
primary
bool
If true, this validator creates genesis and starts first
supernode (optional)
Field
Type
Description
port
int
Supernode gRPC port
p2p_port
int
Supernode P2P port
gateway_port
int
Supernode HTTP gateway port
json-rpc (optional)
Field
Type
Description
port
int
EVM JSON-RPC HTTP port
ws_port
int
EVM JSON-RPC WebSocket port
lumera-uploader (optional)
Field
Type
Description
enabled
bool
Enable uploader on this validator
grpc_port
int
Override global gRPC port
http_port
int
Override global HTTP gateway port
Note: For Lumera < v1.11.0, use "network-maker" as the key name. Scripts accept both.
multisig (optional)
Wraps this validator's genesis account as a multisig account at chain-init time. When enabled: true, the validator's key_name is registered as a multisig key composed of signer_count deterministically-generated signer keys with the given threshold. Used by the EVM-migration test suites (tests_evmigration -mode=multisig*) and end-user multisig migration walkthroughs.
Field
Type
Description
enabled
bool
Activate multisig wrapping for this validator.
threshold
int
Minimum number of signers required to authorize a transaction (k in k-of-n).
signer_count
int
Total number of signer keys generated (n in k-of-n). Must satisfy threshold ≤ signer_count.
vesting_type
string
Optional. If set, the validator's genesis account is post-processed into a vesting account variant. Currently only "PermanentLocked" is implemented (rewrites the BaseAccount into a /cosmos.vesting.v1beta1.PermanentLockedAccount); any other value aborts setup with an "unsupported multisig.vesting_type" error. Omit for a plain multisig BaseAccount.
Why a vesting wrapper? The Cosmos SDK CLI's add-genesis-account can only emit Delayed/ContinuousVesting (which require end_time > 0). PermanentLocked requires end_time == 0, so the devnet rewrites the genesis JSON directly after account creation. See devnet/scripts/validator-setup.sh (Wrapping multisig validator … as PermanentLockedAccount).
test_accounts (optional)
Creates count extra funded accounts on this validator beyond the standard genesis account. Used to give migration tests, EVM tests, and the lumera-uploader fixture multiple sender keys without polluting the global mnemonic list.
Field
Type
Description
count
int
Number of test accounts to create. Set to 0 or omit to disable.
balance_base
string
Funding amount for the first account (e.g. "20000ulume").
balance_increment
string
Per-account increment added to balance_base for subsequent accounts. The N-th account (1-indexed) gets balance_base + (N-1) * balance_increment. Useful for distinguishing accounts in test assertions by balance fingerprint.
multisig
bool
If true, generate the test accounts as multisig accounts (uses the parent validator's multisig.threshold / signer_count). Requires multisig.enabled = true on the same validator. Default: false (single-sig test accounts).
initial_distribution
Field
Type
Description
account_balance
string
Total tokens allocated to this validator's genesis account
The devnet runs five validators plus a Hermes IBC relayer on a private Docker bridge (172.28.0.0/24, network name lumera-network). Each container exposes the same set of internal ports — only the host-side mapping differs per validator. From inside any container, reach a peer via <service-name>:<internal-port> (e.g. http://supernova_validator_1:26657); from your host machine, use localhost:<host-port>.
Internal ports (constant across all validator containers)
Reading the table: the Host column gives the port published on localhost (i.e. the port your laptop talks to). All in-container traffic uses the internal port from the previous table — e.g. validator 4's CometBFT RPC is reached as http://localhost:26697 from your host but http://supernova_validator_1:26657 from another container.
Port assignment conventions
Per-validator host-port stride. P2P / RPC / REST / EVM-HTTP / EVM-WS step by +10 per validator slot (26666 → 26676 → 26686 → 26696 → 26606). Validator 5 wraps around because the +40 offset would collide with V1's debug span; the script intentionally keeps each validator's host-port block in its own decade.
gRPC steps by +1 (9091..9095) — gRPC traffic is rarely diagnosed on the host so the dense packing is fine.
Supernode ports come in a (gRPC, P2P, gateway) triple per validator: (7441, 7442, 18001) … (7449, 7450, 18005).
Debug (delve) is 40000 + (i-1) where i is the validator slot.
Hermes uses a +10000 offset on the standard CometBFT/REST ports so it can run an independent simd chain alongside lumerad validators without conflict.
binaries.json
Maps Lumera release versions to their download coordinates. Used by devnet/scripts/download-binaries.sh to populate versioned bin-<version>/ directories.
GitHub release tag for lumerad + libwasmvm tarball
versions.<ver>.supernode.tag
string
GitHub release tag for Supernode binary
versions.<ver>.network_maker.tag
string
GitHub release tag for network-maker (< v1.11.0)
versions.<ver>.lumera_uploader.tag
string
GitHub release tag for lumera-uploader (>= v1.11.0)
Usage
# Download all binaries for a specific version
./devnet/scripts/download-binaries.sh v1.11.1
# Then build devnet using that bundle
make devnet-build DEVNET_BIN_DIR=devnet/bin-v1.11.1
Version-based binary naming
Starting with Lumera v1.11.0, the "network-maker" project was renamed to "lumera-uploader". The download-binaries.sh script handles this automatically:
>= v1.11.0: looks for lumera_uploader in binaries.json, downloads from lumera-uploader GitHub repo
< v1.11.0: looks for network_maker, downloads from network-maker GitHub repo