Skip to main content

Fee split — user task

Când un user submitează un task AI cu fee X OMBRA, acel fee se distribuie post-fork 70/25/5:

miner = 70% ← cel care procesează task-ul
burn = 25% ← dispare din supply (deflation)
validator = 5% ← cel care atestă blocul cu TASK_REWARD

Diagramă

┌──────────────────────────────────────────────┐
│ │
│ USER FEE: 100% (ex: 1 OMBRA) │
│ │
└──────────────────────────────────────────────┘

├──── 70% → MINER (cel ce procesează AI)

├──── 25% → BURN (deflation, dispare)

└──── 5% → VALIDATOR (semnează blocul)

Exemplu

User submitează TASK_SUBMIT cu fee 1 OMBRA:

CategorieProcentValoare
Miner (procesează task)70%0.70 OMBRA
Burn (dispare)25%0.25 OMBRA
Validator (atestă bloc)5%0.05 OMBRA
Total100%1.00 OMBRA

În plus, miner-ul primește separat reward-ul PoATU = (output+thinking)/1M, iar validatorul primește încă 0.0001 OMBRA base reward per attestare.

Cod sursă

export const FEE_SPLIT_V2 = {
miner: 70n,
burn: 25n,
validator: 5n,
} as const;

export function calculateFeeSplit(fee: bigint): FeeDistribution {
return {
miner: (fee * 70n) / 100n,
burn: (fee * 25n) / 100n,
validator: (fee * 5n) / 100n,
};
}

Aplicare on-chain

În fluxul TASK_REWARD distribuit de validator după procesare:

const { miner, burn, validator } = calculateFeeSplit(task.fee);

// Construiește TASK_REWARD cu split
const rewards = [
{ address: bestMinerId.address, amount: miner + tokensReward, reason: "miner" },
{ address: validatorAddress, amount: validator, reason: "validator" },
{ address: TREASURY_ADDRESS, amount: 0n, reason: "burn" }, // amount=0, doar marker
];

Pentru reason: "burn", chain.applyTaskReward() NU adaugă la nicio adresă (tokens dispar):

for (const reward of tx.rewards) {
if (reward.reason === "burn") continue; // skip — burn
// ... adaugă la balance address
}

Comparație v1 vs v2

Categoriev1 splitv2 splitSchimbare
Miner70%70%=
Proposer20%0% (eliminat)−20%
Validator5%5%=
Treasury5%0% (eliminat)−5%
Burn0%25%+25%

V2 mută alocarea proposer + treasury la burn. Asta:

  • Reduce inflația (25% din fee-uri se distrug)
  • Elimină Treasury (nu mai era folosit decât ca buffer fee → distribuție)
  • Proposer câștigă acum din: validator base reward (dacă self-atestă) + burn ales mai mic pentru ele

Min fee

Fee minim pentru TASK_SUBMIT: 0.01 OMBRA (din MIN_TASK_FEE = 10_000n micro).

Sub minim → tx respinsă la validateTxAgainstState().

Vezi și