Skip to content

Commit

Permalink
Merge pull request #247 from input-output-hk/coot/cardano-ledger-conw…
Browse files Browse the repository at this point in the history
…ay-1.8

Update cardano-cli to newer cardano-ledger
  • Loading branch information
coot authored Sep 12, 2023
2 parents 7069593 + 59b2c7c commit 9fb8347
Show file tree
Hide file tree
Showing 8 changed files with 20 additions and 79 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/haskell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:

env:
# Modify this value to "invalidate" the cabal cache.
CABAL_CACHE_VERSION: "2023-08-29"
CABAL_CACHE_VERSION: "2023-09-12"

concurrency:
group: >
Expand Down
3 changes: 1 addition & 2 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ repository cardano-haskell-packages
-- you need to run if you change them
index-state:
, hackage.haskell.org 2023-08-08T19:56:09Z
, cardano-haskell-packages 2023-09-06T08:30:00Z
, cardano-haskell-packages 2023-09-12T15:59:42Z

packages:
cardano-cli
Expand Down Expand Up @@ -43,4 +43,3 @@ write-ghc-environment-files: always
-- IMPORTANT
-- Do NOT add more source-repository-package stanzas here unless they are strictly
-- temporary! Please read the section in CONTRIBUTING about updating dependencies.

15 changes: 7 additions & 8 deletions cardano-cli/cardano-cli.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -200,11 +200,11 @@ library
, binary
, bytestring
, canonical-json
, cardano-api ^>= 8.19
, cardano-api ^>= 8.20
, cardano-binary
, cardano-crypto
, cardano-crypto-class ^>= 2.1.2
, cardano-crypto-wrapper ^>= 1.5
, cardano-crypto-wrapper ^>= 1.5.1
, cardano-data >= 1.0
, cardano-git-rev
, cardano-ledger-alonzo >= 1.3.1.1
Expand Down Expand Up @@ -248,7 +248,6 @@ library
, transformers-except ^>= 0.1.3
, unliftio-core
, utf8-string
, vector
, yaml

executable cardano-cli
Expand Down Expand Up @@ -290,11 +289,11 @@ test-suite cardano-cli-test
, base16-bytestring
, bech32 >= 1.1.0
, bytestring
, cardano-api:{cardano-api, internal} ^>= 8.19
, cardano-api:{cardano-api, internal}
, cardano-api-gen ^>= 8.2.0.0
, cardano-cli
, cardano-cli:cardano-cli-test-lib
, cardano-slotting ^>= 0.1
, cardano-slotting
, containers
, filepath
, hedgehog
Expand Down Expand Up @@ -334,12 +333,12 @@ test-suite cardano-cli-golden
build-depends: aeson >= 1.5.6.0
, base16-bytestring
, bytestring
, cardano-api:{cardano-api, gen} ^>= 8.19
, cardano-api:{cardano-api, gen}
, cardano-binary
, cardano-cli
, cardano-cli:cardano-cli-test-lib
, cardano-crypto-wrapper ^>= 1.5.1
, cardano-ledger-byron ^>= 1.0.0.2
, cardano-crypto-wrapper
, cardano-ledger-byron
, cborg
, containers
, filepath
Expand Down
4 changes: 3 additions & 1 deletion cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,9 @@ runQueryDRepStakeDistribution w (DRepStakeDistributionQueryCmd socketPath (AnyCo
cEra = conwayEraOnwardsToCardanoEra w
cMode = consensusModeOnly cModeParams

let drepFromVrfKey = fmap Ledger.DRepCredential . firstExceptT GovernanceQueryDRepKeyError . getDRepCredentialFromVerKeyHashOrFile
let drepFromVrfKey = fmap Ledger.DRepCredential
. firstExceptT GovernanceQueryDRepKeyError
. getDRepCredentialFromVerKeyHashOrFile
dreps <- Set.fromList <$> mapM drepFromVrfKey drepKeys

eraInMode <- toEraInMode cEra cMode
Expand Down
60 changes: 1 addition & 59 deletions cardano-cli/src/Cardano/CLI/EraBased/Run/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ module Cardano.CLI.EraBased.Run.Query
, DelegationsAndRewards(..)
, renderQueryCmdError
, renderLocalStateQueryError
, renderOpCertIntervalInformation
, percentage
) where

Expand Down Expand Up @@ -78,13 +79,11 @@ import Control.Monad.Trans.Except
import Control.Monad.Trans.Except.Extra
import Data.Aeson as Aeson
import Data.Aeson.Encode.Pretty (encodePretty)
import Data.Aeson.Types as Aeson
import Data.Bifunctor (Bifunctor (..))
import qualified Data.ByteString.Lazy.Char8 as LBS
import Data.Coerce (coerce)
import Data.Function ((&))
import Data.Functor ((<&>))
import Data.List (nub)
import qualified Data.List as List
import Data.Map.Strict (Map)
import qualified Data.Map.Strict as Map
Expand All @@ -97,7 +96,6 @@ import qualified Data.Text.Encoding as Text
import qualified Data.Text.IO as T
import qualified Data.Text.IO as Text
import Data.Time.Clock
import qualified Data.Vector as Vector
import Numeric (showEFloat)
import Prettyprinter
import qualified System.IO as IO
Expand Down Expand Up @@ -1198,62 +1196,6 @@ printStakeDistribution stakeDistrib = do
, showEFloat (Just 3) (fromRational stakeFraction :: Double) ""
]

