I’m currently investigating using libp2p to build a node for an existing p2p network that is not built using libp2p and have some questions/requesting advice. I’m very new to p2p tech in general so some of my questions may be a bit ignorant - feel free to make any corrections/etc.
I plan to use the Rust implementation if I go with libp2p (but would also be open to the JS impl if there was a need/limitation with Rust).
Very brief overview:
- Network is over TCP
- Doesn’t use encryption (currently)
Is it possible to use a custom handshake/protocol negotition? The network requires a specific handshake before any other p2p messages are sent, it looks something like: Connect to remote over TCP → SendPeerHandshake message → ReceivePeerHandshakeResponse message → now we can handle other messages.
Is it possible to run libp2p without any encryption (Rust impl)?
The way it gathers peers is by bootstraping from a known set of peers and then sending “ListPeers” messages to known peers and receiving “KnownPeers” messages, is it possible to use “custom peer gathering” like this?
How/would mplex (or whatever it is) work with other nodes that aren’t libp2p based?
Does it make sense to use libp2p on a network where other nodes aren’t using libp2p? My gut feeling is libp2p provides a lot of useful core functionality whereby it is still worth using if I can accomplish the above
Any general advice/suggestions/recommendations would be very much appreciated