• asynchronous rob's avatar
    Implement PoV Distribution Subsystem (#1344) · b651e4af
    asynchronous rob authored
    * introduce candidatedescriptor type
    
    * add PoVDistribution message type
    
    * loosen bound on PoV Distribution to account for equivocations
    
    * re-export some types from the messages module
    
    * begin PoV Distribution subsystem
    
    * remove redundant index from PoV distribution
    
    * define state machine for pov distribution
    
    * handle overseer signals
    
    * set up control flow
    
    * remove `ValidatorStatement` section
    
    * implement PoV fetching
    
    * implement distribution logic
    
    * add missing `
    
    * implement some network bridge event handlers
    
    * stub for message processing, handle our view change
    
    * control flow for handling messages
    
    * handle `awaiting` message
    
    * handle any incoming PoVs and redistribute
    
    * actually provide a subsystem implementation
    
    * remove set-builder notation
    
    * begin testing PoV distribution
    
    * test that we send awaiting messages only to peers with same view
    
    * ensure we distribute awaited PoVs to peers on view changes
    
    * test that peers can complete fetch and are rewarded
    
    * test some reporting logic
    
    * ensure peer is reported for flooding
    
    * test punishing peers diverging from awaited protocol
    
    * test that we eagerly complete peers' awaited PoVs based on what we receive
    
    * test that we prune the awaited set after receiving
    
    * expand pov-distribution in guide to match a change I made
    
    * remove unneeded import
    b651e4af