Skip to content

Commit 26c2e59

Browse files
committed
Add entities/dormant_epochs/v0 namespace and related instances
1 parent f9235bf commit 26c2e59

5 files changed

Lines changed: 167 additions & 31 deletions

File tree

libs/cardano-ledger-canonical-state/cardano-ledger-canonical-state.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ library
4545
Cardano.Ledger.CanonicalState.Namespace
4646
Cardano.Ledger.CanonicalState.Namespace.Blocks.V0
4747
Cardano.Ledger.CanonicalState.Namespace.EntitiesCommittee.V0
48+
Cardano.Ledger.CanonicalState.Namespace.EntitiesDormantEpochs.V0
4849
Cardano.Ledger.CanonicalState.Namespace.GovCommittee.V0
4950
Cardano.Ledger.CanonicalState.Namespace.GovConstitution.V0
5051
Cardano.Ledger.CanonicalState.Namespace.GovPParams.V0

libs/cardano-ledger-canonical-state/conway/Cardano/Ledger/CanonicalState/Conway.hs

Lines changed: 64 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ type instance NamespaceEra "blocks/v0" = ConwayEra
6464

6565
type instance NamespaceEra "entities/committee/v0" = ConwayEra
6666

67+
type instance NamespaceEra "entities/dormant_epochs/v0" = ConwayEra
68+
6769
type instance NamespaceEra "gov/committee/v0" = ConwayEra
6870

6971
type instance NamespaceEra "gov/constitution/v0" = ConwayEra
@@ -155,37 +157,68 @@ instance FromCanonicalCBOR "gov/pparams/v0" (PParams ConwayEra) where
155157
return $
156158
Versioned $
157159
emptyPParams @ConwayEra
158-
& ppTxFeePerByteL .~ CoinPerByte (unCoin txFeePerByte)
159-
& ppTxFeeFixedCompactL .~ unCoin txFeeFixedCompact
160-
& ppMaxBBSizeL .~ maxBBSize
161-
& ppMaxTxSizeL .~ maxTxSize
162-
& ppMaxBHSizeL .~ maxBHSize
163-
& ppKeyDepositCompactL .~ unCoin keyDepositCompact
164-
& ppPoolDepositCompactL .~ unCoin poolDepositCompact
165-
& ppEMaxL .~ eMax
166-
& ppNOptL .~ nOpt
167-
& ppA0L .~ a0
168-
& ppRhoL .~ rho
169-
& ppTauL .~ tau
170-
& ppMinPoolCostCompactL .~ unCoin minPoolCostCompact
171-
& ppCoinsPerUTxOByteL .~ CoinPerByte (unCoin coinsPerUTxOByte)
172-
& ppCostModelsL .~ costModels
173-
& ppPricesL .~ fromCanonicalPrices prices
174-
& ppMaxTxExUnitsL .~ fromCanonicalExUnits maxTxExUnits
175-
& ppMaxBlockExUnitsL .~ fromCanonicalExUnits maxBlockExUnits
176-
& ppMaxValSizeL .~ maxValSize
177-
& ppCollateralPercentageL .~ collateralPercentage
178-
& ppMaxCollateralInputsL .~ maxCollateralInputs
179-
& ppPoolVotingThresholdsL .~ poolVotingThresholds
180-
& ppDRepVotingThresholdsL .~ dRepVotingThresholds
181-
& ppCommitteeMinSizeL .~ committeeMinSize
182-
& ppCommitteeMaxTermLengthL .~ committeeMaxTermLength
183-
& ppGovActionLifetimeL .~ govActionLifetime
184-
& ppGovActionDepositCompactL .~ unCoin govActionDepositCompact
185-
& ppDRepDepositCompactL .~ unCoin dRepDepositCompact
186-
& ppDRepActivityL .~ dRepActivity
187-
& ppMinFeeRefScriptCostPerByteL .~ minFeeRefScriptCostPerByte
188-
& ppProtocolVersionL .~ protVer
160+
& ppTxFeePerByteL
161+
.~ CoinPerByte (unCoin txFeePerByte)
162+
& ppTxFeeFixedCompactL
163+
.~ unCoin txFeeFixedCompact
164+
& ppMaxBBSizeL
165+
.~ maxBBSize
166+
& ppMaxTxSizeL
167+
.~ maxTxSize
168+
& ppMaxBHSizeL
169+
.~ maxBHSize
170+
& ppKeyDepositCompactL
171+
.~ unCoin keyDepositCompact
172+
& ppPoolDepositCompactL
173+
.~ unCoin poolDepositCompact
174+
& ppEMaxL
175+
.~ eMax
176+
& ppNOptL
177+
.~ nOpt
178+
& ppA0L
179+
.~ a0
180+
& ppRhoL
181+
.~ rho
182+
& ppTauL
183+
.~ tau
184+
& ppMinPoolCostCompactL
185+
.~ unCoin minPoolCostCompact
186+
& ppCoinsPerUTxOByteL
187+
.~ CoinPerByte (unCoin coinsPerUTxOByte)
188+
& ppCostModelsL
189+
.~ costModels
190+
& ppPricesL
191+
.~ fromCanonicalPrices prices
192+
& ppMaxTxExUnitsL
193+
.~ fromCanonicalExUnits maxTxExUnits
194+
& ppMaxBlockExUnitsL
195+
.~ fromCanonicalExUnits maxBlockExUnits
196+
& ppMaxValSizeL
197+
.~ maxValSize
198+
& ppCollateralPercentageL
199+
.~ collateralPercentage
200+
& ppMaxCollateralInputsL
201+
.~ maxCollateralInputs
202+
& ppPoolVotingThresholdsL
203+
.~ poolVotingThresholds
204+
& ppDRepVotingThresholdsL
205+
.~ dRepVotingThresholds
206+
& ppCommitteeMinSizeL
207+
.~ committeeMinSize
208+
& ppCommitteeMaxTermLengthL
209+
.~ committeeMaxTermLength
210+
& ppGovActionLifetimeL
211+
.~ govActionLifetime
212+
& ppGovActionDepositCompactL
213+
.~ unCoin govActionDepositCompact
214+
& ppDRepDepositCompactL
215+
.~ unCoin dRepDepositCompact
216+
& ppDRepActivityL
217+
.~ dRepActivity
218+
& ppMinFeeRefScriptCostPerByteL
219+
.~ minFeeRefScriptCostPerByte
220+
& ppProtocolVersionL
221+
.~ protVer
189222
where
190223

