Skip to content

Commit 68d4856

Browse files
committed
adding more whitelists
1 parent 33f2272 commit 68d4856

File tree

12 files changed

+227
-162
lines changed

12 files changed

+227
-162
lines changed

cardano-chain-gen/test/Test/Cardano/Db/Mock/Config.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,6 @@ mkSyncNodeParams staticDir mutableDir CommandLineArgs {..} = do
269269
, enpHasMultiAssets = claHasMultiAssets
270270
, enpHasMetadata = claHasMetadata
271271
, enpWhitelistMetadataNames = []
272-
, enpWhitelistMAPolicies = []
273272
, enpHasPlutusExtra = True
274273
, enpHasGov = True
275274
, enpHasOffChainPoolData = True

cardano-db-sync/app/cardano-db-sync.hs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ pRunDbSyncNode =
8989
<*> pHasMultiAssets
9090
<*> pHasMetadata
9191
<*> pWhiteListTxMetadata
92-
<*> pWhiteListMAPolicies
9392
<*> pHasPlutusExtra
9493
<*> pHasGov
9594
<*> pHasOffChainPoolData
@@ -240,14 +239,6 @@ pWhiteListTxMetadata =
240239
<> Opt.help "Insert a specific set of tx metadata, based on the tx metadata key names"
241240
)
242241

243-
pWhiteListMAPolicies :: Parser [Word64]
244-
pWhiteListMAPolicies =
245-
Opt.option
246-
(parseCommaSeparated <$> Opt.str)
247-
( Opt.long "whitelist-multi-asset-policy"
248-
<> Opt.help "Only insert a specific sellected list of multi-assets, based on the multi-asset's policy name"
249-
)
250-
251242
parseCommaSeparated :: String -> [Word64]
252243
parseCommaSeparated str =
253244
case traverse readMaybe (splitOn "," str) of

cardano-db-sync/src/Cardano/DbSync.hs

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import Cardano.DbSync.Config.Types (
3939
SocketPath (..),
4040
SyncCommand (..),
4141
SyncNodeConfig (..),
42-
SyncNodeParams (..),
42+
SyncNodeParams (..), MultiAssetConfig (..), MetadataConfig (..), PlutusConfig (..),
4343
)
4444
import Cardano.DbSync.Database
4545
import Cardano.DbSync.DbAction
@@ -56,7 +56,6 @@ import Cardano.Prelude hiding (Nat, (%))
5656
import Cardano.Slotting.Slot (EpochNo (..))
5757
import Control.Concurrent.Async
5858
import Control.Monad.Extra (whenJust)
59-
import qualified Data.Strict.Maybe as Strict
6059
import qualified Data.Text as Text
6160
import Data.Version (showVersion)
6261
import Database.Persist.Postgresql (ConnectionString, withPostgresqlConn)
@@ -233,14 +232,6 @@ extractSyncOptions snp aop =
233232
, snapshotEveryLagging = enpSnEveryLagging snp
234233
}
235234
where
236-
maybeWhitelistMDNames = whitelistToMaybe (enpWhitelistMetadataNames snp)
237-
maybeWhitelistMAPolicies = whitelistToMaybe (enpWhitelistMAPolicies snp)
238-
239-
whitelistToMaybe wList =
240-
if null wList
241-
then Strict.Nothing
242-
else Strict.Just wList
243-
244235
iopts
245236
| enpOnlyGov snp = onlyGovInsertOptions useLedger
246237
| enpOnlyUTxO snp = onlyUTxOInsertOptions
@@ -252,11 +243,10 @@ extractSyncOptions snp aop =
252243
, ioUseLedger = useLedger
253244
, ioShelley = enpHasShelley snp
254245
, ioRewards = True
255-
, ioMultiAssets = enpHasMultiAssets snp
256-
, ioMetadata = enpHasMetadata snp
257-
, ioWhitelistMetadataNames = maybeWhitelistMDNames
258-
, ioWhitelistMAPolicies = maybeWhitelistMAPolicies
259-
, ioPlutusExtra = enpHasPlutusExtra snp
246+
-- TODO: cmdv: this is where we plug configs
247+
, ioMultiAssets = MultiAssetDisable
248+
, ioMetadata = MetadataDisable
249+
, ioPlutusExtra = PlutusDisable
260250
, ioOffChainPoolData = enpHasOffChainPoolData snp
261251
, ioGov = enpHasGov snp
262252
}

