Skip to content

chore: allowlist LONGER hook on Monad - #1413

Open
whatnotbot wants to merge 1 commit into
Uniswap:mainfrom
whatnotbot:allowlist-longer-hook-monad
Open

chore: allowlist LONGER hook on Monad#1413
whatnotbot wants to merge 1 commit into
Uniswap:mainfrom
whatnotbot:allowlist-longer-hook-monad

Conversation

@whatnotbot

Copy link
Copy Markdown

Allowlists the LONGER launchpad hook on Monad (chainId 143).

Hook 0x07114b9c40d99fee1672cdce8d3cc6a64d409088
Chain Monad, 143
Permissions AFTER_INITIALIZE, BEFORE_SWAP, BEFORE_SWAP_RETURNS_DELTA (address & 0x3FFF == 0x1088)
Example pool 0x6a9510732404a6693d5a0be38dc71cc601b4ea1d9519c78eb24ca095498d18f3 (X / aNVDA)

What the hook does

LONGER launches community tokens paired against tokenized equities (Anchored Finance aNVDA and similar). Each launch mints a fixed supply into a single-sided concentrated-liquidity position, so a pool is live and tradeable from the launch transaction with no seed capital in the quote asset.

The hook takes a protocol fee in beforeSwap as a BeforeSwapDelta on the specified currency, settled in the same call via poolManager.mint of ERC-6909 claims. It does not modify the pool's LP fee: the pool is created with lpFee = 0 and the hook never calls updateDynamicLPFee, so swap pricing through the pool is standard constant-product within the position's range plus a fixed 3.00% hook fee. Fees decay linearly from 80% to 3.00% over the first 10 seconds after initialization as an anti-snipe measure, then remain constant.

Because BEFORE_SWAP_RETURNS_DELTA is set, Hook.hasSwapPermissions is true and the pool is not eligible via the non-allowlisted path in v4HooksPoolsFiltering.ts.

Verification on Monad mainnet

  • Pool initialized and position minted in one transaction: 0xa17c8bcb…15e9
  • Swap via UniversalRouter 0x0D97Dc33264bfC1c226207428A79b26757fb9dc3: 0xae50210a…a285. V4Quoter.quoteExactInputSingle predicted 607062210673591176553910 out; the fill returned the same value.
  • Third-party aggregator fill through the same pool: 0xd78fddfb…fad1

The quoter agreeing with execution to the wei is the property that matters for routing: the hook's fee function is a single shared code path used by both the preview and the swap, so a quote cannot disagree with a fill.

Notes

The address constant is lower-cased per the convention noted at the top of hooksAddressesAllowlist.ts. prettier --check passes on the modified file.

@graphite-app
graphite-app Bot requested review from a team and jsy1218 September 8, 2026 19:14
@graphite-app

graphite-app Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Graphite Automations

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

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

@whatnotbot

Copy link
Copy Markdown
Author

@jsy1218 sorry to ping directly — this is a one-line allowlist addition for a Uniswap v4 hook on Monad, CI is
green. Happy to add anything you need.

For context: the hook takes a protocol fee via beforeSwap returning a BeforeSwapDelta, so hasSwapPermissions is
true and it can't route through the non-allowlisted path. Pool is live with real volume and the Quoter's prediction
matches fills exactly.

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