Action Layer

Uniswap v4 hook flags 0x1040 nothing deployed

The price does not move itself

An agent can decide anything
and move nothing.

It can work out exactly where a price should be. Instantly, for free, a thousand times before the next block. It cannot move it there. Moving a price is not a conclusion — it is capital put at risk across a spread, in public, where being wrong costs money. No amount of thinking substitutes for it.

So the agent hires. What it is buying is legwork.

A leg: the price starts at one tick, crosses a posted target, and ends at another. The trader who carried it is recorded. TARGET pre post one leg · one storage word
Every swap that moves the tick writes one leg: (pre, post, runner, block). The job is done when the price is still past the target an hour later.

Nothing is deployed. No mainnet address, no testnet address, no audit, no liquidity. The contracts are written and tested; that is all. Every number on this site is illustrative and every address field is empty on purpose.

The wall agents hit

Thinking is free now. Carrying still costs.

An AI agent can read every book at once, price an asset in a millisecond, draft the trade, sign it and change its mind before the block closes. There is no scarcity left in any of that.

There is one thing it cannot do, and it is the only thing a market actually records. It cannot move a price.

An agent that has worked out exactly where the price ought to be is in precisely the position of an agent that has worked out exactly which apartment to rent: correct, certain, and unable to do the one remaining thing that matters, which is to physically go there.

So it hires somebody who is going that way. The old word for the part of a job that has to be done with your feet is legwork, and it is the only part of this one that is scarce.

AI agents can think, research, code, trade, make payments. But ask one to pick up a package, inspect a property, or physically show up somewhere and they hit a wall. Agents have brains. We're giving them hands.

Three contracts

One writes the record, one holds the money, one prints the receipt.

01

Dispatch

the hook

Does nothing to your swap. No fee, no delta, no rejection, no price impact. The price quoted is the price you get, and the measured cost is 28,411 gas more than an identical pool without it.

What it does is keep a record. On every swap that moves the tick it writes one leg: where the price was, where it ended up, who carried it, and when. Append-only. Nothing can rewrite or remove one.

02

Errands

the board

Anyone posts a job: get the price across tick T and leave it there. The poster escrows ACTION.

Nobody accepts an errand. There is no register, no queue, no assignment. It is complete when some leg took the price past the target and the price is still past it 300 blocks later — whoever carried it and whatever they were doing.

03

Waybill

the receipt

An ERC-721 minted to the runner on every completed errand, drawn entirely on-chain as SVG. It records the leg, the tick crossed, the distance carried and what the job paid.

A receipt, not a permission. Nothing reads it, nothing is gated on holding one, and the mint is wrapped in a try so it can never hold up a payment.

Crossing it is not the job. Leaving it there is.

An earlier version of this contract paid for a tick crossing. A crossing is an event, and events can be manufactured.

What a crossing bounty actually buys

In one transaction the price is pushed down past two targets and straight back up past a third, ending where it began. target target block n block n one transaction

Borrow, push the price down, push it straight back up, all in the same transaction. The legs in between satisfy every errand in the band — in both directions at once — and the price ends exactly where it started. The whole round trip costs twice the pool fee on a notional you keep. It is not a price move. It is a receipt for one.

1,950 of 3,000 posted tokens, drained in one transaction. That is the attack written as a test, run against the old design.

What this board buys instead

The price is carried up past the target and is still past it three hundred blocks later. target HOLD · 300 blocks block n block n+300

An errand is not completed by arriving. It is completed by arriving and still being there 300 blocks later — about an hour. That is the difference between paying for a state and paying for an event, and it is the only version of this idea that cannot be faked inside a transaction: to hold a price for an hour you have to carry real inventory for an hour, in public, where being wrong costs money.

The same attack now pays zero. Tick 167,067 → 167,055, both crossings recorded, nothing earned.

The twelve ticks between 167,067 and 167,055 are the round trip's only real cost: it paid the pool fee twice. The crossings still happened — that was never the problem. What no longer happens is getting paid for them. and watch it earn nothing.

You can be paid for work you didn’t know you were doing.

A trader buys because they wanted to buy, takes the price across the tick on the way through, holds their position because they meant to hold it, and the money is theirs whether or not they have ever heard of the contract. That is the design, not a side effect.

What it does to your swap

The honest answer is nothing, and that is measurable.

Fee taken by the hooknone
Delta returnedzero
Swaps it can refusenone
Gas, measured on a fork79,709
The same pool, no hook51,298
Difference+28,411

Both callbacks run after the thing they observe, so neither can refuse anything. There is no beforeSwap and no returned delta, so the trade is untouched. There is no beforeInitialize, so the Uniswap app can open the pool. There are no liquidity gates, so a provider can always leave.

What the pool gets, and what it does not

A draft of this skimmed a few percent off every bounty for the liquidity providers. It was deleted, and the reason is worth the space.

claim may be called by anyone at any moment, so the caller chooses the instant the donation lands. A bot that mints a tight-range position, calls the claim, and burns it again takes the whole tip having provided liquidity for exactly one block.

A payment whose recipient is chosen by whoever calls the function is not a payment to liquidity providers. It is a bounty on calling the function.

So the board does not tip the pool. It sends it business: the trade that carries the price pays the ordinary swap fee like any other trade, to whoever was actually there to fill it — which is the only payment that can't be gamed by timing, because it is settled by the pool at the moment of the trade.

The runner receives the whole bounty. There is no skim anywhere in this system.

Specification

Everything fixed at deployment, and nothing after it.

TokenAction Layer / ACTION
Supply1,000,000,000
Decimals18
Token surfaceERC-20 + EIP-2612 permit + burn
Owner, mint, tax, pausenone of them exist
Hook flags0x1040 — afterInitialize | afterSwap
HoldHOLD = 300 blocks (~1 hour)
Warning before a reclaimGRACE = 7,200 blocks (~1 day)
Minimum errand lifeMIN_LIFE = 2 × HOLD = 600 blocks
Skim on a bounty0%
Leg record256 bits, one storage word
Privileged actionsone: Waybill.bind(), once, by the deployer
Deployed atnowhere

The honest costs of all of this are listed in full under . They are not softened anywhere on this site.