This packages provides a native Gerbil implementation of the libp2p networking stack.
The implementation will loosely follow the go-libp2p architecture, as far as the host interface is concerned.
Specifically, the main user interface is the Host
, and the I/O interface is the Stream
-- see libp2p/interface.ss.
This is just beginning; these are our plans:
This is the very basic functionality of libp2p; we just want to implement enough of the host to talk to a go-libp2p program implementing a basic echo protocol, both as a client and as a server.
That means:
- implement enough of the Host to connect to a peer, open a stream as a client, and handle a stream as server.
- protocol requirements:
- multistream select for handshake/mux negotiation
- tls handshake (or noise, eventually both)
- yamux
- identify
- peerstore
- network
- resource manager
- event bus
As we build towards production, we are going to need some more components:
- autonat client for nat detection
- relay/v2 client, dcutr, and dht client for hole punching
- dht client for bootstrap/routing
- pubsub/gossipsub
- autonat server
- relay/v2 server
- dht server
This is a very big endeavor in itself, so it might take a while; volunteers welcome.
© 2024 The Mighty Gerbils Contributors; distributed with the Gerbil License, dual Apache-2.0 and LGPL v2.1.