Skip to content
  • Andrei Sandu's avatar
    Runtime: allow backing multiple candidates of same parachain on different cores (#3231) · 2431001e
    Andrei Sandu authored
    
    
    Fixes https://github.com/paritytech/polkadot-sdk/issues/3144
    
    Builds on top of https://github.com/paritytech/polkadot-sdk/pull/3229
    
    ### Summary
    Some preparations for Runtime to support elastic scaling, guarded by
    config node features bit `FeatureIndex::ElasticScalingMVP`. This PR
    introduces a per-candidate `CoreIndex` but does it in a hacky way to
    avoid changing `CandidateCommitments`, `CandidateReceipts` primitives
    and networking protocols.
    
    #### Including `CoreIndex` in `BackedCandidate`
    If the `ElasticScalingMVP` feature bit is enabled then
    `BackedCandidate::validator_indices` is extended by 8 bits.
    The value stored in these bits represents the assumed core index for the
    candidate.
    
    It is temporary solution which works by creating a mapping from
    `BackedCandidate` to `CoreIndex` by assuming the `CoreIndex` can be
    discovered by checking in which validator group the validator that
    signed the statement is.
    
    TODO:
    - [x] fix tests
    - [x] add new tests
    - [x] Bump runtime API for Kusama, so we have that node features thing!
    -> https://github.com/polkadot-fellows/runtimes/pull/194
    
    ---------
    
    Signed-off-by: default avatarAndrei Sandu <[email protected]>
    Signed-off-by: default avataralindima <[email protected]>
    Co-authored-by: default avataralindima <[email protected]>
    2431001e