API3 - Data Feed Proxy Combinators

QuantstampFiles named in the report

Quantstamp reviewed Api3 (API3 - Data Feed Proxy Combinators) on 24 Jun 2025: 4 findings, 0 critical; all acknowledged, none fixed.

No open critical findings
Open the reportOpen Api3’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings4

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium020
Low020
MediumAggregation of Stale Price Feed(s)Acknowledged

The `ProductApi3ReaderProxyV1` returns the product of possibly stale data feed sources. It returns `block.timestamp` as the timestamp for the new value, masking the age of the underlying data feeds. A consuming protocol utilizing this wrapper cannot apply their freshness policy to the returned price, leading to outdated prices and creating an opportunity for attackers. This could lead to protocols unintentionally accepting stale price data and attackers exploiting those protocols.

MediumSilent Truncation on `int224` Cast without Bounds ChecksAcknowledged

Multiple contracts perform unchecked casts from `int256` to `int224`, which can silently truncate values exceeding the `int224` range, leading to incorrect and misleading outputs. Solidity does not revert on narrowing conversions, so these casts may discard high-order bits without warning: - `ProductApi3ReaderProxyV1.read()`: Multiplies two proxy values and divides by 1e18 before casting to `int224` without checking bounds, risking overflow and silent truncation. - `NormalizedApi3ReaderProxyV1.read()`: Scales a Chainlink feed value (up or down) and casts to `int224` without verifying that the result fits within range. - `InverseApi3ReaderProxyV1.read()`: Inverts a proxy value using 1e36 divided by the feed value, then casts to `int224`, with a misleading comment implying a revert on overflow.

LowPrecision Loss on Value DownscalingAcknowledged

The `ScaledApi3FeedProxyV1` wrapper allows to downscale any data feed to a lower number of decimals. This loss of precision may result in inaccurate pricing, which can potentially be exploited by an attacker. While it is the responsibility of the integrating protocol, downscaling precision may be a risk in general.

LowSilent Underflow to ZeroAcknowledged

The current implementation of price inversion carries the marginal risk of underflowing to zero. In case the data feed value becomes larger than ` 1e36`, the inverted price will incorrectly return zero, enabling various exploits for protocol utilizing the price inversion mechanism. While this is highly unlikely for data feeds like ETH/USD (ETH would have to be worth one quintillon USD), it may occur for data feeds that, e.g., involve hyper-inflated asset or exotic asset pairs.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (5)

  • contracts/ProductApi3ReaderProxyV1.sol
  • contracts/NormalizedApi3ReaderProxyV1.sol
  • contracts/PriceCappedApi3ReaderProxyV1.sol
  • contracts/adapters/ScaledApi3FeedProxyV1.sol
  • contracts/InverseApi3ReaderProxyV1.sol

Part of Api3’s security record

Api3
Audits3 audits by 2 firmsLast audit Jun 2025, by Quantstamp.
Critical findingsNo open critical findingsAcross 3 reports.
Open Api3’s security record

Security firm

Quantstamp

236 projects reviewed · 332 reports · latest Oct 2026

See Quantstamp’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us