Skip to content

Commit ce3e26a

Browse files
authored
Merge pull request #1047 from IntersectMBO/jordan/remove-use-of-ScriptWitnessFiles-in-proposing-scripts
Remove use of ScriptWitnessFiles in proposal scripts
2 parents fb7c820 + 1d1a3b1 commit ce3e26a

File tree

8 files changed

+286
-68
lines changed

8 files changed

+286
-68
lines changed

cardano-cli/cardano-cli.cabal

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ library
121121
Cardano.CLI.EraBased.Script.Certificate.Types
122122
Cardano.CLI.EraBased.Script.Mint.Read
123123
Cardano.CLI.EraBased.Script.Mint.Types
124+
Cardano.CLI.EraBased.Script.Proposal.Read
125+
Cardano.CLI.EraBased.Script.Proposal.Types
124126
Cardano.CLI.EraBased.Script.Read.Common
125127
Cardano.CLI.EraBased.Script.Spend.Read
126128
Cardano.CLI.EraBased.Script.Spend.Types

cardano-cli/src/Cardano/CLI/Compatible/Transaction.hs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import Cardano.CLI.EraBased.Options.Common hiding (pRefScriptFp, pTxOu
2424
import Cardano.CLI.EraBased.Run.Transaction
2525
import Cardano.CLI.EraBased.Script.Certificate.Read
2626
import Cardano.CLI.EraBased.Script.Certificate.Types
27+
import Cardano.CLI.EraBased.Script.Proposal.Types
2728
import Cardano.CLI.EraBased.Script.Types
2829
import Cardano.CLI.EraBased.Script.Vote.Types (CliVoteScriptRequirements,
2930
VoteScriptWitness (..))
@@ -182,7 +183,7 @@ data CompatibleTransactionCmds era
182183
[TxIn]
183184
[TxOutAnyEra]
184185
!(Maybe (Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)))
185-
!(Maybe (Featured ConwayEraOnwards era [(ProposalFile In, Maybe (ScriptWitnessFiles WitCtxStake))]))
186+
!(Maybe (Featured ConwayEraOnwards era [(ProposalFile In, Maybe CliProposalScriptRequirements)]))
186187
![(VoteFile In, Maybe CliVoteScriptRequirements)]
187188
[WitnessSigningData]
188189
-- ^ Signing keys
@@ -354,7 +355,7 @@ readUpdateProposalFile (Featured sToB (Just updateProposalFile)) = do
354355
TxUpdateProposal _ proposal -> return $ ProtocolUpdate sToB proposal
355356

356357
readProposalProcedureFile
357-
:: Featured ConwayEraOnwards era [(ProposalFile In, Maybe (ScriptWitnessFiles WitCtxStake))]
358+
:: Featured ConwayEraOnwards era [(ProposalFile In, Maybe CliProposalScriptRequirements)]
358359
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
359360
readProposalProcedureFile (Featured cEraOnwards []) =
360361
let sbe = convert cEraOnwards
@@ -367,4 +368,5 @@ readProposalProcedureFile (Featured cEraOnwards proposals) = do
367368
return $
368369
conwayEraOnwardsConstraints cEraOnwards $
369370
ProposalProcedures cEraOnwards $
370-
mkTxProposalProcedures [(govProp, mScriptWit) | (Proposal govProp, mScriptWit) <- props]
371+
mkTxProposalProcedures
372+
[(govProp, pswScriptWitness <$> mScriptWit) | (Proposal govProp, mScriptWit) <- props]

cardano-cli/src/Cardano/CLI/EraBased/Commands/Transaction.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import Cardano.Api.Shelley
2727

