Skip to content

Commit a4dc46d

Browse files
committed
Fix serialisation
1 parent aaf4f14 commit a4dc46d

File tree

2 files changed

+24
-52
lines changed
  • eras
    • conway/impl/src/Cardano/Ledger/Conway
    • dijkstra/src/Cardano/Ledger/Dijkstra

2 files changed

+24
-52
lines changed

eras/conway/impl/src/Cardano/Ledger/Conway/TxCert.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ module Cardano.Ledger.Conway.TxCert (
2626
ConwayGovCert (..),
2727
Delegatee (..),
2828
ConwayEraTxCert (..),
29+
conwayTxCertDelegDecoder,
2930
fromShelleyDelegCert,
3031
toShelleyDelegCert,
3132
getScriptWitnessConwayTxCert,

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

Lines changed: 23 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import Cardano.Ledger.Binary (
2525
EncCBOR (..),
2626
FromCBOR (..),
2727
ToCBOR (..),
28-
decodeNullStrictMaybe,
2928
decodeRecordSum,
3029
encodeListLen,
3130
encodeWord8,
@@ -57,6 +56,7 @@ import Cardano.Ledger.Conway.TxCert (
5756
Delegatee (..),
5857
conwayTotalDepositsTxCerts,
5958
conwayTotalRefundsTxCerts,
59+
conwayTxCertDelegDecoder,
6060
)
6161
import Cardano.Ledger.Core (
6262
Era,
@@ -86,19 +86,19 @@ instance EncCBOR DijkstraDelegCert where
8686
encCBOR = \case
8787
DijkstraRegDelegCert cred (DelegStake poolId) deposit ->
8888
encodeListLen 4
89-
<> encodeWord8 11
89+
<> encodeWord8 19
9090
<> encCBOR cred
9191
<> encCBOR poolId
9292
<> encCBOR deposit
9393
DijkstraRegDelegCert cred (DelegVote drep) deposit ->
9494
encodeListLen 4
95-
<> encodeWord8 12
95+
<> encodeWord8 20
9696
<> encCBOR cred
9797
<> encCBOR drep
9898
<> encCBOR deposit
9999
DijkstraRegDelegCert cred (DelegStakeVote poolId dRep) deposit ->
100100
encodeListLen 5
101-
<> encodeWord8 13
101+
<> encodeWord8 21
102102
<> encCBOR cred
103103
<> encCBOR poolId
104104
<> encCBOR dRep
@@ -126,6 +126,8 @@ data DijkstraTxCert era
126126
data DijkstraTxCertUpgradeError
127127
= RegTxCertExpunged
128128
| UnRegTxCertExpunged
129+
| RegDepositTxCertExpunged
130+
| UnRegDepositTxCertExpunged
129131
| DelegTxCertExpunged
130132
deriving (Eq, Show)
131133

@@ -159,49 +161,18 @@ instance
159161
| 3 <= t && t < 5 -> poolTxCertDecoder t
160162
| t == 5 -> fail "Genesis delegation certificates are no longer supported"
161163
| t == 6 -> fail "MIR certificates are no longer supported"
162-
| 7 <= t -> dijkstraTxCertDelegDecoder t
164+
| 7 <= t && t < 11 -> fail "Certificates without deposits are no longer supported"
165+
| 11 <= t && t < 19 -> conwayTxCertDelegDecoder t
166+
| 19 <= t -> dijkstraTxCertDelegDecoder t
163167
t -> invalidKey t
164168

165169
dijkstraTxCertDelegDecoder :: ConwayEraTxCert era => Word -> Decoder s (Int, TxCert era)
166170
dijkstraTxCertDelegDecoder = \case
167-
7 -> do
168-
cred <- decCBOR
169-
deposit <- decCBOR
170-
pure (3, RegDepositTxCert cred deposit)
171-
8 -> do
172-
cred <- decCBOR
173-
deposit <- decCBOR
174-
pure (3, UnRegDepositTxCert cred deposit)
175-
9 -> delegCertDecoder
176-
10 -> delegCertDecoder
177-
11 -> regDelegCertDecoder 4 (DelegStake <$> decCBOR)
178-
12 -> regDelegCertDecoder 4 (DelegVote <$> decCBOR)
179-
13 -> regDelegCertDecoder 5 (DelegStakeVote <$> decCBOR <*> decCBOR)
180-
14 -> do
181-
cred <- decCBOR
182-
key <- decCBOR
183-
pure (3, AuthCommitteeHotKeyTxCert cred key)
184-
15 -> do
185-
cred <- decCBOR
186-
a <- decodeNullStrictMaybe decCBOR
187-
pure (3, ResignCommitteeColdTxCert cred a)
188-
16 -> do
189-
cred <- decCBOR
190-
deposit <- decCBOR
191-
mAnchor <- decodeNullStrictMaybe decCBOR
192-
pure (4, RegDRepTxCert cred deposit mAnchor)
193-
17 -> do
194-
cred <- decCBOR
195-
deposit <- decCBOR
196-
pure (3, UnRegDRepTxCert cred deposit)
197-
18 -> do
198-
cred <- decCBOR
199-
mAnchor <- decodeNullStrictMaybe decCBOR
200-
pure (3, UpdateDRepTxCert cred mAnchor)
171+
19 -> regDelegCertDecoder 4 (DelegStake <$> decCBOR)
172+
20 -> regDelegCertDecoder 4 (DelegVote <$> decCBOR)
173+
21 -> regDelegCertDecoder 5 (DelegStakeVote <$> decCBOR <*> decCBOR)
201174
k -> invalidKey k
202175
where
203-
delegCertDecoder = fail "Delegation certificates without deposits are no longer supported"
204-
{-# INLINE delegCertDecoder #-}
205176
regDelegCertDecoder n decodeDelegatee = do
206177
cred <- decCBOR
207178
delegatee <- decodeDelegatee
@@ -225,18 +196,18 @@ instance EraTxCert DijkstraEra where
225196
type TxCertUpgradeError DijkstraEra = DijkstraTxCertUpgradeError
226197

227198
upgradeTxCert = \case
228-
RegPoolTxCert poolParams -> Right $ RegPoolTxCert poolParams -- x
229-
RetirePoolTxCert poolId epochNo -> Right $ RetirePoolTxCert poolId epochNo -- x
230-
RegTxCert _ -> Left RegTxCertExpunged -- x
231-
UnRegTxCert _ -> Left UnRegTxCertExpunged -- x
232-
RegDepositTxCert cred c -> Right $ RegDepositTxCert cred c -- x
233-
UnRegDepositTxCert cred c -> Right $ UnRegDepositTxCert cred c -- x
199+
RegPoolTxCert poolParams -> Right $ RegPoolTxCert poolParams
200+
RetirePoolTxCert poolId epochNo -> Right $ RetirePoolTxCert poolId epochNo
201+
RegTxCert _ -> Left RegTxCertExpunged
202+
UnRegTxCert _ -> Left UnRegTxCertExpunged
203+
RegDepositTxCert _ _ -> Left RegDepositTxCertExpunged
204+
UnRegDepositTxCert _ _ -> Left UnRegDepositTxCertExpunged
234205
RegDepositDelegTxCert cred d c -> Right $ RegDepositDelegTxCert cred d c
235-
AuthCommitteeHotKeyTxCert ck hk -> Right $ AuthCommitteeHotKeyTxCert ck hk -- x
236-
ResignCommitteeColdTxCert ck a -> Right $ ResignCommitteeColdTxCert ck a -- x
237-
RegDRepTxCert cred deposit mAnchor -> Right $ RegDRepTxCert cred deposit mAnchor -- x
238-
UnRegDRepTxCert cred deposit -> Right $ UnRegDRepTxCert cred deposit -- x
239-
UpdateDRepTxCert cred mAnchor -> Right $ UpdateDRepTxCert cred mAnchor -- x
206+
AuthCommitteeHotKeyTxCert ck hk -> Right $ AuthCommitteeHotKeyTxCert ck hk
207+
ResignCommitteeColdTxCert ck a -> Right $ ResignCommitteeColdTxCert ck a
208+
RegDRepTxCert cred deposit mAnchor -> Right $ RegDRepTxCert cred deposit mAnchor
209+
UnRegDRepTxCert cred deposit -> Right $ UnRegDRepTxCert cred deposit
210+
UpdateDRepTxCert cred mAnchor -> Right $ UpdateDRepTxCert cred mAnchor
240211
-- Using wildcard here instead of a pattern match on DelegTxCert in order to
241212
-- workaround ghc disrespecting the completeness pragma.
242213
_ -> Left DelegTxCertExpunged

0 commit comments

Comments
 (0)