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