Skip to content

Commit

Permalink
Filter out duplicate collateral inputs in transaction build
Browse files Browse the repository at this point in the history
  • Loading branch information
nielstron authored and Jimbo4350 committed Jan 5, 2023
1 parent 4e083a5 commit 14369b4
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions cardano-cli/src/Cardano/CLI/Shelley/Run/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -380,9 +380,12 @@ runTxBuildCmd

txOuts <- mapM (toTxOutInAnyEra cEra) txouts

-- the same collateral input can be used for several plutus scripts
let filteredTxinsc = Set.toList $ Set.fromList txinsc

-- We need to construct the txBodycontent outside of runTxBuild
BalancedTxBody txBodycontent balancedTxBody _ _
<- runTxBuild cEra consensusModeParams nid mScriptValidity inputsAndMaybeScriptWits readOnlyRefIns txinsc
<- runTxBuild cEra consensusModeParams nid mScriptValidity inputsAndMaybeScriptWits readOnlyRefIns filteredTxinsc
mReturnCollateral mTotCollateral txOuts changeAddr valuesWithScriptWits mLowBound
mUpperBound certsAndMaybeScriptWits withdrawalsAndMaybeScriptWits
requiredSigners txAuxScripts txMetadata mpparams mProp mOverrideWits outputOptions
Expand All @@ -395,7 +398,7 @@ runTxBuildCmd
readOnlyRefIns

let inputsThatRequireWitnessing = [input | (input,_) <- inputsAndMaybeScriptWits]
allTxInputs = inputsThatRequireWitnessing ++ allReferenceInputs ++ txinsc
allTxInputs = inputsThatRequireWitnessing ++ allReferenceInputs ++ filteredTxinsc

-- TODO: Calculating the script cost should live as a different command.
-- Why? Because then we can simply read a txbody and figure out
Expand Down Expand Up @@ -500,7 +503,10 @@ runTxBuildRawCmd
Nothing -> return Nothing
txOuts <- mapM (toTxOutInAnyEra cEra) txouts

txBody <- hoistEither $ runTxBuildRaw cEra mScriptValidity inputsAndMaybeScriptWits readOnlyRefIns txinsc
-- the same collateral input can be used for several plutus scripts
let filteredTxinsc = Set.toList $ Set.fromList txinsc

txBody <- hoistEither $ runTxBuildRaw cEra mScriptValidity inputsAndMaybeScriptWits readOnlyRefIns filteredTxinsc
mReturnCollateral mTotColl txOuts mLowBound mUpperBound fee valuesWithScriptWits
certsAndMaybeScriptWits withdrawalsAndMaybeScriptWits requiredSigners txAuxScripts
txMetadata pparams mProp
Expand Down

0 comments on commit 14369b4

Please sign in to comment.