Skip to content

Networking

XE is a fully peer-to-peer network with no central servers. All node communication -- block propagation, consensus voting, synchronization, marketplace negotiation, and peer discovery -- happens over direct connections between nodes using libp2p.

Components

Component Purpose Protocol / Mechanism
Host TCP transport, connection management, persistent identity libp2p core
GossipSub Broadcast blocks, votes, marketplace, statechain, directory libp2p GossipSub
Sync Frontier-based block synchronization /xe/sync/1.0.0 stream
Messaging Request-response over streams /xe/msg/1.0.0 stream
DHT Kademlia peer discovery /xe prefixed DHT

Architecture Overview

┌──────────────────────────────────────────────────────────┐
│                       Node                               │
│                                                          │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────┐  │
│  │   Ledger    │  │ State Chain │  │   Directory     │  │
│  └──────┬──────┘  └──────┬──────┘  └───────┬─────────┘  │
│         │                │                  │            │
│  ┌──────┴────────────────┴──────────────────┴─────────┐  │
│  │              Network Layer (net package)            │  │
│  │                                                    │  │
│  │  ┌──────────┐ ┌──────┐ ┌──────────┐ ┌───────────┐ │  │
│  │  │ GossipSub│ │ Sync │ │Messenger │ │    DHT    │ │  │
│  │  └────┬─────┘ └──┬───┘ └────┬─────┘ └─────┬─────┘ │  │
│  └───────┼──────────┼──────────┼──────────────┼───────┘  │
│          │          │          │              │           │
│  ┌───────┴──────────┴──────────┴──────────────┴───────┐  │
│  │           libp2p Host (TCP transport)              │  │
│  └────────────────────────┬───────────────────────────┘  │
└───────────────────────────┼──────────────────────────────┘
                       TCP / Internet

How Data Flows

Block Propagation

  1. A node creates a new block (send, receive, claim, lease, etc.)
  2. The block is added to the local ledger
  3. The block is published via GossipSub on the xe/blocks topic
  4. All subscribed peers receive the block, validate it, and add it to their ledgers
  5. If the block triggers a conflict, votes are broadcast on xe/votes

Synchronization

When a new node joins or reconnects after downtime, it uses the sync protocol to catch up:

  1. On connection to a peer, the node sends its current frontiers (latest block per account)
  2. The peer compares frontiers and streams back any missing blocks
  3. A periodic re-sync every 10 seconds catches blocks missed during gossip

Peer-to-Peer Messaging

The messaging protocol provides request-response semantics for targeted communication:

  • Marketplace negotiation (resource requests and offers)
  • State chain synchronization
  • Any typed message exchange between specific peers

Discovery Mechanisms

Peers find each other through three mechanisms:

  1. mDNS -- Automatic local network discovery. Nodes on the same LAN find each other without configuration.
  2. Bootstrap peers -- Explicit peer addresses passed via the -dial flag. The node retries failed connections every 10 seconds.
  3. Kademlia DHT -- Distributed hash table for discovering peers by their peer ID. Used by the Messenger to locate peers not already in the peerstore.

No Central Infrastructure

XE has no tracker servers, seed nodes, or central coordination points. Any node can bootstrap from any other node. The DHT protocol prefix /xe isolates the XE network from public IPFS DHT traffic.

Security Properties

  • Transport encryption: libp2p provides encrypted connections by default (Noise or TLS 1.3)
  • Peer identity: Each node has a persistent Ed25519 identity key, giving it a stable peer ID across restarts
  • Message validation: GossipSub pre-validates field lengths before accepting messages
  • Rate limiting: Sync protocol enforces a 5-second cooldown per peer to prevent abuse
  • Size limits: All protocols enforce maximum message sizes to prevent memory exhaustion

Source Code

The networking layer lives in the core/net/ package:

File Contents
host.go Host creation, mDNS discovery, peer dialing
gossip.go GossipSub for all broadcast topics
sync.go Frontier-based block synchronization
msg.go Request-response messaging protocol
dht.go Kademlia DHT setup
messages.go Wire format types for all message types