From 709b9a1e0448b7b2e9bbaba0c756acb7772e1b0f Mon Sep 17 00:00:00 2001 From: John Ky Date: Fri, 16 Jun 2023 08:37:09 +1000 Subject: [PATCH 1/2] New requireShelleyBasedEra function --- cardano-api/internal/Cardano/Api/Eras.hs | 12 ++++++++++++ cardano-api/src/Cardano/Api.hs | 3 +++ 2 files changed, 15 insertions(+) diff --git a/cardano-api/internal/Cardano/Api/Eras.hs b/cardano-api/internal/Cardano/Api/Eras.hs index 7e2ccbef5a..4d181a1bc8 100644 --- a/cardano-api/internal/Cardano/Api/Eras.hs +++ b/cardano-api/internal/Cardano/Api/Eras.hs @@ -49,6 +49,9 @@ module Cardano.Api.Eras -- * Data family instances , AsType(AsByronEra, AsShelleyEra, AsAllegraEra, AsMaryEra, AsAlonzoEra, AsBabbageEra, AsConwayEra, AsByron, AsShelley, AsAllegra, AsMary, AsAlonzo, AsBabbage, AsConway) + + -- * Assertions on era + , requireShelleyBasedEra ) where import Cardano.Api.HasTypeProxy @@ -523,3 +526,12 @@ eraProtVerLow era = ShelleyBasedEraAlonzo -> L.eraProtVerLow @L.Alonzo ShelleyBasedEraBabbage -> L.eraProtVerLow @L.Babbage ShelleyBasedEraConway -> L.eraProtVerLow @L.Conway + +requireShelleyBasedEra :: () + => Applicative m + => CardanoEra era + -> m (Maybe (ShelleyBasedEra era)) +requireShelleyBasedEra era = + case cardanoEraStyle era of + LegacyByronEra -> pure Nothing + ShelleyBasedEra sbe -> pure (Just sbe) diff --git a/cardano-api/src/Cardano/Api.hs b/cardano-api/src/Cardano/Api.hs index 757b1c1622..c26106dbad 100644 --- a/cardano-api/src/Cardano/Api.hs +++ b/cardano-api/src/Cardano/Api.hs @@ -34,6 +34,9 @@ module Cardano.Api ( cardanoEraStyle, shelleyBasedToCardanoEra, + -- * Assertions on era + requireShelleyBasedEra, + -- ** IO File(..), FileDirection(..), From 62ab351626f14379cd08f8ab4102cf2ce37cfce2 Mon Sep 17 00:00:00 2001 From: John Ky Date: Fri, 16 Jun 2023 10:28:49 +1000 Subject: [PATCH 2/2] Delete getSbe function. Use requireShelleyBasedEra function instead --- .../internal/Cardano/Api/Convenience/Query.hs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/cardano-api/internal/Cardano/Api/Convenience/Query.hs b/cardano-api/internal/Cardano/Api/Convenience/Query.hs index 6cd8e8831e..33d6f7c6e2 100644 --- a/cardano-api/internal/Cardano/Api/Convenience/Query.hs +++ b/cardano-api/internal/Cardano/Api/Convenience/Query.hs @@ -82,8 +82,8 @@ queryStateForBalancedTx :: () , Set PoolId , Map StakeCredential Lovelace)) queryStateForBalancedTx era allTxIns certs = runExceptT $ do - qSbe <- pure (getSbe $ cardanoEraStyle era) - & onLeft left + sbe <- requireShelleyBasedEra era + & onNothing (left ByronEraNotSupported) qeInMode <- pure (toEraInMode era CardanoMode) & onNothing (left (EraConsensusModeMismatch (AnyConsensusMode CardanoMode) (getIsCardanoEraConstraint era $ AnyCardanoEra era))) @@ -93,11 +93,11 @@ queryStateForBalancedTx era allTxIns certs = runExceptT $ do _ -> Nothing -- Query execution - utxo <- lift (queryUtxo qeInMode qSbe (QueryUTxOByTxIn (Set.fromList allTxIns))) + utxo <- lift (queryUtxo qeInMode sbe (QueryUTxOByTxIn (Set.fromList allTxIns))) & onLeft (left . QceUnsupportedNtcVersion) & onLeft (left . QueryEraMismatch) - pparams <- lift (queryProtocolParameters qeInMode qSbe) + pparams <- lift (queryProtocolParameters qeInMode sbe) & onLeft (left . QceUnsupportedNtcVersion) & onLeft (left . QueryEraMismatch) @@ -107,7 +107,7 @@ queryStateForBalancedTx era allTxIns certs = runExceptT $ do systemStart <- lift querySystemStart & onLeft (left . QceUnsupportedNtcVersion) - stakePools <- lift (queryStakePools qeInMode qSbe) + stakePools <- lift (queryStakePools qeInMode sbe) & onLeft (left . QceUnsupportedNtcVersion) & onLeft (left . QueryEraMismatch) @@ -115,7 +115,7 @@ queryStateForBalancedTx era allTxIns certs = runExceptT $ do if null stakeCreds then pure mempty else do - lift (queryStakeDelegDeposits qeInMode qSbe stakeCreds) + lift (queryStakeDelegDeposits qeInMode sbe stakeCreds) & onLeft (left . QceUnsupportedNtcVersion) & onLeft (left . QueryEraMismatch) @@ -134,10 +134,6 @@ determineEra cModeParams localNodeConnInfo = queryNodeLocalState localNodeConnInfo Nothing $ QueryCurrentEra CardanoModeIsMultiEra -getSbe :: CardanoEraStyle era -> Either QueryConvenienceError (ShelleyBasedEra era) -getSbe LegacyByronEra = Left ByronEraNotSupported -getSbe (ShelleyBasedEra sbe) = return sbe - -- | Execute a query against the local node. The local -- node must be in CardanoMode. executeQueryCardanoMode