Replace ValidationData with PersistedValidationData (#291)

* Replace ValidationData with PersistedValidationData

* Update polkadot
This commit is contained in:
Sergei Shulepov
2021-01-19 15:20:12 +01:00
committed by GitHub
parent 8ebcf10e31
commit d6a7bc4e30
9 changed files with 541 additions and 507 deletions
+12 -11
View File
@@ -32,7 +32,7 @@ use cumulus_primitives::{
HRMP_OUTBOUND_MESSAGES, HRMP_WATERMARK, NEW_VALIDATION_CODE, PROCESSED_DOWNWARD_MESSAGES,
UPWARD_MESSAGES, VALIDATION_DATA,
},
OutboundHrmpMessage, UpwardMessage, ValidationData,
OutboundHrmpMessage, UpwardMessage, PersistedValidationData,
};
use sp_core::storage::{ChildInfo, TrackedStorageKey};
use sp_externalities::{
@@ -164,11 +164,11 @@ pub fn validate_block<B: BlockT, E: ExecuteBlock<B>>(params: ValidationParams) -
})
.unwrap_or_default();
let validation_data: ValidationData = overlay
let validation_data: PersistedValidationData = overlay
.storage(VALIDATION_DATA)
.flatten()
.and_then(|v| Decode::decode(&mut &v[..]).ok())
.expect("`ValidationData` is required to be placed into the storage!");
.expect("`PersistedValidationData` is required to be placed into the storage!");
let horizontal_messages = match overlay.storage(HRMP_OUTBOUND_MESSAGES).flatten() {
Some(encoded) => Vec::<OutboundHrmpMessage>::decode(&mut &encoded[..])
@@ -180,7 +180,7 @@ pub fn validate_block<B: BlockT, E: ExecuteBlock<B>>(params: ValidationParams) -
.storage(HRMP_WATERMARK)
.flatten()
.map(|v| Decode::decode(&mut &v[..]).expect("HRMP watermark is not encoded correctly"))
.unwrap_or(validation_data.persisted.block_number);
.unwrap_or(validation_data.block_number);
ValidationResult {
head_data,
@@ -200,32 +200,33 @@ struct WitnessExt<'a, B: BlockT> {
}
impl<'a, B: BlockT> WitnessExt<'a, B> {
/// Checks that the encoded `ValidationData` in `data` is correct.
/// Checks that the encoded `PersistedValidationData` in `data` is correct.
///
/// Should be removed with: https://github.com/paritytech/cumulus/issues/217
/// When removed `WitnessExt` could also be removed.
fn check_validation_data(&self, mut data: &[u8]) {
let validation_data = ValidationData::decode(&mut data).expect("Invalid `ValidationData`");
let validation_data = PersistedValidationData::decode(&mut data)
.expect("Invalid `PersistedValidationData`");
assert_eq!(
self.params.parent_head,
validation_data.persisted.parent_head
validation_data.parent_head
);
assert_eq!(
self.params.relay_chain_height,
validation_data.persisted.block_number
validation_data.block_number
);
assert_eq!(
self.params.hrmp_mqc_heads,
validation_data.persisted.hrmp_mqc_heads
validation_data.hrmp_mqc_heads
);
assert_eq!(
self.params.dmq_mqc_head,
validation_data.persisted.dmq_mqc_head,
validation_data.dmq_mqc_head,
);
assert_eq!(
self.params.relay_storage_root,
validation_data.persisted.relay_storage_root,
validation_data.relay_storage_root,
);
}
}
+4 -7
View File
@@ -16,7 +16,7 @@
use crate::ParachainBlockData;
use cumulus_primitives::{PersistedValidationData, ValidationData};
use cumulus_primitives::PersistedValidationData;
use cumulus_test_client::{
runtime::{Block, Hash, Header, UncheckedExtrinsic, WASM_BINARY},
transfer, Client, DefaultTestClientBuilderExt, InitBlockBuilder, LongestChain,
@@ -100,12 +100,9 @@ fn build_block_with_witness(
let block_id = BlockId::Hash(client.info().best_hash);
let mut builder = client.init_block_builder_at(
&block_id,
Some(ValidationData {
persisted: PersistedValidationData {
block_number: 1,
parent_head: parent_head.encode().into(),
..Default::default()
},
Some(PersistedValidationData {
block_number: 1,
parent_head: parent_head.encode().into(),
..Default::default()
}),
sproof_builder,