ouroboros-consensus-0.1.0.0: Consensus layer for the Ouroboros blockchain protocol
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Consensus.Network.NodeToClient

Description

Intended for qualified import

Synopsis

Handlers

data Handlers m peer blk Source #

Protocol handlers for node-to-client (local) communication

Constructors

Handlers 

Fields

mkHandlers :: forall m blk remotePeer localPeer. (IOLike m, LedgerSupportsMempool blk, QueryLedger blk) => NodeArgs m remotePeer localPeer blk -> NodeKernel m remotePeer localPeer blk -> Handlers m localPeer blk Source #

Codecs

data Codecs' blk serialisedBlk e m bCS bTX bSQ Source #

Node-to-client protocol codecs needed to run Handlers.

Constructors

Codecs 

Fields

type Codecs blk e m bCS bTX bSQ = Codecs' blk (Serialised blk) e m bCS bTX bSQ Source #

defaultCodecs :: forall m blk. (MonadST m, SerialiseNodeToClientConstraints blk, ShowQuery (Query blk)) => CodecConfig blk -> BlockNodeToClientVersion blk -> DefaultCodecs blk m Source #

Protocol codecs for the node-to-client protocols

We pass the BlockConfig here, even though it is currently unused. If at any point we want to introduce local protocols that for example send Byron blocks or headers across, we will need to have the epoch size, which comes from the Byron config. Unlike the full TopLevelConfig, it should not be difficult for a wallet to construct the BlockConfig.

NOTE: Somewhat confusingly, pcChainSyncCodec currently does send Byron blocks across, but it does not deserialize them (the user of the codec is itself responsible for doing that), which is why it currently does not need the config.

Implementation mode: currently none of the consensus encoders/decoders do anything different based on the version, so _version is unused; it's just that not all codecs are used, depending on the version number.

clientCodecs :: forall m blk. (MonadST m, SerialiseNodeToClientConstraints blk, ShowQuery (Query blk)) => CodecConfig blk -> BlockNodeToClientVersion blk -> ClientCodecs blk m Source #

Protocol codecs for the node-to-client protocols which serialise deserialise blocks in chain-sync/ protocol.

identityCodecs :: (Monad m, QueryLedger blk) => Codecs blk CodecFailure m (AnyMessage (ChainSync (Serialised blk) (Point blk) (Tip blk))) (AnyMessage (LocalTxSubmission (GenTx blk) (ApplyTxErr blk))) (AnyMessage (LocalStateQuery blk (Point blk) (Query blk))) Source #

Identity codecs used in tests.

ClientCodecs

Tracers

type Tracers m peer blk e = Tracers' peer blk e (Tracer m) Source #

A record of Tracers for the different protocols.

data Tracers' peer blk e f Source #

Constructors

Tracers 

Fields

Instances

Instances details
(forall a. Semigroup (f a)) => Semigroup (Tracers' peer blk e f) Source # 
Instance details

Defined in Ouroboros.Consensus.Network.NodeToClient

Methods

(<>) :: Tracers' peer blk e f -> Tracers' peer blk e f -> Tracers' peer blk e f #

sconcat :: NonEmpty (Tracers' peer blk e f) -> Tracers' peer blk e f #

stimes :: Integral b => b -> Tracers' peer blk e f -> Tracers' peer blk e f #

nullTracers :: Monad m => Tracers m peer blk e Source #

Use a nullTracer for each protocol.

showTracers :: (Show peer, Show (GenTx blk), Show (ApplyTxErr blk), ShowQuery (Query blk), HasHeader blk) => Tracer m String -> Tracers m peer blk e Source #

Applications

type App m peer bytes a = peer -> Channel m bytes -> m (a, Maybe bytes) Source #

A node-to-client application

data Apps m peer bCS bTX bSQ a Source #

Applications for the node-to-client (i.e., local) protocols

See MuxApplication

Constructors

Apps 

Fields

mkApps :: forall m peer blk e bCS bTX bSQ. (IOLike m, Exception e, ShowProxy blk, ShowProxy (ApplyTxErr blk), ShowProxy (Query blk), ShowProxy (GenTx blk), ShowQuery (Query blk)) => Tracers m peer blk e -> Codecs blk e m bCS bTX bSQ -> Handlers m peer blk -> Apps m peer bCS bTX bSQ () Source #

Construct the NetworkApplication for the node-to-client protocols

Projections

responder :: NodeToClientVersion -> Apps m (ConnectionId peer) b b b a -> OuroborosApplication 'ResponderMode peer b m Void a Source #

A projection from NetworkApplication to a server-side OuroborosApplication for the node-to-client protocols.