Overview
Mirador correlates Canton (Daml Ledger API v2) transactions to a trace by ledgerupdateId — the unique identifier of an on-ledger update, returned when you submit a command to a participant. The Web3Plugin exposes this under its web3.canton namespace.
Chain enum, and the hint is emitted on the wire as chain_name = "canton". On the platform side, the canton-hint processor resolves the full transaction server-side from the updateId and emits its events into the trace waterfall, alongside any other on-chain or off-chain activity.
Canton methods require the
Web3Plugin. See Plugins for setup.Adding a Canton Transaction Hint
Pass theupdateId your participant’s Ledger API returns after a successful command — e.g. submit-and-wait-for-transaction on the JSON Ledger API, or CommandService.SubmitAndWaitForTransaction over gRPC. Use whatever Canton client you already have; the SDK only needs the resulting id.
Scoping to a Party
partyId is optional. Include it to scope the update to a specific party, or omit it when the participant only co-hosts the contract as an observer — the backend can resolve the update from the updateId alone.
With Details
Attach a free-form note for downstream debugging:Method Signature
| Parameter | Type | Required | Description |
|---|---|---|---|
updateId | string | Yes | Canton ledger update id (the transaction’s unique identifier) |
partyId | string | No | Party to scope the update to; omit for observer co-hosts |
details | string | No | Free-form note attached to the hint for debugging context |
End-to-End Example
Why No Chain Argument?
EVM tx hints carry a numeric chain ID so the backend knows which chain to resolve the tx hash on. Canton has no such enum — a Canton network is a set of synchronizers reached through a participant node, not an id-keyed chain. So the API omits the chain parameter and emitschain_name = "canton" on the wire:
Observer Co-Hosts
Canton’s privacy model means a participant only sees updates for the parties it hosts. If your trace runs on a participant that co-hosts a contract as an observer — rather than acting as a signatory — you may not have a party to act as. Pass just theupdateId and omit partyId; the backend resolves the update from the id alone.
Best Practices
Add the Hint as Soon as You Have the updateId
Record it the moment the submission returns — Canton assigns theupdateId on commit, so there’s nothing to wait for.
Label Each Step in a Multi-Command Flow
When one user action produces several commands (e.g. mint then transfer), use the optionaldetails arg to label each leg so the waterfall is self-explanatory:
Next Steps
Solana Transactions
The other chain-implicit hint
EVM Transaction Hints
EVM tx correlation and the supported chain list
Plugins
Web3Plugin setup and namespaces