|
1 | 1 | {-# LANGUAGE AllowAmbiguousTypes #-} |
2 | 2 | {-# LANGUAGE DataKinds #-} |
| 3 | +{-# LANGUAGE DefaultSignatures #-} |
3 | 4 | {-# LANGUAGE DeriveGeneric #-} |
4 | 5 | {-# LANGUAGE DerivingVia #-} |
5 | 6 | {-# LANGUAGE FlexibleContexts #-} |
|
16 | 17 | {-# LANGUAGE StandaloneDeriving #-} |
17 | 18 | {-# LANGUAGE TypeApplications #-} |
18 | 19 | {-# LANGUAGE TypeFamilies #-} |
| 20 | +{-# LANGUAGE TypeOperators #-} |
19 | 21 | {-# LANGUAGE UndecidableInstances #-} |
20 | 22 | {-# LANGUAGE UndecidableSuperClasses #-} |
21 | 23 | {-# OPTIONS_GHC -Wno-orphans #-} |
@@ -77,7 +79,6 @@ module Cardano.Ledger.Conway.PParams ( |
77 | 79 | DRepGroup (..), |
78 | 80 | PPGroups (..), |
79 | 81 | StakePoolGroup (..), |
80 | | - conwayModifiedPPGroups, |
81 | 82 | pvtHardForkInitiationL, |
82 | 83 | pvtMotionNoConfidenceL, |
83 | 84 | emptyConwayPParams, |
@@ -148,15 +149,24 @@ import Data.Set (Set) |
148 | 149 | import qualified Data.Set as Set |
149 | 150 | import Data.Typeable |
150 | 151 | import Data.Word (Word16, Word32) |
151 | | -import GHC.Generics (Generic, K1 (..)) |
| 152 | +import GHC.Generics (Generic (..), K1 (..), M1 (..), (:*:) (..)) |
152 | 153 | import GHC.Stack (HasCallStack) |
153 | | -import Lens.Micro |
| 154 | +import Lens.Micro (Lens', lens, set, (^.)) |
| 155 | +import qualified Lens.Micro as L |
154 | 156 | import NoThunks.Class (NoThunks (..)) |
155 | 157 | import Numeric.Natural (Natural) |
156 | 158 | import qualified PlutusLedgerApi.Common as P (Data (..)) |
157 | 159 |
|
158 | 160 | class BabbageEraPParams era => ConwayEraPParams era where |
159 | 161 | modifiedPPGroups :: PParamsUpdate era -> Set PPGroups |
| 162 | + default modifiedPPGroups :: |
| 163 | + forall a. |
| 164 | + ( Generic (PParamsHKD StrictMaybe era) |
| 165 | + , CollectModifiedPPGroups (Rep (PParamsHKD StrictMaybe era) a) |
| 166 | + ) => |
| 167 | + PParamsUpdate era -> |
| 168 | + Set PPGroups |
| 169 | + modifiedPPGroups (PParamsUpdate ppu) = collectModifiedPPGroups $ from @_ @a ppu |
160 | 170 | ppuWellFormed :: ProtVer -> PParamsUpdate era -> Bool |
161 | 171 |
|
162 | 172 | hkdPoolVotingThresholdsL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f PoolVotingThresholds) |
@@ -799,7 +809,7 @@ instance EraPParams ConwayEra where |
799 | 809 | hkdMinPoolCostL = lens (unTHKD . cppMinPoolCost) $ \pp x -> pp {cppMinPoolCost = THKD x} |
800 | 810 | ppProtocolVersionL = ppLensHKD . lens cppProtocolVersion (\pp x -> pp {cppProtocolVersion = x}) |
801 | 811 |
|
802 | | - ppDG = to (const minBound) |
| 812 | + ppDG = L.to (const minBound) |
803 | 813 | ppuProtocolVersionL = notSupportedInThisEraL |
804 | 814 | hkdDL = notSupportedInThisEraL |
805 | 815 | hkdExtraEntropyL = notSupportedInThisEraL |
@@ -872,7 +882,6 @@ instance BabbageEraPParams ConwayEra where |
872 | 882 | lens (unTHKD . cppCoinsPerUTxOByte) $ \pp x -> pp {cppCoinsPerUTxOByte = THKD x} |
873 | 883 |
|
874 | 884 | instance ConwayEraPParams ConwayEra where |
875 | | - modifiedPPGroups (PParamsUpdate ppu) = conwayModifiedPPGroups ppu |
876 | 885 | ppuWellFormed pv ppu = |
877 | 886 | and |
878 | 887 | [ -- Numbers |
@@ -1121,73 +1130,30 @@ downgradeConwayPParams ConwayPParams {..} = |
1121 | 1130 | , bppMaxCollateralInputs = asNaturalHKD @f @Word16 (unTHKD cppMaxCollateralInputs) |
1122 | 1131 | } |
1123 | 1132 |
|
1124 | | -conwayModifiedPPGroups :: ConwayPParams StrictMaybe era -> Set PPGroups |
1125 | | -conwayModifiedPPGroups |
1126 | | - ( ConwayPParams |
1127 | | - p01 |
1128 | | - p02 |
1129 | | - p03 |
1130 | | - p04 |
1131 | | - p05 |
1132 | | - p06 |
1133 | | - p07 |
1134 | | - p08 |
1135 | | - p09 |
1136 | | - p10 |
1137 | | - p11 |
1138 | | - p12 |
1139 | | - _protocolVersion |
1140 | | - p14 |
1141 | | - p15 |
1142 | | - p16 |
1143 | | - p17 |
1144 | | - p18 |
1145 | | - p19 |
1146 | | - p20 |
1147 | | - p21 |
1148 | | - p22 |
1149 | | - p23 |
1150 | | - p24 |
1151 | | - p25 |
1152 | | - p26 |
1153 | | - p27 |
1154 | | - p28 |
1155 | | - p29 |
1156 | | - p30 |
1157 | | - p31 |
1158 | | - ) = |
1159 | | - mconcat |
1160 | | - [ ppGroup p01 |
1161 | | - , ppGroup p02 |
1162 | | - , ppGroup p03 |
1163 | | - , ppGroup p04 |
1164 | | - , ppGroup p05 |
1165 | | - , ppGroup p06 |
1166 | | - , ppGroup p07 |
1167 | | - , ppGroup p08 |
1168 | | - , ppGroup p09 |
1169 | | - , ppGroup p10 |
1170 | | - , ppGroup p11 |
1171 | | - , ppGroup p12 |
1172 | | - , ppGroup p14 |
1173 | | - , ppGroup p15 |
1174 | | - , ppGroup p16 |
1175 | | - , ppGroup p17 |
1176 | | - , ppGroup p18 |
1177 | | - , ppGroup p19 |
1178 | | - , ppGroup p20 |
1179 | | - , ppGroup p21 |
1180 | | - , ppGroup p22 |
1181 | | - , ppGroup p23 |
1182 | | - , ppGroup p24 |
1183 | | - , ppGroup p25 |
1184 | | - , ppGroup p26 |
1185 | | - , ppGroup p27 |
1186 | | - , ppGroup p28 |
1187 | | - , ppGroup p29 |
1188 | | - , ppGroup p30 |
1189 | | - , ppGroup p31 |
1190 | | - ] |
| 1133 | +class CollectModifiedPPGroups x where |
| 1134 | + collectModifiedPPGroups :: x -> Set PPGroups |
| 1135 | + |
| 1136 | +instance |
| 1137 | + ( CollectModifiedPPGroups (x u) |
| 1138 | + , CollectModifiedPPGroups (y u) |
| 1139 | + ) => |
| 1140 | + CollectModifiedPPGroups ((x :*: y) u) |
| 1141 | + where |
| 1142 | + collectModifiedPPGroups (x :*: y) = collectModifiedPPGroups x <> collectModifiedPPGroups y |
| 1143 | + |
| 1144 | +instance |
| 1145 | + ( ToDRepGroup g |
| 1146 | + , ToStakePoolGroup h |
| 1147 | + ) => |
| 1148 | + CollectModifiedPPGroups (K1 i (THKD ('PPGroups g h) StrictMaybe a) p) |
| 1149 | + where |
| 1150 | + collectModifiedPPGroups (K1 x) = ppGroup x |
| 1151 | + |
| 1152 | +instance CollectModifiedPPGroups (K1 i (NoUpdate a) p) where |
| 1153 | + collectModifiedPPGroups _ = mempty |
| 1154 | + |
| 1155 | +instance CollectModifiedPPGroups (a u) => CollectModifiedPPGroups (M1 i c a u) where |
| 1156 | + collectModifiedPPGroups (M1 x) = collectModifiedPPGroups x |
1191 | 1157 |
|
1192 | 1158 | asNaturalHKD :: forall f i. (HKDFunctor f, Integral i) => HKD f i -> HKD f Natural |
1193 | 1159 | asNaturalHKD = hkdMap (Proxy @f) (fromIntegral @i @Natural) |
|
0 commit comments