Validator mode
Toți minerii activi sunt automat eligibili ca validatori — semnezi blocuri produse de proposer și primești reward extra. Nu există stake separat și nu trebuie activare explicită.
Ce face un validator?
Când un proposer (alt miner) produce un bloc nou:
- Proposer-ul cere atestare de la 1-N validatori selectați prin reputation-weighted VRF
- Validator-ul primește consensus target:
hash(index|prevHash|proposer|txRoot|tokensBurned|tokensConsumed) - Validator-ul verifică datele (recomputează hash-ul local)
- Dacă valid → semnează cu cheia sa Ed25519 → trimite înapoi proposer-ului
- Proposer-ul include
attestations[]în blocul final - La next bloc,
distributeValidatorRewards()plătește atestatorii
Eligibilitate
| Cerință | Detalii |
|---|---|
| MinerNFT înregistrat | Vezi Register NFT |
| Reputation ≥ 1 | Sub 1 = blacklist temporar |
| Wallet online | P2P connection activă cu mainnet |
| Backend NU obligatoriu | Validator pur (fără task processing) e OK |
Liveness guarantee: proposer-ul e MEREU în lista de validatori (slot 0), pentru a asigura cel puțin o semnătură pe fiecare bloc.
Reward per atestare
reward_validator = VALIDATOR_BASE_REWARD + (5% × total_fees_in_block) / numValidators
unde:
VALIDATOR_BASE_REWARD = 0.0001 OMBRA(100 micro)numValidators= câți validatori au atestat acel bloc
Exemple
| Total fees în bloc | numValidators | Reward per validator |
|---|---|---|
| 0 (bloc gol) | 1 | 0.0001 OMBRA |
| 0.5 OMBRA | 1 | 0.0251 OMBRA |
| 0.5 OMBRA | 3 | 0.00843 OMBRA |
| 2.0 OMBRA | 1 | 0.1001 OMBRA |
| 2.0 OMBRA | 5 | 0.0201 OMBRA |
Cu cât mai puțini validatori atestă un bloc, cu atât reward-ul tău e mai mare. Reputation mare îți crește șansele să fii ales.
Workflow tehnic
1. Proposer cere atestare
proposer → POST /ombra/attestation-request/1.0.0 → validator
payload: {
blockIndex: 9523,
prevHash: "abc...",
proposer: "5bb...",
txRoot: "def...",
tokensBurned: "1000",
tokensConsumed: "500000"
}
2. Validator verifică
const target = computeAttestationTarget({
index, prevHash, proposer, txRoot, tokensBurned, tokensConsumed
});
// Validează că NU contradice mempool-ul local
if (alreadySeenConflictingBlock(prevHash, index)) reject();
// Validează că proposer e eligibil VRF
if (!isProposerSelected(blockIndex)) reject();
3. Semnează
const signature = ed25519.sign(target, privateKey);
return {
validatorAddress: walletAddress,
signature: hex(signature),
publicKey: hex(walletPublicKey)
};
4. Proposer construiește blocul
block.attestations = [
{ validatorAddress, signature, publicKey },
// ... pentru fiecare validator care a răspuns
];
block.hash = sha256(block + stateRoot);
broadcast(block);
5. Network validează blocul
Fiecare nod care primește blocul:
for (const att of block.attestations) {
const target = computeAttestationTarget({...block});
if (!ed25519.verify(att.signature, target, att.publicKey)) reject();
if (!isValidatorEligible(att.validatorAddress, block.index)) reject();
}
if (block.attestations.length === 0) reject(); // min 1 attestation post-fork
6. Reward distribuit
În applyBlockTransactions() post-fork:
const numValidators = block.attestations.length;
const totalFees = sum(block.txs.map(tx => tx.fee));
const rewardPerValidator = calculateValidatorReward(totalFees, numValidators);
for (const att of block.attestations) {
const acc = await db.getAccount(att.validatorAddress);
await db.putAccount({ ...acc, balance: acc.balance + rewardPerValidator });
}
Activare în wallet
În Ombra Wallet, validator mode e implicit activ odată cu mining-ul. Nu există toggle separat.
Pentru validator-only mode (fără task processing):
- Tab Mining → Settings → toggle
Procesează task-uri→ OFF - Toggle
Atestă blocuri→ ON - Click Activează Mining
Wallet-ul va semna blocuri propuse de alți mineri fără să proceseze task-uri AI.
Avantaj: Zero cost backend (Claude/API/Ollama nu necesare). Doar wallet pornit + conexiune. Dezavantaj: Reward mic (~0.0001 OMBRA × 5760 blocks/zi × P(selected) — depinde de reputation).
Statistici validator
Tab Mining → secțiunea Validator Stats:
- Atestări semnate (24h / lifetime)
- Reward total din atestări
- Reputation curent
- Slot rate (% blocuri în care ai fost selectat)
Anti-cheat
Mainnet detectează validatori care semnează target-uri invalide (ex: bloc cu txRoot care nu corespunde tx-urilor):
- Prima detectare: −20 reputation
- A doua detectare: blacklist 1000 blocuri
- A treia detectare: blacklist permanent (slashing)
Wallet-ul recomandă MEREU înainte de semnătură — dacă proposer trimite ceva invalid, atestare e respinsă automat fără penalty.