Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Slash unjustified votes / GRANDPA safety fault (answering) #2771

Open
soulofamachine opened this issue Jun 3, 2019 · 2 comments
Open

Slash unjustified votes / GRANDPA safety fault (answering) #2771

soulofamachine opened this issue Jun 3, 2019 · 2 comments
Labels
J0-enhancement An additional feature request.
Milestone

Comments

@soulofamachine
Copy link
Contributor

After #2129 , we want to slash unjustified votes (after a time bound public challenge period)

Detailed research here

Unjustified vote
Relative to a block 𝐵 that was finalized in Grandpa round 𝑟𝐵, an unjustified vote is either a pre-vote or a pre-commit signed by a validator 𝑣 in some round 𝑟>𝑟𝐵, for a chain that does not contain 𝐵. Simply put, it means voting for a chain that is incompatible with the current chain of finalized blocks.

It follows from Grandpa paper that this can only occur if either the validator 𝑣 is not following the standard protocol (level 3 misconduct), or 𝑣 observed a rejecting set of votes (defined further below) for 𝐵 in a prior round. The detection mechanism thus works as follows. It starts when another validator 𝑣′ submits a tx 𝑇 containing a reference to block 𝐵 with a proof that it is finalized, and the unjustified vote (or collection or votes in case of concurrence) relative to 𝐵. This tx raises a public time-bound challenge. If the challenge goes unanswered after some time, we slash 10% from the signer(s) of the unjustified vote(s), and reward 𝑣′ 10% of the slashings (as the signer(s) should be in capacity to answer the challenge if they are honest). Otherwise, any validator 𝑣″ can answer the challenge by, in turn, starting a detection mechanism for a rejecting set of votes (defined below). In that case, we finalize the current mechanism without penalizing anybody, and we keep a register of all the validators that have raised or answered challenges so far (i.e. 𝑣′ and 𝑣″), as they will all be rewarded when the culprits are eventually found.

We will say more about slashing concurrent cases of unjustified votes by several validators further below. We ignore any further unjustified votes by the same validator in the same epoch.


Wanted to put up an issue for this as it’s important for Kusama, please CRUD as needed.

This is related to issue: #1865

Currently owned by @andresilva @marcio-diaz

@soulofamachine soulofamachine added this to the 2.0-kusama milestone Jun 3, 2019
@soulofamachine soulofamachine changed the title Slash upon Grandpa Slash unjustified votes / GRANDPA safety fault (answering) Jun 3, 2019
@marcio-diaz marcio-diaz self-assigned this Jun 4, 2019
@marcio-diaz marcio-diaz removed their assignment Oct 23, 2019
@gavofyork
Copy link
Member

@andresilva @rphmeier is this sorted yet?

@gavofyork gavofyork added the J0-enhancement An additional feature request. label Nov 29, 2019
@rphmeier
Copy link
Contributor

No, not yet. Andre has a draft PR open for the initial GRANDPA slashing stuff. #2129

@gnunicorn gnunicorn modified the milestones: 2.1, Polkadot Mar 4, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
J0-enhancement An additional feature request.
Projects
None yet
Development

No branches or pull requests

5 participants