Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ouroboros.Network.PeerSelection.LedgerPeers
Synopsis
- data UseLedgerAfter
- data IsLedgerPeer
- newtype NumberOfPeers = NumberOfPeers {}
- newtype LedgerPeersConsensusInterface m = LedgerPeersConsensusInterface {
- lpGetPeers ∷ SlotNo → STM m (Maybe [(PoolStake, NonEmpty RelayAccessPoint)])
- data LedgerPeersKind
- accPoolStake ∷ [(PoolStake, NonEmpty RelayAccessPoint)] → Map AccPoolStake (PoolStake, NonEmpty RelayAccessPoint)
- accBigPoolStake ∷ [(PoolStake, NonEmpty RelayAccessPoint)] → Map AccPoolStake (PoolStake, NonEmpty RelayAccessPoint)
- bigLedgerPeerQuota ∷ AccPoolStake
- withLedgerPeers ∷ ∀ peerAddr resolver exception m a. (MonadAsync m, MonadThrow m, MonadMonotonicTime m, Exception exception, Ord peerAddr) ⇒ StdGen → DNSSemaphore m → (IP → PortNumber → peerAddr) → Tracer m TraceLedgerPeers → STM m UseLedgerAfter → LedgerPeersConsensusInterface m → DNSActions resolver exception m → ((NumberOfPeers → LedgerPeersKind → m (Maybe (Set peerAddr, DiffTime))) → Async m Void → m a) → m a
- module Ouroboros.Network.PeerSelection.LedgerPeers.Type
- module Ouroboros.Network.PeerSelection.LedgerPeers.Common
- resolveLedgerPeers ∷ ∀ m peerAddr resolver exception. (Ord peerAddr, MonadThrow m, MonadAsync m, Exception exception) ⇒ Tracer m TraceLedgerPeers → (IP → PortNumber → peerAddr) → DNSSemaphore m → ResolvConf → DNSActions resolver exception m → [DomainAccessPoint] → m (Map DomainAccessPoint (Set peerAddr))
Ledger Peers specific data types
data UseLedgerAfter Source #
Only use the ledger after the given slot number.
Constructors
DontUseLedger | |
UseLedgerAfter SlotNo |
Instances
Show UseLedgerAfter Source # | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Common Methods showsPrec ∷ Int → UseLedgerAfter → ShowS # show ∷ UseLedgerAfter → String # showList ∷ [UseLedgerAfter] → ShowS # | |
Eq UseLedgerAfter Source # | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Common Methods (==) ∷ UseLedgerAfter → UseLedgerAfter → Bool # (/=) ∷ UseLedgerAfter → UseLedgerAfter → Bool # |
data IsLedgerPeer Source #
Identifies a peer as coming from ledger or not
Constructors
IsLedgerPeer | a ledger peer. |
IsNotLedgerPeer |
Instances
Show IsLedgerPeer Source # | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Common Methods showsPrec ∷ Int → IsLedgerPeer → ShowS # show ∷ IsLedgerPeer → String # showList ∷ [IsLedgerPeer] → ShowS # | |
Eq IsLedgerPeer Source # | |
newtype NumberOfPeers Source #
Constructors
NumberOfPeers | |
Fields |
Instances
Show NumberOfPeers Source # | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Common Methods showsPrec ∷ Int → NumberOfPeers → ShowS # show ∷ NumberOfPeers → String # showList ∷ [NumberOfPeers] → ShowS # |
newtype LedgerPeersConsensusInterface m Source #
Constructors
LedgerPeersConsensusInterface | |
Fields
|
data LedgerPeersKind Source #
Which ledger peers to pick.
Constructors
AllLedgerPeers | |
BigLedgerPeers |
Instances
Show LedgerPeersKind Source # | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers Methods showsPrec ∷ Int → LedgerPeersKind → ShowS # show ∷ LedgerPeersKind → String # showList ∷ [LedgerPeersKind] → ShowS # |
Ledger Peers specific functions
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).
accBigPoolStake ∷ [(PoolStake, NonEmpty RelayAccessPoint)] → Map AccPoolStake (PoolStake, NonEmpty RelayAccessPoint) Source #
Convert a list of pools with stake to a Map keyed on the accumulated stake which only contains big ledger peers, e.g. largest ledger peers which cumulatively control 90% of stake.
bigLedgerPeerQuota ∷ AccPoolStake Source #
The total accumulated stake of big ledger peers.
DNS based provider for ledger root peers
withLedgerPeers ∷ ∀ peerAddr resolver exception m a. (MonadAsync m, MonadThrow m, MonadMonotonicTime m, Exception exception, Ord peerAddr) ⇒ StdGen → DNSSemaphore m → (IP → PortNumber → peerAddr) → Tracer m TraceLedgerPeers → STM m UseLedgerAfter → LedgerPeersConsensusInterface m → DNSActions resolver exception m → ((NumberOfPeers → LedgerPeersKind → m (Maybe (Set peerAddr, DiffTime))) → Async m Void → m a) → m a Source #
For a LedgerPeers worker thread and submit request and receive responses.
Re-exports
Internal only exported for testing purposes
resolveLedgerPeers ∷ ∀ m peerAddr resolver exception. (Ord peerAddr, MonadThrow m, MonadAsync m, Exception exception) ⇒ Tracer m TraceLedgerPeers → (IP → PortNumber → peerAddr) → DNSSemaphore m → ResolvConf → DNSActions resolver exception m → [DomainAccessPoint] → m (Map DomainAccessPoint (Set peerAddr)) Source #
Provides DNS resolution functionality.
Concurrently resolve DNS names, respecting the maxDNSConcurrency
limit.