2828
import Cardano.CLI.EraBased.Script.Certificate.Types (CliCertificateScriptRequirements)
2929
import Cardano.CLI.EraBased.Script.Mint.Types
30+
import Cardano.CLI.EraBased.Script.Proposal.Types (CliProposalScriptRequirements)
3031
import Cardano.CLI.EraBased.Script.Spend.Types (CliSpendScriptRequirements)
3132
import Cardano.CLI.EraBased.Script.Vote.Types
3233
import Cardano.CLI.Orphans ()
@@ -84,7 +85,7 @@ data TransactionBuildRawCmdArgs era = TransactionBuildRawCmdArgs
8485
, mProtocolParamsFile :: !(Maybe ProtocolParamsFile)
8586
, mUpdateProprosalFile :: !(Maybe (Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)))
8687
, voteFiles :: ![(VoteFile In, Maybe CliVoteScriptRequirements)]
87-
, proposalFiles :: ![(ProposalFile In, Maybe (ScriptWitnessFiles WitCtxStake))]
88+
, proposalFiles :: ![(ProposalFile In, Maybe CliProposalScriptRequirements)]
8889
, currentTreasuryValueAndDonation :: !(Maybe (TxCurrentTreasuryValue, TxTreasuryDonation))
8990
, txBodyOutFile :: !(TxBodyFile Out)
9091
}
@@ -130,7 +131,7 @@ data TransactionBuildCmdArgs era = TransactionBuildCmdArgs
130131
, metadataFiles :: ![MetadataFile]
131132
, mUpdateProposalFile :: !(Maybe (Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)))
132133
, voteFiles :: ![(VoteFile In, Maybe CliVoteScriptRequirements)]
133-
, proposalFiles :: ![(ProposalFile In, Maybe (ScriptWitnessFiles WitCtxStake))]
134+
, proposalFiles :: ![(ProposalFile In, Maybe CliProposalScriptRequirements)]
134135
, treasuryDonation :: !(Maybe TxTreasuryDonation)
135136
, buildOutputOptions :: !TxBuildOutputOptions
136137
}
@@ -180,7 +181,7 @@ data TransactionBuildEstimateCmdArgs era = TransactionBuildEstimateCmdArgs
180181
, metadataFiles :: ![MetadataFile]
181182
, mUpdateProposalFile :: !(Maybe (Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)))
182183
, voteFiles :: ![(VoteFile In, Maybe CliVoteScriptRequirements)]
183-
, proposalFiles :: ![(ProposalFile In, Maybe (ScriptWitnessFiles WitCtxStake))]
184+
, proposalFiles :: ![(ProposalFile In, Maybe CliProposalScriptRequirements)]
184185
, currentTreasuryValueAndDonation :: !(Maybe (TxCurrentTreasuryValue, TxTreasuryDonation))
185186
, txBodyOutFile :: !(TxBodyFile Out)
186187
}

cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs

Lines changed: 68 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import Cardano.CLI.Environment (EnvCli (..), envCliAnyEon)
2121
import Cardano.CLI.EraBased.Script.Certificate.Types (CliCertificateScriptRequirements)
2222
import qualified Cardano.CLI.EraBased.Script.Certificate.Types as Certifying
2323
import Cardano.CLI.EraBased.Script.Mint.Types
24+
import Cardano.CLI.EraBased.Script.Proposal.Types (CliProposalScriptRequirements)
25+
import qualified Cardano.CLI.EraBased.Script.Proposal.Types as Proposing
2426
import Cardano.CLI.EraBased.Script.Spend.Types (CliSpendScriptRequirements)
2527
import qualified Cardano.CLI.EraBased.Script.Spend.Types as PlutusSpend
2628
import Cardano.CLI.EraBased.Script.Vote.Types (CliVoteScriptRequirements)
@@ -1302,7 +1304,7 @@ pVoteFile balExUnits =
13021304
"vote"
13031305
Nothing
13041306
"a vote"
1305-
<|> pVoteReferencePlutusScriptWitness "vote-" balExUnits
1307+
<|> pVoteReferencePlutusScriptWitness "vote" balExUnits
13061308

