CIP-0056 — token standard
CIP-0056 is how Canton tokens look the same to every wallet. It is a set of Daml interfaces plus optional registry HTTP APIs. It is not the API a website uses to connect. That is CIP-0103. Specification: CIP-0056.Wallet-oriented walkthrough: Canton token standard.
The six APIs
A registry says which of these it supports. Ekiden treats Canton Coin (
kind: "amulet") and utility-registry instruments (kind: "cip56") as the two kinds it knows how to display and send.
How the wallet uses the standard
The five patterns in the Canton wallet guide, and where they live:- Read contracts that implement a token interface. Holdings and incoming transfer instructions are read from active contracts (gateway and, for Canton Coin, the wallet backend ACS).
- Read transaction history. The wallet UI is balance-and-offer oriented. It does not yet render a full CIP-0056 transaction history for every registry.
- Execute a factory choice. Canton Coin sends fetch the transfer factory, then submit a signed batch.
- Execute a choice on an existing contract. Accept, reject, or withdraw on a transfer instruction the user already holds.
- Custom Daml for bulk workflows. Out of scope for the extension. Sends are one approval at a time.
What a dApp should not reimplement
If a site only needs “user pays this party N of an instrument”, it should submit that asprepareExecute commands, or use the product’s own API, and let the wallet render the approval. Parsing holding interfaces in the page duplicates the wallet and breaks when a registry adds a package version.
Gaps to keep visible in the public docs
- No generic Allocation / Allocation Request UI.
- No claim that every CIP-0056 registry on the network is listed. The wallet shows instruments it has a catalog entry for, plus holdings it can parse.
- History is not the full token-standard transaction log.