The project aims to implement libp2p to unlock building .NET peer-to-peer applications using a battle-tested specification of network communication of the new age.
The docs from the application developer perspective: quick start, sessions, discovery, and pubsub. As a libp2p protocol implementer, you may be interested in more advanced tutorials. You can rewire and reconfigure the library in any way you want!
Contributions are welcome, kindly check the issues tab, everything there if not assigned to a person can be taken into work. More details in CONTRIBUTING.md.
dotnet add package Nethermind.Libp2pgit clone https://github.com/NethermindEth/dotnet-libp2p.git
cd ./dotnet-libp2p/libp2p/
dotnet build
dotnet testThe MAUI chat sample is visible in the solution but excluded from its default restore and build. Only building that sample requires the MAUI workload.
The stable 1.0.0 release supports the protocols marked ✅ below. The roadmap tracks ongoing protocol coverage and improvements.
The target is to provide a performant well-tested implementation of a wide range of protocols that works on multiple platforms, with high throughput and low memory profile.
| Protocol | Version | Status |
|---|---|---|
| TCP | tcp | ✅ |
| QUIC | quic-v1 | ✅ |
| multistream-select | /multistream/1.0.0 | ✅ |
| plaintext | /plaintext/2.0.0 | ✅ |
| noise | /noise | ✅ |
| yamux | /yamux/1.0.0 | ✅ |
| tls | /tls/1.0.0 | ✅ |
| WebSockets | /ws, /wss | ✅ |
| WebRTC Direct | /webrtc-direct | 🚧 |
| Circuit Relay | /libp2p/circuit/relay/0.2.0/* | 🚧 |
| WebTransport | ⬜ help wanted | |
| hole punching | ⬜ help wanted | |
| auto-tls | 🚧 | |
| Application layer | ||
| Identify | /ipfs/id/1.0.0 | ✅ |
| ping | /ipfs/ping/1.0.0 | ✅ |
| Identify push | /ipfs/id/push/1.0.0 | ✅ |
| pubsub | /floodsub/1.0.0 | ✅ |
| /meshsub/1.0.0 | ✅ | |
| /meshsub/1.1.0 | ✅ | |
| /meshsub/1.2.0 | ✅ | |
| /meshsub/1.3.0 | ✅ | |
| /meshsub/2.0.0 | ⬜ help wanted | |
| request-response | ✅ | |
| perf | /perf/1.0.0 | ✅ |
| Discovery | ||
| mDns | basic w/o DNS-SD | ✅ |
| pubsub peer discovery | pubsub-peer-discovery | ✅ |
| Kademlia DHT | /ipfs/kad/1.0.0 | ✅ |
⬜ - not yet implemented
🚧 - work in progress
✅ - basic support implemented
No plans for: mplex, quic-draft-29
dotnet-libp2p is an open-source software licensed under the MIT.