ouroboros-network- A networking layer for the Ouroboros blockchain protocol
Safe HaskellSafe-Inferred




defaultDiffusionModeP2P Source #

Principal mode of network operation

defaultPeerSharingPeerSharing Source #

Node's peer sharing participation flag

defaultBlockFetchConfigurationIntBlockFetchConfiguration Source #

Configuration for FetchDecisionPolicy.

data AcceptedConnectionsLimit Source #

Policy which governs how to limit the number of accepted connections.




data BlockFetchConfiguration Source #

Configuration for FetchDecisionPolicy. Should be determined by external local node config.




data ChainSyncTimeout Source #

Configurable timeouts

These are configurable for at least the following reasons.

o So that deployment and testing can use different values.

o So that a net running Praos can better cope with streaks of empty slots. (See intersectmbo/ouroboros-network#2245.)

data MiniProtocolParameters Source #




data P2P Source #

Promoted data types.



data PeerSelectionTargets Source #

Adjustable targets for the peer selection mechanism.

These are used by the peer selection governor as targets. They are used by the peer churn governor loop as knobs to adjust, to influence the peer selection governor.

The known, established and active peer targets are targets both from below and from above: the governor will attempt to grow or shrink the sets to hit these targets.

Unlike the other targets, the root peer target is "one sided", it is only a target from below. The governor does not try to shrink the root set to hit it, it simply stops looking for more.

There is also an implicit target that enough local root peers are selected as active. This comes from the configuration for local roots, and is not an independently adjustable target.




data PeerSharing Source #

Is a peer willing to participate in Peer Sharing? If yes are others allowed to share this peer's address? Information about the node comes from the configuration file, while information about other nodes is received via handshake.

NOTE: This information is only useful if P2P flag is enabled.



Peer does not participate in Peer Sharing at all


Peer participates in Peer Sharing


Instances details
Monoid PeerSharing

The Monoid laws are witnessed by the following denotation function:

⟦_⟧ :: PeerSharing -> All ⟦ PeerSharingDisabled ⟧ = All False ⟦ PeerSharingEnabled ⟧ = All True

Instance details

Defined in Ouroboros.Network.PeerSelection.PeerSharing

Semigroup PeerSharing

The combination of two PeerSharing values forms a Monoid where the unit is PeerSharingEnabled.

This operation is used in the connection handshake.

Instance details

Defined in Ouroboros.Network.PeerSelection.PeerSharing

Generic PeerSharing 
Instance details

Defined in Ouroboros.Network.PeerSelection.PeerSharing

Associated Types

type Rep PeerSharingTypeType #

Read PeerSharing 
Instance details

Defined in Ouroboros.Network.PeerSelection.PeerSharing

Show PeerSharing 
Instance details

Defined in Ouroboros.Network.PeerSelection.PeerSharing

Eq PeerSharing 
Instance details

Defined in Ouroboros.Network.PeerSelection.PeerSharing

type Rep PeerSharing 
Instance details

Defined in Ouroboros.Network.PeerSelection.PeerSharing

type Rep PeerSharing = D1 ('MetaData "PeerSharing" "Ouroboros.Network.PeerSelection.PeerSharing" "ouroboros-network-api-" 'False) (C1 ('MetaCons "PeerSharingDisabled" 'PrefixI 'False) (U1TypeType) :+: C1 ('MetaCons "PeerSharingEnabled" 'PrefixI 'False) (U1TypeType))

deactivateTimeoutDiffTime Source #

Timeout for spsDeactivateTimeout and churn hot to warm demotions.

The maximal timeout on ChainSync (in StMustReply state) is 269s, see maxChainSyncTimeout below.

closeConnectionTimeoutDiffTime Source #

Timeout for spsCloseConnectionTimeout.

This timeout depends on KeepAlive and TipSample timeouts. KeepAlive keeps agency most of the time, but TipSample can give away its agency for longer periods of time. Here we allow it to get 6 blocks (assuming a new block every 20s).

peerMetricsConfigurationPeerMetricsConfiguration Source #

Number of events tracked by PeerMetrics. This corresponds to one hour of blocks on mainnet.

TODO: issue #3866

defaultProtocolIdleTimeoutDiffTime Source #

Inactivity timeout. It configures how long to wait since the local side demoted remote peer to cold, before closing the connection.

handshake_QUERY_SHUTDOWN_DELAYDiffTime Source #

A 20s delay after query result was send back, before we close the connection. After that delay we close the connection.


Amount of time between changes to the salt used to pick peers to gossip about.

ps_POLICY_PEER_SHARE_MAX_PEERSPeerSharingAmount Source #

Maximum number of peers to respond with in a single request