Proof of AI Tokens Used (PoATU)
PoATU = recompensa minerului scalată direct cu tokens AI generați în procesarea unui task. Înlocuiește coinbase-ul fix de 50 OMBRA per bloc (pre-fork) cu o emisiune scalată cu munca reală.
Formula
reward_miner = (outputTokens + thinkingTokens) / 1,000,000 OMBRA
Sau echivalent: 1 token AI = 1 micro-OMBRA (1 OMBRA = 1,000,000 micro-OMBRA).
De ce excludem inputTokens
Input tokens (prompt-ul user-ului) sunt costul user-ului, nu munca minerului. Mineri ar putea încărca artificial input-uri irelevante pentru a umfla reward; excluzând input din formulă, închidem acest vector de manipulare.
Ce sunt thinkingTokens?
Modele moderne (Claude Opus 4.7, o1, gpt-5-thinking) au chain-of-thought reasoning intern care consumă tokens semnificative dar nu apar în output-ul vizibil. OmbraChain le tratează ca "muncă reală" pentru că reflectă compute consumat (același cost financiar la API provider).
Exemple numerice
| Tip task | Output | Thinking | Total | Reward miner |
|---|---|---|---|---|
| Chat scurt | 5K | 0 | 5,000 | 0.005 OMBRA |
| Chat tipic | 100K | 200K | 300,000 | 0.30 OMBRA |
| Code simple | 50K | 50K | 100,000 | 0.10 OMBRA |
| Code agentic | 500K | 1.5M | 2,000,000 | 2.00 OMBRA |
| Long-form analysis | 1M | 3M | 4,000,000 | 4.00 OMBRA |
Cod sursă
Formula este implementată în packages/core/src/consensus/reward.ts:
export function calculateMinerReward(outputTokens: number, thinkingTokens: number): bigint {
if (outputTokens < 0 || thinkingTokens < 0) return 0n;
const totalTokens = BigInt(outputTokens + thinkingTokens);
return (totalTokens * 1_000_000n) / TOKENS_PER_OMBRA;
}
Constantele:
TOKENS_PER_OMBRA = 1_000_000n
Sursa token counts
Dispatcher-ul AI raportează tokensOut și thinkingTokens în MinerOutput:
export interface MinerOutput {
content: string;
thinking?: string;
model: string;
tokensIn?: number;
tokensOut?: number;
thinkingTokens?: number; // v2
durationMs: number;
}
Pentru providers care nu raportează direct (CLI Claude Code, Ollama local), enrichTokens() estimează heuristic ~4 chars per token din content și thinking string-uri.
Comparație cu v1
| Aspect | v1 PoAW Strict | v2 PoATU |
|---|---|---|
| Coinbase | 50 OMBRA per bloc (halving) | 0 (dispărut) |
| Reward miner | 70% × fee | (out+thinking)/1M + 70% × fee |
| Emisiune | Fix per bloc (5760/zi × 50 ≈ 288K OMBRA/zi inflație) | Scalată cu munca AI reală |
| Bloc gol | Posibil cu coinbase 50 OMBRA | 0 reward (minerul nu primește nimic pentru bloc gol) |
Trade-off-uri
De ce raport 1M:1?
- 1 OMBRA per million tokens reflectă cost real cloud LLM (~$0.01-1 per million tokens la Claude/GPT pricing)
- Scalează natural cu costul real al compute
- Granularitate fină (micro-OMBRA) pentru task-uri mici
De ce nu plătim per durată (durationMs)?
- Hardware variabil (CPU lent vs GPU rapid) → același task durează diferit
- Tokens sunt proof of work concret (verificabil prin re-rulare)
De ce nu plătim per quality score?
- Scoring fără re-rulare necesită încredere în validator
- Reward din tokens = obiectiv; bonus din validator score = opțional (5% fee)