SHOOK / OFFICIAL PROTOCOLDocumentation
MAINNET EDITIONOpen SHOOK
Markets / SHOOK

Permanent market

Native ETH/SHOOK trading in one canonical Uniswap v4 pool.

Pool identity

PoolKey fieldValue
currency0Native ETH: address(0)
currency1Deployed SHOOK token
fee10,000 in v4 millionths = 1%
tickSpacing60
hooksDeployed SHOOKVanillaHook

Locked liquidity

LiquidityVault owns a full-range position between the minimum and maximum usable ticks for spacing 60. It exposes no principal-removal method, transferable owner role, or arbitrary-call escape hatch. Permissionless harvesting collects fees using a zero liquidity delta; it does not remove the position’s principal.

Permanent liquidity does not guarantee a fixed price, a minimum market value, or unlimited trade size. The asset composition changes as trades execute.

A minimal hook

The hook sets only beforeInitialize. It checks native ETH, the SHOOK address, the 1% fee, tick spacing 60, its own hook address, and the designated liquidity initializer. It has no swap callback or swap-return-delta permission.

The official hook address uses only the beforeInitialize permission bit and excludes the 0x91 prefix. These are implementation properties, not a promise of inclusion by every third-party router or interface.

Trading and fee collection

PermanentMarketRouter supports exact-input and exact-output swaps in both directions. The router uses PoolManager unlock accounting and settles native ETH or SHOOK obligations. Quotes should use the canonical pool and configured quoter.

The pool charges fees in the input currency. Harvested ETH is divided between creator revenue and reserve; harvested SHOOK goes entirely to reserve. See Fees and revenue. Anyone can call harvestFees once the vault is active.

Price encoding

With native ETH as currency0 and SHOOK as currency1, sqrtPriceX96 encodes the square root of SHOOK units per ETH unit. Both assets use 18 decimals, but the direction still matters: an ETH-per-SHOOK display must invert the raw token1/token0 ratio. LiquidityVault.terminalPrice computes sqrt(floor(shookAmount × 2¹⁹² / ethAmount)).

Source reference

Checked against the source shipped with this documentation. Contract calls and units are detailed in the contract reference.

Imported source files 41

Supporting contracts, interfaces, and libraries imported by the sources above, including their dependencies.

SHOOK docs Official protocol · Mainnet parameters