Skip to main content
This page captures the Ledger Client Standard functionality that should be provided by fully conformant library implementations.
  • The Existing functionality column marks capabilities expected today.
  • The Upcoming functionality column marks capabilities expected for upcoming iterations once the Ledger API provides the underlying functionality.
DomainAdditional infoExisting functionalityUpcoming functionality
Codegen and bindings
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
Yes
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 responsesYes
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 responsesYes
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 DamlYes
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 DamlYes
PQS bindingsThe library provides mechanisms that bridge the interaction between the tables in PQS and the classes code-generated from DamlYes
Basic infrastructure
TLSThe library utilizes secure HTTP and gRPC connections using TLS.
It supports mutual and server-side TLS.
Yes
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
Yes
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.
Yes
TracingThe library handles tracing according to the Open Telemetry 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
Yes
Retry logicThe library handles seamlessly the retry logic for Ledger API calls.
It supports
- retries on retriable errors only
- timeouts
- maximum number of retries
Yes
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
Yes
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
Yes
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
Yes
Node HealthThe library supports monitoring node’s health letting the client applications respond to the intermittent and permanent failure situations.Yes
Commands
JSONThe library facilitates construction and submission of Daml commands over the Ledger API JSON endpoint.
It supports
- create commands
- exercise commands
Yes
gRPCThe library facilitates construction and submission of Daml commands over the Ledger API gRPC endpoint.
It supports
- create commands
- exercise commands
Yes
Internal commandsThe library uses the internal command submission endpoints.
It supports
- submit method
- submitAndWait in all its forms
Yes
External commandsThe library uses externally signed command submission endpoints
It supports
- prepare method
- execute method
- executeAndWait in all its forms
Yes
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
Yes
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
Yes
BatchingThe library is capable of creating batched Ledger API commands.Yes
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
Yes
Explicit disclosureThe library uses explicit disclosure to augment the submitted commands with additional contracts that the submitting party is not privy to.Yes
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
Yes
Package selectionThe library allows selecting a particular package version preference for command submission in the package_id_selection_preference field.Yes
HAThe library supports command deduplication across multiple participants that host the same submitting parties.Yes
Streams
JSONThe library facilitates query construction and subscription to ACS and Update streams over the Ledger API JSON endpoint.Yes
gRPCThe library facilitates query construction and subscription to ACS and Update streams over the Ledger API gRPC endpoint.Yes
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.Yes
ACS pagingThe library uses paging endpoints to retrieve the ACS for given parties and templates. It utilizes paging in gRPC and JSON.Yes
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.Yes
Updates pagingThe library uses paging endpoints to retrieve the updates for given parties and templates. It utilizes paging in gRPC and JSON.Yes
Reverse orderThe library can serve data in reverse order utilizing appropriate Ledger API provisions.Yes
InterfacesThe library subscribes to and processes interface viewsYes
Topology eventsThe library subscribes to and processes topology eventsYes
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
Yes
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
Yes
HAThe library can recover a stream transmission after a switch-over to a secondary participant.
It supports
- record time vectors
- paging restarts
Yes
Parties
JSONThe library utilizes party management functionality of the Ledger API using JSON endpoints.Yes
gRPCThe library utilizes party management functionality of the Ledger API using gRPC endpoints.Yes
List partiesThe library supports listing parties on the node using various filtering criteria.Yes
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.Yes
External parties creationThe library can create external parties. It supports
- generate method
- signing
- allocate method
- self administration mode
Yes
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
Yes
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
Yes
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
Yes
Packages
JSONThe library utilizes package management functionality of the Ledger API using JSON endpoints.Yes
gRPCThe library utilizes package management functionality of the Ledger API using gRPC endpoints.Yes
UploadThe library facilitates the upload of the DAR packages to the participant using the Ledger API endpointsYes
ValidationThe library facilitates the validation of the DAR packages to the participant using the Ledger API endpointsYes
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.Yes
ListingThe library facilitates listing the packages on the participant using various criteria such as package names, ids, participants and synchronizersYes
Package preferenceLibrary facilitates the selection of the preferred packages for a command submission. It makes sure the preference conforms with the existing vetting state.Yes
DescriptionThe library uses the daml description service to request the descriptors of the daml package and types from the participantsYes
Topology
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.Yes
Mapping presentationThe library supports rendering of the topology mapping in a format idiomatic to the target programming language.Yes
Mapping constructionThe library facilitates creation of new topology mappings by abstracting the underlying complexity of calculating state modifications relative to prior values.Yes
Mapping signingThe library supports signing of topology transactions,Yes
Mapping submissionThe library facilitates submission of the signed topology transactions. It supports
synchronous and asynchronous semantics.
Yes
Namespace delegationsThe library supports managing namespace delegations of all shapesYes
Decentralized namespacesThe library supports managing decentralized namespace delegations of all shapesYes
Owner to key mappingThe library supports managing owner to key mappings of all shapesYes
Party to participantThe library supports managing party to participant mappings of all shapesYes
Party to key mappingThe library supports managing party to key mappings of all shapesYes
Vetted packagesThe library supports managing vetted package mappings of all shapesYes
Admin APIThe library supports topology functionality exposed through the Admin APIYes
Ledger APIThe library supports topology functionality exposed through the Ledger APIYes
User
Self-inspectThe library allows the users to pull own record to check permissions and other settings.Yes
Self-adminThe library allows the users to manage add and modify the parties attached to the user account.Yes
Traffic computationThe library processes the traffic cost estimations produced by the prepare transactions. It facilitates setting limits on transaction cost. can convert the traffic cost expressed in the synchronizer units to local units of the validatorYes
Traffic account listing and inspectingThe library supports listing traffic accounts available to the user and inspecting the account balanceYes
Traffic account selectionThe library facilitates selecting a traffic account to be debited during the command submissionYes
Traffic top-upThe library facilitates the top up operation replenishing the traffic accounts with fresh creditsYes
Multi-synchronizer
ListingThe library lists connected synchronizers for the participant in general and for a party in particularYes
PartiesThe library allows managing party allocations and changing topology configurations across multiple synchronizers.Yes
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.Yes
CommandsThe library allows the clients to select the the target synchronizer. It keeps track of it during command retries and in the completion processing.Yes
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.Yes
Token Standard
One step transfersThe library supports workflows with one step transfersYes
Pre-approvalsThe library supports pre-approvalsYes
AllocateThe library supports trade allocationsYes
TransferThe library supports asset transfersYes
Instrument inspectionThe library supports instrument inspectionYes
V1The library supports interactions with interfaces and templates written according to TS standard V1Yes
V2The library supports interactions with interfaces and templates written according to TS standard V2Yes
Documentation
User manualThe library is shipped with the comprehensive user manual that covers all functionality offered by the library. It must explain how to do X in language Y for each of the rows covered in this standard.Yes
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
Yes
ExamplesThe library is shipped with example application(s) that showcases the capabilities and can be used as a blueprint for developersYes
ReferenceThe library is shipped with a complete reference material where each class, method and function is explained.Yes