IndexToken
Fixed-supply ERC-20 with an on-chain holder registry. Tracks exact eligible supply as balances cross the threshold, so distribution maths never drifts.
address TBD at launch
Ethereum mainnet · Uniswap v4 hook
The token has no tax. The pool does. A v4 hook skims 3% of every INDEX trade in native ETH, rotates through a ten-asset reward basket — majors, memes, tokenized equities — and pushes the tokens straight into holder wallets. Nothing to claim. Nothing to stake.
Mechanics
Three contracts, one loop. Everything is on-chain and the final step is permissionless — anyone can finish a distribution round if the keeper goes quiet.
IndexRewardHook is attached to a single ETH/INDEX v4 pool. It charges 3% of the trade
always denominated in ETH — in beforeSwap when ETH is the specified
currency, in afterSwap when it isn't. Fees are held as ERC-6909 claims until swept.
Collected ETH is wrapped and routed through Uniswap v3 into the next basket asset in rotation, then a round opens against a snapshot of eligible supply. Slippage floors are a parameter on every harvest.
process() walks the holder registry in gas-bounded batches and transfers each wallet its
pro-rata share. A wallet that can't receive a permissioned token is booked to
pending and can pull it later — one blocked address never stalls a round.
The basket
Each harvest buys the next asset in the rotation, so weight equalises over a full cycle instead of splitting every fee ten ways and paying dust. Addresses are the live mainnet contracts.
Ondo's tokenized equities are permissioned ERC-20s with no ETH liquidity on mainnet — a fork test probes
all three Uniswap v3 fee tiers for each of the five and every route fails. Those legs are marked
MANUAL: the operator acquires the shares, funds the leg, and the distributor pushes them out
exactly like a swapped asset. If a real ETH pool ever appears, one setRoute call flips the
leg to fully automatic — no redeploy, no migration.
Specification
| Total supply | 1,000,000,000 INDEX, fixed. No mint function. |
|---|---|
| Transfer tax | None. The fee lives in the pool hook, so every router, bridge and aggregator works normally. |
| Swap fee | 3.00%, taken in native ETH on buys and sells. Hard-capped at 5% in code. |
| Pool | Uniswap v4, ETH / INDEX, 1% LP fee, tick spacing 200. The hook binds to one pool and rejects every other. |
| Launch liquidity | 80% of supply, one-sided INDEX only, range below the opening tick. LP position sent to the burn address. |
| Reward eligibility | Wallets holding at least 10,000 INDEX. Infrastructure addresses are excluded from the registry. |
| Distribution | Push, pro-rata over eligible supply, batched and resumable. process() is permissionless. |
| Blocked transfers | Fall back to a per-wallet pending balance, claimable at any time. |
| Owner powers | Threshold, exclusions, routes, rotation, keeper and fee (≤5%). Rescue cannot touch an open round's asset. |
25 tests pass — 22 local, plus a fork suite that deploys the whole system onto forked mainnet, buys 50 ETH of INDEX through the real PoolManager, collects the 1.5 ETH fee and spends it through the real Uniswap routers, asserting each holder's pro-rata payout.
$ forge test --fork-url $ETH_RPC_URL -vv
[PASS] test_fork_endToEndCycle()
accrued fee wei 1500000000000000000
PEPE → holder 87,225,610.43 PEPE
MOG → holder 2,301,496,781.55 MOG
USDC → holder 300.257631 USDC
WETH → holder 0.12 WETH
USDT → holder 300.232251 USDT
[PASS] test_fork_manualEquityLegPaysHolders()
[PASS] test_fork_probeEquityRoutes()
SPYon / TSLAon / SPCXon / QQQon / NVDAon no v3 route → MANUAL leg
Suite result: ok. 25 passed; 0 failed; 0 skipped
Contracts
Fixed-supply ERC-20 with an on-chain holder registry. Tracks exact eligible supply as balances cross the threshold, so distribution maths never drifts.
address TBD at launch
The v4 hook. Mined so its address carries the permission flags 0x20CC, bound irreversibly
to the first ETH/INDEX pool it initialises.
address TBD at launch
Buys the rotation's asset, snapshots eligible supply, pushes payouts in batches, and books blocked transfers for later claim.
address TBD at launch
Uniswap addresses per the official v4 deployments page; equity tokens per the Ondo Global Markets token list. Mechanics adapted from The Index.
Read this part
Push distribution costs gas per wallet. Rounds are batched and resumable; the minimum balance is the throttle.
Buying a leg is a public swap. Use a slippage floor and a private relay.
Transfers can be refused by the issuer. Those payouts are booked to a claimable balance instead.
Threshold, routes and fee are owner-settable. Ownership should sit behind a multisig or timelock.
When a spike makes a round cost more than it pays, the owner can sweepEth accrued fees to a safe address and distribute later. It is an emergency valve and a trust assumption — renounceSweep removes it permanently.
A second INDEX pool without the hook pays no fee. Keep the hooked pool the only real venue.
Experimental software on a public chain. Reward value is whatever the basket is worth — it can be nothing.