cardano-diffusion:api
Safe HaskellNone
LanguageHaskell2010

Cardano.Network.NodeToNode.Version

Synopsis

Documentation

data NodeToNodeVersion Source #

Enumeration of node to node protocol versions.

Historical versions:

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.

Constructors

NodeToNodeV_14

Plomin HF, mandatory on mainnet as of 2025.01.29

NodeToNodeV_15

SRV support

NodeToNodeV_16

Experimental.

Adds support for Peras mini-protocols (if PerasFlag is set).

Instances

Instances details
NFData NodeToNodeVersion Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Methods

rnf :: NodeToNodeVersion -> () #

Bounded NodeToNodeVersion Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Enum NodeToNodeVersion Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Generic NodeToNodeVersion Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Associated Types

type Rep NodeToNodeVersion 
Instance details

Defined in Cardano.Network.NodeToNode.Version

type Rep NodeToNodeVersion = D1 ('MetaData "NodeToNodeVersion" "Cardano.Network.NodeToNode.Version" "cardano-diffusion-1.0.0.0-inplace-api" 'False) (C1 ('MetaCons "NodeToNodeV_14" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "NodeToNodeV_15" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NodeToNodeV_16" 'PrefixI 'False) (U1 :: Type -> Type)))
Show NodeToNodeVersion Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Eq NodeToNodeVersion Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Ord NodeToNodeVersion Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

NoThunks NodeToNodeVersion Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

type Rep NodeToNodeVersion Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

type Rep NodeToNodeVersion = D1 ('MetaData "NodeToNodeVersion" "Cardano.Network.NodeToNode.Version" "cardano-diffusion-1.0.0.0-inplace-api" 'False) (C1 ('MetaCons "NodeToNodeV_14" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "NodeToNodeV_15" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NodeToNodeV_16" 'PrefixI 'False) (U1 :: Type -> Type)))

data NodeToNodeVersionData Source #

Version data for NodeToNode protocol

Constructors

NodeToNodeVersionData 

Fields

Instances

Instances details
NFData NodeToNodeVersionData Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Methods

rnf :: NodeToNodeVersionData -> () #

Generic NodeToNodeVersionData Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Associated Types

type Rep NodeToNodeVersionData 
Instance details

Defined in Cardano.Network.NodeToNode.Version

type Rep NodeToNodeVersionData = D1 ('MetaData "NodeToNodeVersionData" "Cardano.Network.NodeToNode.Version" "cardano-diffusion-1.0.0.0-inplace-api" 'False) (C1 ('MetaCons "NodeToNodeVersionData" 'PrefixI 'True) ((S1 ('MetaSel ('Just "networkMagic") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NetworkMagic) :*: S1 ('MetaSel ('Just "diffusionMode") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DiffusionMode)) :*: (S1 ('MetaSel ('Just "peerSharing") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PeerSharing) :*: (S1 ('MetaSel ('Just "query") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: S1 ('MetaSel ('Just "perasSupport") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PerasSupport)))))
Show NodeToNodeVersionData Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Eq NodeToNodeVersionData Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Acceptable NodeToNodeVersionData Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

Queryable NodeToNodeVersionData Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

type Rep NodeToNodeVersionData Source # 
Instance details

Defined in Cardano.Network.NodeToNode.Version

type Rep NodeToNodeVersionData = D1 ('MetaData "NodeToNodeVersionData" "Cardano.Network.NodeToNode.Version" "cardano-diffusion-1.0.0.0-inplace-api" 'False) (C1 ('MetaCons "NodeToNodeVersionData" 'PrefixI 'True) ((S1 ('MetaSel ('Just "networkMagic") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NetworkMagic) :*: S1 ('MetaSel ('Just "diffusionMode") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DiffusionMode)) :*: (S1 ('MetaSel ('Just "peerSharing") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PeerSharing) :*: (S1 ('MetaSel ('Just "query") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: S1 ('MetaSel ('Just "perasSupport") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PerasSupport)))))

data DiffusionMode #

Instances

Instances details
NFData DiffusionMode 
Instance details

Defined in Ouroboros.Network.DiffusionMode

Methods

rnf :: DiffusionMode -> () #

Generic DiffusionMode 
Instance details

Defined in Ouroboros.Network.DiffusionMode

Associated Types

type Rep DiffusionMode 
Instance details

Defined in Ouroboros.Network.DiffusionMode

type Rep DiffusionMode = D1 ('MetaData "DiffusionMode" "Ouroboros.Network.DiffusionMode" "ouroboros-network-1.1.0.0-inplace-api" 'False) (C1 ('MetaCons "InitiatorOnlyDiffusionMode" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InitiatorAndResponderDiffusionMode" 'PrefixI 'False) (U1 :: Type -> Type))
Show DiffusionMode 
Instance details

Defined in Ouroboros.Network.DiffusionMode

Eq DiffusionMode 
Instance details

Defined in Ouroboros.Network.DiffusionMode

Ord DiffusionMode 
Instance details

Defined in Ouroboros.Network.DiffusionMode

type Rep DiffusionMode 
Instance details

Defined in Ouroboros.Network.DiffusionMode

type Rep DiffusionMode = D1 ('MetaData "DiffusionMode" "Ouroboros.Network.DiffusionMode" "ouroboros-network-1.1.0.0-inplace-api" 'False) (C1 ('MetaCons "InitiatorOnlyDiffusionMode" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InitiatorAndResponderDiffusionMode" 'PrefixI 'False) (U1 :: Type -> Type))

data PerasSupport #

Instances

Instances details
NFData PerasSupport 
Instance details

Defined in Ouroboros.Network.PerasSupport

Methods

rnf :: PerasSupport -> () #

Bounded PerasSupport 
Instance details

Defined in Ouroboros.Network.PerasSupport

Generic PerasSupport 
Instance details

Defined in Ouroboros.Network.PerasSupport

Associated Types

type Rep PerasSupport 
Instance details

Defined in Ouroboros.Network.PerasSupport

type Rep PerasSupport = D1 ('MetaData "PerasSupport" "Ouroboros.Network.PerasSupport" "ouroboros-network-1.1.0.0-inplace-api" 'False) (C1 ('MetaCons "PerasUnsupported" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PerasSupported" 'PrefixI 'False) (U1 :: Type -> Type))
Show PerasSupport 
Instance details

Defined in Ouroboros.Network.PerasSupport

Eq PerasSupport 
Instance details

Defined in Ouroboros.Network.PerasSupport

Ord PerasSupport 
Instance details

Defined in Ouroboros.Network.PerasSupport

type Rep PerasSupport 
Instance details

Defined in Ouroboros.Network.PerasSupport

type Rep PerasSupport = D1 ('MetaData "PerasSupport" "Ouroboros.Network.PerasSupport" "ouroboros-network-1.1.0.0-inplace-api" 'False) (C1 ('MetaCons "PerasUnsupported" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PerasSupported" 'PrefixI 'False) (U1 :: Type -> Type))

Codecs

nodeToNodeCodecCBORTerm :: NodeToNodeVersion -> CodecCBORTerm Text NodeToNodeVersionData Source #

Beware, encoding an invalid NodeToNodeVersionData (see isValidNtnVersionDataForVersion) for a given version will fail if a future field is set to a value other than its default forwards compatibility one. This way encodeTerm and decodeTerm are only inverses for valid data.

Feature predicates

isValidNtnVersionDataForVersion :: NodeToNodeVersion -> NodeToNodeVersionData -> Bool Source #

perasSupport field is introduced with NodeToNodeV_16, and thus should be set to PerasUnsupported (and not be serialized) for versions before that.

getLocalPerasSupport :: Set CardanoFeatureFlag -> NodeToNodeVersion -> PerasSupport Source #

Determine the local node's Peras support status based on feature flags and version.