# dotnet-libp2p
The library implements libp2p stack, including:
- TCP/noise/yamux and QUIC
- gossipsub 1.2
- mDNS, simple pubsub-peer-discovery
The repository: https://github.com/NethermindEth/dotnet-libp2p/
### Work in progress
- adding KAD by @leny62
- adding to the test-plans repo by @flcl42
- preparing TLS for the usage in production
- endless refactoring to make it lean and agile
- generic RequestResponse protocol, which is widely used and implemented https://github.com/NethermindEth/dotnet-libp2p/issues/123 by @namay26;
### Help needed with
- adding to the test-plans repoin part of perf and gossipsub testing, https://github.com/NethermindEth/dotnet-libp2p/issues/17;
- peer scoring ;
- [dns resolution and dnsaddr support](https://github.com/libp2p/specs/blob/master/addressing/README.md#ip-and-name-resolution) ;
#### In long perspective
- new protocols: circuit relay, rendezvous, ipfs ones, webtransport, webrtc;
- new gossipsub standards ;
- hole punching.
## Usage
The library is already used in the following projects:
- Shutter, shielded transactions project for Gnosis chain, libp2p is needed in part of transaction pool implementation:
- Shutter FAQ: https://docs.shutter.network/docs/shutter
- Implementation: https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Shutter/ShutterP2P.cs#L48
- OP consensus client, lightweight Optimism client written as a plugin for Nethermind EL:
- OP rollup node: https://docs.optimism.io/operators/node-operators/architecture#rollup-node
- Configure: https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Optimism/CL/P2P/OptimismCLP2P.cs#L75;
- Run: https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Optimism/CL/P2P/OptimismCLP2P.cs#L313
Examples from the repository:
- simple p2p chat https://github.com/NethermindEth/dotnet-libp2p/tree/main/src/samples/chat
- pubsub chat with mDNS discovery https://github.com/NethermindEth/dotnet-libp2p/tree/main/src/samples/pubsub-chat
Supported protocols: https://github.com/NethermindEth/dotnet-libp2p/?tab=readme-ov-file#roadmap
Documentation: https://github.com/NethermindEth/dotnet-libp2p/tree/update-docs/docs
## Help
Feel free to ask any questions in:
- [Telegram](https://t.me/dotnet_libp2p)
- [Discord](https://discord.com/channels/1204447718093750272/1341468555568353330)
Don't hestitate to open issues or pick existing ones into work!