@@ -56,6 +56,7 @@ import Cardano.Ledger.Conway.TxCert (
5656 )
5757import Cardano.Ledger.Credential (Credential )
5858import Cardano.Ledger.DRep
59+ import qualified Cardano.Ledger.Shelley.Rules as Shelley
5960import Control.DeepSeq (NFData )
6061import Control.Monad (forM_ , guard , unless )
6162import Control.State.Transition (
@@ -104,7 +105,7 @@ deriving instance Show (PParams era) => Show (ConwayDelegEnv era)
104105
105106data ConwayDelegPredFailure era
106107 = IncorrectDepositDELEG Coin
107- | StakeKeyRegisteredDELEG ( Credential Staking )
108+ | DelegAccountAlreadyRegistered ( Shelley. AccountAlreadyRegistered era )
108109 | StakeKeyNotRegisteredDELEG (Credential Staking )
109110 | StakeKeyHasNonZeroAccountBalanceDELEG Coin
110111 | DelegateeDRepNotRegisteredDELEG (Credential DRepRole )
@@ -117,6 +118,9 @@ type instance EraRuleFailure "DELEG" ConwayEra = ConwayDelegPredFailure ConwayEr
117118
118119type instance EraRuleEvent " DELEG" ConwayEra = VoidEraRule " DELEG" ConwayEra
119120
121+ instance InjectRuleFailure " DELEG" Shelley. AccountAlreadyRegistered ConwayEra where
122+ injectFailure = DelegAccountAlreadyRegistered
123+
120124instance InjectRuleFailure " DELEG" ConwayDelegPredFailure ConwayEra
121125
122126instance NFData (ConwayDelegPredFailure era )
@@ -126,8 +130,8 @@ instance Era era => EncCBOR (ConwayDelegPredFailure era) where
126130 encode . \ case
127131 IncorrectDepositDELEG mCoin ->
128132 Sum (IncorrectDepositDELEG @ era ) 1 !> To mCoin
129- StakeKeyRegisteredDELEG stakeCred ->
130- Sum (StakeKeyRegisteredDELEG @ era ) 2 !> To stakeCred
133+ DelegAccountAlreadyRegistered stakeCred ->
134+ Sum (DelegAccountAlreadyRegistered @ era ) 2 !> To stakeCred
131135 StakeKeyNotRegisteredDELEG stakeCred ->
132136 Sum (StakeKeyNotRegisteredDELEG @ era ) 3 !> To stakeCred
133137 StakeKeyHasNonZeroAccountBalanceDELEG mCoin ->
@@ -144,7 +148,7 @@ instance Era era => EncCBOR (ConwayDelegPredFailure era) where
144148instance Era era => DecCBOR (ConwayDelegPredFailure era ) where
145149 decCBOR = decode $ Summands " ConwayDelegPredFailure" $ \ case
146150 1 -> SumD IncorrectDepositDELEG <! From
147- 2 -> SumD StakeKeyRegisteredDELEG <! From
151+ 2 -> SumD DelegAccountAlreadyRegistered <! From
148152 3 -> SumD StakeKeyNotRegisteredDELEG <! From
149153 4 -> SumD StakeKeyHasNonZeroAccountBalanceDELEG <! From
150154 5 -> SumD DelegateeDRepNotRegisteredDELEG <! From
@@ -162,6 +166,7 @@ instance
162166 , Environment (EraRule " DELEG" era ) ~ ConwayDelegEnv era
163167 , EraRule " DELEG" era ~ ConwayDELEG era
164168 , InjectRuleFailure " DELEG" ConwayDelegPredFailure era
169+ , InjectRuleFailure " DELEG" Shelley. AccountAlreadyRegistered era
165170 ) =>
166171 STS (ConwayDELEG era )
167172 where
@@ -182,6 +187,7 @@ conwayDelegTransition ::
182187 , Environment (EraRule rule era ) ~ ConwayDelegEnv era
183188 , State (EraRule rule era ) ~ CertState era
184189 , InjectRuleFailure rule ConwayDelegPredFailure era
190+ , InjectRuleFailure rule Shelley. AccountAlreadyRegistered era
185191 ) =>
186192 TransitionRule (EraRule rule era )
187193conwayDelegTransition = do
@@ -209,9 +215,6 @@ conwayDelegTransition = do
209215 }
210216 )
211217 else injectFailure $ IncorrectDepositDELEG deposit
212- checkStakeKeyNotRegistered stakeCred =
213- not (isAccountRegistered stakeCred accounts)
214- ?! injectFailure (StakeKeyRegisteredDELEG stakeCred)
215218 checkStakeDelegateeRegistered =
216219 let checkPoolRegistered targetPool =
217220 targetPool
@@ -232,7 +235,7 @@ conwayDelegTransition = do
232235 case cert of
233236 ConwayRegCert stakeCred sMayDeposit -> do
234237 forM_ sMayDeposit checkDepositAgainstPParams
235- checkStakeKeyNotRegistered stakeCred
238+ Shelley. checkAccountAlreadyRegistered @ rule accounts stakeCred
236239 pure $
237240 certState
238241 & certDStateL . accountsL
@@ -292,7 +295,7 @@ conwayDelegTransition = do
292295 certState
293296 ConwayRegDelegCert stakeCred delegatee deposit -> do
294297 checkDepositAgainstPParams deposit
295- checkStakeKeyNotRegistered stakeCred
298+ Shelley. checkAccountAlreadyRegistered accounts stakeCred
296299 checkStakeDelegateeRegistered delegatee
297300 pure $
298301 processDelegationInternal (pvMajor pv < natVersion @ 10 ) stakeCred Nothing delegatee $
0 commit comments