# Create a feed

Source: https://docs.settlemint.com/docs/operators/data-feeds/create-feed
Deploy an issuer-signed scalar feed or register a Chainlink-compatible feed for a global, asset, or identity subject.



Create a data feed when a workflow needs reusable market, asset, or identity data. A feed can be global for market-wide data, asset-scoped for one token, or identity-scoped for one identity.

DALP supports two creation paths:

* Issuer-signed feed: DALP deploys a scalar feed contract. Trusted issuers later publish signed EIP-712 updates to that feed.
* Chainlink-compatible feed: DALP registers an existing external feed address in the Feeds Directory. The external oracle operator still manages that feed.

## Prerequisites [#prerequisites]

You need the following before you start.

* Feeds manager role in platform access control.
* A scalar feed topic created (see [Create a topic](/docs/operators/data-feeds/create-topic)).
* For issuer-signed feeds: a trusted issuer configured for the topic (see [Configure trusted issuers](/docs/operators/compliance/configure-trusted-issuers)).
* For Chainlink-compatible feeds: the external oracle contract address.
* For asset-scoped feeds: the target asset deployed.

## Creation model [#creation-model]

<Mermaid
  chart="flowchart TD
    Scope[Choose feed scope] --> Subject{Does the scope need a subject?}
    Subject -->|Global| Zero[DALP uses the zero address]
    Subject -->|Asset-scoped| Asset[Select the deployed asset]
    Subject -->|Identity-scoped| Identity[Select the identity]
    Zero --> Topic[Select a scalar verification topic]
    Asset --> Topic
    Identity --> Topic
    Topic --> Source{Choose source type}
    Source -->|Issuer-signed| Deploy[DALP deploys and registers a scalar feed]
    Source -->|Chainlink-compatible| Register[DALP registers the external feed address]
    Deploy --> Verify[Open the feed detail page]
    Register --> Verify"
/>

The scope, subject, and topic identify the data slot. The source type decides whether DALP deploys the feed contract or records an existing Chainlink-compatible address for that same slot.

## Example configuration [#example-configuration]

Use a global issuer-signed feed for a reusable market price that trusted issuers update inside DALP.

| Field            | Example value | Why this value fits                                                                  |
| ---------------- | ------------- | ------------------------------------------------------------------------------------ |
| Scope            | Global        | The price applies across the market rather than to one asset or identity.            |
| Subject address  | Zero address  | DALP fills this automatically for global feeds.                                      |
| Topic name       | `BTC/USD`     | The scalar topic identifies the value publishers submit.                             |
| Source type      | Issuer-signed | DALP deploys the feed and validates signed updates from trusted issuers.             |
| Decimals         | `8`           | Common precision for USD price feeds.                                                |
| Description      | `BTC/USD`     | Human-readable label stored with the deployed feed.                                  |
| History mode     | `Bounded`     | Keeps a fixed update history instead of only the latest value or all values forever. |
| History size     | `100`         | Stores the latest 100 submitted values.                                              |
| Require positive | Enabled       | Rejects zero or negative price submissions.                                          |
| Drift allowance  | `300` seconds | Rejects updates whose observed time is more than five minutes from block time.       |

After registration, a trusted issuer can publish the first `BTC/USD` value for the same topic. If you already operate a Chainlink-compatible oracle for that price, choose Chainlink instead and enter that feed address. DALP registers the address but does not operate the external oracle.

## Steps [#steps]

<Steps>
  <Step>
    ### Navigate to data feeds [#navigate-to-data-feeds]

    Go to Organisation settings > Operations > Data feeds in the sidebar. The page lists registered feeds and their latest indexed values.
  </Step>

  <Step>
    ### Open the create feed form [#open-the-create-feed-form]

    Click **Create feed** to open the feed creation form. All scope, topic, and source options appear on one form.

    ![Create feed form](/docs/data-feeds/create-feed-form.webp)
  </Step>

  <Step>
    ### Select the feed scope [#select-the-feed-scope]

    Choose the scope first. The scope determines the feed subject address.

    | Scope           | Use it for                                                                                    | Subject address                                |
    | --------------- | --------------------------------------------------------------------------------------------- | ---------------------------------------------- |
    | Global          | Market-wide data such as BTC/USD, ETH/USD, or FX rates.                                       | DALP uses the zero address automatically.      |
    | Asset-scoped    | Data tied to one deployed token, such as NAV, interest rate, collateral ratio, or risk score. | Select the asset from the subject dropdown.    |
    | Identity-scoped | Data tied to one identity.                                                                    | Select the identity from the subject dropdown. |

    For asset or identity scope, the form shows a Subject address selector. Pick the exact asset or identity before continuing.
  </Step>

  <Step>
    ### Select the topic and source type [#select-the-topic-and-source-type]

    Fill in the common feed fields:

    * **Data format**: Scalar is the supported feed format.
    * **Topic name**: Select a scalar feed topic from the dropdown. The form shows the derived topic ID so you can confirm the topic being registered.
    * **Source type**: Choose **Issuer-signed** to deploy a DALP-managed feed, or **Chainlink** to register an existing external feed address.

    <Callout type="info" title="Issuer-signed availability">
      When the issuer-signed feed factory is missing for the current system, the Console offers only the
      Chainlink-compatible registration path. Finish the platform feed setup before creating issuer-signed feeds.
    </Callout>
  </Step>

  <Step>
    ### Configure the selected source [#configure-the-selected-source]

    For an issuer-signed feed, configure the contract DALP will deploy:

    | Field            | What to enter                                                                                                                               |
    | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
    | Decimals         | Feed value precision from `0` to `18`. USD price feeds often use `8`; integer metrics can use `0`.                                          |
    | Description      | A plain-language label for what the feed measures, such as `USDT / USD` or `BTC/USD spot price`.                                            |
    | History mode     | `Latest only` keeps the most recent value, `Bounded` keeps a fixed number of values, and `Full` keeps all values.                           |
    | History size     | Required only for `Bounded` history. Use at least `1`.                                                                                      |
    | Require positive | Rejects submitted values that are zero or negative.                                                                                         |
    | Drift allowance  | Maximum allowed difference, in seconds, between the submitted `observedAt` time and the block timestamp. Use `0` to disable drift checking. |

    The form defaults issuer-signed feeds to `18` decimals, `Latest only` history, no positivity check, and `0` seconds of drift allowance. Change those values before creating the feed if your issuer updates need a different retention, precision, or validation model. For a Chainlink-compatible feed, enter the external feed address instead. DALP registers that address for the selected subject and topic with scalar feed kind, but does not deploy or operate that external oracle.

    <Callout type="warning" title="External oracle responsibility">
      Chainlink-compatible registration connects DALP to an existing scalar feed address. Confirm the oracle contract,
      heartbeat, update process, and data-provider controls outside DALP before relying on the value for pricing, NAV,
      collateral, or reporting workflows.
    </Callout>

    ![Filled create feed form](/docs/data-feeds/create-feed-filled.webp)
  </Step>

  <Step>
    ### Review and confirm [#review-and-confirm]

    Click **Continue** to review the configuration summary. Check the scope, subject, topic, source type, and source-specific fields before submitting.

    Click **Register feed** and enter your PIN to authenticate the transaction.

    ![Feed creation confirmation](/docs/data-feeds/create-feed-confirm.webp)
  </Step>

  <Step>
    ### Verify the feed [#verify-the-feed]

    After the transaction confirms, the feed appears in the Data Feeds list. Open the feed row to review the registered subject, topic, source type, configuration, and latest value.

    ![Data Feeds list with created feed](/docs/data-feeds/data-feeds-created.webp)

    ![Feed detail page](/docs/data-feeds/feed-detail.webp)
  </Step>
