I am hoping to start, or should I say restart, the discussion on potential peer discovery solutions for a truly pure peer-to-peer network. I am attempting to create what I would call a "stupid" p2p network and this one concept seems either impossible, which I dislike even typing, or just hasn't been solved.
So let me create a theoretical environment (yes this is skewed towards the constraints in my project but makes the solution a little spicier).
- All peers will become peers through the application and their existence is dynamic and highly volatile.
- All peers must serve all functions. (So no dedicated relay, bootstrap, rendezvous nodes, etc.)
- The application has no knowledge of other peers, servers, static internet resources, etc. only knowledge of itself and its network interface.
- The network itself may be, and most likely will be, high latency, low bandwidth, serverless, no internet connection, and presentable to the application/gateway as a WAN.
- The application must be network agnostic, so no solutions requiring special network configs (this may be the most "impossible" constraint).
- The peers operate on low-end commodity computing resources
I have looked into many p2p implementations from Bitcoin, Ethereum, IPFS, BitTorrent, countless Github projects, and several discussion threads like this one. All seem to point to the absolute necessity for knowledge of some static resource, whether it be an online resource, a server, or a relay. Other solutions I have found necessitate unique networking environments or vpn tunneling hardware to package alongside the application. I am hoping to discover a solution that avoids all of these and allows a node to simply come online and discover other nodes running the same application and then bootstrap off one another.