The DMQ node allows for client peers to communicate efficiently by publishing and consuming messages which are diffused over a P2P network to other nodes.
This repository provides the dmq-node executable to participate in the DMQ
network.
The dmq-node is developed with respect to the CIP#0137.
NOTE: This is still an early version of DMQ node, which comes with some quirks:
- issue#6 - no support for ledger peers, which requires setting up static peers
using local roots. We are aiming to add this feature for the
cardano-node-10.7release. - issue#13 - using
TxSubmissionmini-protocol for which roles are swapped, e.g. server requests data, client servers the data. This makes configuration awekward, since your local roots specify who will get data from you, rather than who you get data from. We are working on a new mini-protocol to address this.
We use cabal to build our project, potentially inside a Nix shell (nix develop or nix-shell). It should suffice with:
> cabal build dmq-node:exe:dmq-nodeThe executable can be run with:
> cabal run dmq-nodeTo build the executable using Nix, one can use:
> nix build .#dmq-nodeTo get a statically linked executable using musl library, use:
> nix build .#dmq-node-staticTo enter a development shell with all dependencies available, use:
> nix developTo run the test suite, one can use:
> cabal test allThis project comes with a CDDL specification for the DMQ protocols
(node-to-client and node-to-node). To check changes against the CDDL
specification, use:
cabal run dmq-node:dmq-cddlThe contributing guide is available here. The style guide is available here. The code of conduct is available here.