# The universal AMM primitive: one abstraction over every curve

> Canonical: https://blazephoenix.xyz/learn/universal-amm-primitive
> License: CC BY 4.0 (attribution + link) · © 2026 BlazePhoenix
> Updated: 2026-08-05



BlazePhoenix V2 is pre-deployment and under audit; this describes the intended abstraction. Most aggregators carry a separate code path per DEX family, which is where bugs and blind spots breed. V2 defines one universal AMM primitive: a common interface of get-output and capacity that each curve family — constant product, Solidly-style stable, concentrated liquidity — implements against the same contract.

## Why one interface is safer

When every pool answers the same two questions in the same units, the router reasons about routes without knowing which venue it is on. Adding a venue means implementing the primitive, not touching the router, so the surface that can go wrong does not grow with integrations. It is the taxonomy of AMM math reduced to a single, testable contract boundary.

**Verify it yourself:** Compare a stable-pool quote from the primitive to the pool own getAmountOut on chain; the universal path should match the venue within a tight tolerance

Related: https://blazephoenix.xyz/learn/amm-math-taxonomy · https://blazephoenix.xyz/learn/solidly-solver · https://blazephoenix.xyz/learn/integrated-dexes · https://blazephoenix.xyz/learn/v2-redesign-overview