</Steps>

## What happens after registration [#what-happens-after-registration]

What the platform does and what you do next depends on the source type you selected.

| Source type          | What DALP does                                                                                 | What you do next                                                           |
| -------------------- | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| Issuer-signed        | Deploys and registers a scalar feed contract.                                                  | Publish the first value through a trusted issuer.                          |
| Chainlink-compatible | Registers the external feed address in the Feeds Directory for the selected subject and topic. | Confirm the external oracle keeps updating and that DALP indexes the feed. |

Issuer-signed properties are set when the feed is deployed. If you need different decimals, history mode, positivity checks, or drift controls, create a new feed with the desired configuration.

## Field summary [#field-summary]

The table below lists every field, whether it is required, which feed type it applies to, and any constraints.

| Field            | Required                       | Applies to                 | Notes                                                                          |
| ---------------- | ------------------------------ | -------------------------- | ------------------------------------------------------------------------------ |
| Scope            | Yes                            | All feeds                  | Determines the subject address.                                                |
| Subject address  | Asset and identity scopes only | All feeds                  | Auto-filled for global scope.                                                  |
| Data format      | Yes                            | All feeds                  | Scalar feed values are supported.                                              |
| Topic name       | Yes                            | All feeds                  | Must be a scalar feed topic.                                                   |
| Source type      | Yes                            | All feeds                  | Choose between issuer-signed deployment and Chainlink-compatible registration. |
| Feed address     | Yes                            | Chainlink-compatible feeds | Existing external oracle contract address.                                     |
| Decimals         | Yes                            | Issuer-signed feeds        | Range: `0` to `18`.                                                            |
| Description      | Yes                            | Issuer-signed feeds        | Human-readable description stored with the feed.                               |
| History mode     | Yes                            | Issuer-signed feeds        | Controls value retention.                                                      |
| History size     | Bounded mode only              | Issuer-signed feeds        | Minimum: `1`.                                                                  |
| Require positive | No                             | Issuer-signed feeds        | Rejects non-positive values when enabled.                                      |
| Drift allowance  | No                             | Issuer-signed feeds        | Time window in seconds; `0` disables drift checking.                           |

## Troubleshooting [#troubleshooting]

| Issue                              | What to check                                                                                                                                                                                                                                   |
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Create feed button not visible     | Confirm your wallet has the Feeds manager role in platform access control.                                                                                                                                                                      |
| Issuer-signed option not available | Confirm the issuer-signed feed factory is installed for the system.                                                                                                                                                                             |
| No topics in the dropdown          | Create a scalar feed topic first (see [Create a topic](/docs/operators/data-feeds/create-topic)).                                                                                                                                               |
| Continue button disabled           | Select a topic first. For asset or identity scope, also choose a subject address. For issuer-signed feeds, fill in the description and bounded history size when applicable. For Chainlink-compatible feeds, fill in the external feed address. |
| Asset not in subject dropdown      | Confirm the asset is deployed and visible under Asset management.                                                                                                                                                                               |
| Transaction fails                  | Check your wallet gas balance, PIN or OTP setup, subject address, and feed factory availability.                                                                                                                                                |

## Next steps [#next-steps]

* For issuer-signed feeds, [publish a feed update](/docs/operators/data-feeds/publish-feed-update) to submit the first value.
* For Chainlink-compatible feeds, open the feed detail page after indexing and confirm the external oracle value is visible.
* To understand how feeds fit the wider data model, read the [Data feeds overview](/docs/operators/data-feeds/overview).
