cardano-ledger-0.1.0.0: The blockchain layer of Cardano
Safe HaskellNone
LanguageHaskell2010

Cardano.Chain.Genesis

Synopsis

Documentation

newtype GenesisKeyHashes Source #

The set of genesis keys, who are able to produce blocks and submit votes and proposals in the Byron era

Instances

Instances details
Eq GenesisKeyHashes Source # 
Instance details

Defined in Cardano.Chain.Genesis.KeyHashes

Show GenesisKeyHashes Source # 
Instance details

Defined in Cardano.Chain.Genesis.KeyHashes

Semigroup GenesisKeyHashes Source # 
Instance details

Defined in Cardano.Chain.Genesis.KeyHashes

Monoid GenesisKeyHashes Source # 
Instance details

Defined in Cardano.Chain.Genesis.KeyHashes

Buildable GenesisKeyHashes Source # 
Instance details

Defined in Cardano.Chain.Genesis.KeyHashes

NoThunks GenesisKeyHashes Source # 
Instance details

Defined in Cardano.Chain.Genesis.KeyHashes

Monad m => ToJSON m GenesisKeyHashes Source # 
Instance details

Defined in Cardano.Chain.Genesis.KeyHashes

MonadError SchemaError m => FromJSON m GenesisKeyHashes Source # 
Instance details

Defined in Cardano.Chain.Genesis.KeyHashes

data GenesisSpec Source #

Specification how to generate full GenesisData

Constructors

UnsafeGenesisSpec 

Fields

Instances

Instances details
Eq GenesisSpec Source # 
Instance details

Defined in Cardano.Chain.Genesis.Spec

Show GenesisSpec Source # 
Instance details

Defined in Cardano.Chain.Genesis.Spec

Generic GenesisSpec Source # 
Instance details

Defined in Cardano.Chain.Genesis.Spec

Associated Types

type Rep GenesisSpec :: Type -> Type #

type Rep GenesisSpec Source # 
Instance details

Defined in Cardano.Chain.Genesis.Spec