13071309
pVoteScriptWitness
13081310
:: BalanceTxExecUnits -> String -> Maybe String -> String -> Parser CliVoteScriptRequirements
@@ -1324,19 +1326,20 @@ pVoteScriptWitness bExecUnits scriptFlagPrefix scriptFlagPrefixDeprecated help =
13241326
pVoteReferencePlutusScriptWitness
13251327
:: String -> BalanceTxExecUnits -> Parser CliVoteScriptRequirements
13261328
pVoteReferencePlutusScriptWitness prefix autoBalanceExecUnits =
1327-
Voting.createPlutusReferenceScriptFromCliArgs
1328-
<$> pReferenceTxIn prefix "plutus"
1329-
<*> plutusP prefix PlutusScriptV3 "v3"
1330-
<*> pScriptRedeemerOrFile (prefix ++ "reference-tx-in")
1331-
<*> ( case autoBalanceExecUnits of
1332-
AutoBalance -> pure (ExecutionUnits 0 0)
1333-
ManualBalance -> pExecutionUnits $ prefix ++ "reference-tx-in"
1334-
)
1329+
let appendedPrefix = prefix ++ "-"
1330+
in Voting.createPlutusReferenceScriptFromCliArgs
1331+
<$> pReferenceTxIn appendedPrefix "plutus"
1332+
<*> plutusP appendedPrefix PlutusScriptV3 "v3"
1333+
<*> pScriptRedeemerOrFile (appendedPrefix ++ "reference-tx-in")
1334+
<*> ( case autoBalanceExecUnits of
1335+
AutoBalance -> pure (ExecutionUnits 0 0)
1336+
ManualBalance -> pExecutionUnits $ appendedPrefix ++ "reference-tx-in"
1337+
)
13351338

13361339
pProposalFiles
13371340
:: ShelleyBasedEra era
13381341
-> BalanceTxExecUnits
1339-
-> Parser [(ProposalFile In, Maybe (ScriptWitnessFiles WitCtxStake))]
1342+
-> Parser [(ProposalFile In, Maybe CliProposalScriptRequirements)]
13401343
pProposalFiles sbe balExUnits =
13411344
caseShelleyToBabbageOrConwayEraOnwards
13421345
(const $ pure [])
@@ -1345,22 +1348,51 @@ pProposalFiles sbe balExUnits =
13451348

13461349
pProposalFile
13471350
:: BalanceTxExecUnits
1348-
-> Parser (ProposalFile In, Maybe (ScriptWitnessFiles WitCtxStake))
1351+
-> Parser (ProposalFile In, Maybe CliProposalScriptRequirements)
13491352
pProposalFile balExUnits =
13501353
(,)
13511354
<$> pFileInDirection "proposal-file" "Filepath of the proposal."
13521355
<*> optional (pProposingScriptOrReferenceScriptWitness balExUnits)
13531356
where
13541357
pProposingScriptOrReferenceScriptWitness
1355-
:: BalanceTxExecUnits -> Parser (ScriptWitnessFiles WitCtxStake)
1358+
:: BalanceTxExecUnits -> Parser CliProposalScriptRequirements
13561359
pProposingScriptOrReferenceScriptWitness bExUnits =
1357-
pScriptWitnessFiles
1358-
WitCtxStake
1360+
pProposalScriptWitness
13591361
bExUnits
13601362
"proposal"
13611363
Nothing
13621364
"a proposal"
1363-
<|> pPlutusStakeReferenceScriptWitnessFilesVotingProposing "proposal-" balExUnits
1365+
<|> pProposalReferencePlutusScriptWitness "proposal" balExUnits
1366+
1367+
pProposalScriptWitness
1368+
:: BalanceTxExecUnits -> String -> Maybe String -> String -> Parser CliProposalScriptRequirements
1369+
pProposalScriptWitness bExecUnits scriptFlagPrefix scriptFlagPrefixDeprecated help =
1370+
Proposing.createSimpleOrPlutusScriptFromCliArgs
1371+
<$> pScriptFor
1372+
(scriptFlagPrefix ++ "-script-file")
1373+
((++ "-script-file") <$> scriptFlagPrefixDeprecated)
1374+
("The file containing the script to witness " ++ help)
1375+
<*> optional
1376+
( (,)
1377+
<$> pScriptRedeemerOrFile scriptFlagPrefix
1378+
<*> ( case bExecUnits of
1379+
AutoBalance -> pure (ExecutionUnits 0 0)
1380+
ManualBalance -> pExecutionUnits scriptFlagPrefix
1381+
)
1382+
)
1383+
1384+
pProposalReferencePlutusScriptWitness
1385+
:: String -> BalanceTxExecUnits -> Parser CliProposalScriptRequirements
1386+
pProposalReferencePlutusScriptWitness prefix autoBalanceExecUnits =
1387+
let appendedPrefix = prefix ++ "-"
1388+
in Proposing.createPlutusReferenceScriptFromCliArgs
1389+
<$> pReferenceTxIn appendedPrefix "plutus"
1390+
<*> plutusP appendedPrefix PlutusScriptV3 "v3"
1391+
<*> pScriptRedeemerOrFile (appendedPrefix ++ "reference-tx-in")
1392+
<*> ( case autoBalanceExecUnits of
1393+
AutoBalance -> pure (ExecutionUnits 0 0)
1394+
ManualBalance -> pExecutionUnits $ appendedPrefix ++ "reference-tx-in"
1395+
)
13641396

