Skip to content
CCPEDIAby Unity Nodes
Discussions/App Development/Actors of fetch and exercise nodesForum ↗

Actors of fetch and exercise nodes

App Development2 posts207 viewsLast activity May 2022
RO
Robert_AutenriethOP
May 2022

I’m having trouble understanding the actors of fetch actions. The term “actor” is used throughout our documentation, but I couldn’t find a good explanation of what it is.

From the ledger model:

The required authorizers of an Exercise or a Fetch action are its actors.

From the introduction to Daml:

The required authorizers of a fetch action are somewhat dynamic and covered later.

From the language reference for fetch():

The submitting party must be an observer or signatory on the contract, otherwise fetch fails

I assume that the actions described in the ledger model correspond to the nodes of a transaction (as implemented in com.daml.lf.transaction).
What are the actors of Exercise and Fetch nodes? Are the actors of Exercise nodes the controllers of the corresponding choice? Do the actors of Fetch nodes depend on the Daml function that produced them (since the different lookup/fetch functions have different authorization rules)?

CO
cocreature
May 2022

Let’s start by what happens during interpretation in Daml Engine:

Daml Engine has a set of authorizing parties at any point. For the root nodes those are the actAs parties in your command. Within the body of a choice, it’s the union of signatories & controllers. Given that there is no fetch command on the ledger API we’ll only call it from a choice body.

Next, we have the stakeholders of the contract you’re fetching.

The authorization check checks that the intersection of stakeholders & authorizing parties is non-empty.

So what are the actors? It’s exactly this intersection of stakeholders & authorizing parties.

← Back to Discussions