ouroboros-network-api
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Network.NodeToNode.Version

Synopsis

Documentation

data NodeToNodeVersion Source #

Enumeration of node to node protocol versions.

Constructors

NodeToNodeV_7

Changes:

  • new KeepAlive codec
  • Enable CardanoNodeToNodeVersion5, i.e., Alonzo
NodeToNodeV_8

Changes:

  • Enable block diffusion pipelining in ChainSync and BlockFetch logic.
NodeToNodeV_9

Changes:

  • Enable CardanoNodeToNodeVersion6, i.e., Babbage
NodeToNodeV_10

Changes:

  • Enable full duplex connections.
NodeToNodeV_11

Changes:

  • Adds a new extra parameter to handshake: PeerSharing This version is needed to support the new Peer Sharing miniprotocol older versions that are negotiated will appear as not participating in Peer Sharing to newer versions.
  • Adds query to NodeToClientVersionData.
NodeToNodeV_12

No changes.

(In the past, this enabled Conway, but the negotiated NodeToNodeVersion no longer en-/disables eras.)

NodeToNodeV_13

Changes:

  • Removed PeerSharingPrivate constructor
  • Fixed Codec to disable PeerSharing with buggy versions 11 and 12.
  • Disable PeerSharing with InitiatorOnly nodes, since they do not run peer sharing server side and can not reply to requests.

Instances

Instances details
NFData NodeToNodeVersion Source # 
Instance details

Defined in Ouroboros.Network.NodeToNode.Version

Methods

rnf :: NodeToNodeVersion -> () #

Bounded NodeToNodeVersion Source # 
Instance details

Defined in Ouroboros.Network.NodeToNode.Version

Enum NodeToNodeVersion Source # 
Instance details

Defined in Ouroboros.Network.NodeToNode.Version

Generic NodeToNodeVersion Source # 
Instance details

Defined in Ouroboros.Network.NodeToNode.Version

Associated Types

type Rep NodeToNodeVersion 
Instance details

Defined in Ouroboros.Network.NodeToNode.Version

type Rep NodeToNodeVersion = D1 ('MetaData "NodeToNodeVersion" "Ouroboros.Network.NodeToNode.Version" "ouroboros-network-api-0.9.0.1-inplace" 'False) ((C1 ('MetaCons "NodeToNodeV_7" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "NodeToNodeV_8" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NodeToNodeV_9" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NodeToNodeV_10" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NodeToNodeV_11" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NodeToNodeV_12" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NodeToNodeV_13" 'PrefixI 'False) (U1 :: Type -> Type))))
Show NodeToNodeVersion Source # 
Instance details

Defined in Ouroboros.Network.NodeToNode.Version

Eq NodeToNodeVersion Source # 
Instance details

Defined in Ouroboros.Network.NodeToNode.Version

Ord NodeToNodeVersion Source # 
Instance details

Defined in Ouroboros.Network.NodeToNode.Version

type Rep NodeToNodeVersion Source # 
Instance details

Defined in Ouroboros.Network.NodeToNode.Version

type Rep NodeToNodeVersion = D1 ('MetaData "NodeToNodeVersion" "Ouroboros.Network.NodeToNode.Version" "ouroboros-network-api-0.9.0.1-inplace" 'False) ((C1 ('MetaCons "NodeToNodeV_7" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "NodeToNodeV_8" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NodeToNodeV_9" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NodeToNodeV_10" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NodeToNodeV_11" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NodeToNodeV_12" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NodeToNodeV_13" 'PrefixI 'False) (U1 :: Type -> Type))))

data DiffusionMode Source #

The flag which indicates whether the node runs only initiator or both initiator or responder node.

This data structure has two proposes:

  • instruct the diffusion layer if it should listen on incoming connections;
  • it is communicated via NodeToNodeVersionData during handshake negotiation. In non-p2p mode we always send InitiatorOnlyDiffusionMode, in p2p mode we send exactly what the diffusion is given. In non-p2p mode every connection outbound port is ephemeral, the remote side cannot connect to it, however in p2p mode the outbound port is actually the port on which the node is listening (if it runs in InitiatorAndResponderDiffusionMode).

isPipeliningEnabled :: NodeToNodeVersion -> WhetherReceivingTentativeBlocks Source #

Check whether a version enabling diffusion pipelining has been negotiated.

TODO: this ought to be defined in `ouroboros-consensus` or `ouroboros-consensus-diffusion`