Peer-to-Peer Communication
order: 1 parent: title: P2P order: 6
Peer-to-Peer Communication
A CometBFT network is composed of multiple CometBFT instances, hereafter called
nodes, that interact by exchanging messages.
The CometBFT protocols are designed under the assumption of a partially-connected network model.
This means that a node is not assumed to be directly connected to every other
node in the network.
Instead, each node is directly connected to only a subset of other nodes,
hereafter called its peers.
The peer-to-peer (p2p) communication layer is then the component of CometBFT that:
- establishes connections between nodes in a CometBFT network
- manages the communication between a node and the connected peers
- intermediates the exchange of messages between peers in CometBFT protocols
The specification of the p2p layer is a work in progress, tracked by issue #19. The current content is organized as follows:
implementation: documents the current state of the implementation of the p2p layer, covering the main components of thep2ppackage. The documentation covers, in a fairly comprehensive way, the items 1. and 2. from the list above.reactor-api: specifies the API offered by the p2p layer to the protocol layer, through theReactorabstraction. This is a high-level specification (i.e., it should not be implementation-specific) of the p2p layer API, covering item 3. from the list above.
In addition to this content, some unfinished, work in progress, and auxiliary
material can be found in the
knowledge-base repository,
and on the legacy-docs section on Github (see issue #981).