oracles.ink

Pull vs push oracles

The single most important design choice in an oracle — and which providers use which.

Push oracles write data on-chain on a schedule — every heartbeat or when the price moves past a threshold. The value is always there, but someone pays gas to keep it fresh. Pull oracles keep data off-chain and write it only when an app requests it in the same transaction — cheaper and lower-latency, but the integrating contract must fetch and verify the update.

Top picks

1Push + Pull

CChainlink

Push (Data Feeds) plus a pull option (Data Streams) — the most flexible coverage of both models.

2Push

CChronicle

Push, optimized to be the cheapest on-chain update via Schnorr aggregation.

3Pull

PPyth Network

Pull-native: ~400 ms data pulled on demand, ideal for latency-sensitive apps.

4Push + Pull

RRedStone

Modular — push or pull per feed, with pull as the cost-efficient default.

Bottom line

Push when you want a value always sitting on-chain (lending health checks); pull when you want the freshest price at the moment of action with minimal gas (perps, periodic reads).