An onchain access restriction powered by Uniswap V4.
THE CASE
BLACKLIST is a Uniswap V4 Hook that restricts selling until a wallet clears its blacklist status.
The restriction is enforced at the pool, not at the token. Every swap passes through the hook before it settles.
- 01 Every wallet is restricted on first contact.
- 02 Clearance is granted by the contract, not by an operator.
- 03 The ETH sent to unlock is returned in the same transaction.
- 04 The token itself is a plain ERC-20 with no privileged functions.
THE HOOK
The restriction is not a rule applied to a wallet. It is the state every wallet is already in.
EVERY WALLET STARTS RESTRICTED.
- 01
BLACKLISTED
Default state, written nowhere. The mapping returns false for every address that has never unlocked, so the hook reverts any sell with Blacklisted().
- 02
SEND ETH TO THE HOOK
There is no unlock function to call. A plain transfer of any non-zero amount to the hook address is the request.
- 03
RECEIVE() FIRES
The hook marks the sender unlocked before it touches ETH again — state first, transfer second.
- 04
ETH RETURNED
The same call sends 100% of it straight back. If the refund fails the whole transaction reverts, so the deposit can never be stranded.
- 05
WALLET CLEARED
isUnlocked is now true for that address, permanently and publicly readable. No operator, no allowlist, no review.
- 06
SELL ACCESS ENABLED
Sells settle from then on, taxed 3–10% by the running two-hour volume.
The sell check looks at the transaction origin, not the caller, so routers and aggregators pass straight through. Unlock from the wallet that will actually sign the sell — clearing a smart-contract wallet does not clear the EOA behind it.
The hook acts on a single authorised pool, fixed once by setPool. Any other pool routed through it is ignored rather than taxed.
THE BLACKLIST
A live record of restricted subjects.
| ID | WALLET | STATUS | BLOCK |
|---|
The register is written by the hook. Clearance cannot be revoked, granted by an operator, or purchased.
REQUEST CLEARANCE
Paste a wallet address to read its restriction straight from the hook. No connection, no signature, no permission asked.
Enter the wallet you want to check. The archive reads isUnlocked straight from the hook — nothing is signed, and no wallet connection is requested at any point.
The hook address is not yet disclosed in this build. The lookup runs against a local simulation so the mechanism can be examined; no transaction is broadcast.
INCIDENT LOG
Every interaction with the pool is recorded as it settles.
- NO INCIDENTS MATCH THIS FILTER
A blocked sell emits no event — the hook reverts before the swap settles. Those rows are reconstructed from failed transactions, not from logs.
THE VAULT
Qualifying buys can trigger a lottery event. The reserve pays out from the hook, not from the treasury.
- LOTTERY CHANCE
- 3%
- MINIMUM BUY
- 0.05 ETH
- CURRENT PAYOUTMIN(5% OF RESERVE, 0.05 ETH)
- 0.0000 ETH
- PAYOUT CEILING
- 0.05 ETH
A buy at or above the minimum enters the draw. A win pays 5% of whatever the reserve holds at that moment, capped at 0.05 ETH, sent in the same transaction as the swap. At the current balance that is 0.0000 ETH — the reserve is still below the level where the cap binds.
SELL RESTRICTION REPORT
Tax is a function of one variable: how much ETH the wallet has already taken out of the pool inside a rolling two-hour window.
Flat, taken from the ETH entering the pool, on every buy. It is not tiered and it does not depend on history. The proceeds fund the vault.
| TIER | CUMULATIVE ETH OUT | SELL TAX |
|---|---|---|
| TIER I | 0.00 — 0.05 ETH | 3% |
| TIER II | 0.05 — 0.10 ETH | 5% |
| TIER III | 0.10 ETH AND ABOVE | 10% |
FINDING 01Splitting your sells does not reset the counter. The hook accumulates every sell into soldInWindow and taxes the running total, so four sells of 0.03 ETH reach the same tier as one of 0.12 ETH.
FINDING 02The window is not a fixed clock. It opens on your first sell and runs for two hours from there; the next sell after it expires starts a new window at zero.
EVIDENCE
Material held in connection with Case File 0001.
PLATE-E1
EVIDENCE 001THE HOOKPLATE-E2
EVIDENCE 002THE BLACKLISTPLATE-E3
EVIDENCE 003THE VAULTPLATE-E4
EVIDENCE 004CLEARANCEPLATE-E5
EVIDENCE 005SURVEILLANCEPLATE-E6
EVIDENCE 006THE ARCHIVE
CHAIN EVIDENCE
The deployed record. The hook publishes its own token, vault and pool, so everything below resolves from a single address.
- HOOKUniswap V4 Hook — sell gate, taxes, lotteryUNDISCLOSEDPENDING DEPLOYMENT
- TOKENBlacklist v4 (BLACKLIST) — plain ERC-20UNDISCLOSEDPENDING DEPLOYMENT
- VAULTETH reserve — taxes in, lottery outUNDISCLOSEDPENDING DEPLOYMENT
- POOLUniswap V4 PoolManager — ETH / BLACKLIST
The deployer can only point the hook at its pool once, and can never change it afterwards. Nothing in the contracts can pause trading, mint supply, or alter a wallet’s clearance. Network: ETHEREUM MAINNET.