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. 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.Libp2p --prerelease
git clone https://github.com/NethermindEth/dotnet-libp2p.git
cd ./src/libp2p/
dotnet build
dotnet test
🚧 The library is not stable and under heavy development. Consider the beta milestone as a reflection of readiness for production 🚧
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 | 🚧 |
Circuit Relay | /libp2p/circuit/relay/0.2.0/* | 🚧 |
WebTransport | ⬜ help wanted | |
WebRTC | ⬜ help wanted | |
hole punching | ⬜ help wanted | |
Application layer | ||
Identify | /ipfs/id/1.0.0 | ✅ |
ping | /ipfs/ping/1.0.0 | ✅ |
ping/push | /ipfs/id/push/1.0.0 | ✅ |
pubsub | /floodsub/1.0.0 | ✅ |
/meshsub/1.0.0 | ✅ | |
/meshsub/1.1.0 | 🚧 | |
/meshsub/1.2.0 | 🚧 | |
perf | /perf/1.0.0 | 🚧 |
Discovery | ||
mDns | basic w/o DNS-SD | ✅ |
pubsub peer discovery | pubsub-peer-discovery | ✅ |
Kademlia DHT | /*/kad/1.0.0 | 🚧 |
discv5 (wrapper) | 5.1 | 🚧 |
⬜ - 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.