Skip to content
CCPEDIAby Unity Nodes
Canton Network docsLanguage Bindings

Ledger Client Standard

Updated 12-11-2026

This page captures the Ledger Client Standard functionality that should be provided by fully conformant library implementations. It is written for developers who build Canton ledger client libraries.
This standard reflects Canton 3.5.
The Functionality Requirement column marks each capability as one of the following:
  • Required marks capabilities expected today.
  • Upcoming marks capabilities expected for upcoming iterations once the Ledger API provides the underlying functionality.

Codegen and bindings

Code generation and bindings convert Daml types into native types in the target language and connect them to Ledger API JSON and gRPC requests and to PQS.
DomainAdditional infoFunctionality Requirement
Daml representationImplementation contains a code-generating tool that is able to convert Daml types into the native representation in the target language.
It must support
- all serializable Daml types
- interfaces
- contract keys
- dependencies
Required
JSON CodecThe tool extends the code-generated objects in the native language with methods to serialize and deserialize to JSON format required in the Ledger API JSON requests and responsesRequired
gRPC CodecThe tool extends the code-generated objects in the native language with methods to serialize and deserialize to proto format required in the Ledger API gRPC requests and responsesRequired
JSON BindingsThe library provides utility wrappers in the host languages that facilitate construction and bridge the interaction between the classes generated from Ledger API OpenAPI definitions and the classes code-generated from DamlRequired
gRPC BindingsThe library provides utility wrappers in the host languages that facilitate construction and bridge the interaction between the classes generated from Ledger API proto definitions and the classes code-generated from DamlRequired
PQS bindingsThe library provides mechanisms that bridge the interaction between the table functions in PQS and the classes code-generated from DamlRequired

Basic infrastructure

Basic infrastructure covers the connection security, authorization, error handling, observability, retry, signing, and health-monitoring services that a library provides for every Ledger API call.
DomainAdditional infoFunctionality Requirement
TLSThe library utilizes secure HTTP and gRPC connections using TLS.
It supports mutual and server-side TLS.
Required
AuthorizationThe library supports client credential workflow to obtain and refresh OAuth tokens.
It has the capability to inject the JWT tokens into the call context
Required
Error parsing and handlingThe library has the ability to parse and process all types of errors returned by Ledger API.
It supports
- classification of errors into retriable and non-retriable
- JSON and gRPC errors
- extraction of the error code, message, request info, error info and other structured details such as contract ids, packages, party names etc.
Required
TracingThe library handles tracing according to the OpenTelemetry standard and OTLP servers.
It supports
- creation and injection of trace ids into the headers of the requests
- extraction of trace ids from the response
- support JSON and gRPC requests
- report the spans to the OpenTelemetry compatible OTLP server
Required
Retry logicThe library handles seamlessly the retry logic for Ledger API calls.
It supports
- retries on retriable errors only
- timeouts
- maximum number of retries
Required
LoggingThe library is able to log using a standard library adequate for the host language.
It supports
- logging requests and responses
- utilizes trace-ids
- verbose logging of Ledger API errors
- configurable log level sensitivity
- configurable log destination
- configurable log format
Required
MetricsThe library handles metrics according to OpenTelemetry standard
It supports
- sending metrics to the OTLP server
- reporting vitals of the communication: number of requests and responses
- breakdown by error and success
- breakdown by endpoint
Required
SigningThe library supports signing algorithms that are needed in the externally signed Ledger API endpoints.
It supports
- KMS systems
- keys provided in a file
- all algorithms supported by Canton
Required
Node HealthThe library supports monitoring node’s health letting the client applications respond to the intermittent and permanent failure situations.Required

Commands

Command capabilities cover constructing and submitting Daml commands over the Ledger API, including internal and externally signed submission, deduplication, explicit disclosure, recovery, and batching.
DomainAdditional infoFunctionality Requirement
JSONThe library facilitates construction and submission of Daml commands over the Ledger API JSON endpoint.
It supports
- create commands
- exercise commands
Required
gRPCThe library facilitates construction and submission of Daml commands over the Ledger API gRPC endpoint.
It supports
- create commands
- exercise commands
Required
Internal commandsThe library uses the internal command submission endpoints.
It supports
- submit method
- submitAndWait in all its forms
Required
External commandsThe library uses externally signed command submission endpoints
It supports
- prepare method
- execute method
- executeAndWait in all its forms
Required
DeduplicationThe library contains logic that allows client applications to send commands in a reliable fashion utilizing the built-in deduplicating provisions of the Ledger API.
It supports
- error handling
- retries
Required
Command recoveryThe library is capable of recovering pending command state after the crash utilizing command completion endpoint.
It supports
- recovery from participant crash
- recovery from client crash
- recovery from lost connection
- recovery from a timeout
Required
BatchingThe library is capable of creating batched Ledger API commands. For externally signed (interactive) submission, batches are currently limited to a single root command/node.Required
Contract keysThe library uses Ledger API command submission provisions for contract keys.
It supports
- exercising choices by contract keys
- prefetching of contract keys for accelerated execution
Required
Explicit disclosureThe library uses explicit disclosure to augment the submitted commands with additional contracts that the submitting party is not privy to.Required
Pending setThe library keeps track of the contracts that are being operated on in a pending data set.
It supports
- keeping track of consuming exercises
- keeping track of creates
- keeping track of non-consuming exercises
Required
Package selectionThe library allows selecting a particular package version preference for command submission in the package_id_selection_preference field.Required
HAThe library supports command deduplication across multiple participants that host the same submitting parties.Upcoming

