Building a v4 hook? Four house hooks already earn on every swap: volatility fee, anti-snipe, agent rebate and weekend gap guard.Read the protocol.Building a v4 hook? Four house hooks already earn on every swap: volatility fee, anti-snipe, agent rebate and weekend gap guard.Read the protocol.
v4 Marketplace docs

Build on v4 Marketplace

Security check

Every v4 hook is checked before it is listed and again once it is listed. The result is Safe, Warning or Failed, shown on the hook page, in Storefronts and the leaderboard, and written to a contract.

verified source>Slither + patterns>1,000 swaps on a fork>Safe / Warning / Failed>SecurityChecks onchainFailed: a high finding or a swap the hook made fail. Warning: a medium finding. Safe and Warning pass.

Before listing

In Build a v4 hook, step 5 runs on your deployed contract. The server reads your source with the pattern checker and the solc 0.8.26 warnings, then sends 1,000 swaps of every size, both directions and many senders through the hook, the way the hook stack calls it: onStack with the pool config you give, then beforeSwap, and afterSwap if you list it with afterSwap on, each with the hook's gas limit. It runs as one eth_call with the check harness placed at the hook stack's address, so nothing is sent. The List button stays off until the check passes.

Listed hooks

Every hour the keeper looks for listed hooks without a check on their current contract. For each one it pulls the verified source from Sourcify and runs Slither 0.11.6 and the pattern checker on it, then stacks the hook alone in a fresh TSLA/USDG pool on the real hook stack contract, on a local anvil fork of the chain, and sends 1,000 swaps through it from eight wallets over several simulated days. It counts swaps done, swaps the hook refused, swaps the hook made fail (failed runs), reverts that came from the pool itself, the fee range and the royalties paid. The verdict and the report go to the SecurityChecks contract, bound to the hook's contract address.

What it looks for

HighCallbacks (beforeSwap, afterSwap, onStack, unlockCallback and the PoolManager callbacks) that change state without checking msg.sender is the hook stack or the PoolManager; selfdestruct; delegatecall; a swap the hook made fail in the fuzz; Slither high findings.
MediumHooks that return deltas or a custom swap delta; state written after a low-level call with no reentrancy guard; owner or admin functions that send tokens or ETH out; access checked with tx.origin; swaps refused because the gas limit could not be met; Slither medium findings.
LowLoops over stored data in the swap path, raw storage writes in assembly, solc warnings, Slither low findings. Three Slither detectors that misfire on standard hook code are lowered to Low with the reason in the finding: weak-prng on block.timestamp used as a calendar, unused-return on a tuple read, strict equality not on a balance.

The verdict

Failed: any high finding or any failed swap. Warning: a medium finding. Safe: low and info findings only. Safe and Warning pass. A hook bounty can only be claimed with a hook that passes, and the escrow reads that from the contract, so a check on an older contract does not count.

First run

On 2026-10-28 every listed hook was checked: 9 v4 hooks, 9,000 swaps fuzzed, 0 failed runs, 0 high and 0 medium findings, 17 low. All 9 are Safe. The weekend gap guard refused 402 of its 1,000 swaps: the simulated days crossed a weekend, when it refuses swaps that push the price away from the feed.

API, MCP, SDK

curl https://v4market.com/api/security-check            # every listed hook
curl https://v4market.com/api/security-check?hook=5     # one hook
curl -X POST https://v4market.com/api/security-check -H 'content-type: application/json'   -d '{"address":"0x...","cfg":"0x","gasLimit":60000}'   # before listing

The MCP tool is security_check and the SDK method securityCheck(). Full reports are served at /security/hook-<id>.json.