Good Canton Network Design

Hi team,

  1. Let’s say we have a canton network that has 1 participant and 1 domain node. All the parties are registered on that single participant, mediator does not have any other participant to verify/confirm resulting view with. Is this a common, expected use case?

  2. Having all parties on a single participant helps us create/exercise multi-signatory contracts without going through any intermediate contracts. Is this an anti-pattern, should we be designing our template models to involve intermediate contracts and split parties on to multi-participant setup.

  3. Does it make sense to have multi-participant, 1 domain setup that none of the participant have dependency (no contract interactions) on each other.

Thanks

It is a possible use case but I would say that the main value driver of the whole Daml platform comes from having at least multiple participants, with even greater possibilities coming from connecting to multiple domains (with this feature being currently in early access stage). With that said, starting from a simple deployment and moving on to a more complex topology is a perfectly valid approach, although the simplicity of a centralized deployment might hide the complexity of a decentralized one at a stage where entire design decisions need to be re-evaluated.

I wouldn’t necessarily say it’s an anti-pattern per se, but relying on a centralized deployment as an invariant means that at least part of your model might not be transitioned mechanically to a decentralized setting.

If those participants will never have to engage in some kind of interaction, maybe not. But then again, Daml’s main value driver is privacy with composability: you might want to be able to use those rights and obligations expressed in your silo-ed participants in the future in an application that has different participants communicate with each other. You can start with a single domain to simplify a future transition to such a setup. So yeah, I would say there are scenarios where this is a valid approach.

2 Likes

Thank you so much, appreciate the detailed response.

Wilson, I’m not entirely sure I understand what you are saying here. Could you clarify the following:

Imagine, for instance, I have the classic IOU contract:

template Iou
  with 
    issuer: Party
    owner: Party
  where
    signatory issuer, owner

I won’t be able to create an Iou (except the trivial one where I’m both the issuer and owner) unilaterally, regardless of whether parties are hosted on a single or multiple participant.

Can you explain what you mean by your comment above?

Do you mean that you can create the Iou if you have authorization for both parties? But why would this matter whether you are on one or many participants?

Yes I meant that I can create the Iou if I have authorization for both parties. It matters because I don’t think you can create IOU without intermediate contracts if your two parties are located on different participant?