Can an informee / stakeholder identify the party or node id of the requester of the parent transaction?

Consider this example, where every party is allocated on a different participant node: Operator, Requester, SubObserver.

template Main
  with
    operator : Party
    requester : Party
  where
    signatory operator
    observer requester

    choice CreateSub : ContractId Sub with
       subObserver : Party
     controller requester
        do
          create Sub with ..

template Sub
  with
    operator : Party
    subObserver : Party
  where
    signatory operator
    observer subObserver

test : Script (ContractId Sub)
test = script do
  operator <- allocatePartyOn "Operator" $ ParticipantName "nodeOperator"
  requester <- allocatePartyOn "Requester" $ ParticipantName "nodeRequester"
  subObserver <- allocatePartyOn "SubObserver" $ ParticipantName "nodeSubObserver"
  main <- submit operator do
    createCmd $ Main with ..
  submit requester do
    exerciseCmd main CreateSub with ..

Can the SubObserver ever learn who the Requester was, or is it hidden? Both party id and participant node id are interesting.

Ledger model [1] explains that the ledger stores the requester in the commits. Privacy model [2] explains that the informee has a limited view of the contracts in a projection, but it is not clear to me who the requester is of a substransaction?

[1] Structure — Daml SDK 2.7.6 documentation
[2] Privacy — Daml SDK 2.7.6 documentation

1 Like

Hi Richard,

Neither the SubObserver nor its participant will learn about the requester. They won’t learn about the requester’s participant either.

Does that answer your question?
Best,
Matthias

2 Likes

Yes! Thank you @MatthiasSchmalz ! :slight_smile: