33{-# LANGUAGE EmptyCase #-}
44{-# LANGUAGE FlexibleContexts #-}
55{-# LANGUAGE GADTs #-}
6+ {-# LANGUAGE KindSignatures #-}
67{-# LANGUAGE LambdaCase #-}
78{-# LANGUAGE NamedFieldPuns #-}
89{-# LANGUAGE RankNTypes #-}
@@ -73,6 +74,7 @@ import qualified Data.List as List
7374import Data.Map.Strict (Map )
7475import qualified Data.Map.Strict as Map
7576import Data.Maybe (catMaybes , fromMaybe , mapMaybe , maybeToList )
77+ import Data.Proxy
7678import Data.Set (Set )
7779import qualified Data.Set as Set
7880import qualified Data.Text as Text
@@ -169,7 +171,7 @@ runTransactionBuildCmd
169171 txMetadata <-
170172 firstExceptT TxCmdMetadataError . newExceptT $
171173 readTxMetadata eon metadataSchema metadataFiles
172- valuesWithScriptWits <- readValueScriptWitnesses eon $ fromMaybe mempty mValue
174+ valuesWithScriptWits <- readMintScriptWitnesses eon $ fromMaybe mempty mValue
173175 scripts <-
174176 firstExceptT TxCmdScriptFileError $
175177 mapM (readFileScriptInAnyLang . unFile) scriptFiles
@@ -205,7 +207,7 @@ runTransactionBuildCmd
205207 let allReferenceInputs =
206208 getAllReferenceInputs
207209 inputsAndMaybeScriptWits
208- (snd <$> snd valuesWithScriptWits)
210+ (snd valuesWithScriptWits)
209211 certsAndMaybeScriptWits
210212 withdrawalsAndMaybeScriptWits
211213 votingProceduresAndMaybeScriptWits
@@ -360,7 +362,7 @@ runTransactionBuildEstimateCmd -- TODO change type
360362 firstExceptT TxCmdMetadataError
361363 . newExceptT
362364 $ readTxMetadata sbe metadataSchema metadataFiles
363- valuesWithScriptWits <- readValueScriptWitnesses sbe $ fromMaybe mempty mValue
365+ valuesWithScriptWits <- readMintScriptWitnesses sbe $ fromMaybe mempty mValue
364366 scripts <-
365367 firstExceptT TxCmdScriptFileError $
366368 mapM (readFileScriptInAnyLang . unFile) scriptFiles
@@ -594,7 +596,7 @@ runTransactionBuildRawCmd
594596 firstExceptT TxCmdMetadataError
595597 . newExceptT
596598 $ readTxMetadata eon metadataSchema metadataFiles
597- valuesWithScriptWits <- readValueScriptWitnesses eon $ fromMaybe mempty mValue
599+ valuesWithScriptWits <- readMintScriptWitnesses eon $ fromMaybe mempty mValue
598600 scripts <-
599601 firstExceptT TxCmdScriptFileError $
600602 mapM (readFileScriptInAnyLang . unFile) scriptFiles
@@ -698,7 +700,7 @@ runTxBuildRaw
698700 -- ^ Tx upper bound
699701 -> Lovelace
700702 -- ^ Tx fee
701- -> (Value , [( Maybe PolicyId , ScriptWitness WitCtxMint era ) ])
703+ -> (Value , [UpdatedReferenceScriptWitness era ])
702704 -- ^ Multi-Asset value(s)
703705 -> [(Certificate era , Maybe (ScriptWitness WitCtxStake era ))]
704706 -- ^ Certificate with potential script witness
@@ -784,7 +786,7 @@ constructTxBodyContent
784786 -- ^ Tx lower bound
785787 -> TxValidityUpperBound era
786788 -- ^ Tx upper bound
787- -> (Value , [( Maybe PolicyId , ScriptWitness WitCtxMint era ) ])
789+ -> (Value , [UpdatedReferenceScriptWitness era ])
788790 -- ^ Multi-Asset value(s)
789791 -> [(Certificate era , Maybe (ScriptWitness WitCtxStake era ))]
790792 -- ^ Certificate with potential script witness
@@ -831,7 +833,7 @@ constructTxBodyContent
831833 let allReferenceInputs =
832834 getAllReferenceInputs
833835 inputsAndMaybeScriptWits
834- (snd <$> snd valuesWithScriptWits)
836+ (snd valuesWithScriptWits)
835837 certsAndMaybeScriptWits
836838 withdrawals
837839 votingProcedures
@@ -924,7 +926,7 @@ runTxBuild
924926 -- ^ Normal outputs
925927 -> TxOutChangeAddress
926928 -- ^ A change output
927- -> (Value , [( Maybe PolicyId , ScriptWitness WitCtxMint era ) ])
929+ -> (Value , [UpdatedReferenceScriptWitness era ])
928930 -- ^ Multi-Asset value(s)
929931 -> Maybe SlotNo
930932 -- ^ Tx lower bound
@@ -978,7 +980,7 @@ runTxBuild
978980 let allReferenceInputs =
979981 getAllReferenceInputs
980982 inputsAndMaybeScriptWits
981- (snd <$> snd valuesWithScriptWits)
983+ (snd valuesWithScriptWits)
982984 certsAndMaybeScriptWits
983985 withdrawals
984986 votingProcedures
@@ -1145,7 +1147,7 @@ validateTxInsReference sbe allRefIns = do
11451147
11461148getAllReferenceInputs
11471149 :: [(TxIn , Maybe (ScriptWitness WitCtxTxIn era ))]
1148- -> [ScriptWitness WitCtxMint era ]
1150+ -> [UpdatedReferenceScriptWitness era ]
11491151 -> [(Certificate era , Maybe (ScriptWitness WitCtxStake era ))]
11501152 -> [(StakeAddress , Lovelace , Maybe (ScriptWitness WitCtxStake era ))]
11511153 -> [(VotingProcedures era , Maybe (ScriptWitness WitCtxStake era ))]
@@ -1162,7 +1164,7 @@ getAllReferenceInputs
11621164 propProceduresAnMaybeScriptWits
11631165 readOnlyRefIns = do
11641166 let txinsWitByRefInputs = [getReferenceInput sWit | (_, Just sWit) <- txins]
1165- mintingRefInputs = map getReferenceInput mintWitnesses
1167+ mintingRefInputs = [ getReferenceInput sWit | UpdatedReferenceScriptWitness _ sWit <- mintWitnesses]
11661168 certsWitByRefInputs = [getReferenceInput sWit | (_, Just sWit) <- certFiles]
11671169 withdrawalsWitByRefInputs = [getReferenceInput sWit | (_, _, Just sWit) <- withdrawals]
11681170 votesWitByRefInputs = [getReferenceInput sWit | (_, Just sWit) <- votingProceduresAndMaybeScriptWits]
@@ -1329,7 +1331,7 @@ toTxAlonzoDatum supp cliDatum =
13291331createTxMintValue
13301332 :: forall era
13311333 . ShelleyBasedEra era
1332- -> (Value , [( Maybe PolicyId , ScriptWitness WitCtxMint era ) ])
1334+ -> (Value , [UpdatedReferenceScriptWitness era ])
13331335 -> Either TxCmdError (TxMintValue BuildTx era )
13341336createTxMintValue era (val, scriptWitnesses) =
13351337 if List. null (toList val) && List. null scriptWitnesses
@@ -1364,10 +1366,14 @@ createTxMintValue era (val, scriptWitnesses) =
13641366 era
13651367 where
13661368 gatherMintingWitnesses
1367- :: [( Maybe PolicyId , ScriptWitness WitCtxMint era ) ]
1369+ :: [UpdatedReferenceScriptWitness era ]
13681370 -> [(PolicyId , ScriptWitness WitCtxMint era )]
13691371 gatherMintingWitnesses [] = []
1370- gatherMintingWitnesses ((mPid, sWit) : rest) =
1372+ gatherMintingWitnesses (UpdatedReferenceScriptWitness mPidSource sWit : rest) = do
1373+ let mPid =
1374+ mPidSource >>= \ case
1375+ ConcretePolicyId pid -> Just pid
1376+ QueryUtxoPolicyId _ -> Nothing -- TODO
13711377 case scriptWitnessPolicyId sWit <|> mPid of
13721378 Nothing -> gatherMintingWitnesses rest
13731379 Just pid -> (pid, sWit) : gatherMintingWitnesses rest
@@ -1384,23 +1390,45 @@ createTxMintValue era (val, scriptWitnesses) =
13841390 where
13851391 witnessesExtra = Set. elems (witnessesProvided Set. \\ witnessesNeeded)
13861392
1387- scriptWitnessPolicyId :: ScriptWitness witctx era -> Maybe PolicyId
1388- scriptWitnessPolicyId (SimpleScriptWitness _ (SScript script)) =
1389- Just . scriptPolicyId $ SimpleScript script
1390- scriptWitnessPolicyId (SimpleScriptWitness _ (SReferenceScript _)) =
1391- Nothing
1392- scriptWitnessPolicyId (PlutusScriptWitness _ version (PScript script) _ _ _) =
1393- Just . scriptPolicyId $ PlutusScript version script
1394- scriptWitnessPolicyId (PlutusScriptWitness _ _ (PReferenceScript _) _ _ _) =
1395- Nothing
1396-
1397- readValueScriptWitnesses
1393+ -- TOOD remove
1394+ scriptWitnessPolicyId :: ScriptWitness WitCtxMint era -> Maybe PolicyId
1395+ scriptWitnessPolicyId = \ case
1396+ SimpleScriptWitness _ (SScript script) -> Just . scriptPolicyId $ SimpleScript script
1397+ SimpleScriptWitness _ (SReferenceScript _) -> Nothing
1398+ PlutusScriptWitness _ version (PScript script) _ _ _ -> Just . scriptPolicyId $ PlutusScript version script
1399+ PlutusScriptWitness _ _ (PReferenceScript _) _ _ _ -> Nothing
1400+
1401+ readMintScriptWitnesses
13981402 :: ShelleyBasedEra era
1399- -> (Value , [ScriptWitnessFiles WitCtxMint ])
1400- -> ExceptT TxCmdError IO (Value , [(Maybe PolicyId , ScriptWitness WitCtxMint era )])
1401- readValueScriptWitnesses era (v, sWitFiles) = do
1402- sWits <- mapM (firstExceptT TxCmdScriptWitnessError . readScriptWitness era) sWitFiles
1403- return (v, sWits)
1403+ -> (a , [ScriptWitnessFiles WitCtxMint ])
1404+ -> (TxIn -> ExceptT QueryConvenienceError IO (UTxO era ))
1405+ -> ExceptT
1406+ TxCmdError
1407+ IO
1408+ (a , [UpdatedReferenceScriptWitness era ])
1409+ readMintScriptWitnesses era getUtxo (v, sWitFiles) =
1410+ fmap (v,) . forM sWitFiles $ \ witFile -> do
1411+ wit <- firstExceptT TxCmdScriptWitnessError $ readScriptWitness era witFile
1412+ mPid <- case witFile of
1413+ SimpleScriptWitnessFile {} -> Nothing
1414+ PlutusScriptWitnessFiles {} -> Nothing
1415+ PlutusReferenceScriptWitnessFiles _ _ _ _ _ (ConcretePolicyId pid) -> Just pid
1416+ PlutusReferenceScriptWitnessFiles txIn _ _ _ _ QueryUtxoPolicyId -> do
1417+ utxo <- getUtxo txIn
1418+ undefined
1419+ SimpleReferenceScriptWitnessFiles _ _ (ConcretePolicyId pid) -> Just pid
1420+ SimpleReferenceScriptWitnessFiles txIn _ QueryUtxoPolicyId -> do
1421+ utxo <- getUtxo txIn
1422+ undefined
1423+ let mFilePid = scriptWitnessPolicyId wit
1424+ -- todo read pid from a file here
1425+ pure $ UpdatedReferenceScriptWitness (mPid <|> mFilePid) wit
1426+
1427+ getpid = undefined :: ScriptWitness WitCtxMint era -> PolicyId
1428+
1429+ setpid = undefined :: PolicyId -> ScriptWitness WitCtxMint era -> ScriptWitness WitCtxMint era
1430+
1431+ foo = Proxy @ SimpleScriptWitness
14041432
14051433-- ----------------------------------------------------------------------------
14061434-- Transaction signing
0 commit comments