Buy
A buy pushes the price up and lays bedrock below the price — single-sided, in the currency that was paid in.
Every trade lays bedrock.
The market is not only price and volume.
Each trade deposits part of its own input as permanent liquidity in the range it traded through — a layer of bedrock. Trade after trade, the layers pile up until they are the structure of the market.
A buy pushes the price up and lays bedrock below the price — single-sided, in the currency that was paid in.
A sell pushes the price down and lays bedrock above the price — a mirror trail on the opposite side.
Zones that trade a lot become dense liquidity. Zones nobody touches stay thin. The tape becomes terrain.
Read the book from the middle out. Everything the market bought sits as a lattice of liquidity beneath the current price; everything it sold hangs above. The current price is just the seam where the two halves meet.
Because each layer is single-sided and never withdrawn, the structure only ever thickens. Support and resistance stop being lines someone drew — they become liquidity that is actually there.
It is a single Uniswap v4 beforeSwap hook. No new AMM, no token tax — just an interception on the way into every swap.
On every exact-input swap, the hook reads the current tick and takes a small, fixed share of the input — the layer fee.
A rising price gets a band just below it; a falling price gets a band just above. The band is chosen so the position is entirely one-sided — made of exactly the currency that was paid in.
That share is added as concentrated liquidity owned by the hook. The take and the mint cancel out inside the swap, so no external capital is ever needed.
The hook has no withdraw path for principal. Layers at the same band compound; only the swap fees they earn can be swept. The liquidity is there for good.
// take the layer's worth of the input ... uint256 layer = amountIn * stringFeeBps / 1e4; // ... on the side the trade came from if (zeroForOne) { // price falls → bedrock ABOVE, single-sided (lower, upper) = bandAbove(currentTick); } else { // price rises → bedrock BELOW, single-sided (lower, upper) = bandBelow(currentTick); } // mint it — permanent, owned by the hook poolManager.modifyLiquidity(key, add(lower, upper, layer)); // the take and the mint net to zero inside the swap return toBeforeSwapDelta(int128(layer), 0);