Launch app

Docs / Developers

Reading V4 prices

Uniswap V4 keeps every pool inside one PoolManager, at 0x8366a39CC670B4001A1121B8F6A443A643e40951 on Robinhood Chain. Pool state is not exposed through getters; it is read through extsload.

The slot

bytes32 poolId = keccak256(abi.encode(currency0, currency1, fee, tickSpacing, hooks));
bytes32 slot   = keccak256(abi.encode(poolId, uint256(6)));   // pools mapping
uint160 sqrtPriceX96 = uint160(uint256(IPoolManager(pm).extsload(slot)));

currency0 is the lower address. For NVDA, USDG sorts first; for TSLA, the stock does.

From sqrtPriceX96 to USDG per share

sqrtPriceX96² / 2¹⁹² is the raw price of currency1 in currency0. Blackpool turns it into USDG raw per 1e18 share raw:

if (stockIs0) px = mulDiv(mulDiv(sqrtP, sqrtP, 1 << 64), 1e18, 1 << 128);
else          px = mulDiv(mulDiv(1e18, 1 << 96, sqrtP), 1 << 96, sqrtP);

Many slots at once

extsload(bytes32[]) returns several slots in one call. The site reads slot0 and active liquidity of all nine launch pools in a single eth_call.