SettleMint
Developer guidesFeeds

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 give DALP a registry-backed way to resolve numeric data by asset and topic. A feed belongs to a (subject, topicName) pair: the subject is the asset or entity address, and the topic name describes the value, such as NAV or PRICE/USD. The API computes the on-chain topicId hash from the topic name.

Use feeds when DALP workflows, contracts, or external consumers need the same governed data point to be discoverable on-chain. The directory maps each subject and topic to a current feed address. Issuer-signed feeds let trusted issuers submit values through DALP-managed EIP-712 signing. External feeds let you register an existing scalar feed contract while its lifecycle and source operations stay outside DALP.

What feeds cover

NeedFeed patternWhat DALP stores
Token price or NAV reportingIssuer-signed scalar feed for the token address and topicFeed address, topic, decimals, latest value, signer, issuer, and indexed history according to the configured history mode
FX or benchmark rate shared across assetsGlobal scalar feed, usually registered with the zero address as subjectDirectory mapping and indexed values that consumers can resolve by topic
Existing market-data or oracle contractExternal scalar feed registered in the FeedsDirectoryAddress mapping only. The external provider still owns permissions, updates, and source operations
Stable address for downstream consumersAggregator adapter for the subject and topicAdapter address that resolves the current underlying scalar feed

Feeds are not a market-data provider by themselves. DALP uses feeds to register, resolve, and read scalar values from an authorised source. Issuer-signed feeds also let DALP submit signed updates to the feed contract.

Operating model

Rendering diagram...
  1. Install the feed modules for the system.
  2. Create or register a feed for a subject and topic.
  3. Submit values to issuer-signed feeds, or let the external feed continue updating outside DALP.
  4. Resolve and read the feed through the API, CLI, adapter, or indexed data.
  5. Replace or remove the directory mapping when the operating source changes.

Key concepts

ConceptDescription
FeedsDirectorySystem-level registry that maps (subject, topicId) to a feed contract address.
SubjectEthereum address of the asset or entity the feed relates to. Global feeds use the configured global subject pattern.
Topic nameHuman-readable data label, such as PRICE/USD. The API hashes it into the on-chain topicId.
Feed kindData shape. Current feed APIs expose SCALAR feeds.
RoundOne submitted data point with an incrementing roundId.
History modeStorage policy for historical rounds: latest only, bounded window, or full history.
AdapterStable-address contract that resolves the current feed for a subject and topic and exposes Chainlink-style read methods.

Feed types

Issuer-signed scalar feeds are deployed through the IssuerSignedScalarFeedFactory addon. DALP prepares the typed data and submits the update. The feed contract verifies the issuer signature, nonce, and trusted-issuer configuration before storing the round.

External feeds are existing scalar feed contracts registered in the directory. DALP can resolve and read the registered address, but the external feed keeps its own update schedule, permissions, service levels, and source controls.

Aggregator adapters provide a stable contract address for consumers. The adapter resolves the current feed for a subject and topic, then exposes read methods such as latestRoundData(). Use an adapter when a consumer should not change address every time the underlying feed is replaced.

History modes

ModeOn-chain valueBehavior
LATEST_ONLY0Stores only the most recent round. Previous values are overwritten.
BOUNDED1Stores a fixed-size ring buffer. Oldest rounds are evicted when the buffer is full.
FULL2Stores every round. Storage grows with every update.

Choose LATEST_ONLY when only the current value matters. Use BOUNDED when consumers need a recent window. Use FULL only when the feed needs a complete on-chain value history and the storage cost is acceptable.

Indexed feed model

DALP indexes feeds from feed lifecycle events. The indexed feed row follows the directory entry for a (subject, topicId) pair. It stores the latest answer from the active feed source, so API reads, CLI reads, and list pages stay aligned with the on-chain directory after a replacement.

EventSourceIndexed effect
FeedCreatedIssuer-signed scalar feed factoryCreates or refreshes the DALP-managed feed metadata: subject, topic, decimals, description, history mode, positivity rule, drift allowance, issuer registries, and signing domain.
AdapterCreatedAggregator adapter factoryLinks the stable adapter address to the subject and topic.
FeedRegisteredFeedsDirectoryActivates the current directory mapping and records whether the source is a DALP-managed scalar feed or a Chainlink-compatible feed.
FeedReplacedFeedsDirectoryMoves the active mapping to the new feed address, keeps the subject and topic stable, and clears the cached latest answer until the new source emits an update.
FeedRemovedFeedsDirectoryMarks the indexed mapping inactive and clears cached token price data when the removed mapping was used as a price feed.
FeedUpdatedIssuer-signed scalar feedStores the latest DALP-managed answer, round, observed timestamp, issuer identity, and signer wallet.
AnswerUpdatedChainlink-compatible aggregatorStores the latest external answer and round for the active mapping.
AggregatorConfirmedChainlink-compatible proxyUpdates the underlying aggregator address when a proxy confirms a new aggregator.

DALP-managed feeds and Chainlink-compatible feeds are indexed differently because each model exposes different operational data. DALP-managed issuer-signed feeds carry platform metadata, issuer trust configuration, and signed-update fields. Chainlink-compatible feeds keep their external operating model. DALP records the directory mapping, decimals, description, active source, and underlying aggregator when the feed uses a proxy.

Replacement and removal behaviour

The directory entry is the operator-facing source of truth for a subject and topic. Replacing a feed changes the active feed address behind that entry. The subject, topic, and adapter address stay stable. Consumers that read through an aggregator adapter keep the same configuration and resolve the new underlying feed on the next read.

After replacement, DALP clears the cached latest answer for that indexed mapping. The next FeedUpdated or AnswerUpdated event from the new source repopulates the latest value. Treat the value as unavailable until the replacement source emits an update or your integration reads the new source directly.

Removing a feed deletes the directory mapping on-chain and marks the indexed mapping inactive. API list calls can still show inactive history when requested, but resolve calls for the removed (subject, topic) no longer return an active feed.

Capability check

Before creating, submitting, or reading feeds, verify which feed modules are installed:

curl "$DALP_API_URL/system/feeds/capabilities" \
  -H "X-Api-Key: $API_KEY"

The response reports the chain ID, supported feed kinds, and installation state for the FeedsDirectory, IssuerSignedScalarFeedFactory, and ScalarFeedAggregatorAdapterFactory. A capability can be absent on a system where the corresponding addon has not been installed or indexed yet.

Operational checks

CheckWhy it mattersWhere to go next
Is the feed module installed?Creation and adapter workflows depend on the system-level feed addons.Create feeds
Is the issuer trusted for the topic?Issuer-signed submissions fail unless the issuer identity is trusted for the feed topic.Submit updates
Is the latest value fresh enough?Consumers should reject stale values for pricing, collateral, settlement, or reporting decisions.Read data
Does a consumer need a stable address?Adapters avoid changing consumer configuration when the feed behind a subject and topic changes.Create an aggregator adapter

Asset analytics with data feed integration

Next steps

On this page