• Adrian Catangiu's avatar
    pallet-beefy-mmr: add API for BEEFY Authority Sets (#11406) · 3018051c
    Adrian Catangiu authored
    
    
    * pallet-beefy: add Config::OnNewValidatorSet type
    
    Add a hook to pallet-beefy for doing specific work when
    BEEFY validator set changes.
    
    For example, this can be used by pallet-beefy-mmr to cache
    a lightweight MMR root over validators and make it available
    to light clients.
    
    * pallet-beefy-mmr: implement OnNewValidatorSet
    
    Implement pallet-beefy::OnNewValidatorSet to be notified of BEEFY
    validator set changes. Use the notifications to compute and cache
    a light weight 'BEEFY authority set' which is an MMR root over
    BEEFY validator set plus some extra info.
    
    Previously, pallet-beefy-mmr was interogating pallet-beefy about
    validator set id on every block to find out when it needs to recompute
    the authority set.
    By using the event-driven approach in this commit, we also save one
    extra state interogation per block.
    
    * pallet-beefy-mmr: add new authority_set() API
    
    Expose current and next BEEFY authority sets through runtime API.
    These can be directly used by light clients to avoid having them
    compute them themselves based on BEEFY validator sets.
    
    Signed-off-by: default avataracatangiu <[email protected]>
    
    * rename BeefyMmr exposed runtime api
    3018051c