collation-generation: Support compressed PoVs directly (#4825)

This adds support for returning a compressed PoV directly to the
collation generation. This is mainly to not requiring to compress a PoV
twice.
This commit is contained in:
Bastian Köcher
2022-02-07 20:14:08 +01:00
committed by GitHub
parent 59cddb9f23
commit bb69c82cc5
4 changed files with 50 additions and 21 deletions
@@ -20,7 +20,8 @@ use futures::channel::oneshot;
use futures_timer::Delay;
use parity_scale_codec::{Decode, Encode};
use polkadot_node_primitives::{
Collation, CollationResult, CollationSecondedSignal, CollatorFn, PoV, Statement,
Collation, CollationResult, CollationSecondedSignal, CollatorFn, MaybeCompressedPoV, PoV,
Statement,
};
use polkadot_primitives::v1::{CollatorId, CollatorPair};
use sp_core::{traits::SpawnNamed, Pair};
@@ -175,7 +176,7 @@ impl Collator {
horizontal_messages: Vec::new(),
new_validation_code: None,
head_data: head_data.encode().into(),
proof_of_validity: pov.clone(),
proof_of_validity: MaybeCompressedPoV::Raw(pov.clone()),
processed_downward_messages: 0,
hrmp_watermark: validation_data.relay_parent_number,
};
@@ -273,11 +274,16 @@ mod tests {
fn validate_collation(collator: &Collator, parent_head: HeadData, collation: Collation) {
use polkadot_node_core_pvf::testing::validate_candidate;
let block_data = match collation.proof_of_validity {
MaybeCompressedPoV::Raw(pov) => pov.block_data,
MaybeCompressedPoV::Compressed(_) => panic!("Only works with uncompressed povs"),
};
let ret_buf = validate_candidate(
collator.validation_code(),
&ValidationParams {
parent_head: parent_head.encode().into(),
block_data: collation.proof_of_validity.block_data,
block_data,
relay_parent_number: 1,
relay_parent_storage_root: Default::default(),
}