HOOKED
openwallet

an erc-20 lottery on uniswap v4 · buys earn lootbox tickets · prizes from a 3% swap-tax vault

live · ethereum3% swap taxprevrandao + 3-block reveal
current jackpot
live · ethereum
0.01ETH
pool total
0.0334 ETH
paid out
0 ETH
tickets out
30
opened
0
buy 25 / 10075 until guaranteed jackpot
buy hooked →

still scrolling for the next 100x?

Buy HOOKED on Uniswap and the v4 hook drops lootbox tickets in your wallet automatically. Open them whenever you want.

buy hooked →look up an address
how does this work? ↓

how it works

four moves, one randomness oracle (the validator), zero off-chain plumbing

01
buy

Swap ETH → HOOKED on the v4 pool. The hook takes 3% of input ETH up front. Buys above 0.01 ETH earn tickets — 1 / 2 / 4 / 8 across size tiers, written to your wallet in the same tx.

02
boost

Your batch carries 0–4 boost flag bits derived from buy size, recent sell streak, pool price vs. its 10-min snapshot, and the daily buy counter. Flags are tier upgrades, not roll modifiers.

03
open

Call openTickets(N) to burn N tickets. The contract walks your batches oldest-first, ORs their flags into a single open request, and schedules the reveal for block.number + 3.

04
reveal

After 3 blocks, anyone can call revealTickets(openId). The reveal block's prevrandao seeds a per-ticket keccak rng, each ticket rolls a tier, boosts apply, prizes pay out.

the four boosts

flags are bit-OR-ed across all batches you consume in one open · stack 3 → legendary · stack 4 → jackpot

whale
boost flag · 0x01
buy ≥ 0.5 ETH
+1 tier on every ticket in the batch
+1
dip
boost flag · 0x02
buy 1% below the 10-min snapshot
+1 tier on every ticket in the batch
+1
revenge
boost flag · 0x04
buy after 3+ sells in a row
+1 tier on every ticket in the batch
+1
jackpot
boost flag · 0x08
every 100th buy of the day
forces a jackpot roll on every ticket
max

the five boxes

probabilities are before boost upgrades · ETH share = % of vault, capped per tier · plus a flat HOOKED amount

common
60.0% chance before boosts
0.10% of vault, cap 0.005 ETH
+ flat 0.5 HOOKED token prize
60.0%
rare
25.0% chance before boosts
0.50% of vault, cap 0.05 ETH
+ flat 2 HOOKED token prize
25.0%
epic
10.0% chance before boosts
2.00% of vault, cap 0.5 ETH
+ flat 10 HOOKED token prize
10.0%
legendary
4.0% chance before boosts
8.00% of vault, cap 5 ETH
+ flat 50 HOOKED token prize
4.0%
jackpot
1.0% chance before boosts
30.00% of vault, cap 50 ETH
+ flat 250 HOOKED token prize
1.0%

randomness

fully on-chain · no oracles · no off-chain dependencies

When you call openTickets, the contract commits to a future block. When you call revealTickets(openId)three blocks later, it mixes that block's prevrandao with the openId and your wallet to seed a keccak rng per ticket:

base = keccak256(prevrandao, openId, wallet)
ticket[i].rng = keccak256(base, i)

The validator who'll propose the reveal block isn't known when you open. The 3-block delay locks your commitment in before anyone can choose what comes next.

Anyone can call reveal once the delay passes — competing reveal bots are fine, the prize always routes to the original wallet. Every input to the roll is public on chain, every byte of the formula is in the contract.

recent action

last 20 events · refreshes every 30s

tickets
59m ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0xFEc5…4883
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+2 tickets
awarded to 0x4313…b27f
dip
+2
tickets
1h ago · ticket award
+1 ticket
awarded to 0x66a9…A8Af
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+2 tickets
awarded to 0xFEc5…4883
dip
+2
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1
tickets
1h ago · ticket award
+1 ticket
awarded to 0x4313…b27f
dip
+1