Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decide slashing behavior for downtime and double signing #234

Closed
danwt opened this issue Jul 14, 2022 · 3 comments
Closed

Decide slashing behavior for downtime and double signing #234

danwt opened this issue Jul 14, 2022 · 3 comments
Assignees
Labels
help wanted Open for all. You do not need permission to work on these.

Comments

@danwt
Copy link
Contributor

danwt commented Jul 14, 2022

Problem

We should define slashing behavior, to make sure we are not being too lax or harsh, and are encouraging high validator uptime while accepting that occasional mistakes happen.

Context

In Cosmos blockchains there are mechanisms to incentivize validator operators to run a good service. Validators should take part in the consensus algorithm, rather than idle, and they should not try to trick network participants by signing more than one block for a given consensus round. The notions downtime and double signing (also known as equivocation) capture these two wishes.

Downtime is automatically detected by on-chain code, while double signs are observed by the network and can be submitted in evidence packets to be processed on-chain. When either is detected, the validator in question is punished by slashing.

A slash event burns some tokens from the misbehaving validator and optionally jails them: prevents them from taking part in consensus (and thus receiving rewards) for a period. In the case of double signing, the validator is additionally tombstoned. A tombstoned validator is bricked; all its delegators have to undelegate from it to get their tokens back, and the validator can never take part in consensus again.

Interchain Security expands the concepts because the same validators, backed by the same stake, are active across many chains. Downtime messages or evidence from consumer chains who are inheriting security from the staked tokens, are submitted to the provider chain, where the staked tokens are stored. Thus the validators lose their tokens on the provider chain if they misbehave, and any impact from jailing or tombstoning feeds back to the consumer chain as per the communication protocol.

Detailed problem

We should define rules for slashing exactly. For example, what should happen when double sign evidence arrives on the provider chain? Presumably the validator should be slashed and tombstoned. Should further slashing be possible after this? (Consider that there are multiple consumer chains who can submit evidence or downtime messages).

@danwt
Copy link
Contributor Author

danwt commented Jul 14, 2022

@mpoke
Copy link
Contributor

mpoke commented Jul 28, 2022

I think this issue was already discussed:

  • a validator is slashed only once for double signing (regardless of the number of chain it double signs on) and then tombstoned (i.e., jailed forever);
  • a validator cannot get slashed multiple times for downtime on the same chain without having to unjail itself first;
  • a validator can get slashed multiple times for downtime on different chains without having to unjail itself first.

As far as I can think of, this comment on #220 is the only question that remains. @danwt Do you have other open questions in mind?

@mpoke
Copy link
Contributor

mpoke commented Aug 8, 2022

@jtremback I close this since I think it was solved by the discussion here #220 (comment).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Open for all. You do not need permission to work on these.
Projects
No open projects
Status: Done
Development

No branches or pull requests

4 participants