This ERC proposes a minimal pattern for turning a stream of protocol revenue into another asset at or near market price. It is inspired by the “payout race” mechanics described within the Uniswap Foundation’s Unistaker proposal.
How it works: Value flows into the contract, filling a “bucket.” The first caller who pays the fixed required amount in the desired payment asset receives the entire current bucket balance.
This simple interface assumes a single payout asset and single desired payment asset (each can be ETH or ERC-20). ETH to ETH is not allowed.
I’ll add some context for why this exists. This patches a common tokenomics gap I see in the wild.
In a healthy decentralized protocol, it’s usually best if the service is paid in the protocol’s own token. That naturally creates buy pressure that can offset inflation elsewhere.
The problem is user friction. Asking people to pay each service in its native token is clunky, so many protocols accept ETH or stables. That choice is practical, but it breaks the loop and forces a separate buyback mechanism to route revenue back into the native asset.
After surveying patterns, the simplest and most predictable approach I found is the payout race. Unistaker described a version inside a larger Uniswap-specific system, where anyone could watch fees accrue and call claimFees() on a V3 pool, effectively swapping UNI for the pool’s fee assets. This ERC generalizes that core idea into a minimal, reusable primitive: stream value in, and let anyone who pays a fixed price pull the entire current balance.
I tried to fold broader, Unistaker-style needs into this standard, but that added complexity to what works best as a small, auditable mechanism. This draft keeps the surface tiny and leaves policy to upstream controllers.