Skip to main content

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:

  1. Asigură-te că ai DNS sau IP static
  2. Port 9090 deschis în firewall + accesibil din internet (nu doar localhost)
  3. Share multiaddr-ul tău cu alți operatori:
    /dns4/your-node.com/tcp/9090/p2p/12D3KooWMyOwnPeerID...
  4. 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):

  1. Setează port forwarding în router admin panel:
    External 9090 → Internal 192.168.x.x:9090 TCP
  2. Activează UPnP (opțional — libp2p încearcă AutoNAT):
    P2P_AUTONAT=1
  3. 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

Vezi și