Arc mainnet · Uniswap v4 hook

Three percent of every swap,
paid out in Arc's top ten.

The token has no tax. The pool does. A v4 hook skims 3% of every ARC10 trade in native USDC — Arc's gas token — rotates through the ten largest Arc-native tokens by market cap, and pushes them straight into holder wallets. Nothing to claim. Nothing to stake.

Swap fee
3.00%
Fee currency
USDC native
Basket legs
10 equal weight
Eligibility
10k ARC10
Supply
1B fixed

Mechanics

A fee that leaves the pool as USDC and comes back as Arc tokens

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.

  1. 01

    The hook takes the fee

    IndexRewardHook is attached to a single USDC/ARC10 v4 pool. It charges 3% of the trade always denominated in native USDC — in beforeSwap when USDC is the specified currency, in afterSwap when it isn't. Fees are held as ERC-6909 claims until swept.

  2. 02

    The distributor buys the next leg

    Collected USDC is paid straight into the leg's own pool — Uniswap v3, WarpDex or DYORSwap, no router in between — and the tokens that come back open a round against a snapshot of eligible supply. Slippage floors are a parameter on every harvest.

  3. 03

    Holders get pushed, not prompted

    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.

Swap ARC10 / USDC
3% in USDC
Hook v4, single pool
collect()
Distributor buys the leg
process()
Your wallet no claim

The basket

Ten legs, equal weight, one at a time

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. Ranked by market cap on Arc mainnet at launch-day close; any leg can be swapped for a riser with one setRoute call.

Why every leg is automatic on Arc

All ten tokens have deep native-USDC pools — seven on Uniswap v3, WARP on WarpDex and ARCAT on DYORSwap. The distributor pays the pool directly through Arc's USDC facade and takes whatever the pool returns, so tokens with a buy tax (ARGUS 1%, ARCASH 3%) and pairs with a non-standard fee (WarpDex charges 1%) all settle correctly. Selection: liquidity above $50K, more than 300 holders, Arc-native only — the CRCL and NVDA mirrors and the $10-liquidity "ARCX10" were left out.

Specification

Every parameter, stated plainly

Token and pool parameters
NetworkArc mainnet, chain id 5042. Gas and fees settle in native USDC.
Total supply1,000,000,000 ARC10, fixed. No mint function.
Transfer taxNone. The fee lives in the pool hook, so every router, bridge and aggregator works normally.
Swap fee3.00%, taken in native USDC on buys and sells. Hard-capped at 5% in code.
PoolUniswap v4, native USDC / ARC10, 1% LP fee, tick spacing 200. The hook binds to one pool and rejects every other.
Opening valuation$10,000 fully diluted — the start tick is derived from that target and the deploy reverts if it lands more than 1.5% off.
Launch liquidity80% of supply, one-sided ARC10 only, range below the opening tick. LP position sent to the burn address.
Reward eligibilityWallets holding at least 10,000 ARC10. Infrastructure addresses are excluded from the registry.
DistributionPush, pro-rata over eligible supply, batched and resumable. process() is permissionless.
Blocked transfersFall back to a per-wallet pending balance, claimable at any time.
Owner powersThreshold, exclusions, routes, rotation, keeper and fee (≤5%). Rescue cannot touch an open round's asset.

Verified against live Arc state

42 tests pass — 37 local, plus a fork suite that deploys the whole system onto forked Arc mainnet, buys 5,000 USDC of ARC10 through the real PoolManager, collects the 150 USDC fee and spends it in all ten real pools, asserting each holder's pro-rata payout.

$ forge test --match-path test/ForkArc.t.sol --fork-url $ARC_RPC_URL -vv

[PASS] test_fork_openingValuation()
  ARC10 per 1 USDC (after fees)   96,644
  implied opening FDV             $9,936
[PASS] test_fork_endToEndAllTenLegs()
  fees collected                  150 USDC
  ARGUS · LONG · TOLLY · COOL     1,327 · 1,572 · 2,422 · 2,604
  BEANCAT · ARCASH · Architects   9,191 · 10,077 · 9,627
  WARP · ARCAT · BANCOR           13,630 · 25,119 · 23,596
  per 15 USDC harvest, pushed to holders pro-rata
[PASS] test_fork_sellPaysFeeInUsdc()
[PASS] test_fork_sweepParksFeesWithoutDistributor()
[PASS] test_fork_facadeMirrorsNativeBalanceOnRealPools()

Suite result: ok. 5 passed; 0 failed · 37 passed locally

Contracts

Three contracts and the infrastructure they touch

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

IndexRewardHook

The v4 hook. Mined so its address carries the permission flags 0x20CC, bound irreversibly to the first USDC/ARC10 pool it initialises.

address TBD at launch

IndexDistributor

Pays each leg's pool directly in USDC, snapshots eligible supply, pushes payouts in batches, and books blocked transfers for later claim.

address TBD at launch

Arc mainnet infrastructure

    Uniswap addresses per the official deployments page; basket ranking per arcexplorer.org. Sister deployment on Ethereum: eth10.fund. Mechanics adapted from The Index.

    Read this part

    What can go wrong

    Gas scales with holders

    Push distribution costs gas per wallet. Rounds are batched and resumable; the minimum balance is the throttle.

    Harvests are MEV-visible

    Buying a leg is a public swap. Use a slippage floor and a private relay.

    Memecoins misbehave

    A leg can add a tax, pause or blacklist. Taxed buys settle at what the pool returns; refused transfers are booked to a claimable balance; a dead leg is skipped or swapped out.

    Owner keys matter

    Threshold, routes and fee are owner-settable. Ownership should sit behind a multisig or timelock.

    Emergency sweep

    When a round would cost more than it pays, the owner can sweepUsdc accrued fees to a safe address and distribute later. It is an emergency valve and a trust assumption — renounceSweep removes it permanently.

    One canonical pool

    A second ARC10 pool without the hook pays no fee. Keep the hooked pool the only real venue.

    Young chain, fast rankings

    Arc mainnet is days old. Today's top ten can look different next month — legs are owner-swappable, and every change is an on-chain setRoute event.

    Not investment advice

    Experimental software on a public chain. Reward value is whatever the basket is worth — it can be nothing.