# Oracle Programs

<figure><img src="/files/zQ6OCAnGM3ZLfnnHPJDh" alt=""><figcaption></figcaption></figure>

SEDA’s Programmable Oracle Infrastructure is designed to mitigate the inherent restrictions faced when building modern apps with traditional oracle models. SEDA’s design navigates away from default data sets and rigid architecture stacks by leveraging an intent-centric framework.

SEDA introduces the concept of Oracle Programs, containers that consist of protocol-defined instructions that dictate how their data requests should be executed. Essentially, an Oracle Program enables developers to program their own oracle feeds, which are then deployed to the SEDA Network. The network takes ownership of accessing and transporting the data to the protocol.

Where traditional oracle models must build specific data feeds for each type of data being consumed, such as price feeds, SEDA’s Oracle Programs allow the builder to customize a feed for any data type. When creating an Oracle Program, there are three broad parameters for which developers can define their oracle feed instructions:

1. What data they want to access.

SEDA's infrastructure can query any public API end point on the internet, as well as a suite of private data providers, for all data types.

2. Which data sources they want to include in their query.

By incorporating a http-fetch function, developers can build oracle feeds to query data on any public API endpoint that makes that data available for consumption by their smart contracts.

For private providers, builders can select which providers they want access to and highlight providers they do not wish to include in their queries.

3. How data should be filtered, aggregated and returned for consumption.

SEDA incorporates a DR Tally function that can order and structure data results according to the protocol-defined instructions coded into an Oracle Program.

Protocols can define their data filtration and aggregation parameters to ensure that the returned data is presented in the most compatible structure for their app or network.

Once an Oracle Program is deployed to the SEDA Network, it is stored as a WASM Binary and assigned an Oracle Program ID. The Oracle Program ID matches the ID attached to the protocol and is fetched by the SEDA Network when a protocol's ID, associated with their data requests, is relayed to the SEDA Main Chain.

In a Web3 landscape where app builders are migrating on-chain, SEDA’s custom Oracle Programs ensure that a lack of access to data never restricts developers. The Oracle Program SDKs are open-source and available on the SEDA Github to make any Oracle Feed type available to builders from day-one.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.seda.xyz/home/technology/seda-network-architecture/oracle-programs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
