This repository is the central place for Rust development of the libp2p spec.
Warning: While we are trying our best to be compatible with other libp2p implementations, we cannot guarantee that this is the case considering the lack of a precise libp2p specifications.
How to use the library?
- Main documentation: https://docs.rs/libp2p
Where to ask questions?
- In the Rust section of https://discuss.libp2p.io.
- In the #libp2p IRC channel on freenode.
- By opening an issue in this repository.
The main components of this repository are structured as follows:
-
core/: The implementation oflibp2p-corewith itsNetwork,TransportandStreamMuxerAPI on which almost all other crates depend. -
transports/: Implementations of transport protocols (e.g. TCP) and protocol upgrades (e.g. for authenticated encryption, compression, ...) based on thelibp2p-coreTransportAPI . -
muxers/: Implementations of theStreamMuxerinterface oflibp2p-core, e.g. (sub)stream multiplexing protocols on top of (typically TCP) connections. Multiplexing protocols are (mandatory)Transportupgrades. -
swarm/: The implementation oflibp2p-swarmbuilding onlibp2p-corewith the central interfacesNetworkBehaviourandProtocolsHandlerused to implement application protocols (seeprotocols/). -
protocols/: Implementations of application protocols based on thelibp2p-swarmAPIs. -
misc/: Utility libraries. -
examples/: Worked examples of built-in application protocols (seeprotocols/) with commonTransportconfigurations.
(open a pull request if you want your project to be added here)
- https://github.com/paritytech/polkadot
- https://github.com/paritytech/substrate
- https://github.com/sigp/lighthouse
- https://github.com/golemfactory/golem-libp2p
- https://github.com/comit-network
- https://github.com/rs-ipfs/rust-ipfs
- https://github.com/marcopoloprotocol/marcopolo
- https://github.com/ChainSafe/forest