Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Network

The network layer is responsible of implementing the Node-To-Node interface of a node, for transmitting data between nodes.

The network protocols consist of a multiplexing layer which carries one or more mini-protocols, according to the type of connection - for example:

graph TB
    HS(Handshake)
    CS(ChainSync)
    BF(BlockFetch)
    Mux[Multiplexing]
    Con([Raw Connection])

    HS <--> Mux
    CS <--> Mux
    BF <--> Mux
    Mux <--> Con

tip

Nodes usually have a separate interface to provide information to local clients. Such interface is up to the node implementation to decide which protocols to use. It often times is convenient to group this interface under the networking layer of a node but it is not mandatory. For more information see Client interfaces.

Node-to-node mini-protocols

Current node-to-node protocol version: v14

The set of Node-To-Node mini-protocols needed for participating in the Cardano network (combined by the multiplexing wrapper) is:

  • Handshake - for connection and version negotiation
  • Chain Sync - for synchronization of changes to the Cardano chain
  • Block Fetch - for transferring blocks between nodes
  • TxSubmission2 - for propagating transactions between nodes
  • Keep Alive - for maintaining and measuring timing of the connection
  • Peer Sharing - for exchanging peer information to create the peer-to-peer (P2P) network