Clarification on DAML keywords, JSON API and Ledger API

In DAML JSON API, we have “Allocate a New Party” and “Create a New User”, what are their differences? Are they also refer to creating ledger parties? I am kinda confused about whether this allocation also means creation. We can use @daml/ledger library to interact with the JSON API and perform actions like creating contracts and creating ledger parties.

I would like to seek for a more detailed explanation and please correct me if my claim above is wrong.
Thank you very much.


Hi @io_walken, welcome to the forum and thanks for the question.

You can think of a party as an entity with an on-ledger claim to some sort of authority (e.g. creating a contract of a given template) and the user an off-ledger identity that maps to that on-ledger entity. For example, you might have a party that is supposed to act as a regulator and is an observer to certain kinds of contracts, while the user is a user that can be connected to the aforementioned on-ledger party, as well as its off-ledger credentials as a user of

Quoting from the documentation:

  • Parties are unique across the entire Daml network. These must be allocated before you can use them to log in, and allocation results in a random-looking (but not actually random) string that identifies the party and is used in your Daml code. Parties are a builtin concept.
  • On each participant node you can create users with human-readable user ids. Each user can be associated with one or more parties allocated on that participant node, and refers to that party only on that node. Users are a purely local concept, meaning you can never address a user on another node by user id, and you never work with users in your Daml code; party ids are always used for these purposes. Users are also a builtin concept.

Hope this helps!