pear/README.md

1.7 KiB

🍐

Experiments in libp2p connectivity

Custom libp2p-based Go binaries for testing p2p connectivity in the following scenarios:

  • Public ipv4 to public ipv4
  • Public to private (behind NAT) and viceversa
  • Private to private (behind NAT, using holepunching)
  • Using the Tor transport

Assumptions

I am exploring the possibility of creating network conditions which resemble those of the scuttleverse. Peers are offline friends and have some out-of-band method of connecting to each other first. So, for example, I don't want to make use of a public DHT by default.

To facilitate holepunching and avoid public IPFS relays or DHT, I want to use a private self-hosted relay. No standard bootstrapping nodes should be required, everything is "in house" (like a "pub" or "room" in SSB).

I make explicit use of Noise for encryption because I control the peer implementation on both sides (guaranteed to be available).

Sometimes, it might be handy to make use of public IPFS relays or DHT, so I will leave this as an optional approach. The important point is that this will not be the default.

Local-first connections should also work.

Since libp2p was built within the context of a global connectivity mindset, I am exploring whether the feature set works for peer connectivity between a small group of friends.

Goals

Simple and well documented example programs.

Show possiblities for using overlay networks from the start.

Big shout-out to the writers of this wonderful tutorial.