P2P bootstrap peers
Pentru a se conecta la rețea, nodul tău trebuie să cunoască bootstrap peers — noduri cunoscute care îi vor împărtăși peer-uri suplimentare via gossip protocol.
Bootstrap default mainnet
OmbraChain mainnet rulează un seed peer principal:
/dns4/ombra-net.com/tcp/9090/p2p/12D3KooWSurtuxNKaqcPyVK8Yfvk1JfXFc1tEqRZsBhEcRYHmJYjC
(PeerID poate diferi — verifică pe https://ombra-net.com → footer → "Network Info")
Format multiaddr
/dns4/ombra-net.com/tcp/9090/p2p/12D3KooW...
│ │ │ │ │
│ │ │ │ └── PeerID (Ed25519 hash)
│ │ │ └────── protocol negotiation
│ │ └───────── ── transport port
│ └───────────────────────── DNS hostname (sau /ip4/x.x.x.x)
└──────────────────────────────── multiaddr namespace
Configurare în .env
P2P_BOOTSTRAP=/dns4/ombra-net.com/tcp/9090/p2p/12D3KooWSurtuxNKaqcPyVK8Yfvk1JfXFc1tEqRZsBhEcRYHmJYjC
Multiple bootstraps (comma-separated):
P2P_BOOTSTRAP=/dns4/ombra-net.com/tcp/9090/p2p/12D3...,/ip4/172.239.15.32/tcp/9090/p2p/12D3...,/dns4/seed2.ombra.io/tcp/9090/p2p/12D3...
Node-ul încearcă în paralel toate; dacă măcar unul răspunde → connected.
Verifică peer count
curl localhost:3001/api/chain/peers
Output ideal:
{
"peers": 5,
"ids": [
"12D3KooWSurtuxNK...",
"12D3KooWAbcDef...",
...
]
}
Dacă peers: 0 după 30s:
- Verifică port 9090 e accesibil:
nc -zv ombra-net.com 9090 - Verifică firewall:
sudo ufw status | grep 9090 - Verifică bootstrap PeerID corect (poate fi schimbat)
Identity persistentă
Cheia ta libp2p (data-mainnet/node-identity.json) determină PeerID-ul tău permanent. Other peers te recunosc consistent prin acest PeerID.
node scripts/get-peer-id.mjs --identity data-mainnet/node-identity.json
# → 12D3KooWMyOwnPeerID...
Dacă ștergi node-identity.json → generezi un PeerID nou → ceilalți te tratează ca nod nou.
Devino bootstrap peer pentru alții
Dacă nodul tău e stabil + publicly accessible:
- Asigură-te că ai DNS sau IP static
- Port 9090 deschis în firewall + accesibil din internet (nu doar localhost)
- Share
multiaddr-ul tău cu alți operatori:/dns4/your-node.com/tcp/9090/p2p/12D3KooWMyOwnPeerID... - Sau direct cu IP:
/ip4/YOUR_PUBLIC_IP/tcp/9090/p2p/12D3KooWMyOwnPeerID...
Alți useri pot pune nodul tău în lista lor P2P_BOOTSTRAP.
NAT / port forwarding
Dacă rulezi nodul în spatele router-ului casnic (nu VPS):
- Setează port forwarding în router admin panel:
External 9090 → Internal 192.168.x.x:9090 TCP
- Activează UPnP (opțional — libp2p încearcă AutoNAT):
P2P_AUTONAT=1
- Verifică din extern:
nc -zv YOUR_PUBLIC_IP 9090
Pentru CGNAT (ISP-uri cu IP-uri shared) — recomandat VPS direct, NAT traversal e fragil.
DHT discovery (avansat)
Pentru a descoperi peers fără bootstrap initial:
P2P_DHT=1
P2P_DHT_PROTOCOL=/ombra/kad/1.0.0
Nodul tău publică PeerID-ul în Kademlia DHT și descoperă alți peers cu același protocol. Mai slow inițial, dar rezilient dacă bootstrap-urile sunt down.
Pubsub topics
Nodul subscribe automat la topic-urile:
/ombra/blocks/1.0.0— block propagation/ombra/transactions/1.0.0— mempool gossip/ombra/attestations/1.0.0— validator attestations
Vezi mesajele live:
LOG_LEVEL=debug node apps/miner-node/dist/index.js | grep "pubsub"
Network info endpoint
curl localhost:3001/api/chain/network
Output:
{
"peerId": "12D3KooWMyOwnPeerID...",
"addresses": [
"/ip4/127.0.0.1/tcp/9090",
"/ip4/192.168.1.50/tcp/9090",
"/dns4/your-node.com/tcp/9090"
],
"peers": 5,
"topics": ["/ombra/blocks/1.0.0", "/ombra/transactions/1.0.0"]
}
Troubleshooting
"Connection timeout" la bootstrap
- Bootstrap peer e down → încearcă alt bootstrap
- ISP-ul tău blochează port 9090 outbound → schimbă port:
P2P_PORT=9999
"PeerID mismatch"
- Bootstrap config-ul tău are PeerID greșit (rebrand/key rotation pe seed)
- Verifică
https://ombra-net.com→ Network Info pentru PeerID actual
"Peer count fluctuează"
- Normal — peers vin și pleacă. Cap natural ~10-30 peers per nod
- Sub 3 peers = problemă networking, debug firewall/NAT