UniHooks

How to deploy a Uniswap v4 hook: address mining, verifying and getting listed

11 November 2026

You wrote a Uniswap v4 hook and the tests pass. Deploying it is where most people get stuck, because a hook can't go on just any address.

1. Why the address matters

Uniswap v4 reads a hook's permissions from the last 14 bits of its address. Each bit stands for one moment the hook runs at, such as beforeSwap or afterAddLiquidity. If the address bits don't match what getHookPermissions() says, the PoolManager refuses to create a pool with it.

So a normal "Deploy" button, which puts the contract on a random address, won't work.

2. Mine a salt

With CREATE2, the address is fixed by three things: the deployer, a salt and the contract's creation code (including its constructor arguments). Try salts one by one until the resulting address ends in the right bits. Tools like the HookMiner helper in Uniswap's v4 periphery do this in a script, and it usually takes seconds.

The salt only works with the exact same creation code and deployer. Change a constructor argument and you have to mine again.

3. Deploy with CREATE2

Send the salt and creation code through a CREATE2 factory, for example the public one at 0x4e59b44847b379578588920cA78FbF26c0B4956C, which exists on most chains. In a Foundry script, new MyHook{salt: SALT}(...) does the same. Check that the deployed address is exactly the one you mined.

4. Verify the source code

Publish the source on the chain's block explorer (Etherscan, Basescan, Arbiscan and others). Unverified hooks look suspicious to traders, can't be reviewed, and get a worse safety score on explorers like UniHooks.

5. Create a pool and add liquidity

Initialize a pool through the PoolManager with your hook's address in the pool key, then add liquidity. Your hook appears on UniHooks within a minute of its first pool.

6. Get it into Uniswap's app

Uniswap's app only routes trades through hooks it trusts. Hooks that change trade amounts or set their own fees need Uniswap Labs to review them first. Until then, people see "This trade cannot be completed right now". To get listed:

The shortcut

UniHooks Advanced does steps 2 to 4 for you: it mines the address, deploys from your wallet in one transaction and publishes the source automatically. Your hook's page then helps you with the registry submission. If you only need pool rules, Create skips deploying altogether.

Try it on your own token. Pick the rules, sign one transaction, no code.Create a hook

More guides