Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions cardano-cli/src/Cardano/CLI/Compatible/Json/Friendly.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ module Cardano.CLI.Compatible.Json.Friendly
friendlyTx
, friendlyTxBody
, friendlyProposal
, friendlyDRep

-- * Functions that are not in IO

Expand All @@ -46,6 +47,7 @@ import Cardano.CLI.Orphan ()
import Cardano.CLI.Type.Common (FormatJson (..), FormatYaml (..))
import Cardano.CLI.Type.MonadWarning (MonadWarning, runWarningIO)
import Cardano.Crypto.Hash (hashToTextAsHex)
import Cardano.Ledger.Core qualified as C

import Data.Aeson (Value (..), object, (.=))
import Data.Aeson qualified as Aeson
Expand Down Expand Up @@ -897,3 +899,16 @@ friendlyCollateralInputs :: TxInsCollateral era -> Aeson.Value
friendlyCollateralInputs = \case
TxInsCollateralNone -> Null
TxInsCollateral _ txins -> toJSON txins

friendlyDRep :: L.DRep -> Aeson.Value
friendlyDRep L.DRepAlwaysAbstain = "alwaysAbstain"
friendlyDRep L.DRepAlwaysNoConfidence = "alwaysNoConfidence"
friendlyDRep (L.DRepCredential sch@(L.ScriptHashObj (C.ScriptHash _))) =
Aeson.object
[ "scriptHashHex" .= UsingRawBytesHex sch
]
friendlyDRep (L.DRepCredential kh@(L.KeyHashObj (C.KeyHash _))) =
Aeson.object
[ "keyHashHex" .= UsingRawBytesHex kh
, "keyHashBech32" .= serialiseToBech32Cip129 kh
]
19 changes: 13 additions & 6 deletions cardano-cli/src/Cardano/CLI/EraBased/Query/Run.hs
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ import Cardano.Api.Network qualified as Consensus

import Cardano.Binary qualified as CBOR
import Cardano.CLI.Compatible.Exception
import Cardano.CLI.Compatible.Json.Friendly (friendlyDRep)
import Cardano.CLI.EraBased.Genesis.Internal.Common
import Cardano.CLI.EraBased.Query.Command qualified as Cmd
import Cardano.CLI.Helper
Expand All @@ -60,6 +61,10 @@ import Cardano.CLI.Read
import Cardano.CLI.Type.Common
import Cardano.CLI.Type.Error.QueryCmdError
import Cardano.CLI.Type.Key
( readDRepCredential
, readSPOCredential
, readVerificationKeyOrHashOrFileOrScriptHash
)
import Cardano.CLI.Type.Output (QueryDRepStateOutput (..))
import Cardano.CLI.Type.Output qualified as O
import Cardano.Crypto.Hash (hashToBytesAsHex)
Expand Down Expand Up @@ -1092,7 +1097,7 @@ writeStakeAddressInfo
( \(addr, mBalance, mPoolId, mDRep, mDeposit) ->
Aeson.object
[ "address" .= addr
, "stakeDelegation" .= mPoolId
, "stakeDelegation" .= fmap friendlyStake mPoolId
, "voteDelegation" .= fmap friendlyDRep mDRep
, "rewardAccountBalance" .= mBalance
, "stakeRegistrationDeposit" .= mDeposit
Expand All @@ -1101,11 +1106,13 @@ writeStakeAddressInfo
)
merged

friendlyDRep :: L.DRep -> Text
friendlyDRep L.DRepAlwaysAbstain = "alwaysAbstain"
friendlyDRep L.DRepAlwaysNoConfidence = "alwaysNoConfidence"
friendlyDRep (L.DRepCredential cred) =
L.credToText cred -- this will pring "keyHash-..." or "scriptHash-...", depending on the type of credential
friendlyStake :: PoolId -> Aeson.Value
friendlyStake poolId =
Aeson.object
[ "stakePoolBech32" .= UsingBech32 poolId
, "stakePoolHex" .= UsingRawBytesHex poolId
]

merged
:: [(StakeAddress, Maybe Lovelace, Maybe PoolId, Maybe L.DRep, Maybe Lovelace)]
merged =
Expand Down
Loading