@@ -25,6 +25,8 @@ module Cardano.DbSync.Era.Shelley.Generic.Block (
25
25
26
26
import qualified Cardano.Crypto.Hash as Crypto
27
27
import qualified Cardano.Crypto.KES.Class as KES
28
+ import Cardano.Crypto.VRF.Class (VerKeyVRF )
29
+ import Cardano.Crypto.VRF.Praos (PraosVRF )
28
30
import Cardano.DbSync.Era.Shelley.Generic.Tx
29
31
import Cardano.DbSync.Types
30
32
import Cardano.DbSync.Util.Bech32 (serialiseVerKeyVrfToBech32 )
@@ -33,21 +35,21 @@ import Cardano.Ledger.Alonzo.Scripts (Prices)
33
35
import qualified Cardano.Ledger.BaseTypes as Ledger
34
36
import qualified Cardano.Ledger.Block as Ledger
35
37
import qualified Cardano.Ledger.Core as Ledger
36
- import Cardano.Ledger.Crypto (Crypto , StandardCrypto )
37
- import Cardano.Ledger.Era (EraSegWits (.. ))
38
- import Cardano.Ledger.Keys (KeyHash , KeyRole (.. ), VerKeyVRF , hashKey )
38
+ import Cardano.Protocol.Crypto (Crypto , StandardCrypto , VRF )
39
+ import Cardano.Ledger.Keys (KeyHash , KeyRole (.. ), hashKey )
39
40
import Cardano.Prelude
40
41
import qualified Cardano.Protocol.TPraos.BHeader as TPraos
41
42
import qualified Cardano.Protocol.TPraos.OCert as TPraos
42
43
import Cardano.Slotting.Slot (SlotNo (.. ))
43
44
import Ouroboros.Consensus.Cardano.Block (
44
- StandardAllegra ,
45
- StandardAlonzo ,
46
- StandardBabbage ,
47
- StandardConway ,
48
- StandardMary ,
49
- StandardShelley ,
45
+ AllegraEra ,
46
+ AlonzoEra ,
47
+ BabbageEra ,
48
+ ConwayEra ,
49
+ MaryEra ,
50
+ ShelleyEra ,
50
51
)
52
+ import Ouroboros.Consensus.Protocol.Praos (Praos )
51
53
import qualified Ouroboros.Consensus.Protocol.Praos.Header as Praos
52
54
import Ouroboros.Consensus.Shelley.Ledger.Block (ShelleyBlock )
53
55
import qualified Ouroboros.Consensus.Shelley.Ledger.Block as Consensus
@@ -58,7 +60,7 @@ data Block = Block
58
60
{ blkEra :: ! BlockEra
59
61
, blkHash :: ! ByteString
60
62
, blkPreviousHash :: ! (Maybe ByteString ) -- Nothing is used for first block after Genesis.
61
- , blkSlotLeader :: ! (KeyHash 'BlockIssuer StandardCrypto )
63
+ , blkSlotLeader :: ! (KeyHash 'BlockIssuer)
62
64
, blkSlotNo :: ! SlotNo
63
65
, blkBlockNo :: ! BlockNo
64
66
, blkSize :: ! Word64
@@ -69,7 +71,7 @@ data Block = Block
69
71
, blkTxs :: [Tx ] -- intentionally left lazy to delay the tx transformation
70
72
}
71
73
72
- fromAllegraBlock :: ShelleyBlock TPraosStandard StandardAllegra -> Block
74
+ fromAllegraBlock :: ShelleyBlock ( TPraosStandard StandardCrypto ) AllegraEra -> Block
73
75
fromAllegraBlock blk =
74
76
Block
75
77
{ blkEra = Allegra
@@ -86,7 +88,7 @@ fromAllegraBlock blk =
86
88
, blkTxs = map fromAllegraTx (getTxs blk)
87
89
}
88
90
89
- fromShelleyBlock :: ShelleyBlock TPraosStandard StandardShelley -> Block
91
+ fromShelleyBlock :: ShelleyBlock ( TPraosStandard StandardCrypto ) ShelleyEra -> Block
90
92
fromShelleyBlock blk =
91
93
Block
92
94
{ blkEra = Shelley
@@ -103,7 +105,7 @@ fromShelleyBlock blk =
103
105
, blkTxs = map fromShelleyTx (getTxs blk)
104
106
}
105
107
106
- fromMaryBlock :: ShelleyBlock TPraosStandard StandardMary -> Block
108
+ fromMaryBlock :: ShelleyBlock ( TPraosStandard StandardCrypto ) MaryEra -> Block
107
109
fromMaryBlock blk =
108
110
Block
109
111
{ blkEra = Mary
@@ -120,7 +122,7 @@ fromMaryBlock blk =
120
122
, blkTxs = map fromMaryTx (getTxs blk)
121
123
}
122
124
123
- fromAlonzoBlock :: Bool -> Maybe Prices -> ShelleyBlock TPraosStandard StandardAlonzo -> Block
125
+ fromAlonzoBlock :: Bool -> Maybe Prices -> ShelleyBlock ( TPraosStandard StandardCrypto ) AlonzoEra -> Block
124
126
fromAlonzoBlock iope mprices blk =
125
127
Block
126
128
{ blkEra = Alonzo
@@ -137,7 +139,7 @@ fromAlonzoBlock iope mprices blk =
137
139
, blkTxs = map (fromAlonzoTx iope mprices) (getTxs blk)
138
140
}
139
141
140
- fromBabbageBlock :: Bool -> Maybe Prices -> ShelleyBlock PraosStandard StandardBabbage -> Block
142
+ fromBabbageBlock :: Bool -> Maybe Prices -> ShelleyBlock ( PraosStandard StandardCrypto ) BabbageEra -> Block
141
143
fromBabbageBlock iope mprices blk =
142
144
Block
143
145
{ blkEra = Babbage
@@ -154,7 +156,7 @@ fromBabbageBlock iope mprices blk =
154
156
, blkTxs = map (fromBabbageTx iope mprices) (getTxs blk)
155
157
}
156
158
157
- fromConwayBlock :: Bool -> Maybe Prices -> ShelleyBlock PraosStandard StandardConway -> Block
159
+ fromConwayBlock :: Bool -> Maybe Prices -> ShelleyBlock ( PraosStandard StandardCrypto ) ConwayEra -> Block
158
160
fromConwayBlock iope mprices blk =
159
161
Block
160
162
{ blkEra = Conway
@@ -173,8 +175,8 @@ fromConwayBlock iope mprices blk =
173
175
174
176
-- -------------------------------------------------------------------------------------------------
175
177
176
- getTxs :: forall p era . EraSegWits era => ShelleyBlock p era -> [(Word64 , Ledger. Tx era )]
177
- getTxs = zip [0 .. ] . toList . fromTxSeq @ era . Ledger. bbody . Consensus. shelleyBlockRaw
178
+ getTxs :: forall p era . Ledger. EraSegWits era => ShelleyBlock p era -> [(Word64 , Ledger. Tx era )]
179
+ getTxs = zip [0 .. ] . toList . Ledger. fromTxSeq @ era . Ledger. bbody . Consensus. shelleyBlockRaw
178
180
179
181
blockHeader :: ShelleyBlock p era -> ShelleyProtocolHeader p
180
182
blockHeader = Ledger. bheader . Consensus. shelleyBlockRaw
@@ -188,34 +190,34 @@ blockHash =
188
190
blockNumber :: ShelleyProtocol p => ShelleyBlock p era -> BlockNo
189
191
blockNumber = pHeaderBlock . blockHeader
190
192
191
- blockPrevHash :: ( ProtoCrypto p ~ StandardCrypto , ProtocolHeaderSupportsEnvelope p ) => ShelleyBlock p era -> Maybe ByteString
193
+ blockPrevHash :: ProtocolHeaderSupportsEnvelope p => ShelleyBlock p era -> Maybe ByteString
192
194
blockPrevHash blk =
193
195
case pHeaderPrevHash $ Ledger. bheader (Consensus. shelleyBlockRaw blk) of
194
196
TPraos. GenesisHash -> Nothing
195
197
TPraos. BlockHash (TPraos. HashHeader h) -> Just $ Crypto. hashToBytes h
196
198
197
- blockOpCertKeyTPraos :: ShelleyBlock TPraosStandard era -> ByteString
199
+ blockOpCertKeyTPraos :: ShelleyBlock ( TPraosStandard StandardCrypto ) era -> ByteString
198
200
blockOpCertKeyTPraos = KES. rawSerialiseVerKeyKES . TPraos. ocertVkHot . blockOpCertTPraos
199
201
200
- blockOpCertKeyPraos :: ShelleyBlock PraosStandard era -> ByteString
202
+ blockOpCertKeyPraos :: ShelleyBlock ( PraosStandard StandardCrypto ) era -> ByteString
201
203
blockOpCertKeyPraos = KES. rawSerialiseVerKeyKES . TPraos. ocertVkHot . blockOpCertPraos
202
204
203
- blockOpCertCounterTPraos :: ShelleyBlock TPraosStandard era -> Word64
205
+ blockOpCertCounterTPraos :: ShelleyBlock ( TPraosStandard StandardCrypto ) era -> Word64
204
206
blockOpCertCounterTPraos = TPraos. ocertN . blockOpCertTPraos
205
207
206
- blockOpCertCounterPraos :: ShelleyBlock PraosStandard era -> Word64
208
+ blockOpCertCounterPraos :: ShelleyBlock ( PraosStandard StandardCrypto ) era -> Word64
207
209
blockOpCertCounterPraos = TPraos. ocertN . blockOpCertPraos
208
210
209
- blockOpCertTPraos :: ShelleyBlock TPraosStandard era -> TPraos. OCert StandardCrypto
211
+ blockOpCertTPraos :: ShelleyBlock ( TPraosStandard StandardCrypto ) era -> TPraos. OCert StandardCrypto
210
212
blockOpCertTPraos = TPraos. bheaderOCert . TPraos. bhbody . blockHeader
211
213
212
- blockOpCertPraos :: ShelleyBlock PraosStandard era -> TPraos. OCert StandardCrypto
214
+ blockOpCertPraos :: ShelleyBlock ( PraosStandard StandardCrypto ) era -> TPraos. OCert StandardCrypto
213
215
blockOpCertPraos = Praos. hbOCert . getHeaderBodyPraos . blockHeader
214
216
215
- blockProtoVersionTPraos :: ShelleyBlock TPraosStandard era -> Ledger. ProtVer
217
+ blockProtoVersionTPraos :: ShelleyBlock ( TPraosStandard StandardCrypto ) era -> Ledger. ProtVer
216
218
blockProtoVersionTPraos = TPraos. bprotver . TPraos. bhbody . blockHeader
217
219
218
- blockProtoVersionPraos :: ShelleyBlock PraosStandard era -> Ledger. ProtVer
220
+ blockProtoVersionPraos :: ShelleyBlock ( PraosStandard StandardCrypto ) era -> Ledger. ProtVer
219
221
blockProtoVersionPraos = Praos. hbProtVer . getHeaderBodyPraos . blockHeader
220
222
221
223
blockSize :: ProtocolHeaderSupportsEnvelope p => ShelleyBlock p era -> Word64
@@ -224,19 +226,19 @@ blockSize = fromIntegral . pHeaderBlockSize . blockHeader
224
226
blockVrfKeyView :: VerKeyVRF (VRF StandardCrypto ) -> Text
225
227
blockVrfKeyView = serialiseVerKeyVrfToBech32
226
228
227
- blockVrfVkTPraos :: ShelleyBlock TPraosStandard era -> VerKeyVRF StandardCrypto
229
+ blockVrfVkTPraos :: ShelleyBlock ( TPraosStandard StandardCrypto ) era -> VerKeyVRF PraosVRF
228
230
blockVrfVkTPraos = TPraos. bheaderVrfVk . TPraos. bhbody . blockHeader
229
231
230
- blockVrfVkPraos :: ShelleyBlock PraosStandard era -> VerKeyVRF StandardCrypto
232
+ blockVrfVkPraos :: ShelleyBlock ( Praos StandardCrypto ) era -> VerKeyVRF ( VRF StandardCrypto )
231
233
blockVrfVkPraos = Praos. hbVrfVk . getHeaderBodyPraos . blockHeader
232
234
233
235
getHeaderBodyPraos :: Crypto c => Praos. Header c -> Praos. HeaderBody c
234
236
getHeaderBodyPraos (Praos. Header headerBody _) = headerBody
235
237
236
238
blockIssuer ::
237
- ( ShelleyProtocol p , Crypto ( ProtoCrypto p ), ProtoCrypto p ~ crypto ) =>
239
+ ShelleyProtocol p =>
238
240
ShelleyBlock p era ->
239
- KeyHash 'BlockIssuer crypto
241
+ KeyHash 'BlockIssuer
240
242
blockIssuer = hashKey . pHeaderIssuer . blockHeader
241
243
242
244
slotNumber :: ShelleyProtocol p => ShelleyBlock p era -> SlotNo
0 commit comments