Pythscan
Core concept · Core

Status flags

What Trading / Halted / Auction / Unknown actually mean on a Pyth feed, and what your contract should do about each.

Every Pyth feed has a status flag attached to its aggregate. It's a small enum that tells a consumer whether the price is in a normal state — and if not, why not. The flag is set by the aggregation: it's derived from how many publishers are contributing and the status those publishers themselves are reporting.

The four states

  • Trading — normal operation. Enough publishers are contributing live quotes, and the aggregate is being updated continuously.
  • Halted — publishers have explicitly halted. Typically tied to the underlying market closing (e.g. an equity feed after the session ends, or a commodity feed outside its exchange's session).
  • Auction — the underlying market is in an auction phase (pre-open or close auction for equities, where a single clearing price is being determined). Prices exist but are not from continuous trading.
  • Unknown — the aggregate couldn't be computed. Typically because not enough publishers are reporting, or a transient outage.

What your contract should do

The recommended pattern is to gate every state-changing action on the status flag in addition to freshness and confidence interval. Most use cases should refuse to act on anything except Trading. A liquidation engine that processes a liquidation against a Halted price has done something wrong; a perpetuals exchange that pays funding based on an Unknown read has done something wrong. Use the SDK helpers that surface the status, and revert if the status isn't what you expected.

Where you see this on Pythscan

Every feed page on Pythscan shows the current status. The /feeds catalog as a whole is built around honest live-data states — a feed showing Halted or Unknown isn't hidden, it's labeled.

Related concepts