diff --git a/client/consensus/manual-seal/src/lib.rs b/client/consensus/manual-seal/src/lib.rs index c3b891b84e893..1e5db966e66db 100644 --- a/client/consensus/manual-seal/src/lib.rs +++ b/client/consensus/manual-seal/src/lib.rs @@ -173,7 +173,7 @@ pub async fn run_manual_seal( SC: SelectChain + 'static, TP: TransactionPool, CIDP: CreateInherentDataProviders, - P: Send + Sync + 'static, + P: codec::Encode + Send + Sync + 'static, { while let Some(command) = commands_stream.next().await { match command { @@ -231,7 +231,7 @@ pub async fn run_instant_seal( SC: SelectChain + 'static, TP: TransactionPool, CIDP: CreateInherentDataProviders, - P: Send + Sync + 'static, + P: codec::Encode + Send + Sync + 'static, { // instant-seal creates blocks as soon as transactions are imported // into the transaction pool. @@ -281,7 +281,7 @@ pub async fn run_instant_seal_and_finalize( SC: SelectChain + 'static, TP: TransactionPool, CIDP: CreateInherentDataProviders, - P: Send + Sync + 'static, + P: codec::Encode + Send + Sync + 'static, { // Creates and finalizes blocks as soon as transactions are imported // into the transaction pool. @@ -459,7 +459,8 @@ mod tests { needs_justification: false, bad_justification: false, is_new_best: true, - } + }, + proof_size: 0 } ); // assert that there's a new block in the db. @@ -549,7 +550,8 @@ mod tests { needs_justification: false, bad_justification: false, is_new_best: true, - } + }, + proof_size: created_block.proof_size } ); // assert that there's a new block in the db. @@ -625,7 +627,8 @@ mod tests { needs_justification: false, bad_justification: false, is_new_best: true, - } + }, + proof_size: 0 } ); // assert that there's a new block in the db. @@ -711,7 +714,8 @@ mod tests { needs_justification: false, bad_justification: false, is_new_best: true - } + }, + proof_size: 0 } ); diff --git a/client/consensus/manual-seal/src/rpc.rs b/client/consensus/manual-seal/src/rpc.rs index 85abcdc08574b..c0b3af69bedf4 100644 --- a/client/consensus/manual-seal/src/rpc.rs +++ b/client/consensus/manual-seal/src/rpc.rs @@ -97,6 +97,8 @@ pub struct CreatedBlock { pub hash: Hash, /// some extra details about the import operation pub aux: ImportedAux, + /// uncompacted storage proof size (zero mean that there is no proof) + pub proof_size: usize, } impl ManualSeal { diff --git a/client/consensus/manual-seal/src/seal_block.rs b/client/consensus/manual-seal/src/seal_block.rs index 4b6230c3efc3d..716e889ec0395 100644 --- a/client/consensus/manual-seal/src/seal_block.rs +++ b/client/consensus/manual-seal/src/seal_block.rs @@ -83,7 +83,7 @@ pub async fn seal_block( TP: TransactionPool, SC: SelectChain, CIDP: CreateInherentDataProviders, - P: Send + Sync + 'static, + P: codec::Encode + Send + Sync + 'static, { let future = async { if pool.status().ready == 0 && !create_empty { @@ -131,6 +131,7 @@ pub async fn seal_block( let (header, body) = proposal.block.deconstruct(); let proof = proposal.proof; + let proof_size = proof.encoded_size(); let mut params = BlockImportParams::new(BlockOrigin::Own, header.clone()); params.body = Some(body); params.finalized = finalize; @@ -149,8 +150,11 @@ pub async fn seal_block( post_header.digest_mut().logs.extend(params.post_digests.iter().cloned()); match block_import.import_block(params).await? { - ImportResult::Imported(aux) => - Ok(CreatedBlock { hash: ::Header::hash(&post_header), aux }), + ImportResult::Imported(aux) => Ok(CreatedBlock { + hash: ::Header::hash(&post_header), + aux, + proof_size, + }), other => Err(other.into()), } };