Discussion topic for EIP-8429
Repetition is underpriced. The k-th call into an opted-in contract within a block pays G_REF * k^2 extra gas.
Half of that is deposited as stake with no withdrawer. Half is staked where the opted-in contract points.
The block producer gets nothing, so nobody has a reason to farm it.
Update Log
- 2026-09-28: initial draft, PR 12384
- 2026-09-28: two ratchets, fast per block and slow per originator per window, commit 070e88d
- 2026-09-28: constants from the Robinhood replay, own-ordinal gate on the fast surcharge, commit acea3dc
- 2026-09-29: number 8429 assigned, block-sequence rule moved into the Specification, commit 2bfd684
External Reviews
- 2026-09-28: Measurements of the live token-level deployment from public RPC, confirming the
NUMBERaliasing bug and finding that an earlier design charged 68% of references, by wtpk (who discloses holding a token I deployed), PR comment
Outstanding Issues
- 2026-09-29: Should
STATICCALLcount as a reference? Batch reads and lending markets make repeated read-only calls with no extractive intent. Replay of both variants in progress, raised here - 2026-09-29: “A single swap pays nothing” holds only when the venue’s route stays inside the free allowance. Is
K_FREE = 2right for mainnet? - 2026-09-29: The cap binds at the 50th reference per block. Is pricing out contracts above that the right boundary?
- 2026-09-29:
StakeVaultreference implementation is still to be supplied.
Where this came from
I did not start from a whiteboard. I started by running the machine this EIP prices.
On Robinhood Chain I watched the same thing happen to launch after launch: a token goes live, and within minutes a handful of wallets open a cluster of pools on it at fee tiers no person would choose, then work the token from one block to the next. I built a rig that detected that cluster of pool births and traded behind it, to learn the shape from the inside. It entered on 65 launches. It worked, which is the problem.
Then I measured what that shape costs everyone else. One launchpad’s transactions were about 42% of all gas fees on the chain. In one 24 hour window, 130 of 3,466 launches were hit by the pool cluster, and 31 of the 33 tokens that graduated that day were among them. The crews pick the winners almost perfectly, and ordinary buyers are the exit.
The conclusion I came to is simple. It is probably in everyone’s interest to tax this behaviour, in the chain’s native gas token, and to make sure nobody can pocket the tax. Half is staked forever with no authority over it at all. Half is staked at the direction of whatever application opts in to the standard. Nothing is burned and nothing goes to the block producer, so nobody has a reason to farm it.
What the EIP does
An account enrolls itself, once and irrevocably. After that, the k-th call into it within a block costs G_REF * k^2 extra gas. The counter lives in client memory, not in state. A second, slower counter prices the same originator returning to the same account over a week. The larger of the two is charged.
A person who buys once pays nothing. A machine that references the same contract fifty times in a block pays quadratically.
What already runs
The protocol form needs a client change. A token-level form of the same rule does not, and it has been live on Robinhood Chain since 2026-09-28.
My own replay, over 45,728 real transfers on the launches my rig entered, with the constants now in the draft:
| Charged, in basis points of volume | |
|---|---|
| Wallets matching the machine’s shape | 632 |
| Everyone else | 19 |