Documentation

$INFERENCE

$INFERENCE is the settlement asset of the intelligence primitive, and it stands on its own: a plain fixed-supply ERC-20 that can be deployed and launched anywhere, on this venue or another, before or after the rest of the stack exists. The stack never mints it, holds it or references it, with one exception — the one that matters. The Buyback contract is bound to its address, and thirty percent of every coin-side fee collected on the venue's markets (the launched tokens, never $INFERENCE itself) is converted to ETH, spent on $INFERENCE in its Uniswap v4 pool, and burned in the same transaction. Supply is monotonically decreasing, every burn is a transaction you can look up, and the whole path from a swap to a burn runs without a vote, a schedule or an operator. Holding the token is a position on the throughput of the venue.

The token

Name Inference Markets
Ticker INFERENCE, settled 2026-09-16
Standard ERC-20, 18 decimals, OpenZeppelin ERC20Burnable
Supply 1,000,000,000, fixed, minted in full at construction
Mint function none after construction
Pool a Uniswap v4 pool with native ETH as currency0 and $INFERENCE as currency1, bound to the Buyback once with setPool
Deployment separate from the stack. Deploy.s.sol binds an existing token when INFERENCE=<address> is set (it must expose burn(uint256)), and mints a fresh one to the deployer only when it is not

Nothing can add to the supply: the contract has no mint function after construction, and no owner who could add one. The billion minted at genesis is the largest the supply will ever be.

The venue launches before the token

The venue goes live first and the token follows, so for a period after launch the Buyback contract is not yet deployed. The deployments file carries a zero address for it, this page reports the token as not yet live, and sweepToBuyback waits.

The buyback share is being collected throughout. Thirty percent of every coin-side fee accrues in each market's Treasury ledger as buybackCoin, in the pair coin, exactly as it does afterwards. What waits is the conversion to ETH and the burn, not the accrual. When the token launches, the Buyback is deployed against its address and handed to the Treasury in a single transaction, sweeping starts immediately, and the accrued share is converted and burned from then on. The one thing to know is that the share sits in the pair coin until it is swept, so its value moves with that coin in the meantime.

Where the ETH comes from

Every market's coin-side fees are split 50 / 30 / 20, and the buyback's 30% sits in the market's ledger as buybackCoin. Anyone may call sweepToBuyback(token, coin, amount) on the Treasury, which converts the pair coin to USDC and then to ETH through the WETH/USDC pool, and sends the ETH to the Buyback contract. The Treasury computes its own floor for that sale — the coin's index value at the feed, minus 2%, at the Chainlink ETH/USD price — and no caller can lower it. That is the only source of ETH the buyback has, and it applies to every market on the venue regardless of what it is paired with: a market quoted in INT, one quoted in AGENT and one quoted in DIEM all feed the same stream.

See Fees for the split and the ledger, and Automation for who calls the sweep.

How the burn works

Buyback.execute(minInferenceOut) is called by the executor and does the whole thing in one call:

  1. It takes its entire ETH balance. There is no partial spend and no amount parameter, so nothing accumulates in the contract between executions.
  2. Inside its own unlockCallback it swaps that ETH for $INFERENCE in the bound v4 pool, settling the native currency with settle{value:}.
  3. It burns every token it holds by calling burn(uint256) on the token.

The burn is a real ERC20Burnable.burn, which lowers totalSupply. Tokens are not sent to a dead address, so the circulating number and the supply number agree.

execute is the one maintenance call on the venue that is not permissionless. It spends the protocol's own money on a pool whose price the protocol does not index, so it keeps a gate: a single executor address, set by the owner with setExecutor, supplies minInferenceOut from its own simulation of execute(0) immediately before the call. The executor can only buy and burn; it cannot withdraw ETH or INFERENCE, and it has no power over any other contract. setPool(PoolKey) binds the pool and can be called once, by the owner; after that poolSet is true and the pool cannot be changed.

What is on-chain

Read What it tells you
Buyback.totalBurned cumulative tokens burned
Buyback.totalEthSpent cumulative ETH spent buying it
INFERENCE.totalSupply() what is left of the billion
Executed events every buy and burn, with the ETH spent and the amount burned

What the token is

$INFERENCE is a fixed-supply instrument whose only mechanical link to the venue is the buy and the burn described above, and that link runs on every market, in every pair coin, on every swap. It carries no governance rights, because there is nothing to govern: every parameter that matters is fixed in code or derived from a feed. It carries no claim on the vault, because the vault's USDC and DIEM back the inference coins and belong to the holders of those coins. What it holds is the fee surface of the whole venue, pointed at a supply that only goes down.