https://github.com/NethermindEth/dotnet-libp2p
A libp2p implementation for .NET in C#.
https://github.com/NethermindEth/dotnet-libp2p
libp2p network p2p-network
Last synced: about 14 hours ago
JSON representation
A libp2p implementation for .NET in C#.
- Host: GitHub
- URL: https://github.com/NethermindEth/dotnet-libp2p
- Owner: NethermindEth
- License: mit
- Created: 2023-01-31T13:36:38.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2026-06-24T12:42:35.000Z (2 days ago)
- Last Synced: 2026-06-24T13:21:55.549Z (2 days ago)
- Topics: libp2p, network, p2p-network
- Language: C#
- Homepage:
- Size: 11.3 MB
- Stars: 118
- Watchers: 14
- Forks: 48
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-libp2p - dotnet-libp2p
README
# dotnet-libp2p
[](https://github.com/nethermindeth/dotnet-libp2p/actions/workflows/test.yml)
[](https://www.nuget.org/packages/Nethermind.Libp2p)
[](https://t.me/dotnet_libp2p)
[](https://discord.com/channels/1204447718093750272/1341468555568353330)
The project aims to implement [libp2p](https://libp2p.io) 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](./docs/README.md), [sessions](./docs/sessions.md), [discovery](./docs/discovery.md), and [pubsub](./src/libp2p/Libp2p.Protocols.Pubsub/README.md).
As a libp2p protocol implementer, you may be interested in [more advanced tutorials](./docs/development/README.md). You can rewire and reconfigure the library in any way you want!
**Contributions are welcome**, kindly check the [issues](https://github.com/NethermindEth/dotnet-libp2p/issues) tab, everything there if not assigned to a person can be taken into work. More details in [CONTRIBUTING.md](./CONTRIBUTING.md).
## Adding libp2p to your project
```sh
dotnet add package Nethermind.Libp2p --prerelease
```
## Building the solution
```sh
git clone https://github.com/NethermindEth/dotnet-libp2p.git
cd ./src/libp2p/
dotnet build
dotnet test
```
## Roadmap
🚧 The library is not stable and under heavy development. Consider the [beta](https://github.com/NethermindEth/dotnet-libp2p/milestone/5) 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 |
| auto-tls | | 🚧 |
| **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 | 🚧 |
| | /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](https://github.com/libp2p/js-libp2p-pubsub-peer-discovery) | ✅ |
| Kademlia DHT | /*/kad/1.0.0 | ✅ |
| [discv5](https://github.com/Pier-Two/Lantern.Discv5) (wrapper) | 5.1 | 🚧 |
⬜ - not yet implemented
🚧 - work in progress
✅ - basic support implemented
No plans for: mplex, quic-draft-29
## License
dotnet-libp2p is an open-source software licensed under the [MIT](https://github.com/nethermindeth/dotnet-libp2p/blob/main/LICENSE).