2 releases
0.27.1 | Nov 6, 2024 |
---|---|
0.27.0 | Nov 5, 2024 |
#2075 in Network programming
259 downloads per month
Used in mwc-libp2p
480KB
8K
SLoC
Central repository for work on libp2p
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.
Documentation
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.
Repository Structure
The main components of this repository are structured as follows:
-
core/
: The implementation ofmwc-libp2p-core
with itsNetwork
,Transport
andStreamMuxer
API 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 themwc-libp2p-core
Transport
API . -
muxers/
: Implementations of theStreamMuxer
interface ofmwc-libp2p-core
, e.g. (sub)stream multiplexing protocols on top of (typically TCP) connections. Multiplexing protocols are (mandatory)Transport
upgrades. -
swarm/
: The implementation ofmwc-libp2p-swarm
building onmwc-libp2p-core
with the central interfacesNetworkBehaviour
andProtocolsHandler
used to implement application protocols (seeprotocols/
). -
protocols/
: Implementations of application protocols based on themwc-libp2p-swarm
APIs. -
misc/
: Utility libraries. -
examples/
: Worked examples of built-in application protocols (seeprotocols/
) with commonTransport
configurations.
Notable users
(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
lib.rs
:
Implementation of the libp2p Transport
trait for external transports.
This Transport
is used in the context of WASM to allow delegating the transport mechanism
to the code that uses rust-libp2p, as opposed to inside of rust-libp2p itself.
Note: This only allows transports that produce a raw stream with the remote. You couldn't, for example, pass an implementation QUIC.
Usage
Call new()
with a JavaScript object that implements the interface described in the ffi
module.
Dependencies
~11–17MB
~292K SLoC