Implement validation data refactor (#1585)

* update primitives

* correct parent_head field

* make hrmp field pub

* refactor validation data: runtime

* refactor validation data: messages

* add arguments to full_validation_data runtime API

* port runtime API

* mostly port over candidate validation

* remove some parameters from ValidationParams

* guide: update candidate validation

* update candidate outputs

* update ValidationOutputs in primitives

* port over candidate validation

* add a new test for no-transient behavior

* update util runtime API wrappers

* candidate backing

* fix missing imports

* change some fields of validation data around

* runtime API impl

* update candidate validation

* fix backing tests

* grumbles from review

* fix av-store tests

* fix some more crates

* fix provisioner tests

* fix availability distribution tests

* port collation-generation to new validation data

* fix overseer tests

* Update roadmap/implementers-guide/src/node/utility/candidate-validation.md

Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>

Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
This commit is contained in:
Robert Habermeier
2020-08-18 14:41:40 +02:00
committed by GitHub
parent 3395044402
commit 262574fc49
36 changed files with 619 additions and 1153 deletions
@@ -18,9 +18,9 @@ use super::*;
use assert_matches::assert_matches;
use polkadot_erasure_coding::{branches, obtain_chunks_v1 as obtain_chunks};
use polkadot_primitives::v1::{
AvailableData, BlockData, CandidateCommitments, CandidateDescriptor, GlobalValidationData,
GroupIndex, GroupRotationInfo, HeadData, LocalValidationData, OccupiedCore,
OmittedValidationData, PoV, ScheduledCore, ValidatorPair,
AvailableData, BlockData, CandidateCommitments, CandidateDescriptor, GroupIndex,
GroupRotationInfo, HeadData, PersistedValidationData, OccupiedCore,
PoV, ScheduledCore, ValidatorPair,
};
use polkadot_subsystem_testhelpers as test_helpers;
use polkadot_node_network_protocol::ObservedRole;
@@ -148,8 +148,7 @@ struct TestState {
relay_parent: Hash,
ancestors: Vec<Hash>,
availability_cores: Vec<CoreState>,
global_validation_data: GlobalValidationData,
local_validation_data: LocalValidationData,
persisted_validation_data: PersistedValidationData,
}
fn validator_pubkeys(val_ids: &[Sr25519Keyring]) -> Vec<ValidatorId> {
@@ -210,17 +209,10 @@ impl Default for TestState {
];
let relay_parent = Hash::repeat_byte(0x05);
let local_validation_data = LocalValidationData {
let persisted_validation_data = PersistedValidationData {
parent_head: HeadData(vec![7, 8, 9]),
balance: Default::default(),
code_upgrade_allowed: None,
validation_code_hash: Default::default(),
};
let global_validation_data = GlobalValidationData {
max_code_size: 1000,
max_head_data_size: 1000,
block_number: Default::default(),
hrmp_mqc_heads: Vec::new(),
};
let validator_index = Some((validators.len() - 1) as ValidatorIndex);
@@ -233,8 +225,7 @@ impl Default for TestState {
validator_groups,
availability_cores,
head_data,
local_validation_data,
global_validation_data,
persisted_validation_data,
relay_parent,
ancestors,
validator_index,
@@ -243,13 +234,8 @@ impl Default for TestState {
}
fn make_available_data(test: &TestState, pov: PoV) -> AvailableData {
let omitted_validation = OmittedValidationData {
global_validation: test.global_validation_data.clone(),
local_validation: test.local_validation_data.clone(),
};
AvailableData {
omitted_validation,
validation_data: test.persisted_validation_data.clone(),
pov,
}
}
@@ -434,8 +420,7 @@ fn reputation_verification() {
validator_groups,
availability_cores,
head_data: _,
local_validation_data: _,
global_validation_data: _,
persisted_validation_data: _,
relay_parent: current,
ancestors,
validator_index: _,