> ## Documentation Index
> Fetch the complete documentation index at: https://www.diadata.org/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Stacks

> dApps built on Stacks can leverage DIA oracles to access up-to-date asset price information.

## Usage of DIA Oracles on Stacks

dApps building on Stacks can utilize DIA oracles to obtain up-to-date asset price information. These deployed oracles are suitable for use in production environments. They come with a list of supported assets and settings. However, if dApps require a custom oracle with a different set of assets and configurations, they should [contact DIA on Telegram](https://t.me/diabdteam).

## Oracle Details

| Chain   | Address                                                                                                                                                  |
| ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Mainnet | [SP1G48FZ4Y7JY8G2Z0N51QTCYGBQ6F4J43J77BQC0.dia-oracle](https://explorer.hiro.so/txid/SP1G48FZ4Y7JY8G2Z0N51QTCYGBQ6F4J43J77BQC0.dia-oracle?chain=mainnet) |
| Testnet | [ST1S5ZGRZV5K4S9205RWPRTX9RGS9JV40KQMR4G1J.dia-oracle](https://explorer.hiro.so/txid/ST1S5ZGRZV5K4S9205RWPRTX9RGS9JV40KQMR4G1J.dia-oracle?chain=testnet) |

## Oracle Configuration

|                                       |                                                                                                    |
| ------------------------------------- | -------------------------------------------------------------------------------------------------- |
| **Pricing Methodology**               | [MAIR](/docs/nexus/reference/pricing-methodologies/mair-moving-average-with-interquartile-range-filter) |
| **Deviation (%) & Refresh Frequency** | 5% and 120 seconds                                                                                 |
| **Heartbeat**                         | 15 minutes                                                                                         |

## Asset Feeds

The Stacks oracle includes the following asset feeds:

| Asset Ticker | Asset Blockchain | Asset Address                                                     | Asset Sources                                                                                                                    |
| ------------ | ---------------- | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| STX          | Stacks           | 0x0000000000000000000000000000000000000000                        | [STX Market](https://www.diadata.org/app/price/asset/Stacks/0x0000000000000000000000000000000000000000/)                         |
| stSTX        | Stacks           | SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token              | [stSTX Market](https://www.diadata.org/app/price/asset/Stacks/SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token/)             |
| DIKO         | Stacks           | SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token          | [DIKO Market](https://www.diadata.org/app/price/asset/Stacks/SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token/)          |
| WELSH        | Stacks           | SP3NE50GEXFG9SZGTT51P40X2CKYSZ5CC4ZTZ7A2G.welshcorgicoin-token    | [WELSH Market](https://www.diadata.org/app/price/asset/Stacks/SP3NE50GEXFG9SZGTT51P40X2CKYSZ5CC4ZTZ7A2G.welshcorgicoin-token/)   |
| VELAR        | Stacks           | SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.velar-token             | [VELAR Market](https://www.diadata.org/app/price/asset/Stacks/SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.velar-token/)            |
| ALEX         | Stacks           | SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.age000-governance-token | [ALEX Market](https://www.diadata.org/app/price/asset/Stacks/SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.age000-governance-token/) |
| sBTC         | Stacks           | SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token              | [sBTC Market](https://www.diadata.org/app/price/asset/Stacks/SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token/)              |
| aeUSDC       | Stacks           | SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc            | [aeUSDC Market](https://www.diadata.org/app/price/asset/Stacks/SP3Y2ZSH8P7D50B0VBTSX11S7XSG24M1VB9YFQA4K.token-aeusdc/)          |
| USDh         | Stacks           | SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1            | [USDh Market](https://www.diadata.org/app/price/asset/Stacks/SPN5AKG35QZSK2M8GAMR4AFX45659RJHDW353HSG.usdh-token-v1/)            |
| BTC          | Bitcoin          | 0x0000000000000000000000000000000000000000                        | [BTC Market](https://www.diadata.org/app/price/asset/Bitcoin/0x0000000000000000000000000000000000000000/)                        |

## How to Access Data

You can query for assets like `"STX/USD"` or `"stSTX/USD"` in the `get-value()` read function. It returns two values:

1. The price of STX/USD with 8 decimals

2. The timestamp of the last update (UTC timezone)

Below is the DIA oracle contract implementation in [Clarity](https://docs.stacks.co/concepts/clarity):

```solidity theme={"system"}
(impl-trait .trait-dia-oracle.dia-oracle-trait)

(define-constant err-unauthorized (err u100))

(define-data-var oracle-updater principal tx-sender)

(define-map values
    (string-ascii 32)
    { value: uint, timestamp: uint }
)

(define-public (set-value (key (string-ascii 32)) (value uint) (timestamp uint))
    (begin
        (try! (check-is-oracle-updater))
        (update-value { key: key, value: value, timestamp: timestamp })
        (ok true)
    )
)

(define-public (set-multiple-values (entries (list 10 { key: (string-ascii 32), value: uint, timestamp: uint })))
    (begin
        (try! (check-is-oracle-updater))
        (map update-value entries)
        (ok true)
    )
)

(define-public (change-oracle-updater (new-oracle-updater principal))
    (begin
        ;; #[filter(new-oracle-updater)]
        (try! (check-is-oracle-updater))
        (var-set oracle-updater new-oracle-updater)
        (print
            {
                action: "oracle-updater-changed",
                data: { old-updater: tx-sender, new-updater: new-oracle-updater }
            }
        )
        (ok true)
    )
)

(define-read-only (get-oracle-updater)
    (var-get oracle-updater)
)

(define-read-only (get-value (key (string-ascii 32)))
    (ok (default-to { value: u0, timestamp: u0 } (map-get? values key)))
)

(define-private (check-is-oracle-updater)
    (ok (asserts! (is-eq tx-sender (var-get oracle-updater)) err-unauthorized))
)

(define-private (update-value (entry { key: (string-ascii 32), value: uint, timestamp: uint }))
    (begin
        (map-set values
            (get key entry)
            { value: (get value entry), timestamp: (get timestamp entry) }
        )
        (print { action: "updated", data: entry })
    )
)
```

Learn more about DIA’s [data sourcing](/docs/nexus/reference/architecture/data-sourcing) and [data computation](/docs/nexus/reference/architecture/data-computation) architecture.

## Support

For developer assistance, connect with the DIA team directly on[ ](https://chat.openai.com/c/d2ca764b-00d6-4de7-8555-0cc30ac416b1#)[Discord](https://discord.gg/ZvGjVY5uvs) or [Telegram](https://t.me/diadata_org).

Developers seeking other specialized, production-grade oracle with tailored price feeds and configurations can initiate the request by [contacting the DIA BD Team via Telegram](https://t.me/diabdteam).