-- | A mapping of Shelley reward accounts to both the stake pool that they
-- delegate to and their reward account balance.
-- TODO: Move to cardano-api
newtype DelegationsAndRewards
= DelegationsAndRewards (Map StakeAddress Lovelace, Map StakeAddress PoolId)
deriving (Eq, Show)


mergeDelegsAndRewards :: DelegationsAndRewards -> [(StakeAddress, Maybe Lovelace, Maybe PoolId)]
mergeDelegsAndRewards (DelegationsAndRewards (rewardsMap, delegMap)) =
[ (stakeAddr, Map.lookup stakeAddr rewardsMap, Map.lookup stakeAddr delegMap)
| stakeAddr <- nub $ Map.keys rewardsMap ++ Map.keys delegMap
]


instance ToJSON DelegationsAndRewards where
toJSON delegsAndRwds =
Aeson.Array . Vector.fromList
. map delegAndRwdToJson $ mergeDelegsAndRewards delegsAndRwds
where
delegAndRwdToJson :: (StakeAddress, Maybe Lovelace, Maybe PoolId) -> Aeson.Value
delegAndRwdToJson (addr, mRewards, mPoolId) =
Aeson.object
[ "address" .= addr
, "delegation" .= mPoolId
, "rewardAccountBalance" .= mRewards
]

instance FromJSON DelegationsAndRewards where
parseJSON = withArray "DelegationsAndRewards" $ \arr -> do
let vals = Vector.toList arr
decoded <- mapM decodeObject vals
pure $ zipper decoded
where
zipper :: [(StakeAddress, Maybe Lovelace, Maybe PoolId)]
-> DelegationsAndRewards
zipper l = do
let maps = [ ( maybe mempty (Map.singleton sa) delegAmt
, maybe mempty (Map.singleton sa) mPool
)
| (sa, delegAmt, mPool) <- l
]
DelegationsAndRewards
$ foldl
(\(amtA, delegA) (amtB, delegB) -> (amtA <> amtB, delegA <> delegB))
(mempty, mempty)
maps

decodeObject :: Aeson.Value
-> Aeson.Parser (StakeAddress, Maybe Lovelace, Maybe PoolId)
decodeObject = withObject "DelegationsAndRewards" $ \o -> do
address <- o .: "address"
delegation <- o .:? "delegation"
rewardAccountBalance <- o .:? "rewardAccountBalance"
pure (address, rewardAccountBalance, delegation)

runQueryLeadershipScheduleCmd
:: SocketPath
-> AnyConsensusModeParams
Expand Down
8 changes: 4 additions & 4 deletions cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ runTxBuildCmd
& onLeft (left . TxCmdQueryConvenienceError . AcqFailure)
& onLeft (left . TxCmdQueryConvenienceError . QceUnsupportedNtcVersion)

(nodeEraUTxO, _, eraHistory, systemStart, _, _) <-
(nodeEraUTxO, _, eraHistory, systemStart, _, _, _) <-
lift (executeLocalStateQueryExpr localNodeConnInfo Nothing (queryStateForBalancedTx nodeEra allTxInputs []))
& onLeft (left . TxCmdQueryConvenienceError . AcqFailure)
& onLeft (left . TxCmdQueryConvenienceError)
Expand Down Expand Up @@ -566,7 +566,7 @@ runTxBuild
TxCertificates _ cs _ -> cs
_ -> []

(txEraUtxo, pparams, eraHistory, systemStart, stakePools, stakeDelegDeposits) <-
(txEraUtxo, pparams, eraHistory, systemStart, stakePools, stakeDelegDeposits, drepDelegDeposits) <-
lift (executeLocalStateQueryExpr localNodeConnInfo Nothing $ queryStateForBalancedTx nodeEra allTxInputs certs)
& onLeft (left . TxCmdQueryConvenienceError . AcqFailure)
& onLeft (left . TxCmdQueryConvenienceError)
Expand Down Expand Up @@ -611,8 +611,8 @@ runTxBuild
firstExceptT TxCmdBalanceTxBody
. hoistEither
$ makeTransactionBodyAutoBalance systemStart (toLedgerEpochInfo eraHistory)
pparams stakePools stakeDelegDeposits txEraUtxo
txBodyContent cAddr mOverrideWits
pparams stakePools stakeDelegDeposits drepDelegDeposits
txEraUtxo txBodyContent cAddr mOverrideWits

liftIO $ putStrLn $ "Estimated transaction fee: " <> (show fee :: String)

Expand Down
1 change: 0 additions & 1 deletion cardano-cli/test/cardano-cli-test/Test/Cli/JSON.hs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ module Test.Cli.JSON

import Cardano.Api.Shelley

import Cardano.CLI.EraBased.Run.Query
import Cardano.CLI.Types.Common
import Cardano.CLI.Types.Output (QueryKesPeriodInfoOutput (..), createOpCertIntervalInfo)

Expand Down
6 changes: 3 additions & 3 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 9fb8347

Please sign in to comment.