13651397
pCurrentTreasuryValueAndDonation
13661398
:: ShelleyBasedEra era -> Parser (Maybe (TxCurrentTreasuryValue, TxTreasuryDonation))
@@ -1527,7 +1559,7 @@ pCertificateFile balanceExecUnits =
15271559
"certificate"
15281560
Nothing
15291561
"the use of the certificate."
1530-
<|> pCertificateReferencePlutusScriptWitness "certificate-" bExecUnits
1562+
<|> pCertificateReferencePlutusScriptWitness "certificate" bExecUnits
15311563

15321564
helpText =
15331565
mconcat
@@ -1556,14 +1588,15 @@ pCertificatePlutusScriptWitness bExecUnits scriptFlagPrefix scriptFlagPrefixDepr
15561588
pCertificateReferencePlutusScriptWitness
15571589
:: String -> BalanceTxExecUnits -> Parser CliCertificateScriptRequirements
15581590
pCertificateReferencePlutusScriptWitness prefix autoBalanceExecUnits =
1559-
Certifying.createPlutusReferenceScriptFromCliArgs
1560-
<$> pReferenceTxIn prefix "plutus"
1561-
<*> pPlutusScriptLanguage prefix
1562-
<*> pScriptRedeemerOrFile (prefix ++ "reference-tx-in")
1563-
<*> ( case autoBalanceExecUnits of
1564-
AutoBalance -> pure (ExecutionUnits 0 0)
1565-
ManualBalance -> pExecutionUnits $ prefix ++ "reference-tx-in"
1566-
)
1591+
let appendedPrefix = prefix ++ "-"
1592+
in Certifying.createPlutusReferenceScriptFromCliArgs
1593+
<$> pReferenceTxIn appendedPrefix "plutus"
1594+
<*> pPlutusScriptLanguage appendedPrefix
1595+
<*> pScriptRedeemerOrFile (appendedPrefix ++ "reference-tx-in")
1596+
<*> ( case autoBalanceExecUnits of
1597+
AutoBalance -> pure (ExecutionUnits 0 0)
1598+
ManualBalance -> pExecutionUnits $ appendedPrefix ++ "reference-tx-in"
1599+
)
15671600

15681601
pPoolMetadataFile :: Parser (StakePoolMetadataFile In)
15691602
pPoolMetadataFile =
@@ -1633,7 +1666,7 @@ pWithdrawal balance =
16331666
"withdrawal"
16341667
Nothing
16351668
"the withdrawal of rewards."
1636-
<|> pPlutusStakeReferenceScriptWitnessFiles "withdrawal-" balance
1669+
<|> pPlutusStakeReferenceScriptWitnessFiles "withdrawal" balance
16371670