191224
instance ToCanonicalCBOR "gov/pparams/v0" DRepVotingThresholds where
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
{-# LANGUAGE DataKinds #-}
2+
{-# LANGUAGE DeriveGeneric #-}
3+
{-# LANGUAGE DerivingVia #-}
4+
{-# LANGUAGE FlexibleContexts #-}
5+
{-# LANGUAGE FlexibleInstances #-}
6+
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
7+
{-# LANGUAGE MultiParamTypeClasses #-}
8+
{-# LANGUAGE OverloadedStrings #-}
9+
{-# LANGUAGE RecordWildCards #-}
10+
{-# LANGUAGE ScopedTypeVariables #-}
11+
{-# LANGUAGE StandaloneDeriving #-}
12+
{-# LANGUAGE TypeApplications #-}
13+
{-# LANGUAGE TypeFamilies #-}
14+
{-# LANGUAGE TypeOperators #-}
15+
{-# LANGUAGE UndecidableInstances #-}
16+
{-# OPTIONS_GHC -Wno-orphans #-}
17+
18+
module Cardano.Ledger.CanonicalState.Namespace.EntitiesDormantEpochs.V0 (
19+
EntitiesDormantEpochsIn (..),
20+
EntitiesDormantEpochsOut (..),
21+
) where
22+
23+
import Cardano.Ledger.BaseTypes (EpochNo)
24+
import Cardano.Ledger.CanonicalState.Namespace (Era, NamespaceEra)
25+
import Cardano.SCLS.CBOR.Canonical.Decoder (FromCanonicalCBOR (..))
26+
import Cardano.SCLS.CBOR.Canonical.Encoder (ToCanonicalCBOR (..))
27+
import Cardano.SCLS.Entry.IsKey (IsKey (..))
28+
import Cardano.SCLS.NamespaceCodec (
29+
CanonicalCBOREntryDecoder (..),
30+
CanonicalCBOREntryEncoder (..),
31+
KnownNamespace (..),
32+
NamespaceKeySize,
33+
namespaceKeySize,
34+
)
35+
import Cardano.SCLS.Versioned (Versioned (..))
36+
import Data.MemPack (MemPack (packM, unpackM))
37+
import Data.Proxy (Proxy (..))
38+
import Data.Word (Word8)
39+
import GHC.Generics (Generic)
40+
41+
instance
42+
( Era era
43+
, NamespaceEra "entities/dormant_epochs/v0" ~ era
44+
, ToCanonicalCBOR "entities/dormant_epochs/v0" EntitiesDormantEpochsOut
45+
, FromCanonicalCBOR "entities/dormant_epochs/v0" EntitiesDormantEpochsOut
46+
) =>
47+
KnownNamespace "entities/dormant_epochs/v0"
48+
where
49+
type NamespaceKey "entities/dormant_epochs/v0" = EntitiesDormantEpochsIn
50+
type NamespaceEntry "entities/dormant_epochs/v0" = EntitiesDormantEpochsOut
51+
52+
instance
53+
( Era era
54+
, NamespaceEra "entities/dormant_epochs/v0" ~ era
55+
, ToCanonicalCBOR "entities/dormant_epochs/v0" EntitiesDormantEpochsOut
56+
) =>
57+
CanonicalCBOREntryEncoder "entities/dormant_epochs/v0" EntitiesDormantEpochsOut
58+
where
59+
encodeEntry = toCanonicalCBOR (Proxy @"entities/dormant_epochs/v0")
60+
61+
instance
62+
( Era era
63+
, NamespaceEra "entities/dormant_epochs/v0" ~ era
64+
, FromCanonicalCBOR "entities/dormant_epochs/v0" EntitiesDormantEpochsOut
65+
) =>
66+
CanonicalCBOREntryDecoder "entities/dormant_epochs/v0" EntitiesDormantEpochsOut
67+
where
68+
decodeEntry = fromCanonicalCBOR
69+
70+
data EntitiesDormantEpochsIn = EntitiesDormantEpochsIn
71+
deriving (Eq, Ord, Show, Enum, Generic)
72+
73+
type instance NamespaceKeySize "entities/dormant_epochs/v0" = 1
74+
75+
instance IsKey EntitiesDormantEpochsIn where
76+
keySize = namespaceKeySize @"entities/dormant_epochs/v0"
77+
packKeyM =
78+
packM . fromIntegral @_ @Word8 . fromEnum
79+
unpackKeyM =
80+
toEnum . fromIntegral @Word8 @Int <$> unpackM
81+
82+
newtype EntitiesDormantEpochsOut
83+
= EntitiesDormantEpochsOut EpochNo
84+
deriving (Eq, Show, Generic)
85+
86+
deriving newtype instance
87+
ToCanonicalCBOR "entities/dormant_epochs/v0" EpochNo =>
88+
ToCanonicalCBOR "entities/dormant_epochs/v0" EntitiesDormantEpochsOut
89+
90+
deriving newtype instance
91+
FromCanonicalCBOR "entities/dormant_epochs/v0" EpochNo =>
92+
FromCanonicalCBOR "entities/dormant_epochs/v0" EntitiesDormantEpochsOut

libs/cardano-ledger-canonical-state/test/Test/Cardano/Ledger/CanonicalState/Spec.hs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ spec = do
4747
isCanonical @"entities/committee/v0" @Committee.V0.CanonicalCommitteeAuthorization
4848
validateType @"entities/committee/v0" @Committee.V0.CanonicalCommitteeAuthorization
4949
"committee_authorization"
50+
describe "entities/dormant_epochs/v0" $ do
51+
isCanonical @"entities/dormant_epochs/v0" @EpochNo
52+
validateType @"entities/dormant_epochs/v0" @EpochNo "epoch_no"
53+
isCanonical @"entities/dormant_epochs/v0" @EntitiesDormantEpochsOut
54+
validateType @"entities/dormant_epochs/v0" @EntitiesDormantEpochsOut "record_entry"
5055
describe "gov/committee/v0" $ do
5156
isCanonical @"gov/committee/v0" @GovCommittee.V0.CanonicalCommittee
5257
validateType @"gov/committee/v0" @GovCommittee.V0.CanonicalCommittee "committee"
@@ -70,6 +75,7 @@ spec = do
7075
testNS @"blocks/v0"
7176
testNS @"utxo/v0"
7277
testNS @"entities/committee/v0"
78+
testNS @"entities/dormant_epochs/v0"
7379
testNS @"gov/constitution/v0"
7480
testNS @"gov/committee/v0"
7581
testNS @"gov/pparams/v0"

libs/cardano-ledger-canonical-state/testlib/Test/Cardano/Ledger/Conway/CanonicalState/Arbitrary.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import Cardano.Ledger.CanonicalState.Conway (
1212
fromGovActionState,
1313
mkCanonicalConstitution,
1414
)
15+
import qualified Cardano.Ledger.CanonicalState.Namespace.EntitiesDormantEpochs.V0 as EntitiesDormantEpochs.V0
1516
import qualified Cardano.Ledger.CanonicalState.Namespace.GovConstitution.V0 as GovConstitution.V0
1617
import qualified Cardano.Ledger.CanonicalState.Namespace.GovPParams.V0 as GovPParams.V0
1718
import qualified Cardano.Ledger.CanonicalState.Namespace.GovProposals.V0 as GovProposals.V0
@@ -32,3 +33,6 @@ instance Arbitrary (GovPParams.V0.GovPParamsOut ConwayEra) where
3233

3334
instance Arbitrary (GovProposals.V0.GovProposalOut CanonicalGovActionState) where
3435
arbitrary = snd . fromGovActionState <$> arbitrary @(GovActionState ConwayEra)
36+
37+
instance Arbitrary EntitiesDormantEpochs.V0.EntitiesDormantEpochsOut where
38+
arbitrary = genericArbitraryU

0 commit comments

Comments
 (0)