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
Labels
J0-enhancement
An additional feature request.
Milestone
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
The text was updated successfully, but these errors were encountered: