Import target block body during warp sync (#12300)

* Receive and import target block body

* Request target block

* minor: wording

* Check for block body in the test

* Import target block justifications

* Fix: do not fail block validation if no justifications received

* Fix: import target blocks without justifications

Co-authored-by: arkpar <arkady.paronyan@gmail.com>
This commit is contained in:
Dmitry Markin
2022-09-20 18:05:44 +03:00
committed by GitHub
parent 6e424467a2
commit ea1c8bd2db
8 changed files with 211 additions and 31 deletions
+8 -1
View File
@@ -69,7 +69,7 @@ use sc_network_sync::{
use sc_service::client::Client;
use sp_blockchain::{
well_known_cache_keys::{self, Id as CacheKeyId},
HeaderBackend, Info as BlockchainInfo, Result as ClientResult,
Backend as BlockchainBackend, HeaderBackend, Info as BlockchainInfo, Result as ClientResult,
};
use sp_consensus::{
block_validation::{BlockAnnounceValidator, DefaultBlockAnnounceValidator},
@@ -540,6 +540,13 @@ where
.map(|backend| backend.blockchain().header(BlockId::hash(*hash)).unwrap().is_some())
.unwrap_or(false)
}
pub fn has_body(&self, hash: &H256) -> bool {
self.backend
.as_ref()
.map(|backend| backend.blockchain().body(BlockId::hash(*hash)).unwrap().is_some())
.unwrap_or(false)
}
}
pub trait BlockImportAdapterFull: