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.
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:
PeerIdis a unique global identifier for a node on the network. Each node must have a different
PeerId. Normally, a
PeerIdis the hash of the public key used to negotiate encryption on the communication channel, thereby guaranteeing that they cannot be spoofed.
Transporttrait defines how to reach a remote node or listen for incoming remote connections. See the
Swarmstruct 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
NetworkBehaviourtrait to customize the behaviour of a
Swarm. It is the
NetworkBehaviourthat controls what happens on the network. Multiple types that implement
NetworkBehaviourcan be composed into a single behaviour.
Topologytrait is implemented for types that hold the layout of a network. When other components need the network layout to operate, they are passed an instance of a
StreamMuxertrait is implemented on structs that hold a connection to a remote and can subdivide this connection into multiple substreams. See the
OutboundUpgradetraits define how to upgrade each individual substream to use a protocol. See the
ProtocolsHandlertrait 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
This crate provides two sets of APIs:
- The low-level APIs are contained within the
nodesmodule. See the documentation for more information.
- The high-level APIs include the concepts of
Muxing is the process of splitting a connection into multiple substreams.
Low-level networking primitives.
Once we are connected to a node, a protocols handler handles one or more specific protocols on this connection.
High level manager of the network.
A network topology is a collection of nodes that are part of the network or that we think are part of the network. In other words, it is essentially a container whose layout is optimized for certain operations.
Handles entering a connection with a peer.
Contains everything related to upgrading a connection or a substream to use a protocol.
Representation of a Multiaddr.
Identifier of a peer of the network.
Public key used by the remote.
Error that can happen when upgrading a connection or substream to use a protocol.