[][src]Crate libp2p_core

Transport, protocol upgrade and swarm systems of libp2p.

This crate contains all the core traits and mechanisms of the transport and swarm systems of libp2p.

Overview

This documentation focuses on the concepts of libp2p-core, and is interesting mostly if you want to extend libp2p with new protocols. If you only want to use libp2p, you might find the documentation of the main libp2p crate more interesting.

The main concepts of libp2p are:

  • A PeerId is a unique global identifier for a node on the network. Each node must have a different PeerId. Normally, a PeerId is the hash of the public key used to negotiate encryption on the communication channel, thereby guaranteeing that they cannot be spoofed.
  • The Transport trait defines how to reach a remote node or listen for incoming remote connections. See the transport module.
  • The Swarm struct contains all active and pending connections to remotes and manages the state of all the substreams that have been opened, and all the upgrades that were built upon these substreams.
  • Use the NetworkBehaviour trait to customize the behaviour of a Swarm. It is the NetworkBehaviour that controls what happens on the network. Multiple types that implement NetworkBehaviour can be composed into a single behaviour.
  • The StreamMuxer trait is implemented on structs that hold a connection to a remote and can subdivide this connection into multiple substreams. See the muxing module.
  • The UpgradeInfo, InboundUpgrade and OutboundUpgrade traits define how to upgrade each individual substream to use a protocol. See the upgrade module.
  • The ProtocolsHandler trait defines how each active connection to a remote should behave: how to handle incoming substreams, which protocols are supported, when to open a new outbound substream, etc. See the protocols_handler trait.

High-level APIs vs low-level APIs

This crate provides two sets of APIs:

  • The low-level APIs are contained within the nodes module. See the documentation for more information.
  • The high-level APIs include the concepts of Swarm, ProtocolsHandler and NetworkBehaviour.

Re-exports

pub use multiaddr;
pub use muxing::StreamMuxer;
pub use nodes::raw_swarm::ConnectedPoint;
pub use protocols_handler::ProtocolsHandler;
pub use protocols_handler::ProtocolsHandlerEvent;
pub use identity::PublicKey;
pub use transport::Transport;
pub use upgrade::InboundUpgrade;
pub use upgrade::OutboundUpgrade;
pub use upgrade::UpgradeInfo;
pub use upgrade::ProtocolName;

Modules

either
identity

A node's network identity keys.

muxing

Muxing is the process of splitting a connection into multiple substreams.

nodes

Low-level networking primitives.

protocols_handler

Once a connection to a remote peer is established, a ProtocolsHandler negotiates and handles one or more specific protocols on the connection.

swarm

High level manager of the network.

transport

Connection-oriented communication channels.

upgrade

Contains everything related to upgrading a connection or a substream to use a protocol.

Structs

Multiaddr

Representation of a Multiaddr.

Negotiated

A stream after it has been negotiated.

PeerId

Identifier of a peer of the network.

Enums

Endpoint
UpgradeError

Error that can happen when upgrading a connection or substream to use a protocol.

Functions

address_translation

Perform IP address translation.

Type Definitions

Swarm

Contains the state of the network, plus the way it should behave.