Documentation Index
Fetch the complete documentation index at: https://docs.canton.network/llms.txt
Use this file to discover all available pages before exploring further.
Super Validators
Where do I find all whitelisted node operators?
All whitelisted SVs are listed in the public global synchronizer configurations repository.Where do I generate a Validator Onboarding Token?
SVs generate a validator onboarding token in the SV UI.
Validators
How long is my Validator Onboarding Token valid?
They can be used for 48h for secrets created by SVs and 1h for secrets created through the DevNet self-onboarding endpoint. They are one-time use only.How do I check my validator liveness rewards?
You can check your validator’s liveness rewards by checking the transaction history and look for transaction that mints validator rewards.How do I determine the traffic used for a specific transaction?
Since Splice 0.5.x, there are two options: (1) using the traffic cost estimate returned from preparing a transaction or (2) checking the participant logs for the actual traffic used. Option 1: call theIs there an API to get the validator party ID?/v2/interactive-submission/prepareLedger API endpoint and check thecostEstimationfield in the response. It contains an estimate for both the traffic used for submission and the traffic used for confirmation. It is an estimate as the topology state can change between preparing and submitting the transaction. Option 2: check the participant logs for the actual traffic used for a specific transaction. To do so, follow these steps:For example, the following log line (pretty-printed by lnav) shows a command submission with trace-id
- Ensure you have
DEBUGlogs enabled in your participant configuration.- Determine the trace-id of your command submission in your participant logs.
- Search for the
DEBUGlog lines containingEventCostand thattrace-id. There are typically two such log lines, due to how the Canton protocol works. The first one is the cost of the submission of the confirmation request, and the second one is the cost for the submission of the confirmation response for the tx validation done by the participant node.1e2d6bf54d150e230fd0c7f348707bf6that stems from tapping some Amulet.
See /v0/validator-user.
Application Development
JSON API
How can I fetch more than 200 entries for ACS through the JSON API?
There is a server limit which is by default 200. The configuration file can be updated as shown below where it increases theHow can I create a transaction with more than one root node?http-list-max-elements-limitto have a value of 1,000.
An example where this can occur is a transaction with one root for the marker creation and one root for the actual user command. This error message is indicative of trying a transaction with multiple roots: Only single root transactions can currently be externally signed.
The recommended approach is to wrap the two calls in a little helper contract. Here is an example.
How can our application match registered public keys with their corresponding parties to identify the party associated with an onboarded user?There are several alternatives.How do I find the specifications for the latest API version for a Dev/Test/MainNet release?
- Using the Canton API, the call listPartyToKeyMappingRequest without a filter and then reverse the mapping, storing this locally (e.g., in a database) for fast access.
- Make the mapping deterministic. Parties have format
name::key_fingerprintwhere the fingerprint is computed from the public key. So if you always choose a deterministic name (e.g. “ledger”, or another fingerprint), then you don’t need to read the mapping at all because you can compute the fingerprint. Special consideration is needed here if you start using different keys for the “namespace root”, which determines the fingerprint, the signing key, and/or a delegated “intermediary namespace key”.- You can also filter by signed key through the
filter_signed_keyfield in thebase_query. If you use the fingerprint of the party, it should give you a decent filter. This can be used by any of theList***RequestAPIs, likeListPartyToKeyMapping.
The Canton Network capabilities are always being enhanced so you need to use the latest API version specification. The steps for the JSON API or gRPC API are similar.Are there working examples of using the websocket version of the json api?
- For the JSON API’s OpenAPI or AsyncAPI specifications, follow these steps:
- Find the network’s SDK version from the Splice docs. For example, DevNet’s version information is here. For TestNet, substitute
testin the URL.- Record the major and minor semver digits for the Canton version. For example, if the snapshot is
3.3.0-snapshot.20250827.16063.0.vdc9a8874then the important version information is3.3.- Go to the open source Canton Git repo.
- Pick the appropriate release line by selecting the drop down that says
mainto expose the different branches that are available. Then select the release line that has the same version found above. In this example, the release line to select isrelease-line-3.3.- This is the most up to date code for that release line. So follow the path
/canton/tree/main/community/ledger/ledger-json-api/src/test/resources/json-api-docsto theopenapi.yamlandasyncapi.yamlfiles.- Another source for the JSON API’s specifications is to retrieve them from a running Canton participant node. A description of this is in the Verification - download OpenAPI section. The specifications are available as:
- For OpenAPI:
http://<host>:<port>/docs/openapi- For AsyncAPI:
http://<host>:<port>/docs/asyncapi- For the GRPC protobuf definitions, follow the same steps as above but change the last step to be:
- Follow the path
/community/ledger-api/src/main/protobuf/com/daml/ledger/api/v2to theprotofiles.
There are examples avalable. See here. This file sends a request via websocket as part of a scenario that is described in the README.md.The
v2/updates/trees JSON ledger api is deprecated so what is replacing it?Av2/updatesis being added in 3.3 and will be available soon. In the interim, you can usev2/updates/flatwhich has the same behavior asUpdateService.GetUpdates.
Token Standard
What would be the best practice to including the
DAR file of token standard into my daml project for data-dependencies to point to?Is there any open-source wallet implementation for canton coins?
- Copy the token standard dars from the repo and check them into your own repo.
- Make sure to only depend on
splice-token-api-*packages for your main files. These are guaranteed to be stable.- Put your Daml script tests for your workflow into separate
*-testdaml projects as done in splice. See the daml.yaml for details.
There’s a wallet SDK here which is under rapid development. No OSS UI yet though.
