From 2fd6517af02017ae61d6f136fc272ff8da51339c Mon Sep 17 00:00:00 2001 From: Jordan Millar Date: Tue, 21 Jan 2025 13:49:12 -0400 Subject: [PATCH 1/5] Add certificate plutus script related types for use in parsing command line arguments --- cardano-cli/cardano-cli.cabal | 2 + .../CLI/EraBased/Script/Certificate/Types.hs | 63 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Types.hs diff --git a/cardano-cli/cardano-cli.cabal b/cardano-cli/cardano-cli.cabal index a3845b1911..a37a92093f 100644 --- a/cardano-cli/cardano-cli.cabal +++ b/cardano-cli/cardano-cli.cabal @@ -117,6 +117,8 @@ library Cardano.CLI.EraBased.Run.StakePool Cardano.CLI.EraBased.Run.TextView Cardano.CLI.EraBased.Run.Transaction + Cardano.CLI.EraBased.Script.Certificate.Read + Cardano.CLI.EraBased.Script.Certificate.Types Cardano.CLI.EraBased.Script.Mint.Read Cardano.CLI.EraBased.Script.Mint.Types Cardano.CLI.EraBased.Script.Spend.Read diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Types.hs b/cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Types.hs new file mode 100644 index 0000000000..44a6fdb782 --- /dev/null +++ b/cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Types.hs @@ -0,0 +1,63 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE GADTs #-} + +module Cardano.CLI.EraBased.Script.Certificate.Types + ( CertificateScriptWitness (..) + , CliCertificateScriptRequirements (..) + , PlutusScriptCliArgs (..) + , PlutusRefScriptCliArgs (..) + , createSimpleOrPlutusScriptFromCliArgs + , createPlutusReferenceScriptFromCliArgs + ) +where + +import Cardano.Api + +import Cardano.CLI.Types.Common (ScriptDataOrFile) + +newtype CertificateScriptWitness era + = CertificateScriptWitness {cswScriptWitness :: ScriptWitness WitCtxStake era} + deriving Show + +data CliCertificateScriptRequirements + = OnDiskPlutusScript PlutusScriptCliArgs + | OnDiskSimpleScript (File ScriptInAnyLang In) + | OnDiskPlutusRefScript PlutusRefScriptCliArgs + deriving Show + +data PlutusScriptCliArgs + = OnDiskPlutusScriptCliArgs + (File ScriptInAnyLang In) + ScriptDataOrFile + -- ^ Redeemer + ExecutionUnits + deriving Show + +createSimpleOrPlutusScriptFromCliArgs + :: File ScriptInAnyLang In + -> Maybe (ScriptDataOrFile, ExecutionUnits) + -> CliCertificateScriptRequirements +createSimpleOrPlutusScriptFromCliArgs scriptFp (Just (redeemer, execUnits)) = + OnDiskPlutusScript $ OnDiskPlutusScriptCliArgs scriptFp redeemer execUnits +createSimpleOrPlutusScriptFromCliArgs scriptFp Nothing = + OnDiskSimpleScript scriptFp + +data PlutusRefScriptCliArgs + = PlutusRefScriptCliArgs + TxIn + -- ^ TxIn with reference script + AnyPlutusScriptVersion + ScriptDataOrFile + -- ^ Redeemer + ExecutionUnits + deriving Show + +createPlutusReferenceScriptFromCliArgs + :: TxIn + -> AnyPlutusScriptVersion + -> ScriptDataOrFile + -> ExecutionUnits + -> CliCertificateScriptRequirements +createPlutusReferenceScriptFromCliArgs txIn version redeemer execUnits = + OnDiskPlutusRefScript $ PlutusRefScriptCliArgs txIn version redeemer execUnits From d69a6f43172c45003e3af01b90c495a8bb0dfadd Mon Sep 17 00:00:00 2001 From: Jordan Millar Date: Wed, 22 Jan 2025 13:31:41 -0400 Subject: [PATCH 2/5] Add to first commit! Creation of read module --- .../CLI/EraBased/Script/Certificate/Read.hs | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Read.hs diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Read.hs b/cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Read.hs new file mode 100644 index 0000000000..bb984ee7c7 --- /dev/null +++ b/cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Read.hs @@ -0,0 +1,111 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE TupleSections #-} + +module Cardano.CLI.EraBased.Script.Certificate.Read + ( readCertificateScriptWitness + , readCertificateScriptWitnesses + ) +where + +import Cardano.Api +import Cardano.Api.Shelley + +import Cardano.CLI.EraBased.Script.Certificate.Types +import Cardano.CLI.EraBased.Script.Types +import Cardano.CLI.Read +import Cardano.CLI.Types.Common + +import Control.Monad + +readCertificateScriptWitnesses + :: MonadIOTransError (FileError CliScriptWitnessError) t m + => ShelleyBasedEra era + -> [(CertificateFile, Maybe CliCertificateScriptRequirements)] + -> t m [(CertificateFile, Maybe (CertificateScriptWitness era))] +readCertificateScriptWitnesses sbe = + mapM + ( \(certFile, mSWit) -> do + (certFile,) <$> forM mSWit (readCertificateScriptWitness sbe) + ) + +readCertificateScriptWitness + :: MonadIOTransError (FileError CliScriptWitnessError) t m + => ShelleyBasedEra era -> CliCertificateScriptRequirements -> t m (CertificateScriptWitness era) +readCertificateScriptWitness sbe certScriptReq = + case certScriptReq of + OnDiskSimpleScript scriptFp -> do + let sFp = unFile scriptFp + s <- + modifyError (fmap SimpleScriptWitnessDecodeError) $ + readFileSimpleScript sFp + case s of + SimpleScript ss -> do + return $ + CertificateScriptWitness $ + SimpleScriptWitness (sbeToSimpleScriptLanguageInEra sbe) $ + SScript ss + OnDiskPlutusScript (OnDiskPlutusScriptCliArgs scriptFp redeemerFile execUnits) -> do + let plutusScriptFp = unFile scriptFp + plutusScript <- + modifyError (fmap PlutusScriptWitnessDecodeError) $ + readFilePlutusScript plutusScriptFp + redeemer <- + modifyError (FileError plutusScriptFp . PlutusScriptWitnessRedeemerError) $ + readScriptDataOrFile redeemerFile + case plutusScript of + AnyPlutusScript lang script -> do + let pScript = PScript script + sLangSupported <- + modifyError (FileError plutusScriptFp) + $ hoistMaybe + ( PlutusScriptWitnessLanguageNotSupportedInEra + (AnyPlutusScriptVersion lang) + (shelleyBasedEraConstraints sbe $ AnyShelleyBasedEra sbe) + ) + $ scriptLanguageSupportedInEra sbe + $ PlutusScriptLanguage lang + return $ + CertificateScriptWitness $ + PlutusScriptWitness + sLangSupported + lang + pScript + NoScriptDatumForStake + redeemer + execUnits + OnDiskPlutusRefScript (PlutusRefScriptCliArgs refTxIn anyPlutusScriptVersion redeemerFile execUnits) -> do + case anyPlutusScriptVersion of + AnyPlutusScriptVersion lang -> do + let pScript = PReferenceScript refTxIn + redeemer <- + -- TODO: Implement a new error type to capture this. FileError is not representative of cases + -- where we do not have access to the script. + modifyError + ( FileError "Reference script filepath not available" + . PlutusScriptWitnessRedeemerError + ) + $ readScriptDataOrFile redeemerFile + sLangSupported <- + -- TODO: Implement a new error type to capture this. FileError is not representative of cases + -- where we do not have access to the script. + modifyError (FileError "Reference script filepath not available") + $ hoistMaybe + ( PlutusScriptWitnessLanguageNotSupportedInEra + (AnyPlutusScriptVersion lang) + (shelleyBasedEraConstraints sbe $ AnyShelleyBasedEra sbe) + ) + $ scriptLanguageSupportedInEra sbe + $ PlutusScriptLanguage lang + + return $ + CertificateScriptWitness $ + PlutusScriptWitness + sLangSupported + lang + pScript + NoScriptDatumForStake + redeemer + execUnits From b33ae93711c1b65226a351ae7fbbb37bf38d65f0 Mon Sep 17 00:00:00 2001 From: Jordan Millar Date: Wed, 22 Jan 2025 13:32:06 -0400 Subject: [PATCH 3/5] Modify parsers for new certificate plutus scripts parsing types --- .../CLI/EraBased/Commands/Transaction.hs | 7 ++-- .../Cardano/CLI/EraBased/Options/Common.hs | 40 ++++++++++++++++--- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Commands/Transaction.hs b/cardano-cli/src/Cardano/CLI/EraBased/Commands/Transaction.hs index 457a4a1e58..0d61de4995 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Commands/Transaction.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Commands/Transaction.hs @@ -25,6 +25,7 @@ import qualified Cardano.Api.Experimental as Exp import Cardano.Api.Ledger (Coin) import Cardano.Api.Shelley +import Cardano.CLI.EraBased.Script.Certificate.Types (CliCertificateScriptRequirements) import Cardano.CLI.EraBased.Script.Mint.Types import Cardano.CLI.EraBased.Script.Spend.Types (CliSpendScriptRequirements) import Cardano.CLI.Types.Common @@ -71,7 +72,7 @@ data TransactionBuildRawCmdArgs era = TransactionBuildRawCmdArgs -- ^ Transaction validity upper bound , fee :: !Coin -- ^ Transaction fee - , certificates :: ![(CertificateFile, Maybe (ScriptWitnessFiles WitCtxStake))] + , certificates :: ![(CertificateFile, Maybe CliCertificateScriptRequirements)] -- ^ Certificates with potential script witness , withdrawals :: ![(StakeAddress, Coin, Maybe (ScriptWitnessFiles WitCtxStake))] , metadataSchema :: !TxMetadataJsonSchema @@ -119,7 +120,7 @@ data TransactionBuildCmdArgs era = TransactionBuildCmdArgs -- ^ Transaction validity lower bound , mValidityUpperBound :: !(TxValidityUpperBound era) -- ^ Transaction validity upper bound - , certificates :: ![(CertificateFile, Maybe (ScriptWitnessFiles WitCtxStake))] + , certificates :: ![(CertificateFile, Maybe CliCertificateScriptRequirements)] -- ^ Certificates with potential script witness , withdrawals :: ![(StakeAddress, Coin, Maybe (ScriptWitnessFiles WitCtxStake))] -- ^ Withdrawals with potential script witness @@ -165,7 +166,7 @@ data TransactionBuildEstimateCmdArgs era = TransactionBuildEstimateCmdArgs -- ^ Transaction validity lower bound , mValidityUpperBound :: !(TxValidityUpperBound era) -- ^ Transaction validity upper bound - , certificates :: ![(CertificateFile, Maybe (ScriptWitnessFiles WitCtxStake))] + , certificates :: ![(CertificateFile, Maybe CliCertificateScriptRequirements)] -- ^ Certificates with potential script witness , withdrawals :: ![(StakeAddress, Coin, Maybe (ScriptWitnessFiles WitCtxStake))] -- ^ Withdrawals with potential script witness diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs b/cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs index 4cabdb3d5b..0c34d305de 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs @@ -18,6 +18,8 @@ import qualified Cardano.Api.Network as Consensus import Cardano.Api.Shelley import Cardano.CLI.Environment (EnvCli (..), envCliAnyEon) +import Cardano.CLI.EraBased.Script.Certificate.Types (CliCertificateScriptRequirements) +import qualified Cardano.CLI.EraBased.Script.Certificate.Types as Certifying import Cardano.CLI.EraBased.Script.Mint.Types import Cardano.CLI.EraBased.Script.Spend.Types (CliSpendScriptRequirements) import qualified Cardano.CLI.EraBased.Script.Spend.Types as PlutusSpend @@ -1476,7 +1478,7 @@ pTxBuildOutputOptions = pCertificateFile :: BalanceTxExecUnits - -> Parser (CertificateFile, Maybe (ScriptWitnessFiles WitCtxStake)) + -> Parser (CertificateFile, Maybe CliCertificateScriptRequirements) pCertificateFile balanceExecUnits = (,) <$> ( fmap CertificateFile $ @@ -1488,15 +1490,14 @@ pCertificateFile balanceExecUnits = <*> optional (pCertifyingScriptOrReferenceScriptWit balanceExecUnits) where pCertifyingScriptOrReferenceScriptWit - :: BalanceTxExecUnits -> Parser (ScriptWitnessFiles WitCtxStake) + :: BalanceTxExecUnits -> Parser CliCertificateScriptRequirements pCertifyingScriptOrReferenceScriptWit bExecUnits = - pScriptWitnessFiles - WitCtxStake + pCertificatePlutusScriptWitness balanceExecUnits "certificate" Nothing "the use of the certificate." - <|> pPlutusStakeReferenceScriptWitnessFiles "certificate-" bExecUnits + <|> pCertificateReferencePlutusScriptWitness "certificate-" bExecUnits helpText = mconcat @@ -1505,6 +1506,35 @@ pCertificateFile balanceExecUnits = , "stake key certificates etc). Optionally specify a script witness." ] +pCertificatePlutusScriptWitness + :: BalanceTxExecUnits -> String -> Maybe String -> String -> Parser CliCertificateScriptRequirements +pCertificatePlutusScriptWitness bExecUnits scriptFlagPrefix scriptFlagPrefixDeprecated help = + Certifying.createSimpleOrPlutusScriptFromCliArgs + <$> pScriptFor + (scriptFlagPrefix ++ "-script-file") + ((++ "-script-file") <$> scriptFlagPrefixDeprecated) + ("The file containing the script to witness " ++ help) + <*> optional + ( (,) + <$> pScriptRedeemerOrFile scriptFlagPrefix + <*> ( case bExecUnits of + AutoBalance -> pure (ExecutionUnits 0 0) + ManualBalance -> pExecutionUnits scriptFlagPrefix + ) + ) + +pCertificateReferencePlutusScriptWitness + :: String -> BalanceTxExecUnits -> Parser CliCertificateScriptRequirements +pCertificateReferencePlutusScriptWitness prefix autoBalanceExecUnits = + Certifying.createPlutusReferenceScriptFromCliArgs + <$> pReferenceTxIn prefix "plutus" + <*> pPlutusScriptLanguage prefix + <*> pScriptRedeemerOrFile (prefix ++ "reference-tx-in") + <*> ( case autoBalanceExecUnits of + AutoBalance -> pure (ExecutionUnits 0 0) + ManualBalance -> pExecutionUnits $ prefix ++ "reference-tx-in" + ) + pPoolMetadataFile :: Parser (StakePoolMetadataFile In) pPoolMetadataFile = File <$> parseFilePath "pool-metadata-file" "Filepath of the pool metadata." From c0c1f37d00c774223cac80be2c8ee2e5be58c6f6 Mon Sep 17 00:00:00 2001 From: Jordan Millar Date: Wed, 22 Jan 2025 13:26:26 -0400 Subject: [PATCH 4/5] Replace use of readScriptWitnessFiles with readCertificateScriptWitnesses --- .../Cardano/CLI/EraBased/Run/Transaction.hs | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs b/cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs index 824b70e691..44dd0fbff5 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs @@ -48,6 +48,8 @@ import Cardano.CLI.EraBased.Commands.Transaction import qualified Cardano.CLI.EraBased.Commands.Transaction as Cmd import Cardano.CLI.EraBased.Run.Genesis.Common (readProtocolParameters) import Cardano.CLI.EraBased.Run.Query +import Cardano.CLI.EraBased.Script.Certificate.Read +import Cardano.CLI.EraBased.Script.Certificate.Types (CertificateScriptWitness (..)) import Cardano.CLI.EraBased.Script.Mint.Read import Cardano.CLI.EraBased.Script.Mint.Types import Cardano.CLI.EraBased.Script.Spend.Read @@ -161,14 +163,15 @@ runTransactionBuildCmd readSpendScriptWitnesses eon txins let spendingScriptWitnesses = mapMaybe (fmap sswScriptWitness . snd) txinsAndMaybeScriptWits + certFilesAndMaybeScriptWits <- - firstExceptT TxCmdScriptWitnessError $ readScriptWitnessFiles eon certificates + firstExceptT TxCmdCliScriptWitnessError $ readCertificateScriptWitnesses eon certificates -- TODO: Conway Era - How can we make this more composable? certsAndMaybeScriptWits <- sequence [ fmap - (,mSwit) + (,cswScriptWitness <$> mSwit) ( firstExceptT TxCmdReadTextViewFileError . newExceptT $ shelleyBasedEraConstraints eon $ readFileTextEnvelope AsCertificate (File certFile) @@ -265,7 +268,7 @@ runTransactionBuildCmd getAllReferenceInputs spendingScriptWitnesses (map mswScriptWitness $ snd usedToGetReferenceInputs) - certsAndMaybeScriptWits + (mapMaybe snd certsAndMaybeScriptWits) withdrawalsAndMaybeScriptWits votingProceduresAndMaybeScriptWits proposals @@ -413,8 +416,8 @@ runTransactionBuildEstimateCmd -- TODO change type readSpendScriptWitnesses sbe txins certFilesAndMaybeScriptWits <- - firstExceptT TxCmdScriptWitnessError $ - readScriptWitnessFiles sbe certificates + firstExceptT TxCmdCliScriptWitnessError $ + readCertificateScriptWitnesses sbe certificates withdrawalsAndMaybeScriptWits <- firstExceptT TxCmdScriptWitnessError $ @@ -468,7 +471,7 @@ runTransactionBuildEstimateCmd -- TODO change type shelleyBasedEraConstraints sbe $ sequence [ fmap - (,mSwit) + (,cswScriptWitness <$> mSwit) ( firstExceptT TxCmdReadTextViewFileError . newExceptT $ readFileTextEnvelope AsCertificate (File certFile) ) @@ -655,8 +658,8 @@ runTransactionBuildRawCmd readSpendScriptWitnesses eon txIns certFilesAndMaybeScriptWits <- - firstExceptT TxCmdScriptWitnessError $ - readScriptWitnessFiles eon certificates + firstExceptT TxCmdCliScriptWitnessError $ + readCertificateScriptWitnesses eon certificates withdrawalsAndMaybeScriptWits <- firstExceptT TxCmdScriptWitnessError $ @@ -715,7 +718,7 @@ runTransactionBuildRawCmd shelleyBasedEraConstraints eon $ sequence [ fmap - (,mSwit) + (,cswScriptWitness <$> mSwit) ( firstExceptT TxCmdReadTextViewFileError . newExceptT $ readFileTextEnvelope AsCertificate (File certFile) ) @@ -907,7 +910,7 @@ constructTxBodyContent getAllReferenceInputs (map sswScriptWitness $ mapMaybe snd inputsAndMaybeScriptWits) (map mswScriptWitness $ snd valuesWithScriptWits) - certsAndMaybeScriptWits + (mapMaybe snd certsAndMaybeScriptWits) withdrawals votingProcedures proposals @@ -1054,7 +1057,7 @@ runTxBuild getAllReferenceInputs (map sswScriptWitness $ mapMaybe snd inputsAndMaybeScriptWits) (map mswScriptWitness $ snd valuesWithScriptWits) - certsAndMaybeScriptWits + (mapMaybe snd certsAndMaybeScriptWits) withdrawals votingProcedures proposals @@ -1221,7 +1224,7 @@ validateTxInsReference sbe allRefIns = do getAllReferenceInputs :: [ScriptWitness WitCtxTxIn era] -> [ScriptWitness WitCtxMint era] - -> [(Certificate era, Maybe (ScriptWitness WitCtxStake era))] + -> [ScriptWitness WitCtxStake era] -> [(StakeAddress, Lovelace, Maybe (ScriptWitness WitCtxStake era))] -> [(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))] -> [(Proposal era, Maybe (ScriptWitness WitCtxStake era))] @@ -1231,14 +1234,14 @@ getAllReferenceInputs getAllReferenceInputs spendingWitnesses mintWitnesses - certFiles + certScriptWitnesses withdrawals votingProceduresAndMaybeScriptWits propProceduresAnMaybeScriptWits readOnlyRefIns = do let txinsWitByRefInputs = map getScriptWitnessReferenceInput spendingWitnesses mintingRefInputs = map getScriptWitnessReferenceInput mintWitnesses - certsWitByRefInputs = [getScriptWitnessReferenceInput sWit | (_, Just sWit) <- certFiles] + certsWitByRefInputs = map getScriptWitnessReferenceInput certScriptWitnesses withdrawalsWitByRefInputs = [getScriptWitnessReferenceInput sWit | (_, _, Just sWit) <- withdrawals] votesWitByRefInputs = [getScriptWitnessReferenceInput sWit | (_, Just sWit) <- votingProceduresAndMaybeScriptWits] propsWitByRefInputs = [getScriptWitnessReferenceInput sWit | (_, Just sWit) <- propProceduresAnMaybeScriptWits] From c62b2b1002de6314b3d92dd04df3a47823789c94 Mon Sep 17 00:00:00 2001 From: Jordan Millar Date: Wed, 22 Jan 2025 13:27:49 -0400 Subject: [PATCH 5/5] Use CliCertificateScriptRequirements instead of ScriptWitnessFiles WitCtxStake in compatibility transaction build command --- .../src/Cardano/CLI/Compatible/Transaction.hs | 13 +++++++++---- .../Cardano/CLI/EraBased/Script/Certificate/Read.hs | 1 - 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/cardano-cli/src/Cardano/CLI/Compatible/Transaction.hs b/cardano-cli/src/Cardano/CLI/Compatible/Transaction.hs index 545e98572a..4d776163ec 100644 --- a/cardano-cli/src/Cardano/CLI/Compatible/Transaction.hs +++ b/cardano-cli/src/Cardano/CLI/Compatible/Transaction.hs @@ -22,6 +22,9 @@ import Cardano.Api.Shelley hiding (VotingProcedures) import Cardano.CLI.Environment import Cardano.CLI.EraBased.Options.Common hiding (pRefScriptFp, pTxOutDatum) import Cardano.CLI.EraBased.Run.Transaction +import Cardano.CLI.EraBased.Script.Certificate.Read +import Cardano.CLI.EraBased.Script.Certificate.Types +import Cardano.CLI.EraBased.Script.Types import Cardano.CLI.Parser import Cardano.CLI.Read import Cardano.CLI.Types.Common @@ -185,7 +188,7 @@ data CompatibleTransactionCmds era (Maybe NetworkId) !Coin -- ^ Tx fee - ![(CertificateFile, Maybe (ScriptWitnessFiles WitCtxStake))] + ![(CertificateFile, Maybe CliCertificateScriptRequirements)] -- ^ stake registering certs !(File () Out) @@ -203,6 +206,7 @@ data CompatibleTransactionError | CompatibleVoteError !VoteError | forall era. CompatibleVoteMergeError !(VotesMergingConflict era) | CompatibleScriptWitnessError !ScriptWitnessError + | CompatibleScriptWitnessReadError !(FileError CliScriptWitnessError) instance Error CompatibleTransactionError where prettyError = \case @@ -216,6 +220,7 @@ instance Error CompatibleTransactionError where CompatibleVoteError e -> pshow e CompatibleVoteMergeError e -> pshow e CompatibleScriptWitnessError e -> renderScriptWitnessError e + CompatibleScriptWitnessReadError e -> prettyError e runCompatibleTransactionCmd :: forall era @@ -240,14 +245,14 @@ runCompatibleTransactionCmd allOuts <- firstExceptT CompatibleTxCmdError $ mapM (toTxOutInAnyEra sbe) outs certFilesAndMaybeScriptWits <- - firstExceptT CompatibleScriptWitnessError $ - readScriptWitnessFiles sbe certificates + firstExceptT CompatibleScriptWitnessReadError $ + readCertificateScriptWitnesses sbe certificates certsAndMaybeScriptWits :: [(Certificate era, Maybe (ScriptWitness WitCtxStake era))] <- shelleyBasedEraConstraints sbe $ sequence [ fmap - (,mSwit) + (,cswScriptWitness <$> mSwit) ( firstExceptT CompatibleFileError . newExceptT $ readFileTextEnvelope AsCertificate (File certFile) ) diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Read.hs b/cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Read.hs index bb984ee7c7..01c5d8860b 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Read.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Script/Certificate/Read.hs @@ -1,7 +1,6 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} {-# LANGUAGE TupleSections #-} module Cardano.CLI.EraBased.Script.Certificate.Read