diff --git a/ChangeLog.md b/ChangeLog.md index 313d6067..38aae91c 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -2,6 +2,12 @@ ## Unreleased +## 6.2.1 + +- Remove uses of `baker` term when printing chain parameters. +- Remove remaining uses of `baker` in output of `validator add` and `validator + configure` command and in their options. + ## 6.2.0 - Revise client's reconnect handling so that the client will no longer attempt diff --git a/concordium-client.cabal b/concordium-client.cabal index e30e7545..63d4259f 100644 --- a/concordium-client.cabal +++ b/concordium-client.cabal @@ -5,7 +5,7 @@ cabal-version: 1.24 -- see: https://github.com/sol/hpack name: concordium-client -version: 6.2.0 +version: 6.2.1 description: Please see the README on GitHub at homepage: https://github.com/Concordium/concordium-client#readme bug-reports: https://github.com/Concordium/concordium-client/issues diff --git a/package.yaml b/package.yaml index 14be6266..219cfd96 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: concordium-client -version: 6.2.0 +version: 6.2.1 github: "Concordium/concordium-client" author: "Concordium" maintainer: "developers@concordium.com" diff --git a/src/Concordium/Client/Commands.hs b/src/Concordium/Client/Commands.hs index ba104013..dcc8bbeb 100644 --- a/src/Concordium/Client/Commands.hs +++ b/src/Concordium/Client/Commands.hs @@ -1712,7 +1712,7 @@ bakerAddCmd = <$> (option (eitherReader openStatusFromStringInform) (long "open-delegation-for" <> metavar "SELECTION" <> help helpOpenDelegationFor)) <*> bakerOrValidatorUrl <*> (option (eitherReader amountFractionFromStringInform) (long "delegation-transaction-fee-commission" <> metavar "DECIMAL-FRACTION" <> help ("Fraction the validator takes in commission from delegators on transaction fee rewards. " ++ rangesHelpString "transaction fee commission"))) - <*> (option (eitherReader amountFractionFromStringInform) (long "delegation-baking-commission" <> metavar "DECIMAL-FRACTION" <> help ("Fraction the validator takes in commission from delegators on baking rewards. " ++ rangesHelpString "baking reward commission"))) + <*> blockCommission <*> (option (eitherReader amountFractionFromStringInform) (long "delegation-finalization-commission" <> metavar "DECIMAL-FRACTION" <> help ("Fraction the validator takes in commission from delegators on finalization rewards. " ++ rangesHelpString "finalization reward commission"))) ) <*> optional (strOption (long "out" <> metavar "FILE" <> help "File to write the validator credentials to, in case of successful transaction. These can be used to start the node.")) @@ -1720,6 +1720,12 @@ bakerAddCmd = (progDesc "Deploy validator credentials to the chain.") ) +-- | Parser for block reward commission. It supports the legacy terminology of "baking-commission" but it is hidden. +blockCommission :: Parser AmountFraction +blockCommission = blockCommissionGen internal "delegation-baking-commission" <|> blockCommissionGen mempty "delegation-block-reward-commission" + where + blockCommissionGen modifier name = option (eitherReader amountFractionFromStringInform) (modifier <> long name <> metavar "DECIMAL-FRACTION" <> help ("Fraction the validator takes in commission from delegators on block rewards. " ++ rangesHelpString "block reward commission")) + allowedValuesOpenDelegationForAsString :: String allowedValuesOpenDelegationForAsString = " - 'all' (delegators are allowed to join the pool),\n" @@ -1753,7 +1759,7 @@ bakerConfigureCmd = <*> optional (option (eitherReader openStatusFromStringInform) (long "open-delegation-for" <> metavar "SELECTION" <> help helpOpenDelegationFor)) <*> optional bakerOrValidatorUrl <*> optional (option (eitherReader amountFractionFromStringInform) (long "delegation-transaction-fee-commission" <> metavar "DECIMAL-FRACTION" <> help ("Fraction the validator takes in commission from delegators on transaction fee rewards. " ++ rangesHelpString "transaction fee commission"))) - <*> optional (option (eitherReader amountFractionFromStringInform) (long "delegation-baking-commission" <> metavar "DECIMAL-FRACTION" <> help ("Fraction the validator takes in commission from delegators on baking rewards. " ++ rangesHelpString "baking reward commission"))) + <*> optional blockCommission <*> optional (option (eitherReader amountFractionFromStringInform) (long "delegation-finalization-commission" <> metavar "DECIMAL-FRACTION" <> help ("Fraction the validator takes in commission from delegators on finalization rewards. " ++ rangesHelpString "finalization reward commission"))) <*> optional (strOption (long "keys-in" <> metavar "FILE" <> help "File containing validator credentials.")) <*> optional (strOption (long "keys-out" <> metavar "FILE" <> help "File to write updated validator credentials to, in case of successful transaction. These can be used to start the node.")) diff --git a/src/Concordium/Client/Output.hs b/src/Concordium/Client/Output.hs index 6dc0b266..a32a570f 100644 --- a/src/Concordium/Client/Output.hs +++ b/src/Concordium/Client/Output.hs @@ -249,7 +249,7 @@ printAccountInfo addr a verbose showEncrypted mEncKey = do else return () case Types.aiStakingInfo a of - Types.AccountStakingNone -> tell ["Baking or delegating stake: no"] + Types.AccountStakingNone -> tell ["Validator or delegator: no"] Types.AccountStakingBaker{..} -> do let bkid = [i|Validator: \##{show . Types._bakerIdentity $ asiBakerInfo}|] stkstr = [i| - Staked amount: #{showCcd asiStakedAmount}|] @@ -819,7 +819,7 @@ showEvent verbose ciM = \case Types.BakerSetTransactionFeeCommission{..} -> verboseOrNothing $ printf "validator %s changed transaction fee commission to %s" (showBaker ebstfcBakerId ebstfcAccount) (show ebstfcTransactionFeeCommission) Types.BakerSetBakingRewardCommission{..} -> - verboseOrNothing $ printf "validator %s changed baking reward commission to %s" (showBaker ebsbrcBakerId ebsbrcAccount) (show ebsbrcBakingRewardCommission) + verboseOrNothing $ printf "validator %s changed block reward commission to %s" (showBaker ebsbrcBakerId ebsbrcAccount) (show ebsbrcBakingRewardCommission) Types.BakerSetFinalizationRewardCommission{..} -> verboseOrNothing $ printf "validator %s changed finalization reward commission to %s" (showBaker ebsfrcBakerId ebsfrcAccount) (show ebsfrcFinalizationRewardCommission) Types.DelegationStakeIncreased{..} -> @@ -1026,21 +1026,21 @@ showRejectReason verbose = \case Types.NonExistentCredIDs cids -> [i|credential registration ids #{cids} do not exist|] Types.RemoveFirstCredential -> [i|attempt to remove the first credential of the account|] Types.CredentialHolderDidNotSign -> [i|credential holder did not sign the credential key update|] - Types.StakeUnderMinimumThresholdForBaking -> "the desired stake is under the minimum threshold for baking" + Types.StakeUnderMinimumThresholdForBaking -> "the desired stake is under the minimum threshold for a validator" Types.NotAllowedMultipleCredentials -> "the account is not allowed to have multiple credentials" Types.NotAllowedToReceiveEncrypted -> "the account is not allowed to receive shielded transfers" Types.NotAllowedToHandleEncrypted -> "the account is not allowed handle shielded amounts" Types.MissingBakerAddParameters -> "missing parameters to add new validator" Types.FinalizationRewardCommissionNotInRange -> "finalization reward commission was not within the allowed range" - Types.BakingRewardCommissionNotInRange -> "baking reward commission was not within the allowed range" + Types.BakingRewardCommissionNotInRange -> "block reward commission was not within the allowed range" Types.TransactionFeeCommissionNotInRange -> "transaction fee commission fee was not within the allowed range" Types.AlreadyADelegator -> "the account is already a delegator" Types.InsufficientBalanceForDelegationStake -> "the balance on the account is insufficient to cover the desired stake" Types.MissingDelegationAddParameters -> "missing parameters to add new delegator" Types.DelegatorInCooldown -> "change could not be completed because the delegator is in the cooldown period" Types.NotADelegator addr -> printf "attempt to remove a delegator account %s that is not a delegator" (show addr) - Types.StakeOverMaximumThresholdForPool -> "baking pool's total capital would become too large" - Types.PoolWouldBecomeOverDelegated -> "fraction of delegated capital to baking pool would become too large" + Types.StakeOverMaximumThresholdForPool -> "staking pool's total capital would become too large" + Types.PoolWouldBecomeOverDelegated -> "fraction of delegated capital to staking pool would become too large" Types.PoolClosed -> "pool not open for delegation" Types.InsufficientDelegationStake -> "not allowed to add delegator with 0 stake" Types.DelegationTargetNotABaker bid -> printf "delegation target %s is not a validator id" (show bid) @@ -1160,7 +1160,7 @@ printChainParametersV0 :: ChainParameters' 'ChainParametersV0 -> Printer printChainParametersV0 ChainParameters{..} = tell [ [i|\# Validator parameters |], - [i| + baker extra cooldown: #{(_cpBakerExtraCooldownEpochs _cpCooldownParameters)} epochs|], + [i| + validator extra cooldown: #{(_cpBakerExtraCooldownEpochs _cpCooldownParameters)} epochs|], [i| + stake threshold to become a validator: #{showCcd (_ppBakerStakeThreshold _cpPoolParameters)}|], "", [i|\# Exchange rate parameters: |], @@ -1171,13 +1171,13 @@ printChainParametersV0 ChainParameters{..} = [i|\# Parameters that affect rewards distribution:|], [i| + mint rate per slot: #{_cpRewardParameters ^. (mdMintPerSlot . unconditionally)}|], [i| + mint distribution:|], - [i| * baking reward: #{_cpRewardParameters ^. mdBakingReward}|], + [i| * block reward: #{_cpRewardParameters ^. mdBakingReward}|], [i| * finalization reward: #{_cpRewardParameters ^. mdFinalizationReward}|], [i| + transaction fee distribution:|], [i| * fraction for the validator: #{_cpRewardParameters ^. tfdBaker}|], [i| * fraction for the GAS account: #{_cpRewardParameters ^. tfdGASAccount}|], [i| + GAS account distribution:|], - [i| * baking a block: #{_cpRewardParameters ^. gasBaker}|], + [i| * producing a block: #{_cpRewardParameters ^. gasBaker}|], [i| * adding a finalization proof: #{showConditionally (_cpRewardParameters ^. gasFinalizationProof)}|], [i| * adding a credential deployment: #{_cpRewardParameters ^. gasAccountCreation}|], [i| * adding a chain update: #{_cpRewardParameters ^. gasChainUpdate}|], @@ -1199,12 +1199,12 @@ printChainParametersV1 ChainParameters{..} = [i| + maximum factor a pool may stake relative to the validator's stake: #{_cpPoolParameters ^. ppLeverageBound}|], [i| + pool owner cooldown duration: #{durationToText (durationSeconds (_cpCooldownParameters ^. cpPoolOwnerCooldown) * 1000)}|], [i| + allowed range for finalization commission: #{showInclusiveRange show (_cpPoolParameters ^. (ppCommissionBounds . finalizationCommissionRange))}|], - [i| + allowed range for baking commission: #{showInclusiveRange show (_cpPoolParameters ^. (ppCommissionBounds . bakingCommissionRange))}|], + [i| + allowed range for block reward commission: #{showInclusiveRange show (_cpPoolParameters ^. (ppCommissionBounds . bakingCommissionRange))}|], [i| + allowed range for transaction commission: #{showInclusiveRange show (_cpPoolParameters ^. (ppCommissionBounds . transactionCommissionRange))}|], "", [i|\# Passive delegation parameters:|], [i| + finalization commission: #{_cpPoolParameters ^. (ppPassiveCommissions . Types.finalizationCommission)}|], - [i| + baking commission: #{_cpPoolParameters ^. (ppPassiveCommissions . Types.bakingCommission)}|], + [i| + block reward commission: #{_cpPoolParameters ^. (ppPassiveCommissions . Types.bakingCommission)}|], [i| + transaction commission: #{_cpPoolParameters ^. (ppPassiveCommissions . Types.transactionCommission)}|], "", [i|\# Parameters related to delegators: |], @@ -1218,13 +1218,13 @@ printChainParametersV1 ChainParameters{..} = [i|\# Parameters that affect rewards distribution:|], [i| + mint amount per reward period: #{_cpTimeParameters ^. tpMintPerPayday}|], [i| + mint distribution:|], - [i| * baking reward: #{_cpRewardParameters ^. mdBakingReward}|], + [i| * block reward: #{_cpRewardParameters ^. mdBakingReward}|], [i| * finalization reward: #{_cpRewardParameters ^. mdFinalizationReward}|], [i| + transaction fee distribution:|], [i| * validator: #{_cpRewardParameters ^. tfdBaker}|], [i| * GAS account: #{_cpRewardParameters ^. tfdGASAccount}|], [i| + GAS rewards:|], - [i| * baking a block: #{_cpRewardParameters ^. gasBaker}|], + [i| * producing a block: #{_cpRewardParameters ^. gasBaker}|], [i| * adding a finalization proof: #{showConditionally (_cpRewardParameters ^. gasFinalizationProof)}|], [i| * adding a credential deployment: #{_cpRewardParameters ^. gasAccountCreation}|], [i| * adding a chain update: #{_cpRewardParameters ^. gasChainUpdate}|], @@ -1248,12 +1248,12 @@ printChainParametersV2 ChainParameters{..} = [i| + maximum factor a pool may stake relative to the validator's stake: #{_cpPoolParameters ^. ppLeverageBound}|], [i| + pool owner cooldown duration: #{durationToText (durationSeconds (_cpCooldownParameters ^. cpPoolOwnerCooldown) * 1000)}|], [i| + allowed range for finalization commission: #{showInclusiveRange show (_cpPoolParameters ^. (ppCommissionBounds . finalizationCommissionRange))}|], - [i| + allowed range for baking commission: #{showInclusiveRange show (_cpPoolParameters ^. (ppCommissionBounds . bakingCommissionRange))}|], + [i| + allowed range for block reward commission: #{showInclusiveRange show (_cpPoolParameters ^. (ppCommissionBounds . bakingCommissionRange))}|], [i| + allowed range for transaction commission: #{showInclusiveRange show (_cpPoolParameters ^. (ppCommissionBounds . transactionCommissionRange))}|], "", [i|\# Passive delegation parameters:|], [i| + finalization commission: #{_cpPoolParameters ^. (ppPassiveCommissions . Types.finalizationCommission)}|], - [i| + baking commission: #{_cpPoolParameters ^. (ppPassiveCommissions . Types.bakingCommission)}|], + [i| + block reward commission: #{_cpPoolParameters ^. (ppPassiveCommissions . Types.bakingCommission)}|], [i| + transaction commission: #{_cpPoolParameters ^. (ppPassiveCommissions . Types.transactionCommission)}|], "", [i|\# Parameters related to delegators: |], @@ -1267,13 +1267,13 @@ printChainParametersV2 ChainParameters{..} = [i|\# Parameters that affect rewards distribution:|], [i| + mint amount per reward period: #{_cpTimeParameters ^. tpMintPerPayday}|], [i| + mint distribution:|], - [i| * baking reward: #{_cpRewardParameters ^. mdBakingReward}|], + [i| * block reward: #{_cpRewardParameters ^. mdBakingReward}|], [i| * finalization reward: #{_cpRewardParameters ^. mdFinalizationReward}|], [i| + transaction fee distribution:|], [i| * validator: #{_cpRewardParameters ^. tfdBaker}|], [i| * GAS account: #{_cpRewardParameters ^. tfdGASAccount}|], [i| + GAS rewards:|], - [i| * baking a block: #{_cpRewardParameters ^. gasBaker}|], + [i| * producing a block: #{_cpRewardParameters ^. gasBaker}|], [i| * adding a finalization proof: |] <> showConditionally (_cpRewardParameters ^. gasFinalizationProof), [i| * adding a credential deployment: #{_cpRewardParameters ^. gasAccountCreation}|], [i| * adding a chain update: #{_cpRewardParameters ^. gasChainUpdate}|], diff --git a/src/Concordium/Client/Runner.hs b/src/Concordium/Client/Runner.hs index 455fb51a..52c4324a 100644 --- a/src/Concordium/Client/Runner.hs +++ b/src/Concordium/Client/Runner.hs @@ -2947,7 +2947,7 @@ processBakerConfigureCmd baseCfgDir verbose backend txOpts isBakerConfigure cbCa ++ (if isNothing inputKeysFile then "\n--keys-in," else "") ++ (if isNothing metadataURL then "\n--validator-url," else "") ++ (if isNothing cbTransactionFeeCommission then "\n--delegation-transaction-fee-commission," else "") - ++ (if isNothing cbBakingRewardCommission then "\n--delegation-baking-commission," else "") + ++ (if isNothing cbBakingRewardCommission then "\n--delegation-block-reward-commission," else "") ++ (if isNothing cbFinalizationRewardCommission then "\n--delegation-finalization-commission," else "") ) ++ (if isNothing cbRestakeEarnings then ". \nExactly one of the options --restake and --no-restake must be present" else "") @@ -3099,8 +3099,8 @@ processBakerConfigureCmd baseCfgDir verbose backend txOpts isBakerConfigure cbCa configureRestakeLogMsg = case cbRestakeEarnings of Nothing -> [] - Just True -> ["rewards will be automatically added to the baking stake"] - Just False -> ["rewards will _not_ be automatically added to the baking stake"] + Just True -> ["rewards will be added to the validator stake automatically"] + Just False -> ["rewards will _not_ be added to the validator stake automatically"] configureOpenForDelegationLogMsg = case cbOpenForDelegation of @@ -3117,7 +3117,7 @@ processBakerConfigureCmd baseCfgDir verbose backend txOpts isBakerConfigure cbCa configureBakingRewardCommissionLogMsg = case cbBakingRewardCommission of Nothing -> [] - Just fee -> [printf "baking reward commission from delegators will be %s" (show fee)] + Just fee -> [printf "block reward commission from delegators will be %s" (show fee)] configureFinalizationRewardCommissionLogMsg = case cbFinalizationRewardCommission of @@ -3289,8 +3289,8 @@ processBakerAddCmd baseCfgDir verbose backend txOpts abBakingStake abRestakeEarn configureRestakeLogMsg = case abRestakeEarnings of - True -> ["rewards will be automatically added to the baking stake"] - False -> ["rewards will _not_ be automatically added to the baking stake"] + True -> ["rewards will be added to the validator stake automatically"] + False -> ["rewards will _not_ be added to the validator stake automatically"] readInputKeysFile baseCfg = do encSignData <- getAccountCfgFromTxOpts baseCfg txOpts @@ -3677,7 +3677,7 @@ processBakerCmd action baseCfgDir verbose backend = ++ "--open-delegation-for,\n" ++ "--validator-url,\n" ++ "--delegation-transaction-fee-commission,\n" - ++ "--delegation-baking-commission,\n" + ++ "--delegation-block-reward-commission,\n" ++ "--delegation-finalization-commission\nmust be present" ] confirmed <- askConfirmation $ Just "This transaction will most likely be rejected by the chain, do you wish to send it anyway" @@ -4292,9 +4292,9 @@ printPeerData bootstrapper pInfos Queries.NodeInfo{..} = Queries.NodeActive cInfo -> "Node (running, " <> case Queries.status cInfo of - Queries.PassiveBaker _ -> "not baking)" - Queries.ActiveBaker -> "in current baking committee)" - Queries.ActiveFinalizer -> "in current baking and finalizer committee)" + Queries.PassiveBaker _ -> "not a validator)" + Queries.ActiveBaker -> "a validator but not a finalizer)" + Queries.ActiveFinalizer -> "in validator and in finalization committee)" printNodeInfo :: (MonadIO m) => Queries.NodeInfo -> m () printNodeInfo Queries.NodeInfo{..} = @@ -4309,7 +4309,7 @@ printNodeInfo Queries.NodeInfo{..} = putStrLn $ "Baker running: " ++ show (getBakerRunning details) putStrLn $ "Consensus running: " ++ show (getConsensusRunning details) putStrLn $ "Consensus type: " ++ getConsensusType details - putStrLn $ "Baker committee member: " ++ getBakerCommitteeMember details + putStrLn $ "Validator member: " ++ getBakerCommitteeMember details putStrLn $ "Finalization committee member: " ++ getFinalizerCommitteeMember details where showNodeType = diff --git a/test/SimpleClientTests/AccountSpec.hs b/test/SimpleClientTests/AccountSpec.hs index 860cfac4..9a5bb811 100644 --- a/test/SimpleClientTests/AccountSpec.hs +++ b/test/SimpleClientTests/AccountSpec.hs @@ -231,7 +231,7 @@ printAccountInfoSpec = describe "printAccountInfo" $ do "Nonce: 2", "Encryption public key: a820662531d0aac70b3a80dd8a249aa692436097d06da005aec7c56aad17997ec8331d1e4050fd8dced2b92f06277bd5aae71cf315a6d70c849508f6361ac6d51c2168305dd1604c4c6448da4499b2f14afb94fff0f42b79a68ed7ba206301f4", "", - "Baking or delegating stake: no", + "Validator or delegator: no", "", "Credentials: none" ] @@ -289,7 +289,7 @@ printAccountInfoSpec = describe "printAccountInfo" $ do "Nonce: 2", "Encryption public key: a820662531d0aac70b3a80dd8a249aa692436097d06da005aec7c56aad17997ec8331d1e4050fd8dced2b92f06277bd5aae71cf315a6d70c849508f6361ac6d51c2168305dd1604c4c6448da4499b2f14afb94fff0f42b79a68ed7ba206301f4", "", - "Baking or delegating stake: no", + "Validator or delegator: no", "", "Credentials: none" ] @@ -301,7 +301,7 @@ printAccountInfoSpec = describe "printAccountInfo" $ do "Nonce: 2", "Encryption public key: a820662531d0aac70b3a80dd8a249aa692436097d06da005aec7c56aad17997ec8331d1e4050fd8dced2b92f06277bd5aae71cf315a6d70c849508f6361ac6d51c2168305dd1604c4c6448da4499b2f14afb94fff0f42b79a68ed7ba206301f4", "", - "Baking or delegating stake: no", + "Validator or delegator: no", "", "Credentials:", "* a1355cd1e5e2f4b712c4302f09f045f194c708e5d0cae3b980f53ae3244fc7357d688d97be251a86735179871f03a46f:", @@ -325,7 +325,7 @@ printAccountInfoSpec = describe "printAccountInfo" $ do "Nonce: 2", "Encryption public key: a820662531d0aac70b3a80dd8a249aa692436097d06da005aec7c56aad17997ec8331d1e4050fd8dced2b92f06277bd5aae71cf315a6d70c849508f6361ac6d51c2168305dd1604c4c6448da4499b2f14afb94fff0f42b79a68ed7ba206301f4", "", - "Baking or delegating stake: no", + "Validator or delegator: no", "", "Credentials:", "* a1355cd1e5e2f4b712c4302f09f045f194c708e5d0cae3b980f53ae3244fc7357d688d97be251a86735179871f03a46f:", @@ -347,7 +347,7 @@ printAccountInfoSpec = describe "printAccountInfo" $ do "Nonce: 2", "Encryption public key: a820662531d0aac70b3a80dd8a249aa692436097d06da005aec7c56aad17997ec8331d1e4050fd8dced2b92f06277bd5aae71cf315a6d70c849508f6361ac6d51c2168305dd1604c4c6448da4499b2f14afb94fff0f42b79a68ed7ba206301f4", "", - "Baking or delegating stake: no", + "Validator or delegator: no", "", "Credentials:", "{\n\ @@ -384,7 +384,7 @@ printAccountInfoSpec = describe "printAccountInfo" $ do " 4: 9450b8ace9ad5a22e8ee...", " Self balance: 9450b8ace9ad5a22e8ee...", "", - "Baking or delegating stake: no", + "Validator or delegator: no", "", "Credentials:", "* a1355cd1e5e2f4b712c4302f09f045f194c708e5d0cae3b980f53ae3244fc7357d688d97be251a86735179871f03a46f:", @@ -407,7 +407,7 @@ printAccountInfoSpec = describe "printAccountInfo" $ do " 4: 9450b8ace9ad5a22e8eea743244bf929e69de3d2c8445d34278d23c6c72dfbf2c1a6fc7fabd4eb3bd7752a0765255ea0963748ddc6bc87040627533b1a3ce76318734cf3cc9dd9b05fd8dfe5c31f51addc68f41b43f764a36f03097c1d1dda12926b233d1f2efdd8f1c143c7a63c5575e1a9f5fac7e265d33ba769f6396db6c91da16e9ddf85b1ec7fc0cbcb4afbd9e491a755540bdf8a42cb46e32f9de7c8986e77a6d111e9fac32524183415cce14ddff3ca5795b5abdc1ad0a1397853a4a3", " Self balance: 9450b8ace9ad5a22e8eea743244bf929e69de3d2c8445d34278d23c6c72dfbf2c1a6fc7fabd4eb3bd7752a0765255ea0963748ddc6bc87040627533b1a3ce76318734cf3cc9dd9b05fd8dfe5c31f51addc68f41b43f764a36f03097c1d1dda12926b233d1f2efdd8f1c143c7a63c5575e1a9f5fac7e265d33ba769f6396db6c91da16e9ddf85b1ec7fc0cbcb4afbd9e491a755540bdf8a42cb46e32f9de7c8986e77a6d111e9fac32524183415cce14ddff3ca5795b5abdc1ad0a1397853a4a3", "", - "Baking or delegating stake: no", + "Validator or delegator: no", "", "Credentials:", "{\n\