33{-# LANGUAGE FlexibleContexts #-}
44{-# LANGUAGE FlexibleInstances #-}
55{-# LANGUAGE GADTs #-}
6+ {-# LANGUAGE GeneralisedNewtypeDeriving #-}
67{-# LANGUAGE InstanceSigs #-}
78{-# LANGUAGE LambdaCase #-}
89{-# LANGUAGE QuantifiedConstraints #-}
@@ -87,13 +88,11 @@ import Cardano.Api.Serialise.TextEnvelope.Internal
8788import Cardano.Api.Tx.Internal.Body
8889import Cardano.Api.UTxO (UTxO (.. ))
8990
90- import Ouroboros.Consensus.Shelley.Ledger.SupportsProtocol ()
91- import Ouroboros.Consensus.Cardano.CanHardFork ()
92- import Ouroboros.Consensus.HardFork.Combinator.Ledger ()
9391import Cardano.Binary qualified as CBOR
9492import Cardano.Chain.Update.Validation.Interface qualified as Byron.Update
9593import Cardano.Ledger.Api qualified as L
9694import Cardano.Ledger.Api.State.Query qualified as L
95+ import Cardano.Ledger.Api.State.Query qualified as Ledger
9796import Cardano.Ledger.Binary
9897import Cardano.Ledger.Binary.Plain qualified as Plain
9998import Cardano.Ledger.Coin qualified as L
@@ -108,15 +107,18 @@ import Ouroboros.Consensus.BlockchainTime.WallClock.Types (RelativeTime, SlotLen
108107import Ouroboros.Consensus.Byron.Ledger qualified as Consensus
109108import Ouroboros.Consensus.Cardano.Block (LedgerState (.. ), StandardCrypto )
110109import Ouroboros.Consensus.Cardano.Block qualified as Consensus
110+ import Ouroboros.Consensus.Cardano.CanHardFork ()
111111import Ouroboros.Consensus.HardFork.Combinator qualified as Consensus
112112import Ouroboros.Consensus.HardFork.Combinator.AcrossEras (EraMismatch )
113113import Ouroboros.Consensus.HardFork.Combinator.AcrossEras qualified as Consensus
114+ import Ouroboros.Consensus.HardFork.Combinator.Ledger ()
114115import Ouroboros.Consensus.HardFork.History qualified as Consensus
115116import Ouroboros.Consensus.HardFork.History qualified as History
116117import Ouroboros.Consensus.HardFork.History.Qry qualified as Qry
117118import Ouroboros.Consensus.Ledger.Query qualified as Consensus
118119import Ouroboros.Consensus.Protocol.Abstract qualified as Consensus
119120import Ouroboros.Consensus.Shelley.Ledger qualified as Consensus
121+ import Ouroboros.Consensus.Shelley.Ledger.SupportsProtocol ()
120122import Ouroboros.Network.Block (Serialised (.. ))
121123import Ouroboros.Network.PeerSelection.LedgerPeers.Type qualified as Diffusion
122124import Ouroboros.Network.Protocol.LocalStateQuery.Client (Some (.. ))
@@ -422,15 +424,19 @@ decodePoolDistribution sbe (Serialised ls) =
422424
423425newtype SerialisedStakeSnapshots era
424426 = SerialisedStakeSnapshots
425- (Serialised Consensus . StakeSnapshots )
427+ (Serialised Ledger . StakeSnapshots )
426428
427- newtype StakeSnapshot era = StakeSnapshot Consensus. StakeSnapshots
429+ newtype StakeSnapshot era = StakeSnapshot Ledger. StakeSnapshots
430+ deriving newtype (EncCBOR , DecCBOR )
428431
429432decodeStakeSnapshot
430433 :: forall era
431- . SerialisedStakeSnapshots era
434+ . ShelleyBasedEra era
435+ -> SerialisedStakeSnapshots era
432436 -> Either DecoderError (StakeSnapshot era )
433- decodeStakeSnapshot (SerialisedStakeSnapshots (Serialised ls)) = StakeSnapshot <$> Plain. decodeFull ls
437+ decodeStakeSnapshot sbe (SerialisedStakeSnapshots (Serialised ls)) =
438+ shelleyBasedEraConstraints sbe $
439+ decodeFull (Core. eraProtVerHigh @ (ShelleyLedgerEra era )) ls
434440
435441decodeLedgerPeerSnapshot
436442 :: Consensus. ShelleyNodeToClientVersion
@@ -613,11 +619,17 @@ toConsensusQueryShelleyBased sbe = \case
613619 (Consensus. GetCBOR (Consensus. GetPoolState (Set. map unStakePoolKeyHash <$> poolIds)))
614620 )
615621 QueryStakeSnapshot mPoolIds ->
616- Some
617- ( consensusQueryInEraInMode
618- era
619- (Consensus. GetCBOR (Consensus. GetStakeSnapshots (fmap (Set. map unStakePoolKeyHash) mPoolIds)))
622+ caseShelleyToBabbageOrConwayEraOnwards
623+ (const $ error " toConsensusQueryShelleyBased: QueryStakeSnapshot is only available in the Conway era" )
624+ ( const $
625+ ( Some
626+ ( consensusQueryInEraInMode
627+ era
628+ (Consensus. GetCBOR (Consensus. GetStakeSnapshots (fmap (Set. map unStakePoolKeyHash) mPoolIds)))
629+ )
630+ )
620631 )
632+ sbe
621633 QueryPoolDistribution poolIds ->
622634 Some
623635 (consensusQueryInEraInMode era (Consensus. GetCBOR (Consensus. GetPoolDistr2 (getPoolIds <$> poolIds))))
0 commit comments