I just found this post by @cocreature.
Note that there is no automatic synchronisation between participants however. So if you submit a transaction on one participant it will not block until that transaction is visible on the other participant. You can do things like poll for a contract id created in that transaction to appear on the other participant via
queryContractId
to synchronize manually.
waitForCid : Template t => Party -> ContractId t -> Script ()
waitForCid p cid = do
r <- queryContractId p cid
case r of
None -> do
sleep (seconds 1)
waitForCid p cid
Some _ -> pure ()
I opened Easier multi-participant synchronization in Daml Script · Issue #10618 · digital-asset/daml · GitHub to improve the UX for synchronization in Daml Script.