@@ -380,11 +380,14 @@ runTxBuildCmd
380
380
381
381
txOuts <- mapM (toTxOutInAnyEra cEra) txouts
382
382
383
+ -- the same collateral input can be used for several plutus scripts
384
+ let filteredTxinsc = Set. toList $ Set. fromList txinsc
385
+
383
386
-- We need to construct the txBodycontent outside of runTxBuild
384
387
BalancedTxBody txBodycontent balancedTxBody _ _
385
- <- runTxBuild cEra consensusModeParams nid mScriptValidity inputsAndMaybeScriptWits readOnlyRefIns txinsc
386
- mReturnCollateral mTotCollateral txOuts changeAddr valuesWithScriptWits mLowBound
387
- mUpperBound certsAndMaybeScriptWits withdrawalsAndMaybeScriptWits
388
+ <- runTxBuild cEra consensusModeParams nid mScriptValidity inputsAndMaybeScriptWits readOnlyRefIns
389
+ filteredTxinsc mReturnCollateral mTotCollateral txOuts changeAddr valuesWithScriptWits
390
+ mLowBound mUpperBound certsAndMaybeScriptWits withdrawalsAndMaybeScriptWits
388
391
requiredSigners txAuxScripts txMetadata mpparams mProp mOverrideWits outputOptions
389
392
390
393
let allReferenceInputs = getAllReferenceInputs
@@ -395,7 +398,7 @@ runTxBuildCmd
395
398
readOnlyRefIns
396
399
397
400
let inputsThatRequireWitnessing = [input | (input,_) <- inputsAndMaybeScriptWits]
398
- allTxInputs = inputsThatRequireWitnessing ++ allReferenceInputs ++ txinsc
401
+ allTxInputs = inputsThatRequireWitnessing ++ allReferenceInputs ++ filteredTxinsc
399
402
400
403
-- TODO: Calculating the script cost should live as a different command.
401
404
-- Why? Because then we can simply read a txbody and figure out
@@ -500,10 +503,13 @@ runTxBuildRawCmd
500
503
Nothing -> return Nothing
501
504
txOuts <- mapM (toTxOutInAnyEra cEra) txouts
502
505
503
- txBody <- hoistEither $ runTxBuildRaw cEra mScriptValidity inputsAndMaybeScriptWits readOnlyRefIns txinsc
504
- mReturnCollateral mTotColl txOuts mLowBound mUpperBound fee valuesWithScriptWits
505
- certsAndMaybeScriptWits withdrawalsAndMaybeScriptWits requiredSigners txAuxScripts
506
- txMetadata pparams mProp
506
+ -- the same collateral input can be used for several plutus scripts
507
+ let filteredTxinsc = Set. toList $ Set. fromList txinsc
508
+
509
+ txBody <- hoistEither $ runTxBuildRaw cEra mScriptValidity inputsAndMaybeScriptWits readOnlyRefIns
510
+ filteredTxinsc mReturnCollateral mTotColl txOuts mLowBound mUpperBound fee
511
+ valuesWithScriptWits certsAndMaybeScriptWits withdrawalsAndMaybeScriptWits
512
+ requiredSigners txAuxScripts txMetadata pparams mProp
507
513
508
514
let noWitTx = makeSignedTransaction [] txBody
509
515
firstExceptT ShelleyTxCmdWriteFileError . newExceptT $
0 commit comments