Posted price · EthereumNot commissioned
0.00USDC

Anyone may take the seat at this figure, at any moment, without asking. The holder receives it, plus whatever is left of their deposit and everything they collected.

NO LAMP
Keepervacant — anyone may claim
Surcharge
DepositUSDC, drawn down every second
Runwaythe lamp is out
Standing termsdefaults
Base LP fee30.0 bps
Surcharge cap70.0 bps
Annual tax20%
Min deposit7d of tax
Raise delay1h 0m
Drop delaynone
Tax to the liquidity providers0 events
──────────────────────────────────────── no data

Cumulative, since the seat was first claimed. It does not accrue to a treasury and there is no address that can take it.

take the seat ↓ · how it works ↓

01

THE SEAT

What it costs to take, what it has paid out, and on what terms

No station on EthereumThe hook is written and tested but not deployed here. Everything on this page runs against whatever address NEXT_PUBLIC_HOOK_ADDRESS points at; the model below works without one.
Open the model
Tax to the LPs0 events
──────────────────────────────────────── no data

Cumulative. It does not accrue to a treasury; there is no address that can take it.

Surcharge collectedcumulative
──────────────────────────────────────── no data

What keepers have taken from swappers since the seat was first claimed.

Last eventsall →

Nothing on the wire yet.

02

THE WIRE

Every event the contract has emitted, raw and unindexed

Wire · Ethereum

ACTIVITY

Every event the contract has ever emitted, newest first, read straight from the chain. Nothing here is indexed by a server — it is one pass of getLogs, folded in the browser.

On record0
Log0 shown

No station on EthereumThe wire opens when a seat is commissioned here.

03

THE LOGBOOK

The same log, folded into one row per tenure

Register · Ethereum

LOGBOOK

One row per tenure, folded out of the event log. Every hand that has held the seat, what it cost them, and how it ended.

Tenures0
Lapses0
Tax to the LPs0.00USDC, across every tenure
Taken by keepers0.00USDC, from swappers
Longest tenure──────────────────────────── no data
Tenuresnewest first

No station on EthereumThe register opens the moment a seat is commissioned here, and every hand that holds it after that writes itself in.

Tax paid went to the pool’s liquidity providers. Collected came out of swappers. A tenure with a negative net was paying for the privilege of holding the seat.

See the raw wire →
04

THE MODEL

The contract's own arithmetic, run locally against terms you choose

Model · no transaction, no wallet

SIMULATE A TENURE

The same arithmetic the contract runs, in the browser. Nothing here touches the chain — it reads the live terms if a seat exists and falls back to the deployment defaults otherwise.

Your terms
Tax per day5.4820% a year on your posted price
You take per day14,000.0070 bps of 2,000,000 USDC
Net per day13,994.52the seat pays for itself
Runway91d 6h████████████
Break-even volume783USDC a day, at 70 bps
Annual tax2,000.00what a full year at this price costs you
Deposit over 30 daysfunded
██████▇▇▇▇▇▇▇▇▆▆▆▆▆▆▆▆▅▅▅▅▅▅▅▅▅▄▄▄▄▄▄▄▄▃▃▃▃▃▃▃▃▂▂▂▂▂▂▂▂▁▁▁▁▁

Assuming you withdraw what you collect rather than recycling it into the deposit. Anyone — including a trader who likes your fee — may top it up at any time.

05

THE CONTROLS

What the keeper can do, and what nobody can do

Controls · Ethereum

KEEPER

No station on Ethereum.

OFFLINE
Surchargeready

Every swap pays the pool bps whatever you do. Your surcharge rides on top and is paid by the swapper — it never comes out of the LP fee.

In force
To the pool
Against the cap░░░░░░░░░░
Price

Raising takes one hour to come into force. Lowering is immediate. Until a raise matures the seat still sells at the old price — that is what stops a keeper outrunning a buyer.

Posted
Pending raisenone
Drop delaynone
Deposit

The deposit pays the tax second by second. When it empties the lamp goes out and anyone may claim the seat. Anyone may top it up — including a trader who likes the fee you post.

Remaining
Runway
Annual tax
Claimable0.00 USDC

Surcharge you collected, proceeds from being bought out, and any deposit refunded to you. Past keepers can withdraw forever — there is no window to miss.

Owed to 0.00 USDC

There is no admin. If your deposit runs out the seat goes to whoever claims it next, and anyone can call poke to settle the tax and put the lamp out. Everything on this screen is also a command: type help in the prompt below.

06

THE MECHANISM

How the seat works, what it guarantees, and where it is weak

What this is

A Uniswap v4 hook in which the right to levy a surcharge on every swap of one pool is a single seat, held under a Harberger tax.

Its holder sets the surcharge inside a hardcoded cap and collects it. They declare the price at which the seat may be taken from them. They pay a continuous tax on that self-declared price out of a deposit. And they can be bought out by anyone, without permission, at the price they declared.

Post the price too low and you are relieved immediately. Post it too high and the tax eats your deposit. The only comfortable price is an honest one — that is the whole mechanism, and it is the reason there is no auction and no governance.

Lifecycle
  1. 01

    Claim claimSeat(price, deposit, surcharge)

    The seat starts extinguished. Anyone may take it by posting a price and funding at least seven days of tax on that price. No auction, no whitelist, no queue.

  2. 02

    Levy beforeSwap

    Every swap pays the pool its base fee, and the keeper takes their surcharge on top. The surcharge comes out of the swapper, never out of the LP fee.

  3. 03

    Pay poke()

    The tax runs continuously against the posted price and is drawn from the deposit. It is donated to the pool's liquidity providers — not to a treasury, not to a deployer.

  4. 04

    Be relieved buyout(price, deposit, surcharge)

    Anyone may take the seat at the price its holder posted, at any moment. The outgoing keeper is credited the price, the rest of their deposit, and everything they collected.

  5. 05

    Or lapse SeatLapsed

    If the deposit empties, the lamp goes out. The surcharge drops to zero, the remainder goes to the LPs, and the seat is claimable by anyone again.

Command linepress /

Docked at the bottom of the screen. Every control on this page is also a command, and both call exactly the same contract function.

buy <price> <deposit> <bps>
take the seat at the posted price
claim <price> <deposit> <bps>
take an extinguished seat
price <value>
set your price — raises are delayed, drops are not
surcharge <bps>
set your cut of each swap
topup <amount>
add to the deposit; anyone may, not only the keeper
poke
settle the tax — may put the lamp out
withdraw
take everything owed to you
go <section>
jump to a section of this page
How the data gets hereno server

Everything on this page is derived in your browser from a single getLogs pass over the contract’s whole history, plus a handful of view calls. There is no indexer, no database, no backend, and nothing is cached anywhere you cannot inspect.

The simulator runs the contract’s own arithmetic locally and never touches the chain at all.

KEEPER::SEATOne seat. No owner. Every parameter immutable. The tax goes to the liquidity providers.↑ top
>