Skip to main content

PoATU — Proof of AI Tokens Used

PoATU pays miners for actual AI inference work. Every TASK_RESPONSE tx must declare how many output tokens (and optional thinking tokens) were generated. A validator then picks the best response and a TASK_REWARD tx pays the winning miner proportionally.

Reward formula

Given a winning response with outputTokens (and thinkingTokens for reasoning models):

total_tokens = outputTokens + thinkingTokens
reward = (total_tokens / TOKENS_PER_OMBRA) * TASK_FEE_SHARE

Where:

ConstantValueMeaning
TOKENS_PER_OMBRA1_000_0001 OMBRA = 1M AI tokens at full price
TASK_FEE_SHARE0.70 (post-fork V2)70% of TASK_SUBMIT.fee goes to miner

Fee split

A TASK_SUBMIT.fee is distributed between miner, burn, and validator at apply time:

FEE_SPLIT_V2 = { miner: 70, burn: 25, validator: 5 } // percent

This split activates at fork V2 (mainnet height 7500). Pre-fork: 100% to miner, no burn.

Pseudo-code: apply TASK_REWARD

function applyTaskReward(tx, state):
task = state.tasks[tx.taskId]
assert task.status == "validated"
assert tx.from == task.validatorAddress

for reward in tx.rewards:
addr = reward.address
micro = BigInt(reward.amount)

if reward.reason == "miner":
state.accounts[addr].balance += micro
elif reward.reason == "validator":
state.accounts[addr].balance += micro
elif reward.reason == "burn":
state.totalBurned += micro // no recipient

state.tasks[tx.taskId].status = "rewarded"

Example

A user submits a chat task with fee = 100_000 micro-OMBRA (0.1 OMBRA). Best response is 5_000 output tokens.

  • Miner share = 100_000 × 0.70 = 70_000 micro
  • Validator share = 100_000 × 0.05 = 5_000 micro
  • Burned = 100_000 × 0.25 = 25_000 micro

Total credited = 75_000. Total burned = 25_000. Tokens-per-OMBRA exchange rate at that fee = 5_000 / 0.07 ≈ 71_428 tokens/OMBRA.

Why per-token (not per-task)

Tasks vary wildly in cost:

  • A simple yes/no: ~50 tokens
  • A long essay: ~5_000 tokens
  • An agentic workflow with reasoning: ~50_000 tokens

Flat per-task pricing would over-reward trivial tasks and under-reward complex ones. Per-token PoATU matches reward to real GPU/inference cost.

Anti-cheat

A miner could claim inflated token counts. Mitigations:

  1. Validator picks best response — only one miner gets the full reward; others get zero. Token count is validated against the actual response length.
  2. Validator stake — validators are chosen from attested block proposers (skin in the game).
  3. Cross-check across responses — if multiple miners answered, token counts should cluster; outliers are flagged.

Next: PoTU →