Navigation Menu

Skip to content

Commit

Permalink
Update cardano-cli queries with Allegra/Mary modes
Browse files Browse the repository at this point in the history
  • Loading branch information
Jimbo4350 committed Nov 27, 2020
1 parent 62faef3 commit 7aac2f1
Show file tree
Hide file tree
Showing 14 changed files with 161 additions and 85 deletions.
3 changes: 2 additions & 1 deletion cardano-api/cardano-api.cabal
Expand Up @@ -19,10 +19,11 @@ library
Cardano.Api.Byron
Cardano.Api.Crypto.Ed25519Bip32
Cardano.Api.LocalChainSync
Cardano.Api.Protocol
Cardano.Api.CliMode
Cardano.Api.Protocol.Byron
Cardano.Api.Protocol.Cardano
Cardano.Api.Protocol.Shelley
Cardano.Api.Protocol.Mary
Cardano.Api.Protocol.Types
Cardano.Api.Shelley
Cardano.Api.Shelley.Genesis
Expand Down
Expand Up @@ -5,10 +5,10 @@
{-# LANGUAGE ScopedTypeVariables #-}


module Cardano.Api.Protocol
module Cardano.Api.CliMode
(
-- * The enumeration of supported protocols
Protocol(..)
CliMode(..)

-- * Node client support
-- | Support for the context needed to run a client of a node that is using
Expand All @@ -27,9 +27,11 @@ import Cardano.Api.Typed
import Ouroboros.Consensus.Node.Run (RunNode)


data Protocol = ByronProtocol !EpochSlots
| ShelleyProtocol
| CardanoProtocol !EpochSlots
data CliMode = CliByronMode !EpochSlots
| CliShelleyMode
| CliAllegraMode
| CliMaryMode
| CliCardanoMode !EpochSlots
deriving (Eq, Show)

data LocalNodeConnectInfoForSomeMode where
Expand All @@ -39,7 +41,7 @@ data LocalNodeConnectInfoForSomeMode where
=> LocalNodeConnectInfo mode block
-> LocalNodeConnectInfoForSomeMode

withlocalNodeConnectInfo :: Protocol
withlocalNodeConnectInfo :: CliMode
-> NetworkId
-> FilePath
-> (forall mode block.
Expand All @@ -51,26 +53,38 @@ withlocalNodeConnectInfo protocol network socketPath f =
case localNodeConnectInfo protocol network socketPath of
LocalNodeConnectInfoForSomeMode connctInfo -> f connctInfo

localNodeConnectInfo :: Protocol
localNodeConnectInfo :: CliMode
-> NetworkId
-> FilePath
-> LocalNodeConnectInfoForSomeMode
localNodeConnectInfo protocol network socketPath =
case protocol of
localNodeConnectInfo cliMode network socketPath =
case cliMode of

ByronProtocol epSlots ->
CliByronMode epSlots ->
LocalNodeConnectInfoForSomeMode $
LocalNodeConnectInfo
socketPath network
(ByronMode epSlots)

ShelleyProtocol ->
CliShelleyMode ->
LocalNodeConnectInfoForSomeMode $
LocalNodeConnectInfo
socketPath network
ShelleyMode

CardanoProtocol epSlots ->
CliAllegraMode ->
LocalNodeConnectInfoForSomeMode $
LocalNodeConnectInfo
socketPath network
AllegraMode

CliMaryMode ->
LocalNodeConnectInfoForSomeMode $
LocalNodeConnectInfo
socketPath network
MaryMode

CliCardanoMode epSlots ->
LocalNodeConnectInfoForSomeMode $
LocalNodeConnectInfo
socketPath network
Expand Down
22 changes: 22 additions & 0 deletions cardano-api/src/Cardano/Api/Protocol/Allegra.hs
@@ -0,0 +1,22 @@
-- | Node client support for the Shelley protocol
--
module Cardano.Api.Protocol.Allegra
( -- * Client support
-- mkNodeClientProtocolAllegra
-- , mkSomeNodeClientProtocolAllegra
) where


--import Ouroboros.Consensus.Cardano (ProtocolClient (ProtocolClientAllegra), ProtocolAllegra)
--import Ouroboros.Consensus.Cardano.ShelleyHFC
--import Cardano.Api.Protocol.Types (SomeNodeClientProtocol (..))


{-
mkNodeClientProtocolAllegra :: ProtocolClient (ShelleyBlockHFC StandardAllegra) ProtocolAllegra
mkNodeClientProtocolAllegra = ProtocolClientAllegra
mkSomeNodeClientProtocolAllegra :: SomeNodeClientProtocol
mkSomeNodeClientProtocolAllegra = SomeNodeClientProtocol mkNodeClientProtocolAllegra
-}
22 changes: 22 additions & 0 deletions cardano-api/src/Cardano/Api/Protocol/Mary.hs
@@ -0,0 +1,22 @@
-- | Node client support for the Shelley protocol
--
module Cardano.Api.Protocol.Mary
( -- * Client support
-- mkNodeClientProtocolMary
-- , mkSomeNodeClientProtocolMary
) where


--import Ouroboros.Consensus.Cardano (ProtocolClient (ProtocolClientMary), ProtocolMary)
--import Ouroboros.Consensus.Cardano.ShelleyHFC
--import Cardano.Api.Protocol.Types (SomeNodeClientProtocol (..))


{-
mkNodeClientProtocolMary :: ProtocolClient (ShelleyBlockHFC StandardMary) ProtocolMary
mkNodeClientProtocolMary = ProtocolClientMary
mkSomeNodeClientProtocolMary :: SomeNodeClientProtocol
mkSomeNodeClientProtocolMary = SomeNodeClientProtocol mkNodeClientProtocolMary
-}
12 changes: 10 additions & 2 deletions cardano-api/src/Cardano/Api/Typed.hs
Expand Up @@ -525,7 +525,7 @@ import qualified Cardano.Chain.Slotting as Byron
--
-- Shelley imports
--
import Ouroboros.Consensus.Shelley.Eras (StandardAllegra, StandardShelley, StandardMary)
import Ouroboros.Consensus.Shelley.Eras (StandardAllegra, StandardMary, StandardShelley)
import Ouroboros.Consensus.Shelley.Protocol.Crypto (StandardCrypto)

import qualified Shelley.Spec.Ledger.Address as Shelley
Expand Down Expand Up @@ -599,6 +599,7 @@ import Cardano.Api.Value

data ByronMode
data ShelleyMode
data AllegraMode
data CardanoMode

data LocalNodeConnectInfo mode block =
Expand All @@ -617,6 +618,12 @@ data NodeConsensusMode mode block where
ShelleyMode
:: NodeConsensusMode ShelleyMode (ShelleyBlockHFC StandardShelley)

AllegraMode
:: NodeConsensusMode AllegraMode (ShelleyBlockHFC StandardAllegra)

MaryMode
:: NodeConsensusMode AllegraMode (ShelleyBlockHFC StandardMary)

CardanoMode
:: Byron.EpochSlots
-> NodeConsensusMode CardanoMode (CardanoBlock StandardCrypto)
Expand All @@ -632,7 +639,8 @@ withNodeProtocolClient (ByronMode epochSlots) f =
f (mkNodeClientProtocolByron epochSlots)

withNodeProtocolClient ShelleyMode f = f mkNodeClientProtocolShelley

withNodeProtocolClient AllegraMode _f = error "mkNodeClientProtocolAllegra"
withNodeProtocolClient MaryMode _f = error "mkNodeClientProtocolMary"
withNodeProtocolClient (CardanoMode epochSlots) f =
f (mkNodeClientProtocolCardano epochSlots)

Expand Down
18 changes: 9 additions & 9 deletions cardano-cli/src/Cardano/CLI/Shelley/Commands.hs
Expand Up @@ -48,8 +48,8 @@ module Cardano.CLI.Shelley.Commands
import Data.Text (Text)
import Prelude

import Cardano.Api.CliMode (CliMode)
import Cardano.Api.Typed hiding (PoolId)
import Cardano.Api.Protocol (Protocol)

import Ouroboros.Consensus.BlockchainTime (SystemStart (..))

Expand Down Expand Up @@ -183,7 +183,7 @@ data TransactionCmd
| TxSign TxBodyFile [WitnessSigningData] (Maybe NetworkId) TxFile
| TxCreateWitness TxBodyFile WitnessSigningData (Maybe NetworkId) OutputFile
| TxAssembleTxBodyWitness TxBodyFile [WitnessFile] OutputFile
| TxSubmit Protocol NetworkId FilePath
| TxSubmit CliMode NetworkId FilePath
| TxMintedPolicyId ScriptFile
| TxCalculateMinFee
TxBodyFile
Expand Down Expand Up @@ -270,13 +270,13 @@ renderPoolCmd cmd =
PoolMetaDataHash {} -> "stake-pool metadata-hash"

data QueryCmd =
QueryProtocolParameters Protocol NetworkId (Maybe OutputFile)
| QueryTip Protocol NetworkId (Maybe OutputFile)
| QueryStakeDistribution Protocol NetworkId (Maybe OutputFile)
| QueryStakeAddressInfo Protocol StakeAddress NetworkId (Maybe OutputFile)
| QueryUTxO Protocol QueryFilter NetworkId (Maybe OutputFile)
| QueryLedgerState Protocol NetworkId (Maybe OutputFile)
| QueryProtocolState Protocol NetworkId (Maybe OutputFile)
QueryProtocolParameters CliMode NetworkId (Maybe OutputFile)
| QueryTip CliMode NetworkId (Maybe OutputFile)
| QueryStakeDistribution CliMode NetworkId (Maybe OutputFile)
| QueryStakeAddressInfo CliMode StakeAddress NetworkId (Maybe OutputFile)
| QueryUTxO CliMode QueryFilter NetworkId (Maybe OutputFile)
| QueryLedgerState CliMode NetworkId (Maybe OutputFile)
| QueryProtocolState CliMode NetworkId (Maybe OutputFile)
deriving (Eq, Show)

renderQueryCmd :: QueryCmd -> Text
Expand Down
42 changes: 21 additions & 21 deletions cardano-cli/src/Cardano/CLI/Shelley/Parsers.hs
Expand Up @@ -16,8 +16,8 @@ module Cardano.CLI.Shelley.Parsers
import Cardano.Prelude hiding (All, Any, option)
import Prelude (String)

import Cardano.Api.CliMode (CliMode (..))
import Cardano.Api.Typed hiding (PoolId)
import Cardano.Api.Protocol (Protocol (..))

import Cardano.Chain.Slotting (EpochSlots (..))
import Cardano.CLI.Shelley.Commands
Expand Down Expand Up @@ -527,7 +527,7 @@ pTransaction =
<*> pOutputFile

pTransactionSubmit :: Parser TransactionCmd
pTransactionSubmit = TxSubmit <$> pProtocol
pTransactionSubmit = TxSubmit <$> pCliMode
<*> pNetworkId
<*> pTxSubmitFile

Expand Down Expand Up @@ -663,41 +663,41 @@ pQueryCmd =
pQueryProtocolParameters :: Parser QueryCmd
pQueryProtocolParameters =
QueryProtocolParameters
<$> pProtocol
<$> pCliMode
<*> pNetworkId
<*> pMaybeOutputFile

pQueryTip :: Parser QueryCmd
pQueryTip = QueryTip <$> pProtocol <*> pNetworkId <*> pMaybeOutputFile
pQueryTip = QueryTip <$> pCliMode <*> pNetworkId <*> pMaybeOutputFile

pQueryUTxO :: Parser QueryCmd
pQueryUTxO =
QueryUTxO
<$> pProtocol
<$> pCliMode
<*> pQueryFilter
<*> pNetworkId
<*> pMaybeOutputFile

pQueryStakeDistribution :: Parser QueryCmd
pQueryStakeDistribution =
QueryStakeDistribution
<$> pProtocol
<$> pCliMode
<*> pNetworkId
<*> pMaybeOutputFile

pQueryStakeAddressInfo :: Parser QueryCmd
pQueryStakeAddressInfo =
QueryStakeAddressInfo
<$> pProtocol
<$> pCliMode
<*> pFilterByStakeAddress
<*> pNetworkId
<*> pMaybeOutputFile

pQueryLedgerState :: Parser QueryCmd
pQueryLedgerState = QueryLedgerState <$> pProtocol <*> pNetworkId <*> pMaybeOutputFile
pQueryLedgerState = QueryLedgerState <$> pCliMode <*> pNetworkId <*> pMaybeOutputFile

pQueryProtocolState :: Parser QueryCmd
pQueryProtocolState = QueryProtocolState <$> pProtocol <*> pNetworkId <*> pMaybeOutputFile
pQueryProtocolState = QueryProtocolState <$> pCliMode <*> pNetworkId <*> pMaybeOutputFile

pGovernanceCmd :: Parser GovernanceCmd
pGovernanceCmd =
Expand Down Expand Up @@ -2184,42 +2184,42 @@ pExtraEntropy =
. decodeEitherBase16
=<< Atto.takeWhile1 Char.isHexDigit

pProtocol :: Parser Protocol
pProtocol =
pCliMode :: Parser CliMode
pCliMode =
( Opt.flag' ()
( Opt.long "shelley-mode"
<> Opt.help "For talking to a node running in Shelley-only mode."
)
*> pShelley
*> pShelleyMode
)
<|>
( Opt.flag' ()
( Opt.long "byron-mode"
<> Opt.help "For talking to a node running in Byron-only mode."
)
*> pByron
*> pByronMode
)
<|>
( Opt.flag' ()
( Opt.long "cardano-mode"
<> Opt.help "For talking to a node running in full Cardano mode (default)."
)
*> pCardano
*> pCardanoMode
)
<|>
-- Default to the Cardano protocol.
pure
(CardanoProtocol
(CliCardanoMode
(EpochSlots defaultByronEpochSlots))
where
pByron :: Parser Protocol
pByron = ByronProtocol <$> pEpochSlots
pByronMode :: Parser CliMode
pByronMode = CliByronMode <$> pEpochSlots

pShelley :: Parser Protocol
pShelley = pure ShelleyProtocol
pShelleyMode :: Parser CliMode
pShelleyMode = pure CliShelleyMode

pCardano :: Parser Protocol
pCardano = CardanoProtocol <$> pEpochSlots
pCardanoMode :: Parser CliMode
pCardanoMode = CliCardanoMode <$> pEpochSlots

pEpochSlots :: Parser EpochSlots
pEpochSlots =
Expand Down

0 comments on commit 7aac2f1

Please sign in to comment.