From f17a24505b871e59fd938f708b3530a8d76e5b1f Mon Sep 17 00:00:00 2001 From: Mateusz Galazyn Date: Thu, 15 Oct 2026 09:31:14 +0200 Subject: [PATCH] Add --tx-in-collateral and derive the era in compatible commands Add a repeatable `--tx-in-collateral` option to `compatible transaction signed-transaction` and pass the inputs to cardano-api's `compatibleTxInsCollateral`, so transactions with Plutus witnesses can include collateral inputs. The option is available from the Alonzo era onwards; Shelley, Allegra and Mary do not offer it. Compatible commands no longer pin Conway for vote, proposal and certificate reference-script options or for protocol-parameter update proposals, so a Dijkstra compatible group needs no further changes there. Existing eras behave as before. The parser and runner match on `ShelleyBasedEra` instead of using `*Onwards` eons and `Featured`. Raise the Windows test watchdog to 90 seconds, because the Wine-emulated cross-compiled test runs exceed 35 seconds per test case. --- ...eusz.galazyn_cardano_api_compatible_tx.yml | 6 + ...mateusz.galazyn_compatible-era-options.yml | 6 + .../Cardano/CLI/Compatible/Governance/Run.hs | 15 +-- .../CLI/Compatible/Transaction/Command.hs | 8 +- .../CLI/Compatible/Transaction/Option.hs | 121 ++++++++++++++---- .../Cardano/CLI/Compatible/Transaction/Run.hs | 108 +++++++++------- .../src/Cardano/CLI/EraBased/Common/Option.hs | 15 --- cardano-cli/src/Cardano/CLI/Read.hs | 12 -- .../cardano-cli-golden/files/golden/help.cli | 3 + ..._alonzo_transaction_signed-transaction.cli | 2 + ...babbage_transaction_signed-transaction.cli | 2 + ..._conway_transaction_signed-transaction.cli | 2 + .../Test/Cardano/CLI/Util.hs | 2 +- .../Test/Cli/Compatible/Transaction/Build.hs | 2 + 14 files changed, 191 insertions(+), 113 deletions(-) create mode 100644 .changes/20260813_173839_cardano-cli_mateusz.galazyn_cardano_api_compatible_tx.yml create mode 100644 .changes/20261015_120000_cardano-cli_mateusz.galazyn_compatible-era-options.yml diff --git a/.changes/20260813_173839_cardano-cli_mateusz.galazyn_cardano_api_compatible_tx.yml b/.changes/20260813_173839_cardano-cli_mateusz.galazyn_cardano_api_compatible_tx.yml new file mode 100644 index 0000000000..8d9abb7e5e --- /dev/null +++ b/.changes/20260813_173839_cardano-cli_mateusz.galazyn_cardano_api_compatible_tx.yml @@ -0,0 +1,6 @@ +project: cardano-cli +pr: 1408 +kind: + - feature +description: | + Add a repeatable `--tx-in-collateral` option to `compatible transaction signed-transaction`, available from the Alonzo era onwards, so transactions with Plutus witnesses can include collateral inputs. diff --git a/.changes/20261015_120000_cardano-cli_mateusz.galazyn_compatible-era-options.yml b/.changes/20261015_120000_cardano-cli_mateusz.galazyn_compatible-era-options.yml new file mode 100644 index 0000000000..86b32b413b --- /dev/null +++ b/.changes/20261015_120000_cardano-cli_mateusz.galazyn_compatible-era-options.yml @@ -0,0 +1,6 @@ +project: cardano-cli +pr: 1408 +kind: + - refactoring +description: | + Remove `pVoteFile`, `pProposalFile` and `pCertificateFile` from `Cardano.CLI.EraBased.Common.Option`; use `pVoteFileForEra`, `pProposalFileForEra` and `pCertificateFileForEra` with the era you need instead. Remove `readTxUpdateProposal` from `Cardano.CLI.Read`; read the file with `readFileTextEnvelope` instead. `CreateCompatibleSignedTransaction` now takes the update proposal file and the proposal files directly, without `Featured`. diff --git a/cardano-cli/src/Cardano/CLI/Compatible/Governance/Run.hs b/cardano-cli/src/Cardano/CLI/Compatible/Governance/Run.hs index 21f7e40325..bbadfb6d73 100644 --- a/cardano-cli/src/Cardano/CLI/Compatible/Governance/Run.hs +++ b/cardano-cli/src/Cardano/CLI/Compatible/Governance/Run.hs @@ -57,10 +57,8 @@ runCompatibleGovernanceActionCreateProtocolParametersUpdateCmd eraBasedPParams' shelleyToBabbageProtocolParametersUpdate sbe eraBasedPParams' ShelleyBasedEraBabbage -> shelleyToBabbageProtocolParametersUpdate sbe eraBasedPParams' - ShelleyBasedEraConway -> conwayProtocolParametersUpdate sbe eraBasedPParams' - ShelleyBasedEraDijkstra -> - -- TODO: Dijkstra - error "runCompatibleGovernanceActionCreateProtocolParametersUpdateCmd: Dijkstra not supported yet" + ShelleyBasedEraConway -> conwayOnwardsProtocolParametersUpdate sbe eraBasedPParams' + ShelleyBasedEraDijkstra -> conwayOnwardsProtocolParametersUpdate sbe eraBasedPParams' maybeAddUpdatedCostModel :: GovernanceActionProtocolParametersUpdateCmdArgs era @@ -74,11 +72,12 @@ maybeAddUpdatedCostModel args = case uppCostModelsFile args of pure . addCostModelsToEraBasedProtocolParametersUpdate alonzoOnwards costModels $ uppNewPParams args -conwayProtocolParametersUpdate - :: ShelleyBasedEra ConwayEra - -> GovernanceActionProtocolParametersUpdateCmdArgs ConwayEra +conwayOnwardsProtocolParametersUpdate + :: Typeable era + => ShelleyBasedEra era + -> GovernanceActionProtocolParametersUpdateCmdArgs era -> CIO e () -conwayProtocolParametersUpdate sbe args = do +conwayOnwardsProtocolParametersUpdate sbe args = do let oFp = uppFilePath args anyEra = AnyShelleyBasedEra sbe diff --git a/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Command.hs b/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Command.hs index e5b3b64d7f..c8c27ef138 100644 --- a/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Command.hs +++ b/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Command.hs @@ -24,11 +24,11 @@ data CompatibleTransactionCmds era = CreateCompatibleSignedTransaction (ShelleyBasedEra era) [TxIn] + [TxIn] + -- ^ Collateral inputs [TxOutAnyEra] - !(Maybe (Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))) - !( Maybe - (Featured ConwayEraOnwards era [(ProposalFile In, Maybe AnyNonAssetScript)]) - ) + !(Maybe UpdateProposalFile) + ![(ProposalFile In, Maybe AnyNonAssetScript)] ![(VoteFile In, Maybe AnyNonAssetScript)] [WitnessSigningData] -- ^ Signing keys diff --git a/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Option.hs b/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Option.hs index e1fdac0694..6fc167d9ad 100644 --- a/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Option.hs +++ b/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Option.hs @@ -12,6 +12,7 @@ module Cardano.CLI.Compatible.Transaction.Option where import Cardano.Api +import Cardano.Api.Experimental qualified as Exp import Cardano.CLI.Compatible.Transaction.Command import Cardano.CLI.Environment @@ -51,14 +52,15 @@ pCompatibleSignedTransaction pCompatibleSignedTransaction env sbe = CreateCompatibleSignedTransaction sbe <$> many pTxInOnly + <*> pTxInsCollateral sbe <*> many (pTxOutEraAware sbe) - <*> pFeatured (toCardanoEra sbe) (optional pUpdateProposalFile) - <*> pFeatured (toCardanoEra sbe) (many (pProposalFile ManualBalance)) + <*> pOptionalUpdateProposalFile sbe + <*> pProposalFiles sbe ManualBalance <*> pVoteFiles sbe ManualBalance <*> many pWitnessSigningData <*> optional (pNetworkId env) <*> pTxFee - <*> many (pCertificateFile ManualBalance) + <*> pCertificateFiles sbe ManualBalance <*> optional pProtocolParamsFile <*> pOutputFile @@ -71,6 +73,16 @@ pTxInOnly = <> Opt.help "TxId#TxIx" ) +pTxInsCollateral :: ShelleyBasedEra era -> Parser [TxIn] +pTxInsCollateral = \case + ShelleyBasedEraShelley -> pure [] + ShelleyBasedEraAllegra -> pure [] + ShelleyBasedEraMary -> pure [] + ShelleyBasedEraAlonzo -> many pTxInCollateral + ShelleyBasedEraBabbage -> many pTxInCollateral + ShelleyBasedEraConway -> many pTxInCollateral + ShelleyBasedEraDijkstra -> many pTxInCollateral + -- This parser renders the appropriate parsers depending on what -- functionality is available per era. pTxOutEraAware :: ShelleyBasedEra era -> Parser TxOutAnyEra @@ -89,18 +101,14 @@ pTxOutEraAware sbe = <*> pRefScriptFp sbe pTxOutDatum :: ShelleyBasedEra era -> Parser TxOutDatumAnyEra -pTxOutDatum sbe = - forEraInEon - (convert sbe) - (pure TxOutDatumByNone) - ( \case - AlonzoEraOnwardsAlonzo -> - pAlonzoDatumFunctionality <|> pure TxOutDatumByNone - AlonzoEraOnwardsBabbage -> - pBabbageDatumFunctionality <|> pure TxOutDatumByNone - AlonzoEraOnwardsConway -> pConwayDatumFunctionality <|> pure TxOutDatumByNone - AlonzoEraOnwardsDijkstra -> pConwayDatumFunctionality <|> pure TxOutDatumByNone - ) +pTxOutDatum = \case + ShelleyBasedEraShelley -> pure TxOutDatumByNone + ShelleyBasedEraAllegra -> pure TxOutDatumByNone + ShelleyBasedEraMary -> pure TxOutDatumByNone + ShelleyBasedEraAlonzo -> pAlonzoDatumFunctionality <|> pure TxOutDatumByNone + ShelleyBasedEraBabbage -> pBabbageDatumFunctionality <|> pure TxOutDatumByNone + ShelleyBasedEraConway -> pConwayDatumFunctionality <|> pure TxOutDatumByNone + ShelleyBasedEraDijkstra -> pConwayDatumFunctionality <|> pure TxOutDatumByNone where pAlonzoDatumFunctionality = asum @@ -151,21 +159,78 @@ pTxOutDatum sbe = "The script datum to embed in the tx output as an inline datum, in the given file." pRefScriptFp :: ShelleyBasedEra era -> Parser ReferenceScriptAnyEra -pRefScriptFp = - inEonForShelleyBasedEra @ConwayEraOnwards - (pure ReferenceScriptAnyEraNone) - ( const $ - ReferenceScriptAnyEra - <$> parseFilePath "tx-out-reference-script-file" "Reference script input file." - <|> pure ReferenceScriptAnyEraNone - ) +pRefScriptFp = \case + ShelleyBasedEraShelley -> pure ReferenceScriptAnyEraNone + ShelleyBasedEraAllegra -> pure ReferenceScriptAnyEraNone + ShelleyBasedEraMary -> pure ReferenceScriptAnyEraNone + ShelleyBasedEraAlonzo -> pure ReferenceScriptAnyEraNone + ShelleyBasedEraBabbage -> pure ReferenceScriptAnyEraNone + ShelleyBasedEraConway -> pReferenceScript + ShelleyBasedEraDijkstra -> pReferenceScript + where + pReferenceScript = + ReferenceScriptAnyEra + <$> parseFilePath "tx-out-reference-script-file" "Reference script input file." + <|> pure ReferenceScriptAnyEraNone + +pOptionalUpdateProposalFile :: ShelleyBasedEra era -> Parser (Maybe UpdateProposalFile) +pOptionalUpdateProposalFile = \case + ShelleyBasedEraShelley -> optional pUpdateProposalFile + ShelleyBasedEraAllegra -> optional pUpdateProposalFile + ShelleyBasedEraMary -> optional pUpdateProposalFile + ShelleyBasedEraAlonzo -> optional pUpdateProposalFile + ShelleyBasedEraBabbage -> optional pUpdateProposalFile + ShelleyBasedEraConway -> pure Nothing + ShelleyBasedEraDijkstra -> pure Nothing pVoteFiles - :: ShelleyBasedEra era + :: forall era + . ShelleyBasedEra era -> BalanceTxExecUnits -> Parser [(VoteFile In, Maybe AnyNonAssetScript)] pVoteFiles sbe bExUnits = - inEonForShelleyBasedEra @ConwayEraOnwards - (pure []) - (const . many $ pVoteFile bExUnits) - sbe + case sbe of + ShelleyBasedEraShelley -> pure [] + ShelleyBasedEraAllegra -> pure [] + ShelleyBasedEraMary -> pure [] + ShelleyBasedEraAlonzo -> pure [] + ShelleyBasedEraBabbage -> pure [] + ShelleyBasedEraConway -> pVoteFilesForEra (Exp.useEra @era) bExUnits + ShelleyBasedEraDijkstra -> pVoteFilesForEra (Exp.useEra @era) bExUnits + +pProposalFiles + :: forall era + . ShelleyBasedEra era + -> BalanceTxExecUnits + -> Parser [(ProposalFile In, Maybe AnyNonAssetScript)] +pProposalFiles sbe bExUnits = + case sbe of + ShelleyBasedEraShelley -> pure [] + ShelleyBasedEraAllegra -> pure [] + ShelleyBasedEraMary -> pure [] + ShelleyBasedEraAlonzo -> pure [] + ShelleyBasedEraBabbage -> pure [] + ShelleyBasedEraConway -> pProposalFilesForEra (Exp.useEra @era) bExUnits + ShelleyBasedEraDijkstra -> pProposalFilesForEra (Exp.useEra @era) bExUnits + +pCertificateFiles + :: forall era + . ShelleyBasedEra era + -> BalanceTxExecUnits + -> Parser [(CertificateFile, Maybe AnyNonAssetScript)] +pCertificateFiles sbe bExUnits = + many $ case sbe of + ShelleyBasedEraShelley -> pCertificateFile + ShelleyBasedEraAllegra -> pCertificateFile + ShelleyBasedEraMary -> pCertificateFile + ShelleyBasedEraAlonzo -> pCertificateFile + ShelleyBasedEraBabbage -> pCertificateFile + ShelleyBasedEraConway -> pCertificateFileForEra (Exp.useEra @era) bExUnits + ShelleyBasedEraDijkstra -> pCertificateFileForEra (Exp.useEra @era) bExUnits + where + pCertificateFile :: Parser (CertificateFile, Maybe AnyNonAssetScript) + pCertificateFile = + pCertificateFileWithPlutusReferenceLanguage + (pAnyPlutusSLanguage "certificate-") + "the use of the certificate." + bExUnits diff --git a/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Run.hs b/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Run.hs index cce5d6f682..5d7a575716 100644 --- a/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Run.hs +++ b/cardano-cli/src/Cardano/CLI/Compatible/Transaction/Run.hs @@ -5,6 +5,7 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-} +{-# LANGUAGE TypeApplications #-} module Cardano.CLI.Compatible.Transaction.Run ( runCompatibleTransactionCmd @@ -42,6 +43,7 @@ import Data.Aeson qualified as Aeson import Data.Bifunctor (first) import Data.Map.Ordered.Strict qualified as OMap import Data.Map.Strict qualified as Map +import Data.Maybe (fromMaybe) import Data.Text qualified as Text import Lens.Micro @@ -53,9 +55,10 @@ runCompatibleTransactionCmd ( CreateCompatibleSignedTransaction sbe ins + insCollateral outs mUpdateProposal - mProposalProcedure + proposals mVotes witnesses mNetworkId @@ -84,28 +87,24 @@ runCompatibleTransactionCmd (protocolUpdates, votes) :: (AnyProtocolUpdate era, AnyVote era) <- inEonForShelleyBasedEra - ( case mUpdateProposal of - Nothing -> return (NoPParamsUpdate sbe, NoVotes) - Just p -> do - pparamUpdate <- readUpdateProposalFile p - return (pparamUpdate, NoVotes) + ( do + pparamUpdate <- + fromMaybe (NoPParamsUpdate sbe) <$> forM mUpdateProposal (readUpdateProposalFile sbe) + return (pparamUpdate, NoVotes) ) - ( \w -> - case mProposalProcedure of - Nothing -> return (NoPParamsUpdate sbe, NoVotes) - Just prop -> do - pparamUpdate <- readProposalProcedureFile prop - votesAndWits :: [(OldApi.VotingProcedures era, Exp.AnyWitness (Exp.LedgerEra era))] <- - obtainCommonConstraints (convert w) $ readVotingProceduresFiles mVotes - votingProcedures :: (Exp.TxVotingProcedures (Exp.LedgerEra era)) <- - obtainCommonConstraints (convert w) $ - fromEitherCli - ( Exp.mkTxVotingProcedures - [ (obtainCommonConstraints (convert w) $ OldApi.unVotingProcedures vp, anyW) - | (vp, anyW) <- votesAndWits - ] - ) - return (pparamUpdate, VotingProcedures w $ obtainCommonConstraints (convert w) votingProcedures) + ( \w -> do + pparamUpdate <- readProposalProcedureFile sbe proposals + votesAndWits :: [(OldApi.VotingProcedures era, Exp.AnyWitness (Exp.LedgerEra era))] <- + obtainCommonConstraints (convert w) $ readVotingProceduresFiles mVotes + votingProcedures :: (Exp.TxVotingProcedures (Exp.LedgerEra era)) <- + obtainCommonConstraints (convert w) $ + fromEitherCli + ( Exp.mkTxVotingProcedures + [ (obtainCommonConstraints (convert w) $ OldApi.unVotingProcedures vp, anyW) + | (vp, anyW) <- votesAndWits + ] + ) + return (pparamUpdate, VotingProcedures w $ obtainCommonConstraints (convert w) votingProcedures) ) sbe @@ -126,6 +125,7 @@ runCompatibleTransactionCmd , compatibleTxProtocolUpdate = protocolUpdates , compatibleTxVotingProcedures = votes , compatibleTxCertificates = txCerts + , compatibleTxInsCollateral = insCollateral , compatibleTxProtocolParams = pparams } @@ -235,31 +235,49 @@ mkTxCertificatesSbe era certs = Exp.TxCertificates . OMap.fromList $ map attachW (c, wit <$ Compatible.getTxCertWitness (convert era) cert) readUpdateProposalFile - :: Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile) + :: forall e era + . ShelleyBasedEra era + -> UpdateProposalFile -> CIO e (AnyProtocolUpdate era) -readUpdateProposalFile (Featured sToB Nothing) = - return $ NoPParamsUpdate $ convert sToB -readUpdateProposalFile (Featured sToB (Just updateProposalFile)) = do - prop <- - fromExceptTCli $ readTxUpdateProposal sToB updateProposalFile - case prop of - TxUpdateProposalNone -> return $ NoPParamsUpdate $ convert sToB - TxUpdateProposal _ proposal -> return $ ProtocolUpdate sToB proposal +readUpdateProposalFile sbe (UpdateProposalFile file) = + case sbe of + ShelleyBasedEraShelley -> ProtocolUpdate ShelleyToBabbageEraShelley <$> readUpdateProposal + ShelleyBasedEraAllegra -> ProtocolUpdate ShelleyToBabbageEraAllegra <$> readUpdateProposal + ShelleyBasedEraMary -> ProtocolUpdate ShelleyToBabbageEraMary <$> readUpdateProposal + ShelleyBasedEraAlonzo -> ProtocolUpdate ShelleyToBabbageEraAlonzo <$> readUpdateProposal + ShelleyBasedEraBabbage -> ProtocolUpdate ShelleyToBabbageEraBabbage <$> readUpdateProposal + ShelleyBasedEraConway -> pure $ NoPParamsUpdate sbe + ShelleyBasedEraDijkstra -> pure $ NoPParamsUpdate sbe + where + readUpdateProposal :: CIO e (UpdateProposal era) + readUpdateProposal = + fromEitherIOCli @(FileError TextEnvelopeError) $ + shelleyBasedEraConstraints sbe $ + readFileTextEnvelope (File file) readProposalProcedureFile :: forall e era - . Featured ConwayEraOnwards era [(ProposalFile In, Maybe AnyNonAssetScript)] + . ShelleyBasedEra era + -> [(ProposalFile In, Maybe AnyNonAssetScript)] -> CIO e (AnyProtocolUpdate era) -readProposalProcedureFile (Featured cEraOnwards []) = - let sbe = convert cEraOnwards - in return $ NoPParamsUpdate sbe -readProposalProcedureFile (Featured cEraOnwards proposals) = do - let era = convert cEraOnwards - props :: [(Proposal era, Exp.AnyWitness (Exp.LedgerEra era))] <- - Exp.obtainCommonConstraints era $ mapM readProposal proposals - - return $ - Exp.obtainCommonConstraints era $ - ProposalProcedures cEraOnwards $ - Exp.mkTxProposalProcedures - [(govProp, swit) | (Proposal govProp, swit) <- props] +readProposalProcedureFile sbe [] = return $ NoPParamsUpdate sbe +readProposalProcedureFile sbe proposals = + case sbe of + ShelleyBasedEraShelley -> return $ NoPParamsUpdate sbe + ShelleyBasedEraAllegra -> return $ NoPParamsUpdate sbe + ShelleyBasedEraMary -> return $ NoPParamsUpdate sbe + ShelleyBasedEraAlonzo -> return $ NoPParamsUpdate sbe + ShelleyBasedEraBabbage -> return $ NoPParamsUpdate sbe + ShelleyBasedEraConway -> ProposalProcedures ConwayEraOnwardsConway <$> readProcedures + ShelleyBasedEraDijkstra -> ProposalProcedures ConwayEraOnwardsDijkstra <$> readProcedures + where + readProcedures + :: forall era' + . Exp.IsEra era' + => CIO e (Exp.TxProposalProcedures (ShelleyLedgerEra era')) + readProcedures = Exp.obtainCommonConstraints (Exp.useEra @era') $ do + props :: [(Proposal era', Exp.AnyWitness (Exp.LedgerEra era'))] <- + mapM readProposal proposals + pure $ + Exp.mkTxProposalProcedures + [(govProp, swit) | (Proposal govProp, swit) <- props] diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Common/Option.hs b/cardano-cli/src/Cardano/CLI/EraBased/Common/Option.hs index 7e03553a20..a77acdd5f3 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Common/Option.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Common/Option.hs @@ -1096,11 +1096,6 @@ pVoteFilesForEra -> Parser [(VoteFile In, Maybe AnyNonAssetScript)] pVoteFilesForEra era bExUnits = many $ pVoteFileForEra era bExUnits -pVoteFile - :: BalanceTxExecUnits - -> Parser (VoteFile In, Maybe AnyNonAssetScript) -pVoteFile = pVoteFileForEra Exp.ConwayEra - pVoteFileForEra :: Exp.Era era -> BalanceTxExecUnits @@ -1169,11 +1164,6 @@ pProposalFilesForEra pProposalFilesForEra era balExUnits = many (pProposalFileForEra era balExUnits) -pProposalFile - :: BalanceTxExecUnits - -> Parser (ProposalFile In, Maybe AnyNonAssetScript) -pProposalFile = pProposalFileForEra Exp.ConwayEra - pProposalFileForEra :: Exp.Era era -> BalanceTxExecUnits @@ -1386,11 +1376,6 @@ pTxBuildOutputOptions = <> "removed in a future version. Please, use calculate-plutus-script-cost command instead.)" ) -pCertificateFile - :: BalanceTxExecUnits - -> Parser (CertificateFile, Maybe AnyNonAssetScript) -pCertificateFile = pCertificateFileForEra Exp.ConwayEra - pCertificateFileForEra :: Exp.Era era -> BalanceTxExecUnits diff --git a/cardano-cli/src/Cardano/CLI/Read.hs b/cardano-cli/src/Cardano/CLI/Read.hs index e80c088b80..ece394ef91 100644 --- a/cardano-cli/src/Cardano/CLI/Read.hs +++ b/cardano-cli/src/Cardano/CLI/Read.hs @@ -79,9 +79,6 @@ module Cardano.CLI.Read , readSafeHash , scriptHashReader - -- * Update proposals - , readTxUpdateProposal - -- * Vote related , readVoteDelegationTarget , readVerificationKeySource @@ -586,15 +583,6 @@ instance Error VoteError where VoteErrorFile e -> prettyError e -readTxUpdateProposal - :: () - => ShelleyToBabbageEra era - -> UpdateProposalFile - -> ExceptT (FileError TextEnvelopeError) IO (TxUpdateProposal era) -readTxUpdateProposal w (UpdateProposalFile upFp) = do - TxUpdateProposal w - <$> newExceptT (shelleyBasedEraConstraints (convert w) $ readFileTextEnvelope (File upFp)) - newtype ConstitutionError = ConstitutionNotUnicodeError Text.UnicodeException deriving Show 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 75b97c00a9..b0b71cc3d9 100644 --- a/cardano-cli/test/cardano-cli-golden/files/golden/help.cli +++ b/cardano-cli/test/cardano-cli-golden/files/golden/help.cli @@ -9546,6 +9546,7 @@ Usage: cardano-cli compatible alonzo transaction signed-transaction Usage: cardano-cli compatible alonzo transaction signed-transaction [--tx-in TX_IN] + [--tx-in-collateral TX_IN] [--tx-out ADDRESS VALUE [ --tx-out-datum-hash HASH | --tx-out-datum-hash-cbor-file CBOR_FILE @@ -9788,6 +9789,7 @@ Usage: cardano-cli compatible babbage transaction signed-transaction Usage: cardano-cli compatible babbage transaction signed-transaction [--tx-in TX_IN] + [--tx-in-collateral TX_IN] [--tx-out ADDRESS VALUE [ --tx-out-datum-hash HASH | --tx-out-datum-hash-cbor-file CBOR_FILE @@ -10030,6 +10032,7 @@ Usage: cardano-cli compatible conway transaction signed-transaction Usage: cardano-cli compatible conway transaction signed-transaction [--tx-in TX_IN] + [--tx-in-collateral TX_IN] [--tx-out ADDRESS VALUE [ --tx-out-datum-hash HASH | --tx-out-datum-hash-cbor-file CBOR_FILE diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_alonzo_transaction_signed-transaction.cli b/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_alonzo_transaction_signed-transaction.cli index 6ba29a9a62..f3edf635ae 100644 --- a/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_alonzo_transaction_signed-transaction.cli +++ b/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_alonzo_transaction_signed-transaction.cli @@ -1,5 +1,6 @@ Usage: cardano-cli compatible alonzo transaction signed-transaction [--tx-in TX_IN] + [--tx-in-collateral TX_IN] [--tx-out ADDRESS VALUE [ --tx-out-datum-hash HASH | --tx-out-datum-hash-cbor-file CBOR_FILE @@ -43,6 +44,7 @@ Usage: cardano-cli compatible alonzo transaction signed-transaction Available options: --tx-in TX_IN TxId#TxIx + --tx-in-collateral TX_IN TxId#TxIx --tx-out ADDRESS VALUE The transaction output as ADDRESS VALUE where ADDRESS is the Bech32-encoded address followed by the value in the multi-asset syntax (including simply diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_babbage_transaction_signed-transaction.cli b/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_babbage_transaction_signed-transaction.cli index faf8eba004..83210bb0bc 100644 --- a/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_babbage_transaction_signed-transaction.cli +++ b/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_babbage_transaction_signed-transaction.cli @@ -1,5 +1,6 @@ Usage: cardano-cli compatible babbage transaction signed-transaction [--tx-in TX_IN] + [--tx-in-collateral TX_IN] [--tx-out ADDRESS VALUE [ --tx-out-datum-hash HASH | --tx-out-datum-hash-cbor-file CBOR_FILE @@ -46,6 +47,7 @@ Usage: cardano-cli compatible babbage transaction signed-transaction Available options: --tx-in TX_IN TxId#TxIx + --tx-in-collateral TX_IN TxId#TxIx --tx-out ADDRESS VALUE The transaction output as ADDRESS VALUE where ADDRESS is the Bech32-encoded address followed by the value in the multi-asset syntax (including simply diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_conway_transaction_signed-transaction.cli b/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_conway_transaction_signed-transaction.cli index 547d62853a..45366d2ea9 100644 --- a/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_conway_transaction_signed-transaction.cli +++ b/cardano-cli/test/cardano-cli-golden/files/golden/help/compatible_conway_transaction_signed-transaction.cli @@ -1,5 +1,6 @@ Usage: cardano-cli compatible conway transaction signed-transaction [--tx-in TX_IN] + [--tx-in-collateral TX_IN] [--tx-out ADDRESS VALUE [ --tx-out-datum-hash HASH | --tx-out-datum-hash-cbor-file CBOR_FILE @@ -78,6 +79,7 @@ Usage: cardano-cli compatible conway transaction signed-transaction Available options: --tx-in TX_IN TxId#TxIx + --tx-in-collateral TX_IN TxId#TxIx --tx-out ADDRESS VALUE The transaction output as ADDRESS VALUE where ADDRESS is the Bech32-encoded address followed by the value in the multi-asset syntax (including simply diff --git a/cardano-cli/test/cardano-cli-test-lib/Test/Cardano/CLI/Util.hs b/cardano-cli/test/cardano-cli-test-lib/Test/Cardano/CLI/Util.hs index 50a3bb8e95..2aac39c657 100644 --- a/cardano-cli/test/cardano-cli-test-lib/Test/Cardano/CLI/Util.hs +++ b/cardano-cli/test/cardano-cli-test-lib/Test/Cardano/CLI/Util.hs @@ -365,4 +365,4 @@ watchdogProp prop@Property{propertyTest} = prop{propertyTest = H.runWithWatchdog where -- Windows tests run under Wine emulation on Hydra and are much slower, -- so give them a longer timeout - cfg = H.WatchdogConfig{H.watchdogTimeout = if isWin32 then 35 else 20} + cfg = H.WatchdogConfig{H.watchdogTimeout = if isWin32 then 90 else 20} diff --git a/cardano-cli/test/cardano-cli-test/Test/Cli/Compatible/Transaction/Build.hs b/cardano-cli/test/cardano-cli-test/Test/Cli/Compatible/Transaction/Build.hs index ca191f3b6a..f66c557eae 100644 --- a/cardano-cli/test/cardano-cli-test/Test/Cli/Compatible/Transaction/Build.hs +++ b/cardano-cli/test/cardano-cli-test/Test/Cli/Compatible/Transaction/Build.hs @@ -33,6 +33,8 @@ hprop_compatible_conway_transaction_build_one_voter_many_votes = let args = [ "--tx-in" , "6e8c947816e82627aeccb55300074f2894a2051332f62a1c8954e7b588a18be7#0" + , "--tx-in-collateral" + , "6e8c947816e82627aeccb55300074f2894a2051332f62a1c8954e7b588a18be7#1" , "--tx-out" , "addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc+24910487859" , "--fee"