Data feeds overview
Understand issuer-signed scalar data feeds, their architecture, required permissions, and configuration properties.
Data feeds deliver signed, on-chain price and metric data that smart contracts can consume for calculations such as NAV, collateral ratios, and yield distributions. The platform uses Issuer-Signed Scalar Feeds where authorized issuers submit EIP-712 signed values through a feed adapter contract.
Architecture
A data feed combines three on-chain concepts:
- Verification topic - Defines the data schema. Scalar feed topics use the fixed signature
(int256 value). - Feed contract - Stores configuration (decimals, history, drift) and holds submitted values.
- Trusted issuer - An identity authorized to publish updates to feeds using a given topic.
graph LR
A[Issuer] -->|EIP-712 signed update| B[Feed Adapter]
B -->|stores value| C[Feed Contract]
C -->|read by| D[Smart Contracts]
E[Topic Registry] -->|schema| C
F[Trusted Issuer Registry] -->|authorization| BRequired permissions
Different operations require different platform roles. Roles are assigned on the System Access Manager page under Platform Settings.
| Operation | Required role | UI label |
|---|---|---|
| Create / delete / update verification topics | claimPolicyManager | Verification policy manager |
| Register / replace / remove feeds | feedsManager | Feeds manager |
| Publish feed updates | No role required | Any user, but must be a trusted issuer for the feed's topic |

Trusted issuer requirement
Publishing a feed update does not require a platform role, but the submitting identity must be registered as a trusted issuer for the feed's verification topic. See Configure trusted issuers for setup instructions.
Feed scopes
Every feed is scoped to a subject address that determines what entity the data describes.
| Scope | Subject address | Use case |
|---|---|---|
| Global | Zero address (0x000...000) | Market-wide data such as BTC/USD or ETH/USD exchange rates |
| Asset-scoped | Token contract address | Asset-specific data such as a bond's NAV or a deposit's interest rate |
| Identity-scoped | Identity contract address | Entity-specific data such as a credit score or risk rating |
Feed properties reference
These properties are set when creating a feed and cannot be changed after deployment.
| Property | Values | Description |
|---|---|---|
| Data format | Numeric (Scalar) | The data type stored by the feed. Currently only scalar (int256) is supported. |
| Topic name | Selected from registered topics | The verification topic that defines the feed's data schema. Only topics with the (int256 value) signature are available for scalar feeds. |
| Source type | Issuer-signed, Chainlink | How values are submitted. Issuer-signed uses EIP-712 signatures; Chainlink reads from an external oracle contract. |
| Decimals | 0 - 18 | The number of decimal places for the stored value. For example, a USD price with 8 decimals stores 100000000 to represent 1.00. |
| Description | Free text | A human-readable description of what the feed measures. Required for issuer-signed feeds. |
| History mode | Latest only, Bounded, Full | Controls how many past values the feed retains. |
| History size | Integer >= 1 | Only used with Bounded history mode. Sets the maximum number of historical values to keep in a circular buffer. |
| Require positive | On / Off | When enabled, the feed contract rejects any submitted value that is zero or negative. |
| Drift allowance | Integer (seconds) | Maximum allowed time difference between the observedAt timestamp in a submission and the current block timestamp. Set to 0 to disable drift checking. |
History modes explained
- Latest only - The feed stores only the most recent value. Previous values are overwritten. Best for feeds where only the current price matters.
- Bounded - The feed keeps a fixed-size circular buffer of past values (set by History size). When the buffer is full, the oldest value is replaced. Useful for moving averages or volatility calculations.
- Full - The feed stores every submitted value permanently. Provides a complete audit trail but uses more on-chain storage.

Setup workflow
Setting up a data feed involves four steps:
Create a scalar feed topic
Register a verification topic with the feedScalar kind. This defines the data schema for your feeds. See Create a topic.
Register a trusted issuer
Add the identity that will publish feed updates as a trusted issuer for the topic. See Configure trusted issuers.
Create the feed
Register a new feed contract with the desired scope, topic, and configuration properties. See Create a feed.
Publish updates
Submit signed values to the feed. See Publish a feed update.
Related guides
- Create a topic - Register a scalar feed verification topic
- Create a feed - Register a global or asset-scoped feed
- Publish a feed update - Submit a signed value
- Configure trusted issuers - Authorize issuers for topics
- Install addons - Install the Issuer-Signed Scalar Feed addon