Gerbil native libp2p implementation
Find a file
vyzo 772cee0b7e
Preliminaries (#1)
* gerbil pkg scaffolding

* public libp2p host interface

* some interface refinements

* notes

* add event bus to the plan, fix typo
2024-07-29 10:37:00 +03:00
libp2p Preliminaries (#1) 2024-07-29 10:37:00 +03:00
.gitignore Preliminaries (#1) 2024-07-29 10:37:00 +03:00
build.ss Preliminaries (#1) 2024-07-29 10:37:00 +03:00
gerbil.pkg Preliminaries (#1) 2024-07-29 10:37:00 +03:00
LICENSE Initial commit 2024-07-27 22:36:43 +03:00
README.md Preliminaries (#1) 2024-07-29 10:37:00 +03:00

gerbil-libp2p

This packages provides a native Gerbil implementation of the libp2p networking stack.

Overview

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.

Development Roadmap

This is just beginning; these are our plans:

MVP

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

Advanced Host APIs

  • peerstore
  • network
  • resource manager
  • event bus

Advanced Functionality

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

Public Node Functionality

  • autonat server
  • relay/v2 server
  • dht server

QUIC

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.