• Adrian Catangiu's avatar
    BEEFY: implement equivocations detection, reporting and slashing (#13121) · c21f292a
    Adrian Catangiu authored
    
    
    * client/beefy: simplify self_vote logic
    
    * client/beefy: migrate to new state version
    
    * client/beefy: detect equivocated votes
    
    * fix typos
    
    * sp-beefy: add equivocation primitives
    
    * client/beefy: refactor vote processing
    
    * fix version migration for new rounds struct
    
    * client/beefy: track equivocations and create proofs
    
    * client/beefy: adjust tests for new voting logic
    
    * sp-beefy: fix commitment ordering and equality
    
    * client/beefy: simplify handle_vote() a bit
    
    * client/beefy: add simple equivocation test
    
    * client/beefy: submit equivocation proof - WIP
    
    * frame/beefy: add equivocation report runtime api - part 1
    
    * frame/beefy: report equivocation logic - part 2
    
    * frame/beefy: add pluggable Equivocation handler - part 3
    
    * frame/beefy: impl ValidateUnsigned for equivocations reporting
    
    * client/beefy: submit report equivocation unsigned extrinsic
    
    * primitives/beefy: fix tests
    
    * frame/beefy: add default weights
    
    * frame/beefy: fix tests
    
    * client/beefy: fix tests
    
    * frame/beefy-mmr: fix tests
    
    * frame/beefy: cross-check session index with equivocation report
    
    * sp-beefy: make test Keyring useable in pallet
    
    * frame/beefy: add basic equivocation test
    
    * frame/beefy: test verify equivocation results in slashing
    
    * frame/beefy: test report_equivocation_old_set
    
    * frame/beefy: add more equivocation tests
    
    * sp-beefy: fix docs
    
    * beefy: simplify equivocations and fix tests
    
    * client/beefy: address review comments
    
    * frame/beefy: add ValidateUnsigned to test/mock runtime
    
    * client/beefy: fixes after merge master
    
    * fix missed merge damage
    
    * client/beefy: add test for reporting equivocations
    
    Also validated there's no unexpected equivocations reported in the
    other tests.
    
    Signed-off-by: default avataracatangiu <[email protected]>
    
    * sp-beefy: move test utils to their own file
    
    * client/beefy: add negative test for equivocation reports
    
    * sp-beefy: move back MmrRootProvider - used in polkadot-service
    
    * impl review suggestions
    
    * client/beefy: add equivocation metrics
    
    ---------
    
    Signed-off-by: default avataracatangiu <[email protected]>
    Co-authored-by: parity-processbot <>
    c21f292a