-
Notifications
You must be signed in to change notification settings - Fork 51
Closed
Labels
prototype 🛠️Prototype/PoC of a featurePrototype/PoC of a feature
Description
Why
We want to evaluate the feasibility of bundling Mithril and Cardano node together in the same Docker image (and maybe also the DMQ node when it is available). This will allow smooth (seamless?) integration of Mithril with Cardano for existing Cardano SPOs.
What
Prototype the implementation of a Docker image bundling the Cardano node (and tools) and the Mithril signer.
How
Phase 1
- Build static binaries for signer and client
- Assess the modifications that would be needed in the crates configuration (in particular usage of
defaultfeatures) - Use the existing Cardano Docker image and add the Mithril static binaries in it
- Start the signer when the Cardano node is started
- Create a mapping stored in the image of the Mithril network configurations by default for preview, preprod and mainnet (for seamless integration)
- Use the default configurations mapping for the configuration of the signer based on the Cardano network which is used
- Run the same command that is used to start a Cardano node on the new Docker image and make sure that Cardano and Mithril signer nodes are running properly
Next Phases
- TBD:
- How to integrate Phase 1 in the Hydra CI?
- How to support Mithril relay and IP obfuscation of the block producer?
Ideas / Questions
- Use the existing Cardano image and add the Mithril part in it?
- Use the existing Mithril signer image and add the Cardano part in it?
- How to support opt out Mithril signer?
- How to start both nodes in the same Docker?
- What if some Mithril parameters are missing: do we start only Cardano or does it fail?
- Assess the friction introduced by the Mithril signer configuration parameters not needed for the Cardano node.
- Try to mirror the way configuration switch by network is done with the Cardano node (if any)
- Do we support default values with
release-mainnetconfiguration (e.g. aggregator endpoint)? - What about the DMQ node (own socket path, connects to socket of the Cardano node, downloads a bootstrap peers list specific to the network)?
- Use the Mithril client to fast bootstrap the Cardano node
-
⚠️ How to deal with IP obfuscation of the block producer (vs current use of a proxy on the relay)?
Resources
- https://github.com/IntersectMBO/cardano-node/blob/master/nix/docker/README.md
- https://github.com/IntersectMBO/cardano-node/blob/master/.github/workflows/release-ghcr.yaml
- https://github.com/containers/skopeo
- https://github.com/IntersectMBO/cardano-node/blob/4bb0fd1cd376e404d64ce4de95c212ec6e713027/nix/pkgs.nix#L93
- https://github.com/IntersectMBO/cardano-node/blob/4bb0fd1cd376e404d64ce4de95c212ec6e713027/nix/docker/default.nix
- https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-dockerTools
- https://stackoverflow.com/a/68006519
Metadata
Metadata
Assignees
Labels
prototype 🛠️Prototype/PoC of a featurePrototype/PoC of a feature