16381671
helpText =
16391672
mconcat
@@ -1667,15 +1700,16 @@ pPlutusStakeReferenceScriptWitnessFiles
16671700
-> BalanceTxExecUnits
16681701
-> Parser (ScriptWitnessFiles WitCtxStake)
16691702
pPlutusStakeReferenceScriptWitnessFiles prefix autoBalanceExecUnits =
1670-
PlutusReferenceScriptWitnessFiles
1671-
<$> pReferenceTxIn prefix "plutus"
1672-
<*> pPlutusScriptLanguage prefix
1673-
<*> pure NoScriptDatumOrFileForStake
1674-
<*> pScriptRedeemerOrFile (prefix ++ "reference-tx-in")
1675-
<*> ( case autoBalanceExecUnits of
1676-
AutoBalance -> pure (ExecutionUnits 0 0)
1677-
ManualBalance -> pExecutionUnits $ prefix ++ "reference-tx-in"
1678-
)
1703+
let appendedPrefix = prefix ++ "-"
1704+
in PlutusReferenceScriptWitnessFiles
1705+
<$> pReferenceTxIn appendedPrefix "plutus"
1706+
<*> pPlutusScriptLanguage appendedPrefix
1707+
<*> pure NoScriptDatumOrFileForStake
1708+
<*> pScriptRedeemerOrFile (appendedPrefix ++ "reference-tx-in")
1709+
<*> ( case autoBalanceExecUnits of
1710+
AutoBalance -> pure (ExecutionUnits 0 0)
1711+
ManualBalance -> pExecutionUnits $ appendedPrefix ++ "reference-tx-in"
1712+
)
16791713

16801714
pPlutusScriptLanguage :: String -> Parser AnyPlutusScriptVersion
16811715
pPlutusScriptLanguage prefix = plutusP prefix PlutusScriptV2 "v2" <|> plutusP prefix PlutusScriptV3 "v3"

cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import Cardano.CLI.EraBased.Script.Certificate.Read
5151
import Cardano.CLI.EraBased.Script.Certificate.Types (CertificateScriptWitness (..))
5252
import Cardano.CLI.EraBased.Script.Mint.Read
5353
import Cardano.CLI.EraBased.Script.Mint.Types
54+
import Cardano.CLI.EraBased.Script.Proposal.Types (ProposalScriptWitness (..))
5455
import Cardano.CLI.EraBased.Script.Read.Common
5556
import Cardano.CLI.EraBased.Script.Spend.Read
5657
import Cardano.CLI.EraBased.Script.Spend.Types (SpendScriptWitness (..))
@@ -263,7 +264,7 @@ runTransactionBuildCmd
263264
(mapMaybe snd certsAndMaybeScriptWits)
264265
withdrawalsAndMaybeScriptWits
265266
(mapMaybe snd votingProceduresAndMaybeScriptWits)
266-
proposals
267+
(mapMaybe snd proposals)
267268
readOnlyReferenceInputs
268269

269270
let inputsThatRequireWitnessing = [input | (input, _) <- txins]
@@ -780,7 +781,7 @@ runTxBuildRaw
780781
-> Maybe (LedgerProtocolParameters era)
781782
-> TxUpdateProposal era
782783
-> [(VotingProcedures era, Maybe (VoteScriptWitness era))]
783-
-> [(Proposal era, Maybe (ScriptWitness WitCtxStake era))]
784+
-> [(Proposal era, Maybe (ProposalScriptWitness era))]
784785
-> Maybe (TxCurrentTreasuryValue, TxTreasuryDonation)
785786
-> Either TxCmdError (TxBody era)
786787
runTxBuildRaw
@@ -868,7 +869,7 @@ constructTxBodyContent
868869
-> TxMetadataInEra era
869870
-> TxUpdateProposal era
870871
-> [(VotingProcedures era, Maybe (VoteScriptWitness era))]
871-
-> [(Proposal era, Maybe (ScriptWitness WitCtxStake era))]
872+
-> [(Proposal era, Maybe (ProposalScriptWitness era))]
872873
-> Maybe (TxCurrentTreasuryValue, TxTreasuryDonation)
873874
-- ^ The current treasury value and the donation. This is a stop gap as the
874875
-- semantics of the donation and treasury value depend on the script languages
@@ -905,7 +906,7 @@ constructTxBodyContent
905906
(mapMaybe snd certsAndMaybeScriptWits)
906907
withdrawals
907908
(mapMaybe snd votingProcedures)
908-
proposals
909+
(mapMaybe snd proposals)
909910
readOnlyRefIns
910911

