This guide provides step-by-step instructions for creating market data requests to Kaiko using the Kaiko oracle on the Canton blockchain. You can see our full range of Reference Rates and Multi-Asset Indices available on Canton here.
Overview
The Kaiko oracle enables secure, paid/licensed requests for real-time Reference Rates and Multi-Asset Indices through the Canton blockchain. The system follows the standard request-response oracle workflow:
Prepare request parameters: Format the Kaiko-specific payload.
Retrieve contracts: Get the current Amulet rules and open mining round contracts.
Exercise a contract choice: Submit a transaction to create a data request.
The oracle processes the request off-chain (settling payment via Amulets) and posts the Kaiko market data response back on-ledger.
Prerequisites
Required information
You need the following information before starting:
Canton participant endpoint: URL of your Canton participant JSON API
Canton authentication token: Valid token for API access
Consumer party ID: Your party identifier in Canton (e.g., Consumer::1220...)
RequestFactory contract ID: Contract ID for the request factory
DSO party ID: DSO party identifier
Data provider details (provider-dependent): Data request payload (stringified JSON)
Amulet contract ID: An Amulet contract to fund payment
Payment locked amount: Amount to lock for the request
Environment setup
Ensure you have:
A Canton node connected to the same domain as the oracle node
The Prepaid Oracle DAR uploaded to your Canton node
Sufficient Amulet balance for the request
Creating a Data Request
Prepare provider request parameters
The Kaiko oracle accepts requests for one or more tickers (real-time reference rates and indices).
Input model (Kaiko)
You must prepare the payload as valid JSON and then stringify it for the Canton command.
rates (Required): Array of Kaiko tickers.
Example tickers:
KK_RFR_BTCUSD
KK_RFR_CCUSD
EGLXRT
Stringidied payload
When sending the request to Canton, pass the stringified version (quotes escaped):
Submit the request creation transaction
Make a POST request to Canton to exercise the CreateRequest choice.