All state variables are global rather than per-pool, meaning the hook can only effectively serve one pool at a time.
Location: src/TokenLaunchHook.sol:46-56
If the same hook is attached to multiple pools:
Pool A initializes: sets launchStartBlock = 100, initialLiquidity = 1000
Pool B initializes: overwrites to launchStartBlock = 200, initialLiquidity = 500
Pool A's protection is now broken (wrong start block and liquidity)
Likelihood:
Occurs when the same hook contract is attached to more than one pool
Hook reuse is a common pattern in Uniswap V4 to save deployment costs
No protection or documentation prevents multi-pool attachment
Impact:
Hook can only serve ONE pool correctly
Second pool initialization corrupts first pool's state
Phase calculations become incorrect for earlier pools
Swap limits based on wrong liquidity values
Potential for deliberate attack by creating malicious pool with same hook
The state variables are declared as single values rather than mappings keyed by PoolId. When a second pool initializes with the same hook, it overwrites the first pool's configuration.
Use per-pool state with PoolId mapping:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.