@@ -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 )
6161import 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
126126data 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
165169dijkstraTxCertDelegDecoder :: ConwayEraTxCert era => Word -> Decoder s (Int , TxCert era )
166170dijkstraTxCertDelegDecoder = \ 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