911912
validatedCollateralTxIns <- validateTxInsCollateral sbe txinsc
@@ -927,7 +928,10 @@ constructTxBodyContent
927928
mkTxVotingProcedures [(v, vswScriptWitness <$> mSwit) | (v, mSwit) <- votingProcedures]
928929
let txProposals = forShelleyBasedEraInEonMaybe sbe $ \w -> do
929930
let txp :: TxProposalProcedures BuildTx era
930-
txp = conwayEraOnwardsConstraints w $ mkTxProposalProcedures $ map (first unProposal) proposals
931+
txp =
932+
conwayEraOnwardsConstraints w $
933+
mkTxProposalProcedures $
934+
[(unProposal prop, pswScriptWitness <$> mSwit) | (prop, mSwit) <- proposals]
931935
Featured w txp
932936
validatedCurrentTreasuryValue <-
933937
first
@@ -1010,7 +1014,7 @@ runTxBuild
10101014
-> TxUpdateProposal era
10111015
-> Maybe Word
10121016
-> [(VotingProcedures era, Maybe (VoteScriptWitness era))]
1013-
-> [(Proposal era, Maybe (ScriptWitness WitCtxStake era))]
1017+
-> [(Proposal era, Maybe (ProposalScriptWitness era))]
10141018
-> Maybe (TxCurrentTreasuryValue, TxTreasuryDonation)
10151019
-- ^ The current treasury value and the donation.
10161020
-> ExceptT TxCmdError IO (BalancedTxBody era)
@@ -1052,7 +1056,7 @@ runTxBuild
10521056
(mapMaybe snd certsAndMaybeScriptWits)
10531057
withdrawals
10541058
(mapMaybe snd votingProcedures)
1055-
proposals
1059+
(mapMaybe snd proposals)
10561060
readOnlyRefIns
10571061

10581062
let allTxInputs = inputsThatRequireWitnessing ++ allReferenceInputs ++ txinsc
@@ -1196,7 +1200,7 @@ getAllReferenceInputs
11961200
-> [ScriptWitness WitCtxStake era]
11971201
-> [(StakeAddress, Lovelace, Maybe (ScriptWitness WitCtxStake era))]
11981202
-> [VoteScriptWitness era]
1199-
-> [(Proposal era, Maybe (ScriptWitness WitCtxStake era))]
1203+
-> [ProposalScriptWitness era]
12001204
-> [TxIn]
12011205
-- ^ Read only reference inputs
12021206
-> [TxIn]
@@ -1213,7 +1217,7 @@ getAllReferenceInputs
12131217
certsWitByRefInputs = map getScriptWitnessReferenceInput certScriptWitnesses
12141218
withdrawalsWitByRefInputs = [getScriptWitnessReferenceInput sWit | (_, _, Just sWit) <- withdrawals]
12151219
votesWitByRefInputs = map (getScriptWitnessReferenceInput . vswScriptWitness) votingProceduresAndMaybeScriptWits
1216-
propsWitByRefInputs = [getScriptWitnessReferenceInput sWit | (_, Just sWit) <- propProceduresAnMaybeScriptWits]
1220+
propsWitByRefInputs = map (getScriptWitnessReferenceInput . pswScriptWitness) propProceduresAnMaybeScriptWits
12171221

12181222
concatMap
12191223
catMaybes

0 commit comments

Comments
 (0)