/ quench
Build the hook.
Then quench it.
Stack up to five swap rules, launch a fixed-supply token behind them, and the rules set at the moment the pool opens. There is no owner, no upgrade path and no pause. Not even us.
on a 0.1 ETH buy into 10 ETH
- fee
- 1.347%guard open
- taken out
- 0.003000 ETH3%
- burned
- 5%of the output
- gas
- ~120,807
Computed here, by the same arithmetic the hook runs. Nothing is deployed and nothing is read from the chain.
/ the five blocks
Rules that run inside the swap
Each block is a branch in one immutable Uniswap v4 hook. A block is off when its parameters are zero, so what a token does is readable from the chain before anyone trades it. The numbers are names — Auto Burn is 03 and runs last, because it works on an output the swap has not produced yet.
Caps each buy at a share of the in-range reserve and adds a surcharge, for a fixed number of blocks after the pool opens.
- cap on a buy
- 0.5000 ETH
- this buy
- allowed
- surcharge
- +1%
The LP fee rises with how deep the trade bites into liquidity. No oracle, no keeper — it is arithmetic on the reserve.
- at this depth
- 0.347%
- floor
- 0.3%
- ceiling
- 5%, reached at 100% depth
A share of the tokens bought goes to the dead address inside the same swap. The pool's reserves are untouched; only the buyer receives less.
- on this buy
- 5% of the tokens out
- where
- 0x…dEaD, inside the same swap
- the pool's reserves
- untouched — only your output shrinks
A share of the ETH is donated to whoever holds in-range liquidity, before the swap sees it.
- to in-range LPs
- 0.002000 ETH
- to the pot
- 0.001000 ETH
- reaches the swap
- 0.097000 ETH
A share of each qualifying buy accumulates, and every Nth buy takes it. The counter advances at most once per block and is public.
No launched token has the pot armed, so there is no counter to show. This card fills itself from the vault when one does — it is not illustrated.
/ the path
From an argument to a rule
Six stages, and only the first two are yours. After the transaction that opens the pool, nothing you or we do changes what the hook charges.
Nothing on chain yet. The config is a struct in your browser.
The launchpad stages the config and initializes the pool in one transaction. This is the last moment it can be changed.
The hook records the block. Anti-snipe starts counting from here, not from the launch.
Buys are capped against the in-range reserve and pay the surcharge. Surge is loudest here, because a thin new pool is easy to move.
The cap and the surcharge stop. Surge, burn, LP rewards and the pot carry on for as long as the pool exists.
Nothing further happens to the rules. There is no function that would change them and no address that could call one.
/ why robinhood chain
Rules this fine need cheap blocks
Blocks are about 0.1s
An anti-snipe window measured in blocks is measured in seconds here, not minutes. A 300-block guard is half a minute — long enough to matter to a bot, short enough not to punish a person.
Gas is nearly free
The whole system — router, launchpad, hook, vault, curve — cost 0.00283 ETH to deploy. The five blocks add tens of thousands of gas to a buy, which is a rounding error here and would be a design constraint on mainnet.
Logs answer fast
A filtered query over a day of blocks comes back in under half a second, with no range limit. That is why this site has no indexer and no database: every figure on it is read from the chain when you ask for it.
/ check it yourself
The claim and the way to test it
Not “the owner has renounced” and not “the keys are in a multisig”. The source has no owner, no admin, no pause, no proxy and no upgrade path, because no such function was written. Run this against the source the addresses beside it were compiled from:
grep -rniE 'owner|upgrade|proxy|delegatecall|selfdestruct|pause|admin' src/It prints nothing. That is the claim.
The hook has exactly one non-view function of its own — stageConfig — and it reverts for every caller but the launchpad. It writes to transient storage that is cleared when it is read, inside the transaction that opens the pool. After that transaction there is no path to the config at all.
- Launchpad0x5eE09DF35b6C3503D8fAc6A2863aFd4edBC73a6c
Mints the token, opens the pool, holds the LP position.
- BlockHook0x011a41285314efFE83de63404Aa759a85472E8Cc
The five rules. One contract, every pool.
- PotVault0x02007750325A4311043CFDEb67Fce87eBe10A380
Holds the pots. Funded and paid by the hook and nothing else.
- BoundedRouter0xD689c128506611e05bf72212eA94B7Df4f9C7C17
The only way in and out of a pool, with slippage and a deadline.
- BondingCurve0xc149D722195b4915aBf2a64cbBe0e54205119D66
The implementation each curve launch is cloned from.
- PoolManager0x8366a39CC670B4001A1121B8F6A443A643e40951
Uniswap v4. Not ours.
Source verification on the explorer is still pending — its API sits behind a challenge that refuses automated submissions, so it has to be uploaded by hand. Until it is, the addresses are checkable and the bytecode is not.
- The contracts have not been audited. They have tests, a differential check against this site’s own arithmetic, and no audit. Those are not the same thing.
- The pot is raced. It is won on a public counter, not a random one. Anyone reading the chain can see which buy takes it and bid to be that buy.
- The hook charges on exact-input buys only. Sells and exact-output buys pay the LP fee and nothing else — no burn, no pot, no donation.
- Immutable cuts both ways. A config that turns out to be wrong stays wrong. There is no one to appeal to, which is the point and also the risk.
None of this is financial advice, and none of it is a prediction.