Getting started
What is STEERING
STEERING is a token with one Uniswap v4 pool, ETH/STEERING, and a hook that prices every trade by a rubric taken from the Order of Steering in Vitalik Buterin's novel Snowmoon. The rubric has three lines (base, power and automation), and every trade gets a receipt listing them.
The fees are paid in ETH: a fixed 0.4% to the owner, a fixed 0.3% to a graph of public goods, and everything else to the people holding STEERING.
Getting started
Trading
STEERING trades in its pool from the Uniswap app, any aggregator or any router. Nothing special is needed: no hook data, no allow-list. Every swap pays its rubric on its ETH side, in all four shapes: buying or selling, with the amount in or the amount out fixed.
The board shows what your trade would pay before you make it.
Getting started
Reading a receipt
Each trade emits Receipt(wallet, buy, eth, base, power, automation, fee). The three lines are in millionths of the ETH side (10,000 is 1%); fee is what was paid, in wei. The board lists the latest receipts as they land.
Getting started
Claim your ETH
Holding STEERING earns ETH from the moment you hold it. Call claim(to) on the token, or press Claim on the board. You keep what you earned when you sell; you earn nothing from before you bought.
Getting started
Fund the graph
The graph's ETH waits in the hook, node by node. Anyone may call fund(i) to send node i what it is owed. The board has a button for each.
The rubric
Base
1% of the ETH side of every trade. It is the only line most trades ever pay.
The rubric
Power
The pool's virtual ETH reserve is its in-range liquidity divided by the square root of its price: the ETH it would take to buy every token on the current curve. Power compares a wallet's ETH in this block, summed over all its trades in the block, with that reserve:
- under 1%: nothing (a price move of about 2%);
- 1–3%: +1% (about 6%);
- 3–6%: +2% (about 12%);
- above 6%: +3%.
Summing across the block means slicing a trade inside a block doesn't hide it. The reserve is read as the trade finds it.
The rubric
Automation
A wallet that trades in the opposite direction to its own last trade pays:
- +10% if its last trade was in the same block, which is what sandwiches and same-block round trips look like;
- +2% if its last trade was within one longhour (720 blocks, about 2.4 hours).
Trading in the same direction is never automation, and a turnaround after a longhour is just a trade.
The rubric
What a wallet is
The rubric reads the transaction's signer (tx.origin), so it works through any router. It prices the trade and decides nothing else: no permission, no list. A wallet can be split, and a split wallet pays the base like everyone; its parts still pay for the power each one takes in a block.
Where it goes
The split
Of every trade's ETH side: 0.4% to the owner, 0.3% to the graph, and the rest of the fee to the holders. That is 0.3% of the base, plus every power and automation charge. The owner's part never grows with a surcharge.
Where it goes
Holders and the cap
The holders' part is shared at once, through an accumulator in the token, among every wallet in proportion to its STEERING, counted up to 1,000,000 STEERING a wallet. A whale earns like a person. Splitting a whale into many wallets only earns what its tokens would have earned uncapped; it never earns more. The pool, the hook and the burn address never earn.
Where it goes
Graph Funding
Up to eight recipients, each with a weight out of 10,000 and a label, were written into the hook when it was deployed and can never change. Each trade's 0.3% is split among them by weight. The Contracts tab lists them.
Where it goes
The launch position
The whole supply went into the pool in one position, one-sided, below the opening price, with no ETH in. The Uniswap app minted that position's NFT to the owner. The Contracts tab shows who holds it, read live from Uniswap's PositionManager.
Reference
Formulas
reserve L × 2⁹⁶ / √P the pool's virtual ETH reserve
take (wallet's ETH this block) / reserve
power take < 1% → 0 · < 3% → 1% · < 6% → 2% · else 3%
automation opposite to last trade: same block → 10% · within 720 blocks → 2%
total min(1% + power + automation, 15%)
fee ETH side × total
owner ETH side × 0.4%
graph ETH side × 0.3%, node i gets × weightᵢ / 10 000
holders fee − owner − graph
earning min(balance, 1 000 000 STEERING)
Reference
ABI
// hook
quote(address wallet, bool buy, uint256 eth) view returns (base, power, automation, total)
reserveEth() view returns (uint256)
fund(uint256 node) collect()
node(uint256) view returns (address to, uint32 weight, string label)
nodeOwed(uint256) / nodePaid(uint256) / nodeCount()
receipts() volume() fees() basePaid() powerPaid() automationPaid() ownerOwed() holderPot()
// token
claim(address to) returns (uint256)
owed(address) view returns (uint256)
EARN_CAP() view returns (uint256) // 1,000,000 STEERING
transfer, transferFrom, approve, balanceOf, totalSupply, allowance
Reference
Events and errors
Receipt(wallet, buy, eth, base, power, automation, fee) // hook, every trade
Funded(node, to, eth) Collected(eth) Launched(poolId, openTick)
Shared(eth, earning, accPerToken) Claimed(holder, to, eth) // token
WrongPool · NotOwner a pool the hook refuses to bind
NotToken only the token pays holders
Help
FAQ
Is there a sniper tax or a launch fee?
No. The rubric is the same from the first trade to the last. Large trades pay for their power whenever they happen.
Why does my trade pay more than 1%?
Either it takes more than 1% of the pool's reserve in this block, or it turns around your own last trade within a longhour. The board shows the receipt before you trade.
Can anyone change the rubric?
No. There is no setter, no pause and no upgrade in either contract.
Help
Risks
- Not audited. The contracts are tested on a fork of Ethereum mainnet against the live Uniswap contracts, including a fuzz of every action in random order, 128,000 calls per property. That is not an audit.
- The rubric is visible to everyone, including those who route around it. Another pool without this hook pays none of it.
- The launch position is held by the owner's wallet, as the Contracts tab shows.
- A fan project. Not affiliated with the novel's author.