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