Skip to content
Draft
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
3 changes: 2 additions & 1 deletion .stylish-haskell.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Stylish-haskell configuration file used for the dmq-node
# Stylish-haskell configuration file used for the network layer
# It's based on default config provided by `stylish-haskell --defaults` but
# has some changes ==================================

Expand Down Expand Up @@ -288,3 +288,4 @@ language_extensions:
- TypeFamilies
- ViewPatterns
- ExplicitNamespaces

62 changes: 52 additions & 10 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ repository cardano-haskell-packages
-- repeat the index-state for hackage to work around haskell.nix parsing limitation
index-state:
-- Bump this if you need newer packages from Hackage
, hackage.haskell.org 2025-11-10T01:36:00Z
, hackage.haskell.org 2026-02-17T10:15:41Z

-- Bump this if you need newer packages from CHaP
, cardano-haskell-packages 2026-01-09T12:04:47Z
, cardano-haskell-packages 2026-02-17T21:19:19Z

packages:
./dmq-node
Expand All @@ -36,18 +36,58 @@ if(os(windows))
-- kes-agent is not yet in CHaP, so we pull it from its GitHub repo
source-repository-package
type: git
location: https://github.com/crocodile-dentist/kes-agent
tag: c0ef04dde5582a28415ff7c8c1bb197adeec6fc8
--sha256: sha256-slF7zuBy2DKWKlQfhBPW5FDRhueWrFcJkrHW4jEEELs=
location: https://github.com/input-output-hk/kes-agent
tag: 84c98f369d58e86cf7a339ccce583252d4cb5773
--sha256: sha256-0RsKmpXcJfO4bFos5Mx71lUye3bo7g6lc+gXCaKzxJs=
subdir:
kes-agent
kes-agent-crypto

-- Ledger main past the releases for node-cardano-10.6
source-repository-package
type: git
location: https://github.com/IntersectMBO/cardano-ledger
tag: bd2c3fc558c8b053b03f25a84fc02e26dd17d927
--sha256: sha256-JCzOtN0/eQob9IneXjihwxDgWZlSZ2ZdIkz2qBPhtU8=
subdir:
eras/allegra/impl
eras/alonzo/impl
eras/alonzo/test-suite
eras/babbage/impl
eras/conway/impl
eras/dijkstra/impl
eras/mary/impl
eras/shelley/impl
eras/shelley/test-suite
eras/shelley-ma/test-suite
libs/cardano-ledger-api
libs/cardano-ledger-core
libs/cardano-ledger-binary
libs/cardano-protocol-tpraos
libs/non-integral
libs/small-steps
libs/cardano-data
libs/vector-map
eras/byron/chain/executable-spec
eras/byron/ledger/executable-spec
eras/byron/ledger/impl
eras/byron/crypto

-- Plutus main past the 1.58 release
source-repository-package
type: git
location: https://github.com/IntersectMBO/plutus
tag: 9b47adbd2e0cf9b4749e53f5138b3817eaa5f0b4
--sha256: sha256-wqriBVjkC1mW/Mp+FButFNBRClync9cDwZtgG+a6lb0=
subdir:
plutus-core
plutus-ledger-api

source-repository-package
type: git
location: https://github.com/IntersectMBO/ouroboros-consensus
tag: 454e2491a23d14161c159d815bd26c545455c9ef
--sha256: sha256-ODoM1dCyKM8MiMherH1xxcJtzoYdqbhDGkwzFB6SKeM=
tag: 49351452ea456b6242fa50e5ba3724ea6b66117d
--sha256: sha256-4ONSJnD5x89HAfhUk/Kt6/CePc1OL2i15J7d4wpsQ10=
subdir:
ouroboros-consensus-cardano
ouroboros-consensus-diffusion
Expand All @@ -58,9 +98,8 @@ source-repository-package
source-repository-package
type: git
location: https://github.com/IntersectMBO/ouroboros-network
-- from coot/dmq-related-changes
tag: 625296c92363b8c5e77cddee40de4525421d2660
--sha256: sha256-WRbKqNimAsYtgj/r3SJ0IT6z7+Q3XZf3p89BM9w6bF8=
tag: 5be7d7897145fd432867c4dd095e0d62e53b3be9
--sha256: sha256-AeAvjWx0SbnFeamB/pNO19gTbSyRjFRn7xPOsLHnq7s=
subdir:
acts-generic
cardano-diffusion
Expand All @@ -70,3 +109,6 @@ source-repository-package
if impl(ghc >= 9.12.0)
allow-newer: *:time,
*:nothunks,

-- rejecting: cardano-crypto-class-2.3.1.0 (conflict: cardano-crypto-tests => cardano-crypto-class>=2.2.2 && <2.2.4)
-- allow-newer: cardano-crypto-tests:cardano-crypto-class
28 changes: 9 additions & 19 deletions dmq-node/app/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@

module Main where

import Control.Concurrent.Class.MonadSTM.Strict
import Control.Concurrent.Class.MonadMVar
import Control.Concurrent.Class.MonadSTM.Strict
import Control.Monad (void, when)
import Control.Monad.Class.MonadThrow
import Control.Tracer (Tracer (..), nullTracer, traceWith)

