Skip to content

Commit

Permalink
Filter out duplicate collateral inputs in transaction build and
Browse files Browse the repository at this point in the history
build-raw
  • Loading branch information
Jimbo4350 committed Jan 4, 2023
1 parent 4e083a5 commit 79c5eae
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions cardano-cli/src/Cardano/CLI/Shelley/Run/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -380,11 +380,14 @@ 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
mReturnCollateral mTotCollateral txOuts changeAddr valuesWithScriptWits mLowBound
mUpperBound certsAndMaybeScriptWits withdrawalsAndMaybeScriptWits
<- runTxBuild cEra consensusModeParams nid mScriptValidity inputsAndMaybeScriptWits readOnlyRefIns
filteredTxinsc mReturnCollateral mTotCollateral txOuts changeAddr valuesWithScriptWits
mLowBound mUpperBound certsAndMaybeScriptWits withdrawalsAndMaybeScriptWits
requiredSigners txAuxScripts txMetadata mpparams mProp mOverrideWits outputOptions

let allReferenceInputs = getAllReferenceInputs
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,10 +503,13 @@ runTxBuildRawCmd
Nothing -> return Nothing
txOuts <- mapM (toTxOutInAnyEra cEra) txouts

txBody <- hoistEither $ runTxBuildRaw cEra mScriptValidity inputsAndMaybeScriptWits readOnlyRefIns txinsc
mReturnCollateral mTotColl txOuts mLowBound mUpperBound fee valuesWithScriptWits
certsAndMaybeScriptWits withdrawalsAndMaybeScriptWits requiredSigners txAuxScripts
txMetadata pparams mProp
-- 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

let noWitTx = makeSignedTransaction [] txBody
firstExceptT ShelleyTxCmdWriteFileError . newExceptT $
Expand Down

0 comments on commit 79c5eae

Please sign in to comment.