---
title: "3. Oracle Integration"
path: "/developers/infrastructure/03-oracle-integration"
version: "1.1.0"
author: "Hydrate"
createdAt: "2026-02-19T06:44:49.002Z"
updatedAt: "2026-03-16T18:21:04.252Z"
---

# 3. Oracle Integration

<Infobox>
| **Oracle Integration** |
| Pattern Type | External Data |
| Difficulty | Intermediate–Advanced |
| Concepts | Oracles, Price Feeds, Cross-Ledger Data |
| Challenge | [Scrypto Oracles Challenge](https://radixdlt.medium.com/scrypto-oracles-challenge-is-live-the-radix-blog-radix-dlt-6b958c4d9948) |
| Example Provider | [RedStone on Radix](https://blog.redstone.finance/2025/06/12/redstone-brings-secure-gas-efficient-oracle-solutions-to-radix-defi-ecosystem/) |
</Infobox>

## Introduction

[Scrypto](/developers/legacy-docs/updates/roadmap/scrypto/scrypto) components execute deterministically on the [Radix Engine](/contents/tech/core-protocols/radix-engine) and can only access data already present on the ledger — they cannot make HTTP calls or read external APIs. When a dApp needs external data (asset prices, exchange rates, weather data, random numbers), it requires an **oracle**: a service that bridges off-chain information to on-ledger state.

Oracle design is one of the most challenging aspects of decentralised application development. This article covers the two main oracle patterns on Radix, their trade-offs, and how to integrate existing oracle providers.

## Push Oracles

A push oracle is an off-chain service that periodically submits transactions to update on-ledger price data. A [Scrypto](/developers/legacy-docs/updates/roadmap/scrypto/scrypto) component stores the latest values and exposes a read method that other components call.

### Architecture

1. $1

2. $1

3. $1

4. $1

### Trade-offs

- **Pros**: Simple consumer integration, predictable data freshness, works with any data type.

- **Cons**: Relayer must pay transaction fees for every update, data staleness between updates, single-point-of-failure if the relayer goes offline.

### Mitigations

Include a `timestamp` field in each price update and check staleness in consumer logic: reject prices older than a threshold (e.g. 5 minutes). Use multiple independent relayers with a median/aggregation mechanism to reduce trust assumptions.

## Pull Oracles

A pull oracle delivers data *within the consumer's transaction* rather than pre-posting it on-ledger. The oracle provider signs the data off-chain, and the consumer's [transaction manifest](https://docs.radixdlt.com/docs/transaction-manifest) includes both the signed data payload and a verification call to the oracle contract.

### Architecture

1. $1

2. $1

3. $1

### Trade-offs

- **Pros**: Data is always fresh (fetched at transaction time), no relayer infrastructure needed, consumer pays the gas.

- **Cons**: More complex frontend integration, requires the oracle provider to run a signing API, consumer must handle the multi-step manifest.

### [RedStone](https://redstone.finance) on Radix

[RedStone](https://blog.redstone.finance/2025/06/12/redstone-brings-secure-gas-efficient-oracle-solutions-to-radix-defi-ecosystem/) is an example of a pull oracle that has integrated with Radix. Its price feeds are delivered as signed payloads that [Scrypto](/developers/legacy-docs/updates/roadmap/scrypto/scrypto) components verify on-chain, treating the data as a first-class resource within the [asset-oriented](/contents/tech/core-concepts/asset-oriented-programming) model.

## External Links

- [Scrypto Oracles Challenge — Radix Blog](https://radixdlt.medium.com/scrypto-oracles-challenge-is-live-the-radix-blog-radix-dlt-6b958c4d9948)

- [RedStone on Radix — RedStone Blog](https://blog.redstone.finance/2025/06/12/redstone-brings-secure-gas-efficient-oracle-solutions-to-radix-defi-ecosystem/)

- [Will Radix Offer Decentralized Data Storage? — Radix Blog](https://www.radixdlt.com/blog/will-radix-offer-decentralized-data-storage)