Core concepts
Tokens, ticks, concentrated liquidity, pool identity, fees, and observations.
Automated market maker
Abyss pools hold two ERC-20 assets and calculate trades along a concentrated-liquidity curve. A swap changes the pool's square-root price and current tick. Liquidity providers choose the tick interval in which their capital participates.
Token ordering and quote orientation
Every pool sorts its token addresses into token0 and token1. Sorting is mechanical and does not identify the economic quote asset. Quote-oriented profiles therefore store a separate immutable quoteIsToken0 flag.
The base token is the asset being priced. The quote token is the unit in which that price is expressed. In a TOKEN/USDC market, TOKEN is usually the base asset and USDC the quote asset. The protocol does not decide whether an asset is economically appropriate as a quote token.
Ticks and prices
A tick is a logarithmic price index. Adjacent ticks differ by a price factor of 1.0001. If t is the tick, the raw token1-per-token0 price is:
$$P = 1.0001^t$$
Token decimals must be applied before showing a human-readable price. Quote-oriented truncated observations normalize the tick so their economic direction remains consistent when the quote asset changes from token1 to token0.
Concentrated liquidity
Liquidity is active only while the current tick lies in the provider's selected interval [tickLower, tickUpper). Active liquidity earns fees and supplies the curve. Out-of-range liquidity is held entirely in one asset and earns no swap fee until price re-enters its range.
Narrow ranges use capital more efficiently near the current price but leave the active range more easily. Full-range positions stay active across nearly the entire usable price domain but spread capital thinly.
Complete pool identity
A token pair can have several valid Abyss pools. A pool is identified by all six fields:
struct PoolKey {
address token0;
address token1;
PoolProfile profile;
uint24 fee;
bool quoteIsToken0;
bytes32 oracleConfigId;
}Two pools with the same tokens but a different profile, fee tier, quote orientation, or oracle configuration are different markets with different addresses and liquidity. Routers and indexers must never infer a pool from a token pair alone.
Fee units
Pool fees use pips with denominator 1,000,000:
| Fee pips | Percentage | Tick spacing | Interface guidance |
|---|---|---|---|
500 | 0.05% | 10 | Stable pairs |
3000 | 0.30% | 60 | Most pairs |
10000 | 1.00% | 200 | Exotic pairs |
The labels are interface guidance, not protocol validation. All three tiers are permissionless.
Observations
Every pool exposes the canonical Uniswap v3-style observe() history. Beacon and Lighthouse pools also expose observeTruncated(), a separate ring whose tick transition is capped per eligible block. The canonical and truncated histories coexist. The truncated ring does not alter spot execution price.