Skip to content

Getting Started

This guide covers everything needed to run a VIZ Ledger node — from installing dependencies to initial synchronization.


Prerequisites

RequirementMinimumRecommended
OSUbuntu 20.04 LTSUbuntu 24.04 LTS
RAM4 GB8 GB+
Disk20 GB50 GB+ SSD
CPU2 cores4+ cores
NetworkPublic IP, open port 2001Stable connection

Ports used:

PortProtocolPurpose
2001TCPP2P peer connections
8090TCPHTTP JSON-RPC
8091TCPWebSocket JSON-RPC

1. Pull the production image

bash
docker pull vizblockchain/vizd:latest

2. Run the node

bash
docker run -d \
  --name vizd \
  -p 2001:2001 \
  -p 8090:8090 \
  -p 8091:8091 \
  -v /data/vizd:/var/lib/vizd \
  vizblockchain/vizd:latest

3. Follow logs

bash
docker logs -f vizd

You should see peer connections and block sync progress within a few minutes.

Environment variables (Docker)

VariablePurposeExample
VIZD_WITNESSValidator name (if validator node)alice
VIZD_PRIVATE_KEYValidator signing key (WIF)5J...

Option B: Build from Source

1. Install dependencies (Linux)

bash
git clone --recursive https://github.com/VIZ-Blockchain/viz-cpp-node
cd viz-cpp-node
chmod +x install-deps-linux.sh
sudo ./install-deps-linux.sh

2. Build

bash
chmod +x build-linux.sh
./build-linux.sh

For a low-memory build (validators and seed nodes — excludes indexing plugins):

bash
./build-linux.sh -l

The binary is placed at build/programs/vizd/vizd.

3. macOS

bash
chmod +x build-mac.sh
./build-mac.sh

4. Windows (MinGW)

cmd
set BOOST_ROOT=C:\Boost
set OPENSSL_ROOT_DIR=C:\OpenSSL-Win64
build-mingw.bat

See Building for detailed platform instructions and CMake options.


Initial Configuration

Copy the mainnet config template:

bash
cp share/vizd/config/config.ini /data/vizd/config.ini

Minimum edits for a public node:

ini
# P2P
p2p-endpoint = 0.0.0.0:2001
p2p-seed-node = seed1.viz.world:2001
p2p-seed-node = seed2.viz.world:2001
p2p-seed-node = seed3.viz.world:2001

# RPC
webserver-http-endpoint = 0.0.0.0:8090
webserver-ws-endpoint   = 0.0.0.0:8091

# Shared memory — adjust to available disk
shared-file-size = 4G

# Plugins (full node)
plugin = chain p2p webserver json_rpc database_api network_broadcast_api
plugin = account_history

For a validator node, see Validator Node.


Starting the Node

bash
./vizd --config-file /data/vizd/config.ini --data-dir /data/vizd

Or with Docker, pass the data directory as a volume (see Option A above).


Verifying Sync

Query the node via HTTP RPC:

bash
curl -s -X POST http://localhost:8090 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"call","params":["database_api","get_dynamic_global_properties",[]],"id":1}' \
  | python3 -m json.tool

Check head_block_number — it should increase every 3 seconds once synced.


Node Types

TypeConfig templateDescription
Full nodeconfig.iniAll plugins, public RPC endpoints
Validatorconfig_witness.iniBlock production, RPC on localhost only
Testnetconfig_testnet.iniDevelopment and testing
Low-memoryconfig.ini + LOW_MEMORY_NODE build flagConsensus only, no history indexes

Next Steps