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:
| Constant | Value | Meaning |
|---|---|---|
TOKENS_PER_OMBRA | 1_000_000 | 1 OMBRA = 1M AI tokens at full price |
TASK_FEE_SHARE | 0.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_000micro - Validator share =
100_000 × 0.05=5_000micro - Burned =
100_000 × 0.25=25_000micro
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:
- Validator picks best response — only one miner gets the full reward; others get zero. Token count is validated against the actual response length.
- Validator stake — validators are chosen from attested block proposers (skin in the game).
- Cross-check across responses — if multiple miners answered, token counts should cluster; outliers are flagged.
Next: PoTU →