Specific TOKEN amounts, slash percentages, and fee splits on this page are not finalized. Tokenomics is under active review — see tokenomics for status. Treat numbers here as illustrative of the leading candidate model, not committed.
The four slashable offenses
| Offense | How it’s detected | Counter window | Slash schedule (1st/2nd/3rd in 90d) |
|---|---|---|---|
| Corrupted delivery | BLAKE3 mismatch on bytes you sent | 24 h | 5% / 10% / 20% |
| Phantom announcement | You said has_blob=true, stream failed | None (immediate) | 5% / 10% / 20% |
| Rate manipulation | Charged rate ≠ advertised rate | 24 h | 5% / 10% / 20% |
| Blacklist violation | Served blacklisted hash after compliance window | None (immediate) | 10% / 25% / 50% |
How challenges arrive
Anyone can file a challenge with a 50 TOKEN challenge bond. You (the accused) learn about it through:- On-chain event —
SlashJudgeemits aChallengeFiled(nodeId, offenseType, ...)event. - Your own monitoring — if you monitor
SlashJudgeevents, you see it in near-real-time.
ChallengeFiled event against your NodeId.
Immediate offenses (phantom, blacklist)
Phantom announcement and blacklist violation have no counter-evidence window. A successfully-filed challenge is decisive —SlashJudge resolves immediately and StakingRegistry.slash() is called.
Your defensive posture is preventive, not reactive:
- Phantom: keep
probe_hold_durationat the default, monitor probe-hold saturation, never manually shrink the hold. - Blacklist: keep blacklist sync lag under 5 minutes; alert on any lag growth.
MAX_EVIDENCE_AGE_US), the challenger’s bond was filed against bad evidence — SlashJudge checks staleness and signature validity before acting. If the evidence is valid, you will be slashed.
Deferred offenses (corruption, rate manipulation)
These have a 24 h counter-evidence window. You can submit counter-evidence to refute the challenge.Corruption counter-evidence
The challenger claims: “You delivered bytes that didn’t match the hash.” Your counter-evidence: a signedDeliveryReceipt from the original requester confirming what you actually delivered. The contract verifies:
Rate-manipulation counter-evidence
The challenger claims: “You advertised rate X but charged Y.” Your counter-evidence: a signedRateChange gossip message showing a legitimate rate change happened between the disputed timestamps. Production RateChange messages carry a slash_sig specifically to serve this function.
If you have the RateChange with a valid slash_sig and it fits within the disputed window, you win.
Filing a counter-challenge
Resolving challenges
After the 24 h window (or immediately for immediate offenses):- Checks the counter-evidence (if any) against the challenge.
- If the challenge wins: calls
StakingRegistry.slash(nodeAddress, amount). 50% of the slashed TOKEN goes to the challenger; 50% is sent directly to the burn address. - If the challenge loses: challenger’s bond is slashed.
Challenging others
You can submit challenges against nodes you catch misbehaving. 50% bounty on successful slashes is real incentive. Operational requirements:- Capture evidence at the time of the offense. Store the signed
ProbeResponse,StreamResponse, orRateChangewith the misbehaving node’sslash_sig. - Submit within
MAX_EVIDENCE_AGE_US. Stale evidence is rejected (the window is strictly less than the unbonding period). - Have your 50 TOKEN challenge bond available. Returned if the challenge succeeds.
Recovering from a slash
A slash is not a ban. After being slashed:- Stake is reduced; the node continues running if above
minStake. - Reputation takes a hit (gossip-propagated).
- No deregistration is forced.
minStake:
If you’re slashed below minStake
The node is auto-ejected from the mesh. You can re-register with a fresh stake. Re-registration:
- Increments your
NodeInfo.nonce. - Preserves
firstRegisteredAt— reputation cold-start bonuses do not apply to the same operator address twice.
Common mistakes
- Ignoring
decdn_slash_evidence_exposure_total. This is your “I’m about to be slashed” warning. Treat it as P1. - Downscaling
probe_hold_durationto squeeze cache. You will phantom-announce the first time cache pressure spikes. - Rate changes during active streams without closing cleanly. Counts as rate manipulation.
- Blacklist sync lag past 30 minutes. Emergency entries have a 2 h slash grace — 30 min of lag leaves 90 min of safety margin, which disappears fast under operational issues.