3
3
{-# LANGUAGE EmptyCase #-}
4
4
{-# LANGUAGE FlexibleContexts #-}
5
5
{-# LANGUAGE GADTs #-}
6
+ {-# LANGUAGE KindSignatures #-}
6
7
{-# LANGUAGE LambdaCase #-}
7
8
{-# LANGUAGE NamedFieldPuns #-}
8
9
{-# LANGUAGE RankNTypes #-}
@@ -73,6 +74,7 @@ import qualified Data.List as List
73
74
import Data.Map.Strict (Map )
74
75
import qualified Data.Map.Strict as Map
75
76
import Data.Maybe (catMaybes , fromMaybe , mapMaybe , maybeToList )
77
+ import Data.Proxy
76
78
import Data.Set (Set )
77
79
import qualified Data.Set as Set
78
80
import qualified Data.Text as Text
@@ -169,7 +171,7 @@ runTransactionBuildCmd
169
171
txMetadata <-
170
172
firstExceptT TxCmdMetadataError . newExceptT $
171
173
readTxMetadata eon metadataSchema metadataFiles
172
- valuesWithScriptWits <- readValueScriptWitnesses eon $ fromMaybe mempty mValue
174
+ valuesWithScriptWits <- readMintScriptWitnesses eon $ fromMaybe mempty mValue
173
175
scripts <-
174
176
firstExceptT TxCmdScriptFileError $
175
177
mapM (readFileScriptInAnyLang . unFile) scriptFiles
@@ -205,7 +207,7 @@ runTransactionBuildCmd
205
207
let allReferenceInputs =
206
208
getAllReferenceInputs
207
209
inputsAndMaybeScriptWits
208
- (snd <$> snd valuesWithScriptWits)
210
+ (snd valuesWithScriptWits)
209
211
certsAndMaybeScriptWits
210
212
withdrawalsAndMaybeScriptWits
211
213
votingProceduresAndMaybeScriptWits
@@ -360,7 +362,7 @@ runTransactionBuildEstimateCmd -- TODO change type
360
362
firstExceptT TxCmdMetadataError
361
363
. newExceptT
362
364
$ readTxMetadata sbe metadataSchema metadataFiles
363
- valuesWithScriptWits <- readValueScriptWitnesses sbe $ fromMaybe mempty mValue
365
+ valuesWithScriptWits <- readMintScriptWitnesses sbe $ fromMaybe mempty mValue
364
366
scripts <-
365
367
firstExceptT TxCmdScriptFileError $
366
368
mapM (readFileScriptInAnyLang . unFile) scriptFiles
@@ -594,7 +596,7 @@ runTransactionBuildRawCmd
594
596
firstExceptT TxCmdMetadataError
595
597
. newExceptT
596
598
$ readTxMetadata eon metadataSchema metadataFiles
597
- valuesWithScriptWits <- readValueScriptWitnesses eon $ fromMaybe mempty mValue
599
+ valuesWithScriptWits <- readMintScriptWitnesses eon $ fromMaybe mempty mValue
598
600
scripts <-
599
601
firstExceptT TxCmdScriptFileError $
600
602
mapM (readFileScriptInAnyLang . unFile) scriptFiles
@@ -698,7 +700,7 @@ runTxBuildRaw
698
700
-- ^ Tx upper bound
699
701
-> Lovelace
700
702
-- ^ Tx fee
701
- -> (Value , [( Maybe PolicyId , ScriptWitness WitCtxMint era ) ])
703
+ -> (Value , [UpdatedReferenceScriptWitness era ])
702
704
-- ^ Multi-Asset value(s)
703
705
-> [(Certificate era , Maybe (ScriptWitness WitCtxStake era ))]
704
706
-- ^ Certificate with potential script witness
@@ -784,7 +786,7 @@ constructTxBodyContent
784
786
-- ^ Tx lower bound
785
787
-> TxValidityUpperBound era
786
788
-- ^ Tx upper bound
787
- -> (Value , [( Maybe PolicyId , ScriptWitness WitCtxMint era ) ])
789
+ -> (Value , [UpdatedReferenceScriptWitness era ])
788
790
-- ^ Multi-Asset value(s)
789
791
-> [(Certificate era , Maybe (ScriptWitness WitCtxStake era ))]
790
792
-- ^ Certificate with potential script witness
@@ -831,7 +833,7 @@ constructTxBodyContent
831
833
let allReferenceInputs =
832
834
getAllReferenceInputs
833
835
inputsAndMaybeScriptWits
834
- (snd <$> snd valuesWithScriptWits)
836
+ (snd valuesWithScriptWits)
835
837
certsAndMaybeScriptWits
836
838
withdrawals
837
839
votingProcedures
@@ -924,7 +926,7 @@ runTxBuild
924
926
-- ^ Normal outputs
925
927
-> TxOutChangeAddress
926
928
-- ^ A change output
927
- -> (Value , [( Maybe PolicyId , ScriptWitness WitCtxMint era ) ])
929
+ -> (Value , [UpdatedReferenceScriptWitness era ])
928
930
-- ^ Multi-Asset value(s)
929
931
-> Maybe SlotNo
930
932
-- ^ Tx lower bound
@@ -978,7 +980,7 @@ runTxBuild
978
980
let allReferenceInputs =
979
981
getAllReferenceInputs
980
982
inputsAndMaybeScriptWits
981
- (snd <$> snd valuesWithScriptWits)
983
+ (snd valuesWithScriptWits)
982
984
certsAndMaybeScriptWits
983
985
withdrawals
984
986
votingProcedures
@@ -1145,7 +1147,7 @@ validateTxInsReference sbe allRefIns = do
1145
1147
1146
1148
getAllReferenceInputs
1147
1149
:: [(TxIn , Maybe (ScriptWitness WitCtxTxIn era ))]
1148
- -> [ScriptWitness WitCtxMint era ]
1150
+ -> [UpdatedReferenceScriptWitness era ]
1149
1151
-> [(Certificate era , Maybe (ScriptWitness WitCtxStake era ))]
1150
1152
-> [(StakeAddress , Lovelace , Maybe (ScriptWitness WitCtxStake era ))]
1151
1153
-> [(VotingProcedures era , Maybe (ScriptWitness WitCtxStake era ))]
@@ -1162,7 +1164,7 @@ getAllReferenceInputs
1162
1164
propProceduresAnMaybeScriptWits
1163
1165
readOnlyRefIns = do
1164
1166
let txinsWitByRefInputs = [getReferenceInput sWit | (_, Just sWit) <- txins]
1165
- mintingRefInputs = map getReferenceInput mintWitnesses
1167
+ mintingRefInputs = [ getReferenceInput sWit | UpdatedReferenceScriptWitness _ sWit <- mintWitnesses]
1166
1168
certsWitByRefInputs = [getReferenceInput sWit | (_, Just sWit) <- certFiles]
1167
1169
withdrawalsWitByRefInputs = [getReferenceInput sWit | (_, _, Just sWit) <- withdrawals]
1168
1170
votesWitByRefInputs = [getReferenceInput sWit | (_, Just sWit) <- votingProceduresAndMaybeScriptWits]
@@ -1329,7 +1331,7 @@ toTxAlonzoDatum supp cliDatum =
1329
1331
createTxMintValue
1330
1332
:: forall era
1331
1333
. ShelleyBasedEra era
1332
- -> (Value , [( Maybe PolicyId , ScriptWitness WitCtxMint era ) ])
1334
+ -> (Value , [UpdatedReferenceScriptWitness era ])
1333
1335
-> Either TxCmdError (TxMintValue BuildTx era )
1334
1336
createTxMintValue era (val, scriptWitnesses) =
1335
1337
if List. null (toList val) && List. null scriptWitnesses
@@ -1364,10 +1366,14 @@ createTxMintValue era (val, scriptWitnesses) =
1364
1366
era
1365
1367
where
1366
1368
gatherMintingWitnesses
1367
- :: [( Maybe PolicyId , ScriptWitness WitCtxMint era ) ]
1369
+ :: [UpdatedReferenceScriptWitness era ]
1368
1370
-> [(PolicyId , ScriptWitness WitCtxMint era )]
1369
1371
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
1371
1377
case scriptWitnessPolicyId sWit <|> mPid of
1372
1378
Nothing -> gatherMintingWitnesses rest
1373
1379
Just pid -> (pid, sWit) : gatherMintingWitnesses rest
@@ -1384,23 +1390,45 @@ createTxMintValue era (val, scriptWitnesses) =
1384
1390
where
1385
1391
witnessesExtra = Set. elems (witnessesProvided Set. \\ witnessesNeeded)
1386
1392
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
1398
1402
:: 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
1404
1432
1405
1433
-- ----------------------------------------------------------------------------
1406
1434
-- Transaction signing
0 commit comments