Skip to content

Commit 4ec6d68

Browse files
Add cardano-network-magic to cli options
Defaults to Cardano mainnet
1 parent b3569a9 commit 4ec6d68

File tree

4 files changed

+33
-17
lines changed

4 files changed

+33
-17
lines changed

dmq-node/src/DMQ/Configuration.hs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ module DMQ.Configuration
3232
, LocalAddress (..)
3333
) where
3434

35+
import Cardano.Chain.Genesis (mainnetProtocolMagicId)
36+
import Cardano.Crypto.ProtocolMagic (ProtocolMagicId(..))
3537
import Control.Concurrent.Class.MonadSTM.Strict
3638
import Control.Monad.Class.MonadThrow
3739
import Control.Monad.Class.MonadTime.SI (DiffTime)
@@ -99,7 +101,10 @@ data Configuration' f =
99101
dmqcProtocolIdleTimeout :: f DiffTime,
100102
dmqcChurnInterval :: f DiffTime,
101103
dmqcPeerSharing :: f PeerSharing,
104+
-- network magic for the DMQ network itself
102105
dmqcNetworkMagic :: f NetworkMagic,
106+
-- network magic for local connections to a cardano-node
107+
dmqcCardanoNetworkMagic :: f NetworkMagic,
103108
dmqcCardanoNodeSocket :: f FilePath,
104109
dmqcPrettyLog :: f Bool,
105110

