Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce exposed modules in cardano-api #4546

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 6 additions & 10 deletions bench/tx-generator/src/Cardano/Benchmarking/OuroborosImports.hs
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,20 @@ import Prelude
import Ouroboros.Consensus.Block.Abstract
import qualified Ouroboros.Consensus.Cardano as Consensus
import Ouroboros.Consensus.Config (TopLevelConfig, configBlock, configCodec)
import Ouroboros.Consensus.Config.SupportsNode
(ConfigSupportsNode(..), getNetworkMagic)
import Ouroboros.Consensus.Node (ProtocolInfo(..))
import Ouroboros.Consensus.Config.SupportsNode (ConfigSupportsNode (..), getNetworkMagic)
import Ouroboros.Consensus.Node (ProtocolInfo (..))
import Ouroboros.Consensus.Shelley.Eras (StandardCrypto, StandardShelley)
import Ouroboros.Network.Protocol.LocalTxSubmission.Type (SubmitResult (..))

import Cardano.Node.Configuration.Logging (LoggingLayer)
import Cardano.Node.Protocol.Types ( SomeConsensusProtocol(..))
import Cardano.Node.Protocol.Types (SomeConsensusProtocol (..))

import Cardano.Api.Shelley (CardanoMode)
import Cardano.CLI.Types (SigningKeyFile)

import Cardano.Api (NetworkId(..), LocalNodeConnectInfo(..), ConsensusModeParams(..), EpochSlots(..)
, TxInMode, TxValidationErrorInMode
, SigningKey, PaymentKey
, submitTxToNodeLocal)
import Cardano.Api.Protocol.Types (BlockType(..), ProtocolInfoArgs(..), protocolInfo)

import Cardano.Api (BlockType (..), ConsensusModeParams (..), EpochSlots (..),
LocalNodeConnectInfo (..), NetworkId (..), PaymentKey, ProtocolInfoArgs (..),
SigningKey, TxInMode, TxValidationErrorInMode, protocolInfo, submitTxToNodeLocal)
import Cardano.Ledger.Shelley.Genesis (ShelleyGenesis)

type CardanoBlock = Consensus.CardanoBlock StandardCrypto
Expand Down
2 changes: 2 additions & 0 deletions cardano-api/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

