Participant Node connecting to mutliple domain

Hello ~

We are exploring the architecture of deploying participant nodes (PN) connecting to multiple canton domain.

Simplified illustration
PN1 → Domain A
PN2 → Domain A and Domain B

In our reading and trial, we found that the UCK (unique contrack key) had to be disabled before the PN1 could connect to the Domain.

PN2 {

init.parameters.unique-contract-keys = false
}

From webpage, there is note “Non-Unique contract keys is preview only and currently broken. Multiple keys will override each other.”
https://docs.daml.com/canton/usermanual/contract_keys.html#non-unique-contract-keys-mode

Questions:

  1. Is it a correct understanding that the UCK has to be disabled in mulitple domain setup?
  2. Is " init.parameters.unique-contract-keys = false" a preview feature and currently broken? Is it recommended for the production ?
  3. Is it a correct understanding that UCK on Canton will be deprecated in the future? Is high level plan in terms of time or release? It is stated on Contract Keys in Canton — Daml SDK 2.6.5 documentation

Thanks in advance for any insight.

Hi @Homosapiens ,

for 1. - Yes.
Applications using UCK in a single domain will remain operational for now, they will just not be able to be deployed to a system that is using multiple domains.

for 3. - The answer is yes, we need to give up the uniqueness of contract keys in order to introduce full multi-domain support. We encourage you to build your models already anticipating this change.

Thanks.

Note that as of the time of writing, multi-domain connectivity in general is still a preview feature. We are trying to work to limit as much as possible potential breaking changes between the preview and the feature as it’s going to be delivered in general availability, but we are very actively developing this feature and we’re not at a stage where we can guarantee full continuity. As such, running this in production incurs in risks related to the completeness of the feature itself, as well as the stability of its API, both with regards to how it’s exposed externally and to the compatibility between multi-domain nodes across Canton protocol version.

Contract key uniqueness in particular is a topic which is very much under active development right now. Global key uniqueness is not feasible in an open network and we are trying to understand the exact semantics of non-unique keys in this environment, which makes the behavior of fetching by key something that may change between now and GA.

As mentioned by both you and @rohitt, however, if you want to enable your on- and off-ledger services based on Daml to be able to work on a multi-domain setting, you are definitely encouraged to experiment with multi-domain in development and testing capacity. The current limitations heavily restricts the usage of contract keys and you might have relevant findings relative to your application in the process of developing it with multi-domain compatibility in mind.

thanks Stefano and Rohitt for the prompt response.