Remove TransientValidationData (#2272)

* collation-generation: use persisted validation data

* node: remote FullValidationData API

* runtime: remove FullValidationData API

* backing tests: use persisted validation data

* FullCandidateReceipt: use persisted validation data

This is not a big change since this type is not used anywhere

* Remove ValidationData and TransientValidationData

Also update the guide
This commit is contained in:
Sergei Shulepov
2021-01-19 00:57:09 +01:00
committed by GitHub
parent b009cbe801
commit 226af6a877
20 changed files with 77 additions and 417 deletions
@@ -21,7 +21,7 @@ use sp_std::prelude::*;
use sp_std::collections::btree_map::BTreeMap;
use sp_runtime::traits::One;
use primitives::v1::{
ValidatorId, ValidatorIndex, GroupRotationInfo, CoreState, ValidationData,
ValidatorId, ValidatorIndex, GroupRotationInfo, CoreState,
Id as ParaId, OccupiedCoreAssumption, SessionIndex, ValidationCode,
CommittedCandidateReceipt, ScheduledCore, OccupiedCore, CoreOccupied, CoreIndex,
GroupIndex, CandidateEvent, PersistedValidationData, SessionInfo,
@@ -193,30 +193,6 @@ fn with_assumption<Config, T, F>(
}
}
/// Implementation for the `full_validation_data` function of the runtime API.
pub fn full_validation_data<T: initializer::Config>(
para_id: ParaId,
assumption: OccupiedCoreAssumption,
) -> Option<ValidationData<T::BlockNumber>> {
use parity_scale_codec::Decode as _;
let relay_parent_number = <frame_system::Module<T>>::block_number();
let relay_storage_root = Hash::decode(&mut &sp_io::storage::root()[..])
.expect("storage root must decode to the Hash type; qed");
with_assumption::<T, _, _>(para_id, assumption, || {
Some(ValidationData {
persisted: crate::util::make_persisted_validation_data::<T>(
para_id,
relay_parent_number,
relay_storage_root,
)?,
transient: crate::util::make_transient_validation_data::<T>(
para_id,
relay_parent_number,
)?,
})
})
}
/// Implementation for the `persisted_validation_data` function of the runtime API.
pub fn persisted_validation_data<T: initializer::Config>(
para_id: ParaId,
+1 -35
View File
@@ -17,8 +17,7 @@
//! Utilities that don't belong to any particular module but may draw
//! on all modules.
use sp_runtime::traits::Saturating;
use primitives::v1::{Id as ParaId, PersistedValidationData, TransientValidationData, Hash};
use primitives::v1::{Id as ParaId, PersistedValidationData, Hash};
use crate::{configuration, paras, dmp, hrmp};
@@ -42,36 +41,3 @@ pub fn make_persisted_validation_data<T: paras::Config + hrmp::Config>(
max_pov_size: config.max_pov_size,
})
}
/// Make the transient validation data for a particular parachain and a specified relay-parent.
///
/// This ties together the storage of several modules.
pub fn make_transient_validation_data<T: paras::Config + dmp::Config>(
para_id: ParaId,
relay_parent_number: T::BlockNumber,
) -> Option<TransientValidationData<T::BlockNumber>> {
let config = <configuration::Module<T>>::config();
let freq = config.validation_upgrade_frequency;
let delay = config.validation_upgrade_delay;
let last_code_upgrade = <paras::Module<T>>::last_code_upgrade(para_id, true);
let can_upgrade_code = last_code_upgrade.map_or(
true,
|l| { l <= relay_parent_number && relay_parent_number.saturating_sub(l) >= freq },
);
let code_upgrade_allowed = if can_upgrade_code {
Some(relay_parent_number + delay)
} else {
None
};
Some(TransientValidationData {
max_code_size: config.max_code_size,
max_head_data_size: config.max_head_data_size,
balance: 0,
code_upgrade_allowed,
dmq_length: <dmp::Module<T>>::dmq_length(para_id),
})
}