From 36055db8151b9add53ae83f481ce865d43cb00e7 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 4 Apr 2018 12:01:10 +0200 Subject: [PATCH 001/103] dynamic inclusion threshold calculator --- polkadot/consensus/src/dynamic_inclusion.rs | 104 ++++++++++++++++++++ polkadot/consensus/src/lib.rs | 3 + 2 files changed, 107 insertions(+) create mode 100644 polkadot/consensus/src/dynamic_inclusion.rs diff --git a/polkadot/consensus/src/dynamic_inclusion.rs b/polkadot/consensus/src/dynamic_inclusion.rs new file mode 100644 index 0000000000000..6e1a16481f301 --- /dev/null +++ b/polkadot/consensus/src/dynamic_inclusion.rs @@ -0,0 +1,104 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Dynamic inclusion threshold over time. + +use std::time::{Duration, Instant}; + +fn duration_to_micros(duration: &Duration) -> u64 { + duration.as_secs() * 1_000_000 + (duration.subsec_nanos() / 1000) as u64 +} + +/// Dynamic inclusion threshold over time. +/// +/// The acceptable proportion of parachains which must have parachain candidates +/// reduces over time (eventually going to zero). +pub struct DynamicInclusion { + start: Instant, + y: i64, + m: i64, +} + +impl DynamicInclusion { + /// Constructs a new dynamic inclusion threshold calculator based on the time now, + /// how many parachain candidates are required at the beginning, and when an empty + /// block will be allowed. + pub fn new(initial: usize, start: Instant, allow_empty: Duration) -> Self { + // linear function f(n_candidates) -> valid after milliseconds + // f(0) = allow_empty + // f(initial) = 0 + let y = duration_to_micros(&allow_empty) as i64; + let m = -y / initial as i64; + + DynamicInclusion { + start, + y, + m, + } + } + + /// Returns the duration from `now` after which the amount of included parachain candidates + /// would be enough, or `None` if it is sufficient now. + /// + /// Panics if `now` is earlier than the `start`. + pub fn acceptable_in(&self, now: Instant, included: usize) -> Option { + let elapsed = now.duration_since(self.start); + let elapsed_millis = duration_to_micros(&elapsed) as i64; + + let valid_after_millis = self.y + self.m * included as i64; + + if elapsed_millis >= valid_after_millis { + None + } else { + Some(Duration::from_millis((valid_after_millis - elapsed_millis) as u64 / 1000)) + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn full_immediately_allowed() { + let now = Instant::now(); + + let dynamic = DynamicInclusion::new( + 10, + now, + Duration::from_millis(4000), + ); + + assert!(dynamic.acceptable_in(now, 10).is_none()); + assert!(dynamic.acceptable_in(now, 11).is_none()); + assert!(dynamic.acceptable_in(now + Duration::from_millis(2000), 10).is_none()); + } + + #[test] + fn half_allowed_halfway() { + let now = Instant::now(); + + let dynamic = DynamicInclusion::new( + 10, + now, + Duration::from_millis(4000), + ); + + assert_eq!(dynamic.acceptable_in(now, 5), Some(Duration::from_millis(2000))); + assert!(dynamic.acceptable_in(now + Duration::from_millis(2000), 5).is_none()); + assert!(dynamic.acceptable_in(now + Duration::from_millis(3000), 5).is_none()); + assert!(dynamic.acceptable_in(now + Duration::from_millis(4000), 5).is_none()); + } +} diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 8ee93bafa81ef..6d1f1311fd73d 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -73,6 +73,7 @@ use parking_lot::Mutex; pub use self::error::{ErrorKind, Error}; pub use service::Service; +mod dynamic_inclusion; mod error; mod service; @@ -301,6 +302,8 @@ impl Future for StatementProducer } } + + /// A shared table object. pub struct SharedTable { context: Arc, From 8634fcda37b0c66f019486f37be00efa05e36559 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 4 Apr 2018 14:38:29 +0200 Subject: [PATCH 002/103] collators interface --- polkadot/consensus/src/lib.rs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 6d1f1311fd73d..718bcf173433d 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -89,7 +89,7 @@ pub trait TableRouter { /// Future that resolves when extrinsic candidate data is fetched. type FetchExtrinsic: IntoFuture; - /// Note local candidate data. + /// Note local candidate data, making it available on the network to other validators. fn local_candidate_data(&self, hash: Hash, block_data: BlockData, extrinsic: Extrinsic); /// Fetch block data for a specific candidate. @@ -109,6 +109,30 @@ pub trait Network { fn table_router(&self, table: Arc) -> Self::TableRouter; } +/// A full collation. +pub struct Collation { + /// Block data. + pub block_data: BlockData, + /// Extrinsic data. + pub extrinsic: Extrinsic, + /// The candidate receipt itself. + pub receipt: CandidateReceipt, +} + +/// Encapsulates connections to collators and allows collation on any parachain. +pub trait Collators { + /// Errors when producing collations. + type Error; + /// A full collation. + type Collation: IntoFuture; + + /// Collate on a specific parachain, building on a given relay chain parent hash. + fn collate(&self, parachain: ParaId, relay_parent: Hash) -> Self::Collation; + + /// Note a bad collator. + fn note_bad_collator(&self, collator: Address); +} + /// Information about a specific group. #[derive(Debug, Clone, Default)] pub struct GroupInfo { From 90ed3a15dcef3a9a294ac8f3495ccfe42d20edb0 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 5 Apr 2018 13:13:16 +0200 Subject: [PATCH 003/103] collation helpers --- polkadot/consensus/src/collation.rs | 108 +++++++++++ polkadot/consensus/src/dynamic_inclusion.rs | 2 +- polkadot/consensus/src/lib.rs | 195 ++++++++++++-------- 3 files changed, 229 insertions(+), 76 deletions(-) create mode 100644 polkadot/consensus/src/collation.rs diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs new file mode 100644 index 0000000000000..a29befaf76878 --- /dev/null +++ b/polkadot/consensus/src/collation.rs @@ -0,0 +1,108 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Validator-side view of collation. +//! +//! This module contains type definitions, a trait for a batch of collators, and a trait for +//! attempting to fetch a collation repeatedly until a valid one is obtained. + +use std::sync::Arc; + +use polkadot_api::PolkadotApi; +use polkadot_primitives::{Hash, Timestamp}; +use polkadot_primitives::parachain::{Id as ParaId, DutyRoster, BlockData, Extrinsic, CandidateReceipt}; +use primitives::block::{Block as SubstrateBlock, Header as SubstrateHeader, HeaderHash, Id as BlockId, Number as BlockNumber}; +use primitives::AuthorityId; + +use futures::prelude::*; + +/// A full collation. +pub struct Collation { + /// Block data. + pub block_data: BlockData, + /// Extrinsic data. + pub extrinsic: Extrinsic, + /// The candidate receipt itself. + pub receipt: CandidateReceipt, +} + +/// Encapsulates connections to collators and allows collation on any parachain. +pub trait Collators { + /// Errors when producing collations. + type Error; + /// A full collation. + type Collation: IntoFuture; + + /// Collate on a specific parachain, building on a given relay chain parent hash. + fn collate(&self, parachain: ParaId, relay_parent: Hash) -> Self::Collation; + + /// Note a bad collator. TODO: take proof + fn note_bad_collator(&self, collator: Address); +} + +/// A future which resolves when a collation is available. +/// +/// This future is fused. +pub struct CollationFetch { + parachain: ParaId, + relay_parent: Hash, + collators: Arc, + live_fetch: Option, + client: Arc

, + done: bool, +} + +impl CollationFetch { + /// Create a new collation fetcher. + pub fn new(parachain: ParaId, relay_parent: Hash, collators: Arc, client: Arc

) -> Self { + CollationFetch { + parachain, + relay_parent, + collators, + client, + live_fetch: None, + done: false, + } + } +} + +impl Future for CollationFetch { + type Item = Collation; + type Error = C::Error; + + fn poll(&mut self) -> Poll { + if self.done { return Ok(Async::NotReady) } + loop { + let x = { + let (p, r, c) = (&self.parachain, &self.relay_parent, &self.collators); + try_ready!(self.live_fetch.get_or_insert_with(|| c.collate(p, r)).poll()) + }; + + if verify_collation(&self.client, &self.relay_parent, &x) { + self.done = true; + return Ok(Async::Ready(x)); + } else { + self.live_fetch = None; + self.collators.note_bad_collator(x.receipt.collator); + } + } + } +} + +/// Check whether a given collation is valid. +pub fn verify_collation(_client: P, _relay_parent: Hash, collation: &Collation) -> bool { + true // TODO: actually check this. +} diff --git a/polkadot/consensus/src/dynamic_inclusion.rs b/polkadot/consensus/src/dynamic_inclusion.rs index 6e1a16481f301..2606927183c82 100644 --- a/polkadot/consensus/src/dynamic_inclusion.rs +++ b/polkadot/consensus/src/dynamic_inclusion.rs @@ -36,7 +36,7 @@ impl DynamicInclusion { /// how many parachain candidates are required at the beginning, and when an empty /// block will be allowed. pub fn new(initial: usize, start: Instant, allow_empty: Duration) -> Self { - // linear function f(n_candidates) -> valid after milliseconds + // linear function f(n_candidates) -> valid after microseconds // f(0) = allow_empty // f(initial) = 0 let y = duration_to_micros(&allow_empty) as i64; diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index c007087d58142..eea6b0705d48e 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -55,6 +55,7 @@ extern crate log; use std::collections::{HashMap, HashSet}; use std::sync::Arc; +use std::time::Duration; use codec::Slicable; use table::{Table, Context as TableContextTrait}; @@ -71,10 +72,13 @@ use transaction_pool::{Ready, TransactionPool}; use futures::prelude::*; use futures::future; use parking_lot::Mutex; +use collation::{Collation, Collators, CollationFetch}; +use dynamic_inclusion::{Instant, DynamicInclusion}; pub use self::error::{ErrorKind, Error}; pub use service::Service; +mod collation; mod dynamic_inclusion; mod error; mod service; @@ -111,30 +115,6 @@ pub trait Network { fn table_router(&self, table: Arc) -> Self::TableRouter; } -/// A full collation. -pub struct Collation { - /// Block data. - pub block_data: BlockData, - /// Extrinsic data. - pub extrinsic: Extrinsic, - /// The candidate receipt itself. - pub receipt: CandidateReceipt, -} - -/// Encapsulates connections to collators and allows collation on any parachain. -pub trait Collators { - /// Errors when producing collations. - type Error; - /// A full collation. - type Collation: IntoFuture; - - /// Collate on a specific parachain, building on a given relay chain parent hash. - fn collate(&self, parachain: ParaId, relay_parent: Hash) -> Self::Collation; - - /// Note a bad collator. - fn note_bad_collator(&self, collator: Address); -} - /// Information about a specific group. #[derive(Debug, Clone, Default)] pub struct GroupInfo { @@ -495,17 +475,26 @@ fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId]) -> Result { +pub struct ProposerFactory { /// The client instance. pub client: Arc, /// The transaction pool. pub transaction_pool: Arc>, /// The backing network handle. pub network: N, + /// Parachain collators. + pub collators: Arc

, + /// The duration after which parachain-empty blocks will be allowed. + pub parachain_empty_duration: Duration, } -impl bft::ProposerFactory for ProposerFactory { - type Proposer = Proposer; +impl bft::ProposerFactory for ProposerFactory + where + C: PolkadotApi, + N: Network, + P: Collators, +{ + type Proposer = Proposer; type Error = Error; fn init(&self, parent_header: &SubstrateHeader, authorities: &[AuthorityId], sign_with: Arc) -> Result { @@ -515,10 +504,15 @@ impl bft::ProposerFactory for ProposerFactory let duty_roster = self.client.duty_roster(&checked_id)?; let group_info = make_group_info(duty_roster, authorities)?; + let n_parachains = group_info.len(); let table = Arc::new(SharedTable::new(group_info, sign_with.clone(), parent_hash)); let router = self.network.table_router(table.clone()); + let dynamic_inclusion = DynamicInclusion::new( + n_parachains, + Instant::now(), + self.parachain_empty_duration.clone(), + ); - // TODO [PoC-2]: kick off collation process. Ok(Proposer { parent_hash, parent_number: parent_header.number, @@ -526,8 +520,10 @@ impl bft::ProposerFactory for ProposerFactory local_key: sign_with, client: self.client.clone(), transaction_pool: self.transaction_pool.clone(), - _table: table, - _router: router, + collators: self.collators.clone(), + dynamic_inclusion, + table, + router, }) } } @@ -541,64 +537,31 @@ fn current_timestamp() -> Timestamp { } /// The Polkadot proposer logic. -pub struct Proposer { +pub struct Proposer { parent_hash: HeaderHash, parent_number: BlockNumber, parent_id: C::CheckedBlockId, client: Arc, local_key: Arc, transaction_pool: Arc>, - _table: Arc, - _router: R, + collators: P, + dynamic_inclusion: DynamicInclusion, + table: Arc, + router: R, } -impl bft::Proposer for Proposer { +impl bft::Proposer for Proposer + where + C: PolkadotApi, + R: TableRouter, + P: Collators, +{ type Error = Error; type Create = Result; type Evaluate = Result; fn propose(&self) -> Result { - // TODO: handle case when current timestamp behind that in state. - let mut block_builder = self.client.build_block( - &self.parent_id, - current_timestamp() - )?; - - let readiness_evaluator = Ready::create(self.parent_id.clone(), &*self.client); - - { - let mut pool = self.transaction_pool.lock(); - let mut unqueue_invalid = Vec::new(); - let mut pending_size = 0; - for pending in pool.pending(readiness_evaluator.clone()) { - // skip and cull transactions which are too large. - if pending.encoded_size() > MAX_TRANSACTIONS_SIZE { - unqueue_invalid.push(pending.hash().clone()); - continue - } - - if pending_size + pending.encoded_size() >= MAX_TRANSACTIONS_SIZE { break } - - match block_builder.push_transaction(pending.as_transaction().clone()) { - Ok(()) => { - pending_size += pending.encoded_size(); - } - Err(_) => { - unqueue_invalid.push(pending.hash().clone()); - } - } - } - - for tx_hash in unqueue_invalid { - pool.remove(&tx_hash, false); - } - } - - let polkadot_block = block_builder.bake(); - let substrate_block = Slicable::decode(&mut polkadot_block.encode().as_slice()) - .expect("polkadot blocks defined to serialize to substrate blocks correctly; qed"); - - Ok(substrate_block) + unimplemented!() } // TODO: certain kinds of errors here should lead to a misbehavior report. @@ -666,6 +629,88 @@ impl bft::Proposer for Proposer { } } +struct CreateProposal { + parent_hash: HeaderHash, + parent_number: BlockNumber, + parent_id: C::CheckedBlockId, + client: Arc, + local_key: Arc, + transaction_pool: Arc>, + dynamic_inclusion: DynamicInclusion, + collation: CollationFetch

, + _table: Arc, + _router: R, +} + +impl CreateProposal + where + C: PolkadotApi, + R: TableRouter, + P: Collators, +{ + fn propose(&self) -> Result { + // TODO: handle case when current timestamp behind that in state. + let mut block_builder = self.client.build_block( + &self.parent_id, + current_timestamp() + )?; + + let readiness_evaluator = Ready::create(self.parent_id.clone(), &*self.client); + + { + let mut pool = self.transaction_pool.lock(); + let mut unqueue_invalid = Vec::new(); + let mut pending_size = 0; + for pending in pool.pending(readiness_evaluator.clone()) { + // skip and cull transactions which are too large. + if pending.encoded_size() > MAX_TRANSACTIONS_SIZE { + unqueue_invalid.push(pending.hash().clone()); + continue + } + + if pending_size + pending.encoded_size() >= MAX_TRANSACTIONS_SIZE { break } + + match block_builder.push_transaction(pending.as_transaction().clone()) { + Ok(()) => { + pending_size += pending.encoded_size(); + } + Err(_) => { + unqueue_invalid.push(pending.hash().clone()); + } + } + } + + for tx_hash in unqueue_invalid { + pool.remove(&tx_hash, false); + } + } + + let polkadot_block = block_builder.bake(); + let substrate_block = Slicable::decode(&mut polkadot_block.encode().as_slice()) + .expect("polkadot blocks defined to serialize to substrate blocks correctly; qed"); + + Ok(substrate_block) + } +} + +impl Future for CreateProposal + where + C: PolkadotApi, + R: TableRouter, + P: Collators, +{ + type Item = SubstrateBlock; + type Error = Error; + + fn poll(&mut self) -> Poll { + // 1. poll local collation future. + if let Async::Ready(collation) = self.collation.poll()? { + self.router.local_candidate_data(collation.block_data, collation.extrinsic); + // TODO: import statement. + } + } +} + fn evaluate_proposal( proposal: &SubstrateBlock, client: &C, From b3e654ad9e4d1e8e643e64b52a86c237eee9c5e3 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 5 Apr 2018 17:30:03 +0200 Subject: [PATCH 004/103] initial proposal-creation future --- polkadot/consensus/src/collation.rs | 19 ++- polkadot/consensus/src/dynamic_inclusion.rs | 1 + polkadot/consensus/src/lib.rs | 142 ++++++++++++++------ polkadot/consensus/src/service.rs | 46 +++++-- 4 files changed, 146 insertions(+), 62 deletions(-) diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs index a29befaf76878..fec2b97291c04 100644 --- a/polkadot/consensus/src/collation.rs +++ b/polkadot/consensus/src/collation.rs @@ -22,7 +22,7 @@ use std::sync::Arc; use polkadot_api::PolkadotApi; -use polkadot_primitives::{Hash, Timestamp}; +use polkadot_primitives::{Hash, Timestamp, AccountId}; use polkadot_primitives::parachain::{Id as ParaId, DutyRoster, BlockData, Extrinsic, CandidateReceipt}; use primitives::block::{Block as SubstrateBlock, Header as SubstrateHeader, HeaderHash, Id as BlockId, Number as BlockNumber}; use primitives::AuthorityId; @@ -50,7 +50,7 @@ pub trait Collators { fn collate(&self, parachain: ParaId, relay_parent: Hash) -> Self::Collation; /// Note a bad collator. TODO: take proof - fn note_bad_collator(&self, collator: Address); + fn note_bad_collator(&self, collator: AccountId); } /// A future which resolves when a collation is available. @@ -60,7 +60,7 @@ pub struct CollationFetch { parachain: ParaId, relay_parent: Hash, collators: Arc, - live_fetch: Option, + live_fetch: Option<::Future>, client: Arc

, done: bool, } @@ -87,11 +87,16 @@ impl Future for CollationFetch { if self.done { return Ok(Async::NotReady) } loop { let x = { - let (p, r, c) = (&self.parachain, &self.relay_parent, &self.collators); - try_ready!(self.live_fetch.get_or_insert_with(|| c.collate(p, r)).poll()) + let (p, r, c) = (self.parachain, self.relay_parent, &self.collators); + let poll = self.live_fetch + .get_or_insert_with(|| c.collate(p, r).into_future()) + .poll(); + + if let Err(_) = poll { self.done = true } + try_ready!(poll) }; - if verify_collation(&self.client, &self.relay_parent, &x) { + if verify_collation(&*self.client, self.relay_parent, &x) { self.done = true; return Ok(Async::Ready(x)); } else { @@ -103,6 +108,6 @@ impl Future for CollationFetch { } /// Check whether a given collation is valid. -pub fn verify_collation(_client: P, _relay_parent: Hash, collation: &Collation) -> bool { +pub fn verify_collation(_client: &P, _relay_parent: Hash, collation: &Collation) -> bool { true // TODO: actually check this. } diff --git a/polkadot/consensus/src/dynamic_inclusion.rs b/polkadot/consensus/src/dynamic_inclusion.rs index 2606927183c82..25eae8d8ca8b9 100644 --- a/polkadot/consensus/src/dynamic_inclusion.rs +++ b/polkadot/consensus/src/dynamic_inclusion.rs @@ -25,6 +25,7 @@ fn duration_to_micros(duration: &Duration) -> u64 { /// /// The acceptable proportion of parachains which must have parachain candidates /// reduces over time (eventually going to zero). +#[derive(Debug, Clone)] pub struct DynamicInclusion { start: Instant, y: i64, diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index eea6b0705d48e..1fb7ca9d4fdef 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -29,7 +29,6 @@ //! //! Groups themselves may be compromised by malicious authorities. -extern crate futures; extern crate ed25519; extern crate parking_lot; extern crate tokio_timer; @@ -50,12 +49,16 @@ extern crate substrate_client as client; #[macro_use] extern crate error_chain; + +#[macro_use] +extern crate futures; + #[macro_use] extern crate log; use std::collections::{HashMap, HashSet}; use std::sync::Arc; -use std::time::Duration; +use std::time::{Duration, Instant}; use codec::Slicable; use table::{Table, Context as TableContextTrait}; @@ -73,7 +76,7 @@ use futures::prelude::*; use futures::future; use parking_lot::Mutex; use collation::{Collation, Collators, CollationFetch}; -use dynamic_inclusion::{Instant, DynamicInclusion}; +use dynamic_inclusion::DynamicInclusion; pub use self::error::{ErrorKind, Error}; pub use service::Service; @@ -187,6 +190,14 @@ pub fn sign_table_statement(statement: &table::Statement, key: &ed25519::Pair, p key.sign(&encoded) } +/// Source of statements +pub enum StatementSource { + /// Locally produced statement. + Local, + /// Received statement from remote source, with optional sender. + Remote(Option), +} + // A shared table object. struct SharedTableInner { table: Table, @@ -202,13 +213,15 @@ impl SharedTableInner { context: &TableContext, router: &R, statement: table::SignedStatement, - received_from: Option, + statement_source: StatementSource, ) -> StatementProducer<::Future, ::Future> { - let mut producer = StatementProducer { - fetch_block_data: None, - fetch_extrinsic: None, - produced_statements: Default::default(), - _key: context.key.clone(), + // this blank producer does nothing until we attach some futures + // and set a candidate digest. + let mut producer = Default::default(); + + let received_from = match statement_source { + StatementSource::Local => return producer, + StatementSource::Remote(from) => from, }; let summary = match self.table.import_statement(context, statement, received_from) { @@ -216,7 +229,10 @@ impl SharedTableInner { None => return producer, }; + producer.candidate_digest = Some(summary.candidate); + let local_id = context.local_id(); + let is_validity_member = context.is_member_of(&local_id, &summary.group_id); let is_availability_member = context.is_availability_guarantor_of(&local_id, &summary.group_id); @@ -229,18 +245,23 @@ impl SharedTableInner { && self.proposed_digest.as_ref().map_or(true, |d| d != digest) && self.checked_validity.insert(digest.clone()); - let checking_availability = is_availability_member && self.checked_availability.insert(digest.clone()); + let checking_availability = is_availability_member + && self.checked_availability.insert(digest.clone()); if checking_validity || checking_availability { match self.table.get_candidate(&digest) { None => {} // TODO: handle table inconsistency somehow? Some(candidate) => { if checking_validity { - producer.fetch_block_data = Some(router.fetch_block_data(candidate).into_future().fuse()); + producer.fetch_block_data = Some( + router.fetch_block_data(candidate).into_future().fuse() + ); } if checking_availability { - producer.fetch_extrinsic = Some(router.fetch_extrinsic_data(candidate).into_future().fuse()); + producer.fetch_extrinsic = Some( + router.fetch_extrinsic_data(candidate).into_future().fuse() + ); } } } @@ -256,8 +277,13 @@ impl SharedTableInner { pub struct ProducedStatements { /// A statement about the validity of the candidate. pub validity: Option, - /// A statement about the availability of the candidate. + /// A statement about availability of data. If this is `Some`, + /// then `block_data` and `extrinsic` should be `Some` as well. pub availability: Option, + /// Block data to ensure availability of. + pub block_data: Option, + /// Extrinsic data to ensure availability of. + pub extrinsic: Option, } /// Future that produces statements about a specific candidate. @@ -265,7 +291,18 @@ pub struct StatementProducer { fetch_block_data: Option>, fetch_extrinsic: Option>, produced_statements: ProducedStatements, - _key: Arc, + candidate_digest: Option, +} + +impl Default for StatementProducer { + fn default() -> Self { + StatementProducer { + fetch_block_data: None, + fetch_extrinsic: None, + produced_statements: Default::default(), + candidate_digest: Default::default(), + } + } } impl Future for StatementProducer @@ -277,11 +314,17 @@ impl Future for StatementProducer type Error = Err; fn poll(&mut self) -> Poll { + let candidate_digest = match self.candidate_digest.as_ref() { + Some(x) => x, + None => return Ok(Async::Ready(::std::mem::replace(&mut self.produced_statements, Default::default()))), + }; + let mut done = true; if let Some(ref mut fetch_block_data) = self.fetch_block_data { match fetch_block_data.poll()? { - Async::Ready(_block_data) => { - // TODO [PoC-2] : validate block data here and make statement. + Async::Ready(block_data) => { + // TODO [PoC-2]: validate block data here and make statement. + self.produced_statements.block_data = Some(block_data); }, Async::NotReady => { done = false; @@ -291,8 +334,8 @@ impl Future for StatementProducer if let Some(ref mut fetch_extrinsic) = self.fetch_extrinsic { match fetch_extrinsic.poll()? { - Async::Ready(_extrinsic) => { - // TODO [PoC-2]: guarantee availability of data and make statment. + Async::Ready(extrinsic) => { + self.produced_statements.extrinsic = Some(extrinsic); } Async::NotReady => { done = false; @@ -301,15 +344,18 @@ impl Future for StatementProducer } if done { - Ok(Async::Ready(::std::mem::replace(&mut self.produced_statements, Default::default()))) + let mut produced = ::std::mem::replace(&mut self.produced_statements, Default::default()); + if produced.block_data.is_some() && produced.extrinsic.is_some() { + // produce a statement about availability. + produced.availability = Some(GenericStatement::Available(candidate_digest.clone())); + } + Ok(Async::Ready(produced)) } else { Ok(Async::NotReady) } } } - - /// A shared table object. pub struct SharedTable { context: Arc, @@ -353,7 +399,7 @@ impl SharedTable { &self, router: &R, statement: table::SignedStatement, - received_from: Option, + received_from: StatementSource, ) -> StatementProducer<::Future, ::Future> { self.inner.lock().import_statement(&*self.context, router, statement, received_from) } @@ -363,7 +409,7 @@ impl SharedTable { &self, router: &R, statement: table::Statement, - ) -> StatementProducer<::Future, ::Future> { + ) { let proposed_digest = match statement { GenericStatement::Candidate(ref c) => Some(c.hash()), _ => None, @@ -376,16 +422,16 @@ impl SharedTable { inner.proposed_digest = proposed_digest; } - inner.import_statement(&*self.context, router, signed_statement, None) + inner.import_statement(&*self.context, router, signed_statement, StatementSource::Local); } /// Import many statements at once. /// - /// Provide an iterator yielding pairs of (statement, received_from). + /// Provide an iterator yielding pairs of (statement, statement_source). pub fn import_statements(&self, router: &R, iterable: I) -> U where R: TableRouter, - I: IntoIterator)>, + I: IntoIterator, U: ::std::iter::FromIterator::Future, ::Future> @@ -393,8 +439,8 @@ impl SharedTable { { let mut inner = self.inner.lock(); - iterable.into_iter().map(move |(statement, received_from)| { - inner.import_statement(&*self.context, router, statement, received_from) + iterable.into_iter().map(move |(statement, statement_source)| { + inner.import_statement(&*self.context, router, statement, statement_source) }).collect() } @@ -488,7 +534,7 @@ pub struct ProposerFactory { pub parachain_empty_duration: Duration, } -impl bft::ProposerFactory for ProposerFactory +impl bft::ProposerFactory for ProposerFactory where C: PolkadotApi, N: Network, @@ -544,23 +590,23 @@ pub struct Proposer { client: Arc, local_key: Arc, transaction_pool: Arc>, - collators: P, + collators: Arc

, dynamic_inclusion: DynamicInclusion, table: Arc, router: R, } -impl bft::Proposer for Proposer +impl bft::Proposer for Proposer where C: PolkadotApi, R: TableRouter, P: Collators, { type Error = Error; - type Create = Result; + type Create = CreateProposal; type Evaluate = Result; - fn propose(&self) -> Result { + fn propose(&self) -> CreateProposal { unimplemented!() } @@ -629,20 +675,20 @@ impl bft::Proposer for Proposer } } -struct CreateProposal { +/// Future which resolves upon the creation of a proposal. +pub struct CreateProposal { parent_hash: HeaderHash, parent_number: BlockNumber, parent_id: C::CheckedBlockId, client: Arc, - local_key: Arc, transaction_pool: Arc>, dynamic_inclusion: DynamicInclusion, - collation: CollationFetch

, - _table: Arc, - _router: R, + collation: CollationFetch, + router: R, + table: Arc, } -impl CreateProposal +impl CreateProposal where C: PolkadotApi, R: TableRouter, @@ -693,7 +739,7 @@ impl CreateProposal } } -impl Future for CreateProposal +impl Future for CreateProposal where C: PolkadotApi, R: TableRouter, @@ -704,10 +750,20 @@ impl Future for CreateProposal fn poll(&mut self) -> Poll { // 1. poll local collation future. - if let Async::Ready(collation) = self.collation.poll()? { - self.router.local_candidate_data(collation.block_data, collation.extrinsic); - // TODO: import statement. + match self.collation.poll() { + Ok(Async::Ready(collation)) => { + let hash = collation.receipt.hash(); + self.router.local_candidate_data(hash, collation.block_data, collation.extrinsic); + self.table.sign_and_import(&self.router, GenericStatement::Valid(hash)); + } + Ok(Async::NotReady) => {}, + Err(_) => {}, // TODO: handle this failure to collate. } + + // 2. check readiness timer + + // 3. check reseal interval + unimplemented!() } } diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index db8c4ee7a5059..3014cd226b5a0 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -21,21 +21,25 @@ use std::thread; use std::sync::Arc; +use std::time::Duration; + +use bft::{self, BftService}; +use client::BlockchainEvents; +use ed25519; +use error::Error; use futures::{future, Future, Stream, Sink, Async, Canceled}; use parking_lot::Mutex; -use substrate_network as net; -use tokio_core::reactor; -use client::BlockchainEvents; -use runtime_support::Hashable; +use polkadot_api::PolkadotApi; +use polkadot_primitives::AccountId; +use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic, CandidateReceipt}; use primitives::{Hash, AuthorityId}; use primitives::block::{Id as BlockId, HeaderHash, Header}; -use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt}; -use polkadot_api::PolkadotApi; -use bft::{self, BftService}; +use runtime_support::Hashable; +use substrate_network as net; +use tokio_core::reactor; use transaction_pool::TransactionPool; -use ed25519; + use super::{TableRouter, SharedTable, ProposerFactory}; -use error::Error; struct BftSink { network: Arc, @@ -132,8 +136,6 @@ pub struct Service { thread: Option>, } -struct Network(Arc); - impl Service { /// Create and start a new instance. pub fn new( @@ -141,7 +143,8 @@ impl Service { network: Arc, transaction_pool: Arc>, key: ed25519::Pair, - best_header: &Header) -> Service + best_header: &Header + ) -> Service where C: BlockchainEvents + bft::BlockImport + bft::Authorities + PolkadotApi + Send + Sync + 'static { let best_header = best_header.clone(); @@ -152,6 +155,8 @@ impl Service { client: client.clone(), transaction_pool: transaction_pool.clone(), network: Network(network.clone()), + collators: Arc::new(NoCollators), + parachain_empty_duration: Duration::from_millis(10_000), // TODO }; let bft_service = BftService::new(client.clone(), key, factory); let build_bft = |header: &Header| -> Result<_, Error> { @@ -195,6 +200,23 @@ impl Drop for Service { } } +// Collators implementation which never collates anything. +// TODO: do a real implementation. +struct NoCollators; + +impl ::collation::Collators for NoCollators { + type Error = (); + type Collation = future::Empty<::collation::Collation, ()>; + + fn collate(&self, _parachain: ParaId, _relay_parent: Hash) -> Self::Collation { + future::empty() + } + + fn note_bad_collator(&self, _collator: AccountId) { } +} + +struct Network(Arc); + impl super::Network for Network { type TableRouter = Router; fn table_router(&self, _table: Arc) -> Self::TableRouter { From 83879ebe34b63633148e0b30b7f7a9f1b886e769 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 5 Apr 2018 19:32:38 +0200 Subject: [PATCH 005/103] create proposer when asked to propose --- polkadot/consensus/src/collation.rs | 35 +++++++++------ polkadot/consensus/src/error.rs | 5 +++ polkadot/consensus/src/lib.rs | 66 +++++++++++++++++++++++++---- polkadot/consensus/src/service.rs | 4 +- 4 files changed, 86 insertions(+), 24 deletions(-) diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs index fec2b97291c04..bf10cc4ee4a30 100644 --- a/polkadot/consensus/src/collation.rs +++ b/polkadot/consensus/src/collation.rs @@ -23,7 +23,7 @@ use std::sync::Arc; use polkadot_api::PolkadotApi; use polkadot_primitives::{Hash, Timestamp, AccountId}; -use polkadot_primitives::parachain::{Id as ParaId, DutyRoster, BlockData, Extrinsic, CandidateReceipt}; +use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic, CandidateReceipt}; use primitives::block::{Block as SubstrateBlock, Header as SubstrateHeader, HeaderHash, Id as BlockId, Number as BlockNumber}; use primitives::AuthorityId; @@ -40,7 +40,9 @@ pub struct Collation { } /// Encapsulates connections to collators and allows collation on any parachain. -pub trait Collators { +/// +/// This is expected to be a lightweight, shared type like an `Arc`. +pub trait Collators: Clone { /// Errors when producing collations. type Error; /// A full collation. @@ -57,24 +59,25 @@ pub trait Collators { /// /// This future is fused. pub struct CollationFetch { - parachain: ParaId, + parachain: Option, relay_parent: Hash, - collators: Arc, + collators: C, live_fetch: Option<::Future>, client: Arc

, - done: bool, } impl CollationFetch { - /// Create a new collation fetcher. - pub fn new(parachain: ParaId, relay_parent: Hash, collators: Arc, client: Arc

) -> Self { + /// Create a new collation fetcher for the given chain. + pub fn new(parachain: Chain, relay_parent: Hash, collators: C, client: Arc

) -> Self { CollationFetch { - parachain, relay_parent, collators, client, + parachain: match parachain { + Chain::Parachain(id) => Some(id), + Chain::Relay => None, + }, live_fetch: None, - done: false, } } } @@ -84,20 +87,24 @@ impl Future for CollationFetch { type Error = C::Error; fn poll(&mut self) -> Poll { - if self.done { return Ok(Async::NotReady) } + let parachain = match self.parachain.as_ref() { + Some(p) => p.clone(), + None => return Ok(Async::NotReady), + }; + loop { let x = { - let (p, r, c) = (self.parachain, self.relay_parent, &self.collators); + let (r, c) = (self.relay_parent, &self.collators); let poll = self.live_fetch - .get_or_insert_with(|| c.collate(p, r).into_future()) + .get_or_insert_with(move || c.collate(parachain, r).into_future()) .poll(); - if let Err(_) = poll { self.done = true } + if let Err(_) = poll { self.parachain = None } try_ready!(poll) }; if verify_collation(&*self.client, self.relay_parent, &x) { - self.done = true; + self.parachain = None; return Ok(Async::Ready(x)); } else { self.live_fetch = None; diff --git a/polkadot/consensus/src/error.rs b/polkadot/consensus/src/error.rs index 38ba4ab60716f..34ad98aba6f59 100644 --- a/polkadot/consensus/src/error.rs +++ b/polkadot/consensus/src/error.rs @@ -17,6 +17,7 @@ //! Errors that can occur during the consensus process. use primitives::block::HeaderHash; +use polkadot_primitives::AccountId; error_chain! { links { @@ -37,6 +38,10 @@ error_chain! { description("Proposal had timestamp too far in the future."), display("Proposal had timestamp too far in the future."), } + NotValidator(id: AccountId) { + description("Local account ID not a validator at this block."), + display("Local account ID ({:?}) not a validator at this block.", id), + } WrongParentHash(expected: HeaderHash, got: HeaderHash) { description("Proposal had wrong parent hash."), display("Proposal had wrong parent hash. Expected {:?}, got {:?}", expected, got), diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 2ee5d4d0fac9e..2907870ccb800 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -67,7 +67,7 @@ use table::generic::Statement as GenericStatement; use runtime_support::Hashable; use polkadot_api::{PolkadotApi, BlockBuilder}; use polkadot_primitives::{Hash, Timestamp}; -use polkadot_primitives::parachain::{Id as ParaId, DutyRoster, BlockData, Extrinsic, CandidateReceipt}; +use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic, CandidateReceipt}; use polkadot_runtime::Block as PolkadotGenericBlock; use primitives::block::{Block as SubstrateBlock, Header as SubstrateHeader, HeaderHash, Id as BlockId, Number as BlockNumber}; use primitives::AuthorityId; @@ -91,7 +91,9 @@ mod service; const MAX_TRANSACTIONS_SIZE: usize = 4 * 1024 * 1024; /// A handle to a statement table router. -pub trait TableRouter { +/// +/// This is expected to be a lightweight, shared type like an `Arc`. +pub trait TableRouter: Clone { /// Errors when fetching data from the network. type Error; /// Future that resolves when candidate data is fetched. @@ -476,7 +478,7 @@ impl SharedTable { } } -fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId]) -> Result, Error> { +fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: AuthorityId) -> Result<(HashMap, LocalDuty), Error> { if roster.validator_duty.len() != authorities.len() { bail!(ErrorKind::InvalidDutyRosterLength(authorities.len(), roster.validator_duty.len())) } @@ -485,11 +487,20 @@ fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId]) -> Result {}, // does nothing for now. @@ -518,7 +529,17 @@ fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId]) -> Result { + let local_duty = LocalDuty { + validation: local_validation, + availability: local_availability, + }; + + Ok((map, local_duty)) + } + None => bail!(ErrorKind::NotValidator(local_id)), + } } /// Polkadot proposer factory. @@ -530,7 +551,7 @@ pub struct ProposerFactory { /// The backing network handle. pub network: N, /// Parachain collators. - pub collators: Arc

, + pub collators: P, /// The duration after which parachain-empty blocks will be allowed. pub parachain_empty_duration: Duration, } @@ -550,7 +571,12 @@ impl bft::ProposerFactory for ProposerFactory let checked_id = self.client.check_id(BlockId::Hash(parent_hash))?; let duty_roster = self.client.duty_roster(&checked_id)?; - let group_info = make_group_info(duty_roster, authorities)?; + let (group_info, local_duty) = make_group_info( + duty_roster, + authorities, + sign_with.public().0, + )?; + let n_parachains = group_info.len(); let table = Arc::new(SharedTable::new(group_info, sign_with.clone(), parent_hash)); let router = self.network.table_router(table.clone()); @@ -568,6 +594,7 @@ impl bft::ProposerFactory for ProposerFactory client: self.client.clone(), transaction_pool: self.transaction_pool.clone(), collators: self.collators.clone(), + local_duty, dynamic_inclusion, table, router, @@ -583,6 +610,11 @@ fn current_timestamp() -> Timestamp { .as_secs() } +struct LocalDuty { + validation: Chain, + availability: Vec, +} + /// The Polkadot proposer logic. pub struct Proposer { parent_hash: HeaderHash, @@ -591,7 +623,8 @@ pub struct Proposer { client: Arc, local_key: Arc, transaction_pool: Arc>, - collators: Arc

, + local_duty: LocalDuty, + collators: P, dynamic_inclusion: DynamicInclusion, table: Arc, router: R, @@ -608,7 +641,22 @@ impl bft::Proposer for Proposer type Evaluate = Result; fn propose(&self) -> CreateProposal { - unimplemented!(); + CreateProposal { + parent_hash: self.parent_hash.clone(), + parent_number: self.parent_number.clone(), + parent_id: self.parent_id.clone(), + client: self.client.clone(), + transaction_pool: self.transaction_pool.clone(), + collation: CollationFetch::new( + self.local_duty.validation, + self.parent_hash.clone(), + self.collators.clone(), + self.client.clone() + ), + dynamic_inclusion: self.dynamic_inclusion.clone(), + table: self.table.clone(), + router: self.router.clone(), + } } // TODO: certain kinds of errors here should lead to a misbehavior report. diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 3014cd226b5a0..7638f1934689e 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -155,7 +155,7 @@ impl Service { client: client.clone(), transaction_pool: transaction_pool.clone(), network: Network(network.clone()), - collators: Arc::new(NoCollators), + collators: NoCollators, parachain_empty_duration: Duration::from_millis(10_000), // TODO }; let bft_service = BftService::new(client.clone(), key, factory); @@ -202,6 +202,7 @@ impl Drop for Service { // Collators implementation which never collates anything. // TODO: do a real implementation. +#[derive(Clone, Copy)] struct NoCollators; impl ::collation::Collators for NoCollators { @@ -228,6 +229,7 @@ impl super::Network for Network { type FetchCandidateAdapter = future::Map) -> BlockData>; +#[derive(Clone)] struct Router { network: Arc, } From 04bf51794e064c91572d189e98a27eeb33ca1db8 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 6 Apr 2018 11:32:03 +0200 Subject: [PATCH 006/103] remove local_availability duty --- polkadot/consensus/src/lib.rs | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 2907870ccb800..34b08deedb310 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -488,18 +488,12 @@ fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: Au } let mut local_validation = None; - let mut local_availability = Vec::new(); - let mut map = HashMap::new(); let duty_iter = authorities.iter().zip(&roster.validator_duty).zip(&roster.guarantor_duty); for ((authority, v_duty), a_duty) in duty_iter { if authority == &local_id { local_validation = Some(v_duty.clone()); - - if let Chain::Parachain(ref id) = *a_duty { - local_availability.push(id.clone()); - } } match *v_duty { @@ -533,7 +527,6 @@ fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: Au Some(local_validation) => { let local_duty = LocalDuty { validation: local_validation, - availability: local_availability, }; Ok((map, local_duty)) @@ -602,17 +595,8 @@ impl bft::ProposerFactory for ProposerFactory } } -fn current_timestamp() -> Timestamp { - use std::time; - - time::SystemTime::now().duration_since(time::UNIX_EPOCH) - .expect("now always later than unix epoch; qed") - .as_secs() -} - struct LocalDuty { validation: Chain, - availability: Vec, } /// The Polkadot proposer logic. @@ -719,6 +703,14 @@ impl bft::Proposer for Proposer } } +fn current_timestamp() -> Timestamp { + use std::time; + + time::SystemTime::now().duration_since(time::UNIX_EPOCH) + .expect("now always later than unix epoch; qed") + .as_secs() +} + /// Future which resolves upon the creation of a proposal. pub struct CreateProposal { parent_hash: HeaderHash, From 65593660a7cc6e1248d623498f4c78f64e2865e6 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 6 Apr 2018 19:47:10 +0200 Subject: [PATCH 007/103] statement table tracks includable parachain count --- polkadot/statement-table/src/generic.rs | 127 ++++++++++++++++++++++-- 1 file changed, 120 insertions(+), 7 deletions(-) diff --git a/polkadot/statement-table/src/generic.rs b/polkadot/statement-table/src/generic.rs index 11665fe114636..ea32ebf4602a7 100644 --- a/polkadot/statement-table/src/generic.rs +++ b/polkadot/statement-table/src/generic.rs @@ -232,6 +232,10 @@ impl CandidateData { // if it has enough validity and availability votes // and no authorities have called it bad. fn can_be_included(&self, validity_threshold: usize, availability_threshold: usize) -> bool { + println!("can be included? v = {:?}, a = {:?}", + (validity_threshold, self.validity_votes.len()), + (availability_threshold, self.availability_votes.len()), + ); self.indicated_bad_by.is_empty() && self.validity_votes.len() >= validity_threshold && self.availability_votes.len() >= availability_threshold @@ -268,6 +272,7 @@ pub struct Table { authority_data: HashMap>, detected_misbehavior: HashMap::Misbehavior>, candidate_votes: HashMap>, + includable_count: HashMap, } impl Default for Table { @@ -276,6 +281,7 @@ impl Default for Table { authority_data: HashMap::new(), detected_misbehavior: HashMap::new(), candidate_votes: HashMap::new(), + includable_count: HashMap::new(), } } } @@ -294,6 +300,11 @@ impl Table { let mut best_candidates = BTreeMap::new(); for candidate_data in self.candidate_votes.values() { let group_id = &candidate_data.group_id; + + if !self.includable_count.contains_key(group_id) { + continue + } + let (validity_t, availability_t) = context.requisite_votes(group_id); if !candidate_data.can_be_included(validity_t, availability_t) { continue } @@ -394,6 +405,11 @@ impl Table { &self.detected_misbehavior } + /// Get the current number of parachains with includable candidates. + pub fn includable_count(&self) -> usize { + self.includable_count.len() + } + /// Fill a statement batch and note messages as seen by the targets. pub fn fill_batch(&mut self, batch: &mut B) where B: StatementBatch< @@ -622,6 +638,9 @@ impl Table { Some(votes) => votes, }; + let (v_threshold, a_threshold) = context.requisite_votes(&votes.group_id); + let was_includable = votes.can_be_included(v_threshold, a_threshold); + // check that this authority actually can vote in this group. if !context.is_member_of(&from, &votes.group_id) { let (sig, valid) = match vote { @@ -686,6 +705,9 @@ impl Table { } } + let is_includable = votes.can_be_included(v_threshold, a_threshold); + update_includable_count(&mut self.includable_count, &votes.group_id, was_includable, is_includable); + (None, Some(votes.summary(digest))) } @@ -701,6 +723,9 @@ impl Table { Some(votes) => votes, }; + let (v_threshold, a_threshold) = context.requisite_votes(&votes.group_id); + let was_includable = votes.can_be_included(v_threshold, a_threshold); + // check that this authority actually can vote in this group. if !context.is_availability_guarantor_of(&from, &votes.group_id) { return ( @@ -716,10 +741,31 @@ impl Table { } votes.availability_votes.insert(from, signature); + + let is_includable = votes.can_be_included(v_threshold, a_threshold); + update_includable_count(&mut self.includable_count, &votes.group_id, was_includable, is_includable); + (None, Some(votes.summary(digest))) } } +fn update_includable_count(map: &mut HashMap, group_id: &G, was_includable: bool, is_includable: bool) { + println!("updating includability count: was {}, is {}", was_includable, is_includable); + + if was_includable && !is_includable { + if let Entry::Occupied(mut entry) = map.entry(group_id.clone()) { + *entry.get_mut() -= 1; + if *entry.get() == 0 { + entry.remove(); + } + } + } + + if !was_includable && is_includable { + map.entry(group_id.clone()).or_insert(1); + } +} + #[cfg(test)] mod tests { use super::*; @@ -746,11 +792,7 @@ mod tests { } fn create() -> Table { - Table { - authority_data: HashMap::default(), - detected_misbehavior: HashMap::default(), - candidate_votes: HashMap::default(), - } + Table::default() } #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] @@ -806,8 +848,16 @@ mod tests { self.authorities.get(authority).map(|v| &v.1 == group).unwrap_or(false) } - fn requisite_votes(&self, _id: &GroupId) -> (usize, usize) { - (6, 34) + fn requisite_votes(&self, id: &GroupId) -> (usize, usize) { + let mut total_validity = 0; + let mut total_availability = 0; + + for &(ref validity, ref availability) in self.authorities.values() { + if validity == id { total_validity += 1 } + if availability == id { total_availability += 1 } + } + + (total_validity / 2 + 1, total_availability / 2 + 1) } } @@ -1067,6 +1117,69 @@ mod tests { assert!(!candidate.can_be_included(validity_threshold, availability_threshold)); } + #[test] + fn includability_counter() { + let context = TestContext { + authorities: { + let mut map = HashMap::new(); + map.insert(AuthorityId(1), (GroupId(2), GroupId(455))); + map.insert(AuthorityId(2), (GroupId(2), GroupId(455))); + map.insert(AuthorityId(3), (GroupId(2), GroupId(455))); + map.insert(AuthorityId(4), (GroupId(455), GroupId(2))); + map + } + }; + + // have 2/3 validity guarantors note validity. + let mut table = create(); + let statement = SignedStatement { + statement: Statement::Candidate(Candidate(2, 100)), + signature: Signature(1), + sender: AuthorityId(1), + }; + let candidate_digest = Digest(100); + + table.import_statement(&context, statement, None); + assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); + assert!(!table.candidate_includable(&candidate_digest, &context)); + assert!(table.includable_count.is_empty()); + + let vote = SignedStatement { + statement: Statement::Valid(candidate_digest.clone()), + signature: Signature(2), + sender: AuthorityId(2), + }; + + table.import_statement(&context, vote, None); + assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); + assert!(!table.candidate_includable(&candidate_digest, &context)); + assert!(table.includable_count.is_empty()); + + // have the availability guarantor note validity. + let vote = SignedStatement { + statement: Statement::Available(candidate_digest.clone()), + signature: Signature(4), + sender: AuthorityId(4), + }; + + table.import_statement(&context, vote, None); + assert!(!table.detected_misbehavior.contains_key(&AuthorityId(4))); + assert!(table.candidate_includable(&candidate_digest, &context)); + assert!(table.includable_count.get(&GroupId(2)).is_some()); + + // have the last validity guarantor note invalidity. now it is unincludable. + let vote = SignedStatement { + statement: Statement::Invalid(candidate_digest.clone()), + signature: Signature(3), + sender: AuthorityId(3), + }; + + table.import_statement(&context, vote, None); + assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); + assert!(!table.candidate_includable(&candidate_digest, &context)); + assert!(table.includable_count.is_empty()); + } + #[test] fn candidate_import_gives_summary() { let context = TestContext { From 9bf4b2a8d034fd29cd44d6abac5b9535b8209bd6 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 6 Apr 2018 19:54:55 +0200 Subject: [PATCH 008/103] beginnings of timing future --- polkadot/consensus/src/error.rs | 4 +++ polkadot/consensus/src/lib.rs | 50 ++++++++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/polkadot/consensus/src/error.rs b/polkadot/consensus/src/error.rs index 34ad98aba6f59..efffbcd6cee50 100644 --- a/polkadot/consensus/src/error.rs +++ b/polkadot/consensus/src/error.rs @@ -25,6 +25,10 @@ error_chain! { Bft(::bft::Error, ::bft::ErrorKind); } + foreign_links { + Timer(::tokio_timer::TimerError); + } + errors { InvalidDutyRosterLength(expected: usize, got: usize) { description("Duty Roster had invalid length"), diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 34b08deedb310..998b6cf66483b 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -72,6 +72,7 @@ use polkadot_runtime::Block as PolkadotGenericBlock; use primitives::block::{Block as SubstrateBlock, Header as SubstrateHeader, HeaderHash, Id as BlockId, Number as BlockNumber}; use primitives::AuthorityId; use transaction_pool::{Ready, TransactionPool, PolkadotBlock}; +use tokio_timer::{Timer, Interval, Sleep, TimerError}; use futures::prelude::*; use futures::future; @@ -447,11 +448,6 @@ impl SharedTable { }).collect() } - /// Check if a proposal is valid. - pub fn proposal_valid(&self, _proposal: &SubstrateBlock) -> bool { - false // TODO - } - /// Execute a closure using a specific candidate. /// /// Deadlocks if called recursively. @@ -462,6 +458,16 @@ impl SharedTable { f(inner.table.get_candidate(digest)) } + /// Execute a closure using the current proposed set. + /// + /// Deadlocks if called recursively. + pub fn with_proposal(&self, digest: &Hash, f: F) -> U + where F: FnOnce(Vec<&CandidateReceipt>) -> U + { + let inner = self.inner.lock(); + f(inner.table.proposed_candidates(&*self.context)) + } + /// Get all witnessed misbehavior. pub fn get_misbehavior(&self) -> HashMap { self.inner.lock().table.get_misbehavior().clone() @@ -545,6 +551,8 @@ pub struct ProposerFactory { pub network: N, /// Parachain collators. pub collators: P, + /// The timer used to schedule proposal intervals. + pub Timer, /// The duration after which parachain-empty blocks will be allowed. pub parachain_empty_duration: Duration, } @@ -711,6 +719,33 @@ fn current_timestamp() -> Timestamp { .as_secs() } +struct ProposalTiming { + timer: Timer, + attempt_propose: Interval, + enough_candidates: Sleep, +} + +impl ProposalTiming { + // whether it's time to attempt a proposal. + // should only be called within the context of a task. + fn attempt_propose(&mut self) -> Result { + match self.attempt_propose.poll()? { + Async::Ready(x) => { x.expect("timer still alive; intervals never end; qed"); Ok(true) } + Async::NotReady => Ok({ + match self.enough_candidates.poll()? { + Async::Ready(()) => true + Async::NotReady => false, + } + }) + } + } + + // schedule the time when enough candidates are ready. + fn enough_candidates_at(&mut self, duration: Duration){ + self.enough_candidates = self.timer.sleep(duration); + } +} + /// Future which resolves upon the creation of a proposal. pub struct CreateProposal { parent_hash: HeaderHash, @@ -722,6 +757,7 @@ pub struct CreateProposal { collation: CollationFetch, router: R, table: Arc, + timing: ProposalTiming, } impl CreateProposal @@ -797,9 +833,9 @@ impl Future for CreateProposal } // 2. check readiness timer + if self.timing.attempt_propose()? { - // 3. check reseal interval - unimplemented!() + } } } From f1d7634c5f8c81224e19471c245132eeb981ff28 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 7 Apr 2018 17:55:14 +0200 Subject: [PATCH 009/103] finish proposal logic --- polkadot/consensus/src/lib.rs | 37 +++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 4e2e4b6e4bf08..88a9055179338 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -461,13 +461,18 @@ impl SharedTable { /// Execute a closure using the current proposed set. /// /// Deadlocks if called recursively. - pub fn with_proposal(&self, digest: &Hash, f: F) -> U + pub fn with_proposal(&self, f: F) -> U where F: FnOnce(Vec<&CandidateReceipt>) -> U { let inner = self.inner.lock(); f(inner.table.proposed_candidates(&*self.context)) } + /// Get the number of parachains which have available candidates. + pub fn includable_count(&self) -> usize { + self.inner.lock().table.includable_count() + } + /// Get all witnessed misbehavior. pub fn get_misbehavior(&self) -> HashMap { self.inner.lock().table.get_misbehavior().clone() @@ -753,7 +758,7 @@ impl ProposalTiming { } // schedule the time when enough candidates are ready. - fn enough_candidates_at(&mut self, duration: Duration){ + fn enough_candidates_at(&mut self, duration: Duration) { self.enough_candidates = self.timer.sleep(duration); } } @@ -778,7 +783,7 @@ impl CreateProposal R: TableRouter, P: Collators, { - fn propose(&self) -> Result { + fn propose_with(&self, _candidates: Vec) -> Result { debug!(target: "bft", "proposing block on top of parent ({}, {:?})", self.parent_number, self.parent_hash); // TODO: handle case when current timestamp behind that in state. @@ -846,12 +851,28 @@ impl Future for CreateProposal Err(_) => {}, // TODO: handle this failure to collate. } - // 2. check readiness timer - if self.timing.attempt_propose()? { - - } + // 2. try to propose if our interval or previous timer has gone off. + let proposal = if self.timing.attempt_propose()? { + let included = self.table.includable_count(); + match self.dynamic_inclusion.acceptable_in(Instant::now(), included) { + Some(sleep_for) => { + self.timing.enough_candidates_at(sleep_for); + None + } + None => { + self.table.with_proposal(|proposed_set| { + Some(proposed_set.into_iter().cloned().collect()) + }) + } + } + } else { + None + }; - unimplemented!() + Ok(match proposal { + Some(p) => Async::Ready(self.propose_with(p)?), + None => Async::NotReady, + }) } } From 908bcabb3c9de63eeb03ff7d978e4b8c06f5eb88 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 7 Apr 2018 18:21:22 +0200 Subject: [PATCH 010/103] remove stray println --- polkadot/statement-table/src/generic.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/polkadot/statement-table/src/generic.rs b/polkadot/statement-table/src/generic.rs index ea32ebf4602a7..18b39acb1a779 100644 --- a/polkadot/statement-table/src/generic.rs +++ b/polkadot/statement-table/src/generic.rs @@ -232,10 +232,6 @@ impl CandidateData { // if it has enough validity and availability votes // and no authorities have called it bad. fn can_be_included(&self, validity_threshold: usize, availability_threshold: usize) -> bool { - println!("can be included? v = {:?}, a = {:?}", - (validity_threshold, self.validity_votes.len()), - (availability_threshold, self.availability_votes.len()), - ); self.indicated_bad_by.is_empty() && self.validity_votes.len() >= validity_threshold && self.availability_votes.len() >= availability_threshold From 74b7dede018ac8a69e4daa989fcbbfc38dbfe036 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 7 Apr 2018 18:54:01 +0200 Subject: [PATCH 011/103] extract shared table to separate module --- polkadot/consensus/src/collation.rs | 6 +- polkadot/consensus/src/lib.rs | 341 +---------------------- polkadot/consensus/src/shared_table.rs | 367 +++++++++++++++++++++++++ 3 files changed, 372 insertions(+), 342 deletions(-) create mode 100644 polkadot/consensus/src/shared_table.rs diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs index bf10cc4ee4a30..18c6c5d022c92 100644 --- a/polkadot/consensus/src/collation.rs +++ b/polkadot/consensus/src/collation.rs @@ -22,10 +22,8 @@ use std::sync::Arc; use polkadot_api::PolkadotApi; -use polkadot_primitives::{Hash, Timestamp, AccountId}; -use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic, CandidateReceipt}; -use primitives::block::{Block as SubstrateBlock, Header as SubstrateHeader, HeaderHash, Id as BlockId, Number as BlockNumber}; -use primitives::AuthorityId; +use polkadot_primitives::{Hash, AccountId}; +use polkadot_primitives::parachain::{Id as ParaId, Chain, BlockData, Extrinsic, CandidateReceipt}; use futures::prelude::*; diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 88a9055179338..a197eece45f46 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -62,7 +62,6 @@ use std::sync::Arc; use std::time::{Duration, Instant}; use codec::Slicable; -use table::{Table, Context as TableContextTrait}; use table::generic::Statement as GenericStatement; use runtime_support::Hashable; use polkadot_api::{PolkadotApi, BlockBuilder}; @@ -75,18 +74,19 @@ use transaction_pool::{Ready, TransactionPool, PolkadotBlock}; use tokio_timer::{Timer, Interval, Sleep, TimerError}; use futures::prelude::*; -use futures::future; use parking_lot::Mutex; -use collation::{Collation, Collators, CollationFetch}; +use collation::{Collators, CollationFetch}; use dynamic_inclusion::DynamicInclusion; pub use self::error::{ErrorKind, Error}; +pub use self::shared_table::{SharedTable, StatementSource, StatementProducer, ProducedStatements}; pub use service::Service; mod collation; mod dynamic_inclusion; mod error; mod service; +mod shared_table; // block size limit. const MAX_TRANSACTIONS_SIZE: usize = 4 * 1024 * 1024; @@ -135,46 +135,6 @@ pub struct GroupInfo { pub needed_availability: usize, } -struct TableContext { - parent_hash: Hash, - key: Arc, - groups: HashMap, -} - -impl table::Context for TableContext { - fn is_member_of(&self, authority: &AuthorityId, group: &ParaId) -> bool { - self.groups.get(group).map_or(false, |g| g.validity_guarantors.contains(authority)) - } - - fn is_availability_guarantor_of(&self, authority: &AuthorityId, group: &ParaId) -> bool { - self.groups.get(group).map_or(false, |g| g.availability_guarantors.contains(authority)) - } - - fn requisite_votes(&self, group: &ParaId) -> (usize, usize) { - self.groups.get(group).map_or( - (usize::max_value(), usize::max_value()), - |g| (g.needed_validity, g.needed_availability), - ) - } -} - -impl TableContext { - fn local_id(&self) -> AuthorityId { - self.key.public().0 - } - - fn sign_statement(&self, statement: table::Statement) -> table::SignedStatement { - let signature = sign_table_statement(&statement, &self.key, &self.parent_hash).into(); - let local_id = self.key.public().0; - - table::SignedStatement { - statement, - signature, - sender: local_id, - } - } -} - /// Sign a table statement against a parent hash. /// The actual message signed is the encoded statement concatenated with the /// parent hash. @@ -194,301 +154,6 @@ pub fn sign_table_statement(statement: &table::Statement, key: &ed25519::Pair, p key.sign(&encoded) } -/// Source of statements -pub enum StatementSource { - /// Locally produced statement. - Local, - /// Received statement from remote source, with optional sender. - Remote(Option), -} - -// A shared table object. -struct SharedTableInner { - table: Table, - proposed_digest: Option, - checked_validity: HashSet, - checked_availability: HashSet, -} - -impl SharedTableInner { - // Import a single statement. Provide a handle to a table router. - fn import_statement( - &mut self, - context: &TableContext, - router: &R, - statement: table::SignedStatement, - statement_source: StatementSource, - ) -> StatementProducer<::Future, ::Future> { - // this blank producer does nothing until we attach some futures - // and set a candidate digest. - let mut producer = Default::default(); - - let received_from = match statement_source { - StatementSource::Local => return producer, - StatementSource::Remote(from) => from, - }; - - let summary = match self.table.import_statement(context, statement, received_from) { - Some(summary) => summary, - None => return producer, - }; - - producer.candidate_digest = Some(summary.candidate); - - let local_id = context.local_id(); - - let is_validity_member = context.is_member_of(&local_id, &summary.group_id); - let is_availability_member = - context.is_availability_guarantor_of(&local_id, &summary.group_id); - - let digest = &summary.candidate; - - // TODO: consider a strategy based on the number of candidate votes as well. - // only check validity if this wasn't locally proposed. - let checking_validity = is_validity_member - && self.proposed_digest.as_ref().map_or(true, |d| d != digest) - && self.checked_validity.insert(digest.clone()); - - let checking_availability = is_availability_member - && self.checked_availability.insert(digest.clone()); - - if checking_validity || checking_availability { - match self.table.get_candidate(&digest) { - None => {} // TODO: handle table inconsistency somehow? - Some(candidate) => { - if checking_validity { - producer.fetch_block_data = Some( - router.fetch_block_data(candidate).into_future().fuse() - ); - } - - if checking_availability { - producer.fetch_extrinsic = Some( - router.fetch_extrinsic_data(candidate).into_future().fuse() - ); - } - } - } - } - - producer - } -} - -/// Produced statements about a specific candidate. -/// Both may be `None`. -#[derive(Default)] -pub struct ProducedStatements { - /// A statement about the validity of the candidate. - pub validity: Option, - /// A statement about availability of data. If this is `Some`, - /// then `block_data` and `extrinsic` should be `Some` as well. - pub availability: Option, - /// Block data to ensure availability of. - pub block_data: Option, - /// Extrinsic data to ensure availability of. - pub extrinsic: Option, -} - -/// Future that produces statements about a specific candidate. -pub struct StatementProducer { - fetch_block_data: Option>, - fetch_extrinsic: Option>, - produced_statements: ProducedStatements, - candidate_digest: Option, -} - -impl Default for StatementProducer { - fn default() -> Self { - StatementProducer { - fetch_block_data: None, - fetch_extrinsic: None, - produced_statements: Default::default(), - candidate_digest: Default::default(), - } - } -} - -impl Future for StatementProducer - where - D: Future, - E: Future, -{ - type Item = ProducedStatements; - type Error = Err; - - fn poll(&mut self) -> Poll { - let candidate_digest = match self.candidate_digest.as_ref() { - Some(x) => x, - None => return Ok(Async::Ready(::std::mem::replace(&mut self.produced_statements, Default::default()))), - }; - - let mut done = true; - if let Some(ref mut fetch_block_data) = self.fetch_block_data { - match fetch_block_data.poll()? { - Async::Ready(block_data) => { - // TODO [PoC-2]: validate block data here and make statement. - self.produced_statements.block_data = Some(block_data); - }, - Async::NotReady => { - done = false; - } - } - } - - if let Some(ref mut fetch_extrinsic) = self.fetch_extrinsic { - match fetch_extrinsic.poll()? { - Async::Ready(extrinsic) => { - self.produced_statements.extrinsic = Some(extrinsic); - } - Async::NotReady => { - done = false; - } - } - } - - if done { - let mut produced = ::std::mem::replace(&mut self.produced_statements, Default::default()); - if produced.block_data.is_some() && produced.extrinsic.is_some() { - // produce a statement about availability. - produced.availability = Some(GenericStatement::Available(candidate_digest.clone())); - } - Ok(Async::Ready(produced)) - } else { - Ok(Async::NotReady) - } - } -} - -/// A shared table object. -pub struct SharedTable { - context: Arc, - inner: Arc>, -} - -impl Clone for SharedTable { - fn clone(&self) -> Self { - SharedTable { - context: self.context.clone(), - inner: self.inner.clone(), - } - } -} - -impl SharedTable { - /// Create a new shared table. - /// - /// Provide the key to sign with, and the parent hash of the relay chain - /// block being built. - pub fn new(groups: HashMap, key: Arc, parent_hash: Hash) -> Self { - SharedTable { - context: Arc::new(TableContext { groups, key, parent_hash }), - inner: Arc::new(Mutex::new(SharedTableInner { - table: Table::default(), - proposed_digest: None, - checked_validity: HashSet::new(), - checked_availability: HashSet::new(), - })) - } - } - - /// Get group info. - pub fn group_info(&self) -> &HashMap { - &self.context.groups - } - - /// Import a single statement. Provide a handle to a table router - /// for dispatching any other requests which come up. - pub fn import_statement( - &self, - router: &R, - statement: table::SignedStatement, - received_from: StatementSource, - ) -> StatementProducer<::Future, ::Future> { - self.inner.lock().import_statement(&*self.context, router, statement, received_from) - } - - /// Sign and import a local statement. - pub fn sign_and_import( - &self, - router: &R, - statement: table::Statement, - ) { - let proposed_digest = match statement { - GenericStatement::Candidate(ref c) => Some(c.hash()), - _ => None, - }; - - let signed_statement = self.context.sign_statement(statement); - - let mut inner = self.inner.lock(); - if proposed_digest.is_some() { - inner.proposed_digest = proposed_digest; - } - - inner.import_statement(&*self.context, router, signed_statement, StatementSource::Local); - } - - /// Import many statements at once. - /// - /// Provide an iterator yielding pairs of (statement, statement_source). - pub fn import_statements(&self, router: &R, iterable: I) -> U - where - R: TableRouter, - I: IntoIterator, - U: ::std::iter::FromIterator::Future, - ::Future> - >, - { - let mut inner = self.inner.lock(); - - iterable.into_iter().map(move |(statement, statement_source)| { - inner.import_statement(&*self.context, router, statement, statement_source) - }).collect() - } - - /// Execute a closure using a specific candidate. - /// - /// Deadlocks if called recursively. - pub fn with_candidate(&self, digest: &Hash, f: F) -> U - where F: FnOnce(Option<&CandidateReceipt>) -> U - { - let inner = self.inner.lock(); - f(inner.table.get_candidate(digest)) - } - - /// Execute a closure using the current proposed set. - /// - /// Deadlocks if called recursively. - pub fn with_proposal(&self, f: F) -> U - where F: FnOnce(Vec<&CandidateReceipt>) -> U - { - let inner = self.inner.lock(); - f(inner.table.proposed_candidates(&*self.context)) - } - - /// Get the number of parachains which have available candidates. - pub fn includable_count(&self) -> usize { - self.inner.lock().table.includable_count() - } - - /// Get all witnessed misbehavior. - pub fn get_misbehavior(&self) -> HashMap { - self.inner.lock().table.get_misbehavior().clone() - } - - /// Fill a statement batch. - pub fn fill_batch(&self, batch: &mut B) { - self.inner.lock().table.fill_batch(batch); - } - - /// Get the local proposed block's hash. - pub fn proposed_hash(&self) -> Option { - self.inner.lock().proposed_digest.clone() - } -} - fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: AuthorityId) -> Result<(HashMap, LocalDuty), Error> { if roster.validator_duty.len() != authorities.len() { bail!(ErrorKind::InvalidDutyRosterLength(authorities.len(), roster.validator_duty.len())) diff --git a/polkadot/consensus/src/shared_table.rs b/polkadot/consensus/src/shared_table.rs new file mode 100644 index 0000000000000..029865d47d2f9 --- /dev/null +++ b/polkadot/consensus/src/shared_table.rs @@ -0,0 +1,367 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Parachain statement table meant to to shared with a message router +//! and a consensus proposer. + +use std::collections::{HashMap, HashSet}; +use std::sync::Arc; + +use table::{self, Table, Context as TableContextTrait}; +use table::generic::Statement as GenericStatement; +use polkadot_primitives::Hash; +use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic, CandidateReceipt}; +use primitives::AuthorityId; + +use parking_lot::Mutex; +use futures::{future, prelude::*}; + +use super::{GroupInfo, TableRouter}; + +struct TableContext { + parent_hash: Hash, + key: Arc<::ed25519::Pair>, + groups: HashMap, +} + +impl table::Context for TableContext { + fn is_member_of(&self, authority: &AuthorityId, group: &ParaId) -> bool { + self.groups.get(group).map_or(false, |g| g.validity_guarantors.contains(authority)) + } + + fn is_availability_guarantor_of(&self, authority: &AuthorityId, group: &ParaId) -> bool { + self.groups.get(group).map_or(false, |g| g.availability_guarantors.contains(authority)) + } + + fn requisite_votes(&self, group: &ParaId) -> (usize, usize) { + self.groups.get(group).map_or( + (usize::max_value(), usize::max_value()), + |g| (g.needed_validity, g.needed_availability), + ) + } +} + +impl TableContext { + fn local_id(&self) -> AuthorityId { + self.key.public().0 + } + + fn sign_statement(&self, statement: table::Statement) -> table::SignedStatement { + let signature = ::sign_table_statement(&statement, &self.key, &self.parent_hash).into(); + let local_id = self.key.public().0; + + table::SignedStatement { + statement, + signature, + sender: local_id, + } + } +} + +/// Source of statements +pub enum StatementSource { + /// Locally produced statement. + Local, + /// Received statement from remote source, with optional sender. + Remote(Option), +} + +// A shared table object. +struct SharedTableInner { + table: Table, + proposed_digest: Option, + checked_validity: HashSet, + checked_availability: HashSet, +} + +impl SharedTableInner { + // Import a single statement. Provide a handle to a table router. + fn import_statement( + &mut self, + context: &TableContext, + router: &R, + statement: table::SignedStatement, + statement_source: StatementSource, + ) -> StatementProducer<::Future, ::Future> { + // this blank producer does nothing until we attach some futures + // and set a candidate digest. + let mut producer = Default::default(); + + let received_from = match statement_source { + StatementSource::Local => return producer, + StatementSource::Remote(from) => from, + }; + + let summary = match self.table.import_statement(context, statement, received_from) { + Some(summary) => summary, + None => return producer, + }; + + producer.candidate_digest = Some(summary.candidate); + + let local_id = context.local_id(); + + let is_validity_member = context.is_member_of(&local_id, &summary.group_id); + let is_availability_member = + context.is_availability_guarantor_of(&local_id, &summary.group_id); + + let digest = &summary.candidate; + + // TODO: consider a strategy based on the number of candidate votes as well. + // only check validity if this wasn't locally proposed. + let checking_validity = is_validity_member + && self.proposed_digest.as_ref().map_or(true, |d| d != digest) + && self.checked_validity.insert(digest.clone()); + + let checking_availability = is_availability_member + && self.checked_availability.insert(digest.clone()); + + if checking_validity || checking_availability { + match self.table.get_candidate(&digest) { + None => {} // TODO: handle table inconsistency somehow? + Some(candidate) => { + if checking_validity { + producer.fetch_block_data = Some( + router.fetch_block_data(candidate).into_future().fuse() + ); + } + + if checking_availability { + producer.fetch_extrinsic = Some( + router.fetch_extrinsic_data(candidate).into_future().fuse() + ); + } + } + } + } + + producer + } +} + +/// Produced statements about a specific candidate. +/// Both may be `None`. +#[derive(Default)] +pub struct ProducedStatements { + /// A statement about the validity of the candidate. + pub validity: Option, + /// A statement about availability of data. If this is `Some`, + /// then `block_data` and `extrinsic` should be `Some` as well. + pub availability: Option, + /// Block data to ensure availability of. + pub block_data: Option, + /// Extrinsic data to ensure availability of. + pub extrinsic: Option, +} + +/// Future that produces statements about a specific candidate. +pub struct StatementProducer { + fetch_block_data: Option>, + fetch_extrinsic: Option>, + produced_statements: ProducedStatements, + candidate_digest: Option, +} + +impl Default for StatementProducer { + fn default() -> Self { + StatementProducer { + fetch_block_data: None, + fetch_extrinsic: None, + produced_statements: Default::default(), + candidate_digest: Default::default(), + } + } +} + +impl Future for StatementProducer + where + D: Future, + E: Future, +{ + type Item = ProducedStatements; + type Error = Err; + + fn poll(&mut self) -> Poll { + let candidate_digest = match self.candidate_digest.as_ref() { + Some(x) => x, + None => return Ok(Async::Ready(::std::mem::replace(&mut self.produced_statements, Default::default()))), + }; + + let mut done = true; + if let Some(ref mut fetch_block_data) = self.fetch_block_data { + match fetch_block_data.poll()? { + Async::Ready(block_data) => { + // TODO [PoC-2]: validate block data here and make statement. + self.produced_statements.block_data = Some(block_data); + }, + Async::NotReady => { + done = false; + } + } + } + + if let Some(ref mut fetch_extrinsic) = self.fetch_extrinsic { + match fetch_extrinsic.poll()? { + Async::Ready(extrinsic) => { + self.produced_statements.extrinsic = Some(extrinsic); + } + Async::NotReady => { + done = false; + } + } + } + + if done { + let mut produced = ::std::mem::replace(&mut self.produced_statements, Default::default()); + if produced.block_data.is_some() && produced.extrinsic.is_some() { + // produce a statement about availability. + produced.availability = Some(GenericStatement::Available(candidate_digest.clone())); + } + Ok(Async::Ready(produced)) + } else { + Ok(Async::NotReady) + } + } +} + +/// A shared table object. +pub struct SharedTable { + context: Arc, + inner: Arc>, +} + +impl Clone for SharedTable { + fn clone(&self) -> Self { + SharedTable { + context: self.context.clone(), + inner: self.inner.clone(), + } + } +} + +impl SharedTable { + /// Create a new shared table. + /// + /// Provide the key to sign with, and the parent hash of the relay chain + /// block being built. + pub fn new(groups: HashMap, key: Arc<::ed25519::Pair>, parent_hash: Hash) -> Self { + SharedTable { + context: Arc::new(TableContext { groups, key, parent_hash }), + inner: Arc::new(Mutex::new(SharedTableInner { + table: Table::default(), + proposed_digest: None, + checked_validity: HashSet::new(), + checked_availability: HashSet::new(), + })) + } + } + + /// Get group info. + pub fn group_info(&self) -> &HashMap { + &self.context.groups + } + + /// Import a single statement. Provide a handle to a table router + /// for dispatching any other requests which come up. + pub fn import_statement( + &self, + router: &R, + statement: table::SignedStatement, + received_from: StatementSource, + ) -> StatementProducer<::Future, ::Future> { + self.inner.lock().import_statement(&*self.context, router, statement, received_from) + } + + /// Sign and import a local statement. + pub fn sign_and_import( + &self, + router: &R, + statement: table::Statement, + ) { + let proposed_digest = match statement { + GenericStatement::Candidate(ref c) => Some(c.hash()), + _ => None, + }; + + let signed_statement = self.context.sign_statement(statement); + + let mut inner = self.inner.lock(); + if proposed_digest.is_some() { + inner.proposed_digest = proposed_digest; + } + + inner.import_statement(&*self.context, router, signed_statement, StatementSource::Local); + } + + /// Import many statements at once. + /// + /// Provide an iterator yielding pairs of (statement, statement_source). + pub fn import_statements(&self, router: &R, iterable: I) -> U + where + R: TableRouter, + I: IntoIterator, + U: ::std::iter::FromIterator::Future, + ::Future> + >, + { + let mut inner = self.inner.lock(); + + iterable.into_iter().map(move |(statement, statement_source)| { + inner.import_statement(&*self.context, router, statement, statement_source) + }).collect() + } + + /// Execute a closure using a specific candidate. + /// + /// Deadlocks if called recursively. + pub fn with_candidate(&self, digest: &Hash, f: F) -> U + where F: FnOnce(Option<&CandidateReceipt>) -> U + { + let inner = self.inner.lock(); + f(inner.table.get_candidate(digest)) + } + + /// Execute a closure using the current proposed set. + /// + /// Deadlocks if called recursively. + pub fn with_proposal(&self, f: F) -> U + where F: FnOnce(Vec<&CandidateReceipt>) -> U + { + let inner = self.inner.lock(); + f(inner.table.proposed_candidates(&*self.context)) + } + + /// Get the number of parachains which have available candidates. + pub fn includable_count(&self) -> usize { + self.inner.lock().table.includable_count() + } + + /// Get all witnessed misbehavior. + pub fn get_misbehavior(&self) -> HashMap { + self.inner.lock().table.get_misbehavior().clone() + } + + /// Fill a statement batch. + pub fn fill_batch(&self, batch: &mut B) { + self.inner.lock().table.fill_batch(batch); + } + + /// Get the local proposed block's hash. + pub fn proposed_hash(&self) -> Option { + self.inner.lock().proposed_digest.clone() + } +} From 81508cf8244f00ab30d5a12015ed2e5414ca3f9b Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 9 Apr 2018 12:39:14 +0200 Subject: [PATCH 012/103] change ordering --- polkadot/consensus/src/service.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 6bb7507d2457f..38b5eaf09a59c 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -290,8 +290,8 @@ impl Service { transaction_pool: transaction_pool.clone(), network: Network(network.clone()), collators: NoCollators, - timer: unimplemented!(), parachain_empty_duration: Duration::from_millis(10_000), // TODO + timer: unimplemented!(), }; let messages = SharedMessageCollection::new(); let bft_service = Arc::new(BftService::new(client.clone(), key, factory)); From d7cb48a9d4c4e723ea4c1c121e587f0bf76c9bbb Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 9 Apr 2018 16:42:44 +0200 Subject: [PATCH 013/103] includability tracking --- .../consensus/src/shared_table/includable.rs | 104 ++++++++++++++++++ .../{shared_table.rs => shared_table/mod.rs} | 36 ++++++ 2 files changed, 140 insertions(+) create mode 100644 polkadot/consensus/src/shared_table/includable.rs rename polkadot/consensus/src/{shared_table.rs => shared_table/mod.rs} (91%) diff --git a/polkadot/consensus/src/shared_table/includable.rs b/polkadot/consensus/src/shared_table/includable.rs new file mode 100644 index 0000000000000..58eb6b3a81a5c --- /dev/null +++ b/polkadot/consensus/src/shared_table/includable.rs @@ -0,0 +1,104 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Implements a future which resolves when all of the candidates referenced are includable. + +use std::collections::HashMap; + +use futures::prelude::*; +use futures::sync::oneshot; + +use polkadot_primitives::Hash; + +/// Track includability of a set of candidates, +pub(super) fn track>(candidates: I) -> (IncludabilitySender, Includable) { + let (tx, rx) = oneshot::channel(); + let tracking: HashMap<_, _> = candidates.into_iter().collect(); + let includable_count = tracking.values().filter(|x| **x).count(); + + let mut sender = IncludabilitySender { + tracking, + includable_count, + sender: Some(tx), + }; + + sender.try_complete(); + + ( + sender, + Includable(rx), + ) +} + +/// The sending end of the includability sender. +pub(super) struct IncludabilitySender { + tracking: HashMap, + includable_count: usize, + sender: Option>, +} + +impl IncludabilitySender { + /// update the inner candidate. wakes up the task as necessary. + /// returns `Err(Canceled)` if the other end has hung up. + /// + /// returns `true` when this is completed and should be destroyed. + pub fn update_candidate(&mut self, candidate: Hash, includable: bool) -> bool { + use std::collections::hash_map::Entry; + + match self.tracking.entry(candidate) { + Entry::Vacant(_) => {} + Entry::Occupied(mut entry) => { + let old = entry.insert(includable); + if !old && includable { + self.includable_count += 1; + } else if old && !includable { + self.includable_count -= 1; + } + } + } + + self.try_complete() + } + + /// whether the sender is completed. + pub fn is_complete(&self) -> bool { + self.sender.is_none() + } + + fn try_complete(&mut self) -> bool { + if self.includable_count == self.tracking.len() { + if let Some(sender) = self.sender.take() { + let _ = sender.send(()); + } + + true + } else { + false + } + } +} + +/// Future that resolves when all the candidates within are includable. +pub struct Includable(oneshot::Receiver<()>); + +impl Future for Includable { + type Item = (); + type Error = oneshot::Canceled; + + fn poll(&mut self) -> Poll<(), oneshot::Canceled> { + self.0.poll() + } +} diff --git a/polkadot/consensus/src/shared_table.rs b/polkadot/consensus/src/shared_table/mod.rs similarity index 91% rename from polkadot/consensus/src/shared_table.rs rename to polkadot/consensus/src/shared_table/mod.rs index 029865d47d2f9..5f09d3d051cb6 100644 --- a/polkadot/consensus/src/shared_table.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -30,6 +30,11 @@ use parking_lot::Mutex; use futures::{future, prelude::*}; use super::{GroupInfo, TableRouter}; +use self::includable::IncludabilitySender; + +mod includable; + +pub use self::includable::Includable; struct TableContext { parent_hash: Hash, @@ -85,6 +90,7 @@ struct SharedTableInner { proposed_digest: Option, checked_validity: HashSet, checked_availability: HashSet, + trackers: Vec, } impl SharedTableInner { @@ -110,6 +116,8 @@ impl SharedTableInner { None => return producer, }; + self.update_trackers(&summary.candidate, context); + producer.candidate_digest = Some(summary.candidate); let local_id = context.local_id(); @@ -150,6 +158,15 @@ impl SharedTableInner { producer } + + fn update_trackers(&mut self, candidate: &Hash, context: &TableContext) { + let includable = self.table.candidate_includable(candidate, context); + for i in (0..self.trackers.len()).rev() { + if self.trackers[i].update_candidate(candidate.clone(), includable) { + self.trackers.swap_remove(i); + } + } + } } /// Produced statements about a specific candidate. @@ -265,6 +282,7 @@ impl SharedTable { proposed_digest: None, checked_validity: HashSet::new(), checked_availability: HashSet::new(), + trackers: Vec::new(), })) } } @@ -364,4 +382,22 @@ impl SharedTable { pub fn proposed_hash(&self) -> Option { self.inner.lock().proposed_digest.clone() } + + /// Track includability of a given set of candidate hashes. + pub fn track_includability(&self, iterable: I) -> Includable + where I: IntoIterator + { + let mut inner = self.inner.lock(); + + let (tx, rx) = includable::track(iterable.into_iter().map(|x| { + let includable = inner.table.candidate_includable(&x, &*self.context); + (x, includable) + })); + + if !tx.is_complete() { + inner.trackers.push(tx); + } + + rx + } } From 616503d33b6e928dff6f2e344d650d964dcb66f2 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 9 Apr 2018 16:54:01 +0200 Subject: [PATCH 014/103] fix doc --- polkadot/api/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index 1459c4a4d19f3..e54529f014ab8 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -258,7 +258,7 @@ pub struct ClientBlockBuilder { impl ClientBlockBuilder where S::Error: Into { - // executes a extrinsic, inherent or otherwise, without appending to the list + // initialises the block. fn initialise_block(&mut self) -> Result<()> { let mut ext = state_machine::Ext { overlay: &mut self.changes, From ca6fbcb8716c768c987cbc64085217f840816d1e Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 10 Apr 2018 12:11:29 +0200 Subject: [PATCH 015/103] initial changes to parachains module --- polkadot/api/src/lib.rs | 6 +++++- polkadot/primitives/src/parachain.rs | 2 -- polkadot/runtime/src/parachains.rs | 18 ++++++++---------- substrate/runtime/system/src/lib.rs | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index e54529f014ab8..af5a2e639fc74 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -189,7 +189,11 @@ impl PolkadotApi for Client> } fn duty_roster(&self, at: &CheckedId) -> Result { - with_runtime!(self, at, ::runtime::Parachains::calculate_duty_roster) + with_runtime!(self, at, || { + let + let randomness = ::runtime::System::calculate_random(); + ::runtime::Parachains::calculate_duty_roster(randomness) + }) } fn timestamp(&self, at: &CheckedId) -> Result { diff --git a/polkadot/primitives/src/parachain.rs b/polkadot/primitives/src/parachain.rs index 1dde3b508d1c3..e7d33c23c11d2 100644 --- a/polkadot/primitives/src/parachain.rs +++ b/polkadot/primitives/src/parachain.rs @@ -86,8 +86,6 @@ impl Slicable for Chain { } } - - /// The duty roster specifying what jobs each validator must do. #[derive(Clone, PartialEq)] #[cfg_attr(feature = "std", derive(Default, Debug))] diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index ef46a25146e62..27ca886c99385 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -37,11 +37,13 @@ decl_storage! { pub trait Store for Module; // The number of parachains registered at present. pub Count get(count): b"para:count" => default u32; + // The parachains registered at present. + pub Parachains get(candidate_reg_info): b"para:live" => map [ Id => Vec ]; } impl Module { - /// Calculate the current block's duty roster. - pub fn calculate_duty_roster() -> DutyRoster { + /// Calculate the current block's with given random seed. + pub fn calculate_duty_roster(random_seed: T::Hash) -> DutyRoster { let parachain_count = Self::count(); let validator_count = >::validator_count(); let validators_per_parachain = if parachain_count != 0 { (validator_count - 1) / parachain_count } else { 0 }; @@ -53,8 +55,7 @@ impl Module { }).collect::>(); let mut roles_gua = roles_val.clone(); - let h = >::random_seed(); - let mut seed = h.to_vec().and(b"validator_role_pairs").blake2_256(); + let mut seed = random_seed.to_vec().and(b"validator_role_pairs").blake2_256(); // shuffle for i in 0..(validator_count - 1) { @@ -191,17 +192,14 @@ mod tests { assert_eq!(duty_roster.guarantor_duty.iter().filter(|&&j| j == Chain::Relay).count(), 2); }; - System::set_random_seed([0u8; 32].into()); - let duty_roster_0 = Parachains::calculate_duty_roster(); + let duty_roster_0 = Parachains::calculate_duty_roster([0u8; 32].into()); check_roster(&duty_roster_0); - System::set_random_seed([1u8; 32].into()); - let duty_roster_1 = Parachains::calculate_duty_roster(); + let duty_roster_1 = Parachains::calculate_duty_roster([1u8; 32].into()); check_roster(&duty_roster_1); assert!(duty_roster_0 != duty_roster_1); - System::set_random_seed([2u8; 32].into()); - let duty_roster_2 = Parachains::calculate_duty_roster(); + let duty_roster_2 = Parachains::calculate_duty_roster([2u8; 32].into()); check_roster(&duty_roster_2); assert!(duty_roster_0 != duty_roster_2); assert!(duty_roster_1 != duty_roster_2); diff --git a/substrate/runtime/system/src/lib.rs b/substrate/runtime/system/src/lib.rs index 1de71cc3e6c02..2b11c8d44899e 100644 --- a/substrate/runtime/system/src/lib.rs +++ b/substrate/runtime/system/src/lib.rs @@ -123,7 +123,7 @@ impl Module { } /// Calculate the current block's random seed. - fn calculate_random() -> T::Hash { + pub fn calculate_random() -> T::Hash { assert!(Self::block_number() > Zero::zero(), "Block number may never be zero"); (0..81) .scan( From a8b0fc168faf49e386756b010f3c5a5476586353 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 10 Apr 2018 15:30:02 +0200 Subject: [PATCH 016/103] initialise dummy block before API calls --- .../release/demo_runtime.compact.wasm | Bin 196176 -> 197541 bytes .../release/demo_runtime.wasm | Bin 211880 -> 213362 bytes polkadot/api/src/lib.rs | 32 ++++++++++++++---- polkadot/runtime/src/parachains.rs | 1 + .../release/polkadot_runtime.compact.wasm | Bin 190996 -> 191383 bytes .../release/polkadot_runtime.wasm | Bin 206646 -> 207110 bytes .../release/runtime_test.compact.wasm | Bin 4422 -> 4422 bytes .../release/runtime_test.wasm | Bin 5096 -> 5096 bytes substrate/runtime/system/src/lib.rs | 11 ++---- .../substrate_test_runtime.compact.wasm | Bin 16318 -> 16318 bytes .../release/substrate_test_runtime.wasm | Bin 17828 -> 17828 bytes 11 files changed, 29 insertions(+), 15 deletions(-) diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index f650ddc85fdf2189758363aea9ea27aa5036c17d..ca30b24351d4652262d9dbae965dc857a62fc25a 100644 GIT binary patch delta 32822 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 F{{ZWFvReQE diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index 8f03da6b6570ec0ca879f8082487b83209f40dc5..bea88ccfbc94c7468344073664bfb01e3cfcd545 100755 GIT binary patch delta 35474 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 delta 34101 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 R=A=0KAqE=|slo6H|1Yd8m>K{8 diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index af5a2e639fc74..b05ff9cb3348f 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -41,6 +41,7 @@ use substrate_executor::{NativeExecutionDispatch, NativeExecutor}; use state_machine::OverlayedChanges; use primitives::{AccountId, BlockId, Index, SessionKey, Timestamp}; use primitives::parachain::DutyRoster; +use primitives::Hash; use runtime::{Block, Header, UncheckedExtrinsic, Extrinsic, Call, TimestampCall}; error_chain! { @@ -123,6 +124,9 @@ pub trait PolkadotApi { /// Get validators at a given block. fn validators(&self, at: &Self::CheckedBlockId) -> Result>; + /// Get the value of the randomness beacon at a given block. + fn randomness(&self, at: &Self::CheckedBlockId) -> Result; + /// Get the authority duty roster at a block. fn duty_roster(&self, at: &Self::CheckedBlockId) -> Result; @@ -150,17 +154,30 @@ impl CheckedBlockId for CheckedId { } } -// set up the necessary scaffolding to execute the runtime. +// set up the necessary scaffolding to execute a set of calls to the runtime. +// this creates a new block on top of the given ID and initialises it. macro_rules! with_runtime { ($client: ident, $at: expr, $exec: expr) => {{ - $client.state_at($at.block_id()).map_err(Error::from).and_then(|state| { + let parent = $at.block_id(); + let header = Header { + parent_hash: $client.block_hash_from_id(parent)?.ok_or(ErrorKind::UnknownBlock(*parent))?, + number: $client.block_number_from_id(parent)?.ok_or(ErrorKind::UnknownBlock(*parent))? + 1, + state_root: Default::default(), + extrinsics_root: Default::default(), + digest: Default::default(), + }; + + $client.state_at(parent).map_err(Error::from).and_then(|state| { let mut changes = Default::default(); let mut ext = state_machine::Ext { overlay: &mut changes, backend: &state, }; - ::substrate_executor::with_native_environment(&mut ext, $exec).map_err(Into::into) + ::substrate_executor::with_native_environment(&mut ext, || { + ::runtime::Executive::initialise_block(&header); + ($exec)() + }).map_err(Into::into) }) }} } @@ -188,11 +205,14 @@ impl PolkadotApi for Client> with_runtime!(self, at, ::runtime::Session::validators) } + fn randomness(&self, at: &CheckedId) -> Result { + with_runtime!(self, at, ::runtime::System::random_seed) + } + fn duty_roster(&self, at: &CheckedId) -> Result { with_runtime!(self, at, || { - let - let randomness = ::runtime::System::calculate_random(); - ::runtime::Parachains::calculate_duty_roster(randomness) + let random_seed = ::runtime::System::random_seed(); + ::runtime::Parachains::calculate_duty_roster(random_seed) }) } diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 27ca886c99385..cd21ae9c82a7b 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -43,6 +43,7 @@ decl_storage! { impl Module { /// Calculate the current block's with given random seed. + /// In normal operation, this will be called with `System::random_seed()`. pub fn calculate_duty_roster(random_seed: T::Hash) -> DutyRoster { let parachain_count = Self::count(); let validator_count = >::validator_count(); diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index b7adff2d53861c2623460a07124cb71dcb968588..b6bee777326c5022e185196992c69f71c9a91b4d 100644 GIT binary patch delta 26053 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 delta 25495 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 delta 28521 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 SJKE1bJoQ4_0d7Jhn&Thm+93Y` delta 118 zcmV~$yA1*{3;<9a1LQ)75E4>)B*(=0lyrzKoU=U$C6rkNiJJCSp<@Q#Tf-V&4>z6O zPZuVi5l~a_h7qkZjn8~=RARL=Ca|uW#&^DX17H)%s#z>Cj*GuraVeAKCW=C}@|{rV0iX m0kWb9M@1{sw|W>9?=V<)DQJRB({^z$DM!)_&Ipko0qf Module { Self::record_block_hash(header); } - /// Calculate the current block's random seed. - pub fn calculate_random() -> T::Hash { + // Calculate the current block's random seed. + fn calculate_random() -> T::Hash { assert!(Self::block_number() > Zero::zero(), "Block number may never be zero"); (0..81) .scan( @@ -159,13 +159,6 @@ impl Module { >::put(n); } - /// Set the random seed to something in particular. Can be used as an alternative to - /// `initialise` for tests that don't need to bother with the other environment entries. - #[cfg(any(feature = "std", test))] - pub fn set_random_seed(n: T::Hash) { - >::put(n); - } - /// Increment a particular account's nonce by 1. pub fn inc_account_index(who: &T::AccountId) { >::insert(who, Self::account_index(who) + T::Index::one()); diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 2f8ace8b215fc2ffacdc53f9297fccd0043cb816..235f3219a6b685e7cc56c12ea1eff0d3b40d04f2 100644 GIT binary patch delta 1447 zcmZuxTWB0r7@jkm?9N_hcXqSdT-(WJb8BldJ7=zD({$^l;DxBD7!)=$XU@b;H@ji8 zt;tKa3PLRii9f9hg1!j#K?L`uh*Skpq4*+FUn}@z9~7UwfOsaG)+J=%obR9S|IUBT z{Ad3EM(ajv$2!8dT4;N@w-r37wcHaRx7@S4czO4azM(ALY?fDOv%Jx)H=Gq(uGE@! zP6*N31$gtp0iKJ()2IYI$__>YG85>jr|NpaE?=OHioeChU>9YDNN+C}i9{ptF?#L+ zxsPsAa=uB+&4yFka7eRKuW|XLU#U6O$_6dF)jB!HjmN&O415H${4``kufi=p3p4z+ z_Lb1hFtk!<(P;bIl!{Oe{+0}sfo zuM6-=UoCw}EMe&=7cYG$NLdE&wP&(U7)4=c@U#2Bh?SBOFQbwy#aOh9J*$BQ%R?p_ zgLj6WL2+m&6ncD~fq`L{*%)XK#xSXLh1{ z8M@YiFB!m3>KQZ&gZMF)e2S}Rto;M#_i}qndxUw0^(ut!1v~v$VP+A zRx55hVLgR%%pmm!ovp72fAdUZ<1WDrLTA_N9yIM!@QuBlPXuMse5JlwE~u7pXpu#O z`g$QI2FmpYE4%W`bTcjmuXk&)QLi@>$$)XI&N-@^aym6;o0A z-YTAuEUFkx=i0<0L{TVwH8-5pT+h`^4=bv!7A&|kcUsatQt(ZzDTe8JmTACTaVf2v zrsdi?@f3^Lilz1k5k1>Be7|7%uB{dvLxbBzS)w+v3l{bLK&lV|()=+A`z|KFqS!jd zIx!2dFmFiMDEJtAzCksrtBwn=&riszZW^jn&zIyaSh|fBWfGQ7%}AP~QsPn1CW?tI4gUv3scl~X delta 1526 zcmZ`(O>7%Q7~QcGXLn;e>m-dGl#q>^CTUCJo&Dd&NxCgWf~tyy;E+q5{h3XjICg5g zCE-x#LO@lKNU)D5i6>gAfG1y|dqNIEy z9uoDpDw_o?o3M=1Gi(U=hwuui7i#rN)mb5hV!2*n_>ju9QkAc-ld4lEexY71l0vmo zsWU8Okqx`3k7Zbn>+Iw>_yWB-b+V6a67PDQP^nX{IbOY3DKq2ApjdWF#TqHNrHZ%4 zOz__q2S0^ewj?gv#f<&F(8R*=VQ~vm8~Xr1Zc6HJRl@O3HRqYEGhAMR=4O z?t09u(%Br`md1}lkENG;w>hDo>9#-K4`0&IT+l8eTEZ=TVu-gJ3$)_M1;&U9V#IDW zn$Kng9v zJS-&U5#QXQ{m26j?j*~p{WP?WZ`f8jyUm^+Cx*J=+KGDuU-NcSh|t3jg*eT&-LV?> zz#cG=2wMZMqXhgk@X=A(CvDkgx`LAMG`)1RnwJmldN1-YKkUbO?~@yA-R`+r>+PlO3Js?@NBt7J1FwDPrGJP`UcnG7Mf z2))g%LB({wc) z(PZDkp6U_o$dU##`K6Sk8j7zux-9FO;VVWa%!n1)z@Fzi*d>Z-%J3vF3a+dhBrtW1 z1K)K$0>bQw;01=JI#v*vmO)FEV18B?eBBB(&9^ko(*xHG;GNm=l;m5)^bJe)v7{M+ zBf{R?V#nyE{2SopPr#-5v6Lmrno0}DhM~|cs#(~cpBAy|nhusNT~!U&2=GaI^85E( z>p~lYe137*Ctk%T=gwWlp03D&L$|FH*KpKR@1i_>HTTC2P7@o7svKQFh*=41qwCu9bvLy&JbLJ{7?Jlgw3n{IQ_qfcQIRi_9CCgI5 z8X?37D237OR-}Ja}=~Gw(cLez?Z5%y7-+lUGR%Xpm!gwv-#erQCF>P}E0o zEBwPEkC`NB&+iJS(Tb~ySF0N2P<4SitUezl?;-T zs{M20SGC{*dH>*6>!;-@L+qjxOn`KPT`7-T>4lmx$0Hjp$H8^-eamCuBDpvI#{VeZ ztSEkqp9iaCG@ynd7&`HZT zmT;#RX=-%&?7O#eO}TtYUjn3DY|_QPN4^Ul14|?l>gimotfk2jEtN&ST~Slg?T8Xd zKNXFInh*YqkxB*}2A8a(jJHEwblRJt6j&oWq0T$wN5ao^tS?vZ>pOROpY3|2TNwnK zyVn>82GPi?q=1 za-`jVr?O#s96bw-Re)>`g^8k$>pmv7h zL27#{cpJsrt8lG?4^m#L3Qym{Gt8ef&{-9DvLe`~cy|?^tKjPt@2$c|$OlI=-svLh z8P6N`uSbVKk`7RzhzsyEuItpaX<^CJH8bw6Bj`>sy(xckX2Axx#FY7gYbA zw>V-Lz9rnsYv5gfdn!Gtf^_TW$~(IXacXxB6&8`&SDK|yoxQ$p>hb3D>P4N z84y_Na4wsnTJ^@^A?1rC1Vjwf^Lv_e`l*8DYBsRqKtKfISXdn=pJJrw* zc5*3gG@BR|Ow22zf~ZTXEK3s7WmUIu_7M4LU^S|7oQR<*n4BV+k|Jgglc)R7fDWgT tMpFOiqesX`{X*5p@A06Pp_16sU?Y`!~MlyaoUO delta 1612 zcmaJ>T}&KR6ux(th24c^hb?KhKxJ7d(hY^3|Cvx|XSb_~jaE#fZDP92&mFq_?2=_$ zL6SmDZRD>l-1?JfjRp)p7-KRq8lP?{pDmux`x##=N zcka12bI$rAUSGsFlmk_>@Zi~@vPDB4a4rw|W>-$XF%ThBr7W>HQDoKZB~r}U)2PNv z@|WsdqV!y0D$8;T^14vig(eBSr9x33Cdj|?XHzWbQqgjn{Kaun)Jw$5mWnx&EfxwT z5(~0KJW8j&|-NQ^dSjBB0gtle$^T74qmv zy`9VJW4TF^HO30&C`tr>DK>vea~_sn@xDTNZ!5jv`O0ak`mDwoWbfkcm*(c?Pzc4a z<{yc9wao=^wQ6SFg=4tOY$AJ5Yl`Q8MCxx5y2MSqt?{%uh-?sY}6 zcmPD-@y&<+710$Bx)I5EEkx`Wx*_eWLKj}3V?yHo`cvWA_PKf3hKZ+j5YxIxk)A$;F;^3SAqj;;L2sO>%>vX1cQJ6^DWrnd&@>>lkN*wyL5 z2b;XM(QWPF?XJ(}@})xEe>Qw5EH84F z%9?^nSe;9XbXgl`l7h@zqAqcqB+3>q(_rc(L~=4~nug9AgjW=fo=^vJJ(it?5K0X{ki9WR Date: Tue, 10 Apr 2018 16:32:39 +0200 Subject: [PATCH 017/103] give polkadot control over round proposer based on random seed --- polkadot/api/src/lib.rs | 4 ++-- polkadot/consensus/src/lib.rs | 13 +++++++++++++ polkadot/consensus/src/service.rs | 2 +- substrate/bft/src/lib.rs | 11 ++++++++++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index b05ff9cb3348f..cc7fb0456dd66 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -125,7 +125,7 @@ pub trait PolkadotApi { fn validators(&self, at: &Self::CheckedBlockId) -> Result>; /// Get the value of the randomness beacon at a given block. - fn randomness(&self, at: &Self::CheckedBlockId) -> Result; + fn random_seed(&self, at: &Self::CheckedBlockId) -> Result; /// Get the authority duty roster at a block. fn duty_roster(&self, at: &Self::CheckedBlockId) -> Result; @@ -205,7 +205,7 @@ impl PolkadotApi for Client> with_runtime!(self, at, ::runtime::Session::validators) } - fn randomness(&self, at: &CheckedId) -> Result { + fn random_seed(&self, at: &CheckedId) -> Result { with_runtime!(self, at, ::runtime::System::random_seed) } diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 2a4c29f186ad6..0434c4bb20ad7 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -241,6 +241,7 @@ impl bft::ProposerFactory for ProposerFactory let checked_id = self.client.check_id(BlockId::Hash(parent_hash))?; let duty_roster = self.client.duty_roster(&checked_id)?; + let random_seed = self.client.random_seed(&checked_id)?; let (group_info, local_duty) = make_group_info( duty_roster, @@ -261,6 +262,7 @@ impl bft::ProposerFactory for ProposerFactory parent_hash, parent_number: parent_header.number, parent_id: checked_id, + random_seed, local_key: sign_with, client: self.client.clone(), transaction_pool: self.transaction_pool.clone(), @@ -282,6 +284,7 @@ pub struct Proposer { parent_hash: HeaderHash, parent_number: BlockNumber, parent_id: C::CheckedBlockId, + random_seed: Hash, client: Arc, local_key: Arc, transaction_pool: Arc>, @@ -338,6 +341,16 @@ impl bft::Proposer for Proposer } } + fn round_proposer(&self, round_number: usize, authorities: &[AuthorityId]) -> AuthorityId { + use primitives::uint::U256; + + let len: U256 = authorities.len().into(); + let offset = U256::from_big_endian(&self.random_seed.0) % len; + let offset = offset.low_u64() as usize + round_number; + + authorities[offset % authorities.len()].clone() + } + fn import_misbehavior(&self, misbehavior: Vec<(AuthorityId, bft::Misbehavior)>) { use bft::generic::Misbehavior as GenericMisbehavior; use primitives::bft::{MisbehaviorKind, MisbehaviorReport}; diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 38b5eaf09a59c..1ac18d2ec2e8d 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -290,7 +290,7 @@ impl Service { transaction_pool: transaction_pool.clone(), network: Network(network.clone()), collators: NoCollators, - parachain_empty_duration: Duration::from_millis(10_000), // TODO + parachain_empty_duration: Duration::from_millis(4_000), // TODO timer: unimplemented!(), }; let messages = SharedMessageCollection::new(); diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index e21051b1aef36..b1845d2ccfc5c 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -133,11 +133,16 @@ pub trait Proposer { /// Create a proposal. fn propose(&self) -> Self::Create; + /// Evaluate proposal. True means valid. - // TODO: change this to a future. fn evaluate(&self, proposal: &Block) -> Self::Evaluate; + /// Import witnessed misbehavior. fn import_misbehavior(&self, misbehavior: Vec<(AuthorityId, Misbehavior)>); + + /// Determine the proposer for a given round. This should be a deterministic function + /// with consistent results across all authorities. + fn round_proposer(&self, round_number: usize, authorities: &[AuthorityId]) -> AuthorityId; } /// Block import trait. @@ -649,6 +654,10 @@ mod tests { } fn import_misbehavior(&self, _misbehavior: Vec<(AuthorityId, Misbehavior)>) {} + + fn round_proposer(&self, round_number: usize, authorities: &[AuthorityId]) -> AuthorityId { + authorities[round_number % authorities.len()].clone() + } } fn make_service(client: FakeClient) From f6fa97f5ff847c6a74bcd344d3a984640904434e Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 10 Apr 2018 17:15:11 +0200 Subject: [PATCH 018/103] propose only after enough candidates --- polkadot/consensus/src/lib.rs | 15 ++++++++++++++- polkadot/consensus/src/service.rs | 8 +++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 0434c4bb20ad7..78b74a026a7c7 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -265,6 +265,7 @@ impl bft::ProposerFactory for ProposerFactory random_seed, local_key: sign_with, client: self.client.clone(), + timer: self.timer.clone(), transaction_pool: self.transaction_pool.clone(), collators: self.collators.clone(), local_duty, @@ -290,6 +291,7 @@ pub struct Proposer { transaction_pool: Arc>, local_duty: LocalDuty, collators: P, + timer: Timer, dynamic_inclusion: DynamicInclusion, table: Arc, router: R, @@ -306,6 +308,13 @@ impl bft::Proposer for Proposer type Evaluate = Result; fn propose(&self) -> CreateProposal { + const ATTEMPT_PROPOSE_EVERY: Duration = Duration::from_millis(100); + + let enough_candidates = self.dynamic_inclusion.acceptable_in( + Instant::now(), + self.table.includable_count(), + ).unwrap_or_default(); + CreateProposal { parent_hash: self.parent_hash.clone(), parent_number: self.parent_number.clone(), @@ -321,7 +330,11 @@ impl bft::Proposer for Proposer dynamic_inclusion: self.dynamic_inclusion.clone(), table: self.table.clone(), router: self.router.clone(), - timing: unimplemented!(), + timing: ProposalTiming { + timer: self.timer.clone(), + attempt_propose: self.timer.interval(ATTEMPT_PROPOSE_EVERY), + enough_candidates: self.timer.sleep(enough_candidates), + } } } diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 1ac18d2ec2e8d..47dbc3c7ec03d 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -284,15 +284,21 @@ impl Service { { let thread = thread::spawn(move || { let mut core = reactor::Core::new().expect("tokio::Core could not be created"); + let timer = ::tokio_timer::wheel() + .thread_name("bft service timer") + .build(); + let key = Arc::new(key); + let factory = ProposerFactory { client: client.clone(), transaction_pool: transaction_pool.clone(), network: Network(network.clone()), collators: NoCollators, parachain_empty_duration: Duration::from_millis(4_000), // TODO - timer: unimplemented!(), + timer: timer, }; + let messages = SharedMessageCollection::new(); let bft_service = Arc::new(BftService::new(client.clone(), key, factory)); From 63802397adc6d69457a6aab612f6fe1e30655e5c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 11 Apr 2018 14:45:50 +0200 Subject: [PATCH 019/103] flesh out parachains module a bit more --- polkadot/runtime/src/parachains.rs | 136 ++++++++++++++++++++++++----- 1 file changed, 112 insertions(+), 24 deletions(-) diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index cd21ae9c82a7b..33d6a6b9aa85e 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -17,16 +17,22 @@ //! Main parachains logic. For now this is just the determination of which validators do what. use polkadot_primitives; -#[cfg(any(feature = "std", test))] use {runtime_io, runtime_primitives}; use rstd::prelude::*; -#[cfg(any(feature = "std", test))] use rstd::marker::PhantomData; use codec::{Slicable, Joiner}; use runtime_support::Hashable; -#[cfg(any(feature = "std", test))] use runtime_support::StorageValue; + use runtime_primitives::traits::Executable; use polkadot_primitives::parachain::{Id, Chain, DutyRoster}; use {system, session}; +use runtime_support::{StorageValue, StorageMap}; + +#[cfg(any(feature = "std", test))] +use rstd::marker::PhantomData; + +#[cfg(any(feature = "std", test))] +use {runtime_io, runtime_primitives}; + pub trait Trait: system::Trait + session::Trait {} decl_module! { @@ -35,25 +41,29 @@ decl_module! { decl_storage! { pub trait Store for Module; - // The number of parachains registered at present. - pub Count get(count): b"para:count" => default u32; // The parachains registered at present. - pub Parachains get(candidate_reg_info): b"para:live" => map [ Id => Vec ]; + pub Code get(parachain_code): b"para:code" => map [ Id => Vec ]; + // Vector of all parachain IDs. + pub Parachains get(active_parachains): b"para:head" => default Vec; } impl Module { /// Calculate the current block's with given random seed. /// In normal operation, this will be called with `System::random_seed()`. pub fn calculate_duty_roster(random_seed: T::Hash) -> DutyRoster { - let parachain_count = Self::count(); - let validator_count = >::validator_count(); + let parachains = Self::active_parachains(); + let parachain_count = parachains.len(); + let validator_count = >::validator_count() as usize; let validators_per_parachain = if parachain_count != 0 { (validator_count - 1) / parachain_count } else { 0 }; let mut roles_val = (0..validator_count).map(|i| match i { - i if i < parachain_count * validators_per_parachain => - Chain::Parachain(Id::from(i / validators_per_parachain as u32)), + i if i < parachain_count * validators_per_parachain => { + let idx = i / validators_per_parachain; + Chain::Parachain(parachains[idx].clone()) + } _ => Chain::Relay, }).collect::>(); + let mut roles_gua = roles_val.clone(); let mut seed = random_seed.to_vec().and(b"validator_role_pairs").blake2_256(); @@ -85,6 +95,31 @@ impl Module { guarantor_duty: roles_gua, } } + + /// Register a parachain with given code. + /// Fails if given ID is already used. + pub fn register_parachain(id: Id, code: Vec) { + let mut parachains = Self::active_parachains(); + match parachains.binary_search(&id) { + Ok(_) => panic!("Parachain with id {:?} already exists", id), + Err(idx) => parachains.insert(idx, id), + } + + >::insert(id, code); + >::put(parachains); + } + + /// Deregister a parachain with given id + pub fn deregister_parachain(id: Id) { + let mut parachains = Self::active_parachains(); + match parachains.binary_search(&id) { + Ok(idx) => { parachains.remove(idx); } + Err(_) => {} + } + + >::remove(id); + >::put(parachains); + } } impl Executable for Module { @@ -92,9 +127,12 @@ impl Executable for Module { } } +/// Parachains module genesis configuration. #[cfg(any(feature = "std", test))] pub struct GenesisConfig { - pub count: u32, + /// The initial parachains, mapped to code. + pub parachains: Vec<(Id, Vec)>, + /// Phantom data. pub phantom: PhantomData, } @@ -102,7 +140,7 @@ pub struct GenesisConfig { impl Default for GenesisConfig { fn default() -> Self { GenesisConfig { - count: 0, + parachains: Vec::new(), phantom: PhantomData, } } @@ -111,12 +149,26 @@ impl Default for GenesisConfig { #[cfg(any(feature = "std", test))] impl runtime_primitives::BuildExternalities for GenesisConfig { - fn build_externalities(self) -> runtime_io::TestExternalities { + fn build_externalities(mut self) -> runtime_io::TestExternalities { + use std::collections::HashMap; use runtime_io::twox_128; use codec::Slicable; - map![ - twox_128(>::key()).to_vec() => self.count.encode() - ] + + self.parachains.sort_unstable_by_key(|&(ref id, _)| id.clone()); + self.parachains.dedup_by_key(|&mut (ref id, _)| id.clone()); + + let only_ids: Vec<_> = self.parachains.iter().map(|&(ref id, _)| id).cloned().collect(); + + let mut map: HashMap<_, _> = map![ + twox_128(>::key()).to_vec() => only_ids.encode() + ]; + + for (id, code) in self.parachains { + let key = twox_128(&>::key_for(&id)).to_vec(); + map.insert(key, code.encode()); + } + + map.into() } } @@ -152,10 +204,9 @@ mod tests { } impl Trait for Test {} - type System = system::Module; type Parachains = Module; - fn new_test_ext() -> runtime_io::TestExternalities { + fn new_test_ext(parachains: Vec<(Id, Vec)>) -> runtime_io::TestExternalities { let mut t = system::GenesisConfig::::default().build_externalities(); t.extend(consensus::GenesisConfig::{ code: vec![], @@ -166,22 +217,59 @@ mod tests { validators: vec![1, 2, 3, 4, 5, 6, 7, 8], }.build_externalities()); t.extend(GenesisConfig::{ - count: 2, + parachains: parachains, phantom: PhantomData, }.build_externalities()); t } #[test] - fn simple_setup_should_work() { - with_externalities(&mut new_test_ext(), || { - assert_eq!(Parachains::count(), 2); + fn active_parachains_should_work() { + let parachains = vec![ + (5u32.into(), vec![1,2,3]), + (100u32.into(), vec![4,5,6]), + ]; + + with_externalities(&mut new_test_ext(parachains), || { + assert_eq!(Parachains::active_parachains(), vec![5u32.into(), 100u32.into()]); + assert_eq!(Parachains::parachain_code(&5u32.into()), Some(vec![1,2,3])); + assert_eq!(Parachains::parachain_code(&100u32.into()), Some(vec![4,5,6])); }); } #[test] - fn should_work() { - with_externalities(&mut new_test_ext(), || { + fn register_deregister() { + let parachains = vec![ + (5u32.into(), vec![1,2,3]), + (100u32.into(), vec![4,5,6]), + ]; + + with_externalities(&mut new_test_ext(parachains), || { + assert_eq!(Parachains::active_parachains(), vec![5u32.into(), 100u32.into()]); + + assert_eq!(Parachains::parachain_code(&5u32.into()), Some(vec![1,2,3])); + assert_eq!(Parachains::parachain_code(&100u32.into()), Some(vec![4,5,6])); + + Parachains::register_parachain(99u32.into(), vec![7,8,9]); + + assert_eq!(Parachains::active_parachains(), vec![5u32.into(), 99u32.into(), 100u32.into()]); + assert_eq!(Parachains::parachain_code(&99u32.into()), Some(vec![7,8,9])); + + Parachains::deregister_parachain(5u32.into()); + + assert_eq!(Parachains::active_parachains(), vec![99u32.into(), 100u32.into()]); + assert_eq!(Parachains::parachain_code(&5u32.into()), None); + }); + } + + #[test] + fn duty_roster_works() { + let parachains = vec![ + (0u32.into(), vec![]), + (1u32.into(), vec![]), + ]; + + with_externalities(&mut new_test_ext(parachains), || { let check_roster = |duty_roster: &DutyRoster| { assert_eq!(duty_roster.validator_duty.len(), 8); assert_eq!(duty_roster.guarantor_duty.len(), 8); From 00624c86fde16be656952650fc8163c84aee9e18 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 11 Apr 2018 16:18:11 +0200 Subject: [PATCH 020/103] set_heads --- polkadot/runtime/src/lib.rs | 14 +++++- polkadot/runtime/src/parachains.rs | 60 +++++++++++++++++++++++--- substrate/runtime-support/src/lib.rs | 3 +- substrate/runtime/consensus/src/lib.rs | 4 +- substrate/runtime/timestamp/src/lib.rs | 10 ++++- 5 files changed, 78 insertions(+), 13 deletions(-) diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index a75fadd4109d2..5ac57c8ec4a7f 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -53,6 +53,11 @@ use runtime_primitives::generic; use runtime_primitives::traits::{Identity, HasPublicAux}; #[cfg(feature = "std")] pub use runtime_primitives::BuildExternalities; +/// The position of the timestamp set extrinsic. +pub const TIMESTAMP_SET_POSITION: u32 = 0; +/// The position of the parachains set extrinsic. +pub const PARACHAINS_SET_POSITION: u32 = 1; + /// Concrete runtime type used to parameterize the various modules. pub struct Concrete; @@ -73,7 +78,7 @@ impl system::Trait for Concrete { pub type System = system::Module; impl consensus::Trait for Concrete { - type PublicAux = ::PublicAux; + type PublicAux = ::PublicAux; type SessionKey = SessionKey; } /// Consensus module for this concrete runtime. @@ -81,6 +86,7 @@ pub type Consensus = consensus::Module; pub use consensus::Call as ConsensusCall; impl timestamp::Trait for Concrete { + const SET_POSITION: u32 = TIMESTAMP_SET_POSITION; type Value = u64; } /// Timestamp module for this concrete runtime. @@ -112,7 +118,11 @@ pub type Council = council::Module; /// Council voting module for this concrete runtime. pub type CouncilVoting = council::voting::Module; -impl parachains::Trait for Concrete {} +impl parachains::Trait for Concrete { + const SET_POSITION: u32 = PARACHAINS_SET_POSITION; + + type PublicAux = ::PublicAux; +} pub type Parachains = parachains::Module; impl_outer_dispatch! { diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 33d6a6b9aa85e..179582d19ea42 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -21,8 +21,8 @@ use rstd::prelude::*; use codec::{Slicable, Joiner}; use runtime_support::Hashable; -use runtime_primitives::traits::Executable; -use polkadot_primitives::parachain::{Id, Chain, DutyRoster}; +use runtime_primitives::traits::{Executable, RefInto, MaybeEmpty}; +use polkadot_primitives::parachain::{Id, Chain, DutyRoster, CandidateReceipt}; use {system, session}; use runtime_support::{StorageValue, StorageMap}; @@ -33,18 +33,32 @@ use rstd::marker::PhantomData; #[cfg(any(feature = "std", test))] use {runtime_io, runtime_primitives}; -pub trait Trait: system::Trait + session::Trait {} +pub trait Trait: system::Trait + session::Trait { + /// The position of the set_heads call in the block. + const SET_POSITION: u32; + + type PublicAux: RefInto + MaybeEmpty; +} decl_module! { pub struct Module; + pub enum Call where aux: ::PublicAux { + // provide candidate receipts for parachains, in ascending order by id. + fn set_heads(aux, heads: Vec) = 0; + } } decl_storage! { - pub trait Store for Module; + trait Store for Module; + // Vector of all parachain IDs. + pub Parachains get(active_parachains): b"para:chains" => default Vec; // The parachains registered at present. pub Code get(parachain_code): b"para:code" => map [ Id => Vec ]; - // Vector of all parachain IDs. - pub Parachains get(active_parachains): b"para:head" => default Vec; + // The heads of the parachains registered at present. these are kept sorted. + pub Heads get(parachain_head): b"para:head" => map [ Id => CandidateReceipt ]; + + // Did the parachain heads get updated in this block? + DidUpdate: b"para:did" => default bool; } impl Module { @@ -120,10 +134,38 @@ impl Module { >::remove(id); >::put(parachains); } + + fn set_heads(aux: &::PublicAux, heads: Vec) { + assert!(aux.is_empty()); + assert!(!::DidUpdate::exists(), "Parachain heads must be updated only once in the block"); + assert!( + >::extrinsic_index() == T::SET_POSITION, + "Parachain heads update extrinsic must be at position {} in the block", + T::SET_POSITION + ); + + let active_parachains = Self::active_parachains(); + let mut iter = active_parachains.iter(); + + // perform this check before writing to storage. + for head in &heads { + assert!( + iter.find(|&p| p == &head.parachain_index).is_some(), + "Submitted candidate for unregistered or out-of-order parachain {:?}", + head.parachain_index + ); + } + + for head in heads { + let id = head.parachain_index.clone(); + >::insert(id, head); + } + } } impl Executable for Module { fn execute() { + assert!(::DidUpdate::take(), "Parachain heads must be updated once in the block"); } } @@ -202,7 +244,11 @@ mod tests { impl session::Trait for Test { type ConvertAccountIdToSessionKey = Identity; } - impl Trait for Test {} + impl Trait for Test { + const SET_POSITION: u32 = 0; + + type PublicAux = ::PublicAux; + } type Parachains = Module; diff --git a/substrate/runtime-support/src/lib.rs b/substrate/runtime-support/src/lib.rs index 12894aa8088bc..5af5ae18c5989 100644 --- a/substrate/runtime-support/src/lib.rs +++ b/substrate/runtime-support/src/lib.rs @@ -22,7 +22,8 @@ extern crate serde; #[cfg(feature = "std")] -#[allow(unused_imports)] #[macro_use] // can be removed when fixed: https://github.com/rust-lang/rust/issues/43497 +#[allow(unused_imports)] // can be removed when fixed: https://github.com/rust-lang/rust/issues/43497 +#[macro_use] extern crate serde_derive; #[cfg(feature = "std")] diff --git a/substrate/runtime/consensus/src/lib.rs b/substrate/runtime/consensus/src/lib.rs index 354604154e473..91ad8e7ed9e0c 100644 --- a/substrate/runtime/consensus/src/lib.rs +++ b/substrate/runtime/consensus/src/lib.rs @@ -38,8 +38,8 @@ use primitives::traits::RefInto; use substrate_primitives::bft::MisbehaviorReport; -pub const AUTHORITY_AT: &'static[u8] = b":auth:"; -pub const AUTHORITY_COUNT: &'static[u8] = b":auth:len"; +pub const AUTHORITY_AT: &'static [u8] = b":auth:"; +pub const AUTHORITY_COUNT: &'static [u8] = b":auth:len"; struct AuthorityStorageVec(rstd::marker::PhantomData); impl StorageVec for AuthorityStorageVec { diff --git a/substrate/runtime/timestamp/src/lib.rs b/substrate/runtime/timestamp/src/lib.rs index ee6bad5c83188..fd03fac92821f 100644 --- a/substrate/runtime/timestamp/src/lib.rs +++ b/substrate/runtime/timestamp/src/lib.rs @@ -37,6 +37,9 @@ use runtime_support::{StorageValue, Parameter}; use runtime_primitives::traits::{HasPublicAux, Executable, MaybeEmpty}; pub trait Trait: HasPublicAux + system::Trait { + // the position of the required timestamp-set extrinsic. + const SET_POSITION: u32; + type Value: Parameter + Default; } @@ -64,7 +67,11 @@ impl Module { fn set(aux: &T::PublicAux, now: T::Value) { assert!(aux.is_empty()); assert!(!::DidUpdate::exists(), "Timestamp must be updated only once in the block"); - assert!(>::extrinsic_index() == 0, "Timestamp must be first extrinsic in the block"); + assert!( + >::extrinsic_index() == T::SET_POSITION, + "Timestamp extrinsic must be at position {} in the block", + T::SET_POSITION + ); ::Now::put(now); ::DidUpdate::put(true); } @@ -119,6 +126,7 @@ mod tests { type Header = Header; } impl Trait for Test { + const SET_POSITION: u32 = 0; type Value = u64; } type Timestamp = Module; From 7cff6b7c7bbb1a05276877ce816d1f67cf489e5b Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 11 Apr 2018 16:38:31 +0200 Subject: [PATCH 021/103] actually introduce set_heads to runtime --- polkadot/runtime/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index 5ac57c8ec4a7f..99470f57aeea1 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -134,6 +134,7 @@ impl_outer_dispatch! { Democracy = 5, Council = 6, CouncilVoting = 7, + Parachains = 8, } pub enum PrivCall { From 47095e54fa2b6a9fbdb4b60eaabc5d836f4abf57 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 11 Apr 2018 16:50:53 +0200 Subject: [PATCH 022/103] update block_builder to accept parachains --- polkadot/api/src/lib.rs | 18 +++++++++++++----- polkadot/runtime/src/lib.rs | 11 ++++++++--- polkadot/runtime/src/parachains.rs | 4 +++- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index cc7fb0456dd66..e5aeca9b9c80a 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -40,9 +40,9 @@ use polkadot_executor::Executor as LocalDispatch; use substrate_executor::{NativeExecutionDispatch, NativeExecutor}; use state_machine::OverlayedChanges; use primitives::{AccountId, BlockId, Index, SessionKey, Timestamp}; -use primitives::parachain::DutyRoster; +use primitives::parachain::{CandidateReceipt, DutyRoster}; use primitives::Hash; -use runtime::{Block, Header, UncheckedExtrinsic, Extrinsic, Call, TimestampCall}; +use runtime::{Block, Header, UncheckedExtrinsic, Extrinsic, Call, TimestampCall, ParachainsCall}; error_chain! { errors { @@ -141,7 +141,7 @@ pub trait PolkadotApi { fn evaluate_block(&self, at: &Self::CheckedBlockId, block: Block) -> Result<()>; /// Create a block builder on top of the parent block. - fn build_block(&self, parent: &Self::CheckedBlockId, timestamp: u64) -> Result; + fn build_block(&self, parent: &Self::CheckedBlockId, timestamp: u64, parachains: Vec) -> Result; } /// A checked block ID used for the substrate-client implementation of CheckedBlockId; @@ -228,7 +228,7 @@ impl PolkadotApi for Client> with_runtime!(self, at, || ::runtime::System::account_index(account)) } - fn build_block(&self, parent: &CheckedId, timestamp: Timestamp) -> Result { + fn build_block(&self, parent: &CheckedId, timestamp: Timestamp, parachains: Vec) -> Result { let parent = parent.block_id(); let header = Header { parent_hash: self.block_hash_from_id(parent)?.ok_or(ErrorKind::UnknownBlock(*parent))?, @@ -246,6 +246,14 @@ impl PolkadotApi for Client> function: Call::Timestamp(TimestampCall::set(timestamp)), }, signature: Default::default(), + }, + UncheckedExtrinsic { + extrinsic: Extrinsic { + signed: Default::default(), + index: Default::default(), + function: Call::Parachains(ParachainsCall::set_heads(parachains)), + }, + signature: Default::default(), } ]; @@ -428,7 +436,7 @@ mod tests { let client = client(); let id = client.check_id(BlockId::Number(0)).unwrap(); - let block_builder = client.build_block(&id, 1_000_000).unwrap(); + let block_builder = client.build_block(&id, 1_000_000, Vec::new()).unwrap(); let block = block_builder.bake(); assert_eq!(block.header.number, 1); diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index 99470f57aeea1..7de0804ce2bd3 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -51,7 +51,14 @@ use runtime_io::BlakeTwo256; use polkadot_primitives::{AccountId, Balance, BlockNumber, Hash, Index, Log, SessionKey, Signature}; use runtime_primitives::generic; use runtime_primitives::traits::{Identity, HasPublicAux}; -#[cfg(feature = "std")] pub use runtime_primitives::BuildExternalities; + +#[cfg(feature = "std")] +pub use runtime_primitives::BuildExternalities; + +pub use consensus::Call as ConsensusCall; +pub use timestamp::Call as TimestampCall; +pub use parachains::Call as ParachainsCall; + /// The position of the timestamp set extrinsic. pub const TIMESTAMP_SET_POSITION: u32 = 0; @@ -83,7 +90,6 @@ impl consensus::Trait for Concrete { } /// Consensus module for this concrete runtime. pub type Consensus = consensus::Module; -pub use consensus::Call as ConsensusCall; impl timestamp::Trait for Concrete { const SET_POSITION: u32 = TIMESTAMP_SET_POSITION; @@ -91,7 +97,6 @@ impl timestamp::Trait for Concrete { } /// Timestamp module for this concrete runtime. pub type Timestamp = timestamp::Module; -pub use timestamp::Call as TimestampCall; impl session::Trait for Concrete { type ConvertAccountIdToSessionKey = Identity; diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 179582d19ea42..be934839ef7a6 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -137,7 +137,7 @@ impl Module { fn set_heads(aux: &::PublicAux, heads: Vec) { assert!(aux.is_empty()); - assert!(!::DidUpdate::exists(), "Parachain heads must be updated only once in the block"); + assert!(!>::exists(), "Parachain heads must be updated only once in the block"); assert!( >::extrinsic_index() == T::SET_POSITION, "Parachain heads update extrinsic must be at position {} in the block", @@ -160,6 +160,8 @@ impl Module { let id = head.parachain_index.clone(); >::insert(id, head); } + + >::put(true); } } From 08a040cece7e6ccb197062f7889fb367b63644d5 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 11 Apr 2018 17:38:03 +0200 Subject: [PATCH 023/103] split block validity errors from real errors in evaluation --- polkadot/api/src/lib.rs | 19 ++- polkadot/consensus/src/collation.rs | 2 +- polkadot/consensus/src/dynamic_inclusion.rs | 1 + polkadot/consensus/src/error.rs | 20 ---- polkadot/consensus/src/evaluation.rs | 123 ++++++++++++++++++++ polkadot/consensus/src/lib.rs | 83 +++++-------- polkadot/consensus/src/service.rs | 1 - polkadot/transaction-pool/src/lib.rs | 27 ++++- 8 files changed, 191 insertions(+), 85 deletions(-) create mode 100644 polkadot/consensus/src/evaluation.rs diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index e5aeca9b9c80a..90a8ae87d7ab4 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -136,9 +136,9 @@ pub trait PolkadotApi { /// Get the index of an account at a block. fn index(&self, at: &Self::CheckedBlockId, account: AccountId) -> Result; - - /// Evaluate a block and see if it gives an error. - fn evaluate_block(&self, at: &Self::CheckedBlockId, block: Block) -> Result<()>; + /// Evaluate a block. Returns true if the block is good, false if it is known to be bad, + /// and an error if we can't evaluate for some reason. + fn evaluate_block(&self, at: &Self::CheckedBlockId, block: Block) -> Result; /// Create a block builder on top of the parent block. fn build_block(&self, parent: &Self::CheckedBlockId, timestamp: u64, parachains: Vec) -> Result; @@ -220,8 +220,17 @@ impl PolkadotApi for Client> with_runtime!(self, at, ::runtime::Timestamp::now) } - fn evaluate_block(&self, at: &CheckedId, block: Block) -> Result<()> { - with_runtime!(self, at, || ::runtime::Executive::execute_block(block)) + fn evaluate_block(&self, at: &CheckedId, block: Block) -> Result { + use substrate_executor::error::ErrorKind as ExecErrorKind; + + let res = with_runtime!(self, at, || ::runtime::Executive::execute_block(block)); + match res { + Ok(()) => Ok(true), + Err(err) => match err.kind() { + &ErrorKind::Executor(ExecErrorKind::Runtime) => Ok(false), + _ => Err(err) + } + } } fn index(&self, at: &Self::CheckedBlockId, account: AccountId) -> Result { diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs index 18c6c5d022c92..e1d1c65288f8e 100644 --- a/polkadot/consensus/src/collation.rs +++ b/polkadot/consensus/src/collation.rs @@ -113,6 +113,6 @@ impl Future for CollationFetch { } /// Check whether a given collation is valid. -pub fn verify_collation(_client: &P, _relay_parent: Hash, collation: &Collation) -> bool { +pub fn verify_collation(_client: &P, _relay_parent: Hash, _collation: &Collation) -> bool { true // TODO: actually check this. } diff --git a/polkadot/consensus/src/dynamic_inclusion.rs b/polkadot/consensus/src/dynamic_inclusion.rs index 25eae8d8ca8b9..254353c0f7202 100644 --- a/polkadot/consensus/src/dynamic_inclusion.rs +++ b/polkadot/consensus/src/dynamic_inclusion.rs @@ -13,6 +13,7 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . + //! Dynamic inclusion threshold over time. use std::time::{Duration, Instant}; diff --git a/polkadot/consensus/src/error.rs b/polkadot/consensus/src/error.rs index efffbcd6cee50..f721788a1299e 100644 --- a/polkadot/consensus/src/error.rs +++ b/polkadot/consensus/src/error.rs @@ -16,7 +16,6 @@ //! Errors that can occur during the consensus process. -use primitives::block::HeaderHash; use polkadot_primitives::AccountId; error_chain! { @@ -34,29 +33,10 @@ error_chain! { description("Duty Roster had invalid length"), display("Invalid duty roster length: expected {}, got {}", expected, got), } - ProposalNotForPolkadot { - description("Proposal provided not a Polkadot block."), - display("Proposal provided not a Polkadot block."), - } - TimestampInFuture { - description("Proposal had timestamp too far in the future."), - display("Proposal had timestamp too far in the future."), - } NotValidator(id: AccountId) { description("Local account ID not a validator at this block."), display("Local account ID ({:?}) not a validator at this block.", id), } - WrongParentHash(expected: HeaderHash, got: HeaderHash) { - description("Proposal had wrong parent hash."), - display("Proposal had wrong parent hash. Expected {:?}, got {:?}", expected, got), - } - ProposalTooLarge(size: usize) { - description("Proposal exceeded the maximum size."), - display( - "Proposal exceeded the maximum size of {} by {} bytes.", - ::MAX_TRANSACTIONS_SIZE, ::MAX_TRANSACTIONS_SIZE.saturating_sub(*size) - ), - } Executor(e: ::futures::future::ExecuteErrorKind) { description("Unable to dispatch agreement future"), display("Unable to dispatch agreement future: {:?}", e), diff --git a/polkadot/consensus/src/evaluation.rs b/polkadot/consensus/src/evaluation.rs new file mode 100644 index 0000000000000..d17074b000cc0 --- /dev/null +++ b/polkadot/consensus/src/evaluation.rs @@ -0,0 +1,123 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Polkadot block evaluation and evaluation errors. + +use super::MAX_TRANSACTIONS_SIZE; + +use codec::Slicable; +use polkadot_runtime::Block as PolkadotGenericBlock; +use polkadot_primitives::Timestamp; +use primitives::block::{Block as SubstrateBlock, HeaderHash, Number as BlockNumber}; +use transaction_pool::PolkadotBlock; + +error_chain! { + links { + PolkadotApi(::polkadot_api::Error, ::polkadot_api::ErrorKind); + } + + errors { + ProposalNotForPolkadot { + description("Proposal provided not a Polkadot block."), + display("Proposal provided not a Polkadot block."), + } + TimestampInFuture { + description("Proposal had timestamp too far in the future."), + display("Proposal had timestamp too far in the future."), + } + TooManyCandidates(expected: usize, got: usize) { + description("Proposal included more candidates than is possible."), + display("Proposal included {} candidates for {} parachains", got, expected), + } + InvalidParachainHeads { + description("Proposal had invalid parachains extrinsic."), + display("Proposal had invalid parachains extrinsic."), + } + WrongParentHash(expected: HeaderHash, got: HeaderHash) { + description("Proposal had wrong parent hash."), + display("Proposal had wrong parent hash. Expected {:?}, got {:?}", expected, got), + } + WrongNumber(expected: BlockNumber, got: BlockNumber) { + description("Proposal had wrong number."), + display("Proposal had wrong number. Expected {:?}, got {:?}", expected, got), + } + ProposalTooLarge(size: usize) { + description("Proposal exceeded the maximum size."), + display( + "Proposal exceeded the maximum size of {} by {} bytes.", + MAX_TRANSACTIONS_SIZE, MAX_TRANSACTIONS_SIZE.saturating_sub(*size) + ), + } + } +} + +/// Attempt to evaluate a substrate block as a polkadot block, returning error +/// upon any initial validity checks failing. +pub fn evaluate_initial( + proposal: &SubstrateBlock, + now: Timestamp, + parent_hash: &HeaderHash, + parent_number: BlockNumber, + n_parachains: usize, +) -> Result { + const MAX_TIMESTAMP_DRIFT: Timestamp = 60; + + let encoded = Slicable::encode(proposal); + let proposal = PolkadotGenericBlock::decode(&mut &encoded[..]) + .and_then(|b| PolkadotBlock::from(b).ok()) + .ok_or_else(|| ErrorKind::ProposalNotForPolkadot)?; + + let transactions_size = proposal.extrinsics.iter().fold(0, |a, tx| { + a + Slicable::encode(tx).len() + }); + + if transactions_size > MAX_TRANSACTIONS_SIZE { + bail!(ErrorKind::ProposalTooLarge(transactions_size)) + } + + if proposal.header.parent_hash != *parent_hash { + bail!(ErrorKind::WrongParentHash(*parent_hash, proposal.header.parent_hash)); + } + + if proposal.header.number != parent_number + 1 { + bail!(ErrorKind::WrongNumber(parent_number + 1, proposal.header.number)); + } + + let block_timestamp = proposal.timestamp(); + + // lenient maximum -- small drifts will just be delayed using a timer. + if block_timestamp > now + MAX_TIMESTAMP_DRIFT { + bail!(ErrorKind::TimestampInFuture) + } + + { + if proposal.parachain_heads().len() > n_parachains { + bail!(ErrorKind::TooManyCandidates(n_parachains, proposal.parachain_heads().len())); + } + + let mut last_id = None; + for head in proposal.parachain_heads() { + // proposed heads must be ascending order by parachain ID. + if last_id.as_ref().map_or(false, |x| x >= &head.parachain_index) { + bail!(ErrorKind::InvalidParachainHeads); + } + + last_id = Some(head.parachain_index.clone()); + } + } + + Ok(proposal) +} diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 78b74a026a7c7..7778bb66b6eb8 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -67,10 +67,9 @@ use runtime_support::Hashable; use polkadot_api::{PolkadotApi, BlockBuilder}; use polkadot_primitives::{Hash, Timestamp}; use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic, CandidateReceipt}; -use polkadot_runtime::Block as PolkadotGenericBlock; use primitives::block::{Block as SubstrateBlock, Header as SubstrateHeader, HeaderHash, Id as BlockId, Number as BlockNumber}; use primitives::AuthorityId; -use transaction_pool::{Ready, TransactionPool, PolkadotBlock}; +use transaction_pool::{Ready, TransactionPool}; use tokio_timer::{Timer, Interval, Sleep, TimerError}; use futures::prelude::*; @@ -84,6 +83,7 @@ pub use service::Service; mod collation; mod dynamic_inclusion; +mod evaluation; mod error; mod service; mod shared_table; @@ -341,15 +341,20 @@ impl bft::Proposer for Proposer // TODO: certain kinds of errors here should lead to a misbehavior report. fn evaluate(&self, proposal: &SubstrateBlock) -> Result { debug!(target: "bft", "evaluating block on top of parent ({}, {:?})", self.parent_number, self.parent_hash); - match evaluate_proposal(proposal, &*self.client, current_timestamp(), &self.parent_hash, &self.parent_id) { - Ok(x) => Ok(x), - Err(e) => match *e.kind() { - ErrorKind::PolkadotApi(polkadot_api::ErrorKind::Executor(_)) => Ok(false), - ErrorKind::ProposalNotForPolkadot => Ok(false), - ErrorKind::TimestampInFuture => Ok(false), - ErrorKind::WrongParentHash(_, _) => Ok(false), - ErrorKind::ProposalTooLarge(_) => Ok(false), - _ => Err(e), + + let maybe_evaluated = evaluation::evaluate_initial( + proposal, + current_timestamp(), + &self.parent_hash, + self.parent_number, + 999, // TODO: n_parachains. + ); + + match maybe_evaluated { + Ok(proposal) => self.client.evaluate_block(&self.parent_id, proposal.into()).map_err(Into::into), + Err(e) => { + debug!(target: "bft", "Invalid proposal: {:?}", e); + return Ok(false) } } } @@ -474,13 +479,15 @@ impl CreateProposal R: TableRouter, P: Collators, { - fn propose_with(&self, _candidates: Vec) -> Result { + fn propose_with(&self, candidates: Vec) -> Result { debug!(target: "bft", "proposing block on top of parent ({}, {:?})", self.parent_number, self.parent_hash); // TODO: handle case when current timestamp behind that in state. + let timestamp = current_timestamp(); let mut block_builder = self.client.build_block( &self.parent_id, - current_timestamp() + timestamp, + candidates, )?; let readiness_evaluator = Ready::create(self.parent_id.clone(), &*self.client); @@ -519,7 +526,13 @@ impl CreateProposal let substrate_block = Slicable::decode(&mut polkadot_block.encode().as_slice()) .expect("polkadot blocks defined to serialize to substrate blocks correctly; qed"); - assert!(evaluate_proposal(&substrate_block, &*self.client, current_timestamp(), &self.parent_hash, &self.parent_id).is_ok()); + assert!(evaluation::evaluate_initial( + &substrate_block, + timestamp, + &self.parent_hash, + self.parent_number, + 999, // TODO: n_parachains + ).is_ok()); Ok(substrate_block) } @@ -570,45 +583,3 @@ impl Future for CreateProposal }) } } - -fn evaluate_proposal( - proposal: &SubstrateBlock, - client: &C, - now: Timestamp, - parent_hash: &HeaderHash, - parent_id: &C::CheckedBlockId, -) -> Result { - const MAX_TIMESTAMP_DRIFT: Timestamp = 4; - - let encoded = Slicable::encode(proposal); - let proposal = PolkadotGenericBlock::decode(&mut &encoded[..]) - .and_then(|b| PolkadotBlock::from(b).ok()) - .ok_or_else(|| ErrorKind::ProposalNotForPolkadot)?; - - let transactions_size = proposal.extrinsics.iter().fold(0, |a, tx| { - a + Slicable::encode(tx).len() - }); - - if transactions_size > MAX_TRANSACTIONS_SIZE { - bail!(ErrorKind::ProposalTooLarge(transactions_size)) - } - - if proposal.header.parent_hash != *parent_hash { - bail!(ErrorKind::WrongParentHash(*parent_hash, proposal.header.parent_hash)); - } - - // no need to check number because - // a) we assume the parent is valid. - // b) the runtime checks that `proposal.parent_hash` == `block_hash(proposal.number - 1)` - - let block_timestamp = proposal.timestamp(); - - // TODO: just defer using `tokio_timer` to delay prepare vote. - if block_timestamp > now + MAX_TIMESTAMP_DRIFT { - bail!(ErrorKind::TimestampInFuture) - } - - // execute the block. - client.evaluate_block(parent_id, proposal.into())?; - Ok(true) -} diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 47dbc3c7ec03d..f60ffbee926c0 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -27,7 +27,6 @@ use std::sync::Arc; use bft::{self, BftService}; use client::{BlockchainEvents, ChainHead}; use ed25519; -use error::Error; use futures::prelude::*; use futures::{future, Canceled}; use parking_lot::Mutex; diff --git a/polkadot/transaction-pool/src/lib.rs b/polkadot/transaction-pool/src/lib.rs index 47fc7c99bd128..cf9013777ee81 100644 --- a/polkadot/transaction-pool/src/lib.rs +++ b/polkadot/transaction-pool/src/lib.rs @@ -35,8 +35,9 @@ use std::sync::Arc; use codec::Slicable; use polkadot_api::PolkadotApi; use primitives::{AccountId, Timestamp}; +use primitives::parachain::CandidateReceipt; use substrate_primitives::block::Extrinsic; -use runtime::{Block, UncheckedExtrinsic, TimestampCall, Call}; +use runtime::{Block, UncheckedExtrinsic, TimestampCall, ParachainsCall, Call}; use substrate_runtime_primitives::traits::Checkable; use transaction_pool::{Pool, Readiness}; use transaction_pool::scoring::{Change, Choice}; @@ -59,17 +60,26 @@ pub struct PolkadotBlock { impl PolkadotBlock { /// Create a new block, checking high-level well-formedness. pub fn from(unchecked: Block) -> ::std::result::Result { - if unchecked.extrinsics.len() < 1 { + if unchecked.extrinsics.len() < 2 { return Err(unchecked); } if unchecked.extrinsics[0].is_signed() { return Err(unchecked); } + if unchecked.extrinsics[1].is_signed() { + return Err(unchecked); + } + match unchecked.extrinsics[0].extrinsic.function { Call::Timestamp(TimestampCall::set(_)) => {}, _ => return Err(unchecked), } + match unchecked.extrinsics[1].extrinsic.function { + Call::Parachains(ParachainsCall::set_heads(_)) => {}, + _ => return Err(unchecked), + } + // any further checks... Ok(PolkadotBlock { block: unchecked, location: None }) } @@ -92,6 +102,19 @@ impl PolkadotBlock { } } } + + /// Retrieve the parachain candidates proposed for this block. + pub fn parachain_heads(&self) -> &[CandidateReceipt] { + if let Call::Parachains(ParachainsCall::set_heads(ref t)) = self.block.extrinsics[1].extrinsic.function { + &t[..] + } else { + if let Some((file, line)) = self.location { + panic!("Invalid block used in `PolkadotBlock::force_from` at {}:{}", file, line); + } else { + panic!("Invalid block made it through the PolkadotBlock verification!?"); + } + } + } } #[macro_export] From 0653de9cf6233b73f1b7ca04faf10d4292757efe Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 12 Apr 2018 14:39:50 +0200 Subject: [PATCH 024/103] update WASM runtimes --- .../release/demo_runtime.compact.wasm | Bin 197541 -> 201848 bytes .../release/demo_runtime.wasm | Bin 213362 -> 218645 bytes polkadot/primitives/src/parachain.rs | 7 +++++++ polkadot/runtime/src/parachains.rs | 6 +++--- .../release/polkadot_runtime.compact.wasm | Bin 191383 -> 198791 bytes .../release/polkadot_runtime.wasm | Bin 207110 -> 216404 bytes .../substrate_test_runtime.compact.wasm | Bin 16318 -> 16318 bytes .../release/substrate_test_runtime.wasm | Bin 17828 -> 17828 bytes 8 files changed, 10 insertions(+), 3 deletions(-) diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index ca30b24351d4652262d9dbae965dc857a62fc25a..6d05e2e9d11dbdab7fa5f7979ff61348410517f7 100644 GIT binary patch delta 56197 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 delta 51649 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 D7~^?E diff --git a/polkadot/primitives/src/parachain.rs b/polkadot/primitives/src/parachain.rs index e7d33c23c11d2..3a87b1faa2d11 100644 --- a/polkadot/primitives/src/parachain.rs +++ b/polkadot/primitives/src/parachain.rs @@ -37,6 +37,13 @@ impl From for Id { fn from(x: u32) -> Self { Id(x) } } +impl Id { + /// Convert this Id into its inner representation. + pub fn into_inner(self) -> u32 { + self.0 + } +} + impl Slicable for Id { fn decode(input: &mut I) -> Option { u32::decode(input).map(Id) diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index be934839ef7a6..1f262c0794a15 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -115,7 +115,7 @@ impl Module { pub fn register_parachain(id: Id, code: Vec) { let mut parachains = Self::active_parachains(); match parachains.binary_search(&id) { - Ok(_) => panic!("Parachain with id {:?} already exists", id), + Ok(_) => panic!("Parachain with id {} already exists", id.into_inner()), Err(idx) => parachains.insert(idx, id), } @@ -151,8 +151,8 @@ impl Module { for head in &heads { assert!( iter.find(|&p| p == &head.parachain_index).is_some(), - "Submitted candidate for unregistered or out-of-order parachain {:?}", - head.parachain_index + "Submitted candidate for unregistered or out-of-order parachain {}", + head.parachain_index.into_inner() ); } diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index b6bee777326c5022e185196992c69f71c9a91b4d..2f9da3c16aab06e6d4f3fd2eca16f6090820a9fb 100644 GIT binary patch literal 198791 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 literal 191383 zcmeFa3$R_+dEd7m=l!@i7tc!qAon={$qR`fz=r^cU}9`kAgM?UC5KUInJytqu*pkO zq$o(1I}`y+tb*9GipEUCjO3V8Yf3pL8;ngSY^r+DnA5T;)3Rf=;k5LWv6UGmquQKU zZPghi>hJ%3Ywfeoz2}19ONl!c#C!H$d+qi3-ru*rwRZBcPd|_*Ns_KC9?wplN{%;A z>3`{|<2gTx{pBWANy>fC9^0Sfc=~8^JW2Fk`sne73MtcdcIr{;^EdHgHTS5Vs_Loi zkFv%5#3w(y`NZc=-u<&DPTu|LlMg=pv7bG0_r0Gy`CyXjQBRK^_}KmTKlt&ap@NPI ze&*p5Cz7Ua7j*m3!@O|!XHNdip(Ih^a9a4u&peQ{rwyHW;NuVde3H);Jn)bg^sTEC z4?OVTXHU#l`SgjCUNBIVlRx+1=kC7txY{>;xO3wpuk@zeKz?7kD%-F@AA4tU!mYdgT?;Rhc)>2qGP zMwr=&hd*}m#3$}P`S86b?zYF)cWw6focJ6Nc`W^cFq>t0Gif&YkAD>NUn^_ojb^4> z9{B&VEXk5imwHLk(BDSC&*gxZ`n{w%QY{>J@a053(N_nHx>2?$T z@jq+2mn5S`Gkqvc(`KF~S*rtelxP3zM!)@ywBLH*!~+jL{PS6|`0!^wee&*~KJl~n ze)8_meDde+{p2T-t6Bm1?`{~0{=hKp7irm9De|JVav)0z8aa>+ zcxSY-JK5k5C!L~2ok^|=*`7QZcd0-<_1Lx^8-@C56ggcqyo<)TT{OzZ?dqaaw2OS* z_Gx`!4>QKiz_KD8ZDbm{J;q>@f}T74beSYS8p1&anUtGXG`kh*+0f#kXC~4Ae;c`= z)j0*cUP=PMH2nSR0&M>ZbD0mbd>xoEELxuejY%~$DWAvwN#~iP%`Z*5M~gF0LB2UUJXRqkF9xJrh*v@+%e zU5!@8!XHS0jo)^H2Z>}^4zH_9~g2>Tv%-8{K6X{n>p!9-wMS}7LQzuk;h zicxg~^HrQ*)yU!0S?B>!l14`nOItkGn>M6&o~$ z>7XSxXaIQ=HNXKWuv_3bAP^bIV42Nv)IDfq!ZRqs#yv?G3>D~zes@bW7F`ic#|Wlq z`alij$)s!d8k|PYJ55c%8{|bBSfUpts{n7igvQ##1UiNKkgkHSfx&JYJHH|VoIY}wjgYA>Fy!2+@SmwsUTXzLhkjNsf!4x)ex71Si69?lUCG`u3^N<;30YVYP2s%)Se3bI=m z^W)cy_Sp1Z(Dc;3|Es1)uRc9`XL8JusUb6R&8fkhDPc+)n@ugbb(n=F9B0A_gD!Hq zE*j%((Du=0j205Jkwa6ep()zra!7zKhD~s(finpoIKyJtX@5Fy=9|sT7yE=V20Lo@ zJ4yNcdq>wK{a5m|Rg(jmD7sT*;(p$T^$TZxZltJ1$VIv*F^ScH>x`1Bd$=rx)v9~M zTZ)Ve_kvAHMo#~2$@!pvMwvq*dJ3ZQj@5agrgyN-X(hwui!%BHB0E0F&S4t79xpN z-1(D6x<#@#Ny-$e7X8td^CxghCQy;Au1u^XqfErdTud|HwR zpU$erJ8l3obkeXFG|xBE34;xjoi;ix8>vrq)c>E;w1H%h zL;?bpY|?CBPVOJ4xr4woR}Ib){s!uxcmt>z?#s!FBy{J_;LgLWu!YFHMXZ zjieinLo|~}yfJ|wxQeh7c^eMJJHnw}6t%4G3tOW9FPmnOw%4~vnXkbTF`&L=Tw|Kq z-5fi9U7OU23i+|t7+rq!qK(nc#Tlcf7j2xg#wd2&5IZE3(HX4GK(>|5DF@?oE0YDR zPK*MPa$dG&b&58zFcS-vfl1|oX+mMq^my#6;*SABS@>26~zM}AF2!lHuzOUeDh{s)K16PO3B%}kis zr0J@=C7<9)NqjT{HZi&!{*u##Nk!cz|MI&2J~os_z)%>A4~tf%r%hu^g}RFyEG)G3 zxA#h0|J{oo^6As3N1ux0)o5E7CHyo``k?c%4f^!zK{ssB(v})@!v-zq8AId^4*LJh zQWGPEdl*5Mn^y>7Ex~oz7$b%REhFLF%;0`GTUz5`P+J@T1@qK+B2bdcL$jwOmBx~L z&6DF+exxki@RJ<|f70+#R3>`e`!lmfmttSH3>q>{jFrt`9!=2vZ^77E&Nj>Pc57bV zfViWw<%v2(Ti(JC5FG#}{2|GlG7_fJ!m*sR=J|N?5L`4AMk!bs&%XWOHZWWe+)dyt z3PSmrz3XsJYj8HxCcrs$&C!x4D+9a;HduS5Xri!hOiYxx5!Mi}>}6f(P99L3BCH|Y zH#3vKzT031wWb6oj8>vK^LbEHE32UPZ>9`o(W>asnTiXh2n;Pp7bCujdx3K#=76Xb z0g-LqG?UgSQ38az`E6iQuBReSawI{m)No3WOHSObVFt!fz&4x~;1Ro*=@<{74cp1; z=RbOcNC-U0_@E%aPoqyIOeCS{ic0ubu_2%U%>>y&KN=turI*ZpG#9k0(2{VeT!K#j ze;wqFQw;*rLQ#aA~c!qR>X1bpjQtWg#74++*)VI=JpDd z_#A-p<{>mIMVc`^Cx&I+RDi_E(|rX*+11=v0F=?qeFZ$&)PUCkH1ZQ2G!b)d?i;wh zJM{!;tM1ej_f>c5iTkQM^~8PE9fa>#8xV4l-&kf66%vvarD0LbqqL4*Aj)U*L;i#r z^fwO`0m{oegSc1oN0SfZMyw{YNz2{fSwfq%r=`=OPdd}m=>#Tb_?Y%WYIzMTH{43U zW^ld2d#Ok=3*ls@%8+-<-*5oH#(=U{-2lgCb;C#+@n$W83}?5>^m3fha1BKP!+K^Q2p%J)q8@JR1jOySG_(vf znBAMFq2(#T7*2Prl&N^H2BI}Z)ib}4OF3YXBa>b^otiNyQNK4Cn8#dV{1R~Dktsn} zGm=|4T>8PCm5P&LM`VP)v+_JHGL{EdhY%E_E8VDSl`VzrRZV6$t2_2mW-qnI`M_f3 z)}5SB(VyUoA4D@Kr#;!sQh~-q`R$ezo}JSwt%$s>nTUQu&&J1Tmy zLzNgQbOUEXGU3WsI0>7AhYb|>LA+e z<_6ruFtMckv6_Jx35DiuP^q9LqRg-b%XSDE<41!3q0Fwn{tOiou3jCMKTI)OVnD1< zN3vwhjL{pSI>n5OJ`}=3UE%_XZ2BRH(w}KCG~ItZOPiu|_j$4-WyhTmkwb7oIyK|C zGvoB+D@VWmkALU)zxY4C@(*s*f{p-A>*BUT|&U6{s4IY^GC^583jyWMZW zA|uxK^^^76`k}%V{MP?Leg#1Xi#))B*mI++62Ck_V~Jh#dBou zhkJZri7G|WGbI1T1j-eEcZShC!~yaW0AUEsFKIZ&8%Eu-eRx<4l$+biBqiG1RRV^h z+Zp1tcI5~C8mSk8-s)HoQpSVjAreGb<#gjycytyAqHkO5Da`fB#Yy9aVnO0exP*u+ z_ec%9mx(G?3sDs&C>et1EGtH?hIJ;ljfpbfnGnz$iu{~UWftJl zk;PfY_*Nr7f0oAj8`A(lx*Hub{kI17t$9Jf)A?)^@bq96Sl_-V;Gdm%<$r$BKwX*# z)4?oA_rGHh{db=0FP=KjrSl-kGSp0r`qk_mgXNzc>O7le84A06;~5Jq>aWUJ$euaM za#i!GqN(($NxprYqT)Ort@Zg-R;A}JAk$Z8H`Jc;mZ_(pSBMsBePNvx2eU>CjK2$| zIA|$Ba||gC^rid&OL0h7r8xZcw-+L0lT{F@C41zWzpstY%kG$gfa0nREmi;l6eUUt zulobrwekW5qx(^*Te(Y7p~}e7EcL*&X+B2fqC+c{x(XDS`V}ZvXM6lfn&nO$nX7_I z4bZ9QvfyE!RA>!NPEy9CF-rnWm~yRxV;roW@C?GKVT58RS8IezU}8;JQ^vSp!u(}k z>P?|w#=wMycC8=jflWADJz?1p;9eGbpu%dx?=bG`-0+rg@6`Vz#r=Yi=Ii(v0>cC1-y&;)jq1z9KP%T08s8|AfA*jx}TP3R$!kr?5tpt|&645>H3vYgd&?nT!%& zsrJ!?XZ+Y$?Qu$PTEx~k)@QN0_b|~_vtR(nL(8L4zx>th0uFqMlOXuir*pjg zqECmGm=6SBpUHf1V6Lxi<_8^v%EdQ>Fc=+mi@hmm>7Q;1kjo>`qA1Hc%`uBJ<4*2Q zyBLdEAUT-dQJnTqglV#pf)i39-dyJdIWJEgnWJ`(uN?i;fBa8=|Brt8@BBk^=1jt$3 zj`#;)RoqH#IE8oX#LFOu_GC)C6Pl~z{B@|;=#_xhLTJ|RmG$8FGqgodVgP=R`Tidm^KD$#QqQ=n%ObE8pgLSoQX{%`9pfxy1k;;iK~JEtJF z*@ zpyL>;QU5Q>adS|be_XcQ>M-b84@X>+! zR#OCH~TSdTR^NK{vZewO%=v@AW5+BgCd3i1{cjXk~1^Xm@ z)Z$j>>$^u{*iRI4vHuK;mN`*2K2Xo$Eb@hB(#Z0Z#kOp8$Z*0aG-tux*Moc_@UIV% zky24>!}|^ER3yGmnm`xq6Dv~|4*Ln!Kq*jE+_=|b%yJyeGEu!4|`3A+lDAT>BbWO3Jtdf zS1Qqb-f&yyO%iY@;5`AGIY0ygp5=8S_F{IUloQ-tRgi0DI1`-vn)t`7#gKp>ZKrRBstOSqOZ4 zmK-v!F=1F6cP1LV4YR4HA7KBdcij3wK`L3rie9dhC!_D*Plb8h}r^?v2dU` z6Gw-PwWwdo6JM@F`rI3U;+aYs8v{!mDZ*-IAcVlro3c&#Bd-1iDf%MeTE$0 z0o2mPa(07=*oP)u+CalB8MTek({8Kf3Igy0ElCVS&_H`VUaym1AP)qRG%Ed!j;Ztg z#zFACbpbjJ#0WlWD3y^Ndx<}z4h!TCV2xUaSPKKI%xo(XDf?QNR_y9iWyYc?wxY>n z)=SG&0VNYJm}`cIW%)JI!EDP5BHJ-x*w0~igU#+Y1Dl?~Mhf8HUHp+t1pdf0y3iPd zV5&>KHz7U@^p)bI!VI)mY#Gc#&b!qPAie{3H z4ee0Rv3ME_orF#PjaHj%Gz6s@Ghyu#5wi95W2G4>hAXj3`)ulznwmCE*b$W}d#ZDC z41bN&0oyk%$3;f}Y0r+DX&jv!8kgx*YuvUQtZMwQH7=R{f#G46rQ3`>#ai34b-x(E zJ!8}^Eop0N80M9hG+Ic&@GpZH**|U%_KA}- zv1833j%I{el(45vpmm_cyM}-YLWW*T_FaY9_xOm+Y5)PZ4Btch9kpMdq*7^DV|3jn zudkZiAeni~@OmgDReOvV1dtWOjn*_OvTN|11o96IFYhy7kSd@Lu7CYO7+LweX345k zHr1z7Ee-FZ;|7@Dym8Z%V(EmT^;V53?z110qN*`ntugh&n6A~0*kbUW>WXoCnOFfq z$6OvRfA~Y?h~F~Yr?QKiJZfkdZM(Dr$Iob>p5|`PN;+3mqRm;&;cEQ42%FLC#Ps{}O za)uyT&QHwvv_Mp%5O5pI#}|?4C0rrA!WG9^1SRO3lcOiQKmLbDNn{ zM$(=sZrxrk2SUU{WBbzNaC(=n_9Pn)=C|UjB)RnDo}_IK;q%r(k;hj^Sr#=<=VKYq zg@O%LlXo3X-)BuK4SZQpw-kR{U){#?>yqvpT5aaa=~b7uT#U)KGaTRmr63iA1?F#9 zz@ad#Xo*Z2hR`L06-7~UyPo{1Lb<(cMo`NNCCY>s)_L-xdFFj`SmnF2$6t=9H!X}ll zy@M@>LA~_Wl-L&3dL2|zB=!JQG2g3@Qw3EeN~@p(dqv#}e2K|C^lC7|&xGi0N+Q6p zaSBNFyzDKC`c=KTk%y*J7<_cAk_0pDaLJU9i0$WW=A2hLk34s_ocT+E|+LI zPV0csHw%;&7B`x+16#BrhO$CDK%D#1yACH^s`r6-=r!un<5s6cmztQ;3);_MBjKi^ zueDQIGq*Qd(Er`s56ID$h18a5=s6kP4D{HdFAPXw-xRk2cqu4gsY}=rufWw_j1-o! z|Kh4*d|1Rz`K=^!Qp(*8{_33>c+%MyO>JvXL&i&`pL}JApV;9x1eTVws}ZDH-C%cu z7gia;3B;S4qIE285)`JFys+6Lg=su}K)Tv6-T{wvTI^#&9dn+zIc zIXhA+WzPriTr@h93TkP_jj?vX;N zoX@HNF_dawU^P?&QQ<2*Z|~6;uxH2w#yjr6y=}jLrtN?A(PqNjUrf}qHJp=E199CoK_1Os8hbF8sJ;VdSWmrkt#mC7oibmMF(l-HuP zSCw*;`OP^N$D~@b@@#X4?7RTFn@SQJqDhgxlYi&DJ(idWOZV7dphGEa|M?6X_eZ zo&t3PcxBIOGfECV8e< z5ceO#0;2*?v?3w2XoVjWX+IWKHrOv!rc%kzz~5#sT1}NLN1LcZyNshCRw~R(Da@2H zXK9jH#!b-jXSH5O>&*HCm=$@+VO@iR;xenCt)4sLtGEtW2%VKMV?*|6=B|3CDlZ6d zMiPbXdXDr_j9Np|TLdNnFeFkr0Lw34!dm_+2+mmBvk(;LB$iZg>XzZo@`sm z3kGh+CuB|YX0}eST6hZ+N(j|bgIH47Bz1$ctL7+neLP@s%C35{oITMLyUyJy^@Ls# z_?#V{FlXJ^^=$JX!ol`sAYke}v1O{(Q`j_hw(0C@eX%zq!PsEj9$!!|%e-Xg%F&zd zp5w7|-nmR$0aZeNmaJLlJn~a5IPqKt0a^M^hHCJ|R4ZP2+{`E@IB@nZ!~TY<|T z6=+@K}$m0fmSayl!ND+UyWq2J8y_BNRMz?b%9b-B) z9+zekQl;q79yoH8RHcl}^MZs0l{!9`h0f9RCotlkwv@eKQOWwSg z)mKGgAtRB79@jOrudA?)EpYY>Uz4;fz9wY>K^0_RJ=^L~`OC`$wN`;H+K`6f8ZFOc zG@(7lsshKg}$t^R!_9TGytaLQ%MgCLx+ zo`U>L113v+qrXh|to()*)b=DlX$4_3v1&YF1#H2~0{&&5+Ksp~Xul7k{WulH))Vr< z4Hop^Rtix__p{hQ+V$lRY@sH+*c^RWFnt08p`b`)?9PLl6(xG`$e&2mT6s{uqD2_i z1+FXyG4JTdj}6Dv^MeBfR4Ma7x>ky5H%sK^V^QY9sYc?rIx9;Ud^3}_xp}x@KxF!D zraKt@;^?lYsY&>N63G}M(ne%>My4f*ISTg>8&Vw!+_SywoZ=#a>lXOhPFo64-}1~O z)IfAAQ7TfO>IC{z-kH|{HwdGPt%Gj&zPJz_PrBC5r2Q1S2W`}YL4L^pHhhupNrhIs z%{e5CE1D}t5$rB9rvLDAWqcRyj{t;}O}-!+E}Sa@{smR-k!4&io0eW90-#t4OE)KH z1c9g?&(_GBm!qu-)W~vngwM}l;c`LTh|2d^`o=g@S)8m?^2+!hFSUxegzK=?W)+IpUTve z_ky({ogzjIi`knvi_kaDnU!C0)|GK7LKvcaaJhPgq7d*3?srPnxW{xrEd`08TURh-yGHU~S zuVx==RZWXmW*?${EYu7cn~BpvaOhkJr{mU)NrG8zPijmx;}T1+uFFtrX*EOD^O+Z2 zlymSOO_)WgMC?BUSVZgGTJe^XvFoSEd0yta%*re}@4O`aMp^K+-!Y8pe2*VFMzNNp zoX55gu)-+EeQfv$OMb(m{RsOJhIbBkmru4v7Tefs1Sa|S9KH;`9LqVsD{Bv7{G5Kz z=Q06gCA^xMvs1o|eFM$9r~!W8lCq}yOKB$24wP%&GxEbME6Mj$s-qfMra@pvkrh01 z6RtC52%kAt0)pbKi<#2PS^KPY_g;L4x;l;zZ?C8-l0IiaSE=*L{yF$<>fUiP31Pk z7wjThZyG6!XZO4*IB^in1%afY3pVu4-x_SrWmDLkH}lQ6gl6UQc2|SV_YKhBvf>Ih zFB0K@v=V8?pdC!tFJH0Ls-h(iLa*~! zehsx_L%0~;j8Y$HQ`Vfn>=;?YT7hzA4DdiTb688H$y1zU%*Lk(>s`qomytA>DaS!wq@16Pv7B`VnJo9vTwgGhagA)D5X@*{cd|*>L#}CV zv#vRumODD#qF0jyN8ik>jnT$xs}P%NPkxWCHdS9>*z9|{DBCh!W73x{%=v^uN7Urw7O5qcDlKdo z(H7TXz4a;?-{lwf=;x8qM=fo^O;t$LkRqHY=8XX8@&^aSNxo~oBEGScG-HKOrmO+| zdA-ON#u9W7HxMZ?Zh+iGu=zgJL7AOgL1UP#vu3IWF2oDw`~pXT$}+iAwPod@(lm)iA;L(qVM))ME8|PNwsBvyr=O#oT=?=l zzuWnJp5Gmz-sY9DRz9Ak=rUmIItDt9I5LusuDA3L6dzmzT~?7n(@i42n%RCnLhce~ zT-N~d)1`8YORV&KT3o8J4vXyq{^i9E{S*vFjLQhvMiyVUB045#Wu}O($zO>@0?|uB zp$R|&c>URVp1qa=%J$Kev&PJ}L|b0Tkig$M9s)9vaUoITu3KX~7IEY%JpIJq_w%#N zCSf!LfFg=Dnh*gY2naH?XcPM!xC|nMAm~c5S+h!5@B|sf zrs@Vwy)oPvD_hEo)FaEbGV;x5C1{Lit|<{S4iU<E$)^Q00*CwmMU4b#qmi^`{uQkv>FW(&@ClhXh)~T&J_b zM0aXg1O(=HG8?1&v;K}*O+mrHL#MTB%eqK}O;$eXW3nwP_K~TtOY=g6PiE+5<0m45 zU1u|{TF!l3p?l%*Od%OtTdhvYc4me7jcj53Jx)z*rBVpuCIEvo7FH{QU&g5;;z_Z$ zREhEaA(t}0{gpom0SRK#JcoZ{=7s5tpvn&k;KCS6VL7{r&GP&lGFU7V`=@p9BFKSd z)(}-VS=7EMTc~IjWGYr-!1mtzXM&XV(Ugp!2jFF-Wrl*b<^#&hXh#gJg%3F!Xzo;Q zht4CbLFskCDbiR6hS2e{W933Hq)$yqwwhpQHqv@9B+5x$)7nDUIxsZr{*bNr07F6D zyJ)&BU7i3rb!m$|9NDe&!Uxk+x@Q-AuBM%tbx+_9o?UV>o;p|5%(IaoY_^agV>PS| z=d=QEjeg46#ttO+lAqw+G1B#6umk%iVt?6b&c7*yhoOq#H>%i6#;JPxvo?eL@OKRnt+bf(Evny+Gc9aX!~C@)Z>VW4Vs;0jJlc z-&AI=MGDQGB4f@NLAqMr*_VpuGmq&oW?a#DE)L0=&1dW+4}73eRx*d3uFc>Bnl|B^ zThko4Dv?q(?M6T`RKqbG{+Kn6=}k_lvVsXuD^E1ETdbH>hybYAYe`9Z`mSj@gX`7M0qL0^0+ zpMwzfDLZ$$$y2r=i9FeNp{F2~BXTcQT}(@>D-+YO&4caz@_FCVQypip_Tm-a5cK$a zZ12zW{_~3e{J^&defh9GdpbNjXm{W9pQ^#vE-!cMpoH@IRSzEb`=|Zq>)zHk{pVZu zgC;O%Sl&!<|BNh|2ojof2Nyz8kahyOdx&x#xp$x^(7XU{EaK0NZB;fS3FjzD4CNo4 zCrDS%`T;gt{}!93M^BAD>Z#4x7P;;1)-&e9NpR*#xcLirxs3p)ivHZI5ZQr$l~wkE z$S#xt!Wda5ND)h`L>*-YhMLP&i?Y`^13&`n)`Qs%bjwM=h=eKfAk-O-|d;%Ebc!8uCtYCYjV!A#pxfe<=(Qzxnja5 z`qHQ@b)JLrb9q@%MFcc#lfSta_&*A^I9=5yW)UY%(`KXq1wghSzDr;`2bvcZ&IsUv z@C+*!tuS2JqL5+0ViplKrW|}>N4Nq(l>=s)!9gLpFG2iQ;-JZFXBE(MjH8dJ)o35P z+($*b^fMhTf?6QAK#tme!P0hZH7l%LK{CE}rE!E|24$ghl`CZ~A29d~h8X|8nM3gmJ%eY4}mtPCUJ>Y%_@Qt$D1OBp#rI2t139h22E0eWE%6fNeX|P zO-tr*lM;m82Yu?RGUy6fi7BR^FTy3O@kUAz-AAur#?kJ{n4ZPV3^&#>W42I9t{m+f z{1wNmvnL1GyRq^nwcM!vlSDGAbqz5o>a<@CGBamo^I?* zcV2F3eON&RxjMG{SF3@_A*o)_jn$G37mib>SvZ}0J5HS|s+(+u`7w*oSU4=oNvghY zryHwNYlX^W7sXa2Z9^->9%+T`*V>XfvNY>ps6a z9dxMN>$CB51sT5S>-{ruD@IM8;Htdo*L(GydR{-fC!o`K!sDI+U(Qff`VjHXxWOT> z5&E6wiyKOeaXqu8W>?`DRWm6ZciILo&k~@rY}X{Fvc9L7ZSeQ&4PKy~nJf^oG)mZAK;%n_-<_?48 zL?u7ju06r|Kqj{iYNQWhSE+p#mWT(dNd>(fM$bG2wN~HU(Ozq zl{Xu^XLK?E9-_YUp{iB7{~nl-;o1uCht>5XcDhXHhcN!MpOEGQIJ~E~DanU{36iOe zPuB&?$V`hRK&|_lWdTHkWl;cm)BGM*S_sm zaT$E5M)6?JmOegI;rJ-|vQv=R=Z_^q1#|6JLAov{|NF?&-~&3EB}WQbe!aFY>g>J$ zW2Ce9bPQgZ>`ngJDD2hM5{V?Hk&)pHx~%m)A6W*%hX5gHOM@eCUb&Qib&u~6LnYQV zUVRLwa1YeA_68LPWMLMX*DGX&fa?;$LPHk0SVV9=SDytKdrinP^IdMEs_n2~TEJ30 zRsT*9EX}kEOVyH`O!PW8Qx#Tn)oA&S7Pz%gq9unfGmk$UiOZBw$-2i}(kTB0Ro3>p zMuwnonoK2V%o#~?5&DLcL!bpL%JoL^8y7tafe3N6>dZ>WTgv8jq!|lf5^^rhd{y{< z41Kucmf_8VVNI@@V?tE zzdMX<*3O%+>DDzHXXulSbr&>5f~wo(nd(8+Z7w$6HsnpgYYUUzRBQ|p3{!RTAf)OJ z^^48L;%&q0t;%8yasYNILjG!*gZ=Ww{rXlA4kB5e&OJ8|%fV4n zI>)1+`DOHtF!*Gp(k{mKaR8+CXO0a*6ZogsWFtvs+35KdS!=~AA)KVM#Sarmv(K?2 z`R*CFXu%+Mm-aHdoV>w*-I;TE-l;)I%){R!C@Vin&awx(9LSWh1YqeKP5%hA0AR0; zjty@_%w~64-o;xXM5d?|jkS1T1{Z^u?Z-IFBqGGOC*423l(c!kzLmzefeqzNCPEKO z2A&RITPJUw^M`ZX_27y%Q?CUXiFS|DMI z_4t#~rv$QlBx#&QiUp2yRveH+n4uW~m=DLjU+Yc`HZQgv8y+6qsKIaNp2DwV$GiDA zx=jY)BiMiaXC9sGxMRq1l93(q+OX~{fAcNa{#aEP1Urg@2~D;f8*Xx_$=uy}jH6w) z5X>wF9~~|_n`mzm02$ruF92)VH;eWmZ$QrM*bE`p%>O~b%eHSLIjYl1yWyLI7#X&8 zL*GObgSe28jij9!o5CBaDS;E)^lRaF0z1?D zq^12F&=i@4aX$wOBAN)s+I^Z%+=BEZ#75+V96pV&TL=oAzMUVj_C-JptvaMajM113yYUjER=$yZ0FfV-_=85suIdmFqIQ~E#-r^* z+1@DC9^&mbrZDwc|Y zz8>koC3h@vOSRtQ4?-3j^Qsn|B0A(rX~MO&YShV+G|!e|AjPmn3sKRO*h1aPGulFP zRTdg@$^4KGxY+ywfVQ(tZ-YyADv_}pXUGSE#|zAEXVIP5SHz)}cL4|PIRm83L^)eD zLzdD+Z`^e4rq9i!^-&%Z(d1eqqpZVv3YwK+)MjAh3@{dXq`cfvy@JI?%6VKFZh`#C zvgIQbNN~CVhY^As76^P>^U>w_TjZcw@C?J zENm(`UX)WR2umBr_66mpsD&u_xlLqHJK-M~HKv}Xx;NNdwFhc1= z{CqzT@VUb80Szh^!BO2FDmaE| z^VVV!ZdaJ%s0SnNL-&Z`MiH8N}uI^pn$o8Shr0`jD zw3ShIrk^_{mi$pI96bHttnfC+<0UQurJ*7dMI|I;fYzPdrLrX0b-bfk`n*Myh$($! zJJBT7xlHx9c>POty*Vdqm_U>6d$nNf2O(QR6u9C?inZ?x{YmvRq{!UR7)jZ(dpK4p&idL2M3f z0SYxAoi3mR}yDTL+h_N1A-HbPZPk^nK zw!VKT-)gbgTGLRjloWj8m8~X61!mV!8>4W3y31Nib9zs#9z-4aGsTcK*TbHcit|HZRjq zrn%4?G{&E|q@iM@t|JY#Q1rkQo`AlB9W_)3#g%JQ1xE&m5H^C!IT|X`t%>MJtR}w$ zW#G|?tv87(HX%9`c<-T>WiW~WD(-75eaE>@du&?$@_X-v*0r2H+6%Wnb|V&`T~@@v zH_vI_sYgUJva@|9u141v+A1NTE`Qk+Eyv7ie~xnCkO{?BDYR|D0puEVps!`~_$xVL z%m2w2h4}n+T9rsuk(%q4CvCX_v{*`w9hz8X`eKl(e4ZTys%J~W1uO0=`V1MbszSH? zgx+N=R;(l&o`3*r3&FIi1$SVCAys^IWxP=U+bELRd>e9(YwuTGPIfU@b-P=wC7O7% z*sKRvU~N${*#s}qH`1&P-)u7ME)+a!xR2P-4lr4Nil)YYys!!GEf(*i!9{(kzF=Ca z#R2>z6)+;P{bHHks(JX&m~2!O33>}omd$*pl7Kq;=^A@l-sv5a9$yy>Y$65EBrCR& z!N+~YQ?~0sd2CgExLToE?5U^INtXbc8OuE~v(@2duHTWTfQl4h7J(QnRdgRDQ+{q`^e)-~bI4#87?^mOG6rC`mA|kK z?cOE6Q2R1gY%fKjtE{-pm)ExV^4d;c`KTu260um09zd99~xdY$UQ*RQoUzU)8$_lELntM)xVCjJ%w`JVUpivLvaJ|6Dv z-FZ`3^R=q-wNbg(I(YVa3v@nf9YFg#1)%cVK8&ZmVI(MIYhXgO${7lGFM73VAQ!ke zH!9z49e&MwT7~xtLd8h9-=I@FhAhXSN48SngmRM!P^S%uf`vE{Acl9bS+tQdb-7&I zK`Q$rwQWqqGF^wI6*Fs7hCj0$i}~yyrr>q8G5d7RVy&q2opq2DHTk!?TDz`WBzXzb zARjEWf`ahK_snvwyG66hwe{@->$pWT+X&{nMRJNbz8%_VON$X-kyg{9z3@-OCOBUT z564T^J8CZ3JqS8q)9*QnD0mYtZ5@LK@%RpCuZx!W5AlQSI--B-$wTup&#~@c3@Mj- z5<0e>Qms%i^-_#%REiW$D0MG3#{iebRCJk$j*O|yN*O$BTkg$mS^dpv*}!60vPBz= z8U+awNnt46Y&p9@we+NS><0WQPQ#54=a6T)ADRg+vNZ=oto*V|v9Djx1YE@GlZrSJ zY5|*BS{e62=Dh7ko*lrFcS!HP)tD(@Gct&fLC9N{b1R@&bSpkUFG-h>)nOT(Gf5qV zRLMgqaDG^U;}!QpCo}8N<@|N0Xx>`OGxUdcjLD)Fv6cUy9Z@Gcg8Eu=!KCFJ6H2k) z*@e)#OVKFSXuquO*$IM8&c$p?GYgq>8o(QU3#-|TL-1?%V-f_A42domN`ipO=OjV! zA=>a=rHf61fbAZ#SP|S_>v?`?$Z-7-@fvZX*elX;WD2{7%pz0TJsc1jjC&X!925b zqJR@dpqg-LtjWZzF8R>8WtU*2QP%@mk^w=ryw1PA}T0#N7$c?wj~Vo7Bywyd_Yz4d_Ap+^Cybd zMZ^yoh@cIDzLof)#bT!MLxEN{!%SL}k)sg_E=wem+^|&<$xNnfR8${fWKOF*z#z=bX;pBfx(5XE z0K%iV{c+}SS}_=EbpHAOEKE`?g2^_AWgX zOr8cA3glzD9@*)A+@rW@Q4hG zrkFYMfoskAx85N8NdIn&F#-vi0LM@U_eg0Wj|{mx2$C6AHO1q|9-Hu;p1OBjT5DDy zp|y@9$!Ajc?h=7`R~UX{1D2Wl$P&YX5Wwwg1-?wW~8Rr$nWm=NlpKh<-tp7%pb?3sfc} zgypFUopE_e`b8N?wrHekmWdhcwrD5Jn308|Tx;xvi?Bu`!puA%U|7C}hU9YFY{G_IeJ;-zy{bCNw2nk=sKn--uciKV@FIS8 zVk8G;lDSqhUsIpC=Okz3CN_{XhM3Nl=2CQqeM6fe^L!?iE};Z>jdnL@$qFxY;D!Hp@KjEAUJv6d<9(XGhLWf?ds3c zBwLl{%_|JwKK89?sE&-GY8obhW*dh}tHvdO)VNF^HIM0-X^)0k%4!)v)szXs#||!y z&k;O!sJ!1R42{qMM0_X6KQ_xa_$pwLcsGf@?V+y(%37rmGg%>NLdm>iDfOaI(-Tx{ zj4?!Pan2DKs52mtVH$)Y0wZBoGdHT6gF=ykA>whE1sK z?ZM;k{gapd5R5;^V_?J|H69<&Qv3cp-00u2519^$+Y00%YS#t&a>|WJPm0AZdDwNi zdTXsrNePv}jb?R?So4a<=hqr%M{U)3aO%X3);tbi?R(PtTq_NWu}~?x(CU?Ga!v=a zdwr?`PIlKKeyT!@Wg0XZU@#WUqrmNbkZqXM-IVu_tv++Jp9zP9o7$Pfs{Tvo+8Qz#U3Srrea z#REB;_Tav?NrIYj(bkN$Uc{Pb7zyLRyN)gEyL>hh#SvKtu?gKY`myry_sUrSB4ee} znHk2Rm{R`&8VOK{Uzt-nDibO-(A5qMRH+Gag+XH7uo3Tx)L^K#rp;hW)5`S3LAR}| zSIbw4K-AqV^CYCLV&irwXWd~7y&ZyVQ>%1m+4XcE$X8K-^Niyt-&}lN<2lcO*)-^+ zttT9El7dqOkoF{hvdaU3X6eHz`e3ntF4#w<@>-zQ=m^G^^CjAV|6b}2X>*mxMj`jw> zzGq#=I6-J(C5k%}5jqd!bK%*n>A_=tOH#nFH<3RECJYi!7$+Hz(^&RWL&+K>@(x(a z4Mr5FM*r$|4CS)?r@P7?=NuANu5%6<|1rtVl%=qJ zYXh9J6bS&)|J=YA?P&u@aq_*=_VG$d%i*xkmMw`Rkgx}f-bZYs247_;8lN(lsG@9? zwtQC)Vu|ZmkvgVEo)q-?eL@LU=6h=)AcRwpRq)89UAx6Bt;go{r6AD=LJedZf?>>x zM63YLtiDHS1rSlpm^30fbTB`kLYEBVYqs*@VxLC6$L#pow9-f6O>8>V5Ok#t8MMS;*pA5$?ZKhrCd(4#i~cd~Z~IRS zu#`Wr`&b((oN~OWg$?zIIKEaZv5Yk7Ns@v)TRzZgPz~PZXh&@1Qd;3Om+Z*v|04m8 zyjk*zlsB6ep~vwej72&Co)PQdO}^m@;JLqV()P>|9el5msoVI{L`x}?p0Z`hG6;~Q zj08NAHzibR02b9jgj8j~wPaZ*#*Gy7G@eQm@wACz@EBt|gtVu)^s`|@uj1`0GlAni z6>LGMGKseGP7-cf#iEH1&Q77lqJ8^NJBm!v*`#b9v>8eB|*hgrWMH1&I?HIG{j3BC1*+nIPEEdg>d<1SkJK1Wv zlReu$JuG@5cM^uutlhs!Cu|AXR%{zDc<$sjawic;9s$G^dJ-|OhRcPXDkjP7y+*0%P7{;t=_y`*V^Gg z&&mq}S6#CzwYNnnk{$eSWxRlk`+O4>Na-S)cvOeGRW?WuD{v}(5*(<}5uf@t z42)_b%h^fNgI7kzTb4d)tiG{IakliyKIvwNETy1^NkojS$)0qPMG}W#S?N3pIABf= zs=yuBKVbZ+$ZB#^DJgQ}0DJ5!imWb^s6&mgOcp7Yp(c$mSa+wcpyzKuK*r9qO~xE(pFA?>Jg z9?5OfgPlxRZo%gFlLMDa5_KW=&4!i5f=7*sM5w!>lDgVT760+VX1K0Ml=GM<=W!c$ ztZGfn!{7vVu`TMemh;GWxV5d*jd6evhhtDF|B#l9E@c>6?qJmCQqD}WB6rK~Xia&+ zj_qqr8AXNz^($5cx=I|>399$898Cvq@~Jq-OPiMFd~b+0F>XwlEWl4$GM$ zVAi$7&7u`^9s#Lx9vPPsA4wXP8IE&vAC@dWi03?t7r++8f%ha6pNCL~HeBd<7pP3h zW-=ZjBYE$l5Cf))YDteckdmBY7aoVC#}UFA5k$jov|A5yGRSp?I((@NgZC3b{Uc+t z)yB8X0yEE7+1_q0g!&b3E7Lp10D#XBAVtY2xeE0Rr_>V!Gewm!4Qi62)wVuGwXTNN zYPAp-ynZ}$t=1?4B+orA#8Iq}G!B2R#hUNz@`X6}ssR}baR$6GO-(5o`Ti^?2C)YAr4 zS>B55)ARsS$In#b<}6De9%eWra0IE{s=*csDF$kW`YoqZaXgG+R4fC2N_EBeI-dW^?3+f z5zYcs@H+Q5$^7I>dJx9ZHLr@x2vXc+yGi}kP(f1GzICcLTB#UKzg+#9V@z5{huZYTD^YO?`42p(x=I#i5tXi75*cj0y=GV2uSnk?#? z1&J8i9x;xenb$5 ztE_xASz!}RjQS}dNW+m`V4LQB0Y`VD;NV@yz?*edrlT*5qCnKuk}v!&3zoQ_Jb%^K z+q7Fk77!G$H?iFkm^^k#;`AnPp;F7CwoB5gV-EEeZJU^rL!F?kWi#3?3#|TNfLe7M z*Gzsjl)A-oj>$4cQN%1`*&2RFq7|7(edlWiu0SGjgroi1VdQ;hFAFam2_j`r^8FA) z43e=`_A8MhL9{P9z1u}f&jN~H*j)t_aSw$$1r(1&@~Cx*KtC_jp=;zI8)GNsln zD;hzmd)G=-qap^jRss~Z#AU>=QN&6y4l+?aa>y#eslT*c!cu$WA-?lQ%Lnr#G29wUtX zwLSxf!Yros>GkdAQ8<$6z+55nsk;{{E1`#pUq|z zF@+ohZOT@x<%&0INZ}c+tg{7m>JDK>{nJed1Izg+&k8nv4jhQJbfz6TL3{ z@t`(aJ&-}+52`swD-oZ}-l)wVUNH4hE<>1$5*&--4^b^URK>Z`Z(F3JD$Kt~H&%rUVM?9(n<3`V2!mh?e`-fFg!wVs?10WM`%x%% zF7g7FlpQB}CLJ&0K@vAtBpGV4eiY~gtS3$4-EZVRo^rsJ^3DfXl7PGbZm77%up z`y@-)Tv>O&2N3rfa#l0(^-3Bu7U^fRfo?M20O9e8kl}(fh%!Q>Gj^&`x$|_*DlsFI zQtPNPU!t)o9$RIRnXJbotI6G9lvT3cJ-w+}CQ%@GT)bIUNq+3IwlFViG>8QTRD60gyfHyeT(*)9WYdRa4x3aCe-U(OdP+u%EiI2p+4l=u0s9P$*)j< z(N6xKqu$8k;!N{7sQ3Jto7hTkmcd2|;TfyIOlr1^U=M8cl|0WC5xKigd<#-TsvWt8 zmPEhPqSQb4ZUfjolxa%IpPM)~DWe3E=^h}HGIK0SQy%hYinam_4VjOA=&ELkg3!TV z)1(q7KimPUqeY2T2_=!*)UHi`WSJybc%~Z&dCMS>VPcu`!+ zd9&ay<7N~rSZo@52Xa?9xbjBA1uF0JviZ<3!)Kvd9XnMp1-#sdB}D`4!k z!}sJ(Y-z%na;-T?1EW$7cbiY5AH?mcFT4_+y?& z%nWfnvF2%!Sb=ubnBf6K%bHQZ6VF?Am6oOTgT165<>#5RF1ua^8I&NO!{cx!YAi%& zLdZgNp=Ijl?&!jy(b|;O$IcPb-1ZLzGW6Zj30L81l>fmkJlZL{M`o zOV!vM6Ktkat8GTgY}XbWtOM~PlJfvf80}1ukl>%#KDmWhVGs)B>T95{dVnxH0%k&v z*_(~u#@713)`)rW=UElAR9v;MfAR3K!1)U8kdk`?ukKgmAe@6vv4x>MCHME9{@c&Z zeC1W0@W580Z{3da9hX|YWOnIsFdW8;E%r0^VvO%aGADU;!+CCjdo z6_#yZ5^MwBz{o-u`z1BlEn%kx@7JekfCrDW8xH10k>~`R4nG`~m+-@DwziV!8^ReL z5Reb_k8!9pEyxB*f^Z}mp&`*hHTY6mcdZmTpRoU<{|oJ`P7R<;5{3~9MXcAfQKL_dRhX*q9qBgs1035b`yj3K&FGh%kYdnIkCO|CXMu#j1$U`p{4MVrOyd zp*In-FryT=3U|w(Y{YpA46MQxPxr%fMLxUda?nFE10V$Kkye6!jOUu(cOIbragd3&1g(R~zQWP>Zq^8W$6G!?#>dj_| zt2wq=vz<%ASR0%G!8vYVP;1+_s!cLUe0bmJkOUg#O2fW(1QYW(hg0>;(U+4)QA7Fw z44%+adgp`Mudnr%47ZD5t3-B?;fb^{-7`;{J;{uiV=Ofv$aeFCHCZrv&5#i-#|h}y z362*53*TR5D6pi=LSQiNlI++kN8}`9$gzTu@KL=usSYa)VNyj8HD;57a;TCiD@ez3 z_8un-K-X@B9hkc|*jD4VeIBge{jb zL(kj8!sSEn)}n%vGw&gcwE-^>gO1pi+5}aO>(fFSCKhO!L`t!H8rtfN?$2pwTe#QH ztGp-e00^P`i6Ep_3j2oiL||HS+%J`v>u@)Lh&lBPNHV2pZ>jo2kCp z@Ve~zhcwmG>13;;a)AE9=pWkWvNf#@Rc7R35!2x|6_*Bx+nL5TPR^?gWg9C1jEYO@ znE8-c)sckNbvlK5+v zWFZ-K*bN_CHgeESAcqWLU+!KhjP$J1)g_y#>(J`fhhjK7oHoWazQqjOEz%(vK&okyALu7TqmcLz~;1o#YTp+xXf2p zIjh?Wm%I=VIeOqpTkb`CQ1DnfF-ejte!)ass(50DzCmZe+-|T9!d0ifO?^x20_z~D zimD^ocvn)CQ`&yH)6hrg^dAy9T8wq!^Lp1Bfag({vtOgDe-lp9nrf3=yPB23N04Om zQFf=0!+ewgjzCbaBEyg>TU12?)WS?M6ARM4v4mg}UZ^c5Ne#30Io+G^1;EmG(9s0; zy7v{EXZf23)z_q{_zh_mRQL4ge4&vHyM3Y7b=Ej7QTN*J5(a1aXjUDen=|MZuXGnS z*ef;~zFVPJ7I;O8IVeJju<*G;sfR5(H5X?E_0Yt`XTg0xm(&|#X@+h_f0e7IZDP|1 z$ka?qA(9^;;8)a;*V#E)G#^%0om(OTfrDk-7F_ivYA!&`-Hr;1@fGg^<~SguUCxDU z4Y$Ok^AbjD{*n9x93Tj}z<81+!f1FXJB(f@smcmM#Y^yS#u(fvhN3yt9LSK#DdjRL?VF_5>y#k^VK71KKO$9Orsw@L+0XhOpRfCeu^;o3 z5FhuCY`=Je?U^()7;*6S?AHGE=xRU^P@CvUlr8-K`L6qTYy#2)dRrBX44d|OV8pn} zThx&YXdK=&1N#EI?tkZ+ymPAc=-Boob69o*C#6w-!@j|71Q>Y3%b*?c?@Sr!67FId zBrR_G2JDYq^K)s9pC_$->F?&+;8JpyF-ZbQ#!f#!@_K6HNB_L&EL_#>b&@p88|`kZ zKU^3sZrrkU>5@yg@3`#pV!Uhj6<1DnZrikZgAN`ivq`DtvP!a(E9H|d(_dk-$A(vG znghPo-6nsC*lw#lPhwMs^-Td!ZXvWPcmqUzHHCA^uPoV5HMm)3I%z*;a_jKwl6^Y* zpcr*{*GvoyqHcLy%MDjiu`_s|lJ9>vU)h(+R$^oCjmZ-%p6=yunSScnaQEN}YY}In z!`GE?i~BP*hF2gzJA;x54X>mwO{6mwjtwtE{&xmHrgyP#o@G0!ESRT#?pmb>^&`y1 zkn(`?HgFTKT=9kHdgULS^*d(49E=nVeYNK1| zhE6?Xe4E|yuZkEPC(p-OsNr*66H{VbotQ}!J{K3lo=k)7BQfDGD}Rp%esEy<-*E|M z(Dmj2z$Mtx<^RMb7}DiG;xf(!LfV%y7kltB4MUIgWwLQ$>4Aw@q`hXAr8tR2sn&L z3GjT51bJYP97agfDU|t~et`xRp2$|pSF_Pp*0d|=Zw0AmvngG;&cMBGm1kBJgN`MN z@pB^l4TYfO5{kc{PK(b%h>)B%Kt0inE^DJyF^z1em=DzlPu7cRgzt5fXQsu9yS|1G zZIXjt!;`ZlBT?~5B?ea1SpGb`ti;Z(c48 z<1GQKV7H=5gEJW3R)I-?2g}i!c1(cj=t&!g2-A}FLfVUBajd@=I3A&7KhEy*3h;bm zpFL%f_#AG`GfIkz^Purx(R3j2zolQO`>Xnew13T}Y1GWLDKpMw)*S91oHIUd~s|R z5n*f=kzi~V5nyZ9$>dhb@P_X@4%;+T|G@MyR*T)7(X{x6AK;eoFZ5@-^-v;Dyv6-|!zb z2NQ7oY=GGL<_`4cIuI1?gM(XxE-pgzE1gkf8X$oE2-T zHI$G#Q)^SbDR6ul$v||=*yQ`HES&M{`C6WKxJ6ygA89bZN>uMqG9uI%SA z_Y@kk2w;_0=>>>`UNs2SKw!kIN3VfMi6;V@m^z0xz01d5?e;!skFBf6hv>xz=46(*Q5%J3_n70-zqOj0-LWYV7B6xNNVC zC*iWcGR9D{3L93&yTj!szQaR=WPD}0k%q5V!)i@FrrhzugCsU6M5awtBDDN2m9U{C z+#D^Foe?dVF5uHKj3Av}Hc#5C}e6KX_N)=?LRxSGk$l?SBKt%UP_OvDn+i@?;Or z(-$moW}*SWC8sg>O(u8CU%_NZFt|)Ecg+&vRg?@Ud`oy z?3a6eK0^LAl+Lk~_E9{?Qrb`P982k1iffjVSU$k8#}ipKhI}^KAm3%t`l2VJ2bHof zG4Evl$;$7R-(+F5S^kH_HgQ^2vnx{vU4WlzznpKjtK0&V_w{iv+vQd+uL0nS&5{#z z7{O5VPz`P+vJ=_8QiLnpmnY>ms_zYgKpdjk583@OQTS`v*A6zMDn{mM} zl!t_JBjXs;+erliSeTpT1-x1;Qz-?q4?`~DlRB!x0_R*1yJRS~Uc&A<;&SqgP3BPp z&zRRNoatZNz@(H-0PpefI$6za5iKdwVo!Zv2EN?DkC_Wt$Ak*SEN)o@;M-mn#1}?{ zTu%R#n->O4At1%}xkL-0Duc?RWf05M9o_|llE(I@6`nHb0)sc&g21Id0i}NH=5%pc zko0_}TC*-M1G0EG$x-B($UB72w1l9TE~y2IAr}3z%g^P0cbPtE&>8IPTex$F-)(1` zF@=}*S+M8~F46ZcJANoex-P~>Jn~k}#Z+7Bh->kY( z-)Mr=8rgU(lx^aN??kGVLEm%{AJUWt>+vC5e!6{QSx!aLg!mS{e)yW5_=3-H6#Q`T znOCf=PfLc02(LOyb}YeM;-VO>jPv+ydVeR zE18A8v2SD=SR2*r>yIyv&KG-AH6ymCbHNhM^+cmY0~r+L@N0gS{b;(;qPsnfG120` z^$I;|xzQHgG~F;$rX+qK4f2mO@*T73LD9espd_Q80`|h4!eR-9OFG>oC6B)<&7G^oZi$eu?#~1jYLG)>W6iQU442oejtzjRW zHLO+uQ*79q?Woyy_$>QlYMQ)49Twr)2OQZF8-)y;;M~V+8SYk7{n{M0ifZfXD)yWH z-_AX`E#?ZW$~rCz%R1i8M2lM1F~vGSFkdITR4IC}28dHNr&17HFnHEaY<(Pz%Vtvh zBq3JqhwRc~0*k7LwSRFVtN;j&OV=Eh=1GXvsl)S<5SN4`(OW#|bh9NPq83>N z5kO=-9>oV?Hu}L)Ex6>#NE`AU1ktRpMRb9{pXi6^Q|-gX;am^TeL!0OH+@$9l*~aY z$4k?bh()y|_BtD&G9-)y;vm`h8IY07Ph--Q_T$(Iy4r8%yw3N@Ev!U#P9B#7?J1_Q zj>RHKXI_=2!8=Tloem|zx>(8`;byy2{*!&JN4*Q%o=&IS0L6L?@0JQ>zJ+>L06hmh zLHQAMz=Jj+TwA^HQpUs51TdVb%XqXQw2BHrME3kc3|GgxV5C(Ey?$iubn9t#`fLou zc)@Z#a{moEx>b+oxU0}tKF3|O01cUBM12l2hO$YMVk?$lra`>m>6IYO+08U@!NXVp za&XtOBQ685t_+*a>lDaAtco!n;U^|3sgs_hKm*~zL1?E_?cQ!YGsfOgCV|*l)CL00 z4dG3Mh&9h^XP!dGvA!Tm&1EwaGZ;R9Z%Z1%_nl&#?b%I0u@cHLo%NN$>> z^J9+SBK4?M@2~r+H^d=iK8EH(9=LS2qY?wz$>2GVea?|7G1Jv~aaw0mix5Z$CBs6f zncUV`)y!-Q4AT;_YPL>n0Z)OgOO6F)=eR9nLPXmSnTZcl^#N;;Uln7jSc2R!F;gt1 zO|5s_+lKAGB{hXW)ahQ-K z!Nvsnj<~jzvD1Ocl-iTSdaX{`=MNvpkvvVbIH+%%S#4eyFNeGv!v3CpB9vqIs3sRE zD~{3yLAqhnglt#2JiJEAu;|ae)W)rjRkf~ZHtfX9rN*=lFDYx^3Bh;>^Pcv{BScb7 zby@C;1Uoxc{$VHAr#|fS0mt;PhHgr2V5((GIsgaql4cGcdjoP< zMuDzy>X_h{EfZ7Vp&GNqauaLt1m-a6yu(dZQv#~yRHv`UIa6A7?7dr^Ld?2KoS2Pd zJdKfVWtL{qsX*s zWD0t0W;2kbtzER$EIO6)V6sF=Es_3J9@; zfboj9ZEJtkiXB>s@?Eu!uiGVRi;9R13bv?)L`54l2r4Ko_xJygIoDo$*Ev;55ZkXW zUwxUsYOj zUr-rM6A;RSIWcj#Z=(ikn&iH@hDXbN(=f#P4X`otNl;07CZM%UKoHZBYubr;ETPfQ z^Ak_^ozvFX<+)tIFQq1mcC0;1iZ8@3OY1J?m%he_bSNX(KU%@L#4jl=eu?8w(m@J& zXdr;M1Y5(`x};S;(F5-4)}Q1zsxQr>sV{gm?$mW(61QgGBe?1e3_85YXVjWjCiet} zShfgKNFL@2`okNPN3vDFxY4kU8UlQy9+)+Icw*L33mApjAG#sAUn{ZC+qjzfN~%(7 zU#25zq4`VS>PQm+@aY!S0gKoFApEF2ZnG-(z(iuTX2Ve+tC<6>0 z(Q;!mCoN=i+F!C-NSE`-03|)MbqIvvw!5P z0x9(jh#DOoQZdWoa5?j+!#R+*P9e2)o!6knV)*)06lw^R= zu)#9`2MB~!jNq~SlRtd&ai1oLYx7gQ^JiL9ZIpQ|neF}&iv+YKG-m9_6 zqa$n4ky2I5Zp$Zh-k+C#Rt=s3b`)d78wj&br9}k<=L9G7jn!N8G$Ty(I}Al&z2pxl z5KC%8GRN92@S(2Lpk+~Q8KuF>qPifb#hV93A`sS(8t0L3tYO+vz-rE(ma$4M`pn1T zwvFL1voRcY1spWJb8;&W*2xJ7N9|vlZf)tW=v;sn)Bun4cQn_4t|3!HH&}rnNp*|$ zt%1q<07-~l>4>#9?NtF#3KHQB;6Qi_ve)2+Uo4x#uU%$907IngnT$$Yh0gz}62n6< zg#+m}l#P&~voR1x$N&%!hmN*h@K`ZIbiD!W4?K0 z1FkYV2IY0y9tpmCX zqFL8eQ=cdY>89+H1DWW*WC$(fHJn##>BWV-Sn3RO(hoH1G{M%7BWc&XJ>piU3+=56rABtAmOC*@nu_qh&W^wIjdhH1#_&d`?rp+}i8%)IUWdb$U(d zwNd)8(uYUsBT661X^)-(kGiMIVx9AXLxKf4)$TQ3+`dlJJ6$MJr|F&U9Z6}|uJMkl zkI~znZ028TCqU<4V|+Fg2{Y?7El9$x)3jh?S}t#Ns>fe2bl%tFm+VHm9)H2mN$2rP zjb$_QvuGqV{VWr+s5EI5Tm` zq=&_Aqm(BypE!Ej!GjTwgm{Xkro`hV!(b4%;I7qIxT{4_N{G%j)202|ETG2op=J{2 zv4-Ns2OxCO-56>H_}wJZx3N>QI)Lyrs4z(ZA|XGCG=?N|YbSIh3~I$7T?>P@i8O>k zyVe&~76#oL0X~M$gvaoq$)Y-tL)CL^#iX>S%0td}I66itL>`7t2n7)EQ2&R8irHdfY6>0I(i`89SH)n$)a zVLpo))hhmkzLf~Yp#TJ8p&}|cP_DbQfj(~5*u;vu`f-&!)8S*R9x-L}NgKBSBr!)Ka#R>j& zkUyQ^PpA9iApb*CMc3XRY@_MSH^Yi`0VM{rwJy~WABU>g45}j^i20L=KY-#Yv92Kl zW5RSMV_YCJ1ZQPp*VJpdQDfp~9tA`Moa7I!OllWiA+9$vshy1z)!xXYc7-CM_LQ0I zr)x+vXP@8Xx-WSpG|zDAz?dV2TjSD!G5cyb#Rh!2po&TP0#FnA#Iek}#?8)U<})`& zt;N(&b-B#(k8pMN?G4iFTpjC;z3n-c2-^+F55u93&*Tutg54m2LxPn^xoqF2-T6VggVL%J_<`v*3@?4WH!{wa7*_1n$|(T6T-m{s zN59VdfTLU4|%b~bV0K`^x!UBktoMZq8LG#mE{Z!UZ zyXvQY{WO=K{9$`N{{y>Dvvtk?t-hT=3Y~ixw6r1;`({S?l-p8jRHIU3wVq^P`gkZ3 z*IQp)?s|a4{k)YC-KF$4coO=&a@Zc5VYhoMHX(~oBle&df9**niO9l%NH?W}5EN2P zEfHy`V>1ISQHvy^W=j(5gqVfic`rsE(QN=uM*qvqLTt8B1xd>~9eGK-DX(GT4ocipz3eQw7qDiC<#C&V}Mjtmb znU(52m-ltiy8G(?B}a&xCA@bA7c+U zrQ#@i&06B)3N!{~NZ{hhv{kLO)_>R&++C9krL}bhns>QmTGf3;-@m7M1=^eTSV32_ za5N!-HmBymniQRV>S%F?<}f#p<6$%}2~y2-kcFSQPtWTRsudrF=;6uQZ_*rT(n&D6 zUQ#^0o@TI=!xNak4RmcQ`P2Jn0IJC+Cejlw$PpFhgenBdlFNp7ue2hvOyPDIlp@BI zm>ct51H@D$TjdFXG_E)kwpgiDK+37=olnr6>BBiLucbtSTn#dZ`O%Ce0!TB~NsgeS zNHL-&L%>ba9RXG%+Ne8?i7Dsq{3n|j2s%v+0BcN)iE(UVOsMwd)8%9>hgbB(*nea5 ziRmQ5iJ$3`K{qERJQkafNR!r>n8*>o5Sc4h7*k{xO4_~FCM>WtgE`HHDn8{#GT_cx ziy-01IMqJh|2#^5YIpy+tSwi!L7?DLbg%`f`iIvQD-0bqBW!1`*of_#`#05Jpt@6Y z7HV{?;KSx1)rX%ZM)C)p9MTxCr(%Dry>7}6zim+@)rj&TIhgN=_{o;r6Zqe552MQo(7%`i7$JOG_!Es3Wyd0>XWnQN~{OvudK35j)7R`9e7JtU-Uy-zLA zE1>{dgoqvRWPeptmH;5WtP-E0Xha{L>9mn6?AUf1zhrr~b*lT>Hi9Xou9^hyr$=IK zdYAC3*>HKCrywU!0i$VXF;{8~)F;% z(BR2D)H)0q+4oy!Y%CX@>cg!Zl%s=iCMh(!v2B!%!w=hMk-cY>jZBGx5!w4k**ILF zVnnv}NP||6cQ00OOnQB6pbnx#AUH3ik~7(G;unyeZnhM-r;cCV;`|oK#HX!evDxG4 z0N=&5S*Jt>6p;UAdr?pF?P)y)eulx`D!R{~m?T(i;^2vZ>jVKM?ZEBCWl7a=;z~3P z0ILDCs%NklLp&DA7Om=;XdQ>*tUqAO9^Dm^njn%hG}a+u{WK%^BCB679wLYd`#+Sf zCxdP|sZn1R(DB64Vl&HdxRrR2b>_#X>`vK9E+jBiI`vQF7Byt;k+1T(+@b((=2RgS zX!eAnBDXNu3TL5#84JiTE}0r(i>cr_oR=E1IbSvStqpa^`I1*U-YR(w_Xe-9vUS3_l)t$P6X$jX5U3r}(q|jE zFxi7h!2<#LbUqqJt+n&gyrupryTV2HwQNHT$$9Am`>OCP^QvHDBdb}c;a(U@`Sp51 z=@SDtoRoAb%1e`;6IN5S(u9g2_6Y>UJ}VX@6edlw0h=om8sso zjNzwcWyPYOrMc=4m#Sg^!dCb9rfqm#xVt06>lqC9lGtPoZBCpQ?e!`lFz>Q1r&B0i z)n&9Wpz>3&^bsPBufJGZbY>Ep>rhLi4T6=xidGP4kT_|R8vBA{Y7aL4( ze6hiqG{!k?>w;lAW{%Q|0*}5X<&>s5AxrbJhg2b(Xq+6s5c7&552W4Ach))Q5hHUx z9C9Jjb17Rt&4B=Jl$@@no|}~wyI)EUIKg(rVto$NIaEeK_6#|dfdH54D@Th2%Q9r8 zW+U)4iVwT>9WDyHgL@g09^i-0ImMFdU8pw*=D3BvF-s-=1_oxx+afGJy7^P-tf>bE zAz*2n2{3X7$%p?KOU!Rv;I-`T4{$4|W=C4Z&L@Ne!HJ04;t9OAal44se~qr6J=p6<=H5E_4!a1oCFhvx!`<|PE8(0)p`p}*gEP% zEJ^uz8;+IG9B7LE{Fy@2hl*Iq5FTR*51!C8PQeXqn@Y6~jpv=WJo`hzLHixnS~<4aSoHGejGB)H(Qfa4Ag=s>yl*M@QzhLYLw z(|MD5zmO9xhvY+u)H90)*fm_#bB_f{j=k{B;4) zQq!~YwpAo!ZxjHtezjx60Xn1;vK&IBvEktH#cm^2kR9i&nGALtKV+iGeVEpsLs}jafzXP=ZnHIgB^#J%`k=HAbmz=mBaP!xF5bo=RZY&Tb`}o zGiOa37#N1^!uV_;-iFYk&a37lrJTihzzFQLj+6j-DPp)%;vuTfjsQ9WiKg8@O6xku zi~?zuidhoV_ZwUBW0Ep^Z-Bs)SHM&1;pG@SZM;?UwA8A2np$Ox$?ZB~lNOv*19}`2f6O0+!9Aq>Wu1Ntd+)Y-* zW}GHCKj^PF*@#g``N>8MMEt_?AEhRA?zSYjepL)yMKsVSH{}F;gA>_O6rq4aT=+6g&5Q$M zqD&NRP_X|bg)0Qjm0PMqos#(7T9xqc_ZeEbc?5jrDLQ9uEf+>|=#KWZc2VbE|zmp7_C67xU7t zB7%Z$m2JnC&>3!)ZS8NRyOe`Zx7Q!bzv^8(;HcFQ*-F}FkR(G(gYf3%}toBKO5j8uvmxIHOnr8;h>w??nav_$wO!{w^zKi$(d z;M&X@KGZlPAl+`efMDc{1zH#h=yC)hcY^Nv;t&$5k9JF{WP-#JPz8<;`sIqDlY_8c z#sq9Dmv1h&)ld#;q3Dp{$Y%sJIM`uk4mY&5=p*!qNGnv;e}_eBZH-fd6CZGS218PZOvVcC z)-t4mNZ+tMD%K3}KQ~oi2%+rl48x!$$eJ(lolzZ-oZDJqUi6vie{CpyV=?tUAn)%G z4K0g+J}s`q*YK-8JYq+Luu0S@+kYDj%}k`48xSTn^S@4*Z4&>p*=CaeWl0JUH2GgJ z=G5whEPYNcxJ5uYQ-})ydUr--A4hX$u$GA_ybKgV!#*y!uC*U72CJZo?mfHc*6Nwy zP{plv4<7B@J8VBtnpX~ct0Hn(8)d#;luwFy_C(2`K0LS_dK%)To>fo}q=Px}CcT~& zR{93docHYBjLyrkErvLTuhFX8$Gp8d*j1sG^H6_1rP$R!9=!Kwui)LXl<=AjSHIO7 zT&f^TpgnV84{(i?O9ZRwS7@m8eb-!h+yu zNdy(<3(Jl40wY3Zps#ZBn$j5|a1e_*h|oUDn8p%+?7%S6+!|*9$8A_BcMX>5o%rOS z4Jp}!T#_R6sg`tY`osL1Y!j{dnMQz=Y@{oqGn2FF01SW-f(AXqf0cljFf8_IqW}dXurA5~j1AbY~$?=FT9p?dr`go~!pFaj0QAh^9s=t{cdYC+bJ# z7~&w!ZrF==b&b(f)qVinMFBzAb^z>{5P%N`Sqp_5T}Id7UTff%Miz|Epl8uw(eqT- zuB(}^4imJspoUpC-oVP^3zpQBA4@`D82qu{e}>?g*yv6>5`xtF2Wqy_CbS;LK!vsS z2CIFn^2PF61ZgPD**wZdDxaw z9?sZ8w+f#tx8dgx{nuNsZc>U;%^J)irn^+pQ6QgI^~Sgu*!fI$X5eb!XWMb;$B!O9 zPY-!NqsHw7g~Zu6lx)x9?4HEH@5jQ?P0z@+7(*7+y+;a6&YliQgyIVC3+ZIMPaDyj zM878DN#5prQ5+r`O=*2DOY8XIU^N{V)7b>MDK$GTp(CD-By@VUnTSqM2HF+>WG9EA zFeD;PvV-Hkh>;~y*3WoX>d{UNrP(LOGG2k*?Nm2o+2A{f8_W=T8Ii&7$51Fq$rm-2$YL)PVzYQc*3 zWg|F9eKUvf60`IK+Ekr{IYZ1h1u-vNGS0 zD```#l?4k{rys;Vp_v%o)$J=utmp<=x~!XD9dVKW-`wVc1@!Qz)6vzS!dTR=T$7SYfc^6=q(5fV%Bv} z@){P|<7*ildt5DNY7)TVRsweLd7(>1#9+k4wb1*(Mk}}UkCn9nn8;hsFh*(fsc!w|Vk+m%GbdO#UuSz7sdB z_Max?KV1yAz&M!PtlT~1>tkjF;_TNkqiM|xvsJx(Eu_TH`a&vb#$tNtdWm)dzv)(g ze-nm%QKfaEU(`Y7-e4K#AQ=sCZdHd`)d?Xg-8U8kW<4&;ArM5Cz6?ekmRKl?xIw6CDX(bk$a`CmB$cCCMqBUTuJc7Taxl}HJ$~}ldx10ndAH|!xGm3X zrYY$zOnSbI5Xy6jGqAESIMC)Q0#uC=+ep;-yo*GQ_1yj&wF^}$dE0RH&rG>uc8Rj^ z{N5$JA+~)hIA-adgGcC{yyFd%ZzBh7S}N;^9i|>zGINluEH#;^57+PcWGyO|h9brr zK0xKNbbDQX(;2Y7G5aBq$s_=RgFWx7C&kKe758bOs;4EHn`B(V(>gWO5Ey@Ft7kbAG~arsd#U!Q<`9mQ+v z_Hqk2%6(s36r6T&5$1iZEJ34#vfMftfOdny4n7^g{QANE%N;^ORX)BPWF%yEm(QZ&QBcgjKl}>_ml5UeZD=QXF_SI{)_btndoN?)@l}Tkd*L!dwGd|264gtKA|io zsggydRUWLb?7O(W9Q**6BgdEf%VBzAVacSCAP%n)$J(j++Gz;}#kQk!{VSMrE=TKU zK5mw^Q3_8r|2+M!Fe@4OE^Ba$?*&YE0#hbJbq;Rm$!fWy9B3M(q~%hm<$zjC0Xc&a z%M)XpV0nUsW+9ED27g>fKVof}Ua9 zh<;{yz{|+rEBnvy&GRN$o>sD8c|C@%cW@*IS-1IkSzcZuVYDC?#6iO&mbaq0s^?XG zueqE?RdYFwx5k8(#PSAAEVB>w?Sx@K;MIb(Tt&NQiG$*pZgZCYlgpBo5_Yd8aInmp z3j6KoE|XGQ)2t=~$x&ru$~*%YlxR(Pe9~FZe8=D3jfqU3Q>#cbSGQ8#<|P?9hi%tk zU#@Oc^E?ddD#Df0+w`5@(Q?^44oZ?wz>;Yu?#23+zBpS}G~NIz*99M$s6o~&DxrW1 zaw`c@o>7?v;_c5vdFELgva%F+ZW|8W*{R_^E8-gXa)~AHw&DJ?NUYv~?$#0OnFps= zjni1q)z#f3F#SSmTJL4a&;R&f6#^@FVWuUGAa%y%q!H9(vrY16a zWI<9pG!m8?BIs}vU{_k8)@yplP;>zVt`+M8t*6iqNd&}6|_&O6X#rrd{3 zO;j;cu8Jx;CHN$g5vmxV%DNfkVUiTpr=&-)OS|18)zAleFyMcP2lgx1de6f>xI(Yi@{D7^b5^tYWt)@5hqiJK5AG!&J^X! zgGZ+^!TSt~Yye2hSS#a>s#pW;E4>#rQmomkTpz{xKQF|6U;fni(>0xC#uH6;cybl8Ft^7$8y||p~E$gbz zk39vN>wBZ(o~J_cS}dJ<&r=X{X7VGqKIjqcq+>}0&e}hWQ26juv_s=k?>OXGLs{71 zk{{iEo&}dE-Y|ViU6kpwK4$g$BDP0n_+cX@nLOi{O>L(!s$aru@btjo((Y&xi|PC9 z|Nno3KzZrXw-k z`ZGS~nd{Z(KI?|hd(Ly8_xu}Q@WL-RS-j|9eBr;m>0f=(7k|l@AHVsfFMIjd-g4`` z#n;{T^{*+u;@`aZE5GWiUvl(ozP0$*U;1UoKL7vvmg3s$URON(`fs@X8^7tB@3`}> zyI)zns(5vAPjO%I`r<_Kiq{rzD4u%gqH^%W;l9iFA2@vRC0DGqiuTm>%xq_Vq01$> zEWcPVzo)3~6_$TWYndbjs~57v2D2No0Bh@NT^{B&eUjxdn_Xx zbAV0z4Mp{>YW(kMd`I=E;+EbUi|Vz?`8#qJN;amytEgV5j8BkZ5mIU*da0x%5F*>+ zBwvCDxoyd&On>fx)+(mI*0A=*N`(k_pziLzy1SHi$8VQtn1(Q#+D&Klg}r}UEPj{4 zh@ip>U4NXmC6Mz{ZT05CS;%qI;R`HqI!dd{x{^9O33&&W&E`=#;63$0DBUV zj9RhL*R%j^GN_DM;1O0)!KhYPnqJ3kJf!?oyeyj=2QAY$`sQ`6#%0L9D>(8Wi6F43VyK4KWYpWSb zOhPS~*9yA?z-XbaU*EX9dE)XLHH7GCj)IWxI{LRrs#vRvXZP+caGJPu@vq#lsaIm9 zLzuU@v&5qu#-NKogw3q7| zdZRBjAU3fW(Ef7Q^E7~I2JjIEfI8)~TJ+w+BeK}88p)lIVx#t)$kRdMVu@lGGZpBa zIESD}zmjt-RQm|x3aOKvt|#@EG=d8+JYkO1Uyxepx4EzV(#1dLS>ot$fa?n!aYfD{ zJju;uRhIp0d#~quB}#snl9)X(v=Q_HZNmF8AQ4j$&$t5JBK$Fq^5$E0E?;+z4_R!GvCelTW;IJwpeFWp)I zMX^+w9qBAWxasalXA#0p*F5qJT>W-?>Fscrmg&-;xJ&p-xl5c!Xmm*@5_+Y3vKx6@ z9#t)jbMDEor+ueVnjq-~07 zeL|)GfYLMCi%re%zw3%l zq0EeR>6PM-|Kof$%~U6lFt7=v8egTaeuuBn*#f>XzLTM_#g z>fcU*_fi0_rR$X5LHf7-0S!p)6~|?^ykn4NL$d;HNzZ0BcJjq<@x}No>}Vh#lYvxl zUGG(#wW08PDBKyJi`Nv@-v}u0=9M;pXj%TUk`$iZyL<624M4ezC)_nmZ~5`g(IX?A zsdiJ#J6#KS2@3L${pP{`>H=Q;Ixkw~!BFinL&C(RhMp*5ocs^#4^K%PDr~!q?f6Vm z%yQ=o^{A)ZPyta2&wU@-NlE7Q6x{&8z zai=d1W|KS8X@K{p>Q6VY%CO3Z@I*(_;yA|uwL-;calk{a8>{EtO~3NZzaR6txwE>6 zPQG28l!=779&e;-)lT_$RwYG$Sw+Q{wHS34@3hIK8t~?qJW@<9t|W1>bM$ai`_n`h z80Ur8_U@>LwDF6yffro0kLO?D`J!uk-(2k{@ir2~L95W(7k{2-j&gldbuo$4BskY& zt^U9A93-*-_~0Oqc-9W~rL0UPNDsUnl8cuG03YmK{6-myFVadtVF~DZ;#CAjaDp}a zLao_OAniF2xf9r6x3WIyYxXFU1+O%evR>Bi-&U>B*PnC$XqMW5@tfO&PPtc$B3o)F zis~RmewHFa4ExrchPV-aB&1^}%|6=7MT|*K0?k}j+2kaUa;d6?lyVwjQ9e|(@q41< zpP>g{aoTs}}#zps}+%}Z=>(D`$F#ujPS=KuHo;|V$tNf6VXr`j=YOCc=6SY9&W4J zS|E)1H|Ugi_aX!Is5M5H02Q;wCKEXL5M84RnaD}U0Gy^eSsZf{!syT>t9j;(X}q&K zOfTQ6d5}vD*wH#Ve+@1W^he0mqM(+0Jp&1x!G)tU+#fTvzlJ$4FOlV12U~x+FGi9W z0@{m6LHkn*zx%iQbfSuXHimX?ifUuv{jV3&{9++l!%ikzwW!9vy3uGagsz+DM0Vh1 zOFujC_L9(rTzhAA1!MYA#d{=c1b^Q=^X)!v&^M7_T*as@^8N9Q43R!O^YddWhw@7x=cIe$- z=ft+^sl0xG*J=Ai8;5Kg-&#G5{QpG$HqJ%Bp%P(#bMHO|^v&&$BsH|!6b)r=X# z$8h$$_SZNo_2P74{Q{AjZoE_7_+EE|Z`_Tu6^zt+?1`Hi1jI81{^y`Z&?8jgJzUeZ z6PfCr$UK1rpQ4NG3X;-vVFpbPEhK^Gnn9EmRfhPwRk>GBTd?OjTI zkNR)QldzEpw+e$>s~Hx9QDy@CK3O3#wmG>i^b9cw~Qp*nOM?fi2V|(|gI{S7%DV#__!Bm-NxM zsS4pHCnB!vy}bHw%6x-rBJp-5ULPgc5xYiB1q#Sht{h9OQ=m{^tOCQw_V$;eINd#h(E8 zAoBW@_Iy{cAj_NL3TZ4r5VGC=?cimF%Q3T#;t z97GKO6UJVT!b@X7~c*yi0w zFVwWQ3*d$X-~^1p@_`djx;>Xj(03Tasv#bHVQ27#HMTO%7O+ulL!QP)(TBV4#BQ#k zag^Zet3OeH@1eh(DIf|p35h0}wSjziW5L|1m6C>H!Q4e1X~C?y2GuvGWz&`Ow(3vS z#;eqZ+{_nCsuk;T>~0A;QT25(BSQ;}w^e_pk6y_~{ZayX7VU(8KxLoAo+Rys;7HcE z$cS{luOVJy=u>&_90GB*;b{;aC^sGGImXxTF5YI*xB8#z<=qnOvS7P2(}l%1L{G_6 zbeg9P{LZp)n}t5q>n2dwY-hy3`s)bOPD|+9oDQn~T+eqV+4|P%FO<9k^{HG=jkDaR zY6i7{i5%6eI!Jc8%>8A_Pp?;N5p>iWR4R*c;Lt&#s43D3Cc_l#1So28iUj|>;UR*Q zc+UUgJiq7|HwUV@SLld`6o=l?#Y#MG>UjSfs$bSn5D3KDj({*SJdH)vY_aXz*a@ae z?*#wBf$Av=NjTaPuJ?w&V`sI;uio@z7RdeHZ}xui%e$4VFfS7izjX1X64ftVyqSxB z`8kfUlb^4NpO?hXS9hz|=!>t4`coFw(rB zYb(o*@$>xn`TY1{osco(xm}wsp3|-VTGf3XoA~-Au)OsA>${cI?`M09eDS*2Fu#`L z7Gypvem*yTj>b4oWcZ~EPn z`nj5ZFX)EIwYwVv(XMXwZhgNqz2DJ|ReO6%Z%e;hyVXZk4wsid(CMxZ)-wku>T(|l=r8y;StLRL(`d>;v3Vnb zbK%HS?e+MVijAw|+OD?v8Fk1eJr;^2f698OQ-u^~;_p7*M`?9bZW*Q68w1Fa2C%5c zwTZUB&7rrTBuq<6CmI?a@f_x3iu50bNCK3$Zo;=3`k|L{v7WWci=f|9vmr_QYhvh8 z0|Lj?5Wva3H3{+xvgUi66cV6+y=-dKL&aZ6cp&#RZfmZgn8H+bG|U(y}HmMd0{@KgA^ zIa4TSSn+dJc$XV7W<#MbqIuy&kSG8rf31BJw+0`5_*Z}8-LHP<`y*H!-vFko+c$yT zDj?#l2gERn2&F1Rm?kc_Fx70q*L>1KL{wB8aV4ngCI$nYx=D4vXrLntAfXc1mnk~p zI*?R4V)CWvi1Q`70H!~L!cZZ)W2DYBhf2m;`z7jzjejx3 zVb>oBD9r!0Dsm%2kw4`W3rRW-@l!fJhsXF6qwBF8x{(f1^hH8)^~osMt_Vv&i~}8q z!kmx$H=@pzSb2M(qrmDN>zQkJPa)Jo0iP9An1MRNB?|gl`#dak^bZOe;~iFB;;!`UpHDnF9bqu_dTOa#|QJvV{Rr_c-N4VY=%U=aHQqBjPn zHBl=AqvqffECic^BeKOJMRy?KT`V(Nx}Yy!YI7ZUyMTxq$S97h4;WA?*tGayo55;n zalH~PetE9w4*Oa{<(41xT;c5Q<2tPK#LhJf#a=^c#yS6Uo%e34T3L|5>yn1{;fOjW4X5 z;^~SSE%Y|ttp_=L@Gt)TPsely=EPD-3yBI6?og?R(7z&(aX~-p13>^;Ko=256N*>F zo5Nhf;M<9DsF73yZciiYvvTQ31idw*? zWbO*civ*G?6_`>+|SvwA#H3%_estV9zJFP{v}`aP>M zN_LV_@_SdcGM^Q-FooCA8&Cu`E$#@@Hk*d_#}x|he)eGntun{~d;v!vi?XUgzzOLz2x9g2_ihB@{q^E5ZcF|qr`8>G%u ziAIqxiW#q%N~6irdvP2liO3J!5(4qWas#}ic}2O9be)xGkD7&a&NBH~ON^{`68*;F zSZZagZB6;Qm!I3_yD*1ZwC?AWcn1lA?KGqFBa6VkYq;7!Ez%N1<)t#-5~zx&}w@m*WrvGB$wPDGYSk@=>Pe-TMF zChP-?{e93pq5cNSpXG0kzj^)^_><1G$e#kYE%CR^pH2a@pBzW4`Az#Ncrdkmpa_4+ z!EXL8;7?J!_VBltzYF=hh(9KKFyL><-#-5K^LK#1i{U2*)loPf9V(}9TpdpLZ+BPA zi-+9H__g-ev_up@1tHp=eXHz|2S(&PFd_lJ&SPfUk1Phl;B#^@4Wo$;iuO9q3)ea? zhpF7j8Ep1MCCY+mhzKo=JCauMrEgUi`RS5d@U_0=R?^Q@`j%UPY75Vdy4Zyi#Xct$ zo2A(Ajf(A^DE5q0Y>r~@9~Ij(QS9ld*gVC4cT{Y3qS(_?F^~vDoL_1P7fcj;YAPlc z`8%UxyC;f0B^6tw7+V4vAiE}t9ZAKsGx^?8v7Hmeu1Up~DE8Zh2h`AGZ{9}G|RBUCU z*cGXmHWyglGTizT#SW)p+P(RWQL*KTVwb04J1F+fQL&|oVoyxPc2exuN5y&*#SW!n zn6B8)_e)`jm9yap$uCRAo;)^lkjtc{!$rm)?9_%D_E}jTjKGrd30du z7CSWf{zvZL^0*X_+8FD_<0p7rjK{y@u^W$n&*MToev-%ec>G^H&c)+D@HiWfpW<;w zk5dAw#IFH@wd^@X<&&g1?Z8wpkI2Rd_&)0Qm3p3v~Zpzkv3W`US54OTPg1AM^`EKc!#5c>@1N!Sa>* z1(2`OFHpQkzku-7`UQTk(J#QeSHD2+Tl5RqPU;t!eXD)}*lYC*v|guQKy{yffz#{t z3y|KRUm)~t{B9_M{XY#!$inbuVpK>05~VsafdIg9QS4K@&o7Ea9buQfzZct_AG=Bi zVSjAa*Qxn(XWblBAU+mqXAM0G15-(=l(Z#75NZl(ZFXQmkdWEhCTT?7horc!JIp{9 zJX$!w)@g*`R&`lUORLAmg!I2=vD2oDQu2=Ug;67D3sb6JqD*KDbc!!YZrqzI8@+jY zZY}i&HaFfK){B(U?9Vyte^H};#GAT4SWk-`vr&e}tJ}^4Aklz_D^RJ8{#FeX$4$c% zl~Tht4FPR7@RJqZz}IoDkiMM+6!}Is<-)^loT1JhRnv5~&CA?g@5I}T;Je2=f+$*U ziICq$Zk77lxU~q~Qw2Z)=2~ZM_Gc8BotPb%D-JE8LuNYwbAukq)QZW*wMC&vw#M|x z+<|pk5+2w}G~Tjz+C1Q7X#hZB1X~-zeG+EK%on>^1}A0*EgFL6^$aQ*!3^DG1oL*5 zj9_eMVJNsB2w0aKH-a$_v8nzpqK318{_@YHy?xNd( zF<;r^jvtFo>7_zfj@MxRl505khe<^a1B>-Hx=pRpzR$9-9BZ!wdsjT6g13^1X7oC$ zsZj6g+YKp%p~kEu4XWAg&>rj7qZRRx@qw>j(>a#Az`%>@O{@KvjE#T2`oTT$*F203 zzDEOVpK~bKogtxU#zZBMkc43G5TdTj2XBhuV1P~dE94s=&R8$R8%s$RpC?$?FN0CLiV=yZCBnEMPCP~czYV<`?VItJrzO>uO8}Ad_A}=EU zL=kK3S=O4`e)B`qojLC7YwYVVIbfHT-oDVOy)N8fOIbf`>hcP!hf~}=g!}ibOit`% z@zrd_K`!qo$!dTJl(B^AkhDX=D^RHG#HiLE&Odl`@vh;5W1)~;E~IEEQN#;^f^Bw* zhJvfc)Btx3-w}hDSF$b0dZTX24CmY1G%+@{$OO~ttP9P?MiS$p_!O4bG>$ojV5=F^ zVVe%&m~_+MoOU%F*VJ8gl$MUWUiWLJ;+y_HdWS;_XS6t}%CZA0QMMTbX^l-JY#3U`gbil%+&_#fPZSpYm(kJSW`B=M(5(o%q zH7sOYc3%{dnQGN^R3a|6plfuQ>6i>UG%MK~+o%G(%{!D!^q7z8YjW6DLdeWBII;0n zySiazgbtWrO|uGhf4vjtW}>>K{l}+jc$o+m$N*ZxoNBMMSh@9-BwIUBo2_S4yRl-U<3M7H>-c_@M7T7 zlcRYdk?Ji2UsPVJ!dF0p=$jZxcgE61|1SAT2;iWceKn;(a^#{pxLH&j#+Bl^1N79g zjL~X^y+pdKF|dp5>q^SvsjY(6_)#b5QS5PV){n`4rL^}pyfa;}GYuaX8(^bUo2Y4z z0J#QyW0!67K~B@YHkn6-x_`KBY9?J7iu`c8mLC}SDVnNI$#+2W+SU&q;u^n!FY=kX zS#v2oVq@0(h^;)IkM`Fx5y!cJ{2`jee|+{iy&Y}bS(fHnQ|(>5re`|LL7}Ord!%94 z{V-4y5=2Lg4yuiF0I-7T)pF|A>XrY{xkWg&Baf;-EQ_n!G|7VZ0%ad;zo{6oc?+U5 zJyDE@WD9pT#ATQO^qj3V=aiMBIWdmedteYe5lCA0*pB?}7~SIbbBqD5D(k0^Lm-WH zXarKpqzJDD5B@z7nR0q*szsO^Yc`zI*+Nm7|bui zV;%*V$GXREJn$vVXzrd!Xj)(`uit+zRg|P@oNnVKK^XqCm=~2Ji^&tLiY* zTQ=#gcO}y-69vwo(|oW=X?X)MF6ZuQmKFF?vrIIeAb_iBBz0Tf7`jnStZ)QPFl&YekHuhGfqg!WnW3&UGsS?gsb>Ky_KnU0RLYKzrKZk8E9}xt1265B zZh|Vqc5`@KOgw=s?H*cg-JgX|qd!{o>5qcFLA6t7LrK1p8GnQSiC#CMtA*Sv{GR4R z_+lAr%-+O8wlR%@O$61~45DPl41O9TM9%XNIRcDtZo;FfssxKlVUg@QSayIhL~_w{ zR<)lNG@@0-PBaX7BNStsQ>qGbuH=7_36!PByuljpPz0vZJ03@N34JFOC%xk_dxV1R zn%rwTCnPvz^%@?TcrS8U=EC?Uhn7w)KgrD**jh}m%BD4~>*|zuytEX%>JwD0Nuin6 zkMfKXwAT6o2t^qWcrCcRI0ey&EWf{yVMdC#7KaWtXxHNmctY--D}D*ylJIh*joWS= zAbLP{Vq#-hE)t&8-+4(GhDZ+r&B2LjBh;pKiOsN}Ovi!(+pSrGRRLP0K8?_fziXy1 z(0Ij*(E-%qY`{-%%<=Tbi{5Y{-W)N!C4CyuB!M&g@=mJy8&wB)KPyX6PCRuqWu>dG zkwo7du?b7Z_ol^-Z%sIhx{7~znnR3Q8QJP-t_N_!BN@wg_mxlg6I#$zD<(fzIzIZ% z#y%RGhGfvixP|l#ry(o^c$l|XGculPkR@P&w|6Q>%SUmRf>_D%OzK2{u|_B5KoYF7 z%_@MC1eG-G5lEFWiH!J_ohsVv)nT+aTh)-!UjACi_2H7un4BMAmjmaZ{tJ|Se=#Jm zncRYw*z+X-`4mbYo4<&jt?Ijr<5!`)wMEA#}{=(thD$UNre|eZ!05&}=K+UuxFW?wRSA9ZPM_^d!v9KCOs~Y{&uO)yi z(SeZi)Z;FyFwwZhB@89Jm;@8%`h7Nvvdstia9(E@i+O&xJlh1HA!R z)t|-DIXUIR8;CJgZ5z*JjgS{Fn+0w2>!^Y40LG^+gJ$j;<0AJm!7tDk4+soKz)m{z za8bVXGjxJzH0ngZUM3=o9ss;VM3F`FBRf=N(KgT>D@DT#Ww&nC2yzV<>(Ci#?YbgR zhG)^hLN28=M3Qf%_j~x(sCm(B9P;Ckn9}8n~Qan4tQm(;`$xmxC9r`H~i1LKAsmIxtUL@Oh_ycd4wXJMGJy*kKmf~2{Qym@`7xgaiqyMcuKl5@j6&yOSHY}A~Xw(7WA%!VM@G!3V7`{K;vsr+wJ5rvxNe6RDuKP5X!WA73Y~?YGJqLWew%uQX`zmyM9&2) zhpEn;NoOUDM|8%=pU&z`7Nf^IGxd+s8N^*PEKwG0;TWUTT7%5|QgVb4I)u_BlLOJN z*o6h7imL5(!Jcxq8b2oC(S7BAqR{|(p-_f9 ziam0Rv|hM~_jNY9=Ic$$H5_B3RWo;?j2q-Re<2I<+;AQ5ZhX;?{bn31s% zJ24Rqb-J9z6{SK|k(nG<^>X%x;S#s73ITb)lwaP)#(`chp`mSg@aRnA(pD8$LAV~5 zwjyp8NJ|~~pG1_nnia20OdF|AyM@mTmZ)AkG&8piw`#ve8!Jm-1YRioV{1Zsw%vSH zr7R;Zq3s;1PXR>i2)@KV!xkngw}x!0rt$ThP8TrBHerIv*wzuYWt@^AT8k$N$5RVE z9bsF>DWBBKIA!OFy!zPBBgf2`0#hW0VqH6KI%jGUZaMO$2^w_?3l3vfXh+-HaYjw? z9W|A^6p*l0eS#|F>8C8tFUXrukL-rXV^6ZAPc>w+;}We*&x6%+X0Qc3-GUhFlUsv5 zk`3p$zU=~lQ;V4zh!)_zC9&Zv-^=8Mz_mmD7m|yEO1mMGLirbwJCaFBBw-fj-0}Ez zZx=Es=LZh8o<1nm^bubP&FTlY!Br`*fXsyKBXbeq&FqC7+L$jd%9N@y;P66uLC(pH zLyL~6nmPxTeWUZrqS9eK$5Dz}_ti6<*}-ssJ>T#{FUQBI^{s6@#5i37H+XA%V2+#+ z*zeSziy4FVsD=8-0EhhVQGnbpFg-n^4UQY?p8>kln({mY510Ap?;5W zJQhN1NsFExK@dA&D!ScJGMP>ke2ib?L=t}eOxNbhIdzWvE^YhdE6H6G$4(Ms1kx%T z>wjX?Bc>>+$>!c zeKzgsQPH9W<0LY4$3zCiVD*4^O^G2>qNgb&hI&dSrV!*puH}HrBZVq}`yfiH&vUklbD|SY2*wQ%bIMB)kA_G@MD;>1Etl_L z`Y~>yk#dzelG>tVz(pycjQGbn$})xZMo1!LiM(E02mb3V@n2m4qb*h)kj!`TGO7Ha z&{F>uQh+%QAA^4M|Cbo!#V|4V3svm|FGaeyz>W;PZJ!*j-3Z%WD+})BM9`RPufsa# zbZsxzLLR1$SD$msgQ-{ts8E!97G?FJLcKcLdf|hEHKthfz{hJxi+hJ_`ng9x<=S0X zMbtX?p@E!Y@bu`JeEEf|gEitWsj^GdmEuN3b?qnr^XpeO&}*ouJS1V00;f*jw8r z%HS;lQ8xB;#zK5JLufak6#FSV+S8q#w{pqiak2;q(ByDJyZo6Qk5apw01sZj8r`|N zllsw}U2s3nJx%wnJ-&Wuns)mts;$-QR;%f9k42QBrwZ@p_5;`Uc9nZjxp!$Y&)tbv z@2@mrj|*4WolnQfmb0ZnP!}p86L&^Rqa?*zL6Lx1>m-s3>*<%AIl_>n+%b_@j*~?J zbeuc+09FN@OyQF?;$7FnML;4(|9UwKfWadqIVY)n`~2gd11_vPA9UaLI8jYg%r-mx z$~@>C$o!p;6N!Y(Y_^|o0Kf8S41miKjacY*NT4lEiue@=QQMMhIp1`!^Hx8`3*_f+ z;uYJO%JO3I3KaxH%Ek1CS}un_JguWWGEnrxzuR3q-Bg? zF@nKp>>G`lZsgHjSmvQ!ROWGA&=^#JzeC`w-v30&ebqZG{#Bn0Tln`LcIJIg^Uo)*v}hQYBWi>)=v)v^lC*iX zY{Q=2Of0@6(b_Npk=40{%IEmmd=rR}KzJE4kbYtLGV1K=-yo}|{ADFrS%;TsB2{Is z2jR-oj$!fyIN$?%#QvPW*T$3l_Z)1wC)=*(p=Hs_V76y821Ys!jE%vJ7-?WqSo_FS-a2!Q zFlmr0Opns4v!HXdB`w?w+1ZliM=p7kTv_9ae;I4Wu7Q9v$hu*y%*F@dRP)$I5$s_= z-#$*W{i=F3vP{3aYiQN2P47|uanO4eN?otT%2E&Fl1&Hj$+^ccfXChSPVV|qoCQ+1 zqt^wRF%WKMzOaYd`IcZm8NEifkGFW2jj^J-YOnvs)zOI8way8A6BBi&s9vq3ety~9 z{v6YgV*Aqw7zDk+<`SncnFf=4wy77g55ZHa!tpC?6Jor%AI-g`v-=V1T)mM28pJlN zWgWfLCZ#zh@@)#T`mot<4UrFTo$lZ(QXh#>Y`+#q5nI)#j3w#dlm!6b00E3&o8rl#j_>ZZI{q#AV5||+;_$??b+p0IM-;6Y^c4g{|tR{eb^({2eY)n_FPM6J|wyf3P@2GL{-zTkmx%# zXy*w*!c+hm^uO>X^DH4`qP5bSW+uSV>47kNBTPcxem&>mD6D8ae7-%01Yqjs$VSH1 zfcdybN}BJ5dW(i?Evw#G7CQREnZg#MMA*u^Up@w!>+~_uynX1?D|}7JMty^*tn zplImB8JTdg@{*yIggqNf`7#P8nn4S)0bS9;<_x)3RhI3qzPbNxMfII){pTWs)sukU zv7SBz4!{^Y%-YL_h{klhd&6qna(un~J=WUm-YRpbr6pu4-FK`d%d)#p*bE9Pla)F$ z8Lfs~!;NwXnE4EuAg@mmGxISrvSvt(H1*6Wh#A$GuRH;AUT;ionkk(}8DT*}a^{v} zw!(}X86~~2-(E{YrhV`4IsrO+f|Sq<-Y7M3UV0Y(M*_Lf$y1RgrYrlAJi9a%mVswu zD&7uSFK8YXe5-Xw)-K7K4{!*DpnBk#<_B+bzN=&F5#A612Pqkmh%dwYj}Uu8O{gYu zE8b{YR70PcT0qR?4LfSUjyb`HOmj1IEV&jtih#~#jTH$m4^!i5x~TVYmDcslpyxQv z9%Pcv6k24MtG+ud8e=?sL=`o@XP(44D#v!zIEA8e8)2*@uT+xX!xDd5YBsZk32cNP zFi!CU`Xu!0Q-R0kLv2PMXmbHsdo<&LQ;_&l6FH2dQ1Ma&kIE%uguuqkPVvq&I}edD z-8vsE3@_U2CXpJwGM%P@>L6vk9h4DvuBLNFni)Y8?@aMN>)jHOGeh13R$_#Aq9h?) zJvi~L8smE;Heh1O_pm)S7}4RN;9LrqWEr_M`Dzv9@?1PiA$AiYGVDP+O-#`CLfJQM z3*t;GYk&fOK@w;|^gfPJlgD+Gkc$W)8iW*qtWFxjx7yxVQ5F5qrS=}}xf;(cff*;) zX(5H!CxmFQHoa@eQ+(83!YH>J2u7`N3msI{Dg>*WseA5b=X0~1lawuIVdG}o0RHS| zO|>`Trx}&F**G|^akk0jOhB|P*k(Y%NofiRD}zW~E!zWa0%GmftOQt8pdX9h9B<)S z6ClVG)fjLb(MyW%vL;|jwIjzxpu6fvm#Qa^h1(wGG~#wME6q#PUpLcUzPlr@V4YrX zBj>f*3yhiTm}zl_?->3){Jeyaf{(BZWFg8YUfY_xb+(%2Z7)n~&K)xh7)M{d#rDrw+i($rZ%v$sKnkb_WI@kAn;dPNzVhICbivl7oz z7188jSjMa-pJ3^AzhyQ_u8fKAxuUt_A(642u4r}1mx4}Q8QZxA3k?t1bJv0$X#|gS zpHrk^rb~@_j)7gGWguFW0vkQC3uCw9*oKBBpiwF3X4CQ+S=75+vzExB>OPz-c0V{~ zc#!=lM!i@wrCxnO?o#cg=yL1VbdJ#twJ=;!-=pf`7ClFu!>utUAPPb|ffB2{xze9R zgZdmmD{BlyFtD^?&6pIkt|hMnmfy_m99Yd#kl)Zo0=mZIEclktsN(~(X#22}klymi zT0u%&NsP?BVHz~)z&7B>^47kp{SqAmEr$2%BHFw^J_9}DE%!LcH6fP- z%;OpIqik32#~A&Msz841!drWy)Ajq26rglYEw?(tZ5@;4y(o&KNv&YS_~@t*Cze}D zPH9*8Y^HMU>V7{bAV~K+S^$JM9qB)@)%~@V>3P^df#TN|1WpA6Tsv}dyE=hwou+iO zxMXTKJ+l-gIfba<%1QW996n}1Q=*3!?MT~(9z+^6smH8S$2$l^JV5Vw%>GpIPLfP| z$75c;jVmXxw4cG;V-axJ4aC;6JY3W>J|ueX1rY?M(T7Hw#t1qzdQZm?2b>nhpW%pp zkOn^|XtF9T1m`F(PJ;}i!SEhz&K`&EBy?Jq=0C1MAeWFkcJ9pwq-RT=e2dU7aqv3M zGx}6%q5hm`qtv9iV8S}*n=s}{6UIsEG+`i?CXbmAz2Rr~JcQbMdJ;xxdPXC(ok^}1 z_4H)5r=FgL^iFJ2ln>~e(?j!`27{HIxq3fXnRC$?;M6fWA&#&WLZHXb#FOYDo`e;fb(mv_>>IS@yZ5kWl#mo>3du^0iJ^T+OO-WQ?gK-r zl^8YU6;+IT2eNa0}BV0kFZU>jn6qZ*N0SNXCwj>ti7x1j9cv0IeGWM`E@Cg5ycmuV8$%(Vn zl>sa9C!vT=4nnTo{tx5rxeM@Ylc%qUsbo<-1(?*>?)%BiV)-O=bZmz665ag(4xe+*N8TV zB=X&zYF4{X5?1+-_tlArfURd|H#7QQu0k{8qSYIJvzVX1d+IJ3)mQvGeb+(BSZ9_) z;VLX;g>=Q9w@ zs54BUGEZqD-%99rFlr=FD+7!gjYk<^RE=}Of-`jVtpH*Iqq0hY_xNzO#wdbal(RK7 zr%GZ+dJ5-yS0#)xNC7`WZxVdZF-J^I%#l?UApn?0W|||*yrlpfR4=j-tVLYn`J!IG z`}F1rO=)tDJTGaEY~f%Tjyd8?PqdrnXl%~TKS%GHoFip0N2Bp5gE^|%K%S#_39{of zg@vI(Qy}*QMVWOXy*ff~ChafX-$6M(@1LkH)4ZicyWDZUR+f! z0oPo2Ihdin)zk872+vl}d|vOMAOxWu2^m(v;&FtSdUseSuL6)fW{moJT~me46E?bR_R&wzzVN7r9Sq7c)qPRzyaqq1`*Nmd44A_0JLyK1 zvOpN||DRmSd&7`B*$s5NX#5R>(4z3m6CW^c;oxsfWCN7JZ6-L?_dCf=#zNCFptoL z9BX!2+sKDyM&pGB_)Y)|K9!;eFE|$`I01Cb37CF!0_NMCV0+>OI}#_jMEP)ny@?a- zQyNa7!6te2;5aWh0q{Q^USLiT3$8e=p3DU)AfFXwLV;U0z(TL%R-|(1uL%f5|Jm0+I z@zOL|giT0K%Qd|ZY97$!8$tWS{bJ&)zLk7$w&M4wsEIcy>kUvhg0?@ubrAM4IkDxpW(mW~f(|Za>n1<*L$si!{vP z>eBsAEJ1^?xW})>y+=Y&IG9$5L3y|a$`v)Bo|K-}$|t9%J>`|@X=iy=dYUS)PET%3 z+7NN;gUEv>EFPN&Bo4q@W!7`}c={5Qb;erG@S@EpwbO@}XEJJ2gqI64YKz4%)iE-W zm@LI-@Sw$7beZ-t3D+;mKeLPu?W+Jo6V$in3pHyGEimQNNM`v#Q7NCc8fLOn*pE+g zf9os(=D44_<;}!#scT%52|dPYRT76R#G z4>^iZS8ess5~I6Z>tCIb{*~nKhHQ_9+OksLxtSi-O1*eF^=Sy&hR88k)r1(0<$4*= z5+85qUZbU2?;xto<9V!&?EVf8+|a$o#N|_gvk0%?W@z)%=HIcA6L;57=w2%my4M90 zy4Tio>t3f8EG}$oE}3M}>+Q9#JmV#ce(xRaCe)S$wMhms|>1(quh>1P>Mn4iNXD z){iWOvi)C{v`Qb6M9QjtRqIEW2CPSyOM+#6I@J0>OR!fJKfR)7-88xkZ4?)P+7=rRW1m!n|pnMNO`HdkcpCQcF9aIKG z$hP_D0X^m{LsDZuMhQ&n*o81p)u$QVZSka!%XGw?JTmjN;$xCL-W5$u9V}7>%Akqq zu?(7+sWaXhpKKe;;FIlR8GN!gX9!zFOz(2*JcEC4ohmObw^#%d*-&O*P?zJVm~j@a2SImL%<0$ zT~}wQmQU6CdBjOA{}v~`te{w$Y*8#BTPv3E0V|e}sl`bYPb-%6-r}Sfcv}28z%o)S zMI;E5+DKM7OnB~9t=FsYx6g>F@bDcoVkx8fRfS0Xbehv}Gm3IDSl~<#B{!Jw6z`HV z`keho)-?YmdqWiO*p7IrN<=>*BDn~XhA!TaV5@|X{sKV@;Bp@9@hq()#FlrV_d3d z1I{hH&)i+lnPpa+u+_{yGr`xyn7C-0n~c)nOXoB(gG-rAuWKqKtf0-K4=l#)|4i?DhyaQus6{)-Pj_J zfy=QNaLPE=%#660c^~ugN#J{qof3w+!?|pPrv;oV?$S#5M9sRmxpD4HaG#8e$~WRG zzk&G5|Lp1#Qudlw$Iq@VS#j88b(vKd?{W%5A3=IyyN5Efc~pC?P&0BizC=mHLsq|e zsGy~J6W{J^-g0%lX5W^06T2BP1I-jXM$AC(cpTq>kdU3;@tEy^CgLP-v#uo8GBVnJ zn({U++I(xd8+n`FS>8tSx4ezIY<7o3MW8frM zSyEm4<%%sRoW9ZS^#w!%67zwrSrXl^h4+3N-8s}hGdKVz>2T{3-GJAf%DeF!F6kR8 zNG#@;=EdAG@(WILz?ks$IyfOa%g2~$^FEXP=_g|6gA;hDWSq!%UoZ@m8h4)Soj4Ns zS#~#420klHhrL}w^FOXI-SHmBlwuS-c+b(fdvSa5BZjeF$k{!~+1%04UA&}Qg{c;P zgpo7*GhwC))91|1NMvKCPlV%ab{GJ%A zWUqR+F7tQ@e#8Q|)?Ulu`PV00_xHgp&M*mfKl z)VEti1!)i*_bgGXH-o7HC_r;Rb*T(~H@<(h>bLjQTtpT8UA z6?6{UKNzMtL-3b;sDhmn60bA7>>=wSCOh zkYat+C1Y^8)%P-5LJ(u&bg2ZntAJ z{$Td+EB%>z?l*PP7gv%X_{_lhG`Q{d(0z@Vme@iFff^;P+$Ez29QD+NZFM zbcE-RLjrKz;g6$Q&ZyLihdbcuARE+~oA#xmZuCoz@H&Jao72H~KaMUOS6qkF3UfMp z?)zHBMHy;I$3C>tx$|}mwHzo;L+5*&gO}z%h7KO#Z*t^el}qiY#-LDe%2dQrd^fbi zl+zAqKGY@8xreFKPE4897wNWGP05ZmFzS_x1jSrTN3R%Ruy@S z%N7qq6?%S{^?M0Cok}>OFKH}_IE5uR8O3he!2!ppVqK*4P>Nq z)3%d&jyiaOAhI3PJ=g_drVmC$5-Rp~6o{FPf+jWl1O%~sj!(m%YLsKKXB;CPvM3Ki44K*PP3;+?qq_rH?c#RNni})w~iz`ly7l=vQ4=O zh0!&S#6m0{2X~Ff#3i#l%-Caon0O3(JluPjv2u_^H69ZeFlEsW_JRzyC?Bf|x+>zqh7>kKv>eEQh(I`2K(``1?z#LDnbgXGYJ5 z=I!cS9r)1p?OBXk>y~~l2QQPkd}xRjnZVvDR*d@2p*)5-%yS---L9#*OkjpL+@8}r zjS6nh=}9Az+jE+0B^!;;xL}RaG&Uagl`2ig?(q9codi&&+IK9V?Gsf18p;j^LjWi{ zh^zY$brOVEMQ(qw*Vdx$n7%jAKLh&iJKOztSJLLGkg`6!(mWs2mj(y4R|u0b>?KBR zN1uxBPtsvYa#$3kIKfnPB4^?4aIUW#w*|-SlBGQE5e0$cB^CU*O(k2tkJ>I_(fe3( z7H(P;xP{9+r!i+Z5nb%+b{9uRV7I$?-gfP|-NiRH((gO5e>}Z|n32whkybtS@jHrht-moAwzVJg2jpkC z{3yuHDR-Lz6@9|CPOHj0qEnuf6VZMC=|Hk0Sp>}d>fT+&>}LAKF&VoLWd7C|R}S&} z8)NebsyaGJI-)Etm)&FM4bvIkO`1a3fzL zafM9}P$JotY>Of`k$ksJ!vJ7C)p^fht25hQygO|(&2}ZTs4-zNLpzA(eO@zfTC6wl zrcJ;*BNKSiHw^9lzi;!nH}DGiycru5MJ+5-spLaz4WPe1vh#M zo@!TcYgh0=yQ0-KX!V}zycX(wZ@5mutxmyHbqa2E3O-!td(?StT33O)k#$24%C}?h zi_VL7)uu<*8}r6U>5)yt(<7UP?{$l0Be@a-M?n^pe@pXQBduz|tB^B$j*#*-ZIT<|#y!|#A6YtmL*8c&-p zXhN5h#*-ZIEcl!>p5%aM(dVS_{5Esc1dNk3VQhq%wo+<^U8`O{n0_$(ZDIL_k(Muk zf~-kKMme-z_BpB6l|$E^1wa%GOkx3;)`=Z# zbs!1{Mw?0?0|%Dc`wlRlW+Q2)58!@vT$<^9%>-?)q<{IOI|9(Z)MsP>=-ZK?Uun*d7tN9riyXKpg#y1!^<(q5Zv$*JdGFS4KKk{@6w{`^|w5$3* zoZM}yh@Dbnl$a`lr|L{h6~Tw={2p~)OX7YAb_IDgrYS2}>I1>9@R)K6De+AXf_=*8 zq=rH7AlQRyOAUl_5QagurMj;igkex^DFl>bL~-1f5b*;uy=eXBl$WVUs%)e%L3Mzm z+>ZCjN#jTkILiM}P8vsYz%i)8G>+teV^D=@9LWL4pbFDClH+hRWD^{nq%swGbIR*J zdMs{Awf=@pVpE;UNwuyVYhCaGi?qDzl1dd9rRwskODa-1sk)r%^6)`jV&T1t3#G+| zai_Gt340>j#>1rIv}z4SD!3%TLRyOnz;qvIF#(w811%;16K$Zy1Ta(`S0#jgGr%2J zr6rbB*f$aALP09*O$m2>vqo$(A$C56M)_hw4MO2 zx5gjIo8JMBCOZ{qWdaDB{JTt3nKDvg-_ewP%QcbGlCFuAmJCfeCJ0TaMrpFQRLdK# zmVqV}fQ}9{qX5=XH~i^Zq|n|VlH~7j)`h336?Hcrq5R;>8#i!6a7e}RsW!qxa1;1~ zr{vJn&39JUc*&E$JuV@{ zW!nb#OR(|daC+m1-{i{158LsHRg{DIBXdnTDG{X{OeUFG%7GKYb|&R`GfO$}LOKWY zQ)ZTOh6V7?^Y!$fVwswt8m*7KD=YOHb%9NuNB0$EB7(&pZ5DAD zu1z`A*5DmC6+)j|%AvNV&l%Jv@%)1W4`%mK<*3-G64`c^MQgvxyxA>Z@oK?xibYa-W<*+ zEG5$)Ei^FH1VHT#3^f7h-yl380R0;nUINg+f#D?p{Tmon0?@z2s8XM<(WemW`GBPu zd6;I`WBru_BEfA>!Vm_ae}mA&`_952gdTi&CkZ`-@J=HcT_4_Q27t)*2TVo9%WW#E zJATdKZLJcCbk02E!5x$t-ZeNKa_|&Gsyvi+@H7KqYI9W=X16wPI|23<^nu;9=}$vB zC~cusSX2T`IjQ>f4wFRwrgBn~L^)o7DJM0tmBYlgRVi{7l1XaqFtKfUik#HM);mmW zTc;u?CBU#g+({N^vmZ`An7!tyCsm;3yJ-5M%f*fp09p zkO&oENQ4S7Btiv1L=8l!0J}x#H7M|}@#)kzxysjgUdVlS)OHNM#S6^ulqltT2LLHi zYWF>)MX6m5krt%@hD9j=`k4}?0O)5*lmgf-N=>|nerjEj9=CpvfK(*%rKvl_b_>hnD-Q_$Zt#Mt7v*+}!8QUma*SQ1|jqlhw|4zl*fQ1?@2Oc#Q zPfm(Q^$s&hd@Zg>%}eDVOT^d8Ny!rBAWOv8%1Ox*-{CzvfJ^wH{@7s_hcq#`xTRta+r*gpa z5ucO7Q#s)IIiHilQ#s)IsLx5^sT}Zp%;%)=R1SE4-scR<%(uYpZI9>sTzGPkQXH@@ z%kXg?9Tz9&z`Nwo z>LP=xp7t4osw6LekL%fcZou9F5r)EK8jsSdH1rHVA2NceUen669-3-}CZ6-qbQ4Sg zI}l&{lex7W9$*`k?NUAogli_=&0u)`$PH22RL;jxCnFuF?Y3wG(rzfE?x^-dWmLCQ zbiNsl-%lpwQ657r4~Z`5@%f=V7{p8r@_2kjYRGYeH z7S9x<{vrbxNc|-}->V&2FGOF~vmGgUA$n2IcHCsvG*Te7lu;nH^iUwRw|jmvklI^F z&j(T~4bQv~NUgN^E09`g(Enl}wbDi*>l?l~X?Xn0X;M!K3A1_}sTUHxcPdeM_a$1a zkf^U>qPI%XXTd?(m!pS*5R8 zBmOChKIfl49zE)xPDYRUr$f=_{ga8Iw`s(k*>-B=B8;PXEdvrU+l(IfUCTyK_;(IO z=l#=Y^rU~PL{IsrYV-yFREwVWPqcD2+j}q@{HBM!698jGJWkP`w@??OXTm!Mg1H`y zo*e=~g>%t!0VL*vh}fK&)*)6+_%ul0d}La)Bp%e00-+Q9V5141UCd1KGsA+4D~N4z zXX}lxzRJHurZy$?GP*#d?w+uUYy-GmBQpKSi8sIH;FxBUu7deX(I?$g{!(=JgIT?Q z@1^L|?j8}Y7&+l`AGj3V<(|%PK%gsExWp0d*5VZI;917q`rP^nu5&fdNR@q73He4! zG)X*UPgr_~U43XVKgq1B?~*hh-BMit>87WpzDLUDuch86W%i_{(8W#ySc+R1ortj1 zhopk%ooW3sDUM(Br2aQbxqkl%k4GJWekscyYS+JC=J5{q_$xdfcerzXo4!00Qs3n9 z6Rv=6o@;m>&**9_VTO5U<$jl>nf6A2-yvm@5KH}6q$~_#seeYw40ucZQ&P4fWvPEe zDlfLN)ZZgzcDbegCMgRF1*a;$-a9&^lav$`$w>!i%&w$z)X%-*(?E-_Nirre8|I8MA+<~34gAzSKg zQf3}o>Mi#o7PcinBq?d@5aiDENOIVvexH;iv`b+uMy7-f+wYMwb#1BlNSR`{)OSgl z31F#rNzqfxdyvW}zQuu@&7_1E;N2Us@& zB;B;$0Z4jhodS?_%K8Ez>5Fv%z^*R1$cgi5a{8p~6Wgs%?6h8gau(Zc@IM*jujVuQ zmRF29s;}luvbD00a}62iK#fK9IV5s2E=lfaRF|#D#U`KUr3_!WkUpS08+oETWa^RI z8F$rSUt+5M14E)T&!w;#ZjGioE|zpRM<2*@k>m&+^VM+(57nv4L5J$vc=#*q{2A^i zI63feY5(5zzrB0(fZg_({pzf4Bf7>(#CtDG%D5dxy7Mx_VwtuV>CQ_H@0rD140#H6$L z?PWdl1%km{bv*Oc;Wag6-4Y=Q9%(o*>SfsTWrMqc6Ryl)s)Io^9%a0#4$;k2U!V?M zI`_uNSGg2hH+l0dy}!wOOg$Z3;XTf^uzUm}jW z`U4=7lE_Bn-xo++q2KS&vFW+1Vz!O^*mJWID(cMGBd`DL9FlD;MQx#W#KT!eXokaKX4xnCL)_vYj-H>*wYWsjZXz7}7PZ0_TzbN}s46uj z^0n^X$xrD@LQeg-#5hc79PG}#5nXu4<%aXQ5e;;XIY}#a9UZ^!E>`YsWm4(FyR2P! z$H{OwpXB+wS=rdf_F;};eUtjnQr~y z42KXiWkrFZ8`3<2p++_jX66s_H%h(MJEIO0nu-L5hur)_`1(+rn~50GPtr7KTj#kirP@DYjZY%|r?E0;F2!E@}8+ zc;@n{+@IK$f8&u2+c>TPFQIO$JnRAOn{w98tn1e95A}Y$)*Qd-*CJRyP_Vm z`OHZ!K!YnI9=K980(vs3%dSo5E$&CQw5hmBMhRx}Hq;s4Y#kCg zGV_Poo=q*SiB&0}oG6p0=_jCwi5yM@;1TV@7x0GO;eg(eJ?Lrf?;@2{gEc(IovR4U zL$Y_&3E>7R^!ZTh$|Vpx;;__xgf`JNEy$HQK?lbv#I36g!$dUqN^9h@5Ix%B6Mb+P z;V%oRG9wS$6q%p0CNWxGvG=JlKmM#nUj&Re%ivg)J)ge=#70`#?fh}rg70-t0_Nj1 zRQ53=fU88J?!f#6V{(&SJm)RR#ANHgooF4L8;Pb#%bHiGcv2yBdjc3^xXcis z5j)fc1AuGPO>Iw+;}knQ3Y8P{&|R}W1^daef!U|#vu-BPbEk-{y-Be?d2p^6{(($} ziiR{vw#6#+ALYa-W~|8s_vGX74qBD*f(a^PLMqP{wKCibYT^`EPAe_QELqZ)$iiZS zOdN?o8g*#@&d?}t40k5$8ueXDHLcP8k=^swVd$Qi$_85MYwmSlDLfr`UOatmto08* z-onT><3e7Ukft>e%{W+0bPbw(m}Tl5vPtX;&9y%GObeMemubB&F_e2`uAch_#=EPe zmiu~Q$ZMX={jAf;Ix<%o?>KM642Ittn?Hovi)hsxosb=4GA9{g&ZQd_heQ()-a&&+ z{)T0k#m51bCbTs46wZrZ>qK_s#_Mf%2R@a-lKG{xGW}bBGTSQ8eUgXYbm`x=pMP**WaRbSSF`f_KggQj zZ_^xMDwdH@o%?Aw9Zkf}9nX)*>VE@0Ewld$>Y6glVVUwAwgiCt+Oyo*nrA2NsoXJV zRYUL*u9H5MGdn&f4KzZmH%T*OBdyaRjWQ~X(s4%~CU)!%!;svX7`hPo+8+8@En@Pf4P8+l)>9_gnaBeMEh;ok*XV6BXf*5=f z#-rkG zsvSq7hA#icZ1ygh4lzS^xCp1%UL?r!Pm&KqWs!hBExIz3h}N)CX(3mUwWJ4xtZOEt z1G-7)F(t5oWz%53$S>d>nb@ZOO`A{*y~WplMeUkp0EU>S2q90e_6 zO4(DnN_`}X&~@(4dp1dCNbwqkpFu3^+I#3kh47}FH`rI71CT`$*J5^r6l_Q_2uz47 zB~dvB)%4%H8CY!k{gLdLrb@wcS8IA`v|-jqrt7(TU3(dFZL|R|64v6&hM+oWO7W|3pF1;=JI zZ35cZOomUAhRqa$NYYRtvxm)~)q)VYS8OKENTQ(HaOHQOeOiZ~f&yYjX<-3y?k_9mkWKrWRBtTrK~JcWm9mzsx93|JzTEPh#0j z@i&IRx0Q|eaB{Y(#{dz&df=Utbz=zWm9~{wE}QfRR&a!sEIq$O&p<#V<+dwTDewMZ_PxMK|D_r zH)VyK2n|cetltxjnl8pb6F!rei|$ezN8BEeqY)dHMX!(P zhq18+GSP`h%q7?z$^K!^1obdGOG`UtY}Yz_(R9+$l*3jX{ib}WV+l=X zk|X^m66&UCDnFJ!n8^uhACCq|V=I8v;2u&d13I5fPUH(rG69|om*xqw&MU5rxdqbC z5<7*}jo`YMQTt>e>b;J(LHs*7Eq@9)KcDspB((huaJpgpYCu1s?J3}N=DtvVK-=`# z8hQN?77OQ(9eLNM z@%@SJGm6rq)6oEJ8Ksx<4@%K`qisrfq)QoMHuWI|sZ<1Pd! zG4|BS{7JO~!?SwK#K|Klk3EoK=+XURSI=^;fX!X8^bpkMuVnTR6#n`oox(i#I=~;G z`F3uo35M0% zzPjmJQ70m%K~}+Yhpq3Z+N9$UBYbC~R)K(hkXvdO2$%;kt(FblL_m)TwWNu?2uepL z*vZ^UP?MHS@H(18N?|n3Jy~D*Lo(r_lVT;>IdqBB3XkcBJUbX3m+D@?V2X-)u&3yjkJgT&X_D`qBc|B2O*!TV zt7e{eqZuQA!eCQWtJ72-U13H0>khcs>l~(&k?w>^GV$L$$LX_9r{bg0{r<&IN2mSMLiB)tLdKmM;S_}l zW6>;Jcm~?9MeyFFbk@CzzWh|8CqI+u$5UQE4w+YGD@sh#L@)tN?aOL~N~ZQbpG~Pu zVgdwH^rK7wj-vHlpGr)CnZyK`*v|yWa;J)H`7GK|;(g+&lc*kci(NMTfCh3ClpJYa zY*guLf?>oIeig;e#-8c~x`P}5JtrMRWf&W_Kp*!&ykcs)D! z0FkC|pR*8tX8s;3;O4%2rk#U2tdDo6qI(Wb9hjIL9m`~MBjc<$O-U@9Jf0Ds2ZNL@ zNF2x!&{)rrgu;P)@e%`zD))eAu(!QiVH4gDim|I7l*kQ=jo&=;ZfNqK7-HSyj&*0E zU6VgbOyIi{6Zp8H?< zL^&L`gM&rPqft-`$rOS)tT$ulF@SQ^z%B*v6S5LkxA=5{BaikP)i&xDJo80+3J|-9uCtF(J6xiObvwNbpJCz~pM58Jgb#Cw1AJ9{V6(hr{LIhf z9uBm?f_c%I;zo@8tQ_Xxg?M2f=3+3DxfFa@@i<%gFkm88%8l30#1}?tCV~wAAcahgrArf0|mct+9srNv%^_E2~NLtBbZ7e zQqY1-W?8*cm;i(!qO3%>3{s0lP5-Tl$%Dkav|=*&OU0y}q+pCC^7+YLZvE*GfB3`k zSMv&Q5fMgw5zueVZb#WIK7l)YIU3dP=(c_d{gC(irI#<~d1JICwj?fp{^TpHjPqtT z(h7hi3~nWTlDTW^dBOa&Y$VPUnfwGUF|cGiV18!(=o%O$$$c&oM1dM8C97F}C|6^S zDo+L@=c9}UZo=pvRSOpHIF2~A#Sn=s@f5DDerBU%`Z>h+B>bSsRK2J8+eZ^kdpJ7iVMM8oa|tAi5MnDxIJOT7qZ^>y$iJVIQ)tq2;C0CNqlia{+p`@@ z_VAt`oxpZdvM@!mKp-ywmZlIx?@!rArME-B&;}^u%ZRP5FW^zoDZ{0 zsxuiS)uR!P25tRM=jex}|Hp~(*+ekpzM2~>Wuy%Vu*N4>{2pOxQh{oCJfPiqT;jSp ze?0eaG>gwf;MJ@hixVN%&?ZbO@h+X`F~n6b$nEDHE5`uoEiEXxIG$)l!b=MhQYSWI zkdAL^ML{WDo0S?djUZrt!rTnumrPzMfU{!CvA<5mhi19oElG#MuCJ+||V9LZxy7%H0T2vLnfM6^wa`s?fp2 zzTs39FE@_+(@SjQEX49^m{kgBKPusDB37$iPQ(&UR^Nt%rIE%sP_CKvN2S40alU;> zGYNPf9uGJv&-nVVqpVTws3X2n?HHqOBNTji0y%1S%2A3trIfNM!(LTKFfPUti3pDR zKF%d1I+*Y{!5yE=YM>(#I{mtQI4Z0Ac*M{6jqsrr=UAa<*(LRne5f!KL=GI~`7VeA zmWM^uz*u5G&sxIT_{^x}`OJ9B^O-58gwKdMshKe8ryccX9Q6)<1fQ||>B)3QLPU(B zgs_2#d-;sTEf*zB1ji2&LD90uQL_xcpIC-1dvwr&kom`x2PP3JvN{qw1E#`6K^V8* zBOAJ#f)mXb(5jQzJlIPTX21uxFpCF4s{a`h55>DrV>NJQeh2H z9S9y8uB4{U36oE%Y~U3g4+bK#C)m?dVd{v!EoavA@KvOSQQ$5kF#qJIC3Ghv0aPud znZU6=7TrZxJ?v0o>>N(4)T7Co!x4%mW;u&TAmQITNFtc!h(}gC%l*1HBsnwaGCLJB19PofJ+CtaTu|FPa8PM9_0T>N>L zOmYh$-^D&=e8Rg#UFo8Ojz2v0W$2lG?$nS|CB?(^i9D~P8w24-;GEBPai;*uRK z>G88*D~pUM938|qU{U%GlNJf3!+0M~&M`ZhT-0)$q6wyVl1Rt^TMUTgDNU%K{_uH# z?EMj=HFE^&Grt`6))hx|ury*PbOzH&5jz3khltoo+M>gSB%Sc(L4{Q3AS5Bx;{>~A zA^%)-gicue{2<2B9#l8-R148(fZ|hv%j+bT2j?!`?V!k-B!G{xU$l< zpLk6_w5^}D6-!-iuVmWW+wtngcC@`7b*Xh{rM(?T+ZW?#GhS`0tDDhl%i9;DcGO$G zyu7u(8LjuDpN==zGw#2$-HUPemGzzNvs;_pvvi`nz8Rlg-`G0a-sC-yI{QT^uyuBG zy#pc6Zfve!io4reXXEXQXE)YYUTOE%d3UF?wY^ExXE%4&wwG7qvvhL{s)brboRyVm zna*xS-SyQt>Tj;EMlW4n-=^}H9*p|*ti5Ihgi9xe&Plcq+Ki*sovm%Ke}>}R7-pWC`hFIN{ApI-0ntiGylZL`@&vNg~ zbM4J|ZJVZGPTy>jx8*6iyk&g5wzINw+6@JxH8dQmD%!rf0oI%A8ibp8<$31AGJ~iN z?ZjKjC^P=P1GhF}-SwTd?(#}%ynrmOUD?*p}y(|^*vwD_Vh7BWRuCTD<`e+l#Ir z-L)>SNJeaI##{>ptcDkhIx6tr&qVOtnVA{=e6ZEItdSU*4vvs*VFil z+J5aK;ww}VZ7|?WBw=O<@Z{@fAd+q;n09wyz_smN8R{sUuqxrQv$3+=1ykCLSCJIa zazBb!VA{AhcuOz5w!XQ25wX`tCMF#XZEw03jq$g3`u*kZvZ%1N0(-VQ^uND@1oWcI ze)gANTXZHqySmC&mT3Jt_0wtVSUR&RJ`J!tfK_~szPG@!5gxY4zY_+NC zl>u;*HG49A+kQ}ewx;m|Cir&2U%MEug%Mg_d%4qQPB}(2oul+-yaD}0UTLA^{q_bU zu*o~o%k+$4hCO;FB(0p`=f`j}Zj+mgtdpgi`_!}#zwOm;^Do3J{l&#}*(JwS3#W`b zw;gx(c9h!QT-6Wl>!;gY?=!oY8L`M5t*;@u5I*QJ6m8V*3(qzrSOJbe*@76b(-~CE z8ab(nIM4)XeJF*;)ahKkIenMru1vbVo71niDzwn-Yg;>8DY1nOlVN zY)H2BARI%ExRKiLV2!+TYi&z!TLY=K(OrvIwwKifX3^d*^p`i0E%6o9%i7j*cc>S8 zOAk8Ci0cXkT?s_j?Z0~GeTvWH#S99`gowzMFj{S2jn-l;E%BGEpIf64Rinvwk%!r=CQ;@XdAC+?FJ4{mGI6h_ss@H8 z+R@L(PDe`LPvD3o;tfHuzOjx~wdL#tCQy47mA4%U@wnGRQfw`w!MCFJ%4_YbTa1$Q zfDEmqrci~o5^w4U1*soq=;xd&T3(aE$3)zW`xskmy`5EOQ}IZp?ah^C=!%tPva1`% zJ;|X#;onHaYH#oYv*wHm;+N61I1#)P6w-i1XZEuGIcDN3G@6)=7tCUe5v1EoJ8K>K z7WWo3L8xYFd2M@r;neBK5BizHsoPbf8D;y_X7K2t&qhuGK)~hIoz*4ZfrV3H6jS4O zi}HA2Z{OPFLe(U8AR_@yF$%itm!*cxhT_QsHn9dTFKW1uHSS?^%O1Py>nrR1zCq*d zb>483&oO|TS_Om^HeUFKU}(HxWnQWnmSbthq_eVj(GRFQnHvV~8F=9Xlq?=u>1 z5MEneSy|fJ*1w&2Y0&yodwUP3#8)~Ldkcxk=6Y^o*{ z!oYH#B6jM|$~F}B1Aepfdrx_Kggy;Ov6R%!WPmMVx9Vq0{!Du@-fZhfE;m0Ac~QTY+g+iY;_sWY4?dD!Y5!Y|L6W@_ zdV75-2%Y<#^AtUV_zA$hFPwV>seyNP&SVJ=&cZ;Fol-<&Z-E{-@566$-a|VQ0wxWX zmYzciY_G4LM@a@}GSRv_TbOR%w0r5<4S6w(i#uztZMHWSPQ8T8MZ>)G%=%jVlB+E+ z*t!*k6}&pyS%V<2VDI$Js%@{p2t7Pr0efeBp`^&JY|*kG$EiUJ6tE}>-WD7-a04XF zH<-A*qBpnKxAzjYli+V7x`&@Fp5puwqA!{$d+S)mdrksMsTZ6B<2l9sd{q6ucDp#^?(RQ?3NW&X1K-A}vs>;r#) zER*>-@c)7GPxAXE{%AV$+raNl!GFrbKMq{=hVp;M!~ZewtK9(qhaUdxl)oiH87e~UraIJ9Y;BAH+0pChSqLPGue8Q^m%c-F)J(yn?> zdiZ0&Po&C!+`}K(1;5+Fj{(0cRX+0YKcs)@exLI2@9l!$=i&b~@HAb{dU(L|WsuQ0 z20A?I^ZUG~aSiY%J^XXP?@7U*_V8KYwG{k0;NpYOP7}V?dzl%>@9#0*X@0*(TKER| zf5H3ddC=s&C&|}bAuIC>r0?hVKlkvbc-FXt`LVlvfQRyWSM|Iyo5@7{26&5S)$<_m zLJIzfhqKOMbP44@=i&bhxW?sw;rDTVU-$4Zk3;#;Zh)VK_-VY}K==s9clk}z=Q*Da zbo^u9Q#;}Pf5o%t9q$IDF5H^EIfVz_@`3v z-{o2Ke+Ibl3wr5UDhHI%FVqv-JwWDX$Pe%zP+s-_bNV5E4Ddhl@V^GUn1X-k;r}!B zlvD5r8BEo4=(y8Ip`JNk{_DVn=OX3q;r9h!F6htSp&U~vQvj~~U!$D#Z+I{8f5`t9 zd3?{Cl>bll%wJ|^d}Vn}F5yV-Yt_vE{mg;2_G+B{KcD&Q*~~ElFiY5T82`2gV*X%u zO3+oar*ji}?r+BN$U!}A5U#R9r;x-mX&mBp*8tXEBh zjIDTkaz+{3udQEMDwY~khm-;wdNO@j00quB18C-mKyj~BtrnYjIGfA;tFzXt&I&eM zX{l7L9h|dzJT_X-nh*w_lFPrbaaQ<}kNt7yFfdsnM_2 zn*Cn6S7j%I znvnO)OYxd|*Q0yIX0=}}_v)2Sr&ukN%EuN%_xw`h;^On|*Q}SPqn5%9T71~NEY#{% zTCUd1^+K)OC8%`AO}yJ{Hf#NUk?uE3#dfW7e2k?5`0CCxGI6aHT*u%9Ecx|S+U&Kv zrCPlf*J`zHtx`Pk&<&yO5T?&@rQGTFJ8`pLYPWlZ-d*>*_BOUR88jSsrpM9-t2{!m zRO>bi&0;m~bUT$oxAd`(D%`2ZwNAIuE%yuMLR^baem+og*Fd`l@#0*Ai;IuatcI2! z8twHOy+W~CFZ2tYO5E#w{5CO6q0sE~OO-~a-maGlmD(qop?}vK>E1fQMA4zy=vJGZ zdZAQlmz({5|C4@@ocp!7NW6e3;9!u-wPL?q?)7VNC9am*ox5+msZOO_=*OK}yI?D^{A!pho`7fvU-2vs=7J69nOT?}c-YfmkkwWj}Y3h5U1^)6pZ=NIFXe+DOU8MSO01g2~p9 zl#D3kE%f`nUbot7#NA%?Q!ftHdI4GcWvvOGL!>=-Q#JQ{g;Kv>YBXTAQm@(n^cT(z zW~ko)KqSz|w1*>@gPt&`X0Rlp^3pXKk zs=aQpUoTe*wK~(RUOUA)l%&l@du_SvBC7UC%Ws0E!a-mc$6&v0A#-YCy-2G!t zZJs_LmH9wz{~DG$gz|b@OSXeTh#*ATy-ukT*BaesrE%tg>%7-r)%cYAopQI&l&zM_ z)o#6b);D9Z0;jXkQCj9(S|>8UX>*VFDxG?>->f!D^-7^vDRm1K*UUceu^%9VHeQdcATr?o}G)8-KM@FO=(z zQmxUbwi|uAe-p2EO65Ya+@#Sm3ZY!RiC24NIJ?%4n=n%wJ#^!*R;!Idw^lF2g&1vH z>eX-j)q1xdSKH;dU9VTV$7S zuu~u}1lXqAkE1%vh{ir#T*Hv7luD1>hB})};vVv&9hbT##NX$hI(K1T)A*J6YTPpg z`;?wAPf=||w+*fha&)j(s+LQ=YNuI&_q&zSqkopl>Xo?NY&Xk|YO~TUcH+l=>Rj00 zw&a!C;^K3g%a=c=MUxx0<`eUzUytK{p%m8}=!QnU|M}Zff8vG2{bH?B?_;18;~2B~ z@fQPocGj=R5qM<%%B}e!rAoIMS8LT~sZm06^q;6KedQU`I%RC?VtL4>F4p(h)Q_Dh zHcN%`H~$vi%9E@6jKba#2v$eJ;=Sdq4Q>BhTx{)JdDJK51Ih|d@-CM89mYGZ;VM-7 zXql(3?lS}ZN*b0JBfp1)x7u{2S8ntxaj98tmkP~F=L@%Cc6A!XPOn(5flOSewChhl zz7IND9NDw7EJG)(=rFSiO+1`#0}rLys}&o~XP&yzioEaGOI22DmpZjVqgTaCE;l>f zXZP#Xb?ikg#%^vcv2HGbgvH#cR63;+a=6m0J@;3#`*bTAF1Olyn}@C0WEwO&ReXUy z9#iEfZvq*=I=-~dmZ^)yUZsj2D>s_RZ1lkMPws=uzGH=3pWX!^L0D^)OWnBL?^l|I zZrps~OXt2gETZ;sX`%zX;D5Tkaqg+p(U;`^vzLdxzSP^RRtlX4wYO{aPOsXy@E2}X zt0+3PzKK`RZ=2JPa)Cjc#Ui}X?>3tCFMeU4iJlg>PM3C9SR!Od^+Qj6k{Cy&Qh_;Y z-F6R)zW=42k0R!y>^JRhKX!#(E$N_4LZdK2C}FG5?0<^4l2y|bXSWN@ez#OE_uCMt zQf`0wp+x3xGocn2SKIjek6hq+U;4&{TCYfqrP^(j3Z-W0#rQ|RuRc3kIQNhh%;jwY z4d+>UO?iRZ60+nHdW;?$=DHz_G!gnd_P_-D<7TFP0mnQm<35 z7kgj1Ov_iA0=@y-9ywX87yG@x`1AXTkwldw zGv#@=x7|;e>+sGE*jVuG#*TB*3q>MpFm9>YEY`Yz={6%8?jy*Oj}aCZ9}C|l`0omc5^4V* zA)WTsRd&mqjy~`9*xJ5vHOIEJm8(m{h}@P+RmZ`;NF7E?>1$ zt<_8YX1Q5tbmBj^j`UeT=r?+OEb)3X?)U$^Is$|A2^%)bg(k*#TzmP?t0Qrt+-y{f z#ZtXnYgBuki!a`)ZKJJ6GHya#vDfdF;x0}-26VUIY%bqEtEo^eRjSoqzu0V)QC*Eo zx3B7UquYtq^-`}?u9bVQ+`g*2#csb+$6~IQI^Axkyz*x=6l}XC7SBZ-if&vi7YVu2 z^+IoTKf#r_1OEFf+x*7Yam0C-%)6kXcDE6i>UE6MA|cXxZSBw2!Nh(p7u$_av0iHy z8=Z2cR#@LJQoe5ot!GPo_pG!hS3dMk++=dQK=M4xQeD^ z`i*k?)u;DSGW&L`8@^~-;+u;Q!7mrFVQPh1x5IeUYyHi?n_7YmMs-qM@XB^CyoQ3T zO|N2bU*nz%8<*qM}gNY!|&wGYDk`dX}4 z5afsW-74|UcBNjg5@93yxBbjMRb0o3bzA5mS=c~NeT}%-s5iCVhJjX%Q1-DlvfzI(QMSp_15c z#db48ifX5fS6}Znn0r;?$yaZ*7B-!4FWU!1B51k7>QNO}r{Cywd&QsLH)JvVEvA%1q&1$D#ui+!s`ak>HK6RwI z-J-F}Se1|3_oL_V=2mZIU6B||wcP1e>RQq*_1b@VWuJyqtP#BIJ)y0SvcHqKW1p2^ zmg(!PVD=lti@ti>;*Paiu}~!f(Pr_g(C;>1fAQRcmO)SL?|P+4xmR$=WiVS=@}SZ# zwhN_Fxzs3BYn^I=n^X27(Y^v2&l2`~FWyjxTPNEo%L0rPOcNI#><` zRu8|HJ+#Xg_>Z!0-EarLxMu5~agQL0^CZr-oI7y7cRD(+b<5L{T)NZI3;G^rduKDg z6=tquMX>>eAQWrP?IJD(`+f8+HsMOm*uR=R80MSIGvQwe12 z7qa`s*%JK`v{PD-=qn7TIBWezvEOV|SQKegdU4|yv$x4msI?1)n0Oem6oM+<;xFB< zinTgYZnm);*qBtVcYitiqjul)tL-{VrpymIQ||ss_U1J~sapKitY7^O%hI;+MA&U- zb4xR@)preODN~BXLl`QTlo%~`(MGX=8%KUHCcR>GP0o9te4qbghVL+T0m#0 z89u|`&}MsH=*8_0tNfj2C+_lp@z=9{7sSvD8+=)cBEg{Xr#&qB*Bg~iwOwU-RZ4|8 G?f(P3+uDc# diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 0aad88631afd9345dbce6d00c847fc1e5ef4c3fb..75b8b11523606d51622878d5b712ababaecb1c11 100755 GIT binary patch literal 216404 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 Qx7w+aG)kVZtnv2$3oE%JBme*a literal 207110 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 LJyO}MEVceW(xo)r diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 235f3219a6b685e7cc56c12ea1eff0d3b40d04f2..4b364eab54ea8f8a55d16d411a9ba8672f43b5f3 100644 GIT binary patch delta 1098 zcmZ{jOH30{6o&7ewlFh&jXe4w7>Cl9ib5aQLTxDyNKGW9iO~hC>4O1VYAfvk#f9w( z6M_kH664aP8x!Ni#1MmVB@0Pdl9(8m>~QIdc&BZo5}eGo^x(8|6X;kx;^~_$$CUdihMjx>Z&gio9+&&B8$>|AQ<$A#Z{@4U06r$8mX{qP!sZ6u_F2dW01tw z2(98S6)#G%SeA>W)S@J23vv;$YRXnGRaki>l~S@aFUqB?B$kRr8PVXt0_@;U8qo}+ z(=iOZ#Sc9Fol-^0tjH3PrV8a$M$Q%s$ZcB47E<|aSrXIvVrB^qD1%gpR(6Npz#KLvpLm<^|0K%Yx%$mCXOQa<~ai?Qq$(t9SD|D z%)`3n9yY=^%ggh!*G*Z)TEr$ew$7a&;yPyFiS3j=Y_vR9YWAC5;Pc8ldXq4UJ5bOnD@ajmpoFG}i7jTo0UtrmN#^2=yX_mUIXiN%WFMk!2^`*}}t3 zK1Fn%7A`dT3E_h+e6GpA5I)?(#U|e%Jc3Zq-^Pp0#2jhNl6@QwMkf{f*eqttrHnV9 zO%IpKun_)Hy}%*#KjvV}>W^PO^8|aLN%a5qhry^8cw8b@5+6zxBUi82^p{0-kjbQ? zbUw8t1;juwWDWz4@{o@(3KiLEjjh|N1s_yJ#iFozxUETJR+4QS zFHP}e1tDd?2MBr*yolglN|EYKLA;3QO+0w>qMp=)I-5irN*89o+28l)o5z0tjq*mh zGPH{-m*G;vRyH44PFT$d64uqJ8>`=&d>*x=E3>Mu6m_kToK=-fUe^G!sQCqab9gre z7<>}Sn1UWJV?wv7S1*R6(Y~0npcXPSR{@Jxp$E}68=z^1#*g8dkl3V_)bzZrDtaNA zFDBD^M#}@qIg`mJbD5&5q;gt%4zwFx)BwU|*Cg~CFI`~>1I8~Q47ppZY!@l{E655o z&b3PTf*V1ERreS~#zQiv))0Quw1{3I!2=xfJ)_%`v_l40yz4ukv$9j5L@0{_ONuO8 zv*rvZe1otJ-|?M-4*bP;Ypd)*U3R-ggB+$?r?+lmALQ}f*5Bw;ZOI?T{XN4TBf&m} zekTveawscWj$46a$P9 z^xH+yX#t}BEN>nmlof&8n{5z>0<0O<<#~zhEzEcPpD*zT-4&*KHIHiH z1qt{=cpUn%H*y39uo}t1HsfuCs@~=M{zD|w63sz}u@X%|>lzZg#yfrjlA6t~Ai4Yl zE-!hXcS-o$z(kp|0l)$P4wFHVF=+>&g~WNnc@lf-yp3?Ffye6nIMIa~xLoHy3GZs) z({=uu@a|3S1xh_pA&HUA1enEd2FK}QA>EV9qzrE81jIA3j}m7#uD+<1l)mr~+P3W( zv*XXPys5lWAVyFwsU?SCe*SYuLDO{3X_8bfIj4q|aCCroRTY~aa&BW1R}90rh;t*1 zL5-|aF0x3?A5|mxaXdbSm&X|VXH+2nMi^Tmt@>>LRHw9^k=nQTsN-n-G)~5MU}>}; J2J!Uh=wDsV_*wt} diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index f3336295e65be66bb480a29faedd6583cc29ad5a..6a379a4a30b78bab72e57b8d0f4ec95bad77d8ec 100755 GIT binary patch delta 1155 zcmaJ=?MqWp7(dUQn|pEFtwiV4SW9gV@ntW*FkiT?6%{3l6hd_O;?<^Wi|uMN!Hp5Vj+82uT&_~#H5j*49pK_zV1(z0))$WX0(>wMM%B83VAvN5#yHj= ziUfv{Rp_V2R6=*d2Grb4CX+~uOu#6IOfqI`iiC`UUKU{!SSY1gDNeMRq95Vo_BKf2 z8}>RYp^16MAc}rTBISI+T+tP11W z9?(x`PG_Q+Z)k{4;nzAl;nI3Hq=jC+0jTv94$~?9b8;&?O&0{kzLyG^#+$_(hn`9$ zbo90C1(@g=X+<%~ydj1}_?e*tmhgAOS(wFVN*4d4c$igajpHzfQ%2t&8?>m%Zk1x? zDZyG=1Nv9H_V!8O%Dxn0kMk6);CW{ctm601>#!sQ8_m*jW}42C%!j5p%nBEpuR{L1 zbZPhShU-M4O@UAuLTFfy$QwYYjtug|Pzk{+a`2Wc?j}4-4$frpuLQT|;C)$qjo`I8 zIGe>M3GPD3xZQX#o9H8r)nt7PKW^<5wpvevIu;Gog@XRtXbgMWKPUF^nrfHL)PFim zQz-gsaL00NFw92^{^>TYR^(rf5*B-ri|c5~u^G3rMWP?|IuY`Re8ZfLwK*Hr(Cs38i78e_{D%BO6hF6ALJWVkxFDuh?#cpYF^XFh$VT2~FAXm`vLTV!W6dwI5 z($45@dMnr&!Nv%W@q5!@h+;EW=9oxqB8!TmagjbL%CfOkWVIQH$j{~E{l&1`QYqu0 z%}5vzxDqn$3TKB2yump($0zwq#Zxg-(B^?Y+!nn`M!2-51?KSenpT*{D>XM^L2Yx| z;@1+YJx4ODwILW+j~}`Qy2bcm+*6nN0Fbrn%%$Wi{pNhq#>|y?wayhz(;}3L5IRbJ z@|4iA6ohg~KR|F3>B|y$A;F8b;I#?7h4AcKa4~^@C%9t^em;RO6TCEuXCo<*m?DX~ zWCC^Jr}d4x{$P7qug|Nl)t?63d}J-0Mtz`M4TPlf3a4R5XQlqrR7Mk3UkMWbN!@ZN zO`zd#Q&QKNIEr|CJw0-TR8dvU@o`4dx|#eAMikCqQ)9LIqruJcWCgi>KuOrF2v3S$ k{I)3@_TtY?v#<|ebhSY-^`zPUhb8ypXD$yoaC%eYPwG%SbpQYW From 6e73e55ee423999c50cbc5148d9ba19fd3da8905 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 13 Apr 2018 19:38:05 +0200 Subject: [PATCH 025/103] polkadot-api methods for parachains additions --- polkadot/api/src/lib.rs | 23 ++++++++++++++++++++++- polkadot/runtime/src/parachains.rs | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index 78f9e744b6399..1922bd87db7bf 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -43,7 +43,7 @@ use polkadot_executor::Executor as LocalDispatch; use substrate_executor::{NativeExecutionDispatch, NativeExecutor}; use state_machine::OverlayedChanges; use primitives::{AccountId, BlockId, Index, SessionKey, Timestamp}; -use primitives::parachain::{CandidateReceipt, DutyRoster}; +use primitives::parachain::{CandidateReceipt, DutyRoster, Id as ParaId}; use primitives::Hash; use runtime::{Block, Header, UncheckedExtrinsic, Extrinsic, Call, TimestampCall, ParachainsCall}; @@ -139,6 +139,15 @@ pub trait PolkadotApi { /// Get the index of an account at a block. fn index(&self, at: &Self::CheckedBlockId, account: AccountId) -> Result; + /// Get the active parachains at a block. + fn active_parachains(&self, at: &Self::CheckedBlockId) -> Result>; + + /// Get the validation code of a parachain at a block. If the parachain is active, this will always return `Some`. + fn parachain_code(&self, at: &Self::CheckedBlockId, parachain: ParaId) -> Result>>; + + /// Get the chain head of a parachain. + fn parachain_head(&self, at: &Self::CheckedBlockId, parachain: ParaId) -> Result>; + /// Evaluate a block. Returns true if the block is good, false if it is known to be bad, /// and an error if we can't evaluate for some reason. fn evaluate_block(&self, at: &Self::CheckedBlockId, block: Block) -> Result; @@ -240,6 +249,18 @@ impl PolkadotApi for Client> with_runtime!(self, at, || ::runtime::System::account_index(account)) } + fn active_parachains(&self, at: &CheckedId) -> Result> { + with_runtime!(self, at, ::runtime::Parachains::active_parachains) + } + + fn parachain_code(&self, at: &CheckedId, parachain: ParaId) -> Result>> { + with_runtime!(self, at, || ::runtime::Parachains::parachain_code(parachain)) + } + + fn parachain_head(&self, at: &CheckedId, parachain: ParaId) -> Result> { + with_runtime!(self, at, || ::runtime::Parachains::parachain_head(parachain)) + } + fn build_block(&self, parent: &CheckedId, timestamp: Timestamp, parachains: Vec) -> Result { let parent = parent.block_id(); let header = Header { diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 1f262c0794a15..4a4b600397c20 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -132,6 +132,7 @@ impl Module { } >::remove(id); + >::remove(id); >::put(parachains); } From acfdc274bc0217cce3bbcab85c826a53a5e34a45 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 13 Apr 2018 21:01:13 +0200 Subject: [PATCH 026/103] delay evaluation until candidates are ready --- polkadot/consensus/src/error.rs | 4 + polkadot/consensus/src/evaluation.rs | 24 +++- polkadot/consensus/src/lib.rs | 168 ++++++++++++++++++--------- 3 files changed, 137 insertions(+), 59 deletions(-) diff --git a/polkadot/consensus/src/error.rs b/polkadot/consensus/src/error.rs index f721788a1299e..ebdf1baf84fe6 100644 --- a/polkadot/consensus/src/error.rs +++ b/polkadot/consensus/src/error.rs @@ -37,6 +37,10 @@ error_chain! { description("Local account ID not a validator at this block."), display("Local account ID ({:?}) not a validator at this block.", id), } + PrematureDestruction { + description("Proposer destroyed before finishing proposing or evaluating"), + display("Proposer destroyed before finishing proposing or evaluating"), + } Executor(e: ::futures::future::ExecuteErrorKind) { description("Unable to dispatch agreement future"), display("Unable to dispatch agreement future: {:?}", e), diff --git a/polkadot/consensus/src/evaluation.rs b/polkadot/consensus/src/evaluation.rs index d17074b000cc0..73fae4a50bb55 100644 --- a/polkadot/consensus/src/evaluation.rs +++ b/polkadot/consensus/src/evaluation.rs @@ -21,6 +21,7 @@ use super::MAX_TRANSACTIONS_SIZE; use codec::Slicable; use polkadot_runtime::Block as PolkadotGenericBlock; use polkadot_primitives::Timestamp; +use polkadot_primitives::parachain::Id as ParaId; use primitives::block::{Block as SubstrateBlock, HeaderHash, Number as BlockNumber}; use transaction_pool::PolkadotBlock; @@ -42,9 +43,13 @@ error_chain! { description("Proposal included more candidates than is possible."), display("Proposal included {} candidates for {} parachains", got, expected), } - InvalidParachainHeads { - description("Proposal had invalid parachains extrinsic."), - display("Proposal had invalid parachains extrinsic."), + ParachainOutOfOrder { + description("Proposal included parachains out of order."), + display("Proposal included parachains out of order."), + } + UnknownParachain(id: ParaId) { + description("Proposal included unregistered parachain."), + display("Proposal included unregistered parachain {:?}", id), } WrongParentHash(expected: HeaderHash, got: HeaderHash) { description("Proposal had wrong parent hash."), @@ -71,7 +76,7 @@ pub fn evaluate_initial( now: Timestamp, parent_hash: &HeaderHash, parent_number: BlockNumber, - n_parachains: usize, + active_parachains: &[ParaId], ) -> Result { const MAX_TIMESTAMP_DRIFT: Timestamp = 60; @@ -104,18 +109,25 @@ pub fn evaluate_initial( } { + let n_parachains = active_parachains.len(); if proposal.parachain_heads().len() > n_parachains { bail!(ErrorKind::TooManyCandidates(n_parachains, proposal.parachain_heads().len())); } let mut last_id = None; + let mut iter = active_parachains.iter(); for head in proposal.parachain_heads() { // proposed heads must be ascending order by parachain ID. if last_id.as_ref().map_or(false, |x| x >= &head.parachain_index) { - bail!(ErrorKind::InvalidParachainHeads); + bail!(ErrorKind::ParachainOutOfOrder); + } + + if iter.position(|x| x == &head.parachain_index).is_none() { + // must be unknown since active parachains are always sorted. + bail!(ErrorKind::UnknownParachain(head.parachain_index)) } - last_id = Some(head.parachain_index.clone()); + last_id = Some(head.parachain_index); } } diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index e9b150ba36bd5..4c55af638289c 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -73,10 +73,10 @@ use transaction_pool::{Ready, TransactionPool}; use tokio_timer::{Timer, Interval, Sleep, TimerError}; use futures::prelude::*; +use futures::future::{self, Shared}; use parking_lot::Mutex; use collation::{Collators, CollationFetch}; use dynamic_inclusion::DynamicInclusion; -use futures::future::Shared; pub use self::error::{ErrorKind, Error}; pub use self::shared_table::{SharedTable, StatementSource, StatementProducer, ProducedStatements}; @@ -254,7 +254,9 @@ impl bft::ProposerFactory for ProposerFactory sign_with.public().0, )?; - let n_parachains = group_info.len(); + let active_parachains = self.client.active_parachains(&checked_id)?; + + let n_parachains = active_parachains.len(); let table = Arc::new(SharedTable::new(group_info, sign_with.clone(), parent_hash)); let router = self.network.table_router(table.clone()); let dynamic_inclusion = DynamicInclusion::new( @@ -323,11 +325,10 @@ impl bft::Proposer for Proposer fn propose(&self) -> Self::Create { const ATTEMPT_PROPOSE_EVERY: Duration = Duration::from_millis(100); - debug!(target: "bft", "proposing block on top of parent ({}, {:?})", self.parent_number, self.parent_hash); - + let initial_included = self.table.includable_count(); let enough_candidates = self.dynamic_inclusion.acceptable_in( Instant::now(), - self.table.includable_count(), + initial_included, ).unwrap_or_default(); CreateProposal { @@ -342,13 +343,15 @@ impl bft::Proposer for Proposer self.collators.clone(), self.client.clone() ), - dynamic_inclusion: self.dynamic_inclusion.clone(), table: self.table.clone(), router: self.router.clone(), timing: ProposalTiming { timer: self.timer.clone(), attempt_propose: self.timer.interval(ATTEMPT_PROPOSE_EVERY), enough_candidates: self.timer.sleep(enough_candidates), + dynamic_inclusion: self.dynamic_inclusion.clone(), + minimum_delay: Some(self.delay.clone()), + last_included: initial_included, } } } @@ -357,26 +360,73 @@ impl bft::Proposer for Proposer fn evaluate(&self, proposal: &SubstrateBlock) -> Self::Evaluate { debug!(target: "bft", "evaluating block on top of parent ({}, {:?})", self.parent_number, self.parent_hash); - let maybe_evaluated = evaluation::evaluate_initial( + let active_parachains = match self.client.active_parachains(&self.parent_id) { + Ok(x) => x, + Err(e) => return Box::new(future::err(e.into())) as Box<_>, + }; + + let current_timestamp = current_timestamp(); + + // do initial serialization and structural integrity checks. + let maybe_proposal = evaluation::evaluate_initial( proposal, - current_timestamp(), + current_timestamp, &self.parent_hash, self.parent_number, - 999, // TODO: n_parachains. + &active_parachains, ); - let evaluated = match maybe_evaluated { - Ok(proposal) => self.client.evaluate_block(&self.parent_id, proposal.into()).map_err(Into::into), + let proposal = match maybe_proposal { + Ok(p) => p, Err(e) => { debug!(target: "bft", "Invalid proposal: {:?}", e); - Ok(false) + return Box::new(future::ok(false)); } }; - // delay casting vote until able. - Box::new(self.delay.clone() - .map_err(|e| Error::from(::tokio_timer::TimerError::clone(&*e))) - .and_then(move |_| evaluated)) + let vote_delays = { + // delay casting vote until able (according to minimum block time) + let minimum_delay = self.delay.clone() + .map_err(|e| Error::from(::tokio_timer::TimerError::clone(&*e))); + + let included_candidate_hashes = proposal + .parachain_heads() + .iter() + .map(|candidate| candidate.hash()); + + // delay casting vote until we have proof that all candidates are + // includable. + let includability_tracker = self.table.track_includability(included_candidate_hashes) + .map_err(|_| ErrorKind::PrematureDestruction.into()); + + // delay casting vote until the timestamp of the block is current. + let proposed_timestamp = proposal.timestamp(); + let timestamp_delay = if proposed_timestamp > current_timestamp { + let f = self.timer.sleep(Duration::from_secs(proposed_timestamp - current_timestamp)) + .map_err(Error::from); + + future::Either::A(f) + } else { + future::Either::B(future::ok(())) + }; + + minimum_delay.join3(includability_tracker, timestamp_delay) + }; + + // evaluate whether the block is actually valid. + let evaluated = self.client.evaluate_block(&self.parent_id, proposal.into()).map_err(Into::into); + let future = future::result(evaluated).and_then(move |good| { + let end_result = future::ok(good); + if good { + // delay a "good" vote. + future::Either::A(vote_delays.and_then(|_| end_result)) + } else { + // don't delay a "bad" evaluation. + future::Either::B(end_result) + } + }); + + Box::new(future) as Box<_> } fn round_proposer(&self, round_number: usize, authorities: &[AuthorityId]) -> AuthorityId { @@ -455,27 +505,47 @@ fn current_timestamp() -> Timestamp { struct ProposalTiming { timer: Timer, attempt_propose: Interval, + dynamic_inclusion: DynamicInclusion, enough_candidates: Sleep, + minimum_delay: Option>, + last_included: usize, } impl ProposalTiming { // whether it's time to attempt a proposal. - // should only be called within the context of a task. - fn attempt_propose(&mut self) -> Result { - match self.attempt_propose.poll()? { - Async::Ready(x) => { x.expect("timer still alive; intervals never end; qed"); Ok(true) } - Async::NotReady => Ok({ - match self.enough_candidates.poll()? { - Async::Ready(()) => true, - Async::NotReady => false, - } - }) + // shouldn't be called outside of the context of a task. + fn poll(&mut self, included: usize) -> Poll<(), TimerError> { + + // first drain from the interval so when the minimum delay is up + // we don't have any notifications built up. + // + // this interval is just meant to produce periodic task wakeups + // that lead to the `dynamic_inclusion` getting updated as necessary. + if let Async::Ready(x) = self.attempt_propose.poll()? { + x.expect("timer still alive; intervals never end; qed"); } - } - // schedule the time when enough candidates are ready. - fn enough_candidates_at(&mut self, duration: Duration) { - self.enough_candidates = self.timer.sleep(duration); + if let Some(ref mut min) = self.minimum_delay { + try_ready!(min.poll().map_err(|e| TimerError::clone(&*e))); + } + self.minimum_delay = None; // after this point, the future must have completed. + + if included == self.last_included { + return self.enough_candidates.poll(); + } + + // the amount of includable candidates has changed. schedule a wakeup + // if it's not sufficient anymore. + match self.dynamic_inclusion.acceptable_in(Instant::now(), included) { + Some(duration) => { + self.last_included = included; + self.enough_candidates = self.timer.sleep(duration); + self.enough_candidates.poll() + } + None => { + Ok(Async::Ready(())) + } + } } } @@ -486,7 +556,6 @@ pub struct CreateProposal { parent_id: C::CheckedBlockId, client: Arc, transaction_pool: Arc>, - dynamic_inclusion: DynamicInclusion, collation: CollationFetch, router: R, table: Arc, @@ -546,12 +615,15 @@ impl CreateProposal let substrate_block = Slicable::decode(&mut polkadot_block.encode().as_slice()) .expect("polkadot blocks defined to serialize to substrate blocks correctly; qed"); + + // TODO: full re-evaluation + let active_parachains = self.client.active_parachains(&self.parent_id)?; assert!(evaluation::evaluate_initial( &substrate_block, timestamp, &self.parent_hash, self.parent_number, - 999, // TODO: n_parachains + &active_parachains, ).is_ok()); Ok(substrate_block) @@ -579,27 +651,17 @@ impl Future for CreateProposal Err(_) => {}, // TODO: handle this failure to collate. } - // 2. try to propose if our interval or previous timer has gone off. - let proposal = if self.timing.attempt_propose()? { - let included = self.table.includable_count(); - match self.dynamic_inclusion.acceptable_in(Instant::now(), included) { - Some(sleep_for) => { - self.timing.enough_candidates_at(sleep_for); - None - } - None => { - self.table.with_proposal(|proposed_set| { - Some(proposed_set.into_iter().cloned().collect()) - }) - } - } - } else { - None - }; + // 2. try to propose if we have enough includable candidates and other + // delays have concluded. + let included = self.table.includable_count(); + try_ready!(self.timing.poll(included)); - Ok(match proposal { - Some(p) => Async::Ready(self.propose_with(p)?), - None => Async::NotReady, - }) + + // 3. propose + let proposed_candidates = self.table.with_proposal(|proposed_set| { + proposed_set.into_iter().cloned().collect() + }); + + self.propose_with(proposed_candidates).map(Async::Ready) } } From 7bcf8e52686fd9b9cb41fa09a032a4937038abb6 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 13 Apr 2018 21:46:26 +0200 Subject: [PATCH 027/103] comments --- polkadot/consensus/src/evaluation.rs | 2 +- polkadot/consensus/src/lib.rs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/polkadot/consensus/src/evaluation.rs b/polkadot/consensus/src/evaluation.rs index 73fae4a50bb55..63bd076daf12d 100644 --- a/polkadot/consensus/src/evaluation.rs +++ b/polkadot/consensus/src/evaluation.rs @@ -117,7 +117,7 @@ pub fn evaluate_initial( let mut last_id = None; let mut iter = active_parachains.iter(); for head in proposal.parachain_heads() { - // proposed heads must be ascending order by parachain ID. + // proposed heads must be ascending order by parachain ID without duplicate. if last_id.as_ref().map_or(false, |x| x >= &head.parachain_index) { bail!(ErrorKind::ParachainOutOfOrder); } diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 4c55af638289c..1faa2da63a9b3 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -356,7 +356,6 @@ impl bft::Proposer for Proposer } } - // TODO: certain kinds of errors here should lead to a misbehavior report. fn evaluate(&self, proposal: &SubstrateBlock) -> Self::Evaluate { debug!(target: "bft", "evaluating block on top of parent ({}, {:?})", self.parent_number, self.parent_hash); @@ -379,6 +378,7 @@ impl bft::Proposer for Proposer let proposal = match maybe_proposal { Ok(p) => p, Err(e) => { + // TODO: these errors are easily re-checked in runtime. debug!(target: "bft", "Invalid proposal: {:?}", e); return Box::new(future::ok(false)); } @@ -414,6 +414,7 @@ impl bft::Proposer for Proposer }; // evaluate whether the block is actually valid. + // TODO: is it better to delay this until the delays are finished? let evaluated = self.client.evaluate_block(&self.parent_id, proposal.into()).map_err(Into::into); let future = future::result(evaluated).and_then(move |good| { let end_result = future::ok(good); From e63431bbb4674eaaa95474ae70fda9fab265d54c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 13 Apr 2018 22:00:02 +0200 Subject: [PATCH 028/103] fix dynamic inclusion with zero initial --- polkadot/consensus/src/dynamic_inclusion.rs | 35 +++++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/polkadot/consensus/src/dynamic_inclusion.rs b/polkadot/consensus/src/dynamic_inclusion.rs index 254353c0f7202..4fec26a196a61 100644 --- a/polkadot/consensus/src/dynamic_inclusion.rs +++ b/polkadot/consensus/src/dynamic_inclusion.rs @@ -41,8 +41,13 @@ impl DynamicInclusion { // linear function f(n_candidates) -> valid after microseconds // f(0) = allow_empty // f(initial) = 0 - let y = duration_to_micros(&allow_empty) as i64; - let m = -y / initial as i64; + let (y, m) = if initial != 0 { + let y = duration_to_micros(&allow_empty) as i64; + + (y, -y / initial as i64) + } else { + (0, 0) + }; DynamicInclusion { start, @@ -57,14 +62,14 @@ impl DynamicInclusion { /// Panics if `now` is earlier than the `start`. pub fn acceptable_in(&self, now: Instant, included: usize) -> Option { let elapsed = now.duration_since(self.start); - let elapsed_millis = duration_to_micros(&elapsed) as i64; + let elapsed = duration_to_micros(&elapsed) as i64; - let valid_after_millis = self.y + self.m * included as i64; + let valid_after = self.y + self.m * included as i64; - if elapsed_millis >= valid_after_millis { + if elapsed >= valid_after { None } else { - Some(Duration::from_millis((valid_after_millis - elapsed_millis) as u64 / 1000)) + Some(Duration::from_millis((valid_after - elapsed) as u64 / 1000)) } } } @@ -103,4 +108,22 @@ mod tests { assert!(dynamic.acceptable_in(now + Duration::from_millis(3000), 5).is_none()); assert!(dynamic.acceptable_in(now + Duration::from_millis(4000), 5).is_none()); } + + #[test] + fn zero_initial_is_flat() { + let now = Instant::now(); + + let dynamic = DynamicInclusion::new( + 0, + now, + Duration::from_secs(10_000), + ); + + for i in 0..10_001 { + let now = now + Duration::from_secs(i); + assert!(dynamic.acceptable_in(now, 0).is_none()); + assert!(dynamic.acceptable_in(now, 1).is_none()); + assert!(dynamic.acceptable_in(now, 10).is_none()); + } + } } From 1f5faa3845d5d22d16db9b2db6bc4b7ad3b58068 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 16 Apr 2018 23:26:50 +0200 Subject: [PATCH 029/103] test for includability tracker --- polkadot/consensus/src/lib.rs | 2 -- .../consensus/src/shared_table/includable.rs | 33 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index ddc9df3d91d76..d9efa063e39f0 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -609,7 +609,6 @@ impl CreateProposal } let polkadot_block = block_builder.bake(); - info!("Proposing block [number: {}; extrinsics: [{}], parent_hash: {}]", polkadot_block.header.number, polkadot_block.extrinsics.len(), polkadot_block.header.parent_hash); info!("Proposing block [number: {}; hash: {}; parent_hash: {}; extrinsics: [{}]]", polkadot_block.header.number, @@ -624,7 +623,6 @@ impl CreateProposal let substrate_block = Slicable::decode(&mut polkadot_block.encode().as_slice()) .expect("polkadot blocks defined to serialize to substrate blocks correctly; qed"); - // TODO: full re-evaluation let active_parachains = self.client.active_parachains(&self.parent_id)?; assert!(evaluation::evaluate_initial( diff --git a/polkadot/consensus/src/shared_table/includable.rs b/polkadot/consensus/src/shared_table/includable.rs index 58eb6b3a81a5c..873c3af94c403 100644 --- a/polkadot/consensus/src/shared_table/includable.rs +++ b/polkadot/consensus/src/shared_table/includable.rs @@ -102,3 +102,36 @@ impl Future for Includable { self.0.poll() } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let hash1 = [1; 32].into(); + let hash2 = [2; 32].into(); + let hash3 = [3; 32].into(); + + let (mut sender, recv) = track([ + (hash1, true), + (hash2, true), + (hash2, false), // overwrite should favor latter. + (hash3, true), + ].iter().cloned()); + + assert!(!sender.is_complete()); + + // true -> false transition is possible and should be handled. + sender.update_candidate(hash1, false); + assert!(!sender.is_complete()); + + sender.update_candidate(hash2, true); + assert!(!sender.is_complete()); + + sender.update_candidate(hash1, true); + assert!(sender.is_complete()); + + recv.wait().unwrap(); + } +} From 213cfab922e616e984058c3f1b24ff460ea3baec Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 18:28:12 +0200 Subject: [PATCH 030/103] wasm validation of parachain candidates --- Cargo.lock | 3 + polkadot/collator/Cargo.toml | 5 +- polkadot/collator/src/lib.rs | 27 +-- polkadot/collator/src/wasm.rs | 226 ++++++++++++++++++++++++ substrate/executor/src/wasm_executor.rs | 4 - 5 files changed, 250 insertions(+), 15 deletions(-) create mode 100644 polkadot/collator/src/wasm.rs diff --git a/Cargo.lock b/Cargo.lock index 02e95df1a43f3..bba83dd7118cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1218,9 +1218,12 @@ dependencies = [ name = "polkadot-collator" version = "0.1.0" dependencies = [ + "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", + "substrate-codec 0.1.0", "substrate-primitives 0.1.0", + "wasmi 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/polkadot/collator/Cargo.toml b/polkadot/collator/Cargo.toml index 6f1fa1630228f..92564a3fed6bc 100644 --- a/polkadot/collator/Cargo.toml +++ b/polkadot/collator/Cargo.toml @@ -1,10 +1,13 @@ [package] name = "polkadot-collator" version = "0.1.0" -authors = ["Parity Technologies "] +authors = ["Parity Technologies "] description = "Abstract collation logic" [dependencies] futures = "0.1.17" +substrate-codec = { path = "../../substrate/codec", version = "0.1" } substrate-primitives = { path = "../../substrate/primitives", version = "0.1" } polkadot-primitives = { path = "../primitives", version = "0.1" } +error-chain = "0.11" +wasmi = "0.1" diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index 14b430ebbad17..8da5e8bf27630 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -43,10 +43,20 @@ //! //! This crate defines traits which provide context necessary for collation logic //! to be performed, as the collation logic itself. +//! +//! This crate also defines a WASM API and execution environment for evaluating +//! collations. extern crate futures; +extern crate substrate_codec as codec; extern crate substrate_primitives as primitives; extern crate polkadot_primitives; +extern crate wasmi; + +#[macro_use] +extern crate error_chain; + +pub mod wasm; use std::collections::{BTreeSet, BTreeMap}; @@ -82,9 +92,8 @@ pub trait RelayChainContext { } /// Collate the necessary ingress queue using the given context. -// TODO: impl trait pub fn collate_ingress<'a, R>(relay_context: R) - -> Box + 'a> + -> impl Future + 'a where R: RelayChainContext, R::Error: 'a, @@ -105,7 +114,7 @@ pub fn collate_ingress<'a, R>(relay_context: R) // and then by the parachain ID. // // then transform that into the consolidated egress queue. - let future = stream::futures_unordered(egress_fetch) + stream::futures_unordered(egress_fetch) .fold(BTreeMap::new(), |mut map, (routing_id, egresses)| { for (depth, egress) in egresses.into_iter().rev().enumerate() { let depth = -(depth as i64); @@ -116,21 +125,19 @@ pub fn collate_ingress<'a, R>(relay_context: R) }) .map(|ordered| ordered.into_iter().map(|((_, id), egress)| (id, egress))) .map(|i| i.collect::>()) - .map(ConsolidatedIngress); - - Box::new(future) + .map(ConsolidatedIngress) } /// Produce a candidate for the parachain. pub fn collate<'a, R, P>(local_id: ParaId, relay_context: R, para_context: P) - -> Box + 'a> + -> impl Future + 'a where - R: RelayChainContext, + R: RelayChainContext + 'a, R::Error: 'a, R::FutureEgress: 'a, P: ParachainContext + 'a, { - Box::new(collate_ingress(relay_context).map(move |ingress| { + collate_ingress(relay_context).map(move |ingress| { let (block_data, _, signature) = para_context.produce_candidate( ingress.0.iter().flat_map(|&(id, ref msgs)| msgs.iter().cloned().map(move |msg| (id, msg))) ); @@ -141,7 +148,7 @@ pub fn collate<'a, R, P>(local_id: ParaId, relay_context: R, para_context: P) block: block_data, unprocessed_ingress: ingress, } - })) + }) } #[cfg(test)] diff --git a/polkadot/collator/src/wasm.rs b/polkadot/collator/src/wasm.rs new file mode 100644 index 0000000000000..b332007d52c79 --- /dev/null +++ b/polkadot/collator/src/wasm.rs @@ -0,0 +1,226 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! WASM re-execution of a parachain candidate. +//! +//! In the context of relay-chain candidate evaluation, there are some additional +//! steps to ensure that the provided input parameters are correct. +//! Assuming the parameters are correct, this module provides a wrapper around +//! a WASM VM for re-execution of a parachain candidate. +//! +//! Polkadot parachain WASM is in the form of a module which imports a memory +//! instance and exports a function `validate`. +//! +//! `validate` accepts as input two `i32` values, representing a pointer/length pair +//! respectively, that encodes `ValidationParams`. +//! +//! `validate` returns an `i32` which is a pointer to a little-endian 32-bit integer denoting a length. +//! Subtracting the length from the initial pointer will give a new pointer to the actual return data, +//! +//! ASCII-diagram demonstrating the return data format: +//! ``` +//! [return data][len (LE-u32)] +//! ^~~returned pointer +//! ``` + +use codec::Slicable; + +use wasmi::{self, Module, ModuleInstance, MemoryInstance, MemoryDescriptor, MemoryRef, ModuleImportResolver}; +use wasmi::{memory_units, RuntimeValue}; +use wasmi::Error as WasmError; + +use std::cell::RefCell; + +error_chain! { + types { Error, ErrorKind, ResultExt; } + foreign_links { + Wasm(WasmError); + } + errors { + /// Call data too big. WASM32 only has a 32-bit address space. + ParamsTooLarge(len: usize) { + description("Validation parameters took up too much space to execute in WASM"), + display("Validation parameters took up {} bytes, max allowed by WASM is {}", len, i32::max_value()), + } + /// Bad return data or type. + BadReturn { + description("Validation function returned invalid data."), + display("Validation function returned invalid data."), + } + } +} + +/// Validation parameters for evaluating the parachain validity function. +// TODO: consolidated ingress and balance downloads +pub struct ValidationParams { + /// The collation body. + pub block_data: Vec, + /// Previous head-data. + pub parent_head: Vec, +} + +impl Slicable for ValidationParams { + fn encode(&self) -> Vec { + let mut v = Vec::new(); + + self.block_data.using_encoded(|s| v.extend(s)); + self.parent_head.using_encoded(|s| v.extend(s)); + + v + } + + fn decode(input: &mut I) -> Option { + Some(ValidationParams { + block_data: Slicable::decode(input)?, + parent_head: Slicable::decode(input)?, + }) + } +} + +/// The post-validation data. +// TODO: egress and balance uploads +pub struct PostValidation { + /// New head data. + pub head_data: Vec +} + +impl Slicable for PostValidation { + fn encode(&self) -> Vec { + self.head_data.encode() + } + + fn decode(input: &mut I) -> Option { + Some(PostValidation { + head_data: Slicable::decode(input)?, + }) + } +} + +struct Resolver { + max_memory: u32, // in pages. + memory: RefCell>, +} + +impl ModuleImportResolver for Resolver { + fn resolve_memory( + &self, + field_name: &str, + descriptor: &MemoryDescriptor, + ) -> Result { + if field_name == "memory" { + let effective_max = descriptor.maximum().unwrap_or(self.max_memory + 1); + if descriptor.initial() > self.max_memory || effective_max > self.max_memory { + Err(WasmError::Instantiation("Module requested too much memory".to_owned())) + } else { + let mem = MemoryInstance::alloc( + memory_units::Pages(descriptor.initial() as usize), + descriptor.maximum().map(|x| memory_units::Pages(x as usize)), + )?; + *self.memory.borrow_mut() = Some(mem.clone()); + Ok(mem) + } + } else { + Err(WasmError::Instantiation("Memory imported under unknown name".to_owned())) + } + } +} + +/// Validate a candidate under the given validation code. +/// +/// This will fail if the validation code is not a proper parachain validation module. +pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> Result { + use wasmi::LINEAR_MEMORY_PAGE_SIZE; + + // maximum memory in bytes + const MAX_MEM: u32 = 1024 * 1024 * 1024; // 1 GiB + + // instantiate the module. + let (module, memory) = { + let module = Module::from_buffer(validation_code)?; + + let module_resolver = Resolver { + max_memory: MAX_MEM / LINEAR_MEMORY_PAGE_SIZE.0 as u32, + memory: RefCell::new(None), + }; + + let module = ModuleInstance::new( + &module, + &wasmi::ImportsBuilder::new().with_resolver("env", &module_resolver), + )?.run_start(&mut wasmi::NopExternals).map_err(WasmError::Trap)?; + + let memory = module_resolver.memory.borrow_mut() + .as_ref() + .ok_or_else(|| WasmError::Instantiation("No imported memory instance".to_owned()))? + .clone(); + + (module, memory) + }; + + // allocate call data in memory. + let (offset, len) = { + let encoded_call_data = params.encode(); + + // hard limit from WASM. + if encoded_call_data.len() > i32::max_value() as usize { + bail!(ErrorKind::ParamsTooLarge(encoded_call_data.len())); + } + + let call_data_pages = (encoded_call_data.len() / LINEAR_MEMORY_PAGE_SIZE.0) + + (encoded_call_data.len() % LINEAR_MEMORY_PAGE_SIZE.0); + + let call_data_pages = wasmi::memory_units::Pages(call_data_pages); + + if memory.current_size() < call_data_pages { + memory.grow(call_data_pages - memory.current_size())?; + } + + memory.set(0, &encoded_call_data).expect("enough memory allocated just before this; \ + copying never fails if memory is large enough; qed"); + + (0, encoded_call_data.len() as i32) + }; + + let output = module.invoke_export( + "validate", + &[RuntimeValue::I32(offset), RuntimeValue::I32(len)], + &mut wasmi::NopExternals, + )?; + + match output { + Some(RuntimeValue::I32(len_offset)) => { + let len_offset = len_offset as u32; + + let mut len_bytes = [0u8; 4]; + memory.get_into(len_offset, &mut len_bytes)?; + + let len = u32::decode(&mut &len_bytes[..]) + .ok_or_else(|| ErrorKind::BadReturn)?; + + let return_offset = if len > len_offset { + bail!(ErrorKind::BadReturn); + } else { + len_offset - len + }; + + // TODO: optimize when `wasmi` lets you inspect memory with a closure. + let raw_return = memory.get(return_offset, len as usize)?; + PostValidation::decode(&mut &raw_return[..]) + .ok_or_else(|| ErrorKind::BadReturn) + .map_err(Into::into) + } + _ => bail!(ErrorKind::BadReturn), + } +} diff --git a/substrate/executor/src/wasm_executor.rs b/substrate/executor/src/wasm_executor.rs index c02a7e630aa18..6e28c9b50e200 100644 --- a/substrate/executor/src/wasm_executor.rs +++ b/substrate/executor/src/wasm_executor.rs @@ -329,9 +329,6 @@ impl CodeExecutor for WasmExecutor { method: &str, data: &[u8], ) -> Result> { - // TODO: handle all expects as errors to be returned. - println!("Wasm-Calling {}({})", method, HexDisplay::from(&data)); - let module = Module::from_buffer(code).expect("all modules compiled with rustc are valid wasm code; qed"); // start module instantiation. Don't run 'start' function yet. @@ -372,7 +369,6 @@ impl CodeExecutor for WasmExecutor { let length = (r >> 32) as u32 as usize; memory.get(offset, length) .map_err(|_| ErrorKind::Runtime.into()) - .map(|v| { println!("Returned {}", HexDisplay::from(&v)); v }) } else { Err(ErrorKind::InvalidReturn.into()) } From eeebde3d58583ff320bddd244cb76b140feae0c1 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 18:40:55 +0200 Subject: [PATCH 031/103] move primitives to primitives crate --- polkadot/collator/src/wasm.rs | 52 ++------------------- polkadot/primitives/src/validator.rs | 68 +++++++++++++++++----------- 2 files changed, 46 insertions(+), 74 deletions(-) diff --git a/polkadot/collator/src/wasm.rs b/polkadot/collator/src/wasm.rs index b332007d52c79..d75dbb5319029 100644 --- a/polkadot/collator/src/wasm.rs +++ b/polkadot/collator/src/wasm.rs @@ -42,6 +42,8 @@ use wasmi::{self, Module, ModuleInstance, MemoryInstance, MemoryDescriptor, Mem use wasmi::{memory_units, RuntimeValue}; use wasmi::Error as WasmError; +use polkadot_primitives::validator::{ValidationParams, ValidationResult}; + use std::cell::RefCell; error_chain! { @@ -63,52 +65,6 @@ error_chain! { } } -/// Validation parameters for evaluating the parachain validity function. -// TODO: consolidated ingress and balance downloads -pub struct ValidationParams { - /// The collation body. - pub block_data: Vec, - /// Previous head-data. - pub parent_head: Vec, -} - -impl Slicable for ValidationParams { - fn encode(&self) -> Vec { - let mut v = Vec::new(); - - self.block_data.using_encoded(|s| v.extend(s)); - self.parent_head.using_encoded(|s| v.extend(s)); - - v - } - - fn decode(input: &mut I) -> Option { - Some(ValidationParams { - block_data: Slicable::decode(input)?, - parent_head: Slicable::decode(input)?, - }) - } -} - -/// The post-validation data. -// TODO: egress and balance uploads -pub struct PostValidation { - /// New head data. - pub head_data: Vec -} - -impl Slicable for PostValidation { - fn encode(&self) -> Vec { - self.head_data.encode() - } - - fn decode(input: &mut I) -> Option { - Some(PostValidation { - head_data: Slicable::decode(input)?, - }) - } -} - struct Resolver { max_memory: u32, // in pages. memory: RefCell>, @@ -141,7 +97,7 @@ impl ModuleImportResolver for Resolver { /// Validate a candidate under the given validation code. /// /// This will fail if the validation code is not a proper parachain validation module. -pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> Result { +pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> Result { use wasmi::LINEAR_MEMORY_PAGE_SIZE; // maximum memory in bytes @@ -217,7 +173,7 @@ pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> R // TODO: optimize when `wasmi` lets you inspect memory with a closure. let raw_return = memory.get(return_offset, len as usize)?; - PostValidation::decode(&mut &raw_return[..]) + ValidationResult::decode(&mut &raw_return[..]) .ok_or_else(|| ErrorKind::BadReturn) .map_err(Into::into) } diff --git a/polkadot/primitives/src/validator.rs b/polkadot/primitives/src/validator.rs index 0bac607594c6a..1c50e0d6d3826 100644 --- a/polkadot/primitives/src/validator.rs +++ b/polkadot/primitives/src/validator.rs @@ -20,6 +20,7 @@ use primitives::bytes; use rstd::vec::Vec; use parachain; +use codec::Slicable; /// Parachain outgoing message. #[derive(PartialEq, Eq)] @@ -36,7 +37,39 @@ pub struct BalanceUpload(#[cfg_attr(feature = "std", serde(with="bytes"))] pub V #[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct BalanceDownload(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); +/// Validation parameters for evaluating the parachain validity function. +// TODO: consolidated ingress and balance downloads +#[derive(PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] +#[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] +#[cfg_attr(feature = "std", serde(deny_unknown_fields))] +pub struct ValidationParams { + /// The collation body. + pub block_data: parachain::BlockData, + /// Previous head-data. + pub parent_head: parachain::HeadData, +} + +impl Slicable for ValidationParams { + fn encode(&self) -> Vec { + let mut v = Vec::new(); + + self.block_data.0.using_encoded(|s| v.extend(s)); + self.parent_head.0.using_encoded(|s| v.extend(s)); + + v + } + + fn decode(input: &mut I) -> Option { + Some(ValidationParams { + block_data: Slicable::decode(input).map(parachain::BlockData)?, + parent_head: Slicable::decode(input).map(parachain::HeadData)?, + }) + } +} + /// The result of parachain validation. +// TODO: egress and balance uploads #[derive(PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Serialize, Debug))] #[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] @@ -44,33 +77,16 @@ pub struct BalanceDownload(#[cfg_attr(feature = "std", serde(with="bytes"))] pub pub struct ValidationResult { /// New head data that should be included in the relay chain state. pub head_data: parachain::HeadData, - /// Outgoing messages (a vec for each parachain). - pub egress_queues: Vec>, - /// Balance uploads - pub balance_uploads: Vec, } -#[cfg(test)] -mod tests { - use super::*; - use substrate_serializer as ser; - - #[test] - fn test_validation_result() { - assert_eq!(ser::to_string_pretty(&ValidationResult { - head_data: parachain::HeadData(vec![1]), - egress_queues: vec![vec![EgressPost(vec![1])]], - balance_uploads: vec![BalanceUpload(vec![2])], - }), r#"{ - "headData": "0x01", - "egressQueues": [ - [ - "0x01" - ] - ], - "balanceUploads": [ - "0x02" - ] -}"#); +impl Slicable for ValidationResult { + fn encode(&self) -> Vec { + self.head_data.0.encode() + } + + fn decode(input: &mut I) -> Option { + Some(ValidationResult { + head_data: Slicable::decode(input).map(parachain::HeadData)?, + }) } } From d01531ff94a166ec9cfab2355e0d70a1e6109473 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 18:46:50 +0200 Subject: [PATCH 032/103] remove runtime-std dependency from codec --- Cargo.lock | 3 --- demo/runtime/wasm/Cargo.lock | 3 --- substrate/codec/Cargo.toml | 3 +-- substrate/codec/src/joiner.rs | 2 +- substrate/codec/src/keyedvec.rs | 4 ++-- substrate/codec/src/lib.rs | 16 ++++++++++++++-- substrate/codec/src/slicable.rs | 11 ++++++----- 7 files changed, 24 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bba83dd7118cd..19f1ec85a00df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1775,9 +1775,6 @@ dependencies = [ [[package]] name = "substrate-codec" version = "0.1.0" -dependencies = [ - "substrate-runtime-std 0.1.0", -] [[package]] name = "substrate-executor" diff --git a/demo/runtime/wasm/Cargo.lock b/demo/runtime/wasm/Cargo.lock index 45cc1fee9aec3..fbb9d3aa3af07 100644 --- a/demo/runtime/wasm/Cargo.lock +++ b/demo/runtime/wasm/Cargo.lock @@ -629,9 +629,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "substrate-codec" version = "0.1.0" -dependencies = [ - "substrate-runtime-std 0.1.0", -] [[package]] name = "substrate-keyring" diff --git a/substrate/codec/Cargo.toml b/substrate/codec/Cargo.toml index e813ff4bca9a1..a800afa926baa 100644 --- a/substrate/codec/Cargo.toml +++ b/substrate/codec/Cargo.toml @@ -5,8 +5,7 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -substrate-runtime-std = { path = "../runtime-std", default_features = false } [features] default = ["std"] -std = ["substrate-runtime-std/std"] +std = [] diff --git a/substrate/codec/src/joiner.rs b/substrate/codec/src/joiner.rs index dbe590f2bd03d..f5775082fd854 100644 --- a/substrate/codec/src/joiner.rs +++ b/substrate/codec/src/joiner.rs @@ -16,7 +16,7 @@ //! Trait -use rstd::iter::Extend; +use core::iter::Extend; use super::slicable::Slicable; /// Trait to allow itself to be serialised into a value which can be extended diff --git a/substrate/codec/src/keyedvec.rs b/substrate/codec/src/keyedvec.rs index d57d1dd111972..353c7ec0e97c8 100644 --- a/substrate/codec/src/keyedvec.rs +++ b/substrate/codec/src/keyedvec.rs @@ -17,8 +17,8 @@ //! Serialiser and prepender. use slicable::Slicable; -use rstd::iter::Extend; -use rstd::vec::Vec; +use core::iter::Extend; +use alloc::vec::Vec; /// Trait to allow itselg to be serialised and prepended by a given slice. pub trait KeyedVec { diff --git a/substrate/codec/src/lib.rs b/substrate/codec/src/lib.rs index 7a9f17baeb510..25c6bd88d62e6 100644 --- a/substrate/codec/src/lib.rs +++ b/substrate/codec/src/lib.rs @@ -20,8 +20,20 @@ #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), feature(alloc))] -#[cfg_attr(not(feature = "std"), macro_use)] -extern crate substrate_runtime_std as rstd; +#![cfg(not(feature = "std"))] +#[macro_use] +extern crate alloc; + +#[cfg(feature = "std")] +extern crate core; + +#[cfg(feature = "std")] +#[doc(hidden)] +pub mod alloc { + pub use std::boxed; + pub use std::vec; +} + mod slicable; mod joiner; diff --git a/substrate/codec/src/slicable.rs b/substrate/codec/src/slicable.rs index 592a348c194fd..1662b4846f6b4 100644 --- a/substrate/codec/src/slicable.rs +++ b/substrate/codec/src/slicable.rs @@ -16,8 +16,9 @@ //! Serialisation. -use rstd::prelude::*; -use rstd::{mem, slice}; +use alloc::vec::Vec; +use alloc::boxed::Box; +use core::{mem, slice}; use super::joiner::Joiner; /// Trait that allows reading of data into a slice. @@ -38,7 +39,7 @@ pub trait Input { impl<'a> Input for &'a [u8] { fn read(&mut self, into: &mut [u8]) -> usize { - let len = ::rstd::cmp::min(into.len(), self.len()); + let len = ::core::cmp::min(into.len(), self.len()); into[..len].copy_from_slice(&self[..len]); *self = &self[len..]; len @@ -130,7 +131,7 @@ impl Slicable for Vec { } fn encode(&self) -> Vec { - use rstd::iter::Extend; + use core::iter::Extend; let len = self.len(); assert!(len <= u32::max_value() as usize, "Attempted to serialize vec with too many elements."); @@ -216,7 +217,7 @@ macro_rules! tuple_impl { #[allow(non_snake_case)] mod inner_tuple_impl { - use rstd::vec::Vec; + use alloc::vec::Vec; use super::{Input, Slicable}; tuple_impl!(A, B, C, D, E, F, G, H, I, J, K,); From 1a84478b856e0675b397d163138245ee493fb837 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 19:03:36 +0200 Subject: [PATCH 033/103] adjust doc --- substrate/codec/src/lib.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/substrate/codec/src/lib.rs b/substrate/codec/src/lib.rs index 25c6bd88d62e6..15650b1db7121 100644 --- a/substrate/codec/src/lib.rs +++ b/substrate/codec/src/lib.rs @@ -14,8 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! Implements the serialization and deserialization codec for polkadot runtime -//! values. +//! Implements a serialization and deserialization codec, usable from WebAssembly. #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), feature(alloc))] From c18ed9a204afd44d461781ef12f9151b80dadd5f Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 19:23:18 +0200 Subject: [PATCH 034/103] polkadot-parachain-primitives --- Cargo.lock | 8 +++ Cargo.toml | 1 + polkadot/collator/Cargo.toml | 1 + polkadot/collator/src/lib.rs | 1 + polkadot/collator/src/wasm.rs | 2 +- polkadot/parachain-primitives/Cargo.toml | 11 ++++ polkadot/parachain-primitives/src/lib.rs | 80 ++++++++++++++++++++++++ polkadot/primitives/src/validator.rs | 54 ---------------- substrate/codec/src/lib.rs | 6 +- 9 files changed, 105 insertions(+), 59 deletions(-) create mode 100644 polkadot/parachain-primitives/Cargo.toml create mode 100644 polkadot/parachain-primitives/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 19f1ec85a00df..cbbf6a6b8095d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1220,6 +1220,7 @@ version = "0.1.0" dependencies = [ "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "polkadot-parachain-primitives 0.1.0", "polkadot-primitives 0.1.0", "substrate-codec 0.1.0", "substrate-primitives 0.1.0", @@ -1286,6 +1287,13 @@ dependencies = [ "tempdir 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "polkadot-parachain-primitives" +version = "0.1.0" +dependencies = [ + "substrate-codec 0.1.0", +] + [[package]] name = "polkadot-primitives" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 4c5c69275042e..d8da66cef1d1c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ members = [ "polkadot/consensus", "polkadot/executor", "polkadot/keystore", + "polkadot/parachain-primitives", "polkadot/primitives", "polkadot/runtime", "polkadot/statement-table", diff --git a/polkadot/collator/Cargo.toml b/polkadot/collator/Cargo.toml index 92564a3fed6bc..1bdc0408f9946 100644 --- a/polkadot/collator/Cargo.toml +++ b/polkadot/collator/Cargo.toml @@ -9,5 +9,6 @@ futures = "0.1.17" substrate-codec = { path = "../../substrate/codec", version = "0.1" } substrate-primitives = { path = "../../substrate/primitives", version = "0.1" } polkadot-primitives = { path = "../primitives", version = "0.1" } +polkadot-parachain-primitives = { path = "../parachain-primitives", version = "0.1" } error-chain = "0.11" wasmi = "0.1" diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index 8da5e8bf27630..6dc4c815f4848 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -51,6 +51,7 @@ extern crate futures; extern crate substrate_codec as codec; extern crate substrate_primitives as primitives; extern crate polkadot_primitives; +extern crate polkadot_parachain_primitives as para_primitives; extern crate wasmi; #[macro_use] diff --git a/polkadot/collator/src/wasm.rs b/polkadot/collator/src/wasm.rs index d75dbb5319029..beb0d0af8330f 100644 --- a/polkadot/collator/src/wasm.rs +++ b/polkadot/collator/src/wasm.rs @@ -42,7 +42,7 @@ use wasmi::{self, Module, ModuleInstance, MemoryInstance, MemoryDescriptor, Mem use wasmi::{memory_units, RuntimeValue}; use wasmi::Error as WasmError; -use polkadot_primitives::validator::{ValidationParams, ValidationResult}; +use para_primitives::{ValidationParams, ValidationResult}; use std::cell::RefCell; diff --git a/polkadot/parachain-primitives/Cargo.toml b/polkadot/parachain-primitives/Cargo.toml new file mode 100644 index 0000000000000..90fbd6b118441 --- /dev/null +++ b/polkadot/parachain-primitives/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "polkadot-parachain-primitives" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +substrate-codec = { path = "../../substrate/codec", default_features = false } + +[features] +default = ["std"] +std = ["substrate-codec/std"] diff --git a/polkadot/parachain-primitives/src/lib.rs b/polkadot/parachain-primitives/src/lib.rs new file mode 100644 index 0000000000000..8a85fe1b7cb3a --- /dev/null +++ b/polkadot/parachain-primitives/src/lib.rs @@ -0,0 +1,80 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Defines primitive types for creating or validating a parachain. + +extern crate substrate_codec as codec; + +#[cfg_attr(not(feature = "std"), no_std)] +#[cfg_attr(not(feature = "std"), feature(alloc))] + +#[cfg(not(feature = "std"))] +extern crate alloc; + +#[cfg(not(feature = "std"))] +use alloc::vec::Vec; + +use codec::Slicable; + +/// Validation parameters for evaluating the parachain validity function. +// TODO: consolidated ingress and balance downloads +#[derive(PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct ValidationParams { + /// The collation body. + pub block_data: Vec, + /// Previous head-data. + pub parent_head: Vec, +} + +impl Slicable for ValidationParams { + fn encode(&self) -> Vec { + let mut v = Vec::new(); + + self.block_data.using_encoded(|s| v.extend(s)); + self.parent_head.using_encoded(|s| v.extend(s)); + + v + } + + fn decode(input: &mut I) -> Option { + Some(ValidationParams { + block_data: Slicable::decode(input)?, + parent_head: Slicable::decode(input)?, + }) + } +} + +/// The result of parachain validation. +// TODO: egress and balance uploads +#[derive(PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct ValidationResult { + /// New head data that should be included in the relay chain state. + pub head_data: Vec +} + +impl Slicable for ValidationResult { + fn encode(&self) -> Vec { + self.head_data.encode() + } + + fn decode(input: &mut I) -> Option { + Some(ValidationResult { + head_data: Slicable::decode(input)?, + }) + } +} diff --git a/polkadot/primitives/src/validator.rs b/polkadot/primitives/src/validator.rs index 1c50e0d6d3826..2df5ba593f99c 100644 --- a/polkadot/primitives/src/validator.rs +++ b/polkadot/primitives/src/validator.rs @@ -36,57 +36,3 @@ pub struct BalanceUpload(#[cfg_attr(feature = "std", serde(with="bytes"))] pub V #[derive(PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct BalanceDownload(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); - -/// Validation parameters for evaluating the parachain validity function. -// TODO: consolidated ingress and balance downloads -#[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Debug))] -#[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] -#[cfg_attr(feature = "std", serde(deny_unknown_fields))] -pub struct ValidationParams { - /// The collation body. - pub block_data: parachain::BlockData, - /// Previous head-data. - pub parent_head: parachain::HeadData, -} - -impl Slicable for ValidationParams { - fn encode(&self) -> Vec { - let mut v = Vec::new(); - - self.block_data.0.using_encoded(|s| v.extend(s)); - self.parent_head.0.using_encoded(|s| v.extend(s)); - - v - } - - fn decode(input: &mut I) -> Option { - Some(ValidationParams { - block_data: Slicable::decode(input).map(parachain::BlockData)?, - parent_head: Slicable::decode(input).map(parachain::HeadData)?, - }) - } -} - -/// The result of parachain validation. -// TODO: egress and balance uploads -#[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Debug))] -#[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] -#[cfg_attr(feature = "std", serde(deny_unknown_fields))] -pub struct ValidationResult { - /// New head data that should be included in the relay chain state. - pub head_data: parachain::HeadData, -} - -impl Slicable for ValidationResult { - fn encode(&self) -> Vec { - self.head_data.0.encode() - } - - fn decode(input: &mut I) -> Option { - Some(ValidationResult { - head_data: Slicable::decode(input).map(parachain::HeadData)?, - }) - } -} diff --git a/substrate/codec/src/lib.rs b/substrate/codec/src/lib.rs index 15650b1db7121..b4c360fb28958 100644 --- a/substrate/codec/src/lib.rs +++ b/substrate/codec/src/lib.rs @@ -14,12 +14,12 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! Implements a serialization and deserialization codec, usable from WebAssembly. +//! Implements a serialization and deserialization codec for simple marshalling. #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), feature(alloc))] -#![cfg(not(feature = "std"))] +#[cfg(not(feature = "std"))] #[macro_use] extern crate alloc; @@ -27,13 +27,11 @@ extern crate alloc; extern crate core; #[cfg(feature = "std")] -#[doc(hidden)] pub mod alloc { pub use std::boxed; pub use std::vec; } - mod slicable; mod joiner; mod keyedvec; From 51c6063523e902f24ce30f91b3848427dccd746e Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 19:32:00 +0200 Subject: [PATCH 035/103] kill legacy polkadot-validator crate --- Cargo.lock | 11 --- Cargo.toml | 1 - polkadot/primitives/src/lib.rs | 1 - polkadot/primitives/src/validator.rs | 38 ---------- polkadot/validator/Cargo.toml | 11 --- polkadot/validator/src/error.rs | 33 --------- polkadot/validator/src/lib.rs | 34 --------- polkadot/validator/src/parachains.rs | 68 ------------------ polkadot/validator/src/validator.rs | 101 --------------------------- 9 files changed, 298 deletions(-) delete mode 100644 polkadot/primitives/src/validator.rs delete mode 100644 polkadot/validator/Cargo.toml delete mode 100644 polkadot/validator/src/error.rs delete mode 100644 polkadot/validator/src/lib.rs delete mode 100644 polkadot/validator/src/parachains.rs delete mode 100644 polkadot/validator/src/validator.rs diff --git a/Cargo.lock b/Cargo.lock index cbbf6a6b8095d..286f3811dd8bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1391,17 +1391,6 @@ dependencies = [ "transaction-pool 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "polkadot-validator" -version = "0.1.0" -dependencies = [ - "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "polkadot-primitives 0.1.0", - "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "substrate-serializer 0.1.0", -] - [[package]] name = "pretty_assertions" version = "0.4.1" diff --git a/Cargo.toml b/Cargo.toml index d8da66cef1d1c..046465f854a11 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,6 @@ members = [ "polkadot/runtime", "polkadot/statement-table", "polkadot/transaction-pool", - "polkadot/validator", "polkadot/service", "substrate/bft", "substrate/client", diff --git a/polkadot/primitives/src/lib.rs b/polkadot/primitives/src/lib.rs index 012cf57b3d21a..d50475c722061 100644 --- a/polkadot/primitives/src/lib.rs +++ b/polkadot/primitives/src/lib.rs @@ -36,7 +36,6 @@ extern crate substrate_serializer; extern crate substrate_codec as codec; pub mod parachain; -pub mod validator; /// Virtual account ID that represents the idea of a dispatch/statement being signed by everybody /// (who matters). Essentially this means that a majority of validators have decided it is diff --git a/polkadot/primitives/src/validator.rs b/polkadot/primitives/src/validator.rs deleted file mode 100644 index 2df5ba593f99c..0000000000000 --- a/polkadot/primitives/src/validator.rs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Validator primitives. - -#[cfg(feature = "std")] -use primitives::bytes; -use rstd::vec::Vec; -use parachain; -use codec::Slicable; - -/// Parachain outgoing message. -#[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Debug))] -pub struct EgressPost(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); - -/// Balance upload. -#[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Debug))] -pub struct BalanceUpload(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); - -/// Balance download. -#[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Debug))] -pub struct BalanceDownload(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); diff --git a/polkadot/validator/Cargo.toml b/polkadot/validator/Cargo.toml deleted file mode 100644 index 204c356a99098..0000000000000 --- a/polkadot/validator/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "polkadot-validator" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -error-chain = "0.11" -serde = "1.0" -substrate-primitives = { path = "../../substrate/primitives" } -substrate-serializer = { path = "../../substrate/serializer" } -polkadot-primitives = { path = "../primitives" } diff --git a/polkadot/validator/src/error.rs b/polkadot/validator/src/error.rs deleted file mode 100644 index 1c8caf739f6d0..0000000000000 --- a/polkadot/validator/src/error.rs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use serializer; - -error_chain! { - foreign_links { - Serialization(serializer::Error); - } - errors { - Timeout { - description("Validation task has timed-out."), - display("Validation timeout."), - } - InvalidCode(details: String) { - description("The code is invalid."), - display("invalid code: '{}'", details), - } - } -} diff --git a/polkadot/validator/src/lib.rs b/polkadot/validator/src/lib.rs deleted file mode 100644 index dc139e77d5b82..0000000000000 --- a/polkadot/validator/src/lib.rs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Validator implementation. - -#[warn(missing_docs)] - -extern crate substrate_primitives as primitives; -extern crate substrate_serializer as serializer; -extern crate polkadot_primitives; -extern crate serde; - -#[macro_use] -extern crate error_chain; - -mod error; -mod parachains; -mod validator; - -pub use error::{Error, ErrorKind, Result}; -pub use validator::Validator; diff --git a/polkadot/validator/src/parachains.rs b/polkadot/validator/src/parachains.rs deleted file mode 100644 index 67ba56ed1f84c..0000000000000 --- a/polkadot/validator/src/parachains.rs +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::fmt; - -use polkadot_primitives::validator; -use serde::de::DeserializeOwned; - -use error::Result; - -/// Parachain code implementation. -pub trait ParachainCode: fmt::Debug { - /// Deserialized message type. - type Message: DeserializeOwned; - /// Balance download. - type Download: DeserializeOwned; - /// Deserialized block data type. - type BlockData: DeserializeOwned; - /// Parachain head data. - type HeadData: DeserializeOwned; - /// Result - type Result: Into; - - /// Given decoded messages and proof validate it and return egress posts. - fn check( - &self, - messages: Vec<(u64, Vec)>, - downloads: Vec, - block_data: Self::BlockData, - head_data: Self::HeadData, - ) -> Result; -} - -/// Dummy implementation of the first parachain validation. -#[derive(Debug)] -pub struct ParaChain1; - -impl ParachainCode for ParaChain1 { - type Message = (); - type Download = (); - type BlockData = (); - type HeadData = (); - type Result = validator::ValidationResult; - - fn check( - &self, - _messages: Vec<(u64, Vec)>, - _downloads: Vec, - _block_data: Self::BlockData, - _head_data: Self::HeadData, - ) -> Result - { - unimplemented!() - } -} diff --git a/polkadot/validator/src/validator.rs b/polkadot/validator/src/validator.rs deleted file mode 100644 index 354bbf73dcedb..0000000000000 --- a/polkadot/validator/src/validator.rs +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::fmt; - -use polkadot_primitives::{validator, parachain}; -use serde::de::DeserializeOwned; -use serializer; - -use error::{ErrorKind, Result}; -use parachains::{ParachainCode, ParaChain1}; - -/// A dummy validator implementation. -#[derive(Debug)] -pub struct Validator { - codes: Vec>, -} - -impl Validator { - /// Create a new validator. - pub fn new() -> Self { - Validator { - codes: vec![ - Box::new(ParaChain1) as Box - ], - } - } -} - -impl Validator { - pub fn validate( - &self, - code: &[u8], - consolidated_ingress: &[(u64, Vec)], - balance_downloads: &[validator::BalanceDownload], - block_data: ¶chain::BlockData, - previous_head_data: ¶chain::HeadData, - ) -> Result { - ensure!(code.len() == 1, ErrorKind::InvalidCode(format!("The code should be a single byte."))); - - match self.codes.get(code[0] as usize) { - Some(code) => code.check(consolidated_ingress, balance_downloads, block_data, previous_head_data), - None => bail!(ErrorKind::InvalidCode(format!("Unknown parachain code."))), - } - } -} - -/// Simplified parachain code verification -trait Code: fmt::Debug { - /// Given parachain candidate block data returns it's validity - /// and possible generated egress posts. - fn check( - &self, - consolidated_ingress: &[(u64, Vec)], - balance_downloads: &[validator::BalanceDownload], - block_data: ¶chain::BlockData, - previous_head_data: ¶chain::HeadData, - ) -> Result; -} - -impl Code for T where - M: DeserializeOwned, - B: DeserializeOwned, - R: Into, - T: ParachainCode, -{ - fn check( - &self, - consolidated_ingress: &[(u64, Vec)], - balance_downloads: &[validator::BalanceDownload], - block_data: ¶chain::BlockData, - previous_head_data: ¶chain::HeadData, - ) -> Result { - let messages = consolidated_ingress.iter() - .map(|&(ref block, ref vec)| Ok((*block, vec.iter() - .map(|msg| serializer::from_slice(&msg.0).map_err(Into::into)) - .collect::>>()? - ))) - .collect::>>()?; - let downloads = balance_downloads.iter() - .map(|download| serializer::from_slice(&download.0).map_err(Into::into)) - .collect::>>()?; - let block_data = serializer::from_slice(&block_data.0)?; - let head_data = serializer::from_slice(&previous_head_data.0)?; - - Ok(self.check(messages, downloads, block_data, head_data)?.into()) - } -} From 90fe0ff2230469f70a3b427cba6137173bc98ae5 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 21:25:49 +0200 Subject: [PATCH 036/103] basic-add test chain --- Cargo.lock | 8 +- Cargo.toml | 2 +- polkadot/collator/Cargo.toml | 4 +- polkadot/collator/src/lib.rs | 4 - polkadot/parachain-primitives/Cargo.toml | 11 -- polkadot/parachain-primitives/src/lib.rs | 80 ---------- polkadot/parachain/Cargo.toml | 14 ++ polkadot/parachain/src/lib.rs | 145 +++++++++++++++++ polkadot/{collator => parachain}/src/wasm.rs | 18 +-- .../test-modules/basic_add/.gitignore | 1 + .../test-modules/basic_add/Cargo.lock | 147 ++++++++++++++++++ .../test-modules/basic_add/Cargo.toml | 24 +++ .../test-modules/basic_add/src/lib.rs | 101 ++++++++++++ .../test-modules/basic_add/src/wasm.rs | 56 +++++++ polkadot/parachain/test-modules/build.sh | 10 ++ polkadot/parachain/tests/res/basic_add.wasm | Bin 0 -> 124 bytes 16 files changed, 505 insertions(+), 120 deletions(-) delete mode 100644 polkadot/parachain-primitives/Cargo.toml delete mode 100644 polkadot/parachain-primitives/src/lib.rs create mode 100644 polkadot/parachain/Cargo.toml create mode 100644 polkadot/parachain/src/lib.rs rename polkadot/{collator => parachain}/src/wasm.rs (88%) create mode 100644 polkadot/parachain/test-modules/basic_add/.gitignore create mode 100644 polkadot/parachain/test-modules/basic_add/Cargo.lock create mode 100644 polkadot/parachain/test-modules/basic_add/Cargo.toml create mode 100644 polkadot/parachain/test-modules/basic_add/src/lib.rs create mode 100644 polkadot/parachain/test-modules/basic_add/src/wasm.rs create mode 100755 polkadot/parachain/test-modules/build.sh create mode 100755 polkadot/parachain/tests/res/basic_add.wasm diff --git a/Cargo.lock b/Cargo.lock index 286f3811dd8bb..4cb1067615898 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1218,13 +1218,11 @@ dependencies = [ name = "polkadot-collator" version = "0.1.0" dependencies = [ - "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "polkadot-parachain-primitives 0.1.0", + "polkadot-parachain 0.1.0", "polkadot-primitives 0.1.0", "substrate-codec 0.1.0", "substrate-primitives 0.1.0", - "wasmi 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1288,10 +1286,12 @@ dependencies = [ ] [[package]] -name = "polkadot-parachain-primitives" +name = "polkadot-parachain" version = "0.1.0" dependencies = [ + "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", + "wasmi 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 046465f854a11..b9dcb107d2dd7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ members = [ "polkadot/consensus", "polkadot/executor", "polkadot/keystore", - "polkadot/parachain-primitives", + "polkadot/parachain", "polkadot/primitives", "polkadot/runtime", "polkadot/statement-table", diff --git a/polkadot/collator/Cargo.toml b/polkadot/collator/Cargo.toml index 1bdc0408f9946..42fc14c666c18 100644 --- a/polkadot/collator/Cargo.toml +++ b/polkadot/collator/Cargo.toml @@ -9,6 +9,4 @@ futures = "0.1.17" substrate-codec = { path = "../../substrate/codec", version = "0.1" } substrate-primitives = { path = "../../substrate/primitives", version = "0.1" } polkadot-primitives = { path = "../primitives", version = "0.1" } -polkadot-parachain-primitives = { path = "../parachain-primitives", version = "0.1" } -error-chain = "0.11" -wasmi = "0.1" +polkadot-parachain = { path = "../parachain", version = "0.1" } diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index 6dc4c815f4848..c49edf5f808b2 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -51,14 +51,10 @@ extern crate futures; extern crate substrate_codec as codec; extern crate substrate_primitives as primitives; extern crate polkadot_primitives; -extern crate polkadot_parachain_primitives as para_primitives; -extern crate wasmi; #[macro_use] extern crate error_chain; -pub mod wasm; - use std::collections::{BTreeSet, BTreeMap}; use futures::{stream, Stream, Future, IntoFuture}; diff --git a/polkadot/parachain-primitives/Cargo.toml b/polkadot/parachain-primitives/Cargo.toml deleted file mode 100644 index 90fbd6b118441..0000000000000 --- a/polkadot/parachain-primitives/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "polkadot-parachain-primitives" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -substrate-codec = { path = "../../substrate/codec", default_features = false } - -[features] -default = ["std"] -std = ["substrate-codec/std"] diff --git a/polkadot/parachain-primitives/src/lib.rs b/polkadot/parachain-primitives/src/lib.rs deleted file mode 100644 index 8a85fe1b7cb3a..0000000000000 --- a/polkadot/parachain-primitives/src/lib.rs +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Defines primitive types for creating or validating a parachain. - -extern crate substrate_codec as codec; - -#[cfg_attr(not(feature = "std"), no_std)] -#[cfg_attr(not(feature = "std"), feature(alloc))] - -#[cfg(not(feature = "std"))] -extern crate alloc; - -#[cfg(not(feature = "std"))] -use alloc::vec::Vec; - -use codec::Slicable; - -/// Validation parameters for evaluating the parachain validity function. -// TODO: consolidated ingress and balance downloads -#[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Debug))] -pub struct ValidationParams { - /// The collation body. - pub block_data: Vec, - /// Previous head-data. - pub parent_head: Vec, -} - -impl Slicable for ValidationParams { - fn encode(&self) -> Vec { - let mut v = Vec::new(); - - self.block_data.using_encoded(|s| v.extend(s)); - self.parent_head.using_encoded(|s| v.extend(s)); - - v - } - - fn decode(input: &mut I) -> Option { - Some(ValidationParams { - block_data: Slicable::decode(input)?, - parent_head: Slicable::decode(input)?, - }) - } -} - -/// The result of parachain validation. -// TODO: egress and balance uploads -#[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Debug))] -pub struct ValidationResult { - /// New head data that should be included in the relay chain state. - pub head_data: Vec -} - -impl Slicable for ValidationResult { - fn encode(&self) -> Vec { - self.head_data.encode() - } - - fn decode(input: &mut I) -> Option { - Some(ValidationResult { - head_data: Slicable::decode(input)?, - }) - } -} diff --git a/polkadot/parachain/Cargo.toml b/polkadot/parachain/Cargo.toml new file mode 100644 index 0000000000000..68d2313bc0d2e --- /dev/null +++ b/polkadot/parachain/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "polkadot-parachain" +version = "0.1.0" +authors = ["Parity Technologies "] +description = "Types and utilities for creating and working with parachains" + +[dependencies] +substrate-codec = { path = "../../substrate/codec", default-features = false } +wasmi = { version = "0.1", optional = true } +error-chain = { version = "0.11", optional = true } + +[features] +default = ["std"] +std = ["substrate-codec/std", "wasmi", "error-chain"] diff --git a/polkadot/parachain/src/lib.rs b/polkadot/parachain/src/lib.rs new file mode 100644 index 0000000000000..cc98a9c0d680c --- /dev/null +++ b/polkadot/parachain/src/lib.rs @@ -0,0 +1,145 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Defines primitive types for creating or validating a parachain. +//! +//! When compiled with standard library support, this crate exports a `wasm` +//! module that can be used to validate parachain WASM. +//! +//! ## Parachain WASM +//! +//! Polkadot parachain WASM is in the form of a module which imports a memory +//! instance and exports a function `validate`. +//! +//! `validate` accepts as input two `i32` values, representing a pointer/length pair +//! respectively, that encodes `ValidationParams`. +//! +//! `validate` returns an `i32` which is a pointer to a little-endian 32-bit integer denoting a length. +//! Subtracting the length from the initial pointer will give a new pointer to the actual return data, +//! +//! ASCII-diagram demonstrating the return data format: +//! ``` +//! [return data][len (LE-u32)] +//! ^~~returned pointer +//! ``` +//! +//! The `load_params` and `write_result` functions provide utilities for setting up +//! a parachain WASM module in Rust. + +#![cfg_attr(not(feature = "std"), no_std)] +#![cfg_attr(not(feature = "std"), feature(alloc))] + +/// Re-export of substrate-codec. +pub extern crate substrate_codec as codec; + +#[cfg(not(feature = "std"))] +extern crate alloc; + +#[cfg(feature = "std")] +extern crate core; + +#[cfg(feature = "std")] +extern crate wasmi; + +#[cfg(feature = "std")] +#[macro_use] +extern crate error_chain; + +#[cfg(not(feature = "std"))] +use alloc::vec::Vec; +use codec::Slicable; + +#[cfg(feature = "std")] +pub mod wasm; + +/// Validation parameters for evaluating the parachain validity function. +// TODO: consolidated ingress and balance downloads +#[derive(PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct ValidationParams { + /// The collation body. + pub block_data: Vec, + /// Previous head-data. + pub parent_head: Vec, +} + +impl Slicable for ValidationParams { + fn encode(&self) -> Vec { + let mut v = Vec::new(); + + self.block_data.using_encoded(|s| v.extend(s)); + self.parent_head.using_encoded(|s| v.extend(s)); + + v + } + + fn decode(input: &mut I) -> Option { + Some(ValidationParams { + block_data: Slicable::decode(input)?, + parent_head: Slicable::decode(input)?, + }) + } +} + +/// The result of parachain validation. +// TODO: egress and balance uploads +#[derive(PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct ValidationResult { + /// New head data that should be included in the relay chain state. + pub head_data: Vec +} + +impl Slicable for ValidationResult { + fn encode(&self) -> Vec { + self.head_data.encode() + } + + fn decode(input: &mut I) -> Option { + Some(ValidationResult { + head_data: Slicable::decode(input)?, + }) + } +} + +/// Load the validation params from memory when implementing a Rust parachain. +/// +/// Offset and length must have been provided by the validation +/// function's entry point. +pub unsafe fn load_params(offset: usize, len: usize) -> ValidationParams { + let mut slice = ::core::slice::from_raw_parts(offset as *const u8, len); + + ValidationParams::decode(&mut slice).expect("Invalid input data") +} + +/// Allocate the validation result in memory, getting the return-pointer back. +/// +/// As described in the crate docs, this is a pointer to the appended length +/// of the vector. +pub fn write_result(result: ValidationResult) -> usize { + let mut encoded = result.encode(); + let len = encoded.len(); + + assert!(len <= u32::max_value() as usize, "Len too large for parachain-WASM abi"); + (len as u32).using_encoded(|s| encoded.extend(s)); + + // do not alter `encoded` beyond this point. may reallocate. + let end_ptr = &encoded[len] as *const u8 as usize; + + // leak so it doesn't get zeroed. + ::core::mem::forget(encoded); + end_ptr +} diff --git a/polkadot/collator/src/wasm.rs b/polkadot/parachain/src/wasm.rs similarity index 88% rename from polkadot/collator/src/wasm.rs rename to polkadot/parachain/src/wasm.rs index beb0d0af8330f..1d9d892fe4a01 100644 --- a/polkadot/collator/src/wasm.rs +++ b/polkadot/parachain/src/wasm.rs @@ -15,26 +15,10 @@ // along with Polkadot. If not, see . //! WASM re-execution of a parachain candidate. -//! //! In the context of relay-chain candidate evaluation, there are some additional //! steps to ensure that the provided input parameters are correct. //! Assuming the parameters are correct, this module provides a wrapper around //! a WASM VM for re-execution of a parachain candidate. -//! -//! Polkadot parachain WASM is in the form of a module which imports a memory -//! instance and exports a function `validate`. -//! -//! `validate` accepts as input two `i32` values, representing a pointer/length pair -//! respectively, that encodes `ValidationParams`. -//! -//! `validate` returns an `i32` which is a pointer to a little-endian 32-bit integer denoting a length. -//! Subtracting the length from the initial pointer will give a new pointer to the actual return data, -//! -//! ASCII-diagram demonstrating the return data format: -//! ``` -//! [return data][len (LE-u32)] -//! ^~~returned pointer -//! ``` use codec::Slicable; @@ -42,7 +26,7 @@ use wasmi::{self, Module, ModuleInstance, MemoryInstance, MemoryDescriptor, Mem use wasmi::{memory_units, RuntimeValue}; use wasmi::Error as WasmError; -use para_primitives::{ValidationParams, ValidationResult}; +use super::{ValidationParams, ValidationResult}; use std::cell::RefCell; diff --git a/polkadot/parachain/test-modules/basic_add/.gitignore b/polkadot/parachain/test-modules/basic_add/.gitignore new file mode 100644 index 0000000000000..2f7896d1d1365 --- /dev/null +++ b/polkadot/parachain/test-modules/basic_add/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/polkadot/parachain/test-modules/basic_add/Cargo.lock b/polkadot/parachain/test-modules/basic_add/Cargo.lock new file mode 100644 index 0000000000000..e1317c293bbc0 --- /dev/null +++ b/polkadot/parachain/test-modules/basic_add/Cargo.lock @@ -0,0 +1,147 @@ +[[package]] +name = "basic-add" +version = "0.1.0" +dependencies = [ + "polkadot-parachain 0.1.0", + "tiny-keccak 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wee_alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crunchy" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "errno" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libc" +version = "0.2.40" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "mmap-alloc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", + "object-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sysconf 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "object-alloc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "polkadot-parachain" +version = "0.1.0" +dependencies = [ + "substrate-codec 0.1.0", +] + +[[package]] +name = "substrate-codec" +version = "0.1.0" + +[[package]] +name = "sysconf" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tiny-keccak" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wee_alloc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", + "memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mmap-alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[metadata] +"checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" +"checksum errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b2c858c42ac0b88532f48fca88b0ed947cad4f1f64d904bcd6c9f138f7b95d70" +"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)" = "6fd41f331ac7c5b8ac259b8bf82c75c0fb2e469bbf37d2becbba9a6a2221965b" +"checksum memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" +"checksum mmap-alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a71c1f979166d8fc589a2ff5a12632b7daa4ac387762c2cdbb860f89dd0adfc7" +"checksum object-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2782bfccc81e24c1d6d1a0ecf7eecbccbb635ac72fc733f35f0be0d0b4b0575" +"checksum sysconf 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3979ffee2226ba9f55787caba85cad91be3ea247c94408e74704856edaf0f93" +"checksum tiny-keccak 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "58911ed5eb275a8fd2f1f0418ed360a42f59329864b64e1e95377a9024498c01" +"checksum wee_alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad1b03adad488bc6595d4fc01a51954976751cc30c48dd4595c3176fe2721213" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +"checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" +"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/polkadot/parachain/test-modules/basic_add/Cargo.toml b/polkadot/parachain/test-modules/basic_add/Cargo.toml new file mode 100644 index 0000000000000..8c30a7db04e2a --- /dev/null +++ b/polkadot/parachain/test-modules/basic_add/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "basic-add" +version = "0.1.0" +authors = ["Parity Technologies "] +description = "Test parachain which adds to a number as its state transition" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +polkadot-parachain = { path = "../../", default-features = false } +wee_alloc = "0.2.0" +tiny-keccak = "1.4" + +[profile.release] +panic = "abort" +lto = true + +[features] +default = ["std"] +std = [] + +[workspace] +members = [] diff --git a/polkadot/parachain/test-modules/basic_add/src/lib.rs b/polkadot/parachain/test-modules/basic_add/src/lib.rs new file mode 100644 index 0000000000000..48fd1e2c58614 --- /dev/null +++ b/polkadot/parachain/test-modules/basic_add/src/lib.rs @@ -0,0 +1,101 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Basic parachain that adds a number as part of its state. + +#![cfg_attr(not(feature = "std"), no_std)] +#![cfg_attr(not(feature = "std"), feature(alloc, core_intrinsics, global_allocator, lang_items))] + +#[cfg(not(feature = "std"))] +extern crate alloc; + +extern crate polkadot_parachain as parachain; +extern crate wee_alloc; +extern crate tiny_keccak; + +use parachain::codec::{Slicable, Input}; + +#[cfg(not(feature = "std"))] +mod wasm; + +#[cfg(not(feature = "std"))] +pub use wasm::validate; + +#[cfg(not(feature = "std"))] +use alloc::vec::Vec; + +// Define global allocator. +#[cfg(not(feature = "std"))] +#[global_allocator] +static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; + +/// Head data for this parachain. +#[derive(Default)] +pub struct HeadData { + /// Block number + pub number: u64, + /// parent block keccak256 + pub parent_hash: [u8; 32], + /// hash of post-execution state. + pub post_state: [u8; 32], +} + +impl Slicable for HeadData { + fn encode(&self) -> Vec { + let mut v = Vec::new(); + + self.number.using_encoded(|s| v.extend(s)); + self.parent_hash.using_encoded(|s| v.extend(s)); + self.post_state.using_encoded(|s| v.extend(s)); + + v + } + + fn decode(input: &mut I) -> Option { + Some(HeadData { + number: Slicable::decode(input)?, + parent_hash: Slicable::decode(input)?, + post_state: Slicable::decode(input)?, + }) + } +} + +/// Block data for this parachain. +#[derive(Default)] +pub struct BlockData { + /// State to begin from. + pub state: u64, + /// Amount to add (overflowing) + pub add: u64, +} + +impl Slicable for BlockData { + fn encode(&self) -> Vec { + let mut v = Vec::new(); + + self.state.using_encoded(|s| v.extend(s)); + self.add.using_encoded(|s| v.extend(s)); + + v + } + + fn decode(input: &mut I) -> Option { + Some(BlockData { + state: Slicable::decode(input)?, + add: Slicable::decode(input)?, + }) + } +} diff --git a/polkadot/parachain/test-modules/basic_add/src/wasm.rs b/polkadot/parachain/test-modules/basic_add/src/wasm.rs new file mode 100644 index 0000000000000..43ef96b44afe8 --- /dev/null +++ b/polkadot/parachain/test-modules/basic_add/src/wasm.rs @@ -0,0 +1,56 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Defines WASM module logic. + +use parachain::{self, ValidationResult}; +use parachain::codec::Slicable; +use super::{HeadData, BlockData}; + +#[lang = "panic_fmt"] +extern "C" fn panic_fmt( + _args: ::core::fmt::Arguments, + _file: &'static str, + _line: u32 +) -> ! { + use core::intrinsics; + unsafe { + intrinsics::abort(); + } +} + +#[no_mangle] +pub extern fn validate(offset: usize, len: usize) -> usize { + let hash_state = |state: u64| ::tiny_keccak::keccak256(state.encode().as_slice()); + + let params = unsafe { ::parachain::load_params(offset, len) }; + let parent_head = HeadData::decode(&mut ¶ms.parent_head[..]) + .expect("invalid parent head format."); + + let block_data = BlockData::decode(&mut ¶ms.block_data[..]) + .expect("invalid block data format."); + + assert_eq!(hash_state(block_data.state), parent_head.post_state, "wrong post-state proof"); + let new_state = block_data.state.saturating_add(block_data.add); + + let new_head = HeadData { + number: parent_head.number + 1, + parent_hash: ::tiny_keccak::keccak256(¶ms.parent_head[..]), + post_state: hash_state(new_state), + }; + + parachain::write_result(ValidationResult { head_data: new_head.encode() }) +} diff --git a/polkadot/parachain/test-modules/build.sh b/polkadot/parachain/test-modules/build.sh new file mode 100755 index 0000000000000..4324b92ac7f67 --- /dev/null +++ b/polkadot/parachain/test-modules/build.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +for i in */ +do + cd $i + cargo build --target=wasm32-unknown-unknown --release + mv target/wasm32-unknown-unknown/release/${i%/}.wasm ../../tests/res/ + cd .. +done diff --git a/polkadot/parachain/tests/res/basic_add.wasm b/polkadot/parachain/tests/res/basic_add.wasm new file mode 100755 index 0000000000000000000000000000000000000000..b23afbde6e73fb39c146a263bd807e87c4aa09a4 GIT binary patch literal 124 zcmZw8I}U>|5Cy>ZmgS?kM52q7t8fzH!Xj3%K{garq0F)208BryIS>GqZ=euDOD-hK zf{?1=kNxpiQ@^ANF3f2cv}w!h;6B6RQl6uo{JH}VrNF?{laF5?$Lr&%(FVtkx90?Q C;2bOf literal 0 HcmV?d00001 From fc5ff4503dd640d5b22743e6871df08b641acee5 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 21:49:32 +0200 Subject: [PATCH 037/103] test for basic_add parachain --- Cargo.lock | 71 +++++++++++++++++ polkadot/parachain/test-modules/.gitignore | 2 + polkadot/parachain/test-modules/Cargo.toml | 4 + .../test-modules/basic_add/.gitignore | 1 - .../test-modules/basic_add/Cargo.toml | 7 +- .../test-modules/basic_add/src/lib.rs | 73 ++++++++++++++---- .../basic_add/test.wasm} | Bin polkadot/parachain/test-modules/build.sh | 10 --- .../test-modules/build_test_chains.sh | 10 +++ 9 files changed, 146 insertions(+), 32 deletions(-) create mode 100644 polkadot/parachain/test-modules/.gitignore create mode 100644 polkadot/parachain/test-modules/Cargo.toml delete mode 100644 polkadot/parachain/test-modules/basic_add/.gitignore rename polkadot/parachain/{tests/res/basic_add.wasm => test-modules/basic_add/test.wasm} (100%) delete mode 100755 polkadot/parachain/test-modules/build.sh create mode 100755 polkadot/parachain/test-modules/build_test_chains.sh diff --git a/Cargo.lock b/Cargo.lock index 4cb1067615898..478f2ee7b1f32 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -98,6 +98,15 @@ dependencies = [ "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "basic-add" +version = "0.1.0" +dependencies = [ + "polkadot-parachain 0.1.0", + "tiny-keccak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wee_alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "bigint" version = "4.2.0" @@ -348,6 +357,16 @@ dependencies = [ name = "environmental" version = "0.1.0" +[[package]] +name = "errno" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "error-chain" version = "0.11.0" @@ -957,6 +976,11 @@ name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "memorydb" version = "0.1.1" @@ -1016,6 +1040,19 @@ dependencies = [ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "mmap-alloc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", + "object-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sysconf 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "net2" version = "0.2.31" @@ -1051,6 +1088,11 @@ dependencies = [ "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "object-alloc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "odds" version = "0.2.26" @@ -1289,6 +1331,7 @@ dependencies = [ name = "polkadot-parachain" version = "0.1.0" dependencies = [ + "basic-add 0.1.0", "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", "wasmi 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2142,6 +2185,17 @@ dependencies = [ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "sysconf" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "take" version = "0.1.0" @@ -2420,6 +2474,17 @@ dependencies = [ "parity-wasm 0.27.4 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "wee_alloc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", + "memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mmap-alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "winapi" version = "0.2.8" @@ -2518,6 +2583,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88d4851b005ef16de812ea9acdb7bece2f0a40dd86c07b85631d7dafa54537bb" "checksum elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "258ff6a9a94f648d0379dbd79110e057edbb53eb85cc237e33eadf8e5a30df85" "checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" +"checksum errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b2c858c42ac0b88532f48fca88b0ed947cad4f1f64d904bcd6c9f138f7b95d70" "checksum error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3" "checksum eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)" = "" "checksum ethbloom 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f240172b976e2421fa5485e45cd45287bbdb56d742aa3a1d77005c49071a8518" @@ -2579,16 +2645,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376" "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" +"checksum memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" "checksum memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "013b7e4c5e10c764936ebc6bd3662d8e3c92292d267bf6a42ef3f5cad9c793ee" "checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" "checksum mime 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e2e00e17be181010a91dbfefb01660b17311059dc8c7f48b9017677721e732bd" "checksum mio 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "7da01a5e23070d92d99b1ecd1cd0af36447c6fd44b0fe283c2db199fa136724f" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum mmap-alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a71c1f979166d8fc589a2ff5a12632b7daa4ac387762c2cdbb860f89dd0adfc7" "checksum net2 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)" = "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "9936036cc70fe4a8b2d338ab665900323290efb03983c86cbe235ae800ad8017" "checksum num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dee092fcdf725aee04dd7da1d21debff559237d49ef1cb3e69bcb8ece44c7364" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" +"checksum object-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2782bfccc81e24c1d6d1a0ecf7eecbccbb635ac72fc733f35f0be0d0b4b0575" "checksum odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)" = "4eae0151b9dacf24fcc170d9995e511669a082856a91f958a2fe380bfab3fb22" "checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" @@ -2647,6 +2716,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc7f6353c2ee5407358d063a14cccc1630804527090a6fb5a9489ce4924280fb" "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" +"checksum sysconf 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3979ffee2226ba9f55787caba85cad91be3ea247c94408e74704856edaf0f93" "checksum take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5" "checksum tempdir 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f73eebdb68c14bcb24aef74ea96079830e7fa7b31a6106e42ea7ee887c1e134e" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" @@ -2681,6 +2751,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum wasmi 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba06def0c95a653122299e68a44f2f227eeac2d1f707df61f33abbaf6dd55992" +"checksum wee_alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad1b03adad488bc6595d4fc01a51954976751cc30c48dd4595c3176fe2721213" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/polkadot/parachain/test-modules/.gitignore b/polkadot/parachain/test-modules/.gitignore new file mode 100644 index 0000000000000..2c96eb1b6517f --- /dev/null +++ b/polkadot/parachain/test-modules/.gitignore @@ -0,0 +1,2 @@ +target/ +Cargo.lock diff --git a/polkadot/parachain/test-modules/Cargo.toml b/polkadot/parachain/test-modules/Cargo.toml new file mode 100644 index 0000000000000..1acd516f1b491 --- /dev/null +++ b/polkadot/parachain/test-modules/Cargo.toml @@ -0,0 +1,4 @@ +[workspace] +members = [ + "basic_add" +] diff --git a/polkadot/parachain/test-modules/basic_add/.gitignore b/polkadot/parachain/test-modules/basic_add/.gitignore deleted file mode 100644 index 2f7896d1d1365..0000000000000 --- a/polkadot/parachain/test-modules/basic_add/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target/ diff --git a/polkadot/parachain/test-modules/basic_add/Cargo.toml b/polkadot/parachain/test-modules/basic_add/Cargo.toml index 8c30a7db04e2a..3d1fa83ab2560 100644 --- a/polkadot/parachain/test-modules/basic_add/Cargo.toml +++ b/polkadot/parachain/test-modules/basic_add/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "basic-add" +name = "basic_add" version = "0.1.0" authors = ["Parity Technologies "] description = "Test parachain which adds to a number as its state transition" @@ -18,7 +18,4 @@ lto = true [features] default = ["std"] -std = [] - -[workspace] -members = [] +std = ["polkadot-parachain/std"] diff --git a/polkadot/parachain/test-modules/basic_add/src/lib.rs b/polkadot/parachain/test-modules/basic_add/src/lib.rs index 48fd1e2c58614..bb97500638332 100644 --- a/polkadot/parachain/test-modules/basic_add/src/lib.rs +++ b/polkadot/parachain/test-modules/basic_add/src/lib.rs @@ -42,15 +42,15 @@ use alloc::vec::Vec; #[global_allocator] static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; -/// Head data for this parachain. -#[derive(Default)] -pub struct HeadData { - /// Block number - pub number: u64, - /// parent block keccak256 - pub parent_hash: [u8; 32], - /// hash of post-execution state. - pub post_state: [u8; 32], +// Head data for this parachain. +#[derive(Default, Clone)] +struct HeadData { + // Block number + number: u64, + // parent block keccak256 + parent_hash: [u8; 32], + // hash of post-execution state. + post_state: [u8; 32], } impl Slicable for HeadData { @@ -73,13 +73,13 @@ impl Slicable for HeadData { } } -/// Block data for this parachain. -#[derive(Default)] -pub struct BlockData { - /// State to begin from. - pub state: u64, - /// Amount to add (overflowing) - pub add: u64, +// Block data for this parachain. +#[derive(Default, Clone)] +struct BlockData { + // State to begin from. + state: u64, + // Amount to add (overflowing) + add: u64, } impl Slicable for BlockData { @@ -99,3 +99,44 @@ impl Slicable for BlockData { }) } } + +#[cfg(test)] +mod tests { + use super::*; + use parachain::ValidationParams; + + const TEST_CODE: &[u8] = include_bytes!("../test.wasm"); + + fn hash_state(state: u64) -> [u8; 32] { + ::tiny_keccak::keccak256(state.encode().as_slice()) + } + + fn hash_head(head: &HeadData) -> [u8; 32] { + ::tiny_keccak::keccak256(head.encode().as_slice()) + } + + #[test] + fn execute_good_on_parent() { + let parent_head = HeadData { + number: 0, + parent_hash: [0; 32], + post_state: hash_state(0), + }; + + let block_data = BlockData { + state: 0, + add: 512, + }; + + let ret = parachain::wasm::validate_candidate(TEST_CODE, ValidationParams { + parent_head: parent_head.encode(), + block_data: block_data.encode(), + }).unwrap(); + + let new_head = HeadData::decode(&mut &ret.head_data[..]).unwrap(); + + assert_eq!(new_head.number, 1); + assert_eq!(new_head.parent_hash, hash_head(&parent_head)); + assert_eq!(new_head.post_state, hash_state(512)); + } +} diff --git a/polkadot/parachain/tests/res/basic_add.wasm b/polkadot/parachain/test-modules/basic_add/test.wasm similarity index 100% rename from polkadot/parachain/tests/res/basic_add.wasm rename to polkadot/parachain/test-modules/basic_add/test.wasm diff --git a/polkadot/parachain/test-modules/build.sh b/polkadot/parachain/test-modules/build.sh deleted file mode 100755 index 4324b92ac7f67..0000000000000 --- a/polkadot/parachain/test-modules/build.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -set -e - -for i in */ -do - cd $i - cargo build --target=wasm32-unknown-unknown --release - mv target/wasm32-unknown-unknown/release/${i%/}.wasm ../../tests/res/ - cd .. -done diff --git a/polkadot/parachain/test-modules/build_test_chains.sh b/polkadot/parachain/test-modules/build_test_chains.sh new file mode 100755 index 0000000000000..3a4b0852a4562 --- /dev/null +++ b/polkadot/parachain/test-modules/build_test_chains.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +for i in */ +do + cd $i + cargo build --target=wasm32-unknown-unknown --release --no-default-features + mv target/wasm32-unknown-unknown/release/${i%/}.wasm test.wasm + cd .. +done From 0cce8135d5c8766710e21e6b08cc03c44cdf74c7 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 21:49:57 +0200 Subject: [PATCH 038/103] move to test-chains dir --- .../{test-modules => test-chains}/.gitignore | 0 .../{test-modules => test-chains}/Cargo.toml | 0 .../basic_add/Cargo.toml | 0 .../basic_add/src/lib.rs | 0 .../basic_add/src/wasm.rs | 0 .../basic_add/test.wasm | Bin .../build_test_chains.sh | 0 .../test-modules/basic_add/Cargo.lock | 147 ------------------ 8 files changed, 147 deletions(-) rename polkadot/parachain/{test-modules => test-chains}/.gitignore (100%) rename polkadot/parachain/{test-modules => test-chains}/Cargo.toml (100%) rename polkadot/parachain/{test-modules => test-chains}/basic_add/Cargo.toml (100%) rename polkadot/parachain/{test-modules => test-chains}/basic_add/src/lib.rs (100%) rename polkadot/parachain/{test-modules => test-chains}/basic_add/src/wasm.rs (100%) rename polkadot/parachain/{test-modules => test-chains}/basic_add/test.wasm (100%) rename polkadot/parachain/{test-modules => test-chains}/build_test_chains.sh (100%) delete mode 100644 polkadot/parachain/test-modules/basic_add/Cargo.lock diff --git a/polkadot/parachain/test-modules/.gitignore b/polkadot/parachain/test-chains/.gitignore similarity index 100% rename from polkadot/parachain/test-modules/.gitignore rename to polkadot/parachain/test-chains/.gitignore diff --git a/polkadot/parachain/test-modules/Cargo.toml b/polkadot/parachain/test-chains/Cargo.toml similarity index 100% rename from polkadot/parachain/test-modules/Cargo.toml rename to polkadot/parachain/test-chains/Cargo.toml diff --git a/polkadot/parachain/test-modules/basic_add/Cargo.toml b/polkadot/parachain/test-chains/basic_add/Cargo.toml similarity index 100% rename from polkadot/parachain/test-modules/basic_add/Cargo.toml rename to polkadot/parachain/test-chains/basic_add/Cargo.toml diff --git a/polkadot/parachain/test-modules/basic_add/src/lib.rs b/polkadot/parachain/test-chains/basic_add/src/lib.rs similarity index 100% rename from polkadot/parachain/test-modules/basic_add/src/lib.rs rename to polkadot/parachain/test-chains/basic_add/src/lib.rs diff --git a/polkadot/parachain/test-modules/basic_add/src/wasm.rs b/polkadot/parachain/test-chains/basic_add/src/wasm.rs similarity index 100% rename from polkadot/parachain/test-modules/basic_add/src/wasm.rs rename to polkadot/parachain/test-chains/basic_add/src/wasm.rs diff --git a/polkadot/parachain/test-modules/basic_add/test.wasm b/polkadot/parachain/test-chains/basic_add/test.wasm similarity index 100% rename from polkadot/parachain/test-modules/basic_add/test.wasm rename to polkadot/parachain/test-chains/basic_add/test.wasm diff --git a/polkadot/parachain/test-modules/build_test_chains.sh b/polkadot/parachain/test-chains/build_test_chains.sh similarity index 100% rename from polkadot/parachain/test-modules/build_test_chains.sh rename to polkadot/parachain/test-chains/build_test_chains.sh diff --git a/polkadot/parachain/test-modules/basic_add/Cargo.lock b/polkadot/parachain/test-modules/basic_add/Cargo.lock deleted file mode 100644 index e1317c293bbc0..0000000000000 --- a/polkadot/parachain/test-modules/basic_add/Cargo.lock +++ /dev/null @@ -1,147 +0,0 @@ -[[package]] -name = "basic-add" -version = "0.1.0" -dependencies = [ - "polkadot-parachain 0.1.0", - "tiny-keccak 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wee_alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crunchy" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "errno" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "libc" -version = "0.2.40" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "mmap-alloc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", - "object-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sysconf 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "object-alloc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "polkadot-parachain" -version = "0.1.0" -dependencies = [ - "substrate-codec 0.1.0", -] - -[[package]] -name = "substrate-codec" -version = "0.1.0" - -[[package]] -name = "sysconf" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tiny-keccak" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wee_alloc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", - "memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "mmap-alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[metadata] -"checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" -"checksum errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b2c858c42ac0b88532f48fca88b0ed947cad4f1f64d904bcd6c9f138f7b95d70" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)" = "6fd41f331ac7c5b8ac259b8bf82c75c0fb2e469bbf37d2becbba9a6a2221965b" -"checksum memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" -"checksum mmap-alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a71c1f979166d8fc589a2ff5a12632b7daa4ac387762c2cdbb860f89dd0adfc7" -"checksum object-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2782bfccc81e24c1d6d1a0ecf7eecbccbb635ac72fc733f35f0be0d0b4b0575" -"checksum sysconf 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3979ffee2226ba9f55787caba85cad91be3ea247c94408e74704856edaf0f93" -"checksum tiny-keccak 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "58911ed5eb275a8fd2f1f0418ed360a42f59329864b64e1e95377a9024498c01" -"checksum wee_alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad1b03adad488bc6595d4fc01a51954976751cc30c48dd4595c3176fe2721213" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" From fb6f12d3391b850ff777b3e7684bdd54165e804f Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 22:10:45 +0200 Subject: [PATCH 039/103] use wasm-build --- polkadot/parachain/test-chains/Cargo.toml | 4 ++++ .../test-chains/basic_add/Cargo.toml | 4 ---- .../parachain/test-chains/basic_add/test.wasm | Bin 124 -> 19952 bytes .../test-chains/build_test_chains.sh | 4 +++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/polkadot/parachain/test-chains/Cargo.toml b/polkadot/parachain/test-chains/Cargo.toml index 1acd516f1b491..2bee55dc0b2ad 100644 --- a/polkadot/parachain/test-chains/Cargo.toml +++ b/polkadot/parachain/test-chains/Cargo.toml @@ -2,3 +2,7 @@ members = [ "basic_add" ] + +[profile.release] +panic = "abort" +lto = true diff --git a/polkadot/parachain/test-chains/basic_add/Cargo.toml b/polkadot/parachain/test-chains/basic_add/Cargo.toml index 3d1fa83ab2560..b2cccd538e367 100644 --- a/polkadot/parachain/test-chains/basic_add/Cargo.toml +++ b/polkadot/parachain/test-chains/basic_add/Cargo.toml @@ -12,10 +12,6 @@ polkadot-parachain = { path = "../../", default-features = false } wee_alloc = "0.2.0" tiny-keccak = "1.4" -[profile.release] -panic = "abort" -lto = true - [features] default = ["std"] std = ["polkadot-parachain/std"] diff --git a/polkadot/parachain/test-chains/basic_add/test.wasm b/polkadot/parachain/test-chains/basic_add/test.wasm index b23afbde6e73fb39c146a263bd807e87c4aa09a4..6856efd720fd52fb3d3e1b7098df45e66164961a 100755 GIT binary patch literal 19952 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 E2lYg|&j0`b literal 124 zcmZw8I}U>|5Cy>ZmgS?kM52q7t8fzH!Xj3%K{garq0F)208BryIS>GqZ=euDOD-hK zf{?1=kNxpiQ@^ANF3f2cv}w!h;6B6RQl6uo{JH}VrNF?{laF5?$Lr&%(FVtkx90?Q C;2bOf diff --git a/polkadot/parachain/test-chains/build_test_chains.sh b/polkadot/parachain/test-chains/build_test_chains.sh index 3a4b0852a4562..8685176caa3f9 100755 --- a/polkadot/parachain/test-chains/build_test_chains.sh +++ b/polkadot/parachain/test-chains/build_test_chains.sh @@ -1,10 +1,12 @@ #!/bin/sh set -e +rm -rf ./target for i in */ do cd $i cargo build --target=wasm32-unknown-unknown --release --no-default-features - mv target/wasm32-unknown-unknown/release/${i%/}.wasm test.wasm + wasm-build --target wasm32-unknown-unknown ../target ${i%/} + mv ../target/${i%/}.wasm test.wasm cd .. done From 5ba8dd31c242c4d6fc16a06efcdf1a985bc09559 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 17 Apr 2018 22:47:07 +0200 Subject: [PATCH 040/103] new wasm directory layout --- Cargo.lock | 3 +-- Cargo.toml | 4 +++ polkadot/collator/src/lib.rs | 3 --- polkadot/parachain/src/wasm.rs | 4 +++ polkadot/parachain/test-chains/Cargo.toml | 8 ------ .../test-chains/basic_add/src/lib.rs | 2 +- .../parachain/test-chains/basic_add/src/src | 1 + .../test-chains/basic_add/wasm/Cargo.toml | 24 ++++++++++++++++++ .../parachain/test-chains/basic_add/wasm/src | 1 + .../basic_add/{ => wasm}/test.wasm | Bin 19952 -> 19936 bytes .../test-chains/build_test_chains.sh | 9 ++++--- 11 files changed, 41 insertions(+), 18 deletions(-) delete mode 100644 polkadot/parachain/test-chains/Cargo.toml create mode 120000 polkadot/parachain/test-chains/basic_add/src/src create mode 100644 polkadot/parachain/test-chains/basic_add/wasm/Cargo.toml create mode 120000 polkadot/parachain/test-chains/basic_add/wasm/src rename polkadot/parachain/test-chains/basic_add/{ => wasm}/test.wasm (71%) diff --git a/Cargo.lock b/Cargo.lock index 478f2ee7b1f32..8efb2445c9c75 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -99,7 +99,7 @@ dependencies = [ ] [[package]] -name = "basic-add" +name = "basic_add" version = "0.1.0" dependencies = [ "polkadot-parachain 0.1.0", @@ -1331,7 +1331,6 @@ dependencies = [ name = "polkadot-parachain" version = "0.1.0" dependencies = [ - "basic-add 0.1.0", "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", "wasmi 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index b9dcb107d2dd7..284953474deed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,6 +25,9 @@ members = [ "polkadot/statement-table", "polkadot/transaction-pool", "polkadot/service", + + "polkadot/parachain/test-chains/basic_add", + "substrate/bft", "substrate/client", "substrate/codec", @@ -51,6 +54,7 @@ members = [ "substrate/serializer", "substrate/state-machine", "substrate/test-runtime", + "demo/runtime", "demo/primitives", "demo/executor", diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index c49edf5f808b2..ae3d7421cccc1 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -52,9 +52,6 @@ extern crate substrate_codec as codec; extern crate substrate_primitives as primitives; extern crate polkadot_primitives; -#[macro_use] -extern crate error_chain; - use std::collections::{BTreeSet, BTreeMap}; use futures::{stream, Stream, Future, IntoFuture}; diff --git a/polkadot/parachain/src/wasm.rs b/polkadot/parachain/src/wasm.rs index 1d9d892fe4a01..61b826e47cca6 100644 --- a/polkadot/parachain/src/wasm.rs +++ b/polkadot/parachain/src/wasm.rs @@ -87,6 +87,7 @@ pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> R // maximum memory in bytes const MAX_MEM: u32 = 1024 * 1024 * 1024; // 1 GiB + println!("instantiating"); // instantiate the module. let (module, memory) = { let module = Module::from_buffer(validation_code)?; @@ -109,6 +110,7 @@ pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> R (module, memory) }; + println!("allocating call data"); // allocate call data in memory. let (offset, len) = { let encoded_call_data = params.encode(); @@ -133,12 +135,14 @@ pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> R (0, encoded_call_data.len() as i32) }; + println!("invoking"); let output = module.invoke_export( "validate", &[RuntimeValue::I32(offset), RuntimeValue::I32(len)], &mut wasmi::NopExternals, )?; + println!("reading data"); match output { Some(RuntimeValue::I32(len_offset)) => { let len_offset = len_offset as u32; diff --git a/polkadot/parachain/test-chains/Cargo.toml b/polkadot/parachain/test-chains/Cargo.toml deleted file mode 100644 index 2bee55dc0b2ad..0000000000000 --- a/polkadot/parachain/test-chains/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[workspace] -members = [ - "basic_add" -] - -[profile.release] -panic = "abort" -lto = true diff --git a/polkadot/parachain/test-chains/basic_add/src/lib.rs b/polkadot/parachain/test-chains/basic_add/src/lib.rs index bb97500638332..7b436eafdbdf9 100644 --- a/polkadot/parachain/test-chains/basic_add/src/lib.rs +++ b/polkadot/parachain/test-chains/basic_add/src/lib.rs @@ -105,7 +105,7 @@ mod tests { use super::*; use parachain::ValidationParams; - const TEST_CODE: &[u8] = include_bytes!("../test.wasm"); + const TEST_CODE: &[u8] = include_bytes!("../wasm/test.wasm"); fn hash_state(state: u64) -> [u8; 32] { ::tiny_keccak::keccak256(state.encode().as_slice()) diff --git a/polkadot/parachain/test-chains/basic_add/src/src b/polkadot/parachain/test-chains/basic_add/src/src new file mode 120000 index 0000000000000..e8310385c56dc --- /dev/null +++ b/polkadot/parachain/test-chains/basic_add/src/src @@ -0,0 +1 @@ +src \ No newline at end of file diff --git a/polkadot/parachain/test-chains/basic_add/wasm/Cargo.toml b/polkadot/parachain/test-chains/basic_add/wasm/Cargo.toml new file mode 100644 index 0000000000000..21029a8b470e1 --- /dev/null +++ b/polkadot/parachain/test-chains/basic_add/wasm/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "basic_add" +version = "0.1.0" +authors = ["Parity Technologies "] +description = "Test parachain which adds to a number as its state transition" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +polkadot-parachain = { path = "../../..", default-features = false } +wee_alloc = "0.2.0" +tiny-keccak = "1.4" + +[features] +default = ["std"] +std = ["polkadot-parachain/std"] + +[profile.release] +panic = "abort" +lto = true + +[workspace] +members = [] diff --git a/polkadot/parachain/test-chains/basic_add/wasm/src b/polkadot/parachain/test-chains/basic_add/wasm/src new file mode 120000 index 0000000000000..5cd551cf2693e --- /dev/null +++ b/polkadot/parachain/test-chains/basic_add/wasm/src @@ -0,0 +1 @@ +../src \ No newline at end of file diff --git a/polkadot/parachain/test-chains/basic_add/test.wasm b/polkadot/parachain/test-chains/basic_add/wasm/test.wasm similarity index 71% rename from polkadot/parachain/test-chains/basic_add/test.wasm rename to polkadot/parachain/test-chains/basic_add/wasm/test.wasm index 6856efd720fd52fb3d3e1b7098df45e66164961a..3c42fe4653e1ad10a5fd776370cb158efe178be8 100755 GIT binary patch delta 1313 zcmZ`%UuauZ7(eISdz0JVwz+AtQP#A%H%YtcY@66Lv91}rvpPjbTYON4Xk%|yI^F0R zLH1%R>rj-@u3v1Cy$r!O9fb>`IHqGx{F6eToI;U;z6e877(S>lf2T>D)A~Wq?|i@C zcfNl&m5Y4yB41qMa~J4Y^Q%Ngn3g!qvm$H>r*z?ulYE}0cvSour?>bDU#6HygL+03 zaegcA$N8H$!>`k{lEeM7603$5D697HYgAAlm$dpi&ZKr9&SToBx*T=NbQ$gq?|W^M zn^)|N&@IIg8PNoorxE`YFVQFd(`IE`5>-h+`b_WQb2P4xnB^TLb;CAQI@A3;DmnHZ zoX^>EhWy?xoE7_FN;bCfviC&eyFR1b;(QUXwDyc>qt(W+$Ac~0EX6V+X{nBq5oth~ zqOJY>1A4mkxcPZaQmfJx`nom8H_0E`61QXYd+1YhF-3+|nJXFvGBzbLWn7+7`|ml#3kVYxG*A zFL*m<`j}y94lml8#ho>}8tH@fYvd?jprMYQo`pUCmsl$IB!0i04n{Im?r0F_J83qu zKdczezbl;gc6VM94Q0&LhJOUsZ^=*jpVfL5+f_Sn#W7I8)L1={vk|w<8nZz&-G!ar zZhw|*dtJWbb?=M%c*%RL_Z1#3B~Va5VFs}m;aDdU%;JV|wo75ooNk<@ANp1T#hHn| zSM$Y_y)#7y^A?ihhWyS45*^DbV+Och{Dc%?tKjwlHz_p~n%#tV4Bi3GSc7D1{!q;y z*BFa|&nt{I0vF*2fvdm}@EfF+@1(8Qw8{?JsE;uVG1I_SpzCK0*IqV_i!3k-3#)bo4#clS9n~s_J#9=$0*lm#IJ0@3u6Cm=#_A7-ucHKzC>Sg!u48z72v(gcWxz&bGny5sHrWi$^Y`ysh6fs zO)6q5;S~>0@<6ITolU#0JCJmzL0cN54rt?)L?#aaNUbgR4h&2b+_V>ebWQ&YDdrBe delta 1322 zcmZ`$TWB0r7(VCB%TVwUW{NMS% z??3--Y8QC@0$*C@OK0gN^F}l&OiS$NDG{`UQ#t$B>--#*cv!p_r89hmU#3AZ4(dfQ z2m7sf6!s5sim%hGlE(e2GS~<$P)Z%)KTtt^M$+nO*qHVR>=EsddO7S==_=fx+#A{q zH`nZ>&@IIgNznl~M^oMsuh7Td6XwF8lte=kkUrCg_!3R)Q)YGZ)mBN}uuYXt4Zn;^ zj=dfBs4Zv6>==Tr+mBPMy_Z+rXWQTR7}YN4$8JmOONw5))*f`ZuZx=%6pUG_qa?*R zph{tXoPSEs`-|rHO-XG?YxK20&Fkb1{4N$F^k?7`vm9wW)*2Bt`XYFMf8};=TlDbr zwA^=?-=<&tMjpEzJkZHIgkf>Z^IRvl+H9|-+uYI}sW8K^m~-!*a>5qQ3Z+9&@LTkD zXw0`5F+I$%G>6aGn#G-4bUic%?M~<*zeE%LBO{l#|6gLMY)Sl4AMFbzX|2CaTpXbJ z(5|3jIRCD2(d`*1i?%A}>cwBc`Yrh@A6l(jxAW@2-3SKiHZ|5t?**tH?eK|2H5Cusc8u@E}vO`gMq{{*R(FdHmSi z=K6uM!%4Iv>&T75r}gxn$yRKuhx7l~!_VkTPFQR9Cr8-2eCKY|ct>{+@6*&S*5Q4v zbo|xQ@fk&&9&&U0XLxral}+x6$9Lzmxniymqnl4Io4XT Date: Wed, 18 Apr 2018 13:22:08 +0200 Subject: [PATCH 041/103] reorganize a bit more --- Cargo.lock | 71 +---------- Cargo.toml | 2 - polkadot/parachain/Cargo.toml | 3 + .../test-chains/basic_add/Cargo.toml | 8 ++ .../test-chains/basic_add/src/lib.rs | 3 +- .../test-chains/basic_add/src/wasm.rs | 3 +- .../test-chains/basic_add/wasm/Cargo.toml | 24 ---- .../parachain/test-chains/basic_add/wasm/src | 1 - .../test-chains/build_test_chains.sh | 6 +- polkadot/parachain/tests/basic_add.rs | 116 ++++++++++++++++++ .../test.wasm => tests/res/basic_add.wasm} | Bin 19936 -> 20002 bytes 11 files changed, 135 insertions(+), 102 deletions(-) delete mode 100644 polkadot/parachain/test-chains/basic_add/wasm/Cargo.toml delete mode 120000 polkadot/parachain/test-chains/basic_add/wasm/src create mode 100644 polkadot/parachain/tests/basic_add.rs rename polkadot/parachain/{test-chains/basic_add/wasm/test.wasm => tests/res/basic_add.wasm} (53%) diff --git a/Cargo.lock b/Cargo.lock index 8efb2445c9c75..44d28da738540 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -98,15 +98,6 @@ dependencies = [ "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "basic_add" -version = "0.1.0" -dependencies = [ - "polkadot-parachain 0.1.0", - "tiny-keccak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wee_alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "bigint" version = "4.2.0" @@ -357,16 +348,6 @@ dependencies = [ name = "environmental" version = "0.1.0" -[[package]] -name = "errno" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "error-chain" version = "0.11.0" @@ -976,11 +957,6 @@ name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "memorydb" version = "0.1.1" @@ -1040,19 +1016,6 @@ dependencies = [ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "mmap-alloc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "object-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sysconf 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "net2" version = "0.2.31" @@ -1088,11 +1051,6 @@ dependencies = [ "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "object-alloc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "odds" version = "0.2.26" @@ -1333,6 +1291,7 @@ version = "0.1.0" dependencies = [ "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", + "tiny-keccak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "wasmi 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2184,17 +2143,6 @@ dependencies = [ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "sysconf" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "take" version = "0.1.0" @@ -2473,17 +2421,6 @@ dependencies = [ "parity-wasm 0.27.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "wee_alloc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "mmap-alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "winapi" version = "0.2.8" @@ -2582,7 +2519,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88d4851b005ef16de812ea9acdb7bece2f0a40dd86c07b85631d7dafa54537bb" "checksum elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "258ff6a9a94f648d0379dbd79110e057edbb53eb85cc237e33eadf8e5a30df85" "checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" -"checksum errno 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b2c858c42ac0b88532f48fca88b0ed947cad4f1f64d904bcd6c9f138f7b95d70" "checksum error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3" "checksum eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)" = "" "checksum ethbloom 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f240172b976e2421fa5485e45cd45287bbdb56d742aa3a1d77005c49071a8518" @@ -2644,19 +2580,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376" "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" -"checksum memory_units 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" "checksum memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "013b7e4c5e10c764936ebc6bd3662d8e3c92292d267bf6a42ef3f5cad9c793ee" "checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" "checksum mime 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e2e00e17be181010a91dbfefb01660b17311059dc8c7f48b9017677721e732bd" "checksum mio 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "7da01a5e23070d92d99b1ecd1cd0af36447c6fd44b0fe283c2db199fa136724f" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum mmap-alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a71c1f979166d8fc589a2ff5a12632b7daa4ac387762c2cdbb860f89dd0adfc7" "checksum net2 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)" = "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "9936036cc70fe4a8b2d338ab665900323290efb03983c86cbe235ae800ad8017" "checksum num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dee092fcdf725aee04dd7da1d21debff559237d49ef1cb3e69bcb8ece44c7364" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" -"checksum object-alloc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2782bfccc81e24c1d6d1a0ecf7eecbccbb635ac72fc733f35f0be0d0b4b0575" "checksum odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)" = "4eae0151b9dacf24fcc170d9995e511669a082856a91f958a2fe380bfab3fb22" "checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" @@ -2715,7 +2648,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc7f6353c2ee5407358d063a14cccc1630804527090a6fb5a9489ce4924280fb" "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" -"checksum sysconf 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3979ffee2226ba9f55787caba85cad91be3ea247c94408e74704856edaf0f93" "checksum take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5" "checksum tempdir 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f73eebdb68c14bcb24aef74ea96079830e7fa7b31a6106e42ea7ee887c1e134e" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" @@ -2750,7 +2682,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum wasmi 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba06def0c95a653122299e68a44f2f227eeac2d1f707df61f33abbaf6dd55992" -"checksum wee_alloc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad1b03adad488bc6595d4fc01a51954976751cc30c48dd4595c3176fe2721213" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/Cargo.toml b/Cargo.toml index 284953474deed..25f44eff9e371 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,8 +26,6 @@ members = [ "polkadot/transaction-pool", "polkadot/service", - "polkadot/parachain/test-chains/basic_add", - "substrate/bft", "substrate/client", "substrate/codec", diff --git a/polkadot/parachain/Cargo.toml b/polkadot/parachain/Cargo.toml index 68d2313bc0d2e..47cde571e1567 100644 --- a/polkadot/parachain/Cargo.toml +++ b/polkadot/parachain/Cargo.toml @@ -9,6 +9,9 @@ substrate-codec = { path = "../../substrate/codec", default-features = false } wasmi = { version = "0.1", optional = true } error-chain = { version = "0.11", optional = true } +[dev-dependencies] +tiny-keccak = "1.4" + [features] default = ["std"] std = ["substrate-codec/std", "wasmi", "error-chain"] diff --git a/polkadot/parachain/test-chains/basic_add/Cargo.toml b/polkadot/parachain/test-chains/basic_add/Cargo.toml index b2cccd538e367..afc9e9f13103d 100644 --- a/polkadot/parachain/test-chains/basic_add/Cargo.toml +++ b/polkadot/parachain/test-chains/basic_add/Cargo.toml @@ -11,7 +11,15 @@ crate-type = ["cdylib"] polkadot-parachain = { path = "../../", default-features = false } wee_alloc = "0.2.0" tiny-keccak = "1.4" +pwasm-libc = "0.2" [features] default = ["std"] std = ["polkadot-parachain/std"] + +[profile.release] +panic = "abort" +lto = true + +[workspace] +members = [] diff --git a/polkadot/parachain/test-chains/basic_add/src/lib.rs b/polkadot/parachain/test-chains/basic_add/src/lib.rs index 7b436eafdbdf9..3f877b16d1bcb 100644 --- a/polkadot/parachain/test-chains/basic_add/src/lib.rs +++ b/polkadot/parachain/test-chains/basic_add/src/lib.rs @@ -25,6 +25,7 @@ extern crate alloc; extern crate polkadot_parachain as parachain; extern crate wee_alloc; extern crate tiny_keccak; +extern crate pwasm_libc; use parachain::codec::{Slicable, Input}; @@ -32,7 +33,7 @@ use parachain::codec::{Slicable, Input}; mod wasm; #[cfg(not(feature = "std"))] -pub use wasm::validate; +pub use wasm::*; #[cfg(not(feature = "std"))] use alloc::vec::Vec; diff --git a/polkadot/parachain/test-chains/basic_add/src/wasm.rs b/polkadot/parachain/test-chains/basic_add/src/wasm.rs index 43ef96b44afe8..95276d3950cbe 100644 --- a/polkadot/parachain/test-chains/basic_add/src/wasm.rs +++ b/polkadot/parachain/test-chains/basic_add/src/wasm.rs @@ -21,7 +21,8 @@ use parachain::codec::Slicable; use super::{HeadData, BlockData}; #[lang = "panic_fmt"] -extern "C" fn panic_fmt( +#[no_mangle] +pub extern "C" fn panic_fmt( _args: ::core::fmt::Arguments, _file: &'static str, _line: u32 diff --git a/polkadot/parachain/test-chains/basic_add/wasm/Cargo.toml b/polkadot/parachain/test-chains/basic_add/wasm/Cargo.toml deleted file mode 100644 index 21029a8b470e1..0000000000000 --- a/polkadot/parachain/test-chains/basic_add/wasm/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "basic_add" -version = "0.1.0" -authors = ["Parity Technologies "] -description = "Test parachain which adds to a number as its state transition" - -[lib] -crate-type = ["cdylib"] - -[dependencies] -polkadot-parachain = { path = "../../..", default-features = false } -wee_alloc = "0.2.0" -tiny-keccak = "1.4" - -[features] -default = ["std"] -std = ["polkadot-parachain/std"] - -[profile.release] -panic = "abort" -lto = true - -[workspace] -members = [] diff --git a/polkadot/parachain/test-chains/basic_add/wasm/src b/polkadot/parachain/test-chains/basic_add/wasm/src deleted file mode 120000 index 5cd551cf2693e..0000000000000 --- a/polkadot/parachain/test-chains/basic_add/wasm/src +++ /dev/null @@ -1 +0,0 @@ -../src \ No newline at end of file diff --git a/polkadot/parachain/test-chains/build_test_chains.sh b/polkadot/parachain/test-chains/build_test_chains.sh index 486fb9ce66b48..d019ffe764948 100755 --- a/polkadot/parachain/test-chains/build_test_chains.sh +++ b/polkadot/parachain/test-chains/build_test_chains.sh @@ -5,9 +5,9 @@ rm -rf ./target for i in */ do i=${i%/} - cd $i/wasm + cd $i cargo build --target=wasm32-unknown-unknown --release --no-default-features wasm-build --target wasm32-unknown-unknown ./target $i - mv ./target/$i.wasm test.wasm - cd ../.. + mv ./target/$i.wasm ../../tests/res/$i.wasm + cd .. done diff --git a/polkadot/parachain/tests/basic_add.rs b/polkadot/parachain/tests/basic_add.rs new file mode 100644 index 0000000000000..93ce76fe23037 --- /dev/null +++ b/polkadot/parachain/tests/basic_add.rs @@ -0,0 +1,116 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Basic parachain that adds a number as part of its state. + +extern crate polkadot_parachain as parachain; +extern crate tiny_keccak; + +use parachain::ValidationParams; +use parachain::codec::{Slicable, Input}; + +// Head data for this parachain. +#[derive(Default, Clone)] +struct HeadData { + // Block number + number: u64, + // parent block keccak256 + parent_hash: [u8; 32], + // hash of post-execution state. + post_state: [u8; 32], +} + +impl Slicable for HeadData { + fn encode(&self) -> Vec { + let mut v = Vec::new(); + + self.number.using_encoded(|s| v.extend(s)); + self.parent_hash.using_encoded(|s| v.extend(s)); + self.post_state.using_encoded(|s| v.extend(s)); + + v + } + + fn decode(input: &mut I) -> Option { + Some(HeadData { + number: Slicable::decode(input)?, + parent_hash: Slicable::decode(input)?, + post_state: Slicable::decode(input)?, + }) + } +} + +// Block data for this parachain. +#[derive(Default, Clone)] +struct BlockData { + // State to begin from. + state: u64, + // Amount to add (overflowing) + add: u64, +} + +impl Slicable for BlockData { + fn encode(&self) -> Vec { + let mut v = Vec::new(); + + self.state.using_encoded(|s| v.extend(s)); + self.add.using_encoded(|s| v.extend(s)); + + v + } + + fn decode(input: &mut I) -> Option { + Some(BlockData { + state: Slicable::decode(input)?, + add: Slicable::decode(input)?, + }) + } +} + +const TEST_CODE: &[u8] = include_bytes!("res/basic_add.wasm"); + +fn hash_state(state: u64) -> [u8; 32] { + ::tiny_keccak::keccak256(state.encode().as_slice()) +} + +fn hash_head(head: &HeadData) -> [u8; 32] { + ::tiny_keccak::keccak256(head.encode().as_slice()) +} + +#[test] +fn execute_good_on_parent() { + let parent_head = HeadData { + number: 0, + parent_hash: [0; 32], + post_state: hash_state(0), + }; + + let block_data = BlockData { + state: 0, + add: 512, + }; + + let ret = parachain::wasm::validate_candidate(TEST_CODE, ValidationParams { + parent_head: parent_head.encode(), + block_data: block_data.encode(), + }).unwrap(); + + let new_head = HeadData::decode(&mut &ret.head_data[..]).unwrap(); + + assert_eq!(new_head.number, 1); + assert_eq!(new_head.parent_hash, hash_head(&parent_head)); + assert_eq!(new_head.post_state, hash_state(512)); +} diff --git a/polkadot/parachain/test-chains/basic_add/wasm/test.wasm b/polkadot/parachain/tests/res/basic_add.wasm similarity index 53% rename from polkadot/parachain/test-chains/basic_add/wasm/test.wasm rename to polkadot/parachain/tests/res/basic_add.wasm index 3c42fe4653e1ad10a5fd776370cb158efe178be8..47dfd0124a4aa03dfed2b0d1d615ba0629f22092 100755 GIT binary patch delta 868 zcmYjOO-vI(6rMM`+iklnY>O?0)-o+Wr79p+6Du)NX(@#k{~{(HY$~owr3Lvjnix#b zqfzq`W7K#c>Oo`BZ1e&iJbLk_G0_-~1`o!dUhv=pL*gX!y)WOqH}mFuOZQ;zKHO}F zmRozH2Lpb_Kvn=4XA+~u8J85s6i$@%F>tvQU^Y9IyucEm8NlrodS#Vs zliTC1@zvHjmrnR^y)-35XSmPf#TcxB8zX#CafH+gj<30J@`OSz-e98z5<1k{#B;3LAOQdto{Lt^{2WTsNV2AkwCK+e7_`6@I}DyP?;uF z;V^90`#=mxbOa;+iSghA4u$g$cTY9|C&v0zX=QN zg+oS&(i5WC$OLFfkY;!n?-D$vvjhuCQkP&tDz-8fmg(MqOiAlpNC_y0CBZW~b;zpL zH;qC$XT58`?T*gY$mK%GgjMer<{F=xn9QFv&kUFIQ{@Z8$i>(`8%g^`ibAv<1A#%Nq`l1FG< zp41u8@N%jHDsVp42|9jDwL&G<_OwD3rh7W+ENZ%#vmeU2; zgxTIW_Y7jLw-KNA?f@@->5V}Rx-&We@C=lbHX89(<; zLlBSjcR)P`vi10|-vt6+^~WHD%cO=$-3|?y%Uj$N=zXj>hv;Y7A delta 785 zcmYjOOH5Ny5Pfs|`n|7zz6HuH6iN+WD{2Ko9#HzBxX>VpBs2vc2-3%|R9(4H7A7W2 zCUId63!_F{2xVr;|FzN@N*#=-JF>_b7ty9N@g@OD=aq$NttJP$g`ZQEFe0w)n<3N3f)D;C8eG+OMck1ysCgxvjYWiV;R}d zTYN@|-~+;NhnT^l8FYiYsbTRvSn#zt!0~{-mE)BD1vpVQ+y=mRh6^C#Y2!G@K~oaF zro(&QMQysa9XPqfvJDg^+Nh&e32n3nM`$5X?JV5_Zqn8*kryOf8pofmPhikKy4?Vx zCKle)fuyaKeAU$$1j_U>Eco;c|Jt+?X81P3$!2B=R z;9Vhn&P^8KYBX0>hv?M{RQ^)s;7#RM)y%={j@`&#SIgA4?FwHFY(N2y*X2P#671xD zS1=AHyd1n^mH3~)2&0TRB&~Db8UZ7IsNd%6dfPBu;q>vO%%=PT14;yH6_`**_=D5= zLL0wv-au1Y`k$v6o3FX#??s}T&M5G?C@Ab*a`qhT+65&`{#;h)oL^kXrbd*BNj0^o zo|#m~L{lz3Jvo-nDtdg}HP3et?pC>?yWPjR;GOO!Fk^ksoYP`UrS^*FmGt!V%qYeC zJt3oXEOqi|YY4;f23(KZ(I0Vw6%R%xz=kW47O>;9NETTd>Kf=+4r+VA?47Ym2 zq~Hq9MKhR;Rzo4qMz2E=(pVabF%t`uk`t)L{J0t052g4k76K23;sa2Im*P<<$LDbc zD)3NZ6ug*E1fUWhCc?n*MX7Ei3FB# SCOM8n{S4}OK*jg{#lHbF;>-;I From 39aad59881cc8a0250376f3f033c944ee1fdeb4d Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Wed, 18 Apr 2018 18:49:35 +0300 Subject: [PATCH 042/103] Fix for rh-minimal-parachain (#141) * Remove extern "C" We already encountered such behavior (bug?) in pwasm-std, I believe. * Fix `panic_fmt` signature by adding `_col` Wrong `panic_fmt` signature can inhibit some optimizations in LTO mode. * Add linker flags and use wasm-gc in build script Pass --import-memory to LLD to emit wasm binary with imported memory. Also use wasm-gc instead of wasm-build. * Fix effective_max. I'm not sure why it was the way it was actually. * Recompile wasm. * Fix indent --- polkadot/parachain/src/wasm.rs | 2 +- .../test-chains/basic_add/src/wasm.rs | 5 +++-- .../test-chains/build_test_chains.sh | 5 ++--- polkadot/parachain/tests/res/basic_add.wasm | Bin 20002 -> 45511 bytes 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/polkadot/parachain/src/wasm.rs b/polkadot/parachain/src/wasm.rs index 61b826e47cca6..92968564b3b98 100644 --- a/polkadot/parachain/src/wasm.rs +++ b/polkadot/parachain/src/wasm.rs @@ -61,7 +61,7 @@ impl ModuleImportResolver for Resolver { descriptor: &MemoryDescriptor, ) -> Result { if field_name == "memory" { - let effective_max = descriptor.maximum().unwrap_or(self.max_memory + 1); + let effective_max = descriptor.maximum().unwrap_or(self.max_memory); if descriptor.initial() > self.max_memory || effective_max > self.max_memory { Err(WasmError::Instantiation("Module requested too much memory".to_owned())) } else { diff --git a/polkadot/parachain/test-chains/basic_add/src/wasm.rs b/polkadot/parachain/test-chains/basic_add/src/wasm.rs index 95276d3950cbe..e236e22048a7b 100644 --- a/polkadot/parachain/test-chains/basic_add/src/wasm.rs +++ b/polkadot/parachain/test-chains/basic_add/src/wasm.rs @@ -22,10 +22,11 @@ use super::{HeadData, BlockData}; #[lang = "panic_fmt"] #[no_mangle] -pub extern "C" fn panic_fmt( +pub extern fn panic_fmt( _args: ::core::fmt::Arguments, _file: &'static str, - _line: u32 + _line: u32, + _col: u32, ) -> ! { use core::intrinsics; unsafe { diff --git a/polkadot/parachain/test-chains/build_test_chains.sh b/polkadot/parachain/test-chains/build_test_chains.sh index d019ffe764948..54c5c9a289603 100755 --- a/polkadot/parachain/test-chains/build_test_chains.sh +++ b/polkadot/parachain/test-chains/build_test_chains.sh @@ -6,8 +6,7 @@ for i in */ do i=${i%/} cd $i - cargo build --target=wasm32-unknown-unknown --release --no-default-features - wasm-build --target wasm32-unknown-unknown ./target $i - mv ./target/$i.wasm ../../tests/res/$i.wasm + RUSTFLAGS="-C link-arg=--import-memory" cargo +nightly-2018-03-07 build --target=wasm32-unknown-unknown --release --no-default-features + wasm-gc target/wasm32-unknown-unknown/release/$i.wasm ../../tests/res/$i.wasm cd .. done diff --git a/polkadot/parachain/tests/res/basic_add.wasm b/polkadot/parachain/tests/res/basic_add.wasm index 47dfd0124a4aa03dfed2b0d1d615ba0629f22092..1cd8ab6d19893a76c0916a623b395a497e0bacfd 100755 GIT binary patch literal 45511 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

d>vTG-~(kIX->&TzR&8 z#~}q1x2z7`GBaI0q+l~2uZmg?^y!S`hcz||%W|5gD5huC&66GK?!z#CIFnDn);%QU zf-3CC=J=F->8yVjRUWiQ~OE+Bh!a zxDLlBaqPzNTR6T2$8-1%;g>(>aMF(BlQ^!%@%Ldq#CQWg&-(W+EOYO+u$~!baa@JG zm55>B)R@K5#qlv5+4iS!OyT%Ts5F7&Vp^yF9@06(z82SQIF8^5@{BPYGdKqK;cqam z#r0ksN$0I7v=&GH1a&@%y06CdAK@6q@f$djmY|NC&=!BJxVDaPTlmEGkR)`GZ={oH z{3T6jQfLXvKaB*^{H#yQ1sq#>=AGM?sF8$~pA`gKDcR^1NeFZ(Y zSI3xiywtV-4P9Nwdvjgoc{$7Csux-hd>cxxU;$alG7D>93TqJntVHc3y|(`UjhP7-lJA3Wpi-#}i{)yrk}p;Is`e#}F_Qs)(!oWbTG%#K$jt=JF&?*nd$hm>O zMZIyo631}cO5?p zx8giO=K}(@T&|Ug`Pn1odz;$n9V?9GOa1+Y{CK(CTk0Q9fELMiwn7ai%MU5WhIy_$L#Te!XOJjWlrDAV>I9;b}KwLb% zy>b|lh5pFQT%|fEV~Db&x$)ldLG)>Ctgloq_6}!C0bPFCTyt5tk%E%t++Yb_v?6?C zg;EuWZGXfhkvWaoCb^uS_zw{MBlNBUjjzYmt9T)Tc-ss#z`d6r!lr7P^JAd%eMcvz zN5-m0j*PGY@?or08Sk$a#`_B8v1(y-c-5mXDMh`#)785*Mex0ijL$(e9f2npq*cm* z%s_ANXde9T9~&56eJEfvVc$1>{OCZxNX^92*&~ACCaAyK2QLK(HOuYe>~s^H3%%w3 za-qLe%Jo&CMS6$V)CZC+4DJ)Z`$Bat-#c5b016A$yXMMAKwECK(pMhK^%tuHaFi5t z!)tGErtNYid!dex7e^s*_%n87X8!nG73UQuRJu@aexO>-_l;M^ieu$`esFMjU0tE{ zVLr$gG_b03b7U4A{3rw8Xl1mow}PnvuGI0u@cK7^mVtp6q);vq^&FVqJ2)`bSM7(l zwZA;vv5!5}Qy5)cms1)`R8wEBT7|zhH<;_KR0oUI;SCkkQ}pX;C|vQs_F$@j8|8DD+p0V`IfZD)~ZrcvB0i^0`0@-=5Fs<`2)@JtDY7$?ytFI0AhH#c*4>;#JDCfavAbK~upukwmg}P>3BN zqyW0HTyJT#Sm+%c=+70(x#2B!t*-T1;b`^f*x@<@FqwV12qdWTg5*O0UUAuONMR1sY$GcbHC5(KE48+LyPS$KF+z?9yb8z|@c3ZnzV z+wQ0K8!U+IEM;6zkERce!6dqb?Y?F6hUbB;bn_Da4-S+{`D$Ts3{%qRcx7O?tM<}R zv4r83fzf;!&uMZ4ebqi#cf(h`wA|2xSnA7z4p^6XlvL@<4-Q`)Cj4ga-5$a5C?3Og OGhx2EutRPfo&EnOWkmD< delta 1864 zcmaJ>TWnNC7@mLToV}gh_G~F_Ww-6@g|OA2MPZ9Vq$hw#^Z{ck@q)eBLb`3YQc3~A zZo?J{+LGES#tSi&2jUI9Y+^KN2r&_i5WGG3(uXF-_y8gVH6hW&Z_e(bPoCub|IGLQ z^WSGK{KQWlryT3tH9(9pN_skYE=M^{S%=8EYXhvbV;xZDDK2`lBjKUlyN27ldUo_? z+jnR8^k%!6(70!yXJBw>A17{$Xaq(LlZbI9-~fyZlQENH3H*5qhfTVZd3=;3XY90L zd5QUJh&g20#C^d~MP<0UYH>|%-5pB;3(rQ>+DMvzl~lu#<)$5Cyj6W$U!&$CkMqA0 zDjYpdRq9N1j{K^xemUqH^%>&IXefz$)Y*o6p>m@k2jR}fHqZ-=t3dy5+*-$3h)E;G zne%0%Lz1vc@nD#%ez_xO$C%`f%p{p))|Zt*pjU%TAMoLTFQa8H=5BD>J(c6qY!Ry^m%bJOMa?7_Ky4Cd zxHP1&8M6)&Q4XOs_r(Pw6OyMnM3T}RJEY(QGma>3;0_xoXi4<;3eqHixmcR}z#)G) z2tFQ6a~qa~V`S1?>Q$PjTtEV-gFq){3ubNSloPr@h=O#@nz$X~VCrz}{u&)SN!}t- zV1$tLk-VDhU0qcUg6j~INbS1X(!0_-7XKfWOIpR4kJ+N|YyTQTJDajMDWK{HYnPy| z#jJG@l@>zO4Y32EplTdkjN#}WOj4k5WbiVzU;qqhI+Tf<(%2kg)_>Fydy3aVfVk1S zXr?$FaRc*lbY~QX-rso{^o5}%4SJAxtMqRSF$eBNt8NXBNRKqbyzt4;Lj=uRyY7h~ zI$8NbJEQ<-}| z=TixFZf~3MSpqeP?7Ic~g~j_{*KW=ns3og#{=jjHA}$>}@?+9p%+HcYRSG0AI(iqh z-y2;E`pf7FA43ujk8wo<)rFP0aVk2S8;kh8%#vQ|w>^c0vE~w9eQ?>oxY}^=j}&7Y zL!O}5atMtV&OGi`SYu|;W1%d-wC^xeo%sYYbtoSPeaEF2^KDqi#$${00rbHkw{^>0 z{kHM`<(CqA-ncuG`X1;jpl6Y!z7BO6+m4}8PP48n6|VI^Kox!rLJ48kH-+>|6}n0r z52rYMWsmge`|sXhJujGJ!jz-Q2=L00HWbBqxnb$m1UyvQ2D2Ppda(I~v`a{NSsudk zue^w38zvs4MJhk>7DZI!tKht!kRw?$bnS{mdqwU#cc%e)9|scJ&MmtNgLY z3f~|5I>3K6)Y~WIw$}_i5{$9C@#7hGzmI^SVQc~XDex)$c&6R2jIANY{6Nb4wWWOr z6yv}<1!DpA5zwX!HV=EgC7 zvdO%fv<~?SD^3anuPF<9`+Ku}z1bat-$*Lw)I??1id9{m+nZau()X?0{#;jK{?wJg EKe-uXzW@LL From b5b262954547e274c2ede9e342e14cf819a8c984 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 18 Apr 2018 18:10:47 +0200 Subject: [PATCH 043/103] more basic_add tests --- polkadot/parachain/src/wasm.rs | 4 -- .../test-chains/basic_add/src/wasm.rs | 16 +++--- polkadot/parachain/tests/basic_add.rs | 54 +++++++++++++++++++ 3 files changed, 62 insertions(+), 12 deletions(-) diff --git a/polkadot/parachain/src/wasm.rs b/polkadot/parachain/src/wasm.rs index 92968564b3b98..a16383acb908b 100644 --- a/polkadot/parachain/src/wasm.rs +++ b/polkadot/parachain/src/wasm.rs @@ -87,7 +87,6 @@ pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> R // maximum memory in bytes const MAX_MEM: u32 = 1024 * 1024 * 1024; // 1 GiB - println!("instantiating"); // instantiate the module. let (module, memory) = { let module = Module::from_buffer(validation_code)?; @@ -110,7 +109,6 @@ pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> R (module, memory) }; - println!("allocating call data"); // allocate call data in memory. let (offset, len) = { let encoded_call_data = params.encode(); @@ -135,14 +133,12 @@ pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> R (0, encoded_call_data.len() as i32) }; - println!("invoking"); let output = module.invoke_export( "validate", &[RuntimeValue::I32(offset), RuntimeValue::I32(len)], &mut wasmi::NopExternals, )?; - println!("reading data"); match output { Some(RuntimeValue::I32(len_offset)) => { let len_offset = len_offset as u32; diff --git a/polkadot/parachain/test-chains/basic_add/src/wasm.rs b/polkadot/parachain/test-chains/basic_add/src/wasm.rs index e236e22048a7b..fa1bf64f43cea 100644 --- a/polkadot/parachain/test-chains/basic_add/src/wasm.rs +++ b/polkadot/parachain/test-chains/basic_add/src/wasm.rs @@ -23,15 +23,15 @@ use super::{HeadData, BlockData}; #[lang = "panic_fmt"] #[no_mangle] pub extern fn panic_fmt( - _args: ::core::fmt::Arguments, - _file: &'static str, - _line: u32, - _col: u32, + _args: ::core::fmt::Arguments, + _file: &'static str, + _line: u32, + _col: u32, ) -> ! { - use core::intrinsics; - unsafe { - intrinsics::abort(); - } + use core::intrinsics; + unsafe { + intrinsics::abort(); + } } #[no_mangle] diff --git a/polkadot/parachain/tests/basic_add.rs b/polkadot/parachain/tests/basic_add.rs index 93ce76fe23037..c5fbe467a433d 100644 --- a/polkadot/parachain/tests/basic_add.rs +++ b/polkadot/parachain/tests/basic_add.rs @@ -114,3 +114,57 @@ fn execute_good_on_parent() { assert_eq!(new_head.parent_hash, hash_head(&parent_head)); assert_eq!(new_head.post_state, hash_state(512)); } + +#[test] +fn execute_good_chain_on_parent() { + let mut number = 0; + let mut parent_hash = [0; 32]; + let mut last_state = 0; + + for add in 0..10 { + let parent_head = HeadData { + number, + parent_hash, + post_state: hash_state(last_state), + }; + + let block_data = BlockData { + state: last_state, + add, + }; + + let ret = parachain::wasm::validate_candidate(TEST_CODE, ValidationParams { + parent_head: parent_head.encode(), + block_data: block_data.encode(), + }).unwrap(); + + let new_head = HeadData::decode(&mut &ret.head_data[..]).unwrap(); + + assert_eq!(new_head.number, number + 1); + assert_eq!(new_head.parent_hash, hash_head(&parent_head)); + assert_eq!(new_head.post_state, hash_state(last_state + add)); + + number += 1; + parent_hash = hash_head(&new_head); + last_state += add; + } +} + +#[test] +fn execute_bad_on_parent() { + let parent_head = HeadData { + number: 0, + parent_hash: [0; 32], + post_state: hash_state(0), + }; + + let block_data = BlockData { + state: 256, // start state is wrong. + add: 256, + }; + + let _ret = parachain::wasm::validate_candidate(TEST_CODE, ValidationParams { + parent_head: parent_head.encode(), + block_data: block_data.encode(), + }).unwrap_err(); +} From 3cd7c2c44456def8cae80ea0ab47070027910c5e Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 18 Apr 2018 19:11:56 +0200 Subject: [PATCH 044/103] validate parachain WASM --- Cargo.lock | 2 +- polkadot/api/Cargo.toml | 1 - polkadot/api/src/lib.rs | 9 +- polkadot/consensus/Cargo.toml | 1 + polkadot/consensus/src/collation.rs | 79 +++++++++++++++--- polkadot/consensus/src/lib.rs | 3 + polkadot/parachain/src/lib.rs | 3 +- .../test-chains/build_test_chains.sh | 2 + polkadot/parachain/tests/res/basic_add.wasm | Bin 45511 -> 44941 bytes polkadot/runtime/src/parachains.rs | 7 +- 10 files changed, 83 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 44d28da738540..e7ac7ef19ef47 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1171,7 +1171,6 @@ name = "polkadot-api" version = "0.1.0" dependencies = [ "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-executor 0.1.0", "polkadot-primitives 0.1.0", "polkadot-runtime 0.1.0", @@ -1236,6 +1235,7 @@ dependencies = [ "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-api 0.1.0", "polkadot-collator 0.1.0", + "polkadot-parachain 0.1.0", "polkadot-primitives 0.1.0", "polkadot-runtime 0.1.0", "polkadot-statement-table 0.1.0", diff --git a/polkadot/api/Cargo.toml b/polkadot/api/Cargo.toml index cb2204d69e9d2..860536ac95913 100644 --- a/polkadot/api/Cargo.toml +++ b/polkadot/api/Cargo.toml @@ -5,7 +5,6 @@ authors = ["Parity Technologies "] [dependencies] error-chain = "0.11" -log = "0.3" polkadot-executor = { path = "../executor" } polkadot-runtime = { path = "../runtime" } polkadot-primitives = { path = "../primitives" } diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index 1922bd87db7bf..98b5bd69c76e2 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -31,9 +31,6 @@ extern crate substrate_state_machine as state_machine; #[macro_use] extern crate error_chain; -#[macro_use] -extern crate log; - #[cfg(test)] extern crate substrate_keyring as keyring; @@ -145,8 +142,8 @@ pub trait PolkadotApi { /// Get the validation code of a parachain at a block. If the parachain is active, this will always return `Some`. fn parachain_code(&self, at: &Self::CheckedBlockId, parachain: ParaId) -> Result>>; - /// Get the chain head of a parachain. - fn parachain_head(&self, at: &Self::CheckedBlockId, parachain: ParaId) -> Result>; + /// Get the chain head of a parachain. If the parachain is active, this will always return `Some`. + fn parachain_head(&self, at: &Self::CheckedBlockId, parachain: ParaId) -> Result>>; /// Evaluate a block. Returns true if the block is good, false if it is known to be bad, /// and an error if we can't evaluate for some reason. @@ -257,7 +254,7 @@ impl PolkadotApi for Client> with_runtime!(self, at, || ::runtime::Parachains::parachain_code(parachain)) } - fn parachain_head(&self, at: &CheckedId, parachain: ParaId) -> Result> { + fn parachain_head(&self, at: &CheckedId, parachain: ParaId) -> Result>> { with_runtime!(self, at, || ::runtime::Parachains::parachain_head(parachain)) } diff --git a/polkadot/consensus/Cargo.toml b/polkadot/consensus/Cargo.toml index 2693877691131..4a2e76139605a 100644 --- a/polkadot/consensus/Cargo.toml +++ b/polkadot/consensus/Cargo.toml @@ -13,6 +13,7 @@ error-chain = "0.11" log = "0.3" polkadot-api = { path = "../api" } polkadot-collator = { path = "../collator" } +polkadot-parachain = { path = "../parachain" } polkadot-primitives = { path = "../primitives" } polkadot-runtime = { path = "../runtime" } polkadot-statement-table = { path = "../statement-table" } diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs index e1d1c65288f8e..9b1b683c27840 100644 --- a/polkadot/consensus/src/collation.rs +++ b/polkadot/consensus/src/collation.rs @@ -58,7 +58,8 @@ pub trait Collators: Clone { /// This future is fused. pub struct CollationFetch { parachain: Option, - relay_parent: Hash, + relay_parent_hash: Hash, + relay_parent: P::CheckedBlockId, collators: C, live_fetch: Option<::Future>, client: Arc

, @@ -66,8 +67,9 @@ pub struct CollationFetch { impl CollationFetch { /// Create a new collation fetcher for the given chain. - pub fn new(parachain: Chain, relay_parent: Hash, collators: C, client: Arc

) -> Self { + pub fn new(parachain: Chain, relay_parent: P::CheckedBlockId, relay_parent_hash: Hash, collators: C, client: Arc

i7R&6f* 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 F{{_Jo{)PYm diff --git a/substrate/executor/wasm/Cargo.lock b/substrate/executor/wasm/Cargo.lock index 5b062eb2d91d5..e27060c708f40 100644 --- a/substrate/executor/wasm/Cargo.lock +++ b/substrate/executor/wasm/Cargo.lock @@ -66,9 +66,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "substrate-codec" version = "0.1.0" -dependencies = [ - "substrate-runtime-std 0.1.0", -] [[package]] name = "substrate-primitives" diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm index 329c06d241f26692f4c2317e9a29fde21c70c05c..4548ff4c28500f523b0ccd4faa4bad6be5a6dfc5 100644 GIT binary patch delta 133 zcmXZOu?@m75CFgpoQMTnBT>BHeq+o641kpS-}Xa<6c7!AcoCQ*v#ZmHGMC%DT>j1ZTBA6M)ZnnM&PnSZvl{~d bYG5tw)hCwzHPZ+UiBduDKq^w|=i&7O-t8#1 delta 133 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 delta 5581 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 Ba Date: Tue, 1 May 2018 18:31:53 +0200 Subject: [PATCH 048/103] add OOM lang item to runtime-io --- .../release/demo_runtime.compact.wasm | Bin 199600 -> 205429 bytes .../release/demo_runtime.wasm | Bin 215937 -> 224470 bytes polkadot/consensus/src/lib.rs | 1 - .../release/polkadot_runtime.compact.wasm | Bin 197406 -> 209157 bytes .../release/polkadot_runtime.wasm | Bin 214665 -> 229259 bytes .../release/runtime_test.compact.wasm | Bin 4043 -> 4213 bytes .../release/runtime_test.wasm | Bin 4710 -> 4927 bytes substrate/runtime-io/without_std.rs | 10 ++++++++++ .../substrate_test_runtime.compact.wasm | Bin 15489 -> 16186 bytes .../release/substrate_test_runtime.wasm | Bin 16926 -> 17932 bytes 10 files changed, 10 insertions(+), 1 deletion(-) diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 34e9ac10817d3aaddcf0e10871c417fc5dfd3cc7..76b3193d457c74031b0e94e191f61c89d53d99f7 100644 GIT binary patch literal 205429 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 y(8VAy z*CzTH`K#Mkny-u*65hCHeeD{>qswwZcHa zD&n>GWoDY$k3MV(-m0(3)>1Qvl=(4}dQJyNDA)c)B!$BV^381Ov1A(iKS6L*Azm>t zvtK9%V!^&enHE^wg;=usc#4P=hv0?}r?e7h3dERDD@tzz>zwTiBX=m3+#8A+Zp+3| zikuOSdrnWLprr{hI`Y)imYi5(s5Z}R46GqdsoP4XZccL{-BN|@K&?WCB;d0+Uw0%? zt2&}jvs{RxjdB571TdVDFWsAchY;-*HkmW+E#kx=h9tdRAmE0poopi~={zz;=*LgyZtg1dh`m@wUA+aDL4FUl;YQ(p)}=$RVi$E zmeLe6Q7Q7yZ}#COCJ@rE*Q5~UjjXfHX(g5Anty16ipB#w761Dp%<>O48dKQv-*!JU zZ>wc~kDr3EIth$|Wn)G3aDOy2P(=4;lGCZ&hxBbW$yK!$UK_3Dzk=Vu1z8s|&DZi* z01A|@QLqb?4_9WI|BMF{(x)=bf5Fd5_wzUTIpu!-D}GM9pZ}DfVNm#BY*6;)w|M~V zFc{VI+jfUq%AGAb!B1~YT4VuNSO8oQEbB>D6*4tq3aYk|VK_X@w3IMP8^z=an?2CwDjj?A-o zCrpUA*UPzn^hT91DcXYlrCr5Lj5bevaaS>u!xmJ{Kh5?l;Y(F=h~h7fx&x-vK^0R8 zdssDJ-c?K`O3i<%U#xuQ?_&5e%ZkUn=%2il*w!q3Ib zXLHB~u0NX-FI50T3eh4Oce8Em zh)MgLy1@0NY)+z;!&M%K@bIg89CWZWw&fU1LW!XIXEhe^{AYCq$v>|v82)p*dP)V1 z{F7Kvf_NG-@*o*WI_hCWZ}Yor~>o}BLdw5v*V|s1$pu`q!47b`7+IBoBxi4 z>7)Jj9MH4Pmv|U(KihnfyMXxF=AVANkM-H+cex8Fp8`CjsWBMje*-1f(#<3^;TiWq zrA}l2nmNB1u;XKWyld(SY(=JmBeX=E=m~sCZZC5aA_BDF42!XPUCfB^nEDU+OgLxq&OST51eqmr(Hk8vn(-fd) z_i&I9&$Ui$JdnjZsmXX$Mv{JIo~UJDKq~th{fctu!ape{zm``J1MYVw`|H}D%YqqS zym;A<*Gi~D-6iSW>ZCGIg2+{**+u|lAkb)GtL??bE>Vz>$<%xI;M zgC6R&wyqN($FH!(uKPKCWuC1VtaSgCd7ZzY7Y?yr1;ced%AcdeMI>B^=U0DE zVUHZ*Y&IPWNt`}llz5!Y+`{1jltNfZwc`=L!a^JC0gT{lo@E(m$ydyb>Zw9^O*88(hUESg%}*DpwH>_NWY4P74%gaPsq&4a`34yU%q0JHX*j4 zMGa;z2#16cng#wcJN)I#=-3<^Y#{PR5O<@>j+@`##3zxJ_Wmuea-hh$w_ji7cp05! zUX$VY>B0hh<*%9V!iXgrIg@#D^nt7~(~;)q5%jXPjiHX1{vewLraIF6@ljKHPw?}v zyPqfd`C0e#ZT$RM_w!!gHRk*6ln&8v7AXdylWBDTTR27W5dG#I6sPnX5wcfJw4beX zkr7jnC&ZW)C6K>E>{EJ((xFhw#$~9&(ngxU4xlHRe^v3qoV|&7H_ZfHOxN5w+YbYy zD-V&#@`3B|?6d8yu_`^dJ?SFeaLqQtmR_r;}OlPevD@;MCy*u6BC zI|qEHoI*u})L4#jCcICc0l|2_p!fOC=nX`Xm&WMUX!J>In z#2|W8#2hLA6z~x&M9X0K+Y=&QOsMx%LbmU?4!t@`rB@EkMXyd_(PV2FprK=>j5swC z0raIY_ej`}L(H)zH>h#eYG_dIZuo%RvlM5#0R+Ae!;}p8w21?cZ|W_J8KtYvTus8rf5$^cS-45@zt4tWv| zIRYV0!r$Hor@R+VnVB7tR~=>Dch&Ro`J}79Rn8`H8`K0gga_3M5Oy4U2tw1G5ubPy9b00VP-&NmU%DB-@62m1uKbb8V5oHHNN<>1vFQH(+#p zW}Fpgw=EE4p6;@RIYL}L24i8HqD}ePAW9Y^YpzJUmHBBjVp@Zr1(&sK3POf1kwK~T zj>3+dQv>|u_#`c4d}8wWz&}Na@@Y*W^u>z7C#xcvEc{n+dLjgB08eFPVIf*gX}cVi z<2d^idmds3G_nQu(rlR$*50c{8*4hMYqwAEgzA&K8G01Q0=3ht zYa-Ymx(iPXwH?qBLsOj5frTCsy;q8ugcTK9VP{8%=&+rb?W4nbf!ba43I6m? zaxReWW>~#k&aiUd7HJ?m=%ZqWf;YS=fw$*P6lO>inRC`>^t-(bDz({?pIjIp zP-e6M@l%krhxcMGGGQex09d(p64=8yq*McY#EW3B#c{x1LMg!B5sAX?FdPr(bTUPx zc?)nR2fVLI3_>{9+|R~I2IM5>o(ABbOy-rUk{6kLR|~g^IUsvcSeRJ9>s|iAOfCOZ z^EdBm%3I4brZ!J%i{43`3JAkf`KPo%hOklYocrfr+nvpkcM(@thg`kD-yPpM!d4C8 zQ^Ck#0#x_OD|7eC%P_%GCN^iHH84nMIHpo9K$UhiuT4S6Kgv7W3rd(1X#>+l|18k0?xG0>}V7!H2z@Oe0WqEzuC5`&1akG=NmFMVXO2 zPt<`tRKxvZ@_odtGT9LhE^Wx<)KwBi5x26oRaDJA73Gznbl#5!J_H8=;*{$=i>%8~ z`tkqncmGSvP~sbUSj}CCm=Io&nw1R5(vw`(yrh{6Es&+uZ$W8FYJp&lZv!5hQ9W7h z;7q43=)rlol3|c;9)&&GSLcAF?%h_8CZM%`%sHSQWrhu-EHRbW9-3ENR`o!8ml-O0 z_a*LL1Gkf*Qn1JwpExNTKeiz*Oxp*VV&?xx^vY9kM*B2kvJ5!tQUoCNImWkrV)%NA zbO6&H=nzlOi&LpjhJ!h>Lr_F**Fdy4wtsArCjrJ0vm{-@Hvv&oyY&=G%{rEnld|V* zO4WNwogR^wBf-T1l4g>$B&b2sEP4M3GD)zxou3q!L96 zKa3)^!DhemWQ#1zIH)L{;F}ZKS+Trt!Sb>vp?yR9oDE7jW<(2w_KIFg${W_xGQ|q> z=5}FyHp&^+1EIhc^`4NQZkl88oFV^U17Lm9fRJ7d$kpJQKp|)1R5eI%X>UB30a>jL zy@f64zG5dxyLTdm2%8frI4$`uL3$G@eD)9`CG<0}cspnUu`hY4A;96YPH{~byp80X z^6u=(oF(9!OcCbZ3jC6-ME?SQ!d--EX6`e9*~v35q=vvC_yNk9GJ_S0A#FH0vI#0o z%;)m3G}J1mE812l%HB!trT9Tf$vuq-SN(lfR-a?}%p`L!OO6(W`w!8M$lfErM{MvD z0?!~LEzLu0Y%zDv(Zlcm(J%fZlL8)f90QkD?Ss+Vc>PZ_jd>xlhBkkE;(|^uz9ddt!VxVGKEvnD;OS&m7pdL826P zWn6)3#MhhI?S)z9X#NNsWL7~)5~q{`bwrmj$VurYY;a_o9rDu-;H3BGkIx@L8*}e5 zL3&;GqC22du;RvZ3vRT{rjb6N({8j}0t^EGVCyhVWZ%i{_{Sv0%*2$3Sl}N@lw`63 z)oR-$n-lU?w5yVBJjkY!+H`3_5qXyE*#xq_nL?Tm0ndr(kY-{kI^ZT`zb?i%*n7*( zYA&L1LOY83P8>`E+jGgPvLWEv^SxsNBY)=e4gQ8)gU=2Ic^o zF^60O%u>irF_(U1*MSCxJPb6G6a$UjI3C6nzy@>-vchDbW58El1Ne^1UmyyZ3`ZOo zrW~YLxh)VG$sAyk4PZGHvN$}!?70L)Yz*qbHj@BL`h@VK$W87XmW7{FZ@fPWD{;THK6Gq{Fj@q6;zfu$3 z_J6w4K9l)RCPyY=D$+Uco+h6bl?o(Xr<9NYzR7O*CbbZv00jD`U3;EVu))$#au#Wj}?Ol955_&2&7=e-~&4+ z2rWWF#T_)yZQv;fx#gokuXEf|b{6u4AOIqX73wIiT`J;_zg}*8=Oork}Xt^W0ldk%*{fV-}Mx?&%P!gRz$g4?g zXpWmCY`2e_#O;%d-U972Yy0TZtQ6dlh}@Y;A%dH4dXfcTc#DEOo>Ul+qNI{ZY5x=? zO-yQ0UFyu`NvZAvdKixIj{_;iMQ1^Jo`Iit%1C#=qFMGZB7SY#!fNMc>0j)1WQ<2A zI7fuIlgjXPh2#=78o(_d9HGTAMh4bB%W=QP!NogB*Wt1#AWt!)V04&3iUsMz#w~mc z`=c=52cm!ohoXQXM|d@X^iggSFn|_)AbCh0l5MoXA@RU>GMbAH(h1z0Y?>{de4hOISqJhd zuM6A?$hA499H^{^$k7!%##1EXqxC@Z#?d=HEsJ!Ke=M(w1K#R^ znf{TTv`wso7zPbk9w-1n%g@LI&o-kX`$>B+sxnrB=xd#_0sA+TaYnyqaX^~UX#4(U z+<06y`*}nXor?IgNe|H2%Bk+&R_skQlS`0PEJA)LdOWtSO?gXcoAj^{;tHG&Vj* zG`vf(h=%xgRz&m5c94^`#9;adImt&Vx^ZW8k(R5yN5GhrOeW&)rmGa)8MA5n6aZF4zVcd4uOymY;0({v$ z6Q}@gu6B`2ecC=?+ zU*H($ACbWE@&2^H$qxt|OV9FNEM9hmGuWyTj&D_jLxb$d>)O3dIV-!@Y1^7uacO8v z0>^^=Hy zV9*yl5Jbqt(h@(&IYT{;4F-R#E%yuOLK4dP%vg4MxI;yq$er6Y^*~2cuk>)O80M)> zf&q=p3qSRaZEAdy0effvMn@Y?z*w05$kdJg?5kmBKWW&{KIo<)N4G0uDN=2Bp)T0u z2$+#afMf$`B??n$NlWlgW1Dlp+4>r?J=|u_fCvQeo^+$xV~EVG0na0V02J(J!vR}O zZJ-;Retl)!#65EpkPi8?Ktkk)-S~dCooA<1_C`hIO%hLMo{<`SJrQMy&LW)M7A>HX z4$aXXs>($~SOaFg7cm~~waVg8CsHiLi%2wA2Cpn<&Y*`UT{%N~1nV@3Xdom%`QGCT zXts~&=OZ6oV0UP3mX3+RRNa?3W1CYj8sO}_Tu~(Pg=^O=Xk$xQiDo}o?m~#@qpYQ$_tj_czU4!IR4R?A-Tg!anbzG z886)Z(nvoK2E2#D^rmpam?F677X057gPi_aIhSd^I5GV%PqwzU;?3=q^|h$iT3L;| z%hAeOH+~^H`>tp;URzyhw^mozJ7=DYJNIvHUH4_Z`)F(Ha|s1|2xyU9Cw~w-`PI1wb?ntOP%%2_{`SoN+&*Zb-hcY zdaM7xJ@32z*#~;LwY?o*-Pn${*Q4&rb1U6AYF~@~YP`AbtJw3swYR>pb*8nsvVB>D zTwRS;sAMbZtY3|z-sbw%=+blR+wtbsr3a$k`exKxvlrAxI|g3K<7oSGyctJVceb|m zq!sD2Xfu9hWsA?_?gPMHhAo5J+Rp0gX;%fU3{=xvUFk;K*EZr0 z0^Aj9ik@q&?!;S3Q*^@Dwsmc5`GxJSF6*myS=+g)yN$~&UAAA?)Mazcp1rWW@*wm3 zY{X0Lcr&`%x)!a)Oqu#Gu$}oZ__1|nbDgK#XErw1uf(10tuyiV&)Cv zduw~MwH=??+*#XRxyt-qW58F#lxnCnxwgKhOLyg&TdTCg_wm}+&Q_}44|x!7u7h|6 z_p7b#&Sjw3+KxJ);m#`k>fV2AEygdzot^EK=NOPfPNByhg1H>Gy7A`yj4R&SUOW}O z>s`^kXB`BVm!DYg?ySaVKV$%T_q&%he0!}4ngO)6tyV|mw-s$&Uf)^mMweU9#XX$p$< z%_h&7Kl<3!g_my)Zo+}B?bg+e6x_~-vIJ*$HoBUdXnl>&Ymg!(jl3<4+zaQ{&I|Xi zY+V$2Ut2u2+*$9&%dMU5%gZ3&`WvL9z-Tt(t)10vrWFQuYhz`c&#tUJlNu={%d2rm zm#q!KVL9Gx=>q!d^8CswU2Xy1PA1K-5_B~nY{pkxV#S-$^YA5jiP+f|+-JS_#`u|< z0-$^0xxIc7?%opM-|6^C^lo@sDBSzO*$3Cxx&Zp@c_H#M@%Cas;PuT@k{Ekm=rZC{ zdutL?4ednlewSglZStaVmatsbNsm=E!E)}LF32d%7k?UyguT-TjMAhha!Y;M`l z&ieZ5daq}t@%H+%SlBv(*Rh891;nKnuFvr}?iz>iEw8R`BKDXwJ%UMEcZ>hRH>cn78y+At;?1hw&YFl@cEVw^9$v~_E9(T%UJcQ#v{YpGeKY8g!Y~Re-o1iRs4OZp=)qAXT@b*6Q=EYg>#>(;>Yl zsmV{*mbDUZ>avE;!DX|v?kRL-O_~CH3pkok9c!)eRCOkVY)kV2|?7k+-k2%H|xf?Mzd-Di4wwa7&nC? zAYGp8z%{wF-9@Z)XSuZjUF|^Eo$b~pa@V7UG{@&;V|7;J*4oZSqFLDk@R53++0X?n z6>oB84O$lW=y>p;t!P!$jXsz%Q}hK!i+$+&(ODCsOFBcVDB;@?l5|Vf721d|YMB)o z#K6w-)|T~s!(EQ}WHtbP`TAk1Nw<@cdX}{7 zfjSE1T$R?evjNvLZhJL069>H_Mmszbq+xgN71io2#W6IB3@BQzkAUk;^L``7oS2>ZLeQ_47)biOo^eqvxR0V za@pE;I1kt5ZhP~pE_BgIsk7c&fecr`ZwBk624zUb^i?a z`?&ua&+p-SaKiO3+#lv14`=3EJin9ccYQtoI7^?o-=tHj@0a9OfNT(LL?oj?dt_}X9ip-ykXEJwj{kOjSDSqqy|DN)bsqzcHyh!<@sq!!R@_)kj zsz228E57{8y#J0=`Dgg8@m{0+{#5yA`OVNWZ$F&LoZz~bA%fox`_4oe=?`gjNQ$EuC1~`THLOY>+8f1Bt_dd*jYX3#<1kaBTmAYhZ|^zD@9g^+SQnux(w5i0Th|vq248~p&t+X@8<|;2v0)!ekxKwo}ygi zf0^q7*D(G7um6m4!Ao_j?J$qK%ftKsC+|Pbd&hUZzq>p)>)s3HAK-oU=UX$GOo?kK z|DZ4byOh5(Resr*e}?iXRlefOLw|mPb_C}@FW=hde$T-?(&K%Fa@{w8*9op4Q}#)eZT)9_nPOx=l&&=1_&}QQ?7CS4c-%<4Bv(EhUZ`A8DW;>{lCv| zwHx5M46z9xV*X3x!|w8b4`02XcS8B^^IPx;_uujNzs-C1rpo`+m;YnRkEF`~y)Xar zuJZrOm;WT?k_(~!@A>klVB&&L;M>ph-oey+8ie}w4CR0*`9AB*XLr?m+?W3e^&U&T zf0r-+yitNb0le3SAtT-aLB`X9y_f7s{@+k8xfRNvqFi_w+6j2`PT(WD407~I-a`bCnBnN`HEsm| zz*k=7UT_HIK@MhS##dL?WMSrWzf#Wp(T7LYT36%jzxnVlWHWcfFKl1LEWul10S$AD zWG7VG+l=Gflzv@BuUYTpkLh0+r;J@8^S35Vb`>c*Yr zWm&H>5^zFEmAkl&O%h*Rxw^5synI%d=mwvB$bW1$-{NDZqxYST9zUf(0`?Ie@a4;` za$GCLg+ja7Zk1bw+QFyK8myO>F`<^1pN=~?Y$L3Sn`k9nZ>`)eQg5r!?e<#jR{hYs zZ=!fiVa_E;20WL3pu=Tuk?{w6ZOIfz%=5rcTfswT1 zRF^JQZ<8_Y)Zf6Ml1{Y>oqDTOE*DD0a@<&okBng!f>TG)-#2O51q6a| zbI}JymoHb!aj{aeut6Vq9$WmfCT#R$uDYt9RXeQ{7^zTI+UOy|~>i7Hajo-`wbvscZL2je5OZ zU#j&A?Z#61t+%P(xL)YQwQ8%vNE?-2<(@Z*YYAa40fBP6P%ifhajjLaMZz_B(EROc zpi6ICoq8PC8}&}TTU+>Gz=woN9Ob9^!H1aWhhNyn4SV+d>F6=horPm?4uQ&-%aw8| z?p5lAZo6Dqs&`JD@`&DATj@9tNP4IGpeMEO#fH#(>-00O*Q?c1z0)W%3Efis z_Nzl`Tj9+IB^=H_zm9YmS-iT{R|>5w<>V#R=v<( zs^53t@Oi)3yQ*0#Arz`{ySG%SR?DqY>Hg|<8(Aknuo;?Z)yv)1Qlr`}7mBq)yKu&T zXE>EYuZwMh65XwfmL5WT)umRqQdo-HaiInyD;M6NFsijX)l$1sX;tHLuUM`XZ=Ro( z$^{Uo&1cnir&24IZvN9Um=P~kiefOeIzMmz(@MM3DVCN>jY_>%Z?$UWoBy;5^KQcr zmX?Zzdc9t#-2A7tQo9P5?X^qgxKr-6syF{>i*Z(a1=w9JM#^+*H~(pSsZgrb(Gdzg zm~p&RzxhwQMKqsUr&sF4)%H@W(YX0f<8HN4s+79*Zl%+%mMbV@o=;v+nx^!V2J8`q zt5>SlQ6pLpyn%1)jm8qQQtidXqDcAd8~L`?Zp4ia6IAUsmJ0E^-oUr5TD4y5w7aDi z0<={uy!#D&+o>X9mb$IVQm5C8mzMt0Q#XW__?+VhWL7!-XnFY|v?TbOlqCqdQ0P?( z=wM6LLMd*w>*szm8>(z?!?lnHrrthEr~+p1XJ+8h2YBIwac}6etF6svCC{GN**^RB z*1OS}Pe)ImCZ>rIvb;P{O?dS&ANb+r8@={$_nBBibA_1yCK}U<*x^#Q(=C*Xs1c<~ zp;9k4A3uA3klA}%;Mw?E+%@U^xPGDiQWZ%TR<67_DvKK^4NHYqyWMHU)wuTHo2sl6 zSIVtUr(1$+RvLx(Tu9)x{sQ@a%MY%?QXZ$ZMT=Y#rDI~%KcdTRodhZAK3i7R;4aFA_c+RSmPOpH! z#_ZF^fc`QG2}Hkvda+n3)nNlIl$maQsr<+sG0N=~bJ$yoTQmxZ%Rk2P=y+-GK`w2U*Ub~3yh3UPu(s}%qn;ztc*GxLcUDQeU z@!4j_!1-7g%~Bf1=}0qvI{J`8+}k^w@vV#;RkXl>Ve+M3v0Lc9|Nk{zOl*@*vC(d{ zp|4WhS!%?UCtesbIY~O<^76wWv(RS-q9iN-0*$tH?JAMQ)6siftjMCOVmG^{2?Y*R z6WVr5@SbX^Simak)=D41v7xNR*x~GxH;W~P;g%6YrAu+S6Bog?O1s|a6lzahIJ+oC z{?s5(3kqzS1PDd0Y(olegmQb(dEX^!ZY_a+rE;xMZd5D1V&yMCKLk+e`Vx|I)N}S$ z$*0ijRJ(Xby0vPpQfpT}_~4L+hmlVR+R^!TFD}JPn2DW2sah@6KeR7Abih8p-$J{x zY%F1D`@=WImu!g69P*4weh5qSrO`sYT&NVVi3)9IrBZ)-DrscvhkjxhvF_!3A9Q)S zzV_jhxc95Q{bDNd^UFXxmuR6TPjryiejsX0=e|VfBq2J*bzkP)k=+NVzx@fUc1x# zkv9*KguB$r)ke8iE-y6-_~RO_kNm&}*==Jym(hBQt!kxP_|YF!N80UruUhFe;w8K* zaijKQKd6p$>WyL*Q>$0%wrjmk@!}7xBl2dJ8nsfd-9pu?U-~OIqY~{Uaij2yFtBdi zYmpl*wpVN{RpPkQ=wLQu|F&*l)tz{$Bu`_b5!cI|R;7LWs*VeI>Z^DP%a~iea=mjK zt8N$K7MgDXcS!*qy?YzjJStrkrq^!aoM_Z~?f5p-S*etlN=wBuP-s<3ooesBH!1U+ zGT_#PfB;3@a9yNkr&B7_O5M^kkKANE*d5ZYowtdK8n{pD<#svl^>DRT3YRb3Dv~N2 zTv!@>kucp}y(GUdJ8%3 z3>}@jRzpA`sp^$(qx|fz4inu&HJ|rriPW3XvTvlPHKqQ0HO+KP`id8))QAg9y(N5` z#4lD~Cpgk5b_sl-D^}pk)pq6TP~B=6kk;boFX8|ejpn+4Q5wATy49AAm z;k`256tD@D6uX$c-BPF0XmxAr-kBL(pk^16b-c5=WxE|oVwdLv-IsfG#UK4UN})qAya9QT$w-8$yb){iBA z2ItPX+QRLFk7Zphe+MfK(Yc9MEcl?m*9!}vUv-y2usUANQmGwp-=;Y#*Sh8IQmfdC z0am%*+S%=EvVK2!9%@eJcz3^p%@anaF`&^B%3i!qtTAZTKl2!H-p?!9m$T^t8&j9FKRt3|BRPUqV97u~ml zU*~dMMWUdtAf|e?PC5Ro+ut{ISDHhJyAu#7#U)gtTB}#B*8YR<-*8ij3$PWUs^|#C zr7HARh&$DfegB55hW&6Aep;&ZaPAknt#-Be@$c_&{rU)oTk14Q-6An2Wg~QJwNKn8 z$}e`7ip5elE_I4H^E-u4zVAj@;}>!cTUJ3ItGGdN+I9*tF8xZq@nW`lvy~B9B+^A4 z0Jx{Dgl@G)+^1dmRQ3(VxEcs-_#?tQ?iL#5;$O=?HmnnFCD^X;CM(}?8L^m6tHkI` zxm|*cd!-g3piaFK|9G~1@rOTPk;El(9*Ro?IS<9!<=uw(!}piaoj#qtHlzzu3Ry(9 zygbw$yhqk{SGG2^s&{$0x%0w9{>G~;{b!f!wRXE)Cq_zoN3~t6eI`3hS4%mh(^G2s z?^_pHHNfEOy-tUCeF^4QYeVEek^R&#Wi1&79}~O1&BLiSSjX5acZgfY#kd^*^*1sc zzpm!uIxF8UlZjEQkWSO>k;2mIwO-2JCJJgb3dN;*tJ>*y2xirKKbd`Wm)4zj135|G zS!J03pwa~y>2EKW3K*A#HqmtIj4Sa^W#2VSfDOuFzQy<*G-o?P^fdTd6 zXR{9u`~G3QPC&@TgQTosL%2u|l`P@gAnBn}$BEM*PW-v-FqW`q+6VB6Rf!Jj9n2A8 zgOy67)~FEh`{`SupjzQ)Zr5aW+MPnT#KH@*HI|ktrJucB6_b+#ku;V%MRL7R0bb62 zUu-T_xY?hg9fY!R{w8kVHzJ`wFBHG zHr`p*lU!cwsX)i1@+Lb>&~-sA+?Iz$bGTrq{Y zTbKjYUaL_5+e0}?g4SttW)(X5Bo~c4YGz3LXvgGI^ay?z>Ybm<4ojgKT9Z|Ak@ZsB zeo+n8p(&EJ)RS7@uHfAM;>~vqQ`HtrZaHEj^nrK0Rjy!PFX3eP`JpH?v}3Hracki~ Y!e^KjOYR|QqSEa)st<8 diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index bc278de8f56dfee27bc975934840753feb2ac5c1..a8d774b21f74dfa8c53f854588431930da522fbc 100755 GIT binary patch literal 224470 zcmeFaecWYNS>L^1&N=tF&&xe$Ci8M9lb3x?2DnFw87NL7vF+^n07)A75PkCT@#8-U zLIfruKo}@~J~1;uz^DNStAYhI6>MT9B~`@e!(&H9jVPF^RkT>61f?zYi3M7!D9`tI zU2Cnq&$-V%FG+Z5E8(8A_u6Z(b*<}tUF%wFXD@iw%knJC^4oUaP#im!-B2Ej|K`VT z$SKH=agk*=ba`-0*B$+4Hw^US|D)3FnU~v3`RzAkTolJBrBQDEWozBaZnwv3t-PJa zicb{V%NuWbP5;K%9=-lMZoTowtkms5w=a9a%{RaNg;_@hJ5})F8;@T9s-rKz^#w1! z@%oqEa`fd{Pmk91=*C-K{jwWxeZkQiUv&M^TVHzP^|!wKJzmq}SKLbd>tB8J zJ1);M6^@%iUd&ci=6&AyvKPMMJF{Z0;AOAyf}!4e*^MuI*~?#Z<9wA@-FVasb{H@( zdivLY{nNhT`q$ie>r21mJF|fr8|lH(fBN#*UjMYGU!LVE+NL7jjAL?mx2yDpH{bYz zTT{7#Jh9qg^fo-hRBI$Jx$(6=Iveu0-~57`ZhZRnPyhOZ^!Bgvd-E*Mif*?o%dG5n z?JvuUEbod3`rV@Flx1FWlXctwE4$QA|LCIZX1N+Gv*EDJM&$~ZxizZ>%CQ>h4p*}A zni_+i+wzrsGTuHeJK5S=M(J92ZEY>zk#)p>RG|Jj*0XMRbh`N~^3~ODnP=O3t1w~x z@CQ$3!t7@{^?6^c~N$W z)q;4Ju0*08=mn;FTF02}>BASi`shnue(Ot*zVyadWj~ZpUV00cFSz-oue$O2Z-@DA z%6>TC_JUWu;^yzX9`wURuX^bVv$y9U{l*u*`e>~4j(qJqUV2OWt#{?yUc>#1UI4wW zf8onteaq48NAp1{dR6vg`ReXGtMg(1d-Ctizb}7%epmkH{4Mz#^1;V{WOQ%-17+Sl zcJXokm(|rxvtplJRz;m1Ec#V(IKQmSbXQlCA5f*L*eL9u{;WJQ>s0yvEW0ers!rWM zQsw-U?kBpRH23SeUyt`iRo2y!S=V}@8qcaDlYbVwm`uy6sJiNHeb$LxR~;4fXT2k{ zTrc(vnpyWqRaTwJ59;OfibE>g`Rs94l@lAxkfOXk_S|t+9MYv8<&)Q`_N+6`CqJaC zY*^>h&X7)Nc_%-egT=(ru+GoqNUfIw3IbSFe&k@W?m#huE)^VxDibyY`$3Qey7rfo z%L=+zSx5bM186i|9dVp*8%}=MA^G_{FOCUTUdZas5imY0tNf;_c)mcdiX$_?yn2?8 z^Ew;nU@|{C>i{67duKTS<=60AXIG7LYot_{8O=<26h>Y=dki*J7v$0UHG3oQ9fxg{ z58IW?p$1~(0VH858v^pZ4st}|FXwsZ7})L$=xI@RrllaLI}zW4gnkcZ3`AAB1|Y!D zIPEgd;_5K~)qVXjj8em(AT$8=7$r@Vwf$Ya4D8NSunSB$C=LsLI9PNTgh1C=cn%XW zhQI)EENglSmM3r0*oLdw+na{)u-e%;`Ux?W!*Zd?hVsFzY1_ zSC5;W#y$;91u#MG025acCNLjh5~-U;y4Xey20Mwzg^7=4H&64@(Iduh(<9Q!NFqtKu_cl)jE`kUrfTKh zV%*9VSBNG7irZy{M_ee5|Bs315;WM*~)#h{^7lM-h-0pAMU>C9$rI((uR#I2;=Iwh{6N(SPV(kLs?R2bv|8{ zN?noQ71gR&kY#~tD=zcExPD|haA+q-ro%d$GM4G6JX8%1XEHxS|FQ9a^l`Y=55ot? z480>!*MO_47Y4jmt=WLrDC6(yy%lzYAv^un>WehkQJo)|j(8OfzkX!4ts3kvty3$R z9GOk3VY`I>w^!p>BF%o_vT}j~1#2dL#pE4AH!Zpjv?tkgRqE7n#Mo6?!(WZGpF>-< z3aPqBkIdHGa%36sV?MX3Tf4#9OwtXeW_!3%r@Wh^M}_NAwQ}_sHmU$eH7Ih+ponaXA6F$zro zu?frwff*w(MI#flwYF5?D{WE(W?>hkqO4a;1;EzR{uc7LZBG8?x@m;3(KZzf*%ChP zOz_4Mym1n|wKEbtlK?rSN$?QeBzQk2wn&0!PtIEKM)k(c@A*EI*IfN@nXg1s)tXI2e-M1iO5jjy zULp4yt&4z1zj{M1w|V?%F}a8g0r9stz$}B%Q&U@kGOo+bzm@Tu%I0>DPJ87cCM@pa z^AL8C^GD-{tIOowd%tN)qg$GXXU%|WVq*Fe4F*WFmB%&FVKRc-&18nQF~+S~luBkW z%nHR};?S+&H3rPMDzgwP(L!i`#PE9c4H&UyN?olPYT7f3;M)Fi@g=2;;pvog=|Ygm zVCKSOFq|NHiy&!&6$p~MN7Iu)nb&R;J`tqq;^ID293u2mTy=!r)PQbO;^bCjm!Vg!ZH3+s7I`nS{ba#G8zF(P=5hyZ^jICV(Ncd5m#R~( zp!dtkPe@458x_&%FrJSSP5iPIO_0o4aNh|YOeO+=&2i#aRvWj;84_h85lN+O@GSqAc){PBO$VLCWu_YyXny< zd6O`Z%LNLEq@rf>r$!{+k7lb4BF!C=>WXAsMC89CD#m1?IEFW1({3Lx!ja#k2?><0 zM=zUo?>k(+Y1X?(Ap=dVd-7T8>`E@@#-CRO^GR3;3j|Xk9h5w0jJHPf)ylMk!(mFd zF9IlnV;-*ti=5dHCFs6VvIV&y9nlFIb(fUbPcuNViRR)9@q}$z{r>ylipkHo(fOlM z**VrBwi`lLk7hSb3m@iI|5o`W*#_cLzOv3WO)hH<3uvU}r6R!08r%;bh&((vUo$;s zyQ4LPLp~`Kj?*yj%Q&sC7npyV&622C6y!N$L<@+%HTWZ9 zg~Qo55r|M@(+!Yx;>~6P8O^Se&+Rk=7cCM63QNWsDmxdbEQwO!6qO~B z3*6-L=>Ui!+RdB)9x)SOl*SF1P0fo36Sh-5W6pN-XkHkQ!ALk4h6>iK-Nj*~J~lJ^ zhWd=cpx|4Q_hqbugfC$o^zVX(dg53IhHrBZw`~UEc1s@Gc)UEc(J+kB^!y`rF4=3L zXj4&o<`=_v^~#Z%&tO}QV>Ju6wNm+)WFwi-tX9+vEFRC3A$HRvrDB14b4xr_FVn{& z2apu?Nur8OOt`unH8c4sS+uIBcUJ1&l}u8)atm^-tenx=ir(s)rR|Q)Vp`9NBiZ}~ zRO9#37WQg?F&DEEc$Dv(D+l?jUjEd%a?Ies%by_umfnSJ_5Mz;r+FH8q9xC#>Ym%n zWh50j+bEu;dHnwJ@+t8uY<$i7#5S(JfbenIp`Ll_RdH!{+ZDNjZM;vnlWGtN2c6iH&gVQXqP`w1ZZ6!`~>DtrQlA>V7lP7VCgDO|<*1d0oGm^@a(4 zdF1dTAO6|jeZxmT{&UY%NR!t9F;4V1PxI3Pl1=qfC!JO&?I^;`qOPnQYN5)Smxro3 zB(Vq07_p$bU^du*h9_ucEH5f<5@!l z7~=gBmevAan2x`tix->U-j81FNuv6tYZ~g8N2hq^zB1;Tg+?vl!?fkqv)+A&i#N?y z?wR%FzBAv8?mK2XP-0a}HOyut+4#J{hhL>ph7yYLfwknR$YIBI3jGrDt6%Fecx<~l zw2X`eN3a(-T8PA_mx@6s&6%&TqBqs$Yvksmy1Y%=?Z*ki*oOg@`m^FDOs)r#htiQn zHI!_#>WBK%LgpH6_p3E#QiK+-QmNQ>EevhjvvCr)5!qg&wNAAbgUVCN0t>GJ-nQvT z&ZQck_BA{e#x~I7IB4jhBSh$ik*wDcG@i(uxQ;%Cxu)6RJ6Ei zjxGz?Z!qO3lp-w?@Sc@?Ena!Vtz>>rI#0ES==7XD}jVY%`P*$qv!_$zhwR$n&`N=XY$B1^NZb-XjTu7yrowyp)cZeG$t)g)6Ty+!E6 z5+|CaEIAderK|^?RU1@%b;kTZya;9kuq_gvYLS9hPi6_Dh<4rCgi&y5mTz&TFi&nt zT&IX(ePLI#ss^))5VtVu0o>GCG6Blmo$9ofgR7UIeni>sJ$({>~zp z?>rqYkN3_9na9gBz~=GMnWFRe7UBGAWzOGU1oX5By+1!Agp&Aj`nA4?i!(*&#}?uI z>QqmEvs%~_tbJ+;@y={FJ_c>q= zCts_p@~4Sb-b_LsO-E<+JeE>`=y)d2v-O6V0vQ0@H(Uj&t|d8izmt~*Zqg>$f%T>( zDS)^a%hLZ&GbWp)ER2ach88L{CIZYigCIjsH2X`YrICNJ>+pfQ~_kBuG=k70Jc z8hNbyrmf}Xv^+*;&=bgGJ2JV#nm@&qy5T3bceEm=zu?!OSZ$^qd3`5S{j5Homf!RG zB#{Y=rRDVl&E@^g<(;KsSFw)n*5~dfb9eoCrx)&QFUsZhgXZ$9g_GIDW>JDYukU5i z%rys-#8&IvG>vmJ*EW+Sy*N_?JgZ`ZQb2O^CsnTbi>mRM*m8(_FrA@Hi(G{2h-9?q z8=7OLd!_)2Sf_h{*Ya+-mlk9`;vMZT@9Z(%w#YhlHuaRD`ZVdut%VuN1L$fHp?`ZC z*yPWoJq6dDrL7#&8~SylI8n~B*j{B7CZvCBsdvKETZ3U7sI4q0Epfy~ahGvoirP>z znkw>urVCU6b(8N^pISJr2$bYHZ{yD%o6xLMZE}}h zqH_xprmY3phEWp1*D$q@su6aANxtY!GE4aNOlOz&=wjKmo(5wcvGdE zo99^`s8N2_zi!-b2aDUZCR*I0bxUO=E-a56{>-P|_`C0Z@7q6M5o7r%iWrM@0b9-! za<5v*T41uO|6N}ZCPOnOCPM%Ov9l8r+K61kWEiG`MdxE3o8o7!<5_j6#1|M{>A3B^`1EWlg87#E)GJdbcP|4G9Uv8L*3utSd#3Uz`Qc3cd( zJF$Ai1Do51^>4pfgZT%O2Q*qX87Cv3Qxlcls};+I=wd}=KFH|OqNoyGtb$Z`5FFM4 z=wjBBF1P2FC0K>DO_m@7>x3<8gXSKeCa-ri_ZDM4FWxhrebZdJUIXif-h4m=al5dN z;L@;_!`Y;tJ$t+}CKir%ZjGOw#-0ILOb4AgElSF zvRvVqH;kp0Wt#%h6k(pcJ5sCCG8nA@JcHOs`|QY2@l4ni8=^g>7ArB0S0&`gOG?&8 z=__DD2vd_r^|&M#afXwSa3xEhuXaz3XnTpYC1$};&#qSQ*c(y3U5+{6G{ zW+4U3Q~Xf-mJTB0;A^?rhz!`RG}p=;1)|acm=+CeJ6NKDb_hTNT*0kq;3?)?lEH;$ zQKzj)rx}@C2*Kw}ep@%{s1=aH{kXZ8T-Cdpd(&wbg!_@UV>L=cS|O?H1*Oq!)@sR{ z?<{1Xo6v1S6dMCf*V-Zu_#Pnj3@zp3Zv#yzD;(sa6rt$-jHJDdO&9 z=}syV4KVH3C&O~1G98<{Q*UK;9&J?r6=_JS`84Ib=k<1yl4RJqH0nyJmzE;7!=)gve=nDY zIG9}xCLCeUqsqSrmR3I(=2r z7)39)W>CMm2nJpE@bV1CMx3#uZzhCf+iE)Q;4mfas(SQS0=t^OLlv@HqPaJ-!KO~N z1CyJ_V-_E&5}$__(8Xld2aktj`T_}TtWR)Rqe(Oaz05O-9_6BE(v@do#79lYGBDN7g}IuX-6FL|qsE9JWx@c|Z+gph;3s{oe#a`Q2uAVi21M2!uS z&pOzISHrWKHBN|DUj`DZZ!7c0gxJ0aHIB5ijc=;MH;hIOdx*N6HuvVqoZH-+r?WlY z6EcIw-bpU&8;}IgV>(;iX{zRAclTXNSyG@8iyx+4!_hv%8cM-E6Bchd^@L)`(GM(6 z7XMaUWFX*w8<)#tkB+il;5H&C2o(ikY{Ba$Hs5mlEF{u$`z+Gga{D~-td4GkrWd3GCbJQXFE?fpA}|_e@qvrO zPCw=k_$rYbrHSO9q+NT)+nS;ScO09sV^mGf*ikjL7#kl%g6ESlalj_k)JQ+Eo%snt z;A{xjaCVyG#wdg-Ra{y*dS}Df^3jr1v^ksZnn`NvPBG9BhMhM_S9fURxb)~f}&e4mMBlgm|q=>KWOJL^Y& zx_x&Cq17f*`re;!-~HhI?Yno*)%=2`eujO8@9PxZW|5fW&)i`s4yAQ7TU>zyeJzz` zvz-VkN@8x&44>DMCy8m-^GjxolEW2(cGKBIbIWDL(&aLa9w3&k1+jGugioL6!LaS@ z0gT9eKroTH5FmI+EF%OHD+(IE(>+|&S|77rO>^sGnzU+BcU`S%8+)#cew9VCi{!Qz z*Y{JnS}PXaDzkT$po$|Xufxd7qJU-1AGU0CVGzFRv{tC_3o9)lpd#XG7;wieV?bbA zKCTM3-$AJBtw`Q1_g+EUz+Yb>a z72OjM5g4Y}w7Ml?8RA7WD%$q?H2A+~2mC#kj;{)K_{_CBK=5{*)ui05-m&8LbgbUP zb15e#f+y1?i`W*sD+mYV^`7X2<@G~WU{0+KvVM?C2y3pmNE$dx7nkPQ75O7bAdhw( zxisVMVZS4Epo$N22Sal`EADCU3YYkNssGaw4~{0gnzW46wPhs0*{OlrQaj6ncBGdD zq|P^|#S&QxEiRIblbKt;+J>|0ww9h0zEWHA>F-u_+jhJJlzPyaC!Yd&=oop>!eigD zCe4~(3i7VV|J+b^DX6<5znf}OF%Pl>;ZsVpXN%Rd#~1SMeXPk2Qlr17T|$O_HN;xZ zzarqqUbFmP>$iU}|7raem*pSOFCG0kjo%xt?=G*%e#)-*)5&G|FKS-r`kfiq6}&(I z{6QemHmct;z!}|KE{&dU6c4dtjOzICM}GGcZ~oC=2n*v{xj4upU_Q=ku0I~~Xul1u zysSK~DaX9N;;#(uX5uRs`Y(y|D&k zpz7{UCGVsa@#A4dob(IQE(Sabp#`N~xP4JpRn?b)8MF+{9pw~Y>j!Q8ai5ME1rP`9 z{wx_761+5uxFg3o05sh%BO9&VO=Lq%GHgVc{+lk7TA zspKJe$97J`;#@|yjFMeHm*8oiWt{?R`ce9}JQAKSqB8CTUye!% zYnE2!k6k&wNLX-UE%Xx80qpr%^s>w^sOSa0GyJuwx|kraN1S+XZ#*>-7FM=`?$J}= zz+@z8YskNhp+fc!9WWme`cIEziQeg&%~Li)n=@8eJ3|k%Cy+RUFB-Dl^vdzHt$r?d z^`k*c{fOy|ZRXUEo^BNP_oRO2c5mL}=Vk%wTXOwSVbk9(ERfc>@8vqGP=Jmju2tS&~pA5mD51hQ=Mce*;v{OG&B zX}pg<-!Jh8)7tti%+?>Y0u)9p_>dK_KoAOaCX2`h_o(E(b2cZC0OfdwHb+GN#9zK+ zOPiy(uxOCTF77`rb!y}hM@^Wk9S3wX0n9B#Bug&BYFPlsTbK>z>;Z>~Y%uE>D$+cN z=Ag?S)PXNFg3L|R4Xi<+6BwJd)8QC!4{lgW!@1PEO~N~;!lnbd#dK#e^B-_()Y{k6 zGVTXEbKe^jwX6X#6-*gFvY;&+0f)xvSSkfxl!6Ey>bl)EowQLrS~#9R&6@1a(KD2A zC2xnYla0wPqpq+gG^a}L2gN7RHsSBgYY1CkM^T_597RH3_wbw*c<%{_Sj&Ph5rcT@ z#}YAErk}ULeVmjm|AY3>(C!79t@HN(d1RS;do#AjBMATxFVBk0iudR>_V?q$aUj8A zPBmf+u}+_4M>CqD`)ZDfvLj~h#lPHEji-b15POLSI>Kj{oC2)-cdPwp>sCGrRMI06 ztMzE`m>!8E)Z|S9q`XFF_jK#ygn{ARE5|D%I|4@BAwR^V#$=pvMd@}A!fqwoZ7Qlz zPN>N@9)fuaIGuR3*-uL5^ZL&UxysKpzta$!P3~XfJd}2(02F^l{hoFX8ZF4<=udvi zUy|~F_IO6Id`uWl0w(YqmnC_hRt^WZjFyZ5+5oWk^E)}AMxTw!Gb*MO95ik);4kP_G&oY1`wR9S8cDh%?8h5ou=Dn)ESSj)Dk~C<_FGt+r-VP z#zo}k*^W?chpKH8hdyD|#-Y6y#}AC-2h})nya>CQ9t zYvT)Wu4urtr5{|aQ^L8@7RyamP7)n5TVWZbl#`^fb593OJdndG(9!lV6hu_g&2-g- zbf!cRj)&1Cae5B?8|Hwsm`Y=_#F6spZ2q`vSJgTC(X`pfrCBhZolF^UOy2LBM`~sA z8MgyLC;e=AqTyp)heQj5LNLmqIC`Ogwa)mc(G}n_=J(%$$s3QJDq(zEdBo3t7D)Av zahGQQazEc7Yg1g7eYbvB>h;$=Gkd*X_Fr>FE>B1N#Oyx%ey$assK`PVptGIT>UHMC zsn8UtKbR8qYjFHDS^xo}>zVoCmLLD=cle1aXY7Z!sM_w4FhI)>Z-oIcyb#2Ef61-8 zBaw{JQL+1|uRV7vv49*Iqq2no+Rl5BcX#_1oOj!$M7Tp_Xglv{dY}l-yPYY%=)4nX z<`B*(!t*QqJNOeY&8@Smiz1V^6JaS3FmwjaRRW&;7rfi#0eZFbI!MnpTt7Q>TNR) zs`=LOli4fQRt?eHdLX1~%my{F-(O@(B>VAzeovZmkxG2H6>b*)rjSqlA?|)pn+bfH zHaJ+kU&@MGMZUN~LmezmYGN!UD6%C-SOv$tqB(ddUbKP8x-hF5m_?W?jc(iKIgR9$ zh6QHl)|o|vQT=yIZ<6>JP=KrWbOT7{>CP~^Stb;`g~_tuzf*zl2RZRS3cTS(x-|F# z6_q|DpTIkmf%zAvoijh^C96==-{o5-eVD>|!?@U28739@q+13zc)Fq7XXh%1(h?MR zLe$~o8rWkW(#XdX=(_>6mHvW3KVZ~m%d5NrpFWuFaZTp~o4g^I*>*^2toe&hg=NmA z*_OWL02-KK4e?EB8+$rGw;F>tn_YGNs3k{QD@L3U*)kxh>=c{>3GsJ1gzg?Pu}4qV z@m4ykb|OES59RFRSWaD5Lk!s1Kz2ZP0O*bi7g~8FV%EUoZ5O&=cs_qKpldiVAJKfy z2~zdP?}t0%W*tTkdhbPi#7E3UpV;xqGeIcBS0-rNrZ<|6Y%uYijz<@&#+|JiC%i^B zvMC1qI{Aa(JW-43#!JD;5!!58M9{oq{xzrCx4P^`_j&=N9NvLgyH>jPk(Ff z?ymN(t@=H4cORU)TYw?45OXt&Wbkbexl^<8oKj^Hz5~hPXZu_^Zkpm5{Ope9p6)Dl zG^{3CoYRz(-~`W!HV#yGkFHm_roDAtk4yyU^<1@recxW0|Gt~G4DQG}(GSuuqo&I} z)h=lhuGXs^;p*J<6%)>MJ6PNyE5q@N<}Odr+Cf|xu^9Eool)g%O0C$GC-`duahr5G z+EqVHb50qFil2@!uY6&egVd)zv~==bivh=-O$7%^DzFz$NR)Ivh|Z_`g+SPko{)_? z^EqpAh^EiPp=?(StgtwD1qtR#n9*Ab-H*TZ?4UapWYTTHik@;tomT;_s<>_PIvI~q zcheTgP3mJ&q!#Xtlbuh+>&~T;hRCC4g;4Qv*T;Zo&Z**MXI62z^Q&o7qbBCdGnw6} zQ$c~|6u-VZ#;-9mAm%pA{#EF>LsoHHA4z8uC{ zL-QXGIB+!c&xdg&4QE1PCx^^t!?~ivst*dN!K@g+ip^HscV-wru0R?Obs5gvAUJ4! zgPpdA0BAU+M3+*tgXJ};v`U6^=zFzVS?HVl(6{zv%=fKtboI%qnta+vzZ{g6R*m@m zf_Y#Kg|HasD6vExbQwAZ#dfeb;QWmCD4v0v0Ef73M;8o26h#5bP?`dv@`*zkTq<$~>UHO+)?(TkW@ z(-qsKT(%Y?LZ?>Iy;FJ+^UJ${utZ@$A#1v@0?LtCk7RN zH1}p8FOT<1yJI2hG^g7>k>Bn`E@CQynGwdY<+pp2hgAUNKJ$1;RS&1zzB_Md!U@Nj zKgSw=N@kVtLvBoCJdQ_Yv{)WZrm~Kz$C6;#^r5JfE)@?k;q4J$N`wcwvYdx>CXDP} z=sG8f`Byn1sC5d--?f08%XN<-#`)CcUMttV*9dD!T^1`T*ZtqB58rWsdH`%v+I>fw zjtp0}`>&{m4u>*{YbCc+Al|9tZUSn^ev4V{!Hiw?^db`op{Qx;^_OO!j}02l?0G>B zsLq}GYdzAgoxDw?9}*F=;X|E#7*9*l7galvN&xB~IUwai$koPfa#We~%JQekrWN9v z=s+jj3J+php*%qf3H*gZ$pBL&_K30n(3rXs+h};G9xJ4E?LSJcp%v0Pv=2^8tV!$o zVj``F*TZ?@8|1L8m^)O|50~0baT0v3RlQ3U5nf^a_2}e&4gEYGeT)j0=Lm9&`XTP@ zn+tY_22Gw32ds03n8a6&>#K+bLx3Ww)s35*R^`nGsB9ZSG?ungWt5)ap*0^*rG38J zq4upw{3nZG_jD|pl3t(yeHKSG*``uK1;6K^re-#};wEZDIC|PEkrgHodY2cPsxu{B z&`NQ%eh-ntf~cQ=S+43`jTfsHXFS)$f*t(`A5rv`s&_^HL3A3Np>w>HUsmbcVSH4z z(|qc7_ya3;W@q{e+)2J2QUk~*Uv7+^2p!Q%WX_EOe7RLgv%)&YrnWCjTSoj1$g>0iC~U{O)T z7eLK@J&_YDwRiY;{mA6Mh=a6c@&w;{)qJq5A7;ZAJmC$eIg6LW5ni6S-OEw+UY;1< z%P|RF?v6Tq;pJe&%M;rt#N5CWg!}+M>xN-QB_|gx2;>GC`ETxzNZQ;e~ z3oNC+DUH7HV%whQ+Kkoc7wI#`z0k38^ z=vbvd6;z%KGZR0XQ;LZWT!tZ`DmyL@X5WB0xg0r`a@6O%o!?NcnZ9pgd5dY9A68bla z7b&_RM0_gqDSjTOl8b?&h>2UnoPY88+s^NH*^8ll8R=}S`8h8uEo5qTr)0(kF|c*Ejpdviar?? z0hChUK#{5eDtycr{RT)lb0URWs{2PJ?t829*7|jSr*m@1v+(*GuwU)b}s4g7k2^ z(1*$?@|t_ua7~cqx%=t-I;F`8(u^Iv1%fbUp>umgCz^h{p|g{1n`{>L+&$#kp>LL!v!B3=Wrtvx#f7)0JmnTO|bIWr~s?f9k8y_hb1h|bLeBi!>-h} zlp}3ZAVy5IYVg1ZHeD85hRd+tq7|l@2H@~%X)vDmM9_+j_fuQ|;h?X~&E2q8f31^E z*8Ci{#|17YDG6MnN7Hh&zMO38-%gU7FJU_%ud6j1qY) z>Z@b|%rO0Jy=!IqUYneuRDl0d$Ztpm_%KENXsZA}rl>#PAT+oDA|ta9M#hiSSXAcJ zR;T1vCpSPAH^igOh)ONw@*Y>jm}VX3*!--Gji_wKrifqWYAcwgxzp;yx-@f&PIP`z zwrEz{dCkp)S+NC2vf2A!`M*R0G>4e8)?d-WF|N{1vU_~Z$pJDv^Nk*5-$(w9y9NCo z2^pv#SyJb}SqK6KgvkdGpyCeB9{;8 z0i2ak$dn;m4d>-c@_TJv$b{kHYmY4Ka7p&fngA%6;LKmte}SBM)WS+lHTak>in9<{ z^V0maKeKjxfx|d3b&(-4jSLAlW zgyIclC0Z~MU>c`o#~jViR8vklPOB!JVd;WCCpXk#6=NAlC2@9|#MbD{_V* z(n=%ZW0bWrq_%S8oRrW%^&0FE$|^Q%Bc?xQ53xu+^&7_G0cWDRgQ0SYQer4G+H<;8kgxUvsS@-*>qGraP*YJ1)bJw7MU@I4}4vOhuFs zCjtx?hjbUbcXMKi2Iy1a#W?rrAn{PHBIhAKf%C|Elh+>?okJV`a5%iDC^h*^F?tSW zE>lbhaETIlsv#uLP}Kx8Sl08!5D9>|-pUNRzNkWH-`Vw3}#SHWQl?>9lP%c2);(LKS;W z{Sxxl$l&rwCdX$1G=8cZaB`@J;*^-sm<*e#U6h`LN!rKmaf39tc%SmK)LDw7!vt$35io~tMV^t2JhWLbTwqNij?JCEJz+6#lyaW?xZsOq6V z;S|1b77Pv%v%e6>C)^F6iFwddak+$|eba(Ix!9?7vap|i?Ma2JDeP6p~T zXW*4HVBi(cAlk&hoFwrCFfgk06bzh>sCzsN{O5Onxfu8-dim;Cnt7+vlH^^TLi=XO zpd??`!1Qp`|4BCzA~*hZ-56~FoJth=uPpuvt5#FR_~1;}4N|B!_lue@m`$B#HnVfE zox$5|;|kA=W~1=bZ6{ZVt1Rlt|NpWdakL z#5wb`7$85Ta5t%lZj!lA=w;6QP=u9@-F*L72JzS9YQUz`aYLiImQNLA8|mQJrv4lN z^GD^M1^~IZ%K$Kd;-GYRe1M=iMpn`)!=*48vdmihyaQ%Vkp%>qbIC~|f2fP;BHwsR z&`MdA5bRt0%s@!do^fh0J zusM(9?bJNe2G@>$FebN|C744wSJjmr%wh-x-Jod{n?G z>7qa#vZ}+Lkzd8YURiUvOIBx^_E@~4wyB(;C*iuGodpsxl$s(2%}rP8QYuB^9mC(w z$AiB?!k=uyycx0kNR}-W$ybW*3uknnnqPx%YAe9U2DdgPY(`Q`)h_ADPdXMynVoCI z+@xv2STw5Ej<7!Uu)@j8Pr$J3XysFMrnCfiOp*`bFgUlhT^d9*;VR4ZDz zecS|rht)877H&(^u*VZO`NOwuIU#(41Ajj{EIS1L)?@7Cc+o`u*xHGjz)cB3bc;&f zpV!TFmFFogiO!pwtlm$!8LTw_Vf?qq{mhlXWi#7@b|^Wbdp~7_a(RV6fswMu$;>8v zK%x^XbzF6>-Yfj$vev8i$Tcm~`}SMhrW z^~5&vkIF;-BBP_6ARf*7=$OsFUT)py(Ggj8P1X!=%DGy4jeqgWJ(~l+3DS^GAty_a zZ0NBthq+#pdMs^N6qpaFCxk!Ku3~!!4=m!F%k6V-u_nODFV-TL=gd8WM|7CH+T_wU zO{+I8REQ0Zb5%dgLmJ&3A|G~7Lwnlyyu99uj64jQEK?Ke(VVFo{p=)D#2c)jkMY{pxw zE(rE*TXlW_b$hipT%A*$7p``tf$U6!+)lko63a{76AB;cII`g*R##ucASD==T=f#jDHZOLP@&DFm}VrtZ|5L0*Bc8CQGBn zjaG?e(Y0v9btK{eugfAWJ6DUEJ*7JZyw%laQrn(yciKfd3C{wo0LOe{Ai$VEk+o{^ zI0sxy@{DhPu}`b4K*yalnG~5*yrV3vH08!|8ga+sT%5RPpV;4 zD@-(31>a>c=XY{aNX~|nU-I7{=$U@*NB#UTyFK!-GGph9FY4z*brWbsf+qTiqEdHlV~pq8n>bdM6GJ~$v+ITVO4{{8b1iVJZCXLTw3AodqK=j7|*hQtyFTX>C;olP?F%Rwf7#ee@}PX0p^z%GM0#3ldsE|sdn z+5;Z58ec!PxmnC5A>y*XWW1U264SKh8`(;ogt=2uYH^<$;~((*&kes!Yb#~;XqaVE zBQ_;$G6c3MaV0PeF6s(manTk(ak_#7i;l~FawL*||6pEMM#GqLTR2PM$XFHLG}1WZ3GJ zaLk+?s)GI#9K~V#bopLz>OPy!OHrqv!;(iTyajigPm z@6&VbmMX(1pZ<*sEEiJ_rBhvVrS){g!#o&FuzW=UFybnh2YDS30{@nZ=c$rma;I27 zvp3Zs*QNoUSh1Dq>l%0gF;cEY0Wxw3diUXbJJ&o#i)cdIbPN$lY3WM9I6)a-#POuu z-CP(BVp=M_$MG#U6`GlD90~0S&y#R7-v{k`?^Vr#s^U{ZhMbqL+%(Ip1^4O*9D8!2 zn)1y^R)hgI;4SjzwZx>V%zpkYeWIehFk(b^M^X7YgbOp74~nr=Qns1v=W3P(xcA!B?8c?6@(9Tuh+K08t>W}s>KUWC&W;gH-X@$g7@usLzCRs)Tf z$l&sq0%Nh|c?zH0Okrz%Ij`2 z06MwAYfB9lmVYXX8p=HGl3`9|v7(^HdUDDiwIhl$xlm7`^PInx;t(K6!Janx+!}p{cfaq1qLp+K6g@)Koifq1rP; zwK3KHu&H+LLbY!Q)z+v+np1>reWBXrp_&fn|AVHQeG#rT(#t}%3DthTskVEewS%GB zcB=jRrrNHBYF{6!?V#H4HP!6vY^_e85vrX-wcl;3owLx|KM2)!Qtfw|YC9IHJv~(0 zMYVs|RI|^xwK{!TsJ5GG1Op@9CJU_{2-Wsb?YEn1+ZL)_8mg^R?W0Y#wS{V57pk30 zwU0E_#tYRh3DwS{8qu-{+i0QMQ$w}ARQt`Q+Hj%T*M@56Q|-e|wZTHQuL;#IpxSRV z)m9g(?GM#1q#EZFMA-TZ)iy%4i>UVNO|_MUYEKE(DyscjQ_T(~Xc6nlq1u#czuHvu z1cpXV?IY7j{fuhF93yOPjt58SL@Z%%*H&LRT9DAt(T%PZj>@uzP`sIJ+@;tx%OD@m#%m0tdb-!c>O|{1_|BB1qe)-?H+~t?-O|8!H z%g=DR(=R{ASpBA0z#vUowtD2ShuRHNA0O1)iE;bHX@lnMbn_HzmSe`Q-qpP8Be2;%>n z?!o$J^b5*At6%W_IsJm{|E^y!{Xg^znsEqA;rM^*7X<&ce!=eF=oi#}LBHVjZ}kgO z|4zSP^o#lhoyW)gg3H(G7eu~ZzhLnW{er?b=okFGQNJMXP5K3M->qNJcBg*9+4txd zgnh4m!PfWb7gXJ)U-0y1{eq;o=obuqKfg;osb632CC>6q-ko_7!5N6(JS-K01DEqY z<3~5QdFtlE=R|1y#JCAm|MtSM%M15u(zQ6R|3dpCMT=9g5BJH}Et-89$2tBZPcaOb zXfgbMLmg3MJeF2x(Fv+bm^gUBx#B`M5Ep_O^>8u){^QI%-JiCQ`3-f%O}nwPZ6nSD zPt%4^)`|qr@>s0H6=8Nk+T@X2XzT{&_}1lS6fJ`&E~cCgL5K5ui1m^fbvV0cTnrZp zwm7E-1e?1~{zlk6tOVdKfcmBHr-B8aAnO9%HUs6@qAjD{R=6T=y$}6vwS3i@wz(x7 z{sp5p!KfP)j1tC*7qx-2c?OzF>~KSUO5kFAWDAxeuZVL|*yE~xYn$geHYflbT>2P; z@p~3L;ztVYIcyuh7hu5nYZIgvc69{M1QVUe*^U!2d)!AFiA%6(?z1Sy|4cwMgUo8y z9PNxW))mpwSA5Hu*|g%~VXtaOqRLSR$>anH&t zz$&cF%Iheuyb_eZhZo3t$-SOdp34vz?v3+gkUG8~NW_+YZT*|+F;ubjDmqXgQ4?lN zg}|!9IZW25dR4n}Vy4b8QnyNa7YXzvz=_YaGqi%4#ntEjT)1IXv>I$&^ z%k~_eaWjpRG+g?C?U*7P4)tOZppMv}k(HVgidW2+QcpVFJ8rWlB~rn%5hnq%@~Q|c z=w210G{=ru03j}BvK7b{C>$`}R-d4Hf5Dl-DOsRsg;wECh)R`K+2q$WPL?Eo)qmf9 zZdZG7`urufcoccef;=jRk^j$3_0peYq+iFw`Smnd2b)<6d{abHVe*1Ff#6!vruh$` zl#jB7oO=74Yx9=ii1L_%UEayz{5JUxXALU>kWJ7=`1nP#QUrK@{6BHR&0}l)OPYdZ z&S0>y4!=u=SOh%II4_?A)2+%PHQu%vnysl3yIZCwiTN0PW1Zz75n46Uev|PZaBYS8 zQ^56@F(199Q)503VA&vp$E|3YG2-$;b`$?@HM$dz1?zOy;wlBtmWkJUt!Y7c2I7S_ z%q1|?KBZuxV4kHxsTL_T);RwFPRJc#&whV~jsig#NK<;1o!i=#)5KYA^h9F3DV3|> z6l7bi&;a(C55xBO6zk+am>T7^t5_4}=a6EXuB)VxbsRu0#a`cVr0%|k%$N#qEOHQ@ zld@1SrG9dXVMqBc6ykKW3eiZ~41m`W3ekhQ>H`osdqhy6f9=M;^-Q9gFQ zOx?z$7B8axCaVRcxhAV}QnpHT4TiDC_{0Tn3kln~ul5A{A6v5^FmGS$?`+uUc@^Xc z1+$)J*K9kXUIN$ck(95w{ab>M-C!M!WppE+ zx>hdaYW=NBzDg+-#vD0Iw^Puh9eYFh4+VK6=G#ob+Hsi1B9ea8)Zjkc<-OzKo$*@sasDiL%i1aMB8`Tm@IY?+^Qk^lzq1DGT5J&UR^6@+FyyzJ!;?aSCQM6lN^{eQ5fqT(x zEp`P|LCkWT4;`kYDd7ta8Sv$shC@_{1{+eiNrUMVZw=p(B;y)Pdte9`tht(4MNPmS zngdB9a$hMjCN*}9nkK2Tm6VN_R9Qc1D!`1Ytj(vker1!PAd_UOK{YX5 zAdExieA%$dL;!xf{Yu+F?WF9bo<&knIiX(^hMc-ff z$j9OreG5pS#0BGb)seEwrP7rJ0t>-cu)};ORqOQrxcg3>%q*SN5|^af5ra(X9}W?v z(>>;3?${!1MeA52c6A^bo=!od+E5HU(zG#?f*UQ{s*J1RkQ2_tSuwwk$xmS`pP(RL6>Oz>uy z-2)m1AR+n9%0*YJ@7D;zC2sIZZ_DVPeo$hX) z72*&4t0U7rG>ut!&CL8VSVpbOm&1#guHve8>U;5xk!OgYp8>$hukmt>_mFaaY=1~9 z$644$IX||GB$Xqx+bQQK?sn>gY0SMcW|V6W3Y)QddRKc|_=>4~RX#V#^|=-ao}LFr zdjclz&zV%`3Z@;^ntsly#`;;U&eIRH2_Ua0pJJD9i{a@`-%`VsoricY9+Qzr-b&B$ zVA9Yxd$*_BeUtEr&}r9w5V8j(WaAZdLi|sA;<9RYl|P>YR=6WEf(LJ_UPM?|ZkJE3)lqc!d} z+wN#R$I-g#Xw4k0yVC4%XF}`9cL_1fenM~yt%3*`;^$M&_Z>#mj^9qXAQ2;eIORg$ zz9yD8xNXzc&>Ki#=%pz`JLpw+hW7I?aK^e(j-Kr3+;CKXjiWkqR1d0s zq03SAq;S=*o)WHBtNr0>YaD-VI(Rwa_^DMhY;#0smsDxMl@C#KB6Ne2*(!#~+&ID^kxZRdtPt7Z+D^ z_B~&Dyqc*vQ3A;gxpc>KOOhJ^&o2H({OwfX9_mykTVFR_r}<&EeiN2$hJlkbkFb19kF$h$-&K!N$Sr|@*gLcz{9g*m-4W_%) z=AhaInlM>AZ=w!*?wY-`z3PWrd?^WSG~?^MJ1@x~J+@iw8W_zhz{}@@2xd^p6!03{ zegUN^O5t^phYKmic?@-ZEw8+{nCk-4?V>+EIehF@)@jsZ>KwEs2-Ge2sc&`2ed<+R zaUc6*w0m{T6~Uir-#Em2IDY%B-iv^!5ChBo@zDlA)hB?1jJTgyz1pyovR1z~BH<;RM7gG@~+gy<^jq~rqRjcNkfyNOyfGIH7GnUKBW$uipbmK#Z`O7O7yes$aEJY z;%6szSwWk7`81@Mp3%(G&=^SE2R9wEpuHhRw9Db}<` z{oQ1R>U%)putLO!5<1Dp^Aqn@BSU{;umR1uU5#8O2-{8s90i{VJN&e)qjQ?$rfmf& zhu3x)nv!1-jRxFiMA1g&sG7A!Sq_ETzev~TxpOfkN?~-5=-S~L`W)BLd!sR&3a_(d z1use#Z%?vfyM0$K^;|<6DS}r4+ZoMFy%-Xw>+;IhA?yH}f=|!~%O*6r^fOKng>u;f zUpAg4_%eqoGG&rYd|sg~`cd)RfAA%@t|g0L&D=J_;JI8Q?uNnhxQ-YU>Wq#J>I_S4 zpLS2oytJNUaF+bC<*2jG$YR}wi-XNUoD6mArpd&AQ+*`EZDzOn+Q7e0uAUmMHmXa) z6*|r$M}1?_94`DiaDPh$N>^pG_9c7yq+}yxzrU4o1Ua z{aN;hshxcC{tzp<^=pYLKoyAHgNSAkC-QX{)6V8KW2{49fz6)7Nw;Q1;p*VrEeRr)~ggSLyc3N0L9f~ zeb(q=eNZ8Y)sAE^wpYp^bhoB?iuMh|QfWKH(>^hH)I0rHdNF4Z1aiHb}u>^j# zZ*1uVk=*<=xk}SfVKZzOWLzkdU_;YvtQod>&v02V4N-EVQ@srY^0ZOA?pbfA7+y?T zR}He>D1)tufpntzEBZusxIYK{C8NKCo8%5aRM_6DfgqD%pfjY7wJmb^K82 z{MJbOP-y{9iKoU7m6CkY?9lAiS?fck3U(3&?dXGhwnwuY_GqRLmBth%=JK{BQ+ktl zW;%AB!~%sk^?_4gH`0_}X)&xH@IcE0848zvtfJ}^5XpzZG2-ESq`y<<-54EgZ$?dF z<7SvuRp^MFebx@cjA3KCItbq|11PFypeRC7u}Q0rk>mM( zh#aSWV&qu;%xrWU+T=$#H$;j{4N@ab_b^*4avV-HhQ&jqnT&ZfI}3LJrc)htv@5T0 z%{Gl@hpOV#D$}v^SmGEwhTE&m1J4M?{3RUf55)l9;vE> zo1CP!7?2ot2}v2mVMv-b54T9l36b87ku*;vq-9%vc9JQloO@JOyk~A<%hz)xWl0RE z=5`#XLnW~*r_*o)w-5Y=ROc{2>VOU%dG1g6(Z`Y4 ztX#=h_{mFV6^y$ei8VaALvdu$%>NU2ohWAG!-aCx3Z020(yehxn1&N0d~B=(3--5D zBwoFnUyhHc-^1^YP-W+l={a2fAVoXDYN2gl@>lZkoXhA<`!k#tAxX@_WsJr6Gb3e8 z`Bp|UgGE(r<0tqGrf?nwVOKF+H}aR83ry5(yKugz+MyrmDK;+&l5;~2ipHrTdiCkJ zV_ik`vNz4Pt&6KJD_=r=;YIjv_kQ_h<(;s9H9nkwGr^yzU0I7q(};X9wHZw@pN+FI zo8c1?QgWgn71;QlFY4O*0gpJa;t~lhf@#+>_MM=u5N=JJ29)T4Oh;T|1M^Zs0;Yf{YvIW;zvsrYx$K+w(v{i>5(@F`k5M zmz)`cKCsPzi$lJ$**@IigN2kwwVR^}3|~I)S5LYQ6&*;%`}va2Z0Ywyvf!}4R=t3Lg|7ky<|iO*7^x`;cuv5$zpXtIZMX1nn?J66yF;4A4UJao-|8k0k-Z%^3= z61^2;R2ZZ!ZDKMFE!tv}iCC+c&{c*lf=zD*FN}dHGb0JN)MTSweIVFusf+Uyb zg5+${@g3%w$Mgtf#b$vQCh4hmG8RFruh_>l1-t?Bdy-_Z8kNX-8oHmJ*tGT4Kx~LC z&Os~|i9Kkh5D=TaOd|G$QiOx32z$_EfZBCp8%EoT5Mp;0iO6=#Gbf^_RY9!z*}^hX zZBh_6uG}WXrdcL;2DNcMYVuYHjoQnqJ(1M$eG+2KvoQBp?gSPwdPV>q9|IGtaH5Fr zhBP1UhV;GM4fzA|DTGz|7!bQY!LOF}T>exv@z#RnTFs6nL}+tYx)B zMs-eUi=TZD+qDdl9qcq>;X(ILRe<@AK|QYln2qPG8XNdysb^9Y8plY-{5G@G`T_2e zhb^f*a9R0Uc!w)e@R?L$K@5loo7jg;|2|CK@k|FJ9>&Y6sMIcmP#fXW%w|wC_x(e5u2MIJ1Kg40L?0)&n~CO|=ZqzOV3INIEfs23LX?iKWs7uikl& z4qI~05X7L&C}@Y*4*n4oEIcRQ0x9SkP1l&ttf(VZf+GfUG>RIjA?@ULfv(( zsh9dTm~~0qEef{=L1>`V;KCU2mU^BTm&PDW1hK*1yXNr$YzBYiumjOO9vBR;(>=0p z*#QCC0H%Sgr^v9WTa8R!=uo1;LIMV_ zm5TxdcFVS?ao30soB#tN!&)`oLN<6|lVnh~NiHZ`A{BB{2`d2ghS>%&yiE+%qh{~# z@!3206+!QS$8!KX2gA>N2|~#~^XYf|^jy$!11KjNxUqoK6@69xFC9u| zKD;g^AwF!ofgzL}U47X@OrIn`yj>aRx5JT&Ez5!8kbrmyqT^~VA}L%s7D@8Mv4}fA zXxO~P=)?ojy!R-Ui@HC0ARj2x*Be>QmH8BSX0Bztc?DaKz%N7;&zHdtP8jk;U>G^_ zc;cjyNr{$5EQ%vgbJ0XXR`Q-vZ_$_YW;~dvyz0eRVrWD3--T-aBu4RZKMVL&a4*l@#08KHDTkqv*pZ=a1# zYd_k?{Fr^Rw-oZp&cJs$8iWA0=kC-KCOxvS7> zfDHL_`B6@{D18;zE76akk86V)1AorDG2kG10le2ScIVCL#t50tiP4S0{ai_Ij2@XR zNUFk~du$6V>*$aVgH*T=6DqPdhhvG_4h+MwjXr`NUc-U8tB4NF3X7ta*^dL`(8KPV z92f^(L!Jj5k4*poPTPUW)O~bd0;mB-gSYL#Xjod{HKC*_Tf3IH8jUsnjc5SQCqoJ8 z*f$&4*#Jv8O7_BH$8!wSVw&=DV>AUptx%(K3Q!gVL^lfbm$jFgnQsAb7u|~3!kM}iVHomh3}JKP6tEJ? zKVg}A5$qhxl1RFjwyJbB(TZ@hFNL0z>c&en^o4F}dbAmLet zC3c|6M$QT6G{4eJ%O^?JIO@Y^<><_I<4iERAj;vVdDeUaP&}x#OIrA7*80=qrf`S} z_>*pv;hRpyAm@@vSV8SY|^C5c3`kcd+~7OJ~C9sOCN4Y2D}1nZA~ zPjW26dn^vF!D%fDItksTHyB0)ERY4%cgeqscDF;UtCKQPCO@o}vf<*E$0%S@09{Ua zqAfGXFglkm0I*~Ia5U`0`#N*EE#*FoTSWezX9U<$4pZqFE+vh&_yCo}Bm4Ae;Db0V zQ3{XvU;}+Ea)tC3J5afTUF(?M;+}Nugax{NykVWhhiSuF@l1#NroxYlCZ z<($?+ckoPFD__uByhpFnS{=zO*E4p}2DQ~uoDeN=h=(+2um{aWmFwIjU&|!V-j$67 zQuPwowzxTj>e2&o75osnO4|il+QP#T3z)@?)?7_I%Nl)HeTJzng)i|AZ<8Lv zhL@3OLtaolRDLvS9zvsEE@l9P|J|6OMexFP%;^YjlUm7Ei-nEgX&KB{N1`S>1zp=j zj4_TU!6c~2H^$X-4|0fim@-7mGhE1|Ox7le?z{=GOv+#aVkV`uoD>Zoa$d*-Y1O?iOv?Fw&dAi5zR5r!QkFE6-M5sN-M91`_rcVljT%!U|BNwkR6t{Gl;o!} zw>ByBPSyrLo7WZo+GK4M^uPg9CgoN}M{6f7qvNPqv^(MSfBnp5Qko)KVhO&q*|F(R z1sP2D9YWYi?6e`8+7b)~v!SWQ9(ciWyOc_~4}($3M~Uu(X0LJ@#65qX9c!MRB7K`9 zmOr)13^g5<(aw1;4kcM_@J;rZ%q*F8*!GrB2%>o;q?bWf7qgx#v+0s3RZDbTho6&M zINuL+P5rd!%0U_4(-T2gXQ7SadTR<8yF9$E=%>kQ5*@0KEK3#_ zQ&?)eLsQ`Ec$kVptVc_23vqNE1=aXncyZs{@wSDZ7+SO@6vkF}n@-QbAgr_g0-&Z0 z!}M79{lmvR&C$UO6D4mnefMSwsBf)ib*0zW=lA7t33P^ zk6++O#=$U1kK?PjLjiqh0o7|s1hVjq}fn}0^9qR}-~i38Z&)-07T zPCyp#qpPua?$2M8Wsb5+r;Rr1Dzb~1DDjFxWQlfQ)Tgq+Ohgw0JR7n%yBKop&(s_R z7bCxInuBATITu@7CDSKiQk$hoEQE&1=O(qSJsUQuZJqX`Ks%FKcm;C$q*hi_*9&_# zOjia^qsd#q)5y}Ejd@RlCj1L!q%XqyGOG&;tirPtuOv?+8tgd*CWB2Sd=UMd!qaG2 zqwzGhW%YZ18tI?>tVch7XHRDZ!i)GJmU?pT0C_&!c6W}ere$9RH}!cM1vN{pqNT{1 zJhTpxJw@mk03kRFI=h-Z(|>KLi`{}uG%lf2x>&hpyc5+`uJyA{v1d=WSF%+ruiG#Y z<`X1o3dqJK1sckmWCt_N-I#~sSF6Rkf0TG(cW+hRTEFh^N;~sJhf~?uCjU|h(X5iL ziF)y1fAO9iC6(95J-yUwij|ZIMpY{}$CVbKM=Y;c$G@rqYx~Q)q4jaD&=0KQ5Q4q) z9+nsT_e=}aa%Z$l`$s#Yb51iV9gYqYhmm=jfRD{TsfvTihqn!Be52!<@eYvIUF&44 zgP{;6ZIpxq^2rZcPPO$p>)*rj@)tQhr+m(MTVM$EO=6T{3q}d$VzCy7lvf1~;WN^3 z#r7?RGEX&>9^c%Hs3vf`%C+c^(O{1$3&9OvXj^EDFBHg1e6h+bfytAO4qw1KgbH|H ztsL)V&4J>qE=X3UY&eB4#@f(YXfy8PBqtxP59G{s*3{VxpS>QWj&!T%D$l9_IQ9`u zZJ+K|0M1qyN4}ZkR@sdFC4tXR@?F*T=0*6e8oI?r>` zCi#a8l|KiqQG!nE$3hSo@>(fpKjB=WGIx}zQ0E>~q;!F-jNPqQE9n{XY{chNO_ z<5%gtB0M;!6_#A$D>nBfvn9qy6vB8K}D9+drIhB4{qjemwVY{CtWsd;qOV{v5dlzS5M( zEkoS^fPGueUZ_agxI4chzs(Sty^r=^0%@{$BZgo$yT|PnABCW+D!U}ZRBA-NM62+4 zP)I7ka&==3HGJC@`HP%DFCle-?duDiC=H1c?)7|AsAoTfkP_5${4 z4|}Lkywk@*MWR_+yNfiXg38kxUZiIzPl0hYoH?wmi@2X{UUwr6b(dp&sQV#j3;d?khunWLN<%J6;84)qZu2;d@GNgr zMr0$6Dlujpe$$dZ($GArv>@&#kSAcbC4(+m4E>{m`BYyA>Ek{m@`!Y>5Y7Sm>lHfuyA8;fT zy4eUA;HEXcit)wC-4C@s{5(nNRd5d*t^C(y*vDJEf zSy>r0s(f7LNh9-TYVf7$(B#NIi?b;cye>DD<&%FVmrNNJQly%DFgm6Yn+B}2^xBgJ z;0QAXUpZ2*jD}%oTpTg;e6B(BGqaqYO=lZ~mU(nqxR${h%2>Y6)V{v3mn*MAbg(5i zZ9?OrfQWlEV$#KFJJi_@llKW1tWSHmpoP8RA9agu$I3X((|5uO$Lr)TH1)Bl2-L&* z)LL&E|$_~HA`VsvEYzy=;D<#baR|2Z>e{{8tb?<#TPd1mCcjoU0 z(ofZ?y0x4-=hUfFr>ZDpp*$dki{AA&YsJ8RBd$yHhNA@P@e%##ekL5t%ujnKcWGj* zjd|M8=nEeyjzp@KRv;+wf^epAa>Txq`W&#|r@mqU;Iz zUEU5v@indvceAZo9S_ikXJ3AYPBp(dr$4_<$MP+DU2*_TQ4Ng&b=no(7*yDm*_c>D zMrx6+)Y3as`@~hK&lj;4=cfrxcHSmGuVlK5JtS@pFsA5KP-(zee%-hojI;rDYhO#Z zbJ|Sdc6AjOli^e)3?i>F(`c-Otvu#6B-$e!yHtPOe7tjfpj?yqJz!~l01AUJ-YkCY_Pq*NA)2BPW!>wAn&YL!k#5m#lG09R?p^Yx8Tt=q+FnD-S z`1v0?Oi4gn5<}Z7YwDpND%sFA91K;_Tcv4yd>X;99&+Dle0&!BCbD z5BG5^Ji!gcNYK_waVo2Yp;I~y8}LKthl+6=0Yw5DrjbPC%C9%1i2xX_aI2F8FkC_H zHo+>*^#IoiMkv+4jjdYOL$GNmT%{!}*MwP*Wm76T#1L$?=e{M}eCBC|CoFu(HN%ni z=HYA1;frf6JSn?z;>Fb>4!*cVwM^PX#>)5_HLT|Pcbo~(MBM_6C+{)vHA*qk3`+!F zLpS7KSvMSDf*Y?G)}$DANEDC6jV^ngJ3Lgz}*7VXAz`!7X^x8!P&UPS{ zaUn5`3yEAd)_4|r9OPpQODaDGA83-9QEHv~6ti{6JOe~d(~g=WXDp8wk!T~Mi70Ps;gMcU@(LZ2&iQ(Q0KY~xDyD^1Oz&9scqZQ|vPKhA50 zL2ih|P5K8e4YQRnNkYC7c3*%Yu&soALm?2Ip-!@BTnZA7274)$*CKSoyP`;aQ#xx$ z6`B|wQ|9?8MKV~>Qj;h_H}MEslpyS+PFN~Nd^1wa+`nGCaw6Q)l7hyM_x%e-{Ol3!gwS3g%g16{Lmc zWlY^Ne@MaB2y_f*Bl&h#tmEyL)C{zeNUEK!qR6nS+nCO5$Hb*gtm@7mXSVeGte&cX zz76+`n+@oyZltuRONlLABD@G+)$Q2cW%M<(tZsUEj6#RvRo$jaj#|sexZJ7@9Hy~Y z-a)0^S*MrW=-N~wbzCi3%sHcrLyLI!xY(yx>QH=HM}wW#D60%rF4p_px`r^|0kZ2v zUAEa3wK}WpP`ONbb|+87U5FXRwkrfMV}hD8N>f(BEm|fpB5kdk#G{_2CWVs+G={^w z)@K@p=AT$wOhU=&>@sWb#oF1l2CDV9=wjKEMPm+C;(0;!fDCO6+8CyR)JdURz`HZL z2&9}wG74gcB{Ifc#KPKbG!s+YEK_h^<3I`+6Xqb7POI~ujJ0H zRIu6}+A4Xs+7c!l8KBYRx!Cd$7|maNGD@Rzh`5Qgp}*Sq9A2_D-G0euE13t52V2FG zFHG{yE1dC;4X552P3%6T&6YfEw(OCYLuAj@Xc^RH%b|{gUz4vM`*P-{r&@`*g%CSq z=)i6JG}^R9;m%ZBv9z>O(|3MCqE-c)S85ng$8>7P z)PI{#HnLKqOB7J3uf%O~bn0t1Mw~X5S88KjTB(h}61G$`{mpXanl=P!#gz41077M$ zJ0&Q_cnW-!VkBW{upuNx`((YwzkM1Vyunf>R`<>U#%u&QBS0jdj@-cu1nW zG`Lb`%6wQ<0%J14#F@s&j|pn;PFyj}P;Ae~D8u+m> z*3EWJ=3a&z-C@G`HJ@pLNxgeB###@h&I zxfEor@%i1r$j@vP*Ut&5QyDexhqhy88h3vm9lB>vR{QwJbV5sO_MKfNc6*>uiO;6~ zXh zT#lA-IgU1s?wioKJ`&9u0qO6YMH!9~YJw5};9ihsHozO`=CiRK5$x-rSId|Z{j+-r zf}7kNY)L)`B)W|cNj@`tnDWo=rHv9(X;(c}PbD-x!EbVu;M_p&a~!#Qf*`@KE^N)e zZSyEeL{4Z)^hWHAsS$g_571VAfadxEnwQ2qirB&QYeeku)6Qa+t(ym`MC6XNx37%! z*15xN`^urc^=&lDhxOKnC_G-;tGlJLF%H~xVcNAn1&so*$z{*-Y2B z&iZTg32o-<9n%TnGXpIgPG8NO(s-@6zL0BZ*dBFg>{Ni#VSDkRv2y{!lA-4y8oLxA z77b=4d!0bAzLL2vR9fLG$A6_5nJu47qcmTTa#EeINio{vo1z#E_H9*c*Wq->&>zqM z3e=NTVrzcKG(rqkx&R*GUqL0QBa-zrkP?ybB!wiI31e^GG$vdiNjBeO6#59H(wawX zVj#Ei3Y1~I0v*`IzzCZ#d#&dc2*D->hS-GJj%q%=R1eVp!tF@wdQ9g)(3ZGH!?g}6 zC|qf3$ky41jos3&@;YZ7_f4%+vRI-+?4v&gVm6n3G`{O?oWeLm>DG&<9htIiw77QU z(xvsS(;d=<>1z~WXJsj3U_!d1O*(#THqK(2a$B&Nc;LI^SOfkNzFP3t>jAgmuiXK+ z;IBOZi{CfGU&t`yubn)9NwRzXYESnF^yvAku}8Z5I7WfzcTZn0pl1PnO#5G-?pWd( z0TCx~tbjX|`3xZ-RkyKFK*&_#*Z2%H9eOFn;55tUx&^0&qR0uSd7f04;k3{oVsKhu zZenm+aM3Yk5l$m@3>`+f;Iy`MwCQO;_GMAMy>EN%-*?If0uJl*OFMI6 zA2F;0cIY1`^F5r3%X0zvcKNBlWau12IUMQI(;IDlZxqk9(0-dW42HF&o};Eo_tm4l z?dFV(R6xJLB(QJwb@8IKqrbf}ZOYWi6)U@>SxBGLIzXC5SD5o{Mb(~mI_^V(C}^s) zGuk{W5OulTM9U>c7(+Q&tF0V8#N!$pO5vLNP@ZzGO`ICxCZgS=6IccB5LN0!;PSk# z;T;Jg{A_Z9=jKNzbh$Oz>0M4&W0ixhHa|Mj6uup#=%JBsUpbb9AcNBa%VZg&iuZdUuarkvhB1854R!U$eCi5ND%CKLM@+ zL=o%wNa0b!YuS`$a@Sm5lAuY6U9AhNlv64ZlSt7t} zMge3a*lcW)EOkv21Lkf4pp7}e<{>Kftme!~juCT!c+Rqf4I1}3q$~8>TWg@vs!jerMB}%`j!F1Eb5aKAXz$aMQg3Ho9#Z-D%X&-p8AB zEo*2RNYK5WsmLkB8=7U9;l>$E3fG3*P$sVicVx#|$RHInY?)UBB_K^r=9x@_3mw%I z6TiV>R|hXC3X)aub)d4Gc{e7*Om2uOOLAjlGO~qC)yS{wHc9T}n3rim;L#qNp90UD ze6xN@E|vP_#gH)-zB$e^-K9TBtNZR%3sJ^QFxHa3I{=# zZ9o_Xq334O!iu+H*;fcmmA}3mgj5qmT~Efd8+t@;(>v{+Mx&hFg13zMvr>#1jU?rowNS3RE4kbvnbs4JY%%-h@i;eK)`1|- z*szDx_ZszD+(=j7Ypqx( z^c)iwM3C3r%Lxgt7p-sIH{Z9Sq?2yhM1%6Up#i~wpdIcpLtH+kF!MA|Da0Pg$`KgjKvg0?M^M#RPe`|ZcyuOx=}Bj(L(OU&C`u+7QYKg zz6R{_Rw~wON;ioQaW)vp__-eGq&!s6!-N$xVZ}D89Grt&7qFpuiZ-fsY5ooxW69GN zN{zbK8;{lziCbn3MQ(HS1{Ry@gWSFKJ+_rJTk@z3HVr^YZ@p%g9>aU{w#x=)Pz1{QD+3H8+lILlVbW%& z7`+6+L_&X?x?+b}oc3!+KN`h3wS4mh{c=6qDF@7LPH@^K4R4dT*q>xmNd}pU;kYKu z?*H?3O#CKvrn~FotdallwjC z0*^}*RMJTj){Ka!CQZHv@zth(j9qsq$(GG^o*55Cb(_Si%Rt*mw@HUg<3VLIZJuG` zLf^8)YezzDCE6%Uys|mCi3p4YTumYXh0GL;^meNS)Abv_cX@18`|@;<)6N8JR{OAH zmK_(2NNqpPT8YskV8K|Sa97xbq7Iz}eD|cb)2ja%&TcyG~$9` zj&*68rhVFfPcDG^jSC>tprdQAQ3%Po!0G6v4F+anXqSJ`Zq5aw-NrV&yVi;o=7@qB zG4`j;G~7g>WmX6Z0K{HjZ{{~Xn3E2rjlc&gPe-TviL~SOmAjzmw9UC-rJcJ+cPoyk^lCYbwe3~K znZ`tw+$+W}i^8UZ;N`xR;bkj88D2Kgm*GRh9(S05%5XCSiSsa{m*Hjx61;2%YBFyj zXr0ME8_Sn<&b;MG`oEER%dD|uNFGMTo4257nTP+=Ok7gRKMrj;)gyh?;;v;#?>Sl5 zConb7$!ecqW2j51E9-N$DZrINb$*BVZScF0->uSDU0R>l$19=vEE{x$U~*Ld%*5TR z>xY7%^`ud@DE`iDg+X~LLJe&kKdk;V;f5UITphJUA#@ZH74)vc&YJfJXT!cJvOvrc zGxEeLOc$q2JY)Py8s6I#`$t(NNVQ#--OEYl1(+A{MXPt)kr!-tBg#+Pq|wQCmv8Xa z(+=(K+We(MOlykFuD9xbT|pvcoT$>S_;~yR#+$sZTb& z&hf`zR&(}dYC6Xq?(CZi8KgLfBUR*qP#jR{q1f(pYB;2Vw5P*!bcxlRtdh=|sr|tD z)F~TH(kxv>|TnA5@Vm zai(}|)MpZwG2%cGHP-oq`%Ffjs^GcM@7Dfc|AT!dnWsD*|H)?(21GDyhxYRScb`e~ zF*ct`X)Y2`vIuxmY0V>l6rV}k_`w@;J)cQU$L2GsiB?VALdQrv-@^1{tM|e&k`!B0 zcgUl-?GNi1DHpgFj*)VeYvC9vm%0{?k#fCj;TS0wy%vs$ zq!C4(QLF;eiB46cd*S(AHj$>7ZhkQKQ1mi*6kjO++KW8zLW(=k%h zgj^Q$d0OZdAYbzYPsx076g(w!$H?F*nL9=XPf51t-MUGPwz-axy<9>u)z;N&oAyy# zthWr_YJH~st=4mbw_5)RZaR`gLf!#aujxpF=lyVSl-?jhiglqmLjxZnzbW#C>4LT3 zTBME}71o74WE;)<1u5sqcW~D);Q1Ihxa$}2d?*~;^$U1DA`b5Q1-#TR)$95Nywoqj zUB7^%D~0v${q(D~PnWF=N3CDZMd5z+Yb@Ylxk)+{=o}Br0yW%*Ay}76ivz9?n95o) zT(lM5rdC?%e-6PRK+2J)s4e0EoqWyV(H9!v(pZQVs;64k?%mise88 z>L^12K=kd_1VHBL1cb}6)*Z~>y{WNC?{(~OsIenRr?uLY(g}XrSDdjBfcCv1FG>K~ z_r@jw?c1{nK>HRo0cc;=1fYG3bHEA;HDT-qDqzQ&Ml(mPnL98xyGJY3%;n^#fH#%< zqmwtwl{n%O-&{^yEBeLJRX3NJBV^QTdoPg*T4n}1&9L)jiK3;9(RT+g(X-&7z`;w@ zEVxZsZpiZ92@XPB{t_h%4qhC*M8|^DI|naOvDnJsYpsXn{;lIqhcPxvgt4`{-$9E3 zF}w9kV^->y;MOm}OZ^hu`XzX&UxHh|1TXQZ;MOm}OZ^hu`XzX&UxHiv1uykWjAWzl z$e=v>qx8k87&|cXyGN^f=$8{!1RNQZ@vxlyriSFx^@!C~&NCuh^`u+Zx#>I1vbF&w zyqC~4hB!f>sYa!g5Tz6Znzmq-QbLtd5NHd0N(os?L7+*b>zfj~l!8E$NLNY;VM;NC z30^{2u0V_$M$4TumrXCUO|+GSc9KeFUs{kqx|A zl#5j~tp$NC;k~v8VcjMpHs;Q31gyh9`LQemz&JfQXDbIBQ%G+CV3k683jmK4(pvzS zqmbSLxIs2dignLfQ*pt##v;e|Z&fczDlHdl22LXqu*0iSDb^OfLO!1*}_7;gAF$ zRi5P`kDG17NSbgX&vHxvbu{U24U~Mnv}Z=w!-$187#s{Zc!{=^A4E8KiLwPZLFa}s z@0{SE#pN$iwcudK!AmqPxI>bSZC*~kXSU8dSnk&d&Jg}648w_llBqcxX&J7&<%VN0LHIXZ&BuJF9tDDG`QivY0+zGI;6YET% z?QV@|OFnv|34V+(3PVxYvd|jO$&b7@Bh-RYpf#S8I87<^Q)@h>l=`V}=;vaeQtGEt z=%?0f`li%RrO;2U*_2Z1r&8$W5}#7;C#yO7=FC7WkO)iRFcpAX<@X}!$S?>yTReaP z$!&N3FNiN&RFSebDefR(NU@2rjhp5DT)vJAhr*IlsQj&QV@_2llnDV4 z)P*u301~}e3JQSeFO&cQm?H`$KmaC_LJ1InStmCqtCg!5b1e`hilu#w(c++3y)ksh zR6FK}Vkzi!z0y+9sfDGbpa8UQaX$0{(7rb{0chWwn*g+LNx-~K4>~#7}UWDE<3++#Wz_4W=uP*+Eo6|~Gyv07GXIbl_}WkXoS(f?7Vy%K3^)n~J&;Q6d6 zdJv$PF0C*((lwi>{)xTx`hls={WOUNeX7AIKF!7;SXd^kBJx_uND3?yRuQFkDFv31 z&`@b5mQe~UBcY*`63ZwBmXY?aloHD*1(uP}P)eC)c7Q}6W}2-ohLuPle_Ita>3l&n zgjGSQpCi;lKP5CA4dtV+6#6Nl;fSdzg?>tCII3z&p`VL=N~xbJjebgK=$leMl|nxy zG?Y^ACrfN;s-7LfTEt{1qG1VNG_P2)5fFs{kkA;nHgSqnL!zO1bz%aQe!hhi5msqD zM`;eY*~h1pXh12{^H!fy;L}(b4LoR=TK9~2p`&$A5a*)zQN)dZtHX<(wXurLPuGGF z08n}%hXg?E6mm!a*t(EI0>IXV91;MwF658^uyt;FGG1)oJvt9lhS8JQnozcej5OyB zfoZel4p1yo1fYF|91?)`6(%VGXkTHH5`gv@L>yEjh&sKo9n50#L?V13=hW19pxJwab~> zhoy6`!(+l)h+tg9N!##PN~hjh*ud2s+%7Nj*_S?OFbeX~z4IcuxA~M3$teXg-Os0# z$W$q?CgN zU(lO(6I^4x$)rpYQQ0rG6@fe*U>nDfLq+^z*$wrPNQQ(9gf{ zDW!fYg?{euQ%e0*3jO>`pHl88+7^8q@%>y*SVC|Q5nJPZgdE)k@}zuq|F1}J^p|%( zwS@PRu+C7FC(ysY2D%1lsej<(Z#=Yw4~qU<4=wN~qC76%Jz{b&j-ZJPU2q+j2&XQ% z#_kiAH(K3KW6mdSMI8sQ#eB9@T%Ruw9|Hqe<+5Y6JKUGoi6+|eLz69;FdaR4W}+|3g5v;-LB;OQ>F( zs1vrDaj0IL?n{f*uQ#P{^PxAV`}xq4^zA;hSNaYg+B*9Q^lcckN)_v1=d-3x6^w0d~yQS~(p&ipd_n`^tdwr-q{RDq<`(}cx(DMKJ=mVZ+!?V-67he zSnVz>w7!&ndIbtBLMpqb|LDKkBmD;-dPDm6KJ>;^L?U$WnTm82T4V&JP-bMNP(Ejm zbumj%7{;bm`-EJ8D_NC@F16-;4)?ZLzdoqwt*UN*c!g_$%ZT1!KFW4GJC4xGgz|Hs z3(Xo%|H*~Wf9AL^>cilyY+i8Xi6VeYJ1xNHxLyg`w4*&8gf8<96!2z6?nE01Z)DMdYHu? zCT5F4i>)PQEN`(N5i^-!v30~uXjtq;VsG)pQOSNqtSiUuONtqC^>$-AUzd7Uvg0D| zV07&}p5S&acmly!ySykRT!UzNdGROR-eow8V4v&Y`3mM(IM-qU4SIuUUy-4GkG3KN zpnzNSVWLsqSY~8*%-GWIC1%H(EjC8XW*&>(Ld@nGi>)GNvx~(pBWCl7#YTy_ImM!n z5`9}<;Uh}4RlgK0&dXFMTy%^T5 z-cyLqaAloJaHb2MMsSv^_Y8usa(T}uINN2og`jES#tN&5nF?;P%ZN#?JMteTMtv*? zE%8O7VR2K*))5O9mP+;`VquS^B3(P*V5wve6AKHMiZs`J)l$jsB^H(}m28ZdMv!%f zl$_>k_M}@d2S^bfVq9zE?+yt%Y$2y@cU0@h5!v6NEk7uv?_w10jR#7X9|74i^XoF`0 zwOz;y%sS@Lqdf>ckl2wPxP(96XNY>r3*W?4j z>3TVp%1alO(O6uZXwHi=_*dj%04ByLgN1Vd3+gC?i#>p|d(yM43M~-iu1q;y>(!JX zfK{ZW!WQn4AS<3TK97eU)Ue%hE>QiL#!d0QXDRj!bpD5)=(r%4lqn1cyd50 z#2}Y)z>olltsKC#A4#g^0Os;2L+CjGU9fwR;0wtp6Or8A!D`isYTBgdQE0BFl^C?o z1#2U`Y|8PIj@nHMS9-rRxjj7Okc3AYmT&MymWmyua<5BLD*Jx&?$H|~k{xU*rm=hP zj~Khq)UCsQL-7i3TGH>C9U5>wRibM+vKN_r;_PDd$|u4@fCcN9L+;5UR9*(rJ}W*@ zoO{|VtqDrE*~Rv)vO!Y|co>xK^N-Uvp-%N6t+2KgEg_Wr+LjkZZEefDg&le%=n&T3Rc63m;blSuy z=B?)Q4^v=gJ)-8QcBXy9GsMX-*(=$|r-t1_iB`0vT&F)iXAeIqCz+DQ4L^e=(s?PhU#-mFQu>{BrbOJEOpLa0%p^Bm-s)xFE+W4 z@Xb=ADjE=oO8w5B0@^LT!N%c70*RXRyP8HO?rBL8=SLbH@2qO-6Fqkh(HZfjV|!@&$aKk^0<(&oren;vlqE< zFwQBd9YNIhVerq0xK>oc%S56@o2_hsJRN|lMvu!$FfhF1Gg=T)H^^k3GD$!K=K~Zf zIz>!6uV{~A(l!RW%f0fYJ}fsMY4-E%6*IN-l{Q_IW3<4mUM01t@a#w0u%C;b;?>d~u?<`S zW_#)pZL8mEfAP=LAW&I0rIFDm&?}e*Ik<+u(D^f?e`LQTv zw_0lM#UEp0#zOXJ_)enQA_UTld-V)cSpfhDtK7K!_`Eb1_j8X8{xHJ0gbnN`3Qd zD|DIKVmAb8EbLT%`D=Mcb{Dk5NVv}AuR9@vH6$9o+_0cWxL#z?sl?jf`t>h{aB=N* z@pICCEZZ*ex*&0&ulC{ED~?oc?&;NojGQ<=m01(f&Gk9Gy-XE-s>SMA)-KvaCF#)g z)Zit+N*G|&L`$qk`XcSESNQGpL!pnlpjHzaJUGrrc7z!UR#Ll^?jHEO%S${&e$IETa6jYRrp(3gQH8ZzH!k7Vq717VqHnGmqf~DbT0M$Irg zH63hL>#{z2Z{#pRMR+V=`CPBKwzS`oQK>i;%o-}~x8uS1b6asj5-UAx1%EM|*3Nc_ zGW6A!sLr8yp>QDC7vB&w?#x*S*;Dn2N&H%n8UtyxPnGK^McVp<&f@GuY3)+cC9zad_G=?}+iIl?!AYzSLanNIj*-JXJO zEv5f}f+`7=uq86oi7VaTo_vxeBJN^@4*QgO^?={)Gz$vPftFES-d&wR*Uy9}#t9Fv zSOnqmUnk#q)^9_E(2C_8)3lrw!x*=cW?M)ILaAmpo;!^ilRaL~jIh6$A4r5l2*c~_wR zj4d|P75Rgwgm0cf&8$d&rZzz}0(7J?EkJ!&4x}tZu!@;ZgF`_AQN|3;)RaLKFf|=t z#8^aY`-S}NoLAEjz0IQ9cY{P%k`wvQ|>{E^UrfUU+d5J6XDm?i)IjfNHjw-ig z5RuN@h#{XCQ%w}k4PyI3Ej@GrssuJ%C7tnG4REr&0DG^Wi&twdEzon9OW_9GZOX< znKf0n$~?mi#Y%-2TxMv4@^44+y)caM7$j?TrURZ0c{8{BK)#<6}QrxJ0Y@*=*hw#3v{ZbH}39s31T0nF%WquFK=h#!l=aQEV2lk;E|naZVsjulFN6C41}I zL2@#i3{yZdY^JIfcfAe_di<4G#^V!($m|`1Vi)5~qhJ($NZ7HGjQ~)!Ep5Xp0>a!b z6a5&A8q*Ben2OvdGweRtZuXdpWDXOXQ;b_=nLOzrs$fBi$pD{)?odLt%XF%Pz=68b&#VDb2yr zF+AMQjgC1G%>A`Tjrr)Hm*Im_%Vjk-a_`S#ZXwJd1!)Pcj}ctylnmM+Whbrq;-%yG zR^?Ti>EH8^vYRr~rkR#io!xLa$WkmjWVk-4bwIz_?7*}sJ4shjsTHlQUe^_?IA9=$ z(J}`^1#|fZB{Bvj8*Gw?;|ARf=p>r)U(V=5h1jS)Bg8OHpyr0yYkjNYK%TSo0Mir~ z^n~;l1Dt%XpjbOl!pz#ia&HsXjy7-Y zD2mfu*tSn2n&}*$(@3R>{rNk7_GWK^M4LDCOajY3=Chz~jMGUsCdXlw4Qr(}jHDu| zlGxinD@Fs{=9bH4(nX713LB06UzaR{$up(3v@4?Fy5xW=b?g*CrkQCH+p3#D#qQPE~tX1l;2)$)zH_*V% z?5ydSG&#AnUPWZ+X`)IUmx!Fk%b4AAd%ACQOR8j?HEQc=4CC!}Wma#k=l=oiTF~-l zHHt-)qkb$#f&C2SO{56Imgn?C+jBN{BbjeDT3JoXT`N-yq_A0StEN4&!qx{t~hB zL`$6?hEH}Pg1WIQKfSxedr->#d}_Sr3Z=kz5_hbGRsV8vlGD95@2?wC^}3QB0){Ht zPFkh$Yw8ZcgR-H2MkrSB4^<4ci^*hP%~7U<5z#bNQdMW>s_G0R*2H*Gv#L6g1x{}| z(Y4wHnb))?N-vahn8#5K%^2o1v597WD3sKRCffMp^H7ZBl=ai?gUciAq4} za)~?Xw?D%T4VD&Q(DN#_}}TC6v@<6@#GlSj!s(<)IRe344XK z^JC;O9~IU=)>X=RKeRg~8*;Wb)Mhie(n!?w5_TLEwSKUSBL|g%4QQ!-7;S}WmQQ7T zIR)p;h#|t>;p}6uEYv4bnBwTbbuAFW^mMXO!Hjf9IvpyQE-J9dJ~M0I4sv{1T%XuW zsT0#+P&<ghCZdCo2HDWRhzBVQLb1<+5eP0HD-_Ei zNUc6Ios>=57r`+pi}u5;K7)D&N}s-m1xM-AseBB>4#*2k?N6t| z-Zt5;#)rPUkJTdITS^Y?>cek!fOR_N3CGnGJPZnzLT5?<3ZV$*E%0s~;8#q}UoYU~Ch7yv-$z(Lynfr_LHt2tt)fmlXE1vmDoPO!0PXe_)4H1szH)kRGbeAg&Mpak7G5h!$M zD12A)F_5U!P&C193=G%B7`O@0L|~YR=F+}g1kNIoi@?c5auEnwxYFswKoEf-%|u`= z9blW96ej{zv=f0fx~?=N6rD^%o$3XUu`LyW;d=xx)CG@FvG$gn2*hZG-8T%b+MY{2 z^(vQo>TgaCgI)wSWTl@bf|!QffX}lY8Qbt=kd`aPW57)zs(syN{W_DV%9cjhS16i^$6G=a0&ZfE>Hq;F}Afw3nk1&mo)NR@FVIFD1IR2dH* zW}|@qPZp-9?8h>d@P5@!zEYKqt>~<(oohBh^}IiwqJ(*V?wGX?-XrJ;`{KedF`Z?k z&Az6-nL>1=vn%fVNn}e|#_tMoVWLM1eEp3^5xPSFVOX+D;;04x}@(=q>7s`Sf91HNg0#Hc~CV-5^9;gI^vi0<`}<0J@dX047Hn`ayD{a z63kLHpOQ0_OJTa2>Qi#c1S?LQA4rPUWmH>uGK@vq;;{|xd2Fv1n=peWW@)Hx!l;Y` zwaf1KLQG;2xZ0*Pi@*`VyFu(!mk8CO$yBM{be`XGnJ3D3N&tN>mm8cw%EgB+=P+ss zo%OJJ)KZ_vD+rg?Q{P7^P3b(*xijqyYxmo>7Z)(HllUjCcAK=TI-#$>H+$?FNEcom z$hRtL2R>umttnAErBj{mHKANDv!Md4SOzHve({k*=OIk?f3R~9G<-MUGM(0 z_x$;L|Kk0B{}2Co;6EMo;eS3f`j>zG$Vl|pfAhBoeBgtB_r?z$mhAtR@B6E_4j&dB z9xaWIh>nboik3x3N5@3RM#n|RM<+xlMJGoWL>ER^Mps2EqpPE9qE*p#(e=>{(T&kf z(Gkhb(Jj%f(QVOZqT8c8qR&QmMq|-8qHjhIM~_6`iXM#~i@qIwC;D!*Hu_%lc=Y|~ z`RJF?-O)YK>GA#Xm*cO*55#NY2jj2CUyC1#zaD=h{$~7e{H^%W__6rg@pt02@%Q4# zf-WcB$-^^Cg74dEHx$$}N`Dorp#8)RTN56_zCa**%$G?t# z6a6;2h_k1M#)rih#>dAe#3!w8TPokejS0+zI zr^H9c$Hd3RtCAJTbJ4TWUD3VKebE=AFGcr9U*`6u2ck96gV9%`uSE|iToQdcx-_~hx+1zfIwd+WIy*TlIW;;hIz2igIx{*eIy*WiS`nQaofkbB-#LvXf#?Qsi$G?nUh+m9fieHX@6`z~jlH8oU65o`Z zAB{$*CqIm@PezmDlk=0~lJk;m@zKef-u$tD`}n_q;(z_e|NcLp{M5mR9Fv@q{NIl* zOD;>cfAyTS{+qb5)odN!szh;Hdq-!|-P5ZVJf~};@9reKT6&cZ22a;g z*z9VF*RwGtvC5QRTeGzfCA}Z`N5)&4&`fdS%MQdEAoZ2yXoctj!6vU&m1*geJ3BYM z{(&u3q{ccEs#C9HLW`Ydx~$W<&7>_ifMzD9jMkv{wV zEcOD5Z3FiCWGgE*&^bCa^7h%X<3K!j`;MoKE);3b02f6RpSJi!>Up|VojWzu27RAz zTum&xtwRNBMLjoAx?Es*t28&Is$&>D&(s2YqVH{gTKAz^Zo{(nYQu>U;F$GINp`I& zKaR?$>Kc^l?MZf>Ajbk>y}noVvq^Tn0LK6@ONp$bm}6xCfE>cUl*}klL8x117zRHy zKr1Q+Kes8)&fk34I&bdWyt(AIhBMT~2p0ppq49io_0FX4vz%jf-U>3!`2ITptGI$T zoa?~)l(8)CyOts*88U82vYXWRqv*Ra34oggI8uNnCV?;@NY5ihHI9PB3Lq!o%5Q~2 ztHvR@jke4oYm5_4!%i?(2}%eyZSG=y=e31nQFGqk56C?k1i zm7d4INw4{qGmQJE&P2$WfE{zp|QqW1XDt=UTh;9!ZwTu#@71u4D0dbi7lfK zWjRf3l`b#dwr_+=swN$}i2W8@us^Atbrb&$aamCs4Y{dnAHX@RV_!{YY2SNE^~NOY zA?L5jiP=9LsN?rr@6URHy#fq7=w8axNBmdBWkSi%Jp-=-f0>niXK`2uXg|=G$ZaPl zG}?@ffgY&i=3LLG}7-lw2xYCCc7+8d49U-xSS!Aekw0v>geL5O)h6%%}vgrz^ ztg=JpcxBM-W>d2c0NYni6u>SvE9iiRJMZ+V*6j&2@QzZLi7d~OWgu-R%RDUOvvAO?UYBI& zi;166vu%j^RxG?O9wQ;x&zReiEOyFmHZk-tsOPrh=0Zvx2|Df#J56^Dqi!Y)?spIc#zS`_wa zCI4(wg<*@c!Y)wA1_RrR9+T}|B>846+%SKRKu%!D^uh3UN;j3u<60cI)k4fv# zKB-*`xceaFK$h$)Su&Z#ACbs`iM){Tw{T8EW8jm$qF zvw5R6_nKPIRU4lmSx#xRQHKGge(YWSbdsH?#P1_rkay733}TO4R%j4%<3C)u>hrRh zBz%tq_KUs!n%%lFFd~bq+zU#6OZkDSW?#3!RO3!~Y;;o~Ogif`7N~A>Cp^Tqa-6?5 z$!5{YwL*kvuvZcPF7X8>%x4q(4l#d1C7VP1+t#OT{F!ji_ECxSaZ@})f^GvxrO+ar zdPWN+2Ai1Q4|HhfxMB}&u^ZB=G$sq-cY|9X*Cbg=PaacGa$jT19qJD*%LtaNZNDlX z)cN31ec&7svj*{R87kNnWDmvEht}9=)$HJYyZN}7vqW?FR#f{4)%wFZ*<9ie6Hk{^ zS0>p!V&5dz?MD;ab>BCLb1xKU11Z zw*qSFNPTwSmFTzwX{w2b%vw7rL~`0Iox~!{M04^8>P1%`VHb1~vyQ&5q;H_{DspCytsf&50Xjr#S$ZIlxRa+ zdzRrutIp7(W_j5i5g!`{66Bg6hH-#JEoM7RNHihS9VvWn0EODbmZ8dOd^5a&+!TDjg=BWfC_c` zOh{mW5nS$gsaBH|J1gCapB$rpjoAQ7c>$x|GjbwO)a`)Ltt@n=7?h#($KAP+u|CfY zc@l@23z8fGz2>{BjKubn3P+GHh3UrvS zb1er{8rGTS4yj#gUxfKeY8N|?Q=E45LKPx*xBkt#{RlF!wDmQ#^>Z2#9TbzR>|$<| z<9P_D8CA&b)vh4a2hssiZa?>5HO%#rMavLhLYP@)e&xAQ$lmoz^vb~CSFMqiPl=St zSCk=FCM87=bd@KQ+7R2Sc-l;sfCmB{b+Vu0%l@?8oVV zL%h>e_YCXmj&yZ3UG>+KX0IiFkGeh-f7q&!C{=??lfwS!m(!@7q+Au$sSd`XX~x>* z=@Vq&PSkg|5kLJGs@(wz{i3)>W!a6(C?D*?2Y2a%?a2=9Y`kIksz_3q&56-gi^4F5 zLmlYqFzM?kc8p?!QoJkiJBbfUh-ExE3|Z_3?6bh80F6E>#Ztabhy0sGCTFiF`3{o3 zGlba$rdKaXvfW9zorK98|3=6;!GMI{1Ndiv&+`)g4a9FFzKy)^BjiJ3tJQB*fZqz- z1Zox=@S6hOqCz$EKdjiz#3Hrx5yfsImewwp!0o#V*238QT_Ev z_GN*u=QAUFTdzR&rDL@P+51IRYqHm(%E)`GLRI2(U{1F^}k}P4o+G;!f)-%{j|4 zU^5*z=~;e}1syY|J*e`pq5MHlR9_X~Y5)xX$3!a+39u5tf6AO6xjDb@2uQH5JDwxm zsEq18re<8Jc2$=q*^qobej%iT$N0RJw`t}kPCDCXt8BMa!3wp6itP;Cdv5QS!1 zPYw7*0WZ*Jt|4$6QW|a>p+Vd|kR2oS;CwQ;xlBS-3M#~vB7ntL+_vs?P4SbQtnIcC zTh-u7|%W;C8YmN5mLCM4#?9T|mAXN=S*JkCGNctxa7iQMnW&mGWumd!6Jvu(7tWs(G(Ccvr)v&0jm08J7c=Ww1nFYdT_Svn zbdg#0Zb);wVA=70U{k0EEh&YOWSKlYG!ew?1rcMKCIdVO|^+I<@BmidCliXsBPd8HLg zoF!?zaz+u4GdZ|XS14$<*d#(GQ4(7>@CJ^>N4ICEs;*P1%iq_KohHC301S)E+OyLI zI2nMuphDC!IkzCs%B{-d^dKh_+S1VQ!b&|QSGbF2v6K`?Q}hDSw{1CCgmE%KU=c>h zOv^+Jhpr#C{s0^5{p$Q8?ya+~PjC}1blO*aKJI%Cr+E%z4A-u(_2CyJS(nqN)JxQ# z>cn~==CU1O|I#gvEws@l+r%abn$6R1tL77^xj0TK-Uz;jU1fEYdw=-iJNn{yeIZF( zm!S1b*WAu0FMkO=XX`>aa+>Pwff@N(9VW!dD8sv2@GYYLv|hGyVRw}1v^?< zb#B5qxn-9gy?Bed!~~7*>(u*JXIL*xvhSt?kc;dvl;9f9K&78LTwqkl!eVH zLt4(dl%eJnL?f=YW`W4v%w1_nMl;8o1tLg46A}nU8R%uTU~`Vt>#8Cvstdq!zh zCwm6hxs6r)BA(-4$0XTLgw)^Cv)PU}wFsQeak<<|H=DC^`BvX-O~qlYI2)m!3+35N zJNc&HY#Nm-KeKabsP(1h0;FTukq=E*)(t z_o_bFmOUcCivYMM@n8&hR=yp#V@=3$hp_hoHn2`=g(WK`=VR3bZh8BbzJG!5jZn~X z7fR#yec(kGtSn1Z&!fusOXX7|(`mH$U`~TgCx@j!ru64Y4=w$+0M7wP)U5#R_6T_C`*32lsGiSqauRO1_i)i1YY-%%0IQbeu#KwI`J#hy_Mqy*Q_3S**+ zRiM9Dl>7^ly?WNSjCH{n@+2SPr$nJoTLGePcrS3v`n(soWqsZY+_FCJ1#VfN_k?!w z5eikA!{9w_qP6Bd=`@b_3Z+KKcihKT$*jGrCnnh!)a{?sDacsDWY#{7M)k98*}a1Q z47j%NqK`LlYXRYnnJ7e4(utgnk5(@3&>d%~T|Chsh2_#)s&}?!U(}~h@o7U>p54)w zeMx|ys*WWp`hG=!qN2S3KzVvT&b}=0kM$WMK(%&!oMpL0SF#sia;{48!(VSFcpvmW(}UVR#(Nzum7Cw$4=|w&RKnj$VOv=!$d-cJ)-L3plV8xhoW;vF39^9q4u;vx7pDTLGP$ zLy1gs5!l{N17b~{lJ@OYJt4_{p_V+Z5!=492NxUAh+S<%SOzGjBTh(|YkEX$coAj)N}(*&Yibld<^xiajS zIbD|B8MUi|(RJ%3E;ME*x zaz)v8KWu2rY%`|xm)F{yfDt~i<6+S&*4ooKPv`C^#ZYj3l0C1EeVdL2v)V5OcuYOj zT3d44tD9w~2^q?z8j&=9t(_ZCH0qmNnjDwFw^aD3DwIAb)aI6Qp%PuOxB?zaIbXb_ zFTSNOwkN+x!HDK%fgb@JOx?c{;9&s$!PZTOUlH(|0428StYy;q>Ch(|tgf+kGjrOt z&FK(u!pSF@NT+IBeX2y!ul4OWR56OHD*adc#ZXH^zQ zOZAh+2d6_AQ6t^KfK>69@9ars@13cyRrJOB_-;O)uRaXDv-+DPyF{?Nth)KuhffPI z=KFA|B6pJN`!K)M2fn94mnp|*$)P?BrSq*1mkTI`Vt%;~bZAL+q%FHbskf_2^*cH>%1l9Ri9zMjzk6$6*Lwh_hn_yWXl}2&myW0j~3XI9`!! zNo_p@WIsVUR*@qg0xCLDz-v@dxeqo3FLC*nQmjWmgJtrPadKQBNn?RRUZAfP3$u*O8PfUqHZpYR%<}N-9O~T0<`K4B z7=^o4{zc?pU}}pte@;jj^wp@UHUa(QY=r*4&QN}L_c)mXKhQX7J z7sd_5<8gMj8g(ui!$6#*FINCy*xprrGR{sG;2Z#WINLx>*uVOdxbMeiY1D*j#s?%{ z(fgCxIn`HZsR5Gn0KOu?nE<%C!seA`nf}zL#B5**Dh1r(2nObgt{pl z8=c+W7CE03<{$Q<_p08OWY4J?r_&71Fz+qEF9kSF4Ry0t7HO+IjLT;d-Zmn`srteu zftM6LMfo*MTvlYozAWg;K>JnZD~g@u^0a9c4(!*0Ef*{d6TsgHc%nY@GfEh)a~Uq) zg61947^8VQlb`J?Zij}?`Jd%yJ3m1q77(?03c$h^l+N6tQrSH^j!DVA-HiM60wzD) z`?RIEZxw6GSJi^!X@TRXFqU)aoZZVG^|w`WLjQ#_AE(SxTG0)f$FO*&VT;Dl&&z$M z)90quTvKe7gje*6Xc7-^u=NN!kfdI>Eodm7UhkN!v@-QxN13cOWL(m zUyS7Kl7UeQA!{Ak9XtO^vrk5<(=S2c(feCJK1u)+{}zAG2m)3xl<+SRrq z^$d-cmrIqsi))X=(`$-<#4K4p#3AO zk#`uDrvxF5e5@Q~h^zc7Kb0Mj!n;QY5}amP!ZJK} z1l08+T05{a)|ECiwK&`8H#8u>q*^GIOGvX-=9+C6YfVdW1kJvw49{BzBTFV?Pp$sO zFUVV#4E@YEV^WF8*|n;qTe;i58X9Gqs@uM7*$0a-X0oJ&_g%5o{!G<9=h~x{iobaoGWf<6$=UJ>O71}4u7EZjUCE3#gKf|Y8p4ck&X?^G=wO`8?;kBY)Y;fo< zJn8qMeAZ|nCa3&gsWCrSKU`z_ex-`xMcJr|<8=nX^tDaN^hF+~+65)c7Z7ITN$VTF zhO!}VXvGoX}}irHR>i6rn;a_$e*Ge6y4C~B2d(VJOZsv@)1)~m!YhN zmvoNfYON)#Id5*9u`YDIlYsV`8fu4UG~G90nm(vtJ#D7ERSZRn<>YwV5q&aEVHnh(>tSep?xS zNQNoSJIFbuXq#V7DU3yMlC{HOb&qj792Rc4GvAfqT&sKSFyG77CHs!b{sCq8SAQF4 zYZZHf801g%dy0OaXdwT`1$Z0)Y|k<-GIuC=BKy7)){@YW`;S#w(_N`# z%Vaip^~HDj!ao3z{Xl^40GKKTmD+zOz_$gcJ`!h7D)tyLszzf*)ByaEfR6%{B5#l% z3-T=>fk_^LNxExKiC?n^l=!g9_#@eAYzjIo?mLuQX=J3F!$w2jv$TMOy{cEn*-e_( zzfKE+5q}`NS)hji$-ZvOAs&Ju_Z2Y*nMnGYI>X+Q&O8MZI|dMMir0y{&X4j1I6EuJ zZq*lG<%>4OKBE{e>q7b2343uw*APX$CwhmX4=B~i6L}%+UA-*syVT^4Tw@{7)06B@ zW&E7U!vAY%flFMVuJYe?-_C>*5zm_QDY60)lXI_e(X&I1m97SP_ z?o#>}1oI;IHUT~lz?ye%oSm*w{2Tx_h|cE-i=wNE`t2U}>j2yXz_!#S=E~k0%eMG& zP|9KEZGA`Ad2x1@s=Hg&rbUahw1fHz&8qfOHeqnixj-J?zxR!)*B;JaE zwv@!riL=X9{Hmh0p>zDUk{Nt)g}&fOjguLUYye*=@YR6Xidd}e8b>?ts*-k<(pKsd zotT}A^cbm3@TR@KQyv*k#-g=e~Yi$B7dN z#+f#k*3VD4o>BN$Z$fTV@8CZpPbi5pr-g#RuO-& zhz%*0{UeoztN97l{OP8e+nQ=_dNfXsWWH{+!wN%9o$|JDwVK3gs z#zR4`BeJ}JFv3=DMSeY2z(VbRvOD<$wdfLB6tssQ3UINS7`Afd?#IkfK3c@O1RA7j z((-B6%^<}H*(8gv7YYOtLYblMmKS$&s2iL!sJvM*HGranl<@-=_4%9L*eMav`iPn6r7%j`XwPSxo! z;Ll&1z-);DsWDJsvkwCp*q<^?#qozzK>d*{V^q;7&1&9mo7jBuoW3|iUzF)UBWCwZnD3p^@T4$dtLI9?7L;U~0q-{;&+z4t zhYa#?3G$dh*4i5p4!5lFY;nhhuSk>x=K4T}VLMd;9*px5g{& zBNZ&_5Ad2+C3|iDEcdU?%V2FK2aL}!E?&FL6;!+1|K8&Zeu6{)m29`XoWsVw|2?jp z^&0YDo&LOer|+1z|MzXr{nvqyaM5el92;NucwCK-ug0mTC~JJ`rs7wv+LEuY`b;_Z z_?F(oWwe!SR*t2mHxcJV$-Ml6+sB%|zk%o9i>ukH-`Jiod*=5zjc zHNRh%H_<&Ia5n+nX>*s)F~+a%BDs^_Q5F4J0(SGq9RzgM$nE^vJt3bVFde{c{OZn+ zTlv+cAh-DV%|3pUkKgFyH~9GVK7O5#U+d$meEb@Ibt}i!{ObOVmHamNy^7xzYTA_q zbPdE6{OZDo%lXya#h3A`YZI`$*zc$P?1*uzD7OM-@1ez(Rh{@V}??Yj{76fKH8{%I~+7^ArL*^LsMC zI!1jGzdByM+{aJkS7)V9;8#bUkN3aF@v9@z$MX9|evk3LNAtTU@n!z^DF1t;|2=}= z)v9g)150vKz1iq%Po*-aHO}<7))i zDnfh^cve+B7y@eun6Kpn1g=+}uMl`qdA>}*d>8L0@UkFZ3Xm@nxK5exBk)@#-5Ua5 zAYkr@pC@pw@_dc}8&p^b37o6IJp>Nd()exy=Lm9F2#gUpQb~6bSf;>d2^_7!9R!Y1 z;C2G$f$|vw#|m;=fZR&J{F!bcaH5iKCUBAhHxV$eq#Fa|1_EcP_Uj4Ur##mYFi*m3 z17uZzTtnb4<++-GZFsH>fvZ9Q)ygGZLBPiA@({R;fSH*u4UkU<$Rz~KV0tluJ5;08g?B5=I| zXA-zhfinnPtH9|5%;s_$fmMQ>O5hp=P9bo$0w)t#slZ7D?p0tp0oxBgF$7Ksf#XBq zI0B~$&&LutT7hE-Jgd)-Ch(vF%Lsf)fujhlQQ$}dUsm7<0uLy#Gz1P0fx|-J&=432 zfkXU92m9Yo`QK0a-~a1>|BwIu-~RVM{O|wrzn}2G|L%W3?tlNy|9;H>e$@Ydq&Is; zjr~`|pML)Zk)q#!Mo8%Q!@X{&^Ppb02|L`IJuLV?As6&}AoGEK|FPF?4E;l|+kE=_ z-t4=Ae+bE>-@o&}AMAB|L?7sNJ3t5c-@ipVDc|4pW`y`h5qC zsNc8uW?ZVWZQp*ds(#dnljbkE+*oJ8N)>%0Wt(Cgen_we!Ep=5pkdM_h)>&-r^ z_^$AmeqZN*ck#bF``?{2~0{cg>yuitsS*{}6G7kbd|R?vff8@<_D{nnAu`b~Q?Gq}v@ z&0bP`Hgl4GU*&&iL1&83WJ1#K3?H8k9VpHt;I^`#%4DSY6zEyMlc5j&PGY{$FAu<- zqd9XBI?(R`GFiVh##_G=khc2eEsV4DTV}3Om@yy_;CvtOkk73;~L}Z-r~4>Cd55bn6D_@Ya-ZY0_5wpxOzx@@K$t)CDWSd zphoPh%e58eKon=A&cc*9xBpl_qfz!1TR3;7mhSCrG4=|XED~>J#npR0dAT+(MK&b8E+?VyY$^_Bx$0( z({9~*(IXp5w`#(q#CF3_0kV*N#FJ5(-HhTX})2`~WLSFR91w_g~( zx?Y!zU~TrcSzeD;t9UF|t->Iiw*s9g3Gm99@f<+s*pgU80Ot z5%rTtX`U*Qw7X0Xt3(fE*bp^v=bP@RxFHfc$c0skpykDe9=CouC?@B@1!%t~2FUV7(=mwx?ag zbxvx>Xf(rVyYhmp)e%|L6G+b!U+q%Y2iGfT2bv;ht#*~*)Jw#wPJGpXc*Pz!T1c0! zcGQyuqD~W9!iXwGBpKSt9lgVB*LCr-T%(JI^^&zynL0uaLqA&-!!yMw-rMpROZ$`TQVeW#kjcOoi2*jVfKD7B7{F>CRAiVNn5S07%;8eu3i6bLg zF6)aVCX{4sBIJsUH25$=y**wOFLDCAO*G#lFpHD!v|Y6Cs$xq4yYL9Z6hx9u58^iH z2eE8EE~Rl=6*a19FO6?>52x^L5O;VL!McrZnnJC{d7Xh(JTvu(nR<94Pj69%w(!gP zhPUkququMiYy>)RQt}v33PjkIa^GO5!<|5*QKNSlSI%zV0%}E+;nEpu?OeGyJrZK; zU1`t0+stK%=yC}7|Jr*OD9f(1zVkln{phZKs3o~&`&6lIm;C6y?|Z8yLtk0flCWhd zwrqqG(z;J|wW_Pi^^jVO!5U*g0XtT(hd8m#2yie21I9c;5-&yro)ss7!4nu_GR!P3 zU=3tK5=dY{GE6eR|F`!(_uN~zx?BA+vj)pu=bnA`*^h63@9*3D=!GjJezFi2KD2m{ zH!?(KJ-hIyk&0J+C4K$`P<%EO9VDV0Jn+Ms%#fzCM;jTc{{!jt*ay5)!AGIJP7!4m z{xmGu)M8dcB5JFNa}De(b0(I4?vV>HoAfiupTsYsmwI<N8Y5qD+Xn#B&BYMmgVs9kXxa@p?M(xG_Jj56q$Y(Zm?n zDQt(x0_jAY#rff0iqoPR8P`c^g`rB79i@ya-0Xr@-1)+ju;7h=DtwU_6W!_R9FjI4U7y;bC?rDFFV8urn#c&28sT zY0D8C^SQe#^@eIT(l3sBu;q9SKaZbZPJxL0dbRzU=GUF}YldI1vtMG1FO8p<=ocU& z3#gK};YvvxnWHqJHK{K7CG(UfR3?>5Rie~Vfscu>{B<=qGv5 z9|r_C?k8rXdN96$yaN=B{=@u%_FYU=3j+4hB-nR14QJ{vBvCYT1~%ypF;lWtLm>b8 ztdrY}4Q%@b5K{*1&+7`Ts3bCZDdQ@c@#Pmv9Pjx|ADvXpVl7bo+)yzKc8KCejM6HA zQHKl{R|5#=2NQwlTmgq?=|;`>apA4Z=JU<0sp#fvK@L<)_4Z zA~Pa`@6lYKfsg760ennXu>WuC>M0p;@}DS~DWiY}F5~AQgGWpw<}8PNLCjPR`+@{N zp}9+t?Np={8>U} z8(XaS4gMc72AS5*D#-sxk}=weL4l>Eg&J&$5@t+t0Wp*d1zsG4LO`W3D^M>mMSdEJ z9D#To3ryFar|We6_xT$9t^GdxOfX%4jtYSm()DM#3xtra|Jk?p;h(PmA$KDd08-Ul zYz34Lo*_J_1waBqx!(!piu-x9ogsQvASOSv*p*`$2yfsC{7LBUXmsES;!ExZN6z7i zfbk(1#HOPcai$0CXX;PV)zm|-^!bTkFFvRJ85vSc1yMX|&YK28nywNW)jgOP(n2%3 zhhYS$**zS^zL;R5nn7&doxa2M_JFyqSen#B)f5a#izHuGBwpeElN09Wv&yH0Bc4is zF}pZJJ@Pm|C%T^iv@$V`#o`EB()d=NDh)e;(me1oiRri&6FrB`$~1Ijmlx zA+gdREPRkF!xvv91KF@ah+%MEIuhWl#k%8eK7UDVfPw?l^e-SaUrl{l?+Q0qXYn^+ z&adzdE%ylI5T~={SPGlW+#>{-c%H3Xe41H|hEfH2gg6TurECN+gwJ~xZYVt?Hhw&s zlPYpYG_T7mwL_9)2BU+zyjtUS$Bsu@;ZK8P!ge7g7&V)m>F3bMg04&FF_}5d0DS7p zn;$U=921+X0sET>7#VO#D4|twUGkSVIZ*gto2@*J7#u?cjwAkN77x}*woJ>7cU72d~yw_hAwK$H?E-k@pJ~-Z2rpHdDo*lnCZA^Bo{xK8+3>?R3$4t+Vy#uoy ztAG2rDb08C^Sj*76a4%h_meNH*FWlhzSa+s^?x0uBlMtUib3!I9@DkJ0FJ*Jr3by9 z;)EU~!uBeRvP-42jG2NxC5Fw1*u28R@pwFzzLJggm8D4;#IU-t`WGi)0rhWzD`6)) zZHA9PNtuDsqrd5zIiv3|qV$Hc zm!&I$0@BfPJa5%v-c!+C14ZC@Dtdh=67oog6*7thzY1b{g^FeJ3Khuw5#+Zts%Xj3 zSo)VYHCXdLYY!|pSQ`RmFgL_>&EAl9!t%YL@3r*`3o~+tjqp&l7(TKujMa)5K4w=a z((uK>Um{K;X7gc91K2%h@futRrhMV@Hg;ry!*2J?38wUM)#p8zYi_5fWU!K z@i#%sPO;JIYAT?mW3|jWF&jbfxe513P1I4yjCHw*P2xAy#N6HJNxNqW&UFbW+@Prn z*+1koIEQx{@t0F3k^5+&0z`5jbyNTkje`RA3S9OLeY81+K@6sQY4cUk)M*J|Xf?H~ z#d8`l3Ip!t2{eN{;h-nrpkol^G(1mVr+Y1&G&Mgq3n`=E`=NS1zZehI_j-#ji1qNJ zz981rkNJYWtH9`qfqL~}GgcpVWAy=*BBFoz2U>%7y5KRJmL_J(Lsm{ZB7njh(*a=p z#zw#?=3=~KG252}h=y#8W9E*wiUSq29~3+FGA1lGV~`P8wH6}eJYyW&vX2z;B$9}W z4J^gAhCh3P{jQk8#sHlu%xlJdwHZJx(3Ax57MGqh;;gV3b}E{+9Z%ATsbyyy$donO zF-^m-N>+&Bl!_EX(t!kG>nfBI5HE#~Wl$6^mx3{_R%|#~S11Z%(cqUg5ied!(tsYs zyX7qn`=FB=GTXi#$7lPuIKB|R?>)G+?`Qt)XQs!9u#e$vp5Wt{-pDoVoJ< zOvlwuEn)!ZHdp@Q&8Qh=Ii6}PlTEX(-o0qCqT7u2<$aAkhlGlpze3u(PI^E@B%_Dt z>i?N|gw7kW$8nm0+suO7E9MhIoO9aEf<8k#(lq~!Dk%3BXa4bTFc!J>Zi@lQ|P+Git^f*cHt9UYqeERDm1s{`ty& z!@Jb_?j7Ex238j5*Wy<)=lH?)thFd}FDk1RN25;SMf`mL7*p1EXTc))HTB@q*l`7q zHVH9&onCZ{D^qy5jWNQHAGBb|82aG{-g=yUllnELHlnNvaMuW!NK-72-_j*ySR$!H z9SBQpqmwzeGVeFv*2tCo=l=7KNp#(RCBuYAtzpSeZ10o;xx`@MEP{vTzrhxBY5K>P zChmRZbDy0rMicjDzw@(jAHKF%P~;M_@qW^U`3W)sK~c+0Fd5`$+eCV9h2uSYw!pXn zPV$Jv71;+s=%IODUS^4>AThAV1mm>6jVggkn8C%?=I=n1;5N#r@B z;rd$mjE|^{M3m<)HQ7BRPm4wwqbB>NJ_T7F*So$@&_BYKLs;(@;4TuFVTcR=#YkdO zfkytDc+c^riEmx_sEs!qY&;ondIfd9iRnRb%u+jDnX_lyiLgD-ELACc{@(xi``__v zKlHgz{G9D`m8V)EJ3wRHQbJx8omQ)WipqV&NVi^Qc*%D3w zF&6(VA;Lv)61|@TXJm6men%!aqD`<$Rj8UC!Sq`m2YpMqlx`ggyK6V{qXLg%2c)&F_Ve z)Nk<~lBXiRRQV24=%HadW&r`M_$m_0jz)KSsXVUNOB)?Tpi8QI`yvp-`LkhV{&f_J zQWyT76NTgeDYN0Va08KFzZkXPHJbjI6s$l=gQL2nj=X17Adl$g63cXj$n$20Je&&& z$G?C6#D2s3%BAG_p5a|;V0ZHH3b49P_Ag=s%zpCW`KA7_2F<5S>QpaF%{cAQ8hzaj z-f8eGx$8QqH6LlrFH-82s-w~2hvs=($bAcIa)e`bowvc1DtwZ$Qg!!ibW~@dRIJ*e z;FJJWq<%?AVr~TutSV#v%ho@r^uqze9+5h`oOvM0lLs;BWs|%7MwcV^D}f8&6eXA{ zIH*Mj9_Cmd-$k~`+cNgHgMscc zj)z6S#CBJjzLtS0C_l+4e&LrjHuoE17n5>msi7kN^zk31PGs@Wpak`6QYP1p^uY0G z+H$jL_@Z9pW3_LgLjZLf4SSw_Er<;m#A)|kM0l@w_LVFmA9@z+b*r~%8s7UCZ}(YW z^fM;@{nq*WwY4d|cq=fM^_tSk$}wm)@Clj=5f?Dm8P^XVpn z(O#?c;w!i}Z|2BV_!pPbHC`5bfg&`w%jp^zXWoig_+7(0Z_B(NQ)c$ZzisLGqx13u zj~wi8Ubn&GS-vE?e7_?Juz3lZm+RW|LJrX5`|LQAqPh3Z6HXN`P~?}T^WS?H39uQ3 z%d_bveZm&oW^u+AWm+Q5{RdGlU%-hW1hGuYtcV=$7>zH%H?W){>79LUxkS3<{aR}@ zNreNKm5-(huCn_bum>*SDub~yj&4+CGB~a6Cp8(48pjt&NDzuJkN;RS;r=|U2DT~`%NLHS%0}s#7DWV|Y8-;~*ZbvWz$`H*g2=wxev(o979(dhcI^WEZu6Ngra%Mr6w~0j0oMZY1_f)~i3FKDV+O(t=C<m@&LhB*vtJG)$Hc1)EPYJOh?@wLF4|6?`Xh>x5LzRxdB(9e#~PhS zfG2(Q6rSPQGi1~!zlNVphi7o`Jr8HXL*T#XAqymwTFUm3OfZ5zgj{YyZqy8Zj3wd) zHw+Zl;bFkpg;(f-3KUO9bMFibguw}3Sp7K0;Z}+mt0%=c(h-)>lc4Nacbc!6%gf?| zw?=c4m6op+_^9P;1y$1WwL(UvrD$PhPq98n-v%u2sPoaHEEixu9cIb#%Zmq?;T_TR z5?(>_TppZ%6R_a^Nk~2;Y`ax6BxIwOxtX>beHmkE;=Md3!sUlb*%TOpN&?SG%)qeI zaz$oka)+_UusF;sJPy-{L2-m~g`<7*X&Q~;g-A_Aj<|_qKm?iv~~i zzs87%f$H+cumL8TkwjI>5NvG`7m+MbNK5NVc+VgU%9sO8Zf(X9vQlgeA^pojW&Xfn z9mS+ojHcP-GDgF}TgQjq`yMobW!MSm+kK>L}tMSdG=kA>I+-+)05d_}%>%dq*QbGyBA4!9x=WdOK zbQlI@dzE4;p@E$fKXZ?UJ$G^R-1O$XF)#1AqgP8r3*IE|f#qY2BOQBb1>U)DB{NSj zo_x=7@2C|Qd!!TAflR((&5>YVKgW)EZF)M!&olNJ$)}cH_2c()5bA_Z zg_~!eqK^^a@Lha0jo^YspY#jNvD9qgmk`Uy&LD`d&AjJeOrT-J4X1)#tMwm(@?qRKM)k$M@N#unBYg;8v~*}Hi1c6Eb>%p zL6(jtEC{tU`CiJi8W=f1NLefzUWZV!vjUbaZ~U4zXCz*Ilr5@>R}b(qLSssdUUT4> zJoDu71-AR=4`}}juiFDdWD408gSoRf4TZ{>$#A*jZS&Lg%e~lZ`l+QEK{g5l5A1a@ z%{Uw%gkg#^a0#5imBTO(Q_dwEJRbAYqm;up`?-3u0;bNBH6;J&(w&|)g)I#inI*+1 zCZ))n~LsqoGk4G)$82nlPG^} zoOkn@_#E~V@u~NL;elapq2Pn(VU9CeD|YU|(lBGwEE#Z{dXgPUq(V$D9#i5aTLr_u zdo5>u8jaC`8EwRgs>Q>=5`e3DTs;sSOGq~-(BypOm1D+(1!^bV4#nGzDU)>5 zcNA%?FQ0>SJHn$;(hcv0z!;=hEZvqU2h=lkCD^f@yD#0++{8Kq`><))SBs_FjLp|e zw{&#aus$seMaDdA(=_R3^D^mXQqN13Ym{!mQ=OJ{W7`<3H4TMst))hG+N;NIlbl>*~0&7Hk>{QE9SSH zIp@STu~y5JA@m2w(1*ZMoZss#XnwO$XaUls+$-5Lfx#gww8PK6POIVtDpGUP>|3RX zWIU3S$CilJA&BZ3Y;>zaLiu6U(=*Z(qxAWQ=9N83uoBNny`y&-ixuOD&=Z!%+LHf< z`$P*a+^@A$Mb3QGPCZ}_G97scF34}!uew}XVincxooX$mB^{5B=)nneI1TwIR7T(M zx=ASNsIB{fh(}}2dd2^v1Sd6<`&ieM zF3WvP@*sOObDWXDjuiOpG0@U$lH7}XicICrU#l>uuQrYXflRG zIAp12W6@Dj1v@StnpZSKsA3>h(UTw#24dJ4rX5c3Y9edG__TZg5GH>iB+tG zpTQU0fBO@kQ0+V8vueIL(DtX`gel9f3M_HBwU^8%mXF{6%)t9Y`^EQ+^+Reu%(FgR z`wz@@&7Wt*j6d^z8p|8wo_>Ac=@$p?etlq$!|i_Yl23dgHHc2&yO2)=-y`Z@#L6c6L$pcsDCNhOZ~$Gi1vXVDZ5bMQyUEBt zvESl|{fHxWn9Q^3D2=#=r)7`x#cA|aZLSgZf5thzgVi<|0J>!EO%NRBi&0=+oM`{Z z0qn{A*8N&;1bgytsA!&RDw>6rjt#s-8jiQ^*k(>EOiO=WcCwE4J>4|(e_r`RU;AvG zOB((ArR!Y6=pRhixxPlfOn&5|!)qNSFicNFYzQ%oOH%5Z($j?SM31~1LII@k6ZdDr zIdRc6Dg|0+cmtY{ztjJ$hZri2S~T(PT+nDA;DRWABy$EVrMEc9C!+>sKxz}N8g!G` z{*=9n@{}yazVzGaeW`Qs;MLS#J1iU~gT~?8pk?LN?QI!H+K86bpUeBvDB_k4H0DFL zpfMV|{AwvF73h0r!q^QOlNn)lGvz<}o00;=aJ~%V_@tP-`%OP+It&?B^ng3V;SUB_ zxjV5MH7N*w+o+FSEr%)QqgV;nG^*C9K^=F)V?>kg7sHv*uXqc_3?c!=$ngT{rQr#~ zlEP#x>H(Km%mVWmZt;U|0`jh*c{B8jvR?ut9LP?(bmB{}`(j2&D__OAumEQC-B*Fv z2ftb7jQV_|*V~r+%v)h(7q9l7v_YPHsoWqG%spH=9*o1p@ZI*oMn~n0jA#o-&h^PO z0#t%G`~D`q{|r(G`d6BB2jz^;xg#u(rQ?+3my>hHE6*yu!g*^42eZF(*3jnJG|o~H zy?4&O{G2;^GOj4+4wj~@N^? zwwuW3qtM*UoCP;-`?25$E|Cw_!7xV!{S41!Mkz8>#E9*~8^}|8!{hFFg3+Es2N7T8 z(Xbad1O`TtP}ZH8=IF)Lr9eW?Q|Z6fChzSS4v=9X!FxWVS{70u?`(2h^-JnGabzZV zs53Bq{YPs?=A&|r=}J9Z?ALNo+*jKP0SdXVADt%~tRFZ?#0hSAPO)VC3ClS3XrnN{LZQ;=_T&^BwHfx~(MV!{Kc{$f#;L`=`fESH+M%RTCrn*N zbF6>-3urU3fj(3lH-E}yBM^uO+tEp#!U6J(o5rGOWePW?<|FTu7X{`sljAnNM>mo8 z$=?Sx#qUTI6Ga^(uKj>p3;s&gN@^-Lsf&O&#;F0FyM9TW+CSKayK)bk?H`ooElf!A zfml!R9{y`xKIZ2XHrr5_)YonU46%BEC71>}unEvqDfw>%0IWvhJlkbGl6ce}hk9x` z^?kD4-R5E^jaZ+Mk)QP$`F~e+bbM{rXXJlM1@ZB3C~-R*MEN6>TA2p1mM_|Se3}eO*4PeH|y&8Sg z&|vo08;yvcwY?hGQ*x&L3hpO4iRlj@M2P82Z)CGI{41tzzgNTS<3Vd0FdFukoL6Xr z46iiSh4R@bW@ikJbG{y2cbU)iaYP6tnsFDhGt-fdK!aU~FZdliZt%c>G^P{auf8ei zvIgS1slmDu8;Q!{xX}MAn;s8)nmI}{?HbFRiII*^v!x=SUCAu)8BVy73oa+Pkxm|r z_;VXa#V%#UjbfCOStVth+uT4WbQNx-0zxh>{IgTnyb;$Z|% zq+v)o(?C$pGumIvK_}{!K?p4IJzPlpo8x;pkj|g;_llyyeGuTcskNh+$_$Hb3Q@`% z1>B_QKxJ@Xl&Zv+IL9L*V!Ufx1qHi6?5aKnYmozk!GwK|_GwdgJx5HLC!Vnw-~w(X zfP$fI@8iICN!p7kaL9az{)2fgSHLYJv--gO{r&8}F*7yJ9`-bQ+I4_x;t^kmQKYcQZwxo1C`BC!sI6Oo6II=v^1yRatTUh z;QVQ~Dw@WUHFJStDGs@>h^BuO>kb_e)BmG4ZSty;wJ=i)7{KK^!k<&LB7ZmuR!Hcot#} zL<93Hrz9}78N&S}dK*TwX;4oVA{b&U5NPziBs0=lf+dDFz}&N_OrIK!b%8^o#;l`8 z14>^v;C&v62+$4EqQ+P^2t(_u2KqRvHtWTz0cZbF@TOF(8YG4<)u2z1gCjA5^dkub zsga-)+gLb_EFBZ1A$Nixg$hZ66ow@UQVJjh$)q{CK?DgiS3)SiYZxGID<(HNXi{a6 zKTwXpPii4cd%XsH2ekpJmsnLBIq2ifCAYfJq!{s@l?}#H0yMU=?mL`xVKP0CW6Veg z0cMQ!vP%~;(*2h%=A~ijVqTgU-`9HSjF$rIqavhu=>j{or32JjI+NQmJ4Jc&>{Lr< zG9Z@QLrZ5q2 zld%CAnhA_l@;zRD$D<|GVD^r3GvHQ2j>2VmIO#{lN`06c+lwMwGSG7y!K{X znH)7gW1nmXhhb#vhY`qD!@$L71GyessEurC?WnYFHA`|v-?^rw0hKLrYzuO>@9IF@ z7|lwK8bQULFshH4`x@v$vq`rboR5Xkgkl99zzulZ1QfKdv=&D-_wi`SekbjI(OR<> z>%(V*@CZ;bE4fgWoHj-}eRhxi9W<@JA^`G8^q_+(Unm1_a~L!GZzlQ&kLMD{KWnVX z|3)CyZIL0>9W;k^*%t>4kw?p!NIKE5sW@elYA;^J;vnEvEDj8>uvRgx5U4TDt?C%2Yh9MiRBaDO(|_XalH)Y%tVX00V5?Nz|HCuCibV zY8f*@{Si;O4P_^7PZFplK|kO#b)cbmG-9a%@xnTdS|!(2j9CcDv~9UdE02qTh#Qcy z`gXEvEWe%E zPQKcPA`}MO@IckmDILn8nQ%FEz7B)#pB<5Yn+}p!29Nfs=rFod7A|3etcVK{-gbWB ze=*Z~231Cc#AGxm(gc-uM1T*{l>0$JJ+~r+=9EFG=$5aHxXwmEODB~>EGeg}@l6z> zl!=d`cd z5Y92~3}NsA!!8qZaJ~!htAnXpf&2ffY$ntHTGxx%TV73I5JQ|MRsTZx@J`HXupEY2 z4Lk{F27}3%_PLK76YEMPs;RsB;2|)gE@IM>M0-XOzOJ6R+(<4l3fPN{!dDqF0v1Ih z@Lo9`YY^ONKo<5ECu)i@JIlbk+gNGtoih=;&ydF~3;!IO!~H@^YjA`g~(WjLhpY70trFk-n&{aOJ zw_m{k<|7U))(34Ez3u*)4X$X~EYYS{J3WcaN%2gO2;Pdz5eKRn&acpFrp_)_R6zGJ zA9AVb*FGv2r%t3t*||@o5m;y3ftC95Oy-R4;1ik?BgF$+Ck2hw#x2eLnAVNq^OLZ6Ew zw0R^yLe?$uFMaOs{QSU)V>Lr7tD|)`tt%&!FnqVMZ^)<WBsBRB_a*w&4G#xxb2eY6AT*5`Qzf4WI&CT+&ag6}iv3JJ>uIi*uTWKpE+oDAY%Xl4_%AS&*k`@*qk z+P$MHnUcQg1O1q-;`WQN0C#0E7Uw_;zT=cZ@`F2C7?#0o>Xfr>vS!o-WolSJlOP0f z3AYk*efFPbM!RK3;1jbIJ^=$pKZs8}k`dI8g> zJ4xV^0vFZ|p35P8qJ#Z?Cs&J4va`|)eVW&ln&~X?y<*GebPw~3;ywxRJ6yvE}Mbe-G96zc|RI& zUGoDKT^}QKTi5=*>Gz{1g-WO@P9weiIKlhiG>k{;$HoQG05*MCa14#S|h`N2G`GIwl8gsaT~h^AH*Fyeii!SwvPl-08)6WoRT%A$vn=P zpa1Mve(iTY^8HT9^3-CR^E{IeAU{(N*{HaC6bZ#$rB0Cy{Z4})G41-AsS^^iz}<}X z#%DQ|)P9$XF3uQJ=1+V-s9?^>kW46`jJLz)W*cLqkEF&Q0_DjW8djOpy zpnQqVX>xPYxnfO@x9+p{jM;^_lH(2dyXFnAV^lQ0!0yHnSu(g>8D}tFps=cEXm(Fz z^`N^SKvz1Yrv<-^Q6Q$J1ze8v)!O9g)(P;0F9o{-;1@p6h5|4|GiM?nIU7C0 z^q!fqx^AQ{@={MPPNOD*f%pe)luSuLdJzWe(t@z=-SD-MAPmV5gKfvj0in0cwQDO9 zJ^{_WMgCm3%r5?-oQGIE-E_Qb-If7i{`kW08S$X&Xb_Ak;v=(W0~vOt9mcq(!$*&W z0YZs5n3MrwQN#VGH7BHvPiSW&BcrZ)lwuj2sz2M$>)220`Q&U?igPvyBE}RHh1lRpl*+)AxkIi2QS0|nN4s94akvB~ z44Sk4_%HrKkg3P`i~{VFf$MO9Nu6S$kM}?feR0y+ksE$JiL!N$7c%LZC2%D%2I%QnWn2 z$312_rOwHv4ZYmQ?y{_m({$gRhH`*KAkWR|6ldytGVa^euzbAy($F8l2!-W8%Ahp4 zKFeoKc($B*jPs5M{ZzaM6f2p>$lXu{1C18XP${Uxt_vz^eM3)Z#r>XwTCAR&MXtVx zHl;Lj8IsBbcuajfir6%q)6D~rTAT`S1_-On#gk)G%S9a|HeyFr@FA%>cD+!CHbLie zfPn1X$GLlH7z7k9XU=I@mSNF_|#T$YS2-aHhFe z4dWljhGQnqTOhh)n&Km2oQBC*-tQy1gB&p!j1ZhZpgbHjW1F-!;)q=Wp(mRG+`!Au z44CUqYqo@m#|^#;LX2h`ET}RrnAc@l2Gtx35Fwdf?55C3vOa&Z%U>5wC>+EdD5i4PO{ z{4|~qx|@hkHRKDz(!isMC6?3J2YRD@)w-cu_}mhnl(){$n8z%B#BKZtrq060kHq7{ zTh7lGKbiyU-NXJNarE&5@y_h5pb$+OP9c|cTt{_%rPSbfJ5gxquom1=_gbucynIFQ>%~iQV0m`r{V>PBlgA42AzMvCTqLv`>L+ zkT%qhQ(j)iF)pjX3EKrlsg+N zcHT;U^qsdBMvrwiTAedjo%<+b(7ZBI#Gm8iav*{o?do}GNR5xxE_0(j#|$n~Py0ni z>RQxNXkO5AmADF)>7dQa9YE41$I-rtT9UFHD6Wsdd&Z$p@@j*yLDU%ueu(|Bqn-~B zGdP{EY?z$bt+qjkc$C7jR$j;iOIm zHOQYV9pel}uH#SR(c}<+;@#3lvqYO2K0Ah8V_Tbbd zXy^suEZ0xyfI2M!Y$m29-70O^W?xLh=NZbU&_U3R`ab5`d3xZbg`bjf;3}Q5lj~IdK21P)EqC-tW^idr ziwCM!F3S)gXFSgXm7Ex+HLzEoQ(T;5xL8ez`OHPLkIo;^VA(1D#~x@7?t-L% z6Pw_+Agq9xryj(nh&^B}lsx6Y>1`APrWiB4K!Fpa8yhY#^ybthIKk0*>|L;5^Ksc6 z$LYBN{Zl`nWi65H!f_757}miqd;c>@Njn_B-*f-V1GRs3Fr#Bn?cYt-wm};*Nyp}J z5)&@VO9!2vfDoJUCKwnZX=OHEKt(&vDXf21nw9_JZ05}6|BG(XIj@{NCjOs}e2v7&INa6I>S2nZ;P}hAo@S3w3?2o)jSgpyaS6uQ$2hUW*r4UR>>v`h&J>fF z)QM)O{E*ur0-2z&qCVsik9fROgHx)j1!{ z_@g@KII8nj&D#+-oaxz=P8vTZcZdiXoA!k?+=8<@;T8wg@NHalSm*5=)+v%U#-R^W z-?F#>+AJ&{;$5Y|PCE4C=ry)`sE0vx1aAz91nq-V;)u>kO*mi?t*|cg)!fcgi5*GG z8FTF{%_ffMoJH7=K9M?okJ z<{yB>xr9Xxba9ws2p}AE7&z!riXnjTt@pq`k5ddAy~EQS`!VeoVok-bl(t2>tCf2rmaU4v}m9JIwVQ()O zwC7`x>aKFas+*N z1h+a$G4PBv0ne?DQw+$1e;%6ebE|P~V)>}k^!9SAX(kbKtMSMk)v0~eY_EnZ>9KJu zJMz!C75dr3NWkmCtpbZ37q{XVR91~s{ov~{x8eh}aH}aTo#6(-k5SwzV6btkfulM- zme@BsIEhpkav0_T$=gw#AV*AXV1Th1f0X7cB+>05s)-avlwfz3CZAT8u4;L1ub>oQ z`J5TpE_`3)t9P=oWVDxu4$}c~BD& zItQgd%Zco#Gt;FWU7G5j18U@zP%oVN)gQX}Eb2!*bn#&Byv=rUEXvz|nq#%AjurYWjm-9QrzB%wJKz>^7> zx4x1Jz9ml66wwG*7z?A@dz$7e7#h6P+$N9_gMl6w_zRYp2$a5Hy#xb?19!ofaA#)0 zzxP_W6a;Lk%&=9Ua$x1kV|WFH!k5Qzi*177o&sj`04~X+L8|#aQhBybQOs(+Af+hL zpBaP{CAxBfzFIw;zJ&Hd3XU97c!IPMYmVVrE^gw3hvp<&kS{7*Pc5hZ?F%SVmgnUS zI)Ke)EQ2Y*E?iNkQh%g6$<+S;sDjuxMVc;NAoEQvVDvlnY;Y`=2<68TqTMV^ypKgY zc$^g{x0oSgfUqEEWwr=zHR3W`Ft>8PjLkd1R-3Xdy~*u)!BiC zMgyAnv)16H7DaeI4JMhE76-|A;lpOf3njHsefxd^jZBk*R$}Wod8`LO($|vg*|5ha zh_bytDDZwVjyKS}#eRdu&hX6Q4X!%rt{MYbf-W$Sg>i6yk2G6;DTDz9>bGw~WQ#xT zo_>5GR1))MZ?tP?LT`wf)187AaZu3%M$HIaLMCJwpn(X?hKL;n@iQ119?fIJ8Z~5C zI{{g}%^hnfF@@CzaZPSr+k%Z2X*;kF-IbCSDX*;*ND;Sf@J>+>W0c!Bt+jO9uu&*M zHlra?@V!E2j^p{1U}wG&kZs`$@{L58MxLtsAy4?dFU!$`*s9@;pY4;qIcv^%{&!dE|9Jrr*_wM35&lQM zjpu)2o~KgZ@dMOx{BOp5^WUX{nEzq*3RmQtKa<4C#8}{e@mLc4uO_lsCNdQGpY84U z?2o=3uLmJbTpRy%62Xd$`BBTs4T}1_&zQhH;z#C$q>mQ{c%R8#D;>@I0O1QGdEciT z@AJOD;H{LK&bXWBe8b!=IDrh+2mF3vfx?*&S&)4XN6Uz-A?g*C@?=QPy7y4(p;a(I zTHr$6WbRvp)mQmv6@lnFmIFbv}6%1D;df1oTH{Njud#l9&tZyn~LKP`PBJ8Q=0C_N%xP#x%Cev zPw$q16we{ym@_c!@C#?Dsof{J4=0(MxUM-qYKX`vV?^}mY6FjDwU?KDq}JHPd07j~ zHi?C1);qx+T3yJ@WYN}YRcI?!&8s&LnC`me4wsn5BVC&HSHDKduZ%@tp;$-%Ln@&I3a(d&eSOh@X3OzF!b z`6AI*1-(RYsD%GkGv3R|c=#o+e~FPfT`Y)md(p=zP}mlU>Y>LiS_(By8FvGQk_F3a z_0Qwllv`6cqJ*ObGi&WWk{39(S*-{HmHrc}CPtVP#pZ>Kyo6!lP!~L^Yt4DvjNYKU zs4N)1$udaUj9*`dQL0};1vSH8u*D}K;4bx6rHo;s;-CM39Gk*xP?_11q9qE|iRr2S z`RN8DGuTXRHHnR~555Qxi8(uyz%)x9BxbG$(lgx~@%)3afh)k8O2EQ-2R}isnMdS9 zBr>DpP%cd8^DlH9f*ITZtsw675u7;mW*^t-tNDj286;+`V18Iw1uP`uJY@Vp77-uz z9XmfqC5|PhYV%{Q0b4x zur;pclr2GWGQyR12ZQf^%LNTM)NM@)C{ING^f>j_wnBq|6V;LtNcKycZ27mFpz` zM!Qb%?}UCGOAzN_7|^i21bNvSb}Uj*v9FIv@tTVP8mJ5_+6Jgtb1_I7o%y1^qJ5)9 zNB(C6zO5jSu7d3<{1Ky|@S6-$! z>MwES#^OppukoHmKJ_de<*?ZQGG=V7pO`)MRq}a=2)F>YOVUeuesfLu=Dfk8S@a89 zln35Px^PePCJx=bk%IBEkhuphM$qe+A7P*}_Y(LSXYP520J30Gp0F|Ly_{>L9fr&n z@kGKD8ge3=&*3a)p;c3CZf_=Ez)xqGi;2f6d}yX7qX_;;L6Op=kB+(S6J+yZ8hLM@ zBRiy&>dD}^97B9TEyS0kd>)Ye4Y}1CF*>SLMsLa_Q;X0XORO4`{fyqE@=KlFvJ|cP9{Fck@{|c$rpn;PDW4|QmS~Zt@3l(w8r25;lajhvSLyhD8 z#uY>?L<>S7SlJ~gP`HGMQTxr<8QC4$#*B)^$4gPVifGJOQX8 zVP(QbbS#{-C#rH5IYI2NXJQaNK6D0%Ow`|UD6J$1Gb?98FOM+tMtUM zrHzJ7pX(pdJa{G?Bh*esx|dGJrn69y9{Xn%2CVu|nf^&7eSFb$PNztKi~ZAtUvv{#$b)1tv-BKy=GNgFh{MZAym!l1Cqw#nG&t#zh5Q`IQ-?nOWV!jm?Pg8Rp z4y+(dh6iFdq#p&%TgQa4f^x%$73`Cb4mp8I`ISntn+TTW*3h#X_7*0^YI2P-^@EBC zhh;MEAHx14LI2wc&`0s1e84<$))bwKy+b?N6C0o35{_;I7kHF7BxcW{L$}d2w4yq) zj7%9=fJ2TrbV!|C!67j&83h)A_aAuD!N4IgiM7Ba(?fsgP`nnNns_&6{mHdZKC_^n zj=l5)pfvQh{h1!UW4lHRc*1O){^>FQerhbk{zU!rI~4m!o;mY!{xhsnHWOJCBr^41 zjj{*EQ)8KI8q-R8j*t&^?X5VW*{*p1{Ly>a`a=5ey;yfP_(T<14pg~CRkTgY%u>r6 zB~v;@fzVuR%_)0H0*=yeO7Zz^cH^oqnt|uI{=z5-ozkd=v@|Y*&c>c~*~QrdW2yP+ zSsSteb1{uloz>O{KL<Aty%Z1}Ls4>5I&7WQ!LhgK za~G2NF2FR-r_l-6=KArbc}a5zvW1_e5{q6RKhIcgG$cEw>L9=1AZ5sYQA0Z5)J`mC(jUY^3Gwx<8|Gs;wH#N8#!scvcc|vO=2Uv>?$k8%FzN3WMm@QS#o+en3vies08oWl*$gwG-;{=C@Qr=i zC9%HJGBIkSV6OKn1Cb?&!gUqXc=^uk@VY_twQ^`#<_0J8&-hcNC z$(kSkeDdzklX3Y4K3nrFQTd;pnm%9~qTNR>+{Z5VWjz2_XAW~oKUM!P|MkEASI(Jm zA0Us?50f2`uFvm8>1}cr4m}l(>pBkNZxi|b0M9;f{t5CNbTS1kfQ{(~kL%;;ya@(E zGC&wR7I&CMOf2m#L__Q`A)Xl?a*4koq_@D}If}W2gGz!O%7z>&EQP~Z&`PXji9}NC zZTG+-{now%URSthQJW3u;THWqMv{UlVz+W9q~P1?y39vMbvYOv*2RovK6D;QPJxva zPLV?#qB^&@FQ)Q{-37iKqC)-`G->CO!dV3fWQ{;LF#?3q6+jMGnYJehkpF*zTs^&o z=r#=82YixMj`kGHembd66?Dj?c{U;Zw5dOzRgg~B_L@)J8iuH?ZksD zFA=n}tr9{C(9U*K2!la8^a%|kAjzadyJ?4ZvkvWaunSZgGdI9G&TZ&BdrV z9-|_7>d;QEh`vOs|FJlYNHb*0McSKH|J)ZsJj9A80bW9gMM#B%tO<2uj_<79#eDwI@v02`+ zdNwj8ko)Jx2e|Qkgg3Q2FK`%b`USQDI)SsW%RoyUsMd1s9o?G0?NJ zsBN{#vQUz>?NwqgnsTt0v|EkHhAl0@XA0?F{6*|yDmtPI`>}MM}$IPUO}3*TJ2JRVwg z0yPh_4d#+~s4bh!E?|_$y8te?yE8^Cp`S-B&D!wHpyct)aLePFiL4mUW*nXcb};Lp zH|L;t;1YO-t?vPLOAN$*W)4&sODdf`DfHm0>PR{v$~FXRC?*OF@& zleS$>gBarM+TrDRJRjgCXHz@c6sn8T5Yw#7_2lNQOEYZhL$yt-hP&6fTIe>mK@XuI z@lLX+WX+5TYBi6y9g49&m*)Ct5lE7A^Moxy5?C=Ld5~f*{VkDB4?09KBpE2jYJ)yx z!3c{&63bD#=QgmQ!`$*xAnyfkX*#GpWVvbpw|ShfZN*d3ZSkRSx5j7P9U~vzF|}Lb z%$b=$X@aj~Kbk9>UX7_Q-EIKpkG8e~>PQ8`bU-u3=Gvpt?F`kI9gMZ6Ls6LdkvLuF zFjZqce1V%dPvrnN{ami-6|f30;Q&LLmrXtv&9T}-1h?LdMEShv_Cc^uTXLipB8;y7 zVoG_YaTn8y7zy@qg`Do=p(}U^Ud&7O&4V`9{^IS*I#W-Jw@33N2eakZHlAvKxD+{( zh>cIN3xK|3K&#&v*6K8XTbt-ObZ3H@fpt$V9d-~Gt63tIlN3$?d4?4QqXUAu;T(|D`3a>Sjf|8FyTJN%LCfOx!@9}ju8f*2mA}sVFrPT%GP`-_lvj> z<{ijqoN94ZAlH^V@qwA7G8N76g$t)QLHaRYb6gDm5K3nMbt#joKRY%1!Phjmx4T`&4)5+^NltwI`dMjh$25yRGe=t>#Ym z)Ryb>RC{B6ySu)HPn?Q_x2x#mvPZmzX= z*Jz@1^6Gl*UhKAacUGV3CVJcptaIIFr@M8sv-(7LduREs=*@4AUVG2>Gl1p7>C+Ew zbavOe_q@w)zwYZ!pAOaPYikknTik))rs^_UrBL zezjZO2=Hxox7MDCwpX86?{*&Tw@Le}NzhRFspi^h=j0>Jt?v2`U9q&j+xXe(_C}|B zy1Bb^?lkb<5O7zw4FT47*Vf*sp>1`08(ZLjz|DJ2*J`x$%w`vaN$G#5+UL6MCpUIk zN4HkY1}Ltrw!5b;Y;;&Ts}}#+Q{UmIy+Gw{zsxUVB<}=YSGT$y4Q{u)9glW(J@T!w zM5izAbadHRv&;JK1>J1|7%n>(w{+QBw`Ui3R_}#mo{Xpj+Ja}#MC)A;S|IqA?$*ZD zp%^`YCjm;DDqXVVx_~NI+2~I5Nk}o->Q3|YTDQH;WqT7eZJzFKHFbfcba{Gpjpc5h zeyZ8FHEHfJs?D8fXQNL=hLv003r(?-t?231opY>xXZ5Mo?TxKyqi0a?E4pVrZT&Yk zw@)>tX<7BBib#t{nlzHraI8|xkL^qxmWUr%&*mIGaF zY~3Y}x3@xvN#C`%rQX)Yh0ss*b#HdPzooe@_P4tZe4d0DdPWS*wJpdVqElh#q^}fL z8G0FSpP4J6X^ybdS&fc-M;sL@54Z2(1?cKE< zKnv|etE}HPJOo~?Sw)XOwXp-wef;hS+Krm)RzdxMy^utB?8rMN7D$`dqOI-|tDq^= zba(W=Zl}+FWBN_ZObF5GMy+RF9zI+hrnfhC*W0UW2~4Nt^!mjeU7l)h*rnwzTid#8 zZf@za2HS0Jfh-1()pc>lCc0tks~a7?y1i{<-*lI!SJxRN zG}zi`Zgt#9yBF2>)8`QOp^->@4E7vPfM33S*kU~Fc&6=L1kU=-&;tz=l(`^M-`#|P zOP)&piwQyuu>3Y9{kQbO)93={koP?_h@0WLsih+iM$%$p8zd#w6%0o>20w-PVQG?QKNzRu>{Q;p~+s%1yi2 z^T7A*m(@R(;C_=)-B9_{=ep}*jo{L)W+(EfXgZqix4N4^Pym+J7Qf%zWDT}>CwhXB zvCtq$$0*ckcLKd%MYt1BI$8Iu!>i@H3_o`qes*?s zx3hIY7y8$w-QMUyU(g0R4UA`F9bE;kgLZ~u8Z~>GXA=;tQI3Fz<1uwqgx&RZo+L=I z&xTUh&Tj_sE74x8HC~atLmNg;cXR>&u8xUGqh{6@HWO^@(NGpI;qIoGOvk}bI-&Ts z6vdX*lD%uz+`V{mb^ENu_%q9QUERo7znHy(XJ8)UrM>Z#*49`PzkIJj41h6C}q z7DiYu9#fgPYi#+oq4HU&yCa0YLv0kGwX@qh`rGQB?e~7Rxw9-tqVt|zUEkSQzUz%x zJ)5gr&)g*`@V?#dE^89{FqJweo5tW+myPzSEnKLyeRXTm!Q^T~_Rl1+gfb-At}dIq ztvUnp1gGdIZ*=?HO40oc|{ zcS{!ptS->^Tbw9cU6%<583QNug!Rtu1#lA^jGr{x+*(_OmMJmL*Y0*Z;$r>Eo*6v; z@TMf+>C?OGPj59hm+yKUbf?wF-?6dYecb6|LEYJ~s^Ft2`SSANI?=mtW^{i^{Z{a~ zAhyiXY)axg!rexdScmJaJ4g!(0WX3|2<-a;GN{5}zwA4xrn$)r@S2mx_@6*I!N}*G zAOQP7J-L@D+ykGHX%HKxrZacCFz%hRyX!5+*6r*;c#kG0b0f&->RL3TY(#5TF3r|a zB>-H#uzTUGAHecmDa@7AYin)0;0)jn80)gWW_L88CAw;Ue#PqxGw5zUMESZe z{|M!WDE}6&N4Wk@CY2iJ`t`?BsiR!KGBtSr8~*-(JM7;3UfNOp)-9>jGS}~?op0c} z!oM{CUNwm^G>eA<9wEJE>Ruh~42LncjXlm66CsQ-)n zRy%K_{56U4ukbrLpHM%ve}ek2OVp2OU+w%W`qMgu`gi*BAEi8>C_mxLHCFvkSBk6+ z^$U1YfF#AVQoNe_KKd(i4ed7k`(L44>mSMw(vZgS2b2r%eu^8l_00fXaQ^}Rsh>@5 zZs+0LmA~GX{|Dxigv%*k9_AV7 zCiHWkfBtdaORmQ^`11ErerIA_5Bc)DDHnZ(b{?Tz_!s)Q2V~KEIhdVzj+mbCCD7AL zte@r^$^#w+e0iGs-@s#yiKbJ3#C^myl;6j1t;_#Nc`i}j@a3W2Tm5~&&rlxP4dsVe z+_zEpIRDgN7{_q=?GT6Rh4OdsTjTgW-Y+D|-|5T0NckHQ<>!3)rznpS<*U9tjOWwz zqxlPV8c&1}(C^2&CgJ#pAgk^Jyg$#q`U`U4VP1x{rdBBz{|oK@Ccm{_VVdyjp!eULad>zq_u_X!e*Q8qLqbL@!qdM+J;~wlUVx{FNzXsa zKaw2d`ai)>jXyOvxwg74RWh6Tty1cxZ%>b{H!pP4|MJ_@|1h1J>R#MA+uQ1P(=+;Y z0aIzCojI!CxZJR_ENWv0RrWTOcJZp?k;c9~tDwbM#dF3E=*cGj4ph^fUTu87e^2!Z z*L3$nd-Ive`1gg)saaLSL3M#}({y;S-QAfvY&~@f<#K)n^Kfgm_sr~^%66XKxOg^S zsLdVJ9aX~!=MSksF2Su(bYQ{i_!(%N2NUBu*S)x4!)~qN7cQJFlq-koXW#pdd^wJ1 zVO(~)?V5BkdAn-w@;@rwbv?;f&lS7*m6d$Hxzfyc%gtV=arm7yQCc~B;_Z)~Fi@U6 z8KP?^-`RZnJ>9mRJbL0SCr<1ZawqC1?tk=z{#E5*+R);2V@?@C7$&+CUdZj;&ZYN*v=2m*ecA;5r=JSoC z6RZlWb<6AMx@;41e~TL%7Z_u?RIU_?g_Xiev)Zm!YK>#NS2u59Cxio?K(RvY?1|lK z3()YVy|%HvyVd1)M+Kb|blWPmn$2dr)~ppu`N~SOaqB5{D+Rc?xwDlocCdhH=7kap;vTMabwOQ+q=j6$*z0v` z)ncpJ>QpO@K^5i#Mg)R;$vilv}k@w^;2KN}a~i4O+5T6cnm- zRbFYg3e94*QfW8tywN?j3cW(HU2XPSwL+^`s5VaAC_xdkl4iSFt#yh8*mkMi>2({g zk)S{fzxIZA-76M5?NXuL?I3ds-FD-37sWTrSIjrPI5yGwu1y-axP!}cKpa14+#F`T zV)11nvs*B`m1-qlD0EAu_DU^R=@c5vHF|dPuAek2tz0d2@+++x)9O^)t;QQam=;9$ z>tS`{Ga;(`I=Qf+ag-f**u74uwBpBfe6xs9zX4YFIv*@eX*)OnT!qO(d_(>Qy@DwF#cK@Ubx&$(Kqgm(J%H>KN7VWrm2HCL*&Vz=7vR2ye*O1Jq|v)wAUEBRg?Uf3x& z>NllZXmzDrtTjuWN(;ND(75-ebX!VTC)|=98vD|9saTukEv=N?Ox+;H@L%QNnW;UxmYUYb49#&Z@*@s z6-&ixvq~aea|PRMrQLYw2G1d%>(+9Ge7n=CR=d?^t?`a)o9hs9nFv@R7}?dnRkR9b2Lm1_oCwNvZlyR|O(RB1Lb z#@~5^=a8@En-~VAP7nRK(#tpAbCEZw^A+V<(}?V8}GTnbLez>xlRj}q}r?IL8`_#Uh^C}l}e#iF645( zTxF$QD>NRv!E`J7Y5_WGpajbtZJHo~4VxuxD^yMKa@%=Q_Y_V-JeZ?BSQe+ee3&m^Y(gTnPPyAF*4ikE?f23bej!b8FDTrGr_sK- zVv}TXvQwQehZQ8YRu3W}l zLoBA%=>CQ+BA%krBPSAlVO5(!h{8S51<Zru)UU$+E$weDu|U?(izgK}+! z8w0qH)V@n8ojVFh$~~Dt!M$@!_D-hg>JFo*YxxyK*6U?M1}0X`t>D1VS6Uc8wQj!M z=)G(|R;$`8&Yg4n^mxxKrotqN5i(y#5VE6o~zTJBvgL{2=p zY>Uds@Hh5oaHZ45{;Rf2jdO~Fma7KvM@P@!W8stCXSyBpvcFBgXjOC07uXnPkF?d4 z9)#{KY@`(|>k?*0WA(c-8hK&Bqu<&A6;7U9Cz2`W?0UyJtGzFO;ORT4^UiKh%R1`u zh33|iaI_K?_%V16Ybc(-sTPrlP_y!8t?dU=NMAn~@5h>ItL z78qrb{12^DDOW5to3(tkoWr}{ZalfpGF1uH1I0lG^~l!hQ&-ER;t*4{mTM8S&k?S! zR-li@T8aK%PK^I#p-?Jb_=^F<&0WDTSE*tUlDd%Vbc+?7R_lL}Mpx+J!o!i?E8=-s zX%!k9f00I4%#-Uuo+M1gyS-Dc!Rqq)R%7>iw%*D2+NI)3r%CV}C8peX>bkaG z=-{(y7b|$`+8rX2Pd|FKa3>MXcH;x@HV*GjuC-Dk%trPLn$tJZ>Q$+WIotVW`?_ct z|45nKHdN4Nq1)@^8_!&Q!)!a*S+y;T;=FDV?WyrCg2UB}xE3}-3h!FP zuu5eNh#X|s>@@zHzk0RM%@?%^U1%Lbyg7JUtDSF=)X-D(sPX>qHQ}G%FQlE+E@R#H zK0DDu5}Aa63#OBdR8cQ&D8w?jS?R14@hp-Lh-b9hYJ97~@oJR$>U#I-vt%m($4-}+ zYZZT0xmeCsYt6>D{dKL*)wG(g_h z4>dQn)(MRjeNC%gaf&5#E0JYbEVL?JLJ=^vUgLx5j~Qa+oaQz{s|+UDeH_No-tnf< zeXYxkF}&5U&&XU_q*UF!*tp*s$FOp(YOzyWsZ|I_uaMc+`1bUNzXro9lfwLjPym7^ z6yL3M%6K`ty+Y$d>2G6wRt6G2y_s>LNjfKb|AvxoM!-Koamg&3ODF48P-|ARVF~l@F>}=tT_A_v}J7S_dbd(HX8NznR>8(1JGn+ z2u)W=6yG>2zz8KOUAze}oKmOUCNrY(T{n3NaHJEY!_4WT{dQ~l#&c=K9c#|m9RY|i zoh!kCOJoAmSE<&^AzEvNVyV?_{Ec+Xutujdm&koyso_3s;ajbde)rv9L!#bx#wRP7 zZx@kXB{D5?J=__E#`mN@`ZXZxnplm`d2XVw^ePOjTgW383XKncjUbiSq5!1ID=ie` ze7;n!RhroPjgNe7Af-_SNR`O^Z&$jEtV)hSuJJd&hLGwDirPvUC7eJ`r`64OJH^IF zZxUb3_sH|kReHT@2bU&UaL=c|8E$ZOYD#%%zcwgPtF%hRa<9TBfKD5wpz*iT@4DLd z(SmdW3$3=RB;uEd+IGw35-x_u_ofT9YRZpvC0S5Kw^hHNM#n744$O56q%0$S@{NzB zx5W4c{PC@gi)>gvdGE$WvAaF{9r}9273!9_`>G{UcdA4faVfPLA5VXmV;1{)a}#Nz zv4`op45iX$nMv%g;1n;ikD>A3rDt`V+6D(-t#-G+FTK#WF3y?-^S9Gqu(6h$ld?bg z;9MK2oj=gk$vOhxJM2WV;9pd-Y546l`0Jv*V}kdTNYifRt3C9Z#wXGThr$nkC;cln zkLrFfA32YAuUm5Ijr5^kAre&!MR-<`sO3rlyQ$guyZ_&uQ0&(!W5Hwpk&;SITdPoN zd@{{mHJxclAcPH4Pkt(G>F!P^Iq~*Kl9}S~eB>%35-z$GLK0QqnWT9uPxfL5AANhJ z1C2I5ojwq(VKGL#pCV^j`*fl~TO4XtcGl$a z=XLRsb-LxokEB;cPW$FIIlct>RUV3}3VzpX67O%?%8P zjZ=j(xlYZ-=dP`BL&NQ}9PK0g!&eH9;7zEm`Kmh(Y7i~DWD=6SLk@1G((2)p{K>0Xv+~O4 z)1NX++dE1%c)c9VGOqM6E{oM#!tDG*)J6&<~?C_Bj~HDv&$S-5t@N- zk~337rCdRq{KAc8*s%m-S2Q`G#WvCsM{>2-`01O}@d{fV*d1gAJJK%unGGn(&051j+{E{Tj-TLB{|P}1Z;Bb_-g#W Dg8b#- literal 215937 zcmeFa3!r6XUH88(d+)Q)WuMvS%>4qay=H(jATb~?2wrAQfe;dCR@VQ*m`=$VK*Z5k z-&dKVB94kW8Y(K;loZq}MRzKzlTxCYVQP&=Iu$A94bv18_5FN*&tu znZ2INdY<3&dw%!lx7JFY{@g3mBuUb_bmfk0&z@vQdyoE??%9#^li0r$QZ7@~CdrPL zIwU*B^yB_V+qH>qPp{pP&?(zPF`>XM*Sh}Hx{+;2>wT^Dw5hIT!0aEhseI>E&tI|g z1-mc%>7BbTd+zRMU-R^z-g(*OSM7dwlB%hzrk}cI=gy?1;+Tq8KK+U-p8brZt%^0O z*m>3SuH1Re(|7ND=4HFDxqRnk*F5{#yOR+$PpbLqYZ&jc=k5Nfvy()Xy}FVclhJzM zomW2N>K7*YP{oy3yNYp}dgql_KKuDQhr2v?=WbUqp)R}s$FpB>*=eVron#tjnX2dz zmgc}}K=7=cFK|%xt*1wTt-w}1rRrx~vGeKI#35`E)2iS3%+t?2^R&lY_WYgKT>eup zOqOXzTk=m{@$_9gPrvN+GtUBy8`4*4!?Pssv=aTtgh{5KtefX;)nrL4{4b+AOGa8r zI~f}vOR}*fX^l;E_-Cv&rheSY|M;gp)|*U{$yTc~IWj>v{?}^tvyp6SVtOKBF8g1$ zTr;lVZ+V-slU6&uIvpKt=V_94x{ynC$GckNBY&1I>s-0>%4c8m!Yt8+He!`7gxzB5 zn&&-t_hmo1^QSMr>ayou^*=7Z>Y2%m^6@<)n@$jgwnOGLIU6`tx=_>)F>_ zzWef>&rQznUw#!=Pru^w=kC1hC!wHS$py=ve)ZK?yznw`35`7W@@FI$u{ArN@x0xk z$0d_Lb@^4zTb{b?`4pe|bT;a;XFU6PSM5%IWGvP^H~F#A$uz0b@$L)%=l{CqMK8Yg zxnqC+#qn3A_hi`!jInW!|0Pv_SD9_H%OcyJY|WD@8RXfvY+I4eWJ%f5PpfPfS=H5L zx9s$-cR5n+Ilq?_BZIscsYWj9rQ=0fb!Usb=**s#B?SYWl}&J8f7Xq^%ylTcMTdT6 zu1?wJJQ3P1P+%iu|ziFw2B>$XEwJW<}b6 zgO<$FRCOM}Ck0S+`59&5{0N+_0G(7TX0_s3`WcwbMJ!s__^s_+813%yIK3xnAXQ7- za!90ZnPr`a#%q2EyaH-H7TnT;-TJna-P^afuP;Zp7kh8*sdDtzGOzYLN!OHe ztv~O-R2V78dNAd9l@7+n!Bh9Fti{im-x9YwUGC}Xo=&xCR_Lq%ea-BE8+6s59cZt) z>dp>&EO#>BR*V}#6%+2K=YEXJwg?7BbUV#mMUhuKX8nG5+8u~I~ z8Joz)SwhECbO%ZUI8AMP4+3ojVPmZS5{)1%H1}f+o@no$EjyaDzcmrs*31@Dg2f8` z*`gl{aLqDb5G352&XyyZFRuzAd$QyQg$GgS!~LR zeL1s*lx;Da_KLP*w*SU3Mc>#Ho}bCql&vr|#9=dcX3JDJf=i$&+Y&LY{+o33I=2%m z94)(@pen7&JXKTb$-EWFyd^Sc&=vf&&dT}#1(&Wd*edn+tM?EUDVx8>!2|GZI=Jbf z2kio28*#YJ4jkCh)a{x+ipZ{EdwxGnvpt>@5|~%Z%ZqeZkzFFFi)^+8%nQr3msSa! zkXPyMvIT(Dt}jynN-yHKN-pT7#!kl63BwF%@{7*S>xrAG0B?+b(fR;<%fU7w$z6BO zjmjLcx7aDJ#+Qv(@4Ov+_ut{@2-12_nzr_UX~#H7Yo|4;R=~AZ&%|dXtV9sC4MLy+ zeAdcBvkQAbgkIr~b>vzH6@CDAj%6}LE=^FiE?f%k*1*&ba6&y{U9gQL81wpFF}c`X zHZG1BTE`?DEj;(H*Sf}+CDpxmXqmt2mia8dJ%vzOY87Qx<x%Oe{jqcIujfvR-JiJ(MAZmMPi>6`_t+3Rn9%M7TV78p}3IaW*UC65uDF`7I zWiY9qU{!3vsu)&3HZeW=O*K@{fCBP^PipXt;m|&L(UbP+70Z~cFcpwV*D%hc6W|T) zvuu&}=^sY>h+y9;N&qDbv`<^w2R_uoVA;+rYj+IktPu#WmrZolYtr|cY+79mNtg3_ zC@_gkPm+r@)XWuPL$iJ0Mk%UX%vgBc#L{wUEz?a_K=@5c|Jb5|tyWZ>YDT-;dxR7f zIEm_P{7orZ3jt#?&gdctOD|3CNv=Q&V%p@!RA`eR&p?7i9~F!^a|L!R!n>A$c|=XR zdyv8q)&9nvh!#ZHkR&u262v#+;%1YIUR>NHI349ey8%Y0fhu;o|C|6Ig01T8E`zA^ zP@*NNZ|^oJ^BT$^Q&PmggL1A3r7&{@NDpLblr0Ut@8y=Xuh)OF0Hh5eao`VXa7G%^ zbTi~Afeubhrb=VN3Z|${1!7Ve86~z&rjDHO&$m?pW)tjS!1OK?N(;LQqu%u_mO5G2 zkvU|t+)RLeIfA%9B}vW^Bs19xNtL1np%-xg6;xA-NU8Sfx`p2$T@H9fN1ABF5x{uS z7Mr)B_dT%0Ql^$h6Dee{$0jy&E-_koeg0j=th0%1-a}wkRzZ9BpaX&nuQ@?G`yeIA zwrwvO2##i*M=;t}NNTYrCpm2=h2ZbR*wdEC zOJpMsQUw1F?C7PoM58USCGXABPEe#x?^Yx}A;D_2Y1-WMrt@wmzD+G^v>OP*No?uU zvSU=nqM*wZ8x& z%LoY}DRJTYvK{tX)?9m+P~)u8_N-h2lNC;Eazm~~7|!teCD9=Y?(?J#zFLN_R=`(= z=yOY!5DBYrI2-|W9p>Z@Fg(fO$N9jA)&z3 zLpMmX8O^B{w^lzBWm|)C^K%V#S#@_pNCIWYKhfS%9oCRcqMSVWp;ZRrP zc69+$pvr(ml$m2PmAO!E`%{P&AZ9a9 z#`27Q_(eKIL?%LPRwFSHQpG(US%f52j>tnASW6ewC_dp(6LwDf=FDV2on`{HaXQUJ zxv^&p_iO3BN+t*rqzqbRvNMJ#4UM%FrFC@!F()%T#8fNf(VySz$^xyP=2fgnVSDoA z9;$r-nUx)9SPv6gIa1fwpqIv3ZiIRPrP=b{Ci6WAi=jZ=7yvg`xLG1eWhqcUlmmL+Tu0aV#DGnWBGDl6S z3tQ~t%EnJ3I4$4fHV!ZP@^x`|qYQ_^26eYb1qman!?77^DHK28!wKZ zIPk;RfL`F8PBLl{)7lU8}PF`H$TI;cOio=m~V^YJyIvOrk3%yyy5-9g2;gkx5WBcl|_M+oS2f|Dx# zo5bCk)N-j6Nl*HPF4IB@lOhUm4vWbU;~G%sLvfRUw`?#Wt5Smxx{{Wv3}Ya`vCI%d zvqT%m!dYOrJi+!fv?vRBq ziDN=qgkN++L6%ej!L#cuHVG>kr))8%(GX*T3UyB+k<~Ctt<31biLf#g1P6k0E@9(H zZV5-M;B*oH@H&IKdwc)ob}{NNnvVP{)KdHP91c<(10J_O?$RBj5!`&}oiqohZ8N=^ z|3Od%$0E3i;z|CQ=-;N{>=fmOW>|DwHyBrkz(FUSu$)xxZYx#I#L8Egr?Rc;V6%@7Ft@x8i8e^(}W&-FJW}FM~X|z zsSt9o81&&{7sCX2sw(&WgZ_UT7H8L44o(epNpg8 zbFBy!h?Fc@Dm;#uTpSr!&@5;hLBjg&6tjkg9dYs6fTuSrR)07=-H{&EnZf~%9*%gZ za4_@o?r5Lif4DFKY1*6rIlLvP<&v@M#Og)9we1p=2E z)ES-1ERdDwafaEblM|VJga@xcPcUJylGbqsV9Hr0QR9vU85@#%OJ!`l+l8Xjg&8M6 zj48(&G84L*T5~R3Lmt5f)o~JIP4m@!`2`vZJNRK$Ro6d ziN-#BduxE`AIUZRHzci(A3e9YWG2Tii&B|j8&Vd(L$=`n{gGsw=>%Rio6jdwjE~>b zO2>m0t5ltq_XZ^-N}Wo=(XxmwU$twV2yUx_3YeZmEOhvSSx7J^Q zaz`MwMQqLNQJ5-5EUXegM?Px|Sy&~bD^e3<7FNmViU-A@1)|2Bm>KyGmamvq2Xl*+ zknTrH$*Jidaq_f_rv9(UxL?QJ2k2nFPa=tN4<(EASm|y`7BHrSi?=!NTDBvDE7e3N z0upXv)R`;lQHjO`SIgqEF>6zPSDn;}TNHCXH9jFjIX^Ze4(z#tw^QvWWzg*ab7s30 zXrmM2O)yZVQM+VtWV@&daBwDw2x7mrd-SzfUg%nqNu?!cyQ^C|vx6*GP)A{gqH`fW zuDX@9TTo}D!1%ut+!dX3(|5_5#_vW9nnSN6PI5V0jTD!!$vCe4qSO&owyo;aiUB8r zbUHkXbbCiZ6nBYof`V3yvVFWG4Be*Ry4oe+L2(VR;2!OvWklt$-EV;S>10E9=dLoQz;VO5S4kCn-3=VCq@Lelgrv;9aCz1{u{6a9@+NA??9nAu(TTpFE5ZvCMaud1uiE5Ab zzapRPCV9GQRf}gLbcEG}hXZ>-5z{p!;tI|#?dTjy=8n!4Sl^G>+Km;_USH(bR4@6a zj%uISTN&2X|9J_JB0Vz$$c_%cXxg0JLb3y02-m>phJspVSv9Qds-x60THVi4V4+yr z^+o48xXPkx7KzIzrjM`)+`g_eGqjKrp2F&|r8w>&Ul)!hmTa4#-3)Lc|ew&O$(#iFM zPSqYDbBHe=2C%YyWI}KEdXFqzgx3tN(eD^x4B*)>bD?F}ud$(~sbOj53mt)-p;<9L zn>rRY^*h)A9@eoP$T%s~Mh-EtNX)Y2kBZC?GKf^a${aEylX(`Lb1II z0e>9c*?#fix=7bYre?CENjs|MQnPQ7>|$sI-CeGWD%6G{+VX8&h6DoFW>!g%?i_Wx z=sL_L;J4;;@jq$$mEtMzgDCHe`wcbzC^aw4vu1S{%$Y z$**z!EVeIs2Rx~YTTLIGn(l``B?W#VmDwgsO$sXK0M3~(sz5ab=xpF;ZOt!5H)5RZ zzGjeA8K}ptJ@i%vX@ov%JADNCMXABbF?z{T+=0Yx=eQWtmSoz}K?T}e=19P#hu0LQ z%Lqw1B6Wt4C5TuN{9ubalaJvq)fi`k6@G*rFG*@tBUxB*++2ZlwsbI-&u(Z4p?!^~ zVT-={Il@2!vYy+Nx(%rMF$03p1tLesu_%IZ*(rwKLL=ZvsR~Fv9#}<9RU$zK0i8`^ zB9~!*T7|e2hpdnl>oh|u$bUVnNK)TcEJ>)z2oN(E7V%jx?1f9-(7+VZYChx+6qb`@ z;Mfs@$Ugdd0ZeXi?BG4S#%8HLdVE@G;z)Gqy>{5yZ}%{$BgE!vFV$*wFMDoe0-~cI z=qZ8Lfc{7UoM8#8^I=()iv80n>MU4jI*N{E5sSP zwFn>p6pt0Pig7(wBx;&>19Oz^nb%b@cJsMb^bGrcz5`G+LrHQ?!r8mRC*`!R-I(QaU3+8{R_GSiKB9aanruSd4&GHYgeE)pix0uF zd-A0dyg)Y2B?DOjITT_>qRB9yptg20{gL!VuBTjKqfwF+gh6`x7=putFKHI`OLPE^ z`IpxI+Z}10nLSHRVRmM=1Nu08~D| z0UDrGa-p9(T@2(eW@(+}h9i@?t_GQfD-kyEpG!6~exM}SL98CWkzCzN#6ei@zt3@! zkhIU;%-pU+^;P)r~fmja2Qk>(HOw%sisD3sEbXanrlxOLMfxZpVJAh63t<(5y6@$)!B2^lu5trI5dk=vFkqUOp-bD~A*sfqw+jhwu-QgC& zE*1KFSO_*VYKm-fx*DC4r~HWyY4^%XvT)Mo+s_2!`HmS7s+Iv)ZISu zKyO_JU!6txns4H3zhSlL1mZO#e~7x(V6TFY(|2bHZNY(Jdx!CA`g3Q9M4PL)NxG92n`f6ZB@FPA(1_+}_o2^(N0%k1ybk zpSx5Xw60oAVhO8lsYx7~L7Hpg!>h`6g{o{zRoYAz4R+d55eTS- z!9?pO6y&|?4Lo+tVW6s@2Vm`Kyn;MWGs7HY+-^E|bJnsqym$e~Qk>wAoS_B;k}zo+ zV5kAfC1lYM!}vp}lU!QR!dL)oMs)OE-950ah)?&#Lr+;TrV|}M#>p8);#akeQ5a#; z*VZElJB5>zy4+#H+2r4Tcp)k5k-siKrVPpRtltzQ6(qDKqz^hxXN65(j#}YSm=^-e z3TMD{640*nSg$Uv=`Ji$9DqA*wGvMY#GLy?&lG3|cVt%` ziFrd-+`{+8JhU#iXZ(WUw69mEK4Z}`e%acZKQMvH#U^A266Xfx`sr7nd^Ltx1;5hT zf0YrwvM?Lr8RWh{e4`Kj9>7NK_PK2iWDbq>sl{WpW0Yrjn3QBt8$v9r|Elotq#2?B zu2a-}JHeh64sw9>r>HzkNRv)cu>ukuB_7bkIz{!+iB)($+H{v93_A9_SABGj%9*4c zc78$?iY)}lgd;uSw?*^I* z4^9+GefI+s7*AHK=iotCuy}YzwBX2=As(E_wz)Lr_@)|e`0@mzC+sPQbs~Sar^QGi zObqR3RF7e?)&r3hx50_D_+)n&d3c9EC!8&&mP2eZ!emK0S(4_AtY#ODWQ41>{!-o> zMzoQ!D9CTVNK}O0^y0cQ=S9Uj(^RDXs5#-=f{J}Hs16Siumh2uhw9(}kdo@)Lx0!M+Wp{fxWnk-(~#u`J3Wzn!n}zt>AAZf2;Ug&EFdS*7CQGzxDiW;O`jz zj^*z-{tEsE{FVG|z>TZws-A3v5cXhX8 z7Ib@@?>0s^MfcU!lh+c~~lk8U5UyRBW& z?J>UFB;5|w-PSDVcDC=fjBbBZcU!%n+g9I=D0}tSb+=Uux}D{_P0{V6b+?rZx}E8} zP16mH7x1=XLANt}x8-#EaNTYBf^LuY-B!@;uj+2o3%Z@|yRD?#hw5%q3%Z@=yRD)d zLHYn&e?hk`zT0ZL{bk*4*@AAT`ffUs_+Z^_azVH6^WE0c?Jw$Xy#?J)@!i(Z4GSZ{ zHnE`FqkOmZbo=wV+xUWRC;M(2==T1)+t`9`C;4v2(CvM7x6uXNHv4YJ(v9aW18m&| z-DZ5ZOFv?$%k*?F8R#K({}wyR{c|JKlFI>4u#aU~4Vtw#j$f zNVoUY-SP$9Hu`Rx==Scqn>}*b;QG>cJDzTTQg=%ij5hGyPN3U->?ROvaa8y|I?|lu zQT-t7FlpL4#LKV3s=i{^tc2g+V{)7z69&y8W71vz1DD6U%YWo@le?59y3t+!6PKmC z{1lf1cll{93wOzpZE>8t{AVtYb(jCb9UoiIy{erf=`UPjN)Gr8om43n2tMv=2ZqP4ydX0WT(rfh#hF-_-l9tq$m$nki zbdhz3RTh1UU@PYG^1<@xo+V;+9EmNz}~YG2Pso{2j@gp1QSMOauSL{t5m%~Xbi zhU%Rbs^+k2Zi&`kAE_VTy=U~>i|~^Qi=#_~{{x!COj(X2ZzFc9;|U%6$PdP8nTsiY zS+$QeUON#Qsi>nAXjyf~sQG-B;J{ciOYa!10y3@Ldwp&SOf&OW@F;~rXXrUlBxb)s#>GBHj<3G4N%twgVKjP#9CoBY z!+D4xkxO_>fT(r~8Cb0|*=?N?w+Z8MCi#$dQf^_u1EK=A5NO5R&Mo|?`dE6ccMJbU z6=HuERsfVch~vv2WkU1B?fXqZj{Bq=i~p&20wnEgg$dfi88t zlYDdU92%-hP^DVEQWcX9{ zHb07F3wTkor-fV{eZbxd5dqRd+K53`1ulkZqaa`$TzXA#7f(zJV)v*jKssl-F4N~0 z>%+zV_y8{81|lA!cWV0|^hABnsAp(9N?O3uV$z}0rG*TAAnQQmE&2gdsxJGp0w z+Si^GA}Di{k&juFPQBcrQ%-D{zYF!^Cn67edl>C@E!qGkd-Kt1-TSvEsnP4L5nD6zGsIRVqxyqc}64(Ya^Pc zGcmPsS)YmNJ|F*68<#_8V)yg24csb?nHYId;DwaL~;D5r|!q4(ijjzE0OH=$=bf zXl$1@zHEKbuG7ZPcDqcRy3pU@Pn$$&EF%z_-W1J*qi#hs_+XtKH0jjaQ<>zvr?PPL zHUp?9QsDw}R@o~JU7D-{_ioF9D(iUq+p23NWXx}_`9&| zuIDBH{;30_G7gQ4&Mx;xa-G2H@fu;b+dIos*>Z;yOxZ$zN8T^CC`>V?&D&Ml%jP5% z!hVhDU~s^|N3mZz4cDH0$NQzjTXz)uZS5B?9X4I((6VU1=G}hPC&a24+AmcswO{i( z-fQw2@68mi4Q&)r-38lZQEFZpcvh8GUe3)O)r|L&%1RWJgisFdLCZ61P@QSa}^BLmBk9* z?vCbdcdG+qHi`_HuVVDAnn}#=^K9x=03?un0mX9wIA)U1jPQ;V#NF3N2CMb^(8z#y zL!6p?V`Q*aJ-;=g)3sBQS9AwFWOr(M|A=16bV~9sBZKwK@_-`?W%`NnY@!1s%03{n z5ROOi`R$*Y^{BAy?k6l(%8~bsy*D@pJjMx3V?e|7NcDt^dnYl0kao6?Z5-0LtObnP zw#=5t`Zg|)3kbFQW@gL6w{bZbYUA}9rElYMqi<`T|A&oRQ9S%@+E|o+#6eN`tK*7e z{S`9DU$H)&I%$2YHv2rKQ%+Xz#M{LWs2!u5c!JL^vDA2&^>1Rgf;uu5&e>Kq-j%JrIBqPmkD2`cDFdQR&u^G6JLN){)&K3vK zaQ8t5QaN5W1OhUC^ZLDr*)wGk$hj#S9vqSlhm#Bs2FbvFn`Bt2UnIjZUNUU(k^z-( zl3|sX3>#HOGMoscPBN4;_WWs-4G%s-vcV)nEf;iUQemc8cKh}<*OR@nUQatz-}=_K zMxJx~b%V{tc(JKCetZA=>&U{q4$|CMoM_KO$l5vzIf9ThOb{vSk{(A-id3(8Fr?%1&0UmmaPjm3IhpRDVXiW7DHC|$el zE>F?5BZu<)bnOVDJXP0li&HgQibffFJFT$3t{qu&dSTti$IcB`(7!+GPdZvog{8hI&-CvzpJlbEaFV65+ z%ZfAoRl7LLU)f|2VCo!1_CTaeX%36TrIQI>BIq?ps@O8??}T){T=5msFHZ9K3Q15^ z#Ka7#4^_ncjnY@t2_psqa_4?MRXH+oiVny|&Pik)%uU7s9VL+nLNCaODDG8{baeGh z6x4v~F~?keEvUtpP8^TpBefVe}7cfC!d>DP*0$*0Vs6l*;rAluz*B32gbhN=Mem}1EF6#G4( zw-N_qwH@uHPH{}QSzPh}&q6sPLN?~P>1zp!oSJfC4=%qxGJASLA^?})7@0kdONAh= z@6Mi12Q<0q95m-C$yXqH{eE*qn*0=5uW0toDaHo^;mqW#BWMDwTdZDm)+x#7Mh57z zGt-xL2l5o};qgPv2AGpwu!Cc>9;_bw!qp=(0vD=3hKQ@58Lr1-arL|uquC!WUprI* zd#@X+fUl=x#XM6OqaSb)KjW?y)8lYjU}j_C5#LW%o0Mvqk{m5M`MqNU@0=7p?id-9U=ys%w*M^E#cH;e&XEp zA$G4iV1X=1CUx;yt6++iLlsPMOsu%m-I5Pga7%lrf?GPFLR2A|JHU*(7GvGnDwY=~ zn0;_Uv8vc$_Q6Q8nI~F$(Q?3&P|_<;=SZ>%30sF4O){CZMZywO za?963xGP7x_aFFfe>DK{Pvl>fvlr z*$n2TqBG4F9n&wiD12>RDgwg1RFeaEsVvUCRFebPqFRObQb{1Iy;KuTdZwrCw;A#9 zZ`#POjZ4~a@%3@Zn#RU6F|Gpx&t$j?qg6hb(u)$7-231akk+fmj0rI>8Eq`sfBbFR zeF;8Cnx-4l%=bsQCzn48_@SuYEMP5zCc|3y%&WkVQfkdnM{>;S`JH z3O-3f*bDAQT-5f6)x(FbzG1(pzu7zLk44p#kcX0-Ghv*Dn9?{~LVZK5seTDbF4~ww z&Y)dPYz7fp%?J30#jJ@_TbIOOV_g!1wl38-*5$=x;IFtY)gMZn+PXAOV_oWR>r#DV zU8=Wrss8MUH}ODF0lJjhmgHN#yV9VEm|jgZCy^qM~0P5Haw^vJm@hu@rW0^ zL5K|1+c-{u4At8>PI!cR@p6#=5+e=CY$658JifiVS8m*`1MI~C=jAY9%BvDc`(Kg) zhuGuL!uQNt_>Mc_JLZHh4MQrzv+x`soGL2#p7!w$ z9@=3kf$%-;Q){blOZy;m^Kpf5Og^F@9`@;PZ3n{Q@qh}(L2gLu+aa*V_cBM0kVGpo zrh^9;J~B zwoo=oZarMtXm%Ds3*@TFM#&=uCl|`bm0mV-&=zFl+9iS(!vbZx7(+JlhiqIM5W0?s z)YtARS2$rcU99!E9Fr6&y%gERG)=iTU97;z;g6BV!bldpSW%353CnCIj#en6q9hOD z7?ZH%RG6Ow5e!M#<-EJEJ+U#+M{~C3Il&Mi7#TRgMFfrnn2iHa=S$%UwI_IS&Ed}; zj%rK}ar~IP>}ab$y`j^EV=!xBuP8U6#AVq__% z7}_)p0Z5rYNO`15$|NyN^Xlkwog*-kyohG%dRhd{MxCh?p@kN~NU@IL_-k^;3hax( z79*Z5*11s{Y@zY==AZHF2JqVg=HOj?#ad1VIi3#oUfj~fuD7%QhU(3nRsB-_JoNls z8TPvat<0ICb58OnNX4SWR-a>(37L^$C(p-$vZgY+N1PEQ&k&0Cgp6 zW{It}dRx~5Quxoae)7d}M~q-a_W%3D9`QRG*3WW9B1tE40ZH`k^Er$dtNPF9uyRT! z((N2o!txvvt>$-z-!=Sh;dgDZ{8sYlHW9>}*zn!q%@yCBVL62uMd+49At5%#EPT(-g=L)sD>8T7){Gf0MaAmB1l7w}Qbhayk%?6b0P!AeUifyF z1VUDz6)i6mjeU17<715W1P0EPDc!q!v-Ti359Rn5^bv&BnUbPwGBK5_8ui24f){o- z3{X^q(jc;JjO#v`rsuTH;hnQ^7Mf5Z{jQ$9Lq*H%|E4{!u?}3x+B4f?+P_8RuHJdP zJbK!{0A*?%MZ~!f5-&lK=*2BAZal_|6GjVr>Mji6Or2@H|C`6&i|O?OVl(sF6YvWS z7V|LmVFx_SF>M-RQ=${y6>TDCx;P!^jVu;vh6{0h1A7cqx4}3xtBL*7DibTl!&^DP zqIS&Wop!iBkFa`^kE(B+U#P#yQ`I9+n-sD5d_)$x>!EBWccok=e^-Mp%!PmC$<0o7 z|D)EZp6q6yCo8uMC>y!c<*JCq`9oz-bDA+^=lbkvpQlbM z!9nr+DtmRD}PPiZmBFMa6|ILwle`7NZCcmPV2o z0WHPdfhghb;XGV6JLKVV8HuvN-8G@q#8W%9JQ^1gq!0Vp#J8Os4O>{;o8XI&?UWmr zN{((s(mEB~u7A+nI0On89FqMxg>JGxmP|O4qs3w<9X&R|K{^Rdn;Kay#}_9TkBa5- zf>dOS=!ioWONp9hyp#ysj+6-8?(UnZlb^Yq8Imr_hW4AxWyt)+=<&Ul#TP%Wk15j4 zV+@u=PnQ_&lbbF1c&4yqXiH4qQkWWxgat6tObeDTaPL+dZQ03KB7W>klF>;NKUqkwCiTGi#RS=`2QdooC<~l9 zON^GgGVf%XyPwv z{cE7ByG=q+?~>R34%LK7hN>2JkOcI*$LKa^MllzTkK(+lZ(7G8dZ2n+m-;u>rTV6I z-0W}bQvXIYL;VrwZr;YaRB!82|HiuRVqKP@scjs}(9C7;Sl&K?Yeg{b(z^E3-{##< z5`SY})!V$PZ_KNDn^*Pqyu#IfaJAoX6~>$&9&;{?srts4s&{KyH0C^G&W%m*QI@dd z9u0hvRKf#H)Z-;Fi$9V9pGcXN#) zLs$aYtxV#0@fvyK`Y5h!c;|n3Yl0FH*<-28iMG;18XIE{f|DxIPI5BDj0?4FiL%IS z4OEomm|7Z)=j4c4!fI)V6t!TVNYtsN!32)7%otHigJjhr+r-~fGlG{VW;r_<(-bYT zyZrNYh!yv2OVG?Fu3=_KFbDr{)^%4%t>Q!OZBll68vG#cwX$&c1p zr|!WDGj(8>L-(-G)BHV+b>0lGnxJtKC+v-B0|bo%ISQ5DHFj=#vq(@T8MB|xrDRBB zcC|43qkT&Q%ifGT!?!eMKj20qr>>IpXpE*7Mk6QIS{kFNg|+Z_inY|EnebvaWDgqr zTpt*N4BNy}Mykxc#)g-X$Xf4)mFn#z68(*{Nh)TV#<_YR?8BE6pf4(rwheQa3S^g_ z0dsjR>VeRTMz4PZPBCbbkvUkH)&f=3#oix+~_<~vIW&ys_Vvo;qi_w82h=3h|CWXTzBSr@|kDr@$sovJ*$R)zBdRv#HnxT4I zm+BkqQh!^Q>Kp5dCW|AbCIu<&)SE0&&q9;Mky4yjV#VfFePdqL+q|l;=M}E*)@Pf> zSh5o$TsZoQW2)Z9RDEMi)!Ue=A0G2I!EBK@DT%Y)0~U_P!qQAlA=pLGYH4hO?m@7N zp&gw?P}G8852|gk0+T|YHKV&Esn^H+Ttt+%>-klho`*cuWNrBWHwKc zHJZal-_uy5T5OGTb`j@ylFC%% z!&6=-F^8zBF}qY0vrBcVr7^o&YU&psI{0XY^nF# zMMU&Xq25u|LKSu!ryW{?RM<^A`Op&^KwE1=RRC?R4OIcO;h}hU3(%HvPW1rVTI;C- zXlt#f3WL_sN4)bR)T7B}0eDQYdL3Y)?aL6|}# zN|W88QS{z80IfBtDj22KjH<9v-1av|kwV)?Tu9$A;-u$%zHZ@8&_SQuv4$eki8xqv z^;>H5QuQFy)i<~>o}g=A8$76bAPy7};HjSsa)dEdZ}2<%i1qV~WA%qsF}P$sN@<=8aG8h+rDr=h$r|KK~se0Rg)i?HE^;@)` zs^2oq2gWz5uleTxUzr}D<-bps$8`O{P;y*H^wChC&v6|I9hUCFS@=>}ABRfzAkSl+ zGCuf(pt59BJHd5^tes4Wws0wUJ(k57JH?VHJV zd2Dj4yDauTF8M_+!vV`lT+TCY?TuJ814LLX!CInNn}@qVgBd=wG#FehAi)eDS{f{_ z7Oi)^(~Fj zWb1?J$N83eH0|j_t#i{kZ5n%epcRam%{&+{PmzF|-UaGk(Ce(W`h?Kj69jQ>;Hd{1 zvbMuiF=TeB0-0NzU8+FX)@GL~kg^T)>Qt!i+*HPppmdKID)V6f*x+eGku#uA3ig4C zZS+QMX3epmz*(D6ssPT~gi-}?*1-i;0A~y?cwG=rT%2+M&KOV-Y%=|@X?*K>%DW)oyQDSu!3`9#cd!3fX^MOU`dZ1s^FH#g$mP31l1G`vCY-%B77`J z;YEyUIacoFp#CO#XYS>ozCx~|dpT%5EUV1T_}aXE4f$<9Ug#OsMRHENSW{YfeMo(j z8^*I1_(QIz?rHFcmvG^Tx53k1!bvXbo(4~Q30I#`4$T8km;RoHgo6w2K(YlcP|!@# zs35x}M;(bp0-J|8;HcnAHrA;YxNwGhL_tk1q{uoY3DweAr|v;^nIyE!2(wy{T_LL4 zSf^T$T_y?ba_An`X_AnZVc8{jAj&QueKmg+*(C|7$VYt`6l9kqq@&q5iCcBncfk$I;Z{C81gxqp1ZZH?`zc1#+=g_^LqOltGLH2LB2!U66}+%Duadj!1%VnhcNFw>g_4*1nI{i07&Y z@YSBGDuAyRp{fABT7;?s_-YZV3gC+(G|0o-JbaRe_XBBlA03g0XM}}R^HeZ<9jjFZ z_=}>|da$GztF8Eom~N>>s4BRn7NM%(mMB7nuKmcv`v4)zLw`Mo8s9I_=G?Hgm{kSC z)?!u_4BHU1K1&Ag27?c>Kwa|9ghRdcYu>)mXoi9|v?eco?3}5LJ=D@9Nm^hW847A? zk})la4zY(?8X{7oAv(-Zpk*eSFg6dO!wdylwhXr*I?Pa@WmrUhB|kU)Cf=EFcP9#9 zp6lukW`R8)&!wZfC?fd;hFYFLiwL8!PPMSkZN8sTS7x z{l2BKPPMSkAMh=Wb*hDRp66SJMdWR)?GC@r`}u(F)%4=qA5d(0K9`PoBkA&07=ipm zTIP**qD)f@%e=t1G?u9rP;;SgX`p7t2Kzx8_74w617ls}8yaKLz)(-}4fRl>_WQDP z(<|JD&9e|7(cbOnQtAmw58xMbC6aF7ng-_jA>YuLiw5Sp#5XkOBC&%}Nk3-$^=?^d zWtWTGr-m1H&y&IEa+)xKeNK}-1GVUdu)H!U@bF39b)?v$MUJQZtzD+<&QMI=20o6aEYg^7!iXYWAZ>vm-A1;1O*T?HRH7_8bT3RZgS_&$l z+S@&s22^_s>B#}rDg*da0;*LOeFapj462_RP_6QoSuo^Lt@7Ek<&QQ{{XkcXFssL* z`oyRqXQFC6DeA;6Q5l{V9f{MUYI}6?xFFReJieLY>$7>no4z5e4K;fTv~DdP@8$f) z;t8NYNGgkM{%TNE{;DXp`>XZE_xr1U@dN&9S#h4fvPte>l5jM6HJ3IY1|)L#?BaY6 z+8MgeoCPr+IC({xT(T_n)sPJd%nBPDboooJFozfF{MHaFtZ) zImswL6C9toj@TIX_RXYP!5NEkwiBqOc$&N7ORhieuCU4cmz)OidsQVLu{t-^9h>+} zmivq=UwHK&pgJXfmFoL=4Wa9|g|9@peq*!3%54rvz9h(V-U{Pru*a#OK#mHJq40RS z!o>66zM4YCQR$svCxDTD`TURUe0i2||f$z`wk8Hh$OaC3O*K)bR_1(v1&wYULCNBNA zx%P6oRYYxr%uy2E`wumKh@#o@*7!b3X2@IVPbircZ>8U(WG1|oew~up?^gO{N~I{q zNq;1iCX!w0ASKhfhM5DDOg~%c9!jRkt#mgf)A?4Kr^JMu zpio5hEqd85(o;68vl~LvnFSD#vn}6(ndsBed}zUz?ve|;{?)ZB!N1H83d1*b} zgIU#VK}(JK7VN5K3-V;zw_sTL7M9~5fA$ue4l*mqR0~h+qmj^@z{~RUCm5 zEKYg)K?Q#a082JpUPJ$91Td^k&`J@t8XmlEN=|2H=h|%nU%!)br zdUza-n>hQV+$tG@t1wy~N9($$^cKKod59m^6Mp0*F4?22Ohw;g=`k9s9sj*np7TYf zEPREjs6WD#>2daMk!`ncd{g2(TsOLJL9q@+Ji8@+nF*;3Z1b!iU)bRWu8T!I)e4g* z82m6qE_ISt@UOPkD$qG;1q;Ut{MxjFi+u$itt=FqLc&7t)nuITNoc@{FcocMI<>+U z1`{S3qw%%3e+et#8^8oK`zCL z8C4**Vg(vCt&nQ50yUXd2t8N968Nf#{1#9qxd-Y-K<{H`ox%Yod1Nd=YCZ$)o50#! z!k7Gb-9-O(T_@x7{gy~ae;cj2+Q-YaQ`eR0_VPusq^duZmsa!ntX@Qf4XgM-xV)pj z+zUMwu|cIZL#6&usT)cfX)iIb@E_w7Iur%o+r#7%K)!0 znfr2TTTr@*Hs^cw={n7%K8t1&t%|Zz8==e$Iw68v*b#2?EC6tOd5xtTiSPW)Wc%_m z&@gwartiPFCf`?!VI43?_*gn*MCA=UfDJ=NSDR# z4bW;*$$Kd;+!MqR?%2rYRqy&WM(g{JL%J2X&5pgO+}{cGQQcHul04uE�yoXhy%> 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 z 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 Future for CreateProposal let included = self.table.includable_count(); try_ready!(self.timing.poll(included)); - // 3. propose let proposed_candidates = self.table.with_proposal(|proposed_set| { proposed_set.into_iter().cloned().collect() diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index 9642e64b7b5d29ae9c8c97d2512b163a9da224bd..db6a410efd48f895025c33af62fb8a137c983e4c 100644 GIT binary patch literal 209157 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

ROPK`EvK?e-K@4vKCEM=fSpb# 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 z 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 D&Z1O; literal 197406 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

^|@>g;R%WwN=P_|_WM&p!Za}7EFr}&DDDbm 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 F{|m+`gHr$i diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index d3f95821639f2b3c7b107059389e58bc91ee1a86..5d1e423925eb63b0ac45d530b65d8f54cd088c8c 100755 GIT binary patch literal 229259 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 literal 214665 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 ShGMVN?*po0w=QibZvDSE5N+N7 diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm index 4548ff4c28500f523b0ccd4faa4bad6be5a6dfc5..c038301ce366ffa6b0feeb47a835aa7365bae689 100644 GIT binary patch delta 1474 zcmZ`(U5Fc16h1SVOlC5hWU|@KcC$5^4PD&UrAcP<50#GC;)@81qEB%$bF&?q%!KUh zPY}sUpDaGK+?OIqU;3yID#aI(^+gIo@j(!DE358rGBv@}O@g2A4a^M! zGD8;`x`AlmX!^u{WDlaonZ4aLuM)kbSE>+UPBRSjcf8#(lsbu(^g2Xnma7%yPsYXu4iw9CZO3;!*X*{&hNVPcm@4{oEI=Mr{KS;bs?DYXJF)djrPOF` zlY!G2LXLiz$eaN!dLuPI2b!owRM4akR8Es|0Z(0^QsX}F^K2vmz|@;^-2N85Ju@5`N3znd z2mnbWQC>!U4&_(USig??Q>fpa@L#~oHIMois7D!ZB6GOUJ_gSth7^FA zNY`<%;%U?n|1}S9i-K$R2=|t_OiQuvM$!Ne-SWI%T*O9L{b52J&kHqpbIEehfo5~k zf@br$1Fho@G@Dl%dZ)79sM%$`-L4cno!PUjC(UN?_E_%87O6I|%jF{J6iar4)N8B7 z)R{?!iNI2jRw-Ai`nulG8)nU_RqJ!~)p#~pwpp55alM4XBBgnnkFO-{&U&qFnw@&d zD%a~pGfh8=uU#;$TFEx`M!8m9$KAq-*>Ng4e%!sjKWq(%zcp|dr{+k8E+x+Ph+V7N lx~*HfT_)9fW9ff}%jy5lmg!M~^D%pJvg95&STr_Q{sl&_ht>c9 delta 1232 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 diff --git a/substrate/runtime-io/without_std.rs b/substrate/runtime-io/without_std.rs index 64d69957cf61c..5a20fa9af7c4c 100644 --- a/substrate/runtime-io/without_std.rs +++ b/substrate/runtime-io/without_std.rs @@ -38,6 +38,16 @@ pub extern fn panic_fmt(_fmt: ::core::fmt::Arguments, _file: &'static str, _line } } +#[lang = "oom"] +pub extern fn oom() -> ! { + static OOM_MSG: &str = "Runtime memory exhausted. Aborting"; + + unsafe { + ext_print_utf8(OOM_MSG.as_ptr(), OOM_MSG.len() as u32); + intrinsics::abort(); + } +} + extern "C" { fn ext_print_utf8(utf8_data: *const u8, utf8_len: u32); fn ext_print_hex(data: *const u8, len: u32); diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 9db01ba306518894e3deee6e4efafbcf2c6951a5..6932b315eec8f967438941beadc40af271a6a360 100644 GIT binary patch delta 3856 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 KDdukaCi_2gq>YaN delta 3451 zcmai0Ym6IL6~1?7Y>#I=-tn&Y<$YaGb~nyz*B;wrd-K{!vq?i9q$QvPL7cHYPVMa4 zi`UyEfa*})lUFatye6l=B(N^Z{VO zt|RXH+r4xc_Yg0m_Azn0vN&hgth!yu)@vm@TdP*#Kb!t@q(UA#xmI_?OLgL5y^aCFC2>mQ=!^rIx-EJg`k|?0y4yAVRVlK(d4gBA9ThAdAR+)vNX*c?qaTf%ZdgyV$0E zn|_X80O;TRxYt|~)gY1)qMs4BjQ~H0h?{s+j)*r^o_JvZskSz{EROlRk^Ehe7vLs6 z4Q{%5O1OhDPsiQ6AK|83KZ0izu)`F}nn3U&g(HF~vgh!CCYb0^2B=6=W)u%mhzE8A z_8b~eRr;cP@Q4~}31hQyM8Vv2TOWwHW)wGZfe2QCB+Mv+kC#mxcA0n$R5*sU+){g} z%X1Q3J?-fkU}~LB!Vz2!dx)2CWzYt?=vB`Mi;-vZM+D+AS5R34h0JnnF0}@*U254b zfgvpqiAW@K2|EL`K14(n`&ds^Hdgg`zovTK3G4QKJvAbnriHgHEV zIAo$QmYH=1ClJnD0rNO@gzoppIWu$Oq3H79r?yO0Or^C;NYL-%$(f(gCcp>?x}5H7-fM>wd!!u*C%Ry*jej$NSW zpB)((V`>kKkE&BJURHJAvShkjhpHa>OLa`SqnKc}Dw>T0iiiFkh$5W`d~I|exw5Rd zO$7JlUe-J;axATo=9^K11kEVCPogVZ6+)UI&2O(>iqg^wK2;s#9lF5HSarp!p^4z5kZb*)=_xv7$Tkeg+_+syA z?4|GZ-s-t0nSS^Pu}M@3tXvYxY(?+(rEr+K`X9$KJ=y=&_y!s{!)P+QR^}PJxD+1N zx4}y%q0~Ma4n2;2v>rOO@is^4dm#}k)IIQe|5{y;%{N-XzwbupI(Pzu_1_vg{$Pi>s=hpY7;k`@r$)LNxk}<850RHO7yHV+>`s^n#2G>*Hh)ga zjI~+Q4nb|;kHUpPqP~G!bPqSZdW}p33IVGx2;}=iKFlftToQcA%s%!U8qh@eM82#Y z2yrdT)lSkG;ZPW|Il?V*Vb#ace`t?+cqmQS$2X5}3UK~*a}2u!sIt+IB>N9O+}s7i3dxG5a*0 zF^T3?$G}0fg@>B{F{hYC$^@Cw@;Y)vlNdRw$)MJjBcS$+@+f3MQyyPi|3}{6dCklI zD9jtJ={8K1M7M+ORi^LVpk)I_?0^W0sCAsjoSeoHMU6iurx6 zRm|3^8xYqhjut3->j5=P2V#3!<>k!QK1e{0mt#$VRTdi7w{Uk9dPMKrF#;*$TsHgq z+tu?v=)Vuu(~)0X7l)oH*+S4jq&(M>;&Co$y@{PmQ-S7>< zz5m)b3hTf4K7|AH6G|Fl_!WhSt96q8LJ2{Md{r52tX4PqH5ZirB~f0%D*{3RgwQ)M zcfq`sLuef4x*MS&%mMf_cERj}f$_f7ejkE&3EmID10v`o@S!O{&jPN%JlVz*fRDEE z2HVKAH%q2izLdBZ1@$1q!HBujM z_*kb`KVQ9&jp=DI$llIA=mxW;O12#YuKSOe} z);U|x>PbV{*lzatAJS@eWT?86(3?}<55;21Tp^XSbW2YbqJ_Nbo`e2({$gN)MQ3WN z<>%DYV�zn$H%k(yU#WntCD;)f09yuNRY6BA2oB&NY>Rl#w=4v1lQk%jmEhhZ?kV zTO*gWQ-)ED+J$sN*W>Zvmev9DR;83@(VLobmY};}V-nluye(D(l8R1uJ_S* zcAngvOC*b_Ox#L=-Ekvt_p{(YFCS_*-2+a~JxE{KH5PzC*a<6HEV46m@$?WCcaMx% zF*}wi#&dQom5vwE#_$K*b9#U0ar*8aN!1g{R8qIBMBX;yMuE`J@A-7VD8>xkC>SZL zU?tPV@G*LIPal13_qd@aGI}PLirYmiSx86Y+QYj1O&gm0QF>+fu7Huq6_a`~oh#_E ZLOySe(Ld~-P%|-bF>TrTqQUMo@n5H^1d0Fv diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index 62738f73c4ee527f16554eab72304de624d60404..2cd4aaf95b6ed7e320797b51dcec853edea19336 100755 GIT binary patch delta 4304 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 delta 3804 zcmai1TZ|Le89rw`zK+K`_FiCbW^6W#7gnr2w#PO}3d1rBBn^ZnrKGCj9ou8#W!Jm$ zdbu^Nw+NvP0m5!S>YOB>~htPbmS7BiM!%;gx z2FTJLjT#-UF}E4Prk4+T^uyKcgf>1tnMarcE(#PYx(-5K%j{s5iS&v5#1t|B&fwA~ zCMFN+CSuCbC#LnP33w?<_0Z(uY)nccmJH%9yPFClx1Q=`kcSlUdW^_C?#KezLaBi_ zJ6)ZuX!~{Kp`-zd>IEs8jAgP1^-8ID1aY>mPSAi@WVay)!!Q^*94?0gxm+F>YsXU< zW4jF_#^HjHD4(5X$=`5C&F`j3rYTx8Bv&E8YvD#JMA=-fz3l=e}@~qd!DL7X=#?GBDu z@?64?s2g582VrkkzhcIQyqxF?VGbmMc+l+xwNvhcVc3C-#@<+)3Gd9RpNbU=3J1lD$#Wf}}%6&AZ+(RIJz&{91?e)uHx9DC78&P)A z9c+%XlgHi;@}7SfUnl?e_jlG~B{C7_2D_byyi=~SW5QVy3v2^{2Ln&{STwLjboCCV zdY2eW@27!p0GY2?3`cU4c~Hl zIZl}~)WwCXQ~+$!M~&xT#U{OLn7g)4TR(lu5be$>nwx+ArIWL%YA@ z1hoI^coy1Ct7K?jU9}e6e`{3;pI`j-DlZNhF2T9rS?Us|F2S*}ToP2CBY$5#Gs=SD zqH`wP_U=~ZM7ZudBRVL%g0@34*2B=M@-8R`ScE+Fjqr9a%facg3-4GyHl2gIkK}Ua zU%;;EuFcRccIEI%($W3L&}W9vKH(VUh2#{4H;fUZ%(7#2MsUw&e1j-Gd+{l9vFFPF z;D9VKIKI={hcA)WdiUbf5x<7ZD_UA$4>&bzO9+rBpQplSW@!P6u#>D0klDG z4%!872ekLO;lVel1xDeAI%87^BnljEVZrbQM;KQavNFO5VMe$~vfiih9QlcND0jwO zS5{M|O9qo`nQ3*{Mw!I0TewLHAtGqNhD66+qxwe1M5IK=9_5RKJ(MpR=0Mp-eh`%X zoR2_S9p~3S9N*!;x9+U*rL;bL%FU+Phs!fEm57-|w%tL?sBn$kN(|S(JdEc=P-jlxF{%Grk>DMmR)77ZWz|cf$NQI@9pm2j+NDj9>RAkZt zw{VI4GkM!-6+ZGiIcXW)|A5*eT%+os!W&sdQ_@lltI7lVQHZ75AQMJX+u$_6k@|Ck z3ey)u#dP|duc@})ATRskVMPTe|IfBoTV=dbtSl;;=PZ9du%m3RVkIL*;n+# zUctC{o0slvWpc90`zVqd*AD1XR!Yjgl~?nY$K1+=Jw)6rlTS8tyJE>)A(hi4O-dG` zg}mxFF4oQj=5RQq#q?OF7|-dkR61Tr%WA0k?GgsnIkHi82XrZsOeG~v zOXPJqE*I3bWT$$@FBfC7Bp2kAR?w2^qS{A(KRle05*aCzOU3n~mMo;BarKGEJ%RdH tynxn`)!UvA$cbDrDHYSXf)p#{^O_nVN4LfNnHcz;*7ST)rn{a{{|mAK{zL!( From 0857ffa20a10e91e1866643c77cb64b8fa6d0f5f Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 1 May 2018 19:31:38 +0200 Subject: [PATCH 049/103] use dynamic_inclusion when evaluating as well --- polkadot/collator/src/lib.rs | 3 --- polkadot/consensus/src/lib.rs | 26 +++++++++++++++++++------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index ea40705229612..967a8e6de6fc7 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -43,9 +43,6 @@ //! //! This crate defines traits which provide context necessary for collation logic //! to be performed, as the collation logic itself. -//! -//! This crate also defines a WASM API and execution environment for evaluating -//! collations. extern crate futures; extern crate substrate_codec as codec; diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 9f30f1fb717fd..1979ffaea21ce 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -406,18 +406,30 @@ impl bft::Proposer for Proposer let includability_tracker = self.table.track_includability(included_candidate_hashes) .map_err(|_| ErrorKind::PrematureDestruction.into()); - // delay casting vote until the timestamp of the block is current. + // the duration at which the given number of parachains is acceptable. + let count_delay = self.dynamic_inclusion.acceptable_in( + Instant::now(), + proposal.parachain_heads().len(), + ); + + // the duration until the given timestamp is current let proposed_timestamp = proposal.timestamp(); let timestamp_delay = if proposed_timestamp > current_timestamp { - let f = self.timer.sleep(Duration::from_secs(proposed_timestamp - current_timestamp)) - .map_err(Error::from); - - future::Either::A(f) + Some(Duration::from_secs(proposed_timestamp - current_timestamp)) } else { - future::Either::B(future::ok(())) + None + }; + + // construct a future from the maximum of the two durations. + let temporary_delay = match ::std::cmp::max(timestamp_delay, count_delay) { + Some(duration) => { + let f = self.timer.sleep(duration).map_err(Error::from); + future::Either::A(f) + } + None => future::Either::B(future::ok(())), }; - minimum_delay.join3(includability_tracker, timestamp_delay) + minimum_delay.join3(includability_tracker, temporary_delay) }; // evaluate whether the block is actually valid. From 3f35959d1e791bec6297c3d7ecb9acdc5f51021c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 4 May 2018 20:08:15 +0200 Subject: [PATCH 050/103] fix update_includable_count --- .../release/demo_runtime.compact.wasm | Bin 233565 -> 233574 bytes .../release/demo_runtime.wasm | Bin 255242 -> 255250 bytes .../release/polkadot_runtime.compact.wasm | Bin 233747 -> 233747 bytes .../release/polkadot_runtime.wasm | Bin 256495 -> 256495 bytes polkadot/statement-table/src/generic.rs | 4 +--- 5 files changed, 1 insertion(+), 3 deletions(-) diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 99f3a5921a330b1eae6e86c009a2dbd155eab8a6..e519babb5947d9243245982d27623b4632a66ba0 100644 GIT binary patch delta 6505 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 delta 7308 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 diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index e0e7764970a8ab95733f86f5fba4a6fae8561fc3..9f33a1b00e0d7e09907aa58c7eba6b78fd0847d8 100644 GIT binary patch delta 36 scmbQdh;Q;DzJ?aY7N#xC?QJYZMn>nS8&)%mO%JGJ7T&(4jX9nR0P-{pa{vGU delta 36 scmbQdh;Q;DzJ?aY7N#xC?QJZk=Emoz8&)%mO%JGJ7T&(4jX9nR0P^7sd;kCd diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 4e97fd51a637450a11e5a381e97e3a3924b2a33b..4b1b19accdb3cafba5f5626cd108aea6c91810fc 100755 GIT binary patch delta 33 pcmaEVng9J|{)QID7N#xCAMUUj85vz*jGEqfn%QEz-d*N{JOBd?4k!Qs delta 33 pcmaEVng9J|{)QID7N#xCAMUW3nj2qWjGEqfn%QEz-d*N{JOBfq4lw`# diff --git a/polkadot/statement-table/src/generic.rs b/polkadot/statement-table/src/generic.rs index 18b39acb1a779..4436730b3efce 100644 --- a/polkadot/statement-table/src/generic.rs +++ b/polkadot/statement-table/src/generic.rs @@ -746,8 +746,6 @@ impl Table { } fn update_includable_count(map: &mut HashMap, group_id: &G, was_includable: bool, is_includable: bool) { - println!("updating includability count: was {}, is {}", was_includable, is_includable); - if was_includable && !is_includable { if let Entry::Occupied(mut entry) = map.entry(group_id.clone()) { *entry.get_mut() -= 1; @@ -758,7 +756,7 @@ fn update_includable_count(map: &mut HashMap, gr } if !was_includable && is_includable { - map.entry(group_id.clone()).or_insert(1); + *map.entry(group_id.clone()).or_insert(0) += 1; } } From 3e88415a41d8e54c1fac6327e1c937a685b0c22a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 5 May 2018 13:07:40 +0200 Subject: [PATCH 051/103] remove dead code --- polkadot/consensus/src/tests/mod.rs | 81 ----------------------------- 1 file changed, 81 deletions(-) delete mode 100644 polkadot/consensus/src/tests/mod.rs diff --git a/polkadot/consensus/src/tests/mod.rs b/polkadot/consensus/src/tests/mod.rs deleted file mode 100644 index 88c489cad7ca4..0000000000000 --- a/polkadot/consensus/src/tests/mod.rs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Common implementation of `polkadot-consensus` primitives -//! for a single file. - -use std::collections::HashMap; -use std::sync::atomic::{AtomicUsize, Ordering}; -use std::sync::Arc; - -use ::collation::{Collators, Collation}; -use ::SharedTable; - -use parking_lot::Mutex; -use polkadot_primitives::Hash; -use polkadot_primitives::parachain::Id as ParaId; - -use futures::prelude::*; -use futures::future; - -#[derive(Clone)] -pub struct FakeCollators { - inner: Arc>> -} - -impl FakeCollators { - fn new() -> Self { - FakeCollators { - inner: Arc::new(Mutex::new(HashMap::new()),) - } - } - - fn set_collation(&self, para_id: ParaId, collation: Collation) { - self.inner.lock().insert() - } -} - -impl Collators for FakeCollators { - type Error = (); // TODO: ! - type Collation = Box>; - - fn collate(&self, parachain: ParaId, relay_parent: Hash) -> Self::Collation { - match self.inner.lock().get(para_id).cloned() { - Some(collation) => Box::new(future::ok(collation)) as Box<_>, - None => Box::new(future::empty()) as Box<_>, - } - } - - fn note_bad_collator(_collator: AccountId) { - // TODO: testing when collations are bad. - } -} - -struct NetworkInner { - -} - -#[derive(Debug)] -pub struct Network { - node_id: Arc, - inner: Arc, -} - -impl ::consensus::Network for Network { - -} - -pub struct TableRouter(Network); From 157b0cadb460fe778dba73fa48b6a0eb396f47b1 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sun, 6 May 2018 11:49:24 +0200 Subject: [PATCH 052/103] grumbles --- polkadot/consensus/src/dynamic_inclusion.rs | 13 +++++++------ polkadot/consensus/src/shared_table/mod.rs | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/polkadot/consensus/src/dynamic_inclusion.rs b/polkadot/consensus/src/dynamic_inclusion.rs index 4fec26a196a61..d48e486274598 100644 --- a/polkadot/consensus/src/dynamic_inclusion.rs +++ b/polkadot/consensus/src/dynamic_inclusion.rs @@ -29,8 +29,8 @@ fn duration_to_micros(duration: &Duration) -> u64 { #[derive(Debug, Clone)] pub struct DynamicInclusion { start: Instant, - y: i64, - m: i64, + y: u64, + m: u64, } impl DynamicInclusion { @@ -41,10 +41,11 @@ impl DynamicInclusion { // linear function f(n_candidates) -> valid after microseconds // f(0) = allow_empty // f(initial) = 0 + // m is actually the negative slope to avoid using signed arithmetic. let (y, m) = if initial != 0 { - let y = duration_to_micros(&allow_empty) as i64; + let y = duration_to_micros(&allow_empty); - (y, -y / initial as i64) + (y, y / initial as u64) } else { (0, 0) }; @@ -62,9 +63,9 @@ impl DynamicInclusion { /// Panics if `now` is earlier than the `start`. pub fn acceptable_in(&self, now: Instant, included: usize) -> Option { let elapsed = now.duration_since(self.start); - let elapsed = duration_to_micros(&elapsed) as i64; + let elapsed = duration_to_micros(&elapsed); - let valid_after = self.y + self.m * included as i64; + let valid_after = self.y.saturating_sub(self.m * included as u64); if elapsed >= valid_after { None diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index 85c7b2a2994aa..23e936eefea80 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -256,7 +256,7 @@ impl Future for StatementProducer if let Some(ref mut fetch_extrinsic) = work.fetch_extrinsic { if let Async::Ready(extrinsic) = fetch_extrinsic.poll()? { - self.produced_statements.extrinsic = Some(extrinsic); + self.produced_statements.extrinsic = Some(extrinsic); } } From 0d17f970c936e72bbef47351241d4c167f4a2fd4 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 7 May 2018 13:37:41 +0200 Subject: [PATCH 053/103] actually defer round_proposer logic --- substrate/bft/src/lib.rs | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index b1845d2ccfc5c..a0ffaf3968ad1 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -194,20 +194,7 @@ impl generic::Context for BftInstance

_4uigf;$ip|aX(TJhk|&dQ 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�dqB3w zlW#VUT6_ZGGn$Zek(jBNF6pNAZdK%!R9nn1`Dnb%i{4~yPX0CO172d<2Vaw*!bl7_ z5x1}|;yYq{G&hEP12P*_j* z&S?l(hzrc_HPdYU4l5~elypJiz0r+UV{qhP)S%lr1FNUkbVMRwmb^`!qy>+9o#-)WUAEIfBFm zFBLsJzni90v0Br=q$te}Nz+5KbGcI9bNzMKU000?k$d(%`oSB7lvtC>x=9x6&-S`H z-#y0CnC2Urke$vl%_ppN-SLFfk-d!$M&<&3ZbcQGE+7(JF82B$ zG6zG5rUJC*`G3jsh8hJk%=5w|??PMT#5AuXrk*P6KFBo#od4k7llf4BN$x#IlMqVF zQ8W4S;uvY5^93-BlVkHWk=kb3vFgua~QlX+b4qCQx69Iqt}q~)9vp4PqCBR?s< z@;CWubG$N~4#t&mzKnT!1`2%-`fN$naV;w#8LHaAkt_Ya&=;D-;}xtlbQ$*b6PUs9 zXoHgVQczClXIY;voj=jhye}c_S2ia4LJA|ECL0A^3ZSOn^-hvZgJ{w^-vGllRIoc} zN#FZ|h^n#1Y^QrZq$aVh}qM8)Lfdu3c)J@h6hgC5F=g1 z428b#k-Zw?O5{VdCdioDQuCsR%7$wcU98`f_8qhnZKBQ1jseu;+CZICptm%OrN$T6lzsq1A#MCg-@+D4;{~0W7_VMU1GVgt9#D zVNAys?_cDbW0=ik{*V<~*96T%SD{-`1zlhl(gjLtCCz$6vNECL6^eLZD5nF=F=$`7 zMWwvx_rT|XX!TtvB}o;Z6(%mhd_Vu#h>V7nmFe(e!AD1rorhk4TF*b457qfn92kQ- z*F_rxTaCiA(|^lwHRs0x$p<3UfHYx@(ui!3H7?wmQf{+$Rv^F9i!=Tk! ztqz){4icY~Jl?nX2p>Syb+jR~3KbPj6?|h1x*2^t^8)`~T7l4Lt)1#M5em;#OuExy z3fz=DO6nG>>Gp<`{OGaQTNTH2>;-G$-fGnA_JZ1~_58S18c-l$Z!jHnD+G=n14gPK zDyX8!ixqI1_JLSaSf5;!1~6%ddz)=AziNL7s0%vPoF?*hGSIX~0e9pLp$mK?>nk)6 z&`HaiVytgPp7--C(@-_Zsi+?0a%js5SGs!E@mfi36!L9bv8XryX3S>PV4 z%uQ&>Wo1Y2GR<{K(O*F4lDtsv`Vi;zZ>qYp*1LQ%#{+6()GIcRb-SlApC|d?A;@~8 z_|^;BbPQbwv)X!Us-~FQ1`Ta*z{NA;Yp`Z6dfEsug~qKDU$AfZ!b@6Lw_2~nbbTeR zH{trgRjt-_xZaKD?{2_{75u^5TCJmi|Gyhst+Tk2O-tps!#67Uhf&XqasO^yzZ2I# zJJM=>2d-axNvm}WuFqV%_4(V?^Y`K@9)IbLSxrAp6|l*i}3sm-oFah zFQIP>`pXKB->B*{_?}1Q58}PTUmJga@X}W6)wphl|1t3DG~j=RdsJ1I z`}6AgH&O1c2K=uo_@@B}>FV--UBN%J4gP;C_yBO~hr#1-D){IHTj}r)lmjX2a?}aJ z>tVoeZou0W{O)b_-d@3P1^i`=@~^1ie~b2-@K;svKL`A~8s)7D{`-J8@jh0;zpxGd z+6w+rz?*bguHdGhW_%4DPF3$u;=AT}ys3h}3h?ImJyOB{;+m2VOg*Oo2TQa}JNJT5 z=(}gYPYJG{!j<^#<$&Lf>(h9q{u=n#@jbx}A6*Bgd=sAOTfAz0@P=0F6}WzX1wV~@ z8W#olQUm_B3jTGJd$0ljL{&pKLGxHz-H*{pD!F67;Fc8Q`?eO0X zYQTFHymjLX`n@4(^H&{tW~KGvPqwcf@_}l<_ml1a)oxu&HhESk)xMtY2GGiKapab5 zM!Z(>uX-6l6+9I1{lP8UCFgOM{OVV~h~A74LVQ&L;p`d3uPLim12NisL47|M zU3&u+gDYTw2YL-Xj+s;>GCWi*>b?hZRIv&o8K# zEUE+!kMCRr2iCV};-q~z_}s1=gts<`v!*s~JJEgnqfSsqU7=q~C1Ub9kZ(9XTit|e zNN=2I%~MX2I1W#^qXM2u_R=$`!cV$OZ$7uA$FI{dQS8nce(?z<=*_vM`5b=>=r5wsXt7RphM^PKF1KCjdZCO3d)ZT{Gj^JFQdGQCRW^-vB~%?B>sq&Upwlru z=yXgM=#yDD>@$31_cZre?{} zz==f$R`b}a4u#l3nj}FC^2NTV1oxPAD9uK3s!s|DgB~);Luo5FOT#o(QJk>G6g&}9JJ`~!?#C5$`VPbO6 z4cvq+9ZIul8uBnmV_$iZa(&6Z=YWQ6CU>P1hQ9PuUqVVMm)&*HE%M9@QW1*KwPQDs z8GFq^N#$CU;3k7W_IMNvH;!USO#?g2*y|^RbEt8qC8E=zHaeaA*O2c(sGKm%@X76Bzge6<;?P_= z9XQbR9hLTn&{NQ=D^d(on0hkuUEdGb-9)LRTw$8koP*NwR!Uc*mLD=LpWb`RXw;V^ zBva*cHw{>)OO*0-e`hK{l{p57Y!#R2bjmb`axl;pLcs}UPG~HkS&ptj9pJVnJQaDF zOe3Ey|8Scqx>F0iywf>Jy4AUhIg~4{ip*&w1|2H=AUvJWg{ghlUZl(teI-|JXgg4f z+{m{TvtL{wuMXbNRjl)fKfqz{T&qD)P27D;Za<102V{*x5lAm`nU|x_d(h~r_4`?M zn%GZMCsbTXWqX;3ng3y;vSULT0;kLd5<2~$NBJ#dD0HRX-0864dauZb19;U>DI_7G zKt5bdd9BPoyDk{0z~&+hd=;fJ#+?OP7aWYj7gXj!bWLfR#8;EClKcdry9WYYp6cfW zGWEFad!CnJUA0-K-(Mee;wXW>8hCb;1g@Vrz7wy!p75cmmyGzZC&=6i^c~m$nK>dZ1x;^eG8;Cke1)wnd-pjUye4i)2 znxG zk32W_BoYlWWd0sClcF-&~-9)X5W2qY&(Y1E|M$^0tJ2G>;d;7=3$sXi%F%l?L=hk z-2VFztHi|+L>Xjq$Yb{S0rw$E1F%rwI{;bJ+QP_aR1=whx*lagu~mFn+*& zK*+;~h!;)-2ZqlbmhQU`92T>q!YFVk%mhIw4!93eX0}YB2uE4ufT@_=cOPUJ!Y}9A zc4mi(h+U=*xDUd&@qdy?H%&sJ5|-_|513&tIlVI(kq0hhs|VbN$cBZPg>Wo+fl4s} z*Y+P$bupg>*0~g;8#}4Tdi$>v#*0cqSmPd6iI^ws$^F+EYu}Q9^BOD<TEeuM>IU+;NgH%uwlwS7dlih>^7c`b zIioUiu`YT&;Kc=s6+AMXP!V`kqa{uV8OQy@=H>}=vs*O}RY}mz8g?ts%G=dK~sq;=rI~#U*?LX^Dp1Fv)oAzZON?07*oo;@42=Y&!jGsI4h-UQMK6FF~&0Tbj|B+aUi#9PKpdrm_WtK8MCGvN2V$A7?glCSup~Q^hvlL%lBpp9^|_ zIn9>6r+;@2fkN8^^Y}KLr3r9x*t?$}^22tPaf(n7!X`01)$IEZh5Qck9^xd9lPrbV z?nw3z510H(kiB9nJIK5Y!Eg2hAJ+jyXQw!AwQB@{a4-k)-Y!{BCR{t7j_AAwEYH31 zh)#&;bWTh+PE`+-9Y=C1Hg7Q*LgC0zDnuz#tlZ$r_pH-oD7o_S#UaYM)~bDs$XhE@ z2X~Z^q28Y}CTW%-`3fl-NPvNVH<0WH-;Q>JQku=8sivu#7>k19F3v_khC!FM3(*93 zLnNO;g(UArBvOYx-G0|@l~-H07DwE}D&y|=AXA@(%pksjEB&?9NqYKj65V zXQus$LZ;5aFJfBXB; zgxknN=W!e)f{wu+ESbs$SBD;&PqZLq>J=QA-oWtUV&UX_JQ`# zYZ+9j=kwF9mM8TLKU1FDP&IP7@}b7E78P1=8chj3SW}JzbuV!ut>mx|wsksFxiBxi z`E)ZA=*(%-_7~*R8Ui)*FpOHj^w}du3`XTqB$T`9sDxu=GeO#V2Fvru+FB9Zi8Xhd zR}dIyxk*)-f2PFJvGS`1tnmJna?sYNt#exiNZi4kc;`83KF zND+sgAlXlr^LuaPK!&!?w%>A94ZJ=)h$Qn7T4@xm!HGLF|c{t5CDbvwBK2RRIrVn;A-ZIyLcGchPB0Cp* zpvFA`6$lCpNR9vnGKy2E?Fm;|Y_nfzKM9gYrB7z75ZbE%suR>5kHd?N>}i#Gu|Pci z7t7gL<^|6aqdXmE@qB?#fmFUpnI(vxh#2`YQU$&XWdLMnpKO0y(>g9au=CY7br!8E z^{{{FemX!CUKm3uBL0c8sfVPY@k5lEXdX0KDo4**I@@AGJ9NlNwNO~^rZJtMQ8Efs zpvMe7!y2xn9i;)%f`T;j*r(d$;<^MqHJ%RX-~?DscBMjMdsLw5hI$i-bq_(Y*o!hJ zkskYWxdfLQ;JL-ahCvwGuCUo>W}>0Y{q*Vl8|)av(Jy0C zGNIhtzMaB$lp#79vd=!}y$fBWvf2=#2(*Tg7qibDl40rx$awS;Ea$1j3K6njZhx$l zE8Fv<4Y$=Q^eLQ8B_dr#jjNBvd=fSv;*8IzEDlAOYz5)hr+-MQ%+cPuZeC<*j78zJfI1W2=>V! zAp=oP_J#J3KMxcPuvK-HxE1@XT!pY`2B(z^)Yv~cBvwLnElh$8vVg;lj{NO^I-6LF zw-3S@j=ZP@mZQhLG;-LlJdey*S<0YbnqhNS3XDPzdVgTEUv2;7^Dv@KCPV5fmZ^vm zNa2B1KKp0S6Qvq^lR+urA})YfB@)7-6niY#7oQ(W5mwc7^p(uuDsg;Y(lTzdUwa-Y zH4|t)(ghqZguB88ULs(>-u{&*Tlp~2%BQC? zc!RK=)?r_2fA$KZZY`U=$U}xd($L+Mk`Q9{yvaeoQ>vls>s1)g}p@2g;a*;UB*+0L+C`-7`1W0T+rHk4QBcz&QBNLoDUWiQ?|MFlwWVL~s zAOg=rU(mio?6Z&Azj{txUDC;fPfM>v`d$_V>|eLv3Tr6Xi~VcsBc}Daco;|@qlay3 zNYaxM{?w5Dn|;)*H%#h-+fg%innuW!!d@pBa9QTE-zr@_d%!t1=fR^|8#G1=mK$To z3G$a5_S@}u>|_|0QPy2zFCO%MMZp)dq0xpvH5Cpv!66oay;AIJ?T_k}WykRELSMis zeI7d55Xf#A>}=9sqW=}KEH4NZcD#6Anz%Omo%WYBR(_eUb%`E|2NnI80%7&2K8x2F zNVIX-+?SX?Cs^aq26%u|j_v30$)z^?-S#&%*3nKz-9lPEKGZu#57M)8iNlad_$07# z56R^LydDnwy>A_}Nkag-~8y&Wlg;+yE_Vq(D zsNus-kxGX=P&$Di@!9X|H6$#_vel!yD6CUved3^>A<{MPrwa+5Km#B+(~uGpL}uD=SO9Or0Lste^w z(Uf>xi$h@MBM?akBVdPygM2`oyC6|<;;=u^3&lb&f&DH-*8|Qh^kANWgq>qEM|8x6AW*sg8|D}Bsjw_}gFTx6{eZ&8?eSHlX|F?F8 zPBgaXYey@#;T4Ksz>14sWGRM}V}v70r0}qll&9FGka70k+x1ZZ4Hs>Uz}AR-wfF=F zxOkC|eM;C;WJ42W-)_HQL1V5vLWmnbbpdBTCH*3Z)~#wlrYn-TAyl!q17!Ev|0rW{ zJH=P#gwTQvr-)7;F5`!`aFR5^M2_I+^|9&se;$$)3E>EI;+SLXGX&{u_D6@*Ft+-H QNZUh3D)u7dXb1NH0sp^~(EtDd diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index 9f33a1b00e0d7e09907aa58c7eba6b78fd0847d8..a1180c04304bf37dae6cba4184da2bb3e87d0851 100644 GIT binary patch literal 241675 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 z zCM2RxYKPi4_eFox2mFDAiD>xRr(J<5TL!3&H+gIdi=9n9m}g{ajSUhvo-29#d*G4{=jUx`s%JC8#du~an9;FB5}WiFE+|s zW%_NDC;IorxhGtIwRn{`J{i#PgUENn9UETmQ1OLGYN|2OUr2|rBFspev5prv4<~kn zXbGv|T%iRjBg3M#3-r0g{&yDTG5x0su2P7J=ybW2uSt7G=8s!@TZkXmv~V)r=%-KM zifwQzx!R0{<`^C==VSwMj|SY!mFT_H-&Q@hR!f!8Rj(>#gQ6$cfdru|m71peY*b2U zXro5!kqv;nxE!UZxy872nplslbh+-DB5wZ>1Y*VaUElDZ{FI z$fja+W!E`Oswp6aGJUh4O~-&rTOpYaH>l5ntR9Vl2r^QjJEY0HE3s<~7*vzq}-}nS40e>;yg|w##EAA5MEcL1sre9iO|FuqVY} z)E(Y>Ka*2pa2zu$S#@Wl^WlMfabkgNm+#j2j!kx)XvQ~Jc7AyvH%K8T7n^u>#cK|o zGMyAE8E~3umW(+XN<6wp(DE(PMK49^&vJvxOUM$om@IoCHR==aKPgHBg7 zm*W1^h=gD0d#vlJ5Z*RiEz9y`mNnU|cpsfX!%1aJhR6&aFPOpmu9kxHzO~s!n0SHb z#wk$G1PENaxh@}A!vV!B=0<5EaanixuR;>Ro)56^=BTs}l|Qs($g7nK|$`)9}@3pVj!#y0W zSy)yjaOVm_ft$Go0aEG*X8?NZYomV9vJ{YDD+KJJf&_P%tJxP@#CYvxQWafhh`%SE zFw_Z6m>ja9Gl5tY4>Q}*^k`IRdf@GOdPYm(X?l?7d3ti@mH19`lHPGS78I7Ihvu8< zVY@{$B`jp>dNshm8B;x5weFdoex5G9XL{DQOwT5u(L+NQVW9~ct-R_1Gc4Ag} zO*iwri7V~a7zDFY>FgA0Wu>q zhd*vnr2E>@J|`x+Sq>K-Jic-lNuDaUvy*J;e&ht!6dLdKs7%_?H{YAJ7d)dQEuM3S zy%H^A4o;DtV|HkTIzOk^88!2Bh^KRo&eLg_o4n#>eMZdE8Hy(!{5NS;L=l}9NyL>1 zA`RpTI_zx)pga-Ok7-IV#?KXqE(}Hu?c+rm>($(TTskhVW~@kwZ4{(~I!1w*2#azp zSjaLtTHama%(mV680i`{&p^HZ_hYZRpPws;RhNw1piQ56=%ow}sl1K$X9h)Am7iaZ z%}S2VN{*?D$F!P-ao}T^n0{@_(ncvQO<-G#pg18y4hItysSK<3h{bo$PQuMM?6M4w;X8I=hQ{wZl9vWk^W9_I zSyKD%qug0&`0f|Dqg$Z~*XN_c{`1+kcztL2%)YMFmxEq->Uq%(ma4ddA-?j**=GXu z1mRAYWnKOB>+c=ZP#CXB_$v<^lb>S|V97~G=RGeUMRyrPCveaZsI3HNlqT4R1oG;VY2Y)r&r2jY0rW!MBMEwaDzNCbM1+#<|~c2 znU_Wa7Ldsd76v!Ofv+&Ws2K4a-Q$T3@J=HBbVk|V@M;+ z#uQ1Q={%@)yz_UFW79j_Zc`ne-rccgfux(A-Xxu(NktIgrFEN~`rL|icFnP$O9CwM zr$r=f*6Z=dF;NPQ81(t$tnk5h{&w)UlfPa3?dFe@mj`?K+sEHU{H^o1pTCRwyM(_3 z{8ju7_#5(fkiSFx9p>*+{!0FiAbE^Y$1&IF5G#Jt65dI-L4xWCWI!@<#S%DBHYg!h z-#VyMDihCOk)=Hec0$H8*m8OX5X#3_gwgoLP7aRHvP2?&ZQ9qv?$@AXyy`Y0RV3Kl zHe#hy|7u5ZZ&>u&%Au>dS0Ga7zLxvv>i!j4{q5BMWmN2viDJ)5#TF^{E2Cl;PZayI zRBVZ2@Wb5b{)uAGPQ{1-sQ>e**!o1VXQg5*6#L~-v5O{(Ju?;SQS6sS#r91Udqyg@ zjbf}Hcwo0-8G%B`dqS&>mSf64a9u@O$n-+MlNyT8i^)HT!?V70V>8aRu ziXl02-*!$EyE+vkO1l2}QL!Bp#lAEZ+exvX8x`9=QS3`nv0W7V*-^2ziDF-zitVNt z`}uR<`V+;jO2u#i)ju;TwmMPl%2bTVllnuWV%sK)eNig5k77SPD%P7Qc10>ixJQko z&V5^%D0X=&wob918WmffDE72eY(K?5Fe|%=j$5FAxiDE}nu}dgMd{yq- z!bGu+RO|r7esWZ7exlfsRIH-dPmGGqO%%H{6&q0OKa7ew?zM%MKKm7_A5si`C--e; zqP9b+wu2OV|EO4ZqS(Py>=4C%d{nHQC^k&R4pZ!XqhiHGu|X<-^b7dE|o@s$dFPNm%qm4;kf*DE)T_}G`fRv z`5RnX5$V*w$)(+ro%*-9tfBxBF4cj!{B15TiOb*N^5VGsT`u>>rS!)2xcogXFN(|G z=W<_Mev-?*amhA>YENAL0hhbu@(;P(6_=mlaz|YL5tlpT@{hUP9+!W@f_zu_5>jkp5Hs z0%r8Iu3-FU`USv$u3w=07y1RXpV2RH{Y(7<)W6a%5dCZY0?tkLZwZ#K(Jz2}t$u;x z-TDQDuhTE^`$qi&yw~d&$h|?ofbAar0<$;j7l3_}eu37T^b4rotY6^t7X1RGx9S%N zy^UY###?mvw_T`G7g~T6yRIx>064B4ep{=e^C)4@Mwb z|0cnj^1l*2!oPs4dEl>k+<#q>$^yxhg1MB&cxJ9P1Y8kz5c?<=?bETbhuLT!>KPKt zJtXr~FUQY4QN6(R%v|&@N~E^hYY5b|K`DEb36_*vONZ%v6QbajPSetvMcYYUqqd{{ z43@MErFY7r)_^+{U@=@3>fd+GVXvSZVl2J!kc_2f6cn`iAxaBl=`Dx629u1Xx0!Q| zjZqT*2N@ANw^&MeBVa})dv$~8!+ zM!#DwcC~}hd!Zqj&F?EmP5og!Go9m5|g~L<>6sh1Anf-i{ zy30t3w%|jMmkoC6KPV?304T!~qp=tMxq0)P&=~JshBtuf@6yU-U>ET~4mWlWf|YS5 zr$RP!xBL(vWBrb2>+HAatp61W$x6&~J({Dj`RU|2AN}%Ko-j{VhwhW096q?&eF<)9 z-C-)rgM&*Hc!u+_5MvT_gC{XO!(_oTD30`6bELomGd(yGK-R1VM|!Y(kbvuSa<0ytoA{4^EN?aH7 zhtnqzh#RI^Yt>va(VlP+mW?PZ#~S?jZ&ttqYmb!~ZxU8YLdt6yXJ*(n=>eATWyi|2GpA4v}1O{rg{pt4=jP zQH5hJ6^dshGO??>EjJEJ(C*Msr&8FtHjWiI*8(dNy(O&ZrlZ&%xc7&A6q{6UWvBtl zX~>?uSSJb@e9v5K@=50X-)!>XA8GP4?Z@Ps^v5P&Y6fr@?E&EM_<8cZcyQs950F}u ze?e0pa1(bDQ&A`vNTB5h-5aKgTY#R-P0s54sf5VDok-?j7|bvw@H6*6TqHiowtw;a^d?Iq8X8I41#slt4C#ByD z7o?LuU}o6}+WPLuM*Yx^S)HY$?HdjNI6YNIHB5NC!K#R`& zuz>rigC)mB^(ulv6umj0PKPETlR&@%8(|<`S`k#DLw!C_3PzrEx~NbILP>>BS}!Jf zDDw73(uo8a>BJ%QsEx3jSY*Qj_{S7+u%saDcS;JSv^%MHe0Cd1Kd%)w2x-4?gl*mo zyxt@YfI~xErB>8%m@CmWTuz^5I7h>&9bTb{GRcrZ-mjXM(^dvD2R!qdlr$YI^a%tO za~emUBpJjhPHEFxGF3Xpm5@Irt!CSv_T9w*^^qY-#+qtTOH79E$5pd1LceUn!9#q8 z%cI@fhjTA>7@c}EhyPffki+ zrf_Zno1Q=|U5#8m0a`D#bH89`iRN)3mPP~f)0(CbkhV6;&lLEg-6r~1>SO=1)I;8% z?hdIQqU`ps0CBi_hk10;?mfL47(MSk=}PTb#F2B3O2wnv#1#a6k--NR>TP|}%yX{| zCV~Q2>N@k-JYYeeYbIS2g<)he$L*q9y-D+?;f>fp1XIllG~L^<0s+?Spr8xx4wo@K z@Epynn0=m*M1SHEK_%{3dfgNa+hs&RqAqnjCbgCm2Qs2PL$NE!$(vJlg(xK&9=(@l z0-(c+(@esQw8mX{BCQ%raY^x5xj(6u{=d>_2z?KmU$7%Aa)Dt9XBfl)gh53L-fA(1 zb^WKYiBAkhcpW@f-^L3MRVYU!HGLBaqSPhCX_v`N1f-dlH>w$_I^6%)uG=_0=2SR6 zSD!wFzU5{Rni*V4gHwx^2ejISM=q5CEWvbKj8gJ=|61kFF+pe;5gftt6$+u&6~XQaXZ0YAOFmakgVKFVzA=i>HA$Ui25*A;dwbWpiWy_^un;llDO2`taMtGl!k|T2U_$@? zLO?<|&r?N~+>tMsem8<-di~AF#zGG7GxUY-UXG1vCs-jnoJ=)@G)SrHGPj9}hA9$T zN)Q+k&->bo%?!)*ZG2IFAlo^LXaUnb3cH2ya%h1CHkNG@@z)M3 z$aZOj6&Sv)5Zr9|v|4pkL26aDk6Ilv{o`KxnQ-z z_cAMIcqqONLWfzo0OTD~L{t!5Qr4+xKitI0o-{7$NI7vKM-q6H*_dpNV}j-IhOM6& zL8&u)5XLK}(rB`hO*kYwWh|o*&R0|nP|+g{G;)WkYZ0j9NA}ygW}&ekS!415;!&AA ze{&vT+9G5RbAuV#wfx;B87eurNFj*e!TFT|D30e!ej(e<(diA#qak zq0a0eyi5KER|@~kl{(nYtE1WvEIn%H$^NepuI$nh+73GtVEt*~67G-7c=0l}603TD zy8IjeaGw0h>`X82+Vkp}FmoO!&bf0)Q>4w-U}NG^W=<#Sw-YfF?+{>}wB@zoM0|F% z%ckagVKYzsU;1`Zu64AD=|p}R4b_O7h`BF}MOSoA3^csdKch4a3pcm)?<_jFkSH<6 z+`qH>Uhn#Swk|MB{r438A3>2#El&*l-m?Cf1h>cQaX;dS>hW=Fv+pCC8ND1I7*E|j zV_zyjL60C0&M`0oANyd5f+2LJntAQ<&PzDUp(D+%{{cE}bsIvDiX0JYPqXW)7TDI) z|0x%{T^k??k7TpXM>>d3OftnM7;q?$Pe+QAr-Ig`W~g2tj%WE)RHcY^shYWqGXB1P z7m1WDcIgYo2BFmSiC;xWuyRODOra*cJu~_u546ya?yT^u?w}&jVAZ4XyWFhyDvLzi zEN6JY)0SR3oL{F|aXv0)VO5Cib*pjc{8ABP7|ZI@a2bLj<0<)VRFC`WeiU7(ynk_1 znuH*fj-8DR_A|^mJJPZBoY)*?f?&y;2&heP#LFkBLEaxp?i&G8HN^9IJtrlnP(qWa zQUTh8Z#E7a3^i|1ybaPlK0w;beA$_I#K%)~0{n(V8;+I5-zcYGbG|~9-SD9x_2mL` zn4;v0z+gKOs@FeLTFwBr?K-!@63{d9gd(Xs67HpI)TKJE}IZ<%$W;ldV_slLvVJo`no4MSShe9b-!s?bDkd}+Jj^zlV@g>kIV_{jMXa!9-!9|QT&#S(N#&}cRKlZWar@dEUH z&$K?dMO~=h9V^pK!KTCqp9?cu?6*$3!>cEA9+=9E&r_x#5qM8>GqFtgqf9$^KY*Xs zw>HctGX()y9-_wY0kn_eZV?50s`?+K2$&}8ENEJSiYnnuv=cV`d3YRO@ab(TAHM%2 zsKd`D=`zhYp%4==pyNIJ*q5DJ4lriF^+fJ2M}&##xXhdV z1g76SVG9>!&NV055W8(=AOKz`VnsE+lM?Dmr~lI=2_1R%Mkw(w57$>1C9=j?;oGsp zE2}k=(E7y-g_dx`_>n~YB+bc3b)sD$b++vf2RxemjNDr_l8;_!Z>W5$Mj}l|y~r=8 z^nmGg9~4#nLG=UG>=*bI>y@6v6A+j)Q&INdMYGDMEgqYAnZA&!FjpQ!7<)D#oDZ=Q z0`#5>odG{R4h#bDpFp5KC>*acL8K+&g)DvgG8Dgc}R!(#7#d(kV!8A zahij3{Tyi~76ke<=j{49B2Bt1TMmah@jDBI@|D+iujBa{$C7c1G3a%|i2NQDJS=F% zRf;P)BuyS8{=2esFBw)Wr0+~g=q7B5;SWa2arXEaF!7QIuyq!)Wn`K*pTV^;1yU64E8PpLm9#F5p^?2BL4}YmlXuH5ffZV9WR!dxp@KJ19RxJ=PazQQ)MF6nJ&$jBt^# zp|l0x?BZnqVjZqg&j~3=%(>urYSjM0PUY!rSaEZaNw!(EN#MT9;7;RhV5l~jW6gezW=j=6)wyDTq4 z_wv#RJqi)q?vaG&LU~LU@=l?N7RNy&)>eX&wagKEfyfvlZ^*b18QUF^$aw5q;0zl0 z+yB4NFhjCv`TWx`3ga2k?i3nkYM^4=L`>Qk9hXz+Sl*dTcg9QTxST@AK7(a~j&a(I ze+wO#Z90w|IcG^eKhQ~G;@k>5k$!hxQpQ|_oS}M^3o5rN`>(L#6t}KNIBGf3kc|_C z)+RD~F*@^mQ5TonC+RrT7bLwu)3^qS}eOrlRv=EjwQ@T*nOEru$b84^+6?tMzr{%|dm6#n$q{<8!Yc zF5O=(X&H6M8+MW0$Omi;vBR7SN#3TkTE%c(N0_d|A*iidR&58WZ92qpz(bPptPgf* zC0|8hB{0=;z%f)i=+QEMXN0Gy7WY&*li>z=1+5gH$h@V*c5Jqmm6(^2A_Lx{Tu`y= z*EjH^%ypaqCOB2l_yF7uEEp~#rSPJg6?Or@+2 z2LsqETJ2KOzL1>6{jBYkL?Vv zQ2_Q=>uL0tFx9~jE(QbQssc;mio~wzs*}KR7S|A35bHl;12|0=Lzd5FA+8r%{qw<` znY@jk^&A;%cFEx;w6SJ4*d14-{Spn{PZCHBY+FV=(teI0S#q_rF9P17O&NN`iQAaq zrh5v4IKCv!RQU6R+TxT5py!2z^L9^f89p9EOpUGWW?Tc+ne?KJvD zpC%ga(1#K#o$wmk@Y*${$UqCsi~XNr_UwqPWW&UN@lvEY;G^s@$0Ek2AK=i0Vyal4 zQy3cX=zo7P7-Cr$MU1|NZay(QpqX6-f-V88;w2i%BkXNA>Y9_|*Srs^H;bz@{%% zG+5y|`ju6pXi9l-c=rfNjY3gkaGcc`3pS*$z!IS+(5X`^u6S*711rlSQrrYUt{e}C zp?+|3u;58Eywl2Y%#(Cj&2o62n~9jT_8`Z)#HgCfVjET=NO{0n@}X@vPIjp23QFjc z(Hd!4|8?<-8rQIVun-sP0@V;hd#IJk;uXV^Q?Bo1npqI4xSmloW>1cfo_w?bLrzzn zA}?eRQp7W7eXBpTRG;%Xzm2kARd%w(kOhtuxowvNu8VhFImLAWv>R{bBwz%dJmyJ* zTp$+L9Dzh^qaD|1IG+G<7yIukD2cE7&f)NQdC&0Ri{Y&Yt09STF<3%PF5$_80`SNw zSU=|#54u=U38WN-8)MrJfummG<9~2)kUHhxfkhoWUc7#IP(OF;r#g67HLN9W?~-r_ z`Y&9^G5uV=eChh&U{$!XuDUWL;0FL#!>E#}@I%(gwP?P@deZbw>9yuF_nI1`*A$Ij zL%O404@bQos@FrBrq}#b!@H{Pd3(*!-D_YMho-s1!-{(aZsq@~19evmbvjs{X1)KE zC4!grW+ivrx20;hIn>eB2RDa@Z|QXfKW6E0b?6qf3EsXI5aADc?eNfxc|Zd*bnf8h z;BYkr1rNc4xNw%LJo%P$JpcXSW*zV8LOsE zF=;;W0!2Ow&WF;VBB5r$$1+$yo8RDcXstfeaOQ=h)l{Ltw%N{1+2yq4;C`Mlt#2@6 zJNl0nE0_&ZI{}CpvER?6_jJ(yj0yUF_pW-0F$KSyO4htJr{mYu+Fx6NNou(8W@R`a zc5O!L_JH5};r`$fCj%?R+=_dK5PDw$vWu^=dU}Av2VPUG9FW2Cj_~mGs*9lHD?+y# zRQupV&HTuD3*Z-c+CaTiU36uKtncqYUWERpPRvsQE6xGB?hAW6GB9H9y=*MT0UT#K zOY@6jm$AMv0h8a|-r{)|0u$n3bsn*RKCJ_($>sSaH#uz@{>9UtVv~fO>j-77`Pt4B z8pjAPaX$t~F$qu2#>JWqHr{zQ=**fdpaoQ>y|=M?!{XvXs0`Evve;A3uWRGiYx55D zMOiAUo)*tj75Yqr^O{tw&QnJSl&MSh6eV$@kl_SOR=kPNFL8JHN_?GOf+O0`UvezM zKE2$h6~t;=1QT>`=v}09pr>Q=xm~r;>ZxJ#`m)xfmk8c$D+1$A`zOSLF)@cSY%xbS z#>ghieb%4pqKq51J_3)%O(x~IVL;M}8}1{WxWRp?!XxrXOXDZteM`v~4>2y>bHDuY z1q-jBCFYK)>BQs+|AR7+JXL7zTdse6SQ9>0t$`Fw5BbMwXYcu@8Mnp=2^67~4XP-?kIds_2BS|8Bq@x~7r&Q38;%ZP$z0%aYC{gtj zlkP>fFgL5gKZFjs!BXd?`Z+N;QbID2SyuixZbNiGMBo4_ zOZ_sD^N}FuKof*P!X8jOAr+|Spv@u1>KM|oFr!naFm83+lsy}rYS^rmr2$4%vryNh zOq-mrNYg|95qA(FgQW1KOSK|&M7fX$Jq}*(|7;;K<=LIa1;6|9&jKNdtH#Z3+eJ@~=O&*Y|3!lR_G+N$Y^53OGi)`4gQJ8 z3?AgcUEGXpe>1F0T4MsIz1&UHcvdzT6jM(7?-6#_MgJT0@IB=K;#lK>4mw2?$?FbC z76it8#F)-7XeLKz7&OzOGYm#EV-FAys2vo;o|DiZc0j_ag@X9%mW6OSp56Ec9s=U( z(%ym&R&Uhu2SP7=^E0d-ek#_ZAHLdmpLt)$zYj;5y#65+2Fo;9#a~~-5i*EM+P|i} zjUT4@M9f3~-!i-E*_y-|W(e-XB)9CMEtq|JZh}U6l81(|pr-{48zHU`erXdhR;tj| zphrPR__%)1M61)i&w~V}=dE@T@HAQgLCxwF9W;ofw{?gg`Z-3AM}Uc#!jZ?;ZJ$tJ z2C%$+XtmmfV^)6F&uhJ*dqcL4Kz}5>fj_S5u;rgE^+ec7o#wGe7pk%zb_)X4E;BM1+Ixfe?Kce)e7H*qAyB%#_>B zZ^u^xlng~mJ1YR-oG+c@KQ192dEZq4M*}n9OBA$~bcsW+*TtC^IwAO`BQX#tWWdC| z3J637bKG2=7dGg_$iuh7P2<=jHS`q6-aJoRj=fcSYCq@+R79<6&=Dc$RZ2OR-Rtpa zLwu$2LbwzHU~$B${0ITiA31US2x9`ql(=`)h1-L}Yx1MSt?eY5Rens(sRbyAva`Ey2xzdr+O8R3dNCj&~h>@ZJ948S97;p^L3$J!%%;+uEFADTHy3EEpKW6p=qF* ziZ7ansQ}8Dfp|;S1HtI2xt5W`JN3kSV2F&HM3S*Nx?m&$u1^L5u!44DW>y#i9;D-l zuJzIMJnHF@E;s=mbiWVnw+70~cCg`2pTRGtgDcz9xaZq|M3`;t!7JZLW75n58N z{jvFOgt?~^84AMNonc6DPJ=Y3xV3iv9KQq1UcylsJfewhp+z0--m1LT@lr8|<25*K zOs?UHKZHmHUpIX$(r&s|nl8sTc^|vBduzjgqU+-`oNGzr(&lQ|_Lv9TxO~i3mtTz! zeWLvgp7DXJ8@Yx4&f~@XsENq=L_ou64*LJSv8y2tgQ58<| z7QOQ4N@}|#I`PL&k)iD?l@F%Urjt-wI<@ka8A7eiKgyBjXW>tBg&)n&!mZ?L=}C2M z=N8It#_>cAw*69nrpHDWXS^kXG)`WLy_gT7sfmmO!lu`UiaI5D;-v_#KI1|S-LcXV z$4Z|mN~}7+o}{@_A(RWF*A!!+c07ucFsTKI&P5+7DsQSj%db>Ef`q-5`Vnn=q~KYi zy#v$Z-$-*r*kH5!kqxeSN1K*{3}o+UTZy)D^Rn{jZkTV8dA2iL)E>4aDU57Rr#mby zYnNNj2?ZdHe{p6xSWMLHm7PckMGy~nS9Dqlp*XN=6UQpP2*PUBiDieIuvwhwHMiX1 zZ8}P`GhCv+Aw@cAw3G+iVX zW*J?ZdH^@h3Veq$JE-Jt+0uFXhA<=XRL}7lE#ah$&`dEI)e;x?+@4`wmoOR4*!aAr z$zqVy2o* zbZMp5Y6STh*e$oh6*a$*bt=AP<1ywe?(*(~!&M#JvU)e+1WzzNvU>#zZyDx81tZW) z#8n2LPo$aGB05S4b3{&jUty8KSE_v0%tAVA<`E{zF)Tp*;euWXGMHEiIlY%&6X_{N z>=Cw>chawDw$cuGZ*FkP^Tmp!XI%qq#}9%M^Q zf?tJe;DpwNHx!FcnD{ApRt3*886C`7Y9v7tnabw z6w!6GG|Pn$kviHus+I`-09%5~P}4+1_=Q*11{{P|@;7El-ShV9*{xoY-ZM2zCKq)B z=HEPUzeqScwPR1x$UkT`f=p=YbR!6k=7AewN5Oa_>|kN^VjkkC0{cAxLrKLp`4y`H z>?uW^o{+8w;uUHqXy}|AJ^{b=O2pA1$r+dL2aAqvI>uz;ItI(#V^j|c!LIgJGh$w5 z3GkAQ@*x&+%421lHJ~>U*ldQ-94X1n-AxlB$x&w^oF;ySq>o^?`UJyc?_VJX$vU&6 zO3Vo1Kzj3TyW&jY#z}1qg!u;&oGFMJ(u3g=20u?>uM1SO7o6$u*-02Aa`S#)G&?>8$ryRB2FUPn@%F@ z-#rb6OrFl5s=CV$zI>5g+;=Gv)3OsW6?d)ZID<2x-f1)!`k(AuPTK~^^?3Ngg;wx| zELU|$Arxu*x0S}dnq<`OwAcvXxtTH3>yjfNTk37i_5`_$EwjQ>*N#s>JQ5v zFQWpz)Rz5E^V_kP7#iwN$h*!DiV@|AK; zc}F}0@5Jge{$7|0RzRoT=Om8O?06+a>eOpvj|`^8<`M3Q4qShO^742{$h8FfiF#~E z8Ae+nggIv#k0FeWPhCO2Jkj`$dwfc?*3}@dIbUa{PT1DY@VTdJtQ$`kuhnxce84)i z@?)l;j;W9B8Mc?S(O{ANlK(Fl&a8{`++NM}o}-UqP;C0x@;!l6=&4FsBn_BT<+z&B z_edsjgs1>qq8g#!&;S^sud8C7GZC;!0wZUO~K#`1jyBC2wOWZ^lk<} zBlZ37ME@2aB)afo(wluLi}~Hx-ygF3OQgz!?Wpp7^3Z&h5Y!oEEbCIg+v?(ZC~sU> zd?LELipYouk=<7Y_=L6N^?z%d5F4x=(?#3$k0Hu4KnwgNmyhs8#1V6~(M%O`>x+1d zq9hH0(cjeLLrvB~DW7H62Tm+j4$0#OZE?Q0A0Y({)~RDUFRvOK(-k9B--6~CPc<6Kp#3}P zQ_~dLN=Hp4v*3g;5Gu2QmQ5xEn~Fnj*)DrVl+S57Q*x$Hk>#}bd3MhF#%6R&JFX>REB zdGRy>nE)G9Vvef1zV|ZiTV8oti{$L~06Sks%YkD`Z@?Ps`O}RO~)k*7NsGy96N8qvNZM^O26J{VXVItgS!e%BWY)0a% zHDNOfHyE3+1x*-(%o8SyHcwbGUN%szJz*&EoE{bv#$u1Z(}X!8hBtpx>~dQ}X{M5+ z(L&+`YPke8ui7)!98)Mrv^h$eDQgO&Gt7vyT9!<>q4%_?ixE$7u5X*l(a(z!V^n?_ zw1|2uWIG>~Uk`a}()#}o?DOdPI`N$s)(M3EED%hsjdkS$g#L3iFL%TVz0+u;{*|c= zZwn~sh34HO9_s^0b^(kWBHG92!N{dciieZsq#{u9D^_k2WnFGrtkp^wrDIXfoxSA@FZy#JFD$C_4ra)xeFlgsJ2_P zK+Y*9h97Gd&st^+UCgm)V|UMxjzqr9=r{Km2I z!bx#A6>mj@M2b%~^gY-2?C865plSjF45gm^I>dzXkW(IkRZs=?NsgWddg9ugYE4wDtHXb` zCwaPcE-_9B`J|E%UW%bEw??c97V$VX3;-L5k)$!d>Hnbd`wnrxXSt`69>64RIxNf}4ywmyC*>iF`5 zcMaEXA+Gg2o%+?!p;KC(f1=sHMBuw)2!$%KW@1kJg$sM|mQ*WW)x(W1RJfSeOiTZV z0`yvCupzKUBq<8|V99Xi%#rd~{0Av*yd3LTlRcQ#TahK)shU+rR8;>;7!&+U$GzX6 zsl)M!e#=uSW}_fjC(ZuzU2rMYc}ksUuZk7BGhp)!o=rNuB)+={CnkQ@ z>2^J$Cm9dSK^=|sh6Hdbdq9n%M!XBhAKlzrQQd;FDMQL+kbvrL<9c6^t@g@Pue)D| zO|;x_QTS+(q8L>oVowoU5|0z+1N>*IivV!n>`|FBWPeE&?@DnH$;8~LBYja8HF2zG zwWJwLB#B^APZM8*16GSEQTiRk0s5@AL3=F8iB6zugp%el@_Prvq+79dlAgu#?<#1Q;VIkH2glIEjCkDg_!AjA+kmL?67?$;mg9|BZ-%@a&;9g;+QXsHS zD1-~hIHvHw_Hz~|<2f94>;(%B@d7B1y*JPyRz%abZaQ!qwZFShj==N8fV~;)y&PJZ?tSXoMV?@#Yxhst2|o(8%T*G<8?FwV<5m-pYAG6gzm%>l`;m`lS)PkZ>cY!ilIjS6j^kErf@#f1&O&1RLtx%+oAw zifZBJ-qo6JO`XT(p@7Fc=cyo^Gkq~=pWV}yk&)W)I%1d2jm5doe$u@CDIqb zTSRYF`R&fh?8e`(QQ(Vj6zUo3_M3aSz|aM<`l2m zP6)>tF^hJ`OmRZQ0XJS~lb?fDf!E7ux3Fe06#Q0RWrrV3^`+}__Nmmx>f4_9VxO)r z;=0;PFxzuio+A|rb&1Pk%cAeEA71j{@r}Fi59{~~0=tuQ7=Pj5fY4nP$VGhM`reDO z7Kna+d*w)<6YQY^lPZ4hfk_Mq5fhsZAdm`U|6n()VzKI2MAO^7p_#9kkdopA4 zI$)vo=`94cv_2(^s+3Koir46OSKAOk#>Crh=xtl+E$ef?$PbmEv06|l4D|H^ zIo4f#40^eiq?m}EorWnEEzHX z6n+T+ISp=6$?z8kyJ3Wimg+yt6tPe*qQeDH^cVaMDiRuF#&yCn3TbQ#nOAWxTa;%4lKXlrV!mJ|gSw!iw#%4#>Qgj%o=A0yNY& zuY7w!baJ{g}=tLQyfw@9=JkA}!{ zym&+B#ikkzTo>V}m+ksa?`XLyPAV(7m-Fy0)L*S{>5Cs@zUvKB;JW1B;J#Hutj%hU zRPZh!Dv)g#((JeiPRDh$t0sp-#;RrysK1+%|UK~QzQkQo^O|%U^n}>3CdVaSl z9B5`}I}sm=&~1bCz$13f2RotPYV8yit||AP(ub)OXZh@d&+%0O$rLwg81Yk8n4Ii& zHjYbQei=NNx#efk^yw(wTZT)l(k42QKF1gvx{8pPi6LYZvKz5V~4g zrzfx*x=hX8n}N`*@Nl+T1~1^q!oyhp+Dr<>)1OB9>;v#>D5l2UigKi%I2pkKU6G0) zyn%aSsdax^b(DAFhYLPEpMukS*2=S&>o-I7WSukz(DnAX#?RU{(SyDs`uaY<>$==W zzgW9Z**3D=AL!L}-i*36V5)iYiECWqUu>%n#<{=o#bZymD__i~Df*ke`iouW6W98i zEx|E(w)9i&@JhoCl%|mMnr+vW9 z{gw+MjQuBlaHN55rMqfXM*(R2EYc?_zLb8EnQmazuE3}rfl*-ZW&zgAp02vwf5B2@j>qQ10zHd^y7 zeb+x1vgl7dnZBsZ+6xHymlPe+SqXj8ARK8?YQw}|Fnz6Q}@~1aoXqrqcny# zxZ9ATy5{Y}{7Tl_&7M5w^0enm98&4hh-4u;i+-}i7cfV8q0*(7j9~L#Sa}gYC@?qj z11Em51hZOf);y%EA_F8TiKsv%g~E!aDiZ{G*?x-2u#Kk?ouRT327s?A(o8Kf5GAjQ zI;dGOG+S%Ny)mU`wKt_^gT;85Jui7(2?AuJC7he z4#qESAmEVDFo_!n3n-TLyMu{-@LD98MMt#_X^ml|I#y22KY*t8s2q0>vp zYZ{AIoKgV>_U90>00aa-0@8JgGo%P4FC@kWT%QtS!=fU(Xs9%?mFUT0Y$&{`<=)A* zr@Og4+nWWhCsAbzf_myPHnJd}G{y#Aqo62aY*0{JF*Zxrlue9{gI_4-pr}}ytxD}U zNDFyrJSk>}2X@f0*(U8bP!v+`gjf_5o69n|D7`gA9NFAp`fQ8ioj_!Z!GVlzKU(%B zPeb%>KFr>#gB^DE{*a+bp0F9wepWRg0fi@u0y3R-+pX8r<$vRw7F&`VuY|$szl`-` z!7Ws7<~@2%F(5Nl3$R~S4nC6eW#??mP5K3k-*f!n1$bm}^?AY}l+Pu8&*5MQi`7 z8R&`f6%v@4*FiQ~ezt_Rmq0dmVzl-W$Q{+(Bdld}r~53oy$7q2+$^@CUYWy%rjbRr zdwmD6YtUm%p{%E)$N5(V@W_mDG;KQ+U~KE~d!z5oP(JsGKxGP5#k(}xn#x|roA>F0 z`m!xRHU+F+&PV}y+NaBmsdra7!dKy{_pL;@YUmS8MUGePA}O>j_sojoRl6x(^}AP; z^xKRb5TD?R;MS}15>l&WL}}A<3NLO#e$Ab-%4qjVB4>Mk+!~r&JPYrTp8>yk79J$` zBXcTnUII~!ijnB1wRE)LdkIw>S6QgSsSv8Sm&e8fS9Ok7Fgq)#g!%z3)hk?YVNE-L z<^(uAMGRWowML%g5EX~Mr=-3~-?M_(-m5A`MyF`6jY1Q1i(r4UVC1f5_j}Upn&zfV z?)_tv`@N&d-4cw9@tbB>ZBJK}Ok0}{M*e(CAKJBPJx%(s9N5fhUJjJ>@qWZ{>4T{y z1t}1HJXmKOVEFyNSWwAP^3T&=3G^9oAGdVtm%KeRWKyhzi3tT zuU4g#s9jXhQro3s7qObvNSk|TUpvy8d+1)LjHY{e-ch8Hb9+_WPOLDxLu78%iDo)V z;-h{4(qnmu`;@4I3hz1Jcu$FJD)VWIkwL?9mkwl{@YY7Qs8tM)exTVJG#MRQgU57B zfMui40Pu&8NT;>&!aEAt0C+>}r~HY<1)Y0Zu)9!u6?58%4o-N@8~|4rzzHNFQ69{I zuGvOn>F6cKd0>F?sV(q$aTh~u>e&)c_dRM|v zSC+1~6PxMBm2@OKIUJk8yd2S5$Bm>|XQ}CV+4op7Nld$O005iYn!B21fDEFVZcvTK7m|~2cr5HC+My8DgyhV9 z7zs}003HcWjqkBjc;Q6pfFGu*Z>j2$olLy7FW_B_PByB!s z3EB~(8=Iu8%eO$_NpgY+Gf|PvXEhTc<<377!NT%P1Pg0*<8Nvv%)&eq0KJ(BaWNjU zF)C)l63$!YSqk7b0IdpIvHRK8f3;M)mzMf#i(WLuMOD@w6Y2$Ed=jusHrlAOFUmZ>CWwtZBr&khp*= zt5{=?RpQ-pxJ9pW{V=0e-}8y@2yU6l3@S7V8KbL)%y0u>5s#6X>W9pl`V*OAjGu~F`a*{NTu8Eq-Z3`N}cLuG@{_BTOowln&W8AtxGa%2inhAy}yI4R5nZh-IB5&FquV_&uYB&LrndmBhQ$!Wi>JGVUELhDf!u)zK!#Y_3^u$x5TFSihvoMLoo-?q>NO=qUdr!bvbZYy3T$mC|e(6b8jG_&7t zzek?c#5|i>oyI&ht7i1AS*70?5E2h|UJb1&!Z9TiHL+rzV-q{(#@EDBfGHRAlsm&) zw^2^BUe9B(&#F5iKox*cGN*_V}l zMzK@!Ps0I+f+`hGr27zl*7Vt6PY|071X;;r!f(cFofc|iQV$|WQ_}z}^#IM7$kX5< zAVP$wkWv$xOet?QJ6{H_!qtrBGUPFQgswBmPC`C2ey)@RWf=14i{gPDsq*kOhJL8C ze9v65B;QD8yy`{!zwA>JwB*I8j0Fv&O#Ay2BhFZm{iVTtwj#oL-KBxSTIH-h8xH-s zBSIx;j?;3&1(3jymd6BdN+?2@f5wF=w9JavR3cW&iwh*;F-*``V8Y&-naCs#lW^i5 z%%H+sM>)UeCW0Ip!(KwRNq)Ex(dJ^mi@lWl9c)u>$PVitpu>EiOQ9H8M_e$s@;@-8 zDp!^8b+HdDcKxv(HEd*Wt;5Fmo*{}pv!nbdiT7N|Nzx#lHSXetN=d0mJMHDF$}2io zdRd$S0qTh7fTw+BwS=cZSWf4il9AMsv_&Ka1S5yKqAvp6NJ2&MN*zpvF}bZ;DoY>8 z-3brMyf?F@L}Q^hx>1d1EV)?!hR*W0&oo{_^S}wrzcBun6I)E>f3f18R|#5KE&i7O zJsJN4wItJEu10uSax)G(67Nf-;R3l38>*W^GKnrY+Yy$g;;LRf?zvGyV;7l z2VR~PA3<%4>J%ffMj+nicVwy*qn%emSM6ZYW`k%)VADvHZ&5#ekDdG<=qaQTq+h5n zYbqr|sDfz-we4n3?NB2;5=kw78R=r>R#KxnHM9aEN6VeTBb@@eK?I?bPmvJ6Y{E^nAae+F)QGiNN+}f5IHhiCkZzL@XaOuak-|L0cd1V$l9cL_D%2Ek z^8&hRA;GTH$yAUVCPD?laSAG1P;#iW6iB{mIZ%>Ah2Z^II6wr^T)HtGVitiEcKemG zI30mdvzaZ{KHRx95G_R=5`1J)1Pt-aH)%#$T}|_fM3mKwr3jvSp`0H zpuSF`cl}hglLF|Kd0#kqG&g1mX@-+aj+CVI!z;X59#d)Z?vMvmOzT&_xmeEYKtexp z;k~R4l|sYE%TvS7p^i@DE8J;8Gx1{gYNOuV0Wa2g=#Hj_|0~|f-2s7*c3GddEu4|= z^Yt68O)_@(>NGP2yxkoTw?3_tC0Z7?`*oU>cseWuu%~lEE~cnVy2&A?(RInn)q_W&W=haflc0d^>c;gifEdQpAyND;@Np&ZWkrZ{PT!%)V`J*6 zf$ajeuy(3dQ5G7?3pieE-iP$~m}-AjvJH-h4bL52G}|5?p4i)wUjR&0YVA&<@v1x} zS<<^1wVy7ZD}rspRtMXBWY$y!N@p29bp(|&He`{`}d)d|QNvO8nIoKAAWh(+- z5RIlu8$%hmZM6Rs=xL7i*Y2IiUwtR>;9R}-Rd!qftjD~-XsBtXpu3ll9Vm|8Y2o}h zd-<$sPn2?Dv^Ur#{??5l60kEggQuS-5N+Ny<|Ckmln}3D;-x1@2B9d#Q)^Aq8OEN% zNu)7{yi!>>qrN&#y@)FCTA6p)n#DO@K}%YqUX>DJy7mq7&}U=$2IlG$t+=7!HA28n zKFshjgu*~>j9z)nTky0gPAAJE(pv-J3xyP^5eRaXvdg4L85RY-^|^(QIrWHnpiUO--w_n1W7HZT zQ7b$Gu2Tq74)fnDVdES6zOT8V%ii(K8&^r|sx{6ltXKp(iT1Z<5PA2R5tND8S@lj; zyR>(8x16pe@Lc7$2Shu(xVg7$L}labIi0IIM&(=BGo9JOn3pn@rI!Nggv5dn8&<1# znkI42PW{f3arqJ`?xcsn9TttqF&z#$Kve8q$Z{XQqKS_SY0x9j2^Eky$=h$r6wKk6 zaM`YaDi||uST6cVg~hy4nI;PFyCxOJKZRg%VWylXZ??DC`{ zm}<1S2736@wWxh4%y;y8c}!27RpqqzmSx{c5*0BPtHYqzz*{W^(dW|!Nx_}fK_rsxbXDA{b1&_kAi z^o9cRh@5IWA0&zIuzSCDC)@~cv4|vX5|=u*WUr1;RauUOz4c^0`}I)3US#gBK?#dM zwkbDN$+odO#n?3QawdsVbeim~kdFL8a2Ou2{T|BL#UR&p!UtnDwTL#rFrl9?%!-BZ zHEb1NttZSq`hYOF6Bs6I#fR%AE@6zgHxNAWMJQgNOnN>$NipH}`Yc2-#{p&p0|Xem zfF>WR8Lb-YJaQ8gvo2%{!jcHbSvz27nrTNQ83yE(>3)X_@k|6)b3e4ixYV%SqPCF8DUDUaYt&Y2<>ESs*f25f=PqHRne>7C| z=Ke9|fbV(lar11;g*I-30n7cTwR|r1FLef&$sq7A86y14Mlk(KdD#?IK>SdTpNfq(^6Mq1n#46WS}7ZiZd-9cfoRm>sWzI@ zV~%PP-zUF)xektLl1o*jnb*H9(~Q+Q0|vRI{10gK(8E-jIfajb$y)%!*Wx9dF4$JC z7UF0Jz0(3;vyl*Bk%~pjxo&ja-i0gr@e{xjhHK`KwXGHe0+u=<0In{JmwmchLD;H5 z@^hM*TaL_JY7jBtmYfDl)_^D=+ZJ!{0$x&sLX_9ykmHcZpq>C^3nHUq8ZA#2!hMtg zIps4X`Eo)|jcttK1J0JlvXPN=gcX;>_>{#+z5$Iyc*lfp8HK%AsT*k&E}fC8}(;xaWgf7_M}j2dymj!gQzfbQKBW=rgg!IzxC>g9Ag2U zaWE75^<-UGsTO?#BdK(%W#vmD_m0l~VKpxG4UGu*^eOxmXcqI*L9FEAfmiTQAMbDzxd=3W-wNH5vW z$K1E{k?q>JZ(yiX|0n08fR^a4vaZV;aUe(8Z!4tt_*j4h+zzn8YQ^$`TJ2Hff zF~C@9uKCHi!7?TdWz;g`>lv6ykif%99G)JoW4AWcvy+AQef(;sYT{q*N2X zTT2!)e&3_K@m5ar&&oXqi$9Cq<<|4dQL0aMn@_H4-gC1Nj9FMA zE7c513`ffr+YpTrPljfES!MW8rSMl1D;L z`H|6(y4IAPy(E>FGXQ$(3CIDG!)?kRDdEY?kSPlo(^9_yCZ8#XS^A6wkbU}>KUMz7 z)~CDq7|8eGMH>5ngm&7N1X;fWKj`Ahf)Ysf{ib=Ubq%m$P4v3ETEhzDXU7YB_?dKn ziopPNQhIl)OL8w5XPBm|^d(3Js@n?*@{@5To!5o$&#6tx^d03&>}$VeO8KZFBy8NN zcJ+>?tJQYO$F(|AJ_0E{Zl!!wU2v0$8V2Axm5fq8;yWW@pP;zU8g^Lp=zLv4WOinJ@Nk@yaByH;EcqN z7gI`!9}(HDAuv)Ue%!7hPzRsvH9b)q@Lr9+AXhJ z+*^HYI zsDc54CQA}jc*1)*|KmRNNEt`#qKmQup+q#o6+={yTKOLl>_{a|F+zj4t`8 z<@8~sYYz^)$JfckjSuAbEGISEBfjEJHi}dU7uc@a<*k%0?ZqW5ZB(g7wMvV>OkGHq z2BTtG7%5|~xEC1{Zp9nK&F=I~gJl3Cd5n?7WsMvKXnwQh}DML&*_-NEjRf-12`^Z(i}%cw8g2lZV?p zqm?|+^z4v~szW3$zJG8ajZex>bx3#{o|ltaBoxLDjxwV=_>(qzDKX!xE88ORFe1z@ zYNg5yap_y7ASGpRbB)JS*W_+5t&YH2n{=cc=HhaZjYV*(>q`F@~`>dZ-2$t{vXeM5(@V8=az@nVp;OE-o!A z;r?EEJin``-y|ydCK%&hDGs(g6WLl{Zk&JW`w0i%~73kEeYj zZdeTmW&IX)L=}XCkB)2~joqnm=t$MraZw5|539!F)ac}0Jb{vtk1pv|RT}(ib9{h% zj3bU&z#IPdqJFE|em!mPu5}#Iw-@!>^yC|PvQ&`@=Q|1}iwAe}z`CUj2aHy!O?QNU zN@k=K&)eyD(_kqC$n8shfdGy5b#VwRzB}CX_F&UnO1m1Sdo;_V$vxkkzNB|wvGN_Z zQdn@1E}J^z1qi8w?R&)87Sz~Sc`KjqFd)9UsNb$}zlL#}NO*u4yKH4s55|ZjJj0nt zMy=>M6DMK-G}*J6{lcKDiKH=R+eC7%Xo#fMZMk+BN3Q8$3lGEYH-RLY#k^_8t4H(% zm3r)vDYYT$j6$GB_r*Pi`>h)8U$+1{8X5qmBcleq!ZWHp)7nNO^i|bgxvGYxcv@QO zRqCV^FIT^{t9~)AT;cXGLjl%;7-}wO;GuDxD|A%Xo7j#QJkAgrK(-ZY_K(Nzz)9ad#@+a z3f2AvIt_PkDe8Id{+vcu%oY~7`!nvA`ki`_>rZnnMRhpP>6CJlL`;>O$m??dU*G$d zqF$oppHdR92#z>HT?V~+nP-2(Gt9;3tIP`bf6Tp{w?4j*XFZ;Mik{4~C`8yNPqy*o zk0|BHJk7AS{mjlL9EV#Kn|T8lzKXcBceD zu_tc#*h$Zg-hR4pC@Lpw(5F@U^oQ;ffq3o{8-rVY(q4|#m3`>p3fJr4y#pJGoLZGD zyV9-)>BHqf3r8SawMNfTQ5lUb#(jP;+$BqNw@R-ePIjldh*hE+eY)`nbb~0odX4MH z)g|lLvP>Wyjj?4O$%81%WNfK5dy+g-h=^zap{ybcm;i`>J2iijn)lJl4z7QnYX%V3 z1wS(MagCq>yrB2SqTWf7-=j#s8mP!2JOJy2Nc7%T)Spo-$tToFs}p=H`g@c$SzuE? z&aYw7Wvz>Q3_ctq9a(!a3S}Q6C8@9eOV#tc)Uz6cOJm&K8Y+{*u2CJM__3n?E0zBp z%Fk&1HZ{(v^t{>>JNoS>s|w!Wie97AA9qE^CMtTJUj5dSRfO&0itbkF-*iQ1@C%N0 z>GgW|8&6i#OudPUfwv&l_y&FT7++bbg3Ciu8sHoC{MUKjtM8OI268+F;p*f@2!9tZ ze~p)f=RIHdySe`u_ss<1^P4^q^&X0zqv#XP0lIU+Cqp1Y-h!F5>Q^E(*SZTKva?^Wadu&Wr!d3;f>6mM6AW3|bZ_ zF)40Q|KhVeA`%&2oKK`O9#1&U|B=PPB&~>rk&@f=e0}e&MZKR6{j$aj&0Ng&FL8a; z%=HrPKEfSgkM#kr|C76YX|R#hk+Oxz8?}>!j}tBOI}{^2A_>qU+cb6R&UiJ>5T2?z z|L0?IEN_PA(Zvs|i%n3JctdU^Zxv$yD`f|i{Y8}(o0FI+SKiFr;bp0Zy!v^MR8AJ5 zXmF?VcQHl7T*x>%_yo~-kS2bPCWz*&4{`moTyx~wHx>0^?jGfit!T2^SAK?THXy>Q zj&S!O?noSBv;L>K4(z=A2l_42UWUUIXO7G za!*s?hNxVnH?kvAHR(a)xr{bYSL68>g(y95JeeFPlQknDK|8dtF8l8->Z1(rr`!Vq zL;C*?IzSyNnT|Qmg`yF-1QMbzi3zJm!d=D(AK(Ka7n*(c205O9Zst7-GQ3c76i+}W z+fS)Zi_&zlwRr&*=0-Q!RoolRd`x8hA8AKkp5fls;^z+*^{?sWBfNBYHv5Np_L!di zB+m$B<@Psp`xClFOW4=@{$l0(z_W$HzWO)y=3(9hEa?uahlDTsQF4eP@{NE}GUaF5 zxD6GaRsP{>|CK0Yjt5|gN6YEwJH8ao!y<3qz8)nw^i%= zRI7rEtdVThlG5N-r5rhD8`4#zirOUQ=*McZKvE^JkbGJK^JIeNoRL6jn5nXSv7klT@k?~`HU`UX|jYO-%258FxH z(0SA+sS1!$bx`WlYN$`=h~f8x;Z9b*cOG={B7JF{{2P$durp~sSSk(u2c+x za!!CDg(xci_eLK;vb~;rKDb@~zP@^|zDoQ99ljN=6fA^i5NMf#Wb_O`T`KZyKLe7N zia6uhL2j_2Qi1AHUxCKw9r5``+TXeI{g5DhrT(P4`=jozNNht&dG7geACsgB81cS| zC0ytsO{hp?d>I#(Ge}i&c_;yWIu|5V;`@sFarNa#=nG-}^&jZwJ=_?u4;J+w>cJ25 zfN`aMjV!+P#xy(B_*S6$_DpNpT;Qrkqsk`yuEs?(sJ3<#$s%Vya5yYXcW{$$m>(0q zZt`f>%F{Vf>H)4(77N@v8cA9{eB=qO-YIgis4?@H4s+&jMZi%%UmGW#NjSv2qyY0{#39Mj6jWXsUH6VAZ&_c2z?m zXOXvlgRoi}T zOQ^ABscp&TosK?QmK_VwfCn;@p1}mAMHnO-j{#vdjBu2U;|OrT35IBb6Df&QqX3h5 zC>PZj6AT#81ekb;NtBoxR5h-Qs_@Lz)G%Rw|Nq*1-*ex4{UISfTobqT&OQ5_v-jF- zudluK+H2oWUD9g*luE7DjyG0hS8Ius6{UyU8|ms#LX>Q|;lCry9P07I3KrSZ9G-k% zHU3`EfIY0*ButWrvkZF_fQCgP1XtPB=4H@2fkqWxCe6yv_aH2*NHw8hzhCqDb`8aa zE_=BBN`QoOc*Yvv83e=HE%n<0Mk<#1w&%9`jRu%T2bWsTHL>jUdi)utcx~@Q@3RM@ z7hzZ7-w~T>eZM7{?QhQIHi}~->W?l@FBpMukL8&&o@p_D-mf2)L5S21+P7|GGY@f5 zlBn9ugGBY@mRbM9?d$0bnwXWXUi$`qKckK*&AX;~Ktd-LWea=D{DjEgjz>ypx|kIG z?)D}sep(eP$Q6uP(sB`&s%(%Fg7@9+&Aj=K_2vyd_3LFc%^aAHeNTG}HT@%MlF@#O z-~W)`d*mEcitvZqH&OHyMG6zC9@H$B$$R_Adwg@GeKU`rqvYHy?b?^Ax9*51PJkMsL#1t{xGPfnfs?)JAOxqgCTy2fr+1ETVOrSiY0 zDkmRkKd+nrj++_~e@8b@a3eK2{kdxVodQ>Th~6>zP7=rR^vB_qM3>)Nwf~cfeoRe> zGHp>nnjIfU(56H@!N%CE_fUyg;45Kc`NK)HB(r0E&MhC_ZK= z_{30L)ToHyA(Opui3Y`6!lX<*2lqMF#jNX_%-FtxPqT%=mlzdtDFLiGE*lkRsLUL} z+Yr7uKoJjcfO~_?0pQ;dz;ZnwWbl4dH-AUaD?(JWrr^%5qhdqc87=Nv_?COIo zzH=_ydx-1=qQ4~wCtuV4oNhiM@MLKz{_wu`Q!4u*y&z}pgD5uce~|kVkn0_juWf%- z1!Uj|`t8wxWO~T-z4)`fmEEYW$A)-a{dbOdawI1mD_z zS}!tPmB7|<UON} zcpG>v38o-$RW@eR8Bp16D6__ex|=Z9w-ubjkjtD+|?fBdA;Bxt| z;__{A`75LLuj`9%joSy}axN}^IWG6d z`7hGS{MmHKrJxP9cA`=5);>A19U*^J9q#f8J@HOGHTTsXQ_celpn%_AFz zZ;H#QkuAYnM(y)z{^n8pZ*+a*s6EN$rntNzq44!1tM9KIwf|Z#ogB4q-ejZynnzI#nvUOj5Rin~|E<#=4Ki_2`({+e1^AGJTP zYcmSIxONmgc+DvI?CMc4(y;{S(R96P6tecnD1_nRQTs1d&!P033FD{zw{olKwr>x)Bb)Al4o=)yH&kJ{r+W$l499I7&UB{!C=8Q%$s~C>j->C zC>+XzQTvCwXWyj#!UUCkpU8Q6)P7J`PGI_eU5P5Of3_aAkLex_>=j`463uy(j91Eh zH9xAU?A-kDzV?j^T#F{z=d))E_iq2;gJ|))r2U{ii#C4$-KwrhYD7At#@UPzJ&{4w znbNRcPcyxow*PS5*>#*kRA!x0DaE`~+DfUw>P>yR;7ZJ2$D>qpw$^-rx4xAX#60#m z>%O4Az@9t&bic0*OiS}5p^XyzDkX`xwPR89rRMZzr7v?-Ie^J9_H_0L+GHkQxw zkd^#wpxcS)NGYcLY?v>e^2S7!Au|3K&bop8J3|Wjroj~%!xpTvsvSmBSrt+{+)%X) zRkFlIdbc?C)S-$HGvkI$LUYU#cS_T?5OkwF>GS$fB@*m%(jY%{-SVpKmXu=l*~&Tu z=D^{2Z&Qhz1~W62r5TIqI(ezhS;i4`)jcR0r{$MSe5L+D3f?V8+VXp8Wc8j20<-Dw z8uXUyr6nSH35w4^T9*k@2?RSY3Y3wKdJd&XjC!w8I&|v2gFP$s;4TW%m&ik^)uwqV z1xa{W7aVGrs>Jz+AjP<`m|tzlqu{)iO2IEHXH|lq>No0pXM<->AO671Nf`)AT~h`w zmUyq#!Y(OPuy=-&V@v}f_%OuUXVU?T(J`D0Qc+UW0mX6#a;Cn=FkGaAM3w~N2z{9v zaZ9~j&V^}RUV6s?c&RD^^ypYc6VhKatEQ3bk?Ms&xpz#c^hE#Ob!7Vb>evbRf=D_b z3Sf_bW(Ai95eq+!fs$M^1{8?Y3v8SYc;&G1v0*!1lM7_|qBvEj3O-)~u&9d!ta3*K z?0|;WwDWd55zbyhy?aW%7@Mk>f(7!MBOxfSDgy*jB+3)r`2+$!hVIt;hRq}U@&-r* zWAbjV2`EtHIHf5;+Gbxpq0461_(N3sv5SY?E6&4bTwP1nKifZYL*+?(7aV{ zV5vmqi&CSH)ZjleS8R8)xwtQ+29o9Nq(DVBktkI{f^;Fx5J}XZo?tRVmt^NGnE_uC zzGhY7=1D@=_;jVz(!DlLC=t36l0a8N+$)PN;{!vUmH!(5krz~irO)^B;(Qcihf3G{ z?v`TgM&>X$sutg7E-P8_r7guw)Wo2F&=bl;5Sr=K_ubMzPwSGjn61mrYPSS9SLYKceTCV|@aA_!YUlAn$o`eYhPH;K4HZCu*~X1G!1ugO zy}?k-n^Xa#l-K4xb;F#!w>=4|Kr`fb4C<}{LZ=EyUhEWHuL4eO&+sc{x{z0d3?28fY3M7-C%wxXf|@)+(;6chgJD)V;)tjr22*ks z>GjUZs)!LcX0s>;UXqG3KBS_^r-g@6z;$HQysAqI)3$HLiy{v)(QKmE+KFL_63L5% zRpU3w7CI`+^_7$@i-?#@*elT0IJH7o_YtkrtvG#2Rgs<{s^U1}Q2QEAI5ABOV|ZbN z>|gV6YxWkF>&1G33vR*UXdoCJ5|J$qPas1Y&{)-B6UhzQgT6DHWl^%!M4PH8*-+yACm(=zYCs!{lfr1ZpXN5n`jm<&C+1IX`de8>?ft zR)D0TAY7n{aUe8HfgRg)lIUJIDnTdmrUudy^utsT4qDHP0nS($hagRY2A{&B zWsSkSIBrZ5`uC(!t1%oJpAXFr3OxS}$_rch85zMJY}OvN?WmkJ*tWFbbC2%hG8B`V zSKmby>D;3M;r2i>X?yEzK8?o+ZX7N65`}j42q^~>8vH-Y!@<+X@w-C=?jUZZp=};*q71>eOs255Pn*kSq`UCryrxme&CxP^H%gD z8eEC)U=ep36h!JmvqGoXyWvi8b*EM&o8771>J)XlQ)7+b_|bLNtAxq>?sDcDB*FAA zGZc~tVVL;oz3W4bzJ2j)Pf`QB1hxBKO4r$1Ihm@*!WXO0P}6$V*Dxh@p(mPj@xBYw zN;8Fdfmx)1)Q|K>C zv$?FEn>9(IqnEm^46+oJwSK;$c1fhjB8bZ&;j>aGZ&Jeg71FY|M%f7CDm9yRGcwMv zV|Uqz@(os*Vd18WRnO=>X7iD<-SoN6sCekQ!{l+3A+<1WFP3qGJ)aRXIhN^}(}NE_ ziewaxrlv>#Yh8KSkCjRM`4ltUU|YGfeV3QsxUqLe%Bo6hFBVKe$eBf7JnmodzM(vDOVwR zmy+9?oXF6qxJH3mjIFlD&~2TDr==@q46FePB%KW_^N~HWx&;6XsO?R%4H~A7MF_Llg(TDCwW5)MLw3@derC9rhMz2?p+ptU-z<3e;^eB z*PH%2Xx1>}NP-&H%{(SK=|<)1$A~mdvIU3Jq?|kmZs@YO7BtE|Od>Wa_cS7XknSsp ztR9&58A--o^SaHT{o8{QGVv$EhCcf!q1iH(h`vpDo52rX`1e2hGcleb5X@%mjHIyW zl~>k8Jdl^WF#T@z@%HthE}QF8?I)Q4^F=hV62yIywF~o?^RX*5s5ZlA=Ixo0}8StDI$;&6H=Y6OX#iT=A-4XW{hyq#OqUZmoK()NF&2os(SOC=ztsGWU&NusxJ^EE+{m)xJrR863B&fQ%Z#5kBcc)AcKuF zWSBHj&)@vUD3w#EyE_@`91Va{CK%nU_uJ~IOU*uG{7m;1{Z{+V&+$ru!89El{nvPt|&r%FYf-4vEvlIu_xp>SZA|5=T263iBLjCp$ z49va;2m4fAmdVcstON;g$Z}0JFVTo00V^_j-J#p2-_?HcP19Sbt=F#0s`Cnlvbh^e z>^16(&y6>g8dsdEva(Prv7>nAd|XeRaL9gAr6yHf^J=)KmU#u-^L_bLUL{jbX#r!1 zf)GFk1Y?MTGCj?$os#D9SMPFkHUuuMk2tyj9NI4MX~A=WZp3~8MpREW>d$cACeY6} z2h@PX|B+NH>X#igGGAJVEp`aldc6>IB1g_=Qq}ITb_!7Kr>k`gFExUkRh1S>xj~sE z($-85VUF1vI0(_C({tyd$H$LOBN)!^$9HW7wO${!1`W^$^_w$aP zEk-3suHb$U*zuIB@KohM4QAzD6uM9;DL+1CPF!HjEhp9|3K|*mNdhbh&ss9{v8w&) z18sWPg)B=^Bl6;qjT=|P*cQMiTDH8H%J&cW^kJBnpC>L)761)nmbM`r0+9%kKk{dZ>QY!#-_3zs2- zBgp-Nu!851|6TA-hu@=0CPU6W1w&8U#O6H0P``=0|MkS^IIu#Axq_e*}|)* z^6Ah(A-N#=q#PL^LNrW3r;RV;-+Cr zMV_5e)6H}$kcSSlOrjN1IcI5PwJ_Cj>F~J>C1zm_?l3;oO0W$W2eR?m*m0JL=~u&I z@^~YSM8_5gU7jy9cJ*h0=Xp2q-<#q_r6EUSTI}I+W5Lwj;SW?X{e?sTn_4L7>wbCrDZd3#!ats2@@S zh^LMEBoxi%`a8)1oLF+=d|?#cHW`+(HGHJh1T^353qy(mSYK8QbP44BkhOA&^JzaG z_n(YQdF?ktd8;;2#H^<<34~<#N{!&#*w0!Tmt94DYaQefe%j5pe$iK2`^2;4GAMi{$MYOr6X;8!B)6 zuEO+`4H(>A>YX%j#(a`Nyb8b=DS4$eWYJ!VkuY-ye+=M0iX~;z+bo342N?-3lOpPo zY`3hm<%XO zJ?uI6m&VmHs#HnBA0vCo5nTAiXIZ7HJy6IMjuK}&%~*Llt%V-vPam+gPs!F9 ziw9;DR!S-u$<_y5yr<0UV49+D?YNGT)T0)tPS*Wc(4Db*{s z216hzWhWxOkj%AtM0AwO4pK__5o8A?g!pZ6ew1R+twZI7F?fA0rIxwrNT~tU=C8Aq zTB8$1N-Z~gP5D*~$co6gZYd=x7*YyjQ`y!vhWz;>NvSMamnEfkHEWERP9fhlmr~0J zuRg?2e7%(t9keFM11{wR9GQA8rE;zSkzu9~cKvB>$;UZxT#DE|XJ0Rz1|?X;kbV6s zsaQYYq(oW2*l^0e?v))GE2Kf{HCIszJ14IYqE^g_D%Cgrq7D6V%D%3-n>aPsH%Qsn zF`DGFA?}U!#ugMp?CUh$EIa!;py-7`%D&DFAZK6a3F6&#$>*?GgKc_a zR&E1!HSU!sVXu0yPubV`t?cV0w^WjKRss#uG0!*E^QC5=9$Za_H3QwR?CX6=qBV$p zzei<{_D3wuh-yl14@q6E!R3E^uph2#aDw-no|e51(Jj3-!_S6@!db$0n@GFfj|W5)b1TXD|1%xIXEkGKJi+Ec8?_P0J+WD zQ6ND`05UZbGC~-KWXn>s3(7#4GS~$Fkr#=#1UwVK4)F9*dDq#0Fa6u+lP~}@jOclB zlkAQAW`lXUc$0F+ln7I64z>xpV}#he@0dA^A!4r?9HlieEv$r^!*rtvl&z@`%vLeL zSTIHG5n=(&1DDbX5_dum^xP*-wJGDeIDxJ~8qAzU+Du`!N{pcH;g5yJ8fSj#HxQ8+ zMf3q2GDwO0TOc4(;(PJJ}H=zzX%{Ij_H|O(5#YlfY3%bMlpR!{S(^XGnFlN zxU2$CYPOi+VJ-0C&Q^GKH-RAX%jcm_+LEF|JxMN8RAi}(XmcU`y)`67g^W0{zywt$ zl3H(KYNYiw=8-rncy~UFwD)JaZ4MbTCQy3ClSo#7m{YOMjagWpLw1^G3R#*?6Uaf# zAKCRLPG_3JJhUfe$}ncLOI>l9aUDo6WgZum1&VlYK80lZ8Vd}b;pygaWK>Kc9}_*f zWcwtNrE{IRyEuy^qp*xc!-az&91c^>PPKXg?Afi9cAC`TR)R2@Zs}QfhMD!xcCQk| zyXu2%1-fWalS5!B6U~rlYV{PhtzGYZIoz4N$pDqbXqS4;2KexV^H3%{{6yFQ8Ey&r zxh=m#xwg?)W`>wpitpT7{))~a!oF4RS^$wJfmaNgtJJ3w5V>&fb(a|N$M?g2X1h61 zj8g$h>JJ*m#t?>s$vowfU6CjrF%pk3Iks9Nnso=O6>G$Z^^|u`hw}5!cHw!&Qk0{1 zwnx8NhR_8g5dbI$iXH`p;zorYhyI1p*b|Xuzs&cZKYyMzSo=m!C8C}Fa~$ktDl}j3 zN4T3W)vM=w=ddxe(^}4BffGHJ=h#4~|DDNu_8SLMs_8F^N*VdZ;L(>-4Oh0*TrU% zQ73x8<@_UALQv%>Nq9*PIl6wwY0moXkh>dt|HcVPj7mIn62OvCo0&E`O(Ua9(@931 z3K_*7wf!>X9psb8?lwEPkYF0XCyIQszH`ZT`2?1p*e0Jo z7V_zj+07Nw#~lBNmU6_M{9*M@-md&lUBRPms)T&&+h@aD>gz%JKwF=OPhxU=hOXIT zg<*}rs+oNDwSAu5eN@Pt{A5!r7-T~p4NBRuk7cZ=I$p$L*D{s_6LU~ZB{{g|C*in_ z@IJEy_Q=}^*lU)LN(5=nRg}MM_xX#+I@NRS`>4fR>OvM-6cmm`JfVFSmUlwyN~q+w z5__J~!idb_wPx2{)NLQyb>`3Yfx7tUo3)hHe)=oDqSc>%rh;4WDGMlMIwqvoR>Nf$0xfiBcD!k)A`^&9FN8dQpp``4qOywbO3>IT z3Ki_MNCQzw^_`kO<~1R!vlzlV$s6jVJPABBh<$<$!DgH<3(M;@vgK^%g)&rj5xgvv zbsW-4UIf*Nwe60EB386e7Kw_oeqi8PCxd?^g(N6$=tZs~wts(+ZJD5)8j*+Gz!f4!I@Y*pUFr(5?4vLF#tvH03o#uhgLnMjFHiM1&L+CqE z4-ytne?^vB3P~5^L;iNbL;^L&y2nJCVaVa&sh=ViU3G0c^xS znjT16+ud_FMH9VZDHgVO(Kg*apUM7l=z%g}{i7|3Iykau5tD|9)PuZDu)nmSS2kow ztUL5CZ56x>{S|vK{^QVZGyJlYv*=q`4c}qtmAw^#a2v<6OD@Ej@Cycl&3i)2F%81! zkA{~zh6Su?{z$YF?mvl!_0~|SMTuF9nUp6J^{v2c2@^$Pb;OJf%(M`Q zcwR*~Vj*BndZPt2D&rH+u#C<~-5NFu>Vrv$EKaSsY>CXuz#;uP!LS0iGt9%oY1=V?jhNCNwViuQP_Sm%hLRCc`*!vRf%}k zby8)ebCH2}q_u-YlU7-i(d0ER+TN$O<1oq_did4vBC>#FY9%5dX8;3kG|x)Tc)FD3 zJ=E~hy#a;auUOPOPKTzt-hfWiSKJU)br9A=~b7<-_J6ZcQ zRl;7dxIClT(b`X=3gMM~i^VM|HNItzm#xS7h-^rkZ)bACqyIHk+fO8w@3l+MH-8&`e-XSu&;6n1n~3 z35g=Q<{C21)0;9FI$U8cU+3hvV3#d4>bJKLwcmceCr?PoSQlJA@^udFf(sMRq%s}% z?!uGl0BO6WBVrS`v><+7e$3Hdy~;VSR`W)dZ99hQ&6oGDQ3$)1hj44NGBmG*EG)~t zrMfTIOg;T}(Ew-{BWWp>kW+2YiX8&7vAt2t#Cs-)che~1RUA=7UarwqPQW2fP4nug zPkUM7P;phscJW+kr5cs2z!6wGG`_mfxOB_TO+#T0uHN2sz>&Ly`yjXN6?m&FGY=$g zpFBfO`~^Oiv?)T1e+E(1EB!791aeSWNp?cl^3D)LzT$NDO0X4xG3YxwUNg&ttdj{> zI0Ms83*%~Mcq2ef>~vD#YNJsCmo2jiTzJbNa46K90T-^`3EY*P!Ce^J*^(5SNryo9 zt0Y3m8iJbhOlm&LfJ3Z;$wqkg_Gy;RHO2|gPAP2d%vYBL+;}$NEP3t(czp$cLu}i? z-aXv49c-ZKQpgUFTdloB3Q(afCa43uma z+{B?qG=ArvwSkAhHWhlN45yir^-xias9Ar`;O@t6>q*!yK|X%HZQO)u{*3uff_U?m ze&c8b%~m4Oo*5b_*_`Wab%lDR->5RE-tDrnk1oQE~n-l828%Xw^R_{&uST&=b(Yh-Ox zHa9ArC0TjNal?vF>YcVY-VWaIqk>C!2K3VnwtWjTXlC0iJ*m1RJy?fx9IwJ-<%FXA zCiTbLooWyt7I0d=ZDzx;eVryXrLy!ofSkJ-KHI(%VF716+MT%bgqtLR=a|l7<&`0F zkIwC4XDudm*ED&M=<#yTE1=4vs@_5G?{N*}h({rIS+>~~9u+#z)Xh&}8$G*y!r*HD* z(Vy%2`UigJSC{H#cBRe}AxjzSUtS@ldZ}G>hWuAI(HMJvdpxyeL$TwAw7At-9EB$5 z3!^gaw=9gFbXbc0F%Y<&vYmEtl9YB*$i&GAt~v!v64q4}VyB@zb2PCtM0t*$i9hd{ z*jLdKlS`DF94k`Qz}-$=T`YM^8!o1s6bU-lBsHAqpY-DH zNqJ3B6fR(7LJ`8JH9P-Kk%8MY3Q_yXvT6T9T`kXtm~mxZ z#0CP(3mfs2#7HAA3c{1TNF$BhT-bFS6D=(#=4gs6G&;ME)96A*pqcJAz2w|B!Z+$h zl2t-lwxT+?G3y0e>kI@NkWTVpBir=^qPuL}AQEB-VC!m;r@JVw z+ue9SjAhI=EWnsR%`rIWwO@Mc^i93d|5Nq5r&aWiOJAGO`kK$tm|TL26o(q=itI=I z8OZQmvX>Z}6ne1#voD-TEkHKB)Ic_(41R9Rl zv~<3X(;q4&XX-TRJQSS6`NHv5&Q~4^_1z{bltKSlA*jr*JNmAevLMCLaF#gu77xP*9i>JpZVDL+saeFHl6jfEnA%3st68An~Jl%EEl zIya@Wp*g zdd2WAFf?^bf<@JS(v8>U7~aV2qeJd}Sf?T29RN7k9M0Vp{LhDfQZ}2O9`Z7tvR?TU zmC}jBl%j9CrF8WOr7ZGvOF{HiloB4)E#1&=D)w+?HD0mQpy&6h&*!VzF%4(cjG51} z;;_3p3QA;2PMfO|sC%0u=@$nare6n2*H%ln_obZygbNih;9(;7n21t6#^7PVhHCq` z65uhZIXC?#U%&uOD}Gu6YlYn$qR0g0Vj`GFodZhDiJyRa+YeRxR(4ILbtirkLgji` z17eFDyPfa?KU&56tJ8nMN1-K#HevdlsAqk?no|SQ^ zO{p8hK;b-0Jtc=3D9_%&@m_Oa5t0(E84#oev5B0=SDJ$U$n#8z^2-d`r|<`-IxLzI zu`x+miO-PE&9RsSkW$Tj#W>c=lV?Wq4e9gDLb^#TR7G( z&5qVJwaGiKW{^!cZf&}yG+R`&)^2qkF~7`T&I~@J--ETw#D=eW3fe6Np6S5gxq!zv z<(tbLM#WltAeCm13+Z9xXkY;P5M=NDmpHRRy+)rJ8KluGb@2)gp<=5i14M^p?TVum zx*tIdJxOi}oOB44#46UU#p*Kt`x^f}jcC6W7Y^g{?Go?g5lF_bEzu?$qPBh$5iF`b zh{r~z=33a-wtl_0$zdrn61t9>-y8S)cwd~i@(FT+#SB0sdD`}XP3~U%d7VMkht>OS z*o0*(kS%UrJzrUG#`CSFuc>si`vMigO>z1Xg1TM8rU6q}|11a!UGjK7a&G!-3>w%8 z<1fB3zesi_qaaEN3s}hFpxRHW?BwEm8!FpaEQ13ypIE35vg^eCMjOzkrWN@;%{7?3 z5X`Th0lkS}sr3#v92L9_-HI@n+-k|qW<#H2AVX#A1*|Pzz-(YL_%2KahTmVYI+0)J z71Bk=3$?tS85om`kY-dK&Mh(D3&UYGwoY?f3;o`qOl2r-^U1C4VUI z1FB}Tuso#dk4+ltqP2L`YlsI<+LxO^p+^&5*k?G<1ge9`iCCyr<+0B1%9msgiUal5 zV~FgSlAmX{M3k@!mfeP0Uqz`S@gIXVBRO}Z_1UN&t-JxrZ96p3vwdwPW$72u({CS# zC(D#y54>NQhQmMQKF?4CgcX8HsSnQjM`Sk1K}3UsQ$LSz(+C`E+q~6?Gx!tp^Hd^ z^1@F1-xUx_yv{UYNkYoRl$c)1Cg2uV<-)ln5MQn9CYPENZ>j$Ci%yrn2&sb$>DVmO@6K$9pBE0tocbM&|HoXAW(C!YvPSMP}J zPyCd)ERi?%bvHjEgZSPopd^ z5;^vbA1u&>xCPv9Z9UMxt@*R5UQ$b+uAWqsUWGApy2nqB2$L5wK3u5#Y?}^h=Gmpj zEdX2W787?5eR`G~=ya=&ZY_i7{=y)2k$blNXFHG%K8#pAiw2<^^;r(4{^ei&jW7I-ACG*|y=2!2Wk^WLVg8xlHktla z+7Zo%4XRj;u?9A8OtZtJu7@p-M62teTOnj?M(jtL^$o?&+7MRmvBkAptlVQBYAac~ z2hMlnS2S#r*fdX5lx|X~1-TPauZ0AkG?*q6AcujRp~4YbynVaturQgeb>z)Se2Ej& z!<->;;O3oc?*C<2((Hgobyup^_xN3R$Nd6L(Gonb>AiTU5sA;HtPtS$pUN8yg?kXd zLC*0N1t2NA$G21BW^>UlRolA4&;^9k{a9dYvcP(A1R0Rg4PirUQT9g#$V!!#K}kZ7 z7=*6)+qC2gv@6h$A#eh=XpSD`(_K^h^DfR$7Bar4sDWr}`lDv2O&u=H&`;TVQcbaB&{#{8$d^-ot3o3n{@zei@i)D; zC?)BO2x^dD%r9|Os~u^{n_}BR(P&o+)mB+4xH`>=vS^`ON2u7 zCO_QX3rQOFVur*&nI13N3WN6XPTLnpZEj-$fVG6q{BSz}_(Kf9S3_w<@9c!iouIfv zR4UuSR>d=D|5~S8JD{`!avBmT<((k=`>$&UesoFFga0d0RjzjdPxSpXJ85p$Xoz^_ zCQxJip>aY&;H!b$B7(uwk9Bk4m}IPo7Uph@Hgyrv;{@1GJ z43kbSn@U_6u6^8j+Hp*c?8|{k+vWF(UzfCwVkjiAl#(OVg$yy_0pW{oNIE4KVrU|; zcr3+YldblzgrI*ykg&g={`X|R<(C-M;;`rf7g6_GIpQqS9L?n;1OdUj_E;VxoVkxp ziFR&rZ)EAG=~xlUcF_)#6!l^>U*8+wu)&>v^C@U45-LPiEkQMp9}2n5nAj&PK?jnA zyI$Kg^|w4Q{dWw>js)^dhthIq7VV|33|JrxsVat4=o6}>(?GqKy=9Ez1_Ynb#<~b2 zjlF3-pkTR z;a++P6pq>Ismru)@0o8HF;j(ZL^k&-3`08=*;b}SF9+Rw{N?t78b;b1F-nTcUW!#| zvz`-`;E^Fp@R?cv^icu{a9^KZ{@|0iEl4rDDtz9)PH0WNIggI7%F#bqmwbA&g0^Hz zYD^iiG^7eWWL#9ml%X0T0(ip6f;?raiNPT(1aEnsuj$=lKSDwh;No~aC!~bOXBa{* zoAfG;>4IH0Xg?d)_oCV?yjZv_Qy*^CaF8e4Ah~jA!jbx1Pl76B5zStN9Faqb{(woK zF%dK2MIu>)$&e4pTreMU(HSy9>6OEV?Z}%6g&lbl8MTBqhL((p!P;xcHO5<>evx=p zZ(6n`@w2=|*3i`IT-KQL5Nv}YT^Ob;e!7HbIpa0gp2QJ^=R^&FTrjnbbbCQ>( zQ#uBu)0r$h6-Q5J>V?jT5!Wl_a6ndzxHR}`)ec#3d;9tX+=kCh)0#RB49LWbc-+}&?tfpgRZu(OLZhO5@)Q&bt*Gb0+ipbAdw0V zafM?@ivht(fuMZNDT&DlUF&=;M`sLaO(`KDQHeTRAP2Adl4P}=CYyR)f{(pI!czy% zY3RWLkC7ujJyr6-gN1=5F;T`7~p3UX;rt@T1*JO5Vd8FFl%~FIQ-sT6oE$c0Rn; zud(sHMtq?xsmY-Z&vlp89gJj(v$FW9yx+=`FG<72?R(}(t6PJ28;VGn>$SYcwLw1|>skO){FUA3T7pwk&%=`& zS_o5(8(9rTIodSJi$;xdlv$J`B=TB~>OrqXd1qZm;Lkb|ixL&jX5TV5)MGP+qC=w$R~KS z1bgS8o*u{ySU^rsp+VN$z9BSdD9Z88O;``9W7GxiZtlH_58i@ZB*@f6`&IB!!QF+t zmcqO3>VvZ$DvR&lJ!AQ^&&xO~#fEJ9rrLE0B< zO*5Hz-FtyTpt6u6{e$$VEVNB%{#r|C-tgg*Kt)p-)Sk}J0?HeD@6HQFfJX#bk*B;2 zy(S6Bftz zCISfVkbGL`!cTqUs~ylkPs?y%EonI?|gX1kj)5f004K8`70(JA=x$^wr*S z%}$S1tf)F?fDtPX^F%#L5#dXe?p-YP46N5)RZ4lKj+@6o^$k5xeu8>m=zBI;_RhE< z&&7~w@rIODmsylh=miKMVgtWML?Lllho8N+{Kjs>AC0e(@{Rg_EpRS4)g_Lk)9?V*CfhKw`Y|^G;LezG+^I)ZXj(iIU7rs_rFs6mVgM!sg+S#0sKCRo^@Ays4o?puH(NN7rr{G?YoiFr3UaH-}1gUe%@AwAwG+{BV z8Cam7ZGY{UCHf*78KS(dl?kbf$R}3M;r-FVAZa2`J9`k{L*8W?2@rL-J{_E6bulmzXYN#Um5#q z#&-zo7}in&c~E8KXug#QVxXktxS>-55Sf=8jw$O5#ZFIe=&j*yqvKKFSk^Wq`K+5jeb@uEJ7gjn%r5g9Mw5a&q1rR^;d8PRDe z#YViq(R`&XCl(QGvO57#t!(fS4hXlVJ4`=q$LH5$6=tSOly*UTb-js^Tnhf!dFZ{w zlTR~CdFa!Sr$wnCIy?)KG>b%BY}iYZ@cJ@b<4|wsk06@x&dD2L&wrxSvlaf@(*(4A z&sR@wrv5L9aW!%{c_m}pKX3uenhPFPj7aivSPHYnPon|t>6I^ryq}LDdcf zGKPBMaHKSb<>1{shG4R=G@aMGWfY}b&PI*=g|<0|mp8y56zPncpkC;Tqj;ksoyE(q zvzYqMRY5R5o(hf1GR|gZ8H#@gS$3L6vW+a_)0hmCS*OccycP15Y#9@q=VpQJ^0|nW z^%a`22ioqJ6^R+iA6{US+OMnQ;#c&ue5}Qz6s73$A*C@W9qmiE^4Ph3kBFtnM*Y+( zzE=AFaZYJHI=(Ab7Vz044#*B*uijK)W-b1dceI~=tM(-W#GJJ|r`1vj2y$R|j-I|P=$L&xnh z_KGD#LzB4X&IxmEknfXnHSK1GNw|}Wx#Z%dmsG4nI#ms+!oQ=<$L*dcl#h5*W!!VR zlgHpj%@8+YdTV7$L79w`+zkfSR$^~D5=X!2f^jL}=~CQ?jg6dY`tw!GvXgWL|Mkaj zllt~VZ-#^H1UHBXW{6wVH*F>UF!f%s?!Hl^mWF>(CH>Ih7Tus{9TVs>imou3nCi7# zbll6*-Ds)H>TY%lNq1|G3ia&Vo8LLyrk-|svt4O}`YGZenRN>!tpT(Z(dySWJ7QKr zZI9f^Hc9P}JQg6$Sk#!DzJ^7Olg;FGofkE}QvTy*6hK8{$CdHhN1TVJ4UJXglR*6F z^YLtH`YSMyl+(Ge@WCA)NUXgM@ z<|s3%Utvv4t8cHwD=0?S(-A*QisnGB4U_nBmPABA&gRnS<+9ZZV-x-=;x-w{>fu+l_VWttTBKoc|e{FD| zlMFFzN($vZ?1-Q%1Zit?nDc4!E8_v^^C*Y? z)+mr4NuHKwSNvj{Iq|P%uP$Xaq6s`UuO<+5cls~Ib@XTY%laXSu{`~pekRW5tVC6A z6D6^=pqLlXPC11=3`id`wIN4<(D&{;C;P^4mGU_$abkV5VOK7j<{GSd#ZDPH*g-}s3y{^&nj z*u!|)X-68aZc8{TI@6Bit-vU8gtezQR(N@oz*&}qdDOD3^nDuFG^(6Ob%+4+}Cst4Re` z(kFDiAUnna>3N4(I73smQa=w_e*ROuDj5flyq#CMlQ4bkbvM`V;<^F5-8n&S`gfS} zBKk+-HA(#r$63^=Y^w#MvJU6!y(I9g6wHt2lBI_v`Yc}mX4O7k(@o5!yEx5j^?Nj5 zk7w;;bcU5Xdi!B263~xX598Uu0v+=fYhN3f=#tgs{?$(yJR+T?Q0sTY<#AGWs*@Kb z%RTD`-02TgKpz=&K7G4~q~IY1EI zu-?r7Vh>qrV|}Sv1A^U}(qq7}kCrX0`AvYvjC-K1ZRquQUIB2!gi)jB8I^7{cl6S{ zZe;fnLxE`?n~+onmS_XixGK*E74wCqcucL*3`By`&z0-Y%-Are)R@<3Yb~u&#frip zFd(tvmXy$UdvRoI0G!3QwHMqFEf)KP9KqJ9Sn(J--59jZ_A3}<^~v=E!kMtEJ=>hN z&JtksPIGT{f5Rj?=9g!)>j(LD%w`m|6l^5>4}R2qiHc`Vb`*)NL>WAkNqwUC!eN^~79TQdmCuTl-5{rBapc9rTE(@6 z(QzuGiqv>=i)p)6r*SzIQ=5AjkVvMrC)%7LA4cANW!j|FYMP}l_D&U#B5UG;_y{Y+ zl%k~joG+egf($r02mrO*NsE>3)xCj&vM;wGJ(t(;7 zC@9v%R`~_)*;q3YLnS(5zEyD(bR>!jI?@y==tvw9bTkkwP!h-x6tPt?Y>2dF9~kD) z+dVsMkgE~men21X2HdvmOE0**0uRRaIY0RBPHyn6!z)M>9WhN%V>H&M!R7IvL&`yl z%j!S!E4Db;a=-0O zUQfOk{cM&sSlVA7nmGp$9vBxjcaZ5fqnd?VFPzGBpV_UD`=5$HdPv#V}D zX=P@W-9GM;pRS5C%ROY-xNe{B6rT5MAMcdND^|B3>y*eXR<|FSmtcy(K%G^X=3F)# zP=4QzTwx+}HpI-sd1)?opwnNrgS0CKNyeXg5rYXw@*BbVLrAi~81pe}T9Aj`0IT^0{_yVf`*~y}AU@J` zb)$Z}1xb;O{!pThcW(g2C@mXSEN#3X>}v(U?N5KZ8s8vTBo|0HCSh7?iL5k9FTw9N z9>RBtW9HKYp#=1s8r-9$ohk>GwJgw7pds``Vw*fzN=}`7Ct*Q`VV<#~`k2K>n^~HuvzYa#w9Zx+2 z@rn+ny@=<`zwbt{;^5Jb%V1yE7nv@A{YT zh($UD5SIX;l0Xy)Ox36Vs$zz*10NQO&Oc0MA{KH_Ksfq^16=BnU%Rr6gE3+Hg9=1Y zK}I69pd^tW(o{4e-D-1vXt%3MG~wjAZ08V@K#2<7A|@|EISY|F7onWuguG(Pfs#Iy z^~q!2T3MZb1jO02)E_6p;jOdagOpc_@-=>C9x(rt6n6>h;iN>9BA~O0eX|c#rfw=N zriD!5R937I%*I?+B7kI2r}s9pwNfbqT}G)mlnF|uR8^@k8gU_Mf5J7(T_H)Fj%i#l z$-4srvq3qAfBIRvB^~SN1?Lkoo+>B)LIAB-vi(WWrxMLo`_3fguypZARtip^YK`>0 zBF6-U7qD=Z;FRwGHUt>zlT6D(8qY)J9E zF?y`o7Eke~lLd?4q3;NPW(C#|D*hMd80x|Tk1jq#?g@@PHMqETviw{wys=z(LoqQ6 zywQxhcz*&DbtA{#AUj@K>`f=>#!HL6>9(|en(Wa>b#b*59AXz<viG3q3? zx5VBs3=9DFOBMwz0|pr;%8^>^%68OSBC771u2tBMlV#RK7IjFPea-`PXzzL{6s{XG z6kn0391u5nb1w!NMgpxe?j`=T(s7C4oGJpWI>9;Ohop0pvNNk*QE<*sy?Tu4Vqnwk zucF7vKga6g-dcUICD;b}v1@gi z|MjaH@xw4HP%dIAa208Vv6nm;Nx%yQn?u~zT;HQsn*dyeg%>xZA&!z$|Xzcg-B9fxfyoF)?`V& zAnC#U>q`GDhlQU~<g=F3bGf!k-RmuO2;11 zvK2HS5DG&mAvjd-XR>n+s8M9Ulfl@WW7`6jL0^coQ(ik*_#Qh} zGgg$Tz%zYqly{ot8++BQRU=&(lMNlZ=|(}n+{Lh)1_Der^^H|?Yi|vldJQ0k!@Ib6 zD{ahG1BsMnUF*zH(>2k*bvw)L_JAtjDIPtA;b#zKVH)81pqlH^37|!T8fgmD?3{xV zjbs4I@Pa6EPI-w$PDqA|H7|XqB|@|rBi0`NE7R}LkWDpH*78-d4iIMz;Z;Azv391LG}aDP&cPxr~_zgR0_2^$-ctAU`~!@Pe4i#C$+DO>n~{+*ROY5^JpIvs zx)5@5QEiq&O+bSXpvu8wsXWD*=sXTr{|cSvvsDGY+|ztcN3c)qV(S`qY~dA2z-qSZ z7~KV%j^szZdQ;@NeT$yVcF^FRGOD=M{to#C-hmy$;7`dp%$JTONe)&i*Jib|5l-X( zclRty$L``kXXJafpZ62S98qpz$S#u(i#;_hKPIRFH+)of$euhGq5wW@%IkPdHG?xD zm#KNJQkdJN9SupTtE7fSrh?E#{spJ|WeMms-{*=6>9_z&=w?RS!RN8ZIWd zJd;x}J>zFSmLi@Z9$3370)t6CU7GD>VR^AjP^wfB%^sSk0`pt6ayXLaOY90o_utZgPJIx1KyN-G!_VGzOaDcQzopaF*KkIn zI2gMf!Fh@K6mclhup$Zx6ROrED20#}er}(t-DT{ALOKAW{ytT=;$~v6)zI!Vaf6*Z z6E`t*YKW*n5Ur;6L{qc9LN1j(=L606s8>EpqQ@(uD<72M8%Xb0>O4!k3iMElUay*~n%&VX=s6KUo{?yHZn~kVue;`hy9$!zt zAY1Tg!-{Uz>}LnEv$-8*#)sPLaPab+gE<=^eQU3?#?0!R@-7pr++3{k4jZf7e5~>g zBdgq;tnx*IKVORgqEY_x=Ja_{poxgSn)9CXXK>y&+IgchX2qA^V& zyuGDsg@E{iDj}cgK~?aP{yOH3Dq5F)3V9jQXzECi{Q3UuYM0KgIR~X55y|gvu4#^( zn_UAWVC$IZ?kZ2pNGu&yJ>iBxppN`(xdU#Y-_1SIXBfKC0(Aars?1yf^jUTZj|KW5 z|0B(@>`3~!4fG>sfaWTJadrIG`8v8?g3ESy(Z0d$*3t5ed>Hn=UyjQ%+D8mRZIU zzPIAvG)GOr!vg%V$b=9@KOnX~iU50v3LIsEOp>OBQu%8&?u-=D;AkIj0iyJWk*@8t z{o)AtJN@ptaP_8n%rs(Cun87B&PUkCiNV-lFL>Cye38&*trJf}NI9qUwfkfYhEaxkb()|6&BSS|$5TSan4Ia45`fR@ zwztvyzT-Fduq4Eq{gzYY(tKx$FK+C8@VIh+)TB^p2~&IQxTdLA7 zNC{mlCs<)Zw8X^8V}*K1J_U^&T1WbiG1VaObGCLPA4m9&E0A)%w-PXM1;(gJi84wqu+j z<5nlBt*s*t=o1lp%%kY6#e+J{A|C%H_Z%eG$CWo*W` zsxsVcoyzW*TsJ;W_uCKG=SV%YJ|yNC{ve2$2qzx4eZD&d8pzAD#Lrt4Vu}~)EEi#>hOVGkD%@u-X63{@O%B8br1R`nWz2yrqL&NirG&lErLanjj7T6G8^&UMZFW2}Dqu9oP zvbj!&Wm3Qk0j`4+>$Hu5D-*Q*h>;~7dHb6s+!LB;Kbzt+84zxWvO|{a*4+Qhx+FiZ zrjW6a}$UBDwuVn==;KY42d`EWP3pOC-pBOzZF zrjQTTGV<9gFh~A%mj;f=TcKyU{RHA>ml|4bpVsOLHju`U%_T!2aZe_b<$!cKASHdP z$Ycz7%GRsA1o2UMf7k`mEGT|S6!PKPB*JAccswZ@ekyocMDTp@fu^g4n9nj5W)QSs zj4F{;LH%-VbYFUk5o<&gkFmYvj>)XuNA2t}N7H<$#-nA)^GT`^OPlSvUeMUWiJw-v zSa5ufdBBq56!9)CwVc9(d&yg1@h>gOBws&>INUWRPGgtE@h;)r4IF|P4?~wMRJHqQ zn=sDI*0EBsH_%5CQ!S7fp4)i^AG5l{Y@^#9%*%UKHE0^$Jy~xLP~-KZ_JXzs!Bgw) zK?+`X8J-e-)Msz0AD1KHqxdk!5~CW3_6hFxl{=;;99Nm2J%_E9$pQg=W z`(5l)MIp&BG}A(th$wR{!FTKJAyDvI1)UGu!~9gFDJVo<4R2*gqzo-tY8GnINYb8= z>e}7tz$3iAF%tE5ah{p}@l1|esSpw1(fhcrRQ^Q8wh%-@)2>tDYve()^C=Jm3nw9u z&J*Qn;7xhEZ>gWwJ^3mj>~V9X3k8|1C3%qR{Dm|43sW?!(}%}R7Wk?fTn2{#NT+s1 zY(EhJMAB?8tD*KN-FcN7v#VJQ-i1(EIZuiopAbLpDR~xAYd*ZQ5rM#l_2k<2YHGqp za39u(O=6Nn$2@O%e%;8+|5pFzP*}gqq3S_8LBtGn#6p{&v(S47iE5(7uFH zA!?ETP;-||^Wp%=XkH*D7$R!Q8{&f@OLn=yhAe79%Vl1it8Ds0WtQqlD-2vIIY1{MVHfkqajw)(qG`>n)I~pHh=PsASQFv%%+mtPN`rv?eA&$oTN9`^y`$jg2 z_l|7X?isbaDP%ESdWFb5nwKML9@#fmdoIe;@UaXGVt9Zsq zGa`55d5&=*wnx;}j}PjR`-X#9UBvbBGlPEQ6C~C`Cs?FBf*ScotNK094>95%38%j% zL5_DE$DDd;W=Z%?JaXEE7i+mOW7SY;@tKcvgreV!If_ys#L;jxD=J*MwHSQVVQ{UW5gJ3yES-}RzS7$Abiw*oe+XEG=oN*=UY^} zxj@r7?O8&l1=kx3%deMGg!1HeV1sQ?EOrBRX@}(po26$S1)~1F@=7i}v##@bSm!3h zi@NC#(dj|hd_znLwa30pupy;p^?(=?l?YSo#*Oz>Hu=qZ`!?fO%fv;}M}2_l>0YhB^CA%j99`xwFeT#h3uEE{-tk#hiQD0ES6j<1s*(;T*{h9EC%087csu6BrW-hvQz-e z=Y-8s0Hx;x4x(U#Rm)sk*iYr|Su|>K;@ZN>nV#*{K6y+3{fH;V7iIU+s>yABCZhMW zf*3OJG^=F|0ObP9z*SQb%{4ICYqWp9pU$LJK{E80b^+Fzm z&|OPHS7aAL_x*FByOxEnYAiyR=AKx|N2I4}65*yAsA;Rv%{5%9(AE21A-DW0jHzNq zz+$a~9TiKH#W0q)nch$qs4InC5d+J0}Nw`vcNXaW;gS@dia)thKEhULNa)qXN9EF0vDm4vCL|6T$R|Eui@ z75wiqv!AO&){xQSeTq~4Rx~h{$a|fwZ3v51?dxd@gTwk&!HPkKV~)b1W4O_@9bvZX zzS;07OX51Ujp-xoew0Zx`}1%UH)Bm_;-%?PYS=A8rhw;@W_t9#*`A{`yN3IWaUb)- znkju$n$Q7GYGQPhn4Pt@dWe?Bd@zbeD4ukx)tkH3&fac2yJ=_NQ3xI9xZ2sz3oCAC zZ)r!tIQn{gbaud|Bsl|CnsKy3;Y3yDuIyD42f9t{rHTC{7isI3>Gn}TPncDWy=Qpj|& zD-HF`AV^CO0WRF;a<7+ za?f7l@gjp7^&%8{_c2}trx1p^v4|t%RI8q|oGPQ>R7XL9mx8A1-xFeupV;8YL+ zgH~eHwPPhD%O!M*K#J6|OX$uuxDykxB_bKnPfp<4k5NO^CBzDIuVK9^$lC~)FIRL) zKaK}(vvC&XwEQZ{xx6}8?e}T_HI#GNSSSaI6O?m#Z7!eVwmY^)ZyExlm#U0*(5vQ* zcI5{)jx+XN9q8N$RKGS*&BBs!JZz4qCdbXI(yu}Dn)GX}Igx%{9LKLKmTAWE_07E7 zj05oA(3B20(M4rBLNF+WXG7OF=!f(Uq5!U>&2K=+AWS788d;xBga1<@Bx^n}aII;4 z@={ll@T7cxpFg*NS=I2ZHqAZ$oF8|ypNzT0-9#s9qM;)PNA39v|F|5oz4Zh9rxnrt zDm=tHjoz7k#rk2YA2o*`K&@?j+xlAO#JB?Olh5_;nOzI#t+nSL(b@?Fd^ZAreD`ed z&}^zCQRGLdnnQ@o!BMJSft>hpP?=;{6}7ySGC@!tk_2!m6Kk^1Q~<;n2vPg7at~W- zk_GzBy&hVDr6=J`_Af#|q>8PoLxD5^N!7cCF>3=Zst_p6LFsj=MyK^;^O|UNc3^!- zcX2zbg<%?%`xH`}1QuFT7WqM1fHCAL)n`Kz;85qVIRKh~Z2tqigOI!D=3(v`MRah*EIlD3{j@xuIs6Kp$UfW0PX1n z-uJlCEXUM1Xe$t?S?-JBr3Se#*4f-|VJPVBQEe&eF+u}Vh+8=Sfrp|M0nxw)m3CA_ zZ&O#*CV(SF@@c6)};=@(JS zb0lJ@i}z%G&34O#YmSPPXlM61R+RSZvL9}gqxUIhl_Gk2Gb>%ABge`OeYm>Z0RA=U z<^a{JHeIOgaC1lqGRDSt9%aD>cPq-!g=%|9;i!SdMq)bgho+K2yLh&Q{z70wstKi< z@h%9v76cRpriGmj!sC14+qfx6j&f-2fYDTp0-XQu4Af@JLgC0+G%HS7)`aT6R==+b z%VM1a06p#*U3)`9?+XciG%Le(;dNHD;I&2L9V%MvAPZi>3?ZRC6p2G2JCB*gi;=i~ zSaa#a4D66G1)rb~oE0=-juiYMTrPsI1p@8h%Vb)VsTm!7Vem=?WFxA>owDgVya?88 zvl)X&_{|^~gIDo8V^FB`IL=XLEbYr?m`ya6{{wZ|DBBrzvP?|6b1F_c2X->*4qK9m z{?-p`s$!kF+`KM*`0D2R^lPKJA^k$edFRf+Bw9g*UjgpFt%3H|q_d6}efg@QCtp+a z#V`?6ZWlGT2qGbw%OESUiLpxR5B0Hb0842uacE+)WWCli2p zh6iNJ6wuLLgeNh2k_sNTX3A|mwBSd*}D#SiZj{c{#2S+ zm|)YenB~*3G%+k5!F4!qf&C9J5bwbt-f^>q{hMM0Ut5ge`Rr5Jo;&tbO4^GjR#@t~ zPPzS~rf-<6wQCeG8O^hr1jXGGW-~k?=VfA|y+u9jDY{`_Q4EENAP+;cayKSWO$`Ip z0GzarY2K_nz(y5_WX<41Ah$vwYKdhr_0qZBuG6xZI>NG;0ETFmxnNEL`YI_7-i&5z znpJ-+O2f)GrG07s8(Q=sgt8GUTVFDO*70s;Y+%K_E6j1DV>Z#G*)}oMlmvd}$80L^ zrYk(n+TO)b*B*+YxgtwdA$z2xhQ;@iS++v7E|Bi`fv2L%iP)gp^n}5KyyFHem@|Re zQ3{h zc7poa3S9$(010 z!?JlBhy%{G&x6)?4nD7YqZgLzC6=C2f`DZOpj)jjX|sB{@x+4oq7~24VNcc>$;P2@ z2FHA{q@l&Mfi8_QcMx<&$C#ijvDz)J;|DQr{T1sJxD* zP6{sotPHO#GAfFRShGeEPE-pdgvj<#*)TKp+~j%$s~SIT*<|`aqM+~H4JadlC)+4q zN&P<=1L{HbJ6i+YJ#w3jTRe>l+a-m&Gd|D(al@-E*_at!dNng;&;c1IIyDP78CdtY zpSa4BC)QQ_Ot;Yr)jGn6+H&=T=HL_Xf1FTX<2b;7aOcr`$b;gVpr2=EYg$8EdsHzn zFokfKB1By$y(mf;IfX zGGwAV60;?`8`MckIF}BuEny`Z2XnGxpN00ei0t$Ps&lV1$FeOG8DMWLkHN`iANiifeG40UWph<^(E@zS>*+rdN0G}75H`hj8 z&&&p*w?U#eCv-quCwc=$?d#a>P&AX3b_x};dUCZ|(qfNde%Ry?T{pJF8zZV<43m6f zNVFm;yH*sy0G3n}sfaPwc9kT>{1#OxNTC#+5*c)=to&pOW09kl%1@f4*@i4$V`=nW zb|)k9?xRgDjfKcV08zeCzl-?qMUlrh)UI^*IZAZ~r}L&L+mU=MfYzB=ud^BKTTAiKP_|+C#=P6=+8P*OsltVcSX;u4fG@h_eTR~ zQJ2vX2y->$p~d385T^JMu%OHgdpWYX3%R5z`+AVrI{%%z->tz)=fB(UpCrvvdy|GP zhSK><6Lipyk%Hu*sTWfW)Stwl((IS>pmqkYzWm^6sm0tPy_U$%gXf)<&XA>%VhDB| zr#vvy2-h&c$c-;ljJN`S)3D0&qJ~jtlcbfy7PZiXS~zZLFjor{Ym;QM8h#>g-p^`b zBLrM%hK-^bn!HI8Dw5nr;;4Q!L#aP$h9)$_MrZ~zdQSw`5edHUNDbe21Pk{`Gaw28 zh^Q~-3zFaZO+KPf4$AzY`%n&5Rt|V4`Ai0^<2r8X&;#~&!m)N!fAygrzX*k zqLhpn_P~-*LpRzBTglKn-W$EAt`uao*=WC z|B?=p=(pzyLg;G?50#ov6w^fsX+)F4j6OFiylr0gg5SDnUhupNuAdit&IQLyfi&kBOyy>gKl?z5W46>Z*yb%uNh~Dsn5MY=u$$b9&0aQ-}AnOVTTq(1c0s{ z`~_Z_1H2`BzeQddyB8xCr;xyp4c3$fNOETWAI9Oy64NOb7dhZP;ZnV?{SSZmhkv-L zLs0SGAT-~}qG{Dm-rH2~VH?(-_chD9E|c5sJ-ELf;n^eSzU6&0zR*+~3#O^=KKcM! zf-hkzNm4wmSj36jmUNpJ;`|tI*pP=@vaig=@^VwmWs>ByixKR*DCUxVLYi|it~1To z*Qea@?Efq8%;O}v?t?z9a}Vw6zGBC2$s2jsUd`5hv}R?mw7M+oV6~DRhq(2s>eWtr zd%8z`>|w{T138o!$0RWjOhQaB1c|fb3#}%#(xKg5=4k| z4HRB82Zik|U=H5K{QkgUPLi~03cLjRUJiLzHe@Gf;rS4JCGaiTNw@)`XfkVsSRok6 zRN%6XNTI2HfVo&AwPa@!P$YqdcZLLS;-2azL_>y{^dJ;WbRXw|48s!1wH4Xzt;mkA zp9rBzLa=<`V;$KY6vl0Il`2<43SQTcBBx~Qx6o-tc4BT;>WYb@up7m@-M*5qE}r<# z&qLf5;MezDd!S(rS5*1l>sdq19>`CSL}B4b!WU?VTh1p=I2zX)-E|v0rXwi4=PfZW;~v(u6SK^;@hjOHo%>};LWB-rAilFqVb;#N0n2J*z*=3;d> zyOffk1ETHjG+FqbNjBO~NNR)sT>2c*3Cp7|ir0clb^^_;LYODL&) z2c&x&Iocy1jgoAM8>=NT=d%sxz~HOamG5B*=eV^A0^ZbEfCM&aTxuR{B0U`bt~tkT ze5h2;QP@w0*Wm~)54`cSVCXeq~VuOP+_Cy?_Nn^}sBZ z+c{aZfgOWcgEcvSN=F83x3KDFg=~a_q?QUr22=YhOqoq{Ba3Vh#>bijMI?&Vz24BE z=wL(TB)ZgZ#jPO05v1Ow>F{caK;r%+nz$7@G{w;np2DB=l5~ipQ3$|NR84mlU2;CY z-up6XA-|fm`vf3*pceH6G2m{s=`Tmoq|tNG;KtMxGb95Et-*wSy~j9M)w-)TI<7=3F{}q(EDL!x5iQZ(_CoqH1Bpgf z9QriEbuR&+I)Yh6foKy5|1jd+`^Z-%_(%NCKI8qp7R|(jsbT3NoH?Q^l473`v(o%s zlIKzdtnR*UZL#e}lXL$pj^*P94E@)6B{pznH(H%mV)ugqLljl=jmb+D+ThcGLMoQA z+{7b%Jko>t3?79^ik1P`fHkpo**|v}CMAun1&MF7(J~m24KD7p`{#SPe9x#zgq0c+T43M74<2k^;-pW7t0(M0p9jxf1#-4=R zu>!0XD*ZONHaT21x+OAB*!UV|2GyOt`=$!x!a$HiTn?L5YgQDBw!9m#VER_WGV1wV z-+Z?2#^zIYH#eWRyN#j^ruoNf*3bZ1Y{E3TkBsN06IY7b&)1E?1A7GQgYRngW+)ZX znWaH?gJ)*CSCHKRF!%)7%`?WHAlp7Sba_y6%x*BBBe?rEvVRVM{u|miF$j}Tcn}?F z?_J~`9H>yfuT}_1BQXqrJ1D`{%dc(zpTfrmbe*Z5V$5Zmb zJ^O$0h#HUeXwn-F+NJ9Cbp{PlseXT$A3LY>#nJeZg{ADHYP{SY z3@2^F z=k%!T56|ntIelT$9czA*;Ygj)@_1(b<7A`;<5G|0RX);cqN`4GhQ4s@S>`uBHX3G3 z^VsTW_#T~4#>ezz`Pk~Pe^wR4$+7V?8`H={9~)JpJ~p1HvkdXrc$6Q@hXY>b6Xw70 za{tj|yGQ@yc0OeC>u{Gq0*0Af3U5iCoU*LvzWh%V;c5YIP)+ zJ_t}F5N{^Y8}QgWCo7frwHi!U*TyX`v}xzes$6n4Si=hQ<+hQgu8wV_&T<=X(PNS?EzV zRHLFAslFh6pI?ULZ6oc~Wi=lsyVS+nu$!6Y)6t0GH1nxm$Us@=6&A3VuJ(I5 zGo??x0{yjnWn1^5KV7WVk_zY95zA10$v$cZYWp5l4KJ&6x;>tjWiRgu7RG({o5~n} zIUN)YX&%d$b$%8U*)`6GBYkYlK=iSdVFBgz2Io}2H#?(oe>gJ@uuyH|!EkzJxoW+c z$_yUZH7mXG7}hb;W`hV5sh9`w6*bA1H@&F)t{1d^O>cvH%_i9ZKfkO8c6Hc|nJU^f z5t?q~d8AjtouF2@R#RWCg8dP7+Gp6hEHR`}m^1)9}I)H&8k-WZZxN*dOc=o zZ8JZ->lxiIJDu6G-HM_PA2F0UsVK9U%F|@DA{Y9XOP&u)b{4xr3!2-*LI0w#0^wuO zkSb-K3KaB#_r`6Q6jNtOr-K1+W;Ws4ep*ly*wN}l_)Wo%W!q#I+waw*Va>|s)5~ym zd`yjcljTiJZ>BxQl~4Q7x3Df&VnqpZNA2^}6Y{6KF&q!7mi~6nuvkA`xA}0`AC{$o>d8=QtPaPjUoCpY3Mzhlj@P;{h-XEFRrZIY zaeGBwY|AUSx&cCzRSR<@Vod?PF)~dWJA98V++}AiA9<36u#91?oi>Y#xGOeOR7Ftd z83`g#{${$nHny&s99Gi{iz8ijdxOdF@R6g)+ST6Z;t}DxFHH3m(y=3G%Lrh+M#vb3 zLVv@&XLyt?G+tFB)qzJp%{5BX1h*m8s0X!xT;T~hx8DfZP?w^PP&r0 zwJz~Y-RNjYlLjY-YtgQPJy_~47I#Lv`hw1>^S*t1_wKEiOx9wpK08g#V7Wj8s@fLGZ>pgc?g)qXj#0$2 z;RS=i#l>U7wNV>jGNL5xsL5kvZS;YeMcG+9sN86Jd~p@GIQ5}jb@5|yUmEgKOF!cCW^XSmGH z)~&$U%i;eQXPO6w^)Qvo>NFEpR4ZO>9#Kmh;WVze7mANsLCj9tGI?DTXn5luoO+Cm zJg+W}k#C~Ai!s%-WW}-RMUUiyQ6m>Ls|PFdp*IlI55)voi9t0erYjYv=axp*sNVy( z@P4Cn=2{n`Kdu$7mUzCtG^<}Xq+o7#tS{Bg%AJ zsPH9ou@c@&4luZ;31H|e5$I?+A`8%t)G8I&Pm4xzK7%B~NkAQIK&+u=aWfNLs!ixd zh@Cd_OQZNsy3;|%*wBqOsxI|nFFJGl5<6>=@lW-f)(pIT|M7OEUxC2h%56ERwd5I^(t|gi`S4vj$Pt-ek_|iDSj~Ba3KOv)g@|%{v*cJO+caLbKtR(=nzJB0x;3=bu^?wW-sY4$hC% z>fs~LvuEH8&p$aF=;y1}ETbNpqA=>3jZ6n1SO!)w81 zsc}&?Mw!Kcv6_&-5ZapAEt_!_woetQIT=niBlR9ZQTwjrjXsE*Y?DtfYmhXbpIn-M zZ7L52@dug;AZ20G`x$=&)}KhY&BIy2{m?iVXDU<u+7Luy8fk58Sb^a0}Nj?pgo*rTY2K+pBs%NWW74%hZ2@>-X@xY3BLG4bR`pv&_Sm zU*-PJndcWaJdb#uE&pzwZ<{IK<$kum;~U=J&ofhL`g;raGS5#j=zUy2!;dL9`1uU* zM|sx#TKv91XK&!T5q=z`F3!Ne!ab;H%6+wdzMXRS%)tLw4Q~OLdDwRUcMbm?@H-3t zKQ;VUfD0Yi^1olhzj*D!!rk1rX;0?!S;`4MY&n^PjO!@ zS-<}n^=8-OZ8iKn@Y(fyqK2OU9?i7#G;m0G!S=HRQAj-pq^4X2xq|0!0DdpmFEb9A zuZ4e}`U1E6tVj9Bd43H)UNv;I5&n_=RXGcPlCrX1F94VIw(wIm{4Kz}8My3mDSr#_ zH_yO(HT?G&M|%eTo*Mp|>lPMV?%&Q;_WvhqxTSXsmo{bmEjD4BtA&4X;skMS&cws^ATY(E~0`&!-~IXAK`v?$H_ekJRwr zXIzJ8;Gd}BU#0w;X5in&JxwqC9Pq^%_=mWcaX!mS8QTZB%6RNLSUg#{)SbnXg`Wg2 zQUWZ`-l-zY1LF>8F@9taRZ=c@R4OEZ0Z4zMr4q!;bHE zn3arA#w6o@9_B3fALlwdKBs=R`|>N)llE-=-{4->%Z}H=ZM(mXFq3^_;XlN^jN^xa zKRE;cXbpcDxU97;|Km0M5O5inh0DH?et(bg$@*IOr)#*K=Ub7>vOeF!Pv-gaJj>XG z+0D-LDdg(w0o(Gw#J!C3O~Ait2L2`PrQhGBzR;(Y$4}8XO*eS3?bv=lLHRfG-ol+L zs`lRnT-L$D{ThA*xH|(6YWOw4`;lb4urOuZK3CiBJL>uy z$8lQ?|MZ4=-d)4lK1LqNoJAjij18SZ21cHzA_#3$X0OdqKv-K?9 z+V?-fJMrY$=TC7j^s{i?wf){eqO@0D@iWI4e)GlFRRgu6TVHyy^*>q*dn6cKjBjmS27<;dMK@5A}ZStb_yGa2eTk7CEIGtX9owPAIKfKU&z2pWnrL2#!;&r_+y779`!&*T7rkOb|>kBvE zVBS}ba)XpxZWM@weMdGXf2$d$F1#>wQ^FpjUU~7h`&op;> zATK+eW$l%@3P7mmGPO03r$*(e?@PB}g=QbWZB3EYf~f zW|5l}ZkV}uyu;Qd65Z)YrD<}1o4Do{#zf1_p!_I}{5(*p%Cwv6?9OXgG*GOo97J)Hd0`Scei^%I z@w(^iFdJ;0-UhN*+G+(OtxGqK+-JMH0HQz#1fQA6cnlQgS#&ivT`@hO6?RXOyVF3<2P&_S=#qm zKPM|oH%U?_IJBGjsocqt=wx23 zbQ-vcANy~-OzoDr=6|JAL`kViKRCQgzR_%jIAdMnGD*Fp%!|}JB76g0{H9ZOOKjL` zH6Jn1XI6Fo(1i(JX<>Db39B>iF7k@l`pbEe`kBKP&NYOSt2YOA8^xpIewJHQ4j@? z?c$9ivZV-!pMe+R%EJkMY>xrKke#jXsKiMVCkcbF2+ItP?>=mosln-~^|HruuJt_I zNg|k_DtxDib*3Wk!VEf4BUXA64jv;3tI%7g^U&a2Z!{dN;9WkcN&cXKI3l+#sEX3b z!n{bz?6MJl78j4Lbp~^NV&fVnxNcYto*m z7e!7`mQfgbnOEw}OYglzy>dk;IB-hW34$E{ju47;(V zNy^sF(;!LnT&XO(uO8f-T0??SBU>+VeLC};&`UB;C3aFrIqj+3k@1wU?nV2X= zZqAN@frOz(4wc7u!=3#=WwBdC0Ud{V9Nxd1#-cQjoC1vtEaXX=_s4+*oR1fT?vDEhzS_uroQ*n}b5ALQh z$M+m|M~J%X`#KI!?xr#A5oZnkvP^<3%iQ>(T{V_Fjw*scVQwUun?Ago#@HrU1&VQL zm4&JE$Zi^QGcSo1tRYvZ^KtO#ZW>GT5RsR=A*yELIl*JQX)Fp$FSExf{Y9Iq&f!2i~*4iC003c^6s4u!AB4EOC$At zBt>@{Lnz!Nbm9^;fQm4EeuqQI!;%4%iQ~ZG+|W~7A42LBxfkcT&Jx6V8D={jLY68w z$?#33r4wi;-}(?T6~>{$Vo<(=mm)8AI0RH2FN=fFj|&Wg1fycBHr{fkomgc!8PRqz zVRX5}A%sq%FuxT$%gKW@d68=EO}9}O0~60k8G2!yJ7^o{wo^AOJ$$%{N}R&iS$cjOb(36`kC+(z9JQQ+a*@*)q0?3M3*`X!mDII^sR1Fx4vEjpc( z{KdsrJuIhT3=s+uAfB=^c;7a|M#}f`Bb8~Az?&Q=__i;!?2xhv9xq&#COYvb9yd-> z)UMKXub!m9DP7Kex1vU8#q0XSbh7kDb^p=!<44=i9W{q_a8j*n#uk07P8_B1yxwfF zhl(>=T)Ra3IGEZkd*Y1}O{qlH*O~8@ap1rI|LfU=CH@J_WVdjOFv#_{pPzAuTF39K zTl9?P9GiImPMTvbOE{cYb`pugkteLp52L&&af*K6xnjI0BEhA7o*Vwx5wK=?U?=oea^#X`TmOfMTKj$VoofdS^p`!wVe4?mRHO zK%VT@eZfue!Bx0&B)AksMHa`&ceDa=`pQQ1i5|NCy67S9T7qS0Hk8+4nYg+8&?3?x z{3ETG3?go*^G93%&)~QT8wCzd-OR%ipW+X8-S2F@YssGZ?$-3z>BwSk9m`GQ7?_@$ zrWql;M61a8uGU*Nhdv|?*m$+=8FF#)%Be63dSafTfS}FbN{-Vo`|eh>bb5_tQiVu5 zTmgnMTzaYIkRrEN|$f4%$WO+I`OB*>}VW$W(jG9=h!24sZ56odR z4GlcSa`x55nw^}?5GY668+W*6i%qSy;wEW+{j$X<4#>_V@*RyAUVr%OFoN}~j8_Wl zx(tbkL~#}*-`~2g;bWEjT~Xlffz!z1C)Dba$WI||mA8&0G@pF1#+hSGh6B_GHP)}r^&4f5f`Wbes63d<+t29Vq zu}J``qaSEJJ8zt}g=&^-{cu{xDm?48ALu5<28mUII)@YU2U`!#YxgH|`Jsv=EuldtR5_H8ezbM*74M#8tuuy; zhNX_MWbp%I+2+xoc%?`n!bb32KT)L<6+!YRFB1v)xx$`w%fe4wjk5BmT6IjYIv{9| zsI0{V$*~EPPoh;BL}?rsKioRCK9t|*3`?=}*tP=sgp$~c894+C&P1`<{xYAmjjzazBtg+<3H1Syb^?K9J$UQJF741 z!X!yNE_cuA99F_MHE{Wc411vrRfJN7IU2;7uc9AmJ+;{i8}ZQWqv{^q+6U2~59 z$66oSvcmc(;Y2-JdeWQ`J=&HWilgmHf8MG3>?2(Za@leyQV|&ccDk~49%{c!cc4D(SAkt-W|AasvO!C-JSI8lhM6&3|9JoV>WI&eLFiwITy6RiifxMuc~BQ)Z8UQBjTq~p>{RFwUt)UN~7Ray1gy-Yt_P#U6*Z;_M_s=Ks~!b4$<8 zUz?`shJ(}-o7Hm6No8dJvQuc15xp!E?}-zYpK3iaXL*`Q)!%(E8Xws>Q4Ktdv0@mDJq}I$=&2&z?3G?8T(45t%JK zjoFpDf4%kgIgQO-2eSZOKDsoiKj=eqTDbvMvrfy51O>-BP{sY))QMD7`kEgL9H&I{ej_?Vk72Az6|f6B7QGM&d;^Jc@C9qX`gPA zhvYn=X%gTJm7fzC`Wvn9o+qw0?~qf~*DmUfvekXHnRmeXR;MDFBceiLLwhdFL&f=L zT0hp>Jk19GETOT+m$2vh+vd0C?E6c!K1;)Ej5)zkN}?{Cl}H-Vw7=PUc+SGk6Q-4* zsXqR|T*;^j6$z!W#?DIp;%~K1%xh@=#+Ofo(FRO|VHB|Fe?|)6cj;-9{KlL@1En+vfBCjEmkYhn~!0zpBnFBh${$#B*(Eq zpwSC|zO_w{ypFJzW3R{pQcM!1e_<{syTr;?$4b^Ms7v58CRYW`+n4;1U);Vs(~bP( z@3+2V9+TR{8|E4{JJly*7KvPaEm==Fj@Qp!rqyb^kP&N?B z)?YxWNCFkpO%?e#836)P6My+t!xs@kg7#@Zc2*|&QNPl9aytS;KK-*^P=K zjbLRGtBv(P+W`koegB`o3ba$XnG@d+$$3x73`{ug=}=UBu$ zWREE*C%}W{IJu)q4^PT}aT&KUCm}=a^xVkP|El%Eysc^5 z+Evfi!RH>PeT4 z9qq+rcbDP6-9CdLf!_UhFDJd}myn)%mCHpvswDVakO>rHz~LnR>Pvb)IqX`Z ztl{8uiE{YiZ@t1>wsFc4*^VMlk(b6{XI$mUZ?`6|*p{6Mi6IThCJTsikeyU$^&els z32%rA6UX6fi^AbZhJauEr&n;o(sLaHL}AIvXmm@?Ub~U@{_`t5;rh#SkT}PdU1CTC z!aZ_nRQ_LHk`k4N{{wF%;zNSfBQNhK)PQ;00-8Xe}ZL_D;TBwyR8j}E)5UM_^#er^ejG=HyVf!ojgZW zh!o#rLMnEq|GO0z>sTK?*;V=O92F36@gR2iuicvAi7{{qfM^>6?H literal 233747 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 SbL^BYIkNq+Jst5HS^Y2D&JWN4 diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 4b1b19accdb3cafba5f5626cd108aea6c91810fc..72be84f50772fa43b697df8acd62788e854b765a 100755 GIT binary patch literal 264973 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 z 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

kD}PffjsN!=L=bxw)gjzf9r#xypuE%CClBsNwIW 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 jF~{LI?+I2qZol-0A-pWuFct literal 256495 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 diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm index c7e6b0e25f79e4752f09aee93de4a49256d06155..901582169674b02940ee864c9a408f389f15eec4 100644 GIT binary patch delta 1231 zcmY*YU1%It6ux)%C%akG+{sVd{4|-}#O-d9Hg{(3+_|%T$rKs{TUxD+K8R#y?wz)2 zHXC9nC~Ab#N3rz!R{X;!@gc=Ud@J=qC?evE5=F6~B7N|uC=%&IJY7Ro82HZl=6oOD zIm6st*j~8)KF%08uRp*~6vndYno?+7o5nYITmNFr>Lb}j{bJ^ZK9E^#U(24rJ$Ymy zf=V60`lsBx`i=b4Q&&o40+k9Ve5+G@N;1X`f+?WUNUFq-lCo&!BpPGg*M=7V$KTO~ z;d$Us4!?&jeQ$UHTkXe3zRTc0+Rpe37+=?$)@#K#vv7!)3#Dy+ynL~Ltre@a_1V?6 z){;urpPg0f=kzD#$Mjg`ZTN^cD+5D68VKbOLLX%j8UXyf@K0~+pDQEBP6JcG2o(YI zFg6Wn1Db#*fgc1s3Vk==@m(xKJ@#K-pO_eV=t>q{BH5Lwsqnq_`h<%K_nk<1v8NI@ zQQUF$hm+O5gxPUqr<_TjQ`Zm3qk6S!>E4G&Oc|vyw_Pf!!#IsSQ@5&9bG}D~>${1J zs8BRY`tnWHOje)kpNy85TS=p_3$0eO(Kr|RPLQ%xavz@54F=}HzNSxA_n1k_QyB}E zFpqhh%E9~geTpj|vPs*Oo||&D_kn;&8aRn(OX2dED#*W5oiRmh2PwSqZI5%2?*Dh3 zQ=2KN65I7aAep{fogt~u93@$jIF6k}5!Z(fKGG*>AgF*8(o5rjy9XYaj8nn6Qjvr! z_$rS0SiafWZ@lw&TKY4PyBstLi-IUtcA(<&E1K8TX~BF*Wphu-)RoFVc6fRDV)HO} zs2jMp;68&p`qUMbdeT}`jmB!Uaz43me&y_L3FotI-+{!o%cKe%TmM=s_tMm+j3t6I znkZlC@p_f;K)`JRCV~XEier7IZV_cCj>l!-c%BNllj_TLm%!R?;!z&Oj0Z|Y`c}P0 z{6I1vyhIdH>c`&IsV7a3f)(SbBZUM zBq{WegGA#&qz6&x2o_3DdMJ2^b?!b{WV%4hR$(_twp){( ze?#cMKUpet+z-kK*=El>FKm};AOSU4PQETBW#lC{OG!r+R3Yj}Zk3Ww@?f zEG4xHqy?^wly+p2k^tMGvjNU0lz;&GDPbFXu+$|kxtAbO9 z!Jj3&jOGTfmC?9srWcg+;9*$q0BELtof~!wJq35q`@?X%HR6vzxNS%L1-n_+U-^&o*v9I)R`PaK5ui-lV#t}R2wB`?7^<47z2T1pgt|W)1oXbxo-&#JH!U216 z@c4iHTedi~;QV7lAHq?4cW4QYww@XOE(d>Zk+BU3FWar^yQTN?ZV;~*%e(f8+In$W zuFpMk=B&0mwWsaG_y?Q2UF8dq*_d>ms{z1$ohv8TPM=&` z&UxqZ;0=^tldBs3(b|}x5V25V%$XJpD=bWAKbx#q1TlMV~1k13-#7L0@<2m|{?W2Bv^Ei3npmr=Rz=iX%l7$%qPd#KnU)@doUh)0dDGDHoahCQ=bmW@1Zc7&1W^F&#-} Jh>WCR{{T3QBVYgk diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm index d9d13ededb2358097b90cf309a674805c4f74934..133f7fc34a81b0807e12feaa136bad12c9394bfc 100755 GIT binary patch delta 1181 zcmY*YU1%It6ux(Nv&rr%JGrSS63a!YSA)qNyOF4=pU>i&Xj`s0fOnq~cG(suY4Kip_%%Phtdxf$yAeKF;6e z+n75)cjYIVO{dc-nuTrp*hsy%qdT3YHBA~>j85xSGMw#%i;GJ!8ObCoT9Z-eq`sj$ za9_F&FJ|0Rnoy(sq7!#z>NBq~}Z0|9;)!ppfrF8I( z&0MyppA?J|yjgs)wUw(ApVVo=zn=38M#{gL^LuKfMvXrIR?hD=Qni#%M2h&o!n`rq zf1vt3=cjAwebt|^VR%EkIYCH`_?ZQtw8;zk6Z=^fvnjHkhnq%w;G=@k#J-0~Awy

EJtb49-*^ zrDNUCs^6#SAKlBxo}u&#OxDlmUd!Op&-E2{;N$vQ|H@LNS6180D@zMHUOnB`t53nb zjfdft#^&@+zHos$8A3{gkOpEu;*TjpdJwN+UP1i4@1NX+h2d)O2r_+?kQ`zbWi3P# zaj(LI$R9$S!90(6{{hx99{Mj2pA1*;IF})pDw$JZN7I+PzYU+IhH$M=I+3GeJJ!Oo z;rY?yM$FA9G!wy)`$gAb(su1wg-mJ|!unXF z9J-d5@I(n0zr^-}Bj7imD94FNR3v%K9qtIGf}?vC%35d_J1f&xj-3b{4D6{5#XKu^ zOeJj*F^!XLkIxomWO@nyaZN`EnZP~G&=AbzTItxd9h52#SDLd%;&MwX9>@cjwMPezbu%r`M o@M`J^6sIm39=>7}F>Wy#Nya0%Hg%%Jgy%R3Ud*(j$n|*eH&q=vkpKVy delta 1243 zcmZuwTWDNG7@pa)*-N&Pv)Lq?-IDHZE={tz%$akU8G{d}W`hW#?SoHIGv}N+wKbba zqN{=u`ydn{3QnOZzE~=k+_L> z^n=E%KA&9D-x*i+3&v7wH~A3O>#56nJ~gXL>Ba7|IdcN#GRWW3XVORTcI#sLAB_7h zUCgGs@+fB(^gBJT*S512p2|N09lewooc#54Q?D-@#{c)Gbd$p_Wsp1rB76k>$j?JZ|rpE zwy>K-D31`T0u}&&Od!++_#yB#jvhtkWZR-QVwa?(hgO`=PE$rag9_|4WI!)LJR zI+76XD&dldh&a@*j!qT?ja^%?$e}^tk~ppxp4A%@p57asDM&(vl9X`8?a&Lodf#!l zyRX+`PjW8`q+>D0UE&f)Z;n+VzUxt&3MwQEnaA}fW76bY1-5eSNGXRgK{Yu#pC=)4 zLeAn?MlMuTAJm_XJyD>6OQqz}5rQxpv3jwSt{>9Hc1Ru12?>c9u|icZbv!J^h)qHk zN0boTV)er(+QpaHnp#(DO$DAZj0j|kVv9;Ah-`gmVyPEAELRXO2m?wZD4^U9*DGk~ zQWmK&2q8<>z?Q_ZZ95j0BK4W&K@+eRplBCsL8)5ET*?vKV`kt8PHgTm4s)a;)*DkRriz#s(TIjLa+Jq~-kbW^lp^3Fgl`iF&vs*`znGrO R$Cl%{%9CzPr6*&z{x9q7LBIe2 diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 6932b315eec8f967438941beadc40af271a6a360..83486331c1d93d173b3f358638a2846d2f663aee 100644 GIT binary patch delta 619 zcmY*Wy^51j5H(`dMRs%ZWmi`VSb0>eUg%%cyg@tHye_bIlf*@$IrHx>U z`vg9KAf(g6XAr?RuoNsUy@5p#1_ll@XU;kE`S8o(r^oB9X8B~j-)?t~onf2HMe~(a z0 zmb886i0E|rJ=kcncj$v8G6;m=&i}j9WCN6<7glSI0@a28HkqcZ1#n3rMXrI$#_&1| zkigh#Q{?Ea=jHD3Vrx;J4b!z~aw4CV18WmUeY-!MzMA#HfDwii*PIiPB88&-89ri_ zpvDL4eSKJ6X04pT|q>70IlnYh4REll3m zU#ph6du8GD)MCrjlijsnRp)29Z-30ZtmA@ z1d7NA=5D#+H@k{SNMKM(%b0-cW45v=F#?hI3bawN?D#>~d2OQ-BZW?IM%S zf`X3L2#@D|sroDBV>7cOL8CN2Fv3#7gob?IF3zo0^{+hY4!{ltF-dU z2N#{ig3TMZ6x_J+e3qaIjm6nGRMw3Y_JiSnoa zpt43MbcraVW9xjOO}U+N0uY&nOupsC>P8$t%}sL{4))`d{e#_;_A!s1x85NgN8^N+ zEyOI#x6P|nV(lmdMi~K7gfcx?sS^jCMJtp!8_jtL$~DZ=mjc274d~Lah#U4qu&`POF1y_333@<=LzH`>Dk@lgVUZ;Y{;> z_GsnLa#8PHT|Ke*?pS?0+rRdCx%!#6ZvI$$-8=cj?Zs-+o1MMot8*xHkWpw0MnK9h zZf|yi1n(eeNk%haun}9|WeAdCWJoDUlYjTuyUuV-GLbfAlEC)D z(__Qwe0i|mP2L$F1fn*823&jbUtl+Bz(}53rI_JHwwM0%HVTvCzyyX!OabP*gHaP8 zg0|%-p2%Cz@`u4{b(oI^ag%h4=#z9{ZDdBZ+vD-Gy=~B-xkkwpV~8kG8lLa(j++ut z%A-hD8LPqNue)sxFh}7aBt_(q*M=K4OTeTIR!bJ5iTUC1dZW=I4=62$;GFmQV7Spl z2wdsHrc^}DQ$8AgtfO{wU|AYe!sy1$ z7{%5HaOGAQ+_}+xmihuNvhx+R2ZG?H3O>#$PMz1&YC5exzo@IXvzPUc6N~RAlgYxu zspkFc{_5}LLhoK#JGS`Yi00Xot6!F@U-{aNpG&V+jz4sJvHH`UoxVxcnFI)cyi6In z%Fl0YcC1KBS`$DJDV9>($$UFDA`#<|KnTfwfRwLqKj>)W=z+*u0a6LyuFSO^W2N?j zkssP?NSvOEB1OjmMAowm@qoz#;=CC07WB<=vfe zqm>M30#QVhw6XbMr>#Q_04yfPgDpJwhU;~hmu;BjW%Pxx7DI zFVM-zijc>sWU~4D@KcRG87y6smz)vhrz2I9r%>Dq7{{bS{yKWrP!!0GbRl??xOMq< U`=*HmC3b?+Z7@_a9=4bN0wCqE^8f$< From ed05e142c27520fa38eebabb55464c61acd7a00e Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 8 May 2018 11:32:43 +0200 Subject: [PATCH 055/103] address a few more grumbles --- polkadot/consensus/src/collation.rs | 9 ++++++--- polkadot/consensus/src/lib.rs | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs index 81305581ee01d..a437ce085c773 100644 --- a/polkadot/consensus/src/collation.rs +++ b/polkadot/consensus/src/collation.rs @@ -133,9 +133,9 @@ error_chain! { description("Parachain candidate failed validation."), display("Parachain candidate failed validation."), } - WrongHeadData { + WrongHeadData(expected: Vec, got: Vec) { description("Parachain validation produced wrong head data."), - display("Parachain validation produced wrong head data."), + display("Parachain validation produced wrong head data (expected: {:?}, got {:?}", expected, got), } } @@ -165,7 +165,10 @@ pub fn verify_collation(client: &P, relay_parent: &P::CheckedBlo if result.head_data == collation.receipt.head_data.0 { Ok(()) } else { - Err(ErrorKind::WrongHeadData.into()) + Err(ErrorKind::WrongHeadData( + collation.receipt.head_data.0.clone(), + result.head_data + ).into()) } } Err(_) => Err(ErrorKind::ValidationFailure.into()) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index d4cb674745a32..d575d1d6387ab 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -619,7 +619,8 @@ impl CreateProposal Ok(()) => { pending_size += pending.encoded_size(); } - Err(_) => { + Err(e) => { + trace!(target: "transaction-pool", "Invalid transaction: {}", e); unqueue_invalid.push(pending.hash().clone()); } } From 59f7f48f84ffcf55fa782bcf504cabc7a5c432c2 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 18 May 2018 17:47:53 +0200 Subject: [PATCH 056/103] schedule collation work as soon as BFT is started --- polkadot/consensus/src/lib.rs | 122 ++++++++++++++++++------------ polkadot/consensus/src/service.rs | 7 ++ 2 files changed, 82 insertions(+), 47 deletions(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 965bf8cc95ba2..62475c4114131 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -125,6 +125,10 @@ pub trait Network { /// routing statements to peers, and driving completion of any `StatementProducers`. type TableRouter: TableRouter; + /// Execute a future in the background. Typically used for fairly heavy computations, + /// so it is recommended to have this use a thread pool. + fn execute(&self, future: F) where F: Future + Send + 'static; + /// Instantiate a table router using the given shared table. fn table_router(&self, table: Arc) -> Self::TableRouter; } @@ -221,13 +225,13 @@ fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: Au /// Polkadot proposer factory. pub struct ProposerFactory { /// The client instance. - pub client: Arc, + pub client: Arc

, /// The transaction pool. pub transaction_pool: Arc>, /// The backing network handle. pub network: N, /// Parachain collators. - pub collators: P, + pub collators: C, /// The timer used to schedule proposal intervals. pub timer: Timer, /// The duration after which parachain-empty blocks will be allowed. @@ -236,14 +240,21 @@ pub struct ProposerFactory { impl bft::ProposerFactory for ProposerFactory where - C: PolkadotApi, + C: Collators + Send + 'static, N: Network, - P: Collators, + P: PolkadotApi + Send + Sync + 'static, + ::Future: Send + 'static, + N::TableRouter: Send + 'static, + P::CheckedBlockId: Send + 'static, { - type Proposer = Proposer; + type Proposer = Proposer

; type Error = Error; - fn init(&self, parent_header: &SubstrateHeader, authorities: &[AuthorityId], sign_with: Arc) -> Result { + fn init(&self, + parent_header: &SubstrateHeader, + authorities: &[AuthorityId], + sign_with: Arc + ) -> Result { use std::time::Duration; const DELAY_UNTIL: Duration = Duration::from_millis(5000); @@ -276,56 +287,100 @@ impl bft::ProposerFactory for ProposerFactory debug!(target: "bft", "Initialising consensus proposer. Refusing to evaluate for {:?} from now.", DELAY_UNTIL); + + let drop_signal = dispatch_collation_work( + &self.network, + router.clone(), + table.clone(), + CollationFetch::new( + local_duty.validation, + checked_id.clone(), + parent_hash.clone(), + self.collators.clone(), + self.client.clone() + ) + ); + // TODO [PoC-2]: kick off collation process. Ok(Proposer { client: self.client.clone(), - collators: self.collators.clone(), delay: timeout.shared(), dynamic_inclusion, - local_duty, local_key: sign_with, parent_hash, parent_id: checked_id, parent_number: parent_header.number, random_seed, - router, table, timer: self.timer.clone(), transaction_pool: self.transaction_pool.clone(), + _drop_signal: drop_signal, }) } } +// dispatch collation work onto the network's thread pool. returns a signal object +// that should fire when the collation work is no longer necessary (e.g. when the proposer object is dropped) +fn dispatch_collation_work( + network: &N, + router: N::TableRouter, + table: Arc, + work: CollationFetch, +) -> exit_future::Signal where + C: Collators + Send + 'static, + N: Network, + P: PolkadotApi + Send + Sync + 'static, + ::Future: Send + 'static, + N::TableRouter: Send + 'static, + P::CheckedBlockId: Send + 'static, +{ + let (signal, exit) = exit_future::signal(); + let handled_work = work.then(move |result| match result { + Ok((collation, extrinsic)) => { + let hash = collation.receipt.hash(); + router.local_candidate_data(hash, collation.block_data, extrinsic); + + // TODO: if we are an availability guarantor also, we should produce an availability statement. + table.sign_and_import(&router, GenericStatement::Candidate(collation.receipt)); + Ok(()) + } + Err(_e) => { + warn!(target: "consensus", "Failed to collate candidate"); + Ok(()) + } + }); + + let cancellable_work = handled_work.select(exit).map(|_| ()).map_err(|_| ()); + network.execute(cancellable_work); + signal +} + struct LocalDuty { validation: Chain, } /// The Polkadot proposer logic. -pub struct Proposer { +pub struct Proposer { client: Arc, - collators: P, delay: Shared, dynamic_inclusion: DynamicInclusion, - local_duty: LocalDuty, local_key: Arc, parent_hash: HeaderHash, parent_id: C::CheckedBlockId, parent_number: BlockNumber, random_seed: Hash, - router: R, table: Arc, timer: Timer, transaction_pool: Arc>, + _drop_signal: exit_future::Signal, } -impl bft::Proposer for Proposer +impl bft::Proposer for Proposer where C: PolkadotApi, - R: TableRouter, - P: Collators, { type Error = Error; - type Create = CreateProposal; + type Create = CreateProposal; type Evaluate = Box>; fn propose(&self) -> Self::Create { @@ -343,15 +398,7 @@ impl bft::Proposer for Proposer parent_id: self.parent_id.clone(), client: self.client.clone(), transaction_pool: self.transaction_pool.clone(), - collation: CollationFetch::new( - self.local_duty.validation, - self.parent_id.clone(), - self.parent_hash.clone(), - self.collators.clone(), - self.client.clone() - ), table: self.table.clone(), - router: self.router.clone(), timing: ProposalTiming { timer: self.timer.clone(), attempt_propose: self.timer.interval(ATTEMPT_PROPOSE_EVERY), @@ -574,23 +621,19 @@ impl ProposalTiming { } /// Future which resolves upon the creation of a proposal. -pub struct CreateProposal { +pub struct CreateProposal { parent_hash: HeaderHash, parent_number: BlockNumber, parent_id: C::CheckedBlockId, client: Arc, transaction_pool: Arc>, - collation: CollationFetch, - router: R, table: Arc, timing: ProposalTiming, } -impl CreateProposal +impl CreateProposal where C: PolkadotApi, - R: TableRouter, - P: Collators, { fn propose_with(&self, candidates: Vec) -> Result { // TODO: handle case when current timestamp behind that in state. @@ -663,29 +706,14 @@ impl CreateProposal } } -impl Future for CreateProposal +impl Future for CreateProposal where C: PolkadotApi, - R: TableRouter, - P: Collators, { type Item = SubstrateBlock; type Error = Error; fn poll(&mut self) -> Poll { - // 1. poll local collation future. - match self.collation.poll() { - Ok(Async::Ready((collation, extrinsic))) => { - let hash = collation.receipt.hash(); - self.router.local_candidate_data(hash, collation.block_data, extrinsic); - - // TODO: if we are an availability guarantor also, we should produce an availability statement. - self.table.sign_and_import(&self.router, GenericStatement::Candidate(collation.receipt)); - } - Ok(Async::NotReady) => {}, - Err(_) => {}, // TODO: handle this failure to collate. - } - // 2. try to propose if we have enough includable candidates and other // delays have concluded. let included = self.table.includable_count(); diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 0b1f03a5bd8f0..95b0d99459ea9 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -180,6 +180,12 @@ struct Network(Arc); impl super::Network for Network { type TableRouter = Router; + + fn execute(&self, future: F) where F: Future + Send + 'static { + // TODO: CpuPool. + ::std::thread::spawn(move || { let _ = future.wait(); }); + } + fn table_router(&self, _table: Arc) -> Self::TableRouter { Router { network: self.0.clone() @@ -242,6 +248,7 @@ impl Service { ) -> Service where C: BlockchainEvents + ChainHead + bft::BlockImport + bft::Authorities + PolkadotApi + Send + Sync + 'static, + C::CheckedBlockId: Send + 'static, { let (signal, exit) = ::exit_future::signal(); let thread = thread::spawn(move || { From 68142876a28cd07e685845cbc1e5336e901d7ed6 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 18 May 2018 18:16:29 +0200 Subject: [PATCH 057/103] impl future in collator --- Cargo.lock | 1 + polkadot/collator/src/lib.rs | 14 +++++++------- polkadot/consensus/Cargo.toml | 1 + 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index db15ec89a1b28..b90fc0be0e997 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1296,6 +1296,7 @@ dependencies = [ "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-api 0.1.0", diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index 967a8e6de6fc7..d28bf94d86e2d 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -84,7 +84,7 @@ pub trait RelayChainContext { /// Collate the necessary ingress queue using the given context. pub fn collate_ingress<'a, R>(relay_context: R) - -> Box + 'a> + -> impl Future + 'a where R: RelayChainContext, R::Error: 'a, @@ -105,7 +105,7 @@ pub fn collate_ingress<'a, R>(relay_context: R) // and then by the parachain ID. // // then transform that into the consolidated egress queue. - Box::new(stream::futures_unordered(egress_fetch) + stream::futures_unordered(egress_fetch) .fold(BTreeMap::new(), |mut map, (routing_id, egresses)| { for (depth, egress) in egresses.into_iter().rev().enumerate() { let depth = -(depth as i64); @@ -116,19 +116,19 @@ pub fn collate_ingress<'a, R>(relay_context: R) }) .map(|ordered| ordered.into_iter().map(|((_, id), egress)| (id, egress))) .map(|i| i.collect::>()) - .map(ConsolidatedIngress)) + .map(ConsolidatedIngress) } /// Produce a candidate for the parachain. -pub fn collate<'a, R, P>(local_id: ParaId, relay_context: R, para_context: P) - -> Box + 'a> +pub fn collate<'a, R: 'a, P>(local_id: ParaId, relay_context: R, para_context: P) + -> impl Future + 'a where R: RelayChainContext, R::Error: 'a, R::FutureEgress: 'a, P: ParachainContext + 'a, { - Box::new(collate_ingress(relay_context).map(move |ingress| { + collate_ingress(relay_context).map(move |ingress| { let (block_data, _, signature) = para_context.produce_candidate( ingress.0.iter().flat_map(|&(id, ref msgs)| msgs.iter().cloned().map(move |msg| (id, msg))) ); @@ -139,7 +139,7 @@ pub fn collate<'a, R, P>(local_id: ParaId, relay_context: R, para_context: P) block: block_data, unprocessed_ingress: ingress, } - })) + }) } #[cfg(test)] diff --git a/polkadot/consensus/Cargo.toml b/polkadot/consensus/Cargo.toml index 125871dbb5843..896cd2ff13ba9 100644 --- a/polkadot/consensus/Cargo.toml +++ b/polkadot/consensus/Cargo.toml @@ -5,6 +5,7 @@ authors = ["Parity Technologies "] [dependencies] futures = "0.1.17" +futures-cpupool = "0.1" parking_lot = "0.4" tokio-core = "0.1.12" tokio-timer = "0.1" From a3c0ad07893d0aaf5de7a0d741cfbcead8e4244e Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 22 May 2018 14:53:21 +0200 Subject: [PATCH 058/103] fix comment --- polkadot/consensus/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 62475c4114131..30ee9f50c614e 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -714,12 +714,12 @@ impl Future for CreateProposal type Error = Error; fn poll(&mut self) -> Poll { - // 2. try to propose if we have enough includable candidates and other + // 1. try to propose if we have enough includable candidates and other // delays have concluded. let included = self.table.includable_count(); try_ready!(self.timing.poll(included)); - // 3. propose + // 2. propose let proposed_candidates = self.table.with_proposal(|proposed_set| { proposed_set.into_iter().cloned().collect() }); From 3ee8b93b8f61ffcf60a43b1246abb1bd91e7ae90 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 22 May 2018 15:25:06 +0200 Subject: [PATCH 059/103] governance proposals for adding and removing parachains --- polkadot/runtime/src/lib.rs | 7 +++++++ polkadot/runtime/src/parachains.rs | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index c8c750e63d140..6e2366e733aff 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -153,6 +153,7 @@ impl_outer_dispatch! { Democracy = 5, Council = 6, CouncilVoting = 7, + Parachains = 8, } } @@ -338,4 +339,10 @@ mod tests { assert_eq!(Extrinsic::decode(&mut &v[..]).unwrap(), xt); } + + #[test] + fn parachain_calls_are_privcall() { + let register = PrivCall::Parachains(parachains::PrivCall::register_parachain(0.into(), vec![1, 2, 3], vec![])); + let deregister = PrivCall::Parachains(parachains::PrivCall::deregister_parachain(0.into())); + } } diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index e331b4d428d11..6164f59aca901 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -46,6 +46,10 @@ decl_module! { // provide candidate receipts for parachains, in ascending order by id. fn set_heads(aux, heads: Vec) = 0; } + pub enum PrivCall { + fn register_parachain(id: Id, code: Vec, initial_head_data: Vec) = 0; + fn deregister_parachain(id: Id) = 1; + } } decl_storage! { From e31d39dcfe4110a8bdce0646e6b1b1d12ba90abc Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 22 May 2018 15:33:20 +0200 Subject: [PATCH 060/103] bump protocol version --- substrate/network/src/protocol.rs | 11 ++++++++--- substrate/network/src/service.rs | 4 +--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index b2b87e80ff553..d232df367f77b 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -37,7 +37,12 @@ use error; use super::header_hash; const REQUEST_TIMEOUT_SEC: u64 = 40; -const PROTOCOL_VERSION: u32 = 0; + +/// Current protocol version. +pub (crate) const CURRENT_VERSION: u32 = 1; +/// Current packet count. +pub (crate) const CURRENT_PACKET_COUNT: u8 = 1; + // Maximum allowed entries in `BlockResponse` const MAX_BLOCK_DATA_RESPONSE: u32 = 128; @@ -402,7 +407,7 @@ impl Protocol { trace!(target: "sync", "Peer {} genesis hash mismatch (ours: {}, theirs: {})", peer_id, self.genesis_hash, status.genesis_hash); return; } - if status.version != PROTOCOL_VERSION { + if status.version != CURRENT_VERSION { io.disable_peer(peer_id); trace!(target: "sync", "Peer {} unsupported eth protocol ({})", peer_id, status.version); return; @@ -471,7 +476,7 @@ impl Protocol { fn send_status(&self, io: &mut SyncIo, peer_id: PeerId) { if let Ok(info) = self.chain.info() { let status = message::Status { - version: PROTOCOL_VERSION, + version: CURRENT_VERSION, genesis_hash: info.chain.genesis_hash, roles: self.config.roles.into(), best_number: info.chain.best_number, diff --git a/substrate/network/src/service.rs b/substrate/network/src/service.rs index f32c88a26339b..10d1dcd5b6e2b 100644 --- a/substrate/network/src/service.rs +++ b/substrate/network/src/service.rs @@ -35,8 +35,6 @@ use message::{Statement, LocalizedBftMessage}; /// Polkadot devp2p protocol id pub const DOT_PROTOCOL_ID: ProtocolId = *b"dot"; -const V0_PACKET_COUNT: u8 = 1; - /// Type that represents fetch completion future. pub type FetchFuture = oneshot::Receiver>; /// Type that represents statement stream. @@ -184,7 +182,7 @@ impl Service { Err(err) => warn!("Error starting network: {}", err), _ => {}, }; - self.network.register_protocol(self.handler.clone(), DOT_PROTOCOL_ID, &[(0, V0_PACKET_COUNT)]) + self.network.register_protocol(self.handler.clone(), DOT_PROTOCOL_ID, &[(::protocol::CURRENT_VERSION, ::protocol::CURRENT_PACKET_COUNT)]) .unwrap_or_else(|e| warn!("Error registering polkadot protocol: {:?}", e)); } From 02906b57f72bc33e23ffc991dc8a170c845006be Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 22 May 2018 16:01:12 +0200 Subject: [PATCH 061/103] tear out polkadot-specific pieces of substrate-network --- Cargo.lock | 7 ++ Cargo.toml | 1 + polkadot/network/Cargo.toml | 8 ++ polkadot/network/src/lib.rs | 74 ++++++++++++++ polkadot/runtime/src/lib.rs | 4 +- substrate/network/src/consensus.rs | 129 +----------------------- substrate/network/src/lib.rs | 8 +- substrate/network/src/message.rs | 102 ++++--------------- substrate/network/src/protocol.rs | 82 ++++----------- substrate/network/src/service.rs | 47 ++------- substrate/network/src/test/consensus.rs | 3 +- 11 files changed, 147 insertions(+), 318 deletions(-) create mode 100644 polkadot/network/Cargo.toml create mode 100644 polkadot/network/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index b90fc0be0e997..645dbb9bbff09 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1351,6 +1351,13 @@ dependencies = [ "tempdir 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "polkadot-network" +version = "0.1.0" +dependencies = [ + "substrate-network 0.1.0", +] + [[package]] name = "polkadot-parachain" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index ea3dc865ab2e4..1c8288dd4be2a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ members = [ "polkadot/consensus", "polkadot/executor", "polkadot/keystore", + "polkadot/network", "polkadot/parachain", "polkadot/primitives", "polkadot/runtime", diff --git a/polkadot/network/Cargo.toml b/polkadot/network/Cargo.toml new file mode 100644 index 0000000000000..66e11cee1e3e8 --- /dev/null +++ b/polkadot/network/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "polkadot-network" +version = "0.1.0" +authors = ["Parity Technologies "] +description = "Polkadot-specific networking protocol" + +[dependencies] +substrate-network = { path = "../../substrate/network" } diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs new file mode 100644 index 0000000000000..28a70eeda7b92 --- /dev/null +++ b/polkadot/network/src/lib.rs @@ -0,0 +1,74 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +/// Request candidate block data from a peer. +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +pub struct CandidateRequest { + /// Unique request id. + pub id: RequestId, + /// Candidate receipt hash. + pub hash: Hash, +} + +/// Candidate block data response. +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +pub struct CandidateResponse { + /// Unique request id. + pub id: RequestId, + /// Candidate data. Empty if the peer does not have the candidate anymore. + pub data: Option>, +} + +/// Statements circulated among peers. +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +pub enum UnsignedStatement { + /// Broadcast by a authority to indicate that this is his candidate for + /// inclusion. + /// + /// Broadcasting two different candidate messages per round is not allowed. + Candidate(Vec), + /// Broadcast by a authority to attest that the candidate with given digest + /// is valid. + Valid(Hash), + /// Broadcast by a authority to attest that the auxiliary data for a candidate + /// with given digest is available. + Available(Hash), + /// Broadcast by a authority to attest that the candidate with given digest + /// is invalid. + Invalid(Hash), +} + +/// A signed statement. +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +pub struct Statement { + /// Parent relay chain block header hash. + pub parent_hash: HeaderHash, + /// The statement. + pub statement: UnsignedStatement, + /// The signature. + pub signature: ed25519::Signature, + /// The sender. + pub sender: AuthorityId, +} + + +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index 6e2366e733aff..bf330f0430e4c 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -342,7 +342,7 @@ mod tests { #[test] fn parachain_calls_are_privcall() { - let register = PrivCall::Parachains(parachains::PrivCall::register_parachain(0.into(), vec![1, 2, 3], vec![])); - let deregister = PrivCall::Parachains(parachains::PrivCall::deregister_parachain(0.into())); + let _register = PrivCall::Parachains(parachains::PrivCall::register_parachain(0.into(), vec![1, 2, 3], vec![])); + let _deregister = PrivCall::Parachains(parachains::PrivCall::deregister_parachain(0.into())); } } diff --git a/substrate/network/src/consensus.rs b/substrate/network/src/consensus.rs index 5c4689384deb3..0e64c7fd778d1 100644 --- a/substrate/network/src/consensus.rs +++ b/substrate/network/src/consensus.rs @@ -17,34 +17,24 @@ //! Consensus related bits of the network service. use std::collections::{HashMap, HashSet}; -use futures::sync::{oneshot, mpsc}; +use futures::sync::mpsc; use std::time::{Instant, Duration}; use io::SyncIo; use protocol::Protocol; use network::PeerId; use primitives::{Hash, block::HeaderHash, block::Id as BlockId, block::Header}; use message::{self, Message}; -use runtime_support::Hashable; // TODO: Add additional spam/DoS attack protection. const MESSAGE_LIFETIME_SECONDS: u64 = 600; -struct CandidateRequest { - id: message::RequestId, - completion: oneshot::Sender>, -} - struct PeerConsensus { - candidate_fetch: Option, - candidate_available: Option, known_messages: HashSet, } -/// Consensus network protocol handler. Manages statements and candidate requests. +/// Consensus network protocol handler. Propagates BFT messages. pub struct Consensus { peers: HashMap, - our_candidate: Option<(Hash, Vec)>, - statement_sink: Option>, bft_message_sink: Option<(mpsc::UnboundedSender, Hash)>, messages: Vec<(Hash, Instant, message::Message)>, message_hashes: HashSet, @@ -56,8 +46,6 @@ impl Consensus { pub fn new(best_hash: HeaderHash) -> Consensus { Consensus { peers: HashMap::new(), - our_candidate: None, - statement_sink: None, bft_message_sink: None, messages: Default::default(), message_hashes: Default::default(), @@ -67,14 +55,13 @@ impl Consensus { /// Closes all notification streams. pub fn restart(&mut self) { - self.statement_sink = None; self.bft_message_sink = None; } /// Handle new connected peer. pub fn new_peer(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId, roles: &[message::Role]) { - if roles.iter().any(|r| *r == message::Role::Validator) { - trace!(target:"sync", "Registering validator {}", peer_id); + if roles.iter().any(|r| *r == message::Role::Authority) { + trace!(target:"sync", "Registering authority {}", peer_id); // Send out all known messages. // TODO: limit by size let mut known_messages = HashSet::new(); @@ -83,8 +70,6 @@ impl Consensus { protocol.send_message(io, peer_id, message.clone()); } self.peers.insert(peer_id, PeerConsensus { - candidate_fetch: None, - candidate_available: None, known_messages, }); } @@ -104,41 +89,6 @@ impl Consensus { } } - pub fn on_statement(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId, statement: message::Statement, hash: Hash) { - if self.message_hashes.contains(&hash) { - trace!(target:"sync", "Ignored already known statement from {}", peer_id); - } - if let Some(ref mut peer) = self.peers.get_mut(&peer_id) { - // TODO: validate signature? - match &statement.statement { - &message::UnsignedStatement::Candidate(ref receipt) => peer.candidate_available = Some(Hash::from(receipt.blake2_256())), - &message::UnsignedStatement::Available(ref hash) => peer.candidate_available = Some(*hash), - &message::UnsignedStatement::Valid(_) | &message::UnsignedStatement::Invalid(_) => (), - } - peer.known_messages.insert(hash); - if let Some(sink) = self.statement_sink.take() { - if let Err(e) = sink.unbounded_send(statement.clone()) { - trace!(target:"sync", "Error broadcasting statement notification: {:?}", e); - } else { - self.statement_sink = Some(sink); - } - } - } else { - trace!(target:"sync", "Ignored statement from unregistered peer {}", peer_id); - return; - } - let message = Message::Statement(statement); - self.register_message(hash.clone(), message.clone()); - // Propagate to other peers. - self.propagate(io, protocol, message, hash); - } - - pub fn statements(&mut self) -> mpsc::UnboundedReceiver{ - let (sink, stream) = mpsc::unbounded(); - self.statement_sink = Some(sink); - stream - } - pub fn on_bft_message(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId, message: message::LocalizedBftMessage, hash: Hash) { if self.message_hashes.contains(&hash) { trace!(target:"sync", "Ignored already known BFT message from {}", peer_id); @@ -200,39 +150,6 @@ impl Consensus { stream } - pub fn fetch_candidate(&mut self, io: &mut SyncIo, protocol: &Protocol, hash: &Hash) -> oneshot::Receiver> { - // Request from the first peer that has it available. - // TODO: random peer selection. - trace!(target:"sync", "Trying to fetch candidate {:?}", hash); - let (sender, receiver) = oneshot::channel(); - if let Some((peer_id, ref mut peer)) = self.peers.iter_mut() - .find(|&(_, ref peer)| peer.candidate_fetch.is_none() && peer.candidate_available.as_ref().map_or(false, |h| h == hash)) { - - trace!(target:"sync", "Fetching candidate from {}", peer_id); - let id = 0; //TODO: generate unique id - peer.candidate_fetch = Some(CandidateRequest { - id: id, - completion: sender, - }); - let request = message::CandidateRequest { - id: id, - hash: *hash, - }; - protocol.send_message(io, *peer_id, Message::CandidateRequest(request)); - } - // If no peer found `sender` is dropped and `receiver` is canceled immediatelly. - return receiver; - } - - pub fn send_statement(&mut self, io: &mut SyncIo, protocol: &Protocol, statement: message::Statement) { - // Broadcast statement to all validators. - trace!(target:"sync", "Broadcasting statement {:?}", statement); - let message = Message::Statement(statement); - let hash = Protocol::hash_message(&message); - self.register_message(hash.clone(), message.clone()); - self.propagate(io, protocol, message, hash); - } - pub fn send_bft_message(&mut self, io: &mut SyncIo, protocol: &Protocol, message: message::LocalizedBftMessage) { // Broadcast message to all validators. trace!(target:"sync", "Broadcasting BFT message {:?}", message); @@ -242,43 +159,6 @@ impl Consensus { self.propagate(io, protocol, message, hash); } - pub fn set_local_candidate(&mut self, candidate: Option<(Hash, Vec)>) { - trace!(target:"sync", "Set local candidate to {:?}", candidate.as_ref().map(|&(h, _)| h)); - self.our_candidate = candidate; - } - - pub fn on_candidate_request(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId, request: message::CandidateRequest) { - let response = match self.our_candidate { - Some((ref hash, ref data)) if *hash == request.hash => Some(data.clone()), - _ => None, - }; - let msg = message::CandidateResponse { - id: request.id, - data: response, - }; - protocol.send_message(io, peer_id, Message::CandidateResponse(msg)); - } - - pub fn on_candidate_response(&mut self, io: &mut SyncIo, _protocol: &Protocol, peer_id: PeerId, response: message::CandidateResponse) { - if let Some(ref mut peer) = self.peers.get_mut(&peer_id) { - if let Some(request) = peer.candidate_fetch.take() { - if response.id == request.id { - if let Some(data) = response.data { - if let Err(e) = request.completion.send(data) { - trace!(target:"sync", "Error sending candidate data notification: {:?}", e); - } - } - } else { - trace!(target:"sync", "Unexpected candidate response from {}", peer_id); - io.disable_peer(peer_id); - } - } else { - trace!(target:"sync", "Unexpected candidate response from {}", peer_id); - io.disable_peer(peer_id); - } - } - } - pub fn peer_disconnected(&mut self, _io: &mut SyncIo, _protocol: &Protocol, peer_id: PeerId) { self.peers.remove(&peer_id); } @@ -303,7 +183,6 @@ impl Consensus { best_header.map_or(true, |header| { if match *message { Message::BftMessage(ref msg) => msg.parent_hash != header.parent_hash, - Message::Statement(ref msg) => msg.parent_hash != header.parent_hash, _ => true, } { hashes.remove(hash); diff --git a/substrate/network/src/lib.rs b/substrate/network/src/lib.rs index 3cc9d994eee91..0840731647b72 100644 --- a/substrate/network/src/lib.rs +++ b/substrate/network/src/lib.rs @@ -16,8 +16,8 @@ #![warn(missing_docs)] -//! Implements polkadot protocol version as specified here: -//! https://github.com/paritytech/polkadot/wiki/Network-protocol +//! Substrate-specific P2P networking: synchronizing blocks, propagating BFT messages. +//! Allows attachment of an optional subprotocol for chain-specific requests. extern crate ethcore_network_devp2p as network_devp2p; extern crate ethcore_network as network; @@ -57,13 +57,13 @@ pub mod error; #[cfg(test)] mod test; -pub use service::{Service, FetchFuture, StatementStream, ConsensusService, BftMessageStream, +pub use service::{Service, FetchFuture, ConsensusService, BftMessageStream, TransactionPool, Params, ManageNetwork, SyncProvider}; pub use protocol::{ProtocolStatus}; pub use sync::{Status as SyncStatus, SyncState}; pub use network::{NonReservedPeerMode, NetworkConfiguration}; pub use network_devp2p::{ConnectionFilter, ConnectionDirection}; -pub use message::{Statement, BftMessage, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal}; +pub use message::{BftMessage, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal}; pub use error::Error; pub use config::{Role, ProtocolConfig}; diff --git a/substrate/network/src/message.rs b/substrate/network/src/message.rs index 8e1fe804dda05..97b16557204c7 100644 --- a/substrate/network/src/message.rs +++ b/substrate/network/src/message.rs @@ -1,18 +1,18 @@ // Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. +// This file is part of Substrate. -// Polkadot is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Polkadot is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see .? +// along with Substrate. If not, see . //! Network packet message types. These get serialized and put into the lower level protocol payload. @@ -28,14 +28,12 @@ type Bytes = Vec; /// Configured node role. #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub enum Role { - /// Full relay chain client with no additional responsibilities. + /// Full node with no additional responsibilities. Full, - /// Relay chain light client. + /// Light client. Light, /// Parachain validator. - Validator, - /// Parachain collator. - Collator, + Authority, } impl Role { @@ -46,8 +44,7 @@ impl Role { match *r { Role::Full => flags = flags | RoleFlags::FULL, Role::Light => flags = flags | RoleFlags::LIGHT, - Role::Validator => flags = flags | RoleFlags::VALIDATOR, - Role::Collator => flags = flags | RoleFlags::COLLATOR, + Role::Authority => flags = flags | RoleFlags::AUTHORITY, } } flags @@ -63,11 +60,8 @@ impl From for Vec where { if !(flags & RoleFlags::LIGHT).is_empty() { roles.push(Role::Light); } - if !(flags & RoleFlags::VALIDATOR).is_empty() { - roles.push(Role::Validator); - } - if !(flags & RoleFlags::COLLATOR).is_empty() { - roles.push(Role::Collator); + if !(flags & RoleFlags::AUTHORITY).is_empty() { + roles.push(Role::Authority); } roles } @@ -125,39 +119,7 @@ pub enum Direction { } /// A set of transactions. -pub type Transactions = Vec>; - -/// Statements circulated among peers. -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] -pub enum UnsignedStatement { - /// Broadcast by a authority to indicate that this is his candidate for - /// inclusion. - /// - /// Broadcasting two different candidate messages per round is not allowed. - Candidate(Vec), - /// Broadcast by a authority to attest that the candidate with given digest - /// is valid. - Valid(Hash), - /// Broadcast by a authority to attest that the auxiliary data for a candidate - /// with given digest is available. - Available(Hash), - /// Broadcast by a authority to attest that the candidate with given digest - /// is invalid. - Invalid(Hash), -} - -/// A signed statement. -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] -pub struct Statement { - /// Parent relay chain block header hash. - pub parent_hash: HeaderHash, - /// The statement. - pub statement: UnsignedStatement, - /// The signature. - pub signature: ed25519::Signature, - /// The sender. - pub sender: AuthorityId, -} +pub type Extrinsics = Vec>; /// Communication that can occur between participants in consensus. @@ -237,14 +199,8 @@ pub enum Message { BlockResponse(BlockResponse), /// Block announce. BlockAnnounce(BlockAnnounce), - /// Transactions. - Transactions(Transactions), - /// Consensus statement. - Statement(Statement), - /// Candidate data request. - CandidateRequest(CandidateRequest), - /// Candidate response. - CandidateResponse(CandidateResponse), + /// Extrinsics. + Extrinsics(Extrinsics), /// BFT Consensus statement. BftMessage(LocalizedBftMessage), } @@ -261,16 +217,14 @@ pub struct Status { pub best_hash: HeaderHash, /// Genesis block hash. pub genesis_hash: HeaderHash, - /// Signatue of `best_hash` made with validator address. Required for the validator role. - pub validator_signature: Option, - /// Validator address. Required for the validator role. - pub validator_id: Option, - /// Parachain id. Required for the collator role. - pub parachain_id: Option, + /// Signatue of `best_hash` made with authority address. Required for the authority role. + pub authority_signature: Option, + /// Authority address. Required for the authority role. + pub authority_id: Option, } -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] /// Request block data from a peer. +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub struct BlockRequest { /// Unique request id. pub id: RequestId, @@ -286,26 +240,8 @@ pub struct BlockRequest { pub max: Option, } -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] -/// Request candidate block data from a peer. -pub struct CandidateRequest { - /// Unique request id. - pub id: RequestId, - /// Candidate receipt hash. - pub hash: Hash, -} - -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] -/// Candidate block data response. -pub struct CandidateResponse { - /// Unique request id. - pub id: RequestId, - /// Candidate data. Empty if the peer does not have the candidate anymore. - pub data: Option>, -} - -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] /// Response to `BlockRequest` +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub struct BlockResponse { /// Id of a request this response was made for. pub id: RequestId, diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index d232df367f77b..f944d9125c0fb 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -19,7 +19,6 @@ use std::{mem, cmp}; use std::sync::Arc; use std::time; use parking_lot::{RwLock, Mutex}; -use futures::sync::oneshot; use serde_json; use primitives::block::{HeaderHash, ExtrinsicHash, Number as BlockNumber, Header, Id as BlockId}; use primitives::{Hash, blake2_256}; @@ -29,7 +28,7 @@ use network::{PeerId, NodeId}; use message::{self, Message}; use sync::{ChainSync, Status as SyncStatus, SyncState}; use consensus::Consensus; -use service::{Role, TransactionPool, StatementStream, BftMessageStream}; +use service::{Role, TransactionPool, BftMessageStream}; use config::ProtocolConfig; use chain::Client; use io::SyncIo; @@ -87,7 +86,7 @@ struct Peer { /// Request timestamp request_timestamp: Option, /// Holds a set of transactions known to this peer. - known_transactions: HashSet, + known_extrinsics: HashSet, /// Holds a set of blocks known to this peer. known_blocks: HashSet, /// Request counter, @@ -185,11 +184,8 @@ impl Protocol { Message::BlockAnnounce(announce) => { self.on_block_announce(io, peer_id, announce); }, - Message::Statement(s) => self.on_statement(io, peer_id, s, blake2_256(data).into()), - Message::CandidateRequest(r) => self.on_candidate_request(io, peer_id, r), - Message::CandidateResponse(r) => self.on_candidate_response(io, peer_id, r), Message::BftMessage(m) => self.on_bft_message(io, peer_id, m, blake2_256(data).into()), - Message::Transactions(m) => self.on_transactions(io, peer_id, m), + Message::Extrinsics(m) => self.on_extrinsics(io, peer_id, m), } } @@ -297,21 +293,6 @@ impl Protocol { self.sync.write().on_block_data(io, self, peer, request, response); } - fn on_candidate_request(&self, io: &mut SyncIo, peer: PeerId, request: message::CandidateRequest) { - trace!(target: "sync", "CandidateRequest {} from {} for {}", request.id, peer, request.hash); - self.consensus.lock().on_candidate_request(io, self, peer, request); - } - - fn on_candidate_response(&self, io: &mut SyncIo, peer: PeerId, response: message::CandidateResponse) { - trace!(target: "sync", "CandidateResponse {} from {} with {:?} bytes", response.id, peer, response.data.as_ref().map(|d| d.len())); - self.consensus.lock().on_candidate_response(io, self, peer, response); - } - - fn on_statement(&self, io: &mut SyncIo, peer: PeerId, statement: message::Statement, hash: Hash) { - trace!(target: "sync", "Statement from {}: {:?}", peer, statement); - self.consensus.lock().on_statement(io, self, peer, statement, hash); - } - fn on_bft_message(&self, io: &mut SyncIo, peer: PeerId, message: message::LocalizedBftMessage, hash: Hash) { trace!(target: "sync", "BFT message from {}: {:?}", peer, message); self.consensus.lock().on_bft_message(io, self, peer, message, hash); @@ -327,26 +308,6 @@ impl Protocol { self.consensus.lock().bft_messages(parent_hash) } - /// See `ConsensusService` trait. - pub fn statements(&self) -> StatementStream { - self.consensus.lock().statements() - } - - /// See `ConsensusService` trait. - pub fn fetch_candidate(&self, io: &mut SyncIo, hash: &Hash) -> oneshot::Receiver> { - self.consensus.lock().fetch_candidate(io, self, hash) - } - - /// See `ConsensusService` trait. - pub fn send_statement(&self, io: &mut SyncIo, statement: message::Statement) { - self.consensus.lock().send_statement(io, self, statement) - } - - /// See `ConsensusService` trait. - pub fn set_local_candidate(&self, candidate: Option<(Hash, Vec)>) { - self.consensus.lock().set_local_candidate(candidate) - } - /// Perform time based maintenance. pub fn tick(&self, io: &mut SyncIo) { self.maintain_peers(io); @@ -420,7 +381,7 @@ impl Protocol { best_number: status.best_number, block_request: None, request_timestamp: None, - known_transactions: HashSet::new(), + known_extrinsics: HashSet::new(), known_blocks: HashSet::new(), next_request_id: 0, }; @@ -432,42 +393,42 @@ impl Protocol { consensus.new_peer(io, self, peer_id, &status.roles); } - /// Called when peer sends us new transactions - fn on_transactions(&self, _io: &mut SyncIo, peer_id: PeerId, transactions: message::Transactions) { - // Accept transactions only when fully synced + /// Called when peer sends us new extrinsics + fn on_extrinsics(&self, _io: &mut SyncIo, peer_id: PeerId, extrinsics: message::Extrinsics) { + // Accept extrinsics only when fully synced if self.sync.read().status().state != SyncState::Idle { - trace!(target: "sync", "{} Ignoring transactions while syncing", peer_id); + trace!(target: "sync", "{} Ignoring extrinsics while syncing", peer_id); return; } - trace!(target: "sync", "Received {} transactions from {}", transactions.len(), peer_id); + trace!(target: "sync", "Received {} extrinsics from {}", extrinsics.len(), peer_id); let mut peers = self.peers.write(); if let Some(ref mut peer) = peers.get_mut(&peer_id) { - for t in transactions { + for t in extrinsics { if let Some(hash) = self.transaction_pool.import(&t) { - peer.known_transactions.insert(hash); + peer.known_extrinsics.insert(hash); } } } } - /// Called when we propagate ready transactions to peers. - pub fn propagate_transactions(&self, io: &mut SyncIo) { - debug!(target: "sync", "Propagating transactions"); + /// Called when we propagate ready extrinsics to peers. + pub fn propagate_extrinsics(&self, io: &mut SyncIo) { + debug!(target: "sync", "Propagating extrinsics"); // Accept transactions only when fully synced if self.sync.read().status().state != SyncState::Idle { return; } - let transactions = self.transaction_pool.transactions(); + let extrinsics = self.transaction_pool.transactions(); let mut peers = self.peers.write(); for (peer_id, ref mut peer) in peers.iter_mut() { - let to_send: Vec<_> = transactions.iter().filter_map(|&(hash, ref t)| - if peer.known_transactions.insert(hash.clone()) { Some(t.clone()) } else { None }).collect(); + let to_send: Vec<_> = extrinsics.iter().filter_map(|&(hash, ref t)| + if peer.known_extrinsics.insert(hash.clone()) { Some(t.clone()) } else { None }).collect(); if !to_send.is_empty() { - trace!(target: "sync", "Sending {} transactions to {}", to_send.len(), peer_id); - self.send_message(io, *peer_id, Message::Transactions(to_send)); + trace!(target: "sync", "Sending {} extrinsics to {}", to_send.len(), peer_id); + self.send_message(io, *peer_id, Message::Extrinsics(to_send)); } } } @@ -481,9 +442,8 @@ impl Protocol { roles: self.config.roles.into(), best_number: info.chain.best_number, best_hash: info.chain.best_hash, - validator_signature: None, - validator_id: None, - parachain_id: None, + authority_signature: None, + authority_id: None, }; self.send_message(io, peer_id, Message::Status(status)) } diff --git a/substrate/network/src/service.rs b/substrate/network/src/service.rs index 10d1dcd5b6e2b..49579754601fc 100644 --- a/substrate/network/src/service.rs +++ b/substrate/network/src/service.rs @@ -30,15 +30,13 @@ use protocol::{Protocol, ProtocolStatus, PeerInfo as ProtocolPeerInfo, Transacti use config::{ProtocolConfig}; use error::Error; use chain::Client; -use message::{Statement, LocalizedBftMessage}; +use message::LocalizedBftMessage; /// Polkadot devp2p protocol id pub const DOT_PROTOCOL_ID: ProtocolId = *b"dot"; /// Type that represents fetch completion future. pub type FetchFuture = oneshot::Receiver>; -/// Type that represents statement stream. -pub type StatementStream = mpsc::UnboundedReceiver; /// Type that represents bft messages stream. pub type BftMessageStream = mpsc::UnboundedReceiver; @@ -57,10 +55,8 @@ bitflags! { const FULL = 0b00000001; /// Light client node. const LIGHT = 0b00000010; - /// Act as a validator. - const VALIDATOR = 0b00000100; - /// Act as a collator. - const COLLATOR = 0b00001000; + /// Act as an authority + const AUTHORITY = 0b00000100; } } @@ -86,18 +82,8 @@ pub trait TransactionPool: Send + Sync { /// ConsensusService pub trait ConsensusService: Send + Sync { - /// Get statement stream. - fn statements(&self) -> StatementStream; - /// Send out a statement. - fn send_statement(&self, statement: Statement); /// Maintain connectivity to given addresses. fn connect_to_authorities(&self, addresses: &[String]); - /// Fetch candidate. - fn fetch_candidate(&self, hash: &Hash) -> oneshot::Receiver>; - /// Note local candidate. Accepts candidate receipt hash and candidate data. - /// Pass `None` to clear the candidate. - fn set_local_candidate(&self, candidate: Option<(Hash, Vec)>); - /// Get BFT message stream for messages corresponding to consensus on given /// parent hash. fn bft_messages(&self, parent_hash: Hash) -> BftMessageStream; @@ -171,7 +157,7 @@ impl Service { /// Called when new transactons are imported by the client. pub fn trigger_repropagate(&self) { self.network.with_context(DOT_PROTOCOL_ID, |context| { - self.handler.protocol.propagate_transactions(&mut NetSyncIo::new(context)); + self.handler.protocol.propagate_extrinsics(&mut NetSyncIo::new(context)); }); } @@ -182,7 +168,7 @@ impl Service { Err(err) => warn!("Error starting network: {}", err), _ => {}, }; - self.network.register_protocol(self.handler.clone(), DOT_PROTOCOL_ID, &[(::protocol::CURRENT_VERSION, ::protocol::CURRENT_PACKET_COUNT)]) + self.network.register_protocol(self.handler.clone(), DOT_PROTOCOL_ID, &[(::protocol::CURRENT_VERSION as u8, ::protocol::CURRENT_PACKET_COUNT)]) .unwrap_or_else(|e| warn!("Error registering polkadot protocol: {:?}", e)); } @@ -238,30 +224,10 @@ impl SyncProvider for Service { /// ConsensusService impl ConsensusService for Service { - fn statements(&self) -> StatementStream { - self.handler.protocol.statements() - } - fn connect_to_authorities(&self, _addresses: &[String]) { //TODO: implement me } - fn fetch_candidate(&self, hash: &Hash) -> oneshot::Receiver> { - self.network.with_context_eval(DOT_PROTOCOL_ID, |context| { - self.handler.protocol.fetch_candidate(&mut NetSyncIo::new(context), hash) - }).expect("DOT Service is registered") - } - - fn send_statement(&self, statement: Statement) { - self.network.with_context(DOT_PROTOCOL_ID, |context| { - self.handler.protocol.send_statement(&mut NetSyncIo::new(context), statement); - }); - } - - fn set_local_candidate(&self, candidate: Option<(Hash, Vec)>) { - self.handler.protocol.set_local_candidate(candidate) - } - fn bft_messages(&self, parent_hash: Hash) -> BftMessageStream { self.handler.protocol.bft_messages(parent_hash) } @@ -297,7 +263,7 @@ impl NetworkProtocolHandler for ProtocolHandler { fn timeout(&self, io: &NetworkContext, timer: TimerToken) { match timer { TICK_TOKEN => self.protocol.tick(&mut NetSyncIo::new(io)), - PROPAGATE_TOKEN => self.protocol.propagate_transactions(&mut NetSyncIo::new(io)), + PROPAGATE_TOKEN => self.protocol.propagate_extrinsics(&mut NetSyncIo::new(io)), _ => {} } } @@ -319,7 +285,6 @@ pub trait ManageNetwork : Send + Sync { fn stop_network(&self); } - impl ManageNetwork for Service { fn accept_unreserved_peers(&self) { self.network.set_non_reserved_mode(NonReservedPeerMode::Accept); diff --git a/substrate/network/src/test/consensus.rs b/substrate/network/src/test/consensus.rs index 9cf7dad818722..4c451123c94b0 100644 --- a/substrate/network/src/test/consensus.rs +++ b/substrate/network/src/test/consensus.rs @@ -21,7 +21,7 @@ use futures::Stream; #[test] fn bft_messages_include_those_sent_before_asking_for_stream() { let mut config = ::config::ProtocolConfig::default(); - config.roles = ::service::Role::VALIDATOR | ::service::Role::FULL; + config.roles = ::service::Role::AUTHORITY | ::service::Role::FULL; let mut net = TestNet::new_with_config(2, config); net.sync(); // necessary for handshaking @@ -41,7 +41,6 @@ fn bft_messages_include_those_sent_before_asking_for_stream() { parent_hash: parent_hash, }; - let as_bytes = ::serde_json::to_vec(&Message::BftMessage(localized.clone())).unwrap(); peer.sync.handle_packet(&mut io, 1, &as_bytes[..]); From c7882aaf00dd6f366855c5e09263892a00fb5161 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 22 May 2018 18:44:19 +0200 Subject: [PATCH 062/103] extract out polkadot-specific stuff from substrate-network --- substrate/network/src/chain.rs | 24 +-- substrate/network/src/consensus.rs | 31 ++- substrate/network/src/lib.rs | 3 +- substrate/network/src/message.rs | 7 +- substrate/network/src/protocol.rs | 261 +++++++++++++++++------- substrate/network/src/service.rs | 40 ++-- substrate/network/src/specialization.rs | 48 +++++ substrate/network/src/sync.rs | 81 ++++---- substrate/network/src/test/mod.rs | 79 ++++--- 9 files changed, 386 insertions(+), 188 deletions(-) create mode 100644 substrate/network/src/specialization.rs diff --git a/substrate/network/src/chain.rs b/substrate/network/src/chain.rs index 10d7a0c7d5a79..b7b18fb03c476 100644 --- a/substrate/network/src/chain.rs +++ b/substrate/network/src/chain.rs @@ -1,22 +1,22 @@ // Copyright 2017 Parity Technologies (UK) Ltd. // This file is part of Polkadot. -// Polkadot is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Polkadot is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . +// along with Substrate. If not, see . //! Blockchain access trait -use client::{self, Client as PolkadotClient, ImportResult, ClientInfo, BlockStatus, BlockOrigin}; +use client::{self, Client as SubstrateClient, ImportResult, ClientInfo, BlockStatus, BlockOrigin}; use client::error::Error; use state_machine; use primitives::block::{self, Id as BlockId}; @@ -45,7 +45,7 @@ pub trait Client: Send + Sync { fn justification(&self, id: &BlockId) -> Result, Error>; } -impl Client for PolkadotClient where +impl Client for SubstrateClient where B: client::backend::Backend + Send + Sync + 'static, E: state_machine::CodeExecutor + Send + Sync + 'static, Error: From<<::State as state_machine::backend::Backend>::Error>, { @@ -54,30 +54,30 @@ impl Client for PolkadotClient where // TODO: defer justification check. let justified_header = self.check_justification(header, justification.into())?; let origin = if is_best { BlockOrigin::NetworkBroadcast } else { BlockOrigin::NetworkInitialSync }; - (self as &PolkadotClient).import_block(origin, justified_header, body) + (self as &SubstrateClient).import_block(origin, justified_header, body) } fn info(&self) -> Result { - (self as &PolkadotClient).info() + (self as &SubstrateClient).info() } fn block_status(&self, id: &BlockId) -> Result { - (self as &PolkadotClient).block_status(id) + (self as &SubstrateClient).block_status(id) } fn block_hash(&self, block_number: block::Number) -> Result, Error> { - (self as &PolkadotClient).block_hash(block_number) + (self as &SubstrateClient).block_hash(block_number) } fn header(&self, id: &BlockId) -> Result, Error> { - (self as &PolkadotClient).header(id) + (self as &SubstrateClient).header(id) } fn body(&self, id: &BlockId) -> Result, Error> { - (self as &PolkadotClient).body(id) + (self as &SubstrateClient).body(id) } fn justification(&self, id: &BlockId) -> Result, Error> { - (self as &PolkadotClient).justification(id) + (self as &SubstrateClient).justification(id) } } diff --git a/substrate/network/src/consensus.rs b/substrate/network/src/consensus.rs index 0e64c7fd778d1..b4ab87693861a 100644 --- a/substrate/network/src/consensus.rs +++ b/substrate/network/src/consensus.rs @@ -19,11 +19,10 @@ use std::collections::{HashMap, HashSet}; use futures::sync::mpsc; use std::time::{Instant, Duration}; -use io::SyncIo; -use protocol::Protocol; use network::PeerId; use primitives::{Hash, block::HeaderHash, block::Id as BlockId, block::Header}; use message::{self, Message}; +use protocol::Context; // TODO: Add additional spam/DoS attack protection. const MESSAGE_LIFETIME_SECONDS: u64 = 600; @@ -43,7 +42,7 @@ pub struct Consensus { impl Consensus { /// Create a new instance. - pub fn new(best_hash: HeaderHash) -> Consensus { + pub(crate) fn new(best_hash: HeaderHash) -> Consensus { Consensus { peers: HashMap::new(), bft_message_sink: None, @@ -54,12 +53,12 @@ impl Consensus { } /// Closes all notification streams. - pub fn restart(&mut self) { + pub(crate) fn restart(&mut self) { self.bft_message_sink = None; } /// Handle new connected peer. - pub fn new_peer(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId, roles: &[message::Role]) { + pub(crate) fn new_peer(&mut self, protocol: &mut Context, peer_id: PeerId, roles: &[message::Role]) { if roles.iter().any(|r| *r == message::Role::Authority) { trace!(target:"sync", "Registering authority {}", peer_id); // Send out all known messages. @@ -67,7 +66,7 @@ impl Consensus { let mut known_messages = HashSet::new(); for &(ref hash, _, ref message) in self.messages.iter() { known_messages.insert(hash.clone()); - protocol.send_message(io, peer_id, message.clone()); + protocol.send_message(peer_id, message.clone()); } self.peers.insert(peer_id, PeerConsensus { known_messages, @@ -75,10 +74,10 @@ impl Consensus { } } - fn propagate(&mut self, io: &mut SyncIo, protocol: &Protocol, message: message::Message, hash: Hash) { + fn propagate(&mut self, protocol: &mut Context, message: message::Message, hash: Hash) { for (id, ref mut peer) in self.peers.iter_mut() { if peer.known_messages.insert(hash.clone()) { - protocol.send_message(io, *id, message.clone()); + protocol.send_message(*id, message.clone()); } } } @@ -89,7 +88,7 @@ impl Consensus { } } - pub fn on_bft_message(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId, message: message::LocalizedBftMessage, hash: Hash) { + pub(crate) fn on_bft_message(&mut self, protocol: &mut Context, peer_id: PeerId, message: message::LocalizedBftMessage, hash: Hash) { if self.message_hashes.contains(&hash) { trace!(target:"sync", "Ignored already known BFT message from {}", peer_id); return; @@ -129,10 +128,10 @@ impl Consensus { let message = Message::BftMessage(message); self.register_message(hash.clone(), message.clone()); // Propagate to other peers. - self.propagate(io, protocol, message, hash); + self.propagate(protocol, message, hash); } - pub fn bft_messages(&mut self, parent_hash: Hash) -> mpsc::UnboundedReceiver{ + pub(crate) fn bft_messages(&mut self, parent_hash: Hash) -> mpsc::UnboundedReceiver{ let (sink, stream) = mpsc::unbounded(); for &(_, _, ref message) in self.messages.iter() { @@ -150,20 +149,20 @@ impl Consensus { stream } - pub fn send_bft_message(&mut self, io: &mut SyncIo, protocol: &Protocol, message: message::LocalizedBftMessage) { + pub(crate) fn send_bft_message(&mut self, protocol: &mut Context, message: message::LocalizedBftMessage) { // Broadcast message to all validators. trace!(target:"sync", "Broadcasting BFT message {:?}", message); let message = Message::BftMessage(message); - let hash = Protocol::hash_message(&message); + let hash = ::protocol::hash_message(&message); self.register_message(hash.clone(), message.clone()); - self.propagate(io, protocol, message, hash); + self.propagate(protocol, message, hash); } - pub fn peer_disconnected(&mut self, _io: &mut SyncIo, _protocol: &Protocol, peer_id: PeerId) { + pub(crate) fn peer_disconnected(&mut self, _protocol: &mut Context, peer_id: PeerId) { self.peers.remove(&peer_id); } - pub fn collect_garbage(&mut self, best_hash_and_header: Option<(HeaderHash, &Header)>) { + pub(crate) fn collect_garbage(&mut self, best_hash_and_header: Option<(HeaderHash, &Header)>) { let hashes = &mut self.message_hashes; let last_block_hash = &mut self.last_block_hash; let before = self.messages.len(); diff --git a/substrate/network/src/lib.rs b/substrate/network/src/lib.rs index 0840731647b72..c8de32ebc8d46 100644 --- a/substrate/network/src/lib.rs +++ b/substrate/network/src/lib.rs @@ -54,6 +54,7 @@ mod chain; mod blocks; mod consensus; pub mod error; +pub mod specialization; #[cfg(test)] mod test; @@ -61,7 +62,7 @@ pub use service::{Service, FetchFuture, ConsensusService, BftMessageStream, TransactionPool, Params, ManageNetwork, SyncProvider}; pub use protocol::{ProtocolStatus}; pub use sync::{Status as SyncStatus, SyncState}; -pub use network::{NonReservedPeerMode, NetworkConfiguration}; +pub use network::{NonReservedPeerMode, NetworkConfiguration, PeerId}; pub use network_devp2p::{ConnectionFilter, ConnectionDirection}; pub use message::{BftMessage, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal}; pub use error::Error; diff --git a/substrate/network/src/message.rs b/substrate/network/src/message.rs index 97b16557204c7..3b6690c387fef 100644 --- a/substrate/network/src/message.rs +++ b/substrate/network/src/message.rs @@ -188,8 +188,8 @@ pub enum SignedConsensusMessage { Vote(SignedConsensusVote), } -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] /// A network message. +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub enum Message { /// Status packet. Status(Status), @@ -203,8 +203,11 @@ pub enum Message { Extrinsics(Extrinsics), /// BFT Consensus statement. BftMessage(LocalizedBftMessage), + /// Chain-specific message. + ChainSpecific(Vec), } +/// Status of a peer who has just connected. #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub struct Status { /// Protocol version. @@ -221,6 +224,8 @@ pub struct Status { pub authority_signature: Option, /// Authority address. Required for the authority role. pub authority_id: Option, + /// Chain-specific status, extending beyond capabilities of substrate. + pub chain_status: Vec, } /// Request block data from a peer. diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index f944d9125c0fb..fdfce42b32cc4 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -25,14 +25,15 @@ use primitives::{Hash, blake2_256}; use runtime_support::Hashable; use network::{PeerId, NodeId}; -use message::{self, Message}; -use sync::{ChainSync, Status as SyncStatus, SyncState}; -use consensus::Consensus; -use service::{Role, TransactionPool, BftMessageStream}; -use config::ProtocolConfig; use chain::Client; -use io::SyncIo; +use config::ProtocolConfig; +use consensus::Consensus; use error; +use io::SyncIo; +use message::{self, Message}; +use service::{Role, TransactionPool, BftMessageStream}; +use specialization::Specialization; +use sync::{ChainSync, Status as SyncStatus, SyncState}; use super::header_hash; const REQUEST_TIMEOUT_SEC: u64 = 40; @@ -46,20 +47,6 @@ pub (crate) const CURRENT_PACKET_COUNT: u8 = 1; // Maximum allowed entries in `BlockResponse` const MAX_BLOCK_DATA_RESPONSE: u32 = 128; -// Lock must always be taken in order declared here. -pub struct Protocol { - config: ProtocolConfig, - chain: Arc, - genesis_hash: HeaderHash, - sync: RwLock, - consensus: Mutex, - // All connected peers - peers: RwLock>, - // Connected peers pending Status message. - handshaking_peers: RwLock>, - transaction_pool: Arc, -} - /// Syncing status and statistics #[derive(Clone)] pub struct ProtocolStatus { @@ -91,6 +78,8 @@ struct Peer { known_blocks: HashSet, /// Request counter, next_request_id: message::RequestId, + /// Data from the protocol specialization. + chain_status: Vec, } #[derive(Debug)] @@ -114,18 +103,132 @@ pub struct TransactionStats { pub propagated_to: BTreeMap, } -impl Protocol { +enum Action { + Message(PeerId, Message), + Disconnect(PeerId), + Disable(PeerId), +} + +/// Protocol context. +pub(crate) struct Context<'a> { + io: &'a mut SyncIo, + context_data: &'a ContextData, + actions: Vec, +} + +impl<'a> Context<'a> { + fn new(context_data: &'a ContextData, io: &'a mut SyncIo) -> Self { + Context { + io, + context_data, + actions: Vec::new(), + } + } + + fn push(&mut self, action: Action) { + self.actions.push(action); + } + + /// Send a message to a peer. + pub(crate) fn send_message(&mut self, peer_id: PeerId, message: Message) { + self.push(Action::Message(peer_id, message)); + } + + pub(crate) fn disable_peer(&mut self, peer_id: PeerId) { + self.push(Action::Disable(peer_id)) + } + + pub(crate) fn disconnect_peer(&mut self, peer_id: PeerId) { + self.push(Action::Disconnect(peer_id)) + } + + /// Get peer info. + pub(crate) fn peer_info(&self, peer: PeerId) -> Option { + self.context_data.peers.read().get(&peer).map(|p| { + PeerInfo { + roles: p.roles, + protocol_version: p.protocol_version, + best_hash: p.best_hash, + best_number: p.best_number, + } + }) + } + + /// Get chain handle. + pub(crate) fn chain(&self) -> &Client { + &*self.context_data.chain + } +} + +impl<'a> ::specialization::HandlerContext for Context<'a> { + fn send(&mut self, peer_id: PeerId, message: Vec) { + self.push(Action::Message(peer_id, Message::ChainSpecific(message))); + } + + fn disable_peer(&mut self, peer_id: PeerId) { + self.push(Action::Disable(peer_id)) + } + + fn disconnect_peer(&mut self, peer_id: PeerId) { + self.push(Action::Disconnect(peer_id)) + } + + fn client(&self) -> &Client { + self.chain() + } +} + +impl<'a> Drop for Context<'a> { + fn drop(&mut self) { + for action in self.actions.drain(..) { + match action { + Action::Message(id, message) => send_message(&self.context_data.peers, self.io, id, message), + Action::Disconnect(id) => self.io.disconnect_peer(id), + Action::Disable(id) => self.io.disable_peer(id), + } + } + } +} + +struct ContextData { + // All connected peers + peers: RwLock>, + chain: Arc, +} + +// Lock must always be taken in order declared here. +pub struct Protocol { + config: ProtocolConfig, + specialization: S, + genesis_hash: HeaderHash, + sync: RwLock, + consensus: Mutex, + context_data: ContextData, + // Connected peers pending Status message. + handshaking_peers: RwLock>, + transaction_pool: Arc, +} + +impl Protocol { /// Create a new instance. - pub fn new(config: ProtocolConfig, chain: Arc, transaction_pool: Arc) -> error::Result { + pub fn new( + config: ProtocolConfig, + chain: Arc, + transaction_pool: Arc, + specialization: S, + ) -> error::Result { let info = chain.info()?; let best_hash = info.chain.best_hash; let protocol = Protocol { config: config, - chain: chain, + specialization, + context_data: ContextData { + peers: RwLock::new(HashMap::new()), + chain, + }, genesis_hash: info.chain.genesis_hash, sync: RwLock::new(ChainSync::new(&info)), consensus: Mutex::new(Consensus::new(best_hash)), - peers: RwLock::new(HashMap::new()), handshaking_peers: RwLock::new(HashMap::new()), transaction_pool: transaction_pool, }; @@ -135,7 +238,7 @@ impl Protocol { /// Returns protocol status pub fn status(&self) -> ProtocolStatus { let sync = self.sync.read(); - let peers = self.peers.read(); + let peers = self.context_data.peers.read(); ProtocolStatus { sync: sync.status(), num_peers: peers.values().count(), @@ -158,7 +261,7 @@ impl Protocol { Message::BlockRequest(r) => self.on_block_request(io, peer_id, r), Message::BlockResponse(r) => { let request = { - let mut peers = self.peers.write(); + let mut peers = self.context_data.peers.write(); if let Some(ref mut peer) = peers.get_mut(&peer_id) { peer.request_timestamp = None; match mem::replace(&mut peer.block_request, None) { @@ -186,32 +289,12 @@ impl Protocol { }, Message::BftMessage(m) => self.on_bft_message(io, peer_id, m, blake2_256(data).into()), Message::Extrinsics(m) => self.on_extrinsics(io, peer_id, m), + Message::ChainSpecific(data) => self.on_chain_specific(io, peer_id, data), } } - pub fn send_message(&self, io: &mut SyncIo, peer_id: PeerId, mut message: Message) { - match &mut message { - &mut Message::BlockRequest(ref mut r) => { - let mut peers = self.peers.write(); - if let Some(ref mut peer) = peers.get_mut(&peer_id) { - r.id = peer.next_request_id; - peer.next_request_id = peer.next_request_id + 1; - peer.block_request = Some(r.clone()); - peer.request_timestamp = Some(time::Instant::now()); - } - }, - _ => (), - } - let data = serde_json::to_vec(&message).expect("Serializer is infallible; qed"); - if let Err(e) = io.send(peer_id, data) { - debug!(target:"sync", "Error sending message: {:?}", e); - io.disconnect_peer(peer_id); - } - } - - pub fn hash_message(message: &Message) -> Hash { - let data = serde_json::to_vec(&message).expect("Serializer is infallible; qed"); - blake2_256(&data).into() + pub fn send_message(&self, io: &mut SyncIo, peer_id: PeerId, message: Message) { + send_message(&self.context_data.peers, io, peer_id, message); } /// Called when a new peer is connected @@ -225,14 +308,15 @@ impl Protocol { pub fn on_peer_disconnected(&self, io: &mut SyncIo, peer: PeerId) { trace!(target: "sync", "Disconnecting {}: {}", peer, io.peer_info(peer)); let removed = { - let mut peers = self.peers.write(); + let mut peers = self.context_data.peers.write(); let mut handshaking_peers = self.handshaking_peers.write(); handshaking_peers.remove(&peer); peers.remove(&peer).is_some() }; if removed { - self.consensus.lock().peer_disconnected(io, self, peer); - self.sync.write().peer_disconnected(io, self, peer); + let mut context = Context::new(&self.context_data, io); + self.consensus.lock().peer_disconnected(&mut context, peer); + self.sync.write().peer_disconnected(&mut context, peer); } } @@ -255,7 +339,7 @@ impl Protocol { message::BlockAttribute::Justification => get_justification = true, } } - while let Some(header) = self.chain.header(&id).unwrap_or(None) { + while let Some(header) = self.context_data.chain.header(&id).unwrap_or(None) { if blocks.len() >= max{ break; } @@ -264,10 +348,10 @@ impl Protocol { let block_data = message::BlockData { hash: hash, header: if get_header { Some(header) } else { None }, - body: if get_body { self.chain.body(&BlockId::Hash(hash)).unwrap_or(None) } else { None }, + body: if get_body { self.context_data.chain.body(&BlockId::Hash(hash)).unwrap_or(None) } else { None }, receipt: None, message_queue: None, - justification: if get_justification { self.chain.justification(&BlockId::Hash(hash)).unwrap_or(None) } else { None }, + justification: if get_justification { self.context_data.chain.justification(&BlockId::Hash(hash)).unwrap_or(None) } else { None }, }; blocks.push(block_data); match request.direction { @@ -290,17 +374,21 @@ impl Protocol { fn on_block_response(&self, io: &mut SyncIo, peer: PeerId, request: message::BlockRequest, response: message::BlockResponse) { // TODO: validate response trace!(target: "sync", "BlockResponse {} from {} with {} blocks", response.id, peer, response.blocks.len()); - self.sync.write().on_block_data(io, self, peer, request, response); + self.sync.write().on_block_data(&mut Context::new(&self.context_data, io), peer, request, response); } fn on_bft_message(&self, io: &mut SyncIo, peer: PeerId, message: message::LocalizedBftMessage, hash: Hash) { trace!(target: "sync", "BFT message from {}: {:?}", peer, message); - self.consensus.lock().on_bft_message(io, self, peer, message, hash); + self.consensus.lock().on_bft_message(&mut Context::new(&self.context_data, io), peer, message, hash); + } + + fn on_chain_specific(&self, io: &mut SyncIo, peer: PeerId, message: Vec) { + unimplemented!() } /// See `ConsensusService` trait. pub fn send_bft_message(&self, io: &mut SyncIo, message: message::LocalizedBftMessage) { - self.consensus.lock().send_bft_message(io, self, message) + self.consensus.lock().send_bft_message(&mut Context::new(&self.context_data, io), message) } /// See `ConsensusService` trait. @@ -318,7 +406,7 @@ impl Protocol { let tick = time::Instant::now(); let mut aborting = Vec::new(); { - let peers = self.peers.read(); + let peers = self.context_data.peers.read(); let handshaking_peers = self.handshaking_peers.read(); for (peer_id, timestamp) in peers.iter() .filter_map(|(id, peer)| peer.request_timestamp.as_ref().map(|r| (id, r))) @@ -336,7 +424,7 @@ impl Protocol { } pub fn peer_info(&self, peer: PeerId) -> Option { - self.peers.read().get(&peer).map(|p| { + self.context_data.peers.read().get(&peer).map(|p| { PeerInfo { roles: p.roles, protocol_version: p.protocol_version, @@ -357,7 +445,7 @@ impl Protocol { let mut sync = self.sync.write(); let mut consensus = self.consensus.lock(); { - let mut peers = self.peers.write(); + let mut peers = self.context_data.peers.write(); let mut handshaking_peers = self.handshaking_peers.write(); if peers.contains_key(&peer_id) { debug!(target: "sync", "Unexpected status packet from {}:{}", peer_id, io.peer_info(peer_id)); @@ -384,13 +472,16 @@ impl Protocol { known_extrinsics: HashSet::new(), known_blocks: HashSet::new(), next_request_id: 0, + chain_status: status.chain_status, }; peers.insert(peer_id.clone(), peer); handshaking_peers.remove(&peer_id); debug!(target: "sync", "Connected {} {}", peer_id, io.peer_info(peer_id)); } - sync.new_peer(io, self, peer_id); - consensus.new_peer(io, self, peer_id, &status.roles); + + let mut context = Context::new(&self.context_data, io); + sync.new_peer(&mut context, peer_id); + consensus.new_peer(&mut context, peer_id, &status.roles); } /// Called when peer sends us new extrinsics @@ -401,7 +492,7 @@ impl Protocol { return; } trace!(target: "sync", "Received {} extrinsics from {}", extrinsics.len(), peer_id); - let mut peers = self.peers.write(); + let mut peers = self.context_data.peers.write(); if let Some(ref mut peer) = peers.get_mut(&peer_id) { for t in extrinsics { if let Some(hash) = self.transaction_pool.import(&t) { @@ -422,7 +513,7 @@ impl Protocol { let extrinsics = self.transaction_pool.transactions(); - let mut peers = self.peers.write(); + let mut peers = self.context_data.peers.write(); for (peer_id, ref mut peer) in peers.iter_mut() { let to_send: Vec<_> = extrinsics.iter().filter_map(|&(hash, ref t)| if peer.known_extrinsics.insert(hash.clone()) { Some(t.clone()) } else { None }).collect(); @@ -435,7 +526,7 @@ impl Protocol { /// Send Status message fn send_status(&self, io: &mut SyncIo, peer_id: PeerId) { - if let Ok(info) = self.chain.info() { + if let Ok(info) = self.context_data.chain.info() { let status = message::Status { version: CURRENT_VERSION, genesis_hash: info.chain.genesis_hash, @@ -444,6 +535,7 @@ impl Protocol { best_hash: info.chain.best_hash, authority_signature: None, authority_id: None, + chain_status: self.specialization.status(), }; self.send_message(io, peer_id, Message::Status(status)) } @@ -451,7 +543,7 @@ impl Protocol { pub fn abort(&self) { let mut sync = self.sync.write(); - let mut peers = self.peers.write(); + let mut peers = self.context_data.peers.write(); let mut handshaking_peers = self.handshaking_peers.write(); sync.clear(); peers.clear(); @@ -463,18 +555,18 @@ impl Protocol { let header = announce.header; let hash: HeaderHash = header.blake2_256().into(); { - let mut peers = self.peers.write(); + let mut peers = self.context_data.peers.write(); if let Some(ref mut peer) = peers.get_mut(&peer_id) { peer.known_blocks.insert(hash.clone()); } } - self.sync.write().on_block_announce(io, self, peer_id, hash, &header); + self.sync.write().on_block_announce(&mut Context::new(&self.context_data, io), peer_id, hash, &header); } pub fn on_block_imported(&self, io: &mut SyncIo, hash: HeaderHash, header: &Header) { self.sync.write().update_chain_info(&header); // send out block announcements - let mut peers = self.peers.write(); + let mut peers = self.context_data.peers.write(); for (peer_id, ref mut peer) in peers.iter_mut() { if peer.known_blocks.insert(hash.clone()) { @@ -493,6 +585,33 @@ impl Protocol { } pub fn chain(&self) -> &Client { - &*self.chain + &*self.context_data.chain + } +} + +fn send_message(peers: &RwLock>, io: &mut SyncIo, peer_id: PeerId, mut message: Message) { + match &mut message { + &mut Message::BlockRequest(ref mut r) => { + let mut peers = peers.write(); + if let Some(ref mut peer) = peers.get_mut(&peer_id) { + r.id = peer.next_request_id; + peer.next_request_id = peer.next_request_id + 1; + peer.block_request = Some(r.clone()); + peer.request_timestamp = Some(time::Instant::now()); + } + }, + _ => (), } + let data = serde_json::to_vec(&message).expect("Serializer is infallible; qed"); + if let Err(e) = io.send(peer_id, data) { + debug!(target:"sync", "Error sending message: {:?}", e); + io.disconnect_peer(peer_id); + } +} + +/// Hash a message. +// TODO: remove this. non-unique and insecure. +pub fn hash_message(message: &Message) -> Hash { + let data = serde_json::to_vec(&message).expect("Serializer is infallible; qed"); + blake2_256(&data).into() } diff --git a/substrate/network/src/service.rs b/substrate/network/src/service.rs index 49579754601fc..484e3b56e1294 100644 --- a/substrate/network/src/service.rs +++ b/substrate/network/src/service.rs @@ -1,18 +1,18 @@ // Copyright 2017 Parity Technologies (UK) Ltd. // This file is part of Polkadot. -// Polkadot is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Polkadot is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see .? +// along with Substrate. If not, see . use std::sync::Arc; use std::collections::{BTreeMap}; @@ -31,6 +31,7 @@ use config::{ProtocolConfig}; use error::Error; use chain::Client; use message::LocalizedBftMessage; +use specialization::Specialization; /// Polkadot devp2p protocol id pub const DOT_PROTOCOL_ID: ProtocolId = *b"dot"; @@ -92,8 +93,8 @@ pub trait ConsensusService: Send + Sync { } /// devp2p Protocol handler -struct ProtocolHandler { - protocol: Protocol, +struct ProtocolHandler { + protocol: Protocol, } /// Peer connection information @@ -114,7 +115,7 @@ pub struct PeerInfo { } /// Service initialization parameters. -pub struct Params { +pub struct Params { /// Configuration. pub config: ProtocolConfig, /// Network layer configuration. @@ -123,24 +124,31 @@ pub struct Params { pub chain: Arc, /// Transaction pool. pub transaction_pool: Arc, + /// Protocol specialization. + pub specialization: S, } /// Polkadot network service. Handles network IO and manages connectivity. -pub struct Service { +pub struct Service { /// Network service network: NetworkService, /// Devp2p protocol handler - handler: Arc, + handler: Arc>, } -impl Service { +impl Service { /// Creates and register protocol with the network service - pub fn new(params: Params) -> Result, Error> { + pub fn new(params: Params) -> Result>, Error> { let service = NetworkService::new(params.network_config.clone(), None)?; let sync = Arc::new(Service { network: service, handler: Arc::new(ProtocolHandler { - protocol: Protocol::new(params.config, params.chain.clone(), params.transaction_pool)?, + protocol: Protocol::new( + params.config, + params.chain.clone(), + params.transaction_pool, + params.specialization + )?, }), }); @@ -178,13 +186,13 @@ impl Service { } } -impl Drop for Service { +impl Drop for Service { fn drop(&mut self) { self.stop(); } } -impl SyncProvider for Service { +impl SyncProvider for Service { /// Get sync status fn status(&self) -> ProtocolStatus { self.handler.protocol.status() @@ -223,7 +231,7 @@ impl SyncProvider for Service { } /// ConsensusService -impl ConsensusService for Service { +impl ConsensusService for Service { fn connect_to_authorities(&self, _addresses: &[String]) { //TODO: implement me } @@ -239,7 +247,7 @@ impl ConsensusService for Service { } } -impl NetworkProtocolHandler for ProtocolHandler { +impl NetworkProtocolHandler for ProtocolHandler { fn initialize(&self, io: &NetworkContext, _host_info: &HostInfo) { io.register_timer(TICK_TOKEN, TICK_TIMEOUT) .expect("Error registering sync timer"); @@ -285,7 +293,7 @@ pub trait ManageNetwork : Send + Sync { fn stop_network(&self); } -impl ManageNetwork for Service { +impl ManageNetwork for Service { fn accept_unreserved_peers(&self) { self.network.set_non_reserved_mode(NonReservedPeerMode::Accept); } diff --git a/substrate/network/src/specialization.rs b/substrate/network/src/specialization.rs new file mode 100644 index 0000000000000..9545e7db99669 --- /dev/null +++ b/substrate/network/src/specialization.rs @@ -0,0 +1,48 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Specializations of the substrate network protocol to allow more complex forms of communication. + +use ::PeerId; + +/// Context for a network-specific handler. +pub trait HandlerContext { + /// Get a reference to the client. + fn client(&self) -> &::chain::Client; + + /// Disable a peer + fn disable_peer(&mut self, peer_id: PeerId); + /// Disconnect peer + fn disconnect_peer(&mut self, peer_id: PeerId); + + /// Send a message to a peer. + fn send(&mut self, peer_id: PeerId, data: Vec); +} + +/// A specialization of the substrate network protocol. Handles events and sends messages. +pub trait Specialization: Send + Sync + 'static { + /// Get the current specialization-status. + fn status(&self) -> Vec; + + /// Called when a peer successfully handshakes. + fn on_peer_connected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, status: ::message::Status); + + /// Called when a peer is disconnected. If the peer ID is unknown, it should be ignored. + fn on_peer_disconnected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId); + + /// Called when a network-specific message arrives. + fn on_message(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, message: Vec); +} diff --git a/substrate/network/src/sync.rs b/substrate/network/src/sync.rs index 9cef0cd021631..cb18820b31bbf 100644 --- a/substrate/network/src/sync.rs +++ b/substrate/network/src/sync.rs @@ -15,8 +15,7 @@ // along with Polkadot. If not, see .? use std::collections::HashMap; -use io::SyncIo; -use protocol::Protocol; +use protocol::Context; use network::PeerId; use client::{ImportResult, BlockStatus, ClientInfo}; use primitives::block::{HeaderHash, Number as BlockNumber, Header, Id as BlockId}; @@ -73,7 +72,7 @@ pub struct Status { impl ChainSync { /// Create a new instance. - pub fn new(info: &ClientInfo) -> ChainSync { + pub(crate) fn new(info: &ClientInfo) -> ChainSync { ChainSync { genesis_hash: info.chain.genesis_hash, peers: HashMap::new(), @@ -89,7 +88,7 @@ impl ChainSync { } /// Returns sync status - pub fn status(&self) -> Status { + pub(crate) fn status(&self) -> Status { let best_seen = self.best_seen_block(); let state = match &best_seen { &Some(n) if n > self.best_queued_number && n - self.best_queued_number > 5 => SyncState::Downloading, @@ -102,20 +101,20 @@ impl ChainSync { } /// Handle new connected peer. - pub fn new_peer(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId) { + pub(crate) fn new_peer(&mut self, protocol: &mut Context, peer_id: PeerId) { if let Some(info) = protocol.peer_info(peer_id) { match (protocol.chain().block_status(&BlockId::Hash(info.best_hash)), info.best_number) { (Err(e), _) => { debug!(target:"sync", "Error reading blockchain: {:?}", e); - io.disconnect_peer(peer_id); + protocol.disconnect_peer(peer_id); }, (Ok(BlockStatus::KnownBad), _) => { debug!(target:"sync", "New peer with known bad best block {} ({}).", info.best_hash, info.best_number); - io.disable_peer(peer_id); + protocol.disable_peer(peer_id); }, (Ok(BlockStatus::Unknown), 0) => { debug!(target:"sync", "New peer with unknown genesis hash {} ({}).", info.best_hash, info.best_number); - io.disable_peer(peer_id); + protocol.disable_peer(peer_id); }, (Ok(BlockStatus::Unknown), _) => { let our_best = self.best_queued_number; @@ -128,7 +127,7 @@ impl ChainSync { best_number: info.best_number, state: PeerSyncState::AncestorSearch(our_best), }); - Self::request_ancestry(io, protocol, peer_id, our_best) + Self::request_ancestry(protocol, peer_id, our_best) } else { // We are at genesis, just start downloading debug!(target:"sync", "New peer with best hash {} ({}).", info.best_hash, info.best_number); @@ -139,7 +138,7 @@ impl ChainSync { best_number: info.best_number, state: PeerSyncState::Available, }); - self.download_new(io, protocol, peer_id) + self.download_new(protocol, peer_id) } }, (Ok(BlockStatus::Queued), _) | (Ok(BlockStatus::InChain), _) => { @@ -156,7 +155,7 @@ impl ChainSync { } } - pub fn on_block_data(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId, _request: message::BlockRequest, response: message::BlockResponse) { + pub(crate) fn on_block_data(&mut self, protocol: &mut Context, peer_id: PeerId, _request: message::BlockRequest, response: message::BlockResponse) { let count = response.blocks.len(); let mut imported: usize = 0; let new_blocks = if let Some(ref mut peer) = self.peers.get_mut(&peer_id) { @@ -191,24 +190,24 @@ impl ChainSync { trace!(target:"sync", "Ancestry block mismatch for peer {}: theirs: {} ({}), ours: {:?}", peer_id, block.hash, n, our_best); let n = n - 1; peer.state = PeerSyncState::AncestorSearch(n); - Self::request_ancestry(io, protocol, peer_id, n); + Self::request_ancestry(protocol, peer_id, n); return; }, Ok(_) => { // genesis mismatch trace!(target:"sync", "Ancestry search: genesis mismatch for peer {}", peer_id); - io.disable_peer(peer_id); + protocol.disable_peer(peer_id); return; }, Err(e) => { debug!(target:"sync", "Error reading blockchain: {:?}", e); - io.disconnect_peer(peer_id); + protocol.disconnect_peer(peer_id); return; } } }, None => { trace!(target:"sync", "Invalid response when searching for ancestor from {}", peer_id); - io.disconnect_peer(peer_id); + protocol.disconnect_peer(peer_id); return; } } @@ -237,7 +236,7 @@ impl ChainSync { Ok(_) => {}, Err(e) => { debug!(target: "sync", "Error importing block {}: {:?}: {:?}", number, hash, e); - self.restart(io, protocol); + self.restart(protocol); return; } } @@ -264,42 +263,42 @@ impl ChainSync { }, Ok(ImportResult::UnknownParent) => { debug!(target: "sync", "Block with unknown parent {}: {:?}, parent: {:?}", number, hash, parent); - self.restart(io, protocol); + self.restart(protocol); return; }, Ok(ImportResult::KnownBad) => { debug!(target: "sync", "Bad block {}: {:?}", number, hash); - io.disable_peer(origin); //TODO: use persistent ID - self.restart(io, protocol); + protocol.disable_peer(origin); //TODO: use persistent ID + self.restart(protocol); return; } Err(e) => { debug!(target: "sync", "Error importing block {}: {:?}: {:?}", number, hash, e); - self.restart(io, protocol); + self.restart(protocol); return; } } }, (None, _) => { debug!(target: "sync", "Header {} was not provided by {} ", block.hash, origin); - io.disable_peer(origin); //TODO: use persistent ID + protocol.disable_peer(origin); //TODO: use persistent ID return; }, (_, None) => { debug!(target: "sync", "Justification set for block {} was not provided by {} ", block.hash, origin); - io.disable_peer(origin); //TODO: use persistent ID + protocol.disable_peer(origin); //TODO: use persistent ID return; } } } trace!(target: "sync", "Imported {} of {}", imported, count); - self.maintain_sync(io, protocol); + self.maintain_sync(protocol); } - fn maintain_sync(&mut self, io: &mut SyncIo, protocol: &Protocol) { + fn maintain_sync(&mut self, protocol: &mut Context) { let peers: Vec = self.peers.keys().map(|p| *p).collect(); for peer in peers { - self.download_new(io, protocol, peer); + self.download_new(protocol, peer); } } @@ -318,12 +317,12 @@ impl ChainSync { } } - pub fn update_chain_info(&mut self, best_header: &Header ) { + pub(crate) fn update_chain_info(&mut self, best_header: &Header ) { let hash = header_hash(&best_header); self.block_imported(&hash, best_header.number) } - pub fn on_block_announce(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId, hash: HeaderHash, header: &Header) { + pub(crate) fn on_block_announce(&mut self, protocol: &mut Context, peer_id: PeerId, hash: HeaderHash, header: &Header) { if let Some(ref mut peer) = self.peers.get_mut(&peer_id) { if header.number > peer.best_number { peer.best_number = header.number; @@ -343,33 +342,33 @@ impl ChainSync { trace!(target: "sync", "Ignoring unknown stale block announce from {}: {} {:?}", peer_id, hash, header); } else { trace!(target: "sync", "Downloading new stale block announced from {}: {} {:?}", peer_id, hash, header); - self.download_stale(io, protocol, peer_id, &hash); + self.download_stale(protocol, peer_id, &hash); } } else { trace!(target: "sync", "Downloading new block announced from {}: {} {:?}", peer_id, hash, header); - self.download_new(io, protocol, peer_id); + self.download_new(protocol, peer_id); } } else { trace!(target: "sync", "Known block announce from {}: {}", peer_id, hash); } } - fn is_known_or_already_downloading(&self, protocol: &Protocol, hash: &HeaderHash) -> bool { + fn is_known_or_already_downloading(&self, protocol: &mut Context, hash: &HeaderHash) -> bool { self.peers.iter().any(|(_, p)| p.state == PeerSyncState::DownloadingStale(*hash)) || protocol.chain().block_status(&BlockId::Hash(*hash)).ok().map_or(false, |s| s != BlockStatus::Unknown) } - pub fn peer_disconnected(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId) { + pub(crate) fn peer_disconnected(&mut self, protocol: &mut Context, peer_id: PeerId) { self.blocks.clear_peer_download(peer_id); self.peers.remove(&peer_id); - self.maintain_sync(io, protocol); + self.maintain_sync(protocol); } - pub fn restart(&mut self, io: &mut SyncIo, protocol: &Protocol) { + pub(crate) fn restart(&mut self, protocol: &mut Context) { self.blocks.clear(); let ids: Vec = self.peers.keys().map(|p| *p).collect(); for id in ids { - self.new_peer(io, protocol, id); + self.new_peer(protocol, id); } match protocol.chain().info() { Ok(info) => { @@ -384,13 +383,13 @@ impl ChainSync { } } - pub fn clear(&mut self) { + pub(crate) fn clear(&mut self) { self.blocks.clear(); self.peers.clear(); } // Download old block. - fn download_stale(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId, hash: &HeaderHash) { + fn download_stale(&mut self, protocol: &mut Context, peer_id: PeerId, hash: &HeaderHash) { if let Some(ref mut peer) = self.peers.get_mut(&peer_id) { match peer.state { PeerSyncState::Available => { @@ -403,7 +402,7 @@ impl ChainSync { max: Some(1), }; peer.state = PeerSyncState::DownloadingStale(*hash); - protocol.send_message(io, peer_id, Message::BlockRequest(request)); + protocol.send_message(peer_id, Message::BlockRequest(request)); }, _ => (), } @@ -411,7 +410,7 @@ impl ChainSync { } // Issue a request for a peer to download new blocks, if any are available - fn download_new(&mut self, io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId) { + fn download_new(&mut self, protocol: &mut Context, peer_id: PeerId) { if let Some(ref mut peer) = self.peers.get_mut(&peer_id) { trace!(target: "sync", "Considering new block download from {}, common block is {}, best is {:?}", peer_id, peer.common_number, peer.best_number); match peer.state { @@ -427,7 +426,7 @@ impl ChainSync { max: Some((range.end - range.start) as u32), }; peer.state = PeerSyncState::DownloadingNew(range.start); - protocol.send_message(io, peer_id, Message::BlockRequest(request)); + protocol.send_message(peer_id, Message::BlockRequest(request)); } else { trace!(target: "sync", "Nothing to request"); } @@ -437,7 +436,7 @@ impl ChainSync { } } - fn request_ancestry(io: &mut SyncIo, protocol: &Protocol, peer_id: PeerId, block: BlockNumber) { + fn request_ancestry(protocol: &mut Context, peer_id: PeerId, block: BlockNumber) { trace!(target: "sync", "Requesting ancestry block #{} from {}", block, peer_id); let request = message::BlockRequest { id: 0, @@ -447,6 +446,6 @@ impl ChainSync { direction: message::Direction::Ascending, max: Some(1), }; - protocol.send_message(io, peer_id, Message::BlockRequest(request)); + protocol.send_message(peer_id, Message::BlockRequest(request)); } } diff --git a/substrate/network/src/test/mod.rs b/substrate/network/src/test/mod.rs index a62bf5177ca0f..9b1c542d52f48 100644 --- a/substrate/network/src/test/mod.rs +++ b/substrate/network/src/test/mod.rs @@ -34,20 +34,39 @@ use runtime_support::Hashable; use keyring::Keyring; use codec::Slicable; use test_client::{self, TestClient}; +use specialization::{Specialization, HandlerContext}; -pub struct TestIo<'p> { - pub queue: &'p RwLock>, - pub sender: Option, - pub to_disconnect: HashSet, - pub packets: Vec, - pub peers_info: HashMap, +struct DummySpecialization; + +impl Specialization for DummySpecialization { + fn status(&self) -> Vec { vec![] } + + fn on_peer_connected(&mut self, _ctx: &mut HandlerContext, _peer_id: PeerId, _status: ::message::Status) { + + } + + fn on_peer_disconnected(&mut self, _ctx: &mut HandlerContext, _peer_id: PeerId) { + + } + + fn on_message(&mut self, _ctx: &mut HandlerContext, _peer_id: PeerId, _message: Vec) { + + } +} + +struct TestIo<'p> { + queue: &'p RwLock>, + to_disconnect: HashSet, + packets: Vec, + peers_info: HashMap, + _sender: Option, } impl<'p> TestIo<'p> where { - pub fn new(queue: &'p RwLock>, sender: Option) -> TestIo<'p> { + fn new(queue: &'p RwLock>, sender: Option) -> TestIo<'p> { TestIo { queue: queue, - sender: sender, + _sender: sender, to_disconnect: HashSet::new(), packets: Vec::new(), peers_info: HashMap::new(), @@ -94,15 +113,15 @@ impl<'p> SyncIo for TestIo<'p> { } /// Mocked subprotocol packet -pub struct TestPacket { - pub data: Vec, - pub recipient: PeerId, +struct TestPacket { + data: Vec, + recipient: PeerId, } -pub struct Peer { +struct Peer { client: Arc>, - pub sync: Protocol, - pub queue: RwLock>, + sync: Protocol, + queue: RwLock>, } impl Peer { @@ -188,7 +207,7 @@ impl Peer { } } - pub fn genesis_hash(&self) -> HeaderHash { + fn genesis_hash(&self) -> HeaderHash { let info = self.client.info().expect("In-mem client does not fail"); info.chain.genesis_hash } @@ -206,18 +225,18 @@ impl TransactionPool for EmptyTransactionPool { } } -pub struct TestNet { - pub peers: Vec>, - pub started: bool, - pub disconnect_events: Vec<(PeerId, PeerId)>, //disconnected (initiated by, to) +struct TestNet { + peers: Vec>, + started: bool, + disconnect_events: Vec<(PeerId, PeerId)>, //disconnected (initiated by, to) } impl TestNet { - pub fn new(n: usize) -> Self { + fn new(n: usize) -> Self { Self::new_with_config(n, ProtocolConfig::default()) } - pub fn new_with_config(n: usize, config: ProtocolConfig) -> Self { + fn new_with_config(n: usize, config: ProtocolConfig) -> Self { let mut net = TestNet { peers: Vec::new(), started: false, @@ -227,7 +246,7 @@ impl TestNet { for _ in 0..n { let client = Arc::new(test_client::new()); let tx_pool = Arc::new(EmptyTransactionPool); - let sync = Protocol::new(config.clone(), client.clone(), tx_pool).unwrap(); + let sync = Protocol::new(config.clone(), client.clone(), tx_pool, DummySpecialization).unwrap(); net.peers.push(Arc::new(Peer { sync: sync, client: client, @@ -237,11 +256,11 @@ impl TestNet { net } - pub fn peer(&self, i: usize) -> &Peer { + fn peer(&self, i: usize) -> &Peer { &self.peers[i] } - pub fn start(&mut self) { + fn start(&mut self) { if self.started { return; } @@ -256,7 +275,7 @@ impl TestNet { self.started = true; } - pub fn sync_step(&mut self) { + fn sync_step(&mut self) { for peer in 0..self.peers.len() { let packet = self.peers[peer].pending_message(); if let Some(packet) = packet { @@ -281,15 +300,15 @@ impl TestNet { } } - pub fn sync_step_peer(&mut self, peer_num: usize) { + fn sync_step_peer(&mut self, peer_num: usize) { self.peers[peer_num].sync_step(); } - pub fn restart_peer(&mut self, i: usize) { + fn restart_peer(&mut self, i: usize) { self.peers[i].restart_sync(); } - pub fn sync(&mut self) -> u32 { + fn sync(&mut self) -> u32 { self.start(); let mut total_steps = 0; while !self.done() { @@ -299,14 +318,14 @@ impl TestNet { total_steps } - pub fn sync_steps(&mut self, count: usize) { + fn sync_steps(&mut self, count: usize) { self.start(); for _ in 0..count { self.sync_step(); } } - pub fn done(&self) -> bool { + fn done(&self) -> bool { self.peers.iter().all(|p| p.is_done()) } } From 00cdc0542246b435b09a7dcc5a0985cbc63472b0 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 23 May 2018 14:21:15 +0200 Subject: [PATCH 063/103] begin polkadot network subsystem --- polkadot/network/Cargo.toml | 3 +++ polkadot/network/src/lib.rs | 45 ++++++++++++++++++++++++++++++------ substrate/network/src/lib.rs | 2 +- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/polkadot/network/Cargo.toml b/polkadot/network/Cargo.toml index 66e11cee1e3e8..042730544def4 100644 --- a/polkadot/network/Cargo.toml +++ b/polkadot/network/Cargo.toml @@ -6,3 +6,6 @@ description = "Polkadot-specific networking protocol" [dependencies] substrate-network = { path = "../../substrate/network" } +substrate-primitives = { path = "../../substrate/primitives" } +polkadot-primitives = { path = "../primitives" } +ed25519 = { path = "../../substrate/ed25519" } diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 28a70eeda7b92..335c94987917a 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -14,6 +14,25 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +extern crate substrate_network; +extern crate substrate_primitives; +extern crate polkadot_primitives; +extern crate ed25519; + +use substrate_primitives::Hash; +use substrate_network::{PeerId, RequestId}; +use substrate_network::specialization::{Specialization, HandlerContext}; + +use polkadot_primitives::parachain::Id as ParaId; + +use std::collections::HashMap; + +/// Status of a Polkadot node. +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +pub struct Status { + collating_for: Option, +} + /// Request candidate block data from a peer. #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub struct CandidateRequest { @@ -55,7 +74,7 @@ pub enum UnsignedStatement { #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub struct Statement { /// Parent relay chain block header hash. - pub parent_hash: HeaderHash, + pub parent_hash: Hash, /// The statement. pub statement: UnsignedStatement, /// The signature. @@ -64,11 +83,23 @@ pub struct Statement { pub sender: AuthorityId, } +struct PeerInfo; + +/// Polkadot protocol attachment for substrate. +pub struct PolkadotProtocol { + peers: HashMap, + collators: HashMap, + collating_for: Option, +} + +impl Specialization for PolkadotProtocol { + fn status(&self) -> Vec { + + } + + fn on_peer_connected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, status: ::message::Status); + + fn on_peer_disconnected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId); -#[cfg(test)] -mod tests { - #[test] - fn it_works() { - assert_eq!(2 + 2, 4); - } + fn on_message(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, message: Vec); } diff --git a/substrate/network/src/lib.rs b/substrate/network/src/lib.rs index c8de32ebc8d46..362eab08449de 100644 --- a/substrate/network/src/lib.rs +++ b/substrate/network/src/lib.rs @@ -64,7 +64,7 @@ pub use protocol::{ProtocolStatus}; pub use sync::{Status as SyncStatus, SyncState}; pub use network::{NonReservedPeerMode, NetworkConfiguration, PeerId}; pub use network_devp2p::{ConnectionFilter, ConnectionDirection}; -pub use message::{BftMessage, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal}; +pub use message::{BftMessage, RequestId, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal}; pub use error::Error; pub use config::{Role, ProtocolConfig}; From e6e6b5a39e72e268adb3d6bf3b3f3b87f4352606 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 23 May 2018 16:28:34 +0200 Subject: [PATCH 064/103] grumbles --- polkadot/consensus/src/collation.rs | 4 ++-- polkadot/runtime/src/parachains.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs index a437ce085c773..3738ae900413a 100644 --- a/polkadot/consensus/src/collation.rs +++ b/polkadot/consensus/src/collation.rs @@ -101,7 +101,7 @@ impl Future for CollationFetch { try_ready!(poll) }; - match verify_collation(&*self.client, &self.relay_parent, &x) { + match validate_collation(&*self.client, &self.relay_parent, &x) { Ok(()) => { self.parachain = None; @@ -145,7 +145,7 @@ error_chain! { } /// Check whether a given collation is valid. Returns `Ok` on success, error otherwise. -pub fn verify_collation(client: &P, relay_parent: &P::CheckedBlockId, collation: &Collation) -> Result<(), Error> { +pub fn validate_collation(client: &P, relay_parent: &P::CheckedBlockId, collation: &Collation) -> Result<(), Error> { use parachain::{self, ValidationParams}; let para_id = collation.receipt.parachain_index; diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index e331b4d428d11..1a6a77d7febd1 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -62,7 +62,7 @@ decl_storage! { } impl Module { - /// Calculate the current block's with system's random seed. + /// Calculate the current block's duty roster using system's random seed. pub fn calculate_duty_roster() -> DutyRoster { let parachains = Self::active_parachains(); let parachain_count = parachains.len(); From 251a93cc312b709417eebc0c984c8a4303a7193b Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 23 May 2018 16:30:47 +0200 Subject: [PATCH 065/103] update WASM checkins --- demo/runtime/wasm/Cargo.lock | 254 ----------------- .../release/demo_runtime.compact.wasm | Bin 237797 -> 416654 bytes .../release/demo_runtime.wasm | Bin 259564 -> 453483 bytes polkadot/runtime/wasm/Cargo.lock | 254 ----------------- .../release/polkadot_runtime.compact.wasm | Bin 243404 -> 421122 bytes .../release/polkadot_runtime.wasm | Bin 267021 -> 459626 bytes substrate/test-runtime/wasm/Cargo.lock | 260 ------------------ .../substrate_test_runtime.compact.wasm | Bin 16186 -> 16186 bytes .../release/substrate_test_runtime.wasm | Bin 17932 -> 17932 bytes 9 files changed, 768 deletions(-) diff --git a/demo/runtime/wasm/Cargo.lock b/demo/runtime/wasm/Cargo.lock index 4bb3f8e172b8e..ffffa7afcdcd4 100644 --- a/demo/runtime/wasm/Cargo.lock +++ b/demo/runtime/wasm/Cargo.lock @@ -1,25 +1,3 @@ -[[package]] -name = "aho-corasick" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ansi_term" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "arrayvec" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "arrayvec" version = "0.4.7" @@ -35,8 +13,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -146,15 +122,6 @@ dependencies = [ "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "env_logger" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "environmental" version = "0.1.0" @@ -165,34 +132,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "plain_hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "ethcore-bytes" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "ethcore-logger" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "isatty 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "fixed-hash" version = "0.1.3" @@ -221,15 +166,6 @@ name = "gcc" version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "hashdb" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "heapsize" version = "0.4.2" @@ -260,17 +196,6 @@ name = "integer-sqrt" version = "0.1.0" source = "git+https://github.com/paritytech/integer-sqrt-rs.git#f4cf61482096dc98c1273f46a10849d182b4c23c" -[[package]] -name = "isatty" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "keccak-hash" version = "0.1.0" @@ -281,15 +206,6 @@ dependencies = [ "tiny-keccak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lazy_static" version = "0.2.11" @@ -321,33 +237,11 @@ dependencies = [ "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "memchr" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "memorydb" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak-hash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "nodrop" version = "0.1.12" @@ -366,11 +260,6 @@ dependencies = [ "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "odds" -version = "0.2.26" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "owning_ref" version = "0.3.3" @@ -397,15 +286,6 @@ dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot" version = "0.5.4" @@ -426,24 +306,6 @@ dependencies = [ "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "patricia-trie" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-logger 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak-hash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "plain_hasher" version = "0.1.0" @@ -532,36 +394,6 @@ dependencies = [ "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "redox_syscall" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "redox_termios" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex-syntax" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "ring" version = "0.12.1" @@ -903,10 +735,7 @@ name = "substrate-state-machine" version = "0.1.0" dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia-trie 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -929,35 +758,6 @@ dependencies = [ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "termion" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thread_local" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "time" -version = "0.1.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "tiny-keccak" version = "1.4.0" @@ -996,29 +796,11 @@ name = "unicode-xid" version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "untrusted" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "utf8-ranges" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "wasmi" version = "0.1.2" @@ -1029,11 +811,6 @@ dependencies = [ "parity-wasm 0.27.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi" version = "0.3.4" @@ -1043,11 +820,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -1059,9 +831,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4" -"checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" -"checksum arrayvec 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)" = "06f59fe10306bb78facd90d28c2038ad23ffaaefa85bac43c8a434cde383334f" "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" "checksum bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5442186ef6560f30f1ee4b9c1e4c87a35a6879d3644550cc248ec2b955eb5fcd" "checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf" @@ -1074,41 +843,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" "checksum either 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "740178ddf48b1a9e878e6d6509a1442a2d42fd2928aae8e7a6f8a36fb01981b3" "checksum elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "258ff6a9a94f648d0379dbd79110e057edbb53eb85cc237e33eadf8e5a30df85" -"checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" "checksum ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcb5af77e74a8f70e9c3337e069c37bc82178ef1b459c02091f73c4ad5281eb5" -"checksum ethcore-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3977c772cd6c5c22e1c7cfa208e4c3b746bd6c3a6c8eeec0999a6b2103015ad5" -"checksum ethcore-logger 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1fd5813e49546030be7d134e775088d56b8ff4ab60617b90e93d4f0513da4c5b" "checksum fixed-hash 0.1.3 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)" = "" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" -"checksum hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d97be07c358c5b461268b4ce60304024c5fa5acfd4bd8cd743639f0252003cf5" "checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" "checksum hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bd546ef520ab3745f1aae5f2cdc6de9e6498e94d1ab138b9eb3ddfbf335847fb" "checksum hex-literal-impl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2ea76da4c7f1a54d01d54985566d3fdd960b2bbd7b970da024821c883c2d9631" "checksum integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)" = "" -"checksum isatty 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8f2a233726c7bb76995cec749d59582e5664823b7245d4970354408f1d79a7a2" "checksum keccak-hash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1f300c1f149cd9ca5214eed24f6e713a597517420fb8b15499824aa916259ec1" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" "checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d" "checksum libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "1e5d97d6708edaa407429faa671b942dc0f2727222fb6b6539bf1db936e4b121" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" "checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2" -"checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" -"checksum memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "013b7e4c5e10c764936ebc6bd3662d8e3c92292d267bf6a42ef3f5cad9c793ee" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dee092fcdf725aee04dd7da1d21debff559237d49ef1cb3e69bcb8ece44c7364" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" -"checksum odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)" = "4eae0151b9dacf24fcc170d9995e511669a082856a91f958a2fe380bfab3fb22" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" "checksum parity-wasm 0.27.6 (registry+https://github.com/rust-lang/crates.io-index)" = "bd4dc02a80a0315b109e48992c46942c79bcdb8fac416dd575d330ed9ced6cbd" "checksum parity-wasm 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41083957b80abb8a01fac4d2773d5f92653aed8f0b740c8d3da1da62c7857abe" -"checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" "checksum parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9fd9d732f2de194336fb02fe11f9eed13d9e76f13f4315b4d88a14ca411750cd" "checksum parking_lot_core 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "9f35048d735bb93dd115a0030498785971aab3234d311fbe273d020084d26bd8" -"checksum patricia-trie 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f1e2f638d79aba5c4a71a4f373df6e3cd702250a53b7f0ed4da1e2a7be9737ae" "checksum plain_hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "83ae80873992f511142c07d0ec6c44de5636628fdb7e204abd655932ea79d995" "checksum proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ba8d4f9257b85eb6cdf13f055cea3190520aab1409ca2ab43493ea4820c25f0" "checksum proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5cb6f960ad471404618e9817c0e5d10b1ae74cfdf01fab89ea0641fe7fb2892" @@ -1118,10 +876,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" "checksum rayon-core 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e64b609139d83da75902f88fd6c01820046840a18471e4dfcd5ac7c0f46bea53" -"checksum redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "744554e01ccbd98fff8c457c3b092cd67af62a555a43bfe97ae8a0451f7799fa" -"checksum regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e" "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" "checksum rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "babe6fce20c0ca9b1582998734c4569082d0ad08e43772a1c6c40aef4f106ef9" "checksum rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0ceb8ce7a5e520de349e1fa172baeba4a9e8d5ef06c47471863530bc4972ee1e" @@ -1137,21 +891,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b" "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" -"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" -"checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" -"checksum time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "a15375f1df02096fb3317256ce2cee6a1f42fc84ea5ad5fc8c421cfe40c73098" "checksum tiny-keccak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e9241752647ca572f12c9b520a5d360d9099360c527770647e694001646a1d0" "checksum triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9291c7f0fae44858b5e087dd462afb382354120003778f1695b44aab98c7abd7" "checksum twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "475352206e7a290c5fccc27624a163e8d0d115f7bb60ca18a64fc9ce056d7435" "checksum uint 0.1.2 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)" = "" "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" -"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" -"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum wasmi 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "26b20dbeb7caee04597a5d2c93e2b3e64872c6ea2af732d7ad49dbec44067c35" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 881254bc1fb70f6f5e40deeab104a2ce26776981..04526249112fc83028d52a534ca53b4c43635dcf 100644 GIT binary patch literal 416654 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±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%0AxJau0GOJ9wAlaEJL7|dm0#iBvAfh4_L7 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 A6aWAK diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index 8e62399f626e19648e6f1161f4c7df309fb13b29..ca304387183229db7d32292b5ea25b6aa0ddc1b2 100755 GIT binary patch literal 453483 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

civ1eQ|?wW|+P5_>mHQ1(J3sGqDkL8*c4V@==d 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 n0Y(-CqXAN+D%3$JBIPZ|%}x`r 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 diff --git a/polkadot/runtime/wasm/Cargo.lock b/polkadot/runtime/wasm/Cargo.lock index 004585284db2d..3fac0bb16cc15 100644 --- a/polkadot/runtime/wasm/Cargo.lock +++ b/polkadot/runtime/wasm/Cargo.lock @@ -1,25 +1,3 @@ -[[package]] -name = "aho-corasick" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ansi_term" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "arrayvec" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "arrayvec" version = "0.4.7" @@ -35,8 +13,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -111,15 +87,6 @@ dependencies = [ "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "env_logger" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "environmental" version = "0.1.0" @@ -130,34 +97,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "plain_hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "ethcore-bytes" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "ethcore-logger" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "isatty 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "fixed-hash" version = "0.1.3" @@ -186,15 +131,6 @@ name = "gcc" version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "hashdb" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "heapsize" version = "0.4.2" @@ -225,17 +161,6 @@ name = "integer-sqrt" version = "0.1.0" source = "git+https://github.com/paritytech/integer-sqrt-rs.git#f4cf61482096dc98c1273f46a10849d182b4c23c" -[[package]] -name = "isatty" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "keccak-hash" version = "0.1.0" @@ -246,15 +171,6 @@ dependencies = [ "tiny-keccak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lazy_static" version = "0.2.11" @@ -286,33 +202,11 @@ dependencies = [ "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "memchr" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "memorydb" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak-hash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "nodrop" version = "0.1.12" @@ -331,11 +225,6 @@ dependencies = [ "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "odds" -version = "0.2.26" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "owning_ref" version = "0.3.3" @@ -362,15 +251,6 @@ dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot" version = "0.5.4" @@ -391,24 +271,6 @@ dependencies = [ "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "patricia-trie" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-logger 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak-hash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "plain_hasher" version = "0.1.0" @@ -532,36 +394,6 @@ dependencies = [ "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "redox_syscall" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "redox_termios" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex-syntax" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "ring" version = "0.12.1" @@ -903,10 +735,7 @@ name = "substrate-state-machine" version = "0.1.0" dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia-trie 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -929,35 +758,6 @@ dependencies = [ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "termion" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thread_local" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "time" -version = "0.1.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "tiny-keccak" version = "1.4.0" @@ -996,29 +796,11 @@ name = "unicode-xid" version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "untrusted" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "utf8-ranges" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "wasmi" version = "0.1.2" @@ -1029,11 +811,6 @@ dependencies = [ "parity-wasm 0.27.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi" version = "0.3.4" @@ -1043,11 +820,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -1059,9 +831,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4" -"checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" -"checksum arrayvec 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)" = "06f59fe10306bb78facd90d28c2038ad23ffaaefa85bac43c8a434cde383334f" "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" "checksum bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5442186ef6560f30f1ee4b9c1e4c87a35a6879d3644550cc248ec2b955eb5fcd" "checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf" @@ -1074,41 +843,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" "checksum either 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "740178ddf48b1a9e878e6d6509a1442a2d42fd2928aae8e7a6f8a36fb01981b3" "checksum elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "258ff6a9a94f648d0379dbd79110e057edbb53eb85cc237e33eadf8e5a30df85" -"checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" "checksum ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcb5af77e74a8f70e9c3337e069c37bc82178ef1b459c02091f73c4ad5281eb5" -"checksum ethcore-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3977c772cd6c5c22e1c7cfa208e4c3b746bd6c3a6c8eeec0999a6b2103015ad5" -"checksum ethcore-logger 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1fd5813e49546030be7d134e775088d56b8ff4ab60617b90e93d4f0513da4c5b" "checksum fixed-hash 0.1.3 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)" = "" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" -"checksum hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d97be07c358c5b461268b4ce60304024c5fa5acfd4bd8cd743639f0252003cf5" "checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" "checksum hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bd546ef520ab3745f1aae5f2cdc6de9e6498e94d1ab138b9eb3ddfbf335847fb" "checksum hex-literal-impl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2ea76da4c7f1a54d01d54985566d3fdd960b2bbd7b970da024821c883c2d9631" "checksum integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)" = "" -"checksum isatty 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8f2a233726c7bb76995cec749d59582e5664823b7245d4970354408f1d79a7a2" "checksum keccak-hash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1f300c1f149cd9ca5214eed24f6e713a597517420fb8b15499824aa916259ec1" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" "checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d" "checksum libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "1e5d97d6708edaa407429faa671b942dc0f2727222fb6b6539bf1db936e4b121" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" "checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2" -"checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" -"checksum memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "013b7e4c5e10c764936ebc6bd3662d8e3c92292d267bf6a42ef3f5cad9c793ee" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dee092fcdf725aee04dd7da1d21debff559237d49ef1cb3e69bcb8ece44c7364" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" -"checksum odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)" = "4eae0151b9dacf24fcc170d9995e511669a082856a91f958a2fe380bfab3fb22" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" "checksum parity-wasm 0.27.6 (registry+https://github.com/rust-lang/crates.io-index)" = "bd4dc02a80a0315b109e48992c46942c79bcdb8fac416dd575d330ed9ced6cbd" "checksum parity-wasm 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41083957b80abb8a01fac4d2773d5f92653aed8f0b740c8d3da1da62c7857abe" -"checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" "checksum parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9fd9d732f2de194336fb02fe11f9eed13d9e76f13f4315b4d88a14ca411750cd" "checksum parking_lot_core 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "9f35048d735bb93dd115a0030498785971aab3234d311fbe273d020084d26bd8" -"checksum patricia-trie 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f1e2f638d79aba5c4a71a4f373df6e3cd702250a53b7f0ed4da1e2a7be9737ae" "checksum plain_hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "83ae80873992f511142c07d0ec6c44de5636628fdb7e204abd655932ea79d995" "checksum proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ba8d4f9257b85eb6cdf13f055cea3190520aab1409ca2ab43493ea4820c25f0" "checksum proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5cb6f960ad471404618e9817c0e5d10b1ae74cfdf01fab89ea0641fe7fb2892" @@ -1118,10 +876,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" "checksum rayon-core 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e64b609139d83da75902f88fd6c01820046840a18471e4dfcd5ac7c0f46bea53" -"checksum redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "744554e01ccbd98fff8c457c3b092cd67af62a555a43bfe97ae8a0451f7799fa" -"checksum regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e" "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" "checksum rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "babe6fce20c0ca9b1582998734c4569082d0ad08e43772a1c6c40aef4f106ef9" "checksum rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0ceb8ce7a5e520de349e1fa172baeba4a9e8d5ef06c47471863530bc4972ee1e" @@ -1137,21 +891,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b" "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" -"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" -"checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" -"checksum time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "a15375f1df02096fb3317256ce2cee6a1f42fc84ea5ad5fc8c421cfe40c73098" "checksum tiny-keccak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e9241752647ca572f12c9b520a5d360d9099360c527770647e694001646a1d0" "checksum triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9291c7f0fae44858b5e087dd462afb382354120003778f1695b44aab98c7abd7" "checksum twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "475352206e7a290c5fccc27624a163e8d0d115f7bb60ca18a64fc9ce056d7435" "checksum uint 0.1.2 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)" = "" "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" -"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" -"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum wasmi 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "26b20dbeb7caee04597a5d2c93e2b3e64872c6ea2af732d7ad49dbec44067c35" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index 95b7d2a4e5073fab81baf2810d014368f6b0fd30..1ba8af59ec7bc9392e84419e75a9612c142fc4c7 100644 GIT binary patch literal 421122 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 R)6xP=II`{H0n;%3{{N$M^f6dv8^BclC3> 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

  • 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 delta 64547 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 H?pXf~(%LuN diff --git a/substrate/test-runtime/wasm/Cargo.lock b/substrate/test-runtime/wasm/Cargo.lock index 172401e1a570b..5716b05d5b334 100644 --- a/substrate/test-runtime/wasm/Cargo.lock +++ b/substrate/test-runtime/wasm/Cargo.lock @@ -1,25 +1,3 @@ -[[package]] -name = "aho-corasick" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ansi_term" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "arrayvec" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "arrayvec" version = "0.4.7" @@ -35,8 +13,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -111,15 +87,6 @@ dependencies = [ "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "env_logger" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "environmental" version = "0.1.0" @@ -130,34 +97,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "plain_hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "ethcore-bytes" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "ethcore-logger" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "isatty 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "fixed-hash" version = "0.1.3" @@ -186,15 +131,6 @@ name = "gcc" version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "hashdb" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "heapsize" version = "0.4.2" @@ -220,17 +156,6 @@ dependencies = [ "proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "isatty" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "keccak-hash" version = "0.1.0" @@ -241,25 +166,11 @@ dependencies = [ "tiny-keccak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "lazy_static" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "lazy_static" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "libc" version = "0.2.36" @@ -281,33 +192,11 @@ dependencies = [ "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "memchr" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "memorydb" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak-hash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "nodrop" version = "0.1.12" @@ -321,11 +210,6 @@ dependencies = [ "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "odds" -version = "0.2.26" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "owning_ref" version = "0.3.3" @@ -344,15 +228,6 @@ dependencies = [ "parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot" version = "0.5.4" @@ -373,24 +248,6 @@ dependencies = [ "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "patricia-trie" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-logger 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak-hash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "plain_hasher" version = "0.1.0" @@ -469,36 +326,6 @@ dependencies = [ "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "redox_syscall" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "redox_termios" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "regex-syntax" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "ring" version = "0.12.1" @@ -657,10 +484,7 @@ name = "substrate-state-machine" version = "0.1.0" dependencies = [ "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia-trie 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -697,35 +521,6 @@ dependencies = [ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "termion" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thread_local" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "time" -version = "0.1.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "tiny-keccak" version = "1.4.0" @@ -764,29 +559,11 @@ name = "unicode-xid" version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "untrusted" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "utf8-ranges" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "wasmi" version = "0.1.2" @@ -797,11 +574,6 @@ dependencies = [ "parity-wasm 0.27.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi" version = "0.3.4" @@ -811,11 +583,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -827,9 +594,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4" -"checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" -"checksum arrayvec 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)" = "06f59fe10306bb78facd90d28c2038ad23ffaaefa85bac43c8a434cde383334f" "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" "checksum bigint 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5442186ef6560f30f1ee4b9c1e4c87a35a6879d3644550cc248ec2b955eb5fcd" "checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf" @@ -842,38 +606,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" "checksum either 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "740178ddf48b1a9e878e6d6509a1442a2d42fd2928aae8e7a6f8a36fb01981b3" "checksum elastic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "258ff6a9a94f648d0379dbd79110e057edbb53eb85cc237e33eadf8e5a30df85" -"checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" "checksum ethcore-bigint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcb5af77e74a8f70e9c3337e069c37bc82178ef1b459c02091f73c4ad5281eb5" -"checksum ethcore-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3977c772cd6c5c22e1c7cfa208e4c3b746bd6c3a6c8eeec0999a6b2103015ad5" -"checksum ethcore-logger 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1fd5813e49546030be7d134e775088d56b8ff4ab60617b90e93d4f0513da4c5b" "checksum fixed-hash 0.1.3 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)" = "" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" -"checksum hashdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d97be07c358c5b461268b4ce60304024c5fa5acfd4bd8cd743639f0252003cf5" "checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" "checksum hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bd546ef520ab3745f1aae5f2cdc6de9e6498e94d1ab138b9eb3ddfbf335847fb" "checksum hex-literal-impl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2ea76da4c7f1a54d01d54985566d3fdd960b2bbd7b970da024821c883c2d9631" -"checksum isatty 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8f2a233726c7bb76995cec749d59582e5664823b7245d4970354408f1d79a7a2" "checksum keccak-hash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1f300c1f149cd9ca5214eed24f6e713a597517420fb8b15499824aa916259ec1" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" -"checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d" "checksum libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "1e5d97d6708edaa407429faa671b942dc0f2727222fb6b6539bf1db936e4b121" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" "checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2" -"checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" -"checksum memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "013b7e4c5e10c764936ebc6bd3662d8e3c92292d267bf6a42ef3f5cad9c793ee" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" -"checksum odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)" = "4eae0151b9dacf24fcc170d9995e511669a082856a91f958a2fe380bfab3fb22" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" "checksum parity-wasm 0.27.6 (registry+https://github.com/rust-lang/crates.io-index)" = "bd4dc02a80a0315b109e48992c46942c79bcdb8fac416dd575d330ed9ced6cbd" -"checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" "checksum parking_lot 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9fd9d732f2de194336fb02fe11f9eed13d9e76f13f4315b4d88a14ca411750cd" "checksum parking_lot_core 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "9f35048d735bb93dd115a0030498785971aab3234d311fbe273d020084d26bd8" -"checksum patricia-trie 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f1e2f638d79aba5c4a71a4f373df6e3cd702250a53b7f0ed4da1e2a7be9737ae" "checksum plain_hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "83ae80873992f511142c07d0ec6c44de5636628fdb7e204abd655932ea79d995" "checksum proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ba8d4f9257b85eb6cdf13f055cea3190520aab1409ca2ab43493ea4820c25f0" "checksum proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5cb6f960ad471404618e9817c0e5d10b1ae74cfdf01fab89ea0641fe7fb2892" @@ -882,10 +634,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" "checksum rayon-core 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e64b609139d83da75902f88fd6c01820046840a18471e4dfcd5ac7c0f46bea53" -"checksum redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "744554e01ccbd98fff8c457c3b092cd67af62a555a43bfe97ae8a0451f7799fa" -"checksum regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e" "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" "checksum rlp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "babe6fce20c0ca9b1582998734c4569082d0ad08e43772a1c6c40aef4f106ef9" "checksum rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0ceb8ce7a5e520de349e1fa172baeba4a9e8d5ef06c47471863530bc4972ee1e" @@ -901,21 +649,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b" "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" -"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" -"checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" -"checksum time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "a15375f1df02096fb3317256ce2cee6a1f42fc84ea5ad5fc8c421cfe40c73098" "checksum tiny-keccak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e9241752647ca572f12c9b520a5d360d9099360c527770647e694001646a1d0" "checksum triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9291c7f0fae44858b5e087dd462afb382354120003778f1695b44aab98c7abd7" "checksum twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "475352206e7a290c5fccc27624a163e8d0d115f7bb60ca18a64fc9ce056d7435" "checksum uint 0.1.2 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)" = "" "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" -"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" -"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum wasmi 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "26b20dbeb7caee04597a5d2c93e2b3e64872c6ea2af732d7ad49dbec44067c35" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index c6b59c32f7e069b8a260fa8aec47f86b8bf5a222..d8d0d5eb193bf5a5f8e91997da21d64563c3b2ee 100644 GIT binary patch delta 1039 zcmZvbPfXKr6vuzB8>Q{m(EuBSs2Ov}__GcM69zJD;-6?RBpgh**p02gU~XnBI57f8 z(Zqni#H${R@n9mci6$Hfi5~Q5I4CA2>cK=gXyQeq2Vc9XNNDowd%w?n@As#D-?jO* z`Q`pP`vN|&5VtIeGdP)#S1hcIT#Hp}MP1cW;Yg%2s?KWp^!O#h*|hAe(+ubrb49f? z+)L~xsxnbQ!=dN$i3yGHE87j=pe!5!o;HEvYxEN90UIGe>=lHtHU?dzdwMk#3QRW>t66Uv+C-7HnYy_ z}m#q{_JYNx2M}r-*YFS&1m6c0PV)45C-QfPGP-_@|8?U99?(&dF7cyAqtTMy6G4M z!KiTpFdHKEh^M&K(nfEM3309hzx9XeHP0fixFiOz<&~Vc(4u|H^ys6S9%!bYYeqn% z1GTqyr`;*1eX7lYi;lWScORr3uet61$UQG@`Oet#$hGu}d=%Q~x_lbiDIdx}voRZD ztmDmf9LLB;M+QVA*f|FF4N>yb-tLrfulo!Lg?uuUNsr0-0{s?QTDXeMun(K#v7HbR zZ3qX0BZb_*gGbB!2Id8JaHY)qFu!#NA1!kya(M?=%lsv-(@#jl-;F2AfxB2Bpnrn8 zdoFkFp#$ze3GlnSUs(C#9&*%M`pM3m*YXKnOJPH&H8r2h=}ys%T*#-hx;m*9MadFR zNjO%5%VmcCP{a4$*8yA<^sn5+RP delta 1074 zcmZ`&&rcIU6rQ&&%XYV0R(_UZbg2z2ze?Lspduw}P@^F#L{UylTLx^YttksuNvP2a z5ToKmqc{ElV~A^_Au+)}fQ!b2#1j|25fb%a0@2yh2x)MVw{PZq-@G?F^S;%&)ww4< zHB2rCbE73Wb3ks?YI-zkT^d?k`c*-WLA7kN;M9y0XLSvyrf=d*M8{*Ao{3{ElTPc1 zCs#lnq?9s~GKHz>=}cq-Bi`Itp5HhY2nPKjZ3buJ<9Co?sh3fHfCV8y))ItR3j+Ww z%dsqQ9M6$=Fsw9I;4F?!>zLMyq^2SNZM9rR1a33LM#z`hYXMM*x@=JMovF=hp1f2_&fBjr-+y zOTb2UYgVflZK^|JWKd;^rwQ&^6XuMpJG-Enl++G^K(5z5FQzRQXjWGm>_m5s6d%At zc3m8ZgsuC=ZS0lZHh$K5D~(O=4b(eCL`!lB*`lu7R90$}L18#IXFAEvNM7=m4?!u} z;#&qp%5<8{&o-6YV>;aylPSAxlDD3fQIiG9?67G5hLVtx>Ps9TD{kH-``iLeiv@+I zeI$73*$koK-~5lzUp_D9uV;DBy{C@IzSE$PnC}8Kk=MQ?G#hn(CV!vD17~Oi2a+Hd zp8`>^uGl4yan;@jH0Lw1kv_l&(M7)-qKBO9h?Y)eV(rOz)Ogu(8OV>|LhhOsA)fZe zS!xWmr?fYYQolxVk^1%mo}#$t03IsfFDOqrfU5<(pYodz;3EaRn&RGl+=aA4;44kk zvmZbcq^fH+XE)nfzn#u%{y;ZZX|5*rTV9K&^tA22TH!^Le=9>-+6|l)By(9%OI}QN zhlxa!kx3lT0>MtPSW{JwL-bTe)X*tow0px^MhooeB`*wx{O-9#cEUC?8Jq#}} f%@@hzu#*h-b~dyermof^akY{8-U0BEFTLTvDN7H} diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index a833dbea3725c896c9963fb63ad01c8d53d09a3f..222585017ca5b72b2523b00253bb1d6454ec336a 100755 GIT binary patch delta 1063 zcmaKrUr19?9LLY^ZqDtxKNtKr&17D!hUxyPITefRpI#y&DJ=-*rZ=6+Zfv(26>db3 z(`k+$y@mJ?B^nxCh=K^Ahf0Zv9-@b+-Ya_OA%dWDufwKB7tTHB_c_1sIlpr_-*g(% zX_##*)hFl&iGHmo{R|Dp`|}c+o?DoKqFSR)j9f5_aXBDgl;Q!e&rkF!vZ*L0(k4sM z;E+g6ncwA5fOe<^6E=fTQ_U0Y105ki^m&9BbUGaa00sk?Sk_=*SzL!J&iXwy*A+i(pQ zm8Aw=JIL$CK033nDGoEreA6Y!U)8SbE}C10mGPFNz{a8j?y+#l6^-F~Ybr58A65l@ zXb<&-z6e6xv@x^|QeKn8Te5tH<~eh?kmap3zcz=T&T=#5t{fi7@;7vyHbTlbHy+AP z+@=DSjt}G4wh8K?LWgOKf7tETDL{Z?Fk=Oj`79RISLdSPh#VLe<5o_y*@ndeQAv_* zR+WUtf}^4@;A=X-q4%JuMA}ap@LSgj*pI{AL8!yE?hdY=uC?JS%|I?Z-Vwsau5xhW Qv97s2o`2cSyUlff0HzBmvj6}9 delta 1121 zcmaJ=OH30{6n%H545cugfdV2H9IDZZ*p^R0L^Q+4;KD?U(wLYGEe_a1S}Y@0G?o|= zTPXN>i6K!5D_sB)G8^N9khm~`uwp~v3OBAyhzl34e6KY8<0S8M&%Ni~JMX=dOhPgV zFB^_9u^2q<%!ttsVx0!MqE5pr&pRPUjcSVaFdS7XtIi_>u7KiC+c8DzrU zAh#1!pm75#8Cp2v>rs)32IWyyy<6pWSJo?oY9!G82xYS;Y$){six40~20|RmvJ3!l zoRQ zi5{5I--;aov-9N*)$xsdJz!dfiWjs2o;G6)O02w^>W~xX zw>q>lMw?LrJ0sc{aRDnijS$E0bDaK(^dA&a(prjS+#wa&SW1#?S>gf>EaN0}hD8$B z!84?iJt!gB6+FnZ+f0<_vSpKE4!(jE`^4K}0*~2@Z0*e}qyp z7l_q3uil?I5b1LE1^oK``s;vKE+k@J141V9`mT_{knx(lJ}X(52+ot$nZ`o|Ke-F9 zPves$&b|wm(|8MsFW-gVPUD3HckJNBNJ%@slSBP5($Sj-b@jHpRZS~QmWjw=KYEk4iTe>D=(>fsPPsjko;Rx sOKIvXzR~2zj@DwRz*k$R;2i$ieDjp!Fg-f=$OV From a8463d63b1dba433d1cda162da861e859b9ab779 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 23 May 2018 17:57:01 +0200 Subject: [PATCH 066/103] parse status from polkadot peer --- Cargo.lock | 4 ++ polkadot/network/Cargo.toml | 1 + polkadot/network/src/lib.rs | 78 ++++++++++++++++++++++++++----- substrate/codec/src/slicable.rs | 1 - substrate/network/src/lib.rs | 2 +- substrate/network/src/message.rs | 1 + substrate/network/src/protocol.rs | 11 ++--- 7 files changed, 78 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f663997f583cb..2b1324c3181e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1363,7 +1363,11 @@ dependencies = [ name = "polkadot-network" version = "0.1.0" dependencies = [ + "ed25519 0.1.0", + "polkadot-primitives 0.1.0", + "substrate-codec 0.1.0", "substrate-network 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] diff --git a/polkadot/network/Cargo.toml b/polkadot/network/Cargo.toml index 042730544def4..b8a239c241a57 100644 --- a/polkadot/network/Cargo.toml +++ b/polkadot/network/Cargo.toml @@ -5,6 +5,7 @@ authors = ["Parity Technologies "] description = "Polkadot-specific networking protocol" [dependencies] +substrate-codec = { path = "../../substrate/codec" } substrate-network = { path = "../../substrate/network" } substrate-primitives = { path = "../../substrate/primitives" } polkadot-primitives = { path = "../primitives" } diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 335c94987917a..6586fbc147489 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -14,27 +14,55 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +extern crate substrate_codec as codec; extern crate substrate_network; extern crate substrate_primitives; extern crate polkadot_primitives; extern crate ed25519; -use substrate_primitives::Hash; +use codec::Slicable; +use substrate_primitives::{AuthorityId, Hash}; use substrate_network::{PeerId, RequestId}; use substrate_network::specialization::{Specialization, HandlerContext}; +use substrate_network::StatusMessage as FullStatus; use polkadot_primitives::parachain::Id as ParaId; use std::collections::HashMap; /// Status of a Polkadot node. -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Status { collating_for: Option, } +impl Slicable for Status { + fn encode(&self) -> Vec { + let mut v = Vec::new(); + match self.collating_for { + Some(ref id) => { + v.push(1); + id.using_encoded(|s| v.extend(s)); + } + None => { + v.push(0); + } + } + v + } + + fn decode(input: &mut I) -> Option { + let collating_for = match input.read_byte()? { + 0 => None, + 1 => Some(ParaId::decode(input)?), + _ => return None, + }; + Some(Status { collating_for }) + } +} + /// Request candidate block data from a peer. -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct CandidateRequest { /// Unique request id. pub id: RequestId, @@ -43,7 +71,7 @@ pub struct CandidateRequest { } /// Candidate block data response. -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct CandidateResponse { /// Unique request id. pub id: RequestId, @@ -52,7 +80,7 @@ pub struct CandidateResponse { } /// Statements circulated among peers. -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum UnsignedStatement { /// Broadcast by a authority to indicate that this is his candidate for /// inclusion. @@ -71,7 +99,7 @@ pub enum UnsignedStatement { } /// A signed statement. -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Statement { /// Parent relay chain block header hash. pub parent_hash: Hash, @@ -83,23 +111,51 @@ pub struct Statement { pub sender: AuthorityId, } -struct PeerInfo; +struct PeerInfo { + status: Status, +} /// Polkadot protocol attachment for substrate. pub struct PolkadotProtocol { peers: HashMap, - collators: HashMap, + collators: HashMap>, collating_for: Option, } impl Specialization for PolkadotProtocol { fn status(&self) -> Vec { + Status { collating_for: self.collating_for.clone() }.encode() + } + fn on_peer_connected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, status: FullStatus) { + let status = match Status::decode(&mut &status.chain_status[..]) { + Some(status) => status, + None => { + ctx.disable_peer(peer_id); + return; + } + }; + + if let Some(ref para_id) = status.collating_for { + self.collators.entry(para_id.clone()) + .or_insert_with(Vec::new) + .push(peer_id); + } + + self.peers.insert(peer_id, PeerInfo { status }); } - fn on_peer_connected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, status: ::message::Status); + fn on_peer_disconnected(&mut self, _ctx: &mut HandlerContext, peer_id: PeerId) { + if let Some(info) = self.peers.remove(&peer_id) { + if let Some(collators) = info.status.collating_for.and_then(|id| self.collators.get_mut(&id)) { + if let Some(pos) = collators.iter().position(|x| x == &peer_id) { + collators.swap_remove(pos); + } + } + } + } - fn on_peer_disconnected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId); + fn on_message(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, message: Vec) { - fn on_message(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, message: Vec); + } } diff --git a/substrate/codec/src/slicable.rs b/substrate/codec/src/slicable.rs index 73230ee47d5fd..e11582f8233d0 100644 --- a/substrate/codec/src/slicable.rs +++ b/substrate/codec/src/slicable.rs @@ -106,7 +106,6 @@ impl Slicable for Option { } } - impl Slicable for Box { fn decode(input: &mut I) -> Option { Some(Box::new(T::decode(input)?)) diff --git a/substrate/network/src/lib.rs b/substrate/network/src/lib.rs index 362eab08449de..d413ca24712b9 100644 --- a/substrate/network/src/lib.rs +++ b/substrate/network/src/lib.rs @@ -64,7 +64,7 @@ pub use protocol::{ProtocolStatus}; pub use sync::{Status as SyncStatus, SyncState}; pub use network::{NonReservedPeerMode, NetworkConfiguration, PeerId}; pub use network_devp2p::{ConnectionFilter, ConnectionDirection}; -pub use message::{BftMessage, RequestId, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal}; +pub use message::{BftMessage, RequestId, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal, Status as StatusMessage}; pub use error::Error; pub use config::{Role, ProtocolConfig}; diff --git a/substrate/network/src/message.rs b/substrate/network/src/message.rs index 3b6690c387fef..9cb7b71d65cdc 100644 --- a/substrate/network/src/message.rs +++ b/substrate/network/src/message.rs @@ -22,6 +22,7 @@ use primitives::bft::Justification; use service::Role as RoleFlags; use ed25519; +/// A unique ID of a request. pub type RequestId = u64; type Bytes = Vec; diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index fdfce42b32cc4..c13fae9075b1b 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -78,8 +78,6 @@ struct Peer { known_blocks: HashSet, /// Request counter, next_request_id: message::RequestId, - /// Data from the protocol specialization. - chain_status: Vec, } #[derive(Debug)] @@ -199,7 +197,7 @@ struct ContextData { // Lock must always be taken in order declared here. pub struct Protocol { config: ProtocolConfig, - specialization: S, + specialization: RwLock, genesis_hash: HeaderHash, sync: RwLock, consensus: Mutex, @@ -221,7 +219,7 @@ impl Protocol { let best_hash = info.chain.best_hash; let protocol = Protocol { config: config, - specialization, + specialization: RwLock::new(specialization), context_data: ContextData { peers: RwLock::new(HashMap::new()), chain, @@ -383,7 +381,7 @@ impl Protocol { } fn on_chain_specific(&self, io: &mut SyncIo, peer: PeerId, message: Vec) { - unimplemented!() + self.specialization.write().on_message(&mut Context::new(&self.context_data, io), peer, message); } /// See `ConsensusService` trait. @@ -472,7 +470,6 @@ impl Protocol { known_extrinsics: HashSet::new(), known_blocks: HashSet::new(), next_request_id: 0, - chain_status: status.chain_status, }; peers.insert(peer_id.clone(), peer); handshaking_peers.remove(&peer_id); @@ -535,7 +532,7 @@ impl Protocol { best_hash: info.chain.best_hash, authority_signature: None, authority_id: None, - chain_status: self.specialization.status(), + chain_status: self.specialization.read().status(), }; self.send_message(io, peer_id, Message::Status(status)) } From 51d66ce0a5b88e844f97fe8d54fc5ae89a8f7ef7 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 23 May 2018 18:31:10 +0200 Subject: [PATCH 067/103] allow invoke of network specialization --- substrate/network/src/protocol.rs | 47 ++++++++++--------------------- substrate/network/src/service.rs | 13 +++++++++ 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index c13fae9075b1b..2d24a6c461ea6 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -101,17 +101,10 @@ pub struct TransactionStats { pub propagated_to: BTreeMap, } -enum Action { - Message(PeerId, Message), - Disconnect(PeerId), - Disable(PeerId), -} - /// Protocol context. pub(crate) struct Context<'a> { io: &'a mut SyncIo, context_data: &'a ContextData, - actions: Vec, } impl<'a> Context<'a> { @@ -119,25 +112,20 @@ impl<'a> Context<'a> { Context { io, context_data, - actions: Vec::new(), } } - fn push(&mut self, action: Action) { - self.actions.push(action); - } - /// Send a message to a peer. pub(crate) fn send_message(&mut self, peer_id: PeerId, message: Message) { - self.push(Action::Message(peer_id, message)); + send_message(&self.context_data.peers, self.io, peer_id, message) } pub(crate) fn disable_peer(&mut self, peer_id: PeerId) { - self.push(Action::Disable(peer_id)) + self.io.disable_peer(peer_id); } pub(crate) fn disconnect_peer(&mut self, peer_id: PeerId) { - self.push(Action::Disconnect(peer_id)) + self.io.disconnect_peer(peer_id) } /// Get peer info. @@ -152,7 +140,7 @@ impl<'a> Context<'a> { }) } - /// Get chain handle. + /// Get a handle to the chain. pub(crate) fn chain(&self) -> &Client { &*self.context_data.chain } @@ -160,31 +148,19 @@ impl<'a> Context<'a> { impl<'a> ::specialization::HandlerContext for Context<'a> { fn send(&mut self, peer_id: PeerId, message: Vec) { - self.push(Action::Message(peer_id, Message::ChainSpecific(message))); + self.send_message(peer_id, Message::ChainSpecific(message)); } fn disable_peer(&mut self, peer_id: PeerId) { - self.push(Action::Disable(peer_id)) + Context::disable_peer(self, peer_id); } fn disconnect_peer(&mut self, peer_id: PeerId) { - self.push(Action::Disconnect(peer_id)) + Context::disable_peer(self, peer_id); } fn client(&self) -> &Client { - self.chain() - } -} - -impl<'a> Drop for Context<'a> { - fn drop(&mut self) { - for action in self.actions.drain(..) { - match action { - Action::Message(id, message) => send_message(&self.context_data.peers, self.io, id, message), - Action::Disconnect(id) => self.io.disconnect_peer(id), - Action::Disable(id) => self.io.disable_peer(id), - } - } + &*self.context_data.chain } } @@ -584,6 +560,13 @@ impl Protocol { pub fn chain(&self) -> &Client { &*self.context_data.chain } + + /// Execute a closure with access to a network context and specialization. + pub fn with_spec(&self, io: &mut SyncIo, f: F) -> U + where F: FnOnce(&mut S, &mut ::specialization::HandlerContext) -> U + { + f(&mut* self.specialization.write(), &mut Context::new(&self.context_data, io)) + } } fn send_message(peers: &RwLock>, io: &mut SyncIo, peer_id: PeerId, mut message: Message) { diff --git a/substrate/network/src/service.rs b/substrate/network/src/service.rs index 484e3b56e1294..92961470e993c 100644 --- a/substrate/network/src/service.rs +++ b/substrate/network/src/service.rs @@ -169,6 +169,19 @@ impl Service { }); } + /// Execute a closure with the chain-specific network specialization. + /// If the network is unavailable, this will return `None`. + pub fn with_spec(&self, f: F) -> Option + where F: FnOnce(&mut S, &mut ::specialization::HandlerContext) -> U + { + let mut res = None; + self.network.with_context(DOT_PROTOCOL_ID, |context| { + res = Some(self.handler.protocol.with_spec(&mut NetSyncIo::new(context), f)) + }); + + res + } + fn start(&self) { match self.network.start().map_err(Into::into) { Err(ErrorKind::Io(ref e)) if e.kind() == io::ErrorKind::AddrInUse => From 14caa84a9571736f4532d739eb1e4fdd20974f0c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 24 May 2018 16:38:36 +0200 Subject: [PATCH 068/103] begin statement router implementation --- polkadot/consensus/src/lib.rs | 1 - polkadot/consensus/src/service.rs | 85 ---------------- polkadot/network/Cargo.toml | 3 + polkadot/network/src/consensus.rs | 160 ++++++++++++++++++++++++++++++ polkadot/network/src/lib.rs | 10 ++ substrate/bft/src/generic/mod.rs | 10 +- substrate/bft/src/lib.rs | 13 ++- substrate/network/src/lib.rs | 2 +- substrate/network/src/service.rs | 20 ++-- 9 files changed, 201 insertions(+), 103 deletions(-) create mode 100644 polkadot/network/src/consensus.rs diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 30ee9f50c614e..5409daeb972ac 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -287,7 +287,6 @@ impl bft::ProposerFactory for ProposerFactory debug!(target: "bft", "Initialising consensus proposer. Refusing to evaluate for {:?} from now.", DELAY_UNTIL); - let drop_signal = dispatch_collation_work( &self.network, router.clone(), diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 95b0d99459ea9..bad5c0d29636a 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -51,91 +51,6 @@ struct BftSink { _e: ::std::marker::PhantomData, } -struct Messages { - network_stream: net::BftMessageStream, - local_id: AuthorityId, - authorities: Vec, -} - -impl Stream for Messages { - type Item = bft::Communication; - type Error = bft::Error; - - fn poll(&mut self) -> Poll, Self::Error> { - // check the network - loop { - match self.network_stream.poll() { - Err(_) => return Err(bft::InputStreamConcluded.into()), - Ok(Async::NotReady) => return Ok(Async::NotReady), - Ok(Async::Ready(None)) => return Ok(Async::NotReady), // the input stream for agreements is never meant to logically end. - Ok(Async::Ready(Some(message))) => { - match process_message(message, &self.local_id, &self.authorities) { - Ok(Some(message)) => return Ok(Async::Ready(Some(message))), - Ok(None) => {} // ignored local message. - Err(e) => { - debug!("Message validation failed: {:?}", e); - } - } - } - } - } - } -} - -fn process_message(msg: net::LocalizedBftMessage, local_id: &AuthorityId, authorities: &[AuthorityId]) -> Result, bft::Error> { - Ok(Some(match msg.message { - net::BftMessage::Consensus(c) => bft::generic::Communication::Consensus(match c { - net::SignedConsensusMessage::Propose(proposal) => bft::generic::LocalizedMessage::Propose({ - if &proposal.sender == local_id { return Ok(None) } - let proposal = bft::generic::LocalizedProposal { - round_number: proposal.round_number as usize, - proposal: proposal.proposal, - digest: proposal.digest, - sender: proposal.sender, - digest_signature: ed25519::LocalizedSignature { - signature: proposal.digest_signature, - signer: ed25519::Public(proposal.sender), - }, - full_signature: ed25519::LocalizedSignature { - signature: proposal.full_signature, - signer: ed25519::Public(proposal.sender), - } - }; - bft::check_proposal(authorities, &msg.parent_hash, &proposal)?; - - trace!(target: "bft", "importing proposal message for round {} from {}", proposal.round_number, Hash::from(proposal.sender)); - proposal - }), - net::SignedConsensusMessage::Vote(vote) => bft::generic::LocalizedMessage::Vote({ - if &vote.sender == local_id { return Ok(None) } - let vote = bft::generic::LocalizedVote { - sender: vote.sender, - signature: ed25519::LocalizedSignature { - signature: vote.signature, - signer: ed25519::Public(vote.sender), - }, - vote: match vote.vote { - net::ConsensusVote::Prepare(r, h) => bft::generic::Vote::Prepare(r as usize, h), - net::ConsensusVote::Commit(r, h) => bft::generic::Vote::Commit(r as usize, h), - net::ConsensusVote::AdvanceRound(r) => bft::generic::Vote::AdvanceRound(r as usize), - } - }; - bft::check_vote(authorities, &msg.parent_hash, &vote)?; - - trace!(target: "bft", "importing vote {:?} from {}", vote.vote, Hash::from(vote.sender)); - vote - }), - }), - net::BftMessage::Auxiliary(a) => { - let justification = bft::UncheckedJustification::from(a); - // TODO: get proper error - let justification: Result<_, bft::Error> = bft::check_prepare_justification(authorities, msg.parent_hash, justification) - .map_err(|_| bft::ErrorKind::InvalidJustification.into()); - bft::generic::Communication::Auxiliary(justification?) - }, - })) -} - impl Sink for BftSink { type SinkItem = bft::Communication; // TODO: replace this with the ! type when that's stabilized diff --git a/polkadot/network/Cargo.toml b/polkadot/network/Cargo.toml index b8a239c241a57..04dff85b35b40 100644 --- a/polkadot/network/Cargo.toml +++ b/polkadot/network/Cargo.toml @@ -5,8 +5,11 @@ authors = ["Parity Technologies "] description = "Polkadot-specific networking protocol" [dependencies] +polkadot-consensus = { path = "../consensus" } +substrate-bft = { path = "../../substrate/bft" } substrate-codec = { path = "../../substrate/codec" } substrate-network = { path = "../../substrate/network" } substrate-primitives = { path = "../../substrate/primitives" } polkadot-primitives = { path = "../primitives" } ed25519 = { path = "../../substrate/ed25519" } +futures = "0.1" diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs new file mode 100644 index 0000000000000..6182188713cf7 --- /dev/null +++ b/polkadot/network/src/consensus.rs @@ -0,0 +1,160 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Implementation of the traits for consensus networking for the polkadot protocol. + +use consensus::{Network as ConsensusNetwork, TableRouter}; +use bft; +use substrate_network as net; +use substrate_primitives::block::{Id as BlockId, HeaderHash, Header}; +use futures::prelude::*; + +use super::NetworkService; + +struct BftSink { + network: Arc, + parent_hash: HeaderHash, + _e: ::std::marker::PhantomData, +} + +struct Messages { + network_stream: net::BftMessageStream, + local_id: AuthorityId, + authorities: Vec, +} + +impl Stream for Messages { + type Item = bft::Communication; + type Error = bft::Error; + + fn poll(&mut self) -> Poll, Self::Error> { + // check the network + loop { + match self.network_stream.poll() { + Err(_) => return Err(bft::InputStreamConcluded.into()), + Ok(Async::NotReady) => return Ok(Async::NotReady), + Ok(Async::Ready(None)) => return Ok(Async::NotReady), // the input stream for agreements is never meant to logically end. + Ok(Async::Ready(Some(message))) => { + match process_message(message, &self.local_id, &self.authorities) { + Ok(Some(message)) => return Ok(Async::Ready(Some(message))), + Ok(None) => {} // ignored local message. + Err(e) => { + debug!("Message validation failed: {:?}", e); + } + } + } + } + } + } +} + +fn process_message(msg: net::LocalizedBftMessage, local_id: &AuthorityId, authorities: &[AuthorityId]) -> Result, bft::Error> { + Ok(Some(match msg.message { + net::BftMessage::Consensus(c) => bft::generic::Communication::Consensus(match c { + net::SignedConsensusMessage::Propose(proposal) => bft::generic::LocalizedMessage::Propose({ + if &proposal.sender == local_id { return Ok(None) } + let proposal = bft::generic::LocalizedProposal { + round_number: proposal.round_number as usize, + proposal: proposal.proposal, + digest: proposal.digest, + sender: proposal.sender, + digest_signature: ed25519::LocalizedSignature { + signature: proposal.digest_signature, + signer: ed25519::Public(proposal.sender), + }, + full_signature: ed25519::LocalizedSignature { + signature: proposal.full_signature, + signer: ed25519::Public(proposal.sender), + } + }; + bft::check_proposal(authorities, &msg.parent_hash, &proposal)?; + + trace!(target: "bft", "importing proposal message for round {} from {}", proposal.round_number, Hash::from(proposal.sender)); + proposal + }), + net::SignedConsensusMessage::Vote(vote) => bft::generic::LocalizedMessage::Vote({ + if &vote.sender == local_id { return Ok(None) } + let vote = bft::generic::LocalizedVote { + sender: vote.sender, + signature: ed25519::LocalizedSignature { + signature: vote.signature, + signer: ed25519::Public(vote.sender), + }, + vote: match vote.vote { + net::ConsensusVote::Prepare(r, h) => bft::generic::Vote::Prepare(r as usize, h), + net::ConsensusVote::Commit(r, h) => bft::generic::Vote::Commit(r as usize, h), + net::ConsensusVote::AdvanceRound(r) => bft::generic::Vote::AdvanceRound(r as usize), + } + }; + bft::check_vote(authorities, &msg.parent_hash, &vote)?; + + trace!(target: "bft", "importing vote {:?} from {}", vote.vote, Hash::from(vote.sender)); + vote + }), + }), + net::BftMessage::Auxiliary(a) => { + let justification = bft::UncheckedJustification::from(a); + // TODO: get proper error + let justification: Result<_, bft::Error> = bft::check_prepare_justification(authorities, msg.parent_hash, justification) + .map_err(|_| bft::ErrorKind::InvalidJustification.into()); + bft::generic::Communication::Auxiliary(justification?) + }, + })) +} + +impl Sink for BftSink { + type SinkItem = bft::Communication; + // TODO: replace this with the ! type when that's stabilized + type SinkError = E; + + fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend { + let network_message = net::LocalizedBftMessage { + message: match message { + bft::generic::Communication::Consensus(c) => net::BftMessage::Consensus(match c { + bft::generic::LocalizedMessage::Propose(proposal) => net::SignedConsensusMessage::Propose(net::SignedConsensusProposal { + round_number: proposal.round_number as u32, + proposal: proposal.proposal, + digest: proposal.digest, + sender: proposal.sender, + digest_signature: proposal.digest_signature.signature, + full_signature: proposal.full_signature.signature, + }), + bft::generic::LocalizedMessage::Vote(vote) => net::SignedConsensusMessage::Vote(net::SignedConsensusVote { + sender: vote.sender, + signature: vote.signature.signature, + vote: match vote.vote { + bft::generic::Vote::Prepare(r, h) => net::ConsensusVote::Prepare(r as u32, h), + bft::generic::Vote::Commit(r, h) => net::ConsensusVote::Commit(r as u32, h), + bft::generic::Vote::AdvanceRound(r) => net::ConsensusVote::AdvanceRound(r as u32), + } + }), + }), + bft::generic::Communication::Auxiliary(justification) => net::BftMessage::Auxiliary(justification.uncheck().into()), + }, + parent_hash: self.parent_hash, + }; + self.network.send_bft_message(network_message); + Ok(::futures::AsyncSink::Ready) + } + + fn poll_complete(&mut self) -> ::futures::Poll<(), E> { + Ok(Async::Ready(())) + } +} + +impl ConsensusNetwork for NetworkService { + +} diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 6586fbc147489..b54d4642865bc 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -14,11 +14,15 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +extern crate substrate_bft as bft; extern crate substrate_codec as codec; extern crate substrate_network; + extern crate substrate_primitives; +extern crate polkadot_consensus as consensus;; extern crate polkadot_primitives; extern crate ed25519; +extern crate futures; use codec::Slicable; use substrate_primitives::{AuthorityId, Hash}; @@ -30,6 +34,12 @@ use polkadot_primitives::parachain::Id as ParaId; use std::collections::HashMap; +/// Polkadot protocol id. +pub const DOT_PROTOCOL_ID: ::network::ProtocolId = *b"dot"; + +/// Specialization of the network service for the polkadot protocol. +pub type NetworkService = ::substrate_network::Service; + /// Status of a Polkadot node. #[derive(Debug, PartialEq, Eq, Clone)] pub struct Status { diff --git a/substrate/bft/src/generic/mod.rs b/substrate/bft/src/generic/mod.rs index 0795cbfc62291..23f73fc0a6b40 100644 --- a/substrate/bft/src/generic/mod.rs +++ b/substrate/bft/src/generic/mod.rs @@ -366,6 +366,13 @@ impl Strategy { let round_number = msg.round_number(); let sender = msg.sender().clone(); + + // sanity check to avoid importing our own messages. this should already + // be guarded against by the network. + if sender == self.local_id { + return; + } + let misbehavior = if round_number == self.current_accumulator.round_number() { self.current_accumulator.import_message(msg) } else if round_number == self.future_accumulator.round_number() { @@ -817,7 +824,8 @@ impl Agreement { /// 1/3 of `nodes`, otherwise agreement may never be reached. /// /// The input stream should never logically conclude. The logic here assumes -/// that messages flushed to the output stream will eventually reach other nodes. +/// that messages flushed to the output stream will eventually reach other nodes and +/// that our own messages are not included in the input stream. /// /// Note that it is possible to witness agreement being reached without ever /// seeing the candidate. Any candidates seen will be checked for validity. diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index 327cfc0ad0d47..f5f87528398a2 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -107,14 +107,19 @@ pub type Communication = generic::Communication; -/// Proposer factory. Can be used to create a proposer instance. +/// Proposer factory. Creates proposer instance and communication streams. pub trait ProposerFactory { /// The proposer type this creates. type Proposer: Proposer; + /// The input stream type. + type Input: Stream::Error>; + /// The output stream type. + type Output: Sink::Error>; /// Error which can occur upon creation. type Error: From; /// Initialize the proposal logic on top of a specific header. + /// Produces the proposer and message streams for this instance of BFT agreement. // TODO: provide state context explicitly? fn init(&self, parent_header: &Header, authorities: &[AuthorityId], sign_with: Arc) -> Result; } @@ -340,10 +345,8 @@ impl BftService /// If the local signing key is an authority, this will begin the consensus process to build a /// block on top of it. If the executor fails to run the future, an error will be returned. /// Returns `None` if the agreement on the block with given parent is already in progress. - pub fn build_upon(&self, header: &Header, input: InStream, output: OutSink) + pub fn build_upon(&self, header: &Header) -> Result::Proposer, I, InStream, OutSink>>, P::Error> where - InStream: Stream::Proposer as Proposer>::Error>, - OutSink: Sink::Proposer as Proposer>::Error>, { let hash = header.blake2_256().into(); if self.live_agreement.lock().as_ref().map_or(false, |&(h, _)| h == hash) { @@ -364,7 +367,7 @@ impl BftService Err(From::from(ErrorKind::InvalidAuthority(local_id)))?; } - let proposer = self.factory.init(header, &authorities, self.key.clone())?; + let (proposer, input, output) = self.factory.init(header, &authorities, self.key.clone())?; let bft_instance = BftInstance { proposer, diff --git a/substrate/network/src/lib.rs b/substrate/network/src/lib.rs index d413ca24712b9..7df371889d8c0 100644 --- a/substrate/network/src/lib.rs +++ b/substrate/network/src/lib.rs @@ -62,7 +62,7 @@ pub use service::{Service, FetchFuture, ConsensusService, BftMessageStream, TransactionPool, Params, ManageNetwork, SyncProvider}; pub use protocol::{ProtocolStatus}; pub use sync::{Status as SyncStatus, SyncState}; -pub use network::{NonReservedPeerMode, NetworkConfiguration, PeerId}; +pub use network::{NonReservedPeerMode, NetworkConfiguration, PeerId, ProtocolId}; pub use network_devp2p::{ConnectionFilter, ConnectionDirection}; pub use message::{BftMessage, RequestId, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal, Status as StatusMessage}; pub use error::Error; diff --git a/substrate/network/src/service.rs b/substrate/network/src/service.rs index 92961470e993c..174b7e6b69b6b 100644 --- a/substrate/network/src/service.rs +++ b/substrate/network/src/service.rs @@ -33,9 +33,6 @@ use chain::Client; use message::LocalizedBftMessage; use specialization::Specialization; -/// Polkadot devp2p protocol id -pub const DOT_PROTOCOL_ID: ProtocolId = *b"dot"; - /// Type that represents fetch completion future. pub type FetchFuture = oneshot::Receiver>; /// Type that represents bft messages stream. @@ -134,14 +131,17 @@ pub struct Service { network: NetworkService, /// Devp2p protocol handler handler: Arc>, + /// Devp2p protocol ID. + protocol_id: ProtocolId, } impl Service { /// Creates and register protocol with the network service - pub fn new(params: Params) -> Result>, Error> { + pub fn new(params: Params, protocol_id: ProtocolId) -> Result>, Error> { let service = NetworkService::new(params.network_config.clone(), None)?; let sync = Arc::new(Service { network: service, + protocol_id, handler: Arc::new(ProtocolHandler { protocol: Protocol::new( params.config, @@ -157,14 +157,14 @@ impl Service { /// Called when a new block is imported by the client. pub fn on_block_imported(&self, hash: HeaderHash, header: &Header) { - self.network.with_context(DOT_PROTOCOL_ID, |context| { + self.network.with_context(self.protocol_id, |context| { self.handler.protocol.on_block_imported(&mut NetSyncIo::new(context), hash, header) }); } /// Called when new transactons are imported by the client. pub fn trigger_repropagate(&self) { - self.network.with_context(DOT_PROTOCOL_ID, |context| { + self.network.with_context(self.protocol_id, |context| { self.handler.protocol.propagate_extrinsics(&mut NetSyncIo::new(context)); }); } @@ -175,7 +175,7 @@ impl Service { where F: FnOnce(&mut S, &mut ::specialization::HandlerContext) -> U { let mut res = None; - self.network.with_context(DOT_PROTOCOL_ID, |context| { + self.network.with_context(self.protocol_id, |context| { res = Some(self.handler.protocol.with_spec(&mut NetSyncIo::new(context), f)) }); @@ -189,7 +189,7 @@ impl Service { Err(err) => warn!("Error starting network: {}", err), _ => {}, }; - self.network.register_protocol(self.handler.clone(), DOT_PROTOCOL_ID, &[(::protocol::CURRENT_VERSION as u8, ::protocol::CURRENT_PACKET_COUNT)]) + self.network.register_protocol(self.handler.clone(), self.protocol_id, &[(::protocol::CURRENT_VERSION as u8, ::protocol::CURRENT_PACKET_COUNT)]) .unwrap_or_else(|e| warn!("Error registering polkadot protocol: {:?}", e)); } @@ -213,7 +213,7 @@ impl SyncProvider for Service { /// Get sync peers fn peers(&self) -> Vec { - self.network.with_context_eval(DOT_PROTOCOL_ID, |ctx| { + self.network.with_context_eval(self.protocol_id, |ctx| { let peer_ids = self.network.connected_peers(); peer_ids.into_iter().filter_map(|peer_id| { @@ -254,7 +254,7 @@ impl ConsensusService for Service { } fn send_bft_message(&self, message: LocalizedBftMessage) { - self.network.with_context(DOT_PROTOCOL_ID, |context| { + self.network.with_context(self.protocol_id, |context| { self.handler.protocol.send_bft_message(&mut NetSyncIo::new(context), message); }); } From 78f742800fcc9f62a35a4078a20df8acf53e62ad Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 24 May 2018 17:38:52 +0200 Subject: [PATCH 069/103] remove dependency on tokio-timer --- Cargo.lock | 1 - polkadot/consensus/Cargo.toml | 1 - polkadot/consensus/src/error.rs | 8 +-- polkadot/consensus/src/evaluation.rs | 2 +- polkadot/consensus/src/lib.rs | 94 ++++++++++++++++++---------- polkadot/consensus/src/service.rs | 6 +- 6 files changed, 68 insertions(+), 44 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9eced1b8f52bb..afdd470a601a8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1321,7 +1321,6 @@ dependencies = [ "substrate-primitives 0.1.0", "substrate-runtime-support 0.1.0", "tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/polkadot/consensus/Cargo.toml b/polkadot/consensus/Cargo.toml index 125871dbb5843..5be758a91bd60 100644 --- a/polkadot/consensus/Cargo.toml +++ b/polkadot/consensus/Cargo.toml @@ -7,7 +7,6 @@ authors = ["Parity Technologies "] futures = "0.1.17" parking_lot = "0.4" tokio-core = "0.1.12" -tokio-timer = "0.1" ed25519 = { path = "../../substrate/ed25519" } error-chain = "0.11" log = "0.3" diff --git a/polkadot/consensus/src/error.rs b/polkadot/consensus/src/error.rs index ebdf1baf84fe6..ebc998ab69ec9 100644 --- a/polkadot/consensus/src/error.rs +++ b/polkadot/consensus/src/error.rs @@ -24,10 +24,6 @@ error_chain! { Bft(::bft::Error, ::bft::ErrorKind); } - foreign_links { - Timer(::tokio_timer::TimerError); - } - errors { InvalidDutyRosterLength(expected: usize, got: usize) { description("Duty Roster had invalid length"), @@ -41,6 +37,10 @@ error_chain! { description("Proposer destroyed before finishing proposing or evaluating"), display("Proposer destroyed before finishing proposing or evaluating"), } + Timer(e: String) { + description("Failed to register or resolve async timer."), + display("Timer failed: {}", e), + } Executor(e: ::futures::future::ExecuteErrorKind) { description("Unable to dispatch agreement future"), display("Unable to dispatch agreement future: {:?}", e), diff --git a/polkadot/consensus/src/evaluation.rs b/polkadot/consensus/src/evaluation.rs index 63bd076daf12d..b5ef81d2446a1 100644 --- a/polkadot/consensus/src/evaluation.rs +++ b/polkadot/consensus/src/evaluation.rs @@ -122,7 +122,7 @@ pub fn evaluate_initial( bail!(ErrorKind::ParachainOutOfOrder); } - if iter.position(|x| x == &head.parachain_index).is_none() { + if !iter.any(|x| x == &head.parachain_index) { // must be unknown since active parachains are always sorted. bail!(ErrorKind::UnknownParachain(head.parachain_index)) } diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 965bf8cc95ba2..f9e3b35a26001 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -47,7 +47,6 @@ extern crate substrate_network; extern crate exit_future; extern crate tokio_core; -extern crate tokio_timer; extern crate substrate_client as client; #[macro_use] @@ -75,7 +74,7 @@ use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, use primitives::block::{Block as SubstrateBlock, Header as SubstrateHeader, HeaderHash, Id as BlockId, Number as BlockNumber}; use primitives::AuthorityId; use transaction_pool::{Ready, TransactionPool}; -use tokio_timer::{Timer, Interval, Sleep, TimerError}; +use tokio_core::reactor::{Handle, Timeout, Interval}; use futures::prelude::*; use futures::future::{self, Shared}; @@ -218,6 +217,10 @@ fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: Au } } +fn timer_error(e: &::std::io::Error) -> Error { + ErrorKind::Timer(format!("{}", e)).into() +} + /// Polkadot proposer factory. pub struct ProposerFactory { /// The client instance. @@ -229,7 +232,7 @@ pub struct ProposerFactory { /// Parachain collators. pub collators: P, /// The timer used to schedule proposal intervals. - pub timer: Timer, + pub handle: Handle, /// The duration after which parachain-empty blocks will be allowed. pub parachain_empty_duration: Duration, } @@ -271,7 +274,8 @@ impl bft::ProposerFactory for ProposerFactory self.parachain_empty_duration.clone(), ); - let timeout = self.timer.sleep(DELAY_UNTIL); + let timeout = Timeout::new(DELAY_UNTIL, &self.handle) + .map_err(|e| timer_error(&e))?; debug!(target: "bft", "Initialising consensus proposer. Refusing to evaluate for {:?} from now.", DELAY_UNTIL); @@ -281,6 +285,7 @@ impl bft::ProposerFactory for ProposerFactory client: self.client.clone(), collators: self.collators.clone(), delay: timeout.shared(), + handle: self.handle.clone(), dynamic_inclusion, local_duty, local_key: sign_with, @@ -290,7 +295,6 @@ impl bft::ProposerFactory for ProposerFactory random_seed, router, table, - timer: self.timer.clone(), transaction_pool: self.transaction_pool.clone(), }) } @@ -304,8 +308,9 @@ struct LocalDuty { pub struct Proposer { client: Arc, collators: P, - delay: Shared, + delay: Shared, dynamic_inclusion: DynamicInclusion, + handle: Handle, local_duty: LocalDuty, local_key: Arc, parent_hash: HeaderHash, @@ -314,7 +319,6 @@ pub struct Proposer { random_seed: Hash, router: R, table: Arc, - timer: Timer, transaction_pool: Arc>, } @@ -325,7 +329,10 @@ impl bft::Proposer for Proposer P: Collators, { type Error = Error; - type Create = CreateProposal; + type Create = future::Either< + CreateProposal, + future::FutureResult, + >; type Evaluate = Box>; fn propose(&self) -> Self::Create { @@ -337,7 +344,30 @@ impl bft::Proposer for Proposer initial_included, ).unwrap_or_default(); - CreateProposal { + let timing = { + let delay = self.delay.clone(); + let dynamic_inclusion = self.dynamic_inclusion.clone(); + let make_timing = move |handle| -> Result { + let attempt_propose = Interval::new(ATTEMPT_PROPOSE_EVERY, handle)?; + let enough_candidates = Timeout::new(enough_candidates, handle)?; + Ok(ProposalTiming { + attempt_propose, + enough_candidates, + dynamic_inclusion, + minimum_delay: Some(delay), + last_included: initial_included, + }) + }; + + match make_timing(&self.handle) { + Ok(timing) => timing, + Err(e) => { + return future::Either::B(future::err(timer_error(&e))); + } + } + }; + + future::Either::A(CreateProposal { parent_hash: self.parent_hash.clone(), parent_number: self.parent_number.clone(), parent_id: self.parent_id.clone(), @@ -352,15 +382,8 @@ impl bft::Proposer for Proposer ), table: self.table.clone(), router: self.router.clone(), - timing: ProposalTiming { - timer: self.timer.clone(), - attempt_propose: self.timer.interval(ATTEMPT_PROPOSE_EVERY), - enough_candidates: self.timer.sleep(enough_candidates), - dynamic_inclusion: self.dynamic_inclusion.clone(), - minimum_delay: Some(self.delay.clone()), - last_included: initial_included, - } - } + timing, + }) } fn evaluate(&self, proposal: &SubstrateBlock) -> Self::Evaluate { @@ -394,7 +417,7 @@ impl bft::Proposer for Proposer let vote_delays = { // delay casting vote until able (according to minimum block time) let minimum_delay = self.delay.clone() - .map_err(|e| Error::from(::tokio_timer::TimerError::clone(&*e))); + .map_err(|e| timer_error(&*e)); let included_candidate_hashes = proposal .parachain_heads() @@ -423,7 +446,12 @@ impl bft::Proposer for Proposer // construct a future from the maximum of the two durations. let temporary_delay = match ::std::cmp::max(timestamp_delay, count_delay) { Some(duration) => { - let f = self.timer.sleep(duration).map_err(Error::from); + let maybe_timeout = Timeout::new(duration, &self.handle); + + let f = future::result(maybe_timeout) + .and_then(|timeout| timeout) + .map_err(|e| timer_error(&e)); + future::Either::A(f) } None => future::Either::B(future::ok(())), @@ -527,44 +555,46 @@ fn current_timestamp() -> Timestamp { } struct ProposalTiming { - timer: Timer, attempt_propose: Interval, dynamic_inclusion: DynamicInclusion, - enough_candidates: Sleep, - minimum_delay: Option>, + enough_candidates: Timeout, + minimum_delay: Option>, last_included: usize, } impl ProposalTiming { // whether it's time to attempt a proposal. // shouldn't be called outside of the context of a task. - fn poll(&mut self, included: usize) -> Poll<(), TimerError> { - + fn poll(&mut self, included: usize) -> Poll<(), Error> { // first drain from the interval so when the minimum delay is up // we don't have any notifications built up. // // this interval is just meant to produce periodic task wakeups // that lead to the `dynamic_inclusion` getting updated as necessary. - if let Async::Ready(x) = self.attempt_propose.poll()? { + if let Async::Ready(x) = self.attempt_propose.poll() + .map_err(|e| timer_error(&e))? + { x.expect("timer still alive; intervals never end; qed"); } if let Some(ref mut min) = self.minimum_delay { - try_ready!(min.poll().map_err(|e| TimerError::clone(&*e))); + try_ready!(min.poll().map_err(|e| timer_error(&*e))); } + self.minimum_delay = None; // after this point, the future must have completed. if included == self.last_included { - return self.enough_candidates.poll(); + return self.enough_candidates.poll().map_err(|e| timer_error(&e)); } // the amount of includable candidates has changed. schedule a wakeup // if it's not sufficient anymore. - match self.dynamic_inclusion.acceptable_in(Instant::now(), included) { + let now = Instant::now(); + match self.dynamic_inclusion.acceptable_in(now, included) { Some(duration) => { self.last_included = included; - self.enough_candidates = self.timer.sleep(duration); - self.enough_candidates.poll() + self.enough_candidates.reset(now + duration); + self.enough_candidates.poll().map_err(|e| timer_error(&e)) } None => { Ok(Async::Ready(())) @@ -693,7 +723,7 @@ impl Future for CreateProposal // 3. propose let proposed_candidates = self.table.with_proposal(|proposed_set| { - proposed_set.into_iter().cloned().collect() + proposed_set.into_iter().cloned().collect() }); self.propose_with(proposed_candidates).map(Async::Ready) diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 0b1f03a5bd8f0..cae27b16fd9b3 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -246,10 +246,6 @@ impl Service { let (signal, exit) = ::exit_future::signal(); let thread = thread::spawn(move || { let mut core = reactor::Core::new().expect("tokio::Core could not be created"); - let timer = ::tokio_timer::wheel() - .thread_name("bft service timer") - .build(); - let key = Arc::new(key); let factory = ProposerFactory { @@ -258,7 +254,7 @@ impl Service { network: Network(network.clone()), collators: NoCollators, parachain_empty_duration, - timer: timer, + handle: core.handle(), }; let bft_service = Arc::new(BftService::new(client.clone(), key, factory)); From f769e865a647eb9aeb257dabecda4fc7c53eeaaa Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 24 May 2018 18:10:08 +0200 Subject: [PATCH 070/103] fix sanity check and have proposer factory create communication streams --- Cargo.lock | 3 +++ substrate/bft/src/generic/mod.rs | 9 ++++---- substrate/bft/src/lib.rs | 38 +++++++++++++++++++++----------- 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 425abf058a1b2..758012f7108f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1363,7 +1363,10 @@ name = "polkadot-network" version = "0.1.0" dependencies = [ "ed25519 0.1.0", + "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "polkadot-consensus 0.1.0", "polkadot-primitives 0.1.0", + "substrate-bft 0.1.0", "substrate-codec 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", diff --git a/substrate/bft/src/generic/mod.rs b/substrate/bft/src/generic/mod.rs index 23f73fc0a6b40..19e03d50a06dd 100644 --- a/substrate/bft/src/generic/mod.rs +++ b/substrate/bft/src/generic/mod.rs @@ -361,7 +361,8 @@ impl Strategy { fn import_message( &mut self, - msg: LocalizedMessage + msg: LocalizedMessage, + allow_local: bool ) { let round_number = msg.round_number(); @@ -369,7 +370,7 @@ impl Strategy { // sanity check to avoid importing our own messages. this should already // be guarded against by the network. - if sender == self.local_id { + if !allow_local && sender == self.local_id { return; } @@ -736,7 +737,7 @@ impl Strategy { sending: &mut Sending<::Communication> ) { let signed_message = context.sign_local(message); - self.import_message(signed_message.clone()); + self.import_message(signed_message.clone(), true); sending.push(Communication::Consensus(signed_message)); } } @@ -781,7 +782,7 @@ impl Future for Agreement }; match message { - Communication::Consensus(message) => self.strategy.import_message(message), + Communication::Consensus(message) => self.strategy.import_message(message, false), Communication::Auxiliary(lock_proof) => self.strategy.import_lock_proof(&self.context, lock_proof), } diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index f5f87528398a2..26b975bacf27a 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -107,21 +107,22 @@ pub type Communication = generic::Communication; -/// Proposer factory. Creates proposer instance and communication streams. -pub trait ProposerFactory { +/// Environment producer for a BFT instance. Creates proposer instance and communication streams. +pub trait Environment { /// The proposer type this creates. type Proposer: Proposer; /// The input stream type. - type Input: Stream::Error>; + type Input: Stream::Error>; /// The output stream type. - type Output: Sink::Error>; + type Output: Sink::Error>; /// Error which can occur upon creation. type Error: From; /// Initialize the proposal logic on top of a specific header. /// Produces the proposer and message streams for this instance of BFT agreement. // TODO: provide state context explicitly? - fn init(&self, parent_header: &Header, authorities: &[AuthorityId], sign_with: Arc) -> Result; + fn init(&self, parent_header: &Header, authorities: &[AuthorityId], sign_with: Arc) + -> Result<(Self::Proposer, Self::Input, Self::Output), Self::Error>; } /// Logic for a proposer. @@ -317,7 +318,7 @@ pub struct BftService { impl BftService where - P: ProposerFactory, + P: Environment, ::Error: ::std::fmt::Display, I: BlockImport + Authorities, { @@ -345,8 +346,15 @@ impl BftService /// If the local signing key is an authority, this will begin the consensus process to build a /// block on top of it. If the executor fails to run the future, an error will be returned. /// Returns `None` if the agreement on the block with given parent is already in progress. - pub fn build_upon(&self, header: &Header) - -> Result::Proposer, I, InStream, OutSink>>, P::Error> where + pub fn build_upon(&self, header: &Header) + -> Result::Proposer, + I, +

    ::Input, +

    ::Output, + >>, P::Error> + where { let hash = header.blake2_256().into(); if self.live_agreement.lock().as_ref().map_or(false, |&(h, _)| h == hash) { @@ -625,12 +633,16 @@ mod tests { struct DummyFactory; struct DummyProposer(block::Number); - impl ProposerFactory for DummyFactory { + impl Environment for DummyFactory { type Proposer = DummyProposer; + type Input = stream::Empty; + type Output = Output; type Error = Error; - fn init(&self, parent_header: &Header, _authorities: &[AuthorityId], _sign_with: Arc) -> Result { - Ok(DummyProposer(parent_header.number + 1)) + fn init(&self, parent_header: &Header, _authorities: &[AuthorityId], _sign_with: Arc) + -> Result<(DummyProposer, Self::Input, Self::Output), Error> + { + Ok((DummyProposer(parent_header.number + 1), stream::empty(), Output(::std::marker::PhantomData))) } } @@ -700,14 +712,14 @@ mod tests { second.parent_hash = first_hash; let second_hash = second.blake2_256().into(); - let bft = service.build_upon(&first, stream::empty(), Output(Default::default())).unwrap(); + let bft = service.build_upon(&first).unwrap(); assert!(service.live_agreement.lock().as_ref().unwrap().0 == first_hash); // turn the core so the future gets polled and sends its task to the // service. otherwise it deadlocks. core.handle().execute(bft.unwrap()).unwrap(); core.turn(Some(::std::time::Duration::from_millis(100))); - let bft = service.build_upon(&second, stream::empty(), Output(Default::default())).unwrap(); + let bft = service.build_upon(&second).unwrap(); assert!(service.live_agreement.lock().as_ref().unwrap().0 != first_hash); assert!(service.live_agreement.lock().as_ref().unwrap().0 == second_hash); From 9dc67bae337dea7074a70cbdad9db47d55f42a2c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 24 May 2018 19:54:46 +0200 Subject: [PATCH 071/103] pull out statement routing from consensus library --- Cargo.lock | 1 - polkadot/consensus/Cargo.toml | 1 - polkadot/consensus/src/lib.rs | 24 +++-- polkadot/consensus/src/service.rs | 165 +++--------------------------- polkadot/network/src/consensus.rs | 40 ++++++++ substrate/bft/src/generic/mod.rs | 13 +-- substrate/bft/src/lib.rs | 14 +++ 7 files changed, 83 insertions(+), 175 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 758012f7108f1..b77f445c28c9b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1318,7 +1318,6 @@ dependencies = [ "substrate-client 0.1.0", "substrate-codec 0.1.0", "substrate-keyring 0.1.0", - "substrate-network 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-support 0.1.0", "tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/polkadot/consensus/Cargo.toml b/polkadot/consensus/Cargo.toml index 45be9fdb19d6b..b01203c9a7020 100644 --- a/polkadot/consensus/Cargo.toml +++ b/polkadot/consensus/Cargo.toml @@ -23,6 +23,5 @@ substrate-bft = { path = "../../substrate/bft" } substrate-codec = { path = "../../substrate/codec" } substrate-primitives = { path = "../../substrate/primitives" } substrate-runtime-support = { path = "../../substrate/runtime-support" } -substrate-network = { path = "../../substrate/network" } substrate-keyring = { path = "../../substrate/keyring" } substrate-client = { path = "../../substrate/client" } diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index c4bbd6d29227d..cc743d9ba20ae 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -43,7 +43,6 @@ extern crate substrate_bft as bft; extern crate substrate_codec as codec; extern crate substrate_primitives as primitives; extern crate substrate_runtime_support as runtime_support; -extern crate substrate_network; extern crate exit_future; extern crate tokio_core; @@ -118,18 +117,22 @@ pub trait TableRouter: Clone { fn fetch_extrinsic_data(&self, candidate: &CandidateReceipt) -> Self::FetchExtrinsic; } -/// A long-lived network which can create statement table routing instances. +/// A long-lived network which can create parachain statement and BFT message routing processes on demand. pub trait Network { /// The table router type. This should handle importing of any statements, /// routing statements to peers, and driving completion of any `StatementProducers`. type TableRouter: TableRouter; + /// The input stream of BFT messages. Should never logi + type Input: Stream; + /// The output sink of BFT messages. This + type Output: Sink; /// Execute a future in the background. Typically used for fairly heavy computations, /// so it is recommended to have this use a thread pool. fn execute(&self, future: F) where F: Future + Send + 'static; /// Instantiate a table router using the given shared table. - fn table_router(&self, table: Arc) -> Self::TableRouter; + fn communication_for(&self, table: Arc) -> (Self::TableRouter, Self::Input, Self::Output); } /// Information about a specific group. @@ -241,7 +244,7 @@ pub struct ProposerFactory { pub parachain_empty_duration: Duration, } -impl bft::ProposerFactory for ProposerFactory +impl bft::Environment for ProposerFactory where C: Collators + Send + 'static, N: Network, @@ -251,13 +254,15 @@ impl bft::ProposerFactory for ProposerFactory P::CheckedBlockId: Send + 'static, { type Proposer = Proposer

    , } -impl Future for MessageProcessTask { +impl Future for MessageProcessTask

    where P::CheckedBlockId: Send { type Item = (); type Error = (); @@ -244,13 +156,14 @@ impl Future for MessageProcessTask { match self.inner_stream.poll() { Ok(Async::Ready(Some(val))) => match val { ConsensusMessage::Bft(msg) => { - match process_bft_message(msg, &self.authorities, &self.local_id) { + let local_id = self.table_router.table.session_key(); + match process_bft_message(msg, &local_id, &self.validators[..]) { Ok(Some(msg)) => { if let Err(_) = self.bft_messages.unbounded_send(msg) { // if the BFT receiving stream has ended then // we should just bail. trace!(target: "bft", "BFT message stream appears to have closed"); - return Ok(()); + return Ok(Async::Ready(())); } } Ok(None) => {} // ignored local message @@ -260,12 +173,14 @@ impl Future for MessageProcessTask { } } ConsensusMessage::ChainSpecific(msg, _) => { - let statement = match ::serde_json::from_slice(&msg) { - Ok(Message::Statement) + if let Ok(Message::Statement(parent_hash, statement)) = ::serde_json::from_slice(&msg) { + if ::polkadot_consensus::check_statement(&statement.statement, &statement.signature, statement.sender, &parent_hash) { + self.table_router.import_statement(statement); + } } } } - Ok(Async::Ready(None)) => return Ok(Async::Ready(())) + Ok(Async::Ready(None)) => return Ok(Async::Ready(())), Ok(Async::NotReady) => {}, Err(e) => debug!(target: "p_net", "Error getting consensus message: {:?}", e), } @@ -273,30 +188,47 @@ impl Future for MessageProcessTask { } } +/// Input stream from the consensus network. +pub struct InputAdapter { + input: mpsc::UnboundedReceiver>, +} + +impl Stream for InputAdapter { + type Item = bft::Communication; + type Error = ::polkadot_consensus::Error; + + fn poll(&mut self) -> Poll, Self::Error> { + match self.input.poll() { + Err(_) | Ok(Async::Ready(None)) => Err(bft::InputStreamConcluded.into()), + Ok(x) => Ok(x) + } + } +} + /// Wrapper around the network service -pub struct ConsensusNetwork { +pub struct ConsensusNetwork

    { network: Arc, + api: Arc

    , } -impl ConsensusNetwork { +impl

    ConsensusNetwork

    { /// Create a new consensus networking object. - pub fn new(network: Arc, ) -> Self { - ConsensusNetwork { network } + pub fn new(network: Arc, api: Arc

    ) -> Self { + ConsensusNetwork { network, api } } } /// A long-lived network which can create parachain statement and BFT message routing processes on demand. -impl Network for ConsensusNetwork { - type TableRouter = TableRouter; +impl Network for ConsensusNetwork

    where P::CheckedBlockId: Send { + type TableRouter = Router

    ; /// The input stream of BFT messages. Should never logically conclude. - type Input = Messages; + type Input = InputAdapter; /// The output sink of BFT messages. Messages sent here should eventually pass to all - /// current authorities. - type Output = BftSink; + /// current validators. + type Output = BftSink<::polkadot_consensus::Error>; /// Instantiate a table router using the given shared table. - fn communication_for(&self, table: Arc, task_executor: ) -> (Self::TableRouter, Self::Input, Self::Output) { - let table_router = TableRouter; + fn communication_for(&self, validators: &[SessionKey], table: Arc, task_executor: TaskExecutor) -> (Self::TableRouter, Self::Input, Self::Output) { let parent_hash = table.consensus_parent_hash().clone(); let sink = BftSink { @@ -305,7 +237,120 @@ impl Network for ConsensusNetwork { _marker: Default::default(), }; + let (bft_send, bft_recv) = mpsc::unbounded(); + + let checked_parent_hash = match self.api.check_id(BlockId::hash(parent_hash)) { + Ok(checked) => Some(checked), + Err(e) => { + warn!(target: "p_net", "Unable to evaluate candidates: unknown block ID: {}", e); + None + } + }; + + let table_router = Router { + table, + network: self.network.clone(), + api: self.api.clone(), + task_executor, + parent_hash: checked_parent_hash, + }; + // spin up a task in the background that processes all incoming statements - // + // TODO: propagate statements on a timer? + let process_task = self.network.with_spec(|spec, _ctx| { + MessageProcessTask { + inner_stream: spec.consensus_gossip.messages_for(parent_hash), + bft_messages: bft_send, + validators: validators.to_vec(), + table_router: table_router.clone(), + } + }); + + match process_task { + Some(task) => table_router.task_executor.spawn(task), + None => warn!(target: "p_net", "Cannot process incoming messages: network appears to be down"), + } + + (table_router, InputAdapter { input: bft_recv }, sink) + } +} + +/// Table routing implementation. +pub struct Router { + table: Arc, + network: Arc, + api: Arc

    , + task_executor: TaskExecutor, + parent_hash: Option, +} + +impl Clone for Router

    { + fn clone(&self) -> Self { + Router { + table: self.table.clone(), + network: self.network.clone(), + api: self.api.clone(), + task_executor: self.task_executor.clone(), + parent_hash: self.parent_hash.clone(), + } + } +} + +impl Router

    where P::CheckedBlockId: Send { + fn import_statement(&self, statement: SignedStatement) { + let api = self.api.clone(); + let parent_hash = self.parent_hash.clone(); + + let validate_collation = move |collation| -> Option { + let checked = parent_hash.clone()?; + + match ::polkadot_consensus::validate_collation(&*api, &checked, &collation) { + Ok(()) => Some(true), + Err(e) => { + debug!(target: "p_net", "Encountered bad collation: {}", e); + Some(false) + } + } + }; + + let producer = self.table.import_remote_statement( + self, + statement, + None, // TODO: attach source to ConsensusMessage + validate_collation, + ); + + if !producer.is_blank() { + let table = self.table.clone(); + self.task_executor.spawn(producer.map(move |produced| { + // TODO: import statements (which might spawn _more_ tasks) + // and ensure availability of block/extrinsic + if let Some(validity) = produced.validity { + table.sign_and_import(validity); + } + + if let Some(availability) = produced.availability { + table.sign_and_import(availability); + } + })) + } + } +} + +impl TableRouter for Router

    where P::CheckedBlockId: Send { + type Error = (); + type FetchCandidate = future::Empty; + type FetchExtrinsic = future::Empty; + + fn local_candidate_data(&self, _hash: Hash, _block_data: BlockData, _extrinsic: Extrinsic) { + // give to network to make available and multicast + } + + fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate { + future::empty() + } + + fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { + future::empty() } } diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index d0b99cee74b7e..9f552f30df5ac 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -22,19 +22,23 @@ extern crate serde_json; extern crate substrate_bft as bft; extern crate substrate_codec as codec; extern crate substrate_network; - extern crate substrate_primitives; + +extern crate polkadot_api; extern crate polkadot_consensus; extern crate polkadot_primitives; + extern crate ed25519; extern crate futures; extern crate tokio; +#[macro_use] +extern crate log; + use codec::Slicable; -use polkadot_consensus::Statement; +use polkadot_consensus::SignedStatement; use polkadot_primitives::{Block, Hash}; use polkadot_primitives::parachain::Id as ParaId; -use substrate_primitives::{AuthorityId}; use substrate_network::{PeerId, RequestId, Context}; use substrate_network::consensus_gossip::ConsensusGossip; use substrate_network::{message, generic_message}; @@ -43,7 +47,7 @@ use substrate_network::StatusMessage as GenericFullStatus; use std::collections::HashMap; -mod consensus; +pub mod consensus; /// Polkadot protocol id. pub const DOT_PROTOCOL_ID: ::substrate_network::ProtocolId = *b"dot"; @@ -118,7 +122,7 @@ pub struct PolkadotProtocol { #[derive(Serialize, Deserialize)] pub enum Message { /// signed statement and localized parent hash. - Statement(Hash, Statement), + Statement(Hash, SignedStatement), } impl Specialization for PolkadotProtocol { @@ -174,10 +178,8 @@ impl Specialization for PolkadotProtocol { }; match msg { - Message::Statement(parent_hash, statement) => { - // TODO: notify table routing instance - self.consensus_gossip.on_chain_specific(ctx, peer_id, raw, parent_hash); - } + Message::Statement(parent_hash, statement) => + self.consensus_gossip.on_chain_specific(ctx, peer_id, raw, parent_hash), } } _ => {} From 2bb829dbbc4d4174fa82f02ddf6174109ed9b2f0 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 18 Jun 2018 16:36:08 +0200 Subject: [PATCH 080/103] remove known tracking from statement-table crate --- polkadot/consensus/src/shared_table/mod.rs | 15 +- polkadot/network/src/consensus.rs | 9 +- polkadot/network/src/lib.rs | 4 + polkadot/statement-table/src/generic.rs | 297 ++------------------- polkadot/statement-table/src/lib.rs | 24 -- 5 files changed, 32 insertions(+), 317 deletions(-) diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index 0c8f986bc2d63..1ae7b324f7d3c 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -97,14 +97,13 @@ impl SharedTableInner { context: &TableContext, router: &R, statement: table::SignedStatement, - received_from: Option, check_candidate: C, ) -> StatementProducer< ::Future, ::Future, C, > { - let summary = match self.table.import_statement(context, statement, received_from) { + let summary = match self.table.import_statement(context, statement) { Some(summary) => summary, None => return Default::default(), }; @@ -332,10 +331,9 @@ impl SharedTable { &self, router: &R, statement: table::SignedStatement, - received_from: Option, check_candidate: C, ) -> StatementProducer<::Future, ::Future, C> { - self.inner.lock().import_remote_statement(&*self.context, router, statement, received_from, check_candidate) + self.inner.lock().import_remote_statement(&*self.context, router, statement, check_candidate) } /// Sign and import a local statement. @@ -352,7 +350,7 @@ impl SharedTable { inner.proposed_digest = proposed_digest; } - inner.table.import_statement(&*self.context, signed_statement, None); + inner.table.import_statement(&*self.context, signed_statement); } /// Execute a closure using a specific candidate. @@ -385,11 +383,6 @@ impl SharedTable { self.inner.lock().table.get_misbehavior().clone() } - /// Fill a statement batch. - pub fn fill_batch(&self, batch: &mut B) { - self.inner.lock().table.fill_batch(batch); - } - /// Track includability of a given set of candidate hashes. pub fn track_includability(&self, iterable: I) -> Includable where I: IntoIterator @@ -479,7 +472,6 @@ mod tests { let producer = shared_table.import_remote_statement( &DummyRouter, signed_statement, - None, |_| Some(true), ); @@ -529,7 +521,6 @@ mod tests { let producer = shared_table.import_remote_statement( &DummyRouter, signed_statement, - None, |_| Some(true), ); diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 0e94d4d261d35..c2cefbf86b7cd 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -316,15 +316,14 @@ impl Router

    where P::CheckedBloc let producer = self.table.import_remote_statement( self, statement, - None, // TODO: attach source to ConsensusMessage validate_collation, ); if !producer.is_blank() { let table = self.table.clone(); self.task_executor.spawn(producer.map(move |produced| { - // TODO: import statements (which might spawn _more_ tasks) - // and ensure availability of block/extrinsic + // TODO: ensure availability of block/extrinsic + // and propagate these statements. if let Some(validity) = produced.validity { table.sign_and_import(validity); } @@ -340,7 +339,7 @@ impl Router

    where P::CheckedBloc impl TableRouter for Router

    where P::CheckedBlockId: Send { type Error = (); type FetchCandidate = future::Empty; - type FetchExtrinsic = future::Empty; + type FetchExtrinsic = Result; fn local_candidate_data(&self, _hash: Hash, _block_data: BlockData, _extrinsic: Extrinsic) { // give to network to make available and multicast @@ -351,6 +350,6 @@ impl TableRouter for Router

    where P::CheckedBlock } fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { - future::empty() + Ok(Extrinsic) } } diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 9f552f30df5ac..f108b9c0cb856 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -123,6 +123,10 @@ pub struct PolkadotProtocol { pub enum Message { /// signed statement and localized parent hash. Statement(Hash, SignedStatement), + /// Requesting parachain block data by candidate hash. + RequestBlockData(RequestId, Hash), + /// Provide block data by candidate hash. + BlockData(RequestId, BlockData), } impl Specialization for PolkadotProtocol { diff --git a/polkadot/statement-table/src/generic.rs b/polkadot/statement-table/src/generic.rs index 442948c3a3019..d227e71cd5ef5 100644 --- a/polkadot/statement-table/src/generic.rs +++ b/polkadot/statement-table/src/generic.rs @@ -27,29 +27,12 @@ //! propose and attest to validity of candidates, and those who can only attest //! to availability. -use std::collections::HashSet; use std::collections::hash_map::{HashMap, Entry}; use std::hash::Hash; use std::fmt::Debug; use codec::{Slicable, Input}; -/// A batch of statements to send out. -pub trait StatementBatch { - /// Get the target authorities of these statements. - fn targets(&self) -> &[V]; - - /// If the batch is empty. - fn is_empty(&self) -> bool; - - /// Push a statement onto the batch. Returns false when the batch is full. - /// - /// This is meant to do work like incrementally serializing the statements - /// into a vector of bytes while making sure the length is below a certain - /// amount. - fn push(&mut self, statement: T) -> bool; -} - /// Context for the statement table. pub trait Context { /// A authority ID @@ -169,26 +152,6 @@ pub struct SignedStatement { pub sender: V, } -// A unique trace for a class of valid statements issued by a authority. -// -// We keep track of which statements we have received or sent to other authorities -// in order to prevent relaying the same data multiple times. -// -// The signature of the statement is replaced by the authority because the authority -// is unique while signatures are not (at least under common schemes like -// Schnorr or ECDSA). -#[derive(Hash, PartialEq, Eq, Clone)] -enum StatementTrace { - /// The candidate proposed by the authority. - Candidate(V), - /// A validity statement from that authority about the given digest. - Valid(V, D), - /// An invalidity statement from that authority about the given digest. - Invalid(V, D), - /// An availability statement from that authority about the given digest. - Available(V, D), -} - /// Misbehavior: voting more than one way on candidate validity. /// /// Since there are three possible ways to vote, a double vote is possible in @@ -306,14 +269,12 @@ impl CandidateData { // authority metadata struct AuthorityData { proposal: Option<(C::Digest, C::Signature)>, - known_statements: HashSet>, } impl Default for AuthorityData { fn default() -> Self { AuthorityData { proposal: None, - known_statements: HashSet::default(), } } } @@ -391,17 +352,9 @@ impl Table { &mut self, context: &C, statement: SignedStatement, - from: Option ) -> Option> { let SignedStatement { statement, signature, sender: signer } = statement; - let trace = match statement { - Statement::Candidate(_) => StatementTrace::Candidate(signer.clone()), - Statement::Valid(ref d) => StatementTrace::Valid(signer.clone(), d.clone()), - Statement::Invalid(ref d) => StatementTrace::Invalid(signer.clone(), d.clone()), - Statement::Available(ref d) => StatementTrace::Available(signer.clone(), d.clone()), - }; - let (maybe_misbehavior, maybe_summary) = match statement { Statement::Candidate(candidate) => self.import_candidate( context, @@ -433,12 +386,6 @@ impl Table { // all misbehavior in agreement is provable and actively malicious. // punishments are not cumulative. self.detected_misbehavior.insert(signer, misbehavior); - } else { - if let Some(from) = from { - self.note_trace_seen(trace.clone(), from); - } - - self.note_trace_seen(trace, signer); } maybe_summary @@ -461,136 +408,6 @@ impl Table { self.includable_count.len() } - /// Fill a statement batch and note messages as seen by the targets. - pub fn fill_batch(&mut self, batch: &mut B) - where B: StatementBatch< - C::AuthorityId, - SignedStatement, - > - { - // naively iterate all statements so far, taking any that - // at least one of the targets has not seen. - - // workaround for the fact that it's inconvenient to borrow multiple - // entries out of a hashmap mutably -- we just move them out and - // replace them when we're done. - struct SwappedTargetData<'a, C: 'a + Context> { - authority_data: &'a mut HashMap>, - target_data: Vec<(C::AuthorityId, AuthorityData)>, - } - - impl<'a, C: 'a + Context> Drop for SwappedTargetData<'a, C> { - fn drop(&mut self) { - for (id, data) in self.target_data.drain(..) { - self.authority_data.insert(id, data); - } - } - } - - // pre-fetch authority data for all the targets. - let mut target_data = { - let authority_data = &mut self.authority_data; - let mut target_data = Vec::with_capacity(batch.targets().len()); - for target in batch.targets() { - let active_data = match authority_data.get_mut(target) { - None => Default::default(), - Some(x) => ::std::mem::replace(x, Default::default()), - }; - - target_data.push((target.clone(), active_data)); - } - - SwappedTargetData { - authority_data, - target_data - } - }; - - let target_data = &mut target_data.target_data; - - macro_rules! attempt_send { - ($trace:expr, sender=$sender:expr, sig=$sig:expr, statement=$statement:expr) => {{ - let trace = $trace; - let can_send = target_data.iter() - .any(|t| !t.1.known_statements.contains(&trace)); - - if can_send { - let statement = SignedStatement { - statement: $statement, - signature: $sig, - sender: $sender, - }; - - if batch.push(statement) { - for target in target_data.iter_mut() { - target.1.known_statements.insert(trace.clone()); - } - } else { - return; - } - } - }} - } - - // reconstruct statements for anything whose trace passes the filter. - for (digest, candidate) in self.candidate_votes.iter() { - let issuance_iter = candidate.validity_votes.iter() - .filter(|&(_, x)| if let ValidityVote::Issued(_) = *x { true } else { false }); - - let validity_iter = candidate.validity_votes.iter() - .filter(|&(_, x)| if let ValidityVote::Issued(_) = *x { false } else { true }); - - // send issuance statements before votes. - for (sender, vote) in issuance_iter.chain(validity_iter) { - match *vote { - ValidityVote::Issued(ref sig) => { - attempt_send!( - StatementTrace::Candidate(sender.clone()), - sender = sender.clone(), - sig = sig.clone(), - statement = Statement::Candidate(candidate.candidate.clone()) - ) - } - ValidityVote::Valid(ref sig) => { - attempt_send!( - StatementTrace::Valid(sender.clone(), digest.clone()), - sender = sender.clone(), - sig = sig.clone(), - statement = Statement::Valid(digest.clone()) - ) - } - ValidityVote::Invalid(ref sig) => { - attempt_send!( - StatementTrace::Invalid(sender.clone(), digest.clone()), - sender = sender.clone(), - sig = sig.clone(), - statement = Statement::Invalid(digest.clone()) - ) - } - } - }; - - - // and lastly send availability. - for (sender, sig) in candidate.availability_votes.iter() { - attempt_send!( - StatementTrace::Available(sender.clone(), digest.clone()), - sender = sender.clone(), - sig = sig.clone(), - statement = Statement::Available(digest.clone()) - ) - } - } - - } - - fn note_trace_seen(&mut self, trace: StatementTrace, known_by: C::AuthorityId) { - self.authority_data.entry(known_by).or_insert_with(|| AuthorityData { - proposal: None, - known_statements: HashSet::default(), - }).known_statements.insert(trace); - } - fn import_candidate( &mut self, context: &C, @@ -651,7 +468,6 @@ impl Table { Entry::Vacant(vacant) => { vacant.insert(AuthorityData { proposal: Some((digest.clone(), signature.clone())), - known_statements: HashSet::new(), }); true } @@ -820,26 +636,6 @@ mod tests { use super::*; use std::collections::HashMap; - #[derive(Debug, Clone)] - struct VecBatch { - pub max_len: usize, - pub targets: Vec, - pub items: Vec, - } - - impl ::generic::StatementBatch for VecBatch { - fn targets(&self) -> &[V] { &self.targets } - fn is_empty(&self) -> bool { self.items.is_empty() } - fn push(&mut self, item: T) -> bool { - if self.items.len() == self.max_len { - false - } else { - self.items.push(item); - true - } - } - } - fn create() -> Table { Table::default() } @@ -933,10 +729,10 @@ mod tests { sender: AuthorityId(1), }; - table.import_statement(&context, statement_a, None); + table.import_statement(&context, statement_a); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); - table.import_statement(&context, statement_b, None); + table.import_statement(&context, statement_b); assert_eq!( table.detected_misbehavior.get(&AuthorityId(1)).unwrap(), &Misbehavior::MultipleCandidates(MultipleCandidates { @@ -963,7 +759,7 @@ mod tests { sender: AuthorityId(1), }; - table.import_statement(&context, statement, None); + table.import_statement(&context, statement); assert_eq!( table.detected_misbehavior.get(&AuthorityId(1)).unwrap(), @@ -1004,8 +800,8 @@ mod tests { }; let candidate_b_digest = Digest(987); - table.import_statement(&context, candidate_a, None); - table.import_statement(&context, candidate_b, None); + table.import_statement(&context, candidate_a); + table.import_statement(&context, candidate_b); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); @@ -1015,7 +811,7 @@ mod tests { signature: Signature(1), sender: AuthorityId(1), }; - table.import_statement(&context, bad_availability_vote, None); + table.import_statement(&context, bad_availability_vote); assert_eq!( table.detected_misbehavior.get(&AuthorityId(1)).unwrap(), @@ -1034,7 +830,7 @@ mod tests { signature: Signature(2), sender: AuthorityId(2), }; - table.import_statement(&context, bad_validity_vote, None); + table.import_statement(&context, bad_validity_vote); assert_eq!( table.detected_misbehavior.get(&AuthorityId(2)).unwrap(), @@ -1067,7 +863,7 @@ mod tests { }; let candidate_digest = Digest(100); - table.import_statement(&context, statement, None); + table.import_statement(&context, statement); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); let valid_statement = SignedStatement { @@ -1082,10 +878,10 @@ mod tests { sender: AuthorityId(2), }; - table.import_statement(&context, valid_statement, None); + table.import_statement(&context, valid_statement); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); - table.import_statement(&context, invalid_statement, None); + table.import_statement(&context, invalid_statement); assert_eq!( table.detected_misbehavior.get(&AuthorityId(2)).unwrap(), @@ -1115,7 +911,7 @@ mod tests { }; let candidate_digest = Digest(100); - table.import_statement(&context, statement, None); + table.import_statement(&context, statement); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); let extra_vote = SignedStatement { @@ -1124,7 +920,7 @@ mod tests { sender: AuthorityId(1), }; - table.import_statement(&context, extra_vote, None); + table.import_statement(&context, extra_vote); assert_eq!( table.detected_misbehavior.get(&AuthorityId(1)).unwrap(), &Misbehavior::ValidityDoubleVote(ValidityDoubleVote::IssuedAndValidity( @@ -1188,7 +984,7 @@ mod tests { }; let candidate_digest = Digest(100); - table.import_statement(&context, statement, None); + table.import_statement(&context, statement); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); assert!(!table.candidate_includable(&candidate_digest, &context)); assert!(table.includable_count.is_empty()); @@ -1199,7 +995,7 @@ mod tests { sender: AuthorityId(2), }; - table.import_statement(&context, vote, None); + table.import_statement(&context, vote); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); assert!(!table.candidate_includable(&candidate_digest, &context)); assert!(table.includable_count.is_empty()); @@ -1211,7 +1007,7 @@ mod tests { sender: AuthorityId(4), }; - table.import_statement(&context, vote, None); + table.import_statement(&context, vote); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(4))); assert!(table.candidate_includable(&candidate_digest, &context)); assert!(table.includable_count.get(&GroupId(2)).is_some()); @@ -1223,7 +1019,7 @@ mod tests { sender: AuthorityId(3), }; - table.import_statement(&context, vote, None); + table.import_statement(&context, vote); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); assert!(!table.candidate_includable(&candidate_digest, &context)); assert!(table.includable_count.is_empty()); @@ -1246,7 +1042,7 @@ mod tests { sender: AuthorityId(1), }; - let summary = table.import_statement(&context, statement, None) + let summary = table.import_statement(&context, statement) .expect("candidate import to give summary"); assert_eq!(summary.candidate, Digest(100)); @@ -1274,7 +1070,7 @@ mod tests { }; let candidate_digest = Digest(100); - table.import_statement(&context, statement, None); + table.import_statement(&context, statement); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); let vote = SignedStatement { @@ -1283,7 +1079,7 @@ mod tests { sender: AuthorityId(2), }; - let summary = table.import_statement(&context, vote, None) + let summary = table.import_statement(&context, vote) .expect("candidate vote to give summary"); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); @@ -1313,7 +1109,7 @@ mod tests { }; let candidate_digest = Digest(100); - table.import_statement(&context, statement, None); + table.import_statement(&context, statement); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); let vote = SignedStatement { @@ -1322,7 +1118,7 @@ mod tests { sender: AuthorityId(2), }; - let summary = table.import_statement(&context, vote, None) + let summary = table.import_statement(&context, vote) .expect("candidate vote to give summary"); assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); @@ -1332,55 +1128,4 @@ mod tests { assert_eq!(summary.validity_votes, 1); assert_eq!(summary.availability_votes, 1); } - - #[test] - fn filling_batch_sets_known_flag() { - let context = TestContext { - authorities: { - let mut map = HashMap::new(); - for i in 1..10 { - map.insert(AuthorityId(i), (GroupId(2), GroupId(400 + i))); - } - map - } - }; - - let mut table = create(); - let statement = SignedStatement { - statement: Statement::Candidate(Candidate(2, 100)), - signature: Signature(1), - sender: AuthorityId(1), - }; - - table.import_statement(&context, statement, None); - - for i in 2..10 { - let statement = SignedStatement { - statement: Statement::Valid(Digest(100)), - signature: Signature(i), - sender: AuthorityId(i), - }; - - table.import_statement(&context, statement, None); - } - - let mut batch = VecBatch { - max_len: 5, - targets: (1..10).map(AuthorityId).collect(), - items: Vec::new(), - }; - - // 9 statements in the table, each seen by one. - table.fill_batch(&mut batch); - assert_eq!(batch.items.len(), 5); - - // 9 statements in the table, 5 of which seen by all targets. - batch.items.clear(); - table.fill_batch(&mut batch); - assert_eq!(batch.items.len(), 4); - - batch.items.clear(); - table.fill_batch(&mut batch); - assert!(batch.items.is_empty()); - } } diff --git a/polkadot/statement-table/src/lib.rs b/polkadot/statement-table/src/lib.rs index d3e8ca5f458e9..779a7fc2df5fd 100644 --- a/polkadot/statement-table/src/lib.rs +++ b/polkadot/statement-table/src/lib.rs @@ -87,27 +87,3 @@ impl generic::Context for C { Context::requisite_votes(self, group) } } - -/// A batch of statements to send out. -pub trait StatementBatch { - /// Get the target authorities of these statements. - fn targets(&self) -> &[SessionKey]; - - /// If the batch is empty. - fn is_empty(&self) -> bool; - - /// Push a statement onto the batch. Returns false when the batch is full. - /// - /// This is meant to do work like incrementally serializing the statements - /// into a vector of bytes while making sure the length is below a certain - /// amount. - fn push(&mut self, statement: SignedStatement) -> bool; -} - -impl generic::StatementBatch for T { - fn targets(&self) -> &[SessionKey] { StatementBatch::targets(self ) } - fn is_empty(&self) -> bool { StatementBatch::is_empty(self) } - fn push(&mut self, statement: SignedStatement) -> bool { - StatementBatch::push(self, statement) - } -} From fae50a05ca48f7b681318be58dc9cd5dd8680811 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 18 Jun 2018 16:44:40 +0200 Subject: [PATCH 081/103] extract router into separate module --- polkadot/network/src/consensus.rs | 87 ++---------------------- polkadot/network/src/lib.rs | 5 +- polkadot/network/src/router.rs | 109 ++++++++++++++++++++++++++++++ 3 files changed, 117 insertions(+), 84 deletions(-) create mode 100644 polkadot/network/src/router.rs diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index c2cefbf86b7cd..9226ae33df351 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -21,9 +21,8 @@ use ed25519; use substrate_network::{self as net, generic_message as msg}; use substrate_network::consensus_gossip::ConsensusMessage; use polkadot_api::{PolkadotApi, LocalPolkadotApi}; -use polkadot_consensus::{Network, SharedTable, TableRouter, SignedStatement}; -use polkadot_primitives::{Block, Hash, Header, BlockId, SessionKey}; -use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt}; +use polkadot_consensus::{Network, SharedTable}; +use polkadot_primitives::{Block, Hash, BlockId, SessionKey}; use futures::{future, prelude::*}; use futures::sync::mpsc; @@ -32,7 +31,8 @@ use std::sync::Arc; use tokio::runtime::TaskExecutor; -use super::{Message, NetworkService,}; +use super::{Message, NetworkService}; +use router::Router; /// Sink for output BFT messages. pub struct BftSink { @@ -274,82 +274,3 @@ impl Network for ConsensusNetwork

    { - table: Arc, - network: Arc, - api: Arc

    , - task_executor: TaskExecutor, - parent_hash: Option, -} - -impl Clone for Router

    { - fn clone(&self) -> Self { - Router { - table: self.table.clone(), - network: self.network.clone(), - api: self.api.clone(), - task_executor: self.task_executor.clone(), - parent_hash: self.parent_hash.clone(), - } - } -} - -impl Router

    where P::CheckedBlockId: Send { - fn import_statement(&self, statement: SignedStatement) { - let api = self.api.clone(); - let parent_hash = self.parent_hash.clone(); - - let validate_collation = move |collation| -> Option { - let checked = parent_hash.clone()?; - - match ::polkadot_consensus::validate_collation(&*api, &checked, &collation) { - Ok(()) => Some(true), - Err(e) => { - debug!(target: "p_net", "Encountered bad collation: {}", e); - Some(false) - } - } - }; - - let producer = self.table.import_remote_statement( - self, - statement, - validate_collation, - ); - - if !producer.is_blank() { - let table = self.table.clone(); - self.task_executor.spawn(producer.map(move |produced| { - // TODO: ensure availability of block/extrinsic - // and propagate these statements. - if let Some(validity) = produced.validity { - table.sign_and_import(validity); - } - - if let Some(availability) = produced.availability { - table.sign_and_import(availability); - } - })) - } - } -} - -impl TableRouter for Router

    where P::CheckedBlockId: Send { - type Error = (); - type FetchCandidate = future::Empty; - type FetchExtrinsic = Result; - - fn local_candidate_data(&self, _hash: Hash, _block_data: BlockData, _extrinsic: Extrinsic) { - // give to network to make available and multicast - } - - fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate { - future::empty() - } - - fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { - Ok(Extrinsic) - } -} diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index f108b9c0cb856..df3acebcda548 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -38,7 +38,7 @@ extern crate log; use codec::Slicable; use polkadot_consensus::SignedStatement; use polkadot_primitives::{Block, Hash}; -use polkadot_primitives::parachain::Id as ParaId; +use polkadot_primitives::parachain::{Id as ParaId, BlockData}; use substrate_network::{PeerId, RequestId, Context}; use substrate_network::consensus_gossip::ConsensusGossip; use substrate_network::{message, generic_message}; @@ -47,6 +47,8 @@ use substrate_network::StatusMessage as GenericFullStatus; use std::collections::HashMap; +mod router; + pub mod consensus; /// Polkadot protocol id. @@ -184,6 +186,7 @@ impl Specialization for PolkadotProtocol { match msg { Message::Statement(parent_hash, statement) => self.consensus_gossip.on_chain_specific(ctx, peer_id, raw, parent_hash), + _ => {}, } } _ => {} diff --git a/polkadot/network/src/router.rs b/polkadot/network/src/router.rs new file mode 100644 index 0000000000000..0ddabee3f1f03 --- /dev/null +++ b/polkadot/network/src/router.rs @@ -0,0 +1,109 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Statement routing and consenuss table router implementation. + +use polkadot_api::{PolkadotApi, LocalPolkadotApi}; +use polkadot_consensus::{SharedTable, TableRouter, SignedStatement}; +use polkadot_primitives::{Hash, BlockId, SessionKey}; +use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt}; + +use futures::{future, prelude::*}; +use tokio::runtime::TaskExecutor; + +use std::sync::Arc; + +use super::NetworkService; + +/// Table routing implementation. +pub struct Router { + pub(crate) table: Arc, + pub(crate) network: Arc, + pub(crate) api: Arc

    , + pub(crate) task_executor: TaskExecutor, + pub(crate) parent_hash: Option, +} + + +impl Clone for Router

    { + fn clone(&self) -> Self { + Router { + table: self.table.clone(), + network: self.network.clone(), + api: self.api.clone(), + task_executor: self.task_executor.clone(), + parent_hash: self.parent_hash.clone(), + } + } +} + +impl Router

    where P::CheckedBlockId: Send { + pub(crate) fn import_statement(&self, statement: SignedStatement) { + let api = self.api.clone(); + let parent_hash = self.parent_hash.clone(); + + let validate_collation = move |collation| -> Option { + let checked = parent_hash.clone()?; + + match ::polkadot_consensus::validate_collation(&*api, &checked, &collation) { + Ok(()) => Some(true), + Err(e) => { + debug!(target: "p_net", "Encountered bad collation: {}", e); + Some(false) + } + } + }; + + let producer = self.table.import_remote_statement( + self, + statement, + validate_collation, + ); + + if !producer.is_blank() { + let table = self.table.clone(); + self.task_executor.spawn(producer.map(move |produced| { + // TODO: ensure availability of block/extrinsic + // and propagate these statements. + if let Some(validity) = produced.validity { + table.sign_and_import(validity); + } + + if let Some(availability) = produced.availability { + table.sign_and_import(availability); + } + })) + } + } +} + +impl TableRouter for Router

    where P::CheckedBlockId: Send { + type Error = (); + type FetchCandidate = future::Empty; + type FetchExtrinsic = Result; + + fn local_candidate_data(&self, _hash: Hash, _block_data: BlockData, _extrinsic: Extrinsic) { + // give to network to make available and multicast + } + + fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate { + future::empty() + } + + fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { + Ok(Extrinsic) + } +} From 5fdc50a63b2ea7d3a7ecde1bc4eb46ceef189580 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 18 Jun 2018 18:45:35 +0200 Subject: [PATCH 082/103] defer statements until later --- Cargo.lock | 1 + polkadot/consensus/src/shared_table/mod.rs | 87 ++++++--- polkadot/network/Cargo.toml | 1 + polkadot/network/src/consensus.rs | 16 +- polkadot/network/src/lib.rs | 1 + polkadot/network/src/router.rs | 201 ++++++++++++++++++--- 6 files changed, 246 insertions(+), 61 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 458a8018f26d0..3ccb9b8370428 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1338,6 +1338,7 @@ dependencies = [ "ed25519 0.1.0", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-api 0.1.0", "polkadot-consensus 0.1.0", "polkadot-primitives 0.1.0", diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index 1ae7b324f7d3c..b24139811a244 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -92,16 +92,14 @@ impl SharedTableInner { // // The collation-checking function should return `true` if known to be valid, // `false` if known to be invalid, and `None` if unable to determine. - fn import_remote_statement Option>( + fn import_remote_statement( &mut self, context: &TableContext, router: &R, statement: table::SignedStatement, - check_candidate: C, ) -> StatementProducer< ::Future, ::Future, - C, > { let summary = match self.table.import_statement(context, statement) { Some(summary) => summary, @@ -147,7 +145,6 @@ impl SharedTableInner { fetch_block_data, fetch_extrinsic, evaluate: checking_validity, - check_candidate, }) } } @@ -187,27 +184,38 @@ pub struct ProducedStatements { } /// Future that produces statements about a specific candidate. -pub struct StatementProducer { +pub struct StatementProducer { produced_statements: ProducedStatements, - work: Option>, + work: Option>, } -impl StatementProducer { +impl StatementProducer { /// If this will not produce any statements, returns true. pub fn is_blank(&self) -> bool { self.work.is_none() } + + /// Attach a function for verifying fetched collation to the statement producer. + /// This will transform it into a future. + /// + /// The collation-checking function should return `true` if known to be valid, + /// `false` if known to be invalid, and `None` if unable to determine. + pub fn prime Option>(self, check_candidate: C) -> PrimedStatementProducer { + PrimedStatementProducer { + inner: self, + check_candidate, + } + } } -struct Work { +struct Work { candidate_receipt: CandidateReceipt, fetch_block_data: future::Fuse, fetch_extrinsic: Option>, evaluate: bool, - check_candidate: C } -impl Default for StatementProducer { +impl Default for StatementProducer { fn default() -> Self { StatementProducer { produced_statements: Default::default(), @@ -216,7 +224,13 @@ impl Default for StatementProducer { } } -impl Future for StatementProducer +/// Primed statement producer. +pub struct PrimedStatementProducer { + inner: StatementProducer, + check_candidate: C, +} + +impl Future for PrimedStatementProducer where D: Future, E: Future, @@ -226,21 +240,21 @@ impl Future for StatementProducer type Error = Err; fn poll(&mut self) -> Poll { - let work = match self.work { + let work = match self.inner.work { Some(ref mut work) => work, - None => return Ok(Async::Ready(::std::mem::replace(&mut self.produced_statements, Default::default()))), + None => return Ok(Async::Ready(::std::mem::replace(&mut self.inner.produced_statements, Default::default()))), }; if let Async::Ready(block_data) = work.fetch_block_data.poll()? { - self.produced_statements.block_data = Some(block_data.clone()); + self.inner.produced_statements.block_data = Some(block_data.clone()); if work.evaluate { - let is_good = (work.check_candidate)(Collation { + let is_good = (self.check_candidate)(Collation { block_data, receipt: work.candidate_receipt.clone(), }); let hash = work.candidate_receipt.hash(); - self.produced_statements.validity = match is_good { + self.inner.produced_statements.validity = match is_good { Some(true) => Some(GenericStatement::Valid(hash)), Some(false) => Some(GenericStatement::Invalid(hash)), None => None, @@ -250,15 +264,15 @@ impl Future for StatementProducer if let Some(ref mut fetch_extrinsic) = work.fetch_extrinsic { if let Async::Ready(extrinsic) = fetch_extrinsic.poll()? { - self.produced_statements.extrinsic = Some(extrinsic); + self.inner.produced_statements.extrinsic = Some(extrinsic); } } - let done = self.produced_statements.block_data.is_some() && { + let done = self.inner.produced_statements.block_data.is_some() && { if work.evaluate { true - } else if self.produced_statements.extrinsic.is_some() { - self.produced_statements.availability = + } else if self.inner.produced_statements.extrinsic.is_some() { + self.inner.produced_statements.availability = Some(GenericStatement::Available(work.candidate_receipt.hash())); true @@ -268,7 +282,7 @@ impl Future for StatementProducer }; if done { - Ok(Async::Ready(::std::mem::replace(&mut self.produced_statements, Default::default()))) + Ok(Async::Ready(::std::mem::replace(&mut self.inner.produced_statements, Default::default()))) } else { Ok(Async::NotReady) } @@ -324,16 +338,31 @@ impl SharedTable { } /// Import a single statement with remote source, whose signature has already been checked. - /// - /// The collation-checking function should return `true` if known to be valid, - /// `false` if known to be invalid, and `None` if unable to determine. - pub fn import_remote_statement Option>( + pub fn import_remote_statement( &self, router: &R, statement: table::SignedStatement, - check_candidate: C, - ) -> StatementProducer<::Future, ::Future, C> { - self.inner.lock().import_remote_statement(&*self.context, router, statement, check_candidate) + ) -> StatementProducer<::Future, ::Future> { + self.inner.lock().import_remote_statement(&*self.context, router, statement) + } + + /// Import many statements at once. + /// + /// Provide an iterator yielding remote, pre-checked statements. + pub fn import_remote_statements(&self, router: &R, iterable: I) -> U + where + R: TableRouter, + I: IntoIterator, + U: ::std::iter::FromIterator::Future, + ::Future, + >>, + { + let mut inner = self.inner.lock(); + + iterable.into_iter().map(move |statement| { + inner.import_remote_statement(&*self.context, router, statement) + }).collect() } /// Sign and import a local statement. @@ -472,7 +501,6 @@ mod tests { let producer = shared_table.import_remote_statement( &DummyRouter, signed_statement, - |_| Some(true), ); assert!(producer.work.is_some(), "candidate and local validity group are same"); @@ -521,7 +549,6 @@ mod tests { let producer = shared_table.import_remote_statement( &DummyRouter, signed_statement, - |_| Some(true), ); assert!(producer.work.is_some(), "candidate and local availability group are same"); diff --git a/polkadot/network/Cargo.toml b/polkadot/network/Cargo.toml index cfa2d767b5938..ad07af5c12367 100644 --- a/polkadot/network/Cargo.toml +++ b/polkadot/network/Cargo.toml @@ -8,6 +8,7 @@ description = "Polkadot-specific networking protocol" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" +parking_lot = "0.4" polkadot-api = { path = "../api" } polkadot-consensus = { path = "../consensus" } polkadot-primitives = { path = "../primitives" } diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 9226ae33df351..2f79712cfb064 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -156,7 +156,7 @@ impl Future for MessageProcessTask< match self.inner_stream.poll() { Ok(Async::Ready(Some(val))) => match val { ConsensusMessage::Bft(msg) => { - let local_id = self.table_router.table.session_key(); + let local_id = self.table_router.session_key(); match process_bft_message(msg, &local_id, &self.validators[..]) { Ok(Some(msg)) => { if let Err(_) = self.bft_messages.unbounded_send(msg) { @@ -247,13 +247,13 @@ impl Network for ConsensusNetwork

    Network for ConsensusNetwork

    table_router.task_executor.spawn(task), + Some(task) => task_executor.spawn(task), None => warn!(target: "p_net", "Cannot process incoming messages: network appears to be down"), } diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index df3acebcda548..ddfdabe549a60 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -30,6 +30,7 @@ extern crate polkadot_primitives; extern crate ed25519; extern crate futures; +extern crate parking_lot; extern crate tokio; #[macro_use] diff --git a/polkadot/network/src/router.rs b/polkadot/network/src/router.rs index 0ddabee3f1f03..eb0539bede159 100644 --- a/polkadot/network/src/router.rs +++ b/polkadot/network/src/router.rs @@ -17,26 +17,51 @@ //! Statement routing and consenuss table router implementation. use polkadot_api::{PolkadotApi, LocalPolkadotApi}; -use polkadot_consensus::{SharedTable, TableRouter, SignedStatement}; +use polkadot_consensus::{SharedTable, TableRouter, SignedStatement, Statement, GenericStatement}; use polkadot_primitives::{Hash, BlockId, SessionKey}; use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt}; use futures::{future, prelude::*}; use tokio::runtime::TaskExecutor; +use parking_lot::Mutex; +use std::collections::{HashMap, HashSet}; use std::sync::Arc; use super::NetworkService; /// Table routing implementation. pub struct Router { - pub(crate) table: Arc, - pub(crate) network: Arc, - pub(crate) api: Arc

    , - pub(crate) task_executor: TaskExecutor, - pub(crate) parent_hash: Option, + table: Arc, + network: Arc, + api: Arc

    , + task_executor: TaskExecutor, + parent_hash: Option, + deferred_statements: Arc>, } +impl Router

    { + pub(crate) fn new( + table: Arc, + network: Arc, + api: Arc

    , + task_executor: TaskExecutor, + parent_hash: Option, + ) -> Self { + Router { + table, + network, + api, + task_executor, + parent_hash, + deferred_statements: Arc::new(Mutex::new(DeferredStatements::new())), + } + } + + pub(crate) fn session_key(&self) -> SessionKey { + self.table.session_key() + } +} impl Clone for Router

    { fn clone(&self) -> Self { @@ -46,36 +71,59 @@ impl Clone for Router

    { api: self.api.clone(), task_executor: self.task_executor.clone(), parent_hash: self.parent_hash.clone(), + deferred_statements: self.deferred_statements.clone(), } } } impl Router

    where P::CheckedBlockId: Send { + /// Import a statement whose signature has been checked already. pub(crate) fn import_statement(&self, statement: SignedStatement) { - let api = self.api.clone(); - let parent_hash = self.parent_hash.clone(); + // defer any statements for which we haven't imported the candidate yet + let defer = match statement.statement { + GenericStatement::Candidate(_) => false, + GenericStatement::Valid(ref hash) + | GenericStatement::Invalid(ref hash) + | GenericStatement::Available(ref hash) + => self.table.with_candidate(hash, |c| c.is_none()), + }; - let validate_collation = move |collation| -> Option { - let checked = parent_hash.clone()?; + if defer { + self.deferred_statements.lock().push(statement); + return; + } - match ::polkadot_consensus::validate_collation(&*api, &checked, &collation) { - Ok(()) => Some(true), - Err(e) => { - debug!(target: "p_net", "Encountered bad collation: {}", e); - Some(false) - } - } + // import all statements pending on this candidate + let (pending, _traces) = if let GenericStatement::Candidate(ref candidate) = statement.statement { + self.deferred_statements.lock().get_deferred(&candidate.hash()) + } else { + (Vec::new(), Vec::new()) }; - let producer = self.table.import_remote_statement( + let producers: Vec<_> = self.table.import_remote_statements( self, - statement, - validate_collation, + ::std::iter::once(statement).chain(pending), ); - if !producer.is_blank() { + // dispatch future work as necessary. + for producer in producers.into_iter().filter(|p| !p.is_blank()) { + let api = self.api.clone(); + let parent_hash = self.parent_hash.clone(); + + let validate = move |collation| -> Option { + let checked = parent_hash.clone()?; + + match ::polkadot_consensus::validate_collation(&*api, &checked, &collation) { + Ok(()) => Some(true), + Err(e) => { + debug!(target: "p_net", "Encountered bad collation: {}", e); + Some(false) + } + } + }; + let table = self.table.clone(); - self.task_executor.spawn(producer.map(move |produced| { + let work = producer.prime(validate).map(move |produced| { // TODO: ensure availability of block/extrinsic // and propagate these statements. if let Some(validity) = produced.validity { @@ -85,7 +133,9 @@ impl Router

    where P::CheckedBloc if let Some(availability) = produced.availability { table.sign_and_import(availability); } - })) + }); + + self.task_executor.spawn(work); } } } @@ -107,3 +157,108 @@ impl TableRouter for Router

    where P::CheckedBlock Ok(Extrinsic) } } + +// A unique trace for valid statements issued by a validator. +#[derive(Hash, PartialEq, Eq, Clone, Debug)] +enum StatementTrace { + Valid(SessionKey, Hash), + Invalid(SessionKey, Hash), + Available(SessionKey, Hash), +} + +// helper for deferring statements whose associated candidate is unknown. +struct DeferredStatements { + deferred: HashMap>, + known_traces: HashSet, +} + +impl DeferredStatements { + fn new() -> Self { + DeferredStatements { + deferred: HashMap::new(), + known_traces: HashSet::new(), + } + } + + fn push(&mut self, statement: SignedStatement) { + let (hash, trace) = match statement.statement { + GenericStatement::Candidate(_) => return, + GenericStatement::Valid(hash) => (hash, StatementTrace::Valid(statement.sender, hash)), + GenericStatement::Invalid(hash) => (hash, StatementTrace::Invalid(statement.sender, hash)), + GenericStatement::Available(hash) => (hash, StatementTrace::Available(statement.sender, hash)), + }; + + if self.known_traces.insert(trace) { + self.deferred.entry(hash).or_insert_with(Vec::new).push(statement); + } + } + + fn get_deferred(&mut self, hash: &Hash) -> (Vec, Vec) { + match self.deferred.remove(hash) { + None => (Vec::new(), Vec::new()), + Some(deferred) => { + let mut traces = Vec::new(); + for statement in deferred.iter() { + let trace = match statement.statement { + GenericStatement::Candidate(_) => continue, + GenericStatement::Valid(hash) => StatementTrace::Valid(statement.sender, hash), + GenericStatement::Invalid(hash) => StatementTrace::Invalid(statement.sender, hash), + GenericStatement::Available(hash) => StatementTrace::Available(statement.sender, hash), + }; + + self.known_traces.remove(&trace); + traces.push(trace); + } + + (deferred, traces) + } + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use substrate_primitives::H512; + + #[test] + fn deferred_statements_works() { + let mut deferred = DeferredStatements::new(); + let hash = [1; 32].into(); + let sig = H512([2; 64]).into(); + let sender = [255; 32].into(); + + let statement = SignedStatement { + statement: GenericStatement::Valid(hash), + sender, + signature: sig, + }; + + // pre-push. + { + let (signed, traces) = deferred.get_deferred(&hash); + assert!(signed.is_empty()); + assert!(traces.is_empty()); + } + + deferred.push(statement.clone()); + deferred.push(statement.clone()); + + // draining: second push should have been ignored. + { + let (signed, traces) = deferred.get_deferred(&hash); + assert_eq!(signed.len(), 1); + + assert_eq!(traces.len(), 1); + assert_eq!(signed[0].clone(), statement); + assert_eq!(traces[0].clone(), StatementTrace::Valid(sender, hash)); + } + + // after draining + { + let (signed, traces) = deferred.get_deferred(&hash); + assert!(signed.is_empty()); + assert!(traces.is_empty()); + } + } +} From 6c4d269dea28fff89905f370c648dda771427091 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 19 Jun 2018 15:03:05 +0200 Subject: [PATCH 083/103] double signature is invalid --- polkadot/statement-table/src/generic.rs | 290 ++++++++++++++++-------- 1 file changed, 201 insertions(+), 89 deletions(-) diff --git a/polkadot/statement-table/src/generic.rs b/polkadot/statement-table/src/generic.rs index d227e71cd5ef5..78ca70007e9b7 100644 --- a/polkadot/statement-table/src/generic.rs +++ b/polkadot/statement-table/src/generic.rs @@ -166,6 +166,19 @@ pub enum ValidityDoubleVote { ValidityAndInvalidity(D, S, S), } +/// Misbehavior: multiple signatures on same statement. +#[derive(PartialEq, Eq, Debug, Clone)] +pub enum DoubleSign { + /// On candidate. + Candidate(C, S, S), + /// On validity. + Validity(D, S, S), + /// On invalidity. + Invalidity(D, S, S), + /// On availability. + Availability(D, S, S), +} + /// Misbehavior: declaring multiple candidates. #[derive(PartialEq, Eq, Debug, Clone)] pub struct MultipleCandidates { @@ -190,20 +203,14 @@ pub enum Misbehavior { ValidityDoubleVote(ValidityDoubleVote), /// Submitted multiple candidates. MultipleCandidates(MultipleCandidates), - /// Submitted a message withou + /// Submitted a message that was unauthorized. UnauthorizedStatement(UnauthorizedStatement), + /// Submitted two valid signatures for the same message. + DoubleSign(DoubleSign), } -/// Fancy work-around for a type alias of context-based misbehavior -/// without producing compiler warnings. -pub trait ResolveMisbehavior { - /// The misbehavior type. - type Misbehavior; -} - -impl ResolveMisbehavior for C { - type Misbehavior = Misbehavior; -} +/// Type alias for misbehavior corresponding to context type. +pub type MisbehaviorFor = Misbehavior<::Candidate, ::Digest, ::AuthorityId, ::Signature>; // kinds of votes for validity #[derive(Clone, PartialEq, Eq)] @@ -279,10 +286,16 @@ impl Default for AuthorityData { } } +/// Type alias for the result of a statement import. +pub type ImportResult = Result< + Option::Digest, ::GroupId>>, + MisbehaviorFor +>; + /// Stores votes pub struct Table { authority_data: HashMap>, - detected_misbehavior: HashMap::Misbehavior>, + detected_misbehavior: HashMap>, candidate_votes: HashMap>, includable_count: HashMap, } @@ -344,10 +357,9 @@ impl Table { } /// Import a signed statement. Signatures should be checked for validity, and the - /// sender should be checked to actually be a authority. + /// sender should be checked to actually be an authority. /// - /// This can note the origin of the statement to indicate that he has - /// seen it already. + /// If this returns `None`, the statement was either duplicate or invalid. pub fn import_statement( &mut self, context: &C, @@ -355,7 +367,7 @@ impl Table { ) -> Option> { let SignedStatement { statement, signature, sender: signer } = statement; - let (maybe_misbehavior, maybe_summary) = match statement { + let res = match statement { Statement::Candidate(candidate) => self.import_candidate( context, signer.clone(), @@ -382,13 +394,15 @@ impl Table { ), }; - if let Some(misbehavior) = maybe_misbehavior { - // all misbehavior in agreement is provable and actively malicious. - // punishments are not cumulative. - self.detected_misbehavior.insert(signer, misbehavior); + match res { + Ok(maybe_summary) => maybe_summary, + Err(misbehavior) => { + // all misbehavior in agreement is provable and actively malicious. + // punishments are not cumulative. + self.detected_misbehavior.insert(signer, misbehavior); + None + } } - - maybe_summary } /// Get a candidate by digest. @@ -398,7 +412,7 @@ impl Table { /// Access all witnessed misbehavior. pub fn get_misbehavior(&self) - -> &HashMap::Misbehavior> + -> &HashMap> { &self.detected_misbehavior } @@ -414,19 +428,16 @@ impl Table { from: C::AuthorityId, candidate: C::Candidate, signature: C::Signature, - ) -> (Option<::Misbehavior>, Option>) { + ) -> ImportResult { let group = C::candidate_group(&candidate); if !context.is_member_of(&from, &group) { - return ( - Some(Misbehavior::UnauthorizedStatement(UnauthorizedStatement { - statement: SignedStatement { - signature, - statement: Statement::Candidate(candidate), - sender: from, - }, - })), - None, - ); + return Err(Misbehavior::UnauthorizedStatement(UnauthorizedStatement { + statement: SignedStatement { + signature, + statement: Statement::Candidate(candidate), + sender: from, + }, + })); } // check that authority hasn't already specified another candidate. @@ -450,13 +461,10 @@ impl Table { .candidate .clone(); - return ( - Some(Misbehavior::MultipleCandidates(MultipleCandidates { - first: (old_candidate, old_sig.clone()), - second: (candidate, signature.clone()), - })), - None, - ); + return Err(Misbehavior::MultipleCandidates(MultipleCandidates { + first: (old_candidate, old_sig.clone()), + second: (candidate, signature.clone()), + })); } false @@ -499,9 +507,9 @@ impl Table { from: C::AuthorityId, digest: C::Digest, vote: ValidityVote, - ) -> (Option<::Misbehavior>, Option>) { + ) -> ImportResult { let votes = match self.candidate_votes.get_mut(&digest) { - None => return (None, None), // TODO: queue up but don't get DoS'ed + None => return Ok(None), Some(votes) => votes, }; @@ -518,50 +526,56 @@ impl Table { checking group membership of issuer; qed"), }; - return ( - Some(Misbehavior::UnauthorizedStatement(UnauthorizedStatement { - statement: SignedStatement { - signature: sig, - sender: from, - statement: if valid { - Statement::Valid(digest) - } else { - Statement::Invalid(digest) - } + return Err(Misbehavior::UnauthorizedStatement(UnauthorizedStatement { + statement: SignedStatement { + signature: sig, + sender: from, + statement: if valid { + Statement::Valid(digest) + } else { + Statement::Invalid(digest) } - })), - None, - ); + } + })); } // check for double votes. match votes.validity_votes.entry(from.clone()) { Entry::Occupied(occ) => { - if occ.get() != &vote { - let double_vote_proof = match (occ.get().clone(), vote) { + let make_vdv = |v| Misbehavior::ValidityDoubleVote(v); + let make_ds = |ds| Misbehavior::DoubleSign(ds); + return if occ.get() != &vote { + Err(match (occ.get().clone(), vote) { + // valid vote conflicting with candidate statement (ValidityVote::Issued(iss), ValidityVote::Valid(good)) | (ValidityVote::Valid(good), ValidityVote::Issued(iss)) => - ValidityDoubleVote::IssuedAndValidity((votes.candidate.clone(), iss), (digest, good)), + make_vdv(ValidityDoubleVote::IssuedAndValidity((votes.candidate.clone(), iss), (digest, good))), + + // invalid vote conflicting with candidate statement (ValidityVote::Issued(iss), ValidityVote::Invalid(bad)) | (ValidityVote::Invalid(bad), ValidityVote::Issued(iss)) => - ValidityDoubleVote::IssuedAndInvalidity((votes.candidate.clone(), iss), (digest, bad)), + make_vdv(ValidityDoubleVote::IssuedAndInvalidity((votes.candidate.clone(), iss), (digest, bad))), + + // valid vote conflicting with invalid vote (ValidityVote::Valid(good), ValidityVote::Invalid(bad)) | (ValidityVote::Invalid(bad), ValidityVote::Valid(good)) => - ValidityDoubleVote::ValidityAndInvalidity(digest, good, bad), - _ => { - // this would occur if two different but valid signatures - // on the same kind of vote occurred. - return (None, None); - } - }; - - return ( - Some(Misbehavior::ValidityDoubleVote(double_vote_proof)), - None, - ) - } + make_vdv(ValidityDoubleVote::ValidityAndInvalidity(digest, good, bad)), + + // two signatures on same candidate + (ValidityVote::Issued(a), ValidityVote::Issued(b)) => + make_ds(DoubleSign::Candidate(votes.candidate.clone(), a, b)), - return (None, None); + // two signatures on same validity vote + (ValidityVote::Valid(a), ValidityVote::Valid(b)) => + make_ds(DoubleSign::Validity(digest, a, b)), + + // two signature on same invalidity vote + (ValidityVote::Invalid(a), ValidityVote::Invalid(b)) => + make_ds(DoubleSign::Invalidity(digest, a, b)), + }) + } else { + Ok(None) + } } Entry::Vacant(vacant) => { if let ValidityVote::Invalid(_) = vote { @@ -575,7 +589,7 @@ impl Table { let is_includable = votes.can_be_included(v_threshold, a_threshold); update_includable_count(&mut self.includable_count, &votes.group_id, was_includable, is_includable); - (None, Some(votes.summary(digest))) + Ok(Some(votes.summary(digest))) } fn availability_vote( @@ -584,9 +598,9 @@ impl Table { from: C::AuthorityId, digest: C::Digest, signature: C::Signature, - ) -> (Option<::Misbehavior>, Option>) { + ) -> ImportResult { let votes = match self.candidate_votes.get_mut(&digest) { - None => return (None, None), // TODO: queue up but don't get DoS'ed + None => return Ok(None), Some(votes) => votes, }; @@ -595,24 +609,26 @@ impl Table { // check that this authority actually can vote in this group. if !context.is_availability_guarantor_of(&from, &votes.group_id) { - return ( - Some(Misbehavior::UnauthorizedStatement(UnauthorizedStatement { - statement: SignedStatement { - signature: signature.clone(), - statement: Statement::Available(digest), - sender: from, - } - })), - None - ); + return Err(Misbehavior::UnauthorizedStatement(UnauthorizedStatement { + statement: SignedStatement { + signature: signature.clone(), + statement: Statement::Available(digest), + sender: from, + } + })); } - votes.availability_votes.insert(from, signature); + match votes.availability_votes.entry(from) { + Entry::Occupied(ref occ) if occ.get() != &signature => return Err( + Misbehavior::DoubleSign(DoubleSign::Availability(digest, signature, occ.get().clone())) + ), + entry => { let _ = entry.or_insert(signature); }, + } let is_includable = votes.can_be_included(v_threshold, a_threshold); update_includable_count(&mut self.includable_count, &votes.group_id, was_includable, is_includable); - (None, Some(votes.summary(digest))) + Ok(Some(votes.summary(digest))) } } @@ -893,6 +909,102 @@ mod tests { ); } + #[test] + fn candidate_double_signature_is_misbehavior() { + let context = TestContext { + authorities: { + let mut map = HashMap::new(); + map.insert(AuthorityId(1), (GroupId(2), GroupId(455))); + map.insert(AuthorityId(2), (GroupId(2), GroupId(246))); + map + } + }; + + let mut table = create(); + let statement = SignedStatement { + statement: Statement::Candidate(Candidate(2, 100)), + signature: Signature(1), + sender: AuthorityId(1), + }; + + table.import_statement(&context, statement); + assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); + + let invalid_statement = SignedStatement { + statement: Statement::Candidate(Candidate(2, 100)), + signature: Signature(999), + sender: AuthorityId(1), + }; + + table.import_statement(&context, invalid_statement); + assert!(table.detected_misbehavior.contains_key(&AuthorityId(1))); + } + + #[test] + fn validity_invalidity_double_signature_is_misbehavior() { + let context = TestContext { + authorities: { + let mut map = HashMap::new(); + map.insert(AuthorityId(1), (GroupId(2), GroupId(455))); + map.insert(AuthorityId(2), (GroupId(2), GroupId(246))); + map.insert(AuthorityId(3), (GroupId(2), GroupId(222))); + map + } + }; + + let mut table = create(); + let statement = SignedStatement { + statement: Statement::Candidate(Candidate(2, 100)), + signature: Signature(1), + sender: AuthorityId(1), + }; + + table.import_statement(&context, statement); + assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1))); + + // insert two validity votes from authority 2 with different signatures + { + let statement = SignedStatement { + statement: Statement::Valid(Digest(100)), + signature: Signature(2), + sender: AuthorityId(2), + }; + + table.import_statement(&context, statement); + assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2))); + + let invalid_statement = SignedStatement { + statement: Statement::Valid(Digest(100)), + signature: Signature(222), + sender: AuthorityId(2), + }; + + table.import_statement(&context, invalid_statement); + assert!(table.detected_misbehavior.contains_key(&AuthorityId(2))); + } + + // insert two invalidity votes from authority 2 with different signatures + { + let statement = SignedStatement { + statement: Statement::Invalid(Digest(100)), + signature: Signature(3), + sender: AuthorityId(3), + }; + + table.import_statement(&context, statement); + assert!(!table.detected_misbehavior.contains_key(&AuthorityId(3))); + + let invalid_statement = SignedStatement { + statement: Statement::Invalid(Digest(100)), + signature: Signature(333), + sender: AuthorityId(3), + }; + + table.import_statement(&context, invalid_statement); + assert!(table.detected_misbehavior.contains_key(&AuthorityId(3))); + } + } + #[test] fn issue_and_vote_is_misbehavior() { let context = TestContext { From 0a2abce5aece00ebdfe3dfd892b4e81165c050b6 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 19 Jun 2018 20:47:51 +0200 Subject: [PATCH 084/103] propagating statements --- polkadot/consensus/src/lib.rs | 17 +-- polkadot/consensus/src/shared_table/mod.rs | 77 ++++------ polkadot/network/src/consensus.rs | 23 +-- polkadot/network/src/lib.rs | 105 +++++++++++-- polkadot/network/src/router.rs | 164 +++++++++++++++------ substrate/network/src/consensus_gossip.rs | 2 +- substrate/network/src/specialization.rs | 3 + 7 files changed, 261 insertions(+), 130 deletions(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 3159490f59a7f..a1cacda0230d5 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -106,8 +106,9 @@ pub trait TableRouter: Clone { /// Future that resolves when extrinsic candidate data is fetched. type FetchExtrinsic: IntoFuture; - /// Note local candidate data, making it available on the network to other validators. - fn local_candidate_data(&self, hash: Hash, block_data: BlockData, extrinsic: ParachainExtrinsic); + /// Call with local candidate data. This will make the data available on the network, + /// and sign, import, and broadcast a statement about the candidate. + fn local_candidate(&self, candidate: CandidateReceipt, block_data: BlockData, extrinsic: ParachainExtrinsic); /// Fetch block data for a specific candidate. fn fetch_block_data(&self, candidate: &CandidateReceipt) -> Self::FetchCandidate; @@ -135,9 +136,9 @@ pub trait Network { #[derive(Debug, Clone, Default)] pub struct GroupInfo { /// Authorities meant to check validity of candidates. - pub validity_guarantors: HashSet, + pub validity_guarantors: HashSet, /// Authorities meant to check availability of candidate data. - pub availability_guarantors: HashSet, + pub availability_guarantors: HashSet, /// Number of votes needed for validity. pub needed_validity: usize, /// Number of votes needed for availability. @@ -292,7 +293,6 @@ impl bft::Environment for ProposerFactory let drop_signal = dispatch_collation_work( router.clone(), - table.clone(), &self.handle, CollationFetch::new( local_duty.validation, @@ -325,7 +325,6 @@ impl bft::Environment for ProposerFactory // that should fire when the collation work is no longer necessary (e.g. when the proposer object is dropped) fn dispatch_collation_work( router: R, - table: Arc, handle: &TaskExecutor, work: CollationFetch, ) -> exit_future::Signal where @@ -338,11 +337,7 @@ fn dispatch_collation_work( let (signal, exit) = exit_future::signal(); let handled_work = work.then(move |result| match result { Ok((collation, extrinsic)) => { - let hash = collation.receipt.hash(); - router.local_candidate_data(hash, collation.block_data, extrinsic); - - // TODO: if we are an availability guarantor also, we should produce an availability statement. - table.sign_and_import(GenericStatement::Candidate(collation.receipt)); + router.local_candidate(collation.receipt, collation.block_data, extrinsic); Ok(()) } Err(_e) => { diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index b24139811a244..db028e655e177 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -90,20 +90,20 @@ impl SharedTableInner { // Import a single statement. Provide a handle to a table router and a function // used to determine if a referenced candidate is valid. // - // The collation-checking function should return `true` if known to be valid, - // `false` if known to be invalid, and `None` if unable to determine. + // the statement producer, if any, will produce only statements concerning the same candidate + // as the one just imported fn import_remote_statement( &mut self, context: &TableContext, router: &R, statement: table::SignedStatement, - ) -> StatementProducer< + ) -> Option::Future, ::Future, - > { + >> { let summary = match self.table.import_statement(context, statement) { Some(summary) => summary, - None => return Default::default(), + None => return None, }; self.update_trackers(&summary.candidate, context); @@ -152,10 +152,10 @@ impl SharedTableInner { None }; - StatementProducer { + work.map(|work| StatementProducer { produced_statements: Default::default(), - work, - } + work + }) } fn update_trackers(&mut self, candidate: &Hash, context: &TableContext) { @@ -186,15 +186,10 @@ pub struct ProducedStatements { /// Future that produces statements about a specific candidate. pub struct StatementProducer { produced_statements: ProducedStatements, - work: Option>, + work: Work, } impl StatementProducer { - /// If this will not produce any statements, returns true. - pub fn is_blank(&self) -> bool { - self.work.is_none() - } - /// Attach a function for verifying fetched collation to the statement producer. /// This will transform it into a future. /// @@ -215,15 +210,6 @@ struct Work { evaluate: bool, } -impl Default for StatementProducer { - fn default() -> Self { - StatementProducer { - produced_statements: Default::default(), - work: None, - } - } -} - /// Primed statement producer. pub struct PrimedStatementProducer { inner: StatementProducer, @@ -240,10 +226,7 @@ impl Future for PrimedStatementProducer type Error = Err; fn poll(&mut self) -> Poll { - let work = match self.inner.work { - Some(ref mut work) => work, - None => return Ok(Async::Ready(::std::mem::replace(&mut self.inner.produced_statements, Default::default()))), - }; + let work = &mut self.inner.work; if let Async::Ready(block_data) = work.fetch_block_data.poll()? { self.inner.produced_statements.block_data = Some(block_data.clone()); @@ -338,25 +321,34 @@ impl SharedTable { } /// Import a single statement with remote source, whose signature has already been checked. + /// + /// The statement producer, if any, will produce only statements concerning the same candidate + /// as the one just imported pub fn import_remote_statement( &self, router: &R, statement: table::SignedStatement, - ) -> StatementProducer<::Future, ::Future> { + ) -> Option::Future, + ::Future, + >> { self.inner.lock().import_remote_statement(&*self.context, router, statement) } /// Import many statements at once. /// /// Provide an iterator yielding remote, pre-checked statements. + /// + /// The statement producer, if any, will produce only statements concerning the same candidate + /// as the one just imported pub fn import_remote_statements(&self, router: &R, iterable: I) -> U where R: TableRouter, I: IntoIterator, - U: ::std::iter::FromIterator::Future, ::Future, - >>, + >>>, { let mut inner = self.inner.lock(); @@ -366,7 +358,7 @@ impl SharedTable { } /// Sign and import a local statement. - pub fn sign_and_import(&self, statement: table::Statement) { + pub fn sign_and_import(&self, statement: table::Statement) -> SignedStatement { let proposed_digest = match statement { GenericStatement::Candidate(ref c) => Some(c.hash()), _ => None, @@ -379,7 +371,8 @@ impl SharedTable { inner.proposed_digest = proposed_digest; } - inner.table.import_statement(&*self.context, signed_statement); + inner.table.import_statement(&*self.context, signed_statement.clone()); + signed_statement } /// Execute a closure using a specific candidate. @@ -443,17 +436,12 @@ mod tests { type FetchCandidate = ::futures::future::Empty; type FetchExtrinsic = ::futures::future::Empty; - /// Note local candidate data, making it available on the network to other validators. - fn local_candidate_data(&self, _hash: Hash, _block_data: BlockData, _extrinsic: Extrinsic) { + fn local_candidate(&self, _candidate: CandidateReceipt, _block_data: BlockData, _extrinsic: Extrinsic) { } - - /// Fetch block data for a specific candidate. fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate { ::futures::future::empty() } - - /// Fetch extrinsic data for a specific candidate. fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { ::futures::future::empty() } @@ -501,10 +489,10 @@ mod tests { let producer = shared_table.import_remote_statement( &DummyRouter, signed_statement, - ); + ).expect("candidate and local validity group are same"); - assert!(producer.work.is_some(), "candidate and local validity group are same"); - assert!(producer.work.as_ref().unwrap().evaluate, "should evaluate validity"); + assert!(producer.work.evaluate, "should evaluate validity"); + assert!(producer.work.fetch_extrinsic.is_none(), "should not fetch extrinsic"); } #[test] @@ -549,10 +537,9 @@ mod tests { let producer = shared_table.import_remote_statement( &DummyRouter, signed_statement, - ); + ).expect("should produce work"); - assert!(producer.work.is_some(), "candidate and local availability group are same"); - assert!(producer.work.as_ref().unwrap().fetch_extrinsic.is_some(), "should fetch extrinsic when guaranteeing availability"); - assert!(!producer.work.as_ref().unwrap().evaluate, "should not evaluate validity"); + assert!(producer.work.fetch_extrinsic.is_some(), "should fetch extrinsic when guaranteeing availability"); + assert!(!producer.work.evaluate, "should not evaluate validity"); } } diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 2f79712cfb064..57b7ac2a061b2 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -22,16 +22,17 @@ use substrate_network::{self as net, generic_message as msg}; use substrate_network::consensus_gossip::ConsensusMessage; use polkadot_api::{PolkadotApi, LocalPolkadotApi}; use polkadot_consensus::{Network, SharedTable}; -use polkadot_primitives::{Block, Hash, BlockId, SessionKey}; +use polkadot_primitives::{Block, Hash, SessionKey}; -use futures::{future, prelude::*}; +use futures::{prelude::*}; use futures::sync::mpsc; use std::sync::Arc; use tokio::runtime::TaskExecutor; +use parking_lot::Mutex; -use super::{Message, NetworkService}; +use super::{Message, NetworkService, Knowledge, CurrentConsensus}; use router::Router; /// Sink for output BFT messages. @@ -239,25 +240,25 @@ impl Network for ConsensusNetwork

    Some(checked), - Err(e) => { - warn!(target: "p_net", "Unable to evaluate candidates: unknown block ID: {}", e); - None - } - }; + let knowledge = Arc::new(Mutex::new(Knowledge::new())); let table_router = Router::new( table, self.network.clone(), self.api.clone(), task_executor.clone(), - checked_parent_hash, + parent_hash, + knowledge.clone(), ); // spin up a task in the background that processes all incoming statements // TODO: propagate statements on a timer? let process_task = self.network.with_spec(|spec, _ctx| { + spec.live_consensus = Some(CurrentConsensus { + knowledge, + parent_hash, + }); + MessageProcessTask { inner_stream: spec.consensus_gossip.messages_for(parent_hash), bft_messages: bft_send, diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index ddfdabe549a60..5bc2f93929cda 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -36,10 +36,14 @@ extern crate tokio; #[macro_use] extern crate log; +mod router; +pub mod consensus; + use codec::Slicable; -use polkadot_consensus::SignedStatement; -use polkadot_primitives::{Block, Hash}; -use polkadot_primitives::parachain::{Id as ParaId, BlockData}; +use parking_lot::Mutex; +use polkadot_consensus::{Statement, SignedStatement, GenericStatement}; +use polkadot_primitives::{Block, SessionKey, Hash}; +use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic}; use substrate_network::{PeerId, RequestId, Context}; use substrate_network::consensus_gossip::ConsensusGossip; use substrate_network::{message, generic_message}; @@ -47,10 +51,7 @@ use substrate_network::specialization::Specialization; use substrate_network::StatusMessage as GenericFullStatus; use std::collections::HashMap; - -mod router; - -pub mod consensus; +use std::sync::Arc; /// Polkadot protocol id. pub const DOT_PROTOCOL_ID: ::substrate_network::ProtocolId = *b"dot"; @@ -113,12 +114,68 @@ struct PeerInfo { status: Status, } -/// Polkadot protocol attachment for substrate. -pub struct PolkadotProtocol { - peers: HashMap, - consensus_gossip: ConsensusGossip, - collators: HashMap>, - collating_for: Option, +#[derive(Default)] +struct KnowledgeEntry { + knows_block_data: Vec, + knows_extrinsic: Vec, + block_data: Option, + extrinsic: Option, +} + +/// Tracks knowledge of peers. +struct Knowledge { + candidates: HashMap, +} + +impl Knowledge { + pub fn new() -> Self { + Knowledge { + candidates: HashMap::new(), + } + } + + fn note_statement(&mut self, from: SessionKey, statement: &Statement) { + match *statement { + GenericStatement::Candidate(ref c) => { + let mut entry = self.candidates.entry(c.hash()).or_insert_with(Default::default); + entry.knows_block_data.push(from); + entry.knows_extrinsic.push(from); + } + GenericStatement::Valid(ref hash) | GenericStatement::Invalid(ref hash) => self.candidates.entry(*hash) + .or_insert_with(Default::default) + .knows_block_data + .push(from), + GenericStatement::Available(ref hash) => self.candidates.entry(*hash) + .or_insert_with(Default::default) + .knows_extrinsic + .push(from), + } + } + + fn note_candidate(&mut self, hash: Hash, block_data: Option, extrinsic: Option) { + let entry = self.candidates.entry(hash).or_insert_with(Default::default); + entry.block_data = entry.block_data.take().or(block_data); + entry.extrinsic = entry.extrinsic.take().or(extrinsic); + } +} + +struct CurrentConsensus { + knowledge: Arc>, + parent_hash: Hash, +} + +impl CurrentConsensus { + // get locally stored block data for a candidate. + fn block_data(&self, hash: &Hash) -> Option { + self.knowledge.lock().candidates.get(hash) + .and_then(|entry| entry.block_data.clone()) + } + + // get locally stored extrinsic data for a candidate. + fn extrinsic(&self, hash: &Hash) -> Option { + self.knowledge.lock().candidates.get(hash) + .and_then(|entry| entry.extrinsic.clone()) + } } /// Polkadot-specific messages. @@ -132,6 +189,26 @@ pub enum Message { BlockData(RequestId, BlockData), } +/// Polkadot protocol attachment for substrate. +pub struct PolkadotProtocol { + peers: HashMap, + consensus_gossip: ConsensusGossip, + collators: HashMap>, + collating_for: Option, + live_consensus: Option, +} + +impl PolkadotProtocol { + /// Send a statement to a validator. + fn send_statement(&mut self, ctx: &mut Context, _val: SessionKey, parent_hash: Hash, statement: SignedStatement) { + // TODO: something more targeted than gossip. + let raw = ::serde_json::to_vec(&Message::Statement(parent_hash, statement)) + .expect("message serialization infallible; qed"); + + self.consensus_gossip.multicast_chain_specific(ctx, raw, parent_hash); + } +} + impl Specialization for PolkadotProtocol { fn status(&self) -> Vec { Status { collating_for: self.collating_for.clone() }.encode() @@ -185,7 +262,7 @@ impl Specialization for PolkadotProtocol { }; match msg { - Message::Statement(parent_hash, statement) => + Message::Statement(parent_hash, _statement) => self.consensus_gossip.on_chain_specific(ctx, peer_id, raw, parent_hash), _ => {}, } diff --git a/polkadot/network/src/router.rs b/polkadot/network/src/router.rs index eb0539bede159..3cb71ddafed28 100644 --- a/polkadot/network/src/router.rs +++ b/polkadot/network/src/router.rs @@ -14,12 +14,12 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! Statement routing and consenuss table router implementation. +//! Statement routing and consensus table router implementation. use polkadot_api::{PolkadotApi, LocalPolkadotApi}; -use polkadot_consensus::{SharedTable, TableRouter, SignedStatement, Statement, GenericStatement}; +use polkadot_consensus::{SharedTable, TableRouter, SignedStatement, GenericStatement, StatementProducer}; use polkadot_primitives::{Hash, BlockId, SessionKey}; -use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt}; +use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt, Id as ParaId}; use futures::{future, prelude::*}; use tokio::runtime::TaskExecutor; @@ -28,7 +28,7 @@ use parking_lot::Mutex; use std::collections::{HashMap, HashSet}; use std::sync::Arc; -use super::NetworkService; +use super::{NetworkService, Knowledge}; /// Table routing implementation. pub struct Router { @@ -36,7 +36,8 @@ pub struct Router { network: Arc, api: Arc

    , task_executor: TaskExecutor, - parent_hash: Option, + parent_hash: Hash, + knowledge: Arc>, deferred_statements: Arc>, } @@ -46,7 +47,8 @@ impl Router

    { network: Arc, api: Arc

    , task_executor: TaskExecutor, - parent_hash: Option, + parent_hash: Hash, + knowledge: Arc>, ) -> Self { Router { table, @@ -54,6 +56,7 @@ impl Router

    { api, task_executor, parent_hash, + knowledge, deferred_statements: Arc::new(Mutex::new(DeferredStatements::new())), } } @@ -72,6 +75,7 @@ impl Clone for Router

    { task_executor: self.task_executor.clone(), parent_hash: self.parent_hash.clone(), deferred_statements: self.deferred_statements.clone(), + knowledge: self.knowledge.clone(), } } } @@ -80,63 +84,95 @@ impl Router

    where P::CheckedBloc /// Import a statement whose signature has been checked already. pub(crate) fn import_statement(&self, statement: SignedStatement) { // defer any statements for which we haven't imported the candidate yet - let defer = match statement.statement { - GenericStatement::Candidate(_) => false, - GenericStatement::Valid(ref hash) - | GenericStatement::Invalid(ref hash) - | GenericStatement::Available(ref hash) - => self.table.with_candidate(hash, |c| c.is_none()), + let (c_hash, parachain_index) = { + let candidate_data = match statement.statement { + GenericStatement::Candidate(ref c) => Some((c.hash(), c.parachain_index)), + GenericStatement::Valid(ref hash) + | GenericStatement::Invalid(ref hash) + | GenericStatement::Available(ref hash) + => self.table.with_candidate(hash, |c| c.map(|c| (*hash, c.parachain_index))), + }; + match candidate_data { + Some(x) => x, + None => { + self.deferred_statements.lock().push(statement); + return; + } + } }; - if defer { - self.deferred_statements.lock().push(statement); - return; - } - // import all statements pending on this candidate - let (pending, _traces) = if let GenericStatement::Candidate(ref candidate) = statement.statement { - self.deferred_statements.lock().get_deferred(&candidate.hash()) + let (mut statements, _traces) = if let GenericStatement::Candidate(_) = statement.statement { + self.deferred_statements.lock().get_deferred(&c_hash) } else { (Vec::new(), Vec::new()) }; + // prepend the candidate statement. + statements.insert(0, statement); let producers: Vec<_> = self.table.import_remote_statements( self, - ::std::iter::once(statement).chain(pending), + statements.iter().cloned(), ); - // dispatch future work as necessary. - for producer in producers.into_iter().filter(|p| !p.is_blank()) { - let api = self.api.clone(); - let parent_hash = self.parent_hash.clone(); - - let validate = move |collation| -> Option { - let checked = parent_hash.clone()?; - - match ::polkadot_consensus::validate_collation(&*api, &checked, &collation) { - Ok(()) => Some(true), - Err(e) => { - debug!(target: "p_net", "Encountered bad collation: {}", e); - Some(false) - } - } + for (producer, statement) in producers.into_iter().zip(statements) { + let producer = match producer { + Some(p) => p, + None => continue, // statement redundant }; - let table = self.table.clone(); - let work = producer.prime(validate).map(move |produced| { - // TODO: ensure availability of block/extrinsic - // and propagate these statements. - if let Some(validity) = produced.validity { - table.sign_and_import(validity); + self.knowledge.lock().note_statement(statement.sender, &statement.statement); + self.dispatch_work(c_hash, producer, parachain_index); + } + } + + fn dispatch_work(&self, candidate_hash: Hash, producer: StatementProducer, parachain: ParaId) where + D: Future + Send + 'static, + E: Future + Send + 'static, + { + let parent_hash = self.parent_hash.clone(); + + let api = self.api.clone(); + let validate = move |collation| -> Option { + // only do processing work if parent hash isn't unresolved. + let checked = match api.check_id(BlockId::hash(parent_hash)) { + Ok(checked) => checked, + Err(e) => { + warn!(target: "p_net", "Cannot validate candidate: unknown parent {}: {}", parent_hash, e); + return None; } + }; - if let Some(availability) = produced.availability { - table.sign_and_import(availability); + match ::polkadot_consensus::validate_collation(&*api, &checked, &collation) { + Ok(()) => Some(true), + Err(e) => { + debug!(target: "p_net", "Encountered bad collation: {}", e); + Some(false) } - }); + } + }; - self.task_executor.spawn(work); - } + let table = self.table.clone(); + let network = self.network.clone(); + let knowledge = self.knowledge.clone(); + + let work = producer.prime(validate).map(move |produced| { + // store the data before broadcasting statements, so other peers can fetch. + knowledge.lock().note_candidate(candidate_hash, produced.block_data, produced.extrinsic); + + // propagate the statements + if let Some(validity) = produced.validity { + let signed = table.sign_and_import(validity.clone()); + route_statement(&*network, &*table, parachain, parent_hash, signed); + } + + if let Some(availability) = produced.availability { + let signed = table.sign_and_import(availability); + route_statement(&*network, &*table, parachain, parent_hash, signed); + } + }); + + self.task_executor.spawn(work); } } @@ -145,8 +181,14 @@ impl TableRouter for Router

    where P::CheckedBlock type FetchCandidate = future::Empty; type FetchExtrinsic = Result; - fn local_candidate_data(&self, _hash: Hash, _block_data: BlockData, _extrinsic: Extrinsic) { - // give to network to make available and multicast + fn local_candidate(&self, receipt: CandidateReceipt, block_data: BlockData, extrinsic: Extrinsic) { + // give to network to make available. + let hash = receipt.hash(); + let para_id = receipt.parachain_index; + let signed = self.table.sign_and_import(GenericStatement::Candidate(receipt)); + + self.knowledge.lock().note_candidate(hash, Some(block_data), Some(extrinsic)); + route_statement(&*self.network, &*self.table, para_id, self.parent_hash, signed); } fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate { @@ -158,6 +200,32 @@ impl TableRouter for Router

    where P::CheckedBlock } } +// get statement to relevant validators. +fn route_statement(network: &NetworkService, table: &SharedTable, para_id: ParaId, parent_hash: Hash, statement: SignedStatement) { + let broadcast = |i: &mut Iterator| { + let local_key = table.session_key(); + network.with_spec(|spec, ctx| { + for val in i.filter(|&x| x != &local_key) { + spec.send_statement(ctx, *val, parent_hash, statement.clone()); + } + }); + }; + + let g_info = table + .group_info() + .get(¶_id) + .expect("statements only produced about groups which exist"); + + match statement.statement { + GenericStatement::Candidate(_) => + broadcast(&mut g_info.validity_guarantors.iter().chain(g_info.availability_guarantors.iter())), + GenericStatement::Valid(_) | GenericStatement::Invalid(_) => + broadcast(&mut g_info.validity_guarantors.iter()), + GenericStatement::Available(_) => + broadcast(&mut g_info.availability_guarantors.iter()), + } +} + // A unique trace for valid statements issued by a validator. #[derive(Hash, PartialEq, Eq, Clone, Debug)] enum StatementTrace { diff --git a/substrate/network/src/consensus_gossip.rs b/substrate/network/src/consensus_gossip.rs index cfd387c0255b8..98f5401b4e0b8 100644 --- a/substrate/network/src/consensus_gossip.rs +++ b/substrate/network/src/consensus_gossip.rs @@ -148,7 +148,7 @@ impl ConsensusGossip where B::Header: HeaderT { } /// Multicast a chain-specific message to other authorities. - pub fn multicast_chain_specific(&mut self, protocol: &mut Context, parent_hash: B::Hash, message: Vec) { + pub fn multicast_chain_specific(&mut self, protocol: &mut Context, message: Vec, parent_hash: B::Hash) { trace!(target:"gossip", "sending chain-specific message"); self.multicast(protocol, ConsensusMessage::ChainSpecific(message, parent_hash), None); } diff --git a/substrate/network/src/specialization.rs b/substrate/network/src/specialization.rs index ce1c7067dbf7a..c949af37dd5a7 100644 --- a/substrate/network/src/specialization.rs +++ b/substrate/network/src/specialization.rs @@ -25,6 +25,9 @@ pub trait Specialization: Send + Sync + 'static { /// Get the current specialization-status. fn status(&self) -> Vec; + /// Called on start-up. + fn on_start(&mut self) { } + /// Called when a peer successfully handshakes. fn on_connect(&mut self, ctx: &mut Context, peer_id: PeerId, status: ::message::Status); From a6219ab8a59090c08b92231c5627ad28f683f2db Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 21 Jun 2018 18:41:19 +0200 Subject: [PATCH 085/103] grumbles --- substrate/network/src/protocol.rs | 3 ++- substrate/network/src/service.rs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index 9775a6393509f..3dbdc3f0641c3 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -111,10 +111,11 @@ pub trait Context { /// Disable a peer fn disable_peer(&mut self, peer_id: PeerId); + /// Disconnect peer fn disconnect_peer(&mut self, peer_id: PeerId); - /// Get peer info. + /// Get peer info. fn peer_info(&self, peer: PeerId) -> Option>; /// Send a message to a peer. diff --git a/substrate/network/src/service.rs b/substrate/network/src/service.rs index 0a44698702e21..e978668e3a384 100644 --- a/substrate/network/src/service.rs +++ b/substrate/network/src/service.rs @@ -49,7 +49,7 @@ bitflags! { pub struct Role: u32 { /// No network. const NONE = 0b00000000; - /// Full node, dose not participate in consensus. + /// Full node, does not participate in consensus. const FULL = 0b00000001; /// Light client node. const LIGHT = 0b00000010; From b5007319625b43f0130e238fd274b27efc56a49e Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 22 Jun 2018 18:22:42 +0200 Subject: [PATCH 086/103] request block data --- Cargo.lock | 53 +++-- polkadot/consensus/src/shared_table/mod.rs | 2 + polkadot/network/src/consensus.rs | 7 +- polkadot/network/src/lib.rs | 227 ++++++++++++++++++--- polkadot/network/src/router.rs | 23 ++- polkadot/primitives/src/parachain.rs | 13 ++ substrate/network/src/consensus_gossip.rs | 8 +- substrate/network/src/protocol.rs | 2 + substrate/network/src/specialization.rs | 3 + 9 files changed, 289 insertions(+), 49 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5d8c2e0c05007..03b91367b237c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1434,11 +1434,10 @@ dependencies = [ "substrate-client 0.1.0", "substrate-codec 0.1.0", "substrate-keyring 0.1.0", - "substrate-network 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-support 0.1.0", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1449,6 +1448,27 @@ dependencies = [ "substrate-executor 0.1.0", ] +[[package]] +name = "polkadot-network" +version = "0.1.0" +dependencies = [ + "ed25519 0.1.0", + "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "polkadot-api 0.1.0", + "polkadot-consensus 0.1.0", + "polkadot-primitives 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-bft 0.1.0", + "substrate-codec 0.1.0", + "substrate-network 0.1.0", + "substrate-primitives 0.1.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "polkadot-parachain" version = "0.1.0" @@ -1517,6 +1537,7 @@ dependencies = [ "polkadot-api 0.1.0", "polkadot-consensus 0.1.0", "polkadot-executor 0.1.0", + "polkadot-network 0.1.0", "polkadot-primitives 0.1.0", "polkadot-runtime 0.1.0", "polkadot-transaction-pool 0.1.0", @@ -1541,6 +1562,9 @@ name = "polkadot-statement-table" version = "0.1.0" dependencies = [ "polkadot-primitives 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", "substrate-primitives 0.1.0", ] @@ -2059,8 +2083,7 @@ dependencies = [ "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-support 0.1.0", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2661,7 +2684,7 @@ dependencies = [ [[package]] name = "tokio" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2671,8 +2694,8 @@ dependencies = [ "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2687,11 +2710,11 @@ dependencies = [ "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2709,7 +2732,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2786,7 +2809,7 @@ dependencies = [ [[package]] name = "tokio-threadpool" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2808,7 +2831,7 @@ dependencies = [ [[package]] name = "tokio-timer" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3365,7 +3388,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" "checksum timer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "31d42176308937165701f50638db1c31586f183f1aab416268216577aec7306b" "checksum tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e9175261fbdb60781fcd388a4d6cc7e14764a2b629a7ad94abb439aed223a44f" -"checksum tokio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d00555353b013e170ed8bc4e13f648a317d1fd12157dbcae13f7013f6cf29f5" +"checksum tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8ee337e5f4e501fc32966fec6fe0ca0cc1c237b0b1b14a335f8bfe3c5f06e286" "checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" "checksum tokio-executor 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8cac2a7883ff3567e9d66bb09100d09b33d90311feca0206c7ca034bc0c55113" "checksum tokio-fs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "76766830bbf9a2d5bfb50c95350d56a2e79e2c80f675967fff448bc615899708" @@ -3375,9 +3398,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum tokio-retry 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f05746ae87dca83a2016b4f5dba5b237b897dd12fd324f60afe282112f16969a" "checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" "checksum tokio-tcp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ec9b094851aadd2caf83ba3ad8e8c4ce65a42104f7b94d9e6550023f0407853f" -"checksum tokio-threadpool 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5783254b10c7c84a56f62c74766ef7e5b83d1f13053218c7cab8d3f2c826fa0e" +"checksum tokio-threadpool 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c3873a6d8d0b636e024e77b9a82eaab6739578a06189ecd0e731c7308fbc5d" "checksum tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6131e780037787ff1b3f8aad9da83bca02438b72277850dd6ad0d455e0e20efc" -"checksum tokio-timer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535fed0ccee189f3d48447587697ba3fd234b3dbbb091f0ec4613ddfec0a7c4c" +"checksum tokio-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "028b94314065b90f026a21826cffd62a4e40a92cda3e5c069cc7b02e5945f5e9" "checksum tokio-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "772f4b04e560117fe3b0a53e490c16ddc8ba6ec437015d91fa385564996ed913" "checksum tokio-udp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "137bda266504893ac4774e0ec4c2108f7ccdbcb7ac8dced6305fe9e4e0b5041a" "checksum trace-time 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5aea07da6582e957c6e737eeb63a5af79e648eeeaaaba8fd9a417f1124bafa41" diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index db028e655e177..5cd36f0b00a15 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -475,6 +475,7 @@ mod tests { balance_uploads: Vec::new(), egress_queue_roots: Vec::new(), fees: 1_000_000, + block_data_hash: [2, 32].into(), }; let candidate_statement = GenericStatement::Candidate(candidate); @@ -523,6 +524,7 @@ mod tests { balance_uploads: Vec::new(), egress_queue_roots: Vec::new(), fees: 1_000_000, + block_data_hash: [2; 32].into(), }; let candidate_statement = GenericStatement::Candidate(candidate); diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 57b7ac2a061b2..a56d2fb6e9d4e 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -242,6 +242,7 @@ impl Network for ConsensusNetwork

    Network for ConsensusNetwork

    >, +struct BlockDataRequest { + attempted_peers: HashSet, + consensus_parent: Hash, + candidate_hash: Hash, + block_data_hash: Hash, + sender: oneshot::Sender, } struct PeerInfo { status: Status, + validator: bool, + session_keys: HashMap, } #[derive(Default)] @@ -141,14 +134,15 @@ impl Knowledge { entry.knows_block_data.push(from); entry.knows_extrinsic.push(from); } + GenericStatement::Available(ref hash) => { + let mut entry = self.candidates.entry(*hash).or_insert_with(Default::default); + entry.knows_block_data.push(from); + entry.knows_extrinsic.push(from); + } GenericStatement::Valid(ref hash) | GenericStatement::Invalid(ref hash) => self.candidates.entry(*hash) .or_insert_with(Default::default) .knows_block_data .push(from), - GenericStatement::Available(ref hash) => self.candidates.entry(*hash) - .or_insert_with(Default::default) - .knows_extrinsic - .push(from), } } @@ -162,6 +156,8 @@ impl Knowledge { struct CurrentConsensus { knowledge: Arc>, parent_hash: Hash, + session_keys: HashMap, + local_session_key: SessionKey, } impl CurrentConsensus { @@ -176,6 +172,12 @@ impl CurrentConsensus { self.knowledge.lock().candidates.get(hash) .and_then(|entry| entry.extrinsic.clone()) } + + fn peer_disconnected(&mut self, peer: &PeerInfo) { + if let Some(key) = peer.session_keys.get(&self.parent_hash) { + self.session_keys.remove(key); + } + } } /// Polkadot-specific messages. @@ -183,10 +185,18 @@ impl CurrentConsensus { pub enum Message { /// signed statement and localized parent hash. Statement(Hash, SignedStatement), + /// Tell the peer your session key for the current block. + // TODO: do this with a random challenge protocol + SessionKey(Hash, SessionKey), /// Requesting parachain block data by candidate hash. RequestBlockData(RequestId, Hash), - /// Provide block data by candidate hash. - BlockData(RequestId, BlockData), + /// Provide block data by candidate hash or nothing if unknown. + BlockData(RequestId, Option), +} + +fn send_polkadot_message(ctx: &mut Context, to: PeerId, message: Message) { + let encoded = ::serde_json::to_vec(&message).expect("serialization of messages infallible; qed"); + ctx.send_message(to, generic_message::Message::ChainSpecific(encoded)) } /// Polkadot protocol attachment for substrate. @@ -196,6 +206,9 @@ pub struct PolkadotProtocol { collators: HashMap>, collating_for: Option, live_consensus: Option, + in_flight: HashMap<(RequestId, PeerId), BlockDataRequest>, + pending: Vec, + next_req_id: u64, } impl PolkadotProtocol { @@ -207,6 +220,117 @@ impl PolkadotProtocol { self.consensus_gossip.multicast_chain_specific(ctx, raw, parent_hash); } + + /// Fetch block data by candidate receipt. + fn fetch_block_data(&mut self, ctx: &mut Context, candidate: &CandidateReceipt, relay_parent: Hash) -> oneshot::Receiver { + let (tx, rx) = oneshot::channel(); + + self.pending.push(BlockDataRequest { + attempted_peers: Default::default(), + consensus_parent: relay_parent, + candidate_hash: candidate.hash(), + block_data_hash: candidate.block_data_hash, + sender: tx, + }) + + rx + } + + /// Note new consensus session. + fn new_consensus(&mut self, ctx: &mut Context, mut consensus: CurrentConsensus) { + let parent_hash = consensus.parent_hash; + let old_parent = self.live_consensus.as_ref().map(|c| c.parent_hash); + + for (id, info) in self.peers.iter_mut().filter(|&(ref id, ref info)| info.validator) { + send_polkadot_message( + ctx, + *id, + Message::SessionKey(parent_hash, consensus.local_session_key) + ); + + if let Some(key) = info.session_keys.get(&parent_hash) { + consensus.session_keys.insert(*key, *id); + } + + if let Some(ref old_parent) = old_parent { + info.session_keys.remove(old_parent); + } + } + + self.live_consensus = Some(consensus); + self.consensus_gossip.collect_garbage(Some(&parent_hash)); + } + + fn dispatch_pending_requests(&mut self, ctx: &mut Context) { + let consensus = match self.live_consensus { + Some(ref mut c) => c, + None => { + self.pending.clear(); + return; + } + }; + + let mut knowledge = consensus.knowledge.lock(); + let mut new_pending = Vec::new(); + for pending in ::std::mem::replace(&mut self.pending, Vec::new()) { + if pending.consensus_parent != consensus.parent_hash { continue } + + if let Some(entry) = knowledge.get(&pending.candidate_hash) { + // answer locally + if let Some(ref data) = entry.block_data { + pending.sender.send(data.clone()); + continue; + } + + let next_peer = entry.knows_block_data.iter() + .filter(|x| consensus.session_keys.get(x).map_or(false, |key| pending.attempted_peers.insert(*x))) + .cloned() + .next(); + + // dispatch to peer + if let Some(peer_id) = next_peer { + let req_id = self.next_req_id; + self.next_req_id += 1; + + send_polkadot_message( + ctx, + peer_id, + Message::RequestBlockData(req_id, pending.candidate_hash) + ); + + self.in_flight.insert((req_id, peer_id), pending); + + continue; + } + } + + new_pending.push(pending); + } + + self.pending = new_pending; + } + + fn on_block_data(&mut self, ctx: &mut Context, from: PeerId, req_id: RequestId, data: Option) { + match self.in_flight.remove(&(r_id, peer_id)) { + Some(mut req) => { + match block_data { + None => { + self.pending.push(req); + self.dispatch_pending_requests(ctx); + return; + } + Some(data) => { + if data.hash() != req.block_data_hash { + ctx.disable_peer(from); + } else { + req.sender.send(data); + } + } + } + } + None => ctx.disable_peer(peer_id), + } + } } impl Specialization for PolkadotProtocol { @@ -229,8 +353,22 @@ impl Specialization for PolkadotProtocol { .push(peer_id); } - self.peers.insert(peer_id, PeerInfo { status: local_status }); + let validator = status.roles.iter().any(|r| *r == message::Role::Authority); + self.peers.insert(peer_id, PeerInfo { + status: local_status, + session_keys: Default::default(), + validator, + }); + self.consensus_gossip.new_peer(ctx, peer_id, &status.roles); + + if let (true, &Some(ref consensus)) = (validator, &self.live_consensus) { + send_polkadot_message( + ctx, + peer_id, + Message::SessionKey(consensus.parent_hash, consensus.local_session_key) + ); + } } fn on_disconnect(&mut self, ctx: &mut Context, peer_id: PeerId) { @@ -241,11 +379,21 @@ impl Specialization for PolkadotProtocol { } } + if let (true, &mut Some(ref mut consensus)) = (info.validator, &mut self.live_consensus) { + consensus.peer_disconnected(&info); + } + + self.in_flight.retain(|(_, peer)| peer != &peer_id); self.consensus_gossip.peer_disconnected(ctx, peer_id); } } fn on_message(&mut self, ctx: &mut Context, peer_id: PeerId, message: message::Message) { + let info = match self.peers.get_mut(&peer_id) { + Some(peer) => peer, + None => return, + }; + match message { generic_message::Message::BftMessage(msg) => { // TODO: check signature here? what if relevant block is unknown? @@ -264,6 +412,30 @@ impl Specialization for PolkadotProtocol { match msg { Message::Statement(parent_hash, _statement) => self.consensus_gossip.on_chain_specific(ctx, peer_id, raw, parent_hash), + Message::SessionKey(parent_hash, key) => { + if !info.validator { + ctx.disable_peer(peer_id); + return; + } + + match self.live_consensus { + Some(ref mut consensus) if consensus.parent_hash == parent_hash => { + consensus.session_keys.insert(key, peer_id); + } + _ => {} + } + + info.session_keys.insert(parent_hash, key); + } + Message::RequestBlockData(r_id, hash) => { + let block_data = self.live_consensus.as_ref() + .map(|c| c.knowledge.lock()) + .map(|k| k.candidates.get(&hash)) + .and_then(|can| can.block_data.clone()); + + send_polkadot_message(ctx, peer_id, Message::BlockData(r_id, block_data)); + } + Message::BlockData(r_id, data) => self.on_block_data(ctx, peer_id, req_id, data) _ => {}, } } @@ -274,4 +446,9 @@ impl Specialization for PolkadotProtocol { fn on_abort(&mut self) { self.consensus_gossip.abort(); } + + fn maintain_peers(&mut self, ctx: &mut Context) { + self.consensus_gossip.collect_garbage(None); + self.dispatch_pending_requests(ctx); + } } diff --git a/polkadot/network/src/router.rs b/polkadot/network/src/router.rs index 3cb71ddafed28..56639b23aa33d 100644 --- a/polkadot/network/src/router.rs +++ b/polkadot/network/src/router.rs @@ -178,7 +178,7 @@ impl Router

    where P::CheckedBloc impl TableRouter for Router

    where P::CheckedBlockId: Send { type Error = (); - type FetchCandidate = future::Empty; + type FetchCandidate = BlockDataReceiver, type FetchExtrinsic = Result; fn local_candidate(&self, receipt: CandidateReceipt, block_data: BlockData, extrinsic: Extrinsic) { @@ -191,8 +191,8 @@ impl TableRouter for Router

    where P::CheckedBlock route_statement(&*self.network, &*self.table, para_id, self.parent_hash, signed); } - fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate { - future::empty() + fn fetch_block_data(&self, candidate: &CandidateReceipt) -> BlockDataReceiver { + let rx = self.network.with_spec(|spec, ctx| { spec.fetch_data(ctx, candidate) }); } fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { @@ -200,6 +200,23 @@ impl TableRouter for Router

    where P::CheckedBlock } } +/// Receiver for block data. +pub struct BlockDataReceiver { + inner: Option<::futures::sync::oneshot::Receiver>, +} + +impl Future for BlockDataReceiver { + type Item = BlockData; + type Error = (); + + fn poll(&mut self) -> Poll { + match self.inner { + Some(ref mut inner) => self.inner.poll.map_err(|_| ()), + None => return Err(()), + } + } +} + // get statement to relevant validators. fn route_statement(network: &NetworkService, table: &SharedTable, para_id: ParaId, parent_hash: Hash, statement: SignedStatement) { let broadcast = |i: &mut Iterator| { diff --git a/polkadot/primitives/src/parachain.rs b/polkadot/primitives/src/parachain.rs index caf09b2f286b8..79b12aeecd428 100644 --- a/polkadot/primitives/src/parachain.rs +++ b/polkadot/primitives/src/parachain.rs @@ -172,6 +172,8 @@ pub struct CandidateReceipt { pub egress_queue_roots: Vec<(Id, Hash)>, /// Fees paid from the chain to the relay chain validators pub fees: u64, + /// blake2-256 Hash of block data. + pub block_data_hash: Hash, } impl Slicable for CandidateReceipt { @@ -184,6 +186,7 @@ impl Slicable for CandidateReceipt { self.balance_uploads.using_encoded(|s| v.extend(s)); self.egress_queue_roots.using_encoded(|s| v.extend(s)); self.fees.using_encoded(|s| v.extend(s)); + self.block_data_hash.using_encoded(|s| v.extend(s)); v } @@ -196,6 +199,7 @@ impl Slicable for CandidateReceipt { balance_uploads: Slicable::decode(input)?, egress_queue_roots: Slicable::decode(input)?, fees: Slicable::decode(input)?, + block_data_hash: Slicable::decode(input)?, }) } } @@ -243,6 +247,15 @@ pub struct ConsolidatedIngress(pub Vec<(Id, Vec)>); #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] pub struct BlockData(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); +impl BlockData { + /// Compute hash of block data. + #[cfg(feature = "std")] + pub fn hash(&self) -> Hash { + use runtime_primitives::traits::{BlakeTwo256, Hashing}; + BlakeTwo256::hash(&self.0[..]) + } +} + /// Parachain header raw bytes wrapper type. #[derive(PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] diff --git a/substrate/network/src/consensus_gossip.rs b/substrate/network/src/consensus_gossip.rs index 98f5401b4e0b8..c20ba60fdf648 100644 --- a/substrate/network/src/consensus_gossip.rs +++ b/substrate/network/src/consensus_gossip.rs @@ -166,16 +166,16 @@ impl ConsensusGossip where B::Header: HeaderT { } /// Prune old or no longer relevant consensus messages. - pub fn collect_garbage(&mut self, best_header: Option<&B::Header>) { + pub fn collect_garbage(&mut self, best_hash: Option<&B::Hash>) { let hashes = &mut self.message_hashes; let before = self.messages.len(); let now = Instant::now(); self.messages.retain(|entry| { if entry.instant + MESSAGE_LIFETIME >= now && - best_header.map_or(true, |header| + best_hash.map_or(true, |parent_hash| match entry.message { - ConsensusMessage::Bft(ref msg) => &msg.parent_hash != header.parent_hash(), - ConsensusMessage::ChainSpecific(_, ref h) => h != header.parent_hash(), + ConsensusMessage::Bft(ref msg) => &msg.parent_hash != parent_hash, + ConsensusMessage::ChainSpecific(_, ref h) => h != parent_hash, }) { true diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index e5a888b910ee4..0d99c07f6ea45 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -392,6 +392,8 @@ impl> Protocol where B::Header: HeaderT: Send + Sync + 'static { /// Called on abort. fn on_abort(&mut self) { } + + /// Called periodically to maintain peers and handle timeouts. + fn maintain_peers(&mut self, ctx: &mut Context) { } } From 5d74bab0af3c55457598789390fa9d5eca8390c2 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 25 Jun 2018 14:03:16 +0200 Subject: [PATCH 087/103] fix compilation --- polkadot/network/src/lib.rs | 73 +++++++++++++------------------ polkadot/network/src/router.rs | 10 +++-- substrate/network/src/protocol.rs | 2 +- 3 files changed, 37 insertions(+), 48 deletions(-) diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index a13ee546f7337..0f037be9b5371 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -167,12 +167,6 @@ impl CurrentConsensus { .and_then(|entry| entry.block_data.clone()) } - // get locally stored extrinsic data for a candidate. - fn extrinsic(&self, hash: &Hash) -> Option { - self.knowledge.lock().candidates.get(hash) - .and_then(|entry| entry.extrinsic.clone()) - } - fn peer_disconnected(&mut self, peer: &PeerInfo) { if let Some(key) = peer.session_keys.get(&self.parent_hash) { self.session_keys.remove(key); @@ -231,8 +225,9 @@ impl PolkadotProtocol { candidate_hash: candidate.hash(), block_data_hash: candidate.block_data_hash, sender: tx, - }) + }); + self.dispatch_pending_requests(ctx); rx } @@ -241,7 +236,7 @@ impl PolkadotProtocol { let parent_hash = consensus.parent_hash; let old_parent = self.live_consensus.as_ref().map(|c| c.parent_hash); - for (id, info) in self.peers.iter_mut().filter(|&(ref id, ref info)| info.validator) { + for (id, info) in self.peers.iter_mut().filter(|&(_, ref info)| info.validator) { send_polkadot_message( ctx, *id, @@ -270,22 +265,22 @@ impl PolkadotProtocol { } }; - let mut knowledge = consensus.knowledge.lock(); + let knowledge = consensus.knowledge.lock(); let mut new_pending = Vec::new(); - for pending in ::std::mem::replace(&mut self.pending, Vec::new()) { + for mut pending in ::std::mem::replace(&mut self.pending, Vec::new()) { if pending.consensus_parent != consensus.parent_hash { continue } - if let Some(entry) = knowledge.get(&pending.candidate_hash) { + if let Some(entry) = knowledge.candidates.get(&pending.candidate_hash) { // answer locally if let Some(ref data) = entry.block_data { - pending.sender.send(data.clone()); + let _ = pending.sender.send(data.clone()); continue; } let next_peer = entry.knows_block_data.iter() - .filter(|x| consensus.session_keys.get(x).map_or(false, |key| pending.attempted_peers.insert(*x))) - .cloned() - .next(); + .filter_map(|x| consensus.session_keys.get(x).map(|id| (*x, *id))) + .find(|&(ref key, _)| pending.attempted_peers.insert(*key)) + .map(|(_, id)| id); // dispatch to peer if let Some(peer_id) = next_peer { @@ -310,23 +305,18 @@ impl PolkadotProtocol { self.pending = new_pending; } - fn on_block_data(&mut self, ctx: &mut Context, from: PeerId, req_id: RequestId, data: Option) { - match self.in_flight.remove(&(r_id, peer_id)) { - Some(mut req) => { - match block_data { - None => { - self.pending.push(req); - self.dispatch_pending_requests(ctx); - return; - } - Some(data) => { - if data.hash() != req.block_data_hash { - ctx.disable_peer(from); - } else { - req.sender.send(data); - } + fn on_block_data(&mut self, ctx: &mut Context, peer_id: PeerId, req_id: RequestId, data: Option) { + match self.in_flight.remove(&(req_id, peer_id)) { + Some(req) => { + if let Some(data) = data { + if data.hash() == req.block_data_hash { + let _ = req.sender.send(data); + return } } + + self.pending.push(req); + self.dispatch_pending_requests(ctx); } None => ctx.disable_peer(peer_id), } @@ -383,17 +373,12 @@ impl Specialization for PolkadotProtocol { consensus.peer_disconnected(&info); } - self.in_flight.retain(|(_, peer)| peer != &peer_id); + self.in_flight.retain(|&(_, ref peer), _| peer != &peer_id); self.consensus_gossip.peer_disconnected(ctx, peer_id); } } fn on_message(&mut self, ctx: &mut Context, peer_id: PeerId, message: message::Message) { - let info = match self.peers.get_mut(&peer_id) { - Some(peer) => peer, - None => return, - }; - match message { generic_message::Message::BftMessage(msg) => { // TODO: check signature here? what if relevant block is unknown? @@ -413,6 +398,11 @@ impl Specialization for PolkadotProtocol { Message::Statement(parent_hash, _statement) => self.consensus_gossip.on_chain_specific(ctx, peer_id, raw, parent_hash), Message::SessionKey(parent_hash, key) => { + let info = match self.peers.get_mut(&peer_id) { + Some(peer) => peer, + None => return, + }; + if !info.validator { ctx.disable_peer(peer_id); return; @@ -427,16 +417,13 @@ impl Specialization for PolkadotProtocol { info.session_keys.insert(parent_hash, key); } - Message::RequestBlockData(r_id, hash) => { + Message::RequestBlockData(req_id, hash) => { let block_data = self.live_consensus.as_ref() - .map(|c| c.knowledge.lock()) - .map(|k| k.candidates.get(&hash)) - .and_then(|can| can.block_data.clone()); + .and_then(|c| c.block_data(&hash)); - send_polkadot_message(ctx, peer_id, Message::BlockData(r_id, block_data)); + send_polkadot_message(ctx, peer_id, Message::BlockData(req_id, block_data)); } - Message::BlockData(r_id, data) => self.on_block_data(ctx, peer_id, req_id, data) - _ => {}, + Message::BlockData(req_id, data) => self.on_block_data(ctx, peer_id, req_id, data), } } _ => {} diff --git a/polkadot/network/src/router.rs b/polkadot/network/src/router.rs index 56639b23aa33d..fef720035aef5 100644 --- a/polkadot/network/src/router.rs +++ b/polkadot/network/src/router.rs @@ -21,7 +21,7 @@ use polkadot_consensus::{SharedTable, TableRouter, SignedStatement, GenericState use polkadot_primitives::{Hash, BlockId, SessionKey}; use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt, Id as ParaId}; -use futures::{future, prelude::*}; +use futures::prelude::*; use tokio::runtime::TaskExecutor; use parking_lot::Mutex; @@ -178,7 +178,7 @@ impl Router

    where P::CheckedBloc impl TableRouter for Router

    where P::CheckedBlockId: Send { type Error = (); - type FetchCandidate = BlockDataReceiver, + type FetchCandidate = BlockDataReceiver; type FetchExtrinsic = Result; fn local_candidate(&self, receipt: CandidateReceipt, block_data: BlockData, extrinsic: Extrinsic) { @@ -192,7 +192,9 @@ impl TableRouter for Router

    where P::CheckedBlock } fn fetch_block_data(&self, candidate: &CandidateReceipt) -> BlockDataReceiver { - let rx = self.network.with_spec(|spec, ctx| { spec.fetch_data(ctx, candidate) }); + let parent_hash = self.parent_hash; + let rx = self.network.with_spec(|spec, ctx| { spec.fetch_block_data(ctx, candidate, parent_hash) }); + BlockDataReceiver { inner: rx } } fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { @@ -211,7 +213,7 @@ impl Future for BlockDataReceiver { fn poll(&mut self) -> Poll { match self.inner { - Some(ref mut inner) => self.inner.poll.map_err(|_| ()), + Some(ref mut inner) => inner.poll().map_err(|_| ()), None => return Err(()), } } diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index 0d99c07f6ea45..1d1a201666283 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -393,7 +393,7 @@ impl> Protocol where B::Header: HeaderT Date: Mon, 25 Jun 2018 15:35:28 +0200 Subject: [PATCH 088/103] embed new consensus network into service --- Cargo.lock | 7 +- polkadot/cli/Cargo.toml | 2 +- polkadot/cli/src/informant.rs | 8 +-- polkadot/cli/src/lib.rs | 54 ++++++++------ polkadot/network/src/consensus.rs | 27 ++++++- polkadot/network/src/lib.rs | 14 ++++ polkadot/service/Cargo.toml | 3 +- polkadot/service/src/components.rs | 55 ++++++++++---- polkadot/service/src/lib.rs | 112 +++++++++++++---------------- substrate/rpc/Cargo.toml | 2 +- substrate/rpc/src/chain/mod.rs | 6 +- substrate/rpc/src/lib.rs | 2 +- substrate/rpc/src/subscriptions.rs | 11 ++- 13 files changed, 181 insertions(+), 122 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 03b91367b237c..48fb52011a886 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1397,7 +1397,7 @@ dependencies = [ "substrate-state-machine 0.1.0", "substrate-telemetry 0.2.0", "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "triehash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1553,8 +1553,7 @@ dependencies = [ "substrate-runtime-primitives 0.1.0", "substrate-state-machine 0.1.0", "substrate-telemetry 0.2.0", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2277,7 +2276,7 @@ dependencies = [ "substrate-runtime-primitives 0.1.0", "substrate-state-machine 0.1.0", "substrate-test-client 0.1.0", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/polkadot/cli/Cargo.toml b/polkadot/cli/Cargo.toml index 82e63d16b712c..935797afc59a9 100644 --- a/polkadot/cli/Cargo.toml +++ b/polkadot/cli/Cargo.toml @@ -19,7 +19,7 @@ hex-literal = "0.1" triehash = "0.1" ed25519 = { path = "../../substrate/ed25519" } app_dirs = "1.2" -tokio-core = "0.1.12" +tokio = "0.1.7" futures = "0.1.17" ctrlc = { git = "https://github.com/paritytech/rust-ctrlc.git" } fdlimit = "0.1" diff --git a/polkadot/cli/src/informant.rs b/polkadot/cli/src/informant.rs index 26915da32e8e2..c588d9eca0f85 100644 --- a/polkadot/cli/src/informant.rs +++ b/polkadot/cli/src/informant.rs @@ -19,7 +19,8 @@ use std::time::{Duration, Instant}; use futures::stream::Stream; use service::{Service, Components}; -use tokio_core::reactor; +use tokio::runtime::TaskExecutor; +use tokio::timer::Interval; use network::{SyncState, SyncProvider}; use polkadot_primitives::Block; use state_machine; @@ -28,13 +29,12 @@ use client::{self, BlockchainEvents}; const TIMER_INTERVAL_MS: u64 = 5000; /// Spawn informant on the event loop -pub fn start(service: &Service, handle: reactor::Handle) +pub fn start(service: &Service, handle: TaskExecutor) where C: Components, client::error::Error: From<<<::Backend as client::backend::Backend>::State as state_machine::Backend>::Error>, { - let interval = reactor::Interval::new_at(Instant::now(), Duration::from_millis(TIMER_INTERVAL_MS), &handle) - .expect("Error creating informant timer"); + let interval = Interval::new(Instant::now(), Duration::from_millis(TIMER_INTERVAL_MS)); let network = service.network(); let client = service.client(); diff --git a/polkadot/cli/src/lib.rs b/polkadot/cli/src/lib.rs index 96d38cb2e563b..fddf8997fdb4e 100644 --- a/polkadot/cli/src/lib.rs +++ b/polkadot/cli/src/lib.rs @@ -25,7 +25,7 @@ extern crate ansi_term; extern crate regex; extern crate time; extern crate futures; -extern crate tokio_core; +extern crate tokio; extern crate ctrlc; extern crate fdlimit; extern crate ed25519; @@ -80,9 +80,9 @@ use substrate_telemetry::{init_telemetry, TelemetryConfig}; use runtime_primitives::StorageMap; use polkadot_primitives::Block; -use futures::sync::mpsc; -use futures::{Sink, Future, Stream}; -use tokio_core::reactor; +use futures::sync::oneshot; +use futures::Future; +use tokio::runtime::Runtime; const DEFAULT_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io:443"; @@ -123,8 +123,6 @@ pub fn run(args: I) -> error::Result<()> where I: IntoIterator, T: Into + Clone, { - let core = reactor::Core::new().expect("tokio::Core could not be created"); - let yaml = load_yaml!("./cli.yml"); let matches = match clap::App::from_yaml(yaml).version(crate_version!()).get_matches_from_safe(args) { Ok(m) => m, @@ -192,12 +190,12 @@ pub fn run(args: I) -> error::Result<()> where let (mut genesis_storage, boot_nodes) = PresetConfig::from_spec(chain_spec) .map(PresetConfig::deconstruct) - .unwrap_or_else(|f| (Box::new(move || + .unwrap_or_else(|f| (Box::new(move || read_storage_json(&f) .map(|s| { info!("{} storage items read from {}", s.len(), f); s }) .unwrap_or_else(|| panic!("Bad genesis state file: {}", f)) ), vec![])); - + if matches.is_present("build-genesis") { info!("Building genesis"); for (i, (k, v)) in genesis_storage().iter().enumerate() { @@ -212,13 +210,14 @@ pub fn run(args: I) -> error::Result<()> where let role = if matches.is_present("collator") { info!("Starting collator"); - service::Role::COLLATOR + // TODO [rob]: collation node implementation + service::Role::FULL } else if matches.is_present("light") { info!("Starting (light)"); service::Role::LIGHT } else if matches.is_present("validator") || matches.is_present("dev") { info!("Starting validator"); - service::Role::VALIDATOR + service::Role::AUTHORITY } else { info!("Starting (heavy)"); service::Role::FULL @@ -256,35 +255,49 @@ pub fn run(args: I) -> error::Result<()> where chain_name: config.chain_name.clone(), }; + let mut runtime = Runtime::new()?; + let executor = runtime.executor(); match role == service::Role::LIGHT { - true => run_until_exit(core, service::new_light(config)?, &matches, sys_conf), - false => run_until_exit(core, service::new_full(config)?, &matches, sys_conf), + true => run_until_exit(&mut runtime, service::new_light(config, executor)?, &matches, sys_conf)?, + false => run_until_exit(&mut runtime, service::new_full(config, executor)?, &matches, sys_conf)?, } + + // TODO: hard exit if this stalls? + runtime.shutdown_on_idle().wait().expect("failed to shut down event loop"); + Ok(()) } -fn run_until_exit(mut core: reactor::Core, service: service::Service, matches: &clap::ArgMatches, sys_conf: SystemConfiguration) -> error::Result<()> +fn run_until_exit(runtime: &mut Runtime, service: service::Service, matches: &clap::ArgMatches, sys_conf: SystemConfiguration) -> error::Result<()> where C: service::Components, client::error::Error: From<<<::Backend as client::backend::Backend>::State as state_machine::Backend>::Error>, { let exit = { - // can't use signal directly here because CtrlC takes only `Fn`. - let (exit_send, exit) = mpsc::channel(1); + let (exit_send, exit) = oneshot::channel(); + let exit_send = ::std::cell::RefCell::new(Some(exit_send)); ctrlc::CtrlC::set_handler(move || { - exit_send.clone().send(()).wait().expect("Error sending exit notification"); + let exit_send = exit_send + .try_borrow_mut() + .expect("only borrowed in non-reetrant signal handler; qed") + .take(); + + if let Some(sender) = exit_send { + sender.send(()).expect("Error sending exit notification"); + } }); - exit + exit.then(|_| Ok(())) }; - informant::start(&service, core.handle()); + let executor = runtime.executor(); + informant::start(&service, executor.clone()); let _rpc_servers = { let http_address = parse_address("127.0.0.1:9933", "rpc-port", matches)?; let ws_address = parse_address("127.0.0.1:9944", "ws-port", matches)?; let handler = || { - let chain = rpc::apis::chain::Chain::new(service.client(), core.remote()); + let chain = rpc::apis::chain::Chain::new(service.client(), executor.clone()); rpc::rpc_handler::( service.client(), chain, @@ -298,8 +311,7 @@ fn run_until_exit(mut core: reactor::Core, service: service::Service, matc ) }; - core.run(exit.into_future()).expect("Error running informant event loop"); - Ok(()) + runtime.block_on(exit) } fn start_server(mut address: SocketAddr, start: F) -> Result where diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index a56d2fb6e9d4e..8b70f5a0eb3a8 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -21,10 +21,11 @@ use ed25519; use substrate_network::{self as net, generic_message as msg}; use substrate_network::consensus_gossip::ConsensusMessage; use polkadot_api::{PolkadotApi, LocalPolkadotApi}; -use polkadot_consensus::{Network, SharedTable}; -use polkadot_primitives::{Block, Hash, SessionKey}; +use polkadot_consensus::{Network, SharedTable, Collators, Collation}; +use polkadot_primitives::{AccountId, Block, Hash, SessionKey}; +use polkadot_primitives::parachain::Id as ParaId; -use futures::{prelude::*}; +use futures::{future, prelude::*}; use futures::sync::mpsc; use std::sync::Arc; @@ -219,6 +220,15 @@ impl

    ConsensusNetwork

    { } } +impl

    Clone for ConsensusNetwork

    { + fn clone(&self) -> Self { + ConsensusNetwork { + network: self.network.clone(), + api: self.api.clone(), + } + } +} + /// A long-lived network which can create parachain statement and BFT message routing processes on demand. impl Network for ConsensusNetwork

    where P::CheckedBlockId: Send { type TableRouter = Router

    ; @@ -278,3 +288,14 @@ impl Network for ConsensusNetwork

    Collators for ConsensusNetwork

    { + type Error = (); + type Collation = future::Empty; + + fn collate(&self, _parachain: ParaId, _relay_parent: Hash) -> Self::Collation { + future::empty() + } + + fn note_bad_collator(&self, _collator: AccountId) { } +} diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 0f037be9b5371..bc8c06208fb3e 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -206,6 +206,20 @@ pub struct PolkadotProtocol { } impl PolkadotProtocol { + /// Instantiate a polkadot protocol handler. + pub fn new() -> Self { + PolkadotProtocol { + peers: HashMap::new(), + consensus_gossip: ConsensusGossip::new(), + collators: HashMap::new(), + collating_for: None, + live_consensus: None, + in_flight: HashMap::new(), + pending: Vec::new(), + next_req_id: 1, + } + } + /// Send a statement to a validator. fn send_statement(&mut self, ctx: &mut Context, _val: SessionKey, parent_hash: Hash, statement: SignedStatement) { // TODO: something more targeted than gossip. diff --git a/polkadot/service/Cargo.toml b/polkadot/service/Cargo.toml index 285f81a223c0f..33195a348dcbc 100644 --- a/polkadot/service/Cargo.toml +++ b/polkadot/service/Cargo.toml @@ -6,13 +6,12 @@ authors = ["Parity Technologies "] [dependencies] futures = "0.1.17" parking_lot = "0.4" -tokio-timer = "0.1.2" error-chain = "0.11" lazy_static = "1.0" log = "0.3" slog = "^2" clap = "2.27" -tokio-core = "0.1.12" +tokio = "0.1.7" exit-future = "0.1" ed25519 = { path = "../../substrate/ed25519" } polkadot-primitives = { path = "../primitives" } diff --git a/polkadot/service/src/components.rs b/polkadot/service/src/components.rs index e8274f4dfccc9..a446cc44c7bd8 100644 --- a/polkadot/service/src/components.rs +++ b/polkadot/service/src/components.rs @@ -18,20 +18,22 @@ use std::collections::HashMap; use std::sync::Arc; -use client::{self, Client}; use client_db; +use client::{self, Client}; use codec::{self, Slicable}; use consensus; +use error; use keystore::Store as Keystore; -use network; +use network::{self, OnDemand}; use polkadot_api; -use runtime_primitives::MakeStorage; use polkadot_executor::Executor as LocalDispatch; +use polkadot_network::NetworkService; use polkadot_primitives::{Block, BlockId, Hash}; +use runtime_primitives::MakeStorage; use state_machine; use substrate_executor::NativeExecutor; use transaction_pool::{self, TransactionPool}; -use error; +use tokio::runtime::TaskExecutor; /// Code executor. pub type CodeExecutor = NativeExecutor; @@ -49,7 +51,7 @@ pub trait Components { /// Create client. fn build_client(&self, settings: client_db::DatabaseSettings, executor: CodeExecutor, genesis_storage: MakeStorage) - -> Result<(Arc>, Option>>>), error::Error>; + -> Result<(Arc>, Option>>), error::Error>; /// Create api. fn build_api(&self, client: Arc>) -> Arc; @@ -59,7 +61,14 @@ pub trait Components { -> Arc>; /// Create consensus service. - fn build_consensus(&self, client: Arc>, network: Arc>, tx_pool: Arc, keystore: &Keystore) + fn build_consensus( + &self, + client: Arc>, + network: Arc, + tx_pool: Arc, + keystore: &Keystore, + task_executor: TaskExecutor, + ) -> Result, error::Error>; } @@ -75,7 +84,7 @@ impl Components for FullComponents { type Executor = client::LocalCallExecutor, NativeExecutor>; fn build_client(&self, db_settings: client_db::DatabaseSettings, executor: CodeExecutor, genesis_storage: MakeStorage) - -> Result<(Arc>, Option>>>), error::Error> { + -> Result<(Arc>, Option>>), error::Error> { Ok((Arc::new(client_db::new_client(db_settings, executor, genesis_storage)?), None)) } @@ -93,8 +102,16 @@ impl Components for FullComponents { }) } - fn build_consensus(&self, client: Arc>, network: Arc>, tx_pool: Arc, keystore: &Keystore) - -> Result, error::Error> { + fn build_consensus( + &self, + client: Arc>, + network: Arc, + tx_pool: Arc, + keystore: &Keystore, + task_executor: TaskExecutor, + ) + -> Result, error::Error> + { if !self.is_validator { return Ok(None); } @@ -102,11 +119,14 @@ impl Components for FullComponents { // Load the first available key let key = keystore.load(&keystore.contents()?[0], "")?; info!("Using authority key {:?}", key.public()); + + let consensus_net = ::polkadot_network::consensus::ConsensusNetwork::new(network, client.clone()); Ok(Some(consensus::Service::new( client.clone(), client.clone(), - network.clone(), + consensus_net, tx_pool.clone(), + task_executor, ::std::time::Duration::from_millis(4000), // TODO: dynamic key, ))) @@ -119,13 +139,13 @@ pub struct LightComponents; impl Components for LightComponents { type Backend = client::light::Backend; type Api = polkadot_api::light::RemotePolkadotApiWrapper; - type Executor = client::RemoteCallExecutor, network::OnDemand>>; + type Executor = client::RemoteCallExecutor, OnDemand>; fn build_client(&self, _settings: client_db::DatabaseSettings, executor: CodeExecutor, genesis_storage: MakeStorage) - -> Result<(Arc>, Option>>>), error::Error> { + -> Result<(Arc>, Option>>), error::Error> { let client_backend = client::light::new_light_backend(); let fetch_checker = Arc::new(client::light::new_fetch_checker(client_backend.clone(), executor)); - let fetcher = Arc::new(network::OnDemand::new(fetch_checker)); + let fetcher = Arc::new(OnDemand::new(fetch_checker)); let client = client::light::new_light(client_backend, fetcher.clone(), genesis_storage)?; Ok((Arc::new(client), Some(fetcher))) } @@ -144,7 +164,14 @@ impl Components for LightComponents { }) } - fn build_consensus(&self, _client: Arc>, _network: Arc>, _tx_pool: Arc, _keystore: &Keystore) + fn build_consensus( + &self, + _client: Arc>, + _network: Arc, + _tx_pool: Arc, + _keystore: &Keystore, + _task_executor: TaskExecutor, + ) -> Result, error::Error> { Ok(None) } diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index f0e43a31a7a73..2f7e5c2a09918 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -21,7 +21,6 @@ extern crate futures; extern crate ed25519; extern crate clap; extern crate exit_future; -extern crate tokio_timer; extern crate polkadot_primitives; extern crate polkadot_runtime; extern crate polkadot_executor; @@ -29,16 +28,16 @@ extern crate polkadot_api; extern crate polkadot_consensus as consensus; extern crate polkadot_transaction_pool as transaction_pool; extern crate polkadot_network; +extern crate substrate_keystore as keystore; extern crate substrate_primitives as primitives; extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_network as network; extern crate substrate_codec as codec; extern crate substrate_executor; extern crate substrate_state_machine as state_machine; - -extern crate tokio_core; extern crate substrate_client as client; extern crate substrate_client_db as client_db; +extern crate tokio; #[macro_use] extern crate substrate_telemetry; @@ -54,9 +53,7 @@ mod error; mod config; use std::sync::Arc; -use std::thread; use futures::prelude::*; -use tokio_core::reactor::Core; use transaction_pool::TransactionPool; use keystore::Store as Keystore; use polkadot_api::PolkadotApi; @@ -64,7 +61,8 @@ use polkadot_primitives::{Block, BlockId, Hash}; use client::{Client, BlockchainEvents}; use network::ManageNetwork; use exit_future::Signal; -use polkadot_network::NetworkService; +use polkadot_network::{NetworkService, PolkadotProtocol}; +use tokio::runtime::TaskExecutor; pub use self::error::{ErrorKind, Error}; pub use self::components::{Components, FullComponents, LightComponents}; @@ -72,7 +70,6 @@ pub use config::{Configuration, Role}; /// Polkadot service. pub struct Service { - thread: Option>, client: Arc>, network: Arc, transaction_pool: Arc, @@ -81,14 +78,14 @@ pub struct Service { } /// Creates light client and register protocol with the network service -pub fn new_light(config: Configuration) -> Result, error::Error> { - Service::new(components::LightComponents, config) +pub fn new_light(config: Configuration, executor: TaskExecutor) -> Result, error::Error> { + Service::new(components::LightComponents, config, executor) } /// Creates full client and register protocol with the network service -pub fn new_full(config: Configuration) -> Result, error::Error> { - let is_validator = (config.roles & Role::VALIDATOR) == Role::VALIDATOR; - Service::new(components::FullComponents { is_validator }, config) +pub fn new_full(config: Configuration, executor: TaskExecutor) -> Result, error::Error> { + let is_validator = (config.roles & Role::AUTHORITY) == Role::AUTHORITY; + Service::new(components::FullComponents { is_validator }, config, executor) } impl Service @@ -97,9 +94,7 @@ impl Service client::error::Error: From<<<::Backend as client::backend::Backend>::State as state_machine::Backend>::Error>, { /// Creates and register protocol with the network service - fn new(components: Components, config: Configuration) -> Result { - use std::sync::Barrier; - + fn new(components: Components, config: Configuration, task_executor: TaskExecutor) -> Result { let (signal, exit) = ::exit_future::signal(); // Create client @@ -137,60 +132,55 @@ impl Service chain: client.clone(), on_demand: on_demand.clone().map(|d| d as Arc), transaction_pool: transaction_pool_adapter, + specialization: PolkadotProtocol::new(), }; - let network = network::Service::new(network_params)?; - let barrier = ::std::sync::Arc::new(Barrier::new(2)); + + let network = network::Service::new(network_params, ::polkadot_network::DOT_PROTOCOL_ID)?; on_demand.map(|on_demand| on_demand.set_service_link(Arc::downgrade(&network))); - let thread = { - let client = client.clone(); + network.start_network(); + + { + // block notifications let network = network.clone(); let txpool = transaction_pool.clone(); - let thread_barrier = barrier.clone(); - thread::spawn(move || { - network.start_network(); - - thread_barrier.wait(); - let mut core = Core::new().expect("tokio::Core could not be created"); - - // block notifications - let network1 = network.clone(); - let txpool1 = txpool.clone(); - - let events = client.import_notification_stream() - .for_each(move |notification| { - network1.on_block_imported(notification.hash, ¬ification.header); - prune_imported(&*api, &*txpool1, notification.hash); - Ok(()) - }); - core.handle().spawn(events); - - // transaction notifications - let events = txpool.import_notification_stream() - // TODO [ToDr] Consider throttling? - .for_each(move |_| { - network.trigger_repropagate(); - Ok(()) - }); - core.handle().spawn(events); - - if let Err(e) = core.run(exit) { - debug!("Polkadot service event loop shutdown with {:?}", e); - } - debug!("Polkadot service shutdown"); - }) - }; + let events = client.import_notification_stream() + .for_each(move |notification| { + network.on_block_imported(notification.hash, ¬ification.header); + prune_imported(&*api, &*txpool, notification.hash); + Ok(()) + }) + .select(exit.clone()) + .then(|_| Ok(())); + tokio::spawn(events); + } - // wait for the network to start up before starting the consensus - // service. - barrier.wait(); + { + // transaction notifications + let network = network.clone(); + let events = transaction_pool.import_notification_stream() + // TODO [ToDr] Consider throttling? + .for_each(move |_| { + network.trigger_repropagate(); + Ok(()) + }) + .select(exit.clone()) + .then(|_| Ok(())); + + tokio::spawn(events); + } // Spin consensus service if configured - let consensus_service = components.build_consensus(client.clone(), network.clone(), transaction_pool.clone(), &keystore)?; + let consensus_service = components.build_consensus( + client.clone(), + network.clone(), + transaction_pool.clone(), + &keystore, + task_executor, + )?; Ok(Service { - thread: Some(thread), client: client, network: network, transaction_pool: transaction_pool, @@ -231,14 +221,12 @@ pub fn prune_imported(api: &A, pool: &TransactionPool, hash: Hash) impl Drop for Service where Components: components::Components { fn drop(&mut self) { + debug!(target: "service", "Polkadot service shutdown"); + self.network.stop_network(); if let Some(signal) = self.signal.take() { signal.fire(); } - - if let Some(thread) = self.thread.take() { - thread.join().expect("The service thread has panicked"); - } } } diff --git a/substrate/rpc/Cargo.toml b/substrate/rpc/Cargo.toml index 45bddecdfdf5d..869db90d97499 100644 --- a/substrate/rpc/Cargo.toml +++ b/substrate/rpc/Cargo.toml @@ -16,7 +16,7 @@ substrate-extrinsic-pool = { path = "../extrinsic-pool" } substrate-primitives = { path = "../primitives" } substrate-runtime-primitives = { path = "../runtime/primitives" } substrate-state-machine = { path = "../state-machine" } -tokio-core = "0.1.12" +tokio = "0.1.7" [dev-dependencies] assert_matches = "1.1" diff --git a/substrate/rpc/src/chain/mod.rs b/substrate/rpc/src/chain/mod.rs index 04bd4896b555a..1227b5ef97156 100644 --- a/substrate/rpc/src/chain/mod.rs +++ b/substrate/rpc/src/chain/mod.rs @@ -27,7 +27,7 @@ use jsonrpc_macros::pubsub; use jsonrpc_pubsub::SubscriptionId; use rpc::Result as RpcResult; use rpc::futures::{Future, Sink, Stream}; -use tokio_core::reactor::Remote; +use tokio::runtime::TaskExecutor; use subscriptions::Subscriptions; @@ -72,10 +72,10 @@ pub struct Chain { impl Chain { /// Create new Chain API RPC handler. - pub fn new(client: Arc>, remote: Remote) -> Self { + pub fn new(client: Arc>, executor: TaskExecutor) -> Self { Chain { client, - subscriptions: Subscriptions::new(remote), + subscriptions: Subscriptions::new(executor), } } } diff --git a/substrate/rpc/src/lib.rs b/substrate/rpc/src/lib.rs index 8cd043652ae57..931a37eeda174 100644 --- a/substrate/rpc/src/lib.rs +++ b/substrate/rpc/src/lib.rs @@ -26,7 +26,7 @@ extern crate substrate_extrinsic_pool as extrinsic_pool; extern crate substrate_primitives as primitives; extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_state_machine as state_machine; -extern crate tokio_core; +extern crate tokio; #[macro_use] extern crate error_chain; diff --git a/substrate/rpc/src/subscriptions.rs b/substrate/rpc/src/subscriptions.rs index 60536e5a6d801..ec2b8e89f8adf 100644 --- a/substrate/rpc/src/subscriptions.rs +++ b/substrate/rpc/src/subscriptions.rs @@ -22,7 +22,7 @@ use jsonrpc_pubsub::SubscriptionId; use parking_lot::Mutex; use rpc::futures::sync::oneshot; use rpc::futures::{Future, future}; -use tokio_core::reactor::Remote; +use tokio::runtime::TaskExecutor; type Id = u64; @@ -34,12 +34,12 @@ type Id = u64; pub struct Subscriptions { next_id: AtomicUsize, active_subscriptions: Mutex>>, - event_loop: Remote, + event_loop: TaskExecutor, } impl Subscriptions { /// Creates new `Subscriptions` object. - pub fn new(event_loop: Remote) -> Self { + pub fn new(event_loop: TaskExecutor) -> Self { Subscriptions { next_id: Default::default(), active_subscriptions: Default::default(), @@ -63,11 +63,10 @@ impl Subscriptions { let future = into_future(sink) .into_future() .select(rx.map_err(|e| warn!("Error timeing out: {:?}", e))) - .map(|_| ()) - .map_err(|_| ()); + .then(|_| Ok(())); self.active_subscriptions.lock().insert(id, tx); - self.event_loop.spawn(|_| future); + self.event_loop.spawn(future); } } From 810308ae9c65161e4fd6b20089211745653b00cf Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 25 Jun 2018 15:43:16 +0200 Subject: [PATCH 089/103] port demo CLI to tokio --- Cargo.lock | 2 +- demo/cli/Cargo.toml | 2 +- demo/cli/src/lib.rs | 11 ++++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 48fb52011a886..3b7d81ae715e7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -321,7 +321,7 @@ dependencies = [ "substrate-rpc-servers 0.1.0", "substrate-runtime-io 0.1.0", "substrate-state-machine 0.1.0", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "triehash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/demo/cli/Cargo.toml b/demo/cli/Cargo.toml index 6f488c2ad84e7..b5c7847b4c547 100644 --- a/demo/cli/Cargo.toml +++ b/demo/cli/Cargo.toml @@ -13,7 +13,7 @@ futures = "0.1.17" error-chain = "0.11" hex-literal = "0.1" log = "0.3" -tokio-core = "0.1.12" +tokio = "0.1.7" triehash = "0.1" substrate-client = { path = "../../substrate/client" } substrate-codec = { path = "../../substrate/codec" } diff --git a/demo/cli/src/lib.rs b/demo/cli/src/lib.rs index 0267ac35607a9..24a8a8b82350f 100644 --- a/demo/cli/src/lib.rs +++ b/demo/cli/src/lib.rs @@ -22,7 +22,7 @@ extern crate ctrlc; extern crate ed25519; extern crate env_logger; extern crate futures; -extern crate tokio_core; +extern crate tokio; extern crate triehash; extern crate substrate_client as client; extern crate substrate_codec as codec; @@ -53,6 +53,7 @@ use demo_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfi SessionConfig, StakingConfig, BuildStorage}; use demo_runtime::{Block, UncheckedExtrinsic}; use futures::{Future, Sink, Stream}; +use tokio::runtime::Runtime; struct DummyPool; impl extrinsic_pool::api::ExtrinsicPool for DummyPool { @@ -150,11 +151,10 @@ pub fn run(args: I) -> error::Result<()> where }.build_storage(); let client = Arc::new(client::new_in_mem::<_, Block, _>(executor, genesis_storage)?); - let mut core = ::tokio_core::reactor::Core::new().expect("Unable to spawn event loop."); - + let mut runtime = Runtime::new()?; let _rpc_servers = { let handler = || { - let chain = rpc::apis::chain::Chain::new(client.clone(), core.remote()); + let chain = rpc::apis::chain::Chain::new(client.clone(), runtime.executor()); rpc::rpc_handler::(client.clone(), chain, Arc::new(DummyPool), DummySystem) }; let http_address = "127.0.0.1:9933".parse().unwrap(); @@ -172,7 +172,8 @@ pub fn run(args: I) -> error::Result<()> where ctrlc::CtrlC::set_handler(move || { exit_send.clone().send(()).wait().expect("Error sending exit notification"); }); - core.run(exit.into_future()).expect("Error running informant event loop"); + + runtime.block_on(exit.into_future()).expect("Error running informant event loop"); return Ok(()) } From e9274f3c69c58a8231fae7a5ef7d19d8883d35dc Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 25 Jun 2018 16:35:12 +0200 Subject: [PATCH 090/103] all test crates compile --- polkadot/consensus/src/shared_table/mod.rs | 2 +- polkadot/network/src/lib.rs | 2 +- substrate/network/src/consensus_gossip.rs | 5 +++-- substrate/network/src/specialization.rs | 2 +- substrate/rpc/src/chain/tests.rs | 14 +++++++------- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index 5cd36f0b00a15..645f261461100 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -475,7 +475,7 @@ mod tests { balance_uploads: Vec::new(), egress_queue_roots: Vec::new(), fees: 1_000_000, - block_data_hash: [2, 32].into(), + block_data_hash: [2; 32].into(), }; let candidate_statement = GenericStatement::Candidate(candidate); diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index bc8c06208fb3e..7adcb7962c937 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -267,7 +267,7 @@ impl PolkadotProtocol { } self.live_consensus = Some(consensus); - self.consensus_gossip.collect_garbage(Some(&parent_hash)); + self.consensus_gossip.collect_garbage(old_parent.as_ref()); } fn dispatch_pending_requests(&mut self, ctx: &mut Context) { diff --git a/substrate/network/src/consensus_gossip.rs b/substrate/network/src/consensus_gossip.rs index c20ba60fdf648..df2de2cc042ea 100644 --- a/substrate/network/src/consensus_gossip.rs +++ b/substrate/network/src/consensus_gossip.rs @@ -166,6 +166,7 @@ impl ConsensusGossip where B::Header: HeaderT { } /// Prune old or no longer relevant consensus messages. + /// Supply an optional block hash where consensus is known to have concluded. pub fn collect_garbage(&mut self, best_hash: Option<&B::Hash>) { let hashes = &mut self.message_hashes; let before = self.messages.len(); @@ -326,13 +327,13 @@ mod tests { digest: Default::default(), }; - consensus.collect_garbage(Some(&header)); + consensus.collect_garbage(Some(&H256::default())); assert_eq!(consensus.messages.len(), 2); assert_eq!(consensus.message_hashes.len(), 2); // header that matches one of the messages header.parent_hash = prev_hash; - consensus.collect_garbage(Some(&header)); + consensus.collect_garbage(Some(&prev_hash)); assert_eq!(consensus.messages.len(), 1); assert_eq!(consensus.message_hashes.len(), 1); assert!(consensus.message_hashes.contains(&m2_hash)); diff --git a/substrate/network/src/specialization.rs b/substrate/network/src/specialization.rs index 965eadd9e042b..d3fa760317e98 100644 --- a/substrate/network/src/specialization.rs +++ b/substrate/network/src/specialization.rs @@ -41,5 +41,5 @@ pub trait Specialization: Send + Sync + 'static { fn on_abort(&mut self) { } /// Called periodically to maintain peers and handle timeouts. - fn maintain_peers(&mut self, ctx: &mut Context) { } + fn maintain_peers(&mut self, _ctx: &mut Context) { } } diff --git a/substrate/rpc/src/chain/tests.rs b/substrate/rpc/src/chain/tests.rs index 51fb7b907574a..39e839c63dd8b 100644 --- a/substrate/rpc/src/chain/tests.rs +++ b/substrate/rpc/src/chain/tests.rs @@ -22,8 +22,8 @@ use test_client::runtime::Header; #[test] fn should_return_header() { - let core = ::tokio_core::reactor::Core::new().unwrap(); - let remote = core.remote(); + let core = ::tokio::runtime::Runtime::new().unwrap(); + let remote = core.executor(); let client = Chain { client: Arc::new(test_client::new()), @@ -48,8 +48,8 @@ fn should_return_header() { #[test] fn should_notify_about_latest_block() { - let mut core = ::tokio_core::reactor::Core::new().unwrap(); - let remote = core.remote(); + let mut core = ::tokio::runtime::Runtime::new().unwrap(); + let remote = core.executor(); let (subscriber, id, transport) = pubsub::Subscriber::new_test("test"); { @@ -61,17 +61,17 @@ fn should_notify_about_latest_block() { api.subscribe_new_head(Default::default(), subscriber); // assert id assigned - assert_eq!(core.run(id), Ok(Ok(SubscriptionId::Number(0)))); + assert_eq!(core.block_on(id), Ok(Ok(SubscriptionId::Number(0)))); let builder = api.client.new_block().unwrap(); api.client.justify_and_import(BlockOrigin::Own, builder.bake().unwrap()).unwrap(); } // assert notification send to transport - let (notification, next) = core.run(transport.into_future()).unwrap(); + let (notification, next) = core.block_on(transport.into_future()).unwrap(); assert_eq!(notification, Some( r#"{"jsonrpc":"2.0","method":"test","params":{"result":{"digest":{"logs":[]},"extrinsicsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","number":1,"parentHash":"0x27f04d7574733bb155bbf5a0399fcc99d3c4dbf15bf99862d261bced9444179a","stateRoot":"0x987aa0851a133413b42c6d9aa3c91b1dddc2ad5337508ee8815116b11e44c64d"},"subscription":0}}"#.to_owned() )); // no more notifications on this channel - assert_eq!(core.run(next.into_future()).unwrap().0, None); + assert_eq!(core.block_on(next.into_future()).unwrap().0, None); } From edadf3a8ea14799702745f960bf573a19d483c2f Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 26 Jun 2018 11:55:57 +0200 Subject: [PATCH 091/103] some tests for fetching block data --- polkadot/network/src/lib.rs | 58 +++++++--- polkadot/network/src/tests.rs | 205 +++++++++++++++++++++++++++++++++ substrate/network/src/chain.rs | 1 + substrate/network/src/lib.rs | 1 + 4 files changed, 249 insertions(+), 16 deletions(-) create mode 100644 polkadot/network/src/tests.rs diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 7adcb7962c937..17086ca91b679 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -54,6 +54,9 @@ use substrate_network::StatusMessage as GenericFullStatus; use std::collections::{HashMap, HashSet}; use std::sync::Arc; +#[cfg(test)] +mod tests; + /// Polkadot protocol id. pub const DOT_PROTOCOL_ID: ::substrate_network::ProtocolId = *b"dot"; @@ -373,6 +376,8 @@ impl Specialization for PolkadotProtocol { Message::SessionKey(consensus.parent_hash, consensus.local_session_key) ); } + + self.dispatch_pending_requests(ctx); } fn on_disconnect(&mut self, ctx: &mut Context, peer_id: PeerId) { @@ -387,8 +392,26 @@ impl Specialization for PolkadotProtocol { consensus.peer_disconnected(&info); } - self.in_flight.retain(|&(_, ref peer), _| peer != &peer_id); + { + let pending = &mut self.pending; + self.in_flight.retain(|&(_, ref peer), val| { + let retain = peer != &peer_id; + if !retain { + let (sender, _) = oneshot::channel(); + pending.push(::std::mem::replace(val, BlockDataRequest { + attempted_peers: Default::default(), + consensus_parent: Default::default(), + candidate_hash: Default::default(), + block_data_hash: Default::default(), + sender, + })); + } + + retain + }); + } self.consensus_gossip.peer_disconnected(ctx, peer_id); + self.dispatch_pending_requests(ctx); } } @@ -412,24 +435,27 @@ impl Specialization for PolkadotProtocol { Message::Statement(parent_hash, _statement) => self.consensus_gossip.on_chain_specific(ctx, peer_id, raw, parent_hash), Message::SessionKey(parent_hash, key) => { - let info = match self.peers.get_mut(&peer_id) { - Some(peer) => peer, - None => return, - }; - - if !info.validator { - ctx.disable_peer(peer_id); - return; - } + { + let info = match self.peers.get_mut(&peer_id) { + Some(peer) => peer, + None => return, + }; + + if !info.validator { + ctx.disable_peer(peer_id); + return; + } - match self.live_consensus { - Some(ref mut consensus) if consensus.parent_hash == parent_hash => { - consensus.session_keys.insert(key, peer_id); + match self.live_consensus { + Some(ref mut consensus) if consensus.parent_hash == parent_hash => { + consensus.session_keys.insert(key, peer_id); + } + _ => {} } - _ => {} - } - info.session_keys.insert(parent_hash, key); + info.session_keys.insert(parent_hash, key); + } + self.dispatch_pending_requests(ctx); } Message::RequestBlockData(req_id, hash) => { let block_data = self.live_consensus.as_ref() diff --git a/polkadot/network/src/tests.rs b/polkadot/network/src/tests.rs new file mode 100644 index 0000000000000..7b34af0bd5788 --- /dev/null +++ b/polkadot/network/src/tests.rs @@ -0,0 +1,205 @@ +// Copyright 2018 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Tests for polkadot and consensus network. + +use super::{PolkadotProtocol, Status, CurrentConsensus, Knowledge, Message, FullStatus}; + +use parking_lot::Mutex; +use polkadot_consensus::GenericStatement; +use polkadot_primitives::{Block, Hash, SessionKey}; +use polkadot_primitives::parachain::{CandidateReceipt, HeadData, BlockData}; +use codec::Slicable; +use substrate_network::{PeerId, PeerInfo, ClientHandle, Context, message::Message as SubstrateMessage, message::Role, specialization::Specialization, generic_message::Message as GenericMessage}; + +use std::sync::Arc; +use futures::Future; + +#[derive(Default)] +struct TestContext { + disabled: Vec, + disconnected: Vec, + messages: Vec<(PeerId, SubstrateMessage)>, +} + +impl Context for TestContext { + fn client(&self) -> &ClientHandle { + unimplemented!() + } + + fn disable_peer(&mut self, peer: PeerId) { + self.disabled.push(peer); + } + + fn disconnect_peer(&mut self, peer: PeerId) { + self.disconnected.push(peer); + } + + fn peer_info(&self, _peer: PeerId) -> Option> { + unimplemented!() + } + + fn send_message(&mut self, peer_id: PeerId, data: SubstrateMessage) { + self.messages.push((peer_id, data)) + } +} + +impl TestContext { + fn has_message(&self, to: PeerId, message: Message) -> bool { + use substrate_network::generic_message::Message as GenericMessage; + + let encoded = ::serde_json::to_vec(&message).unwrap(); + self.messages.iter().any(|&(ref peer, ref msg)| match msg { + GenericMessage::ChainSpecific(ref data) => peer == &to && data == &encoded, + _ => false, + }) + } +} + +fn make_status(status: &Status, roles: Vec) -> FullStatus { + FullStatus { + version: 1, + roles, + best_number: 0, + best_hash: Default::default(), + genesis_hash: Default::default(), + chain_status: status.encode(), + } +} + +fn make_consensus(parent_hash: Hash, local_key: SessionKey) -> (CurrentConsensus, Arc>) { + let knowledge = Arc::new(Mutex::new(Knowledge::new())); + let c = CurrentConsensus { + knowledge: knowledge.clone(), + parent_hash, + session_keys: Default::default(), + local_session_key: local_key, + }; + + (c, knowledge) +} + +fn on_message(protocol: &mut PolkadotProtocol, ctx: &mut TestContext, from: PeerId, message: Message) { + let encoded = ::serde_json::to_vec(&message).unwrap(); + protocol.on_message(ctx, from, GenericMessage::ChainSpecific(encoded)); +} + +#[test] +fn sends_session_key() { + let mut protocol = PolkadotProtocol::new(); + + let peer_a = 1; + let peer_b = 2; + let parent_hash = [0; 32].into(); + let local_key = [1; 32].into(); + + let status = Status { collating_for: None }; + + { + let mut ctx = TestContext::default(); + protocol.on_connect(&mut ctx, peer_a, make_status(&status, vec![Role::Authority])); + assert!(ctx.messages.is_empty()); + } + + { + let mut ctx = TestContext::default(); + let (consensus, _knowledge) = make_consensus(parent_hash, local_key); + protocol.new_consensus(&mut ctx, consensus); + + assert!(ctx.has_message(peer_a, Message::SessionKey(parent_hash, local_key))); + } + + { + let mut ctx = TestContext::default(); + protocol.on_connect(&mut ctx, peer_b, make_status(&status, vec![Role::Authority])); + assert!(ctx.has_message(peer_b, Message::SessionKey(parent_hash, local_key))); + } +} + +#[test] +fn fetches_from_those_with_knowledge() { + let mut protocol = PolkadotProtocol::new(); + + let peer_a = 1; + let peer_b = 2; + let parent_hash = [0; 32].into(); + let local_key = [1; 32].into(); + + let block_data = BlockData(vec![1, 2, 3, 4]); + let block_data_hash = block_data.hash(); + let candidate_receipt = CandidateReceipt { + parachain_index: 5.into(), + collator: [255; 32].into(), + head_data: HeadData(vec![9, 9, 9]), + balance_uploads: Vec::new(), + egress_queue_roots: Vec::new(), + fees: 1_000_000, + block_data_hash, + }; + + let candidate_hash = candidate_receipt.hash(); + let a_key = [3; 32].into(); + let b_key = [4; 32].into(); + + let status = Status { collating_for: None }; + + let (consensus, knowledge) = make_consensus(parent_hash, local_key); + protocol.new_consensus(&mut TestContext::default(), consensus); + + knowledge.lock().note_statement(a_key, &GenericStatement::Valid(candidate_hash)); + let recv = protocol.fetch_block_data(&mut TestContext::default(), &candidate_receipt, parent_hash); + + // connect peer A + { + let mut ctx = TestContext::default(); + protocol.on_connect(&mut ctx, peer_a, make_status(&status, vec![Role::Authority])); + assert!(ctx.has_message(peer_a, Message::SessionKey(parent_hash, local_key))); + } + + // peer A gives session key and gets asked for data. + { + let mut ctx = TestContext::default(); + on_message(&mut protocol, &mut ctx, peer_a, Message::SessionKey(parent_hash, a_key)); + assert!(ctx.has_message(peer_a, Message::RequestBlockData(1, candidate_hash))); + } + + + knowledge.lock().note_statement(b_key, &GenericStatement::Valid(candidate_hash)); + + // peer B connects and sends session key. request already assigned to A + { + let mut ctx = TestContext::default(); + protocol.on_connect(&mut ctx, peer_b, make_status(&status, vec![Role::Authority])); + on_message(&mut protocol, &mut ctx, peer_b, Message::SessionKey(parent_hash, b_key)); + assert!(!ctx.has_message(peer_b, Message::RequestBlockData(2, candidate_hash))); + + } + + // peer A disconnects, triggering reassignment + { + let mut ctx = TestContext::default(); + protocol.on_disconnect(&mut ctx, peer_a); + assert!(ctx.has_message(peer_b, Message::RequestBlockData(2, candidate_hash))); + } + + // peer B comes back with block data. + { + let mut ctx = TestContext::default(); + on_message(&mut protocol, &mut ctx, peer_b, Message::BlockData(2, Some(block_data.clone()))); + drop(protocol); + assert_eq!(recv.wait().unwrap(), block_data); + } +} diff --git a/substrate/network/src/chain.rs b/substrate/network/src/chain.rs index 8745be57287a8..bff88b8717663 100644 --- a/substrate/network/src/chain.rs +++ b/substrate/network/src/chain.rs @@ -23,6 +23,7 @@ use runtime_primitives::traits::{Block as BlockT, Header as HeaderT}; use runtime_primitives::generic::BlockId; use runtime_primitives::bft::Justification; +/// Local client abstraction for the network. pub trait Client: Send + Sync { /// Import a new block. Parent is supposed to be existing in the blockchain. fn import(&self, is_best: bool, header: Block::Header, justification: Justification, body: Option>) -> Result; diff --git a/substrate/network/src/lib.rs b/substrate/network/src/lib.rs index b7c1ec07f6afc..54036daeb7083 100644 --- a/substrate/network/src/lib.rs +++ b/substrate/network/src/lib.rs @@ -61,6 +61,7 @@ pub mod specialization; #[cfg(test)] mod test; +pub use chain::Client as ClientHandle; pub use service::{Service, FetchFuture, ConsensusService, BftMessageStream, TransactionPool, Params, ManageNetwork, SyncProvider}; pub use protocol::{ProtocolStatus, PeerInfo, Context}; From b156b00c10a131c20bce8ef8eb118cc0219de400 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 26 Jun 2018 11:57:43 +0200 Subject: [PATCH 092/103] whitespace --- polkadot/network/src/tests.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/polkadot/network/src/tests.rs b/polkadot/network/src/tests.rs index 7b34af0bd5788..feb83a416e53d 100644 --- a/polkadot/network/src/tests.rs +++ b/polkadot/network/src/tests.rs @@ -176,7 +176,6 @@ fn fetches_from_those_with_knowledge() { assert!(ctx.has_message(peer_a, Message::RequestBlockData(1, candidate_hash))); } - knowledge.lock().note_statement(b_key, &GenericStatement::Valid(candidate_hash)); // peer B connects and sends session key. request already assigned to A From 2b58efd1bdb8051bd1304c715644fe432f3bf22d Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 27 Jun 2018 18:31:46 +0200 Subject: [PATCH 093/103] adjusting some tokio stuff --- Cargo.lock | 9 +++++---- polkadot/cli/Cargo.toml | 1 + polkadot/cli/src/informant.rs | 10 +++++----- polkadot/cli/src/lib.rs | 15 ++++++++------- polkadot/service/src/lib.rs | 4 ++-- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2c05678d3242c..0b25697e7ce7e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -617,7 +617,7 @@ dependencies = [ [[package]] name = "exit-future" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1405,6 +1405,7 @@ dependencies = [ "ed25519 0.1.0", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "exit-future 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1450,7 +1451,7 @@ version = "0.1.0" dependencies = [ "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "exit-future 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1560,7 +1561,7 @@ dependencies = [ "clap 2.31.2 (registry+https://github.com/rust-lang/crates.io-index)", "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "exit-future 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3268,7 +3269,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c48729b8aea8aedb12cf4cb2e5cef439fdfe2dda4a89e47eeebd15778ef53b6" "checksum ethereum-types-serialize 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ac59a21a9ce98e188f3dace9eb67a6c4a3c67ec7fbc7218cb827852679dc002" "checksum ethkey 0.3.0 (git+https://github.com/paritytech/parity.git)" = "" -"checksum exit-future 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6c30ec160f83d938faf4dd6fdaba4f42316f1bd3df76b902df2d824f47fa9db7" +"checksum exit-future 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3eb114289d18fa304918fcfea25921de74e37949a6d0609a3e523ae92e85e452" "checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" "checksum fixed-hash 0.1.3 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)" = "" "checksum fixed-hash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18d6fd718fb4396e7a9c93ac59ba7143501467ca7a143c145b5555a571d5576" diff --git a/polkadot/cli/Cargo.toml b/polkadot/cli/Cargo.toml index 112da94ee371b..10706944001a3 100644 --- a/polkadot/cli/Cargo.toml +++ b/polkadot/cli/Cargo.toml @@ -26,6 +26,7 @@ fdlimit = "0.1" parking_lot = "0.4" serde_json = "1.0" serde = "1.0" +exit-future = "0.1" substrate-client = { path = "../../substrate/client" } substrate-network = { path = "../../substrate/network" } substrate-primitives = { path = "../../substrate/primitives" } diff --git a/polkadot/cli/src/informant.rs b/polkadot/cli/src/informant.rs index c588d9eca0f85..6b43d4ffad717 100644 --- a/polkadot/cli/src/informant.rs +++ b/polkadot/cli/src/informant.rs @@ -17,7 +17,7 @@ //! Console informant. Prints sync progress and block events. Runs on the calling thread. use std::time::{Duration, Instant}; -use futures::stream::Stream; +use futures::{Future, Stream}; use service::{Service, Components}; use tokio::runtime::TaskExecutor; use tokio::timer::Interval; @@ -29,7 +29,7 @@ use client::{self, BlockchainEvents}; const TIMER_INTERVAL_MS: u64 = 5000; /// Spawn informant on the event loop -pub fn start(service: &Service, handle: TaskExecutor) +pub fn start(service: &Service, exit: ::exit_future::Exit, handle: TaskExecutor) where C: Components, client::error::Error: From<<<::Backend as client::backend::Backend>::State as state_machine::Backend>::Error>, @@ -73,8 +73,8 @@ pub fn start(service: &Service, handle: TaskExecutor) telemetry!("txpool.import"; "mem_usage" => status.mem_usage, "count" => status.transaction_count, "sender" => status.senders); Ok(()) }); - handle.spawn(display_notifications); - handle.spawn(display_block_import); - handle.spawn(display_txpool_import); + + let informant_work = display_notifications.join3(display_block_import, display_txpool_import); + handle.spawn(exit.until(informant_work).map(|_| ())); } diff --git a/polkadot/cli/src/lib.rs b/polkadot/cli/src/lib.rs index 66723b4ab8e00..26fbd15336ae9 100644 --- a/polkadot/cli/src/lib.rs +++ b/polkadot/cli/src/lib.rs @@ -49,6 +49,7 @@ extern crate slog; // needed until we can reexport `slog_info` from `substrate_t #[macro_use] extern crate substrate_telemetry; extern crate polkadot_transaction_pool as txpool; +extern crate exit_future; #[macro_use] extern crate lazy_static; @@ -80,7 +81,6 @@ use substrate_telemetry::{init_telemetry, TelemetryConfig}; use runtime_primitives::StorageMap; use polkadot_primitives::Block; -use futures::sync::oneshot; use futures::Future; use tokio::runtime::Runtime; @@ -273,7 +273,7 @@ fn run_until_exit(runtime: &mut Runtime, service: service::Service, matche client::error::Error: From<<<::Backend as client::backend::Backend>::State as state_machine::Backend>::Error>, { let exit = { - let (exit_send, exit) = oneshot::channel(); + let (exit_send, exit) = exit_future::signal(); let exit_send = ::std::cell::RefCell::new(Some(exit_send)); ctrlc::CtrlC::set_handler(move || { let exit_send = exit_send @@ -281,16 +281,16 @@ fn run_until_exit(runtime: &mut Runtime, service: service::Service, matche .expect("only borrowed in non-reetrant signal handler; qed") .take(); - if let Some(sender) = exit_send { - sender.send(()).expect("Error sending exit notification"); + if let Some(signal) = exit_send { + signal.fire(); } }); - exit.then(|_| Ok(())) + exit }; let executor = runtime.executor(); - informant::start(&service, executor.clone()); + informant::start(&service, exit.clone(), executor.clone()); let _rpc_servers = { let http_address = parse_address("127.0.0.1:9933", "rpc-port", matches)?; @@ -312,7 +312,8 @@ fn run_until_exit(runtime: &mut Runtime, service: service::Service, matche ) }; - runtime.block_on(exit) + runtime.block_on(exit).expect("exit future does not fail; qed"); + Ok(()) } fn start_server(mut address: SocketAddr, start: F) -> Result where diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index a45a87eeb38af..7d0d696c4c6d5 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -153,7 +153,7 @@ impl Service }) .select(exit.clone()) .then(|_| Ok(())); - tokio::spawn(events); + task_executor.spawn(events); } { @@ -168,7 +168,7 @@ impl Service .select(exit.clone()) .then(|_| Ok(())); - tokio::spawn(events); + task_executor.spawn(events); } // Spin consensus service if configured From 61c21b383ecbacc8b8327d6cb6c60bdeb8d640ae Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 2 Jul 2018 14:33:35 +0200 Subject: [PATCH 094/103] update exit-future --- Cargo.lock | 10 +++++----- polkadot/cli/src/lib.rs | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0b25697e7ce7e..af81f39827567 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -617,7 +617,7 @@ dependencies = [ [[package]] name = "exit-future" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1405,7 +1405,7 @@ dependencies = [ "ed25519 0.1.0", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1451,7 +1451,7 @@ version = "0.1.0" dependencies = [ "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1561,7 +1561,7 @@ dependencies = [ "clap 2.31.2 (registry+https://github.com/rust-lang/crates.io-index)", "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3269,7 +3269,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c48729b8aea8aedb12cf4cb2e5cef439fdfe2dda4a89e47eeebd15778ef53b6" "checksum ethereum-types-serialize 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ac59a21a9ce98e188f3dace9eb67a6c4a3c67ec7fbc7218cb827852679dc002" "checksum ethkey 0.3.0 (git+https://github.com/paritytech/parity.git)" = "" -"checksum exit-future 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3eb114289d18fa304918fcfea25921de74e37949a6d0609a3e523ae92e85e452" +"checksum exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9aa7b56cef68c4182db7212dece19cc9f6e2916cf9412e57e6cea53ec02f316d" "checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" "checksum fixed-hash 0.1.3 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)" = "" "checksum fixed-hash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18d6fd718fb4396e7a9c93ac59ba7143501467ca7a143c145b5555a571d5576" diff --git a/polkadot/cli/src/lib.rs b/polkadot/cli/src/lib.rs index 26fbd15336ae9..75fd9a598399c 100644 --- a/polkadot/cli/src/lib.rs +++ b/polkadot/cli/src/lib.rs @@ -312,7 +312,7 @@ fn run_until_exit(runtime: &mut Runtime, service: service::Service, matche ) }; - runtime.block_on(exit).expect("exit future does not fail; qed"); + let _ = exit.wait(); Ok(()) } From 7dbc99c1b032456d55b13992a02b5fcb8aed36be Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 2 Jul 2018 14:38:36 +0200 Subject: [PATCH 095/103] remove overly noisy warning --- substrate/bft/src/lib.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index 9113818c77072..e44a0ff36ec6a 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -279,10 +279,8 @@ impl Future for BftFuture Date: Tue, 3 Jul 2018 12:16:02 +0200 Subject: [PATCH 096/103] clean up collation work a bit --- polkadot/consensus/src/collation.rs | 20 +++++--------------- polkadot/consensus/src/lib.rs | 25 ++++++++++++++++--------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs index 16dde50d10083..c3953d4332351 100644 --- a/polkadot/consensus/src/collation.rs +++ b/polkadot/consensus/src/collation.rs @@ -23,7 +23,7 @@ use std::sync::Arc; use polkadot_api::PolkadotApi; use polkadot_primitives::{Hash, AccountId}; -use polkadot_primitives::parachain::{Id as ParaId, Chain, BlockData, Extrinsic, CandidateReceipt}; +use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic, CandidateReceipt}; use futures::prelude::*; @@ -55,7 +55,7 @@ pub trait Collators: Clone { /// /// This future is fused. pub struct CollationFetch { - parachain: Option, + parachain: ParaId, relay_parent_hash: Hash, relay_parent: P::CheckedBlockId, collators: C, @@ -65,16 +65,13 @@ pub struct CollationFetch { impl CollationFetch { /// Create a new collation fetcher for the given chain. - pub fn new(parachain: Chain, relay_parent: P::CheckedBlockId, relay_parent_hash: Hash, collators: C, client: Arc

    ) -> Self { + pub fn new(parachain: ParaId, relay_parent: P::CheckedBlockId, relay_parent_hash: Hash, collators: C, client: Arc

    ) -> Self { CollationFetch { relay_parent_hash, relay_parent, collators, client, - parachain: match parachain { - Chain::Parachain(id) => Some(id), - Chain::Relay => None, - }, + parachain, live_fetch: None, } } @@ -85,26 +82,19 @@ impl Future for CollationFetch { type Error = C::Error; fn poll(&mut self) -> Poll<(Collation, Extrinsic), C::Error> { - let parachain = match self.parachain.as_ref() { - Some(p) => p.clone(), - None => return Ok(Async::NotReady), - }; - loop { let x = { + let parachain = self.parachain.clone(); let (r, c) = (self.relay_parent_hash, &self.collators); let poll = self.live_fetch .get_or_insert_with(move || c.collate(parachain, r).into_future()) .poll(); - if let Err(_) = poll { self.parachain = None } try_ready!(poll) }; match validate_collation(&*self.client, &self.relay_parent, &x) { Ok(()) => { - self.parachain = None; - // TODO: generate extrinsic while verifying. return Ok(Async::Ready((x, Extrinsic))); } diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 2d06654b5ca02..7ab8ea3038a67 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -291,16 +291,22 @@ impl bft::Environment for ProposerFactory debug!(target: "bft", "Initialising consensus proposer. Refusing to evaluate for {:?} from now.", DELAY_UNTIL); + let validation_para = match local_duty.validation { + Chain::Relay => None, + Chain::Parachain(id) => Some(id), + }; + + let collation_work = validation_para.map(|para| CollationFetch::new( + para, + checked_id.clone(), + parent_hash.clone(), + self.collators.clone(), + self.client.clone(), + )); let drop_signal = dispatch_collation_work( router.clone(), &self.handle, - CollationFetch::new( - local_duty.validation, - checked_id.clone(), - parent_hash.clone(), - self.collators.clone(), - self.client.clone() - ), + collation_work, ); let proposer = Proposer { @@ -326,7 +332,7 @@ impl bft::Environment for ProposerFactory fn dispatch_collation_work( router: R, handle: &TaskExecutor, - work: CollationFetch, + work: Option>, ) -> exit_future::Signal where C: Collators + Send + 'static, P: PolkadotApi + Send + Sync + 'static, @@ -336,10 +342,11 @@ fn dispatch_collation_work( { let (signal, exit) = exit_future::signal(); let handled_work = work.then(move |result| match result { - Ok((collation, extrinsic)) => { + Ok(Some((collation, extrinsic))) => { router.local_candidate(collation.receipt, collation.block_data, extrinsic); Ok(()) } + Ok(None) => Ok(()), Err(_e) => { warn!(target: "consensus", "Failed to collate candidate"); Ok(()) From 51470c13aadc05b0fabe7ca2f18493391586ace0 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 3 Jul 2018 12:28:43 +0200 Subject: [PATCH 097/103] address review grumbles --- polkadot/runtime/src/parachains.rs | 2 +- polkadot/statement-table/src/generic.rs | 2 +- substrate/bft/src/lib.rs | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 322436e43e943..d272d32e57a1c 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -125,7 +125,7 @@ impl Module { pub fn register_parachain(id: Id, code: Vec, initial_head_data: Vec) -> Result { let mut parachains = Self::active_parachains(); match parachains.binary_search(&id) { - Ok(_) => fail!("Parachain with given already exists"), + Ok(_) => fail!("Parachain already exists"), Err(idx) => parachains.insert(idx, id), } diff --git a/polkadot/statement-table/src/generic.rs b/polkadot/statement-table/src/generic.rs index 78ca70007e9b7..8e7fa48e2eb60 100644 --- a/polkadot/statement-table/src/generic.rs +++ b/polkadot/statement-table/src/generic.rs @@ -611,7 +611,7 @@ impl Table { if !context.is_availability_guarantor_of(&from, &votes.group_id) { return Err(Misbehavior::UnauthorizedStatement(UnauthorizedStatement { statement: SignedStatement { - signature: signature.clone(), + signature: signature, statement: Statement::Available(digest), sender: from, } diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index e44a0ff36ec6a..543a505f0a3f5 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -16,10 +16,10 @@ //! BFT Agreement based on a rotating proposer in different rounds. //! -//! Where this crate refers to input stream, should never logically conclude. The logic in this crate -//! assumes -//! that messages flushed to the output stream will eventually reach other nodes and -//! that our own messages are not included in the input stream. +//! Where this crate refers to input stream, should never logically conclude. +//! The logic in this crate assumes that messages flushed to the output stream +//! will eventually reach other nodes and that our own messages are not included +//! in the input stream. //! //! Note that it is possible to witness agreement being reached without ever //! seeing the candidate. Any candidates seen will be checked for validity. From a2c200911cc9ecb72fede45e990a0f8dbed10427 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 3 Jul 2018 17:44:58 +0200 Subject: [PATCH 098/103] fix lock order in protocol handler --- substrate/network/src/protocol.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index e7fb5c86924bb..7eaedd679ab08 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -49,11 +49,11 @@ const MAX_BLOCK_DATA_RESPONSE: u32 = 128; // Lock must always be taken in order declared here. pub struct Protocol> { config: ProtocolConfig, - context_data: ContextData, on_demand: Option>>, genesis_hash: B::Hash, sync: RwLock>, specialization: RwLock, + context_data: ContextData, // Connected peers pending Status message. handshaking_peers: RwLock>, transaction_pool: Arc>, From 139195d32826221ecd95d951b427aad5ebb0cf61 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 3 Jul 2018 18:22:42 +0200 Subject: [PATCH 099/103] rebuild wasm artifacts --- .../release/demo_runtime.compact.wasm | Bin 424611 -> 421802 bytes .../release/demo_runtime.wasm | Bin 459908 -> 456688 bytes .../release/polkadot_runtime.compact.wasm | Bin 461092 -> 462294 bytes .../release/polkadot_runtime.wasm | Bin 504865 -> 506102 bytes .../release/runtime_test.compact.wasm | Bin 15636 -> 15633 bytes .../release/runtime_test.wasm | Bin 16187 -> 16184 bytes .../substrate_test_runtime.compact.wasm | Bin 20275 -> 21230 bytes .../release/substrate_test_runtime.wasm | Bin 22361 -> 23463 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 0576c78214335e11de810a498e293afe06988c8e..bab29a0d8f43033d41033ba1f57151f0f4ac866f 100644 GIT binary patch delta 70585 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

    d;%QE97f^60h894Hd!nKzj#2 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 delta 72358 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�M7xUaov!Mp_9+Z%h3^y4 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%0Aa9X=n-Gci{+n>_?mgzEn?lvN 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 z PlQ{xy;n?0wZa$e!o@~S3oew;gR)|}#N%M0hsnl;atyhX0pY5t3H9Cbe}BjZcc zigR*v$};lGa&z;tr<4}7r-P5no3swpW4pXwOQpK)@@B0gb=e_TXr1W!9rBKd&bMlX z6Ncw!Q{8^qg3j-h@w9NK96_V%WDYs&o)^)}0HT z-ZVeIG$%K|B)5FZl#IOm;)1l*T&$h*rYB@K>h&B(%>GZx&RROndJ;oy1|5A;c64Rl zt{@=qF4>YAKP5|XJaPV0lC*4!e;VPia%lL|GGEK3B~Qz)uDn~!+&lLpHy}te%T3)S zQRcSbMmO>McIjBo|G}PdIvmSwb+d;J*nGnIndQBxXx9(WvR3G73BRv zwxXf?WgK!|a|d}rUj)NPOSP&EE%Uh1+3 ztFis)=RLBI)}OMU0pJ7Zx@Y9*r~=o_@|iPd-B3P|UVld35HYBn!Amcs>-NZ0nzvWx zYM0aFdu4y^3Oc`6X1WGfBSU_MiDUqmS-V3f(S!SBT*Q#Ys`Yv1yO;OLGHodJ{Q-z& zxV2$4dB40u8%~?|%lq^Z>u_#ozidXMo|TKWk#yo&xjpjAd%1-4G*x^j+Vh;8q>ZA+ z2hc5}sqnb`k+Kh>q^r#P9?#=`41K>%_M`jwek{ekCi}V~lIhNI1?Iz)L$bX#p6)#)$7mDilS6W>b`AA7EDK>92TYXH#lt9Z62%>n z#oA<=dj!2)NZXIdM-z+U=3GB_USUc3wH1|x*H_+HQCU_@`+t-b^u`M^Nh_f*Uy%1} zrA+&CnwCi*xOC?1ayhej#*A5|Q^b@x<>l8xX?#bvY?Gc*UdgIf;oKP&rRC|lQ!{fj z({i&*GK-5#iZgR_(hH`N{*vsVRgmX>boa2A0Ms-pdd%W?|U9hELhKMMbNvjQotwAu8=Q8~(a-B_A;M7E_tugDB-4$Xf>cGu?8 z)>q^N*Sv{L1({U$iflqDugbpK^;G(*EOy;67%wt&sQ6b<+9$7KFZM>p`Dm@m?1oLR z0hpW2```F}zIi|5818ST;$z6Vz)ZTpNej*UA+O_p5!Jjc*J;({c?aEILkGW=po4d0 zoPG;>Joz1&NB?<8w!j&{dp?n48P}2V*(JrfCFNOV`RV0pkSjR_x6$42%E{X8^!q3B zUb^9*D0eaS`2no3neXqQgFne@zlZy~ z%=;63e>WZbMfTQ~(u7~-DD58F{;Mp|?*)m!@e5d`2hn{<(Q0YK1z8b6S{UD_)?UQhRn+=@*@j}?2TQKjMu(Sw>UY^R;-O2XyW+F+ zbIUTaO7lvyGD|Xwvr7uraA8>yYqf~g2`E40X6W;_0JQ9@TiTu0vfD#nx^!$gwsOLl3h`u-_i?G7_%!hI- zR#;D-l;fi|X|JkmxoNcgT~M;hx9uZYt%xVFq%<=#J)CuQEs;jR=I4k%(v&(F)s%*dOPo|~RCC95R6Uxc21A>s<4+r?~LRwC#JK?P+TLjvN-BmX$xH90Z+S zTAEo}nwC?r%cSa8z5@bxL#`<}8=nVh`uNS%xU~G@Ebi{|Dfwyn+4%)~OjddOJU)0v zD>Favd@sA`d+pDUd%NfVA`fdTg1dG7+cJ`xpOuyHysaAB_nb`9Uw{}! z`7KDj9{wdJ#)RH5045UerG2%Qm|6chvY9{o{S0 z@N>RgNgsRwaL-ceuQFXfhk+i=YEKhCkX@_4&|FYA=T^+B{8Ec9zJA`+Sy=6;D4+Y4 z=B}v3UGa>Hx#fi=7*?l$t;H74o;~BHLMWopO6OLTexpH0Eib)(o|WTUt>Ki4%Aila s(_(MHV_7lO*22i_@% delta 76712 zcmeEv2bfev_HS3+TRo|JrYFDz((NV<83c(EE;$F+fQV!eMzW}=K#v)9MR3GIR|Ewl ziUgrS5J6B_MZkn8xL_7VfmIaq`<=R>!_1)n|L(r`eec_KnR{==Q>RXUuWoUU}| zy_M%qsldatJi|O})-WwhZ+duEIP94>x$^p_MzfOVd0|P2XO&dsg{(qJd)|RnEGg!d z@pmE5%dV&$XCE*R*EEku_iDOV=Oy29Gt9N*WIZ{VtN$mbd%e0B|9rj_{O9%P8M>}} zbfjsTp5aNxw+BhyjDV(R;x)sQ;nmTg?)7+ere}Erx}Kiy2?Vk{*{G>|@a?hw%R!eq zl}`3@UH5r?*8ftIbsy?5JyrLX?9eKvoH@MHla};4%P9Fks}b&;IrWC?rwtu3`r2_5 zhu$#prg0NTd4_r?jGi!Z!eq}#?}Xvw$4?sR8KsYzI(oEcblUJ6rj4C6b=;gctizj^5B>C>i;n|S@Wk)8$2KYIG;kvB|p$~?}} z$Bdh3)f#D4Tf#DKM8c@y(V|0U-|Pz@4CiJvc~gH z$@;4KC7)fBUS=;PjfObz4;|7CkRKUYv*h7XbxXbV7;BFjQdY}FY{f&P%Ngq6(bVS?qn$oqP-=hA$p;FeV_t)I&t5x;KS;A1*II38AT$ux^SF*D{P5QiX zHY?weoc$;wLqs&iYPt zip^KW<|KBuQx#h@F^IyuCN8r{ex53PM`Ga}7pZYha@w4uianiJETgF!=Op@@GPxXz zA3eE)Ekf=k5mL2I{LGWEOcaLcQ=FM;JEdprj3+_dtu7&vv2#iXbjqeu*OjL_aNeol z+@1*MoQtX01h?32s@RK(#g40DJErE_OgD=p_~OJ;4V&kqG2iu0savVkZ;7+g!Og#! z@^4RUWu0nej$7(RDz!SX)NiWPF}Kw9RO*?;Qh{j>EK?{yl9*rIf*>B^mYPVVo=hxt zphX@^t)50@S5J86B?p@|DB01f9kO=aNUa=If19+X z_l%ny7)Mg?2NUrXR;8|SOAVt^cP7F(?#?@3~MPiM9s#JsNPVWP$ z)T4=|hEJ!qZdHHZXj8`6-Yt^j=wW+c?y4x zTOBz15FFnpVqtE(GWsR~x9wJkBfh+~olTxSsfl+Jn+Uh3POq8abkvPX9Z4)TZw8fG zt^TqO^nQFssPwopXI^V}W>Pap6Pr2Mp&WRBn(4q>XO;tRJ8I&y#3pu_a zP~m+fWP#eciWY*1*0a|s@oix-@C1y zEwWmaOsSSv(){*vte)`gPL;K{cPrhh*>wyc8-GU`m?asu_l~w~#YVGRmvpvv<2{#m z&~04**L3`^>6oAuiCq3`Ix4mOU(*rm$p4y-SWW-ebX1;(|C)}<;&BbZ|C)}Ci())W z|1}+9cE(}k|0B~eGpVHF{X=q2{T=o~bKcV6CTq?w!Q;@PlFWB2r<8OFTYG<8#g|>YMi)0v63cx?)Vq7pILvw z+JBH8+*nTS%y$WYM>pPkA<+J?_NbEZ#+qff;B@fsDRMzD{{RR7QT+dFjsGEn|CMon zx}!_kQ=_Q2SrF?86lN525}ybZqw<{&ynt ze*solasR(Mi~oy`?S2#G|9@yA0*^Uz&R{NCBlso|!~gLaQMpiNI`n0k>4Cr5I`q4} z5UhdC_7}vw+ii@dHTcFy&pyk2-_gP!EBw5oz-J|web+GibGzPB3QIEaU*M&Z`QJ@; z%w7Z|k%yp}2#11H{~hr;8eOa*6@lYZ~XLW&UXZVbDoS| zd2{Z=W9Jhk?vMv?362=T~P#9i6%o%Q^8<~Nvn?7OZSw(wvb2Ye-fVPL} zd1#SbpT+6}3)M7M{KrMA$lo<~726iMN@rK5vTbsGIvdZn%c>cyHQOYw%3$-^3-WXZ z>uDucl>Gy2Ig-u?SkG!Z6m-n=1)R4e_bnr^Lk`bmquGmcZzg;D4?y`x7ORIIQnT60 zOSWOq*oeijO;01wR{Cn=@t9fwy%l>xX+k^KvTH<|qGq%%8|HVlv zY0h53`#j2?-GXI0>HAtBUQwmDx024_v9&d;A$PQ3sq#!Km5l_-M(x~4pbgVpzg<~y z$=>bQ3y$!JFL2sqm1X<;SSmQ7b9*+j+)@~xJkg#Fy#Zq;8|rL-C)U4gXl!sV@5~02T_6U# zkqUOa#` zW{2dM0jwE&UH)wVJHSD1AI@ck{M6s&KZdY|fN;;HY+xD5H~od}Ds&_^BTFqQ#*T~C zUr3J(yNnHDjy?p_7q~*58NM>>X>sjoZh6f}i76jVPbLtAlVu=~#C;b=nyOCrn4v&* z^I)D)g4_Cqjg<@6y>KpC4i_284p519p{neHp9q%9O^c~Z2`fQQUAv_i5ji9ux2qR4m_C@*MU7U2*?@e9 zCX?-1r%8tkBCts=8O$Cm-A@GlRA;g27U4(yL)jbUNMuV=L~@6-J{K;ra0L6Z{1T3E zjJz}oY+5##+hPDhHeX&ghPh^1yfm>({W^xt{v#|!_Fc=msqtoxgH*sYnB!PeU~k=I zRv1}0jxAA{9j{{-QRa=;u{Oxua2>lpp50v@GLjO_)yU}aP-=wIgf2dq08LmbInrzr zt5`Y+tYuFbi}xJXtT2fG2lO}T+J0C0&rAFHHM`iBO*&~WSe-|^AIa-OKt{%LU8W6h1G)4{puFjXXVx+)xC8Fjs~!Uk@>UO z%bXA}_%;@@QD03ix((P`AK7pl+o7;fMyA|%2fHJdMkn5*g!96C*d_9#J6W}^4%sVV z;LZ&R5|=G$O%lbDFnm!dKp&JF>2??USpnf_foMmw%I?3r+%cPFH!QdRGTnWV-)CdY zW#i1I<(~K9fW?7GgZo)!cTX^$=xu#{`-AM(SkUIoV-54ylLhA!FxE{(axPbbqOgdp zDQ93Y#q>WY1`=yM4@xniHj-bM$2ygfeDy=Dz3cr{Gor^}K2ALUdvjyw8eK*zm#~iI z5VVbEIiFp1!Fj0j2DI*k^b&cv^j3^E9|^kDOzD?RXj{%$u^(a<+xN8F_m-V-?u3$l>km(Ey&4UuV0L za+cBpkXDA8wKCMOGL&83VRhJ-kxB2c?z;XC$U_eJk!Q;T@39f=?MRdNS%kB9v7O}RQgOMUaKCFji15JWrrg>J}2RDSf2iZ zJyPv3k)a_9`A!ki{FUJr+bLkCnCo;p>~mNyJ;}aB*#%#+tJ%BqyDtIaVOjMnb_*Vl zeuWjmVR`l|7EEZTVySkToWcU?uv~VE1@YKxeYN?T^}yF%U*k;D;mCF0up-~+?aCYA zhtc(ty~f$EQc^LiPKs5=_a{;^j4GvSAtloKXZE2EzL;NyH(~qd_v26@^Y7=C>TXwy zzSyRZt0mTckGqEYtF?xje~1rf@5zf8pN6&Ia>j$8fxk0e17F`TUJZHaoL`T}?VR6? z$1j|3$78FezMAU%GL)RH^SW$LWTVbMWO&Z^@*E8-!c{4}8CL!BL<%2?XQWFiKgrp< zkw$)gj-#KN0p1M72L<>os3zaZLEu>A{)&7e z!;hV1~ ziavQi&%tA7V}1o5xlMR|l32+C|)8t0MC+;%_mwJTk5szlF1vkx!cQ zyOsVK-;&oM4Jljli=Z4|ZOP|q(UvD)!n@)tatS75rTp{~ep@sTy;hL(+VU5XG@u;_ zaHV{5suq$vujF32x*bO-n0&b%4YZ8FARE(%<0B|!dFIj(AY}(dT(yZTf6g_Rynt7!yc+?N>7D^<~?zO zbB!F@lb^N9#k9A)S3-NQ$G09y>dPNvwl^v{s2j=TjY@?#%8yxEd>zk;yw(rH!?^9a z${D~PmbbS9K4|cf-2?dBj6D-s@E1NN2AM!uuB>+@=t&{0R!Rm0=OIr~Kq0PT1a&WA z0Oi+#gv>~ztN48CBRa{s^6VhK$L%)q>D7D~Rp@#R?<==VoOLz z7}tE{r?EVnAOnWA}mz;=78xen0;qiMre1Zwn83%f?s9Rx*i0aMC)EqdvaiFr0*jBVya`c zkOLTtL2>{?+A+>^|xBP%<3?*1{}R!o>;>rEd1%ufJfq8<&n*6c|OM)_Ru;$zHFfTujh5p z#x3jlTE|7Z!XDNddIIEj8z4W{%j-7q$IAgZ!vz`qYk^!KyKdw&oIc|s3*_OApttpr zUpDf3u7ws~qRnP1L7x1V%WfiCV5odC!js%ZNa>AN7q)ocK$%-I(zk_=b9(G`i~Tqk7M<`EDcHu})u7VQJi%=l=ym*(={iAnLs@%AXPsgMFODb{jOHhn^B1>Q5aN+Kek=?3+Q@i;T zqz>7`N0TkF=M`1v z=WSuH%zPb_gwIv4^Ox{B;Q&9E^ER1M&3PgC6Wbs4iA@*D8xL~q*T{tj`ITA7S0j%6 z6;JaeSXk0~h>ywnBwA6kD#AK0KE&a3iL5`wXR$!>ZmI#h)vRr3*9AV1i+_O_`pcWV zlDC|^hmP>aeC)Jr@F{PN$JkGKcXm3m{!_k_;W_nlUSF_}?9I%k;CnGCT?NA!OaNypfl6@xw-tL(lSH6`bo}rVi5?`vs5EzzPhU32n}G zJeXW~mRFOXoZ&U~wDgUosmC&&zshK*fPGzQ>D;J zjtg$6RS8Dlg2Ywecx1p2{OjlzT{5=lB0YcNU3n=qM=%8mh|~Untr1jSr=mzM@bne7HsmWq6I` z>yRASV_`Z8#W4;wQ#1~ov8}^BE$}AHzp|nbH&8XqsV+y7w}?8!PD^YXR2?+xwgDvA zZGh6KQI8pbe^k90z;9!kSXBa34Cow6p#s97_OTRggI;tDwg^MT$UPaLl0u#wwCO07 zcQEGymo$n{G7N6XR%sQ(EsMJ%=#*X&Ok{IE$%RWFTrESdsS&QWi35E zaC3$O(UveEDZ)21*WeWZGT_O^AqoMDHiYujUd;%n8z`L)f7SmU0$38D9*fjcZ5g5{ zj=&cxohUBJdIMQv4ive2%*t@$<10YK?*Wb26l>N;av`r_)j&i&O`<(f9yYShZnA06bmkS+ z@pxKzX!BD=`v;=m7#&TwosToI_M0%0%);?tXmhScMZVzZ2$UOkxEuWxx)Oq$vr$Sz zZ-gmOE2N%EK+jIXc}^wJwUcm0C7^FB0qz?6ErGx90JA7P;qf&0gbD9zV_FG}q~;hE z#?_n;0|PJx{H;jP>v*QO@Gz9clNFii;f+Q^#L%}I&kwnY$ zB-29-i3iQAl7f2JJntzo7kF)+PDA668bGTO72shIRFs=q#a2}##E&v`A|$U zwTk2n5)Qh95?ytMMgmCwLM4YSSwO|nXC~6mBosG_LRm;YA5F&BKD(=dN@^Xk^QJ=( zpkd%wNv&jCYI%u*l$H&qVc3{@KpTK%Vs0PDL_q4Z=n?;2QzgUh6vW} zAC-j6mV}@p;unm9h5~G-88l>r#j=byfn~e|3n#i&1QbTic%C5X|FivylEG6hkg8J0JlQEfK-!uZq7dvKKEX0TjHAH93 zO1Ri!B5cVKcg#?=_LxDECRh1gz8w%8srH&w|7nrvacK}e@qZ;f5)-b@MZ%Phg&5+8LmC{+?N zDI_>R#Fl`f=FLo)IW}PvNGdJgE@q8GCG7;*Hj&zpd(3@KnmarX;mRuK;=n^v18FGj z)HJ+GwmD)8o46Tij>Kxud_(Z+3~F9}AUW%7AV;NK!;Ynm}eD=lWK z-83+&qZKI4nr&?|YJ?Xs#jPNW7wVZ*f@58nClZBvvL)10Ak+^zLOm5i-Sj}FrCNd= z51RK>G-UN^?sMe24+(}ER1z6$#NY}!Mp#L;Bqh?_L}i#IDS2+EfzwFj(wBjzwqQg_ zF(TPTSyGJnwi1Ceh+J2AyGR2ZlnDM)GXe99x@ znL>s6?HR$VCHQS}4THwWaYy`}?GPYwAqXIpgL;^8 zyj6(Hg7&RwW#KK?kw0El4WQ&%d3eirsu|uo+5*;s*o9t=7FvH40)ON=B}ju*bU#3S zInD=F=x>vn;xk8o<{N3M4D?^Ft7I#|EdOW4GJbYB9IucF)Rf|SA_qla z1Sy6?kTOs-poIQK4ai3V{7*sr?*%xlBvdJgp@V4ZpcBaEgz^ECknk!5TUl>VKGy0M z>rI<1r~tGKnIftxeM7~Nf#H5by%6oV-(gZNHlt$iMRG+6vIx(H*jIaK+tS)90nv_Z0I3^U4H?s5+F$GgcHY*6yrXiLXN|r zyAs;uFiVGGspK(05$GVpNrX>B$?UmGps&H-sLT%A&arr*t=Js`j-+uQ zL1qVBneDe^w*P`MI|p4uW(R_)mdy5%EOtC7Fb^!;g!~ZeME7KClT0Nihc&BC2Jt|# zMt&3}ySkJ8PMqMnK2)-DeGo%XPI_!z<@)d%K5~7iff+O~cob=2oNihCO4^Yu1UGia z0}M!_1QO*kB|F?Tx}vF%d^)j33|hKfH#e>Ua0qKdllH4m$PNc&o1mN<|)B}w&f z=#9jTQooM>g3w|M7*Kw4^WjSBK)onoq&_OEkEq82Ifi9KK_wB!ZLBJ>Wuw|bG%fxe z_Oa!FoU&KD1T4RHuhte1_+&=mF<_rIOpf(w+xZ>0MQZuA9gLlmpQdXg*qyR_hE@Y# z6Ed_p)RXN%Tc8|Qjf>tfX z?OATDpxs3P&18M{vw)k2r|%eQN3b;IZ125idC!48rWPca+OCP<7)IiiYX#6)3ODR65! zwTvu4?(9M7Mg=#1=nGXh9l1{X$K2x}D#8^jGPfdw=zvo#v!5RtH8U>5Z85Nz3~f)E z=_1ztUW*Km8FC^sFoFtB!=^PRhyoW18hS37dXQ9ZDkicP@9CLE_Jj+?4C%)y4re{wA70IkO%6a_#Ua(*DlR>=Zh#M=r=blB&gB?cgab} zMhh?1*KWh3a|7*qJhn8@`mw*tJD-soR@s58(ka zp?O7}uJY&R+8EjHVr>i(KuTp~UklonqgsF>&&f+#Y7;@)t6OTd@%2_q?O=Wax}xZm z+gfSuQ3|8KACG%lt4{Sc+5(&U^5o_=+D$1g{v*vV(HanGjcThc%e$Wjjx~J)5176i zO(gAv0I9)t+7xn#cRY}h3t7XbSe=P?I)T!*-LrcZG z>Tkj)XmHqZEk(}hp;boe>K>pM%uNsNX6#Vi&{M09uSa`oJt}`hs4#dT?|}UTPPP#i zN)U`80pNe@sXFY@OB;ytW%b(z>D79xp{vo|(ieESySJ7N3G!HPtpM4ZdTSH#sNP4F zLgBh{P9H57Nl#lzpZC$Ind*I20f1USqpJ)+|JGNvu(_|+9R*bX_xHmL9qOfJA%Vu7 z;nN69u=Z?B0fBiErD~!8uy~PE@pmgp;i^Y}Egk8q=;Z$BV~xDOzg7oH3cTa}6?i}N z*IHV&?U}U)TUWk2K&y`&{Zg&3Q)lL-TGKvf4gs0&$(TcN0=+nHOYX?)u_eDa5c{>l zYDNBfsn#3K_xy`?10Fm7q7~sWe3xEP&Z;IF%1M`L9c=R6pP4|}h9(;y5IORx%b~^2 z$>WzR;W7LQ1@@dPw2|ywX` zq;hr-(yoCp2wtu9T-U3$lPJ=7u+|xm8wM+ha%`}6AHJ@=2CCzn>@fsV32JGGc2f3@ zXa)HJieK=UpYOzIDR7Y%4%mV)XUp3nTK)339@FftM+P_CJ{M9dO_sC!rq^qeQ234KyTX>Ejd$IRL z?hkBuK+o~OBa(IZc3@I=?CyQC<6>)zxR@b-h4mg6odSSp0~xz?W-)_Zn1>g57}rtJ zz?TGXq-rPq0WUirS<^#*fXhc;)!OpNHrehl@_WvecOwuOz7h9@Dh^lcu~Ipni80K`_3s8|e66Q9l>JW!e7Ncr_}{(wNH1?k6zkN>+YXQ0dwDN~ z*n6j!cR%}^e5$t>d@8+tyd-^x_VJPkf3}aeeT?G!p^x{X0rrH@B-rzTgPNT7{%}x} z;%YFO=6nI(@s*4jSxm_=dSmAVrje`LWz*jJk8E|MK_A_h&VGorzFL1-W2-k0)o)H= zry{qE)z@)6>s_Zm#8GU=1ib-0PfgMU?O+ZutV& zud)-?Tu}x*QFF}_8;ReJ7bHpwR=Jo_K{tEb5LUMJ^;Tt%MBeY~ZO+)Ek<9+yRvZ}b zb*Z<2EtF#}^$uX?<(5mm7lAvzy43qvrDfC>2yX$rL6A$uUhHk-Iolifhg|#@@BECp z(E_Fsm@7M9=KUR&J74bY&i)p8;BxOF7P4vm1W~X}?8OjiMC^Cc6X8MOE4>BPW26lz zd)-^;+EvU8tS`C!N^h-DT+aEpuM^f+L?7s_#Ml$kxXN3FKebJ^zslRimBx=<<*mjR zMV`OP+nSLaL1uvrT5)8rQbwiDpE9ke72JgMjb;x(lx@Ra>t47vZZ zl`Gd?jn?MLlUI9B;PL8U?~|pFbIUc}`Hd3PzB$(tT=wLyi2eFdXI?pcoHtMQuPVqm zg2Jz$7kVIDAFL{>MrErOm90Cgiaa^@U8V3hy{i^CU%ji{PGg^RMB8-%d%Af&adCz# zY-xl+Rx{#Mt%Omy0nV6;R8x2Hmi$oM`iL<2=bE6`zT0_w^c)|fj%|T#BFpx(6l^7teZzwv6 zJ1AQgHy8P(;Po~VouVK`E^Q<_@|5?SX63>rf|UJ>O$4nVzHK7NknMl5s4vG}B*-*d zc9EckN3*8l3VXP9VZnu+V!_i}49(H3E?KQt4h9?&K& zGqvJdSG3I0~83LW5@YVY8@kJY;q-)7}d)ot{v&zUQA=`>B!a&0*Cvbj);!p67s@y>?4LEH2A4LI68B5 z84bL)FN5e0028q8bk~fu=qrv2oWje#OpMbp&oc*#27J@ga?L=n?p6YV%%Xgob+65azVdMOi459 zw@HDW3inKQ;5qrmV3Fq@9m|gK`y>#Fxj>Oswo%muIk7~-H#&&=ZxZrse-6TX5Qh=S zc05bu)1h#?EQF-qdW~q3aTJ;glZsg&_IN;UyGAtT+n<(SUn9Elx0cA}LqvU-IByyP zW<{bR+b@QQPo12|M?=LBcx9wHT#$S1)#2h^JT4m{#^Uk92r<(sDf^8SmD!5O_>tlr zPQ=q`jCd1eDqahozEj?PtswWy+G|CaY7DP4(|^*E~@P1pmCxz+aVW? zQ$+IKI6=#{QAG-}*Neo%3H~TNL@bt&$_Ai7Qj0_<3oXcpL*BdV`qnw@u9k!94Sk-ICoXZsB;&yiu&@yLZdRH;E<= zg!0ClL?`~LN~|G^=L((dIY_G<`O{6}Cblawb-K8Omzr`HC|e9Cl7Rai`TQ1fD?>XY zXNaLXp1X_1HyV3MZn#saku!HHNVGMK+V-(7j@W~Z zieW6X7{?fL13PXjVOREv+;xxGOyS{|+$U<;L#`oD%oSPkvHQdz81LuqgBC2N&X0=2TFp2e7px2O9=lh1M-}X& zsfT&z77}R}y97Gn36Uh{E);dT+`lDewnG86u!a}TER}w#pQo9#;fqDKJl;oSk`Pv^@c0v={l#%T1bKqopfgY945PjbFA^fQnW4RE);z`l0^&VxiqJDJmDk|X1hUW>Pc@an@2ONdV+Eemj5)Mu$*RBk(v_4=r zti?Q`q-Q$%W`&YF8nc)CnUO5(|6MCcPVqCJo@VMLvyv+}29K(^QQCkGrh;oV{7XY< z45vUN3bP?Q5JwouwTBQIS-e8zQ$Q_3ygcygqc1GpX#bL#;og3s3?7_Ttak)l$2f)Vl2hp-6t8b2wI2@)1ac z3hE8r`+`h9`2?$4!&elfUphowr-ra1IOq^pMCIJ-5T7OYW*V~NPq0nkOPl)n?ywST%izzV$_2J@uKZa{Bt}uYCP#l3pIu;;_x>;F1PkKqUlC94*sDW+6?trt zyy;f}g1lwFiiwHt=|$P{k|Ey8;t92`nl!?jo3_r{Dg|;3x%g*MARis#O>^OReu%dV zJO9W~Z)KS`)Jxk;1BZI+lVk1fq26jy$6A`}Sd&|Z!Y^@7o*wEYJGjm;Z!MNC`w#Qx z*YKV`ZXg>K7f*8`-l)Ok5hyOA|uizGVcH~#DX5X4s`IC zb|2v8waJk#MhGK`H7fP9a_Wz z8QF8Vw|PBsDPoWYq7)Du4F(7}P8%p{~=co_ts!3^3ZT^?V2e>sVPLMAZR+1 z0$#;j(+;17HAIpn%gQ6Xl?rLsiSUQGvs61^$0`C*N#R+Phu3sDbcDBdzH*SjG$-)w z*&=2QrN~7iyiIdfMybfjRyh^rFC)Aaa$<-qK06$Eke~}FR}JuHbsO)inTxf6~TLhG3J$x}#H4N>XzzO4dwon1aF>b$+?2Z#D7&jt`lk6l+vwV4^w^P{i5dy=- zjPN|0g_7uK0%S=C>xctIicqkSht4}76e89AK)^$q{ee^PKvW13A+ym8x#LkdIZ(QB zw3b0lamq)9a9jS_sv1a`Uy`PBQcx{0aNE$N|5> zV00w;Bfp8R)!k}D#Bil1H2Ws!$ucn2TLEjrWwOFpFYPS18tbLK%B5qyD<%8h(kD~C z7dK*!`^EPnRm)Hdqi9o-{Uk#55?YRCTRpF=Cz4>jXkk7}laDSDOXb`dTB>ZnRE(%n z-QW#8m^+{|736}|1Aapn@dKoYg&ej*dN6OMZWB_OeE(cLWSrS z#sX2970*C#J~?rj=!;!zpL}tdXr7b;(!+efjg8&_4N=F{_`-Iiq3r~xzv{Ds+b1HtdM%0$QmW!&T%Pd%KH(tC!6v`)72(LV~ zT==vUUmb$SObnO773)i$WINwIUN@UOIIRkDl_i|e4f zi@%z(H66{Vx~B=(eVG@A30mspN>PU;$?R34O+gAtFo-^Av*w;uEI863ED&Da#v`k& z6kX-oRRTXiE6=PFmoy^Hv&KGUgevAvbxr`Y%gyH!k_(}~IK1Y|c$V?}?LWlV`)~*fX>!&g39d+8ZYOCpz0ykf^7n zsnLm4VjE@?2rj1b&?#bImpDO5S#`?QCIupZ7MzegSaw(|x~Jgw7OO8gZ>_l8m+gF} z`SQwUkA@j%SU-P~FNeTtOyNTPpA}Vlr{a^sARh)K6z2(O71RqDx6Ki?cu4{QXT&aE zc2Xo6Y!xLbXlj8ZS@jYuU$Bp#NdwVod`g(_gtQ?k5a1oqXq-`p1xL18zc{4nu3zX* z4Xb_J4utdA*7^nVNEwWH8XDFwnb@L*)-&{8v<{*>Xu~ATLII*~99dLEZjFc_Ms1H0 zGBIE~0uF}^Rnr1P!M`4r>}8msaVS-WaVTkKjYBOe9Em1q9Ecn+^ssH6T77%1@nCvm z`X=B202X}qs4|UA)is_N39ZT$0*%aGFjmnt>OMm<^=>2O&R_~~h)E-bsup8PV`Iq{ z_>p8Qj$JFkZLP{wImp0NGA^;bYUW{K2Fy{!0!(D97knWqlFqsMfFFy}h+&CiK#SHP z4JwNB%Kf0-Gst?*u*RnuHl|5(2WhnJqkS3(qgHkpRDTM1g8AU&AYhdIQS(dH@TJrb z0K`O=6ldl3(+L4YD+Z(Gwry?ulCZ2L`yGb6iw!ggPD3N=+%7Sk%|jq&dP5X!iafPW z3^$Ug!F1i@O-feAHO_KId6OjZg!Q6cU#yl*bee3QR`yCGl)-B+zu%Wkw?^8gIfxj& zx=Tt+%IoL=_aI|+3p~Tv(XAzEB^gL&)nv;JA{%oidv6d;l$LT8NnLLK{<~%^q0t-O zG4H^YMYr)VqEa2nHj2s(ytesl&y#YNIEys2;z3+Cu`Xzm#@2JA=%1r3O)8^=F^pH( zf^zLfQP4C+9WkN9Zfd0m&T$1QMQQtKIj@92x1+WpV1M2yE(#;^g-`@{0nCbrSdccB ziEv;VT8D3m(%r^LN+GZtL!v10z_h8L2}~*^t%4|e5Y0|-51f!aLQ)0?BRtkx6is<{ zGP&kC@l@DH%Y18zNn^4gfD(vT6d12#*5K8}g(W##Xu|*#0UEM#A?RJ{Uy_&T87)UY zsdZq4kZBCSsD@Fs#`wSk!=r;U#7a>J@J)id=5{ zj#W+}DZ9O!#chFfy2dDLCg5 zW{SX}`f}6~QB!t4ASnEA<^eGikDm{Sx`=74br8p25o>Z#km>xuK|y;t-yamkd^X}l zeuLNY{zIa3wh#$JxyC@;#7u0OWx^A{s0E{vL4| zgXP`m6%pWYxp&wHcQ^YvGUHV-j739sbg1^5+wmGgZgv0y2 zF`QuMZ-{+WP?7ubqTz8z+Ir8Su^;T@X-1xcvI&IvcP6PSu7kY+`JXN5k{P7FD zI&HkF>|Q5zwZ%T@q#h;*{?U{Aerk8+m+|e^l=)xjb!|K;NM?Se|4f_G4rCinAuI|l zbp2XCMCH&zE!qELJ+Bt@p`V*umRbX>6%@V>Y36F$ipO{}@!1~!@}+XdH+o+31{%2e zkEQbQZ}e(@^+lonK6Aw~x$hgj9>GR{XF@2F_SDQTAk&;}V|#?-PwQ#?yQT8x(|S$* zwi>Ad`N(N~cq}rnKcn~N|6C?_ozXAhA1#x=pV5b8JWg;rrxyYn<@mFDQ+_A*w9o1l zGJm5zXF%NmP`6Aok-Yb;z8hf)_y1GB*>1XlZ2GO9=@RUaZ}na&YiM?@@Q-hGih%y` zTb*|86j^NkP7mOH?{~Ti8Xta6AI-m8F87_&>(HjXgW$?d5sy{tXT6df@;xSh_i|bM zym&-X{ynp^N63?y*%>rdA$P5SYjc7 zN~wL|lRxTJY8=NUUNrFPAkQ3s&=*QG?}Jl}lBxn1_0mk>vF=a$bhcS8`3Zq>7J*fg z59VXr>-V25Dog)a{{c6bdwFT1$|m*<6h?3qV@4=rAlc`E=P89ummg{G4#0;1Jgw!h zE32Z_Xg38N(j_D_1KVZN?|R>GS&+hQg66hTb6CZoH2zD!q7v$;9_pr5$D zKkd&tE?gNGCR@-`$_0_=DEODZ%X4{zoy(?Nh{^#-1;Zd7-4l4pE>T{Sf3`){qfT+g z^AF=%AW#kyHTdl-Wql_4u?=zt6ZJuGE17tNuUru^xfssUH(HX^$iW7PkIS<@{L;Z* zO+3!|-&aOPd&ORTfED`y7X%!LF0fWqNJ=yXKC8;kp%|kw?Y0z!Dyh>pmEtlg;-ayc zX`+NK8q3TOL+mgki+^Uz85yEa*oq~|ht=ue#!AVHrWgfr(Isfr#-ep9C=a<#-Dq?P z2m@eNbij0CJ)(m!)mZ5QBWtj7KtNp1zj#`%2#Bdw-9R3q+Q3HoOQf0ylh}Oq=}5~= zv7c3N0z+(pK!tb*d76oevQakX!%{T`a#A)_EadZ=Yx3JM>)Xdq<};b4}hsjQ8qi zWY2f>s(j-!vgjS1LgNnUIvuBaeZT0KM4Nsr@QghB2K+W(KJvUOpkl)T${RwjD)%Bl zTpq718lcMLefs4xe;Z`@IoW8New+NUiW(7xJjzb*YJKG5msHOi6RYqwvIl8KrooC*I->3)~W)VxQPlU@Hg46rsxtqhoStK z21R*mCZfE7pM^DJ@#BQt0zYrmM1Tq6IN!jjk4TcYqa0I95E;*?B_4K1P^&hi(GT+5 z+G2YQk!~pze?dt*t{3*WitBZQ1D#F~9EiAH>ZDxif1<9qCp~V)J@V1rdUw?M?PUOV zez#5spTK6s0!R1hru=q~-h<$?Vi@-7wdM4e!GBxjoR{_d7$DcZtoN~+Atp*-R8wZ` zjc=w$Ow||n>b%5&s$8>Q&zCEc zbUKswd6G^iQii{v6X_m&LEow0n`Q-77olei<)FW=C$7B3X(Hf8CJJs?(dzV_*x7#HuA#uJ7i}nj5b-7>I+DwJiVWQVcc0g2(A@ITj zqOv@A2=RF5r2h?7tF#VWPCAf|?+$#koD!Cnl%wBLrpAJ|pfPcN_${#nk1=nH(c$H$ z;MhfDVQrRsm*!%2U5M4d;EIV0&SNPF&kVP`af}|*&F|rPq;>}3_8WhqrAllXS|SVJu}*J?DjjA~d;d`ILCoF3H7_~0q1fAjg+z_X4F z(b$C+Fr{I&i(1)HSmp6|M1|(KMGZG>D9CY4Pu<-Rm}89`mzJW@_;K5S$Qj>?YW}#2 za{XtbqQASj%L0trl(PnseBAqpPc9t45wV;w!@z+tjc6WFf9Zbd{J+5hw zTz3TYLT#%iWV3gL@rPmi2?QE%P|%Kz;k^JJ?HDu*J)jy(B}NV_0LlS*Us zP77ZOqqXBO3bM1NA}xNlgUL8OQtJu>uAp-1^Uz`P9&qnQvvlHdOe< z)wDB0-WVqddEt#BD7y@E7;YPbilj{pY;$ds!;gvlG#k@274oiQqDJ_FShnOU?R4RY zJ>(W46fWgLUM}LnW#u9sVOz;Si$50ewd}cd<7%wV0vJRH1%YwZoxJ=5VPZ1qN?KZ? z(d^(`kR7Wu4 z%yzj_jWo)O-GkW#KCO-wFJix0aUh|jST;Q_S_Hr*@NQY0N0TIPJq}w$Fx$bMljtDS3qZwbc}YNCo9E)2~gS$yRXD3kYD140F1(7h-N4>tNz$v8kf&~EE+T< z6@xgI4EPJ(Jy2_!u+f)=RCgnkQf0;`qM!*WVWKxjs4CTGCB34=Gde1yb0Rht3gtDZ zR;j)%l>t={@%4~bnL!TCNtzEjv66h|6Or1ozS`e*L!UKd5?T&`AECAY5b*@!J zDS7%6QK5n&5X2urM3FLr6vei$EcjGh7XHGXE~Om{`S@TCwp}^&t6}hK@zVkXxy{Q; z&{$Z2aG zCW4pS1VHo`-{%rbM3&hn-RkThMloT6-K@;tX4B2G;J!drI@$Q^XCkjnJiIX>)MRn# z2v;DonjRzywP_IdO- zAPeP`FGSmVHd&~M6pUoNZQ4Z@P$76lDWJyky)Q&fWuM_{!l?CB;OJul$NWlE3QtEE zkm;%8*-Z16V4$f8r2xiE1$HRR;@2T_)^qv4O^E76tkNJwtb0c zAp!@>exSPJg)x)^4EYl=B&U1@Bi%&_iJmx=kc9dJl)%&?7~)JVMK}s0N(ds@ip;t! zkd|d>Whnv(*5YgrP4g`fVma z80Qd4>y0^Cu_56_4ixxjc-PLfTb#y(kAIxFh*ASqDpI#$tx&5G7_H=sHN z1eUh1zW&z74?OX_v$U0S&x#855=9>t?PZ9*ILUYBtde{=7%;Iit6?xf~mxxBD1c|$X%C^)vNI1u~4^ZRleXq0%6wy1(j%>n=x51 zKt`hn_h;CU0eGz0i0@)_D$P2yXu6f*UgJxQgMwg37hYn|d9`3Ss8uVCHPD;1-Q3x$1~oiifbc3u-AtF@*tMgAocj zN_7D`^=mUT<vcQzs=4dQFeYP1Q;NHhXDcPNk^QbxH#a5hW7SVrJ9U9)Y~3kYXIz*#_J03|J(O`PUPpOqmri#Bs-`w?kX>KWs}{Oeh6QYl;YGh35VbP?=g|MYRqaDr z+ul3Wws-WZDCbJF$PRg^vfAED*j!s9zkOTPFMqo|M{auu@xABd2k&6B?*ZCr$dRoN z>*FfDZYd@3XyAbTy3aqeNe$PoyRcdd5=SHDH3 zy?}$q^6kHB_;uCYk3677@bltZ9?STFz5&s z0fsRUm5M-cB5E{$2y37YkT-;SPbj|ij&QxkH12o+RpXF#)I7spy56NLR55i?h~n_H zs;=m(JDAk+0OF$qP)KPwd8oM8zI0nd=rzZp8OmH5h2EU%onZi2;{n#~0B(&G7e<8e zJj#=4xRf}HK%b6JC8+V7&E-O$Ub%=StTEka-qKlqVY-k8k;{-_OK~gBptQpHG|Ulg z+{Tr|G_k1avFaul$#$7~E@%LqqmoL+h@Vv?ilJ7fks#;?K^SmAL#rkEE+vJgZmy>t z;*0U2)K-uV^RHt?mVUOH55#>XJ6}{p9XzqS>l%h)Ags_3jldl=kN$S*2V0Q<6xtSp zjY9Jkd)rN+*xuH#aHxpfQF1PE#A5hiwCHhc1T)+XWX(H{Qa%T#dFM=QZ1b2k2bm7Z zxviFVId%27z-VCXE4Crixim}~Wr~&1df}%aJRw_T>Q%$T46T7@7=92-!@V+OBzsNX z6{qHr(2Z!OfoC{8Ga%GaLF~vx1?#0i2E;ZYgQWK3gcRy0PHIzbAzzF`R7D*>d3DoU zcN{ntQL78o1xj$&=AbAtt)i|dr=L$bgmXe=cZvA>m@W}KM}orQCmfSdoyuUAo?UOT z0^xBwuA<0^@{U0CMr+{SMC_-Ka=9i;FKB&)ff>}9o+M|nj!b9*ni88c?3)7|%E2Kj z%9G7oY1J|l<@m$$qb$8JY)2~7FQhC*h$XGP$SFpOi_T0U!CJSg1e}&cg0;M-1aj^W zF2VCu=Wz(#QfMI!S-$>EqHG%DoNT>dBoN@JXG@J8iC3Ysm0ki6YEA>Y9Tfm9;9`E# z#_%nw7U(Ar72c2F41N@+P+qAy`o%T=%2gb>jW+xEzk@b9AxCH%*QQLgJ)EQ0Z38V& z@oN?Uiojr>(0L!%_hCyjT2VPTgwq(Qa($+#G|*Bmq^Om??o0>hERBwMMcdcn7!w!@ zh5k98@bIFH+JwZIJKzJ}AZmup7+F+7ZxALU2r|d{sSBlMI<(N@Eu6pnZ&>ByISaSO zvkJ|bg-Du$#WZ8x(6WLikyT>5{Ex9ptqZV<#S%adq90$csON?MYHjG_=s$Pa>fgZ$ zz(8tiPY0JF&<%+u7+`S>kw=(|lT8jo+?t!f5TJb$5w0L2hQ0tpDA@sqATtl+wY(jw zg;0!;0Ym(dYcYh)Tci@~-3EstaOjifSRTmGs)ZBf2-&-~5H~Q$04_=ZSKyceyb7A- zA&58hE+!+drjjxqk|D0eN826hu&9|dg@V<+CeG5fLSl|}B>>(6Me=l>UWdG0bP|w^ zVE7>XZez+y#Q;bODCb11MFiKxbQ~4NO=VsD6=*;ZB#5KFF|f{&BP4*$_ESRG#wb7m zrTU1ifi_5E`aw;_X{JBhT6idaX7U+BFMu4BJM#6~;kVx0w`sT({Tsb`(zv%YX{(aM89^SlKvgS7R$OHajG)Yeh@!ZAN01NyB?&`uBfk)ptj ztvzqTr3_QJ63xOEjFjQ$E+9x0`H&Hegv!n@f@unSd0UW1$th467Mk6@dwy| z*?qf%s~VQsZ78!FKdlj@gV|nRKQg@oMGZVSMBdfkQnE^VcDOeILG^*iQK7WJPN$K@ zKo$vGOJ0!-Q%Ltk;h-FNpNNWSIut25EC7XLjh)O@r3Z-^Q5rvu><$%4VMWvN3%=PL zD>5`n{D&Xx#i3&&6{Y1UDF?ITG(l(Ji7N^39qhFlRw}?bSz*y*2XJwvkT^y?aw92T zQ@mipOZ3_+;0fTW0BFM^rK{iP>jHv8r?e`u5CglVgZa;w$%wRf`;Fv*e%&m2MfR_( z=XL6dg7%WMV|v`8F+Hl{Z23X94P78#$8$SvR$FujZeL%h=UzG6O|r&dQxMudf;CxG zg~xVi#C2HiDz$rkQsT-maa1wB=JHs}W;Q3zrBwMq6+OT8Tyo<1TwiiA4uv2WI-1Ca zW}~!7LckB@#fT(OJ9Vg5GG(nZD049{a@KwpUB!OIt^Jf>wO2)oIt^z*MhEXf*pLNq z+Nvc|7!X4H6F}6e>pHby2c=l)uIJPllbx>CskEW22#n~GrqFzZ*rfs3n125ZX0bBX z@$#|#+l`d?HLMW5&S2PHRK~y|)I+Qd!vzY|6r@87Z5S{K;X&3;A%q8PWipXqMt1Ra zj=?V7B1jNeOAgbCZy*d0X{c2j5hwJ^!fq<+B6@-R7=R0ivslJrdYVH!fC2NmfQ7tW z{B3B8Vg9Pi)8J>7?^V<5gf?7`X|{-x9jR|C0+Ls-)3AD@0`vu`Z{?LE_0g7+`l!+YxVD78HY8r?<8(uM zl#9t418b8cC$SN;K8X<BVtUqnoVUT&t8FyYx{W z8cZ_WSly#bACmk)3Uv&j5o47=*(w2XL@o~L1(TFLr>-w_J^ZKwqo1^bEg$Tgyd0Co zmJcz@a3UU{+Bx>Fm`#y2Ej>AK>52}DP0R_Cj&#HWQN#ruMNVxzsceFy^X*w3!5lSuG|e?}CvWRYbVEE#3T)^oXT! zi0naIfqO~q`jpp-NG(P(IjYX}UfLQt)_hVL(_H=v4s=qxr2my7(|v8z%uj9gh6AZq zs^+_dx~1VjHew%vB6Mqz3F{)1q=Dd%Q_fmeI(|69L;xm?>A@}zDOqdDWFZLk zqN}D8c4U;z?qm_b6X7hGAk&)E)GO8m0fQ~6KO0W68)?8QRUrp9-ME^1Q)TmlLF@qq z-XuKI#u@HSAyv+Nt<%hV_F8ypY+(RS3MzgAc-E)dn8%Up7y;*NgI|jFx4=Pclv@op zpw2_KtXPL{FPVoV48kZt69!1jloa^+_Zvfy1jNH6HvUFW7>kSOX<37h(JSng>D0jz z`XB+KEJOrn#`JFsCbxewL8*VsLMz)o{U7y@4pjgDr@b!^tfEN%e=|Ml+~GkuLc;O# zI1Km8ov1(t2;$8u?y9RMA%}z`AcR9jU&M=5Kt#0J)m2At+)m7Ei)!l5iG63xM(PZT9Y!6dJapbqv znrMRCWl2!8em;^mLjGT-jrucoAR2)l7#@T+?8#uNdrq+0I~F}84valeo=8vDZaXN` zJC-xiT}m_4=&t4V97l2Uh(y!SeM98Hn7lF&4-d7l@5C6*Wj{fd3euq8d-?RS=1ka| z2{I7&7P{i|%3|Mb4D3mU9s;oCf0G$4{b8c~I_VFw^NYlP$^RGsv9@AgE&lrw6SFwP zjh2fpD{#6aaY)GhjQGzih_iRB)S`y=q9`QZb2?A#u-#rvGTCM&%XV^mx9?zq0X}kj z534(bryXG`pfrbcGsadDwUDfXSw}+VI4kTIV>UXib^=JeVFtp)NHN}T;213HBA(_U zw<7$bG`a_#w7Auk`d8?YBc;P&*y22Cvm1V~WLI^tyaGmPh^=*wBf#R_1V_2drm+Va z2|pp($YWtvczOjj{IB-k+FP|sAuk+H`dK(&7aLfi^Xa)mQY7x=6lppg!$6Kdr`ewM z?U*Y&fy!sX;l77%hD)+i(@tAqWlLE*dDe<2-7hp!;DwEiN6mlC3&9^gQ` zIT#tyLeUY3BphReA_426z#Yx7P>eK#+lDw{jy{EIMNzsJo%~ z3__92TrCq%CuTj#0Gy8Y8)7fwi0vi(mnWg%%6OBSJ~C)!AtL5_y2sXFO()O{mHQH5 z(20SBnZecq}{(iQXtNch)vozAdRIVOH#aA#Iu(1J#>TBygaM@u$WEz&rcQh&02U5 z=|WTpQ73Vv_c6xcZC&XdZTTqL0OvQyKk7aK)gh({#xr{aXaJsuP2!OX@ee1B7{VSk z971b7tvAxfD-r_NZ-IZUG+LxQM(s6-@&&vy4*@!xX;m& z1THQB*I*J)r;|zKOsDfMusLRBY7ayvw!SJmOfjy1!wl7&F1*ppzzJ z4jW3aX9b-NMQ&ruoV_;q!v7Zc6L9S!Y`S*}qS(bntfcksg}@9y(fEUQa|A@XiDY&G z31l;x2oKE}Ki1x5(z-K-8Gj+({5rCRQ*>laN@DZ;Ld!DxZgGZkUBL@E$@W7IZ}cPH zz`j2IfHf}L!ayHgRI2qwR`2jl&KES$N-GDh97&PVgQ!T_LFBMvYVz($Uuw8o-!s)-^!97jOc5YbKJ6tEWg=U;k^vFf_mvDGOmWgC z+pK9sFR;JkY~u;DfXB{c3u(eSGc20e_s5cTE9(qeS4h1EN`oXn7>7_&30sMxZ7Kt1 zD)w(}!N*h%alU6Lgmr5iM>oBSQkD)wQ)}o=tiKQ=2#=|$Q+m8?mXWw}`I)Fj%yA@k z#%JLp^0Rf^{A~ORnh`R>5uyL3by>>Trn$l2KcLM*Q8z<_3`N zf0tXzNolEBNCFQ)N?`Ze7<&#y zkz9IN%RE#TX0btn^e`_C{Gc)7RddnLhz(T!izl_alJ5n>q@&Jie_3LkSPNcfeM|C4 zqv#bzQIxNyRR9+Kiw+4T>4je9-g5L^5m+3_Yv|Nf zXR={7ow4MMP$7HS(e0e0yO^wR?$$--68etVcoCn;wA*QzSA7$CIMLGB1DuX{WRvsh z)+4v$u!42DOJa_KYOzNNMP?%moHmVfK0iW+|KxlBJnBPw%FS_bg?;WgLZb{?12+(c zaAjipi*<;egT)q)(59XO(&|Tt9qSItamUb**vt+DaE2BX1;HJ8AlkLRtD98Dh*goP% zrKh9JxWMU26KV@F6~Pnhc!I-?>f-qqBqF+!yr>AOp^0x^Ng-)|*IuS=G-BZS3_A~W zH5_P$ZiH4E2r6*RDaU7^)ro(s>vWA60tC(s-YJ@4VSju8Q)$G`mE<_yG6Rz?b0nr~%t1BSq%T%|)R*&>y zBs}QR^#t6$T3tNYy6G6hW2?;S&+%VSpsKXY%BqVtW;8DyCg7pmXrxLk_urWVkFM~S z&w-QC$?EE7=D_a_S{wu7#A7~U7JZdxQdVXJ!*j}R<~<#LA@X28ed z5n})fM#8vE;B{YjdW#czYRZSu9LFumi99OvQFxAaUQ$86w!F~G#;SiCgC4k2JO?4t zeow_C(Hl^hoDt3_C-j}iC!7Wto!EFiX2F^*uv3!(ASnol8^QqN4=VHjsO%R-dKi1E zFJaFhjjE}kroGyWMBp@3X4+52rU59^e$Gpyu_mOnBk5>PZlCvr*f{%p?}_n%b^-=0 z@({kT1{QIq4`Hl@t^Dx@(|lYK*1y>wXr~5Quv=aK2G;jsWJ=~M8V0=6c$I3QCys^6 z#+Z#PeY^-_4H))z;nn5?3=1(i7|!E#a-an?GscF4iM;$4_BJ04g!$GYbBZ`ho zVWle#xt+-ZJb2@vHr%Dd4t%Zgd=Nexhe$}e z5OGNgq3y(l8>BwC3Y^1A8t)flR2|@aFeGp$ArHH-rzl*uGAO7ZQhJ<0V?6`>ul+=k z_UbpF5ZZ{^B3N+=1#cn0@cb1_DDZ_VYk)5H-GR^%#4*g^KRTh0StCM!Y7KFOe&bQW z?QGbc#9 zm$OA=Z5dW?F_Hm*@q{WN3jD7o&doT_7wT-#gdFG_=vEG4NLi9(ST?H zSZJiwaiK#|hyc{RNqVF(tpo9`lA)Q@Q%{PK#^)+!t(Xq&cHLTWp8pnY#kMVDVU`% zg)0)1;WES`sVqPg`^hI!kuCfm5g7Wjr=M&}k4fu}6aNB+I;m20GYnNxDRK;-nq4V+ zWw8zd256H29j3_-oyOWXsg0GQWA`Hzzm98c<df_Oa8eaO(I zc(ef>k^)5079i?A0gC$ z;J6qB&U4{&Kugl}J~AgCWYA<30*{D353qpRKU%a+Pl_ciVM4uGBhKjx#jBYMTSbGl zFd0bOgj~-IfT>JXUMqt3c6zjL;lu=*3(qnAkYc!GFx&bU&@1Q+q_oXOCy)JyBYYRv zihk+;qf4bc?5p=@w^G|`MOWj{9d)9&VW~cKqH`F19$q^zUaM@MC`0+^hd%!{_gg>A z2|;d7uq*cgHf@526Lk!U#Q|ACtT5$%!d}U;U?S~NVnm&r2q;JjrMb>X(xqVYxHx+f zCL+|vI-I7Ge8;6?QaBA!F@k5NG+Y3$j3)7N%wbSuv@1|DR`x^KG{I4m6r~9R*t3a* zJZV5^GM^8FbG`ePwExL;#L=zP>+B>n1se<8MrC00nX70UlT@rQ6Lw-ze{&dVKvs-E zY`{m}2Xdt1K24u<&NyPE_&2NKF`{!jw3W^dcFuOBV;ZpWm#QBlx+JD$Wv5|=#J^C@ zA0ygv8z&5)6PeMB1Q#38QaOzUJs?B#);pt{r&DEK)Gol^rOJHcHPt6gPBwNo-<>9B z8pc|c<%dT=PdJ(OY}oJbs0n^ar_=n|FDK!W)>_gQzSCRF7mcUX$!%n3^MyxMpq(5b zFiWQ>`Yy6lbp@}*@wJL&WZci+rF=1gp=_!?zhrM^#x zUu2akXe)O+rCxkW)R%!wXM4b`RGduh%kD}CRJRy;9kx}0v)zGuv7H>Ln~|-G+RL+X ze?xn2%ii{Q^NA|!AYU@xRx(3gg(2H@8S)UaT+vZpV(eA#c9gVhfssi$o6pIV?TpCF zSF-r!-YnVN;S1eP3>^&K8wJ({Jmv4GXFAEAnY;NVAI+37#5~8zfFtZSsUJJZOcnl6 z%tf&{4k%p(J`%Kb@NYj71-RV&k)Umizx_ziKEa&fl#j(}xL@$GI1`s`AB$>ShHb+X ztdrqS+jye{l+Z{0Ynw<%dYkQB=!or+V*ICIcZ5f_3p%0To-c7|(GS}NZM>ZQiRg>V zS)XwIT;ts%kaguJf;P9`j`YsUxII3-TpQiXq!r!hW4s_q<$VeP;lMKKQ-<={Pr0;% zp9Q% z^xfy;FSz_^CqMnTQ@nWWEPql5c8fO1w|Wn@qv-gh7>4^xz7(_t0T6H!F7JQIZ3Iju zoo;Xm8iK4eVQIqf$H=fG7>6yfs`d!tBa}20mqUBFkfN`+k>kD+73{P_3N6o6 zeZLl6aGuoZUyDp6)qO2a#bwpkf{vB?_G^5#O!e6-Xiw@>_6j;=scgT<#tAqu+7GGa zdj;*^&PmDpI4NVFmz0V#-DsZ0hR^|E*XlRx_W_~H)Si7@Xu^KC(0(YWVLyM2EFIN= z10q3f+|Px+8=Kx1S%)1Ex#>)78a)t|ooZ$u;P$_MQ1n*jLHHLBsl0=N_Wi#8AU6(g zF2EBm?bYCK#DL$&I&5N{GV5bpG_mfRScgrlqsMjMZ0aj(+8tneVM=f;&M5`7Fh~3c zn@{N{YlQJl^RkfKl$6PP^93Ykzml_klnINDNJaWTR0~g%!H!Gbf`EdUH{8uj>@}3) zf1>&IlVn@dcuegWC`*PuPNE+sb|BEjJAp)h+CJ*jMf54~t$Wje4L9$s=)!B7r_NtKe}qHEAYIZh%&ohsGCFiyhQiIen@7)f+` zWdJjqBTyFfb^`6e>l`U-MMfZ4tl;cfsof{2nI;Ol6TArj2xx?G(f%Edz~b>zOc_Tm zccLNlFy)t#n|?L#ux$d0zoN;0x^Nh7cj2LP!Zbj09C>f?1dap6-I?L;@^Z3B=Ja82^bfr;;4I{ z?GPdA3r$?JjLHX$u3R536N z@1@%=`};S3p4Da_qX~uSg~4d?V#ngZ;bYZvnz$UUg2mIsh;~sy zkb$(3L4yMy)sNGlRX9hcI(xbp6lG%GFJF_+Bih-81A1X;^g_9tj@Vy6eW7`b?Vm3p@5xsY`a{XWq$Lz z3SA)vhauPy&($iBb`^#(SiQ$WkjsUi3Ed##>vL+O12xIKcie$G6|MkULg;x6;UeSr z^J&d6LObx61S)1osS^VaI;6}j3sW<4%=7iIf%BpibW5l&{iNj{EiZPW$~K@(2zPTM zyjFo^*I~^08Nv1j6t9hZT@~-wM2ZkV5C!ZxUgVS&=HWmy^e=mIDIyXTvBYmT7~Ht_qSTOM2a{m~7NUHm>q9Ykw`_D4|% zH;2W!5RxB<#Ti}S;bFWJ`yNP}8T5~ejvQB~HSs8FW|N?^KEH0l?rw+F=xf9uy>omZ zjfX}_;EQI7&yi*5wPGfweb-+ro})qbtn0-#Vi39VAmK@9Zpd7_#Et0ag8*DYj&-7^gL7z z^P)*-z{5vGLO4#RkTx zQ)ny{rq)gDFsBCs!I5>)?5vs)Ttxsy%Q}>ad=xO^swS!>N;PQ#f!Rxx$?Ycx6+U@0 zqFSg~VVhMG)~-aUCcqNeu7aCF&35$}LeX`aw{rvwy}r8H00~7#>8K@+j-tl64SS64 zQF{OiliJ|vC~gvyO_R?Bo(v$&W^oz#PUm1UM(4=zFmIv(r~+l{iu}9Cba${%><23J zrIA`sLU)Leq?yt&k@W7kWnf$|P8+7`@m}%-3@?c4 zrvG!QG00IS@qh*nk$4OovJ*sEK%%-}5*mTTButyxDdVxmF-!;F=zqvV{z`g)#-!}@ zCxH|%hTqnyS$b1EI-LO9SKD2t+2JX+NgKIjhm&ENV5k|kVHO6g)3fOB@T_cXJ&bx7 z3>#56^1h9JB2qX~R61WAJAGGIVO@U1DC99I&GSG#*9W;M~Jj4q$$aaSzkcQ2l zJSI9DYVNb*qKJF=;&l+>5V5bXM<5HtY5(V8*}ttSo)=@_E8Xxs+;F?pxEI9Why!%1 z>G(GhX8{N3b1%Tk->r7N05QHvCA=sC?H%5`CDlxd@ZKu5>LJlXz44G3ZhWsY9u^PD z83C)GZ-#p1VUg$F|Malv-kVGaSbBu1BtCK8Sbklxz@i6=P#~KV-5MMT$;WarZVZyX zSG7w;Uhx=mOt2%*M=0Q626P)blpeLwWek`Mem*T|sIQK}E468<$V`|)h_~!jYTr^3 z3PUEtnZYp;7Ije%lpq3#F+?F$Cs4P;lqYKd@}z)h^c1(;gLgbiL}h@HYM-RDo}sgj zpsW;T;adMZkkG)Xo39j!;q$3!EX1@Z+ram*PW?Y%)Z+Z_!hB!IAl1mLxiqGb30CVu3MQF##JW`{Z2h2ca0w@5EwGD4df17bfI`9z9Dj|`x?of39PLA^Q~ zsOKo{me?l850MCTAvqZr9V4>dwOv3LMs-}aX-5(v7hS0a>B^BJxG;pwH({=Djbo`m z@VI>kYr-%BrHr_Vgo*%3^G!IEI8?;R;1YzKh?+;EF$rvsL5EGIh>SQ$XB zg@%WM!(1wHD2${F~c1AK`4&p)KaS zT)O-rD=r>V)W8{!RVUp z1P@XOQw{($Xf|zhavO>tGbxUN3!flJ6Nno}#lQg=h=bGw>)7HiqL?+v4=pEVMr^ z&GIFukTJo>^~8YBflJ2)KH{ALKE)4V?Tvw>Q&TYeeB8*)j35&jA!H(jtkHiT8Wf>tz*z|1`{5Hu)xN9wiuq8fhG0)f``$n);Jji)PX%Ba zL6X=4jFIUz+o=?%4-(+QWk+?^3M=V|e1cOBxSzxkpQJc^l9H6H`^c|hbCgVM4t!vH zq7+Q}<5;g>MQThlIixnSlc>claYy01z%!>u1GN%_P?$HVOX<~u0zKX6Nf@jz)sdcTV%|iWKbI@PL=kp3qZW- zB%sq+g1s5Ydcp|JASN#ZkC_48dz%QTGvzH8uL0^Ho+@D&Ys01g73+!$7O z3tzZ}w#uykLnp4?& zfs7&~Kt3aHFLM;j3e2awt@dDZdDum=%d2iWjhDbVREVb)V2#}nNW|b9=qJkzg`bQi z#?;e!^>B(iP3Iy2wdt{WG#h#o9Oq7boBef;I&g1Uz6h0W}Upfky;$?hf?eGPqfJ0K{?2hV6k!vD@zO;WcsF zW&Vu#6Vb0tJ6RdGiow~u6$~wTNTwr4$iK-R1e3ZAtrtmA*$YHI*1l`8nq%^zhp^;m zg`x?hyIv(^fUazjX88B8I}vs}EJkV;DRgLW@(n_|p&ADo$U`I{v;`iLD7%tE-7!=M zb3clA#tHxwBTWL?u*KQ92U1S-8GwK{LS;x9gU5vLNHBY8mb0f3pzQl|?Mz+}A04%` zO=Tp?bJc`INl|*M66N!_Oi7Z%5MsC{N%p|gM@h0Qne2Q7S%I}J)hk){=;?|&nB2WY zs921Qa#O}>CF0I;huOIpve9?+3tbj)=by!6BXZ<~hiB2*2z1;goQxr?%EcH82xT%y zf_^B31H)ne{q$ibIv?=Jf=jR`)i&s`Sd{Elg|Yj|5Pa}+(a6rJkPcr!g{PC`EJuVa zN?aaHWSIexK|IZ4NHBt-{x@0nDug@SWgVA4-ChqbwDxDWoPb-P=09t-Q&(<@YZVWm z5p!}#JvBs}tCpw8R*3F=CPj7tdf!TsH{$Z_P|-hz99!Ix*hYqeK}L2Ga}T7bA}3X`U_FSxS-&p9j2FkQ4~hHL*2H&CH!NzHOfmr z*t;HK!T3zrcuiQ8?ho=*70M>Ux;`ENK@JO`-6O2plq1_;0D599NF=AyL9IYMNQs|E z%6L3Eq~uai#&Q~r-w;S}NXbz>v=ENsl{KjXLOs`4rg!ydXdRJ;s#Pypg2}}Zz2q5E zuSaPHXoQKdnBuO zX30y`d$-Bn@s0HpPOPb~QE$(ZCp2F&Prht4uls|XCYnpgUM;%>~!W zJB&CV{iptZom`{RZj~pg`h~KqnzTUXsLGkLhpN3p)~Qz)%4*epzHFPox#@$F`SRoD zjP#-B1763R#gn8&~># zwe$IUJWD+P6<2`eyA#(WT-V`8`J21>eE8qD)bI11jVpZpTzmxz2}Gq+)hN<80O_Gf zdf4|H=f(e^0BU>?833wR;5p9wO1wWkD*bm(y4${%0J!O4ly@fbHsHtYb^zAt;mC_n zJ5-KLT|p^oq5Iqe&uLN5pQ99NvA?~~SBmR4=etaxqaU8v$ufv>aAcNX&f z3%@q_xz9hfcqS;*quv`Wo_FCLAx?h}QhpJW;PdUqb94b;ws?LA&p@UJz*gKw1N3-{ z_fOzC13wqwX54z^qki8#_<>J-Rb6#Q`vxr~l#juWxPKthyW{GnPjb?~?BetFjY?mF z`!n!+6zL^V=?~z(H-0xGJtr#tLEMM)@MkDqjEH*iD(Q^E=)6ydrJ8Hg9$-r_#*G<5H|5AR77t;4k~ zuHyh@Dy~gvPi8dNEtX9}&Ok~@A*ZNu_sZ64_WklSqo>+( zznp5Ep!O}11qQO_<`$@`2cYo|{Z-Z&z0`#d$Qz8_YWoB7I-`%;^PntL zcRq*}J$>o^db8h5)$ow)ss6Y`{?_PErCn(ZP~#txcN!s;@UXnV$W@~smc5KTm9|25 zQ!5{q)rtAH>zYEkrlCvarAC2Tx)ckU3f0b~veYP2*~?@~FG*`s`7( z{-qT%(-^3>tpE}Rsezm2@bsd>>Vm?${QOW+Nl_?wbanaQGWE(z8Bq7*k5Q&xS_xCa zR`XWL!Nw4^X%)a6s@B~rhp01F%hvv3@u0$liPLJ!rxL1*RqjfeuNJSC1C8P8qt&v` zJY|U5_9TF+eMELMMyNkLf>mUvs%IXNO~z?z(4(-fPgjHgh71IudBzB}eT59F%*W7# zGnM@qHtje|ZGKEHHqKU;Jua6UBURTYQ@9WdmO%9tPs;>#`O|W8 z+ltncr%q|C7+rg5eM806hUxVUHI?e8r$OYZxtho&>W9}boLKpctTslgarepd)wpM6 zW`}ACG*?fUR3j%;jUPX;y4I?jTw7bGK71A{$u3pX-vG)^Scf)@QKjqTxkf!T>pWwu z`gEPlHOF1A?p_b;ZRUEAbiDfWdU?Gufi4Z|*5@$FX;2S6C(kh^svn+%88=CddL9e- zE>qV%FE2DEtB;?T7aLR5z!zkd(WvfuL7r|*)mZKKB5Itb2ET|Jr|YD*C~1bi@AVQ` zZo!LksJaSw#ue(8myq#F{j$f)vUTFje^ImZ@^Xo7(p7j3Fj@ANoMW9)TUDp#H_Jhp zq3Zn7f}+ti`MITaCAlTVM8-d380VwbfPmwfVWl#nt6kGnb@?@@qrIr8T+v zp@QO~y1LTx@QrGFv)rW;-o}Wh$>3aViwknAtLjRsO7n}0OG~S3%dasa*;-}h7uS{) zmF5=}SLYX%78Tc(&ob^};^nEP&tRyqpahB~U?{$AH@Ou3fS<$8>zqBy7I8+cSEF2xm%P%UwQI&0g?OyeFIZyTd8!-3> zHRx|(-J6v0IntZ9%S81KrQaNtF!Jw6n4^qW?h6%gW38dK`4|ER9{P;N5* zM3={ip%c}dcTxVGs^UGlHsdY>8m6{-YNJ!?pN-#vD+)s@`+b?A7H*X%8h5LI?vz)E zdyEBY+-Hzxd$-DVs{S2WDHa>Q_fXkJ4gMPFKKK<-d~eJ2ZU{NLI4bL(zlNLSJ|nHJ zz9Fhb_ZzLI;jyL)`mLgR;?#!5zedrjvr5=2TcBzc*pJV^MxQQh(tI?@uNE3M8e$t{0a6Kmm@z{pZH z@*}wnEAZ}qSDucuj$3e1x+>X*wyiikebH`wy;9YGCY4wPsrUMJS)xY0FFPBni8*G7 zM~n(e?4&N)0Q6Vxlx@}HpUa-&Q8bS;AKW23iN_%QVsf=p89N~~9#{U)mahv% zvr!rQMO*d8PI-b@0~op7hEHU7@uYEyetPW_)VUUf;CKB$g$wJcDDEx#0L^>0n_xG*MpQ2cX7 zMNCRp_34+gd;Ie)G6vM}J+h1Og6^?u4`6yxH>b1Oum_6pr3lDvN0;Ok))dy&<`w4E z)D>0dmcQ(_{KswR_OEzZGmQ<@e*@~N?V#1))N9*io$+`5dh^Fn%&&S`6V=om$g@%B ze~|89Q*UgN(^c&j+;37Bz7BEzA@0TN(6f*<8S16iWPfwBLHeYgIZ$1?Nw!XS!?+4f zF3nZ@-f5| zrUcJztRkbhd`4sUGe&jqJ~gkndsX+LbQ97~qt#E}$UbWRMw!s3e}Bq%%Bb$SxiCgu z+c>v)OsJ@ObWv_qU2dqRG&jGnxcoD<>KnLmK39P^V0EOu0b=e{d$-7Sh=x3QvpgTM zkbsiOU<1TahRo+y)T2t9`)l#vN7o^<3_x--_dH!nb(|dPyRdrQ$ zb-b05m=HFb4WA4JDRc<>ztB-%kJJN%XzKk(*ZmqsHEh_h3I19A7mwucu;A5A^mh67 z8HH1)O)M$4U1ouK(@Q6mOr2Odv2dF0H|CgFjL*Eu6Q>o988^8kf0FHY)*x@nl*zNk zU@}uD7Eha)Z~KD<7v52rKfTmj=1&$feqwR$T7RwHpf|qh3TrR}sRem}!I=D#>BXhC zaxK7@G|e_&^G{_q7YmF|yXltOil^N%W9BRDRaVVjWB+2WvsqK8+&=pv`<4B~&N4T9 zi@nV*v3FR&8xJ?VxXU4iEZ64$YjytWv3&j8w$-68H`(>s>gIM8$$O#IuDFMW=qfU5 z%l*3oEBmXQU8A;atx1*JMru@K*SV+P@l$2Lcza8o5Dl%)er>)=tNU%03w?Rceeb4t zvb{;$RXp_N`eCi2HLd=F}Tei`9eQ>Y~#AgC^@2sUOdK z!8;1?1ZV7e^1urro>||v>x1KS+24S`TjT$);f!7H|M5K3{;U7`BMV=h z{&Z=l_N|`tXB;cpwdv3Ib@q`g)!1FsjNHLlciDxr+bQNoEK$Lc(vzfrL-um}pHi}H zHq&s~+S^X2bhg=C++m9i>=Ep52D-E&m#v-coGKAWCC;R{FEnJw9Ra6PdIsA}KiBCL z`AG{F9q@Q6#dX)?sctQfz3I>Xl>6FQy~;y5td%=2iG3TShJs~K&ZVvNxai=#g&OOz|4qB6PUC(;Sdk3^p?+;F(cVu-k54D(0%(Tuq%~T2QYr_aidv>nhZA}_PL6> zQEsG_p}-tDmffxDBNiv$7|WKc7&=aL&&y+-n1K;xXf~O56H9ZS9mhVfnt8K;g=w|( zB=S<_b+@w5>!-%K%O|jgbsD0=z1@w9ShVhEwQr`%e>Ehjp|X@urQC%gR^>Uokg| zt@Qy#VMu`c-TCYztB0DdfpdQH{kvJ7ud1x7U}5s^#VoX5()aa~8p#0_EUr!|3uDxv z&`cxu^-I|6)V$bNzBjaO3}N*YNiu+D$>(B0X z5BXW!%Gd(=+j;FKwpfn%1#EtSob!uThEnp+U$lO#LiV|!4WQ_{3tBhSIebCe&6>TG z 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 F{{VvnAR+(& delta 31967 zcmc(I34Bz=((m-?K4-E`GFc!YAz@|+kOe|ELI7DN0s^9dfFj5elCXq*6G0#eih_7q zjL;|us0eu7@S+?<)S#fKSH%rbRDuhlD1yo=%KKNJnaKk9-TS@Y`#tXseY$$DuBxuC zuI|~ty77hw8ZTS4d`aUtt*ngA8==iBvyBjC^UACMvFBfTg0TjbMOqiVAupMDyZrf8 zBUZCDtURSPs63>_SMJebkaC9oUKz~$R}SSJOKcHNn=MFadKmo|Bf>(0B6VRC_zQ}N zjTL&Vz@L-bY_a%HcM1_9!fbIiA#6<7Z8n==0{;lXMI-!+%pwH;gy}*AMI}Ty)n}~40A%h?1*sbZvel~Ns_oQG2vmHfI+|B5+hngS-P7f=PBg8Y{pK|m z^na?aZhGBVp!L9bZr^(Ny&d6H^W2>iwg!JWms#Ie7CNPhnY06|+Gb3IuSgOTV-ghPwL)!YvnP(YWvUU797maZ1 z(({anWozXh6B(OWdFRF6l{fy`9$$<8^lIDpRQ~(VWHxc@sXspw>?65bV|O95WP)8Q z|H0W5L`+1|2yq0>khev#S6cs(*4}1w8D3j!+xfH(Hk+3_ZJy9>j$l`)S1a|}TG{?m zIYKGN#Wb@=H2cCCaz3rQ!{!R|o==k*$t*EsYdXb+cWb&iFq!QMX79>`4ArJ||ARF* zU(8_Nhf%|brOEOU%pv!8U|RrLIg~Y$6GpIT`QkOK$O5FuUdvgi9NvY6%iB7#9u_oR ze$3Zf#X_Um zVmNE5iu+N$i0VQlS!NcpC5V`4vxw0i)0gJg9aM$g&fg9bBl?#&~xU32HIQ1+-9F-?bIl?(ey6XI#EmJ{C{Xl zg2*S9XnWY(a@uo9AJS&aq=&SLR0NS1gEtt=Ue?s+t(MMaMnkLE?1!yl&pxa*B21X?tkyn^ zWWUNa&uGhNgc;9jMKr?7XSG*Vh5=i&X&R+GSFOdFNB*V#p$B4Twrg*MvT1V1ZY_gP zbJ*q1-C8s0+@m#M)6C|3w5J)ukKfcL*)ujW2vryJ29>60Hn-*#ZmxCFx_AWyoajd4 z%BAH&_AyG<<*@x)y1}|RfGW9kzt*S`3q@g3>e5}Bvr)Xu=HhvpK)~d#{aUQ~{rlQr zyLoWGc7|)^2j#xcwT+mTnTNENY`WZVNXw)#?LVaL)mW*y?kg>vhGb$$tJS=!u@(QQ z#RRhj=B(ee&5Tt@&uQ&8c8@GOttBJ2;j~sp18;UlyPn-Er<~DlplH<@trN;zI-_l4 zjmz`BInLf#QOZBCIol)Ln(y^kfPDGkIV}h5pr6-Hp}Mo@wQ>YIL8FYXK#ID>UZ<`ECOL z9Elqn^AgN(SR$tx&PwDjga)Q?YrZ_0$lI#%G?ur-@oaf}5^sfk8Rvi z@CvOw-)!mP8HDN~ZvGfh{g<1sM6$Wk!&ieQ^JPwRRl2Y_AA(9=Y0g(6Xc=NOl9O8S zcI;94WDDM$zrV{SKWxEUP|b%;(LhF|@U%L;>YAc(arzJ8k`sje8TSF=xe!bloLKwo-kqY{h#cV|6RO62Z(2HT~~p@Xm-iTJswa)Ku@5OR~5#2&@3s z2fK91<4xu1)@ndsWZ^qKlShNgI%o1&6daO`-rteQz4+ddsrsl&BxE61g>0RrKohcf zK4KfQcpC($hL8}K%?l8qhFcJ9&F0r5P=!4?s<~1_Pmx1&xCij^995A*^!^+*aE0Ea zT<$vRr2>C!MCONAeA4k-`mO`*YXnUT?Bm7)O>NbR= z?A1|G*7N`3J>~ly)xbn2o{A@DcJvFJcMvQZGJ;A>W|hJY3Ts z#ER8Zy8H7+^1v-To6xcSM!u86BRBEZ@`*k?hCOKR=))se0GN0S50Y9x-j5&y`|)Yo zrdH-V{dfa^mc>XgC-&zF3b1$pFQ*)ifqVe-tYF>?F1PSDbn9xt@UrV1ZC%`(k0r&s zij_K7$h&UlV{127NRjeel<+b`2cbsB& zWlk|~?C;5zV%3vf#e5-EdVL8WtS!own@V{9T6Ogtg}T=72$GSs`zqIp8% zPnbn4eNKjTJg}huKl>;P=m>$2K&zKSE>HTKJeOwI4K(=P`Zfj3Q-BrMY_%5XQ?Nh=JK0C*DL1ogG6%^ z%PhK9?09oIR&3}WhCGg?{$j-PpDpD|6&}2d7bI5Yx^-`Y+i*Dw%KCwC9L{^$%}SqV&NcF-WsoP2 z$S;=hIPJR(xo-<^8Uo9Nv()SKqPeEa`FI~?G0+wVWvyAxn_dy)=Euvqi{|k62Y3#8 zky2@`1uOVX@>C@>!U`GkAYY5%$p`%@)Z4`?_`ksGomMKTHG8ER$)S}>cy*W7NXl06 zczHzfo;3EBtGI_c+jkXjML0p?()JelV|bvwbzlS=b|P#p6yk`v^flm_xz0xzWNv0@ zvaKFd^ms^#s`(EowejLZs^!rS^95A-iHG_7Y_@!5HGi7g9=ArVub9gi`Pv#aW%VZ1 zz7_?MbIDqMEk^ffG*-Q%Yn2L>vrbjLcAYh-ChK`ow4ZieI^-EpOp~%=J)el8;!(9M z*3_T3@-cobb*kHAd<313bH zXyFSvX0t+q>z_bZ)n$iJRcY5I&YCR$w|Et~>px?jvaP$J|(n197w{j90 z6Sk_3LQ{&D$F}kvSc2X1$abjyue`vAQ0wt8@+B1h^F=7c3*=8P^6M#j{che--oB0R z!2T@DUSn{CxQKJ(l@a^OkjYgvx#2bC2oW#Wf9UM%OpEr!3If|KuYu)GfZD1^~xC zuz`UbYJ~{^FaPj2;)*3TqM?(?@7_=vjtNAMA!W;aaS!jMv@Z4*e+5{7?Ja&CjW=j7 zpHJcad--P9Dh5HBS?U%pryI?B%St^Chb441)d!;8bje4X8C9?`{kJ6c&DE}~_jLlE_Eafmzw zX%S+foD?qHR&rsTlx6I9`ErC<0boC;xS5@ho1H4>J5KQgdtFYB6b%v~DFj4(P$~ZJ z(F<&CIqYi`1bH`hl#fS>)`Y81BE{>Sex*fjpY5_$&YJ0U;dX|@PgbVkkIf4u^J6(1 z=V8e<=Vs>CHPVrAqs)q9w)K+$wIN_>x=24V3T8TSX`B zw^W%p*y_WLgGFzOuNf?QfN{PXEIisPDtmi*?GOg;3=>%Rcr1DK(|1}4|T4V?czl)g!{yJQHWq)yl^2n6)#f2fbj_;k=-Tp69m};rzMC~ zwq8DxAQ~Ys69n0pzDy7!qc9qmgG@r<&I+`cqOF(x8jB3JL6$cbF(KR9U92gk!07jY$l-9#wts2b%6I{TzZ|M2M`tO5|cCQBdUJx`iPRIOH6M8yo3^7uy~|s-)a_GLY-@& zj@E|Do7|#RDn{#$Q5(&xQ1=7b-e@(GSD|i@s8=@dh`0u*%K1-=8n`D6^Rcp?9_C%SXyX<#L-z}Z&YfY5sq zJWfn?eG8G>@)){V5Tv?ju{?H2UVXa9;nin2TM+V(Y2Xcn)tY>&g}4U@&rX4aJs=0B zi2jH@nId|sS&zda#FSI;zmU5J(W8@MNyv3KbYa4H7kMZHW3E`)TEq@* zKvfu&6Vu~?D?zI5&1{e;&6KrXfb&%zG)SrMt5iejA*r_gzE~X6THC(Lh7*FH013I% zTZ?9ikg*OWZ#}VKY>z>;LA+9no(6JTYf(_Dq%EX!I7uYKFOfJVkszMXQb-?z4)Vh3 z?8&MF<5Mbg1GQ640gbuCEpl(5n9Rp(XxnhbKu$XeV-4hyWD%3%j6msd!i$4S`vh@A z62uKjX+|pg_pK(kWMC0FAV1F_$q9s|^|}l@G5=TCf!uz$wND<`9lZ?C6d6u6DjI?k zy3QrCccyr0^k(1+9XzK|+dhU@tN8`rY7Swxgju85z-gSwy&k4cNL8;bPpe0om^>no z8O~;u44ps{ zJobquzsweyP@KYZ#Pw0os?Y-v1`H=OKIm2Bazs{S0FJo?MF9Lvj%bNepXZ2d_LOww zidb5>EljPK8M&f$SrxCRcV4DUT|q4i-)dCK$4{HMGA4Nf3;p#1OFk%{kI z!%~X9n|?pLAz;xhYSy&@QCPeR(34mXts8#Ptz@TCJk8qOZt_ z1+PM@b<#g^9$xAZUR#Q->KgfOUy;anU(-P@UxZ_+zxs+05N>ckkrw~vHN^8aVlJVm z(dT)z_ZoQv(y6&w{X{4GOW1bfv|H}zBXaW445rsf|HOF&;KaUiz*Dd*E zx;KQX4yo0FuZzTry2ZDqdkyDv=6%IbEnvK;DiL&Oe4<3)RN5Rf3aX&?Qo6i%G`4Wt z^E5~VlPSW3=u1Toh(M^ zn=`!IGvqB(L_QJS@+o4WKRIivm`f(wEmN&+;gP9=Ozg$e#8?FHPZN_6beb-diFMC( zwO0(E0l}iGe^6WVi99ev+?ck5Y%C{jpmc8){td_Ku>&GisNG4e6z9vb&+TFwdse=2 zySOW4Cly(Hsl@@*GjDUCfZ~xjne&7?_}e*8^a{F{4RYALt6R(P zGVvV}e=k#{Ke1fAL}ZjQUp&NKGhd%Cwy=;Y!sIbva+jQQxA+_eiCY%HSn-7K zJKYE3nJahQ2ZKn39KBeOE5j3u#c>47?-!%Bldqc>?uV%W@!3l;h}UH9GI5jD_k%X- z`?6)?IdrPaaxsMcg(D2%Wy|DO%S8cu$#g$pvCr5_v6L+}&sT~$3{~8|Li7$+wDLT{C*de96zQhL!)NR40FY~8g`osox^X@B&7r7kAE{uoqwPR#h?m8QSgWY?IvGo zB)%e@k6^pL%uIVktmA0xo%PW5FPce@iftimzWM1>B2=*X^2l@IQ$)=zViA{{$^QjL zpv(MVE;pV$V%MB7nE1?0FqNP$)j)`)UW~xHgB58Ew2Sg##*9YKFs%#ykARubZ0w|q zhGCCph7UKsBI5jcgfS99-$G+;h;M%s<6Pu*2v}3piFs<^2`s(MvrLzbUr2ymGR`XySa=YpvA=7SvX@ z_q=kQ!yuF3euqI8lgMym9sdF~Es8T*$j`!!7}dZp;fC6XMn@QZ6rec5Xhy?Z9AO-0 z@0sJAM&lsM%!BWo*Vn3Me*Xa(9u*YM1 zGmhL7pV0FdJ0_plsGml3^(OtMPQgcr+RCF#lUJUlU5spgR}xrsu}(EFZ>-b8aIvvY3&Vs& zUHM_0P1KhYF7HdyleLF($@yBAYUYAcaK9aZzNA_d(?3P%d$^Du>2y&NEWxG}5> zS>gtYzmY>cdQ(M%Qo6J&Zfg>VZ#InjvK6uid)Dj1dl_*?W!Ee5>#|Ycq$>;9)4QUa+yT2O z^M;kW844hiL8&L@kf=AFl;j}-- z^$Frz8sCl7w+@HxA@|FDU@?U40w}DI@;IX^2%Lnc!E!Ub01woem~zC zo`NBvh6_1sTtTLhaQ-;dcq%qPY<`NmFH93CW zN9%%lLmgN$G5^@Bs593<3Fc-v_7!pAwp8wP>#*Zu{&6j%^IJTYj%hx9NhB+i=oc@F zT&GcB>*ui3xsaVsG=gepbE7vfSi4xlT$eE)-X)hc8YIiNp*8`3=)`RzUfZVh1y^%w z@jvJ$Gli=x1cq_lC8!@PEHu;~yU7s(=c4*2-2v2J{;}TYAQ?#U&rYBgKS1G=kPlmI z+i=1)Lg0FLsy9*|cu6G5eWq~G%)$A$y#QLSfW4vHVP6ST=n|i%!dnXkJqoYyZx`wP z!d#*ATr>j(-`eKP!$0LNeU2Ju*&HZ6p|0RLE{q(wo#PVo=emOCx$JY?LLtrQ3$_93 z2RXnw6goFy{)m9I4edxFb4llmxK2oR?Zq#N9t6d#wz)1a^vgfa`PjgZgDc2Kf1!tE zt}s%yA6}Qkh0*{vEf)r3WwKH?o_F|j5%Zmp`HhS;rKA)$@@Wkl8yRgmX;6n7Su)lc zZ``N=BjSzD?m+wgdLU$=W;uUk_;5i8%Gctd2chw!@x~20^d{$zX4?d#lx3DjXbzmu zLCxHU(@Z*%Q=$`RSc;J>w$Uiq!n~v}x@n1hw-9XWXp)~yP;aE{RhvA5?KiHLna$C#F*)+HATU0p|Z z)l-q>lDVkupK{||rOF*DN9Q9~1l2nYb(b(j{ zqa<38UZ=&Ved>f5@eyM1ACA#p%95`&6ba56*DOtRZq%x!u02WVO`h3wx}^*}ZAX0}|{RwN`@_IazD ze)~N4`t9@oL#N~A`}tyUR5?sBaHVj=J%WzK;W=-%ZzsOO&dY4nNtB1h9%3#7UM3-K z8|4VWqG-T;bjaM&ON8mNs-MWZ%#x^)5`L&ahBng^oR)&6)hJlY7IDI5ji2JHh+W0! z@qB+}Qtmi!oX##_BV8fywqh?@!O;uYR#(VYe+csOzzvFS2s&I8bcJEUMddg7=|$BS+bH!&a`(9D4iE3e_Ao-rhJ_=F}U?w}l=mp!OV=*M=+nj1JeYL7mT0 z;s~c6gykN&l^+h>Dfu8=r_=YEdT3RxJX zum@mM`EHb+4$#>sJ+Gtxc8C8q$7bK{4*xBWYTvT#zvbb-1)^?yn9G`i1pjY&eqsc) zF`H5>;O9g-L%-&FuYk-W6}#Hp++0s$WxmxAI;c0qe{9OhaDsWkX)yCf)rI1W7%PD{ zJ^)2Tvm)ip#ah{*w0D8ft3nNNxa#IR!?FO_9{c?qEI^Qav%MY>QI5miDu^8GPGYI- zo2e%_Ku_3hu2+W?o8{sZJ>I^V#A%f#U%idT$~RKJ6O#2FrCzyYS_ zh7?6cb-!;fwq=;nA*p)DUhCCyuLl}%z|{&3z#@X|NP~vXz12!TsOh;2*8tbU?W3B` zL?{t9A#auZI#u7v9+2zO^s;WgYLz15^Wa*qc{j9!9$&v+4;u61q;Ac!C|&nBP!4*G zub^C>u1BZVZM^Olz>5YfI~e*V-%Hno04ptOMbyoVi0RgepzG&LnydwO12UZx*kD>&pk&yLOwtNhU4`QkyL~ zxs~p|$~0dQvwt(q`&;QP!fKO;n&pt1S(eQ+)Y`N%Ls@iKYh78-TI(GPd~+LAXXsEF z$cwPv$b+szWjk9#q^*|6TkGY-IGK9-EySzPh*1eVb<{~X3_TXnSJ8x{X8a3mI8Pv| z_{(AOrp0HlNDJ5!tm3r5s9aU@M5dlmwwpG%st#(S9_IzQ^vio5kQx3?)Zx6tU|}0g z3VF=9)D`9+m>ck|d&|fuVllqm`8##JTt1MczYClDuxvdR!R^_4GYor8c0JT~kn?hM zBN>>mj{B9Xhe2ixjCZ%Xn1qii28d*tdUtsuM{kLW5_0wQbRYgKN%i;mlT&i_m^c)m zHPnwW9KiZ8_DHUt(GwW+$s@uTcH^~W)fMMDAXMvOOvbcB#QzdY4NkIAAd z1vH<*1;#>WrD_&JGkBA?^AwM`!I6OEHNY@jSTHjrer29lA0q$C(;Jj+(8#zGrm#Yl zcw^y8NM{ehmO@XUCh!PsWy5gnm-9T=?(mQ0}5pQ9L{=P)3us~l@YTYU_>Teis8 z=arp()8;n3jom>Qwrk-gkLGZMg=1>fAb?}74vxK+$wsBtS`n_!(mrt!piJ_I*SwW) zQKNZiRJz;g4N^}jWG@3P1)*gh%@AvpqkLFts%FhImX_h|^hTi7S?zQef`{8dbF7lz zw8MB-%HHkuMD0+O9M@jYY(WSo#;x1^`Bnb)!?&PGZ;Br4sNo_~2#&Vbo4~YebkI9D zf4qu%>Tm~z8Bl`iR#tB@imVY+G-|48Ne6J2T6<#UD;@L*oQ{<`f3gUgdDH>QUS?Kz z(BoOS#Ys+3kaydgHfisul-4dC^@hO@WLQL0B@2h^an4m%)KAb=^4^ZHg{zf*M44LM z!9yU>y*SA9vk!xnMS(n^DArrcR47UYjn7A0y`Ehq*YdR%Q#l2g7 zS{!lhKafX|4;}F^@!Wc?1Ncsj8VpJN1w?~Y-I$3Ku&O)AOJW{U^OmriYcWQH7a{9%z%K98zls2!PI^nr2vGc8&r`|=>nF$)_+4c3-&aZWT) zN5aWQUOmAl%q9>2-^(#O$uWBk=B_BmHGOm+M}mRS7?^mMni5|k_US;%}R zEvYs?cR(JG=%~kPt1{%a0;LxWy;&a->C-cb`XSB15VGi6y<;Dre6ZJH=_{)Xc0U!> zC2X)v4Qb0?uEnOXT4r?B-Gt13UG;|X)P^Fua$Ab70?sx(E_dX?ritK<#c z^!O&Ht4NS}ENTQ_>M-xI?hYfYf2jBEw`}HuZu%a^&dBSp(;I1WmmGDS-c;M4DHmU- zcTe&yRdv^;5R0?Qaf9MIJ+}Ep%t!}DvqNaA(mWw;ZA&TUUwe=rd0Y0-Z@O}QQU61I zQT6IWe$@9_54}lq-(=QdsjF~Qx{^xawWh8XR|VJOsu4Z)mT@!&_>)2gsTC5ho&;}l zhlhp8Qv-Nhnea9MPB*o3V}0P>-!Tu+4~XV0oPjAUmZ(Mw)+5SPu9hZ0QCZTFe2J|T zXQ{soNtbi110!vXa9VEdw1lH8vL1kphk|jlC5XI-5hdk9HAV%0M?rL%x^8=eLg)=| zQK;wH-t|>j&Dz>Npl{;c_O{oVH{9B0_K<}IdcuFla80Csy*jk~|G;&_djEG^x39Mz z8}fT=Fhp~3UDv;vNt&-K&m=96|JO5F;G0Qksb&B5OhN;^Y$ii}Gl_a#rL<4Q2A?!P zidmOqK;x<0<&FZZ4%?tBBnz?oQa)~YUnltPz8)i?*47bvgP&?^L?P-S+E)5b&l{EI zH17yKcWp|#XPm-}vE*xMx%Z1(oLBI#q0?2iJ z^#)m0q)@39$J#n>(5&qj>ctW?54CO9NQ}F2!4}!pYx29k`a=a(tgUv9OY`oAq+6HiIOCy?mLglpZe)X*lGFxP5L{UN0+Pm z>jgu7>IP*{PTWu#aLPv7U)^1m_h@VH<))e%Th)~bq00cJ_$p(_qyc)^RV4J!_3BnS zPcv&ad^A;Ss`D&LQ3JCKExl5)RFY(bY@XxXPx_{%taqkOuTp5QMr_|%SIB9im1Rpc z-Rf#hx3ijt*;p}&uM6`B>Yd5|@Qs1Wvi$2nJzc()tv8nKZdOKJNWx;7*;)@vvQ(G# z8VrOMRp7QkKno9*BXaaa=)3M{HHT`U_+Q#F{)SD6yKCW2F1kf;)PWo$gWwnm_Dmx7 z>~wYZyrP2ox63K?+4@Rqf^0uXcLx(5m0{B?9)vT1!9IbY)zQYTvf2DQ%bZ2>FjJF< z2r#{yN!MV#Nhk>;#Zb<3ve#fe7y3S7+1H%+1;h@1>{F`tHOzyV6xk71+X58M)3%U% zh^oS+kzWX9Ac^2|s;du*%m9pWMa{)MlHj>6JDy+IK|Dx2ZxxKiTOj1i%e|3R3K&R& zGjI41J+_Q$46r=+K1drmobM{tQE~Vh1;NgV1TjH~{7G!wji#)|l%o#$qhsFU&FtlZA23gLsqEwrPgx8ZF(o|;Y|7M zZTk4eXx<6*HbX5|UrC6mjcgT@^A#^kd@^(Il6-E!vN)KDLm$iqXi&)qLC4Aooe zDC|5S(}(FtL-FbB=0VwbxZdo)RXZLY{y(W5*ITpg`Clsg=v_5QBQ<8ZWrW`FhW#uo zt(IT4|Mb4*fckRCIiK^!=KYpu&Ou)YAK>Uhy+zq(xa_T`2|Kypzn;NfM$@Xi`AGEO z6C=sfmJtv*^_JuO1df|E-V3XIUXIIrl~?($d2Fxm4N?_o-D|xDSo7x3GT))hI7wdM$4$2Qpl-2e>vJ-V0<+l?RlcXV*-&@BQFH_g$YT1^F)G-nDEqL|Sk-t|NXa!PAElq^{c(mU1ztKeM z*#*0dQA*9AF(9%1=G-w@WjUAgC7f&K%83{L-ctgfCwDlFAU;f;sA zrFs{xf5%WtIwtB#Q!SC-dBQdT9{**(^GtC+TqPo&TFYQ^PY47f$PwIC+SSJFkD+Ai$0OVSNz6xh%eb zd){bk=>=UqDgzfOm;CyI-bB7H47}7ye!#0V4}Yeh+BOeU3QMyCmI0WXy=A=}@cI)* ztnB><4Cy*~KjIH7GI)0ruZqS)NS}a#ZW0{?ne@z)JnRm023@$r~huSb49^0v@+AugD*s;m014|)TN?jPNOLm;) zWAMr^-DOuLHZvMrH52YImqTiQ>Fvsbk)<0Z$v_B8BKg0zvV9AQ2TxhtlLf_V0O10w z0?~daLY1(&s3dJ9f>fNT>$Ru>5UR`V@MZO=BNMnpjHgE38t;Mx4L)b8n4EkPFAaow z$6&71-3_Zh)@53+-5n6i4JHZ*l~Rm4)eIFT4#A4LWt2ucY|ot1(;U<3KZB|W7q%xfoAkRGme0~hoL2~g{4 zs1C3cdKD<8)Ds(czro6d{^3=nK$oc?s&%>|>wwUQNLN%H5J)%56=8ws?P7Rk02C3p zHme{ghg-^la>#?qV_XgV5Eo13tFT4v3m(JgK73{Z_i(XF(UNJSO1_8CRp+S>G(gj) zQeAHFC!Vy!g_iN9x58sIjE1Rs8$&Im+EpZ`)EbA1gq2z&pa?bAx2*>L@+Q}8TQzUX zQtKYQDv(?1YAA;=qh*=83antX%T?n+jQWNyp%3uCw)_-byeFJxHM~QF0l3^@G!_yT zs+;I|7!el?A&F?X+Ez+VW#098yC_5v77dyR9fx;{%Bcz(WlKDO z;to5#r>5Mk{nGF!d7WmYC|Np1Gun_lv-xjBFf*=ye1c z%@O1V8LJSy7i7#pfOmNN%F1Aa9Hz`*V>$vn#(NVkAN1RScRKLG^A6EiTh&o6+aY?9 zME+uj=*y1FRxji3)G0aSWkC;(u6bF^Ml5!xXwB|1uiGgepj%>}zp7l(y1fSd1@Df% zrY^^sjw(d6{G+JRBM;Ws0Z$&l_Q{Gew^+b_Gw1CQGql7&j{_h6w6Vy8ej{e96(;L)MiK7#AqY8mpe zr~nS`|5)6Fw}%dYOz#v(@rinPM=tn8d`QzZ=u_M^tj>|;pNeIK>Ztw5{e&#p4=23) zWYvDr6@h+0^hD6-fM^E9&p03+MJ)E9O1tf#O51o)rTzP$xTDVK`+Oz}qVCc#Zo2Ck z>T2q0=4y_2Rv!OM42;54EO=-K@Kjf_E6tVSyhnz7E*9bikjl^Dt#_B)^SLMpr(DR< z3^|%R?=c%35_tD@lbrYko`(QlkDL@a@{KRhrzbX*d?^^_!ug%Zl@EV~>ux{E6JLpK z825>4;nsfYAtR57XzlkN^2@`@k1?`Z`3Ux^7LWTgt@34BUprGOp7OAHkKq+`lI`HJ z3R!ss*9O0rnO}=|*3`WIYq5$oycdrJxqJ=|%9a0^pl6&SzY{5nR+@b)Hlu&!UGm@$xKFA2-#~8qQMiIm zLwSI1-&B6^qo|-8NjDuAEAf=*5649UFMXW3u#h=i@U#eXgnEzpc3S>0K%oBppZ^_p z|5nZS%B#2jR_*t9tbL+?D+i95_=~t3n&5B0h~t=G6Bw8$1Zm?7u&56(U_BGU_l4tuG*RkJZ=Y9}i$2!WH{R}T9 zzueFG8a1!I$slJ#?l}qiB$aXyJ?g2Hh6z zHo$nY=7D9pV~o-KIY8CaW}xbLR-(V-ZJUt0KXZPoY^VXVqz1XKZW&@HPG{>(|BnG^!(Oo<>UOP737=|AIP7Z800(J)TPFWlos+Smk|!o z4wrEof>^f!k6Ag=t=zufaU1s{c9X~Wm#H-~!Zdc)jA&s*G63BvxYc*3j8BE{`*PVM z)mVbyK&r76X`|DqocT+d@fmC5caQYDJ^I}u{qB-}x5%2uujvvGYieB~Y^t!ax~b~V ziCc|4*)G{oZ)eU+Hb#(4t4_v^$xAJbE_8|7+seo#5}Db`n2l?>zqZ19^M^S)!&uAM zT4`h&okFTW+BBoM3w&dyk%I1K<{3$HMJD{-;c}a4l;FLRw$SuPXBkTq=?T&%STn=y z*a6e73*vx+E!_KYj_lh8>m&I@bjmgc<5|0hvT=8;Qtr$)(jbz*&o=Ih`4WnM-EwDh zLuK-W)Lc&9i(A5Q zEXOM>)}tbIZ?IY&m5pyU9!Blv&4!6!(k+G;9eMs1U=u#yw-|E?S^WnYlW4+s4>DSs zr+OLB=;jCA4Udo~2PvLQxmD51J-7O4MG1?N!A7meS=Ctphk}`GK7Nf+ZO5u}cUN%p zUFOeSjdxhXyD;50+EsyDYdS0s4MvAvl8Hl%X&m>%&HiP^hzK|vxgIc*&4WwOE|$o= zWyY}R#n?tbw}uX?VM}t!HpO|LxoH`0jv)8Z5FE}2?HKlwGjaC!-W z$4)G!VB&aH3cvGZ!+)~sNn^S^u-WL!DfZkJqrDvXq|rt`^@5Qu=Ra?BkV`ih9n5z( z7>l_%|0&}mjoD=CI-|K9@T~DuaC`cZGU|y{bm#NN&*oGAGHzk!%IBclN&E9gf7$E> zBTY=3K6R2zf5vDXG`VnUVf*5-#b)k5AsM9hg3(kCe%?rtg-;pL@iWIxALAN5_V$vA zuEOzCOA3o;xk~OBJ8k+jo80}laf`h3A)~Q8`+~97(>2+KYY#SCwcBPJgm5PQg7H@a zH_aD~d)STJJ%IZD8{EWZi^O*o#;YUrXFlez+4>^h7=H|ZZdBeBVSV^^k6dgTNsavF zR!7)uHz40ce>wTOY0ND1Cy$M>lDqnnyEL%b+Tq)Yka`ub*>EAcrn&n0tB~(Tr2mD# zDE#^3m+Hl-&(SsMWj0n9U^|AyMl~61Kh%r=h_$V?R_B-v~(g#L<% zAE=_^i8fniEqFg4d>i1@(XS9XYNg-gOCJaL^|j!)_~8D5sCLkPpacGdp6CdT(2GCn z*!m{c6jmdox%N-tWMBL!GBpLfHR6N`Ka<}II2b5^iTd@PasmHn%NF6b=I|bT(}?{Y z@r#ybsE9;M7qm_tXcA-*sXyKf@o>N=BN2Uo#oT72dj0Wd5hpDFj`S>q&CpwtLND8F zz3R-BKY<7bZ3a40AHE)xsn{7I>a?g|p4e&3c5GPB#Kgi0C2aM2cE35}6=NC8!*4`R zA3hmB899CUn36jhIw?90zx!A?x@7p&Nt33>MiHc>IJ-@otaih1FPS=a)U3En>8&!N z%^P1cOf52dR9`65jb9te#h+p2A1AkbhWnA@W%Xxx zL1Kb*eGc!TiTKHi_h93k^f?}Im^4E6I%M?3PeS23;bhtKkkLzKA2J%UDfB&pO_l#V zWZa}pE0A0E8_Cl1g^`4xjPibgRbqym^o7x#-7dF%Vf17(SAJ>qW_QSwe_|~d`z4&R zXUW-L;#THt`TUnyvbKC_w3KmQ0X~NS>2d&l&$Ygn(f2(0=vPo)$}CXuVZ*7FGb_@a zA{AC7retJMQQLOeMcKupa*EsJWX@;rGWqDoMg#fuVPl)Pt9Eo_basAbal4Z2oZS4J ztdV)yId?-hS$@fgkvDvA1k1+X7(w#ZBgRm^fZZyyP8#|0Ic|@PE@@MgU0BjKD?2l@ zBzI(C?meuNWS?PC%>UX*z|-N~CDZM#!Fy2_>BV6=O0G%?+yIo6YCu)(T=ZV1+_9y_yJFvZ2#Vf=8|0($kjle`QB)P zA86`YD{GfyMq~a^om}@GL#~I}4Ydk>c+6RNfQ*uAl$OXwNsY zo2`NL{MopcZ?eV^BcJ^Rv{dyQ#<1DyPqaMu3%D!%ccUSH5)aqxGVF)omze#GvUwdkm9tFgr9k+4Z4v)TQPQ=N2KVxLzF{qAbj7gl7eT*tq9z0{*%D3Z(V^pk3sC}UP*I6T;zr;Go z$o+UD=G0l#v4f2u#C4Xv&jCv>gZOH)pEzg4@|~=NvbU6f1=$T5aRF1->NgDd6*f># z39`489rxpBz!nhbRnWP=bU!)&yg|Rs3*!wn_S$){W>x*Va`>(~)!cUh)x6HSQJEO| z`~@S6zrlJ?2i08WChumof8}=%bB>*e-}|lgVrnfXAT;{k)yIl7Pc8#nBT5l+mh`3lAL$th(C=b zk^ipugTn7od)-6cXM?Uu@wRjoq{fb>UCwFnU^`w1 zhsE6PTePmFAnnLjcoZ&cQ(Hf;;rK_fXQKMc0tA=}#R@o<88)Na3@ zT_Df{c%5xukbMNZNI_ru8ZgQK#5xF^-7X;y?9n;dg}K@JBlC+3M;5iq8`x;4z6iRaSp3$u4>bC(u8eE5vwvA0hjn{&4oW_?eX zR6Kob?gEvhzH{!;f`$*DFk?J&-K%w!We$6sY~Zjr!z|8q*qh_W1ndde_T$?dcOR7- SKW)rZWL`|)h114R!T$qWH;$qJ diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 25c242fa214d9b17cf8f336588d46837c45719ba..d4a01a4dcb1b5e77b51e7756a0d78eb81c4013dc 100755 GIT binary patch delta 36096 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 delta 34716 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 z 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 diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm index 093812370c24926fa45b03d23dbfc59828ab388d..f77d8fe57fea70857faa1fb9670eb68e966982fb 100755 GIT binary patch delta 163 zcmW-ZI|{-;7=-`VVjwQ2u`$i;R-PcXStMZaCLSX3E|yvdX@p$IgScxk4D$^$>-3r4 zPv!6O(zDJFW}CrBse%-vpveMDFMYCxq79y4kdCM@NXe4y78x>n1*fX$+D1-vDIl-h m-~}%4IQ=!Y&Heyuc*`{`xEd~BK(Uij5V#Y|=9c?rJ^cWne-_gK delta 166 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 diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index 37e4f85f98f9e211240dff448842353cd49e1180..d7cf00ca41517929bddbe52a0dd7cfdebcd03d1b 100755 GIT binary patch delta 2736 zcmZ`*eM}tJ5r4BEw|BcfvvwfZ5a8``#s>vsIB_^80XA@v2@!Sxqoh_s4!UXXfWzg^ zu9GS`T1EY^>m>H0lC4;E;>1c_w6dyDsj*sFXsPmfhoi|lQLqzgh5)I6fZN&nq zSL(GD6IJF}NQnm-SGW{ojO1LRwS;yX}VBQ7i@gRBiiN_ zNOCD8ScP;>`tq=7_cy?q{A2!GK6q6Omqmj&C|o)u*|>eYEDN`UW=3-_yht>hacOzm z2YRl)fY~;uLQ=ReMV0HMjp3Z2b6ko@iiPeeScL*|9}@UOh#0AHqfosleDR>dRZHVO zj6^LGDI?9fbzs=c(rmDNHr%!g23O1H@G_Fp$F!bF7gX^gf zdK^Ia=pq}E(SyR}f$ES<2o;`_U5J*!wRjM?5f7@|K%6qy@R0|rU9^PVg@RHw#RFU~ zhT#uN>trkw^ktzNB*quQ<*=aq=-A)^FH(<7L^@?F6of)`qH=}m zM5Z7R06rQ9p}90`UJN=%N`dRdwvK)fKgCgup^6)>4}wBgEtTgC3$-i_(?EK-p>ri= zgIB3ot3;_S4;GS&KniT4(Y0(UE)cKYk%9u5hz7|fi)cmT$|?}O2qcFN>A0m30;&l7 zMS@BZpi81a_h9I>(6~-~C17F{JS7&pYwvnlO2wp2xb&y&H{36SIC1wVoD$a>H;KB&jrq#T;{d1fzuxpD z4Mx?ljKdQ(gED<}&hu(Gmw%r(0G!YN-KvscQ3S##;evQQd=##Vwk_juQ5@Uy&%%6j z{?&$8porpAD4^ICY1N9JpO4g4yj?(X+T-XWcO~A6tYZ2l0=U-bNH~O>kLiK0j}X5; z^NP3@OB1R+JMIoE7Qrwj!@f#q2g!dc1mE{;3dG2xsW);~t8@%|yida=I}f8Xopm3O#tk&4%P%Bgyn`kKW3@c}>yWU~7c z*mXS9LQ`xCMDI|uG_8vCP#m86}$7PkVAdb5{`5$o|DUt8-dO(pV! zI48Y6ly57MKaX>=??*Z2cE$crUAd^+9bCVtv9C-eotSapZ)SUb=k9kTyJ!5{Lv0>1bzkduPW)G?AD{L_1?`@y+7j zkIY4?s4JVC*n85-Q3pFW-f9^FV`prN3WVqYa6<6iKBa;6mxs4pc!Y+YAuH_$Q>O5 fhBt|Zv3;;j{Ag@6)Ovf@w|#BXH`OL?jV1mEzJ|eB delta 1775 zcmZ`)drVtZ7(d^+mp0mJ8U@&2uiBPfAcC-*+%fLh$ zO$?yy;iqPc5y6m@=^`Xox2a3qTw*l-gNY_eG}|98nrN1}#7v_Y&*=jT#6Rvm-~0Z) z$Nf&^GJN+QEGmomK`hyn(SAQu#-et#BZJ(13a z!(l=UX+*g?%_wO`{g}GNicbN=aTyd{z)p#kDxy`O^|W3QC1xKc1!AL-$f8Uu36X)D zq+puXwG|qTR0gIH6!xG|mu&$93nK>P6q!oMea$kFg-R;21JI+pKqsd0j;;viRFnP> z4ZMY0CAaZw4u%_1g{k*TBk&{Mklfn4QIK=!PPe6AnqoGJo*Q`6^WYMO(?6$wPvSmP z9)!_vYGaYrk4#%=%Ov+w+|qn3S?Sf-sXQNz;7rJsjdt^EyL$VmQ-~xBUza zRMITQ>H^9cu9fC+%6t&sz$Isvdfz+`j9j&3s%mZvBh^()hro_@YpcL3_ogieBI<{> zB7h6(tsQ0x@8Dm>=iyy^%|6Y_P*~Cf7x9IX-yy7ymc9=O1m8jwL6yU$O?-9Gk#Cxf zBAAKS=Sqyjc}E-%-ZyW?EP*Z}KAA)K=?}{d%5GVNnJL|uJb6BE$ z8FQ;dM}sN46>efHr-?M)3kSt&vAywfp_-mV|__SV{-$S9%$YV^Elg_$=+9*<;+b; zVu`%sN#{R7hNl!=E%6v8Y-{<9N!84KY2sQ6YZkL%aY{JF`CE!ip635UyDBxljkrGZNEQs%pZDMpy#w?K@vmWpbuuHa<#Ve zI>q{~A$vC8^nJlWb7J?ijUQe8x$(_!i7x&;TlIAqu{{hBL@qd Q8!wQu4flr&n;!T63l*6UX#fBK From 16ab684c18deabcde2d9ca2d8a9e9102d50fd489 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 4 Jul 2018 12:51:25 +0200 Subject: [PATCH 100/103] tag AuthorityId::from_slice for std only --- substrate/primitives/src/authority_id.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/substrate/primitives/src/authority_id.rs b/substrate/primitives/src/authority_id.rs index 665a55873669a..2f54157355702 100644 --- a/substrate/primitives/src/authority_id.rs +++ b/substrate/primitives/src/authority_id.rs @@ -26,6 +26,7 @@ pub struct AuthorityId(pub [u8; 32]); impl AuthorityId { /// Create an id from a 32-byte slice. Panics with other lengths. + #[cfg(feature = "std")] fn from_slice(data: &[u8]) -> Self { let mut r = [0u8; 32]; r.copy_from_slice(data); From 9a4889ebc6fa9284591b71bebf32fb97b19f174a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 5 Jul 2018 15:03:10 +0100 Subject: [PATCH 101/103] address formatting grumbles --- polkadot/network/src/consensus.rs | 64 ++++++++++++++----------- polkadot/network/src/lib.rs | 77 ++++++++++++++++--------------- 2 files changed, 76 insertions(+), 65 deletions(-) diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 15c3d42c5b8a9..54c430146813d 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -149,6 +149,39 @@ struct MessageProcessTask { table_router: Router

    , } +impl MessageProcessTask

    { + fn process_message(&self, msg: ConsensusMessage) -> Option> { + match msg { + ConsensusMessage::Bft(msg) => { + let local_id = self.table_router.session_key(); + match process_bft_message(msg, &local_id, &self.validators[..]) { + Ok(Some(msg)) => { + if let Err(_) = self.bft_messages.unbounded_send(msg) { + // if the BFT receiving stream has ended then + // we should just bail. + trace!(target: "bft", "BFT message stream appears to have closed"); + return Some(Async::Ready(())); + } + } + Ok(None) => {} // ignored local message + Err(e) => { + debug!("Message validation failed: {:?}", e); + } + } + } + ConsensusMessage::ChainSpecific(msg, _) => { + if let Ok(Message::Statement(parent_hash, statement)) = ::serde_json::from_slice(&msg) { + if ::polkadot_consensus::check_statement(&statement.statement, &statement.signature, statement.sender, &parent_hash) { + self.table_router.import_statement(statement); + } + } + } + } + + None + } +} + impl Future for MessageProcessTask

    { type Item = (); type Error = (); @@ -156,34 +189,11 @@ impl Future for MessageProcessTask< fn poll(&mut self) -> Poll<(), ()> { loop { match self.inner_stream.poll() { - Ok(Async::Ready(Some(val))) => match val { - ConsensusMessage::Bft(msg) => { - let local_id = self.table_router.session_key(); - match process_bft_message(msg, &local_id, &self.validators[..]) { - Ok(Some(msg)) => { - if let Err(_) = self.bft_messages.unbounded_send(msg) { - // if the BFT receiving stream has ended then - // we should just bail. - trace!(target: "bft", "BFT message stream appears to have closed"); - return Ok(Async::Ready(())); - } - } - Ok(None) => {} // ignored local message - Err(e) => { - debug!("Message validation failed: {:?}", e); - } - } - } - ConsensusMessage::ChainSpecific(msg, _) => { - if let Ok(Message::Statement(parent_hash, statement)) = ::serde_json::from_slice(&msg) { - if ::polkadot_consensus::check_statement(&statement.statement, &statement.signature, statement.sender, &parent_hash) { - self.table_router.import_statement(statement); - } - } - } - } + Ok(Async::Ready(Some(val))) => if let Some(async) = self.process_message(val) { + return Ok(async); + }, Ok(Async::Ready(None)) => return Ok(Async::Ready(())), - Ok(Async::NotReady) => {}, + Ok(Async::NotReady) => (), Err(e) => debug!(target: "p_net", "Error getting consensus message: {:?}", e), } } diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 17086ca91b679..5b6836eed0ae6 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -322,6 +322,43 @@ impl PolkadotProtocol { self.pending = new_pending; } + fn on_polkadot_message(&mut self, ctx: &mut Context, peer_id: PeerId, raw: Vec, msg: Message) { + match msg { + Message::Statement(parent_hash, _statement) => + self.consensus_gossip.on_chain_specific(ctx, peer_id, raw, parent_hash), + Message::SessionKey(parent_hash, key) => { + { + let info = match self.peers.get_mut(&peer_id) { + Some(peer) => peer, + None => return, + }; + + if !info.validator { + ctx.disable_peer(peer_id); + return; + } + + match self.live_consensus { + Some(ref mut consensus) if consensus.parent_hash == parent_hash => { + consensus.session_keys.insert(key, peer_id); + } + _ => {} + } + + info.session_keys.insert(parent_hash, key); + } + self.dispatch_pending_requests(ctx); + } + Message::RequestBlockData(req_id, hash) => { + let block_data = self.live_consensus.as_ref() + .and_then(|c| c.block_data(&hash)); + + send_polkadot_message(ctx, peer_id, Message::BlockData(req_id, block_data)); + } + Message::BlockData(req_id, data) => self.on_block_data(ctx, peer_id, req_id, data), + } + } + fn on_block_data(&mut self, ctx: &mut Context, peer_id: PeerId, req_id: RequestId, data: Option) { match self.in_flight.remove(&(req_id, peer_id)) { Some(req) => { @@ -422,48 +459,12 @@ impl Specialization for PolkadotProtocol { self.consensus_gossip.on_bft_message(ctx, peer_id, msg) } generic_message::Message::ChainSpecific(raw) => { - let msg = match serde_json::from_slice(&raw) { - Ok(msg) => msg, + match serde_json::from_slice(&raw) { + Ok(msg) => self.on_polkadot_message(ctx, peer_id, raw, msg), Err(e) => { trace!(target: "p_net", "Bad message from {}: {}", peer_id, e); ctx.disable_peer(peer_id); - return; - } - }; - - match msg { - Message::Statement(parent_hash, _statement) => - self.consensus_gossip.on_chain_specific(ctx, peer_id, raw, parent_hash), - Message::SessionKey(parent_hash, key) => { - { - let info = match self.peers.get_mut(&peer_id) { - Some(peer) => peer, - None => return, - }; - - if !info.validator { - ctx.disable_peer(peer_id); - return; - } - - match self.live_consensus { - Some(ref mut consensus) if consensus.parent_hash == parent_hash => { - consensus.session_keys.insert(key, peer_id); - } - _ => {} - } - - info.session_keys.insert(parent_hash, key); - } - self.dispatch_pending_requests(ctx); - } - Message::RequestBlockData(req_id, hash) => { - let block_data = self.live_consensus.as_ref() - .and_then(|c| c.block_data(&hash)); - - send_polkadot_message(ctx, peer_id, Message::BlockData(req_id, block_data)); } - Message::BlockData(req_id, data) => self.on_block_data(ctx, peer_id, req_id, data), } } _ => {} From 618535dffa7580939b0e2845e1524bbcc5998dd5 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 6 Jul 2018 09:41:35 +0100 Subject: [PATCH 102/103] rename event_loop to executor --- substrate/rpc/src/subscriptions.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/substrate/rpc/src/subscriptions.rs b/substrate/rpc/src/subscriptions.rs index ec2b8e89f8adf..9013edf742e1c 100644 --- a/substrate/rpc/src/subscriptions.rs +++ b/substrate/rpc/src/subscriptions.rs @@ -34,16 +34,16 @@ type Id = u64; pub struct Subscriptions { next_id: AtomicUsize, active_subscriptions: Mutex>>, - event_loop: TaskExecutor, + executor: TaskExecutor, } impl Subscriptions { /// Creates new `Subscriptions` object. - pub fn new(event_loop: TaskExecutor) -> Self { + pub fn new(executor: TaskExecutor) -> Self { Subscriptions { next_id: Default::default(), active_subscriptions: Default::default(), - event_loop, + executor, } } @@ -66,7 +66,7 @@ impl Subscriptions { .then(|_| Ok(())); self.active_subscriptions.lock().insert(id, tx); - self.event_loop.spawn(future); + self.executor.spawn(future); } } From 98bac98fe7a90c94f7618a8ffb2c4bcda066ca5d Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 6 Jul 2018 11:52:59 +0100 Subject: [PATCH 103/103] some more docs for polkadot-network crate --- polkadot/network/src/consensus.rs | 4 +++- polkadot/network/src/lib.rs | 6 ++++++ polkadot/network/src/router.rs | 6 ++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 54c430146813d..b575856739c6a 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -14,7 +14,9 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! Implementation of the traits for consensus networking for the polkadot protocol. +//! The "consensus" networking code built on top of the base network service. +//! This fulfills the `polkadot_consensus::Network` trait, providing a hook to be called +//! each time consensus begins on a new chain head. use bft; use ed25519; diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 5b6836eed0ae6..f909d0581b329 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -14,6 +14,12 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +//! Polkadot-specific network implementation. +//! +//! This manages gossip of consensus messages for BFT and for parachain statements, +//! parachain block and extrinsic data fetching, communication between collators and validators, +//! and more. + extern crate serde; #[macro_use] extern crate serde_derive; diff --git a/polkadot/network/src/router.rs b/polkadot/network/src/router.rs index f4596213146c1..ff90502a31a24 100644 --- a/polkadot/network/src/router.rs +++ b/polkadot/network/src/router.rs @@ -15,6 +15,12 @@ // along with Polkadot. If not, see . //! Statement routing and consensus table router implementation. +//! +//! During the consensus process, validators exchange statements on validity and availability +//! of parachain candidates. +//! The `Router` in this file hooks into the underlying network to fulfill +//! the `TableRouter` trait from `polkadot-consensus`, which is expected to call into a shared statement table +//! and dispatch evaluation work as necessary when new statements come in. use polkadot_api::{PolkadotApi, LocalPolkadotApi}; use polkadot_consensus::{SharedTable, TableRouter, SignedStatement, GenericStatement, StatementProducer};

    ; + type Input = N::Input; + type Output = N::Output; type Error = Error; fn init(&self, parent_header: &SubstrateHeader, authorities: &[AuthorityId], sign_with: Arc - ) -> Result { + ) -> Result<(Self::Proposer, Self::Input, Self::Output), Error> { use std::time::Duration; const DELAY_UNTIL: Duration = Duration::from_millis(5000); @@ -278,7 +283,7 @@ impl bft::ProposerFactory for ProposerFactory let n_parachains = active_parachains.len(); let table = Arc::new(SharedTable::new(group_info, sign_with.clone(), parent_hash)); - let router = self.network.table_router(table.clone()); + let (router, input, output) = self.network.communication_for(table.clone()); let dynamic_inclusion = DynamicInclusion::new( n_parachains, Instant::now(), @@ -304,8 +309,7 @@ impl bft::ProposerFactory for ProposerFactory ) ); - // TODO [PoC-2]: kick off collation process. - Ok(Proposer { + let proposer = Proposer { client: self.client.clone(), delay: timeout.shared(), handle: self.handle.clone(), @@ -318,7 +322,9 @@ impl bft::ProposerFactory for ProposerFactory table, transaction_pool: self.transaction_pool.clone(), _drop_signal: drop_signal, - }) + }; + + Ok((proposer, input, output)) } } diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index f12ac7b7acabc..4a3170619c949 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -27,119 +27,30 @@ use bft::{self, BftService}; use client::{BlockchainEvents, ChainHead}; use ed25519; use futures::prelude::*; -use futures::{future, Canceled}; use parking_lot::Mutex; use polkadot_api::PolkadotApi; -use polkadot_primitives::AccountId; -use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic, CandidateReceipt}; -use primitives::{Hash, AuthorityId}; -use primitives::block::{Id as BlockId, HeaderHash, Header}; +use primitives::block::Header; use runtime_support::Hashable; -use substrate_network as net; use tokio_core::reactor; use transaction_pool::TransactionPool; -use super::{TableRouter, SharedTable, ProposerFactory}; +use super::{Network, Collators, ProposerFactory}; use error; const TIMER_DELAY_MS: u64 = 5000; const TIMER_INTERVAL_MS: u64 = 500; -struct BftSink { - network: Arc, - parent_hash: HeaderHash, - _e: ::std::marker::PhantomData, -} - -impl Sink for BftSink { - type SinkItem = bft::Communication; - // TODO: replace this with the ! type when that's stabilized - type SinkError = E; - - fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend { - let network_message = net::LocalizedBftMessage { - message: match message { - bft::generic::Communication::Consensus(c) => net::BftMessage::Consensus(match c { - bft::generic::LocalizedMessage::Propose(proposal) => net::SignedConsensusMessage::Propose(net::SignedConsensusProposal { - round_number: proposal.round_number as u32, - proposal: proposal.proposal, - digest: proposal.digest, - sender: proposal.sender, - digest_signature: proposal.digest_signature.signature, - full_signature: proposal.full_signature.signature, - }), - bft::generic::LocalizedMessage::Vote(vote) => net::SignedConsensusMessage::Vote(net::SignedConsensusVote { - sender: vote.sender, - signature: vote.signature.signature, - vote: match vote.vote { - bft::generic::Vote::Prepare(r, h) => net::ConsensusVote::Prepare(r as u32, h), - bft::generic::Vote::Commit(r, h) => net::ConsensusVote::Commit(r as u32, h), - bft::generic::Vote::AdvanceRound(r) => net::ConsensusVote::AdvanceRound(r as u32), - } - }), - }), - bft::generic::Communication::Auxiliary(justification) => net::BftMessage::Auxiliary(justification.uncheck().into()), - }, - parent_hash: self.parent_hash, - }; - self.network.send_bft_message(network_message); - Ok(::futures::AsyncSink::Ready) - } - - fn poll_complete(&mut self) -> ::futures::Poll<(), E> { - Ok(Async::Ready(())) - } -} - -struct Network(Arc); - -impl super::Network for Network { - type TableRouter = Router; - - fn execute(&self, future: F) where F: Future + Send + 'static { - // TODO: CpuPool. - ::std::thread::spawn(move || { let _ = future.wait(); }); - } - - fn table_router(&self, _table: Arc) -> Self::TableRouter { - Router { - network: self.0.clone() - } - } -} - fn start_bft( header: &Header, handle: reactor::Handle, - client: &bft::Authorities, - network: Arc, bft_service: &BftService, ) where - F: bft::ProposerFactory + 'static, + F: bft::Environment + 'static, C: bft::BlockImport + bft::Authorities + 'static, - ::Error: ::std::fmt::Debug, + ::Error: ::std::fmt::Debug, ::Error: ::std::fmt::Display + Into, { - let parent_hash = header.blake2_256().into(); - if bft_service.live_agreement().map_or(false, |h| h == parent_hash) { - return; - } - let authorities = match client.authorities(&BlockId::Hash(parent_hash)) { - Ok(authorities) => authorities, - Err(e) => { - debug!("Error reading authorities: {:?}", e); - return; - } - }; - - let input = Messages { - network_stream: network.bft_messages(parent_hash), - local_id: bft_service.local_id(), - authorities, - }; - - let output = BftSink { network: network, parent_hash: parent_hash, _e: Default::default() }; - match bft_service.build_upon(&header, input.map_err(Into::into), output) { + match bft_service.build_upon(&header) { Ok(Some(bft)) => handle.spawn(bft), Ok(None) => {}, Err(e) => debug!(target: "bft", "BFT agreement error: {:?}", e), @@ -154,9 +65,9 @@ pub struct Service { impl Service { /// Create and start a new instance. - pub fn new( + pub fn new( client: Arc, - network: Arc, + network: N, transaction_pool: Arc>, parachain_empty_duration: Duration, key: ed25519::Pair, @@ -164,6 +75,8 @@ impl Service { where C: BlockchainEvents + ChainHead + bft::BlockImport + bft::Authorities + PolkadotApi + Send + Sync + 'static, C::CheckedBlockId: Send + 'static, + N::TableRouter: Send + 'static, + ::Future: Send + 'static, { let (signal, exit) = ::exit_future::signal(); let thread = thread::spawn(move || { @@ -173,8 +86,8 @@ impl Service { let factory = ProposerFactory { client: client.clone(), transaction_pool: transaction_pool.clone(), - network: Network(network.clone()), - collators: NoCollators, + collators: network.clone(), + network, parachain_empty_duration, handle: core.handle(), }; @@ -182,13 +95,12 @@ impl Service { let notifications = { let handle = core.handle(); - let network = network.clone(); let client = client.clone(); let bft_service = bft_service.clone(); client.import_notification_stream().for_each(move |notification| { if notification.is_new_best { - start_bft(¬ification.header, handle.clone(), &*client, network.clone(), &*bft_service); + start_bft(¬ification.header, handle.clone(), &*bft_service); } Ok(()) }) @@ -210,7 +122,6 @@ impl Service { let timed = { let c = client.clone(); let s = bft_service.clone(); - let n = network.clone(); let handle = core.handle(); interval.map_err(|e| debug!("Timer error: {:?}", e)).for_each(move |_| { @@ -218,7 +129,7 @@ impl Service { let hash = best_block.blake2_256(); if hash == prev_best { debug!("Starting consensus round after a timeout"); - start_bft(&best_block, handle.clone(), &*c, n.clone(), &*s); + start_bft(&best_block, handle.clone(), &*s); } prev_best = hash; } @@ -250,53 +161,3 @@ impl Drop for Service { } } } - -// Collators implementation which never collates anything. -// TODO: do a real implementation. -#[derive(Clone, Copy)] -struct NoCollators; - -impl ::collation::Collators for NoCollators { - type Error = (); - type Collation = future::Empty<::collation::Collation, ()>; - - fn collate(&self, _parachain: ParaId, _relay_parent: Hash) -> Self::Collation { - future::empty() - } - - fn note_bad_collator(&self, _collator: AccountId) { } -} - -type FetchCandidateAdapter = future::Map) -> BlockData>; - -#[derive(Clone)] -struct Router { - network: Arc, -} - -impl Router { - fn fetch_candidate_adapter(data: Vec) -> BlockData { - BlockData(data) - } -} - -impl TableRouter for Router { - type Error = Canceled; - type FetchCandidate = FetchCandidateAdapter; - type FetchExtrinsic = future::FutureResult; - - fn local_candidate_data(&self, hash: Hash, block_data: BlockData, _extrinsic: Extrinsic) { - let data = block_data.0; - self.network.set_local_candidate(Some((hash, data))) - } - - fn fetch_block_data(&self, candidate: &CandidateReceipt) -> Self::FetchCandidate { - let hash = candidate.hash(); - self.network.fetch_candidate(&hash).map(Self::fetch_candidate_adapter) - } - - fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { - future::ok(Extrinsic) - } -} - diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 6182188713cf7..28d6ff927cf39 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -30,6 +30,46 @@ struct BftSink { _e: ::std::marker::PhantomData, } +impl Sink for BftSink { + type SinkItem = bft::Communication; + // TODO: replace this with the ! type when that's stabilized + type SinkError = E; + + fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend { + let network_message = net::LocalizedBftMessage { + message: match message { + bft::generic::Communication::Consensus(c) => net::BftMessage::Consensus(match c { + bft::generic::LocalizedMessage::Propose(proposal) => net::SignedConsensusMessage::Propose(net::SignedConsensusProposal { + round_number: proposal.round_number as u32, + proposal: proposal.proposal, + digest: proposal.digest, + sender: proposal.sender, + digest_signature: proposal.digest_signature.signature, + full_signature: proposal.full_signature.signature, + }), + bft::generic::LocalizedMessage::Vote(vote) => net::SignedConsensusMessage::Vote(net::SignedConsensusVote { + sender: vote.sender, + signature: vote.signature.signature, + vote: match vote.vote { + bft::generic::Vote::Prepare(r, h) => net::ConsensusVote::Prepare(r as u32, h), + bft::generic::Vote::Commit(r, h) => net::ConsensusVote::Commit(r as u32, h), + bft::generic::Vote::AdvanceRound(r) => net::ConsensusVote::AdvanceRound(r as u32), + } + }), + }), + bft::generic::Communication::Auxiliary(justification) => net::BftMessage::Auxiliary(justification.uncheck().into()), + }, + parent_hash: self.parent_hash, + }; + self.network.send_bft_message(network_message); + Ok(::futures::AsyncSink::Ready) + } + + fn poll_complete(&mut self) -> ::futures::Poll<(), E> { + Ok(Async::Ready(())) + } +} + struct Messages { network_stream: net::BftMessageStream, local_id: AuthorityId, diff --git a/substrate/bft/src/generic/mod.rs b/substrate/bft/src/generic/mod.rs index 19e03d50a06dd..014b2463e575a 100644 --- a/substrate/bft/src/generic/mod.rs +++ b/substrate/bft/src/generic/mod.rs @@ -824,18 +824,7 @@ impl Agreement { /// `max_faulty` is the maximum number of faulty nodes. Should be less than /// 1/3 of `nodes`, otherwise agreement may never be reached. /// -/// The input stream should never logically conclude. The logic here assumes -/// that messages flushed to the output stream will eventually reach other nodes and -/// that our own messages are not included in the input stream. -/// -/// Note that it is possible to witness agreement being reached without ever -/// seeing the candidate. Any candidates seen will be checked for validity. -/// -/// Although technically the agreement will always complete (given the eventual -/// delivery of messages), in practice it is possible for this future to -/// conclude without having witnessed the conclusion. -/// In general, this future should be pre-empted by the import of a justification -/// set for this block height. +/// The input and output streams should follow the constraints documented in the crate root. pub fn agree(context: C, nodes: usize, max_faulty: usize, input: I, output: O) -> Agreement where diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index 26b975bacf27a..fd570240ac4cf 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -15,6 +15,20 @@ // along with Substrate. If not, see . //! BFT Agreement based on a rotating proposer in different rounds. +//! +//! Where this crate refers to input stream, should never logically conclude. The logic in this crate +//! assumes +//! that messages flushed to the output stream will eventually reach other nodes and +//! that our own messages are not included in the input stream. +//! +//! Note that it is possible to witness agreement being reached without ever +//! seeing the candidate. Any candidates seen will be checked for validity. +//! +//! Although technically the agreement will always complete (given the eventual +//! delivery of messages), in practice it is possible for this future to +//! conclude without having witnessed the conclusion. +//! In general, this future should be pre-empted by the import of a justification +//! set for this block height. pub mod error; pub mod generic; From 5da52c19fd2cf7d47399e4dfbb54ca89c163e604 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 25 May 2018 16:14:18 +0200 Subject: [PATCH 072/103] fix comments --- polkadot/consensus/src/lib.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index cc743d9ba20ae..96c1e492e52ea 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -122,9 +122,10 @@ pub trait Network { /// The table router type. This should handle importing of any statements, /// routing statements to peers, and driving completion of any `StatementProducers`. type TableRouter: TableRouter; - /// The input stream of BFT messages. Should never logi + /// The input stream of BFT messages. Should never logically conclude. type Input: Stream; - /// The output sink of BFT messages. This + /// The output sink of BFT messages. Messages sent here should eventually pass to all + /// current authorities. type Output: Sink; /// Execute a future in the background. Typically used for fairly heavy computations, From 35ce71446776fde28a6ed2aec6c952ffe71e4115 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 7 Jun 2018 17:55:01 +0200 Subject: [PATCH 073/103] adjust typedefs --- Cargo.lock | 1 + polkadot/consensus/src/lib.rs | 1 - polkadot/consensus/src/service.rs | 15 +++++---------- polkadot/network/src/lib.rs | 26 ++++++++++++++------------ polkadot/service/Cargo.toml | 1 + polkadot/service/src/lib.rs | 14 ++++++++------ substrate/network/src/lib.rs | 2 +- 7 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 52127dca1acdb..7e2777ec0fc84 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1414,6 +1414,7 @@ dependencies = [ "polkadot-consensus 0.1.0", "polkadot-executor 0.1.0", "polkadot-keystore 0.1.0", + "polkadot-network 0.1.0", "polkadot-primitives 0.1.0", "polkadot-runtime 0.1.0", "polkadot-transaction-pool 0.1.0", diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 5a40d79aef67d..4ed2f10161a0b 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -44,7 +44,6 @@ extern crate substrate_codec as codec; extern crate substrate_primitives as primitives; extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; -extern crate substrate_network; extern crate exit_future; extern crate tokio_core; diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 477ed2e65c201..26ddd299477b2 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -27,17 +27,12 @@ use bft::{self, BftService}; use client::{BlockchainEvents, ChainHead}; use ed25519; use futures::prelude::*; -use futures::{future, Canceled}; use polkadot_api::LocalPolkadotApi; -use polkadot_primitives::{BlockId, Block, Header, Hash, AccountId}; -use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic, CandidateReceipt}; -use primitives::AuthorityId; -use runtime_support::Hashable; -use substrate_network as net; +use polkadot_primitives::{Block, Header}; use tokio_core::reactor; use transaction_pool::TransactionPool; -use super::{Network, Collators, TableRouter, SharedTable, ProposerFactory}; +use super::{Network, Collators, ProposerFactory}; use error; const TIMER_DELAY_MS: u64 = 5000; @@ -78,8 +73,8 @@ impl Service { ) -> Service where A: LocalPolkadotApi + Send + Sync + 'static, + A::CheckedBlockId: Send + 'static, C: BlockchainEvents + ChainHead + bft::BlockImport + bft::Authorities + Send + Sync + 'static, - C::CheckedBlockId: Send + 'static, N: Network + Collators + Send + 'static, N::TableRouter: Send + 'static, ::Future: Send + 'static, @@ -118,7 +113,7 @@ impl Service { &core.handle(), ).expect("it is always possible to create an interval with valid params"); let mut prev_best = match client.best_block_header() { - Ok(header) => header.blake2_256(), + Ok(header) => header.hash(), Err(e) => { warn!("Cant's start consensus service. Error reading best block header: {:?}", e); return; @@ -132,7 +127,7 @@ impl Service { interval.map_err(|e| debug!("Timer error: {:?}", e)).for_each(move |_| { if let Ok(best_block) = c.best_block_header() { - let hash = best_block.blake2_256(); + let hash = best_block.hash(); if hash == prev_best { debug!("Starting consensus round after a timeout"); start_bft(&best_block, handle.clone(), &*s); diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index b54d4642865bc..512ce0844c177 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -19,26 +19,28 @@ extern crate substrate_codec as codec; extern crate substrate_network; extern crate substrate_primitives; -extern crate polkadot_consensus as consensus;; +extern crate polkadot_consensus as consensus; extern crate polkadot_primitives; extern crate ed25519; extern crate futures; use codec::Slicable; -use substrate_primitives::{AuthorityId, Hash}; +use polkadot_primitives::{Header, Block, Hash}; +use polkadot_primitives::parachain::{CandidateSignature, Id as ParaId}; +use substrate_primitives::{AuthorityId}; use substrate_network::{PeerId, RequestId}; use substrate_network::specialization::{Specialization, HandlerContext}; -use substrate_network::StatusMessage as FullStatus; - -use polkadot_primitives::parachain::Id as ParaId; +use substrate_network::StatusMessage as GenericFullStatus; use std::collections::HashMap; /// Polkadot protocol id. -pub const DOT_PROTOCOL_ID: ::network::ProtocolId = *b"dot"; +pub const DOT_PROTOCOL_ID: ::substrate_network::ProtocolId = *b"dot"; + +type FullStatus = GenericFullStatus; /// Specialization of the network service for the polkadot protocol. -pub type NetworkService = ::substrate_network::Service; +pub type NetworkService = ::substrate_network::Service; /// Status of a Polkadot node. #[derive(Debug, PartialEq, Eq, Clone)] @@ -116,7 +118,7 @@ pub struct Statement { /// The statement. pub statement: UnsignedStatement, /// The signature. - pub signature: ed25519::Signature, + pub signature: CandidateSignature, /// The sender. pub sender: AuthorityId, } @@ -132,12 +134,12 @@ pub struct PolkadotProtocol { collating_for: Option, } -impl Specialization for PolkadotProtocol { +impl Specialization for PolkadotProtocol { fn status(&self) -> Vec { Status { collating_for: self.collating_for.clone() }.encode() } - fn on_peer_connected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, status: FullStatus) { + fn on_peer_connected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, status: FullStatus) { let status = match Status::decode(&mut &status.chain_status[..]) { Some(status) => status, None => { @@ -155,7 +157,7 @@ impl Specialization for PolkadotProtocol { self.peers.insert(peer_id, PeerInfo { status }); } - fn on_peer_disconnected(&mut self, _ctx: &mut HandlerContext, peer_id: PeerId) { + fn on_peer_disconnected(&mut self, _ctx: &mut HandlerContext, peer_id: PeerId) { if let Some(info) = self.peers.remove(&peer_id) { if let Some(collators) = info.status.collating_for.and_then(|id| self.collators.get_mut(&id)) { if let Some(pos) = collators.iter().position(|x| x == &peer_id) { @@ -165,7 +167,7 @@ impl Specialization for PolkadotProtocol { } } - fn on_message(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, message: Vec) { + fn on_message(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, message: Vec) { } } diff --git a/polkadot/service/Cargo.toml b/polkadot/service/Cargo.toml index bb9fb170bd2d4..7bad8ed3f7bb1 100644 --- a/polkadot/service/Cargo.toml +++ b/polkadot/service/Cargo.toml @@ -20,6 +20,7 @@ polkadot-executor = { path = "../executor" } polkadot-api = { path = "../api" } polkadot-transaction-pool = { path = "../transaction-pool" } polkadot-keystore = { path = "../keystore" } +polkadot-network = { path = "../network" } substrate-runtime-io = { path = "../../substrate/runtime-io" } substrate-primitives = { path = "../../substrate/primitives" } substrate-network = { path = "../../substrate/network" } diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index 1e86d52112b96..51125b427dbe2 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -29,6 +29,7 @@ extern crate polkadot_api; extern crate polkadot_consensus as consensus; extern crate polkadot_transaction_pool as transaction_pool; extern crate polkadot_keystore as keystore; +extern crate polkadot_network; extern crate substrate_runtime_io as runtime_io; extern crate substrate_primitives as primitives; extern crate substrate_network as network; @@ -69,6 +70,7 @@ use client::backend::Backend; use client::{genesis, Client, BlockchainEvents, CallExecutor}; use network::ManageNetwork; use exit_future::Signal; +use polkadot_network::NetworkService; pub use self::error::{ErrorKind, Error}; pub use config::{Configuration, Role, ChainSpec}; @@ -79,7 +81,7 @@ type CodeExecutor = NativeExecutor; pub struct Service { thread: Option>, client: Arc>, - network: Arc>, + network: Arc, transaction_pool: Arc, signal: Option, _consensus: Option, @@ -297,7 +299,7 @@ pub fn new_light(config: Configuration) -> Result< Service< client::light::Backend, - client::RemoteCallExecutor, network::OnDemand>> + client::RemoteCallExecutor, network::OnDemand> >, error::Error, > { @@ -315,7 +317,7 @@ pub fn new_light(config: Configuration) /// Creates full client and register protocol with the network service pub fn new_full(config: Configuration) -> Result, client::LocalCallExecutor, CodeExecutor>>, error::Error> { - let is_validator = (config.roles & Role::VALIDATOR) == Role::VALIDATOR; + let is_validator = (config.roles & Role::AUTHORITY) == Role::AUTHORITY; Service::new(|db_settings, executor, genesis_builder: GenesisBuilder| Ok((Arc::new(client_db::new_client(db_settings, executor, genesis_builder)?), None)), |client| client, @@ -352,13 +354,13 @@ impl Service client_db::DatabaseSettings, CodeExecutor, GenesisBuilder, - ) -> Result<(Arc>, Option>>>), error::Error>, + ) -> Result<(Arc>, Option>>), error::Error>, G: Fn( Arc>, ) -> Arc, C: Fn( Arc>, - Arc>, + Arc, Arc, &Keystore ) -> Result, error::Error>, @@ -483,7 +485,7 @@ impl Service } /// Get shared network instance. - pub fn network(&self) -> Arc> { + pub fn network(&self) -> Arc { self.network.clone() } diff --git a/substrate/network/src/lib.rs b/substrate/network/src/lib.rs index 40f591580a738..a4d33293f0eea 100644 --- a/substrate/network/src/lib.rs +++ b/substrate/network/src/lib.rs @@ -66,7 +66,7 @@ pub use service::{Service, FetchFuture, ConsensusService, BftMessageStream, pub use protocol::{ProtocolStatus}; pub use sync::{Status as SyncStatus, SyncState}; pub use network::{NonReservedPeerMode, NetworkConfiguration, PeerId, ProtocolId, ConnectionFilter, ConnectionDirection}; -pub use message::{generic as generic_message, BftMessage, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal, Status as StatusMessage}; +pub use message::{generic as generic_message, RequestId, BftMessage, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal, Status as StatusMessage}; pub use error::Error; pub use config::{Role, ProtocolConfig}; pub use on_demand::{OnDemand, OnDemandService, Response as OnDemandResponse}; From e4948eb581829a4819a3deb7e6583ac9fc62f2fe Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 11 Jun 2018 20:49:38 +0200 Subject: [PATCH 074/103] extract consensus_gossip out of main network protocol handler --- polkadot/network/src/consensus.rs | 71 ++++--- polkadot/network/src/lib.rs | 5 + .../src/{consensus.rs => consensus_gossip.rs} | 187 +++++++++++++----- substrate/network/src/lib.rs | 4 +- substrate/network/src/protocol.rs | 104 +++++----- substrate/network/src/service.rs | 25 +-- substrate/network/src/specialization.rs | 24 +-- substrate/network/src/sync.rs | 12 +- substrate/network/src/test/consensus.rs | 53 ----- substrate/network/src/test/mod.rs | 13 +- 10 files changed, 244 insertions(+), 254 deletions(-) rename substrate/network/src/{consensus.rs => consensus_gossip.rs} (51%) delete mode 100644 substrate/network/src/test/consensus.rs diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 28d6ff927cf39..9920e2c6ba20f 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -18,28 +18,29 @@ use consensus::{Network as ConsensusNetwork, TableRouter}; use bft; -use substrate_network as net; -use substrate_primitives::block::{Id as BlockId, HeaderHash, Header}; +use substrate_network::{self as net, generic_message as msg}; +use subsrate_primitives::AuthorityId; +use polkadot_primitives::{Block, Hash, Header, BlockId}; use futures::prelude::*; use super::NetworkService; struct BftSink { - network: Arc, - parent_hash: HeaderHash, + network: Arc>, + parent_hash: Hash, _e: ::std::marker::PhantomData, } impl Sink for BftSink { - type SinkItem = bft::Communication; + type SinkItem = bft::Communication; // TODO: replace this with the ! type when that's stabilized type SinkError = E; - fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend { + fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend, E> { let network_message = net::LocalizedBftMessage { message: match message { - bft::generic::Communication::Consensus(c) => net::BftMessage::Consensus(match c { - bft::generic::LocalizedMessage::Propose(proposal) => net::SignedConsensusMessage::Propose(net::SignedConsensusProposal { + bft::generic::Communication::Consensus(c) => msg::BftMessage::Consensus(match c { + bft::generic::LocalizedMessage::Propose(proposal) => msg::SignedConsensusMessage::Propose(msg::SignedConsensusProposal { round_number: proposal.round_number as u32, proposal: proposal.proposal, digest: proposal.digest, @@ -47,17 +48,17 @@ impl Sink for BftSink { digest_signature: proposal.digest_signature.signature, full_signature: proposal.full_signature.signature, }), - bft::generic::LocalizedMessage::Vote(vote) => net::SignedConsensusMessage::Vote(net::SignedConsensusVote { + bft::generic::LocalizedMessage::Vote(vote) => msg::SignedConsensusMessage::Vote(msg::SignedConsensusVote { sender: vote.sender, signature: vote.signature.signature, vote: match vote.vote { - bft::generic::Vote::Prepare(r, h) => net::ConsensusVote::Prepare(r as u32, h), - bft::generic::Vote::Commit(r, h) => net::ConsensusVote::Commit(r as u32, h), - bft::generic::Vote::AdvanceRound(r) => net::ConsensusVote::AdvanceRound(r as u32), + bft::generic::Vote::Prepare(r, h) => msg::ConsensusVote::Prepare(r as u32, h), + bft::generic::Vote::Commit(r, h) => msg::ConsensusVote::Commit(r as u32, h), + bft::generic::Vote::AdvanceRound(r) => msg::ConsensusVote::AdvanceRound(r as u32), } }), }), - bft::generic::Communication::Auxiliary(justification) => net::BftMessage::Auxiliary(justification.uncheck().into()), + bft::generic::Communication::Auxiliary(justification) => msg::BftMessage::Auxiliary(justification.uncheck().into()), }, parent_hash: self.parent_hash, }; @@ -71,13 +72,13 @@ impl Sink for BftSink { } struct Messages { - network_stream: net::BftMessageStream, + network_stream: msg::BftMessageStream, local_id: AuthorityId, authorities: Vec, } impl Stream for Messages { - type Item = bft::Communication; + type Item = bft::Communication; type Error = bft::Error; fn poll(&mut self) -> Poll, Self::Error> { @@ -101,10 +102,10 @@ impl Stream for Messages { } } -fn process_message(msg: net::LocalizedBftMessage, local_id: &AuthorityId, authorities: &[AuthorityId]) -> Result, bft::Error> { +fn process_message(msg: msg::LocalizedBftMessage, local_id: &AuthorityId, authorities: &[AuthorityId]) -> Result>, bft::Error> { Ok(Some(match msg.message { - net::BftMessage::Consensus(c) => bft::generic::Communication::Consensus(match c { - net::SignedConsensusMessage::Propose(proposal) => bft::generic::LocalizedMessage::Propose({ + msg::BftMessage::Consensus(c) => bft::generic::Communication::Consensus(match c { + msg::SignedConsensusMessage::Propose(proposal) => bft::generic::LocalizedMessage::Propose({ if &proposal.sender == local_id { return Ok(None) } let proposal = bft::generic::LocalizedProposal { round_number: proposal.round_number as usize, @@ -125,7 +126,7 @@ fn process_message(msg: net::LocalizedBftMessage, local_id: &AuthorityId, author trace!(target: "bft", "importing proposal message for round {} from {}", proposal.round_number, Hash::from(proposal.sender)); proposal }), - net::SignedConsensusMessage::Vote(vote) => bft::generic::LocalizedMessage::Vote({ + msg::SignedConsensusMessage::Vote(vote) => bft::generic::LocalizedMessage::Vote({ if &vote.sender == local_id { return Ok(None) } let vote = bft::generic::LocalizedVote { sender: vote.sender, @@ -134,9 +135,9 @@ fn process_message(msg: net::LocalizedBftMessage, local_id: &AuthorityId, author signer: ed25519::Public(vote.sender), }, vote: match vote.vote { - net::ConsensusVote::Prepare(r, h) => bft::generic::Vote::Prepare(r as usize, h), - net::ConsensusVote::Commit(r, h) => bft::generic::Vote::Commit(r as usize, h), - net::ConsensusVote::AdvanceRound(r) => bft::generic::Vote::AdvanceRound(r as usize), + msg::ConsensusVote::Prepare(r, h) => bft::generic::Vote::Prepare(r as usize, h), + msg::ConsensusVote::Commit(r, h) => bft::generic::Vote::Commit(r as usize, h), + msg::ConsensusVote::AdvanceRound(r) => bft::generic::Vote::AdvanceRound(r as usize), } }; bft::check_vote(authorities, &msg.parent_hash, &vote)?; @@ -145,7 +146,7 @@ fn process_message(msg: net::LocalizedBftMessage, local_id: &AuthorityId, author vote }), }), - net::BftMessage::Auxiliary(a) => { + msg::BftMessage::Auxiliary(a) => { let justification = bft::UncheckedJustification::from(a); // TODO: get proper error let justification: Result<_, bft::Error> = bft::check_prepare_justification(authorities, msg.parent_hash, justification) @@ -156,15 +157,15 @@ fn process_message(msg: net::LocalizedBftMessage, local_id: &AuthorityId, author } impl Sink for BftSink { - type SinkItem = bft::Communication; + type SinkItem = bft::Communication; // TODO: replace this with the ! type when that's stabilized type SinkError = E; - fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend { - let network_message = net::LocalizedBftMessage { + fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend, E> { + let network_message = msg::LocalizedBftMessage { message: match message { - bft::generic::Communication::Consensus(c) => net::BftMessage::Consensus(match c { - bft::generic::LocalizedMessage::Propose(proposal) => net::SignedConsensusMessage::Propose(net::SignedConsensusProposal { + bft::generic::Communication::Consensus(c) => msg::BftMessage::Consensus(match c { + bft::generic::LocalizedMessage::Propose(proposal) => msg::SignedConsensusMessage::Propose(msg::SignedConsensusProposal { round_number: proposal.round_number as u32, proposal: proposal.proposal, digest: proposal.digest, @@ -172,17 +173,17 @@ impl Sink for BftSink { digest_signature: proposal.digest_signature.signature, full_signature: proposal.full_signature.signature, }), - bft::generic::LocalizedMessage::Vote(vote) => net::SignedConsensusMessage::Vote(net::SignedConsensusVote { + bft::generic::LocalizedMessage::Vote(vote) => msg::SignedConsensusMessage::Vote(msg::SignedConsensusVote { sender: vote.sender, signature: vote.signature.signature, vote: match vote.vote { - bft::generic::Vote::Prepare(r, h) => net::ConsensusVote::Prepare(r as u32, h), - bft::generic::Vote::Commit(r, h) => net::ConsensusVote::Commit(r as u32, h), - bft::generic::Vote::AdvanceRound(r) => net::ConsensusVote::AdvanceRound(r as u32), + bft::generic::Vote::Prepare(r, h) => msg::ConsensusVote::Prepare(r as u32, h), + bft::generic::Vote::Commit(r, h) => msg::ConsensusVote::Commit(r as u32, h), + bft::generic::Vote::AdvanceRound(r) => msg::ConsensusVote::AdvanceRound(r as u32), } }), }), - bft::generic::Communication::Auxiliary(justification) => net::BftMessage::Auxiliary(justification.uncheck().into()), + bft::generic::Communication::Auxiliary(justification) => msg::BftMessage::Auxiliary(justification.uncheck().into()), }, parent_hash: self.parent_hash, }; @@ -194,7 +195,3 @@ impl Sink for BftSink { Ok(Async::Ready(())) } } - -impl ConsensusNetwork for NetworkService { - -} diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 512ce0844c177..842478b322b75 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -134,6 +134,11 @@ pub struct PolkadotProtocol { collating_for: Option, } +/// Polkadot-specific messages. +pub enum Message { + +} + impl Specialization for PolkadotProtocol { fn status(&self) -> Vec { Status { collating_for: self.collating_for.clone() }.encode() diff --git a/substrate/network/src/consensus.rs b/substrate/network/src/consensus_gossip.rs similarity index 51% rename from substrate/network/src/consensus.rs rename to substrate/network/src/consensus_gossip.rs index 75bd383c3a358..81467f5b8737f 100644 --- a/substrate/network/src/consensus.rs +++ b/substrate/network/src/consensus_gossip.rs @@ -14,7 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see .? -//! Consensus related bits of the network service. +//! Utility for gossip of network messages between authorities. +//! Handles chain-specific and standard BFT messages. use std::collections::{HashMap, HashSet}; use futures::sync::mpsc; @@ -32,18 +33,30 @@ struct PeerConsensus { known_messages: HashSet, } +#[derive(Clone)] +enum ConsensusMessage { + Bft(message::LocalizedBftMessage), + ChainSpecific(Vec, B::Hash), +} + +struct MessageEntry { + hash: B::Hash, + message: ConsensusMessage, + instant: Instant, +} + /// Consensus network protocol handler. Manages statements and candidate requests. -pub struct Consensus { +pub struct ConsensusGossip { peers: HashMap>, bft_message_sink: Option<(mpsc::UnboundedSender>, B::Hash)>, - messages: Vec<(B::Hash, Instant, message::Message)>, + messages: Vec>, message_hashes: HashSet, } -impl Consensus where B::Header: HeaderT { +impl ConsensusGossip where B::Header: HeaderT { /// Create a new instance. - pub(crate) fn new() -> Self { - Consensus { + pub fn new() -> Self { + ConsensusGossip { peers: HashMap::new(), bft_message_sink: None, messages: Default::default(), @@ -52,20 +65,25 @@ impl Consensus where B::Header: HeaderT { } /// Closes all notification streams. - pub(crate) fn restart(&mut self) { + pub fn abort(&mut self) { self.bft_message_sink = None; } /// Handle new connected peer. - pub(crate) fn new_peer(&mut self, protocol: &mut Context, peer_id: PeerId, roles: &[message::Role]) { + pub fn new_peer(&mut self, protocol: &mut Context, peer_id: PeerId, roles: &[message::Role]) { if roles.iter().any(|r| *r == message::Role::Authority) { trace!(target:"sync", "Registering authority {}", peer_id); // Send out all known messages. // TODO: limit by size let mut known_messages = HashSet::new(); - for &(ref hash, _, ref message) in self.messages.iter() { - known_messages.insert(hash.clone()); - protocol.send_message(peer_id, message.clone()); + for entry in self.messages.iter() { + known_messages.insert(entry.hash); + let message = match entry.message { + ConsensusMessage::Bft(ref bft) => GenericMessage::BftMessage(bft.clone()), + ConsensusMessage::ChainSpecific(ref msg, _) => GenericMessage::ChainSpecific(msg.clone()), + }; + + protocol.send_message(peer_id, message); } self.peers.insert(peer_id, PeerConsensus { known_messages, @@ -81,19 +99,32 @@ impl Consensus where B::Header: HeaderT { } } - fn register_message(&mut self, hash: B::Hash, message: message::Message) { + fn register_message(&mut self, hash: B::Hash, message: ConsensusMessage) { if self.message_hashes.insert(hash) { - self.messages.push((hash, Instant::now(), message)); + self.messages.push(MessageEntry { + hash, + instant: Instant::now(), + message, + }); } } - pub(crate) fn on_bft_message(&mut self, protocol: &mut Context, peer_id: PeerId, message: message::LocalizedBftMessage, hash: B::Hash) { + /// Handles incoming BFT message, passing to stream and repropagating. + pub fn on_bft_message(&mut self, protocol: &mut Context, peer_id: PeerId, message: message::LocalizedBftMessage) { + let generic = GenericMessage::BftMessage(message); + let hash = ::protocol::hash_message(&generic); + + let message = match generic { + GenericMessage::BftMessage(msg) => msg, + _ => panic!("`generic` is known to be the `BftMessage` variant; qed"), + }; + if self.message_hashes.contains(&hash) { trace!(target:"sync", "Ignored already known BFT message from {}", peer_id); return; } - match (protocol.chain().info(), protocol.chain().header(&BlockId::Hash(message.parent_hash))) { + match (protocol.client().info(), protocol.client().header(&BlockId::Hash(message.parent_hash))) { (_, Err(e)) | (Err(e), _) => { debug!(target:"sync", "Error reading blockchain: {:?}", e); return; @@ -124,18 +155,17 @@ impl Consensus where B::Header: HeaderT { return; } - let message = GenericMessage::BftMessage(message); - self.register_message(hash.clone(), message.clone()); - // Propagate to other peers. - self.propagate(protocol, message, hash); + // propagate to other peers. + self.multicast(protocol, ConsensusMessage::Bft(message), Some(hash)); } - pub(crate) fn bft_messages(&mut self, parent_hash: B::Hash) -> mpsc::UnboundedReceiver> { + /// Get a stream of BFT messages relevant to consensus on top of a given parent hash. + pub fn bft_messages(&mut self, parent_hash: B::Hash) -> mpsc::UnboundedReceiver> { let (sink, stream) = mpsc::unbounded(); - for &(_, _, ref message) in self.messages.iter() { - let bft_message = match *message { - GenericMessage::BftMessage(ref msg) => msg, + for entry in self.messages.iter() { + let bft_message = match entry.message { + ConsensusMessage::Bft(ref msg) => msg, _ => continue, }; @@ -148,44 +178,61 @@ impl Consensus where B::Header: HeaderT { stream } - pub(crate) fn send_bft_message(&mut self, protocol: &mut Context, message: message::LocalizedBftMessage) { - // Broadcast message to all validators. - trace!(target:"sync", "Broadcasting BFT message {:?}", message); - let message = GenericMessage::BftMessage(message); - let hash = ::protocol::hash_message(&message); - self.register_message(hash.clone(), message.clone()); - self.propagate(protocol, message, hash); + /// Multicast a chain-specific message to other authorities. + pub fn multicast_chain_specific(&mut self, protocol: &mut Context, parent_hash: B::Hash, message: Vec) { + trace!(target: "bft", "sending chain-specific message"); + self.multicast(protocol, ConsensusMessage::ChainSpecific(message, parent_hash), None); } - pub(crate) fn peer_disconnected(&mut self, _protocol: &mut Context, peer_id: PeerId) { + /// Multicast a BFT message to other authorities + pub fn multicast_bft_message(&mut self, protocol: &mut Context, message: message::LocalizedBftMessage) { + // Broadcast message to all authorities. + trace!(target:"bft", "Broadcasting BFT message {:?}", message); + self.multicast(protocol, ConsensusMessage::Bft(message), None); + } + + /// Call when a peer has been disconnected to stop tracking gossip status. + pub fn peer_disconnected(&mut self, _protocol: &mut Context, peer_id: PeerId) { self.peers.remove(&peer_id); } - pub(crate) fn collect_garbage(&mut self, best_header: Option<&B::Header>) { + /// Prune old or no longer relevant consensus messages. + pub fn collect_garbage(&mut self, best_header: Option<&B::Header>) { let hashes = &mut self.message_hashes; let before = self.messages.len(); let now = Instant::now(); - self.messages.retain(|&(ref hash, timestamp, ref message)| { - if timestamp >= now - MESSAGE_LIFETIME && + self.messages.retain(|entry| { + if entry.instant + MESSAGE_LIFETIME >= now && best_header.map_or(true, |header| - match *message { - GenericMessage::BftMessage(ref msg) => &msg.parent_hash != header.parent_hash(), - _ => true, + match entry.message { + ConsensusMessage::Bft(ref msg) => &msg.parent_hash != header.parent_hash(), + ConsensusMessage::ChainSpecific(_, ref h) => h != header.parent_hash(), }) { true } else { - hashes.remove(hash); + hashes.remove(&entry.hash); false } }); if self.messages.len() != before { - trace!(target:"sync", "Cleaned up {} stale messages", before - self.messages.len()); + trace!(target:"bft", "Cleaned up {} stale messages", before - self.messages.len()); } for (_, ref mut peer) in self.peers.iter_mut() { peer.known_messages.retain(|h| hashes.contains(h)); } } + + fn multicast(&mut self, protocol: &mut Context, message: ConsensusMessage, hash: Option) { + let generic = match message { + ConsensusMessage::Bft(ref message) => GenericMessage::BftMessage(message.clone()), + ConsensusMessage::ChainSpecific(ref message, _) => GenericMessage::ChainSpecific(message.clone()), + }; + + let hash = hash.unwrap_or_else(|| ::protocol::hash_message(&generic)); + self.register_message(hash, message); + self.propagate(protocol, generic, hash); + } } #[cfg(test)] @@ -193,8 +240,8 @@ mod tests { use runtime_primitives::bft::Justification; use runtime_primitives::testing::{H256, Header, Block as RawBlock}; use std::time::Instant; - use message::{self, generic::Message as GenericMessage}; - use super::{Consensus, MESSAGE_LIFETIME}; + use message::{self, generic}; + use super::*; type Block = RawBlock; @@ -202,11 +249,11 @@ mod tests { fn collects_garbage() { let prev_hash = H256::random(); let best_hash = H256::random(); - let mut consensus = Consensus::::new(); + let mut consensus = ConsensusGossip::::new(); let now = Instant::now(); let m1_hash = H256::random(); let m2_hash = H256::random(); - let m1 = GenericMessage::BftMessage(message::LocalizedBftMessage { + let m1 = ConsensusMessage::Bft(message::LocalizedBftMessage { parent_hash: prev_hash, message: message::generic::BftMessage::Auxiliary(Justification { round_number: 0, @@ -214,16 +261,20 @@ mod tests { signatures: Default::default(), }), }); - let m2 = GenericMessage::BftMessage(message::LocalizedBftMessage { - parent_hash: best_hash, - message: message::generic::BftMessage::Auxiliary(Justification { - round_number: 0, - hash: Default::default(), - signatures: Default::default(), - }), - }); - consensus.messages.push((m1_hash, now, m1)); - consensus.messages.push((m2_hash, now, m2.clone())); + let m2 = ConsensusMessage::ChainSpecific(vec![1, 2, 3], best_hash); + + macro_rules! push_msg { + ($hash:expr, $now: expr, $m:expr) => { + consensus.messages.push(MessageEntry { + hash: $hash, + instant: $now, + message: $m, + }) + } + } + + push_msg!(m1_hash, now, m1); + push_msg!(m2_hash, now, m2.clone()); consensus.message_hashes.insert(m1_hash); consensus.message_hashes.insert(m2_hash); @@ -254,9 +305,37 @@ mod tests { // make timestamp expired consensus.messages.clear(); - consensus.messages.push((m2_hash, now - MESSAGE_LIFETIME, m2)); + push_msg!(m2_hash, now - MESSAGE_LIFETIME, m2); consensus.collect_garbage(None); assert!(consensus.messages.is_empty()); assert!(consensus.message_hashes.is_empty()); } + + #[test] + fn bft_messages_include_those_sent_before_asking_for_stream() { + use futures::Stream; + + let mut consensus = ConsensusGossip::new(); + + let bft_message = generic::BftMessage::Consensus(generic::SignedConsensusMessage::Vote(generic::SignedConsensusVote { + vote: generic::ConsensusVote::AdvanceRound(0), + sender: [0; 32], + signature: Default::default(), + })); + + let parent_hash = [1; 32].into(); + + let localized = ::message::LocalizedBftMessage:: { + message: bft_message, + parent_hash: parent_hash, + }; + + let message = generic::Message::BftMessage(localized.clone()); + let message_hash = ::protocol::hash_message::(&message); + + consensus.register_message(message_hash, ConsensusMessage::Bft(localized.clone())); + let stream = consensus.bft_messages(parent_hash); + + assert_eq!(stream.wait().next(), Some(Ok(localized))); + } } diff --git a/substrate/network/src/lib.rs b/substrate/network/src/lib.rs index a4d33293f0eea..73761c22ac6ed 100644 --- a/substrate/network/src/lib.rs +++ b/substrate/network/src/lib.rs @@ -54,8 +54,8 @@ mod message; mod config; mod chain; mod blocks; -mod consensus; mod on_demand; +pub mod consensus_gossip; pub mod error; pub mod specialization; @@ -63,7 +63,7 @@ pub mod specialization; pub use service::{Service, FetchFuture, ConsensusService, BftMessageStream, TransactionPool, Params, ManageNetwork, SyncProvider}; -pub use protocol::{ProtocolStatus}; +pub use protocol::{ProtocolStatus, PeerInfo, Context}; pub use sync::{Status as SyncStatus, SyncState}; pub use network::{NonReservedPeerMode, NetworkConfiguration, PeerId, ProtocolId, ConnectionFilter, ConnectionDirection}; pub use message::{generic as generic_message, RequestId, BftMessage, LocalizedBftMessage, ConsensusVote, SignedConsensusVote, SignedConsensusMessage, SignedConsensusProposal, Status as StatusMessage}; diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index 3605d6471f1de..9775a6393509f 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -18,7 +18,7 @@ use std::collections::{HashMap, HashSet}; use std::{mem, cmp}; use std::sync::Arc; use std::time; -use parking_lot::{RwLock, Mutex}; +use parking_lot::RwLock; use serde_json; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, Hashing, HashingFor}; use runtime_primitives::generic::BlockId; @@ -28,8 +28,7 @@ use message::{self, Message}; use message::generic::Message as GenericMessage; use specialization::Specialization; use sync::{ChainSync, Status as SyncStatus, SyncState}; -use consensus::Consensus; -use service::{Role, TransactionPool, BftMessageStream}; +use service::{Role, TransactionPool}; use config::ProtocolConfig; use chain::Client; use on_demand::OnDemandService; @@ -50,12 +49,11 @@ const MAX_BLOCK_DATA_RESPONSE: u32 = 128; // Lock must always be taken in order declared here. pub struct Protocol> { config: ProtocolConfig, - specialization: RwLock, context_data: ContextData, on_demand: Option>, genesis_hash: B::Hash, sync: RwLock>, - consensus: Mutex>, + specialization: RwLock, // Connected peers pending Status message. handshaking_peers: RwLock>, transaction_pool: Arc>, @@ -93,6 +91,7 @@ struct Peer { next_request_id: message::RequestId, } +/// Info about a peer's known state. #[derive(Debug)] pub struct PeerInfo { /// Roles @@ -105,15 +104,32 @@ pub struct PeerInfo { pub best_number: ::Number, } +/// Context for a network-specific handler. +pub trait Context { + /// Get a reference to the client. + fn client(&self) -> &::chain::Client; + + /// Disable a peer + fn disable_peer(&mut self, peer_id: PeerId); + /// Disconnect peer + fn disconnect_peer(&mut self, peer_id: PeerId); + + /// Get peer info. + fn peer_info(&self, peer: PeerId) -> Option>; + + /// Send a message to a peer. + fn send_message(&mut self, peer_id: PeerId, data: ::message::Message); +} + /// Protocol context. -pub struct Context<'a, B: 'a + BlockT> { +pub(crate) struct ProtocolContext<'a, B: 'a + BlockT> { io: &'a mut SyncIo, context_data: &'a ContextData, } -impl<'a, B: BlockT + 'a> Context<'a, B> { +impl<'a, B: BlockT + 'a> ProtocolContext<'a, B> { pub(crate) fn new(context_data: &'a ContextData, io: &'a mut SyncIo) -> Self { - Context { + ProtocolContext { io, context_data, } @@ -143,24 +159,23 @@ impl<'a, B: BlockT + 'a> Context<'a, B> { } }) } - - /// Get a handle to the chain. - pub fn chain(&self) -> &Client { - &*self.context_data.chain - } } -impl<'a, B: BlockT + 'a> ::specialization::HandlerContext for Context<'a, B> { - fn send(&mut self, peer_id: PeerId, message: Vec) { - self.send_message(peer_id, GenericMessage::ChainSpecific(message)); +impl<'a, B: BlockT + 'a> Context for ProtocolContext<'a, B> { + fn send_message(&mut self, peer_id: PeerId, message: Message) { + ProtocolContext::send_message(self, peer_id, message); } fn disable_peer(&mut self, peer_id: PeerId) { - Context::disable_peer(self, peer_id); + ProtocolContext::disable_peer(self, peer_id); } fn disconnect_peer(&mut self, peer_id: PeerId) { - Context::disable_peer(self, peer_id); + ProtocolContext::disconnect_peer(self, peer_id); + } + + fn peer_info(&self, peer_id: PeerId) -> Option> { + ProtocolContext::peer_info(self, peer_id) } fn client(&self) -> &Client { @@ -188,7 +203,6 @@ impl> Protocol where B::Header: HeaderT> Protocol where B::Header: HeaderT> Protocol where B::Header: HeaderT { - self.on_block_announce(io, peer_id, announce); - }, - GenericMessage::BftMessage(m) => self.on_bft_message(io, peer_id, m, HashingFor::::hash(data)), + GenericMessage::BlockAnnounce(announce) => self.on_block_announce(io, peer_id, announce), GenericMessage::Transactions(m) => self.on_extrinsics(io, peer_id, m), GenericMessage::RemoteCallRequest(request) => self.on_remote_call_request(io, peer_id, request), GenericMessage::RemoteCallResponse(response) => self.on_remote_call_response(io, peer_id, response), - GenericMessage::ChainSpecific(msg) => self.on_chain_specific(io, peer_id, msg), + other => self.specialization.write().on_message(&mut ProtocolContext::new(&self.context_data, io), peer_id, other), } } @@ -284,7 +295,7 @@ impl> Protocol where B::Header: HeaderT> Protocol where B::Header: HeaderT> Protocol where B::Header: HeaderT, response: message::BlockResponse) { // TODO: validate response trace!(target: "sync", "BlockResponse {} from {} with {} blocks", response.id, peer, response.blocks.len()); - self.sync.write().on_block_data(&mut Context::new(&self.context_data, io), peer, request, response); - } - - fn on_bft_message(&self, io: &mut SyncIo, peer: PeerId, message: message::LocalizedBftMessage, hash: B::Hash) { - trace!(target: "sync", "BFT message from {}: {:?}", peer, message); - self.consensus.lock().on_bft_message(&mut Context::new(&self.context_data, io), peer, message, hash); - } - - fn on_chain_specific(&self, io: &mut SyncIo, peer: PeerId, message: Vec) { - self.specialization.write().on_message(&mut Context::new(&self.context_data, io), peer, message); - } - - /// See `ConsensusService` trait. - pub fn send_bft_message(&self, io: &mut SyncIo, message: message::LocalizedBftMessage) { - self.consensus.lock().send_bft_message(&mut Context::new(&self.context_data, io), message) - } - - /// See `ConsensusService` trait. - pub fn bft_messages(&self, parent_hash: B::Hash) -> BftMessageStream { - self.consensus.lock().bft_messages(parent_hash) + self.sync.write().on_block_data(&mut ProtocolContext::new(&self.context_data, io), peer, request, response); } /// Perform time based maintenance. pub fn tick(&self, io: &mut SyncIo) { self.maintain_peers(io); self.on_demand.as_ref().map(|s| s.maintain_peers(io)); - self.consensus.lock().collect_garbage(None); } fn maintain_peers(&self, io: &mut SyncIo) { @@ -457,9 +448,9 @@ impl> Protocol where B::Header: HeaderT> Protocol where B::Header: HeaderT) { @@ -553,7 +545,7 @@ impl> Protocol where B::Header: HeaderT> Protocol where B::Header: HeaderT) { @@ -596,9 +586,9 @@ impl> Protocol where B::Header: HeaderT(&self, io: &mut SyncIo, f: F) -> U - where F: FnOnce(&mut S, &mut ::specialization::HandlerContext) -> U + where F: FnOnce(&mut S, &mut Context) -> U { - f(&mut* self.specialization.write(), &mut Context::new(&self.context_data, io)) + f(&mut* self.specialization.write(), &mut ProtocolContext::new(&self.context_data, io)) } } diff --git a/substrate/network/src/service.rs b/substrate/network/src/service.rs index ae97b9fbc29f1..4098f443fe881 100644 --- a/substrate/network/src/service.rs +++ b/substrate/network/src/service.rs @@ -24,7 +24,7 @@ NetworkConfiguration , NonReservedPeerMode, ErrorKind}; use network_devp2p::{NetworkService}; use core_io::{TimerToken}; use io::NetSyncIo; -use protocol::{Protocol, ProtocolStatus, PeerInfo as ProtocolPeerInfo}; +use protocol::{Protocol, ProtocolContext, Context, ProtocolStatus, PeerInfo as ProtocolPeerInfo}; use config::{ProtocolConfig}; use error::Error; use chain::Client; @@ -93,7 +93,7 @@ pub trait ConsensusService: Send + Sync { /// Service able to execute closure in the network context. pub trait ExecuteInContext: Send + Sync { /// Execute closure in network context. - fn execute_in_context)>(&self, closure: F); + fn execute_in_context)>(&self, closure: F); } /// devp2p Protocol handler @@ -182,7 +182,7 @@ impl> Service where B::Header: H /// Execute a closure with the chain-specific network specialization. /// If the network is unavailable, this will return `None`. pub fn with_spec(&self, f: F) -> Option - where F: FnOnce(&mut S, &mut ::specialization::HandlerContext) -> U + where F: FnOnce(&mut S, &mut Context) -> U { let mut res = None; self.network.with_context(self.protocol_id, |context| { @@ -218,7 +218,7 @@ impl> Drop for Service where B:: impl> ExecuteInContext for Service where B::Header: HeaderT { fn execute_in_context)>(&self, closure: F) { self.network.with_context(self.protocol_id, |context| { - closure(&mut ::protocol::Context::new(self.handler.protocol.context_data(), &mut NetSyncIo::new(context))) + closure(&mut ProtocolContext::new(self.handler.protocol.context_data(), &mut NetSyncIo::new(context))) }); } } @@ -257,23 +257,6 @@ impl> SyncProvider for Service> ConsensusService for Service where B::Header: HeaderT { - fn connect_to_authorities(&self, _addresses: &[String]) { - //TODO: implement me - } - - fn bft_messages(&self, parent_hash: B::Hash) -> BftMessageStream { - self.handler.protocol.bft_messages(parent_hash) - } - - fn send_bft_message(&self, message: LocalizedBftMessage) { - self.network.with_context(self.protocol_id, |context| { - self.handler.protocol.send_bft_message(&mut NetSyncIo::new(context), message); - }); - } -} - impl> NetworkProtocolHandler for ProtocolHandler where B::Header: HeaderT { fn initialize(&self, io: &NetworkContext, _host_info: &HostInfo) { io.register_timer(TICK_TOKEN, TICK_TIMEOUT) diff --git a/substrate/network/src/specialization.rs b/substrate/network/src/specialization.rs index f639dbeab9a71..ce1c7067dbf7a 100644 --- a/substrate/network/src/specialization.rs +++ b/substrate/network/src/specialization.rs @@ -18,20 +18,7 @@ use ::PeerId; use runtime_primitives::traits::Block as BlockT; - -/// Context for a network-specific handler. -pub trait HandlerContext { - /// Get a reference to the client. - fn client(&self) -> &::chain::Client; - - /// Disable a peer - fn disable_peer(&mut self, peer_id: PeerId); - /// Disconnect peer - fn disconnect_peer(&mut self, peer_id: PeerId); - - /// Send a message to a peer. - fn send(&mut self, peer_id: PeerId, data: Vec); -} +use protocol::Context; /// A specialization of the substrate network protocol. Handles events and sends messages. pub trait Specialization: Send + Sync + 'static { @@ -39,11 +26,14 @@ pub trait Specialization: Send + Sync + 'static { fn status(&self) -> Vec; /// Called when a peer successfully handshakes. - fn on_peer_connected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, status: ::message::Status); + fn on_connect(&mut self, ctx: &mut Context, peer_id: PeerId, status: ::message::Status); /// Called when a peer is disconnected. If the peer ID is unknown, it should be ignored. - fn on_peer_disconnected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId); + fn on_disconnect(&mut self, ctx: &mut Context, peer_id: PeerId); /// Called when a network-specific message arrives. - fn on_message(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, message: Vec); + fn on_message(&mut self, ctx: &mut Context, peer_id: PeerId, message: ::message::Message); + + /// Called on abort. + fn on_abort(&mut self) { } } diff --git a/substrate/network/src/sync.rs b/substrate/network/src/sync.rs index 3ba818365eaa7..0b08876800074 100644 --- a/substrate/network/src/sync.rs +++ b/substrate/network/src/sync.rs @@ -114,7 +114,7 @@ impl ChainSync where /// Handle new connected peer. pub(crate) fn new_peer(&mut self, protocol: &mut Context, peer_id: PeerId) { if let Some(info) = protocol.peer_info(peer_id) { - match (protocol.chain().block_status(&BlockId::Hash(info.best_hash)), info.best_number) { + match (protocol.client().block_status(&BlockId::Hash(info.best_hash)), info.best_number) { (Err(e), _) => { debug!(target:"sync", "Error reading blockchain: {:?}", e); protocol.disconnect_peer(peer_id); @@ -189,7 +189,7 @@ impl ChainSync where match response.blocks.get(0) { Some(ref block) => { trace!(target: "sync", "Got ancestry block #{} ({}) from peer {}", n, block.hash, peer_id); - match protocol.chain().block_hash(n) { + match protocol.client().block_hash(n) { Ok(Some(block_hash)) if block_hash == block.hash => { peer.common_hash = block.hash; peer.common_number = n; @@ -242,7 +242,7 @@ impl ChainSync where let is_best = best_seen.as_ref().map_or(false, |n| number >= *n); // check whether the block is known before importing. - match protocol.chain().block_status(&BlockId::Hash(hash)) { + match protocol.client().block_status(&BlockId::Hash(hash)) { Ok(BlockStatus::InChain) => continue, Ok(_) => {}, Err(e) => { @@ -252,7 +252,7 @@ impl ChainSync where } } - let result = protocol.chain().import( + let result = protocol.client().import( is_best, header, justification, @@ -367,7 +367,7 @@ impl ChainSync where fn is_known_or_already_downloading(&self, protocol: &mut Context, hash: &B::Hash) -> bool { self.peers.iter().any(|(_, p)| p.state == PeerSyncState::DownloadingStale(*hash)) - || protocol.chain().block_status(&BlockId::Hash(*hash)).ok().map_or(false, |s| s != BlockStatus::Unknown) + || protocol.client().block_status(&BlockId::Hash(*hash)).ok().map_or(false, |s| s != BlockStatus::Unknown) } pub(crate) fn peer_disconnected(&mut self, protocol: &mut Context, peer_id: PeerId) { @@ -382,7 +382,7 @@ impl ChainSync where for id in ids { self.new_peer(protocol, id); } - match protocol.chain().info() { + match protocol.client().info() { Ok(info) => { self.best_queued_hash = info.best_queued_hash.unwrap_or(info.chain.best_hash); self.best_queued_number = info.best_queued_number.unwrap_or(info.chain.best_number); diff --git a/substrate/network/src/test/consensus.rs b/substrate/network/src/test/consensus.rs deleted file mode 100644 index cc231ed327d1d..0000000000000 --- a/substrate/network/src/test/consensus.rs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use super::*; -use message::{Message, generic}; -use futures::Stream; -use test_client::runtime::Block; - -#[test] -fn bft_messages_include_those_sent_before_asking_for_stream() { - let mut config = ::config::ProtocolConfig::default(); - config.roles = ::service::Role::AUTHORITY | ::service::Role::FULL; - - let mut net = TestNet::new_with_config(2, config); - net.sync(); // necessary for handshaking - - let peer = net.peer(0); - let mut io = TestIo::new(&peer.queue, None); - let bft_message = generic::BftMessage::Consensus(generic::SignedConsensusMessage::Vote(generic::SignedConsensusVote { - vote: generic::ConsensusVote::AdvanceRound(0), - sender: [0; 32], - signature: Default::default(), - })); - - let parent_hash = peer.genesis_hash(); - - let localized = ::message::LocalizedBftMessage:: { - message: bft_message, - parent_hash: parent_hash, - }; - - let message: Message = generic::Message::BftMessage(localized.clone()); - - let as_bytes = ::serde_json::to_vec(&message).unwrap(); - peer.sync.handle_packet(&mut io, 1, &as_bytes[..]); - - let stream = peer.sync.bft_messages(parent_hash); - - assert_eq!(stream.wait().next(), Some(Ok(localized))); -} diff --git a/substrate/network/src/test/mod.rs b/substrate/network/src/test/mod.rs index 0758f97ac6018..af0cdf3c02cc1 100644 --- a/substrate/network/src/test/mod.rs +++ b/substrate/network/src/test/mod.rs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -mod consensus; mod sync; use std::collections::{VecDeque, HashSet, HashMap}; @@ -26,7 +25,7 @@ use client::block_builder::BlockBuilder; use runtime_primitives::traits::Block as BlockT; use runtime_primitives::generic::BlockId; use io::SyncIo; -use protocol::Protocol; +use protocol::{Context, Protocol}; use config::ProtocolConfig; use service::TransactionPool; use network::{PeerId, SessionInfo, Error as NetworkError}; @@ -34,22 +33,22 @@ use keyring::Keyring; use codec::Slicable; use test_client::{self, TestClient}; use test_client::runtime::{Block, Hash, Transfer, Extrinsic}; -use specialization::{Specialization, HandlerContext}; +use specialization::Specialization; pub struct DummySpecialization; impl Specialization for DummySpecialization { fn status(&self) -> Vec { vec![] } - fn on_peer_connected(&mut self, _ctx: &mut HandlerContext, _peer_id: PeerId, _status: ::message::Status) { + fn on_connect(&mut self, _ctx: &mut Context, _peer_id: PeerId, _status: ::message::Status) { } - fn on_peer_disconnected(&mut self, _ctx: &mut HandlerContext, _peer_id: PeerId) { + fn on_disconnect(&mut self, _ctx: &mut Context, _peer_id: PeerId) { } - fn on_message(&mut self, _ctx: &mut HandlerContext, _peer_id: PeerId, _message: Vec) { + fn on_message(&mut self, _ctx: &mut Context, _peer_id: PeerId, _message: ::message::Message) { } } @@ -206,7 +205,7 @@ impl Peer { } } - pub fn genesis_hash(&self) -> Hash { + fn genesis_hash(&self) -> Hash { let info = self.client.info().expect("In-mem client does not fail"); info.chain.genesis_hash } From 667dc2ba8351435e6bed01cf3a233e0d38b8a07a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 12 Jun 2018 04:08:36 +0200 Subject: [PATCH 075/103] port substrate-bft to new tokio --- Cargo.lock | 34 +- polkadot/consensus/Cargo.toml | 5 +- polkadot/consensus/src/lib.rs | 30 +- polkadot/consensus/src/shared_table/mod.rs | 8 +- polkadot/network/Cargo.toml | 4 + polkadot/network/src/consensus.rs | 154 +++++-- polkadot/network/src/lib.rs | 92 ++-- polkadot/statement-table/Cargo.toml | 2 + polkadot/statement-table/src/generic.rs | 4 +- polkadot/statement-table/src/lib.rs | 4 + substrate/bft/Cargo.toml | 3 +- substrate/bft/src/generic/tests.rs | 491 ++++++++++----------- substrate/bft/src/lib.rs | 35 +- substrate/network/src/consensus_gossip.rs | 164 ++++--- substrate/network/src/lib.rs | 2 +- substrate/network/src/test/mod.rs | 5 - 16 files changed, 562 insertions(+), 475 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7e2777ec0fc84..5165577d7c662 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1288,7 +1288,6 @@ dependencies = [ "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-api 0.1.0", @@ -1305,7 +1304,9 @@ dependencies = [ "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-support 0.1.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1340,10 +1341,14 @@ dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-consensus 0.1.0", "polkadot-primitives 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-bft 0.1.0", "substrate-codec 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1435,6 +1440,8 @@ name = "polkadot-statement-table" version = "0.1.0" dependencies = [ "polkadot-primitives 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", ] @@ -1886,8 +1893,7 @@ dependencies = [ "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-support 0.1.0", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2441,7 +2447,7 @@ dependencies = [ [[package]] name = "tokio" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2451,8 +2457,8 @@ dependencies = [ "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2467,11 +2473,11 @@ dependencies = [ "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2489,7 +2495,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2566,7 +2572,7 @@ dependencies = [ [[package]] name = "tokio-threadpool" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2588,7 +2594,7 @@ dependencies = [ [[package]] name = "tokio-timer" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3068,7 +3074,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" "checksum timer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "31d42176308937165701f50638db1c31586f183f1aab416268216577aec7306b" "checksum tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e9175261fbdb60781fcd388a4d6cc7e14764a2b629a7ad94abb439aed223a44f" -"checksum tokio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d00555353b013e170ed8bc4e13f648a317d1fd12157dbcae13f7013f6cf29f5" +"checksum tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8ee337e5f4e501fc32966fec6fe0ca0cc1c237b0b1b14a335f8bfe3c5f06e286" "checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" "checksum tokio-executor 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8cac2a7883ff3567e9d66bb09100d09b33d90311feca0206c7ca034bc0c55113" "checksum tokio-fs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "76766830bbf9a2d5bfb50c95350d56a2e79e2c80f675967fff448bc615899708" @@ -3078,9 +3084,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum tokio-retry 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f05746ae87dca83a2016b4f5dba5b237b897dd12fd324f60afe282112f16969a" "checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" "checksum tokio-tcp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ec9b094851aadd2caf83ba3ad8e8c4ce65a42104f7b94d9e6550023f0407853f" -"checksum tokio-threadpool 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5783254b10c7c84a56f62c74766ef7e5b83d1f13053218c7cab8d3f2c826fa0e" +"checksum tokio-threadpool 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c3873a6d8d0b636e024e77b9a82eaab6739578a06189ecd0e731c7308fbc5d" "checksum tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6131e780037787ff1b3f8aad9da83bca02438b72277850dd6ad0d455e0e20efc" -"checksum tokio-timer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535fed0ccee189f3d48447587697ba3fd234b3dbbb091f0ec4613ddfec0a7c4c" +"checksum tokio-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "028b94314065b90f026a21826cffd62a4e40a92cda3e5c069cc7b02e5945f5e9" "checksum tokio-udp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "137bda266504893ac4774e0ec4c2108f7ccdbcb7ac8dced6305fe9e4e0b5041a" "checksum trace-time 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5aea07da6582e957c6e737eeb63a5af79e648eeeaaaba8fd9a417f1124bafa41" "checksum transaction-pool 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dd61073aadeb282056e97180e5d0dd9774413f954bd221c07692578dab466b26" diff --git a/polkadot/consensus/Cargo.toml b/polkadot/consensus/Cargo.toml index 416ed60bd12c6..bb31a922cb134 100644 --- a/polkadot/consensus/Cargo.toml +++ b/polkadot/consensus/Cargo.toml @@ -5,9 +5,10 @@ authors = ["Parity Technologies "] [dependencies] futures = "0.1.17" -futures-cpupool = "0.1" parking_lot = "0.4" -tokio-core = "0.1.12" +tokio-core = "0.1.17" +tokio = "0.1.2" +tokio-timer = "0.2" ed25519 = { path = "../../substrate/ed25519" } error-chain = "0.11" log = "0.3" diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 4ed2f10161a0b..b552e35bcda00 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -44,10 +44,11 @@ extern crate substrate_codec as codec; extern crate substrate_primitives as primitives; extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; +extern crate substrate_client as client; extern crate exit_future; extern crate tokio_core; -extern crate substrate_client as client; +extern crate tokio; #[macro_use] extern crate error_chain; @@ -127,10 +128,6 @@ pub trait Network { /// current authorities. type Output: Sink,SinkError=Error>; - /// Execute a future in the background. Typically used for fairly heavy computations, - /// so it is recommended to have this use a thread pool. - fn execute(&self, future: F) where F: Future + Send + 'static; - /// Instantiate a table router using the given shared table. fn communication_for(&self, table: Arc) -> (Self::TableRouter, Self::Input, Self::Output); } @@ -297,16 +294,16 @@ impl bft::Environment for ProposerFactory DELAY_UNTIL); let drop_signal = dispatch_collation_work( - &self.network, router.clone(), table.clone(), + &self.handle, CollationFetch::new( local_duty.validation, checked_id.clone(), parent_hash.clone(), self.collators.clone(), self.client.clone() - ) + ), ); let proposer = Proposer { @@ -328,19 +325,18 @@ impl bft::Environment for ProposerFactory } } -// dispatch collation work onto the network's thread pool. returns a signal object +// dispatch collation work to be done in the background. returns a signal object // that should fire when the collation work is no longer necessary (e.g. when the proposer object is dropped) -fn dispatch_collation_work( - network: &N, - router: N::TableRouter, +fn dispatch_collation_work( + router: R, table: Arc, + handle: &Handle, work: CollationFetch, ) -> exit_future::Signal where C: Collators + Send + 'static, - N: Network, P: PolkadotApi + Send + Sync + 'static, ::Future: Send + 'static, - N::TableRouter: Send + 'static, + R: TableRouter + Send + 'static, P::CheckedBlockId: Send + 'static, { let (signal, exit) = exit_future::signal(); @@ -360,7 +356,13 @@ fn dispatch_collation_work( }); let cancellable_work = handled_work.select(exit).map(|_| ()).map_err(|_| ()); - network.execute(cancellable_work); + + // this most likely goes onto a thread pool. unfortunately, + // there isn't an easy way to make sure that the network's collation + // verification can get onto the same thread pool. + // + // we should accept a thread pool + handle.spawn_send(cancellable_work); signal } diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index 120fbb7fec365..52c981441d3c7 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -21,7 +21,6 @@ use std::collections::{HashMap, HashSet}; use std::sync::Arc; use table::{self, Table, Context as TableContextTrait}; -use table::generic::Statement as GenericStatement; use collation::Collation; use polkadot_primitives::Hash; use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic, CandidateReceipt}; @@ -36,6 +35,8 @@ use self::includable::IncludabilitySender; mod includable; pub use self::includable::Includable; +pub use table::Statement as Statement; +pub use table::generic::Statement as GenericStatement; struct TableContext { parent_hash: Hash, @@ -314,6 +315,11 @@ impl SharedTable { } } + /// Get the parent hash this table should hold statements localized to. + pub fn consensus_parent_hash(&self) -> &Hash { + &self.context.parent_hash + } + /// Get group info. pub fn group_info(&self) -> &HashMap { &self.context.groups diff --git a/polkadot/network/Cargo.toml b/polkadot/network/Cargo.toml index 04dff85b35b40..7206f936cfb9c 100644 --- a/polkadot/network/Cargo.toml +++ b/polkadot/network/Cargo.toml @@ -5,6 +5,9 @@ authors = ["Parity Technologies "] description = "Polkadot-specific networking protocol" [dependencies] +serde = "1.0" +serde_derive = "1.0" +serde_json = "1.0" polkadot-consensus = { path = "../consensus" } substrate-bft = { path = "../../substrate/bft" } substrate-codec = { path = "../../substrate/codec" } @@ -13,3 +16,4 @@ substrate-primitives = { path = "../../substrate/primitives" } polkadot-primitives = { path = "../primitives" } ed25519 = { path = "../../substrate/ed25519" } futures = "0.1" +tokio = "0.1.2" diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 9920e2c6ba20f..713fb0f6d4d31 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -16,19 +16,41 @@ //! Implementation of the traits for consensus networking for the polkadot protocol. -use consensus::{Network as ConsensusNetwork, TableRouter}; +use consensus::{Network, SharedTable, TableRouter, Error as ConsensusError}; use bft; use substrate_network::{self as net, generic_message as msg}; -use subsrate_primitives::AuthorityId; -use polkadot_primitives::{Block, Hash, Header, BlockId}; -use futures::prelude::*; +use polkadot_primitives::{Block, Hash, Header, BlockId, SessionKey}; +use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt}; +use futures::{future, prelude::*}; +use tokio::runtime::TaskExecutor; use super::NetworkService; +/// Table routing implementation. +pub struct Router; + +impl TableRouter for Router { + type Error = (); + type FetchCandidate = future::Empty; + type FetchExtrinsic = future::Empty; + + fn local_candidate_data(&self, _hash: Hash, _block_data: BlockData, _extrinsic: Extrinsic) { + + } + + fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate { + future::empty() + } + + fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { + future::empty() + } +} + struct BftSink { - network: Arc>, + network: Arc, parent_hash: Hash, - _e: ::std::marker::PhantomData, + _marker: ::std::marker::PhantomData, } impl Sink for BftSink { @@ -62,6 +84,48 @@ impl Sink for BftSink { }, parent_hash: self.parent_hash, }; + self.network.with_spec( + move |spec, ctx| spec.consensus_gossip.multicast_bft_message(ctx, network_message) + ); + Ok(::futures::AsyncSink::Ready) + } + + fn poll_complete(&mut self) -> ::futures::Poll<(), E> { + Ok(Async::Ready(())) + } +} + +impl Sink for BftSink { + type SinkItem = bft::Communication; + // TODO: replace this with the ! type when that's stabilized + type SinkError = E; + + fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend, E> { + let network_message = msg::LocalizedBftMessage { + message: match message { + bft::generic::Communication::Consensus(c) => msg::BftMessage::Consensus(match c { + bft::generic::LocalizedMessage::Propose(proposal) => msg::SignedConsensusMessage::Propose(msg::SignedConsensusProposal { + round_number: proposal.round_number as u32, + proposal: proposal.proposal, + digest: proposal.digest, + sender: proposal.sender, + digest_signature: proposal.digest_signature.signature, + full_signature: proposal.full_signature.signature, + }), + bft::generic::LocalizedMessage::Vote(vote) => msg::SignedConsensusMessage::Vote(msg::SignedConsensusVote { + sender: vote.sender, + signature: vote.signature.signature, + vote: match vote.vote { + bft::generic::Vote::Prepare(r, h) => msg::ConsensusVote::Prepare(r as u32, h), + bft::generic::Vote::Commit(r, h) => msg::ConsensusVote::Commit(r as u32, h), + bft::generic::Vote::AdvanceRound(r) => msg::ConsensusVote::AdvanceRound(r as u32), + } + }), + }), + bft::generic::Communication::Auxiliary(justification) => msg::BftMessage::Auxiliary(justification.uncheck().into()), + }, + parent_hash: self.parent_hash, + }; self.network.send_bft_message(network_message); Ok(::futures::AsyncSink::Ready) } @@ -72,20 +136,20 @@ impl Sink for BftSink { } struct Messages { - network_stream: msg::BftMessageStream, - local_id: AuthorityId, - authorities: Vec, + network_stream: mpsc::UnboundedReceiver>, + local_id: SessionKey, + authorities: Vec, } impl Stream for Messages { type Item = bft::Communication; - type Error = bft::Error; + type Error = ConsensusError; fn poll(&mut self) -> Poll, Self::Error> { // check the network loop { match self.network_stream.poll() { - Err(_) => return Err(bft::InputStreamConcluded.into()), + Err(_) => return Err(bft::Error::from(bft::InputStreamConcluded).into()), Ok(Async::NotReady) => return Ok(Async::NotReady), Ok(Async::Ready(None)) => return Ok(Async::NotReady), // the input stream for agreements is never meant to logically end. Ok(Async::Ready(Some(message))) => { @@ -102,7 +166,8 @@ impl Stream for Messages { } } -fn process_message(msg: msg::LocalizedBftMessage, local_id: &AuthorityId, authorities: &[AuthorityId]) -> Result>, bft::Error> { +// check signature and authority validity of message. +fn process_message(msg: msg::LocalizedBftMessage, local_id: &SessionKey, authorities: &[SessionKey]) -> Result>, bft::Error> { Ok(Some(match msg.message { msg::BftMessage::Consensus(c) => bft::generic::Communication::Consensus(match c { msg::SignedConsensusMessage::Propose(proposal) => bft::generic::LocalizedMessage::Propose({ @@ -156,42 +221,39 @@ fn process_message(msg: msg::LocalizedBftMessage, local_id: &AuthorityId, author })) } -impl Sink for BftSink { - type SinkItem = bft::Communication; - // TODO: replace this with the ! type when that's stabilized - type SinkError = E; +/// Wrapper around the network service +pub struct ConsensusNetwork { + network: Arc, +} - fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend, E> { - let network_message = msg::LocalizedBftMessage { - message: match message { - bft::generic::Communication::Consensus(c) => msg::BftMessage::Consensus(match c { - bft::generic::LocalizedMessage::Propose(proposal) => msg::SignedConsensusMessage::Propose(msg::SignedConsensusProposal { - round_number: proposal.round_number as u32, - proposal: proposal.proposal, - digest: proposal.digest, - sender: proposal.sender, - digest_signature: proposal.digest_signature.signature, - full_signature: proposal.full_signature.signature, - }), - bft::generic::LocalizedMessage::Vote(vote) => msg::SignedConsensusMessage::Vote(msg::SignedConsensusVote { - sender: vote.sender, - signature: vote.signature.signature, - vote: match vote.vote { - bft::generic::Vote::Prepare(r, h) => msg::ConsensusVote::Prepare(r as u32, h), - bft::generic::Vote::Commit(r, h) => msg::ConsensusVote::Commit(r as u32, h), - bft::generic::Vote::AdvanceRound(r) => msg::ConsensusVote::AdvanceRound(r as u32), - } - }), - }), - bft::generic::Communication::Auxiliary(justification) => msg::BftMessage::Auxiliary(justification.uncheck().into()), - }, - parent_hash: self.parent_hash, - }; - self.network.send_bft_message(network_message); - Ok(::futures::AsyncSink::Ready) +impl ConsensusNetwork { + /// Create a new consensus networking object. + pub fn new(network: Arc ) -> Self { + ConsensusNetwork { network } } +} - fn poll_complete(&mut self) -> ::futures::Poll<(), E> { - Ok(Async::Ready(())) +/// A long-lived network which can create parachain statement and BFT message routing processes on demand. +impl Network for ConsensusNetwork { + type TableRouter = TableRouter; + /// The input stream of BFT messages. Should never logically conclude. + type Input = Messages; + /// The output sink of BFT messages. Messages sent here should eventually pass to all + /// current authorities. + type Output = BftSink; + + /// Instantiate a table router using the given shared table. + fn communication_for(&self, table: Arc) -> (Self::TableRouter, Self::Input, Self::Output) { + let table_router = TableRouter; + let parent_hash = table.consensus_parent_hash().clone(); + + let sink = BftSink { + network: self.network.clone(), + parent_hash, + _marker: Default::default(), + }; + + // spin up a task in the background that processes all incoming statements + // } } diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 842478b322b75..8c0d08c889870 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -14,6 +14,11 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +extern crate serde; +#[macro_use] +extern crate serde_derive; +extern crate serde_json; + extern crate substrate_bft as bft; extern crate substrate_codec as codec; extern crate substrate_network; @@ -23,17 +28,22 @@ extern crate polkadot_consensus as consensus; extern crate polkadot_primitives; extern crate ed25519; extern crate futures; +extern crate tokio; use codec::Slicable; -use polkadot_primitives::{Header, Block, Hash}; +use polkadot_primitives::{Block, Hash}; use polkadot_primitives::parachain::{CandidateSignature, Id as ParaId}; use substrate_primitives::{AuthorityId}; -use substrate_network::{PeerId, RequestId}; -use substrate_network::specialization::{Specialization, HandlerContext}; +use substrate_network::{PeerId, RequestId, Context}; +use substrate_network::consensus_gossip::ConsensusGossip; +use substrate_network::{message, generic_message}; +use substrate_network::specialization::Specialization; use substrate_network::StatusMessage as GenericFullStatus; use std::collections::HashMap; +mod consensus; + /// Polkadot protocol id. pub const DOT_PROTOCOL_ID: ::substrate_network::ProtocolId = *b"dot"; @@ -91,38 +101,6 @@ pub struct CandidateResponse { pub data: Option>, } -/// Statements circulated among peers. -#[derive(Debug, PartialEq, Eq, Clone)] -pub enum UnsignedStatement { - /// Broadcast by a authority to indicate that this is his candidate for - /// inclusion. - /// - /// Broadcasting two different candidate messages per round is not allowed. - Candidate(Vec), - /// Broadcast by a authority to attest that the candidate with given digest - /// is valid. - Valid(Hash), - /// Broadcast by a authority to attest that the auxiliary data for a candidate - /// with given digest is available. - Available(Hash), - /// Broadcast by a authority to attest that the candidate with given digest - /// is invalid. - Invalid(Hash), -} - -/// A signed statement. -#[derive(Debug, PartialEq, Eq, Clone)] -pub struct Statement { - /// Parent relay chain block header hash. - pub parent_hash: Hash, - /// The statement. - pub statement: UnsignedStatement, - /// The signature. - pub signature: CandidateSignature, - /// The sender. - pub sender: AuthorityId, -} - struct PeerInfo { status: Status, } @@ -130,13 +108,16 @@ struct PeerInfo { /// Polkadot protocol attachment for substrate. pub struct PolkadotProtocol { peers: HashMap, + consensus_gossip: ConsensusGossip, collators: HashMap>, collating_for: Option, } /// Polkadot-specific messages. +#[derive(Serialize, Deserialize)] pub enum Message { - + /// signed statement and localized parent hash. + Statement(Hash, Statement), } impl Specialization for PolkadotProtocol { @@ -144,8 +125,8 @@ impl Specialization for PolkadotProtocol { Status { collating_for: self.collating_for.clone() }.encode() } - fn on_peer_connected(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, status: FullStatus) { - let status = match Status::decode(&mut &status.chain_status[..]) { + fn on_connect(&mut self, ctx: &mut Context, peer_id: PeerId, status: FullStatus) { + let local_status = match Status::decode(&mut &status.chain_status[..]) { Some(status) => status, None => { ctx.disable_peer(peer_id); @@ -153,26 +134,53 @@ impl Specialization for PolkadotProtocol { } }; - if let Some(ref para_id) = status.collating_for { + if let Some(ref para_id) = local_status.collating_for { self.collators.entry(para_id.clone()) .or_insert_with(Vec::new) .push(peer_id); } - self.peers.insert(peer_id, PeerInfo { status }); + self.peers.insert(peer_id, PeerInfo { status: local_status }); + self.consensus_gossip.new_peer(ctx, peer_id, &status.roles); } - fn on_peer_disconnected(&mut self, _ctx: &mut HandlerContext, peer_id: PeerId) { + fn on_disconnect(&mut self, ctx: &mut Context, peer_id: PeerId) { if let Some(info) = self.peers.remove(&peer_id) { if let Some(collators) = info.status.collating_for.and_then(|id| self.collators.get_mut(&id)) { if let Some(pos) = collators.iter().position(|x| x == &peer_id) { collators.swap_remove(pos); } } + + self.consensus_gossip.peer_disconnected(ctx, peer_id); } } - fn on_message(&mut self, ctx: &mut HandlerContext, peer_id: PeerId, message: Vec) { + fn on_message(&mut self, ctx: &mut Context, peer_id: PeerId, message: message::Message) { + match message { + generic_message::Message::BftMessage(msg) => self.consensus_gossip.on_bft_message(ctx, peer_id, msg), + generic_message::Message::ChainSpecific(raw) => { + let msg = match serde_json::from_slice(&raw) { + Ok(msg) => msg, + Err(e) => { + trace!(target: "p_net", "Bad message from {}: {}", peer_id, e); + ctx.disable_peer(peer_id); + return; + } + }; + + match msg { + Message::Statement(parent_hash, statement) => { + // TODO: notify table routing instance + self.consensus_gossip.on_chain_specific(ctx, peer_id, raw, parent_hash); + } + } + } + _ => {} + } + } + fn on_abort(&mut self) { + self.consensus_gossip.abort(); } } diff --git a/polkadot/statement-table/Cargo.toml b/polkadot/statement-table/Cargo.toml index 5c8a61e81d33c..3622953e6e7e4 100644 --- a/polkadot/statement-table/Cargo.toml +++ b/polkadot/statement-table/Cargo.toml @@ -6,3 +6,5 @@ authors = ["Parity Technologies "] [dependencies] substrate-primitives = { path = "../../substrate/primitives" } polkadot-primitives = { path = "../primitives" } +serde = "1.0" +serde_derive = "1.0" diff --git a/polkadot/statement-table/src/generic.rs b/polkadot/statement-table/src/generic.rs index 4436730b3efce..810943d5449e5 100644 --- a/polkadot/statement-table/src/generic.rs +++ b/polkadot/statement-table/src/generic.rs @@ -85,7 +85,7 @@ pub trait Context { } /// Statements circulated among peers. -#[derive(PartialEq, Eq, Debug, Clone)] +#[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)] pub enum Statement { /// Broadcast by a authority to indicate that this is his candidate for /// inclusion. @@ -104,7 +104,7 @@ pub enum Statement { } /// A signed statement. -#[derive(PartialEq, Eq, Debug, Clone)] +#[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)] pub struct SignedStatement { /// The statement. pub statement: Statement, diff --git a/polkadot/statement-table/src/lib.rs b/polkadot/statement-table/src/lib.rs index 86b95b0d90ff1..2bb261d6c231d 100644 --- a/polkadot/statement-table/src/lib.rs +++ b/polkadot/statement-table/src/lib.rs @@ -17,6 +17,10 @@ extern crate substrate_primitives; extern crate polkadot_primitives as primitives; +extern crate serde; +#[macro_use] +extern crate serde_derive; + pub mod generic; pub use generic::Table; diff --git a/substrate/bft/Cargo.toml b/substrate/bft/Cargo.toml index 68179536b4330..392a8377e8503 100644 --- a/substrate/bft/Cargo.toml +++ b/substrate/bft/Cargo.toml @@ -10,7 +10,7 @@ substrate-primitives = { path = "../primitives" } substrate-runtime-support = { path = "../runtime-support" } substrate-runtime-primitives = { path = "../runtime/primitives" } ed25519 = { path = "../ed25519" } -tokio-timer = "0.1.2" +tokio = "0.1.7" parking_lot = "0.4" error-chain = "0.11" log = "0.3" @@ -18,4 +18,3 @@ log = "0.3" [dev-dependencies] substrate-keyring = { path = "../keyring" } substrate-executor = { path = "../executor" } -tokio-core = "0.1.12" diff --git a/substrate/bft/src/generic/tests.rs b/substrate/bft/src/generic/tests.rs index b683d751e6ed5..fc88f1e24610d 100644 --- a/substrate/bft/src/generic/tests.rs +++ b/substrate/bft/src/generic/tests.rs @@ -21,13 +21,14 @@ use super::*; use std::collections::BTreeSet; use std::sync::{Arc, Mutex}; use std::sync::atomic::{AtomicUsize, Ordering}; -use std::time::Duration; +use std::time::{Instant, Duration}; -use futures::prelude::*; -use futures::sync::{oneshot, mpsc}; -use futures::future::FutureResult; +use futures::sync::mpsc; +use futures::future::{self, FutureResult}; -use tokio_timer::{self, Timer}; +use tokio::timer::Delay; +use tokio::runtime; +use tokio::prelude::*; const ROUND_DURATION: Duration = Duration::from_millis(50); @@ -60,8 +61,8 @@ impl Network { (network, inputs, outputs) } - fn route_on_thread(self) { - ::std::thread::spawn(move || { let _ = self.wait(); }); + fn route_in_background(self) { + ::tokio::executor::spawn(self); } } @@ -94,7 +95,7 @@ impl Future for Network { #[derive(Debug, PartialEq, Eq, Clone, Hash)] struct Candidate(usize); -#[derive(Debug, PartialEq, Eq, Clone, Hash)] +#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)] struct Digest(usize); #[derive(Debug, PartialEq, Eq, Clone, Hash)] @@ -117,7 +118,6 @@ struct TestContext { proposal: Mutex, node_count: usize, current_round: Arc, - timer: Timer, evaluated: Mutex>, } @@ -194,7 +194,7 @@ impl Context for TestContext { } let current_round = self.current_round.clone(); - let timeout = self.timer.sleep(round_duration) + let timeout = Delay::new(Instant::now() + round_duration) .map(move |_| { current_round.compare_and_swap(round, round + 1, Ordering::SeqCst); }) @@ -205,60 +205,50 @@ impl Context for TestContext { } } -fn timeout_in(t: Duration) -> oneshot::Receiver<()> { - let (tx, rx) = oneshot::channel(); - ::std::thread::spawn(move || { - ::std::thread::sleep(t); - let _ = tx.send(()); - }); - - rx +fn test_harness(f: F) -> Result where + F: FnOnce() -> X, + X: IntoFuture, +{ + let mut runtime = runtime::current_thread::Runtime::new().unwrap(); + runtime.block_on(future::lazy(f)) } #[test] fn consensus_completes_with_minimum_good() { - let node_count = 10; - let max_faulty = 3; - - let timer = tokio_timer::wheel().tick_duration(ROUND_DURATION).build(); - - let (network, net_send, net_recv) = Network::new(node_count); - network.route_on_thread(); - - let nodes = net_send - .into_iter() - .zip(net_recv) - .take(node_count - max_faulty) - .enumerate() - .map(|(i, (tx, rx))| { - let ctx = TestContext { - local_id: AuthorityId(i), - proposal: Mutex::new(i), - current_round: Arc::new(AtomicUsize::new(0)), - timer: timer.clone(), - evaluated: Mutex::new(BTreeSet::new()), - node_count, - }; - - agree( - ctx, - node_count, - max_faulty, - rx.map_err(|_| Error), - tx.sink_map_err(|_| Error).with(move |t| Ok((i, t))), - ) - }) - .collect::>(); - - let timeout = timeout_in(Duration::from_millis(500)).map_err(|_| Error); - let results = ::futures::future::join_all(nodes) - .map(Some) - .select(timeout.map(|_| None)) - .wait() - .map(|(i, _)| i) - .map_err(|(e, _)| e) - .expect("to complete") - .expect("to not time out"); + let results = test_harness(|| { + let node_count = 10; + let max_faulty = 3; + + let (network, net_send, net_recv) = Network::new(node_count); + network.route_in_background(); + + let nodes = net_send + .into_iter() + .zip(net_recv) + .take(node_count - max_faulty) + .enumerate() + .map(|(i, (tx, rx))| { + let ctx = TestContext { + local_id: AuthorityId(i), + proposal: Mutex::new(i), + current_round: Arc::new(AtomicUsize::new(0)), + evaluated: Mutex::new(BTreeSet::new()), + node_count, + }; + + agree( + ctx, + node_count, + max_faulty, + rx.map_err(|_| Error), + tx.sink_map_err(|_| Error).with(move |t| Ok((i, t))), + ) + }) + .collect::>(); + + ::futures::future::join_all(nodes) + .deadline(Instant::now() + Duration::from_millis(500)) + }).unwrap(); for result in &results { assert_eq!(&result.justification.digest, &results[0].justification.digest); @@ -267,55 +257,47 @@ fn consensus_completes_with_minimum_good() { #[test] fn consensus_completes_with_minimum_good_all_initial_proposals_bad() { - let node_count = 10; - let max_faulty = 3; - - let timer = tokio_timer::wheel().tick_duration(ROUND_DURATION).build(); - - let (network, net_send, net_recv) = Network::new(node_count); - network.route_on_thread(); - - let nodes = net_send - .into_iter() - .zip(net_recv) - .take(node_count - max_faulty) - .enumerate() - .map(|(i, (tx, rx))| { - // the first 5 proposals are going to be bad. - let proposal = if i < 5 { - i * 3 // proposals considered bad in the tests if they are % 3 - } else { - (i * 3) + 1 - }; - - let ctx = TestContext { - local_id: AuthorityId(i), - proposal: Mutex::new(proposal), - current_round: Arc::new(AtomicUsize::new(0)), - timer: timer.clone(), - evaluated: Mutex::new(BTreeSet::new()), - node_count, - }; - - agree( - ctx, - node_count, - max_faulty, - rx.map_err(|_| Error), - tx.sink_map_err(|_| Error).with(move |t| Ok((i, t))), - ) - }) - .collect::>(); - - let timeout = timeout_in(Duration::from_millis(500)).map_err(|_| Error); - let results = ::futures::future::join_all(nodes) - .map(Some) - .select(timeout.map(|_| None)) - .wait() - .map(|(i, _)| i) - .map_err(|(e, _)| e) - .expect("to complete") - .expect("to not time out"); + let results = test_harness(|| { + let node_count = 10; + let max_faulty = 3; + + let (network, net_send, net_recv) = Network::new(node_count); + network.route_in_background(); + + let nodes = net_send + .into_iter() + .zip(net_recv) + .take(node_count - max_faulty) + .enumerate() + .map(|(i, (tx, rx))| { + // the first 5 proposals are going to be bad. + let proposal = if i < 5 { + i * 3 // proposals considered bad in the tests if they are % 3 + } else { + (i * 3) + 1 + }; + + let ctx = TestContext { + local_id: AuthorityId(i), + proposal: Mutex::new(proposal), + current_round: Arc::new(AtomicUsize::new(0)), + evaluated: Mutex::new(BTreeSet::new()), + node_count, + }; + + agree( + ctx, + node_count, + max_faulty, + rx.map_err(|_| Error), + tx.sink_map_err(|_| Error).with(move |t| Ok((i, t))), + ) + }) + .collect::>(); + + ::futures::future::join_all(nodes) + .deadline(Instant::now() + Duration::from_millis(500)) + }).unwrap(); for result in &results { assert_eq!(&result.justification.digest, &results[0].justification.digest); @@ -324,124 +306,114 @@ fn consensus_completes_with_minimum_good_all_initial_proposals_bad() { #[test] fn consensus_does_not_complete_without_enough_nodes() { - let node_count = 10; - let max_faulty = 3; - - let timer = tokio_timer::wheel().tick_duration(ROUND_DURATION).build(); - - let (network, net_send, net_recv) = Network::new(node_count); - network.route_on_thread(); - - let nodes = net_send - .into_iter() - .zip(net_recv) - .take(node_count - max_faulty - 1) - .enumerate() - .map(|(i, (tx, rx))| { - let ctx = TestContext { - local_id: AuthorityId(i), - proposal: Mutex::new(i), - current_round: Arc::new(AtomicUsize::new(0)), - timer: timer.clone(), - evaluated: Mutex::new(BTreeSet::new()), - node_count, - }; - - agree( - ctx, - node_count, - max_faulty, - rx.map_err(|_| Error), - tx.sink_map_err(|_| Error).with(move |t| Ok((i, t))), - ) - }) - .collect::>(); - - let timeout = timeout_in(Duration::from_millis(500)).map_err(|_| Error); - let result = ::futures::future::join_all(nodes) - .map(Some) - .select(timeout.map(|_| None)) - .wait() - .map(|(i, _)| i) - .map_err(|(e, _)| e) - .expect("to complete"); - - assert!(result.is_none(), "not enough online nodes"); + let result = test_harness(|| { + let node_count = 10; + let max_faulty = 3; + + let (network, net_send, net_recv) = Network::new(node_count); + network.route_in_background(); + + let nodes = net_send + .into_iter() + .zip(net_recv) + .take(node_count - max_faulty - 1) + .enumerate() + .map(|(i, (tx, rx))| { + let ctx = TestContext { + local_id: AuthorityId(i), + proposal: Mutex::new(i), + current_round: Arc::new(AtomicUsize::new(0)), + evaluated: Mutex::new(BTreeSet::new()), + node_count, + }; + + agree( + ctx, + node_count, + max_faulty, + rx.map_err(|_| Error), + tx.sink_map_err(|_| Error).with(move |t| Ok((i, t))), + ) + }) + .collect::>(); + + ::futures::future::join_all(nodes) + .deadline(Instant::now() + Duration::from_millis(500)) + }); + + match result { + Ok(_) => panic!("completed wrongly"), + Err(ref e) if e.is_inner() => panic!("failed for wrong reason"), + Err(_) => {}, + } } #[test] fn threshold_plus_one_locked_on_proposal_only_one_with_candidate() { - let node_count = 10; - let max_faulty = 3; - - let locked_proposal = Candidate(999_999_999); let locked_digest = Digest(999_999_999); - let locked_round = 1; - let justification = UncheckedJustification { - round_number: locked_round, - digest: locked_digest.clone(), - signatures: (0..7) - .map(|i| Signature(Message::Vote(Vote::Prepare(locked_round, locked_digest.clone())), AuthorityId(i))) - .collect() - }.check(7, |_, _, s| Some(s.1.clone())).unwrap(); - - let timer = tokio_timer::wheel().tick_duration(ROUND_DURATION).build(); - - let (network, net_send, net_recv) = Network::new(node_count); - network.route_on_thread(); - - let nodes = net_send - .into_iter() - .zip(net_recv) - .enumerate() - .map(|(i, (tx, rx))| { - let ctx = TestContext { - local_id: AuthorityId(i), - proposal: Mutex::new(i), - current_round: Arc::new(AtomicUsize::new(locked_round + 1)), - timer: timer.clone(), - evaluated: Mutex::new(BTreeSet::new()), - node_count, - }; - let mut agreement = agree( - ctx, - node_count, - max_faulty, - rx.map_err(|_| Error), - tx.sink_map_err(|_| Error).with(move |t| Ok((i, t))), - ); - - agreement.strategy.advance_to_round( - &agreement.context, - locked_round + 1 - ); - - if i <= max_faulty { - agreement.strategy.locked = Some(Locked { - justification: justification.clone(), - }) - } - if i == max_faulty { - agreement.strategy.notable_candidates.insert( - locked_digest.clone(), - locked_proposal.clone(), + let results = test_harness(move || { + let node_count = 10; + let max_faulty = 3; + + let locked_proposal = Candidate(999_999_999); + let locked_round = 1; + let justification = UncheckedJustification { + round_number: locked_round, + digest: locked_digest.clone(), + signatures: (0..7) + .map(|i| Signature(Message::Vote(Vote::Prepare(locked_round, locked_digest.clone())), AuthorityId(i))) + .collect() + }.check(7, |_, _, s| Some(s.1.clone())).unwrap(); + + let (network, net_send, net_recv) = Network::new(node_count); + network.route_in_background(); + + let nodes = net_send + .into_iter() + .zip(net_recv) + .enumerate() + .map(|(i, (tx, rx))| { + let ctx = TestContext { + local_id: AuthorityId(i), + proposal: Mutex::new(i), + current_round: Arc::new(AtomicUsize::new(locked_round + 1)), + evaluated: Mutex::new(BTreeSet::new()), + node_count, + }; + let mut agreement = agree( + ctx, + node_count, + max_faulty, + rx.map_err(|_| Error), + tx.sink_map_err(|_| Error).with(move |t| Ok((i, t))), + ); + + agreement.strategy.advance_to_round( + &agreement.context, + locked_round + 1 ); - } - agreement - }) - .collect::>(); + if i <= max_faulty { + agreement.strategy.locked = Some(Locked { + justification: justification.clone(), + }) + } + + if i == max_faulty { + agreement.strategy.notable_candidates.insert( + locked_digest.clone(), + locked_proposal.clone(), + ); + } + + agreement + }) + .collect::>(); - let timeout = timeout_in(Duration::from_millis(1000)).map_err(|_| Error); - let results = ::futures::future::join_all(nodes) - .map(Some) - .select(timeout.map(|_| None)) - .wait() - .map(|(i, _)| i) - .map_err(|(e, _)| e) - .expect("to complete") - .expect("to not time out"); + ::futures::future::join_all(nodes) + .deadline(Instant::now() + Duration::from_millis(1000)) + }).unwrap(); for result in &results { assert_eq!(&result.justification.digest, &locked_digest); @@ -450,53 +422,46 @@ fn threshold_plus_one_locked_on_proposal_only_one_with_candidate() { #[test] fn consensus_completes_even_when_nodes_start_with_a_delay() { - let node_count = 10; - let max_faulty = 3; - let base_sleep = Duration::from_millis(75); - - let timer = tokio_timer::wheel().tick_duration(ROUND_DURATION).build(); - - let (network, net_send, net_recv) = Network::new(node_count); - network.route_on_thread(); - - let nodes = net_send - .into_iter() - .zip(net_recv) - .take(node_count - max_faulty) - .enumerate() - .map(|(i, (tx, rx))| { - let ctx = TestContext { - local_id: AuthorityId(i), - proposal: Mutex::new(i), - current_round: Arc::new(AtomicUsize::new(0)), - timer: timer.clone(), - evaluated: Mutex::new(BTreeSet::new()), - node_count, - }; - - let sleep_duration = base_sleep * i as u32; - - timer.sleep(sleep_duration).map_err(|_| Error).and_then(move |_| { - agree( - ctx, + let results = test_harness(|| { + let node_count = 10; + let max_faulty = 3; + let base_sleep = Duration::from_millis(75); + + let now = Instant::now(); + let (network, net_send, net_recv) = Network::new(node_count); + network.route_in_background(); + + let nodes = net_send + .into_iter() + .zip(net_recv) + .take(node_count - max_faulty) + .enumerate() + .map(move |(i, (tx, rx))| { + let ctx = TestContext { + local_id: AuthorityId(i), + proposal: Mutex::new(i), + current_round: Arc::new(AtomicUsize::new(0)), + evaluated: Mutex::new(BTreeSet::new()), node_count, - max_faulty, - rx.map_err(|_| Error), - tx.sink_map_err(|_| Error).with(move |t| Ok((i, t))), - ) + }; + + let sleep_duration = base_sleep * i as u32; + + Delay::new(now + sleep_duration).map_err(|_| Error).and_then(move |_| { + agree( + ctx, + node_count, + max_faulty, + rx.map_err(|_| Error), + tx.sink_map_err(|_| Error).with(move |t| Ok((i, t))), + ) + }) }) - }) - .collect::>(); - - let timeout = timeout_in(Duration::from_millis(750)).map_err(|_| Error); - let results = ::futures::future::join_all(nodes) - .map(Some) - .select(timeout.map(|_| None)) - .wait() - .map(|(i, _)| i) - .map_err(|(e, _)| e) - .expect("to complete") - .expect("to not time out"); + .collect::>(); + + ::futures::future::join_all(nodes) + .deadline(now + Duration::from_millis(750)) + }).unwrap(); for result in &results { assert_eq!(&result.justification.digest, &results[0].justification.digest); diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index fbb9db101d331..28fc59c45488c 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -38,7 +38,7 @@ extern crate substrate_primitives as primitives; extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; extern crate ed25519; -extern crate tokio_timer; +extern crate tokio; extern crate parking_lot; #[macro_use] @@ -63,7 +63,7 @@ use primitives::AuthorityId; use futures::{task, Async, Stream, Sink, Future, IntoFuture}; use futures::sync::oneshot; -use tokio_timer::Timer; +use tokio::timer::Delay; use parking_lot::Mutex; pub use generic::InputStreamConcluded; @@ -183,7 +183,6 @@ struct BftInstance { key: Arc, authorities: Vec, parent_hash: B::Hash, - timer: Timer, round_timeout_multiplier: u64, proposer: P, } @@ -227,16 +226,18 @@ impl> generic::Context for BftInstance } fn begin_round_timeout(&self, round: usize) -> Self::RoundTimeout { - use std::time::Duration; + use std::time::{Instant, Duration}; let round = ::std::cmp::min(63, round) as u32; let timeout = 1u64.checked_shl(round) .unwrap_or_else(u64::max_value) .saturating_mul(self.round_timeout_multiplier); - Box::new(self.timer.sleep(Duration::from_secs(timeout)) + let fut = Delay::new(Instant::now() + Duration::from_secs(timeout)) .map_err(|_| Error::from(ErrorKind::FaultyTimer)) - .map_err(Into::into)) + .map_err(Into::into); + + Box::new(fut) } } @@ -332,10 +333,11 @@ impl Drop for AgreementHandle { /// The BftService kicks off the agreement process on top of any blocks it /// is notified of. +/// +/// This assumes that it is being run in the context of a tokio runtime. pub struct BftService { client: Arc, live_agreement: Mutex>, - timer: Timer, round_timeout_multiplier: u64, key: Arc, // TODO: key changing over time. factory: P, @@ -354,7 +356,6 @@ impl BftService BftService { client: client, live_agreement: Mutex::new(None), - timer: Timer::default(), round_timeout_multiplier: 4, key: key, // TODO: key changing over time. factory: factory, @@ -408,7 +409,6 @@ impl BftService proposer, parent_hash: hash.clone(), round_timeout_multiplier: self.round_timeout_multiplier, - timer: self.timer.clone(), key: self.key.clone(), authorities: authorities, }; @@ -617,13 +617,11 @@ mod tests { use std::collections::HashSet; use runtime_primitives::testing::{Block as GenericTestBlock, Header as TestHeader}; use primitives::H256; - use self::tokio_core::reactor::{Core}; use self::keyring::Keyring; use futures::stream; - use futures::future::Executor; + use tokio::executor::current_thread; extern crate substrate_keyring as keyring; - extern crate tokio_core; type TestBlock = GenericTestBlock<()>; @@ -706,7 +704,6 @@ mod tests { BftService { client: Arc::new(client), live_agreement: Mutex::new(None), - timer: Timer::default(), round_timeout_multiplier: 4, key: Arc::new(Keyring::One.into()), factory: DummyFactory @@ -742,8 +739,6 @@ mod tests { imported_heights: Mutex::new(HashSet::new()), }; - let mut core = Core::new().unwrap(); - let service = make_service(client); let first = from_block_number(2); @@ -756,16 +751,18 @@ mod tests { let bft = service.build_upon(&first).unwrap(); assert!(service.live_agreement.lock().as_ref().unwrap().0 == first_hash); + let mut core = current_thread::CurrentThread::new(); + // turn the core so the future gets polled and sends its task to the // service. otherwise it deadlocks. - core.handle().execute(bft.unwrap()).unwrap(); - core.turn(Some(::std::time::Duration::from_millis(100))); + core.spawn(bft.unwrap()); + core.run_timeout(::std::time::Duration::from_millis(100)).unwrap(); let bft = service.build_upon(&second).unwrap(); assert!(service.live_agreement.lock().as_ref().unwrap().0 != first_hash); assert!(service.live_agreement.lock().as_ref().unwrap().0 == second_hash); - core.handle().execute(bft.unwrap()).unwrap(); - core.turn(Some(::std::time::Duration::from_millis(100))); + core.spawn(bft.unwrap()); + core.run_timeout(::std::time::Duration::from_millis(100)).unwrap(); } #[test] diff --git a/substrate/network/src/consensus_gossip.rs b/substrate/network/src/consensus_gossip.rs index 81467f5b8737f..07062c2beed43 100644 --- a/substrate/network/src/consensus_gossip.rs +++ b/substrate/network/src/consensus_gossip.rs @@ -33,9 +33,12 @@ struct PeerConsensus { known_messages: HashSet, } -#[derive(Clone)] -enum ConsensusMessage { +/// Consensus messages. +#[derive(Debug, Clone, PartialEq)] +pub enum ConsensusMessage { + /// A message concerning BFT agreement Bft(message::LocalizedBftMessage), + /// A message concerning some chain-specific aspect of consensus ChainSpecific(Vec, B::Hash), } @@ -48,7 +51,7 @@ struct MessageEntry { /// Consensus network protocol handler. Manages statements and candidate requests. pub struct ConsensusGossip { peers: HashMap>, - bft_message_sink: Option<(mpsc::UnboundedSender>, B::Hash)>, + message_sink: Option<(mpsc::UnboundedSender>, B::Hash)>, messages: Vec>, message_hashes: HashSet, } @@ -58,7 +61,7 @@ impl ConsensusGossip where B::Header: HeaderT { pub fn new() -> Self { ConsensusGossip { peers: HashMap::new(), - bft_message_sink: None, + message_sink: None, messages: Default::default(), message_hashes: Default::default(), } @@ -66,13 +69,13 @@ impl ConsensusGossip where B::Header: HeaderT { /// Closes all notification streams. pub fn abort(&mut self) { - self.bft_message_sink = None; + self.message_sink = None; } /// Handle new connected peer. pub fn new_peer(&mut self, protocol: &mut Context, peer_id: PeerId, roles: &[message::Role]) { if roles.iter().any(|r| *r == message::Role::Authority) { - trace!(target:"sync", "Registering authority {}", peer_id); + trace!(target:"gossip", "Registering authority {}", peer_id); // Send out all known messages. // TODO: limit by size let mut known_messages = HashSet::new(); @@ -111,83 +114,49 @@ impl ConsensusGossip where B::Header: HeaderT { /// Handles incoming BFT message, passing to stream and repropagating. pub fn on_bft_message(&mut self, protocol: &mut Context, peer_id: PeerId, message: message::LocalizedBftMessage) { - let generic = GenericMessage::BftMessage(message); - let hash = ::protocol::hash_message(&generic); - - let message = match generic { - GenericMessage::BftMessage(msg) => msg, - _ => panic!("`generic` is known to be the `BftMessage` variant; qed"), - }; - - if self.message_hashes.contains(&hash) { - trace!(target:"sync", "Ignored already known BFT message from {}", peer_id); - return; + if let Some((hash, message)) = self.handle_incoming(protocol, peer_id, ConsensusMessage::Bft(message)) { + // propagate to other peers. + self.multicast(protocol, message, Some(hash)); } + } - match (protocol.client().info(), protocol.client().header(&BlockId::Hash(message.parent_hash))) { - (_, Err(e)) | (Err(e), _) => { - debug!(target:"sync", "Error reading blockchain: {:?}", e); - return; - }, - (Ok(info), Ok(Some(header))) => { - if header.number() < &info.chain.best_number { - trace!(target:"sync", "Ignored ancient BFT message from {}, hash={}", peer_id, message.parent_hash); - return; - } - }, - (Ok(_), Ok(None)) => {}, + /// Handles incoming chain-specific message and repropagates + pub fn on_chain_specific(&mut self, protocol: &mut Context, peer_id: PeerId, message: Vec, parent_hash: B::Hash) { + if let Some((hash, message)) = self.handle_incoming(protocol, peer_id, ConsensusMessage::ChainSpecific(message, parent_hash)) { + // propagate to other peers. + self.multicast(protocol, message, Some(hash)); } - - if let Some(ref mut peer) = self.peers.get_mut(&peer_id) { - peer.known_messages.insert(hash); - // TODO: validate signature? - if let Some((sink, parent_hash)) = self.bft_message_sink.take() { - if message.parent_hash == parent_hash { - if let Err(e) = sink.unbounded_send(message.clone()) { - trace!(target:"sync", "Error broadcasting BFT message notification: {:?}", e); - } else { - self.bft_message_sink = Some((sink, parent_hash)); - } - } - } - } else { - trace!(target:"sync", "Ignored BFT statement from unregistered peer {}", peer_id); - return; - } - - // propagate to other peers. - self.multicast(protocol, ConsensusMessage::Bft(message), Some(hash)); } - /// Get a stream of BFT messages relevant to consensus on top of a given parent hash. - pub fn bft_messages(&mut self, parent_hash: B::Hash) -> mpsc::UnboundedReceiver> { + /// Get a stream of messages relevant to consensus on top of a given parent hash. + pub fn messages_for(&mut self, parent_hash: B::Hash) -> mpsc::UnboundedReceiver> { let (sink, stream) = mpsc::unbounded(); for entry in self.messages.iter() { - let bft_message = match entry.message { - ConsensusMessage::Bft(ref msg) => msg, - _ => continue, + let message_matches = match entry.message { + ConsensusMessage::Bft(ref msg) => msg.parent_hash == parent_hash, + ConsensusMessage::ChainSpecific(_, ref h) => h == &parent_hash, }; - if bft_message.parent_hash == parent_hash { - sink.unbounded_send(bft_message.clone()).expect("receiving end known to be open; qed"); + if message_matches { + sink.unbounded_send(entry.message.clone()).expect("receiving end known to be open; qed"); } } - self.bft_message_sink = Some((sink, parent_hash)); + self.message_sink = Some((sink, parent_hash)); stream } /// Multicast a chain-specific message to other authorities. pub fn multicast_chain_specific(&mut self, protocol: &mut Context, parent_hash: B::Hash, message: Vec) { - trace!(target: "bft", "sending chain-specific message"); + trace!(target:"gossip", "sending chain-specific message"); self.multicast(protocol, ConsensusMessage::ChainSpecific(message, parent_hash), None); } /// Multicast a BFT message to other authorities pub fn multicast_bft_message(&mut self, protocol: &mut Context, message: message::LocalizedBftMessage) { // Broadcast message to all authorities. - trace!(target:"bft", "Broadcasting BFT message {:?}", message); + trace!(target:"gossip", "Broadcasting BFT message {:?}", message); self.multicast(protocol, ConsensusMessage::Bft(message), None); } @@ -216,13 +185,79 @@ impl ConsensusGossip where B::Header: HeaderT { } }); if self.messages.len() != before { - trace!(target:"bft", "Cleaned up {} stale messages", before - self.messages.len()); + trace!(target:"gossip", "Cleaned up {} stale messages", before - self.messages.len()); } for (_, ref mut peer) in self.peers.iter_mut() { peer.known_messages.retain(|h| hashes.contains(h)); } } + fn handle_incoming(&mut self, protocol: &mut Context, peer_id: PeerId, message: ConsensusMessage) -> Option<(B::Hash, ConsensusMessage)> { + let (hash, parent, message) = match message { + ConsensusMessage::Bft(msg) => { + let parent = msg.parent_hash; + let generic = GenericMessage::BftMessage(msg); + ( + ::protocol::hash_message(&generic), + parent, + match generic { + GenericMessage::BftMessage(msg) => ConsensusMessage::Bft(msg), + _ => panic!("`generic` is known to be the `BftMessage` variant; qed"), + } + ) + } + ConsensusMessage::ChainSpecific(msg, parent) => { + let generic = GenericMessage::ChainSpecific(msg); + ( + ::protocol::hash_message::(&generic), + parent, + match generic { + GenericMessage::ChainSpecific(msg) => ConsensusMessage::ChainSpecific(msg, parent), + _ => panic!("`generic` is known to be the `ChainSpecific` variant; qed"), + } + ) + } + }; + + if self.message_hashes.contains(&hash) { + trace!(target:"gossip", "Ignored already known message from {}", peer_id); + return None; + } + + match (protocol.client().info(), protocol.client().header(&BlockId::Hash(parent))) { + (_, Err(e)) | (Err(e), _) => { + debug!(target:"gossip", "Error reading blockchain: {:?}", e); + return None; + }, + (Ok(info), Ok(Some(header))) => { + if header.number() < &info.chain.best_number { + trace!(target:"gossip", "Ignored ancient message from {}, hash={}", peer_id, parent); + return None; + } + }, + (Ok(_), Ok(None)) => {}, + } + + if let Some(ref mut peer) = self.peers.get_mut(&peer_id) { + peer.known_messages.insert(hash); + // TODO: validate signature? + if let Some((sink, parent_hash)) = self.message_sink.take() { + if parent == parent_hash { + if let Err(e) = sink.unbounded_send(message.clone()) { + trace!(target:"gossip", "Error broadcasting message notification: {:?}", e); + } + } + + self.message_sink = Some((sink, parent_hash)); + } + } else { + trace!(target:"gossip", "Ignored statement from unregistered peer {}", peer_id); + return None; + } + + Some((hash, message)) + } + fn multicast(&mut self, protocol: &mut Context, message: ConsensusMessage, hash: Option) { let generic = match message { ConsensusMessage::Bft(ref message) => GenericMessage::BftMessage(message.clone()), @@ -312,7 +347,7 @@ mod tests { } #[test] - fn bft_messages_include_those_sent_before_asking_for_stream() { + fn message_stream_include_those_sent_before_asking_for_stream() { use futures::Stream; let mut consensus = ConsensusGossip::new(); @@ -333,9 +368,10 @@ mod tests { let message = generic::Message::BftMessage(localized.clone()); let message_hash = ::protocol::hash_message::(&message); - consensus.register_message(message_hash, ConsensusMessage::Bft(localized.clone())); - let stream = consensus.bft_messages(parent_hash); + let message = ConsensusMessage::Bft(localized); + consensus.register_message(message_hash, message.clone()); + let stream = consensus.messages_for(parent_hash); - assert_eq!(stream.wait().next(), Some(Ok(localized))); + assert_eq!(stream.wait().next(), Some(Ok(message))); } } diff --git a/substrate/network/src/lib.rs b/substrate/network/src/lib.rs index 73761c22ac6ed..02b774e5c5d24 100644 --- a/substrate/network/src/lib.rs +++ b/substrate/network/src/lib.rs @@ -50,13 +50,13 @@ mod service; mod sync; mod protocol; mod io; -mod message; mod config; mod chain; mod blocks; mod on_demand; pub mod consensus_gossip; pub mod error; +pub mod message; pub mod specialization; #[cfg(test)] mod test; diff --git a/substrate/network/src/test/mod.rs b/substrate/network/src/test/mod.rs index af0cdf3c02cc1..6e77041caa35c 100644 --- a/substrate/network/src/test/mod.rs +++ b/substrate/network/src/test/mod.rs @@ -204,11 +204,6 @@ impl Peer { self.generate_blocks(count, |_| ()); } } - - fn genesis_hash(&self) -> Hash { - let info = self.client.info().expect("In-mem client does not fail"); - info.chain.genesis_hash - } } pub struct EmptyTransactionPool; From 1fd63ff107f03891365d19af67b35cb519602dc3 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 12 Jun 2018 17:01:29 +0200 Subject: [PATCH 076/103] port polkadot-consensus to new tokio --- Cargo.lock | 2 - polkadot/consensus/Cargo.toml | 4 +- polkadot/consensus/src/dynamic_inclusion.rs | 7 +- polkadot/consensus/src/error.rs | 2 +- polkadot/consensus/src/lib.rs | 140 ++++++++------------ polkadot/consensus/src/service.rs | 41 +++--- substrate/bft/src/error.rs | 6 +- substrate/bft/src/lib.rs | 4 +- 8 files changed, 93 insertions(+), 113 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5165577d7c662..c10644dfa4d05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1305,8 +1305,6 @@ dependencies = [ "substrate-runtime-primitives 0.1.0", "substrate-runtime-support 0.1.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/polkadot/consensus/Cargo.toml b/polkadot/consensus/Cargo.toml index bb31a922cb134..70c0e518e7fb4 100644 --- a/polkadot/consensus/Cargo.toml +++ b/polkadot/consensus/Cargo.toml @@ -6,9 +6,7 @@ authors = ["Parity Technologies "] [dependencies] futures = "0.1.17" parking_lot = "0.4" -tokio-core = "0.1.17" -tokio = "0.1.2" -tokio-timer = "0.2" +tokio = "0.1.7" ed25519 = { path = "../../substrate/ed25519" } error-chain = "0.11" log = "0.3" diff --git a/polkadot/consensus/src/dynamic_inclusion.rs b/polkadot/consensus/src/dynamic_inclusion.rs index d48e486274598..bec2bd0fa80e3 100644 --- a/polkadot/consensus/src/dynamic_inclusion.rs +++ b/polkadot/consensus/src/dynamic_inclusion.rs @@ -61,7 +61,7 @@ impl DynamicInclusion { /// would be enough, or `None` if it is sufficient now. /// /// Panics if `now` is earlier than the `start`. - pub fn acceptable_in(&self, now: Instant, included: usize) -> Option { + pub fn acceptable_in(&self, now: Instant, included: usize) -> Option { let elapsed = now.duration_since(self.start); let elapsed = duration_to_micros(&elapsed); @@ -70,7 +70,8 @@ impl DynamicInclusion { if elapsed >= valid_after { None } else { - Some(Duration::from_millis((valid_after - elapsed) as u64 / 1000)) + let until = Duration::from_millis((valid_after - elapsed) as u64 / 1000); + Some(now + until) } } } @@ -104,7 +105,7 @@ mod tests { Duration::from_millis(4000), ); - assert_eq!(dynamic.acceptable_in(now, 5), Some(Duration::from_millis(2000))); + assert_eq!(dynamic.acceptable_in(now, 5), Some(now + Duration::from_millis(2000))); assert!(dynamic.acceptable_in(now + Duration::from_millis(2000), 5).is_none()); assert!(dynamic.acceptable_in(now + Duration::from_millis(3000), 5).is_none()); assert!(dynamic.acceptable_in(now + Duration::from_millis(4000), 5).is_none()); diff --git a/polkadot/consensus/src/error.rs b/polkadot/consensus/src/error.rs index acafa88f5e426..397fdee52ce9c 100644 --- a/polkadot/consensus/src/error.rs +++ b/polkadot/consensus/src/error.rs @@ -37,7 +37,7 @@ error_chain! { description("Proposer destroyed before finishing proposing or evaluating"), display("Proposer destroyed before finishing proposing or evaluating"), } - Timer(e: String) { + Timer(e: ::tokio::timer::Error) { description("Failed to register or resolve async timer."), display("Timer failed: {}", e), } diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index b552e35bcda00..b0b7deb27f87e 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -47,7 +47,6 @@ extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_client as client; extern crate exit_future; -extern crate tokio_core; extern crate tokio; #[macro_use] @@ -68,16 +67,16 @@ use std::time::{Duration, Instant}; use codec::Slicable; use table::generic::Statement as GenericStatement; -use runtime_support::Hashable; use polkadot_api::PolkadotApi; use polkadot_primitives::{Hash, Block, BlockId, BlockNumber, Header, Timestamp}; use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic as ParachainExtrinsic, CandidateReceipt}; use primitives::AuthorityId; use transaction_pool::{Ready, TransactionPool}; -use tokio_core::reactor::{Handle, Timeout, Interval}; +use tokio::runtime::TaskExecutor; +use tokio::timer::{Delay, Interval}; use futures::prelude::*; -use futures::future::{self, Shared}; +use futures::future; use collation::CollationFetch; use dynamic_inclusion::DynamicInclusion; @@ -221,10 +220,6 @@ fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: Au } } -fn timer_error(e: &::std::io::Error) -> Error { - ErrorKind::Timer(format!("{}", e)).into() -} - /// Polkadot proposer factory. pub struct ProposerFactory { /// The client instance. @@ -235,8 +230,8 @@ pub struct ProposerFactory { pub network: N, /// Parachain collators. pub collators: C, - /// The timer used to schedule proposal intervals. - pub handle: Handle, + /// handle to remote task executor + pub handle: TaskExecutor, /// The duration after which parachain-empty blocks will be allowed. pub parachain_empty_duration: Duration, } @@ -260,11 +255,9 @@ impl bft::Environment for ProposerFactory authorities: &[AuthorityId], sign_with: Arc ) -> Result<(Self::Proposer, Self::Input, Self::Output), Error> { - use std::time::Duration; - const DELAY_UNTIL: Duration = Duration::from_millis(5000); - let parent_hash = parent_header.blake2_256().into(); + let parent_hash = parent_header.hash().into(); let checked_id = self.client.check_id(BlockId::hash(parent_hash))?; let duty_roster = self.client.duty_roster(&checked_id)?; @@ -281,15 +274,13 @@ impl bft::Environment for ProposerFactory let n_parachains = active_parachains.len(); let table = Arc::new(SharedTable::new(group_info, sign_with.clone(), parent_hash)); let (router, input, output) = self.network.communication_for(table.clone()); + let now = Instant::now(); let dynamic_inclusion = DynamicInclusion::new( n_parachains, - Instant::now(), + now, self.parachain_empty_duration.clone(), ); - let timeout = Timeout::new(DELAY_UNTIL, &self.handle) - .map_err(|e| timer_error(&e))?; - debug!(target: "bft", "Initialising consensus proposer. Refusing to evaluate for {:?} from now.", DELAY_UNTIL); @@ -308,10 +299,9 @@ impl bft::Environment for ProposerFactory let proposer = Proposer { client: self.client.clone(), - delay: timeout.shared(), - handle: self.handle.clone(), dynamic_inclusion, local_key: sign_with, + minimum_delay: now + DELAY_UNTIL, parent_hash, parent_id: checked_id, parent_number: parent_header.number, @@ -330,7 +320,7 @@ impl bft::Environment for ProposerFactory fn dispatch_collation_work( router: R, table: Arc, - handle: &Handle, + handle: &TaskExecutor, work: CollationFetch, ) -> exit_future::Signal where C: Collators + Send + 'static, @@ -355,14 +345,10 @@ fn dispatch_collation_work( } }); - let cancellable_work = handled_work.select(exit).map(|_| ()).map_err(|_| ()); + let cancellable_work = handled_work.select(exit).then(|_| Ok(())); - // this most likely goes onto a thread pool. unfortunately, - // there isn't an easy way to make sure that the network's collation - // verification can get onto the same thread pool. - // - // we should accept a thread pool - handle.spawn_send(cancellable_work); + // spawn onto thread pool. + handle.spawn(cancellable_work); signal } @@ -373,10 +359,9 @@ struct LocalDuty { /// The Polkadot proposer logic. pub struct Proposer { client: Arc, - delay: Shared, dynamic_inclusion: DynamicInclusion, - handle: Handle, local_key: Arc, + minimum_delay: Instant, parent_hash: Hash, parent_id: C::CheckedBlockId, parent_number: BlockNumber, @@ -401,32 +386,24 @@ impl bft::Proposer for Proposer const ATTEMPT_PROPOSE_EVERY: Duration = Duration::from_millis(100); let initial_included = self.table.includable_count(); + let now = Instant::now(); let enough_candidates = self.dynamic_inclusion.acceptable_in( - Instant::now(), + now, initial_included, - ).unwrap_or_default(); - - let timing = { - let delay = self.delay.clone(); - let dynamic_inclusion = self.dynamic_inclusion.clone(); - let make_timing = move |handle| -> Result { - let attempt_propose = Interval::new(ATTEMPT_PROPOSE_EVERY, handle)?; - let enough_candidates = Timeout::new(enough_candidates, handle)?; - Ok(ProposalTiming { - attempt_propose, - enough_candidates, - dynamic_inclusion, - minimum_delay: Some(delay), - last_included: initial_included, - }) - }; + ).unwrap_or_else(|| now + Duration::from_millis(1)); - match make_timing(&self.handle) { - Ok(timing) => timing, - Err(e) => { - return future::Either::B(future::err(timer_error(&e))); - } - } + let minimum_delay = if self.minimum_delay > now + ATTEMPT_PROPOSE_EVERY { + Some(Delay::new(self.minimum_delay)) + } else { + None + }; + + let timing = ProposalTiming { + attempt_propose: Interval::new(now + ATTEMPT_PROPOSE_EVERY, ATTEMPT_PROPOSE_EVERY), + enough_candidates: Delay::new(enough_candidates), + dynamic_inclusion: self.dynamic_inclusion.clone(), + minimum_delay, + last_included: initial_included, }; future::Either::A(CreateProposal { @@ -469,9 +446,7 @@ impl bft::Proposer for Proposer }; let vote_delays = { - // delay casting vote until able (according to minimum block time) - let minimum_delay = self.delay.clone() - .map_err(|e| timer_error(&*e)); + let now = Instant::now(); let included_candidate_hashes = proposal .parachain_heads() @@ -485,33 +460,35 @@ impl bft::Proposer for Proposer // the duration at which the given number of parachains is acceptable. let count_delay = self.dynamic_inclusion.acceptable_in( - Instant::now(), + now, proposal.parachain_heads().len(), ); // the duration until the given timestamp is current let proposed_timestamp = proposal.timestamp(); let timestamp_delay = if proposed_timestamp > current_timestamp { - Some(Duration::from_secs(proposed_timestamp - current_timestamp)) + Some(now + Duration::from_secs(proposed_timestamp - current_timestamp)) } else { None }; + // delay casting vote until able according to minimum block time, + // timestamp delay, and count delay. // construct a future from the maximum of the two durations. - let temporary_delay = match ::std::cmp::max(timestamp_delay, count_delay) { - Some(duration) => { - let maybe_timeout = Timeout::new(duration, &self.handle); - - let f = future::result(maybe_timeout) - .and_then(|timeout| timeout) - .map_err(|e| timer_error(&e)); - - future::Either::A(f) - } + let max_delay = [timestamp_delay, count_delay, Some(self.minimum_delay)] + .iter() + .cloned() + .max() + .expect("iterator not empty; thus max returns `Some`; qed"); + + let temporary_delay = match max_delay { + Some(duration) => future::Either::A( + Delay::new(duration).map_err(|e| Error::from(ErrorKind::Timer(e))) + ), None => future::Either::B(future::ok(())), }; - minimum_delay.join3(includability_tracker, temporary_delay) + includability_tracker.join(temporary_delay) }; // evaluate whether the block is actually valid. @@ -614,48 +591,43 @@ fn current_timestamp() -> Timestamp { struct ProposalTiming { attempt_propose: Interval, dynamic_inclusion: DynamicInclusion, - enough_candidates: Timeout, - minimum_delay: Option>, + enough_candidates: Delay, + minimum_delay: Option, last_included: usize, } impl ProposalTiming { // whether it's time to attempt a proposal. // shouldn't be called outside of the context of a task. - fn poll(&mut self, included: usize) -> Poll<(), Error> { + fn poll(&mut self, included: usize) -> Poll<(), ErrorKind> { // first drain from the interval so when the minimum delay is up // we don't have any notifications built up. // // this interval is just meant to produce periodic task wakeups // that lead to the `dynamic_inclusion` getting updated as necessary. - if let Async::Ready(x) = self.attempt_propose.poll() - .map_err(|e| timer_error(&e))? - { + if let Async::Ready(x) = self.attempt_propose.poll().map_err(ErrorKind::Timer)? { x.expect("timer still alive; intervals never end; qed"); } if let Some(ref mut min) = self.minimum_delay { - try_ready!(min.poll().map_err(|e| timer_error(&*e))); + try_ready!(min.poll().map_err(ErrorKind::Timer)); } self.minimum_delay = None; // after this point, the future must have completed. if included == self.last_included { - return self.enough_candidates.poll().map_err(|e| timer_error(&e)); + return self.enough_candidates.poll().map_err(ErrorKind::Timer); } // the amount of includable candidates has changed. schedule a wakeup // if it's not sufficient anymore. - let now = Instant::now(); - match self.dynamic_inclusion.acceptable_in(now, included) { - Some(duration) => { + match self.dynamic_inclusion.acceptable_in(Instant::now(), included) { + Some(instant) => { self.last_included = included; - self.enough_candidates.reset(now + duration); - self.enough_candidates.poll().map_err(|e| timer_error(&e)) - } - None => { - Ok(Async::Ready(())) + self.enough_candidates.reset(instant); + self.enough_candidates.poll().map_err(ErrorKind::Timer) } + None => Ok(Async::Ready(())), } } } diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 26ddd299477b2..fee32bc2b1f87 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -18,6 +18,10 @@ /// Consensus service. A long runnung service that manages BFT agreement and parachain /// candidate agreement over the network. +/// +/// This uses a handle to an underlying thread pool to dispatch heavy work +/// such as candidate verification while performing event-driven work +/// on a local event loop. use std::thread; use std::time::{Duration, Instant}; @@ -29,18 +33,23 @@ use ed25519; use futures::prelude::*; use polkadot_api::LocalPolkadotApi; use polkadot_primitives::{Block, Header}; -use tokio_core::reactor; use transaction_pool::TransactionPool; +use tokio::executor::current_thread::TaskExecutor as LocalThreadHandle; +use tokio::runtime::TaskExecutor as ThreadPoolHandle; +use tokio::runtime::current_thread::Runtime as LocalRuntime; +use tokio::timer::Interval; + use super::{Network, Collators, ProposerFactory}; use error; const TIMER_DELAY_MS: u64 = 5000; const TIMER_INTERVAL_MS: u64 = 500; +// spin up an instance of BFT agreement on the current thread's executor. +// panics if there is no current thread executor. fn start_bft( header: &Header, - handle: reactor::Handle, bft_service: &BftService, ) where F: bft::Environment + 'static, @@ -48,8 +57,11 @@ fn start_bft( F::Error: ::std::fmt::Debug, >::Error: ::std::fmt::Display + Into, { + let mut handle = LocalThreadHandle::current(); match bft_service.build_upon(&header) { - Ok(Some(bft)) => handle.spawn(bft), + Ok(Some(bft)) => if let Err(e) = handle.spawn_local(Box::new(bft)) { + debug!(target: "bft", "Couldn't initialize BFT agreement: {:?}", e); + }, Ok(None) => {}, Err(e) => debug!(target: "bft", "BFT agreement error: {:?}", e), } @@ -68,6 +80,7 @@ impl Service { api: Arc, network: N, transaction_pool: Arc, + thread_pool: ThreadPoolHandle, parachain_empty_duration: Duration, key: ed25519::Pair, ) -> Service @@ -81,7 +94,7 @@ impl Service { { let (signal, exit) = ::exit_future::signal(); let thread = thread::spawn(move || { - let mut core = reactor::Core::new().expect("tokio::Core could not be created"); + let mut runtime = LocalRuntime::new().expect("Could not create local runtime"); let key = Arc::new(key); let factory = ProposerFactory { @@ -90,28 +103,27 @@ impl Service { collators: network.clone(), network, parachain_empty_duration, - handle: core.handle(), + handle: thread_pool, }; let bft_service = Arc::new(BftService::new(client.clone(), key, factory)); let notifications = { - let handle = core.handle(); let client = client.clone(); let bft_service = bft_service.clone(); client.import_notification_stream().for_each(move |notification| { if notification.is_new_best { - start_bft(¬ification.header, handle.clone(), &*bft_service); + start_bft(¬ification.header, &*bft_service); } Ok(()) }) }; - let interval = reactor::Interval::new_at( + let interval = Interval::new( Instant::now() + Duration::from_millis(TIMER_DELAY_MS), Duration::from_millis(TIMER_INTERVAL_MS), - &core.handle(), - ).expect("it is always possible to create an interval with valid params"); + ); + let mut prev_best = match client.best_block_header() { Ok(header) => header.hash(), Err(e) => { @@ -123,14 +135,13 @@ impl Service { let timed = { let c = client.clone(); let s = bft_service.clone(); - let handle = core.handle(); interval.map_err(|e| debug!("Timer error: {:?}", e)).for_each(move |_| { if let Ok(best_block) = c.best_block_header() { let hash = best_block.hash(); if hash == prev_best { debug!("Starting consensus round after a timeout"); - start_bft(&best_block, handle.clone(), &*s); + start_bft(&best_block, &*s); } prev_best = hash; } @@ -138,9 +149,9 @@ impl Service { }) }; - core.handle().spawn(notifications); - core.handle().spawn(timed); - if let Err(e) = core.run(exit) { + runtime.spawn(notifications); + runtime.spawn(timed); + if let Err(e) = runtime.block_on(exit) { debug!("BFT event loop error {:?}", e); } }); diff --git a/substrate/bft/src/error.rs b/substrate/bft/src/error.rs index c18528a3f1e09..2b5f7fabb06bb 100644 --- a/substrate/bft/src/error.rs +++ b/substrate/bft/src/error.rs @@ -31,9 +31,9 @@ error_chain! { } /// Unable to schedule wakeup. - FaultyTimer { - description("Faulty timer: unable to schedule wakeup"), - display("Faulty timer: unable to schedule wakeup"), + FaultyTimer(e: ::tokio::timer::Error) { + description("Timer error"), + display("Timer error: {}", e), } /// Unable to propose a block. diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index 28fc59c45488c..9113818c77072 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -197,7 +197,7 @@ impl> generic::Context for BftInstance type Digest = B::Hash; type Signature = LocalizedSignature; type Candidate = B; - type RoundTimeout = Box + Send>; + type RoundTimeout = Box>; type CreateProposal = ::Future; type EvaluateProposal = ::Future; @@ -234,7 +234,7 @@ impl> generic::Context for BftInstance .saturating_mul(self.round_timeout_multiplier); let fut = Delay::new(Instant::now() + Duration::from_secs(timeout)) - .map_err(|_| Error::from(ErrorKind::FaultyTimer)) + .map_err(|e| Error::from(ErrorKind::FaultyTimer(e))) .map_err(Into::into); Box::new(fut) From 94bb78e7b54084ac7b82ec8250c0517bb1af36c4 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 12 Jun 2018 17:05:03 +0200 Subject: [PATCH 077/103] fix typo --- substrate/network/src/service.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/network/src/service.rs b/substrate/network/src/service.rs index 4098f443fe881..0a44698702e21 100644 --- a/substrate/network/src/service.rs +++ b/substrate/network/src/service.rs @@ -49,7 +49,7 @@ bitflags! { pub struct Role: u32 { /// No network. const NONE = 0b00000000; - /// Full node, doe not participate in consensus. + /// Full node, dose not participate in consensus. const FULL = 0b00000001; /// Light client node. const LIGHT = 0b00000010; From 62aa5cc451d014297f970f7d0ab858782500aa3c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 15 Jun 2018 15:53:23 +0200 Subject: [PATCH 078/103] start message processing task --- Cargo.lock | 1 + polkadot/consensus/src/lib.rs | 26 ++++----- polkadot/network/Cargo.toml | 2 +- polkadot/network/src/consensus.rs | 62 ++++++++++++++++++++-- polkadot/network/src/lib.rs | 10 ++-- polkadot/primitives/src/parachain.rs | 56 +------------------ polkadot/statement-table/Cargo.toml | 1 + polkadot/statement-table/src/generic.rs | 55 +++++++++++++++++++ polkadot/statement-table/src/lib.rs | 1 + substrate/network/src/consensus_gossip.rs | 1 - substrate/runtime/primitives/src/traits.rs | 6 ++- 11 files changed, 142 insertions(+), 79 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c10644dfa4d05..86f1ce54a5b7c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1440,6 +1440,7 @@ dependencies = [ "polkadot-primitives 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", "substrate-primitives 0.1.0", ] diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index b0b7deb27f87e..dddc85b59e4c6 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -66,10 +66,9 @@ use std::sync::Arc; use std::time::{Duration, Instant}; use codec::Slicable; -use table::generic::Statement as GenericStatement; use polkadot_api::PolkadotApi; use polkadot_primitives::{Hash, Block, BlockId, BlockNumber, Header, Timestamp}; -use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic as ParachainExtrinsic, CandidateReceipt}; +use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic as ParachainExtrinsic, CandidateReceipt, CandidateSignature}; use primitives::AuthorityId; use transaction_pool::{Ready, TransactionPool}; use tokio::runtime::TaskExecutor; @@ -82,7 +81,7 @@ use dynamic_inclusion::DynamicInclusion; pub use self::collation::{Collators, Collation}; pub use self::error::{ErrorKind, Error}; -pub use self::shared_table::{SharedTable, StatementSource, StatementProducer, ProducedStatements}; +pub use self::shared_table::{SharedTable, StatementSource, StatementProducer, ProducedStatements, Statement, GenericStatement}; pub use service::Service; mod collation; @@ -147,20 +146,21 @@ pub struct GroupInfo { /// Sign a table statement against a parent hash. /// The actual message signed is the encoded statement concatenated with the /// parent hash. -pub fn sign_table_statement(statement: &table::Statement, key: &ed25519::Pair, parent_hash: &Hash) -> ed25519::Signature { - use polkadot_primitives::parachain::Statement as RawStatement; +pub fn sign_table_statement(statement: &Statement, key: &ed25519::Pair, parent_hash: &Hash) -> CandidateSignature { + let mut encoded = statement.encode(); + encoded.extend(&parent_hash.0); + + key.sign(&encoded).into() +} - let raw = match *statement { - GenericStatement::Candidate(ref c) => RawStatement::Candidate(c.clone()), - GenericStatement::Valid(h) => RawStatement::Valid(h), - GenericStatement::Invalid(h) => RawStatement::Invalid(h), - GenericStatement::Available(h) => RawStatement::Available(h), - }; +/// Check signature on table statement. +pub fn check_statement(statement: &Statement, signature: &CandidateSignature, signer: SessionKey, parent_hash: &Hash) -> bool { + use runtime_primitives::traits::Verify; - let mut encoded = raw.encode(); + let mut encoded = statement.encode(); encoded.extend(&parent_hash.0); - key.sign(&encoded) + signature.verify(&encoded[..], signer.into()) } fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: AuthorityId) -> Result<(HashMap, LocalDuty), Error> { diff --git a/polkadot/network/Cargo.toml b/polkadot/network/Cargo.toml index 7206f936cfb9c..37e9570829978 100644 --- a/polkadot/network/Cargo.toml +++ b/polkadot/network/Cargo.toml @@ -16,4 +16,4 @@ substrate-primitives = { path = "../../substrate/primitives" } polkadot-primitives = { path = "../primitives" } ed25519 = { path = "../../substrate/ed25519" } futures = "0.1" -tokio = "0.1.2" +tokio = "0.1.7" diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 713fb0f6d4d31..7c62d9a7f7f62 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -16,15 +16,16 @@ //! Implementation of the traits for consensus networking for the polkadot protocol. -use consensus::{Network, SharedTable, TableRouter, Error as ConsensusError}; use bft; use substrate_network::{self as net, generic_message as msg}; +use substrate_network::consensus_gossip::ConsensusMessage; +use polkadot_consensus::{Network, SharedTable, TableRouter, Statement, Error as ConsensusError}; use polkadot_primitives::{Block, Hash, Header, BlockId, SessionKey}; use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt}; use futures::{future, prelude::*}; use tokio::runtime::TaskExecutor; -use super::NetworkService; +use super::{Message, NetworkService,}; /// Table routing implementation. pub struct Router; @@ -167,7 +168,7 @@ impl Stream for Messages { } // check signature and authority validity of message. -fn process_message(msg: msg::LocalizedBftMessage, local_id: &SessionKey, authorities: &[SessionKey]) -> Result>, bft::Error> { +fn process_bft_message(msg: msg::LocalizedBftMessage, local_id: &SessionKey, authorities: &[SessionKey]) -> Result>, bft::Error> { Ok(Some(match msg.message { msg::BftMessage::Consensus(c) => bft::generic::Communication::Consensus(match c { msg::SignedConsensusMessage::Propose(proposal) => bft::generic::LocalizedMessage::Propose({ @@ -221,6 +222,57 @@ fn process_message(msg: msg::LocalizedBftMessage, local_id: &Sessio })) } +fn process_encoded_statement(raw_message: Vec) -> Option { + match +} + +// task that processes all gossipped consensus messages, +// checking signatures +struct MessageProcessTask { + inner_stream: mpsc::UnboundedReceiver>, + bft_messages: mpsc::UnboundedSender>, + authorities: Vec, + local_id: SessionKey, +} + +impl Future for MessageProcessTask { + type Item = (); + type Error = (); + + fn poll(&mut self) -> Poll<(), ()> { + loop { + match self.inner_stream.poll() { + Ok(Async::Ready(Some(val))) => match val { + ConsensusMessage::Bft(msg) => { + match process_bft_message(msg, &self.authorities, &self.local_id) { + Ok(Some(msg)) => { + if let Err(_) = self.bft_messages.unbounded_send(msg) { + // if the BFT receiving stream has ended then + // we should just bail. + trace!(target: "bft", "BFT message stream appears to have closed"); + return Ok(()); + } + } + Ok(None) => {} // ignored local message + Err(e) => { + debug!("Message validation failed: {:?}", e); + } + } + } + ConsensusMessage::ChainSpecific(msg, _) => { + let statement = match ::serde_json::from_slice(&msg) { + Ok(Message::Statement) + } + } + } + Ok(Async::Ready(None)) => return Ok(Async::Ready(())) + Ok(Async::NotReady) => {}, + Err(e) => debug!(target: "p_net", "Error getting consensus message: {:?}", e), + } + } + } +} + /// Wrapper around the network service pub struct ConsensusNetwork { network: Arc, @@ -228,7 +280,7 @@ pub struct ConsensusNetwork { impl ConsensusNetwork { /// Create a new consensus networking object. - pub fn new(network: Arc ) -> Self { + pub fn new(network: Arc, ) -> Self { ConsensusNetwork { network } } } @@ -243,7 +295,7 @@ impl Network for ConsensusNetwork { type Output = BftSink; /// Instantiate a table router using the given shared table. - fn communication_for(&self, table: Arc) -> (Self::TableRouter, Self::Input, Self::Output) { + fn communication_for(&self, table: Arc, task_executor: ) -> (Self::TableRouter, Self::Input, Self::Output) { let table_router = TableRouter; let parent_hash = table.consensus_parent_hash().clone(); diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index 8c0d08c889870..d0b99cee74b7e 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -24,15 +24,16 @@ extern crate substrate_codec as codec; extern crate substrate_network; extern crate substrate_primitives; -extern crate polkadot_consensus as consensus; +extern crate polkadot_consensus; extern crate polkadot_primitives; extern crate ed25519; extern crate futures; extern crate tokio; use codec::Slicable; +use polkadot_consensus::Statement; use polkadot_primitives::{Block, Hash}; -use polkadot_primitives::parachain::{CandidateSignature, Id as ParaId}; +use polkadot_primitives::parachain::Id as ParaId; use substrate_primitives::{AuthorityId}; use substrate_network::{PeerId, RequestId, Context}; use substrate_network::consensus_gossip::ConsensusGossip; @@ -158,7 +159,10 @@ impl Specialization for PolkadotProtocol { fn on_message(&mut self, ctx: &mut Context, peer_id: PeerId, message: message::Message) { match message { - generic_message::Message::BftMessage(msg) => self.consensus_gossip.on_bft_message(ctx, peer_id, msg), + generic_message::Message::BftMessage(msg) => { + // TODO: check signature here? what if relevant block is unknown? + self.consensus_gossip.on_bft_message(ctx, peer_id, msg) + } generic_message::Message::ChainSpecific(raw) => { let msg = match serde_json::from_slice(&raw) { Ok(msg) => msg, diff --git a/polkadot/primitives/src/parachain.rs b/polkadot/primitives/src/parachain.rs index 9f803810e4538..caf09b2f286b8 100644 --- a/polkadot/primitives/src/parachain.rs +++ b/polkadot/primitives/src/parachain.rs @@ -273,19 +273,9 @@ impl Slicable for Activity { } } -#[derive(Clone, Copy, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Debug))] -#[repr(u8)] -enum StatementKind { - Candidate = 1, - Valid = 2, - Invalid = 3, - Available = 4, -} - /// Statements which can be made about parachain candidates. #[derive(Clone, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Debug))] +#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] pub enum Statement { /// Proposal of a parachain candidate. Candidate(CandidateReceipt), @@ -296,47 +286,3 @@ pub enum Statement { /// Vote to advance round after inactive primary. Available(Hash), } - -impl Slicable for Statement { - fn encode(&self) -> Vec { - let mut v = Vec::new(); - match *self { - Statement::Candidate(ref candidate) => { - v.push(StatementKind::Candidate as u8); - candidate.using_encoded(|s| v.extend(s)); - } - Statement::Valid(ref hash) => { - v.push(StatementKind::Valid as u8); - hash.using_encoded(|s| v.extend(s)); - } - Statement::Invalid(ref hash) => { - v.push(StatementKind::Invalid as u8); - hash.using_encoded(|s| v.extend(s)); - } - Statement::Available(ref hash) => { - v.push(StatementKind::Available as u8); - hash.using_encoded(|s| v.extend(s)); - } - } - - v - } - - fn decode(value: &mut I) -> Option { - match value.read_byte() { - Some(x) if x == StatementKind::Candidate as u8 => { - Slicable::decode(value).map(Statement::Candidate) - } - Some(x) if x == StatementKind::Valid as u8 => { - Slicable::decode(value).map(Statement::Valid) - } - Some(x) if x == StatementKind::Invalid as u8 => { - Slicable::decode(value).map(Statement::Invalid) - } - Some(x) if x == StatementKind::Available as u8 => { - Slicable::decode(value).map(Statement::Available) - } - _ => None, - } - } -} diff --git a/polkadot/statement-table/Cargo.toml b/polkadot/statement-table/Cargo.toml index 3622953e6e7e4..2e9120a4f0939 100644 --- a/polkadot/statement-table/Cargo.toml +++ b/polkadot/statement-table/Cargo.toml @@ -4,6 +4,7 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] +substrate-codec = { path = "../../substrate/codec" } substrate-primitives = { path = "../../substrate/primitives" } polkadot-primitives = { path = "../primitives" } serde = "1.0" diff --git a/polkadot/statement-table/src/generic.rs b/polkadot/statement-table/src/generic.rs index 810943d5449e5..442948c3a3019 100644 --- a/polkadot/statement-table/src/generic.rs +++ b/polkadot/statement-table/src/generic.rs @@ -32,6 +32,8 @@ use std::collections::hash_map::{HashMap, Entry}; use std::hash::Hash; use std::fmt::Debug; +use codec::{Slicable, Input}; + /// A batch of statements to send out. pub trait StatementBatch { /// Get the target authorities of these statements. @@ -103,6 +105,59 @@ pub enum Statement { Invalid(D), } +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[repr(u8)] +enum StatementKind { + Candidate = 1, + Valid = 2, + Invalid = 3, + Available = 4, +} + +impl Slicable for Statement { + fn encode(&self) -> Vec { + let mut v = Vec::new(); + match *self { + Statement::Candidate(ref candidate) => { + v.push(StatementKind::Candidate as u8); + candidate.using_encoded(|s| v.extend(s)); + } + Statement::Valid(ref digest) => { + v.push(StatementKind::Valid as u8); + digest.using_encoded(|s| v.extend(s)); + } + Statement::Invalid(ref digest) => { + v.push(StatementKind::Invalid as u8); + digest.using_encoded(|s| v.extend(s)); + } + Statement::Available(ref digest) => { + v.push(StatementKind::Available as u8); + digest.using_encoded(|s| v.extend(s)); + } + } + + v + } + + fn decode(value: &mut I) -> Option { + match value.read_byte() { + Some(x) if x == StatementKind::Candidate as u8 => { + Slicable::decode(value).map(Statement::Candidate) + } + Some(x) if x == StatementKind::Valid as u8 => { + Slicable::decode(value).map(Statement::Valid) + } + Some(x) if x == StatementKind::Invalid as u8 => { + Slicable::decode(value).map(Statement::Invalid) + } + Some(x) if x == StatementKind::Available as u8 => { + Slicable::decode(value).map(Statement::Available) + } + _ => None, + } + } +} + /// A signed statement. #[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)] pub struct SignedStatement { diff --git a/polkadot/statement-table/src/lib.rs b/polkadot/statement-table/src/lib.rs index 2bb261d6c231d..d3e8ca5f458e9 100644 --- a/polkadot/statement-table/src/lib.rs +++ b/polkadot/statement-table/src/lib.rs @@ -14,6 +14,7 @@ //! propose and attest to validity of candidates, and those who can only attest //! to availability. +extern crate substrate_codec as codec; extern crate substrate_primitives; extern crate polkadot_primitives as primitives; diff --git a/substrate/network/src/consensus_gossip.rs b/substrate/network/src/consensus_gossip.rs index 07062c2beed43..cfd387c0255b8 100644 --- a/substrate/network/src/consensus_gossip.rs +++ b/substrate/network/src/consensus_gossip.rs @@ -240,7 +240,6 @@ impl ConsensusGossip where B::Header: HeaderT { if let Some(ref mut peer) = self.peers.get_mut(&peer_id) { peer.known_messages.insert(hash); - // TODO: validate signature? if let Some((sink, parent_hash)) = self.message_sink.take() { if parent == parent_hash { if let Err(e) = sink.unbounded_send(message.clone()) { diff --git a/substrate/runtime/primitives/src/traits.rs b/substrate/runtime/primitives/src/traits.rs index 43639df61e796..ff181ceeec950 100644 --- a/substrate/runtime/primitives/src/traits.rs +++ b/substrate/runtime/primitives/src/traits.rs @@ -32,11 +32,15 @@ pub trait Lazy { fn get(&mut self) -> &T; } +impl<'a> Lazy<[u8]> for &'a [u8] { + fn get(&mut self) -> &[u8] { &**self } +} + /// Means of signature verification. pub trait Verify { /// Type of the signer. type Signer; - /// Verify a signature. + /// Verify a signature. Return `true` if signature is valid for the value. fn verify>(&self, msg: L, signer: &Self::Signer) -> bool; } From 05fa59cce96fe361f45c267bd925415bd05611a3 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 18 Jun 2018 16:24:50 +0200 Subject: [PATCH 079/103] initial consensus network implementation --- Cargo.lock | 2 + polkadot/consensus/Cargo.toml | 4 +- polkadot/consensus/src/collation.rs | 2 +- polkadot/consensus/src/lib.rs | 42 ++- polkadot/consensus/src/shared_table/mod.rs | 120 ++++----- polkadot/network/Cargo.toml | 4 +- polkadot/network/src/consensus.rs | 287 ++++++++++++--------- polkadot/network/src/lib.rs | 20 +- 8 files changed, 263 insertions(+), 218 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 86f1ce54a5b7c..458a8018f26d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1337,6 +1337,8 @@ version = "0.1.0" dependencies = [ "ed25519 0.1.0", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "polkadot-api 0.1.0", "polkadot-consensus 0.1.0", "polkadot-primitives 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/polkadot/consensus/Cargo.toml b/polkadot/consensus/Cargo.toml index 70c0e518e7fb4..37094ea839c22 100644 --- a/polkadot/consensus/Cargo.toml +++ b/polkadot/consensus/Cargo.toml @@ -22,6 +22,8 @@ substrate-bft = { path = "../../substrate/bft" } substrate-codec = { path = "../../substrate/codec" } substrate-primitives = { path = "../../substrate/primitives" } substrate-runtime-support = { path = "../../substrate/runtime-support" } -substrate-keyring = { path = "../../substrate/keyring" } substrate-client = { path = "../../substrate/client" } substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } + +[dev-dependencies] +substrate-keyring = { path = "../../substrate/keyring" } diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs index 3738ae900413a..16dde50d10083 100644 --- a/polkadot/consensus/src/collation.rs +++ b/polkadot/consensus/src/collation.rs @@ -144,7 +144,7 @@ error_chain! { } } -/// Check whether a given collation is valid. Returns `Ok` on success, error otherwise. +/// Check whether a given collation is valid. Returns `Ok` on success, error otherwise. pub fn validate_collation(client: &P, relay_parent: &P::CheckedBlockId, collation: &Collation) -> Result<(), Error> { use parachain::{self, ValidationParams}; diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index dddc85b59e4c6..3159490f59a7f 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -67,7 +67,7 @@ use std::time::{Duration, Instant}; use codec::Slicable; use polkadot_api::PolkadotApi; -use polkadot_primitives::{Hash, Block, BlockId, BlockNumber, Header, Timestamp}; +use polkadot_primitives::{Hash, Block, BlockId, BlockNumber, Header, Timestamp, SessionKey}; use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic as ParachainExtrinsic, CandidateReceipt, CandidateSignature}; use primitives::AuthorityId; use transaction_pool::{Ready, TransactionPool}; @@ -79,18 +79,19 @@ use futures::future; use collation::CollationFetch; use dynamic_inclusion::DynamicInclusion; -pub use self::collation::{Collators, Collation}; +pub use self::collation::{validate_collation, Collators, Collation}; pub use self::error::{ErrorKind, Error}; -pub use self::shared_table::{SharedTable, StatementSource, StatementProducer, ProducedStatements, Statement, GenericStatement}; +pub use self::shared_table::{SharedTable, StatementProducer, ProducedStatements, Statement, SignedStatement, GenericStatement}; pub use service::Service; -mod collation; mod dynamic_inclusion; mod evaluation; mod error; mod service; mod shared_table; +pub mod collation; + // block size limit. const MAX_TRANSACTIONS_SIZE: usize = 4 * 1024 * 1024; @@ -126,8 +127,8 @@ pub trait Network { /// current authorities. type Output: Sink,SinkError=Error>; - /// Instantiate a table router using the given shared table. - fn communication_for(&self, table: Arc) -> (Self::TableRouter, Self::Input, Self::Output); + /// Instantiate a table router using the given shared table and task executor. + fn communication_for(&self, validators: &[SessionKey], table: Arc, task_executor: TaskExecutor) -> (Self::TableRouter, Self::Input, Self::Output); } /// Information about a specific group. @@ -160,7 +161,7 @@ pub fn check_statement(statement: &Statement, signature: &CandidateSignature, si let mut encoded = statement.encode(); encoded.extend(&parent_hash.0); - signature.verify(&encoded[..], signer.into()) + signature.verify(&encoded[..], &signer.into()) } fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: AuthorityId) -> Result<(HashMap, LocalDuty), Error> { @@ -273,7 +274,12 @@ impl bft::Environment for ProposerFactory let n_parachains = active_parachains.len(); let table = Arc::new(SharedTable::new(group_info, sign_with.clone(), parent_hash)); - let (router, input, output) = self.network.communication_for(table.clone()); + let (router, input, output) = self.network.communication_for( + authorities, + table.clone(), + self.handle.clone() + ); + let now = Instant::now(); let dynamic_inclusion = DynamicInclusion::new( n_parachains, @@ -336,7 +342,7 @@ fn dispatch_collation_work( router.local_candidate_data(hash, collation.block_data, extrinsic); // TODO: if we are an availability guarantor also, we should produce an availability statement. - table.sign_and_import(&router, GenericStatement::Candidate(collation.receipt)); + table.sign_and_import(GenericStatement::Candidate(collation.receipt)); Ok(()) } Err(_e) => { @@ -728,3 +734,21 @@ impl Future for CreateProposal where C: PolkadotApi { self.propose_with(proposed_candidates).map(Async::Ready) } } + +#[cfg(test)] +mod tests { + use super::*; + use substrate_keyring::Keyring; + + #[test] + fn sign_and_check_statement() { + let statement: Statement = GenericStatement::Valid([1; 32].into()); + let parent_hash = [2; 32].into(); + + let sig = sign_table_statement(&statement, &Keyring::Alice.pair(), &parent_hash); + + assert!(check_statement(&statement, &sig, Keyring::Alice.to_raw_public(), &parent_hash)); + assert!(!check_statement(&statement, &sig, Keyring::Alice.to_raw_public(), &[0xff; 32].into())); + assert!(!check_statement(&statement, &sig, Keyring::Bob.to_raw_public(), &parent_hash)); + } +} diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index 52c981441d3c7..0c8f986bc2d63 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -22,9 +22,8 @@ use std::sync::Arc; use table::{self, Table, Context as TableContextTrait}; use collation::Collation; -use polkadot_primitives::Hash; +use polkadot_primitives::{Hash, SessionKey}; use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic, CandidateReceipt}; -use primitives::AuthorityId; use parking_lot::Mutex; use futures::{future, prelude::*}; @@ -35,7 +34,7 @@ use self::includable::IncludabilitySender; mod includable; pub use self::includable::Includable; -pub use table::Statement as Statement; +pub use table::{SignedStatement, Statement}; pub use table::generic::Statement as GenericStatement; struct TableContext { @@ -45,11 +44,11 @@ struct TableContext { } impl table::Context for TableContext { - fn is_member_of(&self, authority: &AuthorityId, group: &ParaId) -> bool { + fn is_member_of(&self, authority: &SessionKey, group: &ParaId) -> bool { self.groups.get(group).map_or(false, |g| g.validity_guarantors.contains(authority)) } - fn is_availability_guarantor_of(&self, authority: &AuthorityId, group: &ParaId) -> bool { + fn is_availability_guarantor_of(&self, authority: &SessionKey, group: &ParaId) -> bool { self.groups.get(group).map_or(false, |g| g.availability_guarantors.contains(authority)) } @@ -62,7 +61,7 @@ impl table::Context for TableContext { } impl TableContext { - fn local_id(&self) -> AuthorityId { + fn local_id(&self) -> SessionKey { self.key.public().0 } @@ -78,14 +77,6 @@ impl TableContext { } } -/// Source of statements -pub enum StatementSource { - /// Locally produced statement. - Local, - /// Received statement from remote source, with optional sender. - Remote(Option), -} - // A shared table object. struct SharedTableInner { table: Table, @@ -98,25 +89,21 @@ struct SharedTableInner { impl SharedTableInner { // Import a single statement. Provide a handle to a table router and a function // used to determine if a referenced candidate is valid. - fn import_statement bool>( + // + // The collation-checking function should return `true` if known to be valid, + // `false` if known to be invalid, and `None` if unable to determine. + fn import_remote_statement Option>( &mut self, context: &TableContext, router: &R, statement: table::SignedStatement, - statement_source: StatementSource, + received_from: Option, check_candidate: C, ) -> StatementProducer< ::Future, ::Future, C, > { - // this blank producer does nothing until we attach some futures - // and set a candidate digest. - let received_from = match statement_source { - StatementSource::Local => return Default::default(), - StatementSource::Remote(from) => from, - }; - let summary = match self.table.import_statement(context, statement, received_from) { Some(summary) => summary, None => return Default::default(), @@ -206,6 +193,13 @@ pub struct StatementProducer { work: Option>, } +impl StatementProducer { + /// If this will not produce any statements, returns true. + pub fn is_blank(&self) -> bool { + self.work.is_none() + } +} + struct Work { candidate_receipt: CandidateReceipt, fetch_block_data: future::Fuse, @@ -227,7 +221,7 @@ impl Future for StatementProducer where D: Future, E: Future, - C: FnMut(Collation) -> bool, + C: FnMut(Collation) -> Option, { type Item = ProducedStatements; type Error = Err; @@ -247,11 +241,11 @@ impl Future for StatementProducer }); let hash = work.candidate_receipt.hash(); - self.produced_statements.validity = Some(if is_good { - GenericStatement::Valid(hash) - } else { - GenericStatement::Invalid(hash) - }); + self.produced_statements.validity = match is_good { + Some(true) => Some(GenericStatement::Valid(hash)), + Some(false) => Some(GenericStatement::Invalid(hash)), + None => None, + }; } } @@ -320,29 +314,32 @@ impl SharedTable { &self.context.parent_hash } + /// Get the local validator session key. + pub fn session_key(&self) -> SessionKey { + self.context.local_id() + } + /// Get group info. pub fn group_info(&self) -> &HashMap { &self.context.groups } - /// Import a single statement. Provide a handle to a table router - /// for dispatching any other requests which come up. - pub fn import_statement bool>( + /// Import a single statement with remote source, whose signature has already been checked. + /// + /// The collation-checking function should return `true` if known to be valid, + /// `false` if known to be invalid, and `None` if unable to determine. + pub fn import_remote_statement Option>( &self, router: &R, statement: table::SignedStatement, - received_from: StatementSource, + received_from: Option, check_candidate: C, ) -> StatementProducer<::Future, ::Future, C> { - self.inner.lock().import_statement(&*self.context, router, statement, received_from, check_candidate) + self.inner.lock().import_remote_statement(&*self.context, router, statement, received_from, check_candidate) } /// Sign and import a local statement. - pub fn sign_and_import( - &self, - router: &R, - statement: table::Statement, - ) { + pub fn sign_and_import(&self, statement: table::Statement) { let proposed_digest = match statement { GenericStatement::Candidate(ref c) => Some(c.hash()), _ => None, @@ -355,36 +352,7 @@ impl SharedTable { inner.proposed_digest = proposed_digest; } - let producer = inner.import_statement( - &*self.context, - router, - signed_statement, - StatementSource::Local, - |_| true, - ); - - assert!(producer.work.is_none(), "local statement import never leads to additional work; qed"); - } - - /// Import many statements at once. - /// - /// Provide an iterator yielding pairs of (statement, statement_source). - pub fn import_statements(&self, router: &R, iterable: I) -> U - where - R: TableRouter, - I: IntoIterator, - C: FnMut(Collation) -> bool, - U: ::std::iter::FromIterator::Future, - ::Future, - C, - >>, - { - let mut inner = self.inner.lock(); - - iterable.into_iter().map(move |(statement, statement_source, check_candidate)| { - inner.import_statement(&*self.context, router, statement, statement_source, check_candidate) - }).collect() + inner.table.import_statement(&*self.context, signed_statement, None); } /// Execute a closure using a specific candidate. @@ -413,7 +381,7 @@ impl SharedTable { } /// Get all witnessed misbehavior. - pub fn get_misbehavior(&self) -> HashMap { + pub fn get_misbehavior(&self) -> HashMap { self.inner.lock().table.get_misbehavior().clone() } @@ -508,11 +476,11 @@ mod tests { sender: validity_other, }; - let producer = shared_table.import_statement( + let producer = shared_table.import_remote_statement( &DummyRouter, signed_statement, - StatementSource::Remote(None), - |_| true, + None, + |_| Some(true), ); assert!(producer.work.is_some(), "candidate and local validity group are same"); @@ -558,11 +526,11 @@ mod tests { sender: validity_other, }; - let producer = shared_table.import_statement( + let producer = shared_table.import_remote_statement( &DummyRouter, signed_statement, - StatementSource::Remote(None), - |_| true, + None, + |_| Some(true), ); assert!(producer.work.is_some(), "candidate and local availability group are same"); diff --git a/polkadot/network/Cargo.toml b/polkadot/network/Cargo.toml index 37e9570829978..cfa2d767b5938 100644 --- a/polkadot/network/Cargo.toml +++ b/polkadot/network/Cargo.toml @@ -8,12 +8,14 @@ description = "Polkadot-specific networking protocol" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" +polkadot-api = { path = "../api" } polkadot-consensus = { path = "../consensus" } +polkadot-primitives = { path = "../primitives" } substrate-bft = { path = "../../substrate/bft" } substrate-codec = { path = "../../substrate/codec" } substrate-network = { path = "../../substrate/network" } substrate-primitives = { path = "../../substrate/primitives" } -polkadot-primitives = { path = "../primitives" } ed25519 = { path = "../../substrate/ed25519" } futures = "0.1" tokio = "0.1.7" +log = "0.4" diff --git a/polkadot/network/src/consensus.rs b/polkadot/network/src/consensus.rs index 7c62d9a7f7f62..0e94d4d261d35 100644 --- a/polkadot/network/src/consensus.rs +++ b/polkadot/network/src/consensus.rs @@ -17,38 +17,25 @@ //! Implementation of the traits for consensus networking for the polkadot protocol. use bft; +use ed25519; use substrate_network::{self as net, generic_message as msg}; use substrate_network::consensus_gossip::ConsensusMessage; -use polkadot_consensus::{Network, SharedTable, TableRouter, Statement, Error as ConsensusError}; +use polkadot_api::{PolkadotApi, LocalPolkadotApi}; +use polkadot_consensus::{Network, SharedTable, TableRouter, SignedStatement}; use polkadot_primitives::{Block, Hash, Header, BlockId, SessionKey}; use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt}; -use futures::{future, prelude::*}; -use tokio::runtime::TaskExecutor; - -use super::{Message, NetworkService,}; - -/// Table routing implementation. -pub struct Router; - -impl TableRouter for Router { - type Error = (); - type FetchCandidate = future::Empty; - type FetchExtrinsic = future::Empty; - fn local_candidate_data(&self, _hash: Hash, _block_data: BlockData, _extrinsic: Extrinsic) { +use futures::{future, prelude::*}; +use futures::sync::mpsc; - } +use std::sync::Arc; - fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate { - future::empty() - } +use tokio::runtime::TaskExecutor; - fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { - future::empty() - } -} +use super::{Message, NetworkService,}; -struct BftSink { +/// Sink for output BFT messages. +pub struct BftSink { network: Arc, parent_hash: Hash, _marker: ::std::marker::PhantomData, @@ -96,77 +83,6 @@ impl Sink for BftSink { } } -impl Sink for BftSink { - type SinkItem = bft::Communication; - // TODO: replace this with the ! type when that's stabilized - type SinkError = E; - - fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend, E> { - let network_message = msg::LocalizedBftMessage { - message: match message { - bft::generic::Communication::Consensus(c) => msg::BftMessage::Consensus(match c { - bft::generic::LocalizedMessage::Propose(proposal) => msg::SignedConsensusMessage::Propose(msg::SignedConsensusProposal { - round_number: proposal.round_number as u32, - proposal: proposal.proposal, - digest: proposal.digest, - sender: proposal.sender, - digest_signature: proposal.digest_signature.signature, - full_signature: proposal.full_signature.signature, - }), - bft::generic::LocalizedMessage::Vote(vote) => msg::SignedConsensusMessage::Vote(msg::SignedConsensusVote { - sender: vote.sender, - signature: vote.signature.signature, - vote: match vote.vote { - bft::generic::Vote::Prepare(r, h) => msg::ConsensusVote::Prepare(r as u32, h), - bft::generic::Vote::Commit(r, h) => msg::ConsensusVote::Commit(r as u32, h), - bft::generic::Vote::AdvanceRound(r) => msg::ConsensusVote::AdvanceRound(r as u32), - } - }), - }), - bft::generic::Communication::Auxiliary(justification) => msg::BftMessage::Auxiliary(justification.uncheck().into()), - }, - parent_hash: self.parent_hash, - }; - self.network.send_bft_message(network_message); - Ok(::futures::AsyncSink::Ready) - } - - fn poll_complete(&mut self) -> ::futures::Poll<(), E> { - Ok(Async::Ready(())) - } -} - -struct Messages { - network_stream: mpsc::UnboundedReceiver>, - local_id: SessionKey, - authorities: Vec, -} - -impl Stream for Messages { - type Item = bft::Communication; - type Error = ConsensusError; - - fn poll(&mut self) -> Poll, Self::Error> { - // check the network - loop { - match self.network_stream.poll() { - Err(_) => return Err(bft::Error::from(bft::InputStreamConcluded).into()), - Ok(Async::NotReady) => return Ok(Async::NotReady), - Ok(Async::Ready(None)) => return Ok(Async::NotReady), // the input stream for agreements is never meant to logically end. - Ok(Async::Ready(Some(message))) => { - match process_message(message, &self.local_id, &self.authorities) { - Ok(Some(message)) => return Ok(Async::Ready(Some(message))), - Ok(None) => {} // ignored local message. - Err(e) => { - debug!("Message validation failed: {:?}", e); - } - } - } - } - } - } -} - // check signature and authority validity of message. fn process_bft_message(msg: msg::LocalizedBftMessage, local_id: &SessionKey, authorities: &[SessionKey]) -> Result>, bft::Error> { Ok(Some(match msg.message { @@ -206,7 +122,7 @@ fn process_bft_message(msg: msg::LocalizedBftMessage, local_id: &Se msg::ConsensusVote::AdvanceRound(r) => bft::generic::Vote::AdvanceRound(r as usize), } }; - bft::check_vote(authorities, &msg.parent_hash, &vote)?; + bft::check_vote::(authorities, &msg.parent_hash, &vote)?; trace!(target: "bft", "importing vote {:?} from {}", vote.vote, Hash::from(vote.sender)); vote @@ -215,27 +131,23 @@ fn process_bft_message(msg: msg::LocalizedBftMessage, local_id: &Se msg::BftMessage::Auxiliary(a) => { let justification = bft::UncheckedJustification::from(a); // TODO: get proper error - let justification: Result<_, bft::Error> = bft::check_prepare_justification(authorities, msg.parent_hash, justification) + let justification: Result<_, bft::Error> = bft::check_prepare_justification::(authorities, msg.parent_hash, justification) .map_err(|_| bft::ErrorKind::InvalidJustification.into()); bft::generic::Communication::Auxiliary(justification?) }, })) } -fn process_encoded_statement(raw_message: Vec) -> Option { - match -} - // task that processes all gossipped consensus messages, // checking signatures -struct MessageProcessTask { +struct MessageProcessTask { inner_stream: mpsc::UnboundedReceiver>, bft_messages: mpsc::UnboundedSender>, - authorities: Vec, - local_id: SessionKey, + validators: Vec, + table_router: Router

  • { } fn round_proposer(&self, round: usize) -> AuthorityId { - use primitives::hashing::blake2_256; - - // repeat blake2_256 on parent hash round + 1 times. - // use as index into authorities vec. - // TODO: parent hash is really insecure as a randomness beacon as - // the prior can easily influence the block hash. - let hashed = (0..round + 1).fold(self.parent_hash.0, |a, _| { - blake2_256(&a[..]) - }); - - let index = u32::decode(&mut &hashed[..]) - .expect("there are more than 4 bytes in a 32 byte hash; qed"); - - self.authorities[(index as usize) % self.authorities.len()] + self.proposer.round_proposer(round, &self.authorities[..]) } fn proposal_valid(&self, proposal: &Block) -> Self::EvaluateProposal { From c658d2989caa373783b7c1a6ec57b0cecce9851c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 8 May 2018 11:30:03 +0200 Subject: [PATCH 054/103] update wasm --- .../release/demo_runtime.compact.wasm | Bin 233574 -> 237809 bytes .../release/demo_runtime.wasm | Bin 255250 -> 259586 bytes .../release/polkadot_runtime.compact.wasm | Bin 233747 -> 241675 bytes .../release/polkadot_runtime.wasm | Bin 256495 -> 264973 bytes .../release/runtime_test.compact.wasm | Bin 11121 -> 11128 bytes .../release/runtime_test.wasm | Bin 11789 -> 11796 bytes .../substrate_test_runtime.compact.wasm | Bin 16186 -> 16187 bytes .../release/substrate_test_runtime.wasm | Bin 17932 -> 17933 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index e519babb5947d9243245982d27623b4632a66ba0..ec018357bb9b98ff3d6da538493d6104d6474f16 100644 GIT binary patch literal 237809 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�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 N#z-aS!ihuS|6h_00=57E literal 233574 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 diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index 19f5f0a577584e185513d38f118d92acd2c4feea..198fd8e639e1991067770afa432fe269d8a2acc8 100755 GIT binary patch literal 259586 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

    ) -> Self { CollationFetch { + relay_parent_hash, relay_parent, collators, client, @@ -92,7 +94,7 @@ impl Future for CollationFetch { loop { let x = { - let (r, c) = (self.relay_parent, &self.collators); + let (r, c) = (self.relay_parent_hash, &self.collators); let poll = self.live_fetch .get_or_insert_with(move || c.collate(parachain, r).into_future()) .poll(); @@ -101,18 +103,71 @@ impl Future for CollationFetch { try_ready!(poll) }; - if verify_collation(&*self.client, self.relay_parent, &x) { - self.parachain = None; - return Ok(Async::Ready(x)); - } else { - self.live_fetch = None; - self.collators.note_bad_collator(x.receipt.collator); + match verify_collation(&*self.client, &self.relay_parent, &x) { + Ok(()) => { + self.parachain = None; + return Ok(Async::Ready(x)); + } + Err(e) => { + debug!("Failed to validate parachain due to API error: {}", e); + + // just continue if we got a bad collation or failed to validate + self.live_fetch = None; + self.collators.note_bad_collator(x.receipt.collator) + } } } } } -/// Check whether a given collation is valid. -pub fn verify_collation(_client: &P, _relay_parent: Hash, _collation: &Collation) -> bool { - true // TODO: actually check this. +// Errors that can occur when validating a parachain. +error_chain! { + types { Error, ErrorKind, ResultExt; } + + errors { + InactiveParachain(id: ParaId) { + description("Collated for inactive parachain"), + display("Collated for inactive parachain: {:?}", id), + } + ValidationFailure { + description("Parachain candidate failed validation."), + display("Parachain candidate failed validation."), + } + WrongHeadData { + description("Parachain validation produced wrong head data."), + display("Parachain validation produced wrong head data."), + } + } + + links { + PolkadotApi(::polkadot_api::Error, ::polkadot_api::ErrorKind); + } +} + +// Check whether a given collation is valid. Returns `Ok` on success, error otherwise. +fn verify_collation(client: &P, relay_parent: &P::CheckedBlockId, collation: &Collation) -> Result<(), Error> { + use parachain::{self, ValidationParams}; + + let para_id = collation.receipt.parachain_index; + let validation_code = client.parachain_code(relay_parent, para_id)? + .ok_or_else(|| ErrorKind::InactiveParachain(para_id))?; + + let chain_head = client.parachain_head(relay_parent, para_id)? + .ok_or_else(|| ErrorKind::InactiveParachain(para_id))?; + + let params = ValidationParams { + parent_head: chain_head, + block_data: collation.block_data.0.clone(), + }; + + match parachain::wasm::validate_candidate(&validation_code, params) { + Ok(result) => { + if result.head_data == collation.receipt.head_data.0 { + Ok(()) + } else { + Err(ErrorKind::WrongHeadData.into()) + } + } + Err(_) => Err(ErrorKind::ValidationFailure.into()) + } } diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index d9efa063e39f0..7cc3f934e1285 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -34,9 +34,11 @@ extern crate parking_lot; extern crate polkadot_api; extern crate polkadot_collator as collator; extern crate polkadot_statement_table as table; +extern crate polkadot_parachain as parachain; extern crate polkadot_primitives; extern crate polkadot_transaction_pool as transaction_pool; extern crate polkadot_runtime; + extern crate substrate_bft as bft; extern crate substrate_codec as codec; extern crate substrate_primitives as primitives; @@ -339,6 +341,7 @@ impl bft::Proposer for Proposer transaction_pool: self.transaction_pool.clone(), collation: CollationFetch::new( self.local_duty.validation, + self.parent_id.clone(), self.parent_hash.clone(), self.collators.clone(), self.client.clone() diff --git a/polkadot/parachain/src/lib.rs b/polkadot/parachain/src/lib.rs index cc98a9c0d680c..2f3c064f33f36 100644 --- a/polkadot/parachain/src/lib.rs +++ b/polkadot/parachain/src/lib.rs @@ -31,7 +31,8 @@ //! Subtracting the length from the initial pointer will give a new pointer to the actual return data, //! //! ASCII-diagram demonstrating the return data format: -//! ``` +//! +//! ```ignore //! [return data][len (LE-u32)] //! ^~~returned pointer //! ``` diff --git a/polkadot/parachain/test-chains/build_test_chains.sh b/polkadot/parachain/test-chains/build_test_chains.sh index 54c5c9a289603..6523e46f14e7e 100755 --- a/polkadot/parachain/test-chains/build_test_chains.sh +++ b/polkadot/parachain/test-chains/build_test_chains.sh @@ -6,6 +6,8 @@ for i in */ do i=${i%/} cd $i + + # TODO: stop using exact nightly when wee-alloc works on normal nightly. RUSTFLAGS="-C link-arg=--import-memory" cargo +nightly-2018-03-07 build --target=wasm32-unknown-unknown --release --no-default-features wasm-gc target/wasm32-unknown-unknown/release/$i.wasm ../../tests/res/$i.wasm cd .. diff --git a/polkadot/parachain/tests/res/basic_add.wasm b/polkadot/parachain/tests/res/basic_add.wasm index 1cd8ab6d19893a76c0916a623b395a497e0bacfd..83f52db817f81cf088221070e7db06d3a9ea8765 100755 GIT binary patch delta 2327 zcmb_e&5smS5C?=+SVY7RG*KKyS&4}6qu)n&CM2uG_z?{PVG}QH^?TLZ6MCj6-95~% zNc!N}(}uez4<;ri`~{xWc=Lz{P5cAAdeiEjSr}k3XuQmu*Y8!;ud05(>i+)sJzxB~ z=i5Jy9=^G&x4inp?!yOnEwBEzfA!{#zm9%(ZK*60EbFb$uYYvo=j(qS*!}U1pT3;# zTmJFL-VqFO_jgB5Zhi38v1Y9gd0x0Ex`Om`30;3;&-9?`RgTQQeBdC- zF^VqC|DA~)p?TxmPmN1PwwC7>k0={^vw|a&wORTWG(t`0^1}5;{E9MOc zvF~I(7;VOv(K)yrMYB~X9YsxsCRK?uTnj_@tzJ6!k8xV`t|%!=F|H{8vKU9vS^8~@ z(QPt7=DGC}c?e<WSc;~X|`xe`u0Zi7Jc6hPQu`SscDF^mT8@?f+cMcv60SKz)0g0DLf53rAU`Y)y{gnOGb?9BtqpR2F&sRo)LYQL3xjgvqc$8 zhG>~(Arl@$gU`MS0XnB)&IyLtbk!5HC6`ao2*3J0@&mv`AFIG_Yga4VsB~h(niAtG3sSX@ih@ z08XM0J$vD`S(4+nq3u*A3dJ5Un5-yx0Bh zTAu1%e2{8}%36*(bTk>0CiUv&PyV+E^9p&Da0sYEN}{CK_AB?#VfNDa7fH-&Y9)PN caQY+&CG(PpCzjgok2hD^wZi(zW@LL delta 2851 zcmbtWNpBrR5ROB3hY-kOkVx1bVG(-tGQDv#q>Ydu3XYXX2r=|@*Vs>f8#C|4F#-)J z;)pm{kvMYV5aocB9|00qj*&p(2XN!U0jg)7o#z;n0GH`mx~jga`s(ZX^5?zZ|GM|P z-{y|r+4J=5{0}q7kM5bB|K;%fo!fuTee&s{Aq>~uYNx;P`HgpP|8(Q`BQx*c{_&f& z{j=BS_Vry4X8t(+^2R&go~=Gg-@Bk`+IoAb<+|O0Z?~@kUM_==ug1Fd=2ELQW~AlH zdMU?QIV#);Qa=cBXW8v|mvy1tzBIXuCKA8lcdAwtEM%3_2Nc@qTOz`U_ep7#CV(tl{+4ips8YsxBC_`USg(G zEZkaJr@2_UwMnW=tv8xP=j)Wwr7EC=;%ZDHP@bqHgdj*z)G@oijZP^Yb^7b+DtPZ! zO|vi|aX+YBWL{Cp6xwKM4-8|S*$xm@EaBpAAg1c>2L+aRFf7~cPz;9c_IbQUq)B|l zkPb+oI&h%I8RIj1@K~A_<8qW1P}k-Vi*<;8~40xU+|2@dR(0wY^u!j=QvI;N`s$0)uS49FcK+M4!|J6=)7B2;m_l_DGICRpYao zGMq1#$35te%E-J4DbUSsVLIio>(-|NF)uyUNg`?P9Mg%NC7T(Wq3d@%&ckwZmp0Ix zud+l79x|mVQ@OWCU)yOyb#0wygKnUUWYsZnRDqp$jmEAt9P3&OW{n zb8HSKzv7DBRNx-5;RHYvO$=cHi~{>aKtGD6A4GOGt*J${aQ$Tz)Wx{OPj7{55zYgK zkrGwX6M=#&@N{E#;M}tMcF+MZGeC*r#6ID#j3<@_0%isZ-Q! zAFCp@an9$CYEUE)W}m*xJsby7Bcr5&6$yYgA}10L--OU0sm{55W(!vwp{g;Oq=GME z80REsNv6FSV<5|eu&pod3!{Q~tl>Y=4g&le828jXh>W@fYc4o&{IRmn?^=%v yxwNey{}0HvK59-82>#g_P6DUKo;wgZI9z|>Ag;Z^Re15hF}y2b^iut$H~b4fZG=kz diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 4a4b600397c20..21741212e47e5 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -55,7 +55,7 @@ decl_storage! { // The parachains registered at present. pub Code get(parachain_code): b"para:code" => map [ Id => Vec ]; // The heads of the parachains registered at present. these are kept sorted. - pub Heads get(parachain_head): b"para:head" => map [ Id => CandidateReceipt ]; + pub Heads get(parachain_head): b"para:head" => map [ Id => Vec ]; // Did the parachain heads get updated in this block? DidUpdate: b"para:did" => default bool; @@ -112,7 +112,7 @@ impl Module { /// Register a parachain with given code. /// Fails if given ID is already used. - pub fn register_parachain(id: Id, code: Vec) { + pub fn register_parachain(id: Id, code: Vec, initial_head_data: Vec) { let mut parachains = Self::active_parachains(); match parachains.binary_search(&id) { Ok(_) => panic!("Parachain with id {} already exists", id.into_inner()), @@ -121,6 +121,7 @@ impl Module { >::insert(id, code); >::put(parachains); + >::insert(id, initial_head_data); } /// Deregister a parachain with given id @@ -159,7 +160,7 @@ impl Module { for head in heads { let id = head.parachain_index.clone(); - >::insert(id, head); + >::insert(id, head.head_data.0); } >::put(true); From 716f1043d3f32728b9535451a0642a3154596525 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 30 Apr 2018 13:45:29 +0200 Subject: [PATCH 045/103] produce statements on receiving statements --- polkadot/collator/src/lib.rs | 14 +- polkadot/consensus/src/collation.rs | 14 +- polkadot/consensus/src/lib.rs | 11 +- polkadot/consensus/src/service.rs | 3 +- polkadot/consensus/src/shared_table/mod.rs | 194 +++++++++++++-------- polkadot/consensus/src/tests/mod.rs | 81 +++++++++ polkadot/service/src/lib.rs | 8 +- 7 files changed, 232 insertions(+), 93 deletions(-) create mode 100644 polkadot/consensus/src/tests/mod.rs diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index ae3d7421cccc1..ea40705229612 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -87,7 +87,7 @@ pub trait RelayChainContext { /// Collate the necessary ingress queue using the given context. pub fn collate_ingress<'a, R>(relay_context: R) - -> impl Future + 'a + -> Box + 'a> where R: RelayChainContext, R::Error: 'a, @@ -108,7 +108,7 @@ pub fn collate_ingress<'a, R>(relay_context: R) // and then by the parachain ID. // // then transform that into the consolidated egress queue. - stream::futures_unordered(egress_fetch) + Box::new(stream::futures_unordered(egress_fetch) .fold(BTreeMap::new(), |mut map, (routing_id, egresses)| { for (depth, egress) in egresses.into_iter().rev().enumerate() { let depth = -(depth as i64); @@ -119,19 +119,19 @@ pub fn collate_ingress<'a, R>(relay_context: R) }) .map(|ordered| ordered.into_iter().map(|((_, id), egress)| (id, egress))) .map(|i| i.collect::>()) - .map(ConsolidatedIngress) + .map(ConsolidatedIngress)) } /// Produce a candidate for the parachain. pub fn collate<'a, R, P>(local_id: ParaId, relay_context: R, para_context: P) - -> impl Future + 'a + -> Box + 'a> where - R: RelayChainContext + 'a, + R: RelayChainContext, R::Error: 'a, R::FutureEgress: 'a, P: ParachainContext + 'a, { - collate_ingress(relay_context).map(move |ingress| { + Box::new(collate_ingress(relay_context).map(move |ingress| { let (block_data, _, signature) = para_context.produce_candidate( ingress.0.iter().flat_map(|&(id, ref msgs)| msgs.iter().cloned().map(move |msg| (id, msg))) ); @@ -142,7 +142,7 @@ pub fn collate<'a, R, P>(local_id: ParaId, relay_context: R, para_context: P) block: block_data, unprocessed_ingress: ingress, } - }) + })) } #[cfg(test)] diff --git a/polkadot/consensus/src/collation.rs b/polkadot/consensus/src/collation.rs index 9b1b683c27840..81305581ee01d 100644 --- a/polkadot/consensus/src/collation.rs +++ b/polkadot/consensus/src/collation.rs @@ -31,8 +31,6 @@ use futures::prelude::*; pub struct Collation { /// Block data. pub block_data: BlockData, - /// Extrinsic data. - pub extrinsic: Extrinsic, /// The candidate receipt itself. pub receipt: CandidateReceipt, } @@ -83,10 +81,10 @@ impl CollationFetch { } impl Future for CollationFetch { - type Item = Collation; + type Item = (Collation, Extrinsic); type Error = C::Error; - fn poll(&mut self) -> Poll { + fn poll(&mut self) -> Poll<(Collation, Extrinsic), C::Error> { let parachain = match self.parachain.as_ref() { Some(p) => p.clone(), None => return Ok(Async::NotReady), @@ -106,7 +104,9 @@ impl Future for CollationFetch { match verify_collation(&*self.client, &self.relay_parent, &x) { Ok(()) => { self.parachain = None; - return Ok(Async::Ready(x)); + + // TODO: generate extrinsic while verifying. + return Ok(Async::Ready((x, Extrinsic))); } Err(e) => { debug!("Failed to validate parachain due to API error: {}", e); @@ -144,8 +144,8 @@ error_chain! { } } -// Check whether a given collation is valid. Returns `Ok` on success, error otherwise. -fn verify_collation(client: &P, relay_parent: &P::CheckedBlockId, collation: &Collation) -> Result<(), Error> { +/// Check whether a given collation is valid. Returns `Ok` on success, error otherwise. +pub fn verify_collation(client: &P, relay_parent: &P::CheckedBlockId, collation: &Collation) -> Result<(), Error> { use parachain::{self, ValidationParams}; let para_id = collation.receipt.parachain_index; diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index 5d5f1486a9cb8..b29926125af1f 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -78,9 +78,10 @@ use tokio_timer::{Timer, Interval, Sleep, TimerError}; use futures::prelude::*; use futures::future::{self, Shared}; use parking_lot::Mutex; -use collation::{Collators, CollationFetch}; +use collation::CollationFetch; use dynamic_inclusion::DynamicInclusion; +pub use self::collation::{Collators, Collation}; pub use self::error::{ErrorKind, Error}; pub use self::shared_table::{SharedTable, StatementSource, StatementProducer, ProducedStatements}; pub use service::Service; @@ -653,10 +654,12 @@ impl Future for CreateProposal fn poll(&mut self) -> Poll { // 1. poll local collation future. match self.collation.poll() { - Ok(Async::Ready(collation)) => { + Ok(Async::Ready((collation, extrinsic))) => { let hash = collation.receipt.hash(); - self.router.local_candidate_data(hash, collation.block_data, collation.extrinsic); - self.table.sign_and_import(&self.router, GenericStatement::Valid(hash)); + self.router.local_candidate_data(hash, collation.block_data, extrinsic); + + // TODO: if we are an availability guarantor also, we should produce an availability statement. + self.table.sign_and_import(&self.router, GenericStatement::Candidate(collation.receipt)); } Ok(Async::NotReady) => {}, Err(_) => {}, // TODO: handle this failure to collate. diff --git a/polkadot/consensus/src/service.rs b/polkadot/consensus/src/service.rs index 04a9bee4b5aef..9451b9646d800 100644 --- a/polkadot/consensus/src/service.rs +++ b/polkadot/consensus/src/service.rs @@ -279,6 +279,7 @@ impl Service { client: Arc, network: Arc, transaction_pool: Arc>, + parachain_empty_duration: Duration, key: ed25519::Pair, ) -> Service where @@ -298,7 +299,7 @@ impl Service { transaction_pool: transaction_pool.clone(), network: Network(network.clone()), collators: NoCollators, - parachain_empty_duration: Duration::from_millis(4_000), // TODO + parachain_empty_duration, timer: timer, }; diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index 5f09d3d051cb6..79e9b24fc430c 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -22,6 +22,7 @@ use std::sync::Arc; use table::{self, Table, Context as TableContextTrait}; use table::generic::Statement as GenericStatement; +use collation::Collation; use polkadot_primitives::Hash; use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic, CandidateReceipt}; use primitives::AuthorityId; @@ -94,32 +95,34 @@ struct SharedTableInner { } impl SharedTableInner { - // Import a single statement. Provide a handle to a table router. - fn import_statement( + // Import a single statement. Provide a handle to a table router and a function + // used to determine if a referenced candidate is valid. + fn import_statement bool>( &mut self, context: &TableContext, router: &R, statement: table::SignedStatement, statement_source: StatementSource, - ) -> StatementProducer<::Future, ::Future> { + check_candidate: C, + ) -> StatementProducer< + ::Future, + ::Future, + C, + > { // this blank producer does nothing until we attach some futures // and set a candidate digest. - let mut producer = Default::default(); - let received_from = match statement_source { - StatementSource::Local => return producer, + StatementSource::Local => return Default::default(), StatementSource::Remote(from) => from, }; let summary = match self.table.import_statement(context, statement, received_from) { Some(summary) => summary, - None => return producer, + None => return Default::default(), }; self.update_trackers(&summary.candidate, context); - producer.candidate_digest = Some(summary.candidate); - let local_id = context.local_id(); let is_validity_member = context.is_member_of(&local_id, &summary.group_id); @@ -137,26 +140,38 @@ impl SharedTableInner { let checking_availability = is_availability_member && self.checked_availability.insert(digest.clone()); - if checking_validity || checking_availability { + let work = if checking_validity || checking_availability { match self.table.get_candidate(&digest) { - None => {} // TODO: handle table inconsistency somehow? + None => None, // TODO: handle table inconsistency somehow? Some(candidate) => { - if checking_validity { - producer.fetch_block_data = Some( - router.fetch_block_data(candidate).into_future().fuse() - ); - } - - if checking_availability { - producer.fetch_extrinsic = Some( + let fetch_block_data = + router.fetch_block_data(candidate).into_future().fuse(); + + let fetch_extrinsic = if checking_availability { + Some( router.fetch_extrinsic_data(candidate).into_future().fuse() - ); - } + ) + } else { + None + }; + + Some(Work { + candidate_receipt: candidate.clone(), + fetch_block_data, + fetch_extrinsic, + evaluate: checking_validity, + check_candidate, + }) } } - } + } else { + None + }; - producer + StatementProducer { + produced_statements: Default::default(), + work, + } } fn update_trackers(&mut self, candidate: &Hash, context: &TableContext) { @@ -185,69 +200,81 @@ pub struct ProducedStatements { } /// Future that produces statements about a specific candidate. -pub struct StatementProducer { - fetch_block_data: Option>, - fetch_extrinsic: Option>, +pub struct StatementProducer { produced_statements: ProducedStatements, - candidate_digest: Option, + work: Option>, +} + +struct Work { + candidate_receipt: CandidateReceipt, + fetch_block_data: future::Fuse, + fetch_extrinsic: Option>, + evaluate: bool, + check_candidate: C } -impl Default for StatementProducer { +impl Default for StatementProducer { fn default() -> Self { StatementProducer { - fetch_block_data: None, - fetch_extrinsic: None, produced_statements: Default::default(), - candidate_digest: Default::default(), + work: None, } } } -impl Future for StatementProducer +impl Future for StatementProducer where D: Future, E: Future, + C: FnMut(Collation) -> bool, { type Item = ProducedStatements; type Error = Err; fn poll(&mut self) -> Poll { - let candidate_digest = match self.candidate_digest.as_ref() { - Some(x) => x, + let work = match self.work { + Some(ref mut work) => work, None => return Ok(Async::Ready(::std::mem::replace(&mut self.produced_statements, Default::default()))), }; - let mut done = true; - if let Some(ref mut fetch_block_data) = self.fetch_block_data { - match fetch_block_data.poll()? { - Async::Ready(block_data) => { - // TODO [PoC-2]: validate block data here and make statement. - self.produced_statements.block_data = Some(block_data); - }, - Async::NotReady => { - done = false; - } + if let Async::Ready(block_data) = work.fetch_block_data.poll()? { + self.produced_statements.block_data = Some(block_data.clone()); + if work.evaluate { + let is_good = (work.check_candidate)(Collation { + block_data, + receipt: work.candidate_receipt.clone(), + }); + + let hash = work.candidate_receipt.hash(); + self.produced_statements.validity = Some(if is_good { + GenericStatement::Valid(hash) + } else { + GenericStatement::Invalid(hash) + }); } } - if let Some(ref mut fetch_extrinsic) = self.fetch_extrinsic { - match fetch_extrinsic.poll()? { - Async::Ready(extrinsic) => { - self.produced_statements.extrinsic = Some(extrinsic); - } - Async::NotReady => { - done = false; - } + if let Some(ref mut fetch_extrinsic) = work.fetch_extrinsic { + if let Async::Ready(extrinsic) = fetch_extrinsic.poll()? { + self.produced_statements.extrinsic = Some(extrinsic); } } - if done { - let mut produced = ::std::mem::replace(&mut self.produced_statements, Default::default()); - if produced.block_data.is_some() && produced.extrinsic.is_some() { - // produce a statement about availability. - produced.availability = Some(GenericStatement::Available(candidate_digest.clone())); + let done = self.produced_statements.block_data.is_some() && { + if work.evaluate { + true + } else if self.produced_statements.extrinsic.is_some() { + self.produced_statements.availability = + Some(GenericStatement::Available(work.candidate_receipt.hash())); + + true + } else { + false } - Ok(Async::Ready(produced)) + }; + + if done { + Ok(Async::Ready(::std::mem::replace(&mut self.produced_statements, Default::default()))) } else { Ok(Async::NotReady) } @@ -294,13 +321,14 @@ impl SharedTable { /// Import a single statement. Provide a handle to a table router /// for dispatching any other requests which come up. - pub fn import_statement( + pub fn import_statement bool>( &self, router: &R, statement: table::SignedStatement, received_from: StatementSource, - ) -> StatementProducer<::Future, ::Future> { - self.inner.lock().import_statement(&*self.context, router, statement, received_from) + check_candidate: C, + ) -> StatementProducer<::Future, ::Future, C> { + self.inner.lock().import_statement(&*self.context, router, statement, received_from, check_candidate) } /// Sign and import a local statement. @@ -321,25 +349,35 @@ impl SharedTable { inner.proposed_digest = proposed_digest; } - inner.import_statement(&*self.context, router, signed_statement, StatementSource::Local); + let producer = inner.import_statement( + &*self.context, + router, + signed_statement, + StatementSource::Local, + |_| true, + ); + + assert!(producer.work.is_none(), "local statement import never leads to additional work; qed"); } /// Import many statements at once. /// /// Provide an iterator yielding pairs of (statement, statement_source). - pub fn import_statements(&self, router: &R, iterable: I) -> U + pub fn import_statements(&self, router: &R, iterable: I) -> U where R: TableRouter, - I: IntoIterator, + I: IntoIterator, + C: FnMut(Collation) -> bool, U: ::std::iter::FromIterator::Future, - ::Future> - >, + ::Future, + C, + >>, { let mut inner = self.inner.lock(); - iterable.into_iter().map(move |(statement, statement_source)| { - inner.import_statement(&*self.context, router, statement, statement_source) + iterable.into_iter().map(move |(statement, statement_source, check_candidate)| { + inner.import_statement(&*self.context, router, statement, statement_source, check_candidate) }).collect() } @@ -378,11 +416,6 @@ impl SharedTable { self.inner.lock().table.fill_batch(batch); } - /// Get the local proposed block's hash. - pub fn proposed_hash(&self) -> Option { - self.inner.lock().proposed_digest.clone() - } - /// Track includability of a given set of candidate hashes. pub fn track_includability(&self, iterable: I) -> Includable where I: IntoIterator @@ -401,3 +434,18 @@ impl SharedTable { rx } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn statement_triggers_fetch_and_evaluate() { + + } + + #[test] + fn statement_triggers_fetch_and_availability() { + + } +} diff --git a/polkadot/consensus/src/tests/mod.rs b/polkadot/consensus/src/tests/mod.rs new file mode 100644 index 0000000000000..88c489cad7ca4 --- /dev/null +++ b/polkadot/consensus/src/tests/mod.rs @@ -0,0 +1,81 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Common implementation of `polkadot-consensus` primitives +//! for a single file. + +use std::collections::HashMap; +use std::sync::atomic::{AtomicUsize, Ordering}; +use std::sync::Arc; + +use ::collation::{Collators, Collation}; +use ::SharedTable; + +use parking_lot::Mutex; +use polkadot_primitives::Hash; +use polkadot_primitives::parachain::Id as ParaId; + +use futures::prelude::*; +use futures::future; + +#[derive(Clone)] +pub struct FakeCollators { + inner: Arc>> +} + +impl FakeCollators { + fn new() -> Self { + FakeCollators { + inner: Arc::new(Mutex::new(HashMap::new()),) + } + } + + fn set_collation(&self, para_id: ParaId, collation: Collation) { + self.inner.lock().insert() + } +} + +impl Collators for FakeCollators { + type Error = (); // TODO: ! + type Collation = Box>; + + fn collate(&self, parachain: ParaId, relay_parent: Hash) -> Self::Collation { + match self.inner.lock().get(para_id).cloned() { + Some(collation) => Box::new(future::ok(collation)) as Box<_>, + None => Box::new(future::empty()) as Box<_>, + } + } + + fn note_bad_collator(_collator: AccountId) { + // TODO: testing when collations are bad. + } +} + +struct NetworkInner { + +} + +#[derive(Debug)] +pub struct Network { + node_id: Arc, + inner: Arc, +} + +impl ::consensus::Network for Network { + +} + +pub struct TableRouter(Network); diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index d21415f7d0a7b..f5c23b2733fcb 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -330,7 +330,13 @@ impl Service { // Load the first available key. Code above makes sure it exisis. let key = keystore.load(&keystore.contents()?[0], "")?; info!("Using authority key {:?}", key.public()); - Some(consensus::Service::new(client.clone(), network.clone(), transaction_pool.clone(), key)) + Some(consensus::Service::new( + client.clone(), + network.clone(), + transaction_pool.clone(), + ::std::time::Duration::from_millis(4000), // TODO: dynamic + key, + )) } else { None }; From 516c0c1173aea17d85b017689b67d0ed5fbf3eed Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 1 May 2018 16:35:53 +0200 Subject: [PATCH 046/103] tests for reactive statement production --- polkadot/consensus/src/lib.rs | 4 +- polkadot/consensus/src/shared_table/mod.rs | 115 +++++++++++++++++++++ 2 files changed, 118 insertions(+), 1 deletion(-) diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index b29926125af1f..8d51536fd0763 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -48,7 +48,6 @@ extern crate substrate_network; extern crate exit_future; extern crate tokio_core; extern crate tokio_timer; -extern crate substrate_keyring; extern crate substrate_client as client; #[macro_use] @@ -60,6 +59,9 @@ extern crate futures; #[macro_use] extern crate log; +#[cfg(test)] +extern crate substrate_keyring; + use std::collections::{HashMap, HashSet}; use std::sync::Arc; use std::time::{Duration, Instant}; diff --git a/polkadot/consensus/src/shared_table/mod.rs b/polkadot/consensus/src/shared_table/mod.rs index 79e9b24fc430c..85c7b2a2994aa 100644 --- a/polkadot/consensus/src/shared_table/mod.rs +++ b/polkadot/consensus/src/shared_table/mod.rs @@ -438,14 +438,129 @@ impl SharedTable { #[cfg(test)] mod tests { use super::*; + use substrate_keyring::Keyring; + + #[derive(Clone)] + struct DummyRouter; + impl TableRouter for DummyRouter { + type Error = (); + type FetchCandidate = ::futures::future::Empty; + type FetchExtrinsic = ::futures::future::Empty; + + /// Note local candidate data, making it available on the network to other validators. + fn local_candidate_data(&self, _hash: Hash, _block_data: BlockData, _extrinsic: Extrinsic) { + + } + + /// Fetch block data for a specific candidate. + fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate { + ::futures::future::empty() + } + + /// Fetch extrinsic data for a specific candidate. + fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic { + ::futures::future::empty() + } + } #[test] fn statement_triggers_fetch_and_evaluate() { + let mut groups = HashMap::new(); + + let para_id = ParaId::from(1); + let local_id = Keyring::Alice.to_raw_public(); + let local_key = Arc::new(Keyring::Alice.pair()); + + let validity_other = Keyring::Bob.to_raw_public(); + let validity_other_key = Keyring::Bob.pair(); + let parent_hash = Default::default(); + + groups.insert(para_id, GroupInfo { + validity_guarantors: [local_id, validity_other].iter().cloned().collect(), + availability_guarantors: Default::default(), + needed_validity: 2, + needed_availability: 0, + }); + + let shared_table = SharedTable::new(groups, local_key.clone(), parent_hash); + + let candidate = CandidateReceipt { + parachain_index: para_id, + collator: [1; 32], + head_data: ::polkadot_primitives::parachain::HeadData(vec![1, 2, 3, 4]), + balance_uploads: Vec::new(), + egress_queue_roots: Vec::new(), + fees: 1_000_000, + }; + + let candidate_statement = GenericStatement::Candidate(candidate); + + let signature = ::sign_table_statement(&candidate_statement, &validity_other_key, &parent_hash); + let signed_statement = ::table::generic::SignedStatement { + statement: candidate_statement, + signature: signature.into(), + sender: validity_other, + }; + let producer = shared_table.import_statement( + &DummyRouter, + signed_statement, + StatementSource::Remote(None), + |_| true, + ); + + assert!(producer.work.is_some(), "candidate and local validity group are same"); + assert!(producer.work.as_ref().unwrap().evaluate, "should evaluate validity"); } #[test] fn statement_triggers_fetch_and_availability() { + let mut groups = HashMap::new(); + + let para_id = ParaId::from(1); + let local_id = Keyring::Alice.to_raw_public(); + let local_key = Arc::new(Keyring::Alice.pair()); + + let validity_other = Keyring::Bob.to_raw_public(); + let validity_other_key = Keyring::Bob.pair(); + let parent_hash = Default::default(); + + groups.insert(para_id, GroupInfo { + validity_guarantors: [validity_other].iter().cloned().collect(), + availability_guarantors: [local_id].iter().cloned().collect(), + needed_validity: 1, + needed_availability: 1, + }); + + let shared_table = SharedTable::new(groups, local_key.clone(), parent_hash); + + let candidate = CandidateReceipt { + parachain_index: para_id, + collator: [1; 32], + head_data: ::polkadot_primitives::parachain::HeadData(vec![1, 2, 3, 4]), + balance_uploads: Vec::new(), + egress_queue_roots: Vec::new(), + fees: 1_000_000, + }; + + let candidate_statement = GenericStatement::Candidate(candidate); + + let signature = ::sign_table_statement(&candidate_statement, &validity_other_key, &parent_hash); + let signed_statement = ::table::generic::SignedStatement { + statement: candidate_statement, + signature: signature.into(), + sender: validity_other, + }; + + let producer = shared_table.import_statement( + &DummyRouter, + signed_statement, + StatementSource::Remote(None), + |_| true, + ); + assert!(producer.work.is_some(), "candidate and local availability group are same"); + assert!(producer.work.as_ref().unwrap().fetch_extrinsic.is_some(), "should fetch extrinsic when guaranteeing availability"); + assert!(!producer.work.as_ref().unwrap().evaluate, "should not evaluate validity"); } } From 11a2e2b3b72be119c234127d3b5474908ff653ca Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 1 May 2018 17:28:08 +0200 Subject: [PATCH 047/103] fix build --- .../release/demo_runtime.compact.wasm | Bin 201848 -> 199600 bytes .../release/demo_runtime.wasm | Bin 218645 -> 215937 bytes polkadot/runtime/src/parachains.rs | 2 +- polkadot/runtime/wasm/Cargo.lock | 3 --- .../release/polkadot_runtime.compact.wasm | Bin 198791 -> 197406 bytes .../release/polkadot_runtime.wasm | Bin 216404 -> 214665 bytes substrate/executor/wasm/Cargo.lock | 3 --- .../release/runtime_test.compact.wasm | Bin 4043 -> 4043 bytes .../release/runtime_test.wasm | Bin 4710 -> 4710 bytes substrate/test-runtime/wasm/Cargo.lock | 3 --- .../substrate_test_runtime.compact.wasm | Bin 16318 -> 15489 bytes .../release/substrate_test_runtime.wasm | Bin 17828 -> 16926 bytes 12 files changed, 1 insertion(+), 10 deletions(-) diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 6d05e2e9d11dbdab7fa5f7979ff61348410517f7..34e9ac10817d3aaddcf0e10871c417fc5dfd3cc7 100644 GIT binary patch literal 199600 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 y(8VAy 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 Y!e^KjOYR|QqSEa)st<8 literal 201848 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�^BTG`Kg3%y8l1#--7T8aPA)v(zXb)E9b^qR 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 z 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�yoXhy%> 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 z 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 diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 21741212e47e5..7c267dc78c4f1 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -300,7 +300,7 @@ mod tests { assert_eq!(Parachains::parachain_code(&5u32.into()), Some(vec![1,2,3])); assert_eq!(Parachains::parachain_code(&100u32.into()), Some(vec![4,5,6])); - Parachains::register_parachain(99u32.into(), vec![7,8,9]); + Parachains::register_parachain(99u32.into(), vec![7,8,9], vec![1, 1, 1]); assert_eq!(Parachains::active_parachains(), vec![5u32.into(), 99u32.into(), 100u32.into()]); assert_eq!(Parachains::parachain_code(&99u32.into()), Some(vec![7,8,9])); diff --git a/polkadot/runtime/wasm/Cargo.lock b/polkadot/runtime/wasm/Cargo.lock index efb08193104fa..6ce9dbebab1b6 100644 --- a/polkadot/runtime/wasm/Cargo.lock +++ b/polkadot/runtime/wasm/Cargo.lock @@ -629,9 +629,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "substrate-codec" version = "0.1.0" -dependencies = [ - "substrate-runtime-std 0.1.0", -] [[package]] name = "substrate-keyring" diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index 2f9da3c16aab06e6d4f3fd2eca16f6090820a9fb..9642e64b7b5d29ae9c8c97d2512b163a9da224bd 100644 GIT binary patch delta 66742 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