Skip to main content

Recognized Usage and ANTS Rewards

Protocol start: September 10, 2026 at 09:54:21 UTC — epoch 22.

Recognized usage connects ANTS rewards to paid service delivery and seller-pool stake. This page describes the protocol from that start date: seller eligibility, locked staking positions, usage points, and reward distribution. Buyer USDC deposits, payment channels, and settlement signatures are unchanged.

Looking for rewards earned before migration? See Legacy emissions and claims.

Seller pools and recognized usage

Recognized usage requires an eligible seller pool with sufficient epoch power. Accounting applies the registered points policies and tracks buyer/seller points and pool-weighted points. A missing pool or filtered record earns no new usage points; this does not prevent the underlying USDC settlement.

AntseedSellerPools holds locked ANTS positions represented by lANTS NFTs. Staking power activates in the following epoch. Initialize or seed seller pools before an epoch boundary to have power in that epoch. Legacy USDC staking remains an eligibility fallback until explicitly disabled; the new seller registry does not expose the legacy USDC withdrawal flow.

Moving stake and early withdrawal

Moving stake preserves the full ANTS principal and the original lock and early-exit terms. Rewards already accrued remain claimable using the old position ID; future rewards follow the new seller pool when the move takes effect, normally in the next epoch. Moving does not bypass the lock.

The Base mainnet settings checked on September 6, 2026 are:

  • Move-weight penalty: 0% (moveWeightPenaltyBps = 0). If configured above zero, this penalty reduces the moved position's future staking weight, not its principal or already-accrued rewards.
  • Maximum early-withdrawal slash: 50% (maxSlashBps = 5000).
  • Minimum early-withdrawal slash: 5% (minEarlyExitSlashBps = 500).

Before the lock ends, the principal penalty is:

slash percentage = max(5%, min(50%, 50% × remaining lock epochs / total lock epochs))

For example, withdrawing 1,000 ANTS halfway through the lock slashes 250 ANTS and returns 750 ANTS. The calculation uses whole epochs, with integer rounding in the contract. At or after lock expiry, the slash is zero. Withdrawal does not slash previously earned rewards, but it removes the position's power from the withdrawal epoch onward.

These percentages are owner-configurable settings, not immutable guarantees. Check the pool contract's current values before moving or withdrawing stake.

Starter positions and seller proxies

Fund AntseedPositionInit with ANTS separately. Before global transfers are enabled, the funding wallet must be a whitelisted sender. Fund conservatively: the faucet has no owner or sweep function, so unused funds cannot be recovered.

Starter grants require an agent ID registered in legacy USDC staking and legacy stake meeting its minimum: legacyStaking.getAgentId(seller) != 0 and legacyStaking.isStakedAboveMin(seller) == true. Eligibility through the new seller registry or ANTS pools alone does not qualify a seller for this grant.

A qualifying seller can call initPosition(). For a contract seller, an authorized operator can call initPosition(seller). When caller and seller differ, the seller's isOperator(caller) must return true. Owning the proxy or staking DIEM does not by itself satisfy that check.

The caller owns the resulting position, its staking rewards, and withdrawal rights; the seller's agent pool receives the power. There is one starter grant per agent. Historical wash flags do not prevent initialization.

All starter positions share the faucet's fixed initEndEpoch. Initialization requires currentEpoch() + stakeActivationDelay() < initEndEpoch; at or beyond that limit, it reverts with InitExpired. Claiming later does not extend the lock's end epoch. The faucet must also hold at least initAmount ANTS for each grant.

With the recognized-usage CLI, use antseed seller legacy claim-starter for starter-position initialization. It creates a staking position; it does not withdraw locked legacy rewards. That separate release is described in Locked seller rewards: M002.

Points policies and historical wash trading

The owner-managed registry applies policies in registration order. Each policy receives points(channelId, buyer, seller, sellerPoints, buyerPoints) and returns (sellerPoints, buyerPoints). This preserves the existing accounting interface. A zeroed side cannot be restored; evaluation ends when both sides are zero.

