For the complete documentation index, see llms.txt. This page is also available as Markdown.

External & Multi-Host Parties

Onboard parties whose signing keys live outside the participant, and host a single party across several participants.

Canton parties normally have their keys held by the participant that hosts them. Two capabilities change that, and they compose:

  1. External parties: The party's signing key lives outside the participant — with the party's owner. The participant cannot act on the party's behalf; the owner signs its own transactions.

  2. Multi-hosting: A single party is hosted on several participants, which may belong to different organisations. The party survives the loss of any one of them.

External parties and how they work

For the concept of external parties and the difference with local parties, please refer to the Canton documentation:

Why multi-host and how it works

For the concept and Canton's own guidance on resilience and disaster-recovery use cases, see Multi-Hosting and Resilience in the Canton documentation:


Onboarding an external party

Start from Parties → Onboard External Party on the validator.

1

Identity — the party's key

Provide the party's public key. The participant will generate topology transactions for you to sign.

Field
Notes

Party hint

2–64 characters, letters, digits, hyphens, and underscores only. Incorporated into the generated party ID

Key algorithm

Ed25519 (recommended) or ECDSA P-256

Public key (DER Base64)

X.509 SubjectPublicKeyInfo, DER encoded, then Base64

The wizard shows the commands to produce a key pair:

Nothing is sent to the participant at this step. Click Next: Hosting →.

2

Hosting — choose the host set

Choose which participants host this party. This cannot be changed later — the host set is covered by the signature.

Leave this step untouched to host the party on your validator alone. Otherwise:

  • Add participant adds a row. Enter the participant UID in alias::fingerprint form, and choose Confirming or Observing.

  • Tick This validator observes only (does not confirm) if confirmation should rest entirely on the other hosts.

  • Set the Confirmation threshold. The hint below it tells you how many confirming participants you currently have.

Participant UIDs are entered as free text rather than chosen from a list — a production synchronizer carries hundreds of participants, and the useful ones are usually on other clusters. A participant UID is a public identifier; naming one needs no credentials for that node.

The advisory lookup. When you leave a UID field, CatalyX checks it against the synchronizer and reports:

Chip
Meaning

Checking synchronizer…

Lookup in flight

Known on this synchronizer

The participant exists

This is this validator — remove it, it is already a host

You named your own participant

Not found on this synchronizer… You can continue, but allocation will fail unless it joins first

No match

Click Generate Transactions →.

3

Sign the multi-hash

Sign the hash below with your private key and paste the Base64 signature.

The participant has generated the party ID and a multi-hash covering the topology transactions. When you named co-hosts, a Co-hosts line reports how many additional participants must authorize.

Give the multi-hash to the party's key holder to sign. The wizard shows the command for the chosen algorithm:

Paste the Base64 signature into Signature (Base64) and click Complete Onboarding.

4

Distribute — wait for the co-hosts

Single-hosted, the wizard reports External Party OnboardedHosted on this validator alone. The party is ready to use.

Multi-hosted, it reports Awaiting Other Hosts and lists each participant still owing approval:

The party is not usable yet. Each participant above must approve hosting it. The request is already visible to them — it appears under Hosting Proposals on their own Parties tab, whether they are in this cluster or another one. Nothing needs to be sent to them.

Click Done.


Approving a hosting proposal

This is the other half of the workflow, performed by each co-host's operator.

1

Open Parties → Hosting Proposals

The proposal is already there. Nothing was sent to you and there is nothing to import — the synchronizer's topology store is shared, and the proposal already carries the party's signature.

2

Check what you are agreeing to

The row shows the party ID, every named host with your own participant tagged this participant, and the confirmation threshold.

3

Click Approve

There is no confirmation dialog. A toast reports either Hosting approved — the party is now active or Hosting approved — still waiting on other hosts.

Rows where this participant has already authorized show Waiting on other hosts instead of a button.

Approval is safe to repeat. Re-submitting an identical approval succeeds rather than erroring, so retrying after a network failure is harmless.

A participant is only asked to approve when it takes on more responsibility — when it is being added as a host, or when its permission is being strengthened. If you are named in a proposal but see no Approve button, nothing is required of you.


Changing a party's hosting

Version note. Hosting amendments were added after 2.0.0 and are newer than the onboarding flow above. Exercise them in a non-production environment first.

Hosting on an existing party can be changed: add a host, remove one, change a permission, or change the threshold. All four are the same operation — the party's hosting mapping is replaced at the next serial.

Open Parties → Hosted Parties, expand the party, and click Edit hosting.

1

Edit Hosting

Replace the full set of participants hosting this party. Anything removed here stops hosting it.

The current host set and threshold are pre-filled. Edit them, then click Prepare Change →.

2

Sign the Change

Sign the transaction hash with the party's private key and paste the Base64 signature.

The modal shows the serial transition — current → next — and a transaction hash to sign, with the matching openssl command. Paste the signature and click Submit Change.

3

Wait for approvals

A toast confirms Hosting change submitted at serial n — awaiting approval from affected participants.

As with onboarding, every participant taking on more responsibility must approve from its own Hosting Proposals tab before the change takes effect.

Not supported


Things to know

Behaviour established by testing against a live network:

Question
Answer

Does generating the topology validate that a named participant exists?

No. It succeeds for an unknown UID; allocation then fails — after the party has signed.

Is a multi-hosted mapping effective before all hosts authorize?

No. It exists as a proposal and is absent from effective state. The party is unusable until the last host approves.

Is approval idempotent?

Yes. Replaying an identical approval succeeds. Re-approving is safe.

Can the onboarding flow amend an existing party?

No. It always creates a party at the first serial. Use Edit hosting instead.

Is a proposal visible to participants that did not submit it?

Yes. The synchronizer's topology store is fully shared — a single query returns hundreds of proposals, nearly all naming participants the querying node has no relationship with.

Do stored proposals carry the party's signature?

Yes. Which is why nothing has to be transferred between operators.

Additional notes:

  • Topology propagation is not instant. Immediately after an approval, a party may still read as pending. The UI polls for up to 30 seconds; if in doubt, refresh the Hosted Parties list.

  • A blank permission in the advisory lookup is normal. Per-participant synchronizer terms are optional in Canton; whether the participant is on the synchronizer is the signal that matters.

  • Naming your own validator as a co-host is not blocked. The lookup warns you, but nothing prevents it — remove the row.

  • Parties tab — the UI screens in detail

  • Wallet Gateway — custodial key holding for a party, intended to eventually replace the manual signing step above

Last updated

Was this helpful?