@@ -74,6 +74,8 @@ import Ouroboros.Consensus.Byron.Ledger.Serialisation
7474import Ouroboros.Consensus.Config
7575import Ouroboros.Consensus.Forecast
7676import Ouroboros.Consensus.HardFork.Abstract
77+ import Ouroboros.Consensus.HardFork.Combinator.Embed.Nary
78+ (Untick (.. ))
7779import qualified Ouroboros.Consensus.HardFork.History as HardFork
7880import Ouroboros.Consensus.HeaderValidation
7981import Ouroboros.Consensus.Ledger.Abstract
@@ -83,6 +85,7 @@ import Ouroboros.Consensus.Ledger.Query
8385import Ouroboros.Consensus.Ledger.SupportsPeerSelection
8486import Ouroboros.Consensus.Ledger.SupportsProtocol
8587import Ouroboros.Consensus.Protocol.PBFT
88+ import Ouroboros.Consensus.TypeFamilyWrappers
8689import Ouroboros.Consensus.Util (ShowProxy (.. ), (..:) )
8790
8891{- ------------------------------------------------------------------------------
@@ -164,6 +167,7 @@ getByronTip state =
164167-- | The ticked Byron ledger state
165168data instance Ticked (LedgerState ByronBlock ) = TickedByronLedgerState {
166169 tickedByronLedgerState :: ! CC. ChainValidationState
170+ , untickedByronLedgerTipBlockNo :: ! (WithOrigin BlockNo )
167171 , untickedByronLedgerTransition :: ! ByronTransition
168172 }
169173 deriving (Generic , NoThunks )
@@ -178,6 +182,8 @@ instance IsLedger (LedgerState ByronBlock) where
178182 TickedByronLedgerState {
179183 tickedByronLedgerState =
180184 CC. applyChainTick cfg (toByronSlotNo slotNo) byronLedgerState
185+ , untickedByronLedgerTipBlockNo =
186+ byronLedgerTipBlockNo
181187 , untickedByronLedgerTransition =
182188 byronLedgerTransition
183189 }
@@ -503,3 +509,27 @@ decodeByronResult :: BlockQuery ByronBlock result
503509 -> forall s . Decoder s result
504510decodeByronResult query = case query of
505511 GetUpdateInterfaceState -> fromByronCBOR
512+
513+ {- ------------------------------------------------------------------------------
514+ Unticking
515+ -------------------------------------------------------------------------------}
516+
517+ instance Untick (WrapChainDepState ByronBlock ) where
518+ untick =
519+ pure
520+ . WrapChainDepState
521+ . getTickedPBftState
522+ . unwrapTickedChainDepState
523+
524+ instance Untick (LedgerState ByronBlock ) where
525+ untick st = pure ByronLedgerState {
526+ byronLedgerTipBlockNo = untickedByronLedgerTipBlockNo
527+ , byronLedgerState = tickedByronLedgerState
528+ , byronLedgerTransition = untickedByronLedgerTransition
529+ }
530+ where
531+ TickedByronLedgerState {
532+ tickedByronLedgerState
533+ , untickedByronLedgerTipBlockNo
534+ , untickedByronLedgerTransition
535+ } = st
0 commit comments