Join the VitoCoin Network

Run a full node to validate transactions independently, strengthen decentralization, and optionally mine VITO. Your node becomes part of the P2P network the moment it connects to a seed node.

1

Requirements

OS
Linux (Ubuntu 20.04+)
Python
3.10 or later
RAM
512 MB minimum
Disk
1 GB free (chain grows)
Network
Port 6334 open (P2P)
CPU
Any (mining optional)
The API port (6333) is optional — only needed if you want to expose the REST API publicly. The P2P port (6334) is required for syncing and participating in consensus.
2

Installation

One-Line Install
Manual

Paste this into your server as root. It installs all dependencies, downloads the node, and configures systemd:

bash <(curl -fsSL https://vitocoin.com/install.sh)
copy
Note: The install script is provided for convenience. Review it at /install.sh before running on production systems.

Step-by-step

# 1. Install Python and dependencies
apt update && apt install -y python3 python3-pip git sqlite3 sshpass

# 2. Clone the node software
git clone https://github.com/united-vito-com/VitoCoin-v2.git /opt/vitocoin
cd /opt/vitocoin

# 3. Install Python requirements
pip3 install -r requirements.txt

# 4. Create data directory
mkdir -p /opt/vitocoin/data/chaindata
copy
3

Configuration

Edit /opt/vitocoin/vitocoin/config.py (or pass command-line flags to main.py):

# /opt/vitocoin/vitocoin/config.py  (or CLI flags)

DATA_DIR    = "/opt/vitocoin/data"       # where chainstore.db lives
NETWORK     = "mainnet"                  # mainnet or testnet
API_HOST    = "0.0.0.0"                  # bind address for REST API
API_PORT    = 6333                       # REST + SSE port
P2P_PORT    = 6334                       # P2P TCP port
MINE        = True                       # set False to disable mining
MINE_WALLET = "V..."                     # YOUR VITO wallet address ← required!
THREADS     = 2                          # CPU mining threads

# Seed nodes (hardcoded in network.py — no need to change)
SEED_NODES = [
    "195.114.193.73:6334",   # Node 1 — Frankfurt
    "213.139.77.18:6334",    # Node 2 — Moscow
    "84.201.20.90:6334",     # Node 3 — Moscow
]
copy
Critical: Set MINE_WALLET to your own VITO address. Block rewards are sent directly to this address — you cannot change it after a block is mined.
4

Start the Node

# Start manually (foreground — good for initial testing)
cd /opt/vitocoin
python3 vitocoin/main.py \
  --data /opt/vitocoin/data \
  --api-port 6333 \
  --p2p-port 6334 \
  --mine \
  --wallet YOUR_VITO_ADDRESS \
  --threads 2

# Expected startup output:
# [INFO] VitoCoin/2.0.0 starting up — mainnet
# [INFO] Loaded chain: height=0, work=0
# [INFO] API server: http://0.0.0.0:6333
# [INFO] P2P listening on port 6334
# [INFO] Connecting to seed nodes…
# [INFO] Peer connected: 195.114.193.73:6334 (1 total)
# [INFO] Syncing headers from height=0 to height=10…
# [INFO] Chain synced: height=10 ✓
copy
5

Verify Sync

After startup, check that your node is synced to the same height as the network:

# Check your local node
curl http://localhost:6333/status | python3 -m json.tool

# Check network tip (from Node 1)
curl https://vitocoin.com/api/node/status | python3 -c \
  "import json,sys; d=json.load(sys.stdin); print('Network height:', d['height'])"

# They should match:
# "height": 10  ← same on your node and the network

# Verify best_hash matches exactly:
# "best_hash": "00000000e060cafcd66eb2a4425a5e52a1490fbf6eec4af8ebf1fd94a77528de"
copy
Synced! When your node's height and best_hash match the network, you're fully synced and participating in consensus.
6

Enable Mining

Mining starts automatically if --mine is passed and a wallet address is set. To confirm:

curl http://localhost:6333/mining/status

Expected response:

{"mining": true, "threads": 2, "hashrate_hps": 15000.0, "hashrate_str": "15.0 KH/s",
 "wallet": "VWALLET...", "blocks_found": 0}
Coin Maturity: Mined VITO requires 100 confirmations before it can be spent. At current block times, this takes several days. The UTXO appears in your wallet immediately, but is unspendable until mature.
7

Run as a Service (systemd)

To keep your node running across reboots:

cat > /etc/systemd/system/vitocoin.service << EOF
[Unit]
Description=VitoCoin Full Node
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/vitocoin
ExecStart=/usr/bin/python3 vitocoin/main.py \
  --data /opt/vitocoin/data \
  --api-port 6333 \
  --p2p-port 6334 \
  --mine \
  --wallet YOUR_VITO_ADDRESS \
  --threads 2
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable vitocoin
systemctl start vitocoin

# Check status:
systemctl status vitocoin
journalctl -u vitocoin -f
copy
8

Firewall Rules

# Allow P2P port (required for sync and block propagation)
ufw allow 6334/tcp

# Allow API port (optional — only if exposing API publicly)
ufw allow 6333/tcp

# Or with iptables:
iptables -A INPUT -p tcp --dport 6334 -j ACCEPT
iptables -A INPUT -p tcp --dport 6333 -j ACCEPT
copy
If your VPS provider has a separate security group or firewall panel (AWS/GCP/Azure/Hetzner), also open port 6334 there.
9

Keeping Your Node Updated

cd /opt/vitocoin
git pull origin main
systemctl restart vitocoin
copy

Subscribe to GitHub releases at https://github.com/united-vito-com/VitoCoin-v2 for update notifications. Critical consensus-rule changes require a coordinated upgrade.

?

FAQ

My node stays at height 0

Check that port 6334 is open and reachable from the internet. The seed nodes must be able to connect back to you (inbound). Use curl -s https://vitocoin.com/api/node/peers to see if your IP appears in the network's peer list.

Block time is very long (~79 minutes instead of 10 minutes)

The network hashrate is currently ~900 KH/s combined (3 nodes, Python CPU mining). Difficulty is at the genesis minimum (1.0). More miners joining will push actual block time toward the 10-minute target. The difficulty algorithm automatically adjusts every 2,016 blocks.

Can I run a node without mining?

Yes. Omit --mine from the start command. Your node will validate and relay blocks without performing hashing work.

How many peers should I have?

The node aims for 8 peers (4 outbound + 4 inbound). At current network size (3 seed nodes), you'll typically connect to all 3 seed nodes plus any other external nodes. peer_count: 4+ is healthy.

Where is chainstore.db?

In DATA_DIR/chaindata/chainstore.db. Do not delete this while the node is running. To backup: stop the service, run sqlite3 chainstore.db "PRAGMA wal_checkpoint(TRUNCATE)", then copy the file.

Can Windows or macOS run a node?

The Python code is platform-independent. However, the systemd integration and shell scripts are Linux-specific. Windows/macOS nodes work manually but require custom service setup.