- Change `calculateMinimumUTxO` to return `Lovelace` instead of a `Value` ([PR 4482](https://github.com/input-output-hk/cardano-node/pull/4482))

- **Breaking change** - Reduce exposed modules in cardano-api ([PR4546](https://github.com/input-output-hk/cardano-node/pull/4546))

### Bugs

- Allow reading text envelopes from pipes ([PR 4384](https://github.com/input-output-hk/cardano-node/pull/4384))
Expand Down
9 changes: 6 additions & 3 deletions cardano-api/cardano-api.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,19 @@ library

hs-source-dirs: src

-- Do not expose any additional modules. The correct way
-- to expose new functionality is via Cardano.Api or
-- Cardano.Api.Shelley
exposed-modules: Cardano.Api
Cardano.Api.Byron
Cardano.Api.ChainSync.Client
Cardano.Api.ChainSync.ClientPipelined
Cardano.Api.Crypto.Ed25519Bip32
Cardano.Api.EraCast
Cardano.Api.Protocol.Types
Cardano.Api.Shelley
-- TODO: Eliminate in the future when
-- we create wrapper types for the ledger types
-- in this module
Cardano.Api.Orphans
Cardano.Api.SerialiseTextEnvelope

other-modules:
-- Splitting up the big Typed module:
Expand All @@ -58,6 +58,7 @@ library
Cardano.Api.Convenience.Construction
Cardano.Api.Convenience.Query
Cardano.Api.Environment
Cardano.Api.EraCast
Cardano.Api.Eras
Cardano.Api.Error
Cardano.Api.Fees
Expand All @@ -78,6 +79,7 @@ library
Cardano.Api.NetworkId
Cardano.Api.OperationalCertificate
Cardano.Api.ProtocolParameters
Cardano.Api.Protocol.Types
Cardano.Api.Query
Cardano.Api.Script
Cardano.Api.ScriptData
Expand All @@ -86,6 +88,7 @@ library
Cardano.Api.SerialiseJSON
Cardano.Api.SerialiseLedgerCddl
Cardano.Api.SerialiseRaw
Cardano.Api.SerialiseTextEnvelope
Cardano.Api.SerialiseUsing
Cardano.Api.Shelley.Genesis
Cardano.Api.SpecialByron
Expand Down
8 changes: 8 additions & 0 deletions cardano-api/src/Cardano/Api.hs
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,7 @@ module Cardano.Api (
TextEnvelopeDescr,
TextEnvelopeError(..),
textEnvelopeRawCBOR,
textEnvelopeToJSON,
serialiseToTextEnvelope,
deserialiseFromTextEnvelope,
readFileTextEnvelope,
Expand Down Expand Up @@ -564,6 +565,12 @@ module Cardano.Api (
CardanoMode,
-- connectToRemoteNode,

-- ** Protocol related types
BlockType(..),
Protocol(..),
ProtocolInfoArgs(..),


-- *** Chain sync protocol
-- | To construct a @ChainSyncClient@ see @Cardano.Api.Client@ or
-- @Cardano.Api.ClientPipelined@.
Expand Down Expand Up @@ -734,6 +741,7 @@ import Cardano.Api.LedgerState
import Cardano.Api.Modes
import Cardano.Api.NetworkId
import Cardano.Api.OperationalCertificate
import Cardano.Api.Protocol.Types
import Cardano.Api.ProtocolParameters
import Cardano.Api.Query hiding (LedgerState (..))
import Cardano.Api.Script
Expand Down
2 changes: 1 addition & 1 deletion cardano-api/src/Cardano/Api/IPC.hs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ import Prelude

import Data.Void (Void)

import Data.Aeson (ToJSON, (.=), object, toJSON)
import Data.Aeson (ToJSON, object, toJSON, (.=))
import Data.Bifunctor (first)
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Map.Strict as Map
Expand Down
1 change: 0 additions & 1 deletion cardano-cli/src/Cardano/CLI/Shelley/Run/Genesis.hs
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ import Cardano.CLI.Byron.Genesis as Byron
import qualified Cardano.CLI.Byron.Key as Byron
import qualified Cardano.Crypto.Signing as Byron

import Cardano.Api.SerialiseTextEnvelope (textEnvelopeToJSON)
import Cardano.Chain.Common (BlockCount (unBlockCount))
import Cardano.Chain.Delegation (delegateVK)
import qualified Cardano.Chain.Delegation as Dlg
Expand Down
4 changes: 2 additions & 2 deletions cardano-node-chairman/app/Cardano/Chairman/Commands/Run.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ module Cardano.Chairman.Commands.Run
( cmdRun
) where

import qualified Cardano.Api as Api
import Cardano.Prelude

import Control.Monad.Class.MonadTime (DiffTime)
Expand All @@ -29,7 +30,6 @@ import Ouroboros.Consensus.Node.ProtocolInfo


import Cardano.Api
import qualified Cardano.Api.Protocol.Types as Protocol
import Cardano.Chairman (chairmanTest)

data RunOpts = RunOpts
Expand Down Expand Up @@ -115,7 +115,7 @@ run RunOpts

let (k , nId) = case p of
SomeConsensusProtocol _ runP ->
let ProtocolInfo { pInfoConfig } = Protocol.protocolInfo runP
let ProtocolInfo { pInfoConfig } = Api.protocolInfo runP
in ( Consensus.configSecurityParam pInfoConfig
, fromNetworkMagic . getNetworkMagic $ Consensus.configBlock pInfoConfig
)
Expand Down
11 changes: 5 additions & 6 deletions cardano-node/src/Cardano/Node/Configuration/Logging.hs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ module Cardano.Node.Configuration.Logging
, LOContent (..)
) where

import qualified Cardano.Api as Api
import Cardano.Prelude hiding (trace)

import qualified Control.Concurrent as Conc
Expand Down Expand Up @@ -76,8 +77,6 @@ import Ouroboros.Consensus.HardFork.Combinator.Degenerate
import Ouroboros.Consensus.Node.ProtocolInfo
import Ouroboros.Consensus.Shelley.Ledger.Ledger

import Cardano.Api.Protocol.Types (BlockType (..), protocolInfo)

import Cardano.Git.Rev (gitRev)
import Cardano.Node.Configuration.POM (NodeConfiguration (..), ncProtocol)
import Cardano.Node.Protocol.Types (SomeConsensusProtocol (..))
Expand Down Expand Up @@ -323,16 +322,16 @@ nodeBasicInfo :: NodeConfiguration
-> IO [LogObject Text]
nodeBasicInfo nc (SomeConsensusProtocol whichP pForInfo) nodeStartTime' = do
meta <- mkLOMeta Notice Public
let cfg = pInfoConfig $ protocolInfo pForInfo
let cfg = pInfoConfig $ Api.protocolInfo pForInfo
protocolDependentItems =
case whichP of
ByronBlockType ->
Api.ByronBlockType ->
let DegenLedgerConfig cfgByron = Consensus.configLedger cfg
in getGenesisValuesByron cfg cfgByron
ShelleyBlockType ->
Api.ShelleyBlockType ->
let DegenLedgerConfig cfgShelley = Consensus.configLedger cfg
in getGenesisValues "Shelley" cfgShelley
CardanoBlockType ->
Api.CardanoBlockType ->
let CardanoLedgerConfig cfgByron cfgShelley cfgAllegra
cfgMary cfgAlonzo cfgBabbage = Consensus.configLedger cfg
in getGenesisValuesByron cfg cfgByron
Expand Down
5 changes: 2 additions & 3 deletions cardano-node/src/Cardano/Node/Protocol/Byron.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,14 @@ import qualified Data.ByteString.Lazy as LB
import qualified Data.Text as Text

import Cardano.Api.Byron
import qualified Cardano.Api.Protocol.Types as Protocol

import qualified Cardano.Crypto.Hash as Crypto

import qualified Cardano.Crypto.Hashing as Byron.Crypto

import qualified Cardano.Chain.Genesis as Genesis
import qualified Cardano.Chain.UTxO as UTxO
import qualified Cardano.Chain.Update as Update
import qualified Cardano.Chain.UTxO as UTxO
import Cardano.Crypto.ProtocolMagic (RequiresNetworkMagic)

import Cardano.Node.Types
Expand Down Expand Up @@ -80,7 +79,7 @@ mkSomeConsensusProtocolByron NodeByronProtocolConfiguration {

optionalLeaderCredentials <- readLeaderCredentials genesisConfig files

return $ SomeConsensusProtocol Protocol.ByronBlockType $ Protocol.ProtocolInfoArgsByron $ Consensus.ProtocolParamsByron {
return $ SomeConsensusProtocol ByronBlockType $ ProtocolInfoArgsByron $ Consensus.ProtocolParamsByron {
byronGenesis = genesisConfig,
byronPbftSignatureThreshold =
PBftSignatureThreshold <$> npcByronPbftSignatureThresh,
Expand Down
1 change: 0 additions & 1 deletion cardano-node/src/Cardano/Node/Protocol/Cardano.hs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import qualified Ouroboros.Consensus.Mempool.TxLimits as TxLimits

import Cardano.Api
import Cardano.Api.Orphans ()
import Cardano.Api.Protocol.Types
import Cardano.Node.Types

import Cardano.Tracing.OrphanInstances.Byron ()
Expand Down
5 changes: 2 additions & 3 deletions cardano-node/src/Cardano/Node/Protocol/Shelley.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ module Cardano.Node.Protocol.Shelley
, validateGenesis
) where

import qualified Cardano.Api as Api
import Cardano.Prelude
import Prelude (String, id)

Expand All @@ -44,9 +45,7 @@ import Ouroboros.Consensus.Shelley.Node (Nonce (..), ProtocolParamsShe
import Cardano.Ledger.BaseTypes (ProtVer (..))
import qualified Cardano.Ledger.Shelley.Genesis as Shelley

import qualified Cardano.Api as Api (FileError (..))
import Cardano.Api.Orphans ()
import qualified Cardano.Api.Protocol.Types as Protocol
import Cardano.Api.Shelley hiding (FileError)

import Cardano.Node.Types
Expand Down Expand Up @@ -87,7 +86,7 @@ mkSomeConsensusProtocolShelley NodeShelleyProtocolConfiguration {
leaderCredentials <- firstExceptT PraosLeaderCredentialsError $
readLeaderCredentials files

return $ SomeConsensusProtocol Protocol.ShelleyBlockType $ Protocol.ProtocolInfoArgsShelley
return $ SomeConsensusProtocol Api.ShelleyBlockType $ Api.ProtocolInfoArgsShelley
Consensus.ProtocolParamsShelleyBased {
shelleyBasedGenesis = genesis,
shelleyBasedInitialNonce = genesisHashToPraosNonce genesisHash,
Expand Down
11 changes: 5 additions & 6 deletions cardano-node/src/Cardano/Node/Protocol/Types.hs
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,13 @@ module Cardano.Node.Protocol.Types
, SomeConsensusProtocol(..)
) where

import Prelude
import qualified Cardano.Api as Api
import Cardano.Prelude (Generic, NFData)
import Prelude

import Data.Aeson
import NoThunks.Class (NoThunks)

import qualified Cardano.Api.Protocol.Types as Cardano

import Cardano.Node.Orphans ()
import Cardano.Node.Queries (HasKESInfo, HasKESMetricsData)
import Cardano.Node.TraceConstraints (TraceConstraints)
Expand Down Expand Up @@ -55,11 +54,11 @@ instance FromJSON Protocol where

data SomeConsensusProtocol where

SomeConsensusProtocol :: forall blk. ( Cardano.Protocol IO blk
SomeConsensusProtocol :: forall blk. ( Api.Protocol IO blk
, HasKESMetricsData blk
, HasKESInfo blk
, TraceConstraints blk
)
=> Cardano.BlockType blk
-> Cardano.ProtocolInfoArgs IO blk
=> Api.BlockType blk
-> Api.ProtocolInfoArgs IO blk
-> SomeConsensusProtocol
26 changes: 12 additions & 14 deletions cardano-node/src/Cardano/Node/Run.hs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ module Cardano.Node.Run
, checkVRFFilePermissions
) where

import qualified Cardano.Api as Api
import Cardano.Prelude hiding (ByteString, STM, atomically, show, take, trace)
import Data.IP (toSockAddr)
import Prelude (String, id, show)
Expand Down Expand Up @@ -62,7 +63,7 @@ import Cardano.Node.Configuration.POM (NodeConfiguration (..),
defaultPartialNodeConfiguration, makeNodeConfiguration, parseNodeConfigurationFP)
import Cardano.Node.Startup
import Cardano.Node.Tracing.API
import Cardano.Node.Tracing.StateRep (NodeState(NodeKernelOnline))
import Cardano.Node.Tracing.StateRep (NodeState (NodeKernelOnline))
import Cardano.Node.Tracing.Tracers.Startup (getStartupInfo)
import Cardano.Node.Types
import Cardano.Tracing.Config (TraceOptions (..), TraceSelection (..))
Expand All @@ -86,9 +87,6 @@ import Ouroboros.Network.PeerSelection.RelayAccessPoint (RelayAccessPo
import Ouroboros.Network.Subscription (DnsSubscriptionTarget (..),
IPSubscriptionTarget (..))

import Cardano.Api
import qualified Cardano.Api.Protocol.Types as Protocol

import Cardano.Node.Configuration.Socket (SocketOrSocketInfo (..),
gatherConfiguredSockets, getSocketOrSocketInfoAddr)
import qualified Cardano.Node.Configuration.Topology as TopologyNonP2P
Expand Down Expand Up @@ -137,13 +135,13 @@ runNode cmdPc = do

p :: SomeConsensusProtocol <-
case eitherSomeProtocol of
Left err -> putStrLn (displayError err) >> exitFailure
Left err -> putStrLn (Api.displayError err) >> exitFailure
Right p -> pure p

let networkMagic :: NetworkMagic =
let networkMagic :: Api.NetworkMagic =
case p of
SomeConsensusProtocol _ runP ->
let ProtocolInfo { pInfoConfig } = Protocol.protocolInfo runP
let ProtocolInfo { pInfoConfig } = Api.protocolInfo runP
in getNetworkMagic $ Consensus.configBlock pInfoConfig

case p of
Expand Down Expand Up @@ -172,19 +170,19 @@ installSigTermHandler = do

handleNodeWithTracers
:: ( TraceConstraints blk
, Protocol.Protocol IO blk
, Api.Protocol IO blk
)
=> PartialNodeConfiguration
-> NodeConfiguration
-> SomeConsensusProtocol
-> NetworkMagic
-> Protocol.ProtocolInfoArgs IO blk
-> Api.NetworkMagic
-> Api.ProtocolInfoArgs IO blk
-> IO ()
handleNodeWithTracers cmdPc nc p networkMagic runP = do
-- This IORef contains node kernel structure which holds node kernel.
-- Used for ledger queries and peer connection status.
nodeKernelData <- mkNodeKernelData
let ProtocolInfo { pInfoConfig = cfg } = Protocol.protocolInfo runP
let ProtocolInfo { pInfoConfig = cfg } = Api.protocolInfo runP
case ncEnableP2P nc of
SomeNetworkP2PMode p2pMode -> do
let fp = maybe "No file path found!"
Expand Down Expand Up @@ -311,9 +309,9 @@ handlePeersListSimple tr nodeKern = forever $ do
handleSimpleNode
:: forall blk p2p
. ( RunNode blk
, Protocol.Protocol IO blk
, Api.Protocol IO blk
)
=> Protocol.ProtocolInfoArgs IO blk
=> Api.ProtocolInfoArgs IO blk
-> NetworkP2PMode p2p
-> Tracers RemoteConnectionId LocalConnectionId blk p2p
-> NodeConfiguration
Expand All @@ -332,7 +330,7 @@ handleSimpleNode runP p2pMode tracers nc onKernel = do
traceWith (startupTracer tracers)
StartupDBValidation

let pInfo = Protocol.protocolInfo runP
let pInfo = Api.protocolInfo runP

(publicIPv4SocketOrAddr, publicIPv6SocketOrAddr, localSocketOrPath) <- do
result <- runExceptT (gatherConfiguredSockets $ ncSocketConfig nc)
Expand Down
Loading