-
Notifications
You must be signed in to change notification settings - Fork 28
docs: add architecture overview (Mermaid) and link from README #391
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
base: main
Are you sure you want to change the base?
Conversation
This document provides a high-level overview of the Canton architecture, including key components and their interactions using a flowchart.
|
🎉 Thank you for your contribution! It appears you have not yet signed the Agreement DA Contributor License Agreement (CLA), which is required for your changes to be incorporated into an Open Source Software (OSS) project. Please kindly read the and reply on a new comment with the following text to agree: I have hereby read the Digital Asset CLA and agree to its terms You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot. |
|
Hi! I tried to sign the CLA, but the link seems to be broken ("There is no CLA to sign for digital-asset/canton"). |
|
Hi team 👋 Added a new architecture overview document ( This helps newcomers quickly grasp Canton’s synchronization model. Thanks! |
soren-da
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.
Hey, thanks for making a contribution! I left some comments to clarify some misunderstandings how Canton works.
In general we keep documentation on Canton in a separate repository. For instance you can find a description of the high-level architecture and what the individual components do here: https://docs.digitalasset.com/overview/3.3/explanations/canton/protocol.html#protocols-on-one-synchronizer
To keep the canton docs consistent in a single repository, I won't merge your PR here. But please do let me know if the architecture description from the docs page above is not clear enough.
docs/architecture/overview.md
Outdated
| subgraph Domain["Synchronization Domain"] | ||
| SQ[Sequencer]:::comp | ||
| MED[Mediator]:::comp | ||
| TM[Topology Mgmt]:::comp |
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.
in Canton 3.x there is no more topology manager
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.
Thanks a lot, @soren-da, for the detailed feedback and clarification! 🙏
I completely understand, keeping the high-level architecture docs in a separate repository makes perfect sense for consistency.
I’ll close this PR and explore contributing to the external documentation repo instead.
Appreciate your time and clear explanations - this was a great learning step to better understand Canton’s architecture.
If you’re open to suggestions, I’d be happy to help improve the section you linked (especially around synchronization domains and node interactions).
Would it be best to open an issue or a PR in that docs repository?
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.
Removed the topology manager reference from the diagram.
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.
I just merged a PR that includes the canton docs sources in this repo too, you can find them under https://github.com/digital-asset/canton/tree/main/docs-open/src/sphinx . It's unfortunately not the complete tooling for building the docs, but smaller changes to the text, graphics, or mermaid diagrams are still possible. I'd definitely appreciate it if you would like to contribute on improving the docs and open a PR 🙏
docs/architecture/overview.md
Outdated
| PN1[Participant Node A]:::node -->|Authenticated messages| SQ | ||
| PN2[Participant Node B]:::node -->|Authenticated messages| SQ | ||
|
|
||
| SQ --> MED |
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.
the mediator initiates the connection to the sequencer, but then it's a bidirectional flow. the sequencer never initiates a connection to the mediator.
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.
Got it, thnx for the clarification,.
You're right - the mediator initiates the connection to the sequencer, and the flow is bidirectional afterward.
I’ll correct that in my next update to keep the diagram accurate.
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.
Updated the mediator→sequencer flow to show correct initiation and bidirectional communication.
docs/architecture/overview.md
Outdated
| X1[Participant Node / Bridge] | ||
| end | ||
|
|
||
| PN1 <--> PN2 |
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's no connection between participant nodes directly
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.
yeap, you're absolutely right, participant nodes don’t communicate directly.
I’ll remove that connection in the next update to keep the diagram aligned with Canton’s actual interaction model.
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.
Removed the direct participant-to-participant link from the diagram.
docs/architecture/overview.md
Outdated
| SQ --> MED | ||
| MED --> SQ | ||
|
|
||
| subgraph Ext["Other Domain / External Ledger"] |
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.
what do you mean by "other domain"?
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.
by “Other Domain” I meant to illustrate a possible connection or interaction between a Canton domain and an external system (for instance, an integration bridge or a different ledger network).
I agree that this label might be misleading here, I can rename or remove it to keep the diagram focused only on internal Canton components if that’s preferred.
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.
Removed the “other domain” placeholder to keep the focus on the synchronization domain only.
…mediator→sequencer) Updated architecture overview to match current Canton 3.x behavior: - Removed Topology Manager - Corrected mediator → sequencer initiation flow - Removed participant-to-participant connection
Thanks a lot for the detailed feedback, @soren-da |
Summary
Adds a repo-local architecture overview at docs/architecture/overview.md using a Mermaid diagram, and links it from README.
Details
Why
Verification
Closes #390