Launching on Robinhood Chain
Every swap
pays every staker.
Reflect ($RFS) is a reflection token launching on Robinhood Chain — and the fee doesn't live in the token. It lives in a Uniswap v4 hook that takes 5% of every swap in the pool and splits it three ways: 2% to stakers, 2% burned, 1% to the treasury. Moving $RFS between wallets costs nothing.
Why Reflect
A fee where
the trading happens.
5% on every swap in the pool, levied by a Uniswap v4 hook and split three ways. The token itself stays a plain ERC-20 that every venue on Robinhood Chain can list, and moving $RFS between wallets costs nothing.
The fee lives in the pool
Reflection tokens usually tax every transfer, which breaks routers, launchpads and half of DeFi. $RFS doesn't: it is a plain fixed-supply ERC-20, and the 5% is levied by a Uniswap v4 hook — on swaps, where the trading actually happens.
Reflections you can see
No rebasing balance you have to take on faith. 2% of every swap is pushed into a staking vault and split pro-rata between stakers. You can read your share on-chain and claim it whenever you like.
Deflationary on volume
Another 2% of every swap is burned on the spot. Supply is minted once, never again, and only ever moves in one direction — down, at the speed of trading.
Nothing to trust
The token has no owner, no mint path and no tax. The hook's split is a constant. Exactly one pool can ever carry the hook, and the address that initializes it is set at deployment.
Mechanics
Four steps.
Zero guesswork.
Buy, stake, claim. Every number involved is readable on-chain at every step — including exactly what you are owed.
- /01
Buy $RFS
Swap ETH for $RFS in the hooked v4 pool on Robinhood Chain. The hook takes its 5% out of that swap — always denominated in $RFS, whichever way you trade.
- /02
Stake
Approve once, then deposit into the vault. Your share of every distribution that follows is exactly your share of the vault. Wallet-to-wallet transfers stay free either way.
- /03
Claim
Fees accrue in the hook and are pushed into the vault by distribute() — a permissionless call anyone can make. Claim your rewards whenever, or leave them and stake more.
- /04
Climb
The board ranks stakers by what they hold in the vault, ties going to whoever staked first. It is computed from chain state, so nobody has to report anything and nobody can be left off it.
Tokenomics
One swap fee.
Three jobs.
Every swap in the hooked pool carries a fixed 5% fee, always denominated in $RFS, split three ways by the hook. The split is a constant in the contract — nobody can raise it, redirect it, or switch it off.
Pushed into the staking vault and split pro-rata between everyone staking at that moment.
Burned by the hook on distribution. Supply is fixed at deployment and only ever goes down.
Sent to the treasury address fixed at deployment, which funds the epoch payouts to the top of the staking board.
- Ticker
- $RFS
- Standard
- ERC-20 · no tax
- Chain
- Robinhood Chain · 4663
- Swap fee
- 5% — immutable
- Transfer fee
- 0%
- Contract
- Not deployed yet
The hook
The fee lives in the pool.
Not in the token.
A Uniswap v4 hook can return a delta the swapper has to pay. That is where the 5% comes from: the hook holds it as ERC-6909 claims — a balance write, not a transfer, so the swap path stays cheap — and distribute() later redeems them in bulk and pushes out all three slices at once.
| Direction | Swap type | $RFS is | Levied in |
|---|---|---|---|
| Buy | exactIn | unspecified | afterSwap |
| Buy | exactOut | specified | beforeSwap |
| Sell | exactIn | specified | beforeSwap |
| Sell | exactOut | unspecified | afterSwap |
The fee is always denominated in $RFS — which side is “specified” decides only which callback can take it
How it launches
Auction on pools.trade
$RFS is distributed through a liquidity bootstrapping auction on pools.trade, the launchpad front-end for Uniswap's own LiquidityLauncher on Robinhood Chain.
Migration creates the pool
When the auction settles, the strategy initializes the ETH/$RFS v4 pool at the clearing price with our hook attached — the one and only pool that can ever carry it.
The fee switches on
From the first swap in that pool, the hook is in the path. Auction volume is untaxed; the 5% starts at listing.
A fee-on-transfer token could not have used this launchpad at all — the docs rule out rebasing and fee-on-transfer tokens outright. Keeping the fee in the hook and the token plain is what makes the launch possible in the first place. Follow the launch ↗
The chain
A fee on volume
needs somewhere with volume.
Reflect earns from swaps, so the chain it sits on is the whole business case. Robinhood Chain — the AI-native Ethereum L2 built for real-world assets — has 100 ms blocks, ETH gas, and the full Uniswap v2/v3/v4 stack deployed, which is what makes a v4 hook possible in the first place.
- Block time
- 100 ms
- Stack
- Arbitrum Orbit → Ethereum
- Gas token
- ETH
- Data availability
- Ethereum blobs
- Access
- Permissionless · EVM
- Ecosystem
- Stock Tokens · RWAs · AI agents
Sub-second blocks mean a fee taken on one swap is claimable within the next few. Ethereum settlement means nobody has to trust us with it. And as Robinhood Chain's ecosystem of tokenized assets grows, $RFS sits inside one of the most trafficked venues in DeFi.
Leaderboard
A board nobody
has to referee.
Stakers are ranked by what they have in the vault, with ties going to whoever staked first. Every input is public chain state, so the board is not something we report — it is something anyone can recompute from an RPC endpoint and check against ours.
- userInfo(address)
- What each address has staked right now
- Staked logs
- Who has ever staked, and in which block they first did
- totalStaked()
- The denominator — everyone's share of the vault
Splitting a balance across wallets moves you down the board and changes nothing about what you earn
FAQ
Answers, reflected.
The short version of everything people ask us. The long version lives in the docs.
Where does the 5% come from now?
From swaps, not transfers. $RFS is a plain ERC-20 with no tax in it at all. The fee is levied by a Uniswap v4 hook attached to the ETH/$RFS pool: it takes 5% of every swap in that pool, always denominated in $RFS, and splits it 2% to stakers / 2% burned / 1% to the treasury. Those shares are constants in the contract — nobody can change them.
Do I earn just by holding?
No — you stake. Paying holders by rebasing their balances means burying reflection accounting inside the token itself, which routers, launchpads and Uniswap v4 all refuse to handle properly. So the 2% goes to a staking vault instead, split pro-rata between everyone staking. It costs you one approval and one stake transaction, and in exchange what you are owed is an explicit number you can read on-chain rather than a rebase you have to trust.
Are wallet-to-wallet transfers taxed?
No. Sending $RFS to a friend, to a cold wallet or into the staking vault costs nothing beyond gas. The only place the fee applies is a swap inside the hooked pool.
How do the fees actually reach the vault?
The hook accrues them as ERC-6909 claims inside the PoolManager — a balance write rather than a token transfer, so the swap path stays cheap. Anyone can then call distribute(), which redeems the claims in bulk and pushes out all three slices at once: the staking share lands in the vault, where sync() folds it into the reward accumulator. The stake page shows how much is waiting and lets you push it yourself.
How does the leaderboard work?
It ranks stakers by what they currently hold in the vault, ties going to whoever staked first, and every input is public chain state: Staked logs for who has ever staked, userInfo for what each of them holds, totalStaked for the denominator. There is no backend and nothing we report — anyone can recompute the same board from an RPC endpoint and check it against ours. Splitting a balance across wallets only moves you down it. What the contracts do not enforce is the payout: the 1% lands in a treasury address fixed at deployment, and sending it out at the end of an epoch is a human decision. The wallet is public, so you can verify it happened.
Can someone just trade around the fee in another pool?
In principle, yes, and we would rather say so than pretend otherwise. A PoolKey includes the hook address, so a v2 or v3 pool — or a v4 pool with no hook — on the same pair is permissionless and untaxed. Robinhood Chain has all three deployed. Nothing in the hook can prevent that; concentrating liquidity in the hooked pool is what makes the fee bite.
How was it launched?
Through pools.trade, the front-end for Uniswap's own LiquidityLauncher on Robinhood Chain, as a liquidity bootstrapping auction. When the auction settles, the strategy initializes the ETH/$RFS v4 pool at the clearing price with our hook attached. Only that strategy can initialize a pool carrying the hook, so exactly one pool can ever exist — and nobody could front-run it into existence at a price of their choosing. Auction volume is untaxed; the 5% starts at listing.
Is there a lock-up?
None. Unstake any amount at any time, and it claims your pending rewards in the same transaction. There is also an emergencyWithdraw() that returns your principal while forfeiting pending rewards — it deliberately touches no reward accounting, so it stays callable even in the worst case.
Where can I find the contract addresses?
The token, the vault and the hook are published here and in the docs at launch, and linked to Blockscout from the stake page. Until then, treat any circulating address as fake.