A QUIC-based bootstrap server for the Bloc blockchain network.
Its sole responsibility is peer discovery and coordination β not consensus, validation, or block storage.
This server allows nodes behind NAT/firewalls to:
- register themselves
- discover other peers
- prepare for UDP hole punching
- QUIC (UDP + TLS) based transport
- Secure peer registration
- Stateless protocol design (no blockchain state)
- JSON-based message envelope
- Graceful session handling
- Designed for NAT traversal workflows
Node ββQUICβββΆ Bootstrap Server β β β register β ββββββββββββββββββΆβ β β stores observed addr β β ββββββββββ peer list / responses
- One QUIC session per peer
- One stream per request
- Server does not retain long-term state (yet)
- Protocol: QUIC
- Transport: UDP
- Default Port:
4242 - TLS: Self-signed certificates (for now)
bootstrap/ βββ certificate/ β βββ server.crt β βββ server.key βββ types/ β βββ message.go β βββ peer.go βββ utils/ β βββ logger/ βββ main.go βββ peers.json βββ README.md
All messages follow a common envelope:
{
"version": 1,
"header": {
"application/json": "true"
},
"type": "register",
"length": 17,
"payload": { ... }
}| Type | Description |
|---|---|
register |
Register node with bootstrap |
ping |
Health check |
punch |
Hole punching coordination (WIP) |
π§© Example: Register Message
{
"version": 1,
"header": {
"application/json": "true"
},
"type": "register",
"length": 17,
"payload": {
"id": "node-123"
}
}