ouroboros-consensus-cardano-0.12.1.0: The instantation of the Ouroboros consensus layer used by Cardano
Safe HaskellNone
LanguageHaskell2010

Test.ThreadNet.Infra.Shelley

Synopsis

Documentation

data CoreNode c Source #

Constructors

CoreNode 

Fields

  • cnGenesisKey :: !(SignKeyDSIGN c)
     
  • cnDelegateKey :: !(SignKeyDSIGN c)

    Cold delegate key. The hash of the corresponding verification (public) key will be used as the payment credential.

  • cnStakingKey :: !(SignKeyDSIGN c)

    The hash of the corresponding verification (public) key will be used as the staking credential.

  • cnVRF :: !(SignKeyVRF c)
     
  • cnKES :: !(SignKeyKES c)
     
  • cnOCert :: !(OCert c)
     

data CoreNodeKeyInfo c Source #

Constructors

CoreNodeKeyInfo 

Fields

  • cnkiKeyPair :: (KeyPair 'Payment c, KeyPair 'Staking c)
     
  • cnkiCoreNode :: (KeyPair 'Genesis c, AllIssuerKeys c 'GenesisDelegate)
     

newtype DecentralizationParam Source #

A suitable value for the d protocol parameter

In the range 0 to 1, inclusive. Beware the misnomer: 0 means fully decentralized, and 1 means fully centralized.

Instances

Instances details
Eq DecentralizationParam Source # 
Instance details

Defined in Test.ThreadNet.Infra.Shelley

Ord DecentralizationParam Source # 
Instance details

Defined in Test.ThreadNet.Infra.Shelley

Show DecentralizationParam Source # 
Instance details

Defined in Test.ThreadNet.Infra.Shelley

Generic DecentralizationParam Source # 
Instance details

Defined in Test.ThreadNet.Infra.Shelley

Associated Types

type Rep DecentralizationParam :: Type -> Type Source #

Arbitrary DecentralizationParam Source #

A fraction with denominator 10 and numerator 0 to 10 inclusive

Instance details

Defined in Test.ThreadNet.Infra.Shelley

type Rep DecentralizationParam Source # 
Instance details

Defined in Test.ThreadNet.Infra.Shelley

type Rep DecentralizationParam = D1 ('MetaData "DecentralizationParam" "Test.ThreadNet.Infra.Shelley" "ouroboros-consensus-cardano-0.12.1.0-5IYJQte5KXzLUb4xPTIgXu-unstable-shelley-testlib" 'True) (C1 ('MetaCons "DecentralizationParam" 'PrefixI 'True) (S1 ('MetaSel ('Just "decentralizationParamToRational") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Rational)))

data KesConfig Source #

Currently maxEvolutions * slotsPerEvolution is the max number of slots the test can run without needing new ocerts.

TODO This limitation may be lifted by PR #2107, see https://github.com/input-output-hk/ouroboros-network/issues/2107.

coreNodeKeys :: forall c. PraosCrypto c => CoreNode c -> CoreNodeKeyInfo c Source #

genCoreNode :: forall c. PraosCrypto c => KESPeriod -> Gen (CoreNode c) Source #

incrementMinorProtVer :: ProtVer -> ProtVer Source #

mkCredential :: Crypto c => SignKeyDSIGN c -> Credential r c Source #

mkEpochSize :: SecurityParam -> Rational -> EpochSize Source #

The epoch size, given k and f.

INVARIANT: 10 * k / f must be a whole number.

mkGenesisConfig Source #

Arguments

:: forall c. PraosCrypto c 
=> ProtVer

Initial protocol version

-> SecurityParam 
-> Rational

Initial active slot coefficient

-> DecentralizationParam 
-> Word64

Max Lovelace supply, must be >= #coreNodes * initialLovelacePerCoreNode

-> SlotLength 
-> KesConfig 
-> [CoreNode c] 
-> ShelleyGenesis c 

Note: a KES algorithm supports a particular max number of KES evolutions, but we can configure a potentially lower maximum for the ledger, that's why we take it as an argument.

mkKesConfig :: forall proxy c. Crypto c => proxy c -> NumSlots -> KesConfig Source #

A KesConfig that will not require more evolutions than this test's crypto allows.

mkKeyHash :: Crypto c => SignKeyDSIGN c -> KeyHash r c Source #

mkKeyHashVrf :: (HashAlgorithm h, VRFAlgorithm vrf) => SignKeyVRF vrf -> Hash h (VerKeyVRF vrf) Source #

mkKeyPair :: Crypto c => SignKeyDSIGN c -> KeyPair r c Source #

mkLeaderCredentials :: PraosCrypto c => CoreNode c -> ShelleyLeaderCredentials c Source #

mkMASetDecentralizationParamTxs Source #

Arguments

:: forall proto era. (ShelleyBasedEra era, AllegraEraTxBody era, AtMostEra AlonzoEra era, AtMostEra BabbageEra era) 
=> [CoreNode (EraCrypto era)] 
-> ProtVer

The proposed protocol version

-> SlotNo

The TTL

-> DecentralizationParam

The new value

-> [GenTx (ShelleyBlock proto era)] 

TODO This is a copy-paste-edit of mkSetDecentralizationParamTxs

Our current plan is to replace all of this infrastructure with the ThreadNet rewrite; so we're minimizing the work and maintenance here for now.

mkProtocolShelley :: forall m c. (IOLike m, PraosCrypto c, ShelleyCompatible (TPraos c) (ShelleyEra c)) => ShelleyGenesis c -> Nonce -> ProtVer -> CoreNode c -> (ProtocolInfo (ShelleyBlock (TPraos c) (ShelleyEra c)), m [BlockForging m (ShelleyBlock (TPraos c) (ShelleyEra c))]) Source #

mkSetDecentralizationParamTxs Source #

Arguments

:: forall c. ShelleyBasedEra (ShelleyEra c) 
=> [CoreNode c] 
-> ProtVer

The proposed protocol version

-> SlotNo

The TTL

-> DecentralizationParam

The new value

-> [GenTx (ShelleyBlock (TPraos c) (ShelleyEra c))] 

mkVerKey :: Crypto c => SignKeyDSIGN c -> VKey r c Source #

networkId :: Network Source #

tpraosSlotLength :: SlotLength Source #