type Rep GenesisSpec = D1 ('MetaData "GenesisSpec" "Cardano.Chain.Genesis.Spec" "cardano-ledger-0.1.0.0-LsmGdPmHvbsHmMt4VaqSe3" 'False) (C1 ('MetaCons "UnsafeGenesisSpec" 'PrefixI 'True) ((S1 ('MetaSel ('Just "gsAvvmDistr") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GenesisAvvmBalances) :*: (S1 ('MetaSel ('Just "gsHeavyDelegation") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GenesisDelegation) :*: S1 ('MetaSel ('Just "gsProtocolParameters") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ProtocolParameters))) :*: (S1 ('MetaSel ('Just "gsK") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BlockCount) :*: (S1 ('MetaSel ('Just "gsProtocolMagic") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ProtocolMagic) :*: S1 ('MetaSel ('Just "gsInitializer") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GenesisInitializer)))))

newtype GenesisNonAvvmBalances Source #

Predefined balances of non avvm entries.

Instances

Instances details
Eq GenesisNonAvvmBalances Source # 
Instance details

Defined in Cardano.Chain.Genesis.NonAvvmBalances

Show GenesisNonAvvmBalances Source # 
Instance details

Defined in Cardano.Chain.Genesis.NonAvvmBalances

Semigroup GenesisNonAvvmBalances Source # 
Instance details

Defined in Cardano.Chain.Genesis.NonAvvmBalances

Monoid GenesisNonAvvmBalances Source # 
Instance details

Defined in Cardano.Chain.Genesis.NonAvvmBalances

Buildable GenesisNonAvvmBalances Source # 
Instance details

Defined in Cardano.Chain.Genesis.NonAvvmBalances

NoThunks GenesisNonAvvmBalances Source # 
Instance details

Defined in Cardano.Chain.Genesis.NonAvvmBalances

Monad m => ToJSON m GenesisNonAvvmBalances Source # 
Instance details

Defined in Cardano.Chain.Genesis.NonAvvmBalances

MonadError SchemaError m => FromJSON m GenesisNonAvvmBalances Source # 
Instance details

Defined in Cardano.Chain.Genesis.NonAvvmBalances

convertNonAvvmDataToBalances :: forall m. MonadError NonAvvmBalancesError m => Map Text Integer -> m GenesisNonAvvmBalances Source #

Generate genesis address distribution out of avvm parameters. Txdistr of the utxo is all empty. Redelegate it in calling function.

data GenesisInitializer Source #

Options determining generated genesis stakes, balances, and delegation

Constructors

GenesisInitializer 

Fields

data TestnetBalanceOptions Source #

These options determine balances of nodes specific for testnet

Constructors

TestnetBalanceOptions 

Fields

data FakeAvvmOptions Source #

These options determines balances of fake AVVM nodes which didn't really go through vending, but pretend they did

Constructors

FakeAvvmOptions 

Instances

Instances details
Eq FakeAvvmOptions Source # 
Instance details

Defined in Cardano.Chain.Genesis.Initializer

Show FakeAvvmOptions Source # 
Instance details

Defined in Cardano.Chain.Genesis.Initializer

Generic FakeAvvmOptions Source # 
Instance details

Defined in Cardano.Chain.Genesis.Initializer

Associated Types

type Rep FakeAvvmOptions :: Type -> Type #

type Rep FakeAvvmOptions Source # 
Instance details

Defined in Cardano.Chain.Genesis.Initializer

type Rep FakeAvvmOptions = D1 ('MetaData "FakeAvvmOptions" "Cardano.Chain.Genesis.Initializer" "cardano-ledger-0.1.0.0-LsmGdPmHvbsHmMt4VaqSe3" 'False) (C1 ('MetaCons "FakeAvvmOptions" 'PrefixI 'True) (S1 ('MetaSel ('Just "faoCount") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word) :*: S1 ('MetaSel ('Just "faoOneBalance") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Lovelace)))

newtype GenesisHash Source #

Constructors

GenesisHash 

Instances

Instances details
Eq GenesisHash Source # 
Instance details

Defined in Cardano.Chain.Genesis.Hash

Show GenesisHash Source # 
Instance details

Defined in Cardano.Chain.Genesis.Hash

Generic GenesisHash Source # 
Instance details

Defined in Cardano.Chain.Genesis.Hash

Associated Types

type Rep GenesisHash :: Type -> Type #

NFData GenesisHash Source # 
Instance details

Defined in Cardano.Chain.Genesis.Hash

Methods

rnf :: GenesisHash -> () #

ToJSON GenesisHash Source # 
Instance details

Defined in Cardano.Chain.Genesis.Hash

ToCBOR GenesisHash Source # 
Instance details

Defined in Cardano.Chain.Genesis.Hash

FromCBOR GenesisHash Source # 
Instance details

Defined in Cardano.Chain.Genesis.Hash

NoThunks GenesisHash Source # 
Instance details

Defined in Cardano.Chain.Genesis.Hash

type Rep GenesisHash Source # 
Instance details

Defined in Cardano.Chain.Genesis.Hash

type Rep GenesisHash = D1 ('MetaData "GenesisHash" "Cardano.Chain.Genesis.Hash" "cardano-ledger-0.1.0.0-LsmGdPmHvbsHmMt4VaqSe3" 'True) (C1 ('MetaCons "GenesisHash" 'PrefixI 'True) (S1 ('MetaSel ('Just "unGenesisHash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Hash Raw))))

data GeneratedSecrets Source #

Valuable secrets which can unlock genesis data.

Constructors

GeneratedSecrets 

Fields

Instances

Instances details
Generic GeneratedSecrets Source # 
Instance details

Defined in Cardano.Chain.Genesis.Generate

Associated Types

type Rep GeneratedSecrets :: Type -> Type #

NoThunks GeneratedSecrets Source # 
Instance details

Defined in Cardano.Chain.Genesis.Generate

type Rep GeneratedSecrets Source # 
Instance details

Defined in Cardano.Chain.Genesis.Generate

type Rep GeneratedSecrets = D1 ('MetaData "GeneratedSecrets" "Cardano.Chain.Genesis.Generate" "cardano-ledger-0.1.0.0-LsmGdPmHvbsHmMt4VaqSe3" 'False) (C1 ('MetaCons "GeneratedSecrets" 'PrefixI 'True) ((S1 ('MetaSel ('Just "gsDlgIssuersSecrets") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [SigningKey]) :*: S1 ('MetaSel ('Just "gsRichSecrets") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [SigningKey])) :*: (S1 ('MetaSel ('Just "gsPoorSecrets") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [PoorSecret]) :*: S1 ('MetaSel ('Just "gsFakeAvvmSecrets") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [RedeemSigningKey]))))

newtype PoorSecret Source #

Poor node secret

Constructors

PoorSecret 

Instances

Instances details
Generic PoorSecret Source # 
Instance details

Defined in Cardano.Chain.Genesis.Generate

Associated Types

type Rep PoorSecret :: Type -> Type #

NoThunks PoorSecret Source # 
Instance details

Defined in Cardano.Chain.Genesis.Generate

type Rep PoorSecret Source # 
Instance details

Defined in Cardano.Chain.Genesis.Generate

type Rep PoorSecret = D1 ('MetaData "PoorSecret" "Cardano.Chain.Genesis.Generate" "cardano-ledger-0.1.0.0-LsmGdPmHvbsHmMt4VaqSe3" 'True) (C1 ('MetaCons "PoorSecret" 'PrefixI 'True) (S1 ('MetaSel ('Just "poorSecretToKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SigningKey)))

generateGenesisData :: UTCTime -> GenesisSpec -> ExceptT GenesisDataGenerationError IO (GenesisData, GeneratedSecrets) Source #

Generate a genesis GenesisData and GeneratedSecrets from a GenesisSpec. This is used only for tests blockhains. For a real blockcain you must use the external key generation tool so that each stakeholder can generate their keys privately.

generateGenesisDataWithEntropy :: MonadRandom m => UTCTime -> GenesisSpec -> ExceptT GenesisDataGenerationError m (GenesisData, GeneratedSecrets) Source #

A version of generateGenesisData parametrised over MonadRandom. For testing purposes this allows using a completely pure deterministic entropy source, rather than a cryptographically secure entropy source.

generateGenesisConfig :: UTCTime -> GenesisSpec -> ExceptT GenesisDataGenerationError IO (Config, GeneratedSecrets) Source #

Generate a genesis Config from a GenesisSpec. This is used only for tests. For the real node we always generate an external JSON genesis file.

generateGenesisConfigWithEntropy :: MonadRandom m => UTCTime -> GenesisSpec -> ExceptT GenesisDataGenerationError m (Config, GeneratedSecrets) Source #

A version of generateGenesisConfig parametrised over MonadRandom. For testing purposes this allows using a completely pure deterministic entropy source, rather than a cryptographically secure entropy source.

newtype GenesisDelegation Source #

This type contains genesis state of heavyweight delegation. It wraps a map where keys are issuers and values are delegation certificates. There are some invariants:

  1. In each pair delegate must differ from issuer, i. e. no revocations.
  2. PSKs must be consistent with keys in the map, i. e. issuer's ID must be equal to the key in the map.
  3. Delegates can't be issuers, i. e. transitive delegation is not supported. It's not needed in genesis, it can always be reduced.

data GenesisData Source #

Genesis data contains all data which determines consensus rules. It must be same for all nodes. It's used to initialize global state, slotting, etc.

Instances

Instances details
Eq GenesisData Source # 
Instance details

Defined in Cardano.Chain.Genesis.Data

Show GenesisData Source # 
Instance details

Defined in Cardano.Chain.Genesis.Data

Generic GenesisData Source # 
Instance details

Defined in Cardano.Chain.Genesis.Data

Associated Types

type Rep GenesisData :: Type -> Type #

NoThunks GenesisData Source # 
Instance details

Defined in Cardano.Chain.Genesis.Data

Monad m => ToJSON m GenesisData Source # 
Instance details

Defined in Cardano.Chain.Genesis.Data

MonadError SchemaError m => FromJSON m GenesisData Source # 
Instance details

Defined in Cardano.Chain.Genesis.Data

type Rep GenesisData Source # 
Instance details

Defined in Cardano.Chain.Genesis.Data

readGenesisData :: (MonadError GenesisDataError m, MonadIO m) => FilePath -> m (GenesisData, GenesisHash) Source #

Parse GenesisData from a JSON file and annotate with Canonical JSON hash

data Config Source #

Constructors

Config 

Fields

Instances

Instances details
Generic Config Source # 
Instance details

Defined in Cardano.Chain.Genesis.Config

Associated Types

type Rep Config :: Type -> Type #

Methods

from :: Config -> Rep Config x #

to :: Rep Config x -> Config #

NoThunks Config Source # 
Instance details

Defined in Cardano.Chain.Genesis.Config

type Rep Config Source # 
Instance details

Defined in Cardano.Chain.Genesis.Config

type Rep Config = D1 ('MetaData "Config" "Cardano.Chain.Genesis.Config" "cardano-ledger-0.1.0.0-LsmGdPmHvbsHmMt4VaqSe3" 'False) (C1 ('MetaCons "Config" 'PrefixI 'True) ((S1 ('MetaSel ('Just "configGenesisData") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GenesisData) :*: S1 ('MetaSel ('Just "configGenesisHash") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GenesisHash)) :*: (S1 ('MetaSel ('Just "configReqNetMagic") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RequiresNetworkMagic) :*: S1 ('MetaSel ('Just "configUTxOConfiguration") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UTxOConfiguration))))

data ConfigurationError Source #

Constructors

ConfigurationGenesisDataError GenesisDataError

An error in constructing GenesisData

GenesisHashMismatch GenesisHash (Hash Raw)

The GenesisData canonical JSON hash is different than expected

GenesisHashDecodeError Text

An error occured while decoding the genesis hash.

configProtocolMagic :: Config -> ProtocolMagic Source #

There isn't a full ProtocolMagic in Config, but the requisite ProtocolMagicId and RequiresNetworkMagic are stored separately. We use them to construct and return a ProtocolMagic.

mkConfigFromFile Source #

Arguments

:: (MonadError ConfigurationError m, MonadIO m) 
=> RequiresNetworkMagic 
-> FilePath 
-> Hash Raw

The expected hash of the file

-> m Config 

Construct a Config from an external genesis file.

The FilePath refers to a canonical JSON file. It will be hashed and checked against the expected hash, which should be known from config.

newtype GenesisAvvmBalances Source #

Predefined balances of AVVM (Ada Voucher Vending Machine) entries. People who purchased Ada at a pre-sale were issued a certificate during the pre-sale period. These certificates allow customers to redeem ADA.