The registered wash policy zeros both sides for a seller flagged by the historical proof registry's 25% authenticated seller-volume threshold. Flagging affects future records only: it does not erase already credited points. The policy reads proofs accepted by the configured registry; submissions to a different registry are not automatically recognized.

Emissions and destinations

The gate uses weekly epochs and a 104-epoch halving interval. Its genesis is April 9, 2026 at 09:54:21 UTC. The token's maximum supply remains 1.04 billion ANTS. Allocation ceilings from epoch 22 are:

  • 40% seller-pool rewards, with the effective share determined dynamically.
  • 20% usage rewards, with dynamic buyer and seller/operator shares.
  • 15% team.
  • 15% emissions reserve.
  • 10% verification.

These are not a promise that every bucket is fully paid to users. Reward eligibility, pool power, utilization, and the contracts' remainder rules apply.

The configured destinations are:

  • USDC protocol fees and legacy reserve flushes: registry reserve 0xBF348D3eEDA2012c60375ebFe4Eb46511859f70F.
  • Team emissions and legacy team flushes: registry team wallet 0x47151b68e2f34500A4f8886885cE69b179Bf5B0B.
  • New ANTS reserve emissions: 0x3B4f9f426B9E465621037dF72b6DEBDD8EF1fD8c.
  • Initial verification controller: 0x5B3A59088bD5BD5f722571420c09a9251a03AAdb.

The verification allocation initially belongs to a wallet, not a deployed verification contract. Keep gate ownership so its editable controller can later be transferred to that contract. Enabling ANTS trading is also a separate, one-way action; M001 does not enable it.

For pre-migration claims and reserve/team flushes, see Legacy emissions and claims.

Deployed M001 contracts — Base mainnet

These are the Base mainnet contracts for the protocol starting at epoch 22. All 11 were deployed on September 6, 2026 and verified on Basescan.

ContractAddress
AntseedWashTradingRegistry0xc02a111CB94332Cc31C08E079cbe781880b2121C
AntseedEmissionsGate0xE60a31E6CD2F8455503cA0B3f6545Dd3DDF543BD
AntseedSellerPools0x8Bf4d39AA13F3CB03F87D9500767fBc4D0940652
AntseedSellerRegistry0x99c533BCc6Ca646E543dbA835Fdbb9C2ee02Cb60
AntseedPositionInit0xB68AD13b681319fcEB6b0A640c2fd96C0138CBc8
AntseedUsageAccounting0xAdd2D85316153D7bfaF7921EE9Bf1Bb6c7A1cBc9
AntseedPointsPolicyRegistry0x212D2C1058b84507de248a147aaFeB08fb19E3b6
AntseedWashTradingPointsPolicy0x7a605aaa3c725aa25012dfDeD6B5dddcC561D6e5
AntseedSellerPoolsRewards0x83cc5B9AA0c8cB8683F35462c385a5BAAa755EE5
AntseedUsageRewards0x78330bF154172F1137219Bb559d4F3A270B3201F
AntseedLegacyEmissionsEscrow0x4d0fC3C0BBb5233Af6c4Ce33223e5330c34db9ab

The payments address list contains the settlement contracts. Pre-migration endpoints are listed in the legacy guide.

SDK configuration

getChainConfig('base-mainnet').recognizedUsage exposes all 11 addresses under contracts, plus effectiveEpoch and a recorded status of deployed or active. This metadata is generated from the deployment ledger, not a live RPC query. A scheduled epoch passing does not automatically change its status.

emissionsContractAddress and stakingContractAddress follow the committed active current.json; the gate is not an accounting endpoint. Pool and reward contracts use their own interfaces; legacy CLI staking commands are not starter-position initialization commands.

Deployment and activation

The start date is scheduled; activation is a separate operator transaction, not an automatic timestamp switch. The mainnet deployment record is packages/contracts/deployments/base-mainnet/history/001-recognized-usage-deployed.json. For operational sequencing, proof submission, funding, and pointer checks, use packages/contracts/script/migrations/M001RecognizedUsage/README.md in the repository.