-
Notifications
You must be signed in to change notification settings - Fork 92
dmq: node-to-node application #5183
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
Conversation
Also fixed two hlint warnings.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements a node-to-node application for a Decentralized Message Queue (DMQ) system built on top of the Ouroboros network stack. The implementation includes protocol definitions, versioning, configuration, and basic logging infrastructure.
- Added DMQ-specific protocols and types, including a signature submission protocol based on TxSubmission2
- Refactored mempool implementation with a new simple mempool module and updated type signatures
- Renamed several fields across peer selection and churn modules for better consistency
Reviewed Changes
Copilot reviewed 64 out of 64 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| decentralized-message-queue/src/DMQ/*.hs | Core DMQ implementation with node-to-node/client protocols, signature submission, tracer infrastructure |
| ouroboros-network/src/Ouroboros/Network/TxSubmission/Mempool/Simple.hs | New simple mempool implementation module |
| ouroboros-network/testlib/Test/Ouroboros/Network/TxSubmission/Types.hs | Updated to use new mempool types and removed custom implementation |
| ouroboros-network/orphan-instances/Ouroboros/Network/OrphanInstances.hs | Extensive JSON serialization instances for tracing and monitoring |
| Various test and configuration files | Updated type signatures, field renames, and test improvements |
ouroboros-network/src/Ouroboros/Network/TxSubmission/Mempool/Simple.hs
Outdated
Show resolved
Hide resolved
ouroboros-network/orphan-instances/Ouroboros/Network/OrphanInstances.hs
Outdated
Show resolved
Hide resolved
ouroboros-network/orphan-instances/Ouroboros/Network/OrphanInstances.hs
Outdated
Show resolved
Hide resolved
ouroboros-network/orphan-instances/Ouroboros/Network/OrphanInstances.hs
Outdated
Show resolved
Hide resolved
ouroboros-network/orphan-instances/Ouroboros/Network/OrphanInstances.hs
Outdated
Show resolved
Hide resolved
* `getOriginalPeerSelectionTargets` -> `pcaPeerSelectionTargets` * `genesisPeerTargets` -> `genesisPeerSelectionTargets` for * `Cardano.Network.Diffusion.Types.CardanoNodeArguments` * `Cardano.Network.Diffusion.Types.ExtraPeerSelectionActions` * `Cardano.Network.PeerSelection.Churn.ExtraArguments` * `Cardano.Network.PeerSelection.Governor.PeerSelectionActions.ExtraPeerSelectionActions`
It must set peer selection targets.
Re-use the mempool implemented in the test, but make it slighly more general so it can be re-used by the DMQ.
The `SingI blocking` instance can be provided by `MsgRequestTxIds` constructor.
We don't need polymorphic bytes in the `App` type. Consensus is using it for testing purposes, which we do differently.
0274efd to
e8a2667
Compare
crocodile-dentist
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are some build failures but that shouldn't be too hard to fix. I've mostly skimmed the contents with looking closer at a few more interesting bits, and overall lgtm.
e8a2667 to
c55b67c
Compare
* Added `localRootPeersGroupToJSON`, `localRootPeersGroupsToJSON`, `networkToplogogyToJSON` to `Ouroboros.Network.OrphanInstances` * Added `localRootPeersGroupFromJSON`, localRootPeersGroupsFromJSON`, `networkTopologyFromJSON to `Ouroboros.Network.OrphanInstances` * Addded `ToJSON` and `FromJSON` instances for `NetworkTopology UseBootstrapPeers PeerTrustable` to `Cardano.Network.OrphanInstances`
Use `Configuration` for both config file & CLI options. Added `IPv4`, `IPv6` & `PortNumber` to `Configuration`.
Interpret ledger snapshot file path relatively to topology file.
Very often the original instances where using `ToObject` type class rather than `ToJSON`. So getting rid of them in `cardano-node` will require manual inspection, which instances are not needed any more.
Using JSON output.
…t}` modules
We will need to imprt `Configuration` module into `NodeTo{Node,Client}`
modules to configure tracers. This will be done in subsequent commits
where protocol tracers are added.
b7499ea to
b3961a4
Compare
cf10ee9 to
6fc67a3
Compare
* `decentralised-message-queue:dmq-test` heap size limit * `hls-2.11`
b65b2e1 to
25c3b96
Compare
Description
Checklist
Quality
Maintenance
ouroboros-networkproject.