Skip to content

Add GlueHook address to the hooks allowlist (11 chains, one address) - #1408

Open
lalilulel0x wants to merge 3 commits into
Uniswap:mainfrom
lalilulel0x:add-gluehook-allowlist
Open

Add GlueHook address to the hooks allowlist (11 chains, one address)#1408
lalilulel0x wants to merge 3 commits into
Uniswap:mainfrom
lalilulel0x:add-gluehook-allowlist

Conversation

@lalilulel0x

@lalilulel0x lalilulel0x commented Aug 7, 2026

Copy link
Copy Markdown

Summary

  • Adds GlueHook — a free, keyless, general-purpose buyback / sell-absorption / auto-compounding hook — to HOOKS_ADDRESSES_ALLOWLIST.
  • Hook address (identical on every chain, deployed via CREATE from a nonce-0 deployer): 0x0f41715dc432692b66a5adf8dcfef6ac407b20c8
  • Chains added (all where the hook is live AND present in ChainId): Mainnet, Optimism, Arbitrum, Polygon, BNB, Avalanche, Base, World Chain, Unichain, Soneium, X Layer (11). The hook is also deployed on MegaETH and Robinhood at the same address.

What is GlueHook?

GlueHook is a general-purpose Uniswap V4 hook — not a platform-specific one. Any project, DAO or community attaches it to its own pool permissionlessly and gets, natively on Uniswap:

  • Buyback pot — a permissionless per-pool treasury in the paired asset, fillable by anyone: the project, the community, a fee stream, or one-off donations.
  • Pump — on buys, the pot buys too, in the same flow at the pool's live price. Buy pressure compounds buy pressure.
  • Shield — on sells, the pot can absorb the sell: the seller receives the pool's exact output (fee and tick impact included), and the tokens go to the pot instead of dumping on the curve.
  • Burn cascade — tokens the pot buys are burned via the token's own burn(), else sent to 0xdEaD, else held forever inside the hook with a public per-asset counter. Deflation with proof.
  • Self-compounding LP — the hook's own LP position auto-harvests its fees (swap-triggered, no keeper) and splits them by the owner's config between autocompound, pot refuel, burn, and a recipient.

And it is infrastructure, not a product with privileged access:

  • General purpose — ONE deployment serves every pool on the chain, at the SAME address on all 13 mainnets.
  • Not upgradeable — no proxy, no upgrade path, no pause switch. The verified bytecode is final; what you review today is what runs forever.
  • No owner, no admin keys — the contract has no privileged role of any kind. Nobody (including its deployers) can change its behavior, censor a pool, or touch funds it holds.
  • Zero protocol fee — the hook takes nothing for itself. 100% of what flows through it goes to the pool's own program: pot, burn, autocompound, or the recipients each pool's owner configures.
  • Swaps can never be blocked — every hook action is fault-tolerant (try/catch); on any internal failure the hook no-ops and the swap settles exactly like a vanilla pool.

Safety properties relevant to routing

  • Swaps can never be blocked by the hook. Every hook action is wrapped in try/catch-style fault tolerance — on any internal failure the hook no-ops and the swap settles exactly like a vanilla pool. A misconfigured program cannot revert a route.
  • Sellers/buyers always settle at the pool's own math — no oracle, no external price input, no keeper. Nothing off-pool to manipulate or stall.
  • Not upgradeable — no proxy, no admin, no pause switch, no parameter Uniswap routing would need to track.
  • No custom swap data required — pools route with empty hookData; standard Universal Router flows work unmodified.
  • Hook flags (from the address bitmask 0x20C8): beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnsDelta.

Because the hook uses a delta flag, we have also submitted the Uniswap Labs hook routing allowlist form in parallel; this PR mirrors the precedent of other integrator submissions to this file.

Verification

  • Contract source verified on every chain in this PR, plus MegaETH and Robinhood — Etherscan family (Mainnet, Optimism, Arbitrum, Polygon, BNB, Base, World Chain, Unichain, MegaETH), Routescan (Avalanche), Blockscout (Soneium, Robinhood), OKLink (X Layer) and Sourcify. Examples: Mainnet, Base, Unichain, Arbitrum.
  • Because every chain is the same CREATE deployment at the same address, the runtime bytecode is identical across all of them once the per-chain PoolManager immutable is accounted for. Verified by masking the immutable offsets solc reports and comparing eth_getCode against the locally compiled artifact: the chain-independent code matches byte-for-byte on every chain, and the embedded PoolManager is the correct one for each.
  • Source and tests (Foundry unit + invariant suites): glue-finance/GlueHook
  • Docs covering every mechanism and guarantee: https://gluehook.trade/docs
  • Hook registry: the Ethereum entry is already merged into Uniswap/hooklist (hooks/ethereum/0x0f41715dc432692b66a5adf8dcfef6ac407b20c8.json, analyzed by the registry bot in hook: GlueHook (ethereum) hooklist#1283, which classified it upgradeable: false, requiresCustomSwapData: false, swapAccess: none). Submissions for the remaining chains are filed per chain and are all source-verified; they are waiting on a maintainer to re-apply the submission label, since the registry's analysis workflow only triggers on a label event. The Ethereum submission in the reference list above shows as closed because it duplicated the already-merged hook: GlueHook (ethereum) hooklist#1283, not because it was rejected.

Test plan

  • Confirm the address is lowercase and identical across all 11 chain entries
  • Verify pools with this hook appear in routing results on the added chains
  • Confirm no regressions in existing hook routing

Live metrics: activity, volume and TVL for GlueHook pools across all chains are tracked on a public Dune dashboard: https://dune.com/lalilulel0x0869/gluehook-live

@lalilulel0x
lalilulel0x force-pushed the add-gluehook-allowlist branch from d260276 to 3b5f90c Compare August 7, 2026 21:46
The comment used an em dash, which was the only non-ASCII byte in
hooksAddressesAllowlist.ts and made GitHub render the diff behind its
"hidden or bidirectional Unicode text" warning. Replaced with a colon so
the file stays ASCII-only like the rest of the allowlist comments.

Co-authored-by: Cursor <cursoragent@cursor.com>
@graphite-app
graphite-app Bot requested review from a team and jsy1218 August 19, 2026 14:16
@graphite-app

graphite-app Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Graphite Automations

"Request reviewers once CI passes on routing-api repo" took an action on this PR • (08/19/26)

3 reviewers were added and 1 assignee was added to this PR based on Siyu Jiang (See-You John)'s automation.

The hook was redeployed at 0x0F41715dc432692b66A5aDF8dCfef6Ac407b20c8. Keep it on the 11 ChainId networks V2 is live on; drop Celo, Zora, Blast, Monad and Tempo.
@lalilulel0x lalilulel0x changed the title Add GlueHook address to the hooks allowlist (16 chains, one address) Add GlueHook address to the hooks allowlist (11 chains, one address) Aug 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant