- 
                Notifications
    You must be signed in to change notification settings 
- Fork 1k
Closed
paritytech/substrate
#14744Description
Description
BEEFY voters should only vote on GRANDPA finalized blocks - vote only on canonic chain/fork.
Votes on blocks from different forks should (automatically) lead to stake slashing (more aggressive slashing than GRANDPA equivocations, since this scenario is intentionally dishonest).
We should add client/voter detection of such misbehavior as well as runtime logic for reporting proofs of misbehavior and subsequent slashing consequences.
Proposed solution
Runtime side
- add new pallet::calltopallet_beefysimilar to report_equivocation that takesInvalidPayloadProof
- hook pallet_beefy_mmrtopallet_beefy::EquivocationReportSystemto be able to verifyInvalidPayloadProof:- verify inner GrandpaProof to make sure the current chain fork is finalized at least up to offending vote height,
- verify offending_vote.mmr_root!= on-chainmmr_root(combined with above, it proves what we need)
 
- report offense to staking so offending vote author gets slashed
Client-side
- add "fisherman" capabilities to voter gossip - on detecting votes for historical forks, it builds the required proof of misbehavior and submits report.
Metadata
Metadata
Assignees
Labels
No labels