Skip to content

Commit

Permalink
Adds new query for a snapshot of big ledger peers
Browse files Browse the repository at this point in the history
This change introduces a new query tag and handler
to support retrieval of a snapshot of big ledger peers
from the current tip of a node.
  • Loading branch information
crocodile-dentist authored and palas committed Jul 11, 2024
1 parent 6dd96c6 commit 84398c4
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 2 deletions.
9 changes: 9 additions & 0 deletions cardano-api/internal/Cardano/Api/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,8 @@ data QueryInShelleyBasedEra era result where
QueryStakeVoteDelegatees
:: Set StakeCredential
-> QueryInShelleyBasedEra era (Map StakeCredential (Ledger.DRep StandardCrypto))
QueryLedgerPeerSnapshot
:: QueryInShelleyBasedEra era (Serialised LedgerPeerSnapshot)

-- | Mapping for queries in Shelley-based eras returning minimal node-to-client protocol versions. More
-- information about queries versioning can be found:
Expand All @@ -311,6 +313,7 @@ instance NodeToClientVersionOf (QueryInShelleyBasedEra era result) where
nodeToClientVersionOf QueryDebugLedgerState = NodeToClientV_9
nodeToClientVersionOf QueryProtocolState = NodeToClientV_9
nodeToClientVersionOf QueryCurrentEpochState = NodeToClientV_9
nodeToClientVersionOf QueryLedgerPeerSnapshot = NodeToClientV_9
-- Babbage >= v13
nodeToClientVersionOf (QueryPoolState _) = NodeToClientV_14
nodeToClientVersionOf (QueryPoolDistribution _) = NodeToClientV_14
Expand Down Expand Up @@ -692,6 +695,8 @@ toConsensusQueryShelleyBased sbe = \case
where
creds' :: Set (Shelley.Credential Shelley.Staking StandardCrypto)
creds' = Set.map toShelleyStakeCredential creds
QueryLedgerPeerSnapshot ->
Some (consensusQueryInEraInMode era (Consensus.GetCBOR Consensus.GetBigLedgerPeerSnapshot))
where
era = toCardanoEra sbe

Expand Down Expand Up @@ -968,6 +973,10 @@ fromConsensusQueryResultShelleyBased sbe sbeQuery q' r' =
Consensus.GetFilteredVoteDelegatees{} ->
Map.mapKeys fromShelleyStakeCredential r'
_ -> fromConsensusQueryResultMismatch
fromConsensusQueryResultShelleyBased _ QueryLedgerPeerSnapshot q' serLedgerPeerSnapshot =
case q' of
Consensus.GetCBOR Consensus.GetBigLedgerPeerSnapshot -> serLedgerPeerSnapshot
_ -> fromConsensusQueryResultMismatch

-- | This should /only/ happen if we messed up the mapping in 'toConsensusQuery'
-- and 'fromConsensusQueryResult' so they are inconsistent with each other.
Expand Down
17 changes: 15 additions & 2 deletions cardano-api/internal/Cardano/Api/Query/Expr.hs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ module Cardano.Api.Query.Expr
, queryStakeSnapshot
, querySystemStart
, queryUtxo
, queryLedgerPeerSnapshot
, L.MemberStatus (..)
, L.CommitteeMembersState (..)
, queryCommitteeMembersState
Expand Down Expand Up @@ -131,6 +132,19 @@ queryDebugLedgerState
queryDebugLedgerState sbe =
queryExpr $ QueryInEra $ QueryInShelleyBasedEra sbe QueryDebugLedgerState

queryLedgerPeerSnapshot
:: ()
=> ShelleyBasedEra era
-> LocalStateQueryExpr
block
point
QueryInMode
r
IO
(Either UnsupportedNtcVersionError (Either EraMismatch (Serialised LedgerPeerSnapshot)))
queryLedgerPeerSnapshot sbe =
queryExpr $ QueryInEra $ QueryInShelleyBasedEra sbe QueryLedgerPeerSnapshot

queryEraHistory
:: ()
=> LocalStateQueryExpr block point QueryInMode r IO (Either UnsupportedNtcVersionError EraHistory)
Expand Down Expand Up @@ -302,8 +316,7 @@ queryStakePoolParameters
(Either UnsupportedNtcVersionError (Either EraMismatch (Map PoolId StakePoolParameters)))
queryStakePoolParameters sbe poolIds
| S.null poolIds = pure . pure $ pure mempty
| otherwise =
queryExpr $ QueryInEra $ QueryInShelleyBasedEra sbe $ QueryStakePoolParameters poolIds
| otherwise = queryExpr $ QueryInEra $ QueryInShelleyBasedEra sbe $ QueryStakePoolParameters poolIds

queryStakePools
:: ()
Expand Down
1 change: 1 addition & 0 deletions cardano-api/src/Cardano/Api.hs
Original file line number Diff line number Diff line change
Expand Up @@ -941,6 +941,7 @@ module Cardano.Api
, queryCurrentEpochState
, queryCurrentEra
, queryDebugLedgerState
, queryLedgerPeerSnapshot
, queryEpoch
, queryConstitutionHash
, queryEraHistory
Expand Down

0 comments on commit 84398c4

Please sign in to comment.