diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Commands/Genesis.hs b/cardano-cli/src/Cardano/CLI/EraBased/Commands/Genesis.hs index 50410f3da..bea18c357 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Commands/Genesis.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Commands/Genesis.hs @@ -1,5 +1,6 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE LambdaCase #-} module Cardano.CLI.EraBased.Commands.Genesis @@ -19,6 +20,7 @@ module Cardano.CLI.EraBased.Commands.Genesis where import qualified Cardano.Api.Byron as Byron +import qualified Cardano.Api.Experimental as Exp import Cardano.Api.Ledger (Coin) import Cardano.Api.Shelley @@ -30,7 +32,7 @@ data GenesisCmds era = GenesisCreate !(GenesisCreateCmdArgs era) | GenesisCreateCardano !(GenesisCreateCardanoCmdArgs era) | GenesisCreateStaked !(GenesisCreateStakedCmdArgs era) - | GenesisCreateTestNetData !(GenesisCreateTestNetDataCmdArgs era) + | GenesisCreateTestNetData !GenesisCreateTestNetDataCmdArgs | GenesisKeyGenGenesis !GenesisKeyGenGenesisCmdArgs | GenesisKeyGenDelegate !GenesisKeyGenDelegateCmdArgs | GenesisKeyGenUTxO !GenesisKeyGenUTxOCmdArgs @@ -92,8 +94,10 @@ data GenesisCreateStakedCmdArgs era = GenesisCreateStakedCmdArgs } deriving Show -data GenesisCreateTestNetDataCmdArgs era = GenesisCreateTestNetDataCmdArgs - { eon :: !(ShelleyBasedEra era) +-- TODO This existential type parameter should become a regular type parameter +-- when we parameterize the parent type by the experimental era API. +data GenesisCreateTestNetDataCmdArgs = forall era. GenesisCreateTestNetDataCmdArgs + { eon :: !(Exp.Era era) , specShelley :: !(Maybe FilePath) -- ^ Path to the @genesis-shelley@ file to use. If unspecified, a default one will be used. , specAlonzo :: !(Maybe FilePath) @@ -127,7 +131,9 @@ data GenesisCreateTestNetDataCmdArgs era = GenesisCreateTestNetDataCmdArgs , outputDir :: !FilePath -- ^ Directory where to write credentials and files. } - deriving Show + +instance Show GenesisCreateTestNetDataCmdArgs where + show _ = "GenesisCreateTestNetDataCmdArgs" data GenesisKeyGenGenesisCmdArgs = GenesisKeyGenGenesisCmdArgs { verificationKeyPath :: !(VerificationKeyFile Out) diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Options/Genesis.hs b/cardano-cli/src/Cardano/CLI/EraBased/Options/Genesis.hs index f6e749b04..c920276eb 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Options/Genesis.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Options/Genesis.hs @@ -11,6 +11,7 @@ where import Cardano.Api hiding (QueryInShelleyBasedEra (..)) import qualified Cardano.Api.Byron as Byron +import qualified Cardano.Api.Experimental as Exp import Cardano.Api.Ledger (Coin (..)) import Cardano.CLI.Environment (EnvCli (..)) @@ -217,18 +218,18 @@ pGenesisCreateStaked sbe envCli = pRelayJsonFp = parseFilePath "relay-specification-file" "JSON file that specifies the relays of each stake pool." -pGenesisCreateTestNetData :: ShelleyBasedEra era -> EnvCli -> Parser (GenesisCmds era) -pGenesisCreateTestNetData sbe envCli = +pGenesisCreateTestNetData :: Exp.Era era -> EnvCli -> Parser (GenesisCmds era) +pGenesisCreateTestNetData era envCli = fmap GenesisCreateTestNetData $ - GenesisCreateTestNetDataCmdArgs sbe + GenesisCreateTestNetDataCmdArgs era <$> optional (pSpecFile "shelley") <*> optional (pSpecFile "alonzo") <*> optional (pSpecFile "conway") <*> pNumGenesisKeys <*> pNumPools <*> pNumStakeDelegs - <*> pNumCommittee - <*> pNumDReps + <*> (case era of Exp.BabbageEra -> pure 0; Exp.ConwayEra -> pNumCommittee) -- Committee doesn't exist in babbage + <*> (case era of Exp.BabbageEra -> pure $ DRepCredentials OnDisk 0; Exp.ConwayEra -> pNumDReps) -- DReps don't exist in babbage <*> pNumStuffedUtxoCount <*> pNumUtxoKeys <*> pSupply diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Run/Genesis/CreateTestnetData.hs b/cardano-cli/src/Cardano/CLI/EraBased/Run/Genesis/CreateTestnetData.hs index 60cb81d9b..c09b45f56 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Run/Genesis/CreateTestnetData.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Run/Genesis/CreateTestnetData.hs @@ -24,6 +24,7 @@ module Cardano.CLI.EraBased.Run.Genesis.CreateTestnetData ) where +-- import Cardano.Api.Exp import Cardano.Api hiding (ConwayEra) import Cardano.Api.Byron (rationalToLovelacePortion) import qualified Cardano.Api.Byron as Byron hiding (GenesisParameters) @@ -208,7 +209,7 @@ data WriteFileGenesis where WritePretty :: ToJSON genesis => genesis -> WriteFileGenesis runGenesisCreateTestNetDataCmd - :: GenesisCreateTestNetDataCmdArgs era + :: GenesisCreateTestNetDataCmdArgs -> ExceptT GenesisCmdError IO () runGenesisCreateTestNetDataCmd Cmd.GenesisCreateTestNetDataCmdArgs @@ -239,7 +240,7 @@ runGenesisCreateTestNetDataCmd , outputDir } = do liftIO $ createDirectoryIfMissing False outputDir - let era = toCardanoEra eon + let era = convert @_ @CardanoEra eon shelleyGenesisInit <- fromMaybe shelleyGenesisDefaults <$> traverse decodeShelleyGenesisFile specShelley alonzoGenesis <- @@ -298,7 +299,8 @@ runGenesisCreateTestNetDataCmd when (0 < numPools) $ writeREADME poolsDir poolsREADME - -- CC members + -- CC members. We don't need to look at the eon, because the command's parser guarantees + -- that before Conway, the number of CC members at this point is 0. ccColdKeys <- forM [1 .. numCommitteeKeys] $ \index -> do let committeeDir = committeesDir "cc" <> show index vkeyHotFile = File @(VerificationKey ()) $ committeeDir "cc.hot.vkey" @@ -318,7 +320,8 @@ runGenesisCreateTestNetDataCmd when (0 < numCommitteeKeys) $ writeREADME committeesDir committeeREADME - -- DReps + -- DReps. We don't need to look at the eon, because the command's parser guarantees + -- that before Conway, the number of DReps at this point is 0. g <- Random.getStdGen dRepKeys <- firstExceptT GenesisCmdFileError $ diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/help.cli b/cardano-cli/test/cardano-cli-golden/files/golden/help.cli index 14e47f655..f60d09996 100644 --- a/cardano-cli/test/cardano-cli-golden/files/golden/help.cli +++ b/cardano-cli/test/cardano-cli-golden/files/golden/help.cli @@ -1094,7 +1094,6 @@ Usage: cardano-cli shelley genesis | create-cardano | create | create-staked - | create-testnet-data | hash ) @@ -1194,29 +1193,6 @@ Usage: cardano-cli shelley genesis create-staked [--key-output-format STRING] Create a staked Shelley genesis file from a genesis template and genesis/delegation/spending keys. -Usage: cardano-cli shelley genesis create-testnet-data [--spec-shelley FILEPATH] - [--spec-alonzo FILEPATH] - [--spec-conway FILEPATH] - [--genesis-keys INT] - [--pools INT] - [ --stake-delegators INT - | --transient-stake-delegators INT - ] - [--committee-keys INT] - [ --drep-keys INT - | --transient-drep-keys INT - ] - [--stuffed-utxo INT] - [--utxo-keys INT] - [--total-supply LOVELACE] - [--delegated-supply LOVELACE] - [--testnet-magic NATURAL] - [--relays FILEPATH] - [--start-time UTC-TIME] - --out-dir DIR - - Create data to use for starting a testnet. - Usage: cardano-cli shelley genesis hash --genesis FILEPATH Compute the hash of a genesis file @@ -2167,7 +2143,6 @@ Usage: cardano-cli allegra genesis | create-cardano | create | create-staked - | create-testnet-data | hash ) @@ -2267,29 +2242,6 @@ Usage: cardano-cli allegra genesis create-staked [--key-output-format STRING] Create a staked Shelley genesis file from a genesis template and genesis/delegation/spending keys. -Usage: cardano-cli allegra genesis create-testnet-data [--spec-shelley FILEPATH] - [--spec-alonzo FILEPATH] - [--spec-conway FILEPATH] - [--genesis-keys INT] - [--pools INT] - [ --stake-delegators INT - | --transient-stake-delegators INT - ] - [--committee-keys INT] - [ --drep-keys INT - | --transient-drep-keys INT - ] - [--stuffed-utxo INT] - [--utxo-keys INT] - [--total-supply LOVELACE] - [--delegated-supply LOVELACE] - [--testnet-magic NATURAL] - [--relays FILEPATH] - [--start-time UTC-TIME] - --out-dir DIR - - Create data to use for starting a testnet. - Usage: cardano-cli allegra genesis hash --genesis FILEPATH Compute the hash of a genesis file @@ -3240,7 +3192,6 @@ Usage: cardano-cli mary genesis | create-cardano | create | create-staked - | create-testnet-data | hash ) @@ -3338,29 +3289,6 @@ Usage: cardano-cli mary genesis create-staked [--key-output-format STRING] Create a staked Shelley genesis file from a genesis template and genesis/delegation/spending keys. -Usage: cardano-cli mary genesis create-testnet-data [--spec-shelley FILEPATH] - [--spec-alonzo FILEPATH] - [--spec-conway FILEPATH] - [--genesis-keys INT] - [--pools INT] - [ --stake-delegators INT - | --transient-stake-delegators INT - ] - [--committee-keys INT] - [ --drep-keys INT - | --transient-drep-keys INT - ] - [--stuffed-utxo INT] - [--utxo-keys INT] - [--total-supply LOVELACE] - [--delegated-supply LOVELACE] - [--testnet-magic NATURAL] - [--relays FILEPATH] - [--start-time UTC-TIME] - --out-dir DIR - - Create data to use for starting a testnet. - Usage: cardano-cli mary genesis hash --genesis FILEPATH Compute the hash of a genesis file @@ -4303,7 +4231,6 @@ Usage: cardano-cli alonzo genesis | create-cardano | create | create-staked - | create-testnet-data | hash ) @@ -4401,29 +4328,6 @@ Usage: cardano-cli alonzo genesis create-staked [--key-output-format STRING] Create a staked Shelley genesis file from a genesis template and genesis/delegation/spending keys. -Usage: cardano-cli alonzo genesis create-testnet-data [--spec-shelley FILEPATH] - [--spec-alonzo FILEPATH] - [--spec-conway FILEPATH] - [--genesis-keys INT] - [--pools INT] - [ --stake-delegators INT - | --transient-stake-delegators INT - ] - [--committee-keys INT] - [ --drep-keys INT - | --transient-drep-keys INT - ] - [--stuffed-utxo INT] - [--utxo-keys INT] - [--total-supply LOVELACE] - [--delegated-supply LOVELACE] - [--testnet-magic NATURAL] - [--relays FILEPATH] - [--start-time UTC-TIME] - --out-dir DIR - - Create data to use for starting a testnet. - Usage: cardano-cli alonzo genesis hash --genesis FILEPATH Compute the hash of a genesis file @@ -5489,10 +5393,6 @@ Usage: cardano-cli babbage genesis create-testnet-data [--spec-shelley FILEPATH] [ --stake-delegators INT | --transient-stake-delegators INT ] - [--committee-keys INT] - [ --drep-keys INT - | --transient-drep-keys INT - ] [--stuffed-utxo INT] [--utxo-keys INT] [--total-supply LOVELACE] diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/help/allegra_genesis.cli b/cardano-cli/test/cardano-cli-golden/files/golden/help/allegra_genesis.cli index 26ad5f21b..8b10843c1 100644 --- a/cardano-cli/test/cardano-cli-golden/files/golden/help/allegra_genesis.cli +++ b/cardano-cli/test/cardano-cli-golden/files/golden/help/allegra_genesis.cli @@ -9,7 +9,6 @@ Usage: cardano-cli allegra genesis | create-cardano | create | create-staked - | create-testnet-data | hash ) @@ -35,5 +34,4 @@ Available commands: and genesis/delegation/spending keys. create-staked Create a staked Shelley genesis file from a genesis template and genesis/delegation/spending keys. - create-testnet-data Create data to use for starting a testnet. hash Compute the hash of a genesis file diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/help/alonzo_genesis.cli b/cardano-cli/test/cardano-cli-golden/files/golden/help/alonzo_genesis.cli index ae53c4c92..a1d6c67f4 100644 --- a/cardano-cli/test/cardano-cli-golden/files/golden/help/alonzo_genesis.cli +++ b/cardano-cli/test/cardano-cli-golden/files/golden/help/alonzo_genesis.cli @@ -9,7 +9,6 @@ Usage: cardano-cli alonzo genesis | create-cardano | create | create-staked - | create-testnet-data | hash ) @@ -35,5 +34,4 @@ Available commands: and genesis/delegation/spending keys. create-staked Create a staked Shelley genesis file from a genesis template and genesis/delegation/spending keys. - create-testnet-data Create data to use for starting a testnet. hash Compute the hash of a genesis file diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/help/babbage_genesis_create-testnet-data.cli b/cardano-cli/test/cardano-cli-golden/files/golden/help/babbage_genesis_create-testnet-data.cli index 0c3619bdd..29a821b1d 100644 --- a/cardano-cli/test/cardano-cli-golden/files/golden/help/babbage_genesis_create-testnet-data.cli +++ b/cardano-cli/test/cardano-cli-golden/files/golden/help/babbage_genesis_create-testnet-data.cli @@ -6,10 +6,6 @@ Usage: cardano-cli babbage genesis create-testnet-data [--spec-shelley FILEPATH] [ --stake-delegators INT | --transient-stake-delegators INT ] - [--committee-keys INT] - [ --drep-keys INT - | --transient-drep-keys INT - ] [--stuffed-utxo INT] [--utxo-keys INT] [--total-supply LOVELACE] @@ -37,13 +33,6 @@ Available options: The number of stake delegator credential sets to make (default is 0). The credentials are NOT written to disk. - --committee-keys INT The number of constitutional committee credentials to - make (default is 0). - --drep-keys INT The number of DRep credentials to make (default is - 0). Credentials are written to disk. - --transient-drep-keys INT - The number of DRep credentials to make (default is - 0). The credentials are NOT written to disk. --stuffed-utxo INT The number of fake UTxO entries to generate (default is 0). --utxo-keys INT The number of UTxO keys to make (default is 0). diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/help/mary_genesis.cli b/cardano-cli/test/cardano-cli-golden/files/golden/help/mary_genesis.cli index a833fbfed..95034b1cc 100644 --- a/cardano-cli/test/cardano-cli-golden/files/golden/help/mary_genesis.cli +++ b/cardano-cli/test/cardano-cli-golden/files/golden/help/mary_genesis.cli @@ -9,7 +9,6 @@ Usage: cardano-cli mary genesis | create-cardano | create | create-staked - | create-testnet-data | hash ) @@ -35,5 +34,4 @@ Available commands: and genesis/delegation/spending keys. create-staked Create a staked Shelley genesis file from a genesis template and genesis/delegation/spending keys. - create-testnet-data Create data to use for starting a testnet. hash Compute the hash of a genesis file diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/help/shelley_genesis.cli b/cardano-cli/test/cardano-cli-golden/files/golden/help/shelley_genesis.cli index 4ddff5f8c..65ff660ac 100644 --- a/cardano-cli/test/cardano-cli-golden/files/golden/help/shelley_genesis.cli +++ b/cardano-cli/test/cardano-cli-golden/files/golden/help/shelley_genesis.cli @@ -9,7 +9,6 @@ Usage: cardano-cli shelley genesis | create-cardano | create | create-staked - | create-testnet-data | hash ) @@ -35,5 +34,4 @@ Available commands: and genesis/delegation/spending keys. create-staked Create a staked Shelley genesis file from a genesis template and genesis/delegation/spending keys. - create-testnet-data Create data to use for starting a testnet. hash Compute the hash of a genesis file