Streams

Stream capabilities cover querying and subscribing to the Active Contract Set (ACS) and update streams, and recovering those streams after an interruption.
DomainAdditional infoFunctionality Requirement
JSONThe library facilitates query construction and subscription to ACS and Update streams over the Ledger API JSON endpoint.Required
gRPCThe library facilitates query construction and subscription to ACS and Update streams over the Ledger API gRPC endpoint.Required
ACS streamingThe library uses streaming endpoints to retrieve the ACS for given parties and templates. It utilizes streaming endpoints in gRPC and websocket endpoints in JSON.Required
ACS pagingThe library uses paging endpoints to retrieve the ACS for given parties and templates. It utilizes paging in gRPC and JSON.Required
Updates streamingThe library uses streaming endpoints to retrieve the updates for given parties and templates. It utilizes streaming endpoints in gRPC and websocket endpoints in JSON.Required
Updates pagingThe library uses paging endpoints to retrieve the updates for given parties and templates. It utilizes paging in gRPC and JSON.Required
Reverse orderThe library can serve data in reverse order utilizing appropriate Ledger API provisions.Required
InterfacesThe library subscribes to and processes interface viewsRequired
Topology eventsThe library subscribes to and processes topology eventsRequired
In memory ACSThe library contains a component that keeps an in-memory copy of the Active Contract Set.
It supports
- parameterization by set of parties and templates
- filters to limit the ACS to contracts with specific attributes
- initiates from an ACS query and keeps current view by subscribing to update stream
- interface views
Required
Resilient streamsThe library can recover a stream after an interrupt from the last known location.
It supports
- recovery from the last offset
- recovery from the last record time vector
- recovery from the continuation token
Required
HAThe library can recover a stream transmission after a switch-over to a secondary participant.
It supports
- record time vectors
- paging restarts
Upcoming

Parties

Party capabilities cover listing, creating, and modifying local, external, and decentralized parties through the Ledger API party management endpoints.
DomainAdditional infoFunctionality Requirement
JSONThe library utilizes party management functionality of the Ledger API using JSON endpoints.Required
gRPCThe library utilizes party management functionality of the Ledger API using gRPC endpoints.Required
List partiesThe library supports listing parties on the node using various filtering criteria.Required
Local parties creationThe library can create parties local to the participant node. It takes advantage of self administration mode where party is automatically assigned to the requesting user.Required
External parties creationThe library can create external parties. It supports
- generate method
- signing
- allocate method
- self administration mode
Required
Local parties modificationThe library can change aspects of the party topology definition. In particular it supports
- changing mapping of parties to participants
- changing participant permission levels
Required
External parties modificationThe library can change aspects of the party topology definition. In particular it supports
- changing mapping of parties to participants
- changing participant permission levels
- changing keys responsible for transaction signing
- change the signature threshold
Required
Decentralized party creationThe library can manage decentralized parties. In particular it supports
- create a decentralized namespace
- modify a decentralized namespace
- changing participant permission levels
- changing keys responsible for transaction signing
- change the signature threshold
Required

Packages

Package capabilities cover uploading, validating, vetting, listing, and describing DAR packages, and selecting preferred packages for command submission.
DomainAdditional infoFunctionality Requirement
JSONThe library utilizes package management functionality of the Ledger API using JSON endpoints.Required
gRPCThe library utilizes package management functionality of the Ledger API using gRPC endpoints.Required
UploadThe library facilitates the upload of the DAR packages to the participant using the Ledger API endpointsRequired
ValidationThe library facilitates the validation of the DAR packages to the participant using the Ledger API endpointsRequired
VettingThe library facilitates vetting of the required packages on the target participants and synchronizers. It is capable of computing the required vetting action from the current vetting state and the desired outcome.Required
ListingThe library facilitates listing the packages on the participant using various criteria such as package names, ids, participants and synchronizersRequired
Package preferenceLibrary facilitates the selection of the preferred packages for a command submission. It makes sure the preference conforms with the existing vetting state.Required
DescriptionThe library uses the Daml description service to request the descriptors of the Daml package and types from the participantsRequired

