OFA is a live token on Ethereum, trading in a Uniswap v4 pool with a custom hook. On every buy and every sell, the hook takes 2% of the trade, in ETH, and routes it to a distributor that pays it out pro-rata to everyone holding OFA. There is no staking and no lockup. The hook also runs an order-flow auction on buys: a bonded filler can fill the order at the pool's price or better, so the trader is never worse off, and the bid it pays to win that order goes to holders as well. The token launched single-sided, with OFA only in the pool, so buyers supply the ETH and no team capital backs the liquidity.
01What is live
No vaporware. Here is exactly what is deployed and working on Ethereum mainnet right now:
- The OFA token. A clean ERC-20 with a built-in ETH reward distributor. No transfer tax on the token itself.
- The order-flow-auction hook. A Uniswap v4 hook on the ETH/OFA pool. It takes 2% in ETH on every swap for holders, and on buys it runs the filler auction described below.
- The v4 pool. ETH/OFA, seeded single-sided with 100M OFA. Buyers' ETH fills it as they trade.
- This site. Live chart, trade links, and a claim button for your ETH.
02The v4 hook
Uniswap v4 lets a contract, a hook, run custom logic on a pool's swaps and settle the balance changes through the singleton PoolManager. Because the pool is ETH/OFA and native ETH is currency0, the hook always takes its cut on the ETH side:
- Buy (ETH to OFA): the hook acts in
beforeSwap. It either routes the order to a filler (see below) or takes 2% of the incoming ETH and lets the pool fill the rest. - Sell (OFA to ETH): the hook takes 2% of the outgoing ETH in
afterSwap.
Either way the cut is ETH, forwarded straight to the distributor. The token has no transfer tax, so OFA stays a normal ERC-20 everywhere else. The hook's address encodes its permissions (BEFORE_SWAP, AFTER_SWAP, and their return-delta flags), so it was deployed to a mined CREATE2 salt. The whole flow was verified on a mainnet fork, a real buy and a real sell both increased a holder's claimable ETH, before going live.
03The order-flow auction
This is the part the name points at, and it is in the deployed hook today.
A filler bonds OFA inventory into the hook and posts a bid, a number of basis points it is willing to pay to win order flow. When a buy comes in, the hook reads the pool's current price and works out how much OFA that price implies for the trader's ETH. If a bonded filler has enough inventory, the hook fills the buy from that inventory at the pool price, hands the trader their OFA, keeps the ETH for the filler, and sends the filler's bid to holders.
The point: the trader is never worse off than trading against the pool, because the fill price is the pool's own spot price, before slippage. The value a filler is willing to pay to capture that flow, the kind of value that normally leaks to arbitrage and sandwich bots, goes to holders instead.
Being straight about the state of it: the auction logic and the filler registry are live in the hook, but no fillers are bonded yet. Until one is, every buy takes the flat 2% path and pays holders that way. The 2% is the floor that always pays. The auction is the upside on top, and it needs fillers to bond before it adds anything.
04Hold to earn
Rewards use the magnified-reward-per-share pattern: O(1) per distribution, no looping over holders.
- Exclusions. The pool, the PoolManager, the hook, and the treasury are excluded, so reward ETH only flows to real holders and never gets stranded in the pool.
- No staking. Hold OFA, accrue ETH automatically, call
claim()when you want. - Real yield. Rewards come from actual trading volume. More trades, more ETH. No trades, no rewards.
05The launch, single-sided
OFA launched with no team ETH in the pool. The v4 position was minted with OFA only, placed just below the opening price, around a $5k starting valuation. As people buy, their ETH fills the position and the price climbs. The crowd funds the liquidity, not the deployer.
The deployer wallet was a throwaway used only to pay gas, and it ends holding nothing. The LP position NFT and contract ownership sit with the project wallet.
06Contracts
| Contract | Address (Ethereum mainnet) |
|---|---|
| OFA token | 0xd423eb7A725aEe502aF142a891cAC8Db34A6D91b |
| Order-flow-auction hook | 0x3e2226382B20A92bc3Daf5298059B48c972d00cC |
| Pool | Uniswap v4, ETH/OFA, fee 0.30%, tickSpacing 60 |
07What is next
The buy-side auction is live but inert until fillers bond. The honest work ahead is to make it actually run, and to extend it:
- Bond the first fillers. Onboard market makers to deposit inventory and post bids, so buys start generating surplus for holders.
- Sell-side auction. Today sells take the flat 2%. The symmetric version lets fillers compete on sells too.
- A real audit. The hook routes funds on every swap. It has been fork-tested, not audited. That needs to change before anyone treats it as safe.
08Real talk
Straight, no theatre:
- Self-tested, not audited. The contracts were verified on a mainnet fork (deploy, buy, sell, rewards), not by a third-party auditor. Treat anything you put in as money you can afford to lose.
- The 2% is real, the auction needs fillers. Every trade pays the 2% to holders today. The auction adds more only once fillers bond.
- Rewards track volume. Tied to usage, not promises. No volume, no yield.
- A hook is not universally bot-friendly. The same logic that pays holders is what some sniper bots cannot parse. That is the trade-off.
09Disclaimer
This document describes an experimental token in active development. It is not financial advice, not an offer to sell or a solicitation to buy any security or token, and not a promise of returns or future features. Figures and parameters may change. Smart contracts carry the risk of total loss of funds. Do your own research.
OFA, Order Flow Auction, whitepaper v1