import Data.Act
import Data.Aeson (ToJSON)
import Data.ByteString.Lazy qualified as BSL
import Data.Functor.Contravariant ((>$<))
import Data.Foldable (traverse_)
import Data.Functor.Contravariant ((>$<))
import Data.List.NonEmpty (NonEmpty)
import Data.Maybe (maybeToList)
import Data.Text qualified as Text
Expand All @@ -29,8 +29,8 @@ import Data.Version (showVersion)
import Data.Void (Void)
import Options.Applicative
import System.Exit (exitSuccess)
import System.Random (newStdGen, split)
import System.IOManager (withIOManager)
import System.Random qualified as Random

import Cardano.Git.Rev (gitRev)
import Cardano.KESAgent.Protocols.StandardCrypto (StandardCrypto)
Expand All @@ -49,7 +49,6 @@ import DMQ.Protocol.SigSubmission.Type (Sig (..))
import DMQ.Tracer

import DMQ.Diffusion.PeerSelection (policy)
import DMQ.NodeToClient.LocalStateQueryClient
import DMQ.Protocol.SigSubmission.Validate
import Ouroboros.Network.Diffusion qualified as Diffusion
import Ouroboros.Network.PeerSelection.LedgerPeers.Type
Expand Down Expand Up @@ -86,9 +85,7 @@ runDMQ commandLineConfig = do
dmqcHandshakeTracer = I handshakeTracer,
dmqcValidationTracer = I validationTracer,
dmqcLocalHandshakeTracer = I localHandshakeTracer,
dmqcCardanoNodeSocket = I snocketPath,
dmqcVersion = I version,
dmqcLocalStateQueryTracer = I localStateQueryTracer
dmqcVersion = I version
} = config' <> commandLineConfig
`act`
defaultConfiguration
Expand Down Expand Up @@ -121,25 +118,18 @@ runDMQ commandLineConfig = do
nt <- readTopologyFileOrError topologyFile
traceWith tracer (WithEventType "NetworkTopology" nt)

stdGen <- newStdGen
let (psRng, policyRng) = split stdGen
stdGen <- Random.newStdGen
let (psRng, policyRng) = Random.splitGen stdGen
policyRngVar <- newTVarIO policyRng

-- TODO: this might not work, since `ouroboros-network` creates its own IO Completion Port.
withIOManager \iocp -> do
let localSnocket' = localSnocket iocp
mkStakePoolMonitor = connectToCardanoNode
(if localStateQueryTracer
then WithEventType "LocalStateQuery" >$< tracer
else nullTracer)
localSnocket'
snocketPath

withNodeKernel @StandardCrypto
(localSnocket iocp)
makeLocalBearer
tracer
dmqConfig
psRng
mkStakePoolMonitor $ \nodeKernel -> do
psRng $ \nodeKernel -> do
dmqDiffusionConfiguration <-
mkDiffusionConfiguration dmqConfig nt nodeKernel.stakePools.ledgerBigPeersVar

Expand Down
19 changes: 11 additions & 8 deletions dmq-node/dmq-node.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ library
DMQ.Diffusion.Applications
DMQ.Diffusion.Arguments
DMQ.Diffusion.NodeKernel
DMQ.Diffusion.NodeKernel.Types
DMQ.Diffusion.PeerSelection
DMQ.Handlers.TopLevel
DMQ.NodeToClient
Expand Down Expand Up @@ -97,9 +98,11 @@ library
cardano-crypto-class,
cardano-crypto-wrapper,
cardano-diffusion,
cardano-ledger-api,
cardano-ledger-byron,
cardano-ledger-core,
cardano-ledger-shelley,
cardano-protocol-tpraos,
cardano-slotting,
cborg >=0.2.1 && <0.3,
containers >=0.5 && <0.8,
Expand All @@ -110,21 +113,21 @@ library
hashable >=1.0 && <1.6,
io-classes:{io-classes, si-timers, strict-mvar, strict-stm} ^>=1.8.0.1,
iproute ^>=1.7.15,
kes-agent-crypto ^>=0.1,
kes-agent-crypto ^>=1.0,
mtl,
network ^>=3.2.7,
network-mux ^>=0.9.1,
network-mux ^>=0.10,
optparse-applicative >=0.18 && <0.20,
ouroboros-consensus,
ouroboros-consensus-cardano,
ouroboros-consensus-diffusion,
ouroboros-network:{ouroboros-network, api, framework, orphan-instances, protocols} ^>=0.23,
random ^>=1.2,
ouroboros-network:{ouroboros-network, api, framework, orphan-instances, protocols} ^>=0.24,
random ^>=1.3,
singletons,
text >=1.2.4 && <2.2,
time >=1.12 && <1.15,
transformers,
typed-protocols:{typed-protocols, cborg} ^>=1.1,
typed-protocols:{typed-protocols, cborg} ^>=1.2,

hs-source-dirs: src
default-language: Haskell2010
Expand Down Expand Up @@ -181,17 +184,17 @@ test-suite dmq-tests
QuickCheck,
base >=4.14 && <4.23,
bytestring,
cardano-crypto-class,
cardano-crypto-tests,
cardano-crypto-class:{cardano-crypto-class, testlib},
cardano-ledger-api,
cardano-ledger-core,
cborg,
containers,
contra-tracer,
deepseq,
dmq-node,
io-classes:{io-classes, si-timers},
io-sim,
kes-agent-crypto,
ouroboros-consensus-cardano,
ouroboros-network:{api, framework, protocols, protocols-tests-lib, tests-lib},
quickcheck-instances,
serialise,
Expand Down
Loading