DocsOperateSlashing reference

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

Everything below is the designed slashing system. It does not run today. The chain contains two double-sign detectors and neither is called from any live path, there is no transaction that applies a penalty, and the binary serving this testnet links only the crate holding the weaker of the two. No stake has been or can currently be deducted. Treat this page as the specification you will be held to when it is switched on, not as a description of what runs now.

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.

Threshold

3 points

across an epoch

Recovery

1 / epoch

per clean epoch

CLEAN status

0 points

no slashing risk

Why not slash on every infraction?

A network with zero tolerance for mistakes punishes infrastructure transients (transient ISP outages, runaway processes, OS upgrades gone wrong) the same as actual malicious behavior. The point system gives operators a recoverable buffer for "stuff happens" while still slashing on real misconduct.

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.

Missed block proposal
Soft
Violation points
1/3
Stake penalty

None

Suspension

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.

Sync stalled > 1 hour
Soft
Violation points
1/3
Stake penalty

None

Suspension

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.

Down for > 24 hours
Moderate
Violation points
2/3
Stake penalty

0.5%

Suspension

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).

Equivocation / double-sign
Hard
Violation points
3/3
Stake penalty

5%

Suspension

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.

Long offline > 7 days
Hard
Violation points
3/3
Stake penalty

10%

Suspension

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.

Validator DID compromised + signing detected
Catastrophic
Violation points
3/3
Stake penalty

50%

Suspension

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.

Example timeline
Epoch 142
1/3
Missed 1 block proposal+1 VP · OK
Epoch 143
0/3
Clean epoch−1 VP · back to 0
Epoch 144
1/3
Sync stalled 90 min+1 VP · OK
Epoch 145
2/3
Missed 1 block proposal+1 VP · CAUTION
Epoch 146
1/3
Clean epoch−1 VP
Epoch 147
3/3
Down for 26 hours+2 VP · SLASH (threshold breached)

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/3
100,000
10k (Light)100k (Subnet)1M (Core)
Epochs to CLEAN

1

clean epochs
Violations until slash

2

more incidents
Worst-case loss at next slash
Equivocation (5%)5,000 SLDS
Long offline (10%)10,000 SLDS
Key compromise (50%)50,000 SLDS
If you're at 2 violation points and unsure why, check /logs for WARN/ERROR lines in the last 2 epochs. The slashing-event log entries name the specific condition that triggered each point.

If you get slashed

Work through these in order. Don't restart the node before steps 1–3 are done — you risk compounding the incident.

1
Confirm the slash on-chain
2
Capture the immediate evidence
3
Determine the root cause
  • →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.
4
Notify the operator community
  • →Post in #solidus-operators with the cause + timestamp. Others may be seeing related issues.
5
Rotate keys (if compromise suspected)
  • →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.
6
Wait out the suspension, then restart
  • →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

Slashing is designed to be enforced by the protocol rather than by people: once it is live there is no support email, no appeal channel, and no foundation that can refund a stake. Your protection is preventing the slash, not arguing it afterwards. Nothing is enforced on this testnet yet.
Slashing Reference