ouroboros-network-0.1.0.1: A networking layer for the Ouroboros blockchain protocol
Safe Haskell None
Language Haskell2010

Ouroboros.Network.PeerSelection.LedgerPeers

Synopsis

Documentation

data DomainAccessPoint Source #

A product of a Domain and PortNumber . After resolving the domain we will use the PortNumber to form SockAddr .

Instances

Instances details
Eq DomainAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

Ord DomainAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

Show DomainAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

ToJSON DomainAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

FromJSON DomainAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

data IP Source #

A unified IP data for IPv4 and IPv6 . To create this, use the data constructors. Or use read "192.0.2.1" :: IP , for example. Also, "192.0.2.1" can be used as literal with OverloadedStrings.

>>> (read "192.0.2.1" :: IP) == IPv4 (read "192.0.2.1" :: IPv4)
True
>>> (read "2001:db8:00:00:00:00:00:01" :: IP) == IPv6 (read "2001:db8:00:00:00:00:00:01" :: IPv6)
True

Constructors

IPv4

Fields

IPv6

Fields

Instances

Instances details
Enum IP
Instance details

Defined in Data.IP.Addr

Eq IP

Equality over IP addresses. Correctly compare IPv4 and IPv4-embedded-in-IPv6 addresses.

>>> (read "2001:db8:00:00:00:00:00:01" :: IP) == (read "2001:db8:00:00:00:00:00:01" :: IP)
True
>>> (read "2001:db8:00:00:00:00:00:01" :: IP) == (read "2001:db8:00:00:00:00:00:05" :: IP)
False
>>> (read "127.0.0.1" :: IP) == (read "127.0.0.1" :: IP)
True
>>> (read "127.0.0.1" :: IP) == (read "10.0.0.1" :: IP)
False
>>> (read "::ffff:127.0.0.1" :: IP) == (read "127.0.0.1" :: IP)
True
>>> (read "::ffff:127.0.0.1" :: IP) == (read "127.0.0.9" :: IP)
False
>>> (read "::ffff:127.0.0.1" :: IP) >= (read "127.0.0.1" :: IP)
True
>>> (read "::ffff:127.0.0.1" :: IP) <= (read "127.0.0.1" :: IP)
True
Instance details

Defined in Data.IP.Addr

Data IP
Instance details

Defined in Data.IP.Addr

Methods

gfoldl :: ( forall d b. Data d => c (d -> b) -> d -> c b) -> ( forall g. g -> c g) -> IP -> c IP Source #

gunfold :: ( forall b r. Data b => c (b -> r) -> c r) -> ( forall r. r -> c r) -> Constr -> c IP Source #

toConstr :: IP -> Constr Source #

dataTypeOf :: IP -> DataType Source #

dataCast1 :: Typeable t => ( forall d. Data d => c (t d)) -> Maybe (c IP ) Source #

dataCast2 :: Typeable t => ( forall d e. ( Data d, Data e) => c (t d e)) -> Maybe (c IP ) Source #

gmapT :: ( forall b. Data b => b -> b) -> IP -> IP Source #