@@ -205,6 +210,8 @@ defaultConfiguration = Configuration {
205210
dmqcIPv6 = I Nothing,
206211
dmqcLocalAddress = I (LocalAddress "dmq-node.socket"),
207212
dmqcNetworkMagic = I NetworkMagic { unNetworkMagic = 3_141_592 },
213+
dmqcCardanoNetworkMagic =
214+
I (NetworkMagic . unProtocolMagicId $ mainnetProtocolMagicId),
208215
dmqcPortNumber = I 3_141,
209216
dmqcConfigFile = I "dmq.configuration.yaml",
210217
dmqcTopologyFile = I "dmq.topology.json",
@@ -296,6 +303,7 @@ instance FromJSON PartialConfig where
296303
dmqcLocalAddress <- Last . fmap LocalAddress <$> v .:? "LocalAddress"
297304
dmqcPortNumber <- Last . fmap (fromIntegral @Int) <$> v.:? "PortNumber"
298305
dmqcNetworkMagic <- Last . fmap NetworkMagic <$> v .:? "NetworkMagic"
306+
dmqcCardanoNetworkMagic <- Last . fmap NetworkMagic <$> v .:? "CardanoNetworkMagic"
299307
dmqcDiffusionMode <- Last <$> v .:? "DiffusionMode"
300308
dmqcPeerSharing <- Last <$> v .:? "PeerSharing"
301309
dmqcCardanoNodeSocket <- Last <$> v .:? "CardanoNodeSocket"
@@ -358,11 +366,11 @@ instance FromJSON PartialConfig where
358366

359367
pure $
360368
Configuration
361-
{ dmqcIPv4 = Last dmqcIPv4
362-
, dmqcIPv6 = Last dmqcIPv6
363-
, dmqcConfigFile = mempty
364-
, dmqcTopologyFile = mempty
365-
, dmqcVersion = mempty
369+
{ dmqcIPv4 = Last dmqcIPv4
370+
, dmqcIPv6 = Last dmqcIPv6
371+
, dmqcConfigFile = mempty
372+
, dmqcTopologyFile = mempty
373+
, dmqcVersion = mempty
366374
, ..
367375
}
368376

@@ -390,6 +398,7 @@ instance ToJSON Configuration where
390398
, "ChurnInterval" .= unI dmqcChurnInterval
391399
, "PeerSharing" .= unI dmqcPeerSharing
392400
, "NetworkMagic" .= unNetworkMagic (unI dmqcNetworkMagic)
401+
, "CardanoNetworkMagic" .= unNetworkMagic (unI dmqcCardanoNetworkMagic)
393402
, "PrettyLog" .= unI dmqcPrettyLog
394403
, "MuxTracer" .= unI dmqcMuxTracer
395404
, "ChannelTracer" .= unI dmqcChannelTracer

dmq-node/src/DMQ/Configuration/CLIOptions.hs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Data.Monoid (Last (..))
44
import Options.Applicative
55

66
import DMQ.Configuration
7+
import Ouroboros.Network.Magic (NetworkMagic (..))
78

89
parseCLIOptions :: Parser PartialConfig
910
parseCLIOptions =
@@ -55,11 +56,18 @@ parseCLIOptions =
5556
)
5657
<*> optional (
5758
strOption
58-
( long "cardano-node-socket"
59+
( long "cardano-node-socket"
5960
<> metavar "Cardano node socket path"
6061
<> help "Used for local connections to Cardano node"
6162
)
6263
)
64+
<*> optional (
65+
option auto
66+
( long "cardano-network-magic"
67+
<> metavar "Cardano node network magic"
68+
<> help "The network magic of cardano-node client for local connections"
69+
)
70+
)
6371
<*> optional (
6472
switch
6573
( long "version"
@@ -69,13 +77,14 @@ parseCLIOptions =
6977
)
7078
where
7179
mkConfiguration ipv4 ipv6 portNumber localAddress
72-
configFile topologyFile cardanoNodeSocket version =
80+
configFile topologyFile cardanoNodeSocket networkMagic version =
7381
mempty { dmqcIPv4 = Last (Just <$> ipv4),
7482
dmqcIPv6 = Last (Just <$> ipv6),
7583
dmqcLocalAddress = Last (LocalAddress <$> localAddress),
7684
dmqcPortNumber = Last portNumber,
7785
dmqcConfigFile = Last configFile,
7886
dmqcTopologyFile = Last topologyFile,
7987
dmqcCardanoNodeSocket = Last cardanoNodeSocket,
88+
dmqcNetworkMagic = Last (NetworkMagic <$> networkMagic),
8089
dmqcVersion = Last version
8190
}

dmq-node/src/DMQ/Diffusion/NodeKernel.hs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import Ouroboros.Consensus.Shelley.Ledger.Query
4040
import Ouroboros.Network.BlockFetch (FetchClientRegistry,
4141
newFetchClientRegistry)
4242
import Ouroboros.Network.ConnectionId (ConnectionId (..))
43+
import Ouroboros.Network.Magic (NetworkMagic (..))
4344
import Ouroboros.Network.PeerSelection.Governor.Types
4445
(makePublicPeerSelectionStateVar)
4546
import Ouroboros.Network.PeerSelection.LedgerPeers.Type (LedgerPeerSnapshot,
@@ -171,14 +172,15 @@ withNodeKernel :: forall crypto ntnAddr m a.
171172
=> (forall ev. Aeson.ToJSON ev => Tracer m (WithEventType ev))
172173
-> Configuration
173174
-> StdGen
174-
-> (NodeKernel crypto ntnAddr m -> m (Either SomeException Void))
175+
-> (NetworkMagic -> NodeKernel crypto ntnAddr m -> m (Either SomeException Void))
175176
-> (NodeKernel crypto ntnAddr m -> m a)
176177
-- ^ as soon as the callback exits the `mempoolWorker` and all
177178
-- decision logic threads will be killed
178179
-> m a
179180
withNodeKernel tracer
180181
Configuration {
181-
dmqcSigSubmissionLogicTracer = I sigSubmissionLogicTracer
182+
dmqcSigSubmissionLogicTracer = I sigSubmissionLogicTracer,
183+
dmqcCardanoNetworkMagic = I networkMagic
182184
}
183185
rng
184186
mkStakePoolMonitor k = do
@@ -198,7 +200,7 @@ withNodeKernel tracer
198200
sigChannelVar
199201
sigSharedTxStateVar)
200202
$ \sigLogicThread ->
201-
withAsync (mkStakePoolMonitor nodeKernel) \spmAid -> do
203+
withAsync (mkStakePoolMonitor networkMagic nodeKernel) \spmAid -> do
202204
link mempoolThread
203205
link sigLogicThread
204206
link spmAid

dmq-node/src/DMQ/NodeToClient/LocalStateQueryClient.hs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ import Data.Map.Strict qualified as Map
2020
import Data.Proxy
2121
import Data.Void
2222

23-
import Cardano.Chain.Genesis
2423
import Cardano.Chain.Slotting
25-
import Cardano.Crypto.ProtocolMagic
2624
import Cardano.Network.NodeToClient
2725
import Cardano.Slotting.EpochInfo.API
2826
import Cardano.Slotting.Time
@@ -152,20 +150,18 @@ cardanoClient _tracer StakePools { stakePoolsVar, ledgerPeersVar, ledgerBigPeers
152150
connectToCardanoNode :: Tracer IO (WithEventType String)
153151
-> LocalSnocket
154152
-> FilePath
153+
-> NetworkMagic
155154
-> NodeKernel crypto ntnAddr IO
156155
-> IO (Either SomeException Void)
157-
connectToCardanoNode tracer localSnocket' snocketPath nodeKernel =
156+
connectToCardanoNode tracer localSnocket' snocketPath networkMagic nodeKernel =
158157
connectTo
159158
localSnocket'
160159
nullNetworkConnectTracers --debuggingNetworkConnectTracers
161160
(combineVersions
162161
[ simpleSingletonVersions
163162
version
164163
NodeToClientVersionData {
165-
networkMagic =
166-
NetworkMagic -- 2 {- preview net -}
167-
. unProtocolMagicId
168-
$ mainnetProtocolMagicId
164+
networkMagic
169165
, query = False
170166
}
171167
\_version ->

0 commit comments

Comments
 (0)