Holder credits
Hold $XINF and earn AI credits from what the protocol lock earns, split every hour by time-weighted balance and claimed weekly in your dashboard (Rewards).
Funding
$XINF is paired with USDC. The protocol lock holds $XINF that is never sold and is allowlisted by stonks.fun, so it receives its share of the 3% tax in USDC like any holder. For each closed hour the USDC the lock received moves into the credits program's intake (a fixed spending limit, USDC only, one destination), where the program splits it: 30% (the autobuy_bps in its config, hard-capped at 70% and set only by the public controller multisig) goes to the autobuy wallet, which buys $XINF in the main pool in small slices and delivers it to the lock; the rest, rounding dust included, stays for holder credits and is minted as that many dollars of credits, so every credit is backed 1:1 (reserves). The program routes at least 1 USDC at a time, so an hour below that carries its USDC to the next hour. There is no swap and no quote. An hour closes only once the lock's receipts are read through its end. An hour in which the lock received nothing pays nothing.
Balances
Every 5 minutes we read every $XINF token account (both token programs), sum them per owner wallet, and store the reading. An hour has 12 readings; your weight for the hour is your average over the readings taken (a reading you are absent from counts as 0; a missed reading counts for nobody).
Eligibility
Your hourly average must be at least 1,337 $XINF. Liquidity pools, the protocol lock, launchpad wallets, team wallets and program-owned wallets are excluded. Weight below the floor or excluded is redistributed to eligible holders.
Rounding
All amounts are integer nano-dollars. Each wallet gets floor(pool × average ÷ total eligible average); the leftover is added to the next hour's pool. An hour with no readings or no eligible holder carries its whole pool forward.
Weekly claims
Credits accrue to the wallet every hour. Nothing moves into an account on its own. Once a week (from Monday 00:00 UTC by default), after the week's last hour has closed, we cut that week's list: each wallet's credits for the week. A list can be claimed for 30 days after it is cut (its expires_ms, published with it), so several lists can be claimable at once and one click claims them all. Unclaimed credits are BURNED after 30 days: the next list cut after the expiry burns them and, as they have no inference cost, all of their backing USDC goes through the burn split: 50% to $XAVA stakers in USDC and 50% buys $XINF into the protocol lock (a dry-run until the programs are live). Nothing rolls into another holder list. Claim on Rewards while signed in with the holding wallet: one click mints the line's credits into your balance against the USDC already in the reserve. Credits are not cash, cannot be refunded or transferred, and do not count toward affiliate earnings.
Expiry
Earned and promotional credits expire after 365 days unused; credits you buy don't expire. Every arrival of credits is a lot with its date and source; Requests spend your expiring credits first, oldest first, so they rarely go unused; credits you buy are used after them. What is left of a claimed lot 365 days after the claim is burned, and its USDC goes 50% / 50% as above. Your dashboard warns 30, 7 and 1 days before. Each expiry batch is published with its SHA-256 on the reserves page.
Audit
Every hour publishes a canonical list and its SHA-256. GET /api/earn/windows.json lists recent hours with totals and fingerprints; GET /api/earn/windows/<hour ms> returns the canonical text; GET /api/earn/wallet/<address>.json returns one wallet's position. Each weekly list is published the same way, chained to the previous list's hash: GET /api/rewards/xinf/weeks.json, GET /api/rewards/xinf/weeks/<week ms>.json (every line) and .txt (the canonical text).
xinf-holder-credits v4 <hour start, ms> mint <mint> samples <readings in the hour> floor_raw <floor in raw units> lock_usdc_raw <USDC the lock received in the hour, raw> intake_carry_in_raw <USDC not routed by earlier hours> routed_usdc_raw <routed this hour; 0 below 1 USDC> autobuy_bps <the autobuy share> autobuy_usdc_raw <floor(routed x bps / 10000): buys $XINF for the lock> credits_usdc_raw <routed - autobuy> intake_carry_out_raw <still unrouted> credits_nano <credits_usdc_raw in nano-dollars: the hour's credits> leftover_in_nano <previous hour's remainder> pool_nano <pool> weight_raw <sum of eligible averages> distributed_nano <sum of amounts> <wallet> <average raw> <amount nano> (one line per eligible wallet, sorted)
xinf-holder-week v4 <week start, ms> end_ts <ms> windows <hours in the week> claim_days <days a line stays claimable> expires_ms <cut time + claim_days> accrued_nano <sum of the week's hourly credits> total_nano <sum of amounts> weight_raw <sum of weights> expired_from <week start> <nano> (one line per list that expired since the last cut) dust_in_nano <an old v2 list's remainder, first cut only> burn_nano <expired + dust_in: burned, USDC split by the burn split> burn_split_bps <$XINF lock> <$XAVA stakers> prev_hash <previous list's hash> <wallet> <weight raw> <amount nano> (one line per wallet, sorted)
Credits are prepaid product access, backed 1:1 by USDC in a public reserve, not an investment return, and not redeemable for cash. They cannot be refunded, sold or transferred. What the lock earns depends on trading volume and on the launchpad's rules, which can change; the floor and these rules can change too. Nothing here is investment advice.