Elastic scaling: use an assumed CoreIndex in candidate-backing (#3229)

First step in implementing
https://github.com/paritytech/polkadot-sdk/issues/3144

### Summary of changes
- switch statement `Table` candidate mapping from `ParaId` to
`CoreIndex`
- introduce experimental `InjectCoreIndex`  node feature.
- determine and assume a `CoreIndex` for a candidate based on statement
validator index. If the signature is valid it means validator controls
the validator that index and we can easily map it to a validator
group/core.
- introduce a temporary provisioner fix until we fully enable elastic
scaling in the subystem. The fix ensures we don't fetch the same
backable candidate when calling `get_backable_candidate` for each core.

TODO:
- [x] fix backing tests
- [x] fix statement table tests
- [x] add new test

---------

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>
Signed-off-by: alindima <alin@parity.io>
Co-authored-by: alindima <alin@parity.io>
This commit is contained in:
Andrei Sandu
2024-02-22 15:22:31 +07:00
committed by GitHub
parent e76b244853
commit 60e537b95f
13 changed files with 462 additions and 96 deletions
+3 -3
View File
@@ -35,8 +35,8 @@ pub use generic::{Config, Context, Table};
pub mod v2 {
use crate::generic;
use primitives::{
CandidateHash, CommittedCandidateReceipt, CompactStatement as PrimitiveStatement, Id,
ValidatorIndex, ValidatorSignature,
CandidateHash, CommittedCandidateReceipt, CompactStatement as PrimitiveStatement,
CoreIndex, ValidatorIndex, ValidatorSignature,
};
/// Statements about candidates on the network.
@@ -59,7 +59,7 @@ pub mod v2 {
>;
/// A summary of import of a statement.
pub type Summary = generic::Summary<CandidateHash, Id>;
pub type Summary = generic::Summary<CandidateHash, CoreIndex>;
impl<'a> From<&'a Statement> for PrimitiveStatement {
fn from(s: &'a Statement) -> PrimitiveStatement {