From 9eda83b6d507d69fee907aa6fdfe43642924fb7e Mon Sep 17 00:00:00 2001 From: John Ky Date: Thu, 11 May 2023 01:31:11 +1000 Subject: [PATCH] Move ByronGenesisFile, ShelleyGenesisFile, AlonzoGenesisFile, ConwayGenesisFile to Cardano.Api.Genesis --- cardano-api/src/Cardano/Api.hs | 6 +++ cardano-api/src/Cardano/Api/Genesis.hs | 63 ++++++++++++++++++++++ cardano-api/src/Cardano/Api/LedgerState.hs | 42 +-------------- 3 files changed, 70 insertions(+), 41 deletions(-) diff --git a/cardano-api/src/Cardano/Api.hs b/cardano-api/src/Cardano/Api.hs index d8f524baec1..e3c7da73565 100644 --- a/cardano-api/src/Cardano/Api.hs +++ b/cardano-api/src/Cardano/Api.hs @@ -604,6 +604,11 @@ module Cardano.Api ( NodeConfig (..), NodeConfigFile, readNodeConfig, + -- ** Genesis Files + ByronGenesisFile, + ShelleyGenesisFile, + AlonzoGenesisFile, + ConwayGenesisFile, -- *** Genesis Config GenesisConfig (..), readCardanoGenesisConfig, @@ -852,6 +857,7 @@ import Cardano.Api.EraCast import Cardano.Api.Eras import Cardano.Api.Error import Cardano.Api.Fees +import Cardano.Api.Genesis import Cardano.Api.GenesisParameters import Cardano.Api.Hash import Cardano.Api.HasTypeProxy diff --git a/cardano-api/src/Cardano/Api/Genesis.hs b/cardano-api/src/Cardano/Api/Genesis.hs index b3ea75eb43e..c47913d524f 100644 --- a/cardano-api/src/Cardano/Api/Genesis.hs +++ b/cardano-api/src/Cardano/Api/Genesis.hs @@ -1,25 +1,88 @@ {-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE GeneralisedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} module Cardano.Api.Genesis ( ShelleyGenesis(..) , shelleyGenesisDefaults + + -- ** Configuration + , ByronGenesisConfig + , ShelleyGenesisConfig + , AlonzoGenesisConfig + , ConwayGenesisConfig + + , ShelleyConfig(..) + , GenesisHashByron(..) + , GenesisHashShelley(..) + , GenesisHashAlonzo(..) + , GenesisHashConway(..) + + -- ** Files + , ByronGenesisFile + , ShelleyGenesisFile + , AlonzoGenesisFile + , ConwayGenesisFile ) where +import Data.ByteString (ByteString) import qualified Data.ListMap as ListMap import qualified Data.Map.Strict as Map import Data.Maybe (fromMaybe) +import Data.Text (Text) import qualified Data.Time as Time import Lens.Micro +import qualified Cardano.Crypto.Hash.Blake2b +import qualified Cardano.Crypto.Hash.Class + +import Cardano.Api.IO + +import qualified Cardano.Chain.Genesis + +import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..)) import Cardano.Ledger.BaseTypes as Ledger import Cardano.Ledger.Coin (Coin (..)) +import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..)) import Cardano.Ledger.Crypto (StandardCrypto) import Cardano.Ledger.Shelley.Core import Cardano.Ledger.Shelley.Genesis (NominalDiffTimeMicro, ShelleyGenesis (..), emptyGenesisStaking) +import qualified Cardano.Ledger.Shelley.Genesis as Ledger + +import qualified Ouroboros.Consensus.Shelley.Eras as Shelley + +data ShelleyConfig = ShelleyConfig + { scConfig :: !(Ledger.ShelleyGenesis Shelley.StandardCrypto) + , scGenesisHash :: !GenesisHashShelley + } + +newtype GenesisHashByron = GenesisHashByron + { unGenesisHashByron :: Text + } deriving newtype (Eq, Show) + +newtype GenesisHashShelley = GenesisHashShelley + { unGenesisHashShelley :: Cardano.Crypto.Hash.Class.Hash Cardano.Crypto.Hash.Blake2b.Blake2b_256 ByteString + } deriving newtype (Eq, Show) + +newtype GenesisHashAlonzo = GenesisHashAlonzo + { unGenesisHashAlonzo :: Cardano.Crypto.Hash.Class.Hash Cardano.Crypto.Hash.Blake2b.Blake2b_256 ByteString + } deriving newtype (Eq, Show) + +newtype GenesisHashConway = GenesisHashConway + { unGenesisHashConway :: Cardano.Crypto.Hash.Class.Hash Cardano.Crypto.Hash.Blake2b.Blake2b_256 ByteString + } deriving newtype (Eq, Show) + +type ByronGenesisConfig = Cardano.Chain.Genesis.Config +type ShelleyGenesisConfig = ShelleyConfig +type AlonzoGenesisConfig = AlonzoGenesis +type ConwayGenesisConfig = ConwayGenesis Shelley.StandardCrypto +type ByronGenesisFile = File ByronGenesisConfig +type ShelleyGenesisFile = File ShelleyGenesisConfig +type AlonzoGenesisFile = File AlonzoGenesisConfig +type ConwayGenesisFile = File ConwayGenesisConfig -- | Some reasonable starting defaults for constructing a 'ShelleyGenesis'. -- diff --git a/cardano-api/src/Cardano/Api/LedgerState.hs b/cardano-api/src/Cardano/Api/LedgerState.hs index 4a222ce809e..d9851422887 100644 --- a/cardano-api/src/Cardano/Api/LedgerState.hs +++ b/cardano-api/src/Cardano/Api/LedgerState.hs @@ -2,7 +2,6 @@ {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE PatternSynonyms #-} @@ -78,14 +77,6 @@ module Cardano.Api.LedgerState , Env(..) , genesisConfigToEnv - , ByronGenesisConfig - , ShelleyGenesisConfig - , AlonzoGenesisConfig - , ConwayGenesisConfig - , ByronGenesisFile - , ShelleyGenesisFile - , AlonzoGenesisFile - , ConwayGenesisFile ) where @@ -132,6 +123,7 @@ import Cardano.Api.Block import Cardano.Api.Certificate import Cardano.Api.Eras import Cardano.Api.Error +import Cardano.Api.Genesis import Cardano.Api.IO import Cardano.Api.IPC (ConsensusModeParams (..), LocalChainSyncClient (LocalChainSyncClientPipelined), @@ -202,7 +194,6 @@ import qualified Ouroboros.Consensus.Protocol.TPraos as TPraos import qualified Ouroboros.Consensus.Shelley.Eras as Shelley import qualified Ouroboros.Consensus.Shelley.Ledger.Block as Shelley import qualified Ouroboros.Consensus.Shelley.Ledger.Ledger as Shelley -import Ouroboros.Consensus.Shelley.Node (ShelleyGenesis (..)) import qualified Ouroboros.Consensus.Shelley.Node.Praos as Consensus import Ouroboros.Consensus.TypeFamilyWrappers (WrapLedgerEvent (WrapLedgerEvent)) import qualified Ouroboros.Network.Block @@ -796,16 +787,6 @@ readNodeConfig (File ncf) = do , ncConwayGenesisFile = mapFile (mkAdjustPath ncf) (ncConwayGenesisFile ncfg) } -type ByronGenesisConfig = Cardano.Chain.Genesis.Config -type ShelleyGenesisConfig = ShelleyConfig -type AlonzoGenesisConfig = AlonzoGenesis -type ConwayGenesisConfig = ConwayGenesis Shelley.StandardCrypto - -type ByronGenesisFile = File ByronGenesisConfig -type ShelleyGenesisFile = File ShelleyGenesisConfig -type AlonzoGenesisFile = File AlonzoGenesisConfig -type ConwayGenesisFile = File ConwayGenesisConfig - data NodeConfig = NodeConfig { ncPBftSignatureThreshold :: !(Maybe Double) , ncByronGenesisFile :: !(File ByronGenesisConfig 'In) @@ -1002,27 +983,6 @@ data GenesisConfig !AlonzoGenesis !(ConwayGenesis Shelley.StandardCrypto) -data ShelleyConfig = ShelleyConfig - { scConfig :: !(Ledger.ShelleyGenesis Shelley.StandardCrypto) - , scGenesisHash :: !GenesisHashShelley - } - -newtype GenesisHashByron = GenesisHashByron - { unGenesisHashByron :: Text - } deriving newtype (Eq, Show) - -newtype GenesisHashShelley = GenesisHashShelley - { unGenesisHashShelley :: Cardano.Crypto.Hash.Class.Hash Cardano.Crypto.Hash.Blake2b.Blake2b_256 ByteString - } deriving newtype (Eq, Show) - -newtype GenesisHashAlonzo = GenesisHashAlonzo - { unGenesisHashAlonzo :: Cardano.Crypto.Hash.Class.Hash Cardano.Crypto.Hash.Blake2b.Blake2b_256 ByteString - } deriving newtype (Eq, Show) - -newtype GenesisHashConway = GenesisHashConway - { unGenesisHashConway :: Cardano.Crypto.Hash.Class.Hash Cardano.Crypto.Hash.Blake2b.Blake2b_256 ByteString - } deriving newtype (Eq, Show) - newtype LedgerStateDir = LedgerStateDir { unLedgerStateDir :: FilePath } deriving Show