gmapQl :: (r -> r' -> r) -> r -> ( forall d. Data d => d -> r') -> IP -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> ( forall d. Data d => d -> r') -> IP -> r Source #

gmapQ :: ( forall d. Data d => d -> u) -> IP -> [u] Source #

gmapQi :: Int -> ( forall d. Data d => d -> u) -> IP -> u Source #

gmapM :: Monad m => ( forall d. Data d => d -> m d) -> IP -> m IP Source #

gmapMp :: MonadPlus m => ( forall d. Data d => d -> m d) -> IP -> m IP Source #

gmapMo :: MonadPlus m => ( forall d. Data d => d -> m d) -> IP -> m IP Source #

Ord IP
Instance details

Defined in Data.IP.Addr

Read IP
Instance details

Defined in Data.IP.Addr

Show IP
Instance details

Defined in Data.IP.Addr

IsString IP
Instance details

Defined in Data.IP.Addr

Generic IP
Instance details

Defined in Data.IP.Addr

Associated Types

type Rep IP :: Type -> Type Source #

type Rep IP
Instance details

Defined in Data.IP.Addr

data RelayAccessPoint Source #

A relay can have either an IP address and a port number or a domain with a port number

Instances

Instances details
Eq RelayAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

Ord RelayAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

Show RelayAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

ToJSON RelayAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

FromJSON RelayAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

NFData RelayAccessPoint Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.RelayAccessPoint

newtype PoolStake Source #

The relative stake of a stakepool in relation to the total amount staked. A value in the [0, 1] range.

Instances

Instances details
Eq PoolStake Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.LedgerPeers

Fractional PoolStake Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.LedgerPeers

Num PoolStake Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.LedgerPeers

Ord PoolStake Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.LedgerPeers

Show PoolStake Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.LedgerPeers

NFData PoolStake Source #
Instance details

Defined in Ouroboros.Network.PeerSelection.LedgerPeers

data TraceLedgerPeers Source #

Trace LedgerPeers events.

Constructors

PickedPeer RelayAccessPoint AccPoolStake PoolStake

Trace for a peer picked with accumulated and relative stake of its pool.

PickedPeers NumberOfPeers [ RelayAccessPoint ]

Trace for the number of peers we wanted to pick and the list of peers picked.

FetchingNewLedgerState Int

Trace for fetching a new list of peers from the ledger. Int is the number of peers returned.

DisabledLedgerPeers

Trace for when getting peers from the ledger is disabled, that is DontUseLedger.

TraceUseLedgerAfter UseLedgerAfter

Trace UseLedgerAfter value

WaitingOnRequest
RequestForPeers NumberOfPeers
ReusingLedgerState Int DiffTime
FallingBackToBootstrapPeers

accPoolStake :: [( PoolStake , NonEmpty RelayAccessPoint )] -> Map AccPoolStake ( PoolStake , NonEmpty RelayAccessPoint ) Source #

Convert a list of pools with stake to a Map keyed on the accumulated stake. Consensus provides a list of pairs of relative stake and corresponding relays for all usable registered pools. By creating a Map keyed on the AccPoolStake that is the sum of the pool's relative stake and the stake of all preceding pools we can support weighted random selection in O(log n) time by taking advantage of Map.lookupGE (returns the smallest key greater or equal to the provided value).

withLedgerPeers :: forall peerAddr m a. ( MonadAsync m, MonadTime m, Ord peerAddr) => StdGen -> ( IP -> PortNumber -> peerAddr) -> Tracer m TraceLedgerPeers -> STM m UseLedgerAfter -> LedgerPeersConsensusInterface m -> ([ DomainAccessPoint ] -> m ( Map DomainAccessPoint ( Set peerAddr))) -> (( NumberOfPeers -> m ( Maybe ( Set peerAddr, DiffTime ))) -> Async m Void -> m a) -> m a Source #

For a LederPeers worker thread and submit request and receive responses.

data PortNumber Source #

Port number. Use the Num instance (i.e. use a literal) to create a PortNumber value.

>>> 1 :: PortNumber
1
>>> read "1" :: PortNumber
1
>>> show (12345 :: PortNumber)
"12345"
>>> 50000 < (51000 :: PortNumber)
True
>>> 50000 < (52000 :: PortNumber)
True
>>> 50000 + (10000 :: PortNumber)
60000

Instances

Instances details
Bounded PortNumber
Instance details

Defined in Network.Socket.Types

Enum PortNumber
Instance details

Defined in Network.Socket.Types

Eq PortNumber
Instance details

Defined in Network.Socket.Types

Integral PortNumber
Instance details

Defined in Network.Socket.Types

Num PortNumber
Instance details

Defined in Network.Socket.Types

Ord PortNumber
Instance details

Defined in Network.Socket.Types

Read PortNumber
Instance details

Defined in Network.Socket.Types

Real PortNumber
Instance details

Defined in Network.Socket.Types

Show PortNumber
Instance details

Defined in Network.Socket.Types

Storable PortNumber
Instance details

Defined in Network.Socket.Types