Skip to content

Commit

Permalink
Add support for querying multiple stake pool.
Browse files Browse the repository at this point in the history
  • Loading branch information
newhoggy committed Dec 22, 2022
1 parent d9585f2 commit 76a3d9f
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 24 deletions.
22 changes: 11 additions & 11 deletions cardano-api/src/Cardano/Api/Orphans.hs
Original file line number Diff line number Diff line change
Expand Up @@ -691,27 +691,27 @@ instance Crypto.Crypto crypto => ToJSON (VMap VB VP (Shelley.Credential 'Shelley

-----

instance ToJSON (Consensus.StakeSnapshots crypto) where
instance Crypto.Crypto crypto => ToJSON (Consensus.StakeSnapshots crypto) where
toJSON = object . stakeSnapshotsToPair
toEncoding = pairs . mconcat . stakeSnapshotsToPair

stakeSnapshotsToPair :: Aeson.KeyValue a => Consensus.StakeSnapshots crypto -> [a]
stakeSnapshotsToPair :: (Aeson.KeyValue a, Crypto.Crypto crypto) => Consensus.StakeSnapshots crypto -> [a]
stakeSnapshotsToPair Consensus.StakeSnapshots
{ Consensus.ssStakeSnapshots
, Consensus.ssMarkTotal
, Consensus.ssSetTotal
, Consensus.ssGoTotal
} = mconcat
-- Only output the first pool in order to preserve backwards compatibility of the output
-- format. The output format will have to change to support multiple pools when that
-- functionality is added.
[ take 1 (Map.elems ssStakeSnapshots) >>= stakeSnapshotToPair
, [ "activeStakeMark" .= ssMarkTotal
, "activeStakeSet" .= ssSetTotal
, "activeStakeGo" .= ssGoTotal
]
} =
[ "pools" .= ssStakeSnapshots
, "activeStakeMark" .= ssMarkTotal
, "activeStakeSet" .= ssSetTotal
, "activeStakeGo" .= ssGoTotal
]

instance ToJSON (Consensus.StakeSnapshot crypto) where
toJSON = object . stakeSnapshotToPair
toEncoding = pairs . mconcat . stakeSnapshotToPair

stakeSnapshotToPair :: Aeson.KeyValue a => Consensus.StakeSnapshot crypto -> [a]
stakeSnapshotToPair Consensus.StakeSnapshot
{ Consensus.ssMarkPool
Expand Down
6 changes: 3 additions & 3 deletions cardano-api/src/Cardano/Api/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ data QueryInShelleyBasedEra era result where
-> QueryInShelleyBasedEra era (SerialisedPoolDistribution era)

QueryStakeSnapshot
:: PoolId
:: Maybe (Set PoolId)
-> QueryInShelleyBasedEra era (SerialisedStakeSnapshots era)

deriving instance Show (QueryInShelleyBasedEra era result)
Expand Down Expand Up @@ -630,8 +630,8 @@ toConsensusQueryShelleyBased erainmode QueryCurrentEpochState =
toConsensusQueryShelleyBased erainmode (QueryPoolState poolIds) =
Some (consensusQueryInEraInMode erainmode (Consensus.GetCBOR (Consensus.GetPoolState (Set.map unStakePoolKeyHash <$> poolIds))))

toConsensusQueryShelleyBased erainmode (QueryStakeSnapshot poolId) =
Some (consensusQueryInEraInMode erainmode (Consensus.GetCBOR (Consensus.GetStakeSnapshots (Just (Set.singleton (unStakePoolKeyHash poolId))))))
toConsensusQueryShelleyBased erainmode (QueryStakeSnapshot mPoolIds) =
Some (consensusQueryInEraInMode erainmode (Consensus.GetCBOR (Consensus.GetStakeSnapshots (fmap (Set.map unStakePoolKeyHash) mPoolIds))))

toConsensusQueryShelleyBased erainmode (QueryPoolDistribution poolIds) =
Some (consensusQueryInEraInMode erainmode (Consensus.GetCBOR (Consensus.GetPoolDistr (getPoolIds <$> poolIds))))
Expand Down
2 changes: 1 addition & 1 deletion cardano-cli/src/Cardano/CLI/Shelley/Commands.hs
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,7 @@ data QueryCmd =
| QueryUTxO' AnyConsensusModeParams QueryUTxOFilter NetworkId (Maybe OutputFile)
| QueryDebugLedgerState' AnyConsensusModeParams NetworkId (Maybe OutputFile)
| QueryProtocolState' AnyConsensusModeParams NetworkId (Maybe OutputFile)
| QueryStakeSnapshot' AnyConsensusModeParams NetworkId (Hash StakePoolKey)
| QueryStakeSnapshot' AnyConsensusModeParams NetworkId [Hash StakePoolKey]
| QueryKesPeriodInfo
AnyConsensusModeParams
NetworkId
Expand Down
2 changes: 1 addition & 1 deletion cardano-cli/src/Cardano/CLI/Shelley/Parsers.hs
Original file line number Diff line number Diff line change
Expand Up @@ -994,7 +994,7 @@ pQueryCmd =
pQueryStakeSnapshot = QueryStakeSnapshot'
<$> pConsensusModeParams
<*> pNetworkId
<*> pStakePoolVerificationKeyHash
<*> many pStakePoolVerificationKeyHash

pQueryPoolState :: Parser QueryCmd
pQueryPoolState = QueryPoolState'
Expand Down
16 changes: 8 additions & 8 deletions cardano-cli/src/Cardano/CLI/Shelley/Run/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,8 @@ runQueryCmd cmd =
runQueryStakeAddressInfo consensusModeParams addr network mOutFile
QueryDebugLedgerState' consensusModeParams network mOutFile ->
runQueryLedgerState consensusModeParams network mOutFile
QueryStakeSnapshot' consensusModeParams network poolid ->
runQueryStakeSnapshot consensusModeParams network poolid
QueryStakeSnapshot' consensusModeParams network mPoolIds ->
runQueryStakeSnapshot consensusModeParams network mPoolIds
QueryProtocolState' consensusModeParams network mOutFile ->
runQueryProtocolState consensusModeParams network mOutFile
QueryUTxO' consensusModeParams qFilter networkId mOutFile ->
Expand Down Expand Up @@ -670,9 +670,9 @@ runQueryTxMempool (AnyConsensusModeParams cModeParams) network query mOutFile =
runQueryStakeSnapshot
:: AnyConsensusModeParams
-> NetworkId
-> Hash StakePoolKey
-> [Hash StakePoolKey]
-> ExceptT ShelleyQueryCmdError IO ()
runQueryStakeSnapshot (AnyConsensusModeParams cModeParams) network poolId = do
runQueryStakeSnapshot (AnyConsensusModeParams cModeParams) network mPoolIds = do
SocketPath sockPath <- firstExceptT ShelleyQueryCmdEnvVarSocketErr $ newExceptT readEnvSocketPath
let localNodeConnInfo = LocalNodeConnectInfo cModeParams network sockPath

Expand All @@ -686,9 +686,9 @@ runQueryStakeSnapshot (AnyConsensusModeParams cModeParams) network poolId = do
eInMode <- toEraInMode era cMode
& hoistMaybe (ShelleyQueryCmdEraConsensusModeMismatch (AnyConsensusMode cMode) anyE)

let qInMode = QueryInEra eInMode . QueryInShelleyBasedEra sbe $ QueryStakeSnapshot poolId
let qInMode = QueryInEra eInMode . QueryInShelleyBasedEra sbe $ QueryStakeSnapshot $ Just $ Set.fromList mPoolIds
result <- executeQuery era cModeParams localNodeConnInfo qInMode
obtainLedgerEraClassConstraints sbe writeStakeSnapshot result
obtainLedgerEraClassConstraints sbe writeStakeSnapshots result


runQueryLedgerState
Expand Down Expand Up @@ -849,12 +849,12 @@ writeLedgerState mOutFile qState@(SerialisedDebugLedgerState serLedgerState) =
handleIOExceptT (ShelleyQueryCmdWriteFileError . FileIOError fpath)
$ LBS.writeFile fpath $ unSerialised serLedgerState

writeStakeSnapshot :: forall era ledgerera. ()
writeStakeSnapshots :: forall era ledgerera. ()
=> ShelleyLedgerEra era ~ ledgerera
=> Era.Crypto ledgerera ~ StandardCrypto
=> SerialisedStakeSnapshots era
-> ExceptT ShelleyQueryCmdError IO ()
writeStakeSnapshot qState =
writeStakeSnapshots qState =
case decodeStakeSnapshot qState of
Left err -> left (ShelleyQueryCmdStakeSnapshotDecodeError err)

Expand Down

0 comments on commit 76a3d9f

Please sign in to comment.