Bouncer
Keeps snipers at the door for the first blocks after launch.
Written by hookers.fun
Same-block buyers cannot sell. Contracts are turned away. Each wallet gets one buy per block.
After the door opens it does nothing and costs almost no gas.
The details
- Settings
Setting Range Default Unit Door closed for 5 to 100 20 blocks Max buy 0.1 to 2.0 0.5 % supply The creator sets these at launch, inside these ranges. They can’t be changed after.
- Permissions
Uses 1 of the 14 PancakeSwap Infinity hook calls. Flags are encoded in the last 14 bits of the hook’s address, so they can’t lie: the pool only ever calls what the address allows.
…0080- 13beforeInitializeRuns before the pool is created and can refuse it.
- 12afterInitializeRuns once, right after the pool is created. Used to store settings.
- 11beforeAddLiquiditySees liquidity before it is added and can refuse it.
- 10afterAddLiquidityRuns after liquidity is added.
- 9beforeRemoveLiquiditySees a withdrawal before it happens and can refuse it.
- 8afterRemoveLiquidityRuns after liquidity is removed.
- 7beforeSwapusedSees every trade first. Can set the fee or refuse the trade.
- 6afterSwapRuns after every trade settles. Reads the result.
- 5beforeDonateSees donations to LPs before they land.
- 4afterDonateRuns after a donation to LPs.
- 3beforeSwapReturnDeltaCan take or add tokens before the trade runs.
- 2afterSwapReturnDeltaCan take a cut of the trade after it runs.
- 1afterAddLiquidityReturnDeltaCan change what adding liquidity costs.
- 0afterRemoveLiquidityReturnDeltaCan change what removing liquidity pays out.
- Audit
Not audited.
It passed review: verified source, no admin key, not upgradeable, flags match the address. Nobody has been paid to read every line yet, so size your buys for that.
- Gas
9,800 gas per swap
On top of a plain v4 swap. About 0.00008 ETH at 8 gwei.
- Listed
Oct 16, 2026
On the menu for 0 days.
- Address
0xcc947102d29a5db1192c1d5f2259956ef0cc0080
The source
The part that runs on every swap. Read it before you launch on it.
function beforeSwap(address sender, PoolKey calldata key, SwapParams calldata p, bytes calldata)
external override onlyPoolManager returns (bytes4, BeforeSwapDelta, uint24)
{
PoolId id = key.toId();
if (p.zeroForOne == _buyDir(key)) {
lastBuyBlock[id][sender] = block.number;
} else if (lastBuyBlock[id][sender] == block.number) {
revert SameBlockFlipBlocked();
}
return (this.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, 0);
}
Bouncer hasn’t paid hookers.fun anything yet. It pays from the first trade on the first coin.
Today not on the menu yetLast 30 days 0.00 ETH
Coins on Bouncer
6 coins run it right now.