Networks¶
Current navio-core exposes five chain types: main, test, signet, regtest, and blsctregtest. They share most of the codebase, but differ in genesis blocks, ports, message-start bytes, and whether BLSCT / PoPS is enabled.
Summary¶
| Network | Flag | BLSCT active | Default P2P port | Default RPC port | BLSCT HRP | Magic (hex) |
|---|---|---|---|---|---|---|
| mainnet | (default) | yes | 48470 |
48471 |
nav |
bd5fc300 |
| testnet | -testnet |
yes | 33670 |
33677 |
tnv |
2467d2c1 |
| signet | -signet |
no | 38333 |
48487 |
nav in core chainparams, but BLSCT is inactive |
(per-signet) |
| regtest | -regtest |
no | 18444 |
48486 |
rnv in core chainparams, but BLSCT is inactive |
fdbf9ffb |
| blsctregtest | -blsctregtest |
yes | 18444 |
48484 |
rnv |
fdbf9ffb |
Port numbers
Mainnet uses 48470 (P2P) / 48471 (RPC) — distinct from Navcoin's ports to prevent cross-network misconfiguration. Always cross-check against src/kernel/chainparams.cpp (nDefaultPort) and src/chainparamsbase.cpp (RPC port) on the release you are running. On testnet, the SDK's P2P sync provider defaults to 43670 in its TypeScript defaults, while naviod uses 33670 — see the SDK P2PSyncProvider config.
Bootstrap nodes¶
Navio relies on DNS seeds and hardcoded bootstrap nodes. Testnet currently bootstraps from:
Mainnet bootstrap DNS seeds are defined in src/chainparams.cpp in navio-core. Always consult the current release.
Operators can override with addnode= lines in navio.conf or with -addnode=<host> on the command line.
Address formats¶
On BLSCT-enabled chains, Navio addresses are bech32m encoded double public keys. A typical testnet address looks like:
where:
- HRP —
nav(mainnet),tnv(testnet),rnv(blsctregtest) - Witness version — hidden inside the bech32m payload
- Payload — 96-byte encoded double public key
If you use navio-blsct standalone instead of naviod chainparams, the library currently exposes snv and rnav for its Signet / Regtest enum values in src/blsct/key_io.h.
Switching networks¶
naviod¶
# testnet
naviod -testnet
# blsct regtest
naviod -blsctregtest
# regtest
naviod -regtest
# signet
naviod -signet
# mainnet (default)
naviod
Most RPC methods work identically across networks. Consensus-parameter methods (getblockchaininfo, getnetworkinfo) report network-specific values.
navio-cli¶
navio-cli -testnet getblockcount
navio-cli -blsctregtest generatetoaddress 101 $(navio-cli -blsctregtest getnewaddress)
SDK¶
const client = new NavioClient({
network: 'testnet', // or 'mainnet' | 'signet' | 'regtest'
electrum: { host: 'localhost', port: 50005 },
// ...
});
For SDK and library usage, the network string is passed through to navio-blsct to set the active BLSCT chain context (affects address HRP, token-id padding, etc.).
P2P wire protocol magic¶
Navio uses the inherited Bitcoin P2P wire protocol with distinct message-start bytes:
- Testnet:
24 67 d2 c1 - Mainnet:
bd 5f c3 00 - Regtest / blsctregtest:
fd bf 9f fb
The magic determines which messages a peer will accept. Explorer peer crawlers and custom P2P tooling must set the correct magic — see P2P_MAINNET_MAGIC_HEX / P2P_TESTNET_MAGIC_HEX in the navio-blocks env vars.
Datadir layout¶
Default data directories:
- Linux:
~/.navio/ - macOS:
~/Library/Application Support/Navio/ - Windows:
%APPDATA%\Navio\
Mainnet lives at the datadir root. Subdirectories are currently testnet7/, signet/, regtest/, and blsctregtest/.
Choosing a network for development¶
| Goal | Recommended network |
|---|---|
| BLSCT integration tests, CI | blsctregtest |
| Plain non-BLSCT local tests | regtest |
| Pre-production manual testing | testnet |
| Low-noise private multi-party nets | signet |
| Live transactions | mainnet |
See the SDK quickstart for the SDK's current regtest-based development loop. For chain-faithful local BLSCT / PoPS testing in navio-core, prefer blsctregtest.