LibraryMarkets2020Design paperCorpus record
Improved Price Oracles: Constant Function Market Makers
Constant function market makers. Guillermo Angeris and Tarun Chitra.
A constant-function market maker defines a set of reserves that must stay on a curve. Prices and oracle quality fall out of that curve and of the path traders take.
A reading of the public document. Not a copy of it, and not a claim about a later network that reused the name.
A lending protocol that reads a spot price from a pool should be able to say which function, and what it costs to move the slope for one block.
The five-minute read
The defect
Automated market makers were treated as gadgets. This paper treats the trading function as an object you can analyse.
The rule
A constant-function market maker defines a set of reserves that must stay on a curve. Prices and oracle quality fall out of that curve and of the path traders take.
How it is put together
The invariant is the product, or a more general function. The spot price is the slope, not a printed number. An oracle that reads the spot price is reading a manipulable slope.
Where the claim stops
The paper is not Uniswap's code.
One action, walked through
- A trader proposes a new reserve point on the curve.
- The pool accepts if the invariant holds and the fee is paid.
- The price others see is implied by the new reserves.
- What is the invariant?
The argument, unpacked
Why it is still on the desk
A lending protocol that reads a spot price from a pool should be able to say which function, and what it costs to move the slope for one block.
After the text
Uniswap v2 and v3 are instances. The paper is the language those instances share.
What has to be true
- The paper is not Uniswap's code.
- It does not say every curve is a good oracle.
- Manipulation cost depends on the curve and the block, which the paper models rather than measures for a later market.
What happened after the paper
Uniswap v2 and v3 are instances. The paper is the language those instances share.
What to check before you use the idea
- What is the invariant?
- Is the oracle the spot slope or a time average?
- What trade size moves the price across the liquidation point?
Terms
- Invariant
- The function of reserves the pool refuses to decrease.
- Spot price
- The marginal price implied by the current reserves.
The problem the paper names
Automated market makers were treated as gadgets. This paper treats the trading function as an object you can analyse.
What the design proposes
- The invariant is the product, or a more general function.
- The spot price is the slope, not a printed number.
- An oracle that reads the spot price is reading a manipulable slope.
How the mechanism is specified
- A trader proposes a new reserve point on the curve.
- The pool accepts if the invariant holds and the fee is paid.
- The price others see is implied by the new reserves.
What this page does not treat as proven
- The paper is not Uniswap's code.
- It does not say every curve is a good oracle.
- Manipulation cost depends on the curve and the block, which the paper models rather than measures for a later market.
Why a venture studio still reads it
A lending protocol that reads a spot price from a pool should be able to say which function, and what it costs to move the slope for one block.
This is Blockchain Lab's reading of a public design paper. It is not the paper, not a copy of it, and not an offer of tokens, equity, custody or a partnership. Later network behaviour can diverge from the text. Nothing here is investment, legal or technical advice.
Research status: Design paper. Last reviewed: 1 October 2026. This is a reading of a public paper, not investment, legal or security advice.
