Slashing reference
The conditions under which Solidus is designed to deduct stake, suspend, or permanently ban a validator. Read this before you have a problem, not during one.
Specified, not yet enforced on this testnet
How slashing works
Solidus specifies a violation-point system rather than direct slashing on every infraction. Each misbehavior is designed to add points to a validator’s running counter, and crossing the threshold is designed to slash stake. None of this executes on the current testnet.
3 points
across an epoch
1 / epoch
per clean epoch
0 points
no slashing risk
Why not slash on every infraction?
Slashing conditions
Six conditions, ordered by severity, as specified. Soft conditions add 1 point and allow recovery; hard and catastrophic conditions are specified to slash instantly regardless of prior points. None is enforced today.
None
None
You were the elected proposer for a view but failed to produce a block before timeout (2.5s).
How to avoid: Keep the node within sync horizon (< 100 block lag). Don't run on a saturated host.
None
None
Your reported block height has not advanced for at least 1 hour during an epoch.
How to avoid: Monitor disk space and peer count. Sync stalls are usually a disk-full or no-peers situation.
0.5%
None
Node unreachable from validator gossip mesh for ≥ 24 consecutive hours during an active stake.
How to avoid: Wire up alerts to a pager. Use auto-restart (systemd Restart=on-failure or Docker restart=unless-stopped).
5%
1 epoch
Two valid signatures from your validator DID for conflicting blocks at the same height. Triggers instant slash.
How to avoid: Never run two instances of the same validator DID. Migrate by stopping the old node BEFORE starting the new one.
10%
5 epochs
Node down for ≥ 7 consecutive days. Triggers instant slash with extended suspension.
How to avoid: If you must take the validator down for > 1 day, initiate orderly unstake first — preserves the stake.
50%
Permanent
Network observes signatures from your DID from multiple geographic locations or from a known-compromised key. Triggers maximum slash + permanent suspension.
How to avoid: Keep ~/.solidus/keys/ off shared storage. Never commit. If a key leaks, initiate emergency rotation immediately.
Violation point math
Points accumulate across epochs. Each epoch you complete without a violation removes one point. You're never punished retroactively — the threshold check happens at epoch close, against your current epoch's accumulation only.
Recovery calculator
Use this if you currently have violation points and want to know how soon you're CLEAN — and how much margin you have before the next slash.
1
clean epochs2
more incidentsIf you get slashed
Work through these in order. Don't restart the node before steps 1–3 are done — you risk compounding the incident.
- →Open /validators — your row will show a red "Slashed" badge with the epoch number.
- →Cross-check on the chain explorer: explorer.solidus.network/validator/<did>
- →Save the last 1,000 lines of journald: journalctl -u solidus-node -n 1000 > slash-evidence.log
- →Note the timestamp of the slash event from the alert email / dashboard.
- →Equivocation? Check if the validator key is on more than one machine — most likely cause.
- →Long offline? Was the host actually down, or just unreachable? Check inbound peers + firewall.
- →Key compromise? Treat all keys as burned. See step 5.
- →Post in #solidus-operators with the cause + timestamp. Others may be seeing related issues.
- →Generate new validator key on a different host: solidus-cli did rotate
- →The old DID stays bound to your KYC but the key changes. Old key signatures are rejected from epoch +1.
- →If suspended N epochs, your stake auto-restores to the validator pool at epoch +N+1. No manual action.
- →If permanently banned, the stake remains slashed; you'll need a new validator DID + KYC binding.
Don't try to negotiate slashing

