Skip to content

Commit

Permalink
Refactor cardano client to replace queryCurrentEra in favor of queryC…
Browse files Browse the repository at this point in the history
…urrentEraExpr
  • Loading branch information
ffakenz committed Jan 3, 2024
1 parent afad113 commit 94b465f
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 41 deletions.
7 changes: 3 additions & 4 deletions hydra-cluster/test/Test/CardanoClientSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ module Test.CardanoClientSpec where
import Hydra.Prelude
import Test.Hydra.Prelude

import CardanoClient (QueryPoint (..), RunningNode (..), queryCurrentEra, queryGenesisParameters)
import CardanoClient (QueryPoint (..), RunningNode (..), queryGenesisParameters)
import CardanoNode (withCardanoNodeDevnet)
import Data.Aeson ((.:))
import Data.Aeson qualified as Aeson
import Hydra.Cardano.Api (AnyCardanoEra (..), GenesisParameters (..))
import Hydra.Cardano.Api (GenesisParameters (..))
import Hydra.Ledger.Cardano.Configuration (readJsonFileThrow)
import Hydra.Logging (showLogsOnFailure)
import System.FilePath ((</>))
Expand All @@ -23,9 +23,8 @@ spec =
-- systemStart to some current time making it the perfect target to
-- test against.
withCardanoNodeDevnet tracer tmpDir $ \RunningNode{nodeSocket, networkId} -> do
AnyCardanoEra era <- queryCurrentEra networkId nodeSocket QueryTip
GenesisParameters{protocolParamSystemStart = queriedSystemStart} <-
queryGenesisParameters networkId nodeSocket QueryTip era
queryGenesisParameters networkId nodeSocket QueryTip

