2 releases

0.27.1 Nov 6, 2024
0.27.0 Nov 5, 2024

#1690 in Network programming

Download history 251/week @ 2024-11-04 57/week @ 2024-11-11 30/week @ 2024-11-18 31/week @ 2024-11-25 37/week @ 2024-12-02 53/week @ 2024-12-09

154 downloads per month
Used in 14 crates (via mwc-libp2p)

MIT license

465KB
8K SLoC

Central repository for work on libp2p

dependency status

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?

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 of mwc-libp2p-core with its Network, Transport and StreamMuxer 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 the mwc-libp2p-core Transport API .

  • muxers/: Implementations of the StreamMuxer interface of mwc-libp2p-core, e.g. (sub)stream multiplexing protocols on top of (typically TCP) connections. Multiplexing protocols are (mandatory) Transport upgrades.

  • swarm/: The implementation of mwc-libp2p-swarm building on mwc-libp2p-core with the central interfaces NetworkBehaviour and ProtocolsHandler used to implement application protocols (see protocols/).

  • protocols/: Implementations of application protocols based on the mwc-libp2p-swarm APIs.

  • misc/: Utility libraries.

  • examples/: Worked examples of built-in application protocols (see protocols/) with common Transport configurations.

Notable users

(open a pull request if you want your project to be added here)


lib.rs:

mwc-libp2p-dns

This crate provides the type DnsConfig that allows one to resolve the /dns4/ and /dns6/ components of multiaddresses.

Usage

In order to use this crate, create a DnsConfig with one of its constructors and pass it an implementation of the Transport trait.

Whenever we want to dial an address through the DnsConfig and that address contains a /dns/, /dns4/, or /dns6/ component, a DNS resolve will be performed and the component will be replaced with /ip4/ and/or /ip6/ components.

Dependencies

~11–16MB
~282K SLoC