Topology

Topology capabilities cover listing, constructing, signing, and submitting topology mappings such as namespace delegations, party-to-participant mappings, and vetted packages.
DomainAdditional infoFunctionality Requirement
List mappingsThe library enables the retrieval and inspection of current topology mappings. Users can apply precise list parameters to restrict search results based on specific mapping types or attributes.Required
Mapping presentationThe library supports rendering of the topology mapping in a format idiomatic to the target programming language.Required
Mapping constructionThe library facilitates creation of new topology mappings by abstracting the underlying complexity of calculating state modifications relative to prior values.Required
Mapping signingThe library supports signing of topology transactions.Required
Mapping submissionThe library facilitates submission of the signed topology transactions. It supports
synchronous and asynchronous semantics.
Required
Namespace delegationsThe library supports managing namespace delegations of all shapesRequired
Decentralized namespacesThe library supports managing decentralized namespace delegations of all shapesRequired
Owner to key mappingThe library supports managing owner to key mappings of all shapesRequired
Party to participantThe library supports managing party to participant mappings of all shapesRequired
Party to key mappingThe library supports managing party to key mappings of all shapesRequired
Vetted packagesThe library supports managing vetted package mappings of all shapesRequired

Admin API and Ledger API support

Topology functionality is available today through the Admin API, with Ledger API support expected in an upcoming iteration.
DomainAdditional infoFunctionality Requirement
Admin APIThe library supports topology functionality exposed through the Admin APIRequired
Ledger APIThe library supports topology functionality exposed through the Ledger APIUpcoming

User

User capabilities let users inspect their own user record and administer the parties attached to their account.
DomainAdditional infoFunctionality Requirement
Self-inspectThe library allows the users to pull own record to check permissions and other settings.Required
Self-adminThe library allows the users to add and modify the parties attached to the user account.Required

Traffic

Traffic capabilities cover estimating transaction traffic costs and listing, inspecting, selecting, and topping up the traffic accounts debited during command submission.
DomainAdditional infoFunctionality Requirement
Traffic computationThe library processes the traffic cost estimations produced by the prepare transactions. It facilitates setting limits on transaction cost. It can convert the traffic cost expressed in the synchronizer units to local units of the validatorRequired
Traffic account listing and inspectingThe library supports listing traffic accounts available to the user and inspecting the account balanceRequired
Traffic account selectionThe library facilitates selecting a traffic account to be debited during the command submissionUpcoming
Traffic top-upThe library facilitates the top up operation replenishing the traffic accounts with fresh creditsRequired

Multi-synchronizer

Multi-synchronizer capabilities extend party, package, command, and stream handling to participants connected to more than one synchronizer.
DomainAdditional infoFunctionality Requirement
ListingThe library lists connected synchronizers for the participant in general and for a party in particularRequired
PartiesThe library allows managing party allocations and changing topology configurations across multiple synchronizers.Required
PackagesThe library allows users to maintain package vetting where the set of package versions vetted on each synchronizer is separately tailored for the needs of the application workflows.Required
CommandsThe library allows the clients to select the target synchronizer. It keeps track of it during command retries and in the completion processing.Required
StreamsThe library keeps track of the current synchronizer of the contract. It handles the out of order assign and unassign events putting them back in order distilling the most up to date contract state.Required

Token Standard

Token Standard capabilities cover transfers, pre-approvals, allocations, and instrument inspection for templates and interfaces written to Token Standard V1 and V2.
DomainAdditional infoFunctionality Requirement
One step transfersThe library supports workflows with one step transfersRequired
Pre-approvalsThe library supports pre-approvalsRequired
AllocateThe library supports trade allocationsRequired
TransferThe library supports asset transfersRequired
Instrument inspectionThe library supports instrument inspectionRequired
V1The library supports interactions with interfaces and templates written according to Token Standard V1Required
V2The library supports interactions with interfaces and templates written according to Token Standard V2Required

Documentation

Documentation requirements define the user manual, tutorials, examples, and reference material that a conformant library ships with.
DomainAdditional infoFunctionality Requirement
User manualThe library is shipped with the comprehensive user manual that covers all functionality offered by the library. It must explain how to use each capability in this standard in the library’s language.Required
TutorialsThe library is shipped with tutorials that demonstrate key interactions:
- building applications
- configuration
- connecting to ledger
- creating and managing users, parties
- uploading and vetting packages
- submitting commands using internal and external signing
- maintaining ACS
- interacting with PQS
- managing traffic credits
Required
ExamplesThe library is shipped with example application(s) that showcases the capabilities and can be used as a blueprint for developersRequired
ReferenceThe library is shipped with a complete reference material where each class, method and function is explained.Required