@@ -77,7 +77,7 @@ import Data.Function ((&))
7777import qualified Data.List as List
7878import Data.Map.Strict (Map )
7979import qualified Data.Map.Strict as Map
80- import Data.Maybe (catMaybes , fromMaybe , mapMaybe )
80+ import Data.Maybe (catMaybes , fromMaybe , mapMaybe , maybeToList )
8181import Data.Set (Set )
8282import qualified Data.Set as Set
8383import qualified Data.Text as Text
@@ -1248,9 +1248,9 @@ getAllReferenceInputs
12481248 :: ScriptWitness witctx era -> Maybe TxIn
12491249 getReferenceInput sWit =
12501250 case sWit of
1251- PlutusScriptWitness _ _ (PReferenceScript refIn _ ) _ _ _ -> Just refIn
1251+ PlutusScriptWitness _ _ (PReferenceScript refIn) _ _ _ -> Just refIn
12521252 PlutusScriptWitness _ _ PScript {} _ _ _ -> Nothing
1253- SimpleScriptWitness _ (SReferenceScript refIn _ ) -> Just refIn
1253+ SimpleScriptWitness _ (SReferenceScript refIn) -> Just refIn
12541254 SimpleScriptWitness _ SScript {} -> Nothing
12551255
12561256toAddressInAnyEra
@@ -1403,19 +1403,26 @@ createTxMintValue era (val, scriptWitnesses) =
14031403 caseShelleyToAllegraOrMaryEraOnwards
14041404 (const (txFeatureMismatchPure (toCardanoEra era) TxFeatureMintValue ))
14051405 ( \ w -> do
1406- -- The set of policy ids for which we need witnesses:
1407- let witnessesNeededSet :: Set PolicyId
1408- witnessesNeededSet =
1409- fromList [pid | (AssetId pid _, _) <- toList val]
1406+ let policiesWithAssets :: [(PolicyId , AssetName , Quantity )]
1407+ policiesWithAssets = [(pid, assetName, quantity) | (AssetId pid assetName, quantity) <- toList val]
1408+ -- The set of policy ids for which we need witnesses:
1409+ witnessesNeededSet :: Set PolicyId
1410+ witnessesNeededSet = fromList [pid | (pid, _, _) <- policiesWithAssets]
14101411
14111412 let witnessesProvidedMap :: Map PolicyId (ScriptWitness WitCtxMint era )
14121413 witnessesProvidedMap = fromList $ [(polid, sWit) | MintScriptWitnessWithPolicyId polid sWit <- scriptWitnesses]
14131414 witnessesProvidedSet = Map. keysSet witnessesProvidedMap
1414-
1415+ policiesWithWitnesses =
1416+ Map. fromListWith
1417+ (<>)
1418+ [ (pid, [(assetName, quantity, BuildTxWith witness)])
1419+ | (pid, assetName, quantity) <- policiesWithAssets
1420+ , witness <- maybeToList $ Map. lookup pid witnessesProvidedMap
1421+ ]
14151422 -- Check not too many, nor too few:
14161423 validateAllWitnessesProvided witnessesNeededSet witnessesProvidedSet
14171424 validateNoUnnecessaryWitnesses witnessesNeededSet witnessesProvidedSet
1418- return ( TxMintValue w val ( BuildTxWith witnessesProvidedMap))
1425+ pure $ TxMintValue w policiesWithWitnesses
14191426 )
14201427 era
14211428 where
0 commit comments