Feeds overview
On-chain data feeds registered in a system-level FeedsDirectory. Use feeds for price reporting, NAV tracking, interest rates, and custom oracle data.
Feeds are on-chain data sources registered in a system-level FeedsDirectory. Each feed is identified by a (subject, topicName) pair, where the subject is the asset or entity the data relates to, and the topicName is a human-readable string identifying the data type (e.g., "NAV", "PRICE/USD"). The API computes the on-chain topicId (bytes32 keccak256 hash) from the topic name internally.
Feeds are currently API-only. There is no UI workflow for feed management.
Use cases
- Price feeds -- publish token prices for collateral valuation or trading
- NAV reporting -- report net asset value for fund tokens on a schedule
- Interest rates -- publish benchmark rates for variable-yield instruments
- Custom oracle data -- any scalar value that needs to be available on-chain
Key concepts
| Concept | Description |
|---|---|
| FeedsDirectory | System-level registry mapping (subject, topicId) to a feed contract address |
| Subject | The Ethereum address of the asset or entity the feed relates to |
| TopicName | A human-readable string for the data type (e.g., "PRICE/USD"). The API computes the on-chain topicId hash automatically. |
| FeedKind | The type of data the feed provides. Currently only SCALAR (a single numeric value) |
| Round | A single data point submission, identified by an incrementing roundId |
| HistoryMode | How the feed stores historical rounds (see below) |
| Adapter | A stable-address proxy that resolves to the current underlying feed for a (subject, topicName) pair |
Feed types
Issuer-Signed Scalar Feed -- deployed via the IssuerSignedScalarFeedFactory addon. The platform manages signing and submission. Updates are authorized via EIP-712 typed data signatures from trusted issuers.
External feeds -- any existing feed contract (e.g., Chainlink) can be registered in the directory manually. The directory only stores the address mapping; it does not manage the external feed's lifecycle.
History modes
| Mode | On-chain value | Behavior |
|---|---|---|
LATEST_ONLY | 0 | Only the most recent round is stored. Previous values are overwritten. |
BOUNDED | 1 | A fixed-size ring buffer of rounds. Oldest rounds are evicted when the buffer is full. Configure the size with historySize. |
FULL | 2 | All rounds are stored permanently. Storage grows without bound. |
Choose LATEST_ONLY for feeds where only the current value matters (e.g., real-time prices). Use BOUNDED when consumers need a sliding window of recent values. Use FULL for audit trails where every historical value must be preserved.
Capabilities check
Before operating on feeds, verify which feed modules are installed on the platform:
curl "$DALP_API_URL/system/feeds/capabilities" \
-H "X-Api-Key: $API_KEY"The response indicates whether the FeedsDirectory, IssuerSignedScalarFeedFactory, and ScalarFeedAggregatorAdapterFactory are installed, along with their contract addresses and the supported feed kinds.
Feed lifecycle
