@@ -17,12 +17,11 @@ import qualified Text.JSON.Canonical as CanonicalJSON
17
17
18
18
import Pos.Client.KeyStorage (addSecretKey , getSecretKeysPlain )
19
19
import Pos.Client.Txp.Balances (getBalance )
20
- import Pos.Core (AddrStakeDistribution (.. ), Address , HeavyDlgIndex (.. ),
21
- SoftwareVersion (.. ), StakeholderId , addressHash , mkMultiKeyDistr ,
22
- unsafeGetCoin )
20
+ import Pos.Core (AddrStakeDistribution (.. ), HeavyDlgIndex (.. ), SoftwareVersion (.. ),
21
+ StakeholderId , addressHash , mkMultiKeyDistr , unsafeGetCoin )
23
22
import Pos.Core.Common (AddrAttributes (.. ), AddrSpendingData (.. ), makeAddress )
24
23
import Pos.Core.Configuration (genesisSecretKeys )
25
- import Pos.Core.NetworkMagic (NetworkMagic ( .. ) )
24
+ import Pos.Core.NetworkMagic (makeNetworkMagic )
26
25
import Pos.Core.Txp (TxOut (.. ))
27
26
import Pos.Crypto (ProtocolMagic , PublicKey , emptyPassphrase , encToPublic , fullPublicKeyF ,
28
27
hashHexF , noPassEncrypt , safeCreatePsk , unsafeCheatingHashCoerce ,
@@ -94,6 +93,8 @@ createCommandProcs mpm hasAuxxMode printAction mDiffusion = rights . fix $ \comm
94
93
95
94
let name = " addr" in
96
95
needsAuxxMode name >>= \ Dict ->
96
+ needsProtocolMagic name >>= \ pm ->
97
+ let nm = makeNetworkMagic pm in
97
98
return CommandProc
98
99
{ cpName = name
99
100
, cpArgumentPrepare = map
@@ -104,9 +105,9 @@ createCommandProcs mpm hasAuxxMode printAction mDiffusion = rights . fix $ \comm
104
105
, cpExec = \ (pk', mDistr) -> do
105
106
pk <- toLeft pk'
106
107
addr <- case mDistr of
107
- Nothing -> makePubKeyAddressAuxx fixedNM pk
108
+ Nothing -> makePubKeyAddressAuxx nm pk
108
109
Just distr -> return $
109
- makeAddress (PubKeyASD pk) (AddrAttributes Nothing distr fixedNM )
110
+ makeAddress (PubKeyASD pk) (AddrAttributes Nothing distr nm )
110
111
return $ ValueAddress addr
111
112
, cpHelp = " address for the specified public key. a stake distribution \
112
113
\ can be specified manually (by default it uses the current epoch \
@@ -115,6 +116,7 @@ createCommandProcs mpm hasAuxxMode printAction mDiffusion = rights . fix $ \comm
115
116
116
117
let name = " addr-hd" in
117
118
needsAuxxMode name >>= \ Dict ->
119
+ needsProtocolMagic name >>= \ pm ->
118
120
return CommandProc
119
121
{ cpName = name
120
122
, cpArgumentPrepare = identity
@@ -124,7 +126,8 @@ createCommandProcs mpm hasAuxxMode printAction mDiffusion = rights . fix $ \comm
124
126
sk <- evaluateWHNF (sks !! i) -- WHNF is sufficient to force possible errors
125
127
-- from using (!!). I'd use NF but there's no
126
128
-- NFData instance for secret keys.
127
- addrHD <- deriveHDAddressAuxx fixedNM sk
129
+ let nm = makeNetworkMagic pm
130
+ addrHD <- deriveHDAddressAuxx nm sk
128
131
return $ ValueAddress addrHD
129
132
, cpHelp = " address of the HD wallet for the specified public key"
130
133
},
@@ -182,12 +185,16 @@ createCommandProcs mpm hasAuxxMode printAction mDiffusion = rights . fix $ \comm
182
185
183
186
let name = " balance" in
184
187
needsAuxxMode name >>= \ Dict ->
188
+ needsProtocolMagic name >>= \ pm ->
189
+ let nm = makeNetworkMagic pm in
185
190
return CommandProc
186
191
{ cpName = name
187
192
, cpArgumentPrepare = identity
188
193
, cpArgumentConsumer = getArg (tyAddress `tyEither` tyPublicKey `tyEither` tyInt) " addr"
189
194
, cpExec = \ addr' -> do
190
- addr <- toLeft addr'
195
+ addr <- case addr' of
196
+ Left a -> pure a
197
+ Right pki -> makePubKeyAddressAuxx nm =<< toLeft pki
191
198
balance <- getBalance addr
192
199
return $ ValueNumber (fromIntegral . unsafeGetCoin $ balance)
193
200
, cpHelp = " check the amount of coins on the specified address"
@@ -466,6 +473,8 @@ createCommandProcs mpm hasAuxxMode printAction mDiffusion = rights . fix $ \comm
466
473
467
474
let name = " listaddr" in
468
475
needsAuxxMode name >>= \ Dict ->
476
+ needsProtocolMagic name >>= \ pm ->
477
+ let nm = makeNetworkMagic pm in
469
478
return CommandProc
470
479
{ cpName = name
471
480
, cpArgumentPrepare = identity
@@ -475,8 +484,8 @@ createCommandProcs mpm hasAuxxMode printAction mDiffusion = rights . fix $ \comm
475
484
printAction " Available addresses:"
476
485
for_ (zip [0 :: Int .. ] sks ) $ \ (i, sk) -> do
477
486
let pk = encToPublic sk
478
- addr <- makePubKeyAddressAuxx fixedNM pk
479
- addrHD <- deriveHDAddressAuxx fixedNM sk
487
+ addr <- makePubKeyAddressAuxx nm pk
488
+ addrHD <- deriveHDAddressAuxx nm sk
480
489
printAction $
481
490
sformat (" #" % int% " : addr: " % build% " \n " %
482
491
" pk: " % fullPublicKeyF% " \n " %
@@ -485,7 +494,7 @@ createCommandProcs mpm hasAuxxMode printAction mDiffusion = rights . fix $ \comm
485
494
i addr pk (addressHash pk) addrHD
486
495
walletMB <- (^. usWallet) <$> (view userSecret >>= atomically . readTVar)
487
496
whenJust walletMB $ \ wallet -> do
488
- addrHD <- deriveHDAddressAuxx fixedNM (_wusRootKey wallet)
497
+ addrHD <- deriveHDAddressAuxx nm (_wusRootKey wallet)
489
498
printAction $
490
499
sformat (" Wallet address:\n " %
491
500
" HD addr: " % build)
@@ -536,16 +545,9 @@ instance MonadAuxxMode m => ToLeft m PublicKey Int where
536
545
instance MonadAuxxMode m => ToLeft m StakeholderId PublicKey where
537
546
toLeft = return . either identity addressHash
538
547
539
- instance MonadAuxxMode m => ToLeft m Address PublicKey where
540
- toLeft = either return (makePubKeyAddressAuxx fixedNM)
541
-
542
548
getPublicKeyFromIndex :: MonadAuxxMode m => Int -> m PublicKey
543
549
getPublicKeyFromIndex i = do
544
550
sks <- getSecretKeysPlain
545
551
let sk = sks !! i
546
552
pk = encToPublic sk
547
553
evaluateNF pk
548
-
549
-
550
- fixedNM :: NetworkMagic
551
- fixedNM = NMNothing
0 commit comments