Skip to content

Commit f445e5c

Browse files
authored
Make DijkstraGenesis optional in unstable-cardano-tools (#1727)
Forwards-port of #1725
2 parents e3c52b7 + 1b8003d commit f445e5c

File tree

6 files changed

+62
-21
lines changed

6 files changed

+62
-21
lines changed

ouroboros-consensus-cardano/ouroboros-consensus-cardano.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,7 @@ library unstable-cardano-tools
566566
cardano-ledger-byron,
567567
cardano-ledger-conway,
568568
cardano-ledger-core,
569+
cardano-ledger-dijkstra,
569570
cardano-ledger-mary,
570571
cardano-ledger-shelley,
571572
cardano-prelude,

ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Node/Protocol/Cardano.hs

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import Cardano.Api.Any (Error (..))
2020
import qualified Cardano.Chain.Update as Byron
2121
import qualified Cardano.Ledger.Api.Era as L
2222
import qualified Cardano.Ledger.Api.Transition as SL
23+
import Cardano.Ledger.BaseTypes
24+
import Cardano.Ledger.Dijkstra.PParams
2325
import qualified Cardano.Node.Protocol.Alonzo as Alonzo
2426
import qualified Cardano.Node.Protocol.Byron as Byron
2527
import qualified Cardano.Node.Protocol.Conway as Conway
@@ -28,6 +30,7 @@ import qualified Cardano.Node.Protocol.Shelley as Shelley
2830
import Cardano.Node.Types
2931
import Control.Monad.Trans.Except (ExceptT)
3032
import Control.Monad.Trans.Except.Extra (firstExceptT)
33+
import Data.Maybe (fromMaybe)
3134
import Ouroboros.Consensus.Cardano
3235
import qualified Ouroboros.Consensus.Cardano as Consensus
3336
import Ouroboros.Consensus.Cardano.Condense ()
@@ -56,7 +59,7 @@ mkConsensusProtocolCardano ::
5659
NodeShelleyProtocolConfiguration ->
5760
NodeAlonzoProtocolConfiguration ->
5861
NodeConwayProtocolConfiguration ->
59-
NodeDijkstraProtocolConfiguration ->
62+
Maybe NodeDijkstraProtocolConfiguration ->
6063
NodeHardForkProtocolConfiguration ->
6164
Maybe ProtocolFilepaths ->
6265
ExceptT CardanoProtocolInstantiationError IO (CardanoProtocolParams StandardCrypto)
@@ -84,10 +87,7 @@ mkConsensusProtocolCardano
8487
{ npcConwayGenesisFile
8588
, npcConwayGenesisFileHash
8689
}
87-
NodeDijkstraProtocolConfiguration
88-
{ npcDijkstraGenesisFile
89-
, npcDijkstraGenesisFileHash
90-
}
90+
npcDijkstraProtocolConfig
9191
NodeHardForkProtocolConfiguration
9292
{ npcTestEnableDevelopmentHardForkEras = _
9393
, -- During testing of the latest unreleased era, we conditionally
@@ -133,11 +133,20 @@ mkConsensusProtocolCardano
133133
npcConwayGenesisFile
134134
npcConwayGenesisFileHash
135135

136-
(dijkstraGenesis, _dijkstraGenesisHash) <-
137-
firstExceptT CardanoProtocolInstantiationDijkstraGenesisReadError $
138-
readGenesisAny
139-
npcDijkstraGenesisFile
140-
npcDijkstraGenesisFileHash
136+
dijkstraGenesis <- case npcDijkstraProtocolConfig of
137+
Nothing -> pure emptyDijkstraGenesis
138+
Just
139+
( NodeDijkstraProtocolConfiguration
140+
{ npcDijkstraGenesisFile
141+
, npcDijkstraGenesisFileHash
142+
}
143+
) -> do
144+
(dijkstraGenesis, _dijkstraGenesisHash) <-
145+
firstExceptT CardanoProtocolInstantiationDijkstraGenesisReadError $
146+
readGenesisAny
147+
npcDijkstraGenesisFile
148+
npcDijkstraGenesisFileHash
149+
pure dijkstraGenesis
141150

142151
shelleyLeaderCredentials <-
143152
firstExceptT CardanoProtocolInstantiationPraosLeaderCredentialsError $
@@ -247,6 +256,18 @@ mkConsensusProtocolCardano
247256
emptyCheckpointsMap
248257
(ProtVer (L.eraProtVerHigh @L.LatestKnownEra) 0)
249258

259+
-- | An empty Dijkstra genesis to be provided when none is specified in the config.
260+
emptyDijkstraGenesis :: SL.DijkstraGenesis
261+
emptyDijkstraGenesis =
262+
let upgradePParamsDef =
263+
UpgradeDijkstraPParams
264+
{ udppMaxRefScriptSizePerBlock = 1048576
265+
, udppMaxRefScriptSizePerTx = 204800
266+
, udppRefScriptCostStride = unsafeNonZero 25600
267+
, udppRefScriptCostMultiplier = fromMaybe (error "impossible") $ boundRational 1.2
268+
}
269+
in SL.DijkstraGenesis{SL.dgUpgradePParams = upgradePParamsDef}
270+
250271
------------------------------------------------------------------------------
251272
-- Errors
252273
--

ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Tools/DBAnalyser/Block/Cardano.hs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ import qualified Cardano.Crypto.Hash.Class as CryptoClass
3131
import Cardano.Crypto.Raw (Raw)
3232
import qualified Cardano.Ledger.Api.Era as L
3333
import qualified Cardano.Ledger.Api.Transition as SL
34+
import Cardano.Ledger.BaseTypes (boundRational, unsafeNonZero)
3435
import Cardano.Ledger.Core (TxOut)
36+
import Cardano.Ledger.Dijkstra.PParams
3537
import qualified Cardano.Ledger.Shelley.LedgerState as Shelley.LedgerState
3638
import qualified Cardano.Ledger.Shelley.UTxO as Shelley.UTxO
3739
import Cardano.Ledger.TxIn (TxIn)
@@ -47,7 +49,7 @@ import qualified Data.ByteString as BS
4749
import qualified Data.Compact as Compact
4850
import Data.Map.Strict (Map)
4951
import qualified Data.Map.Strict as Map
50-
import Data.Maybe (fromJust)
52+
import Data.Maybe (fromJust, fromMaybe)
5153
import Data.SOP.BasicFunctors
5254
import Data.SOP.Functors
5355
import Data.SOP.Strict
@@ -157,9 +159,11 @@ instance HasProtocolInfo (CardanoBlock StandardCrypto) where
157159
genesisConway <-
158160
either (error . show) return
159161
=<< Aeson.eitherDecodeFileStrict' (conwayGenesisPath cc)
160-
genesisDijkstra <-
161-
either (error . show) return
162-
=<< Aeson.eitherDecodeFileStrict' (dijkstraGenesisPath cc)
162+
genesisDijkstra <- case dijkstraGenesisPath cc of
163+
Nothing -> pure emptyDijkstraGenesis
164+
Just fp ->
165+
either (error . show) return
166+
=<< Aeson.eitherDecodeFileStrict' fp
163167

164168
let transCfg =
165169
SL.mkLatestTransitionConfig genesisShelley genesisAlonzo genesisConway genesisDijkstra
@@ -182,6 +186,18 @@ instance HasProtocolInfo (CardanoBlock StandardCrypto) where
182186
initialNonce
183187
(cfgHardForkTriggers cc)
184188

189+
-- | An empty Dijkstra genesis to be provided when none is specified in the config.
190+
emptyDijkstraGenesis :: SL.DijkstraGenesis
191+
emptyDijkstraGenesis =
192+
let upgradePParamsDef =
193+
UpgradeDijkstraPParams
194+
{ udppMaxRefScriptSizePerBlock = 1048576
195+
, udppMaxRefScriptSizePerTx = 204800
196+
, udppRefScriptCostStride = unsafeNonZero 25600
197+
, udppRefScriptCostMultiplier = fromMaybe (error "impossible") $ boundRational 1.2
198+
}
199+
in SL.DijkstraGenesis{SL.dgUpgradePParams = upgradePParamsDef}
200+
185201
data CardanoConfig = CardanoConfig
186202
{ requiresNetworkMagic :: RequiresNetworkMagic
187203
-- ^ @RequiresNetworkMagic@ field
@@ -197,7 +213,7 @@ data CardanoConfig = CardanoConfig
197213
-- ^ @AlonzoGenesisFile@ field
198214
, conwayGenesisPath :: FilePath
199215
-- ^ @ConwayGenesisFile@ field
200-
, dijkstraGenesisPath :: FilePath
216+
, dijkstraGenesisPath :: Maybe FilePath
201217
-- ^ @DijkstraGenesisFile@ field
202218
, cfgHardForkTriggers :: CardanoHardForkTriggers
203219
-- ^ @Test*HardForkAtEpoch@ for each Shelley era
@@ -210,7 +226,7 @@ instance AdjustFilePaths CardanoConfig where
210226
, shelleyGenesisPath = f $ shelleyGenesisPath cc
211227
, alonzoGenesisPath = f $ alonzoGenesisPath cc
212228
, conwayGenesisPath = f $ conwayGenesisPath cc
213-
, dijkstraGenesisPath = f $ dijkstraGenesisPath cc
229+
, dijkstraGenesisPath = f <$> dijkstraGenesisPath cc
214230
-- Byron, Shelley, Alonzo, and Conway are the only eras that have genesis
215231
-- data. The actual genesis block is a Byron block, therefore we needed a
216232
-- genesis file. To transition to Shelley, we needed to add some additional
@@ -241,7 +257,7 @@ instance Aeson.FromJSON CardanoConfig where
241257

242258
conwayGenesisPath <- v Aeson..: "ConwayGenesisFile"
243259

244-
dijkstraGenesisPath <- v Aeson..: "DijkstraGenesisFile"
260+
dijkstraGenesisPath <- v Aeson..:? "DijkstraGenesisFile"
245261

246262
triggers <- do
247263
let parseTrigger ::

ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Tools/DBSynthesizer/Orphans.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ instance FromJSON NodeConfigStub where
3434
<*> v .: "ShelleyGenesisFile"
3535
<*> v .: "ByronGenesisFile"
3636
<*> v .: "ConwayGenesisFile"
37-
<*> v .: "DijkstraGenesisFile"
37+
<*> v .:? "DijkstraGenesisFile"
3838

3939
instance AdjustFilePaths NodeConfigStub where
4040
adjustFilePaths f nc =
@@ -43,7 +43,7 @@ instance AdjustFilePaths NodeConfigStub where
4343
, ncsShelleyGenesisFile = f $ ncsShelleyGenesisFile nc
4444
, ncsByronGenesisFile = f $ ncsByronGenesisFile nc
4545
, ncsConwayGenesisFile = f $ ncsConwayGenesisFile nc
46-
, ncsDijkstraGenesisFile = f $ ncsDijkstraGenesisFile nc
46+
, ncsDijkstraGenesisFile = fmap f $ ncsDijkstraGenesisFile nc
4747
}
4848

4949
instance AdjustFilePaths NodeCredentials where

ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Tools/DBSynthesizer/Run.hs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,10 @@ initialize NodeFilePaths{nfpConfig, nfpChainDB} creds synthOptions = do
121121
shelleyConfig = NodeShelleyProtocolConfiguration (GenesisFile $ ncsShelleyGenesisFile confConfigStub) Nothing
122122
alonzoConfig = NodeAlonzoProtocolConfiguration (GenesisFile $ ncsAlonzoGenesisFile confConfigStub) Nothing
123123
conwayConfig = NodeConwayProtocolConfiguration (GenesisFile $ ncsConwayGenesisFile confConfigStub) Nothing
124-
dijkstraConfig = NodeDijkstraProtocolConfiguration (GenesisFile $ ncsDijkstraGenesisFile confConfigStub) Nothing
124+
dijkstraConfig =
125+
fmap
126+
(\x -> NodeDijkstraProtocolConfiguration (GenesisFile x) Nothing)
127+
(ncsDijkstraGenesisFile confConfigStub)
125128
hfConfig_ = eitherParseJson $ ncsNodeConfig confConfigStub
126129
byConfig_ = eitherParseJson $ ncsNodeConfig confConfigStub
127130

ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Tools/DBSynthesizer/Types.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ data NodeConfigStub = NodeConfigStub
1212
, ncsShelleyGenesisFile :: !FilePath
1313
, ncsByronGenesisFile :: !FilePath
1414
, ncsConwayGenesisFile :: !FilePath
15-
, ncsDijkstraGenesisFile :: !FilePath
15+
, ncsDijkstraGenesisFile :: !(Maybe FilePath)
1616
}
1717
deriving Show
1818

0 commit comments

Comments
 (0)