@@ -20,6 +20,8 @@ import Cardano.Api.Any (Error (..))
2020import qualified Cardano.Chain.Update as Byron
2121import qualified Cardano.Ledger.Api.Era as L
2222import qualified Cardano.Ledger.Api.Transition as SL
23+ import Cardano.Ledger.BaseTypes
24+ import Cardano.Ledger.Dijkstra.PParams
2325import qualified Cardano.Node.Protocol.Alonzo as Alonzo
2426import qualified Cardano.Node.Protocol.Byron as Byron
2527import qualified Cardano.Node.Protocol.Conway as Conway
@@ -28,6 +30,7 @@ import qualified Cardano.Node.Protocol.Shelley as Shelley
2830import Cardano.Node.Types
2931import Control.Monad.Trans.Except (ExceptT )
3032import Control.Monad.Trans.Except.Extra (firstExceptT )
33+ import Data.Maybe (fromMaybe )
3134import Ouroboros.Consensus.Cardano
3235import qualified Ouroboros.Consensus.Cardano as Consensus
3336import 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--
0 commit comments