10
10
{-# LANGUAGE UndecidableInstances #-}
11
11
12
12
{-# OPTIONS_GHC -Wno-orphans #-}
13
+ {-# LANGUAGE LambdaCase #-}
13
14
14
15
module Cardano.CLI.Shelley.Orphans () where
15
16
16
- import Cardano.Prelude
17
-
18
- import Control.SetAlgebra as SetAlgebra
19
- import Data.Aeson
20
- import qualified Data.ByteString.Base16 as Base16
21
- import qualified Data.ByteString.Short as SBS
22
- import qualified Data.Text.Encoding as Text
23
-
24
17
import Cardano.Api.Orphans ()
25
-
18
+ import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (.. ))
19
+ import Cardano.Ledger.PoolDistr (PoolDistr (.. ))
20
+ import Cardano.Ledger.TxIn (TxId (.. ))
21
+ import Cardano.Prelude (Bool (True ), Category ((.) ))
22
+ import Cardano.Protocol.TPraos.BHeader (HashHeader (.. ))
23
+ import Data.Aeson (FromJSON (.. ), KeyValue ((.=) ), ToJSON (.. ), ToJSONKey )
26
24
import Ouroboros.Consensus.Byron.Ledger.Block (ByronHash (.. ))
27
25
import Ouroboros.Consensus.HardFork.Combinator (OneEraHash (.. ))
26
+ import Ouroboros.Consensus.Protocol.Praos (PraosState )
27
+ import Ouroboros.Consensus.Protocol.TPraos (TPraosState )
28
28
import Ouroboros.Consensus.Shelley.Eras (StandardCrypto )
29
29
import Ouroboros.Consensus.Shelley.Ledger.Block (ShelleyHash (.. ))
30
30
import Ouroboros.Network.Block (BlockNo (.. ), HeaderHash , Tip (.. ))
31
31
32
- import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (.. ))
33
- import qualified Cardano.Ledger.Crypto as CC (Crypto )
34
- import Cardano.Ledger.PoolDistr (PoolDistr (.. ))
35
- import Cardano.Protocol.TPraos.BHeader (HashHeader (.. ))
36
-
37
32
import qualified Cardano.Ledger.Credential as Ledger
38
- import qualified Cardano.Protocol.TPraos.API as Ledger
33
+ import qualified Cardano.Ledger.Crypto as CC (Crypto )
34
+ import qualified Cardano.Ledger.Mary.Value as Ledger.Mary
39
35
import qualified Cardano.Ledger.Shelley.EpochBoundary as Ledger
40
- import Cardano.Ledger.TxIn (TxId (.. ))
36
+ import qualified Cardano.Ledger.Shelley.PoolRank as Ledger
37
+ import qualified Cardano.Protocol.TPraos.API as Ledger
41
38
import qualified Cardano.Protocol.TPraos.Rules.Prtcl as Ledger
42
39
import qualified Cardano.Protocol.TPraos.Rules.Tickn as Ledger
43
-
44
- import qualified Cardano.Ledger.Mary.Value as Ledger.Mary
45
-
40
+ import qualified Cardano.Slotting.Slot as Cardano
41
+ import qualified Control.SetAlgebra as SetAlgebra (BiMap , forwards )
42
+ import qualified Data.Aeson as J
43
+ import qualified Data.ByteString.Base16 as Base16
44
+ import qualified Data.ByteString.Short as SBS
45
+ import qualified Data.Text.Encoding as Text
46
46
import qualified Data.VMap as VMap
47
- import qualified Cardano.Ledger.Shelley.PoolRank as Ledger
47
+ import qualified Ouroboros.Consensus.Protocol.Praos as Consensus
48
+ import qualified Ouroboros.Consensus.Protocol.TPraos as Consensus
48
49
49
50
instance ToJSON (OneEraHash xs ) where
50
51
toJSON = toJSON
@@ -58,9 +59,9 @@ deriving newtype instance ToJSON ByronHash
58
59
-- This instance is temporarily duplicated in cardano-config
59
60
60
61
instance ToJSON (HeaderHash blk ) => ToJSON (Tip blk ) where
61
- toJSON TipGenesis = object [ " genesis" .= True ]
62
+ toJSON TipGenesis = J. object [ " genesis" .= True ]
62
63
toJSON (Tip slotNo headerHash blockNo) =
63
- object
64
+ J. object
64
65
[ " slotNo" .= slotNo
65
66
, " headerHash" .= headerHash
66
67
, " blockNo" .= blockNo
@@ -94,3 +95,26 @@ deriving newtype instance ToJSON (Ledger.Mary.PolicyID StandardCrypto)
94
95
95
96
instance (ToJSONKey k , ToJSON v ) => ToJSON (SetAlgebra. BiMap v k v ) where
96
97
toJSON = toJSON . SetAlgebra. forwards -- to normal Map
98
+
99
+ instance ToJSON (TPraosState StandardCrypto ) where
100
+ toJSON s = J. object
101
+ [ " lastSlot" .= Consensus. tpraosStateLastSlot s
102
+ , " chainDepState" .= Consensus. tpraosStateChainDepState s
103
+ ]
104
+
105
+ instance ToJSON (PraosState StandardCrypto ) where
106
+ toJSON s = J. object
107
+ [ " lastSlot" .= Consensus. praosStateLastSlot s
108
+ , " oCertCounters" .= Consensus. praosStateOCertCounters s
109
+ , " evolvingNonce" .= Consensus. praosStateEvolvingNonce s
110
+ , " candidateNonce" .= Consensus. praosStateCandidateNonce s
111
+ , " epochNonce" .= Consensus. praosStateEpochNonce s
112
+ , " labNonce" .= Consensus. praosStateLabNonce s
113
+ , " lastEpochBlockNonce" .= Consensus. praosStateLastEpochBlockNonce s
114
+ ]
115
+
116
+
117
+ instance ToJSON (Cardano. WithOrigin Cardano. SlotNo ) where
118
+ toJSON = \ case
119
+ Cardano. Origin -> J. String " origin"
120
+ Cardano. At (Cardano. SlotNo n) -> toJSON n
0 commit comments