@@ -9,16 +9,22 @@ import Cardano.DbSync.Error (shortBsBase16Encode)
9
9
import qualified Cardano.Ledger.Address as Ledger
10
10
import qualified Cardano.Ledger.Credential as Ledger
11
11
import Cardano.Ledger.Crypto (StandardCrypto )
12
- import Cardano.Ledger.Mary.Value (PolicyID (.. ))
12
+ import Cardano.Ledger.Mary.Value (MultiAsset ( .. ), PolicyID (.. ))
13
13
import Cardano.Prelude (NonEmpty )
14
14
import Data.ByteString (ByteString )
15
15
import Data.ByteString.Short (ShortByteString , toShort )
16
16
import Data.Map (keys )
17
17
18
18
-- check both whitelist but also checking plutus Maybes first
19
- plutusMultiAssetWhitelistCheck :: SyncEnv -> [Generic. TxOut ] -> Bool
20
- plutusMultiAssetWhitelistCheck syncEnv txOuts =
21
- isPlutusScriptHashesInWhitelist syncEnv txOuts || isMAPoliciesInWhitelist syncEnv txOuts
19
+ plutusMultiAssetWhitelistCheck ::
20
+ SyncEnv ->
21
+ -- | TxMint
22
+ MultiAsset StandardCrypto ->
23
+ -- | TxOuts
24
+ [Generic. TxOut ] ->
25
+ Bool
26
+ plutusMultiAssetWhitelistCheck syncEnv txMints txOuts =
27
+ isPlutusScriptHashesInWhitelist syncEnv txOuts || isMAPoliciesInWhitelist syncEnv txMints txOuts
22
28
23
29
isPlutusScriptHashesInWhitelist :: SyncEnv -> [Generic. TxOut ] -> Bool
24
30
isPlutusScriptHashesInWhitelist syncEnv txOuts = do
@@ -45,32 +51,44 @@ isSimplePlutusScriptHashInWhitelist :: SyncEnv -> ByteString -> Bool
45
51
isSimplePlutusScriptHashInWhitelist syncEnv scriptHash = do
46
52
case ioPlutus iopts of
47
53
PlutusEnable -> True
48
- PlutusDisable -> False
54
+ PlutusDisable -> True
49
55
PlutusScripts plutusWhitelist -> toShort scriptHash `elem` plutusWhitelist
50
56
where
51
57
iopts = soptInsertOptions $ envOptions syncEnv
52
58
53
- isMAPoliciesInWhitelist :: SyncEnv -> [Generic. TxOut ] -> Bool
54
- isMAPoliciesInWhitelist syncEnv txOuts = do
59
+ isMAPoliciesInWhitelist ::
60
+ SyncEnv ->
61
+ -- | TxMint
62
+ MultiAsset StandardCrypto ->
63
+ -- | TxOuts
64
+ [Generic. TxOut ] ->
65
+ Bool
66
+ isMAPoliciesInWhitelist syncEnv (MultiAsset mintMap) txOuts = do
55
67
let iopts = soptInsertOptions $ envOptions syncEnv
56
68
case ioMultiAssets iopts of
57
69
MultiAssetEnable -> True
58
- MultiAssetDisable -> False
70
+ MultiAssetDisable -> True
59
71
MultiAssetPolicies multiAssetWhitelist ->
60
- or multiAssetwhitelistCheck
72
+ mintPoliciesCheck || txOutPoliciesCheck
61
73
where
62
- -- txOutMaValue is a Map and we want to check if any of the keys match our whitelist
63
- multiAssetwhitelistCheck :: [Bool ]
64
- multiAssetwhitelistCheck =
65
- ( \ txout ->
66
- any (checkMAValueMap multiAssetWhitelist) (keys $ Generic. txOutMaValue txout)
67
- )
68
- <$> txOuts
74
+ mintPoliciesCheck :: Bool
75
+ mintPoliciesCheck = any (checkMAValueMap multiAssetWhitelist) mintPolicies
76
+
77
+ txOutPoliciesCheck :: Bool
78
+ txOutPoliciesCheck =
79
+ any
80
+ ( \ txout ->
81
+ any (checkMAValueMap multiAssetWhitelist) (keys $ Generic. txOutMaValue txout)
82
+ )
83
+ txOuts
69
84
70
85
checkMAValueMap :: NonEmpty ShortByteString -> PolicyID StandardCrypto -> Bool
71
86
checkMAValueMap maWhitelist policyId =
72
87
toShort (Generic. unScriptHash (policyID policyId)) `elem` maWhitelist
73
88
89
+ mintPolicies :: [PolicyID StandardCrypto ]
90
+ mintPolicies = keys mintMap
91
+
74
92
shelleyStkAddrWhitelistCheckWithAddr ::
75
93
SyncEnv ->
76
94
Ledger. Addr StandardCrypto ->
0 commit comments