Skip to content

Commit 92a7b5e

Browse files
Lucsanszkylehins
andcommitted
Fix encoding and decoding
Co-authored-by: Alexey Kuleshevich <[email protected]>
1 parent d9c1cc1 commit 92a7b5e

File tree

1 file changed

+10
-35
lines changed
  • eras/dijkstra/src/Cardano/Ledger/Dijkstra

1 file changed

+10
-35
lines changed

eras/dijkstra/src/Cardano/Ledger/Dijkstra/TxCert.hs

Lines changed: 10 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ module Cardano.Ledger.Dijkstra.TxCert (
2121
import Cardano.Ledger.BaseTypes (kindObject)
2222
import Cardano.Ledger.Binary (
2323
DecCBOR (..),
24-
Decoder,
2524
EncCBOR (..),
2625
FromCBOR (..),
2726
ToCBOR (..),
@@ -34,7 +33,6 @@ import Cardano.Ledger.Binary (
3433
import Cardano.Ledger.Coin (Coin)
3534
import Cardano.Ledger.Conway.Core (
3635
ConwayEraTxCert,
37-
ShelleyEraTxCert (..),
3836
poolCertKeyHashWitness,
3937
pattern AuthCommitteeHotKeyTxCert,
4038
pattern DelegTxCert,
@@ -78,7 +76,6 @@ import Cardano.Ledger.Shelley.TxCert (
7876
encodePoolCert,
7977
encodeShelleyDelegCert,
8078
poolTxCertDecoder,
81-
shelleyTxCertDelegDecoder,
8279
)
8380
import Cardano.Ledger.Val (Val)
8481
import Control.DeepSeq (NFData)
@@ -109,29 +106,29 @@ instance EncCBOR DijkstraDelegCert where
109106
<> encCBOR dRep
110107
DijkstraRegCert cred deposit ->
111108
encodeListLen 3
112-
<> encodeWord8 19
109+
<> encodeWord8 7
113110
<> encCBOR cred
114111
<> encCBOR deposit
115112
DijkstraUnRegCert cred deposit ->
116113
encodeListLen 3
117-
<> encodeWord8 20
114+
<> encodeWord8 8
118115
<> encCBOR cred
119116
<> encCBOR deposit
120117
DijkstraRegDelegCert cred (DelegStake poolId) deposit ->
121118
encodeListLen 4
122-
<> encodeWord8 21
119+
<> encodeWord8 11
123120
<> encCBOR cred
124121
<> encCBOR poolId
125122
<> encCBOR deposit
126123
DijkstraRegDelegCert cred (DelegVote drep) deposit ->
127124
encodeListLen 4
128-
<> encodeWord8 22
125+
<> encodeWord8 12
129126
<> encCBOR cred
130127
<> encCBOR drep
131128
<> encCBOR deposit
132129
DijkstraRegDelegCert cred (DelegStakeVote poolId dRep) deposit ->
133130
encodeListLen 5
134-
<> encodeWord8 23
131+
<> encodeWord8 13
135132
<> encCBOR cred
136133
<> encCBOR poolId
137134
<> encCBOR dRep
@@ -200,45 +197,23 @@ instance
200197

201198
instance
202199
( ConwayEraTxCert era
203-
, ShelleyEraTxCert era
204200
, TxCert era ~ DijkstraTxCert era
205201
) =>
206202
DecCBOR (DijkstraTxCert era)
207203
where
208204
decCBOR = decodeRecordSum "DijkstraTxCert" $ \case
209205
t
210206
| 0 <= t && t < 2 -> fail "Certificates without deposits are no longer supported"
211-
| t == 2 -> shelleyTxCertDelegDecoder t
207+
| t == 2 -> do
208+
cred <- decCBOR
209+
stakePool <- decCBOR
210+
pure (3, DelegTxCert cred (DelegStake stakePool))
212211
| 3 <= t && t < 5 -> poolTxCertDecoder t
213212
| t == 5 -> fail "Genesis delegation certificates are no longer supported"
214213
| t == 6 -> fail "MIR certificates are no longer supported"
215-
| 7 <= t && t < 19 -> conwayTxCertDelegDecoder t
216-
| 19 <= t -> dijkstraTxCertDelegDecoder t
214+
| 7 <= t -> conwayTxCertDelegDecoder t
217215
t -> invalidKey t
218216

219-
dijkstraTxCertDelegDecoder :: ConwayEraTxCert era => Word -> Decoder s (Int, TxCert era)
220-
dijkstraTxCertDelegDecoder = \case
221-
19 -> do
222-
cred <- decCBOR
223-
deposit <- decCBOR
224-
pure (3, RegDepositTxCert cred deposit)
225-
20 -> do
226-
cred <- decCBOR
227-
deposit <- decCBOR
228-
pure (3, UnRegDepositTxCert cred deposit)
229-
21 -> regDelegCertDecoder 4 (DelegStake <$> decCBOR)
230-
22 -> regDelegCertDecoder 4 (DelegVote <$> decCBOR)
231-
23 -> regDelegCertDecoder 5 (DelegStakeVote <$> decCBOR <*> decCBOR)
232-
k -> invalidKey k
233-
where
234-
regDelegCertDecoder n decodeDelegatee = do
235-
cred <- decCBOR
236-
delegatee <- decodeDelegatee
237-
deposit <- decCBOR
238-
pure (n, RegDepositDelegTxCert cred delegatee deposit)
239-
{-# INLINE regDelegCertDecoder #-}
240-
{-# INLINE dijkstraTxCertDelegDecoder #-}
241-
242217
instance (Era era, Val (Value era)) => ToCBOR (DijkstraTxCert era) where
243218
toCBOR = toPlainEncoding (eraProtVerLow @era) . encCBOR
244219

0 commit comments

Comments
 (0)