Tokenized stocks, gold-backed tokens and other real-world assets (RWA) need a reliable reference price inside smart contracts. A price oracle provides it. This article explains how a modern signed pull oracle works.
Push vs pull oracles
- Push: an operator writes prices on-chain on a schedule and pays gas for every update.
- Pull: your application fetches a freshly signed price report and submits it in its own transaction; the contract verifies the signature. Fresher data, lower cost.
What is inside a signed report
- The feed (for example EUR/USD or XAU/USD), the price and its timestamp.
- A market status: open, closed (official last price) or halted.
- A validity window of about a minute, so nobody can hoard favourable reports.
- An EIP-712 signature bound to one chain and one contract.
Handling market closures
Forex, metals and stocks close at weekends. A good oracle publishes the official closing price marked as closed, and issuers settle requests made while closed at the next open price (forward pricing), as funds do.
Safety features
- Circuit breakers pause a feed after an abnormal jump until it is checked.
- Multiple sources: the median of several brokers, with outliers removed.
- Chainlink-compatible adapters (AggregatorV3Interface) for existing DeFi code.
How a contract uses a report
- The application requests a signed report for the feed it needs.
- It submits the report in its own transaction.
- The verifier contract checks the signature, the validity window and the circuit breaker, then stores the price.
- The application reads the price with a freshness requirement, for example "open and at most 60 seconds old".
Choosing safe settings
- Require live prices for trading actions; accept closing prices only where your rules allow.
- Set a circuit breaker suited to each asset's volatility.
- Require several sources for high-value operations.
Who pays the gas?
With a pull oracle, the application that submits the report pays; reading stored prices is free.
Learn more on our oracle page.



