Explicit Disclosure API (Canton)

On Canton, users must be given explicit access to contracts they interact with but are not stakeholders of. Token pool operators run an Explicit Disclosure Service (EDS) API that returns these disclosures so users can include them in ledger transactions.

Global CCIP API

The Global CCIP API is operated by Chainlink Labs and provides disclosures for the core CCIP contracts (FeeQuoter, OnRamp, OffRamp, PerPartyRouterFactory, RMNRemote, TokenAdminRegistry, etc.). This API is made available to all users and does not need to be operated by third parties.

EnvironmentURL
Testnethttps://eds.testnet.ccip.chain.link
Mainnethttps://eds.ccip.chain.link

Example — fetch TAR disclosure via batch endpoint:

curl --request POST \
  --url https://eds.testnet.ccip.chain.link/ccip/v1/global/disclosure/batch \
  --header 'content-type: application/json' \
  --data '{
  "addresses": [
    "tokenadminregistry-lzrnd@ccipOwner::1220e382f4e57b0815e6be737006e381e6b7de448e06bd033ece6df498017879f551"
  ]
}'

OpenAPI spec: eds-global.yaml (postGetExplicitDisclosureBatch on /ccip/v1/global/disclosure/batch).

External APIs (third-party operated)

Third-party operators of Token Pools, CommitteeVerifiers, and Executors are each responsible for running their own EDS API so that users can obtain the disclosures needed to interact with their contracts. These APIs follow a standardized API definition:

APIEndpoints
Token PoolPOST /ccip/v1/external/tokenPool/{address}/send — called before sending a message that includes a transfer of the operator's token; returns disclosures for the token pool along with a list of required CommitteeVerifiers
POST /ccip/v1/external/tokenPool/{address}/execute — called before executing an incoming message that includes a transfer of the operator's token; returns disclosures and inputs for the token pool
CommitteeVerifier API (optional coming soon)Provides disclosures and inputs for the CommitteeVerifier contract during send and execute flows

Full API reference: openapi/src/eds/README.md.

EDS URL discovery

Users need the token pool operator's EDS URL. Recommended approach:

  1. Operator creates a Canton Name Service (CNS) entry for their party with key ccip.chain.link/edsUrls and a comma-separated list of API URLs.
  2. CCIP SDK/CLI discovers the URL automatically from the pool's RawInstanceAddress party ID.

Alternatively, communicate the EDS URL out-of-band via documentation or direct coordination.

Reference implementation

A reference EDS is available as a Docker image. It supports BurnMint and LockRelease token pools, default Token Pool / CommitteeVerifier / Executor APIs, and native Canton Token Standard APIs — configured via a single TOML file.

Example config: eds/testdata/config.toml.

Configuration reference

FieldMeaning
chain_selectorLocal Canton chain selector (distinct from remote selectors in ApplyChainUpdates).
[node].urlParticipant gRPC Ledger API endpoint. EDS reads the Active Contract Set over this connection.
[node.auth].typestatic, insecureStatic, clientCredentials, or authorizationCode.
map key / instance_addressEach pool keyed by instance address hex; map key must equal instance_address.
typeburnMint or lockRelease.
pool_ownerPool owner party (should equal instrumentId.admin).

Operators using the provided token pool contracts can run the reference implementation without custom code. Custom pool implementations must implement the standardized API endpoints or adapt the reference.

Operator responsibilities

  • Availability — EDS must stay reachable; users cannot send or execute token transfers involving your pool if it is down.
  • TLS — Terminate TLS at a reverse proxy or load balancer; expose HTTPS publicly.
  • Participant connectivity — EDS connects to your Canton participant via gRPC; configure permissions for ACS reads.
  • Authentication (optional) — Default is unauthenticated; restrict at the proxy if needed.
  • CNS registration (recommended) — Register ccip.chain.link/edsUrls for SDK/CLI discovery.

What's next

Get the latest Chainlink content straight to your inbox.