What exactly is a known party to a participant node if is_local is false?

What does knowing a party mean?

The Identity Management mentions that there can be parties allocated on a node, and others allocated elsewhere, still known to that node.

Bonus question: how can we let a node know a party without allocating (hosting) it?

1 Like

(Note that a related question and also the grpc doc takes a different view, where knowing is simply hosting.)

1 Like

I think you may have discovered an error in the API docs there. ListAllKnownParties does just that. Parties don’t need to be hosted there.

All Daml Drivers establish consensus between all participant nodes connected to a network about the party <-> participant mapping. When you connect a new participant, the current mapping is shared with the new participant.

You can imagine there being an implicit contract, which contains a many-to-many mapping between parties and participants. Allocating a new party is a transaction modifying that contract. The exact mechanics of this, as well as the governance differ from driver to driver, though.

3 Likes

Thank you! Does this mean that every party found in this mapping will be known to any new participant connecting? So known parties are simply all hosted parties (on some participant) in the domain?

So, ListAllKnownParties should return the same set of parties run on any participant, just with different is_local attribute?

1 Like

So, ListAllKnownParties should return the same set of parties run on any participant, just with different is_local attribute?

Yes, as long as you are only connected to a single domain. With multi-domain the statement would be: ListAllKnownParties returns the set of all parties allocated on any of the connected domains.

2 Likes