View projection within a participant node

The Canton documentation states that the participant node is responsible for preparing the views on a confirmation request, and it later states that each party is hosted on its own participant.

This begs the question of what happens for when multiple parties are hosted on the same node. If Alice submits a transaction involving Bob on the same node are the following statements true?

  1. There are no confirmation requests because there’s no need for consensus.
  2. The participant still ensures that Bob only sees his projection of the transaction.

Reading the sequence diagram more carefully, Alice is the submitter but she still gets a confirmation request for her views. So is 1 false even for transactions involving only parties hosted on a single participant?

Hi @asarpeshkar

With respect to 1: this is an optimisation we could do in the future. However, the participant still needs to do conflict detection as two commands might still race with each other. Therefore, for simplicity and lack of cost vs benefit, we don’t treat this as a special case. Also, once we’ve made multi-domain support GA, it makes sense to deploy each canton participant node with an embedded domain such that local transactions don’t have to leave the premises. But that’s future talk (though it works for PoCs already).

With respect to 2: Yes, absolutely. You can imagine the participant being effectively a “two stage” system. There is the synchronisation layer that does synchronise the state on a per participant level and there is the ledger API server that does the “de-duplexing” of the participant state into the per party state.

I hope this clarifies it.

Cheers,
Ratko

2 Likes