From 1ef645d99e1cdbe59272946ad216b62489801502 Mon Sep 17 00:00:00 2001 From: Jordan Millar Date: Wed, 29 Jan 2025 15:40:33 -0400 Subject: [PATCH] WIP --- cabal.project | 4 ++-- cardano-cli/cardano-cli.cabal | 1 + .../src/Cardano/CLI/EraBased/Run/Governance/Vote.hs | 7 ++++--- cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs | 9 ++++----- cardano-cli/src/Cardano/CLI/EraBased/Script/Types.hs | 1 + cardano-cli/src/Cardano/CLI/EraBased/Script/Vote/Read.hs | 1 - cardano-cli/src/Cardano/CLI/Read.hs | 8 -------- .../Cardano/CLI/Types/Errors/GovernanceVoteCmdError.hs | 3 ++- .../Cardano/CLI/Types/Errors/PlutusScriptDecodeError.hs | 1 + .../test/cardano-cli-golden/Test/Golden/ErrorsSpec.hs | 4 +++- 10 files changed, 18 insertions(+), 21 deletions(-) diff --git a/cabal.project b/cabal.project index 8d34ceba70..9222001652 100644 --- a/cabal.project +++ b/cabal.project @@ -19,8 +19,8 @@ index-state: packages: cardano-cli -program-options - ghc-options: -Werror +-- program-options +-- ghc-options: -Werror package cryptonite -- Using RDRAND instead of /dev/urandom as an entropy source for key diff --git a/cardano-cli/cardano-cli.cabal b/cardano-cli/cardano-cli.cabal index 3b53b350e3..d06334de34 100644 --- a/cardano-cli/cardano-cli.cabal +++ b/cardano-cli/cardano-cli.cabal @@ -125,6 +125,7 @@ library Cardano.CLI.EraBased.Script.Spend.Read Cardano.CLI.EraBased.Script.Spend.Types Cardano.CLI.EraBased.Script.Types + Cardano.CLI.EraBased.Script.Vote.Read Cardano.CLI.EraBased.Script.Vote.Types Cardano.CLI.EraBased.Transaction.HashCheck Cardano.CLI.Helpers diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/Vote.hs b/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/Vote.hs index cff860d6c5..2b4e6b7007 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/Vote.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/Vote.hs @@ -16,7 +16,7 @@ import qualified Cardano.Api.Ledger as L import Cardano.Api.Shelley import qualified Cardano.CLI.EraBased.Commands.Governance.Vote as Cmd -import Cardano.CLI.Read (readSingleVote) +import Cardano.CLI.EraBased.Script.Vote.Read import Cardano.CLI.Run.Hash (carryHashChecks) import Cardano.CLI.Types.Common import Cardano.CLI.Types.Errors.CmdError @@ -108,8 +108,9 @@ runGovernanceVoteViewCmd shelleyBasedEraConstraints sbe $ do voteProcedures <- - fmap fst . firstExceptT GovernanceVoteCmdReadVoteFileError . newExceptT $ - readSingleVote eon (voteFile, Nothing) + fmap fst $ + firstExceptT GovernanceVoteCmdReadVoteFileError $ + readVoteScriptWitness eon (voteFile, Nothing) firstExceptT GovernanceVoteCmdWriteError . newExceptT . ( case outFormat of diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs b/cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs index b2a57b1d13..c4ce08f998 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs @@ -44,7 +44,6 @@ import Cardano.Api.Shelley import qualified Cardano.Binary as CBOR import Cardano.CLI.EraBased.Commands.Transaction - (TransactionCalculateMinFeeCmdArgs (txBodyFile)) import qualified Cardano.CLI.EraBased.Commands.Transaction as Cmd import Cardano.CLI.EraBased.Run.Genesis.Common (readProtocolParameters) import Cardano.CLI.EraBased.Run.Query @@ -52,6 +51,7 @@ 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.Read.Common import Cardano.CLI.EraBased.Script.Spend.Read import Cardano.CLI.EraBased.Script.Spend.Types (SpendScriptWitness (..)) import Cardano.CLI.EraBased.Script.Vote.Types @@ -922,10 +922,9 @@ constructTxBodyContent validatedMintValue <- createTxMintValue sbe valuesWithScriptWits validatedTxScriptValidity <- first TxCmdNotSupportedInEraValidationError $ validateTxScriptValidity sbe mScriptValidity - validatedVotingProcedures <- + validatedVotingProcedures :: TxVotingProcedures BuildTx era <- first (TxCmdTxGovDuplicateVotes . TxGovDuplicateVotes) $ - -- TODO: Left off here. Keep fixing type errors - mkTxVotingProcedures @BuildTx (fromList votingProcedures) + mkTxVotingProcedures [(v, vswScriptWitness <$> mSwit) | (v, mSwit) <- votingProcedures] let txProposals = forShelleyBasedEraInEonMaybe sbe $ \w -> do let txp :: TxProposalProcedures BuildTx era txp = conwayEraOnwardsConstraints w $ mkTxProposalProcedures $ map (first unProposal) proposals @@ -1236,7 +1235,7 @@ getAllReferenceInputs mintingRefInputs = map getScriptWitnessReferenceInput mintWitnesses certsWitByRefInputs = map getScriptWitnessReferenceInput certScriptWitnesses withdrawalsWitByRefInputs = [getScriptWitnessReferenceInput sWit | (_, _, Just sWit) <- withdrawals] - votesWitByRefInputs = [getScriptWitnessReferenceInput sWit | (_, Just sWit) <- votingProceduresAndMaybeScriptWits] + votesWitByRefInputs = map (getScriptWitnessReferenceInput . vswScriptWitness) votingProceduresAndMaybeScriptWits propsWitByRefInputs = [getScriptWitnessReferenceInput sWit | (_, Just sWit) <- propProceduresAnMaybeScriptWits] concatMap diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Script/Types.hs b/cardano-cli/src/Cardano/CLI/EraBased/Script/Types.hs index 1dd236229a..979dd9381a 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Script/Types.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Script/Types.hs @@ -28,6 +28,7 @@ data CliScriptWitnessError AnyPlutusScriptVersion AnyShelleyBasedEra | PlutusScriptWitnessRedeemerError ScriptDataError + deriving Show instance Error CliScriptWitnessError where prettyError = \case diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Script/Vote/Read.hs b/cardano-cli/src/Cardano/CLI/EraBased/Script/Vote/Read.hs index c32bfb6564..fee03c838d 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Script/Vote/Read.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Script/Vote/Read.hs @@ -1,7 +1,6 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} -{-# LANGUAGE TupleSections #-} module Cardano.CLI.EraBased.Script.Vote.Read ( readVoteScriptWitness diff --git a/cardano-cli/src/Cardano/CLI/Read.hs b/cardano-cli/src/Cardano/CLI/Read.hs index e6ffacc4da..b5ec943fa6 100644 --- a/cardano-cli/src/Cardano/CLI/Read.hs +++ b/cardano-cli/src/Cardano/CLI/Read.hs @@ -77,7 +77,6 @@ module Cardano.CLI.Read , getStakeCredentialFromIdentifier , getStakeAddressFromVerifier , readVotingProceduresFiles - , readSingleVote -- * DRep credentials , getDRepCredentialFromVerKeyHashOrFile @@ -849,13 +848,6 @@ readTxUpdateProposal readTxUpdateProposal w (UpdateProposalFile upFp) = do TxUpdateProposal w <$> newExceptT (readFileTextEnvelope AsUpdateProposal (File upFp)) -readSingleVote - :: () - => ConwayEraOnwards era - -> (VoteFile In, Maybe (ScriptWitnessFiles WitCtxStake)) - -> IO (Either VoteError (VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))) -readSingleVote w (voteFp, mScriptWitFiles) = error "REMOVE ME" - data ConstitutionError = ConstitutionErrorFile (FileError TextEnvelopeError) | ConstitutionNotSupportedInEra AnyCardanoEra diff --git a/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceVoteCmdError.hs b/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceVoteCmdError.hs index 38c0bb114b..df91fc9721 100644 --- a/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceVoteCmdError.hs +++ b/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceVoteCmdError.hs @@ -7,6 +7,7 @@ module Cardano.CLI.Types.Errors.GovernanceVoteCmdError where import Cardano.Api.Shelley import Cardano.Binary (DecoderError) +import Cardano.CLI.EraBased.Script.Types import Cardano.CLI.Read (VoteError) import Cardano.CLI.Types.Errors.HashCmdError (HashCheckError) @@ -16,7 +17,7 @@ import qualified Formatting.Buildable as B data GovernanceVoteCmdError = GovernanceVoteCmdReadVerificationKeyError !(FileError InputDecodeError) - | GovernanceVoteCmdReadVoteFileError !VoteError + | GovernanceVoteCmdReadVoteFileError !(FileError CliScriptWitnessError) | GovernanceVoteCmdCredentialDecodeError !DecoderError | GovernanceVoteCmdWriteError !(FileError ()) | GovernanceVoteCmdReadVoteTextError !VoteError diff --git a/cardano-cli/src/Cardano/CLI/Types/Errors/PlutusScriptDecodeError.hs b/cardano-cli/src/Cardano/CLI/Types/Errors/PlutusScriptDecodeError.hs index 22dc7efad8..8f010128b9 100644 --- a/cardano-cli/src/Cardano/CLI/Types/Errors/PlutusScriptDecodeError.hs +++ b/cardano-cli/src/Cardano/CLI/Types/Errors/PlutusScriptDecodeError.hs @@ -18,6 +18,7 @@ data PlutusScriptDecodeError -- ^ Script version !AnyPlutusScriptVersion -- ^ Attempted to decode with version + deriving Show instance Error PlutusScriptDecodeError where prettyError = \case diff --git a/cardano-cli/test/cardano-cli-golden/Test/Golden/ErrorsSpec.hs b/cardano-cli/test/cardano-cli-golden/Test/Golden/ErrorsSpec.hs index e5349a6694..3f56e8b44a 100644 --- a/cardano-cli/test/cardano-cli-golden/Test/Golden/ErrorsSpec.hs +++ b/cardano-cli/test/cardano-cli-golden/Test/Golden/ErrorsSpec.hs @@ -17,6 +17,7 @@ import Cardano.Api.Shelley import Cardano.Binary import Cardano.CLI.EraBased.Run.Governance.Actions import Cardano.CLI.EraBased.Run.Governance.Committee +import Cardano.CLI.EraBased.Script.Types import Cardano.CLI.Read import Cardano.CLI.Types.Errors.DelegationError import Cardano.CLI.Types.Errors.GovernanceCmdError @@ -235,7 +236,8 @@ test_VoteReadError = , GovernanceVoteCmdReadVoteFileError $ VoteErrorFile $ FileError "path/file.txt" $ - TextEnvelopeAesonDecodeError "some error description" + TextEnvelopeError $ + TextEnvelopeAesonDecodeError "some error description" ) , ( "GovernanceVoteCmdWriteError"