@@ -33,10 +33,10 @@ import Cardano.Ledger.Conway.PParams (ppMinFeeRefScriptCostPerByteL)
3333import Cardano.Ledger.Plutus (ExUnits (.. ), Language (.. ), Prices (.. ))
3434import Cardano.Ledger.Plutus.CostModels (CostModels , mkCostModel , mkCostModels )
3535import Cardano.Ledger.Shelley.API (ProtVer (.. ))
36- import Cardano.Slotting.Time (mkSlotLength )
36+ import Cardano.Slotting.Time (RelativeTime ( .. ), mkSlotLength )
3737import Control.Lens ((.~) , (^.) )
3838import Data.Default (def )
39- import Data.SOP.NonEmpty (NonEmpty ( .. ) )
39+ import Data.SOP.NonEmpty (nonEmptyFromList )
4040import Data.Set qualified as Set
4141import Data.Text qualified as T
4242import Hydra.Cardano.Api.Prelude (StakePoolKey , fromNetworkMagic )
@@ -45,8 +45,7 @@ import Hydra.Chain.ScriptRegistry (buildScriptPublishingTxs)
4545import Hydra.Tx (txId )
4646import Money qualified
4747import Ouroboros.Consensus.Block (GenesisWindow (.. ))
48- import Ouroboros.Consensus.Cardano.Block (CardanoEras , StandardCrypto )
49- import Ouroboros.Consensus.HardFork.History (EraEnd (.. ), EraParams (.. ), EraSummary (.. ), SafeZone (.. ), Summary (.. ), initBound , mkInterpreter )
48+ import Ouroboros.Consensus.HardFork.History (Bound (.. ), EraEnd (.. ), EraParams (.. ), EraSummary (.. ), SafeZone (.. ), Summary (.. ), mkInterpreter )
5049
5150data APIBlockfrostError
5251 = BlockfrostError Text
@@ -73,7 +72,7 @@ publishHydraScripts ::
7372publishHydraScripts projectPath sk = do
7473 prj <- Blockfrost. projectFromFile projectPath
7574 runBlockfrostM prj $ do
76- genesis @ Blockfrost. Genesis
75+ Blockfrost. Genesis
7776 { _genesisNetworkMagic = networkMagic
7877 , _genesisSystemStart = systemStart'
7978 } <-
@@ -85,7 +84,7 @@ publishHydraScripts projectPath sk = do
8584 stakePools' <- Blockfrost. listPools
8685 let stakePools = Set. fromList (toCardanoPoolId <$> stakePools')
8786 let systemStart = SystemStart $ posixSecondsToUTCTime systemStart'
88- let eraHistory = mkEraHistory genesis
87+ eraHistory <- mkEraHistory
8988 utxo <- Blockfrost. getAddressUtxos address
9089 let cardanoUTxO = toCardanoUTxO utxo changeAddress
9190
@@ -323,32 +322,40 @@ toCardanoGenesisParameters bfGenesis =
323322 , _genesisSecurityParam
324323 } = bfGenesis
325324
326- mkEraHistory :: Blockfrost. Genesis -> EraHistory
327- mkEraHistory genesis = EraHistory (mkInterpreter summary)
325+ mkEraHistory :: BlockfrostClientT IO EraHistory
326+ mkEraHistory = do
327+ eras' <- Blockfrost. getNetworkEras
328+ let eras = filter withoutEmptyEra eras'
329+ let summary = mkEra <$> eras
330+ case nonEmptyFromList summary of
331+ Nothing ->
332+ liftIO $ throwIO $ BlockfrostError " Failed to create EraHistory."
333+ Just s -> pure $ EraHistory (mkInterpreter $ Summary s)
328334 where
329- Blockfrost. Genesis
330- { _genesisNetworkMagic
331- , _genesisSystemStart
332- , _genesisSlotLength
333- , _genesisEpochLength
334- } = genesis
335-
336- summary :: Summary (CardanoEras StandardCrypto )
337- summary =
338- Summary . NonEmptyOne $
339- EraSummary
340- { eraStart = initBound
341- , eraEnd = EraUnbounded
342- , eraParams
343- }
344-
345- eraParams =
335+ mkBound Blockfrost. NetworkEraBound {_boundEpoch, _boundSlot, _boundTime} =
336+ Bound
337+ { boundTime = RelativeTime _boundTime
338+ , boundSlot = SlotNo $ fromIntegral _boundSlot
339+ , boundEpoch = EpochNo $ fromIntegral _boundEpoch
340+ }
341+ mkEraParams Blockfrost. NetworkEraParameters {_parametersEpochLength, _parametersSlotLength, _parametersSafeZone} =
346342 EraParams
347- { eraEpochSize = EpochSize $ fromIntegral _genesisEpochLength
348- , eraSlotLength = mkSlotLength $ fromIntegral _genesisSlotLength
349- , eraSafeZone = UnsafeIndefiniteSafeZone
350- , eraGenesisWin = GenesisWindow 1
343+ { eraEpochSize = EpochSize $ fromIntegral _parametersEpochLength
344+ , eraSlotLength = mkSlotLength _parametersSlotLength
345+ , eraSafeZone = StandardSafeZone _parametersSafeZone
346+ , eraGenesisWin = GenesisWindow _parametersSafeZone
347+ }
348+ mkEra Blockfrost. NetworkEraSummary {_networkEraStart, _networkEraEnd, _networkEraParameters} =
349+ EraSummary
350+ { eraStart = mkBound _networkEraStart
351+ , eraEnd = EraEnd $ mkBound _networkEraEnd
352+ , eraParams = mkEraParams _networkEraParameters
351353 }
354+ withoutEmptyEra
355+ Blockfrost. NetworkEraSummary
356+ { _networkEraStart = Blockfrost. NetworkEraBound {_boundTime = boundStart}
357+ , _networkEraEnd = Blockfrost. NetworkEraBound {_boundTime = boundEnd}
358+ } = boundStart == 0 && boundEnd == 0
352359
353360----------------
354361-- Wallet API --
0 commit comments