libp2p at IPFS þing 2023 Recap

libp2p at IPFS þing 2023 Recap

Table of Contents

# Introduction

Last month, April 15th - 19th 2023, the IPFS community came together in Brussels, Belgium for IPFS þing 2023 (opens new window). The libp2p users and contributors community came out to meet up once again to interface with the broader IFPS community as well as share all of the great accomplishments and new work going on in the libp2p project. It was great to reconnect with people from organizations supporting and contributing to libp2p such as Peergos (opens new window) and Source Network (opens new window).

Group shot of the IPFS þing 2023

Over the course of five days the the libp2p community gave 6 different talks on the recent libp2p developments and finished strong with a workshop where participants built their own peer-to-peer chat application leveraging the same technology as the Universal Connectivity (opens new window) demonstrator project.

# Goals

The goals of the libp2p contributors attending IPFS þing 2023 were to:

  1. Build excitement by demonstrating the Universal Connectivity application (opens new window).
  2. Give updates on the continually improving performance, dealing with non-uniform network topology, interoperability improvements, and lowering the barriers to libp2p compatibility.
  3. Reconnect with community contributors and build up the greater libp2p community.

# Recap of Talks

# Connecting Everything, Everywhere, All at Once with libp2p

Max Inden (opens new window) (rust-libp2p maintainer, Software Engineer at Protocol Labs)

Max's talk about the Universal Connectivity demonstrator app (opens new window) broke the record for the most people involved: @2color / Daniel (opens new window), @TheDiscordian (opens new window), @jochasinga / Pan (opens new window), @achingbrain / Alex (opens new window), @maschad / Chad (opens new window), @p-shahi / Prithvi (opens new window), @marcopolo / Marco (opens new window), @thomaseizinger / Thomas (opens new window), and @mxinden / Max (opens new window) all collaborated to make it happen. The live demo showed a go-libp2p node talking to a rust-libp2p node talking to go-libp2p laptop talking to js-libp2p browsers using a variety of transports including QUIC (opens new window), WebRTC Direct (opens new window), WebRTC (opens new window), and WebTransport (opens new window). The work on the Universal Connectivity demonstrator app turned out to be an excellent driver for interop testing and the need for further work there (opens new window).

# libp2p Performance

Max Inden (opens new window) (rust-libp2p maintainer, Software Engineer at Protocol Labs)
Marco Munizaga (opens new window) (go-libp2p and zig-libp2p maintainer, Software Engineer at Protocol Labs)

Watch Max and Marco describe how libp2p maintainers think about and measure performance, plus learn about some of the optimizations that are in the latest versions. This talk captures the in-progress work by libp2p maintainers to have automated, realistic, and easily reproducible benchmarks for the implementations.

# The Incredible Benefits of libp2p + HTTP: A Match Made in Decentralization Heaven

Marten Seemann (opens new window) (go-libp2p maintainer, Software Engineer at Protocol Labs)
Marco Munizaga (opens new window) (go-libp2p and zig-libp2p maintainer, Software Engineer at Protocol Labs)

Marten, with the help of Marco, presented on advancements in using HTTP over libp2p (opens new window). HTTP is a universally supported protocol with lots of established infrastructure but it has some key limitations that libp2p solves. In this talk Marco and Marten demonstrate the use of js-libp2p and service workers to intercept normal HTTP calls in the browser and re-route them over the libp2p connection to a peer that handles the HTTP request and serves the content back over the libp2p connection. This approach solves the problem of making web apps able to use both normal HTTP to access regular web servers and libp2p connections to access HTTP servers running as libp2p peers.

# How to Build Your Own Compatible libp2p Stack from Scratch in an Afternoon

Marten Seemann (opens new window) (go-libp2p maintainer, Software Engineer at Protocol Labs)
Marco Munizaga (opens new window) (go-libp2p and zig-libp2p maintainer, Software Engineer at Protocol Labs)

Don't miss this presentation by Marten and Marco. They start off showing how libp2p is evolving and improving with the addition of the QUIC transport followed by an explanation of how simple it is to create a compatible libp2p stack out of a QUIC library, the libp2p TLS extension and some code for doing peer ID encoding and sending multistream headers. To prove how simple it is, Marco showed off his zig-libp2p implementation sending a ping to a go-libp2p node.

# Enabling More Applications to Join the libp2p DHT Ecosystem

Gui Michel (opens new window) (Research Engineer at Protocol Labs)

Gui presents on a proposal to clarify the the boundary between libp2p and the IPFS DHT and implementation features. This approach to doing "composable" DHTs is designed to build global DHTs for many more libp2p applications that speak protocols and support features that aren't IPFS related all without harming the existing IPFS network. This presentation is a medium level of technical detail and certainly offers some exciting possibilities.

# Hole Punching in the Wild

Max Inden (opens new window) (rust-libp2p maintainer, Software Engineer at Protocol Labs)

In a reprise of Max's popular talk from FOSDEM (opens new window), learn how libp2p's hole punching mechanism works and what we've learned from the measurement campaign run last year (opens new window).

# libp2p Workshop

Thomas Eizinger (opens new window) (rust-libp2p maintainer, Software Engineer at Protocol Labs)

During the unconference sessions late in the week, Thomas hosted a libp2p workshop where participants went through the process of building a peer-to-peer chat application using rust-libp2p. The workshop's code is in this repo (opens new window). You too can give it a try by cloning the code with git clone --mirror https://github.com/thomaseizinger/libp2p-workshop.git so that you get all of the branches. This workshop is designed to be followed in iterations. Start by checking out the iteration-1 branch and follow along in the README. Once complete, check out the iteration-2 branch and again follow the additional steps in the README. The repo contains branches for iteration-1, iteration-2, iteration-3, iteration-4, iteration-5, and iteration-final. Each branch has additional steps in the README. When done, you will have a functioning peer-to-peer chat application built using rust-libp2p!

# Get Involved/Stay Tuned

We wanted to thank all members of the libp2p community including the maintainers, contributors, and supports of the work. Excitement is growing in libp2p and there are many opportunities for new people to get involved in the future of the project:

To learn more about libp2p generally, checkout:

You can reach out to us and stay tuned for our next event announcement by joining our various communication channels (opens new window), joining the discussion forum (opens new window), following us on Twitter (opens new window), or saying hi in the #libp2p-implementers channel in the Filecoin public Slack (opens new window).

Cheers!

Talking about libp2p is always fun
Max and Marco
Max and Marco
Max and Marco
Dave and Thomas
Marco and Marten