Skip to document
§ 03

THE PROGRAMMABLE HOOK

Why Hooks matter: they are the point at which a pool stops being a container and starts being a host for code.

In Uniswap v4 every pool lives inside a single settlement contract, and each pool may be created with a Hook attached. The Hook's address itself encodes which lifecycle points it subscribes to — the permissions are structural, not a runtime setting. From deployment onward, the pool calls that contract at exactly those points.

This is what makes the layer PROGRAMMABLE in a technical sense rather than a marketing one. The logic is not observing the pool from outside and reacting later. It is invoked by the pool, inside the same transaction, before the state transition is final. There is no window in which someone could decide not to run it.

RUNTIME uses that property for one purpose: to make an economic rule — capture, buy back, burn — inseparable from the activity that triggers it.

CONCEPTUAL LIFECYCLE SURFACE
beforeSwap()Runs before the pool applies the swap. The programmable pre-condition.CONCEPTUAL
afterSwap()Runs after the swap settles. Where fee accounting and state updates land.CONCEPTUAL
CONTRACT ABI NOT CONFIGUREDthese callbacks are shown as concepts only — nothing is claimed about the deployed contract until its ABI is supplied
DEPLOYMENT
HOOKNOT CONFIGURED
POOL MANAGERNOT CONFIGURED
ABINOT CONFIGURED
FIG. 3 — WHERE THE LOGIC LIVES
UNISWAP V4POOL
PROGRAMMABLE HOOK
CUSTOM LOGIC
EXECUTION
“THE LOGIC LIVES HERE.”
§ 13

RUNTIME MONITOR

The instrument panel. Configuration on the left, chain readings on the right, and an honest status line at the top.

RUNTIME STATUSNOT CONFIGUREDHOOK ADDRESS NOT CONFIGURED
BINDINGS
HOOKNOT CONFIGURED
POOLNOT CONFIGURED
TOKENNOT CONFIGURED
NETWORKEthereum · 1
READINGS
CURRENT SUPPLY999,767,600
TOTAL BURNED232,400
LAST BLOCK
LAST EVENT
LAST UPDATE
RPC CONFIGUREDINDEXER UNAVAILABLECACHE ONLINEHOOK ABI NOT CONFIGURED
SYNTHETIC MODE