cardano-db-sync/src/Cardano/DbSync/Api.hs

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -206,11 +206,9 @@ fullInsertOptions useLedger =
206206
, ioUseLedger = useLedger
207207
, ioShelley = True
208208
, ioRewards = True
209-
, ioMultiAssets = True
210-
, ioMetadata = True
211-
, ioWhitelistMetadataNames = Strict.Nothing
212-
, ioWhitelistMAPolicies = Strict.Nothing
213-
, ioPlutusExtra = True
209+
, ioMultiAssets = MultiAssetEnable
210+
, ioMetadata = MetadataEnable
211+
, ioPlutusExtra = PlutusEnable
214212
, ioOffChainPoolData = True
215213
, ioGov = True
216214
}
@@ -222,11 +220,9 @@ onlyUTxOInsertOptions =
222220
, ioUseLedger = False
223221
, ioShelley = False
224222
, ioRewards = False
225-
, ioMultiAssets = True
226-
, ioMetadata = False
227-
, ioWhitelistMetadataNames = Strict.Nothing
228-
, ioWhitelistMAPolicies = Strict.Nothing
229-
, ioPlutusExtra = False
223+
, ioMultiAssets = MultiAssetEnable
224+
, ioMetadata = MetadataDisable
225+
, ioPlutusExtra = PlutusDisable
230226
, ioOffChainPoolData = False
231227
, ioGov = False
232228
}
@@ -241,11 +237,9 @@ disableAllInsertOptions useLedger =
241237
, ioUseLedger = useLedger
242238
, ioShelley = False
243239
, ioRewards = False
244-
, ioMultiAssets = False
245-
, ioMetadata = False
246-
, ioWhitelistMetadataNames = Strict.Nothing
247-
, ioWhitelistMAPolicies = Strict.Nothing
248-
, ioPlutusExtra = False
240+
, ioMultiAssets = MultiAssetEnable
241+
, ioMetadata = MetadataDisable
242+
, ioPlutusExtra = PlutusDisable
249243
, ioOffChainPoolData = False
250244
, ioGov = False
251245
}

cardano-db-sync/src/Cardano/DbSync/Api/Ledger.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ storePage ::
142142
ExceptT SyncNodeError (ReaderT SqlBackend m) ()
143143
storePage syncEnv cache percQuantum (n, ls) = do
144144
when (n `mod` 10 == 0) $ liftIO $ logInfo trce $ "Bootstrap in progress " <> prc <> "%"
145-
txOuts <- mapM (prepareTxOut syncEnv cache) ls
145+
txOuts <- mapMaybeM (prepareTxOut syncEnv cache) ls
146146
txOutIds <- lift . DB.insertManyTxOutPlex True False $ etoTxOut . fst <$> txOuts
147147
let maTxOuts = concatMap mkmaTxOuts $ zip txOutIds (snd <$> txOuts)
148148
void . lift $ DB.insertManyMaTxOut maTxOuts
@@ -162,7 +162,7 @@ prepareTxOut ::
162162
SyncEnv ->
163163
TxCache ->
164164
(TxIn StandardCrypto, BabbageTxOut era) ->
165-
ExceptT SyncNodeError (ReaderT SqlBackend m) (ExtendedTxOut, [MissingMaTxOut])
165+
ExceptT SyncNodeError (ReaderT SqlBackend m) (Maybe (ExtendedTxOut, [MissingMaTxOut]))
166166
prepareTxOut syncEnv txCache (TxIn txHash (TxIx index), txOut) = do
167167
let txHashByteString = Generic.safeHashToByteString $ unTxId txHash
168168
let genTxOut = fromTxOut index txOut

