Skip to main content
21.1k
go-libp2p in 2022

go-libp2p in 2022

libp2p update Go
by Prithvi Shahi 3 min read

We are excited to share with you all the progress that has been made on go-libp2p in 2022. It has been a year full of exciting new features, code organization, and a growing team of talented contributors.

Throughout the year, we released seven updates to go-libp2p ranging from v0.18.0 to v0.24.0, with a number of patch releases in between. In total, we had 21 contributors to the project in 2022.

New Features

Transport Protocols

WebTransport

One of the most exciting developments of the year was the release of the WebTransport protocol in v0.23.0. WebTransport enables browser-to-server connectivity in go-libp2p when paired with a peer running js-libp2p-webtransport in the browser.

To learn more about this exciting feature, check out our blog post on WebTransport in libp2p and the WebTransport documentation.

WebRTC (Browser to Server)

In addition to WebTransport, the go-libp2p team also began work on enabling the WebRTC transport, in partnership with Little Bear Labs. This new transport allows for connectivity between go-libp2p server nodes and js-libp2p browser nodes.

QUIC Versions

We also made developments to the existing QUIC implementation in go-libp2p. In v0.24.0, go-libp2p changed to properly distinguish between QUIC versions (in their multiaddresses) and changed the default dial behavior to prefer the new QUIC version.

DoS Protection & Resource Management

We added the Resource Manager component in v0.18.0. This feature allows developers to configure limits on connections, streams, and memory usage.

Faster Handshakes

In v0.24.0, go-libp2p added optimized muxer selection via TLS' ALPN extension and Noise extensions. This resulted in saving one round trip during connection establishment.

AutoRelay discovers Circuit Relay v2

In v0.19.0, we enabled AutoRelay to discover nodes running Circuit Relay v2, improving the overall performance and reliability of the network.

Project Improvements

Interoperability Testing

We began a concerted effort to improve interoperability between go-libp2p and libp2p implementations in other languages. The details can be seen in the shared libp2p/test-plans Roadmap.

Monorepo Consolidation

go-libp2p is a monorepo as of the v0.22.0 release. This improvement makes changes and improvements across go-libp2p much easier.

Plans for 2023

Key areas of focus:

Resources and how you can help contribute

We always welcome contributions from the community! Check out any of these help wanted/good first issues to start contributing.

Thank you for reading!