Skip to main content

Documentation Index

Fetch the complete documentation index at: https://cantonfoundation-issue-365-details-history.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

The Canton Name Service (CNS) maps human-readable names to party IDs on the Canton Network, similar to how DNS maps domain names to IP addresses. The underlying code is called the Amulet Name Service — you will see this term in package names like splice-amulet-name-service.

What CNS provides

  • Allows parties to buy a globally unique, human readable name for a time period mapped to their party (similar to DNS)
  • Allows each party to declare one of their entries as the primary entry which is used to provide a human readable name to their party (similar to reverse DNS)
  • Provides APIs for resolution in both directions that can be used by other apps (e.g., the wallet) to display and accept CNS names instead of party ids

How names work

CNS entries are purchased for a time period and mapped to a party ID. The core guarantees are:
  • Entry names are globally unique
  • Entries are never archived before they expire
  • The owner of an entry can always renew it before expiry
  • Anyone can purchase an entry for a name that is not yet allocated
  • Expired entries are archived by Super Validator automation
Payment for CNS entries uses a CC subscription workflow implemented in the splice-wallet-payments package.

Primary entry

Each party can designate one of their CNS entries as their primary entry. The primary entry works like reverse DNS — given a party ID, the system can resolve it back to a human-readable name. Other applications (including the Splice Wallet) use primary entries to display readable names instead of raw party IDs.

Resolution

CNS supports resolution in both directions:
  • Forward resolution (name to party ID) — Given a CNS name, return the party ID it maps to
  • Reverse resolution (party ID to name) — Given a party ID, return its primary CNS entry name
Applications like the Splice Wallet use these resolution APIs to let users send transfers to a readable name rather than a party ID.

Party metadata

Beyond CNS name mapping, parties on the network can associate metadata with their identity. Party metadata provides additional context about a party that other applications can query and display. The Scan API exposes party metadata for publicly visible data.

Operator considerations

As a validator operator:
  • CNS for your parties — Parties hosted on your validator can purchase CNS names through the wallet UI or programmatically through the Ledger API
  • Renewal — CNS entries expire. Ensure your parties are aware of expiry dates and renew entries before they lapse. Once expired, the name becomes available for anyone to purchase.
  • Primary entry — Encourage your parties to set a primary entry so that other users see a readable name in wallet UIs and application interfaces
  • Costs — CNS entry purchases and renewals cost CC. These transactions consume traffic from your validator’s balance.

Daml implementation

CNS is implemented across two Daml packages:
  • splice-amulet-name-service — Implements the name service logic (entry creation, renewal, resolution)
  • splice-dso-governance — Implements the decentralized automation for entry lifecycle management (expiry, archival)
The split follows the same pattern used throughout the Splice codebase: business logic is written under the assumption that the DSO party behaves honestly, while decentralization concerns (BFT automation, on-ledger confirmations) are handled separately in the governance package.