cardano-db-sync/src/Cardano/DbSync/Api/Types.hs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ module Cardano.DbSync.Api.Types (
1515

1616
import qualified Cardano.Db as DB
1717
import Cardano.DbSync.Cache.Types (Cache)
18+
import Cardano.DbSync.Config.Types (MetadataConfig, MultiAssetConfig, PlutusConfig)
1819
import Cardano.DbSync.Ledger.Types (HasLedgerEnv)
1920
import Cardano.DbSync.LocalStateQuery (NoLedgerEnv)
2021
import Cardano.DbSync.Types (
@@ -23,7 +24,7 @@ import Cardano.DbSync.Types (
2324
OffChainVoteResult,
2425
OffChainVoteWorkQueue,
2526
)
26-
import Cardano.Prelude (Bool, Eq, IO, Show, Word64)
27+
import Cardano.Prelude (Bool (..), Eq, IO, Show, Word64)
2728
import Cardano.Slotting.Slot (EpochNo (..))
2829
import Control.Concurrent.Class.MonadSTM.Strict (
2930
StrictTVar,
@@ -76,11 +77,9 @@ data InsertOptions = InsertOptions
7677
, ioUseLedger :: !Bool
7778
, ioShelley :: !Bool
7879
, ioRewards :: !Bool
79-
, ioMultiAssets :: !Bool
80-
, ioMetadata :: !Bool
81-
, ioWhitelistMetadataNames :: Strict.Maybe [Word64]
82-
, ioWhitelistMAPolicies :: Strict.Maybe [Word64]
83-
, ioPlutusExtra :: !Bool
80+
, ioMultiAssets :: !MultiAssetConfig
81+
, ioMetadata :: !MetadataConfig
82+
, ioPlutusExtra :: !PlutusConfig
8483
, ioOffChainPoolData :: !Bool
8584
, ioGov :: !Bool
8685
}

cardano-db-sync/src/Cardano/DbSync/Config/Types.hs

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{-# LANGUAGE DerivingStrategies #-}
33
{-# LANGUAGE FlexibleInstances #-}
44
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
5+
{-# LANGUAGE LambdaCase #-}
56
{-# LANGUAGE OverloadedStrings #-}
67
{-# LANGUAGE ScopedTypeVariables #-}
78
{-# LANGUAGE NoImplicitPrelude #-}
@@ -18,11 +19,17 @@ module Cardano.DbSync.Config.Types (
1819
GenesisHashConway (..),
1920
SyncNodeConfig (..),
2021
SyncPreConfig (..),
22+
MetadataConfig (..),
23+
MultiAssetConfig (..),
24+
PlutusConfig (..),
2125
LedgerStateDir (..),
2226
LogFileDir (..),
2327
NetworkName (..),
2428
NodeConfigFile (..),
2529
SocketPath (..),
30+
isMetaDataConfigEnabled,
31+
isMultiAssetConfigEnabled,
32+
isPlutusConfigEnabled,
2633
adjustGenesisFilePath,
2734
adjustNodeConfigFilePath,
2835
pcNodeConfigFilePath,
@@ -73,7 +80,6 @@ data SyncNodeParams = SyncNodeParams
7380
, enpHasMultiAssets :: !Bool
7481
, enpHasMetadata :: !Bool
7582
, enpWhitelistMetadataNames :: ![Word64]
76-
, enpWhitelistMAPolicies :: ![Word64]
7783
, enpHasPlutusExtra :: !Bool
7884
, enpHasGov :: !Bool
7985
, enpHasOffChainPoolData :: !Bool
@@ -132,6 +138,42 @@ data SyncPreConfig = SyncPreConfig
132138
, pcPrometheusPort :: !Int
133139
}
134140

141+
data MetadataConfig
142+
= MetadataEnable
143+
| MetadataDisable
144+
| MetadataWhitelistKeys (NonEmpty ByteString)
145+
deriving (Eq, Show)
146+
147+
isMetaDataConfigEnabled :: MetadataConfig -> Bool
148+
isMetaDataConfigEnabled = \case
149+
MetadataEnable -> True
150+
MetadataDisable -> False
151+
MetadataWhitelistKeys _ -> True
152+
153+
data MultiAssetConfig
154+
= MultiAssetEnable
155+
| MultiAssetDisable
156+
| MultiAssetWhitelistPolicies (NonEmpty ByteString)
157+
deriving (Eq, Show)
158+
159+
isMultiAssetConfigEnabled :: MultiAssetConfig -> Bool
160+
isMultiAssetConfigEnabled = \case
161+
MultiAssetEnable -> True
162+
MultiAssetDisable -> False
163+
MultiAssetWhitelistPolicies _ -> True
164+
165+
data PlutusConfig
166+
= PlutusEnable
167+
| PlutusDisable
168+
| PlutusWhitelistScripts (NonEmpty ByteString)
169+
deriving (Eq, Show)
170+
171+
isPlutusConfigEnabled :: PlutusConfig -> Bool
172+
isPlutusConfigEnabled = \case
173+
PlutusEnable -> True
174+
PlutusDisable -> False
175+
PlutusWhitelistScripts _ -> True
176+
135177
newtype GenesisFile = GenesisFile
136178
{ unGenesisFile :: FilePath
137179
}

cardano-db-sync/src/Cardano/DbSync/Era/Shelley/Generic/Block.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ module Cardano.DbSync.Era.Shelley.Generic.Block (
2525

2626
import qualified Cardano.Crypto.Hash as Crypto
2727
import qualified Cardano.Crypto.KES.Class as KES
28+
import Cardano.DbSync.Config.Types (PlutusConfig)
2829
import Cardano.DbSync.Era.Shelley.Generic.Tx
2930
import Cardano.DbSync.Types
3031
import Cardano.DbSync.Util.Bech32 (serialiseVerKeyVrfToBech32)
@@ -120,7 +121,7 @@ fromMaryBlock blk =
120121
, blkTxs = map fromMaryTx (getTxs blk)
121122
}
122123

123-
fromAlonzoBlock :: Bool -> Maybe Prices -> ShelleyBlock TPraosStandard StandardAlonzo -> Block
124+
fromAlonzoBlock :: PlutusConfig -> Maybe Prices -> ShelleyBlock TPraosStandard StandardAlonzo -> Block
124125
fromAlonzoBlock iope mprices blk =
125126
Block
126127
{ blkEra = Alonzo
@@ -137,7 +138,7 @@ fromAlonzoBlock iope mprices blk =
137138
, blkTxs = map (fromAlonzoTx iope mprices) (getTxs blk)
138139
}
139140

140-
fromBabbageBlock :: Bool -> Maybe Prices -> ShelleyBlock PraosStandard StandardBabbage -> Block
141+
fromBabbageBlock :: PlutusConfig -> Maybe Prices -> ShelleyBlock PraosStandard StandardBabbage -> Block
141142
fromBabbageBlock iope mprices blk =
142143
Block
143144
{ blkEra = Babbage
@@ -154,7 +155,7 @@ fromBabbageBlock iope mprices blk =
154155
, blkTxs = map (fromBabbageTx iope mprices) (getTxs blk)
155156
}
156157

157-
fromConwayBlock :: Bool -> Maybe Prices -> ShelleyBlock PraosStandard StandardConway -> Block
158+
fromConwayBlock :: PlutusConfig -> Maybe Prices -> ShelleyBlock PraosStandard StandardConway -> Block
158159
fromConwayBlock iope mprices blk =
159160
Block
160161
{ blkEra = Conway

cardano-db-sync/src/Cardano/DbSync/Era/Shelley/Generic/Tx/Alonzo.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ module Cardano.DbSync.Era.Shelley.Generic.Tx.Alonzo (
2626

2727
import qualified Cardano.Crypto.Hash as Crypto
2828
import Cardano.Db (ScriptType (..))
29+
import Cardano.DbSync.Config.Types (PlutusConfig, isPlutusConfigEnabled)
2930
import Cardano.DbSync.Era.Shelley.Generic.Metadata
3031
import Cardano.DbSync.Era.Shelley.Generic.Script (fromTimelock)
3132
import Cardano.DbSync.Era.Shelley.Generic.ScriptData (ScriptData (..))
@@ -65,7 +66,7 @@ import qualified Data.Set as Set
6566
import Lens.Micro
6667
import Ouroboros.Consensus.Cardano.Block (EraCrypto, StandardAlonzo, StandardCrypto)
6768

68-
fromAlonzoTx :: Bool -> Maybe Alonzo.Prices -> (Word64, Core.Tx StandardAlonzo) -> Tx
69+
fromAlonzoTx :: PlutusConfig -> Maybe Alonzo.Prices -> (Word64, Core.Tx StandardAlonzo) -> Tx
6970
fromAlonzoTx ioExtraPlutus mprices (blkIndex, tx) =
7071
Tx
7172
{ txHash = txHashId tx
@@ -178,13 +179,13 @@ resolveRedeemers ::
178179
, Core.EraTx era
179180
, Alonzo.MaryEraTxBody era
180181
) =>
181-
Bool ->
182+
PlutusConfig ->
182183
Maybe Alonzo.Prices ->
183184
Core.Tx era ->
184185
(TxCert era -> Cert) ->
185186
(RedeemerMaps, [(Word64, TxRedeemer)])
186187
resolveRedeemers ioExtraPlutus mprices tx toCert =
187-
if not ioExtraPlutus
188+
if not $ isPlutusConfigEnabled ioExtraPlutus
188189
then (initRedeemersMaps, [])
189190
else
190191
mkRdmrAndUpdateRec (initRedeemersMaps, []) $

cardano-db-sync/src/Cardano/DbSync/Era/Shelley/Generic/Tx/Babbage.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module Cardano.DbSync.Era.Shelley.Generic.Tx.Babbage (
1313
fromTxOut,
1414
) where
1515

16+
import Cardano.DbSync.Config.Types (PlutusConfig)
1617
import Cardano.DbSync.Era.Shelley.Generic.Metadata
1718
import Cardano.DbSync.Era.Shelley.Generic.Tx.Allegra (getInterval)
1819
import Cardano.DbSync.Era.Shelley.Generic.Tx.Alonzo
@@ -36,7 +37,7 @@ import qualified Data.Map.Strict as Map
3637
import Lens.Micro
3738
import Ouroboros.Consensus.Shelley.Eras (StandardBabbage, StandardCrypto)
3839

39-
fromBabbageTx :: Bool -> Maybe Alonzo.Prices -> (Word64, Core.Tx StandardBabbage) -> Tx
40+
fromBabbageTx :: PlutusConfig -> Maybe Alonzo.Prices -> (Word64, Core.Tx StandardBabbage) -> Tx
4041
fromBabbageTx ioExtraPlutus mprices (blkIndex, tx) =
4142
Tx
4243
{ txHash = txHashId tx

cardano-db-sync/src/Cardano/DbSync/Era/Shelley/Generic/Tx/Conway.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module Cardano.DbSync.Era.Shelley.Generic.Tx.Conway (
88
fromConwayTx,
99
) where
1010

11+
import Cardano.DbSync.Config.Types (PlutusConfig)
1112
import Cardano.DbSync.Era.Shelley.Generic.Metadata
1213
import Cardano.DbSync.Era.Shelley.Generic.Tx.Allegra (getInterval)
1314
import Cardano.DbSync.Era.Shelley.Generic.Tx.Alonzo
@@ -26,7 +27,7 @@ import qualified Data.Map.Strict as Map
2627
import Lens.Micro
2728
import Ouroboros.Consensus.Cardano.Block (StandardConway)
2829

29-
fromConwayTx :: Bool -> Maybe Alonzo.Prices -> (Word64, Core.Tx StandardConway) -> Tx
30+
fromConwayTx :: PlutusConfig -> Maybe Alonzo.Prices -> (Word64, Core.Tx StandardConway) -> Tx
3031
fromConwayTx ioExtraPlutus mprices (blkIndex, tx) =
3132
Tx
3233
{ txHash = txHashId tx

0 commit comments

Comments
 (0)