Skip to content

Commit fd1a1e4

Browse files
committed
Add AlonzoExtraConfig to AlonzoGenesis
1 parent c9cd2e7 commit fd1a1e4

File tree

8 files changed

+81
-30
lines changed

8 files changed

+81
-30
lines changed

eras/alonzo/impl/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## 1.15.0.0
44

5+
* Updated `AlonzoGenesis` with `extraConfig` field
6+
* Added `AlonzoExtraConfig` and its instances
57
* Remove deprecated functions `nullRedeemers`, `lookupRedeemers`, `nullDats`
68
* Remove deprecated type `AlonzoTxWits'` and its accessor functions:
79
- `txwitsVKey'`
@@ -38,6 +40,7 @@
3840

3941
### `testlib`
4042

43+
* Added `Arbitrary` instance for `AlonzoExtraConfig`
4144
* Rename `plutus_script` -> `plutus_v1_script` in CDDL
4245
* Add `plutus_v1_script` to CDDL exports
4346
* Add `auxiliary_data_map` to CDDL for simplification

eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Genesis.hs

Lines changed: 56 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
{-# LANGUAGE FlexibleContexts #-}
44
{-# LANGUAGE FlexibleInstances #-}
55
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
6+
{-# LANGUAGE LambdaCase #-}
67
{-# LANGUAGE NamedFieldPuns #-}
78
{-# LANGUAGE OverloadedStrings #-}
89
{-# LANGUAGE PatternSynonyms #-}
@@ -17,6 +18,7 @@ module Cardano.Ledger.Alonzo.Genesis (
1718
AlonzoGenesis (
1819
AlonzoGenesisWrapper,
1920
unAlonzoGenesisWrapper,
21+
extraConfig,
2022
AlonzoGenesis,
2123
agCoinsPerUTxOWord,
2224
agCostModels,
@@ -25,12 +27,17 @@ module Cardano.Ledger.Alonzo.Genesis (
2527
agMaxBlockExUnits,
2628
agMaxValSize,
2729
agCollateralPercentage,
28-
agMaxCollateralInputs
30+
agMaxCollateralInputs,
31+
agExtraConfig
2932
),
33+
AlonzoExtraConfig (..),
3034
) where
3135

3236
import Cardano.Ledger.Alonzo.Era (AlonzoEra)
33-
import Cardano.Ledger.Alonzo.PParams (CoinPerWord, UpgradeAlonzoPParams (..))
37+
import Cardano.Ledger.Alonzo.PParams (
38+
CoinPerWord,
39+
UpgradeAlonzoPParams (..),
40+
)
3441
import Cardano.Ledger.Alonzo.Scripts (CostModels, ExUnits (..), Prices (..))
3542
import Cardano.Ledger.BaseTypes (KeyValuePairs (..), ToKeyValuePairs (..))
3643
import Cardano.Ledger.Binary (
@@ -51,21 +58,40 @@ import Cardano.Ledger.Core
5158
import Cardano.Ledger.Genesis (EraGenesis (..))
5259
import Cardano.Ledger.Plutus.CostModels (parseCostModels)
5360
import Control.DeepSeq (NFData)
54-
import Data.Aeson (FromJSON (..), ToJSON (..), (.:), (.=))
61+
import Data.Aeson (FromJSON (..), ToJSON (..), (.:), (.:?), (.=))
5562
import qualified Data.Aeson as Aeson
5663
import Data.Functor.Identity (Identity)
5764
import GHC.Generics (Generic)
5865
import NoThunks.Class (NoThunks)
5966
import Numeric.Natural (Natural)
6067

6168
-- | All configuration that is necessary to bootstrap AlonzoEra from ShelleyGenesis
62-
newtype AlonzoGenesis = AlonzoGenesisWrapper
69+
data AlonzoGenesis = AlonzoGenesisWrapper
6370
{ unAlonzoGenesisWrapper :: UpgradeAlonzoPParams Identity
71+
, extraConfig :: AlonzoExtraConfig
6472
}
65-
deriving stock (Eq, Generic)
66-
deriving newtype (Show, NoThunks, NFData)
73+
deriving stock (Eq, Show, Generic)
6774
deriving (ToJSON) via KeyValuePairs AlonzoGenesis
6875

76+
instance NoThunks AlonzoGenesis
77+
78+
instance NFData AlonzoGenesis
79+
80+
newtype AlonzoExtraConfig = AlonzoExtraConfig
81+
{ aecCostModels :: Maybe CostModels
82+
}
83+
deriving (Eq)
84+
deriving newtype (EncCBOR, DecCBOR, NFData, NoThunks, Show)
85+
86+
instance FromJSON AlonzoExtraConfig where
87+
parseJSON = Aeson.withObject "Extra Config" $ \o ->
88+
o .:? "costModels" >>= \case
89+
Nothing -> pure $ AlonzoExtraConfig Nothing
90+
Just val -> AlonzoExtraConfig . Just <$> parseCostModels True [] val
91+
92+
instance ToJSON AlonzoExtraConfig where
93+
toJSON (AlonzoExtraConfig cms) = Aeson.object ["costModels" .= cms]
94+
6995
pattern AlonzoGenesis ::
7096
CoinPerWord ->
7197
CostModels ->
@@ -75,6 +101,7 @@ pattern AlonzoGenesis ::
75101
Natural ->
76102
Natural ->
77103
Natural ->
104+
AlonzoExtraConfig ->
78105
AlonzoGenesis
79106
pattern AlonzoGenesis
80107
{ agCoinsPerUTxOWord
@@ -85,8 +112,10 @@ pattern AlonzoGenesis
85112
, agMaxValSize
86113
, agCollateralPercentage
87114
, agMaxCollateralInputs
115+
, agExtraConfig
88116
} <-
89-
( unAlonzoGenesisWrapper ->
117+
AlonzoGenesisWrapper
118+
{ unAlonzoGenesisWrapper =
90119
UpgradeAlonzoPParams
91120
{ uappCoinsPerUTxOWord = agCoinsPerUTxOWord
92121
, uappCostModels = agCostModels
@@ -97,7 +126,8 @@ pattern AlonzoGenesis
97126
, uappCollateralPercentage = agCollateralPercentage
98127
, uappMaxCollateralInputs = agMaxCollateralInputs
99128
}
100-
)
129+
, extraConfig = agExtraConfig
130+
}
101131
where
102132
AlonzoGenesis
103133
coinsPerUTxOWord_
@@ -107,18 +137,21 @@ pattern AlonzoGenesis
107137
maxBlockExUnits_
108138
maxValSize_
109139
collateralPercentage_
110-
maxCollateralInputs_ =
111-
AlonzoGenesisWrapper $
112-
UpgradeAlonzoPParams
113-
{ uappCoinsPerUTxOWord = coinsPerUTxOWord_
114-
, uappCostModels = costModels_
115-
, uappPrices = prices_
116-
, uappMaxTxExUnits = maxTxExUnits_
117-
, uappMaxBlockExUnits = maxBlockExUnits_
118-
, uappMaxValSize = maxValSize_
119-
, uappCollateralPercentage = collateralPercentage_
120-
, uappMaxCollateralInputs = maxCollateralInputs_
121-
}
140+
maxCollateralInputs_
141+
extraConfig_ =
142+
AlonzoGenesisWrapper
143+
( UpgradeAlonzoPParams
144+
{ uappCoinsPerUTxOWord = coinsPerUTxOWord_
145+
, uappCostModels = costModels_
146+
, uappPrices = prices_
147+
, uappMaxTxExUnits = maxTxExUnits_
148+
, uappMaxBlockExUnits = maxBlockExUnits_
149+
, uappMaxValSize = maxValSize_
150+
, uappCollateralPercentage = collateralPercentage_
151+
, uappMaxCollateralInputs = maxCollateralInputs_
152+
}
153+
)
154+
extraConfig_
122155

123156
{-# COMPLETE AlonzoGenesis #-}
124157

@@ -143,6 +176,7 @@ instance FromCBOR AlonzoGenesis where
143176
<! From
144177
<! From
145178
<! From
179+
<! From
146180

147181
instance ToCBOR AlonzoGenesis where
148182
toCBOR
@@ -178,6 +212,7 @@ instance FromJSON AlonzoGenesis where
178212
agMaxValSize <- o .: "maxValueSize"
179213
agCollateralPercentage <- o .: "collateralPercentage"
180214
agMaxCollateralInputs <- o .: "maxCollateralInputs"
215+
agExtraConfig <- o .: "extraConfig"
181216
return AlonzoGenesis {..}
182217

183218
instance ToKeyValuePairs AlonzoGenesis where
@@ -190,4 +225,5 @@ instance ToKeyValuePairs AlonzoGenesis where
190225
, "maxValueSize" .= agMaxValSize ag
191226
, "collateralPercentage" .= agCollateralPercentage ag
192227
, "maxCollateralInputs" .= agMaxCollateralInputs ag
228+
, "extraConfig" .= agExtraConfig ag
193229
]

eras/alonzo/impl/src/Cardano/Ledger/Alonzo/PParams.hs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
{-# LANGUAGE GADTs #-}
99
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1010
{-# LANGUAGE InstanceSigs #-}
11+
{-# LANGUAGE LambdaCase #-}
1112
{-# LANGUAGE MultiParamTypeClasses #-}
1213
{-# LANGUAGE NamedFieldPuns #-}
1314
{-# LANGUAGE OverloadedStrings #-}
@@ -106,10 +107,7 @@ import Cardano.Ledger.Plutus.Language (Language (..))
106107
import Cardano.Ledger.Plutus.ToPlutusData (ToPlutusData (..))
107108
import Cardano.Ledger.Shelley.PParams
108109
import Control.DeepSeq (NFData)
109-
import Data.Aeson as Aeson (
110-
FromJSON,
111-
ToJSON (..),
112-
)
110+
import Data.Aeson (FromJSON (..), ToJSON (..))
113111
import Data.ByteString (ByteString)
114112
import qualified Data.ByteString as BS
115113
import Data.Coerce (coerce)
@@ -422,7 +420,15 @@ data UpgradeAlonzoPParams f = UpgradeAlonzoPParams
422420

423421
emptyAlonzoUpgradePParamsUpdate :: UpgradeAlonzoPParams StrictMaybe
424422
emptyAlonzoUpgradePParamsUpdate =
425-
UpgradeAlonzoPParams SNothing SNothing SNothing SNothing SNothing SNothing SNothing SNothing
423+
UpgradeAlonzoPParams
424+
SNothing
425+
SNothing
426+
SNothing
427+
SNothing
428+
SNothing
429+
SNothing
430+
SNothing
431+
SNothing
426432

427433
deriving instance Eq (UpgradeAlonzoPParams Identity)
428434

eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Translation.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ instance TranslateEra AlonzoEra NewEpochState where
6262
}
6363

6464
instance TranslateEra AlonzoEra PParams where
65-
translateEra (AlonzoGenesisWrapper upgradeArgs) = pure . upgradePParams upgradeArgs
65+
translateEra (AlonzoGenesisWrapper upgradeArgs _) = pure . upgradePParams upgradeArgs
6666

6767
instance TranslateEra AlonzoEra FuturePParams where
6868
translateEra ctxt = \case

eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Arbitrary.hs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ module Test.Cardano.Ledger.Alonzo.Arbitrary (
3535
import Cardano.Ledger.Alonzo (AlonzoEra, Tx (..))
3636
import Cardano.Ledger.Alonzo.BlockBody (AlonzoBlockBody (AlonzoBlockBody))
3737
import Cardano.Ledger.Alonzo.Core
38-
import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..))
38+
import Cardano.Ledger.Alonzo.Genesis (AlonzoExtraConfig (..), AlonzoGenesis (..))
3939
import Cardano.Ledger.Alonzo.PParams (
4040
AlonzoPParams (AlonzoPParams),
4141
LangDepView (..),
@@ -432,6 +432,7 @@ instance Arbitrary AlonzoGenesis where
432432
<*> arbitrary
433433
<*> arbitrary
434434
<*> arbitrary
435+
<*> arbitrary
435436

436437
alwaysSucceeds ::
437438
forall l era.
@@ -480,3 +481,5 @@ instance
480481

481482
instance Arbitrary LangDepView where
482483
arbitrary = LangDepView <$> arbitrary <*> arbitrary
484+
485+
deriving instance Arbitrary AlonzoExtraConfig

eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Examples.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ module Test.Cardano.Ledger.Alonzo.Examples (
1515

1616
import Cardano.Ledger.Alonzo (AlonzoEra)
1717
import Cardano.Ledger.Alonzo.Core
18-
import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..))
18+
import Cardano.Ledger.Alonzo.Genesis (AlonzoExtraConfig (..), AlonzoGenesis (..))
1919
import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusTxInfo)
2020
import Cardano.Ledger.Alonzo.Scripts (
2121
AlonzoPlutusPurpose (..),
@@ -218,4 +218,5 @@ exampleAlonzoGenesis =
218218
, agMaxValSize = 1234
219219
, agCollateralPercentage = 20
220220
, agMaxCollateralInputs = 30
221+
, agExtraConfig = AlonzoExtraConfig Nothing
221222
}

eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/ImpTest.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ module Test.Cardano.Ledger.Alonzo.ImpTest (
4747
import Cardano.Ledger.Address (Addr (..))
4848
import Cardano.Ledger.Alonzo (AlonzoEra)
4949
import Cardano.Ledger.Alonzo.Core
50-
import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..))
50+
import Cardano.Ledger.Alonzo.Genesis (AlonzoExtraConfig (..), AlonzoGenesis (..))
5151
import Cardano.Ledger.Alonzo.Plutus.Context (ContextError)
5252
import Cardano.Ledger.Alonzo.Plutus.Evaluate (
5353
collectPlutusScriptsWithContext,
@@ -432,6 +432,7 @@ instance ShelleyEraImp AlonzoEra where
432432
, agMaxValSize = 5000
433433
, agCollateralPercentage = 150
434434
, agMaxCollateralInputs = 3
435+
, agExtraConfig = AlonzoExtraConfig Nothing
435436
}
436437

437438
impSatisfyNativeScript = impAllegraSatisfyNativeScript

eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Golden.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module Test.Cardano.Ledger.Alonzo.Golden (
99

1010
import Cardano.Ledger.Alonzo (AlonzoEra)
1111
import Cardano.Ledger.Alonzo.Core
12-
import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..))
12+
import Cardano.Ledger.Alonzo.Genesis (AlonzoExtraConfig (..), AlonzoGenesis (..))
1313
import Cardano.Ledger.Alonzo.PParams (
1414
LangDepView (..),
1515
getLanguageView,
@@ -373,6 +373,7 @@ expectedGenesis =
373373
, agMaxValSize = 5000
374374
, agCollateralPercentage = 150
375375
, agMaxCollateralInputs = 3
376+
, agExtraConfig = AlonzoExtraConfig Nothing
376377
}
377378

378379
expectedCostModels :: CostModels

0 commit comments

Comments
 (0)