Skip to main content

Setup miner-node

Clone repo, install, build packages necesare pentru a rula nodul OmbraChain.

1. Clone repo

cd /opt
sudo git clone https://github.com/ombrachain/OmbraBlockChain.git ombra
sudo chown -R $USER:$USER /opt/ombra
cd /opt/ombra

2. Install dependencies

pnpm install
# ~5 min (libp2p + Node binding heavy)

Dacă vezi erori la node-gyp / native build:

sudo apt-get install -y python3 build-essential libtool autoconf
pnpm install --shamefully-hoist

3. Build packages

Build only ce e necesar pentru miner-node:

pnpm --filter @ombrachain/core build
pnpm --filter @ombrachain/node build
pnpm --filter @ombrachain/api build
pnpm --filter @ombrachain/dispatcher build
pnpm --filter @ombrachain/miner-node build

~3 min total. Output → packages/*/dist/, apps/miner-node/dist/.

4. Generează identitate libp2p

Identity-ul P2P (cheia privată) determină PeerID-ul nodului tău. Persistent între restart-uri.

node scripts/generate-node-identity.mjs --output data-mainnet/node-identity.json

Output:

✓ Identity generated
PeerID: 12D3KooWFGH...
Saved to data-mainnet/node-identity.json

⚠ ATENȚIE: node-identity.json conține cheia privată libp2p. NU o commit-a în git, NU o publica.

5. Configurează wallet miner

Miner-node-ul are nevoie de mnemonic-ul wallet-ului tău pentru a semna tx-uri:

Opțiunea A: Reutilizează wallet existent

echo "your twelve word mnemonic phrase here ..." > data-mainnet/wallet-mnemonic.txt
chmod 600 data-mainnet/wallet-mnemonic.txt

Opțiunea B: Generează wallet nou

node scripts/generate-wallet.mjs --output data-mainnet/wallet-mnemonic.txt
# → afișează adresa generată

⚠ ATENȚIE: wallet-mnemonic.txt = controlul total al wallet-ului. chmod 600 obligatoriu.

6. Configurează env

Creează data-mainnet/.env:

NODE_ENV=production
CHAIN_DATA_DIR=/opt/ombra/data-mainnet/chain
NODE_IDENTITY=/opt/ombra/data-mainnet/node-identity.json
MINER_MNEMONIC_FILE=/opt/ombra/data-mainnet/wallet-mnemonic.txt

# P2P
P2P_PORT=9090
P2P_BOOTSTRAP=/dns4/ombra-net.com/tcp/9090/p2p/12D3KooWSurtuxNK...

# Mining config
BLOCK_INTERVAL_MS=15000
ALLOW_EMPTY_BLOCKS=1
MIN_FEE=10000

# Backend AI (alege unul)
AI_BACKEND=ollama
OLLAMA_URL=http://localhost:11434/v1
OLLAMA_MODEL=llama3.3:70b

# SAU
# AI_BACKEND=anthropic
# ANTHROPIC_API_KEY=sk-ant-api03-...
# ANTHROPIC_MODEL=claude-opus-4-7

# API
API_PORT=3001
API_CORS_ORIGIN=*

# Logging
LOG_LEVEL=info
LOG_FILE=/var/log/ombra/miner-node.log

Verifică:

chmod 600 data-mainnet/.env

7. Sync inițial

Primul start sincronizează blocurile de la genesis. Poate dura 30-60 min depending de mainnet height.

node apps/miner-node/dist/index.js

Output:

[ombra] Loading identity 12D3KooWFGH...
[ombra] Connecting to bootstrap peers...
[ombra] Peer connected: 12D3KooWSurtuxNK
[ombra] Sync starting from height 0
[ombra] Block 100 / ~9500
[ombra] Block 500 / ~9500
...
[ombra] Sync complete at height 9523
[ombra] Mining started
[ombra] Backend: ollama (llama3.3:70b)

Ctrl+C pentru oprire test. Vom rula prin systemd în next step.

8. Verificare

În alt terminal:

# Block height curent
curl localhost:3001/api/chain/height
# → {"height": 9523}

# Peer count
curl localhost:3001/api/chain/peers
# → {"peers": 5, "ids": [...]}

# Miner status (dacă MinerNFT înregistrat)
curl localhost:3001/api/miners/by-address/$(cat data-mainnet/wallet-address.txt)

Troubleshooting

"Failed to connect to bootstrap"

  • Verifică firewall: sudo ufw allow 9090/tcp
  • Verifică DNS: nslookup ombra-net.com
  • Bootstrap peer poate fi temporar offline — încearcă altul

"Sync stuck at block X"

  • Verifică peer count: dacă 0, network issue
  • Restart: Ctrl+C și re-run
  • Hard reset chain (LAST RESORT):
    rm -rf data-mainnet/chain
    # re-sync from genesis

"ANTHROPIC_API_KEY invalid"

  • Verifică key în Anthropic Console
  • Verifică env loaded: printenv | grep ANTHROPIC

Vezi și