v0.1.1
dpm trace is a DPM component for inspecting Canton transactions.
It reads a committed update from a participant's JSON Ledger API and renders it
as an event tree: creates, exercises, archives and reassignments, with the
contract ids, parties, choice arguments, return values and payloads that
participant can see.
Install
Download the archive for your platform below and unpack it. The binary is
self-contained and sits at the root of the archive:
tar xzf dpm-trace_0.1.1_<os>_<arch>.tar.gz
./dpm-trace --versionThat is enough to use it. Optionally, register it as a DPM component so it runs
as dpm trace instead of ./dpm-trace:
./dpm-trace install-pluginRegistration requires DPM with a Daml SDK installed. If you have neither:
curl https://get.digitalasset.com/install/install.sh | sh # installs dpm
dpm install 3.5.1 # installs an SDKOtherwise keep using ./dpm-trace; it is the same binary.
Usage
An update id identifies a committed transaction on a participant, in the format
1220e77482b473bfff30d376bd853f0a71df7ab6d41cc3f060dc5456603493acd06c. Canton
returns one from each successful submission, so with no ledger yet, start with
the examples below — they need no update id and no participant.
./dpm-trace <update-id> \
--submitter http://localhost:<json-ledger-api-port> \
--read-as '<party-id>'Remote participants take the same shape, with a bearer token from --token,
--token-file, or DPM_TRACE_TOKEN / DPM_TRACE_TOKEN_FILE. --export trace.json writes a portable artifact and ./dpm-trace open renders it again
with no ledger connection.
The archive ships five example traces covering all four event kinds, so the
output can be seen without a ledger at all:
./dpm-trace open examples/create.trace.json
./dpm-trace open examples/exercise-child-create.trace.json
./dpm-trace open examples/archive.trace.json
./dpm-trace open examples/unassign.trace.json
./dpm-trace open examples/assign.trace.jsonReproducing the examples against a local Canton needs DPM and a Java runtime —
dpm build builds the DAR, and the Canton jar comes with DPM. See
examples/README.md in the archive.
Notes
Output is one participant's projection, not a global view of the transaction.
It does not imply access to private data outside that participant's rights.
The same update read as a different party can legitimately contain fewer
events, and every rendering is labelled accordingly.
The macOS binaries are unsigned. If Gatekeeper refuses one, clear the
quarantine attribute: xattr -d com.apple.quarantine ./dpm-trace.
Verify a download against checksums.txt:
shasum -a 256 -c checksums.txt --ignore-missing