1
+ {-# LANGUAGE LambdaCase #-}
2
+
1
3
module Cardano.CLI.Shelley.Run.StakeAddress
2
4
( ShelleyStakeAddressCmdError (ShelleyStakeAddressCmdReadKeyFileError )
3
5
, renderShelleyStakeAddressCmdError
@@ -89,50 +91,23 @@ runStakeAddressBuild
89
91
-> NetworkId
90
92
-> Maybe OutputFile
91
93
-> ExceptT ShelleyStakeAddressCmdError IO ()
92
- runStakeAddressBuild stakeVerifier network mOutputFp =
93
- case stakeVerifier of
94
- StakeVerifierScriptFile (ScriptFile sFile) -> do
95
- ScriptInAnyLang _ script <- firstExceptT ShelleyStakeAddressCmdReadScriptFileError
96
- $ readFileScriptInAnyLang sFile
97
- let stakeCred = StakeCredentialByScript $ hashScript script
98
- stakeAddr = makeStakeAddress network stakeCred
99
- stakeAddrText = serialiseAddress stakeAddr
100
-
101
- case mOutputFp of
102
- Just (OutputFile fpath) -> liftIO $ Text. writeFile fpath stakeAddrText
103
- Nothing -> liftIO $ Text. putStrLn stakeAddrText
104
-
105
- StakeVerifierKey stakeVerKeyOrFile -> do
106
- stakeVerKey <- firstExceptT ShelleyStakeAddressCmdReadKeyFileError
107
- . newExceptT
108
- $ readVerificationKeyOrFile AsStakeKey stakeVerKeyOrFile
109
-
110
- let stakeCred = StakeCredentialByKey (verificationKeyHash stakeVerKey)
111
- stakeAddr = makeStakeAddress network stakeCred
112
- stakeAddrText = serialiseAddress stakeAddr
113
-
114
- case mOutputFp of
115
- Just (OutputFile fpath) -> liftIO $ Text. writeFile fpath stakeAddrText
116
- Nothing -> liftIO $ Text. putStrLn stakeAddrText
94
+ runStakeAddressBuild stakeVerifier network mOutputFp = do
95
+ stakeAddr <- getStakeAddressFromVerifier network stakeVerifier
96
+ let stakeAddrText = serialiseAddress stakeAddr
97
+ liftIO $
98
+ case mOutputFp of
99
+ Just (OutputFile fpath) -> Text. writeFile fpath stakeAddrText
100
+ Nothing -> Text. putStrLn stakeAddrText
117
101
118
102
119
103
runStakeCredentialRegistrationCert
120
104
:: StakeVerifier
121
105
-> OutputFile
122
106
-> ExceptT ShelleyStakeAddressCmdError IO ()
123
- runStakeCredentialRegistrationCert stakeVerifier (OutputFile oFp) =
124
- case stakeVerifier of
125
- StakeVerifierScriptFile (ScriptFile sFile) -> do
126
- ScriptInAnyLang _ script <- firstExceptT ShelleyStakeAddressCmdReadScriptFileError
127
- $ readFileScriptInAnyLang sFile
128
- let stakeCred = StakeCredentialByScript $ hashScript script
129
- writeRegistrationCert stakeCred
130
- StakeVerifierKey stakeVerKeyOrFile -> do
131
- stakeVerKey <- firstExceptT ShelleyStakeAddressCmdReadKeyFileError
132
- . newExceptT
133
- $ readVerificationKeyOrFile AsStakeKey stakeVerKeyOrFile
134
- let stakeCred = StakeCredentialByKey (verificationKeyHash stakeVerKey)
135
- writeRegistrationCert stakeCred
107
+ runStakeCredentialRegistrationCert stakeVerifier (OutputFile oFp) = do
108
+ stakeCred <- getStakeCredentialFromVerifier stakeVerifier
109
+ writeRegistrationCert stakeCred
110
+
136
111
where
137
112
writeRegistrationCert
138
113
:: StakeCredential
@@ -160,19 +135,9 @@ runStakeCredentialDelegationCert stakeVerifier poolVKeyOrHashOrFile (OutputFile
160
135
firstExceptT
161
136
ShelleyStakeAddressCmdReadKeyFileError
162
137
(newExceptT $ readVerificationKeyOrHashOrFile AsStakePoolKey poolVKeyOrHashOrFile)
138
+ stakeCred <- getStakeCredentialFromVerifier stakeVerifier
139
+ writeDelegationCert stakeCred poolStakeVKeyHash
163
140
164
- case stakeVerifier of
165
- StakeVerifierScriptFile (ScriptFile sFile) -> do
166
- ScriptInAnyLang _ script <- firstExceptT ShelleyStakeAddressCmdReadScriptFileError
167
- $ readFileScriptInAnyLang sFile
168
- let stakeCred = StakeCredentialByScript $ hashScript script
169
- writeDelegationCert stakeCred poolStakeVKeyHash
170
- StakeVerifierKey stakeVerKeyOrFile -> do
171
- stakeVkey <- firstExceptT ShelleyStakeAddressCmdReadKeyFileError
172
- . newExceptT
173
- $ readVerificationKeyOrFile AsStakeKey stakeVerKeyOrFile
174
- let stakeCred = StakeCredentialByKey (verificationKeyHash stakeVkey)
175
- writeDelegationCert stakeCred poolStakeVKeyHash
176
141
where
177
142
writeDelegationCert
178
143
:: StakeCredential
@@ -192,19 +157,10 @@ runStakeCredentialDeRegistrationCert
192
157
:: StakeVerifier
193
158
-> OutputFile
194
159
-> ExceptT ShelleyStakeAddressCmdError IO ()
195
- runStakeCredentialDeRegistrationCert stakeVerifier (OutputFile oFp) =
196
- case stakeVerifier of
197
- StakeVerifierScriptFile (ScriptFile sFile) -> do
198
- ScriptInAnyLang _ script <- firstExceptT ShelleyStakeAddressCmdReadScriptFileError
199
- $ readFileScriptInAnyLang sFile
200
- let stakeCred = StakeCredentialByScript $ hashScript script
201
- writeDeregistrationCert stakeCred
202
- StakeVerifierKey stakeVerKeyOrFile -> do
203
- stakeVkey <- firstExceptT ShelleyStakeAddressCmdReadKeyFileError
204
- . newExceptT
205
- $ readVerificationKeyOrFile AsStakeKey stakeVerKeyOrFile
206
- let stakeCred = StakeCredentialByKey (verificationKeyHash stakeVkey)
207
- writeDeregistrationCert stakeCred
160
+ runStakeCredentialDeRegistrationCert stakeVerifier (OutputFile oFp) = do
161
+ stakeCred <- getStakeCredentialFromVerifier stakeVerifier
162
+ writeDeregistrationCert stakeCred
163
+
208
164
where
209
165
writeDeregistrationCert
210
166
:: StakeCredential
@@ -217,3 +173,31 @@ runStakeCredentialDeRegistrationCert stakeVerifier (OutputFile oFp) =
217
173
218
174
deregCertDesc :: TextEnvelopeDescr
219
175
deregCertDesc = " Stake Address Deregistration Certificate"
176
+
177
+
178
+ getStakeCredentialFromVerifier
179
+ :: StakeVerifier -> ExceptT ShelleyStakeAddressCmdError IO StakeCredential
180
+ getStakeCredentialFromVerifier = \ case
181
+ StakeVerifierScriptFile (ScriptFile sFile) -> do
182
+ ScriptInAnyLang _ script <-
183
+ firstExceptT ShelleyStakeAddressCmdReadScriptFileError $
184
+ readFileScriptInAnyLang sFile
185
+ pure $ StakeCredentialByScript $ hashScript script
186
+
187
+ StakeVerifierKey stakeVerKeyOrFile -> do
188
+ stakeVerKey <-
189
+ firstExceptT ShelleyStakeAddressCmdReadKeyFileError
190
+ . newExceptT
191
+ $ readVerificationKeyOrFile AsStakeKey stakeVerKeyOrFile
192
+ pure $ StakeCredentialByKey $ verificationKeyHash stakeVerKey
193
+
194
+ StakeVerifierAddress stakeAddr -> pure $ stakeAddressCredential stakeAddr
195
+
196
+ getStakeAddressFromVerifier
197
+ :: NetworkId
198
+ -> StakeVerifier
199
+ -> ExceptT ShelleyStakeAddressCmdError IO StakeAddress
200
+ getStakeAddressFromVerifier networkId = \ case
201
+ StakeVerifierAddress stakeAddr -> pure stakeAddr
202
+ stakeVerifier ->
203
+ makeStakeAddress networkId <$> getStakeCredentialFromVerifier stakeVerifier
0 commit comments