Commands
| Command | Use it for |
|---|---|
estimate <file> | Readiness checks plus traffic cost for one command JSON file. |
simulate <file> | Prepared transaction view and node breakdown for a command JSON file. |
inspect | Validator readiness checks. Default is light and fast. |
inspect --quick | Config and Ledger API reachability only. |
inspect --full | Exhaustive package, party, DAR, and vetting counts. Can be slow. |
balance | Traffic balance when Admin or ledger state can provide it. |
watch | Recent transaction stream for development/debugging. |
Examples​
dpm canton-profiler inspect --network testnet
dpm canton-profiler inspect --quick --network testnet
dpm canton-profiler inspect --full --network testnet
dpm canton-profiler inspect --list-packages --network testnet
dpm canton-profiler estimate ./commands/create.json --network testnet
dpm canton-profiler estimate ./commands/create.json --network testnet --json --fail-on-error
dpm canton-profiler simulate ./commands/create.json --network testnet --json
dpm canton-profiler balance --network testnet --json
dpm canton-profiler watch --network testnet --limit 10
Global flags​
| Flag | Purpose |
|---|---|
--network <name> | Selects a configured network. |
--token <jwt> | Overrides the configured JWT source for this run. |
--json | Prints machine-readable output for scripts and CI. |
--fail-on-error | Returns non-zero when critical warnings/checks are present. |
CI pattern​
EST=$(dpm canton-profiler estimate ./cmd.json --network testnet --json --fail-on-error)
echo "$EST" | jq -e '.readiness[] | select(.id=="ledger.reachable") | .status=="pass"'
echo "$EST" | jq -e '[.warnings[]?.code] | index("W007") | not'
Output and exit codes​
By default, commands print human-readable text for the terminal. Add --json when a script or CI job needs to parse the result.
Sample output: inspect --quick​
Canton Validator Inspection
Network : testnet (validator.example.com:5001)
Config
gRPC limit : 4.00 MB
TLS : disabled
synchronizerId : —
Ledger API
✓ Reachable (3.5.3)
Sample output: inspect​
Canton Validator Inspection
Network : testnet (validator.example.com:5001)
Config
gRPC limit : 4.00 MB
TLS : disabled
synchronizerId : —
scanApiUrl : https://scan.sv.test.canton.global
Readiness
✓ gRPC inbound limit 4.00 MB
✓ Ledger API reachable (3.5.3)
✓ Admin API reachable
✓ Synchronizer connected and healthy
✓ 42 package(s) uploaded on ledger
✓ Vetting API reachable
Sample output: estimate​
Canton Pre-Flight Transaction Profiler
Network : testnet (validator.example.com:5001)
Mode : STANDARD (ledger + scan-proxy)
Payload size
1.2 KB / 4.00 MB 0.0% [OK]
Readiness
✓ All 1 command parties known to ledger
✓ Template package uploaded
✓ Template package vetted
✓ PrepareSubmission succeeded
Traffic cost
Bytes : 4.8 KB
CC : 0.012
USD : $0.04
Parties : 2
✓ Pre-flight check passed
Elapsed: 1240ms
Sample output: --json​
Inspect (excerpt):
{
"network": "testnet",
"validator": "validator.example.com:5001",
"ledgerVersion": "3.5.3",
"readiness": [
{ "id": "ledger.reachable", "status": "pass", "message": "Ledger API reachable (3.5.3)" },
{ "id": "admin.reachable", "status": "pass", "message": "Admin API reachable" },
{ "id": "packages.uploaded_count", "status": "pass", "message": "42 package(s) uploaded on ledger" }
]
}
Estimate (excerpt):
{
"mode": "STANDARD",
"network": "testnet",
"validator": "validator.example.com:5001",
"trafficBytes": 4915,
"partyCount": 2,
"cost": { "trafficBytes": 4915, "ccCost": 0.012, "usdCost": 0.04, "partyCount": 2 },
"readiness": [
{ "id": "parties.known", "status": "pass", "message": "All 1 command parties known to ledger" },
{ "id": "prepare.ok", "status": "pass", "message": "PrepareSubmission succeeded" }
],
"warnings": [],
"exitCode": 0,
"elapsedMs": 1240
}
Check statuses​
| Status | Meaning |
|---|---|
pass | The check succeeded. |
warn | The check found a problem or partial result; review warnings. |
skip | The check is not applicable or the required API is unavailable. |
fail | A critical check failed. |
Exit codes​
| Exit code | When |
|---|---|
| 0 | The command completed without critical failures. |
| 1 | Ledger reachability failed, synchronizer checks failed off LocalNet, or --fail-on-error found critical warnings. |
Readiness IDs​
| ID | Check |
|---|---|
ledger.reachable | Ledger API version can be read. |
admin.reachable | Admin gRPC responds to an RPC. |
sync.connected | Connected synchronizers are healthy. |
sync.configured_id_healthy | Configured synchronizerId matches a healthy synchronizer. |
packages.uploaded_count | Package listing is available. |
packages.vetted_count | Vetting probe or count is available. |
parties.count | Party listing, when requested by --full or --list-parties. |
dar.uploaded | DAR listing, when requested by --full or --list-dars. |
parties.known | Command parties exist on the ledger. |
packages.uploaded | Command template package is available. |
packages.vetted | Command template package is vetted on the target synchronizer. |
prepare.ok | PrepareSubmission succeeded. |
Capability modes​
The profiler selects the best available mode automatically. You do not set the mode manually.
| Mode | Available APIs | Result |
|---|---|---|
| STANDARD | Ledger API, JWT, optional Scan/scan-proxy | Exact prepare bytes, readiness checks, CC/USD upper bound when rates are available. |
| FULL | STANDARD plus reachable Admin API and synchronizer context | Live base remainder, purchased traffic, paid spill, and stronger synchronizer diagnostics. |
| LocalNet | Local Ledger API | Size/readiness checks. Traffic fees are disabled. |
Operational notes​
Inspect performance​
inspectis light by default and avoids expensive full party/DAR scans.inspect --fullis for audits and can be slow on large participants.--list-packages,--list-parties, and--list-darsrequest explicit listings.