mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 05:11:02 +00:00
Refactor validate_block (#2069)
* Refactor `validate_block` This pull request changes the `validate_block` implementation. One of the key changes are that we free data structures as early as possible. The memory while validating the block is scarce and we need to give as much as possible to the actual execution of the block. Besides that the pr moves the validation of the `validation_data` into the `validate_block` implementation completely instead of using this machinery with putting the data into some global variable that would then be read while executing the block. There are also some new docs to explain the internals of `validate_block`. * No clone wars!! * Integrate more feedback * FMT * Delay the header encoding
This commit is contained in:
@@ -355,8 +355,6 @@ pub mod pallet {
|
||||
horizontal_messages,
|
||||
} = data;
|
||||
|
||||
Self::validate_validation_data(&vfp);
|
||||
|
||||
// Check that the associated relay chain block number is as expected.
|
||||
T::CheckAssociatedRelayNumber::check_associated_relay_number(
|
||||
vfp.relay_parent_number,
|
||||
@@ -769,34 +767,6 @@ impl<T: Config> GetChannelInfo for Pallet<T> {
|
||||
}
|
||||
|
||||
impl<T: Config> Pallet<T> {
|
||||
/// Validate the given [`PersistedValidationData`] against the
|
||||
/// [`ValidationParams`](polkadot_parachain::primitives::ValidationParams).
|
||||
///
|
||||
/// This check will only be executed when the block is currently being executed in the context
|
||||
/// of [`validate_block`]. If this is being executed in the context of block building or block
|
||||
/// import, this is a no-op.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics while validating the `PoV` on the relay chain if the [`PersistedValidationData`]
|
||||
/// passed by the block author was incorrect.
|
||||
fn validate_validation_data(validation_data: &PersistedValidationData) {
|
||||
validate_block::with_validation_params(|params| {
|
||||
assert_eq!(
|
||||
params.parent_head, validation_data.parent_head,
|
||||
"Parent head doesn't match"
|
||||
);
|
||||
assert_eq!(
|
||||
params.relay_parent_number, validation_data.relay_parent_number,
|
||||
"Relay parent number doesn't match",
|
||||
);
|
||||
assert_eq!(
|
||||
params.relay_parent_storage_root, validation_data.relay_parent_storage_root,
|
||||
"Relay parent storage root doesn't match",
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
/// Process all inbound downward messages relayed by the collator.
|
||||
///
|
||||
/// Checks if the sequence of the messages is valid, dispatches them and communicates the
|
||||
|
||||
Reference in New Issue
Block a user