From 241302d0e44cdc1596118e84bd3fa328bb24e64c Mon Sep 17 00:00:00 2001 From: Ashley <ashley.ruglys@gmail.com> Date: Thu, 25 Feb 2021 13:39:30 +0100 Subject: [PATCH] Add an is_finished boolean to the grandpa warp sync response (#8203) --- substrate/client/finality-grandpa-warp-sync/src/proof.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/substrate/client/finality-grandpa-warp-sync/src/proof.rs b/substrate/client/finality-grandpa-warp-sync/src/proof.rs index 4dd7b4f57f1..1b447d2ef72 100644 --- a/substrate/client/finality-grandpa-warp-sync/src/proof.rs +++ b/substrate/client/finality-grandpa-warp-sync/src/proof.rs @@ -46,6 +46,7 @@ pub struct AuthoritySetChangeProof<Block: BlockT> { #[derive(Decode, Encode)] pub struct WarpSyncProof<Block: BlockT> { proofs: Vec<AuthoritySetChangeProof<Block>>, + is_finished: bool, } impl<Block: BlockT> WarpSyncProof<Block> { @@ -86,8 +87,11 @@ impl<Block: BlockT> WarpSyncProof<Block> { let mut proofs = Vec::new(); + let mut proof_limit_reached = false; + for (_, last_block) in set_changes.iter_from(begin_number) { if proofs.len() >= MAX_CHANGES_PER_WARP_SYNC_PROOF { + proof_limit_reached = true; break; } @@ -118,7 +122,10 @@ impl<Block: BlockT> WarpSyncProof<Block> { }); } - Ok(WarpSyncProof { proofs }) + Ok(WarpSyncProof { + proofs, + is_finished: !proof_limit_reached, + }) } /// Verifies the warp sync proof starting at the given set id and with the given authorities. -- GitLab