Generalize the Consensus Infrastructure (#883)

* Split out Consensus
* Supply ImportQueue through network-service
  - simplify ImportQueue.import_blocks
  - remove Deadlock on import_block
  - Adding Verifier-Trait
  - Implement import_queue provisioning in service; allow cli to import
* Allow to actually customize import queue
* Consensus Gossip: Cache Message hash per Topic
This commit is contained in:
Benjamin Kampmann
2018-10-16 13:40:33 +02:00
committed by GitHub
parent a24e61cb29
commit ac4bcf879f
61 changed files with 1937 additions and 3306 deletions
+7
View File
@@ -87,6 +87,7 @@ struct ChainSpecFile {
pub boot_nodes: Vec<String>,
pub telemetry_url: Option<String>,
pub protocol_id: Option<String>,
pub consensus_engine: Option<String>,
}
/// A configuration of a chain. Can be used to build a genesis block.
@@ -125,6 +126,10 @@ impl<G: RuntimeGenesis> ChainSpec<G> {
self.spec.protocol_id.as_ref().map(String::as_str)
}
pub fn consensus_engine(&self) -> Option<&str> {
self.spec.consensus_engine.as_ref().map(String::as_str)
}
/// Parse json content into a `ChainSpec`
pub fn from_embedded(json: &'static [u8]) -> Result<Self, String> {
let spec = json::from_slice(json).map_err(|e| format!("Error parsing spec file: {}", e))?;
@@ -152,6 +157,7 @@ impl<G: RuntimeGenesis> ChainSpec<G> {
boot_nodes: Vec<String>,
telemetry_url: Option<&str>,
protocol_id: Option<&str>,
consensus_engine: Option<&str>,
) -> Self
{
let spec = ChainSpecFile {
@@ -160,6 +166,7 @@ impl<G: RuntimeGenesis> ChainSpec<G> {
boot_nodes: boot_nodes,
telemetry_url: telemetry_url.map(str::to_owned),
protocol_id: protocol_id.map(str::to_owned),
consensus_engine: consensus_engine.map(str::to_owned),
};
ChainSpec {
spec,