Troubleshooting
1. dpm install package Says canton-deploy:0.2.2 Was Not Found​
A bare canton-deploy:0.2.2 resolves against Digital Asset's component registry.
Until canton-deploy is published there, use the full GHCR reference:
components:
- oci://ghcr.io/lync-world/canton-deploy:0.2.2
Then run:
dpm install package
2. DPM Commands Say a Component Is Not Installed​
If any component listed in daml.yaml is not installed, DPM can refuse commands in that directory.
Run:
dpm install package
or fix/remove the offending component entry.
3. dpm canton-deploy Not Found​
The component is not installed for the project.
Add it under components and run:
dpm install package
4. dpm sandbox Is an Unknown Command​
dpm sandbox comes from the canton-open-source component.
Add canton-open-source:<version> under components and run:
dpm install package
5. Status Cannot Reach Admin API​
The Admin API is required only when uploadVia is admin, or for dars, vet, and vet-dar. For ledger upload it is optional, and synchronizers still appear via the JSON API when Admin is down.
If you do need Admin, check:
adminPorthostadminGrpcAuthoritywhen a proxy routes Admin gRPC by name
Managed validator (no Admin port): keep uploadVia: "ledger" (the default) and use deploy --vet for vetting.
6. Token Expired or Unauthenticated​
Decode the resolved token:
dpm canton-deploy token --decode --network localnet
Then refresh token, tokenFile, or tokenCommand, or check the oauth2 settings.
7. PROTO_DESERIALIZATION_FAILURE on Upload​
Check synchronizerId.
It must use the logical form:
namespace::fingerprint
Drop a trailing ::NN-N suffix from the value shown by status, or omit synchronizerId for a single-synchronizer participant.
8. run Cannot Reach grpcAuthority​
The grpcAuthority name must resolve to the validator on ledgerPort.
Alternatively, set host and grpcAuthority to the same reachable name.
9. contracts Returns PACKAGE_NAMES_NOT_FOUND​
Use:
#<package-name>:Module:Template
from daml.yaml.
Do not use the hexadecimal package ID returned by deployment.
10. Contracts Are Empty After Deployment​
Uploading a DAR does not create contracts.
Run a Daml Script:
dpm canton-deploy deploy --network localnet --script My.Module:setup
or:
dpm canton-deploy run My.Module:setup --network localnet
11. Script Fails with Party already exists​
The party name is also present in config parties, so deploy allocated it before running the script.
Look the party up in the script instead of calling allocatePartyByHint, or remove the name from parties.
12. JSON API Unreachable​
If Admin and Ledger APIs are working but the JSON API is unavailable, package upload can still succeed.
Check:
httpPorthttpHosthttpUseTls
Then run:
dpm canton-deploy status --network localnet
13. KNOWN_PACKAGE_VERSION on upload​
The ledger already has a package with the same name and version but different contents. Bump version in daml.yaml and deploy again; Canton does not allow two different packages to share a name and version.
14. Getting 401 on dpm install​
Check ~/.dpm/dpm-config.yaml for insecure: true and remove it.
Run to fix:
DPM_INSECURE_REGISTRY=false dpm install package