Integrating BTC-USD Price Feed for CBTC
This guide explains how wallets can display a BTC-USD price feed for CBTC
CBTC is a 1:1 Bitcoin-backed token on Canton Network. Reserves are verified via Chainlink Proof of Reserve (PoR)
Why use BTC-USD price for CBTC?
Every CBTC token is backed 1:1 by underlying Bitcoin, with real-time on-chain verification through Chainlink Proof of Reserve (dashboard link coming soon!)
Choose an integration path
You have three options:
Option 1 — Chainlink Data Streams: Pull signed price reports from Chainlink's API
Option 2 — Kaiko Request-Response Oracle: Request on-ledger price data via a request/response oracle
Option 3 — Kaiko Pull Oracle: Fetch Kaiko-signed price data off-chain and publish it on-ledger yourself
Option 1: Chainlink Data Streams
Chainlink Data Streams delivers cryptographically verified, real-time market data. You fetch signed reports via the Data Streams API. You then verify them using Daml contracts provided by Chainlink.
Prerequisites
Access to a Canton participant node
Ability to upload DAR packages to your node
Familiarity with Daml contract development
Each wallet must obtain its own Chainlink API credentials (Client ID + Client Secret). There is no shared key model. Wallets must register independently with Chainlink.
Resources
For the full step-by-step integration guide — obtaining access, downloading DAR contracts, configuring the Verifier, and verifying reports:
DAR packages (private GitHub repo): Request access from Chainlink by sharing your developer GitHub handle. Once granted, use: data-streams-canton-integration releases
Option 2: Kaiko Request-Response Oracle
The Kaiko Request-Response Oracle on Canton delivers real-time reference rates and indices. Your Canton node submits a request on-ledger and receives the price data in a filled response contract. Payment is handled per-request via Amulet.
Prerequisites
A Canton node connected to the same domain as the Kaiko Oracle node
The Oracle DAR uploaded to your Canton node
Sufficient Amulet balance to fund the request
Your Consumer party ID, DSO party ID, and relevant contract IDs
Use rate identifier KK_RFR_BTCUSD (Kaiko BTC/USD Real-Time Reference Rate).
Resources
The full step-by-step integration guide is here — preparing request payloads, submitting transactions, and reading responses
Option 3: Kaiko Pull Oracle
The Kaiko Pull Oracle lets you fetch Kaiko-signed BTC-USD price data off-chain via the Kaiko Market API and publish it directly to Canton. The ledger validates the cryptographic signature on-chain before accepting the data.
This approach gives you more control over publication timing and does not require Amulet-based payment per request.
How it works
Fetch a signed BTC-USD price observation from the Kaiko Market API
Publish the signed data to Canton by exercising
PublishSignedDataon theMasterOraclecontractVerify — the ledger validates the signature and enforces your
FeedEntitlementbefore creating aPublishedSignedDatastate on-chainConsume — any party can read the on-chain
PublishedSignedDatato retrieve the verified price
Prerequisites
A Canton participant node
A valid Kaiko API key
The Pull Oracle DAR uploaded to your Canton node
Your Actor Party ID and FeedEntitlement Contract ID
Resources
The full step-by-step integration guide is here and it will help you fetch signed data, submit publication transactions, read on-chain data, and troubleshoot
Last updated