github.com/aakash4dev/cometbft@v0.38.2/spec/p2p/README.md (about)

     1  ---
     2  order: 1
     3  parent:
     4    title: P2P
     5    order: 6
     6  ---
     7  
     8  # Peer-to-Peer Communication
     9  
    10  A CometBFT network is composed of multiple CometBFT instances, hereafter called
    11  `nodes`, that interact by exchanging messages.
    12  
    13  The CometBFT protocols are designed under the assumption of a partially-connected network model.
    14  This means that a node is not assumed to be directly connected to every other
    15  node in the network.
    16  Instead, each node is directly connected to only a subset of other nodes,
    17  hereafter called its `peers`.
    18  
    19  The peer-to-peer (p2p) communication layer is then the component of CometBFT that:
    20  
    21  1. establishes connections between nodes in a CometBFT network
    22  2. manages the communication between a node and the connected peers
    23  3. intermediates the exchange of messages between peers in CometBFT protocols
    24  
    25  The specification the p2p layer is a work in progress,
    26  tracked by [issue #19](https://github.com/aakash4dev/cometbft/issues/19).
    27  The current content is organized as follows:
    28  
    29  - [`implementation`](./implementation/README.md): documents the current state
    30    of the implementation of the p2p layer, covering the main components of the
    31    `p2p` package. The documentation covers, in a fairly comprehensive way,
    32     the items 1. and 2. from the list above.
    33  - [`reactor-api`](./reactor-api/README.md): specifies the API offered by the
    34    p2p layer to the protocol layer, through the `Reactor` abstraction.
    35    This is a high-level specification (i.e., it should not be implementation-specific)
    36    of the p2p layer API, covering item 3. from the list above.
    37  - [`legacy-docs`](./legacy-docs/): We keep older documentation in 
    38    the `legacy-docs` directory, as overall, it contains useful information. 
    39    However, part of this content is redundant,
    40    being more comprehensively covered in more recent documents,
    41    and some implementation details might be outdated
    42    (see [issue #981](https://github.com/aakash4dev/cometbft/issues/981)).
    43  
    44  In addition to this content, some unfinished, work in progress, and auxiliary
    45  material can be found in the
    46  [knowledge-base](https://github.com/cometbft/knowledge-base/tree/main/p2p) repository.