let parseSystemStart =
Aeson.withObject "GenesisShelley" $ \o -> o .: "systemStart"
Expand Down
6 changes: 2 additions & 4 deletions hydra-cluster/test/Test/EndToEndSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import Cardano.Api.UTxO qualified as UTxO
import CardanoClient (
QueryPoint (..),
RunningNode (..),
queryCurrentEra,
queryEpochNo,
queryGenesisParameters,
queryTip,
Expand Down Expand Up @@ -38,7 +37,7 @@ import Data.Map qualified as Map
import Data.Set qualified as Set
import Data.Text qualified as Text
import Data.Time (secondsToDiffTime)
import Hydra.Cardano.Api hiding (Value, cardanoEra, queryCurrentEra, queryGenesisParameters)
import Hydra.Cardano.Api hiding (Value, cardanoEra, queryGenesisParameters)
import Hydra.Chain.Direct.Fixture (defaultPParams, testNetworkId)
import Hydra.Chain.Direct.State ()
import Hydra.Cluster.Faucet (
Expand Down Expand Up @@ -669,7 +668,6 @@ waitForLog delay nodeOutput failureMessage predicate = do

timedTx :: FilePath -> Tracer IO EndToEndLog -> RunningNode -> TxId -> IO ()
timedTx tmpDir tracer node@RunningNode{networkId, nodeSocket, pparams} hydraScriptsTxId = do
AnyCardanoEra era <- queryCurrentEra networkId nodeSocket QueryTip
(aliceCardanoVk, _) <- keysFor Alice
let contestationPeriod = UnsafeContestationPeriod 2
aliceChainConfig <- chainConfigFor Alice tmpDir nodeSocket hydraScriptsTxId [] contestationPeriod
Expand All @@ -693,7 +691,7 @@ timedTx tmpDir tracer node@RunningNode{networkId, nodeSocket, pparams} hydraScri
waitFor hydraTracer 3 [n1] $ output "HeadIsOpen" ["utxo" .= committedUTxOByAlice, "headId" .= headId]

-- Acquire a current point in time
genesisParams <- queryGenesisParameters networkId nodeSocket QueryTip era
genesisParams <- queryGenesisParameters networkId nodeSocket QueryTip
let slotLengthSec = protocolParamSlotLength genesisParams
currentSlot <- queryTipSlotNo networkId nodeSocket

Expand Down
40 changes: 14 additions & 26 deletions hydra-node/src/Hydra/Chain/CardanoClient.hs
Original file line number Diff line number Diff line change
Expand Up @@ -242,13 +242,6 @@ queryEraHistory :: NetworkId -> SocketPath -> QueryPoint -> IO (EraHistory Carda
queryEraHistory networkId socket queryPoint =
runQuery networkId socket queryPoint $ QueryEraHistory CardanoModeIsMultiEra

-- | Query current era at given point.
--
-- Throws at least 'QueryException' if query fails.
queryCurrentEra :: NetworkId -> SocketPath -> QueryPoint -> IO AnyCardanoEra
queryCurrentEra networkId socket queryPoint =
runQuery networkId socket queryPoint $ QueryCurrentEra CardanoModeIsMultiEra

-- | Query the current epoch number.
--
-- Throws at least 'QueryException' if query fails.
Expand Down Expand Up @@ -277,12 +270,11 @@ queryProtocolParameters ::
SocketPath ->
QueryPoint ->
IO (PParams LedgerEra)
queryProtocolParameters networkId socket queryPoint = do
AnyCardanoEra era <- queryCurrentEra networkId socket QueryTip
mkQueryInEra era QueryProtocolParameters
>>= runQuery networkId socket queryPoint
>>= throwOnEraMismatch
>>= coercePParamsToLedgerEra era
queryProtocolParameters networkId socket queryPoint =
runQueryExpr networkId socket queryPoint $ do
(AnyCardanoEra era) <- queryCurrentEraExpr
eraPParams <- queryInEraExpr era QueryProtocolParameters
liftIO $ coercePParamsToLedgerEra era eraPParams
where
encodeToEra eraToEncode pparams =
case eitherDecode' (encode pparams) of
Expand All @@ -309,13 +301,11 @@ queryGenesisParameters ::
-- | Filepath to the cardano-node's domain socket
SocketPath ->
QueryPoint ->
-- | The current running era we can use to query the node
CardanoEra era ->
IO (GenesisParameters ShelleyEra)
queryGenesisParameters networkId socket queryPoint era = do
mkQueryInEra era QueryGenesisParameters
>>= runQuery networkId socket queryPoint
>>= throwOnEraMismatch
queryGenesisParameters networkId socket queryPoint =
runQueryExpr networkId socket queryPoint $ do
(AnyCardanoEra era) <- queryCurrentEraExpr
queryInEraExpr era QueryGenesisParameters

-- | Query UTxO for all given addresses at given point.
--
Expand All @@ -338,13 +328,11 @@ queryUTxOByTxIn ::
QueryPoint ->
[TxIn] ->
IO UTxO
queryUTxOByTxIn networkId socket queryPoint inputs = do
AnyCardanoEra era <- queryCurrentEra networkId socket QueryTip
UTxO.fromApi
<$> ( mkQueryInEra era (QueryUTxO (QueryUTxOByTxIn (Set.fromList inputs)))
>>= runQuery networkId socket queryPoint
>>= throwOnEraMismatch
)
queryUTxOByTxIn networkId socket queryPoint inputs =
runQueryExpr networkId socket queryPoint $ do
(AnyCardanoEra era) <- queryCurrentEraExpr
eraUTxO <- queryInEraExpr era $ QueryUTxO (QueryUTxOByTxIn (Set.fromList inputs))
pure $ UTxO.fromApi eraUTxO

-- | Query the whole UTxO from node at given point. Useful for debugging, but
-- should obviously not be used in production code.
Expand Down
10 changes: 3 additions & 7 deletions hydra-node/src/Hydra/Node/Run.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@ import Hydra.Prelude hiding (fromList)

import Hydra.API.Server (Server (..), withAPIServer)
import Hydra.API.ServerOutput (ServerOutput (..))
import Hydra.Cardano.Api (
AnyCardanoEra (..),
ProtocolParametersConversionError,
)
import Hydra.Cardano.Api (ProtocolParametersConversionError)
import Hydra.Chain (maximumNumberOfParties)
import Hydra.Chain.CardanoClient (QueryPoint (..), queryCurrentEra, queryGenesisParameters)
import Hydra.Chain.CardanoClient (QueryPoint (..), queryGenesisParameters)
import Hydra.Chain.Direct (loadChainContext, mkTinyWallet, withDirectChain)
import Hydra.Chain.Direct.State (initialChainState)
import Hydra.Chain.Offline (loadGenesisFile, withOfflineChain)
Expand Down Expand Up @@ -133,8 +130,7 @@ getGlobalsForChain = \case
loadGenesisFile ledgerGenesisFile
>>= newGlobals
Direct DirectChainConfig{networkId, nodeSocket} -> do
AnyCardanoEra era <- queryCurrentEra networkId nodeSocket QueryTip
params <- queryGenesisParameters networkId nodeSocket QueryTip era
params <- queryGenesisParameters networkId nodeSocket QueryTip
newGlobals params

identifyNode :: RunOptions -> RunOptions
Expand Down

0 comments on commit 94b465f

Please sign in to comment.