From 7d89d65f89916fd9670bbb2af951f46db25370de Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 4 Oct 2018 17:54:56 -0400 Subject: [PATCH 001/243] grandpa-compatible digest items --- core/finality-grandpa/src/lib.rs | 19 ++++++++++++++++++- core/sr-primitives/src/traits.rs | 4 ++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 969ebc197a..3321e9edad 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -43,7 +43,9 @@ use futures::stream::Fuse; use futures::sync::mpsc; use client::{Client, ImportNotifications, backend::Backend, CallExecutor}; use codec::{Encode, Decode}; -use runtime_primitives::traits::{As, NumberFor, Block as BlockT, Header as HeaderT}; +use runtime_primitives::traits::{ + As, NumberFor, Block as BlockT, Header as HeaderT, DigestItemFor, +}; use runtime_primitives::generic::BlockId; use substrate_primitives::{ed25519, AuthorityId, Blake2Hasher}; use tokio::timer::Interval; @@ -390,6 +392,7 @@ impl grandpa::Chain for Environment: As, + DigestItemFor: CompatibleDigestItem>, { fn ancestry(&self, base: Block::Hash, block: Block::Hash) -> Result, GrandpaError> { let tree_route_res = ::client::blockchain::tree_route( @@ -434,6 +437,16 @@ impl grandpa::Chain for Environment { + /// If this digest item notes a GRANDPA set change, return the number of + /// blocks the change should occur after. + fn scheduled_change_in(&self) -> Option { None } +} + impl voter::Environment for Environment where Block: 'static, B: Backend + 'static, @@ -441,6 +454,7 @@ impl voter::Environment for Environment: As, + DigestItemFor: CompatibleDigestItem>, { type Timer = Box>; type Id = AuthorityId; @@ -555,6 +569,7 @@ pub fn run_grandpa( N: Network + 'static, N::In: 'static, NumberFor: As, + DigestItemFor: CompatibleDigestItem>, { let chain_info = client.info()?; let genesis_hash = chain_info.chain.genesis_hash; @@ -597,6 +612,8 @@ mod tests { use keyring::Keyring; use client::BlockchainEvents; + impl CompatibleDigestItem> for DigestItemFor { } + #[derive(Clone)] struct TestGrandpaNetwork { inner: Arc>, diff --git a/core/sr-primitives/src/traits.rs b/core/sr-primitives/src/traits.rs index 24dda09345..072dffe3f3 100644 --- a/core/sr-primitives/src/traits.rs +++ b/core/sr-primitives/src/traits.rs @@ -447,6 +447,10 @@ pub trait Block: Clone + Send + Sync + Codec + Eq + MaybeSerializeDebug + 'stati pub type HashFor = <::Header as Header>::Hashing; /// Extract the number type for a block. pub type NumberFor = <::Header as Header>::Number; +/// Extract the digest type for a block. +pub type DigestFor = <::Header as Header>::Digest; +/// Extract the digest item type for a block. +pub type DigestItemFor = as Digest>::Item; /// A "checkable" piece of information, used by the standard Substrate Executive in order to /// check the validity of a piece of extrinsic information, usually by verifying the signature. -- GitLab From 2f9c1d2eab46caa816771b5f5daca34b51b35d38 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 17 Oct 2018 14:18:29 -0700 Subject: [PATCH 002/243] round-localized signatures on GRANDPA messages --- core/finality-grandpa/src/lib.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 3321e9edad..8296502058 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -298,9 +298,15 @@ impl Drop for ClearOnDrop { } } +fn round_localized_payload(round: u64, message: &E) -> Vec { + let mut v = message.encode(); + round.using_encoded(|s| v.extend(s)); + v +} + // converts a message stream into a stream of signed messages. // the output stream checks signatures also. -fn checked_message_stream(inner: S, voters: Vec) +fn checked_message_stream(inner: S, round: u64, voters: Vec) -> impl Stream,Error=Error> where S: Stream,Error=()> { @@ -320,7 +326,7 @@ fn checked_message_stream(inner: S, voters: Vec) } let as_public = ::ed25519::Public::from_raw(msg.id.0); - let encoded_raw = msg.message.encode(); + let encoded_raw = round_localized_payload(round, &msg.message); if ::ed25519::verify_strong(&msg.signature, &encoded_raw, as_public) { Ok(Some(msg)) } else { @@ -349,9 +355,9 @@ fn outgoing_messages( let (tx, rx) = mpsc::unbounded(); let rx = rx .map(move |msg: Message| { - // when locals exist. sign messages on import + // when locals exist, sign messages on import if let Some((ref pair, local_id)) = locals { - let encoded = msg.encode(); + let encoded = round_localized_payload(round, &msg); let signature = pair.sign(&encoded[..]); let signed = SignedMessage:: { message: msg, @@ -477,6 +483,7 @@ impl voter::Environment for Environment( self.network.messages_for(round), + round, self.config.voters.clone(), ); -- GitLab From 1146ca7af21721cdb5aa6a70e02bcfe8dbccfb03 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 17 Oct 2018 15:56:20 -0700 Subject: [PATCH 003/243] generalize some import_queue params --- core/client/src/client.rs | 4 +- core/network/src/import_queue.rs | 237 +++++++++++++++---------------- core/network/src/service.rs | 19 +-- core/network/src/test/mod.rs | 11 +- 4 files changed, 135 insertions(+), 136 deletions(-) diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 81b59e2f7a..9122e1692c 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -892,7 +892,9 @@ impl Client where /// TODO [snd] possibly implement this on blockchain::Backend and just redirect here /// Returns `Ok(None)` if `target_hash` is not found in search space. /// TODO [snd] write down time complexity - pub fn best_containing(&self, target_hash: Block::Hash, maybe_max_number: Option>) -> error::Result> { + pub fn best_containing(&self, target_hash: Block::Hash, maybe_max_number: Option>) + -> error::Result> + { let target_header = { match self.backend.blockchain().header(BlockId::Hash(target_hash))? { Some(x) => x, diff --git a/core/network/src/import_queue.rs b/core/network/src/import_queue.rs index 26ad83e852..79cf19ecc0 100644 --- a/core/network/src/import_queue.rs +++ b/core/network/src/import_queue.rs @@ -65,15 +65,9 @@ pub trait ImportQueue: Send + Sync { /// /// This is called automatically by the network service when synchronization /// begins. - - fn start( - &self, - _sync: Weak>>, - _service: Weak, - _chain: Weak> - ) -> Result<(), Error> where + fn start(&self, _link: L) -> Result<(), Error> where Self: Sized, - E: 'static + ExecuteInContext, + L: 'static + Link, { Ok(()) } @@ -138,18 +132,16 @@ impl AsyncImportQueueData { } impl> ImportQueue for BasicQueue { - fn start>( + fn start>( &self, - sync: Weak>>, - service: Weak, - chain: Weak> + link: L, ) -> Result<(), Error> { debug_assert!(self.handle.lock().is_none()); let qdata = self.data.clone(); let verifier = self.verifier.clone(); *self.handle.lock() = Some(::std::thread::Builder::new().name("ImportQueue".into()).spawn(move || { - import_thread(sync, service, chain, qdata, verifier) + import_thread(link, qdata, verifier) }).map_err(|err| Error::from(ErrorKind::Io(err)))?); Ok(()) } @@ -211,10 +203,8 @@ impl> Drop for BasicQueue { } /// Blocks import thread. -fn import_thread, V: Verifier>( - sync: Weak>>, - service: Weak, - chain: Weak>, +fn import_thread, V: Verifier>( + link: L, qdata: Arc>, verifier: Arc ) { @@ -236,91 +226,89 @@ fn import_thread, V: Verifier>( } }; - match (sync.upgrade(), service.upgrade(), chain.upgrade()) { - (Some(sync), Some(service), Some(chain)) => { - let blocks_hashes: Vec = new_blocks.1.iter().map(|b| b.block.hash.clone()).collect(); - if !import_many_blocks( - &mut SyncLink{chain: &sync, client: &*chain, context: &*service}, - Some(&*qdata), - new_blocks, - verifier.clone(), - ) { - break; - } - - let mut queue_blocks = qdata.queue_blocks.write(); - for blocks_hash in blocks_hashes { - queue_blocks.remove(&blocks_hash); - } - }, - _ => break, + let blocks_hashes: Vec = new_blocks.1.iter().map(|b| b.block.hash.clone()).collect(); + if !import_many_blocks( + &link, + Some(&*qdata), + new_blocks, + verifier.clone(), + ) { + break; + } + + let mut queue_blocks = qdata.queue_blocks.write(); + for blocks_hash in blocks_hashes { + queue_blocks.remove(&blocks_hash); } } trace!(target: "sync", "Stopping import thread"); } -/// ChainSync link trait. -trait SyncLinkApi { + +/// Hooks that the verification queue can use to influence the synchronization +/// algorithm. +pub trait Link: Send { /// Get chain reference. fn chain(&self) -> &Client; /// Block imported. - fn block_imported(&mut self, hash: &B::Hash, number: NumberFor); + fn block_imported(&self, hash: &B::Hash, number: NumberFor); /// Maintain sync. - fn maintain_sync(&mut self); + fn maintain_sync(&self); /// Disconnect from peer. - fn useless_peer(&mut self, who: NodeIndex, reason: &str); + fn useless_peer(&self, who: NodeIndex, reason: &str); /// Disconnect from peer and restart sync. - fn note_useless_and_restart_sync(&mut self, who: NodeIndex, reason: &str); + fn note_useless_and_restart_sync(&self, who: NodeIndex, reason: &str); /// Restart sync. - fn restart(&mut self); + fn restart(&self); } - -/// Link with the ChainSync service. -struct SyncLink<'a, B: 'a + BlockT, E: 'a + ExecuteInContext> { - pub chain: &'a RwLock>, - pub client: &'a Client, - pub context: &'a E, +/// A link implementation that connects to the network. +pub struct NetworkLink> { + /// The client handle. + pub(crate) client: Arc>, + /// The chain-sync handle + pub(crate) sync: Weak>>, + /// Network context. + pub(crate) context: Weak, } -impl<'a, B: 'static + BlockT, E: 'a + ExecuteInContext> SyncLink<'a, B, E> { - /// Execute closure with locked ChainSync. - fn with_sync, &mut Context)>(&mut self, closure: F) { - let service = self.context; - let sync = self.chain; - service.execute_in_context(move |protocol| { - let mut sync = sync.write(); - closure(&mut *sync, protocol) - }); +impl> NetworkLink { + /// Execute closure with locked ChainSync. + fn with_sync, &mut Context)>(&self, closure: F) { + if let (Some(sync), Some(service)) = (self.sync.upgrade(), self.context.upgrade()) { + service.execute_in_context(move |protocol| { + let mut sync = sync.write(); + closure(&mut *sync, protocol) + }); + } } } -impl<'a, B: 'static + BlockT, E: 'a + ExecuteInContext> SyncLinkApi for SyncLink<'a, B, E> { - +impl> Link for NetworkLink { fn chain(&self) -> &Client { - self.client + &*self.client } - fn block_imported(&mut self, hash: &B::Hash, number: NumberFor) { + fn block_imported(&self, hash: &B::Hash, number: NumberFor) { self.with_sync(|sync, _| sync.block_imported(&hash, number)) } - fn maintain_sync(&mut self) { + fn maintain_sync(&self) { self.with_sync(|sync, protocol| sync.maintain_sync(protocol)) } - fn useless_peer(&mut self, who: NodeIndex, reason: &str) { + fn useless_peer(&self, who: NodeIndex, reason: &str) { self.with_sync(|_, protocol| protocol.report_peer(who, Severity::Useless(reason))) } - fn note_useless_and_restart_sync(&mut self, who: NodeIndex, reason: &str) { + fn note_useless_and_restart_sync(&self, who: NodeIndex, reason: &str) { self.with_sync(|sync, protocol| { protocol.report_peer(who, Severity::Useless(reason)); // is this actually malign or just useless? sync.restart(protocol); }) } - fn restart(&mut self) { + fn restart(&self) { self.with_sync(|sync, protocol| sync.restart(protocol)) } } @@ -352,8 +340,8 @@ enum BlockImportError { } /// Import a bunch of blocks. -fn import_many_blocks<'a, B: BlockT, V: Verifier>( - link: &mut SyncLinkApi, +fn import_many_blocks<'a, B: BlockT, L: Link, V: Verifier>( + link: &L, qdata: Option<&AsyncImportQueueData>, blocks: (BlockOrigin, Vec>), verifier: Arc @@ -473,7 +461,7 @@ fn import_single_block>( /// Process single block import result. fn process_import_result<'a, B: BlockT>( - link: &mut SyncLinkApi, + link: &Link, result: Result::Header as HeaderT>::Number>, BlockImportError> ) -> usize { @@ -545,7 +533,7 @@ unsafe impl Sync for ImportCB {} #[cfg(any(test, feature = "test-helpers"))] /// A Verifier that accepts all blocks and passes them on with the configured -/// finality to be imported. +/// finality to be imported. pub struct PassThroughVerifier(pub bool); #[cfg(any(test, feature = "test-helpers"))] @@ -585,25 +573,19 @@ impl> SyncImportQueue { #[cfg(any(test, feature = "test-helpers"))] impl> ImportQueue for SyncImportQueue { - fn start>( + fn start>( &self, - sync: Weak>>, - service: Weak, - chain: Weak> + link: L, ) -> Result<(), Error> { let v = self.0.clone(); - self.1.set(Box::new(move | origin, new_blocks | { + self.1.set(Box::new(move |origin, new_blocks| { let verifier = v.clone(); - match (sync.upgrade(), service.upgrade(), chain.upgrade()) { - (Some(sync), Some(service), Some(chain)) => - import_many_blocks( - &mut SyncLink{chain: &sync, client: &*chain, context: &*service}, - None, - (origin, new_blocks), - verifier, - ), - _ => false - } + import_many_blocks( + &link, + None, + (origin, new_blocks), + verifier, + ) })); Ok(()) } @@ -635,40 +617,51 @@ pub mod tests { use test_client::runtime::{Block, Hash}; use on_demand::tests::DummyExecutor; use runtime_primitives::generic::BlockId; + use std::cell::Cell; use super::*; - struct TestLink { chain: Arc>, - imported: usize, - maintains: usize, - disconnects: usize, - restarts: usize, + imported: Cell, + maintains: Cell, + disconnects: Cell, + restarts: Cell, } impl TestLink { fn new() -> TestLink { TestLink { chain: Arc::new(test_client::new()), - imported: 0, - maintains: 0, - disconnects: 0, - restarts: 0, + imported: Cell::new(0), + maintains: Cell::new(0), + disconnects: Cell::new(0), + restarts: Cell::new(0), } } fn total(&self) -> usize { - self.imported + self.maintains + self.disconnects + self.restarts + self.imported.get() + self.maintains.get() + self.disconnects.get() + self.restarts.get() } } - impl SyncLinkApi for TestLink { + impl Link for TestLink { fn chain(&self) -> &Client { &*self.chain } - fn block_imported(&mut self, _hash: &Hash, _number: NumberFor) { self.imported += 1; } - fn maintain_sync(&mut self) { self.maintains += 1; } - fn useless_peer(&mut self, _: NodeIndex, _: &str) { self.disconnects += 1; } - fn note_useless_and_restart_sync(&mut self, _: NodeIndex, _: &str) { self.disconnects += 1; self.restarts += 1; } - fn restart(&mut self) { self.restarts += 1; } + fn block_imported(&self, _hash: &Hash, _number: NumberFor) { + self.imported.set(self.imported.get() + 1); + } + fn maintain_sync(&self) { + self.maintains.set(self.maintains.get() + 1); + } + fn useless_peer(&self, _: NodeIndex, _: &str) { + self.disconnects.set(self.disconnects.get() + 1); + } + fn note_useless_and_restart_sync(&self, id: NodeIndex, r: &str) { + self.useless_peer(id, r); + self.restart(); + } + fn restart(&self) { + self.restarts.set(self.restarts.get() + 1); + } } fn prepare_good_block() -> (client::Client, Hash, u64, BlockData) { @@ -729,39 +722,39 @@ pub mod tests { #[test] fn process_import_result_works() { - let mut link = TestLink::new(); - assert_eq!(process_import_result::(&mut link, Ok(BlockImportResult::ImportedKnown(Default::default(), 0))), 1); + let link = TestLink::new(); + assert_eq!(process_import_result::(&link, Ok(BlockImportResult::ImportedKnown(Default::default(), 0))), 1); assert_eq!(link.total(), 1); - let mut link = TestLink::new(); - assert_eq!(process_import_result::(&mut link, Ok(BlockImportResult::ImportedKnown(Default::default(), 0))), 1); + let link = TestLink::new(); + assert_eq!(process_import_result::(&link, Ok(BlockImportResult::ImportedKnown(Default::default(), 0))), 1); assert_eq!(link.total(), 1); - assert_eq!(link.imported, 1); + assert_eq!(link.imported.get(), 1); - let mut link = TestLink::new(); - assert_eq!(process_import_result::(&mut link, Ok(BlockImportResult::ImportedUnknown(Default::default(), 0))), 1); + let link = TestLink::new(); + assert_eq!(process_import_result::(&link, Ok(BlockImportResult::ImportedUnknown(Default::default(), 0))), 1); assert_eq!(link.total(), 1); - assert_eq!(link.imported, 1); + assert_eq!(link.imported.get(), 1); - let mut link = TestLink::new(); - assert_eq!(process_import_result::(&mut link, Err(BlockImportError::IncompleteHeader(Some(0)))), 0); + let link = TestLink::new(); + assert_eq!(process_import_result::(&link, Err(BlockImportError::IncompleteHeader(Some(0)))), 0); assert_eq!(link.total(), 1); - assert_eq!(link.disconnects, 1); + assert_eq!(link.disconnects.get(), 1); - let mut link = TestLink::new(); - assert_eq!(process_import_result::(&mut link, Err(BlockImportError::IncompleteJustification(Some(0)))), 0); + let link = TestLink::new(); + assert_eq!(process_import_result::(&link, Err(BlockImportError::IncompleteJustification(Some(0)))), 0); assert_eq!(link.total(), 1); - assert_eq!(link.disconnects, 1); + assert_eq!(link.disconnects.get(), 1); - let mut link = TestLink::new(); - assert_eq!(process_import_result::(&mut link, Err(BlockImportError::UnknownParent)), 0); + let link = TestLink::new(); + assert_eq!(process_import_result::(&link, Err(BlockImportError::UnknownParent)), 0); assert_eq!(link.total(), 1); - assert_eq!(link.restarts, 1); + assert_eq!(link.restarts.get(), 1); - let mut link = TestLink::new(); - assert_eq!(process_import_result::(&mut link, Err(BlockImportError::Error)), 0); + let link = TestLink::new(); + assert_eq!(process_import_result::(&link, Err(BlockImportError::Error)), 0); assert_eq!(link.total(), 1); - assert_eq!(link.restarts, 1); + assert_eq!(link.restarts.get(), 1); } #[test] @@ -782,9 +775,7 @@ pub mod tests { fn async_import_queue_drops() { let verifier = Arc::new(PassThroughVerifier(true)); let queue = BasicQueue::new(verifier); - let service = Arc::new(DummyExecutor); - let chain = Arc::new(test_client::new()); - queue.start(Weak::new(), Arc::downgrade(&service), Arc::downgrade(&chain) as Weak>).unwrap(); + queue.start(TestLink::new()).unwrap(); drop(queue); } } diff --git a/core/network/src/service.rs b/core/network/src/service.rs index 5fd479c167..52db914d6e 100644 --- a/core/network/src/service.rs +++ b/core/network/src/service.rs @@ -129,7 +129,7 @@ impl, H: ExHashT> Service { params: Params, protocol_id: ProtocolId, import_queue: I, - ) -> Result>, Error> { + ) -> Result>, Error> { let chain = params.chain.clone(); let import_queue = Arc::new(import_queue); let handler = Arc::new(Protocol::new( @@ -144,20 +144,23 @@ impl, H: ExHashT> Service { let registered = RegisteredProtocol::new(protocol_id, &versions[..]); let (thread, network) = start_thread(params.network_config, handler.clone(), registered)?; - let sync = Arc::new(Service { + let service = Arc::new(Service { network, protocol_id, handler, bg_thread: Some(thread), }); - import_queue.start( - Arc::downgrade(sync.handler.sync()), - Arc::downgrade(&sync), - Arc::downgrade(&chain) - )?; + // connect the import-queue to the network service. + let link = ::import_queue::NetworkLink { + client: chain, + sync: Arc::downgrade(service.handler.sync()), + context: Arc::downgrade(&service), + }; + + import_queue.start(link)?; - Ok(sync) + Ok(service) } /// Called when a new block is imported by the client. diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index 243e63e2b3..50e644c261 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -158,10 +158,13 @@ impl Peer { // Update the sync state to the latest chain state. let info = self.client.info().expect("In-mem client does not fail"); let header = self.client.header(&BlockId::Hash(info.chain.best_hash)).unwrap().unwrap(); - self.import_queue.start( - Arc::downgrade(&self.sync.sync()), - Arc::downgrade(&self.executor), - Arc::downgrade(&self.sync.context_data().chain)).expect("Test ImportQueue always starts"); + let network_link = ::import_queue::NetworkLink { + client: self.sync.context_data().chain.clone(), + sync: Arc::downgrade(self.sync.sync()), + context: Arc::downgrade(&self.executor), + }; + + self.import_queue.start(network_link).expect("Test ImportQueue always starts"); self.sync.on_block_imported(&mut TestIo::new(&self.queue, None), info.chain.best_hash, &header); } -- GitLab From edc9cd9b1c3b3ad6c7442f45506c8ab1dd73ce90 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 17 Oct 2018 16:09:05 -0700 Subject: [PATCH 004/243] start import queue in chain_ops as well --- core/network/src/import_queue.rs | 10 +++++----- core/service/src/chain_ops.rs | 12 ++++++++++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/core/network/src/import_queue.rs b/core/network/src/import_queue.rs index 79cf19ecc0..328dc478dc 100644 --- a/core/network/src/import_queue.rs +++ b/core/network/src/import_queue.rs @@ -251,15 +251,15 @@ pub trait Link: Send { /// Get chain reference. fn chain(&self) -> &Client; /// Block imported. - fn block_imported(&self, hash: &B::Hash, number: NumberFor); + fn block_imported(&self, _hash: &B::Hash, _number: NumberFor) { } /// Maintain sync. - fn maintain_sync(&self); + fn maintain_sync(&self) { } /// Disconnect from peer. - fn useless_peer(&self, who: NodeIndex, reason: &str); + fn useless_peer(&self, _who: NodeIndex, _reason: &str) { } /// Disconnect from peer and restart sync. - fn note_useless_and_restart_sync(&self, who: NodeIndex, reason: &str); + fn note_useless_and_restart_sync(&self, _who: NodeIndex, _reason: &str) { } /// Restart sync. - fn restart(&self); + fn restart(&self) { } } /// A link implementation that connects to the network. diff --git a/core/service/src/chain_ops.rs b/core/service/src/chain_ops.rs index 38aabe7d68..a3cd5bb770 100644 --- a/core/service/src/chain_ops.rs +++ b/core/service/src/chain_ops.rs @@ -23,7 +23,7 @@ use serde_json; use client::BlockOrigin; use runtime_primitives::generic::{SignedBlock, BlockId}; use runtime_primitives::traits::{As, Block, Header}; -use network::import_queue::{ImportQueue, BlockData}; +use network::import_queue::{ImportQueue, Link, BlockData}; use network::message; use components::{self, Components, ServiceFactory, FactoryFullConfiguration, FactoryBlockNumber, RuntimeGenesis}; use new_client; @@ -87,8 +87,16 @@ pub fn export_blocks(config: FactoryFullConfiguration, exit: E, mut pub fn import_blocks(config: FactoryFullConfiguration, exit: E, mut input: R) -> error::Result<()> where F: ServiceFactory, E: Future + Send + 'static, R: Read, { + use network::ClientHandle; + + struct DummyLink(::std::sync::Arc); + impl> Link for DummyLink { + fn chain(&self) -> &ClientHandle { &*self.0 } + } + let client = new_client::(&config)?; let queue = components::FullComponents::::build_import_queue(&config, client.clone())?; + queue.start(DummyLink(client.clone()))?; let (exit_send, exit_recv) = std::sync::mpsc::channel(); ::std::thread::spawn(move || { @@ -98,7 +106,7 @@ pub fn import_blocks(config: FactoryFullConfiguration, exit: E, mut let count: u32 = Decode::decode(&mut input).ok_or("Error reading file")?; info!("Importing {} blocks", count); - let mut block_count = 0; + let mut block_count = 0; for b in 0 .. count { if exit_recv.try_recv().is_ok() { break; -- GitLab From 38d4eb022df82e98cb51f27c8f3db7fdf9b54fd0 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sun, 21 Oct 2018 11:11:53 +0200 Subject: [PATCH 005/243] localize messages to set-index and add pending changes --- Cargo.lock | 1 + core/finality-grandpa/Cargo.toml | 2 + core/finality-grandpa/src/authorities.rs | 98 ++++++++++++++++++++++++ core/finality-grandpa/src/lib.rs | 41 +++++++--- 4 files changed, 132 insertions(+), 10 deletions(-) create mode 100644 core/finality-grandpa/src/authorities.rs diff --git a/Cargo.lock b/Cargo.lock index 34c1f606c9..6377a2a15c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3027,6 +3027,7 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "substrate-client 0.1.0", diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index b507ffd6d7..88b11d7c75 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -6,9 +6,11 @@ authors = ["Parity Technologies "] [dependencies] futures = "0.1.17" parity-codec = "2.1" +parity-codec-derive = "2.0" sr-primitives = { path = "../sr-primitives" } substrate-primitives = { path = "../primitives" } substrate-client = { path = "../client" } +substrate-network = { path = "../network" } log = "0.4" tokio = "0.1.7" diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs new file mode 100644 index 0000000000..31d61ef5e1 --- /dev/null +++ b/core/finality-grandpa/src/authorities.rs @@ -0,0 +1,98 @@ +// Copyright 2018 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 . + +//! Utilities for dealing with authorities, authority sets, and handoffs. + +use substrate_primitives::AuthorityId; +use std::ops::Add; + +/// A shared authority set. +pub(crate) struct SharedAuthoritySet { + inner: RwLock>, +} + +impl SharedAuthoritySet { + /// The genesis authority set. + pub(crate) fn genesis(initial: Vec<(AuthorityId, usize)>) -> Self { + SharedAuthoritySet { + inner: RwLock::new(AuthoritySet { + current_authorities: initial, + set_id: 0, + pending_changes: Vec::new(), + }) + } + } + + /// Execute some work using the inner authority set. + pub(crate) fn with(&self, f: F) -> U + where F: FnOnce(&AuthoritySet) -> U + { + f(&*self.inner.read()) + } + +impl SharedAuthoritySet { + /// Note an upcoming pending transition. + pub(crate) fn add_pending_change(&self, pending: PendingChange) { + let idx = self.pending_changes + .binary_search_by_key(|change| change.effective_number()) + .unwrap_or_else(|i| i); + + self.pending_changes.insert(idx); + } + + /// Get the earliest limit-block number, if any. + pub(crate) fn current_limit(&self) -> Option<&N> { + self.pending_changes.get(0).map(|change| &change.effective_number()); + } +} + +impl From> for SharedAuthoritySet { + fn from(set: AuthoritySet) -> Self { + SharedAuthoritySet { inner: RwLock::new(set) } + } +} + +/// A set of authorities. +#[derive(Encode, Decode)] +pub(crate) struct AuthoritySet { + current_authorities: Vec<(AuthorityId, usize)>, + set_id: u64, + pending_changes: Vec>, +} + +/// A pending change to the authority set. +/// +/// This will be applied when the announcing block is at some depth within +/// the finalized chain. +#[derive(Encode, Decode)] +pub(crate) struct PendingChange { + /// The new authorities and weights to apply. + pub(crate) next_authorities: Vec<(AuthorityId, usize)>, + /// How deep in the finalized chain the announcing block must be + /// before the change is applied. + pub(crate) finalization_depth: N, + /// The announcing block's height. + pub(crate) canon_height: N, + /// The announcing block's hash. + pub(crate) canon_hash: H, +} + +impl PendingChange { + /// Returns the effective number. + fn effective_number(&self) -> N { + self.canon_height + self.finalization_depth + } +} diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 8296502058..2a6e7814e4 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -23,6 +23,7 @@ extern crate futures; extern crate substrate_client as client; extern crate sr_primitives as runtime_primitives; extern crate substrate_primitives; +extern crate substrate_network as network; extern crate tokio; extern crate parity_codec as codec; @@ -38,6 +39,9 @@ extern crate parking_lot; #[cfg(test)] extern crate substrate_keyring as keyring; +#[macro_use] +extern crate parity_codec_derive; + use futures::prelude::*; use futures::stream::Fuse; use futures::sync::mpsc; @@ -57,7 +61,13 @@ use std::collections::{VecDeque, HashMap}; use std::sync::Arc; use std::time::{Instant, Duration}; +mod authorities; + const LAST_COMPLETED_KEY: &[u8] = b"grandpa_completed_round"; +const AUTHORITY_SET_KEY: &[u8] = b"grandpa_voters"; + +/// round-number, round-state, set indicator +type LastCompleted = (u64, RoundState, u64); /// A GRANDPA message for a substrate chain. pub type Message = grandpa::Message<::Hash>; @@ -69,8 +79,7 @@ pub struct Config { /// The expected duration for a message to be gossiped across the network. pub gossip_duration: Duration, /// The voters. - // TODO: make dynamic - pub voters: Vec, + pub genesis_voters: Vec, /// The local signing key. pub local_key: Option>, } @@ -298,15 +307,23 @@ impl Drop for ClearOnDrop { } } -fn round_localized_payload(round: u64, message: &E) -> Vec { +fn localized_payload(round: u64, set_id: u64, message: &E) -> Vec { let mut v = message.encode(); + round.using_encoded(|s| v.extend(s)); + set_id.using_encoded(|s| v.extend(s)); + v } // converts a message stream into a stream of signed messages. // the output stream checks signatures also. -fn checked_message_stream(inner: S, round: u64, voters: Vec) +fn checked_message_stream( + round: u64, + set_id: u64, + inner: S, + voters: Vec, +) -> impl Stream,Error=Error> where S: Stream,Error=()> { @@ -326,7 +343,7 @@ fn checked_message_stream(inner: S, round: u64, voters: Vec(inner: S, round: u64, voters: Vec( + round: u64, + set_id: u64, local_key: Option>, voters: Vec, - round: u64, network: N, ) -> ( impl Stream,Error=Error>, @@ -357,7 +375,7 @@ fn outgoing_messages( .map(move |msg: Message| { // when locals exist, sign messages on import if let Some((ref pair, local_id)) = locals { - let encoded = round_localized_payload(round, &msg); + let encoded = localized_payload(round, set_id, &msg); let signature = pair.sign(&encoded[..]); let signed = SignedMessage:: { message: msg, @@ -480,17 +498,20 @@ impl voter::Environment for Environment( - self.network.messages_for(round), round, - self.config.voters.clone(), + set_id, + self.network.messages_for(round), + self.config.genesis_voters.clone(), ); let (out_rx, outgoing) = outgoing_messages::( + round, + set_id, self.config.local_key.clone(), self.config.voters.clone(), - round, self.network.clone(), ); -- GitLab From a03d48f807e3f33e47a278db1ade00ba7d8bbbd4 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 25 Oct 2018 16:48:51 +0200 Subject: [PATCH 006/243] note future changes when importing block --- Cargo.lock | 10 ++- core/consensus/common/Cargo.toml | 5 +- core/consensus/common/src/lib.rs | 11 +-- core/consensus/common/src/offline_tracker.rs | 14 +-- core/finality-grandpa/Cargo.toml | 5 +- core/finality-grandpa/src/authorities.rs | 42 +++++---- core/finality-grandpa/src/lib.rs | 95 +++++++++++++++++--- 7 files changed, 138 insertions(+), 44 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e3e4b66e00..0bbfc82ad0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -580,8 +580,8 @@ dependencies = [ [[package]] name = "finality-grandpa" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +version = "0.3.0" +source = "git+https://github.com/paritytech/finality-grandpa#fffce2dc450e72ff8b3f43818f8aceb5cfacc2d7" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2965,6 +2965,7 @@ dependencies = [ name = "substrate-consensus-common" version = "0.1.0" dependencies = [ + "sr-primitives 0.1.0", "substrate-primitives 0.1.0", ] @@ -3019,7 +3020,7 @@ dependencies = [ name = "substrate-finality-grandpa" version = "0.1.0" dependencies = [ - "finality-grandpa 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "finality-grandpa 0.3.0 (git+https://github.com/paritytech/finality-grandpa)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3027,6 +3028,7 @@ dependencies = [ "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "substrate-client 0.1.0", + "substrate-consensus-common 0.1.0", "substrate-keyring 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", @@ -4179,7 +4181,7 @@ dependencies = [ "checksum failure_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "946d0e98a50d9831f5d589038d2ca7f8f455b1c21028c0db0e84116a12696426" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" -"checksum finality-grandpa 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "20d8cf871510f0d57630e75f9e65f87cba29581ccab1f78666d8b2e422d0baa6" +"checksum finality-grandpa 0.3.0 (git+https://github.com/paritytech/finality-grandpa)" = "" "checksum fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d5ec8112f00ea8a483e04748a85522184418fd1cf02890b626d8fc28683f7de" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" diff --git a/core/consensus/common/Cargo.toml b/core/consensus/common/Cargo.toml index ff5ebae0f8..ed39cf8fd4 100644 --- a/core/consensus/common/Cargo.toml +++ b/core/consensus/common/Cargo.toml @@ -4,5 +4,6 @@ version = "0.1.0" authors = ["Parity Technologies "] description = "Common utilities for substrate consensus" -[dev-dependencies] -substrate-primitives = { path= "../../primitives"} \ No newline at end of file +[dependencies] +substrate-primitives = { path = "../../primitives"} +sr-primitives = { path = "../../sr-primitives" } diff --git a/core/consensus/common/src/lib.rs b/core/consensus/common/src/lib.rs index a5bf6d218a..390e7beade 100644 --- a/core/consensus/common/src/lib.rs +++ b/core/consensus/common/src/lib.rs @@ -17,12 +17,13 @@ //! Tracks offline validators. #![allow(dead_code)] -#![cfg(feature="rhd")] - extern crate substrate_primitives as primitives; +extern crate sr_primitives; -use primitives::{generic::BlockId, Justification}; -use primitives::traits::{Block, Header}; +use sr_primitives::{generic::BlockId}; +use sr_primitives::traits::{Block, Header}; +use sr_primitives::Justification; +use primitives::AuthorityId; /// Block import trait. pub trait BlockImport { @@ -30,4 +31,4 @@ pub trait BlockImport { fn import_block(&self, block: B, justification: Justification, authorities: &[AuthorityId]) -> bool; } -pub mod offline_tracker; \ No newline at end of file +pub mod offline_tracker; diff --git a/core/consensus/common/src/offline_tracker.rs b/core/consensus/common/src/offline_tracker.rs index 18845dd68b..bd8eab8b1b 100644 --- a/core/consensus/common/src/offline_tracker.rs +++ b/core/consensus/common/src/offline_tracker.rs @@ -16,7 +16,7 @@ //! Tracks offline validators. -use node_primitives::AccountId; +use primitives::AuthorityId; use std::collections::HashMap; use std::time::{Instant, Duration}; @@ -56,7 +56,7 @@ impl Observed { /// Tracks offline validators and can issue a report for those offline. pub struct OfflineTracker { - observed: HashMap, + observed: HashMap, } impl OfflineTracker { @@ -66,7 +66,7 @@ impl OfflineTracker { } /// Note new consensus is starting with the given set of validators. - pub fn note_new_block(&mut self, validators: &[AccountId]) { + pub fn note_new_block(&mut self, validators: &[AuthorityId]) { use std::collections::HashSet; let set: HashSet<_> = validators.iter().cloned().collect(); @@ -74,14 +74,14 @@ impl OfflineTracker { } /// Note that a round has ended. - pub fn note_round_end(&mut self, validator: AccountId, was_online: bool) { + pub fn note_round_end(&mut self, validator: AuthorityId, was_online: bool) { self.observed.entry(validator) .or_insert_with(Observed::new) .note_round_end(was_online); } /// Generate a vector of indices for offline account IDs. - pub fn reports(&self, validators: &[AccountId]) -> Vec { + pub fn reports(&self, validators: &[AuthorityId]) -> Vec { validators.iter() .enumerate() .filter_map(|(i, v)| if self.is_online(v) { @@ -93,7 +93,7 @@ impl OfflineTracker { } /// Whether reports on a validator set are consistent with our view of things. - pub fn check_consistency(&self, validators: &[AccountId], reports: &[u32]) -> bool { + pub fn check_consistency(&self, validators: &[AuthorityId], reports: &[u32]) -> bool { reports.iter().cloned().all(|r| { let v = match validators.get(r as usize) { Some(v) => v, @@ -106,7 +106,7 @@ impl OfflineTracker { }) } - fn is_online(&self, v: &AccountId) -> bool { + fn is_online(&self, v: &AuthorityId) -> bool { self.observed.get(v).map(Observed::is_active).unwrap_or(true) } } diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index 88b11d7c75..34c0e99b63 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -8,14 +8,17 @@ futures = "0.1.17" parity-codec = "2.1" parity-codec-derive = "2.0" sr-primitives = { path = "../sr-primitives" } +substrate-consensus-common = { path = "../consensus/common" } substrate-primitives = { path = "../primitives" } substrate-client = { path = "../client" } substrate-network = { path = "../network" } log = "0.4" +parking_lot = "0.4" tokio = "0.1.7" [dependencies.finality-grandpa] -version = "0.2.0" +#version = "0.3.0" +git = "https://github.com/paritytech/finality-grandpa" features = ["derive-codec"] [dev-dependencies] diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index 31d61ef5e1..0ed2bcb36c 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -16,23 +16,33 @@ //! Utilities for dealing with authorities, authority sets, and handoffs. +use parking_lot::RwLock; use substrate_primitives::AuthorityId; + +use std::cmp::Ord; use std::ops::Add; +use std::sync::Arc; /// A shared authority set. pub(crate) struct SharedAuthoritySet { - inner: RwLock>, + inner: Arc>>, +} + +impl Clone for SharedAuthoritySet { + fn clone(&self) -> Self { + SharedAuthoritySet { inner: self.inner.clone() } + } } impl SharedAuthoritySet { /// The genesis authority set. - pub(crate) fn genesis(initial: Vec<(AuthorityId, usize)>) -> Self { + pub(crate) fn genesis(initial: Vec<(AuthorityId, u64)>) -> Self { SharedAuthoritySet { - inner: RwLock::new(AuthoritySet { + inner: Arc::new(RwLock::new(AuthoritySet { current_authorities: initial, set_id: 0, pending_changes: Vec::new(), - }) + })) } } @@ -42,33 +52,35 @@ impl SharedAuthoritySet { { f(&*self.inner.read()) } +} -impl SharedAuthoritySet { +impl + Ord + Clone> SharedAuthoritySet { /// Note an upcoming pending transition. pub(crate) fn add_pending_change(&self, pending: PendingChange) { - let idx = self.pending_changes - .binary_search_by_key(|change| change.effective_number()) + let mut inner = self.inner.write(); + let idx = inner.pending_changes + .binary_search_by_key(&pending.effective_number(), |change| change.effective_number()) .unwrap_or_else(|i| i); - self.pending_changes.insert(idx); + inner.pending_changes.insert(idx, pending); } /// Get the earliest limit-block number, if any. - pub(crate) fn current_limit(&self) -> Option<&N> { - self.pending_changes.get(0).map(|change| &change.effective_number()); + pub(crate) fn current_limit(&self) -> Option { + self.inner.read().pending_changes.get(0).map(|change| change.effective_number().clone()) } } impl From> for SharedAuthoritySet { fn from(set: AuthoritySet) -> Self { - SharedAuthoritySet { inner: RwLock::new(set) } + SharedAuthoritySet { inner: Arc::new(RwLock::new(set)) } } } /// A set of authorities. #[derive(Encode, Decode)] pub(crate) struct AuthoritySet { - current_authorities: Vec<(AuthorityId, usize)>, + current_authorities: Vec<(AuthorityId, u64)>, set_id: u64, pending_changes: Vec>, } @@ -80,7 +92,7 @@ pub(crate) struct AuthoritySet { #[derive(Encode, Decode)] pub(crate) struct PendingChange { /// The new authorities and weights to apply. - pub(crate) next_authorities: Vec<(AuthorityId, usize)>, + pub(crate) next_authorities: Vec<(AuthorityId, u64)>, /// How deep in the finalized chain the announcing block must be /// before the change is applied. pub(crate) finalization_depth: N, @@ -90,9 +102,9 @@ pub(crate) struct PendingChange { pub(crate) canon_hash: H, } -impl PendingChange { +impl + Clone> PendingChange { /// Returns the effective number. fn effective_number(&self) -> N { - self.canon_height + self.finalization_depth + self.canon_height.clone() + self.finalization_depth.clone() } } diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 2a6e7814e4..6411fee6ad 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -22,9 +22,11 @@ extern crate finality_grandpa as grandpa; extern crate futures; extern crate substrate_client as client; extern crate sr_primitives as runtime_primitives; +extern crate substrate_consensus_common as consensus_common; extern crate substrate_primitives; extern crate substrate_network as network; extern crate tokio; +extern crate parking_lot; extern crate parity_codec as codec; #[macro_use] @@ -47,10 +49,11 @@ use futures::stream::Fuse; use futures::sync::mpsc; use client::{Client, ImportNotifications, backend::Backend, CallExecutor}; use codec::{Encode, Decode}; +use consensus_common::BlockImport; use runtime_primitives::traits::{ As, NumberFor, Block as BlockT, Header as HeaderT, DigestItemFor, }; -use runtime_primitives::generic::BlockId; +use runtime_primitives::{generic::BlockId, Justification}; use substrate_primitives::{ed25519, AuthorityId, Blake2Hasher}; use tokio::timer::Interval; @@ -61,6 +64,8 @@ use std::collections::{VecDeque, HashMap}; use std::sync::Arc; use std::time::{Instant, Duration}; +use authorities::SharedAuthoritySet; + mod authorities; const LAST_COMPLETED_KEY: &[u8] = b"grandpa_completed_round"; @@ -404,8 +409,9 @@ fn outgoing_messages( /// The environment we run GRANDPA in. pub struct Environment { inner: Arc>, - voters: HashMap, + voters: HashMap, config: Config, + authority_set: SharedAuthoritySet>, network: N, } @@ -461,14 +467,23 @@ impl grandpa::Chain for Environment { + /// The new authorities after the change, along with their respective weights. + pub next_authorities: Vec<(AuthorityId, u64)>, + /// The number of blocks to delay. + pub delay: N, +} + /// A GRANDPA-compatible DigestItem. This can describe when GRANDPA set changes /// are scheduled. // TODO: with specialization, do a blanket implementation so this trait // doesn't have to be implemented by users. pub trait CompatibleDigestItem { - /// If this digest item notes a GRANDPA set change, return the number of - /// blocks the change should occur after. - fn scheduled_change_in(&self) -> Option { None } + /// If this digest item notes a GRANDPA set change, return information about + /// the scheduled change. + fn scheduled_change(&self) -> Option> { None } } impl voter::Environment for Environment where @@ -487,6 +502,7 @@ impl voter::Environment for Environment, SinkError = Self::Error>>; type Error = Error; + #[allow(unreachable_code)] fn round_data( &self, round: u64 @@ -498,7 +514,9 @@ impl voter::Environment for Environment( round, @@ -511,7 +529,7 @@ impl voter::Environment for Environment voter::Environment for Environment { + inner: Arc>, + authority_set: SharedAuthoritySet>, +} + +impl BlockImport for GrandpaBlockImport where + B: Backend + 'static, + E: CallExecutor + 'static, + DigestItemFor: CompatibleDigestItem>, +{ + fn import_block(&self, block: Block, _justification: Justification, _authorities: &[AuthorityId]) -> bool { + use runtime_primitives::traits::Digest; + use authorities::PendingChange; + + let maybe_event = block.header().digest().logs().iter() + .filter_map(|log| log.scheduled_change()) + .next() + .map(|change| (block.header().hash(), *block.header().number(), change)); + + // TODO [now]: use import-block trait for client when implemented + let result = self.inner.import_block(unimplemented!(), unimplemented!()).is_ok(); + if let (true, Some((hash, number, change))) = (result, maybe_event) { + self.authority_set.add_pending_change(PendingChange { + next_authorities: change.next_authorities, + finalization_depth: number + change.delay, + canon_height: number, + canon_hash: hash, + }); + + // TODO [now]: write to DB, and what to do on failure? + } + result + } +} + +/// Run a GRANDPA voter as a task. This returns two pieces of data: a task to run, +/// and a `BlockImport` implementation. pub fn run_grandpa( config: Config, client: Arc>, - voters: HashMap, + voters: HashMap, network: N, -) -> Result,client::error::Error> where +) -> ::client::error::Result<( + impl Future, + GrandpaBlockImport, +)> where Block::Hash: Ord, B: Backend + 'static, E: CallExecutor + 'static, @@ -614,11 +676,22 @@ pub fn run_grandpa( ))? }; + // TODO: attempt to load from disk. + let authority_set = SharedAuthoritySet::genesis( + voters.iter().map(|(&id, &weight)| (id, weight)).collect(), + ); + + let block_import = GrandpaBlockImport { + inner: client.clone(), + authority_set: authority_set.clone(), + }; + let environment = Arc::new(Environment { inner: client, config, voters, network, + authority_set, }); let voter = voter::Voter::new( @@ -628,7 +701,9 @@ pub fn run_grandpa( last_finalized, ); - Ok(voter.map_err(|e| warn!("GRANDPA Voter failed: {:?}", e))) + let work = voter.map_err(|e| warn!("GRANDPA Voter failed: {:?}", e)); + + Ok((work, block_import)) } #[cfg(test)] -- GitLab From 370c109c5760eaee09e72bd1ecbecbd6b8ddafa8 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 25 Oct 2018 18:00:46 +0200 Subject: [PATCH 007/243] use generic block number in GRANDPA --- Cargo.lock | 3 +- core/finality-grandpa/src/lib.rs | 64 ++++++++++++++++++++------------ 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0bbfc82ad0..df76975816 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -581,10 +581,11 @@ dependencies = [ [[package]] name = "finality-grandpa" version = "0.3.0" -source = "git+https://github.com/paritytech/finality-grandpa#fffce2dc450e72ff8b3f43818f8aceb5cfacc2d7" +source = "git+https://github.com/paritytech/finality-grandpa#f1ad8d7ca020e5db0e51e32cd62e8cd3c578d121" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 6411fee6ad..faf1611e1a 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -58,7 +58,7 @@ use substrate_primitives::{ed25519, AuthorityId, Blake2Hasher}; use tokio::timer::Interval; use grandpa::Error as GrandpaError; -use grandpa::{voter, round::State as RoundState, Prevote, Precommit, Equivocation}; +use grandpa::{voter, round::State as RoundState, Equivocation, BlockNumberOps}; use std::collections::{VecDeque, HashMap}; use std::sync::Arc; @@ -72,12 +72,21 @@ const LAST_COMPLETED_KEY: &[u8] = b"grandpa_completed_round"; const AUTHORITY_SET_KEY: &[u8] = b"grandpa_voters"; /// round-number, round-state, set indicator -type LastCompleted = (u64, RoundState, u64); +type LastCompleted = (u64, RoundState, u64); /// A GRANDPA message for a substrate chain. -pub type Message = grandpa::Message<::Hash>; +pub type Message = grandpa::Message<::Hash, NumberFor>; /// A signed message. -pub type SignedMessage = grandpa::SignedMessage<::Hash, ed25519::Signature, AuthorityId>; +pub type SignedMessage = grandpa::SignedMessage< + ::Hash, + NumberFor, + ed25519::Signature, + AuthorityId, +>; +/// A prevote message for this chain's block type. +pub type Prevote = grandpa::Prevote<::Hash, NumberFor>; +/// A precommit message for this chain's block type. +pub type Precommit = grandpa::Precommit<::Hash, NumberFor>; /// Configuration for the GRANDPA service. pub struct Config { @@ -134,18 +143,17 @@ pub trait BlockStatus { /// Return `Ok(Some(number))` or `Ok(None)` depending on whether the block /// is definitely known and has been imported. /// If an unexpected error occurs, return that. - fn block_number(&self, hash: Block::Hash) -> Result, Error>; + fn block_number(&self, hash: Block::Hash) -> Result>, Error>; } impl BlockStatus for Arc> where B: Backend, E: CallExecutor, - NumberFor: As, + NumberFor: BlockNumberOps, { - fn block_number(&self, hash: Block::Hash) -> Result, Error> { + fn block_number(&self, hash: Block::Hash) -> Result>, Error> { self.block_number_from_id(&BlockId::Hash(hash)) .map_err(|e| Error::Blockchain(format!("{:?}", e))) - .map(|num| num.map(|n| n.as_())) } } @@ -415,13 +423,13 @@ pub struct Environment { network: N, } -impl grandpa::Chain for Environment where +impl grandpa::Chain> for Environment where Block: 'static, B: Backend + 'static, E: CallExecutor + 'static, N: Network + 'static, N::In: 'static, - NumberFor: As, + NumberFor: BlockNumberOps, DigestItemFor: CompatibleDigestItem>, { fn ancestry(&self, base: Block::Hash, block: Block::Hash) -> Result, GrandpaError> { @@ -450,13 +458,13 @@ impl grandpa::Chain for Environment Option<(Block::Hash, u32)> { + fn best_chain_containing(&self, block: Block::Hash) -> Option<(Block::Hash, NumberFor)> { match self.inner.best_containing(block, None) { Ok(Some(hash)) => { let header = self.inner.header(&BlockId::Hash(hash)).ok()? .expect("Header known to exist after `best_containing` call; qed"); - Some((hash, header.number().as_())) + Some((hash, header.number().clone())) } Ok(None) => None, Err(e) => { @@ -486,20 +494,26 @@ pub trait CompatibleDigestItem { fn scheduled_change(&self) -> Option> { None } } -impl voter::Environment for Environment where +impl voter::Environment> for Environment where Block: 'static, B: Backend + 'static, E: CallExecutor + 'static, N: Network + 'static, N::In: 'static, - NumberFor: As, + NumberFor: BlockNumberOps, DigestItemFor: CompatibleDigestItem>, { type Timer = Box>; type Id = AuthorityId; type Signature = ed25519::Signature; - type In = Box, Error = Self::Error>>; - type Out = Box, SinkError = Self::Error>>; + type In = Box, Self::Signature, Self::Id>, + Error = Self::Error, + >>; + type Out = Box>, + SinkError = Self::Error, + >>; type Error = Error; #[allow(unreachable_code)] @@ -560,7 +574,7 @@ impl voter::Environment for Environment) -> Result<(), Self::Error> { + fn completed(&self, round: u64, state: RoundState>) -> Result<(), Self::Error> { let encoded_state = (round, state).encode(); if let Err(e) = self.inner.backend() .insert_aux(&[(LAST_COMPLETED_KEY, &encoded_state[..])], &[]) @@ -572,7 +586,7 @@ impl voter::Environment for Environment Result<(), Self::Error> { + fn finalize_block(&self, hash: Block::Hash, number: NumberFor) -> Result<(), Self::Error> { // TODO: don't unconditionally notify. if let Err(e) = self.inner.finalize_block(BlockId::Hash(hash), true) { warn!(target: "afg", "Error applying finality to block {:?}: {:?}", (hash, number), e); @@ -586,7 +600,7 @@ impl voter::Environment for Environment, Self::Signature> + equivocation: ::grandpa::Equivocation, Self::Signature> ) { warn!(target: "afg", "Detected prevote equivocation in the finality worker: {:?}", equivocation); // nothing yet; this could craft misbehavior reports of some kind. @@ -595,7 +609,7 @@ impl voter::Environment for Environment, Self::Signature> + equivocation: Equivocation, Self::Signature> ) { warn!(target: "afg", "Detected precommit equivocation in the finality worker: {:?}", equivocation); // nothing yet @@ -658,19 +672,21 @@ pub fn run_grandpa( E: CallExecutor + 'static, N: Network + 'static, N::In: 'static, - NumberFor: As, + NumberFor: BlockNumberOps, DigestItemFor: CompatibleDigestItem>, { + use runtime_primitives::traits::Zero; + let chain_info = client.info()?; let genesis_hash = chain_info.chain.genesis_hash; let last_finalized = ( chain_info.chain.finalized_hash, - chain_info.chain.finalized_number.as_() + chain_info.chain.finalized_number, ); let (last_round_number, last_state) = match client.backend().get_aux(LAST_COMPLETED_KEY)? { - None => (0, RoundState::genesis((genesis_hash, 0))), - Some(raw) => <(u64, RoundState)>::decode(&mut &raw[..]) + None => (0, RoundState::genesis((genesis_hash, >::zero()))), + Some(raw) => <(u64, RoundState>)>::decode(&mut &raw[..]) .ok_or_else(|| ::client::error::ErrorKind::Backend( format!("Last GRANDPA round state kept in invalid format") ))? -- GitLab From 0dfa924a319866d2aabcf5a6ecfd83165eceb4ad Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 26 Oct 2018 19:19:12 +0200 Subject: [PATCH 008/243] apply authority set changes --- core/finality-grandpa/src/authorities.rs | 87 ++++++++++++++++++++-- core/finality-grandpa/src/lib.rs | 95 +++++++++++++++++++----- 2 files changed, 157 insertions(+), 25 deletions(-) diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index 0ed2bcb36c..37712a7615 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -54,12 +54,14 @@ impl SharedAuthoritySet { } } -impl + Ord + Clone> SharedAuthoritySet { +impl + Ord + Clone> SharedAuthoritySet { /// Note an upcoming pending transition. pub(crate) fn add_pending_change(&self, pending: PendingChange) { + // ordered first by effective number and then by signal-block number. let mut inner = self.inner.write(); + let key = (pending.effective_number(), pending.canon_height); let idx = inner.pending_changes - .binary_search_by_key(&pending.effective_number(), |change| change.effective_number()) + .binary_search_by_key(&key, |change| (change.effective_number(), change.canon_height)) .unwrap_or_else(|i| i); inner.pending_changes.insert(idx, pending); @@ -67,7 +69,17 @@ impl + Ord + Clone> SharedAuthoritySet { /// Get the earliest limit-block number, if any. pub(crate) fn current_limit(&self) -> Option { - self.inner.read().pending_changes.get(0).map(|change| change.effective_number().clone()) + self.inner.read().current_limit() + } + + /// Get the current set ID. This is incremented every time the set changes. + pub(crate) fn set_id(&self) -> u64 { + self.inner.read().set_id + } + + /// Execute a closure with the inner set mutably. + pub(crate) fn with_mut(&self, f: F) -> U where F: FnOnce(&mut AuthoritySet) -> U { + f(&mut *self.inner.write()) } } @@ -78,18 +90,81 @@ impl From> for SharedAuthoritySet { } /// A set of authorities. -#[derive(Encode, Decode)] +#[derive(Debug, Clone, Encode, Decode)] pub(crate) struct AuthoritySet { current_authorities: Vec<(AuthorityId, u64)>, set_id: u64, pending_changes: Vec>, } +impl AuthoritySet { + /// Get the earliest limit-block number, if any. + pub(crate) fn current_limit(&self) -> Option { + self.pending_changes.get(0).map(|change| change.effective_number().clone()) + } + + /// Get the set identifier. + pub(crate) fn set_id(&self) -> u64 { + self.set_id + } + + /// Get the current set id and a reference to the current authority set. + pub(crate) fn current(&self) -> (u64, &[(AuthorityId, u64)]) { + (self.set_id, &self.current_authorities[..]) + } +} + +impl AuthoritySet { + /// Apply or prune any pending transitions. Provide a closure that can be used to check for the + /// finalized block with given number. + /// + /// Returns true when the set's representation has changed. + pub(crate) fn apply_changes(&mut self, just_finalized: N, canonical: F) -> Result + where F: FnMut(N) -> Result + { + let mut changed = false; + loop { + let remove_up_to = match self.pending_changes.first() { + None => break, + Some(change) => { + let effective_number = change.effective_number(); + if effective_number > just_finalized { break } + + // check if the block that signalled the change is canonical in + // our chain. + if canonical(change.canon_height)? == change.canon_hash { + // apply this change: make the set canonical + info!(target: "finality", "Applying authority set change scheduled at block #{:?}", + change.canon_height); + + self.current_authorities = change.next_authorities.clone(); + self.set_id += 1; + + // discard any signalled changes + // that happened before or equal to the effective number of the change. + self.pending_changes.iter() + .take_while(|c| c.canon_height <= effective_number) + .count() + } else { + 1 // prune out this entry; it's no longer relevant. + } + } + }; + + let remove_up_to = ::std::cmp::min(remove_up_to, self.pending_changes.len()); + self.pending_changes.drain(..remove_up_to); + changed = true; // always changed because we strip at least the first change. + } + + Ok(changed) + } +} + /// A pending change to the authority set. /// /// This will be applied when the announcing block is at some depth within /// the finalized chain. -#[derive(Encode, Decode)] +#[derive(Debug, Clone, Encode, Decode)] pub(crate) struct PendingChange { /// The new authorities and weights to apply. pub(crate) next_authorities: Vec<(AuthorityId, u64)>, @@ -103,7 +178,7 @@ pub(crate) struct PendingChange { } impl + Clone> PendingChange { - /// Returns the effective number. + /// Returns the effective number this change will be applied at. fn effective_number(&self) -> N { self.canon_height.clone() + self.finalization_depth.clone() } diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index faf1611e1a..2e907bf9fa 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -47,11 +47,11 @@ extern crate parity_codec_derive; use futures::prelude::*; use futures::stream::Fuse; use futures::sync::mpsc; -use client::{Client, ImportNotifications, backend::Backend, CallExecutor}; +use client::{Client, error::Error as ClientError, ImportNotifications, backend::Backend, CallExecutor}; use codec::{Encode, Decode}; use consensus_common::BlockImport; use runtime_primitives::traits::{ - As, NumberFor, Block as BlockT, Header as HeaderT, DigestItemFor, + NumberFor, Block as BlockT, Header as HeaderT, DigestItemFor, }; use runtime_primitives::{generic::BlockId, Justification}; use substrate_primitives::{ed25519, AuthorityId, Blake2Hasher}; @@ -108,7 +108,7 @@ pub enum Error { /// A blockchain error. Blockchain(String), /// Could not complete a round on disk. - CouldNotCompleteRound(::client::error::Error), + CouldNotCompleteRound(ClientError), /// A timer failed to fire. Timer(::tokio::timer::Error), } @@ -421,6 +421,7 @@ pub struct Environment { config: Config, authority_set: SharedAuthoritySet>, network: N, + set_id: u64, } impl grandpa::Chain> for Environment where @@ -459,13 +460,20 @@ impl grandpa::Chain> for E } fn best_chain_containing(&self, block: Block::Hash) -> Option<(Block::Hash, NumberFor)> { - match self.inner.best_containing(block, None) { + // we refuse to vote beyond the current limit number where transitions are scheduled to + // occur. + // once blocks are finalized that make that transition irrelevant or activate it, + // we will proceed onwards. most of the time there will be no pending transition. + let limit = self.authority_set.current_limit(); + match self.inner.best_containing(block, limit) { Ok(Some(hash)) => { let header = self.inner.header(&BlockId::Hash(hash)).ok()? .expect("Header known to exist after `best_containing` call; qed"); Some((hash, header.number().clone())) } + // Ok(None) can be returned when `block` is after `limit`. That might cause issues. + // might be better to return the header itself in this (rare) case. Ok(None) => None, Err(e) => { debug!(target: "afg", "Encountered error finding best chain containing {:?}: {:?}", block, e); @@ -486,7 +494,8 @@ pub struct ScheduledChange { /// A GRANDPA-compatible DigestItem. This can describe when GRANDPA set changes /// are scheduled. -// TODO: with specialization, do a blanket implementation so this trait +// +// With specialization, could do a blanket implementation so this trait // doesn't have to be implemented by users. pub trait CompatibleDigestItem { /// If this digest item notes a GRANDPA set change, return information about @@ -494,6 +503,33 @@ pub trait CompatibleDigestItem { fn scheduled_change(&self) -> Option> { None } } +/// Signals either an early exit of a voter or an error. +#[derive(Debug)] +pub enum ExitOrError { + /// An error occurred. + Error(Error), + /// Early exit of the voter: the new set ID and the new authorities along with respective weights. + AuthoritiesChanged(u64, Vec<(AuthorityId, u64)>), +} + +impl From for ExitOrError { + fn from(e: Error) -> Self { + ExitOrError::Error(e) + } +} + +impl From for ExitOrError { + fn from(e: ClientError) -> Self { + ExitOrError::Error(Error::from(e)) + } +} + +impl From for ExitOrError { + fn from(e: grandpa::Error) -> Self { + ExitOrError::Error(Error::from(e)) + } +} + impl voter::Environment> for Environment where Block: 'static, B: Backend + 'static, @@ -514,7 +550,7 @@ impl voter::Environment> f SinkItem = ::grandpa::Message>, SinkError = Self::Error, >>; - type Error = Error; + type Error = ExitOrError; #[allow(unreachable_code)] fn round_data( @@ -528,24 +564,21 @@ impl voter::Environment> f let prevote_timer = Delay::new(now + self.config.gossip_duration * 2); let precommit_timer = Delay::new(now + self.config.gossip_duration * 4); - // TODO [now]: Get from shared authority set. - let set_id = unimplemented!(); - // TODO: dispatch this with `mpsc::spawn`. let incoming = checked_message_stream::( round, - set_id, + self.set_id, self.network.messages_for(round), self.config.genesis_voters.clone(), ); let (out_rx, outgoing) = outgoing_messages::( round, - set_id, + self.set_id, self.config.local_key.clone(), self.config.genesis_voters.clone(), self.network.clone(), - ); + ).sink_map_err(Into::into); // schedule incoming messages from the network to be held until // corresponding blocks are imported. @@ -556,7 +589,7 @@ impl voter::Environment> f ); // join incoming network messages with locally originating ones. - let incoming = Box::new(incoming.select(out_rx)); + let incoming = Box::new(incoming.select(out_rx).map_err(Into::into)); // schedule network message cleanup when sink drops. let outgoing = Box::new(ClearOnDrop { @@ -580,21 +613,44 @@ impl voter::Environment> f .insert_aux(&[(LAST_COMPLETED_KEY, &encoded_state[..])], &[]) { warn!(target: "afg", "Shutting down voter due to error bookkeeping last completed round in DB: {:?}", e); - Err(Error::CouldNotCompleteRound(e)) + Err(Error::CouldNotCompleteRound(e).into()) } else { Ok(()) } } fn finalize_block(&self, hash: Block::Hash, number: NumberFor) -> Result<(), Self::Error> { - // TODO: don't unconditionally notify. + // ideally some handle to a synchronization oracle would be used + // to avoid unconditionally notifying. if let Err(e) = self.inner.finalize_block(BlockId::Hash(hash), true) { warn!(target: "afg", "Error applying finality to block {:?}: {:?}", (hash, number), e); + + // we return without error because not being able to finalize (temporarily) is + // non-fatal. + return Ok(()); } - // we return without error in all cases because not being able to finalize is - // non-fatal. - Ok(()) + self.authority_set.with_mut(|authority_set| { + let client = &self.inner; + let prior_id = authority_set.set_id(); + let has_changed = authority_set.apply_changes(number, |canon_number| { + client.block_hash_from_id(&BlockId::number(canon_number)) + .map(|h| h.expect("given number always less than newly-finalized number; \ + thus there is a block with that number finalized already; qed")) + })?; + + if has_changed { + // TODO [now]: write to disk. if it fails, exit the node. + } + + let (new_id, set_ref) = authority_set.current(); + if new_id != prior_id { + // the authority set has changed. + return Err(ExitOrError::AuthoritiesChanged(new_id, set_ref.to_vec())); + } + + Ok(()) + }) } fn prevote_equivocation( @@ -692,7 +748,7 @@ pub fn run_grandpa( ))? }; - // TODO: attempt to load from disk. + // TODO [now]: attempt to load from disk. let authority_set = SharedAuthoritySet::genesis( voters.iter().map(|(&id, &weight)| (id, weight)).collect(), ); @@ -707,6 +763,7 @@ pub fn run_grandpa( config, voters, network, + set_id: authority_set.set_id(), authority_set, }); -- GitLab From 7f51db967d9b2510f0888ab5d52dade99f7b6edb Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 27 Oct 2018 15:43:03 +0200 Subject: [PATCH 009/243] compiles --- core/finality-grandpa/src/authorities.rs | 31 +++++++++++++++--------- core/finality-grandpa/src/lib.rs | 14 +++++------ 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index 37712a7615..cbe53ceb3d 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -20,6 +20,7 @@ use parking_lot::RwLock; use substrate_primitives::AuthorityId; use std::cmp::Ord; +use std::fmt::Debug; use std::ops::Add; use std::sync::Arc; @@ -54,14 +55,19 @@ impl SharedAuthoritySet { } } -impl + Ord + Clone> SharedAuthoritySet { +impl SharedAuthoritySet + where N: Add + Ord + Clone + Debug +{ /// Note an upcoming pending transition. pub(crate) fn add_pending_change(&self, pending: PendingChange) { // ordered first by effective number and then by signal-block number. let mut inner = self.inner.write(); - let key = (pending.effective_number(), pending.canon_height); + let key = (pending.effective_number(), pending.canon_height.clone()); let idx = inner.pending_changes - .binary_search_by_key(&key, |change| (change.effective_number(), change.canon_height)) + .binary_search_by_key(&key, |change| ( + change.effective_number(), + change.canon_height.clone(), + )) .unwrap_or_else(|i| i); inner.pending_changes.insert(idx, pending); @@ -98,11 +104,6 @@ pub(crate) struct AuthoritySet { } impl AuthoritySet { - /// Get the earliest limit-block number, if any. - pub(crate) fn current_limit(&self) -> Option { - self.pending_changes.get(0).map(|change| change.effective_number().clone()) - } - /// Get the set identifier. pub(crate) fn set_id(&self) -> u64 { self.set_id @@ -114,12 +115,20 @@ impl AuthoritySet { } } -impl AuthoritySet { +impl AuthoritySet + where N: Add + Ord + Clone + Debug, +{ + /// Get the earliest limit-block number, if any. + pub(crate) fn current_limit(&self) -> Option { + self.pending_changes.get(0).map(|change| change.effective_number().clone()) + } + /// Apply or prune any pending transitions. Provide a closure that can be used to check for the /// finalized block with given number. /// /// Returns true when the set's representation has changed. - pub(crate) fn apply_changes(&mut self, just_finalized: N, canonical: F) -> Result + pub(crate) fn apply_changes(&mut self, just_finalized: N, mut canonical: F) + -> Result where F: FnMut(N) -> Result { let mut changed = false; @@ -132,7 +141,7 @@ impl AuthoritySet { // check if the block that signalled the change is canonical in // our chain. - if canonical(change.canon_height)? == change.canon_hash { + if canonical(change.canon_height.clone())? == change.canon_hash { // apply this change: make the set canonical info!(target: "finality", "Applying authority set change scheduled at block #{:?}", change.canon_height); diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 2e907bf9fa..7c12be4a8a 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -108,7 +108,7 @@ pub enum Error { /// A blockchain error. Blockchain(String), /// Could not complete a round on disk. - CouldNotCompleteRound(ClientError), + Client(ClientError), /// A timer failed to fire. Timer(::tokio::timer::Error), } @@ -520,7 +520,7 @@ impl From for ExitOrError { impl From for ExitOrError { fn from(e: ClientError) -> Self { - ExitOrError::Error(Error::from(e)) + ExitOrError::Error(Error::Client(e)) } } @@ -578,7 +578,7 @@ impl voter::Environment> f self.config.local_key.clone(), self.config.genesis_voters.clone(), self.network.clone(), - ).sink_map_err(Into::into); + ); // schedule incoming messages from the network to be held until // corresponding blocks are imported. @@ -595,12 +595,12 @@ impl voter::Environment> f let outgoing = Box::new(ClearOnDrop { round, network: self.network.clone(), - inner: outgoing, + inner: outgoing.sink_map_err(Into::into), }); voter::RoundData { - prevote_timer: Box::new(prevote_timer.map_err(Error::Timer)), - precommit_timer: Box::new(precommit_timer.map_err(Error::Timer)), + prevote_timer: Box::new(prevote_timer.map_err(|e| Error::Timer(e).into())), + precommit_timer: Box::new(precommit_timer.map_err(|e| Error::Timer(e).into())), voters: self.voters.clone(), incoming, outgoing, @@ -613,7 +613,7 @@ impl voter::Environment> f .insert_aux(&[(LAST_COMPLETED_KEY, &encoded_state[..])], &[]) { warn!(target: "afg", "Shutting down voter due to error bookkeeping last completed round in DB: {:?}", e); - Err(Error::CouldNotCompleteRound(e).into()) + Err(Error::Client(e).into()) } else { Ok(()) } -- GitLab From c0c65974b7c130243b8a66ad30f3c933410fe8d5 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 27 Oct 2018 16:18:01 +0200 Subject: [PATCH 010/243] add some tests for authority set logic --- core/finality-grandpa/Cargo.toml | 2 - core/finality-grandpa/src/authorities.rs | 167 ++++++++++++++++++++--- core/finality-grandpa/src/lib.rs | 12 +- 3 files changed, 154 insertions(+), 27 deletions(-) diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index 34c0e99b63..afff3ad5cb 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -11,7 +11,6 @@ sr-primitives = { path = "../sr-primitives" } substrate-consensus-common = { path = "../consensus/common" } substrate-primitives = { path = "../primitives" } substrate-client = { path = "../client" } -substrate-network = { path = "../network" } log = "0.4" parking_lot = "0.4" tokio = "0.1.7" @@ -23,5 +22,4 @@ features = ["derive-codec"] [dev-dependencies] substrate-network = { path = "../network", features = ["test-helpers"] } -parking_lot = "0.4" substrate-keyring = { path = "../keyring" } diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index cbe53ceb3d..4e435f5420 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -53,6 +53,11 @@ impl SharedAuthoritySet { { f(&*self.inner.read()) } + + /// Execute a closure with the inner set mutably. + pub(crate) fn with_mut(&self, f: F) -> U where F: FnOnce(&mut AuthoritySet) -> U { + f(&mut *self.inner.write()) + } } impl SharedAuthoritySet @@ -60,17 +65,7 @@ impl SharedAuthoritySet { /// Note an upcoming pending transition. pub(crate) fn add_pending_change(&self, pending: PendingChange) { - // ordered first by effective number and then by signal-block number. - let mut inner = self.inner.write(); - let key = (pending.effective_number(), pending.canon_height.clone()); - let idx = inner.pending_changes - .binary_search_by_key(&key, |change| ( - change.effective_number(), - change.canon_height.clone(), - )) - .unwrap_or_else(|i| i); - - inner.pending_changes.insert(idx, pending); + self.inner.write().add_pending_change(pending) } /// Get the earliest limit-block number, if any. @@ -82,11 +77,6 @@ impl SharedAuthoritySet pub(crate) fn set_id(&self) -> u64 { self.inner.read().set_id } - - /// Execute a closure with the inner set mutably. - pub(crate) fn with_mut(&self, f: F) -> U where F: FnOnce(&mut AuthoritySet) -> U { - f(&mut *self.inner.write()) - } } impl From> for SharedAuthoritySet { @@ -118,6 +108,19 @@ impl AuthoritySet { impl AuthoritySet where N: Add + Ord + Clone + Debug, { + /// Note an upcoming pending transition. + pub(crate) fn add_pending_change(&mut self, pending: PendingChange) { + // ordered first by effective number and then by signal-block number. + let key = (pending.effective_number(), pending.canon_height.clone()); + let idx = self.pending_changes + .binary_search_by_key(&key, |change| ( + change.effective_number(), + change.canon_height.clone(), + )) + .unwrap_or_else(|i| i); + + self.pending_changes.insert(idx, pending); + } /// Get the earliest limit-block number, if any. pub(crate) fn current_limit(&self) -> Option { self.pending_changes.get(0).map(|change| change.effective_number().clone()) @@ -173,7 +176,7 @@ impl AuthoritySet /// /// This will be applied when the announcing block is at some depth within /// the finalized chain. -#[derive(Debug, Clone, Encode, Decode)] +#[derive(Debug, Clone, Encode, Decode, PartialEq)] pub(crate) struct PendingChange { /// The new authorities and weights to apply. pub(crate) next_authorities: Vec<(AuthorityId, u64)>, @@ -192,3 +195,133 @@ impl + Clone> PendingChange { self.canon_height.clone() + self.finalization_depth.clone() } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn changes_sorted_in_correct_order() { + let mut authorities = AuthoritySet { + current_authorities: Vec::new(), + set_id: 0, + pending_changes: Vec::new(), + }; + + let change_a = PendingChange { + next_authorities: Vec::new(), + finalization_depth: 10, + canon_height: 5, + canon_hash: "hash_a", + }; + + let change_b = PendingChange { + next_authorities: Vec::new(), + finalization_depth: 0, + canon_height: 16, + canon_hash: "hash_b", + }; + + let change_c = PendingChange { + next_authorities: Vec::new(), + finalization_depth: 5, + canon_height: 10, + canon_hash: "hash_c", + }; + + authorities.add_pending_change(change_a.clone()); + authorities.add_pending_change(change_b.clone()); + authorities.add_pending_change(change_c.clone()); + + assert_eq!(authorities.pending_changes, vec![change_a, change_c, change_b]); + } + + #[test] + fn apply_change() { + let mut authorities = AuthoritySet { + current_authorities: Vec::new(), + set_id: 0, + pending_changes: Vec::new(), + }; + + let set_a = vec![([1; 32].into(), 5)]; + let set_b = vec![([2; 32].into(), 5)]; + + let change_a = PendingChange { + next_authorities: set_a.clone(), + finalization_depth: 10, + canon_height: 5, + canon_hash: "hash_a", + }; + + let change_b = PendingChange { + next_authorities: set_b.clone(), + finalization_depth: 10, + canon_height: 5, + canon_hash: "hash_b", + }; + + authorities.add_pending_change(change_a.clone()); + authorities.add_pending_change(change_b.clone()); + + authorities.apply_changes::<_, ()>(10, |_| panic!()).unwrap(); + assert!(authorities.current_authorities.is_empty()); + + authorities.apply_changes::<_, ()>( + 15, + |n| if n == 5 { Ok("hash_a") } else { panic!() } + ).unwrap(); + + assert_eq!(authorities.current_authorities, set_a); + assert_eq!(authorities.set_id, 1); + } + + #[test] + fn apply_many_changes_at_once() { + let mut authorities = AuthoritySet { + current_authorities: Vec::new(), + set_id: 0, + pending_changes: Vec::new(), + }; + + let set_a = vec![([1; 32].into(), 5)]; + let set_b = vec![([2; 32].into(), 5)]; + let set_c = vec![([3; 32].into(), 5)]; + + let change_a = PendingChange { + next_authorities: set_a.clone(), + finalization_depth: 10, + canon_height: 5, + canon_hash: "hash_a", + }; + + // will be ignored because it was signalled when change_a still pending. + let change_b = PendingChange { + next_authorities: set_b.clone(), + finalization_depth: 10, + canon_height: 15, + canon_hash: "hash_b", + }; + + let change_c = PendingChange { + next_authorities: set_c.clone(), + finalization_depth: 10, + canon_height: 16, + canon_hash: "hash_c", + }; + + authorities.add_pending_change(change_a.clone()); + authorities.add_pending_change(change_b.clone()); + authorities.add_pending_change(change_c.clone()); + + authorities.apply_changes(26, |n| match n { + 5 => Ok("hash_a"), + 15 => Ok("hash_b"), + 16 => Ok("hash_c"), + _ => Err(()), + }).unwrap(); + + assert_eq!(authorities.current_authorities, set_c); + assert_eq!(authorities.set_id, 2); // has been bumped only twice + } +} diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 7c12be4a8a..f5379a8113 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -24,7 +24,6 @@ extern crate substrate_client as client; extern crate sr_primitives as runtime_primitives; extern crate substrate_consensus_common as consensus_common; extern crate substrate_primitives; -extern crate substrate_network as network; extern crate tokio; extern crate parking_lot; extern crate parity_codec as codec; @@ -35,9 +34,6 @@ extern crate log; #[cfg(test)] extern crate substrate_network as network; -#[cfg(test)] -extern crate parking_lot; - #[cfg(test)] extern crate substrate_keyring as keyring; @@ -871,10 +867,10 @@ mod tests { .take_while(|n| Ok(n.header.number() < &20)) .for_each(move |_| Ok(())) ); - let voter = run_grandpa( + let (voter, _) = run_grandpa( Config { gossip_duration: TEST_GOSSIP_DURATION, - voters: voters.clone(), + genesis_voters: voters.clone(), local_key: Some(Arc::new(key.clone().into())), }, client, @@ -930,10 +926,10 @@ mod tests { .take_while(|n| Ok(n.header.number() < &20)) .for_each(move |_| Ok(())) ); - let voter = run_grandpa( + let (voter, _) = run_grandpa( Config { gossip_duration: TEST_GOSSIP_DURATION, - voters: voters.keys().cloned().collect(), + genesis_voters: voters.keys().cloned().collect(), local_key, }, client, -- GitLab From a33180f0b1d2c9df9fda86981055e816ba64003a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 27 Oct 2018 17:32:42 +0200 Subject: [PATCH 011/243] restart voter with new authority set as necessary --- core/finality-grandpa/src/authorities.rs | 42 ++++-- core/finality-grandpa/src/lib.rs | 155 +++++++++++++++-------- 2 files changed, 136 insertions(+), 61 deletions(-) diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index 4e435f5420..dd6a433995 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -85,6 +85,15 @@ impl From> for SharedAuthoritySet { } } +/// Status of the set after changes were applied. +pub(crate) struct Status { + /// Whether internal changes were made. + pub(crate) changed: bool, + /// `Some` when underlying authority set has changed, containign the + /// block where that set changed. + pub(crate) new_set_block: Option<(H, N)>, +} + /// A set of authorities. #[derive(Debug, Clone, Encode, Decode)] pub(crate) struct AuthoritySet { @@ -129,12 +138,16 @@ impl AuthoritySet /// Apply or prune any pending transitions. Provide a closure that can be used to check for the /// finalized block with given number. /// - /// Returns true when the set's representation has changed. + /// When the set has changed, the return value will be `Ok(Some((H, N)))` which is the cnaonical + /// block where the set last changed. pub(crate) fn apply_changes(&mut self, just_finalized: N, mut canonical: F) - -> Result + -> Result, E> where F: FnMut(N) -> Result { - let mut changed = false; + let mut status = Status { + changed: false, + new_set_block: None, + }; loop { let remove_up_to = match self.pending_changes.first() { None => break, @@ -152,6 +165,11 @@ impl AuthoritySet self.current_authorities = change.next_authorities.clone(); self.set_id += 1; + status.new_set_block = Some(( + canonical(effective_number.clone())?, + effective_number.clone(), + )); + // discard any signalled changes // that happened before or equal to the effective number of the change. self.pending_changes.iter() @@ -165,10 +183,10 @@ impl AuthoritySet let remove_up_to = ::std::cmp::min(remove_up_to, self.pending_changes.len()); self.pending_changes.drain(..remove_up_to); - changed = true; // always changed because we strip at least the first change. + status.changed = true; // always changed because we strip at least the first change. } - Ok(changed) + Ok(status) } } @@ -264,16 +282,18 @@ mod tests { authorities.add_pending_change(change_a.clone()); authorities.add_pending_change(change_b.clone()); - authorities.apply_changes::<_, ()>(10, |_| panic!()).unwrap(); + authorities.apply_changes(10, |_| Err(())).unwrap(); assert!(authorities.current_authorities.is_empty()); - authorities.apply_changes::<_, ()>( - 15, - |n| if n == 5 { Ok("hash_a") } else { panic!() } - ).unwrap(); + authorities.apply_changes(15, |n| match n { + 5 => Ok("hash_a"), + 15 => Ok("hash_15_canon"), + _ => Err(()), + }).unwrap(); assert_eq!(authorities.current_authorities, set_a); assert_eq!(authorities.set_id, 1); + assert!(authorities.pending_changes.is_empty()); } #[test] @@ -318,10 +338,12 @@ mod tests { 5 => Ok("hash_a"), 15 => Ok("hash_b"), 16 => Ok("hash_c"), + 26 => Ok("hash_26"), _ => Err(()), }).unwrap(); assert_eq!(authorities.current_authorities, set_c); assert_eq!(authorities.set_id, 2); // has been bumped only twice + assert!(authorities.pending_changes.is_empty()); } } diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index f5379a8113..8b45ab5641 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -67,8 +67,8 @@ mod authorities; const LAST_COMPLETED_KEY: &[u8] = b"grandpa_completed_round"; const AUTHORITY_SET_KEY: &[u8] = b"grandpa_voters"; -/// round-number, round-state, set indicator -type LastCompleted = (u64, RoundState, u64); +/// round-number, round-state +type LastCompleted = (u64, RoundState); /// A GRANDPA message for a substrate chain. pub type Message = grandpa::Message<::Hash, NumberFor>; @@ -85,11 +85,10 @@ pub type Prevote = grandpa::Prevote<::Hash, NumberFor = grandpa::Precommit<::Hash, NumberFor>; /// Configuration for the GRANDPA service. +#[derive(Clone)] pub struct Config { /// The expected duration for a message to be gossiped across the network. pub gossip_duration: Duration, - /// The voters. - pub genesis_voters: Vec, /// The local signing key. pub local_key: Option>, } @@ -331,7 +330,7 @@ fn checked_message_stream( round: u64, set_id: u64, inner: S, - voters: Vec, + voters: Arc>, ) -> impl Stream,Error=Error> where S: Stream,Error=()> @@ -346,7 +345,7 @@ fn checked_message_stream( }) .and_then(move |msg| { // check signature. - if !voters.contains(&msg.id) { + if !voters.contains_key(&msg.id) { debug!(target: "afg", "Skipping message from unknown voter {}", msg.id); return Ok(None); } @@ -368,7 +367,7 @@ fn outgoing_messages( round: u64, set_id: u64, local_key: Option>, - voters: Vec, + voters: Arc>, network: N, ) -> ( impl Stream,Error=Error>, @@ -376,7 +375,12 @@ fn outgoing_messages( ) { let locals = local_key.and_then(|pair| { let public = pair.public(); - voters.iter().find(|id| id.0 == public.0).map(move |id| (pair, id.clone())) + let id = AuthorityId(public.0); + if voters.contains_key(&id) { + Some((pair, id)) + } else { + None + } }); let (tx, rx) = mpsc::unbounded(); @@ -413,7 +417,7 @@ fn outgoing_messages( /// The environment we run GRANDPA in. pub struct Environment { inner: Arc>, - voters: HashMap, + voters: Arc>, config: Config, authority_set: SharedAuthoritySet>, network: N, @@ -499,28 +503,37 @@ pub trait CompatibleDigestItem { fn scheduled_change(&self) -> Option> { None } } +/// A new authority set along with the canonical block it changed at. +#[derive(Debug)] +pub struct NewAuthoritySet { + canon_number: N, + canon_hash: H, + set_id: u64, + authorities: Vec<(AuthorityId, u64)>, +} + /// Signals either an early exit of a voter or an error. #[derive(Debug)] -pub enum ExitOrError { +pub enum ExitOrError { /// An error occurred. Error(Error), /// Early exit of the voter: the new set ID and the new authorities along with respective weights. - AuthoritiesChanged(u64, Vec<(AuthorityId, u64)>), + AuthoritiesChanged(NewAuthoritySet), } -impl From for ExitOrError { +impl From for ExitOrError { fn from(e: Error) -> Self { ExitOrError::Error(e) } } -impl From for ExitOrError { +impl From for ExitOrError { fn from(e: ClientError) -> Self { ExitOrError::Error(Error::Client(e)) } } -impl From for ExitOrError { +impl From for ExitOrError { fn from(e: grandpa::Error) -> Self { ExitOrError::Error(Error::from(e)) } @@ -546,7 +559,7 @@ impl voter::Environment> f SinkItem = ::grandpa::Message>, SinkError = Self::Error, >>; - type Error = ExitOrError; + type Error = ExitOrError>; #[allow(unreachable_code)] fn round_data( @@ -565,14 +578,14 @@ impl voter::Environment> f round, self.set_id, self.network.messages_for(round), - self.config.genesis_voters.clone(), + self.voters.clone(), ); let (out_rx, outgoing) = outgoing_messages::( round, self.set_id, self.config.local_key.clone(), - self.config.genesis_voters.clone(), + self.voters.clone(), self.network.clone(), ); @@ -597,7 +610,7 @@ impl voter::Environment> f voter::RoundData { prevote_timer: Box::new(prevote_timer.map_err(|e| Error::Timer(e).into())), precommit_timer: Box::new(precommit_timer.map_err(|e| Error::Timer(e).into())), - voters: self.voters.clone(), + voters: (&*self.voters).clone(), incoming, outgoing, } @@ -628,21 +641,30 @@ impl voter::Environment> f self.authority_set.with_mut(|authority_set| { let client = &self.inner; - let prior_id = authority_set.set_id(); - let has_changed = authority_set.apply_changes(number, |canon_number| { + let status = authority_set.apply_changes(number, |canon_number| { client.block_hash_from_id(&BlockId::number(canon_number)) .map(|h| h.expect("given number always less than newly-finalized number; \ thus there is a block with that number finalized already; qed")) })?; - if has_changed { + if status.changed { // TODO [now]: write to disk. if it fails, exit the node. + // write `authorities.encode()` + + if let Some((ref canon_hash, ref canon_number)) = status.new_set_block { + // write `LastFinalized` entry with `RoundState::genesis(canon)`. + } } - let (new_id, set_ref) = authority_set.current(); - if new_id != prior_id { + if let Some((canon_hash, canon_number)) = status.new_set_block { // the authority set has changed. - return Err(ExitOrError::AuthoritiesChanged(new_id, set_ref.to_vec())); + let (new_id, set_ref) = authority_set.current(); + return Err(ExitOrError::AuthoritiesChanged(NewAuthoritySet { + canon_hash, + canon_number, + set_id: new_id, + authorities: set_ref.to_vec(), + })); } Ok(()) @@ -727,22 +749,12 @@ pub fn run_grandpa( NumberFor: BlockNumberOps, DigestItemFor: CompatibleDigestItem>, { + use futures::future::{self, Loop as FutureLoop}; + use runtime_primitives::traits::Zero; let chain_info = client.info()?; let genesis_hash = chain_info.chain.genesis_hash; - let last_finalized = ( - chain_info.chain.finalized_hash, - chain_info.chain.finalized_number, - ); - - let (last_round_number, last_state) = match client.backend().get_aux(LAST_COMPLETED_KEY)? { - None => (0, RoundState::genesis((genesis_hash, >::zero()))), - Some(raw) => <(u64, RoundState>)>::decode(&mut &raw[..]) - .ok_or_else(|| ::client::error::ErrorKind::Backend( - format!("Last GRANDPA round state kept in invalid format") - ))? - }; // TODO [now]: attempt to load from disk. let authority_set = SharedAuthoritySet::genesis( @@ -754,23 +766,66 @@ pub fn run_grandpa( authority_set: authority_set.clone(), }; - let environment = Arc::new(Environment { - inner: client, - config, - voters, - network, + let (last_round_number, last_state) = match client.backend().get_aux(LAST_COMPLETED_KEY)? { + None => (0, RoundState::genesis((genesis_hash, >::zero()))), + Some(raw) => LastCompleted::decode(&mut &raw[..]) + .ok_or_else(|| ::client::error::ErrorKind::Backend( + format!("Last GRANDPA round state kept in invalid format") + ))? + }; + + let initial_environment = Arc::new(Environment { + inner: client.clone(), + config: config.clone(), + voters: Arc::new(voters), + network: network.clone(), set_id: authority_set.set_id(), - authority_set, + authority_set: authority_set.clone(), }); - let voter = voter::Voter::new( - environment, - last_round_number, - last_state, - last_finalized, - ); + let voters = future::loop_fn((initial_environment, last_round_number, last_state), move |params| { + let (env, last_round_number, last_state) = params; + let chain_info = match client.info() { + Ok(i) => i, + Err(e) => return future::Either::B(future::err(Error::Client(e))), + }; + + let last_finalized = ( + chain_info.chain.finalized_hash, + chain_info.chain.finalized_number, + ); + + let voter = voter::Voter::new(env, last_round_number, last_state, last_finalized); + let client = client.clone(); + let config = config.clone(); + let network = network.clone(); + let authority_set = authority_set.clone(); + future::Either::A(voter.then(move |res| match res { + // voters don't conclude naturally; this could reasonably be an error. + Ok(()) => Ok(FutureLoop::Break(())), + Err(ExitOrError::Error(e)) => Err(e), + Err(ExitOrError::AuthoritiesChanged(new)) => { + let env = Arc::new(Environment { + inner: client, + config, + voters: Arc::new(new.authorities.into_iter().collect()), + set_id: new.set_id, + network, + authority_set, + }); + + // start the new authority set using the block where the + // set changed (not where the signal happened!) as the base. + Ok(FutureLoop::Continue(( + env, + 0, // always start at round 0 when changing sets. + RoundState::genesis((new.canon_hash, new.canon_number)), + ))) + } + })) + }); - let work = voter.map_err(|e| warn!("GRANDPA Voter failed: {:?}", e)); + let work = voters.map_err(|e| warn!("GRANDPA Voter failed: {:?}", e)); Ok((work, block_import)) } @@ -870,7 +925,6 @@ mod tests { let (voter, _) = run_grandpa( Config { gossip_duration: TEST_GOSSIP_DURATION, - genesis_voters: voters.clone(), local_key: Some(Arc::new(key.clone().into())), }, client, @@ -929,7 +983,6 @@ mod tests { let (voter, _) = run_grandpa( Config { gossip_duration: TEST_GOSSIP_DURATION, - genesis_voters: voters.keys().cloned().collect(), local_key, }, client, -- GitLab From 2160e44a9b2e18e468dbaa410a32c23aff059a01 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sun, 28 Oct 2018 18:45:42 +0100 Subject: [PATCH 012/243] minimize public interface --- core/finality-grandpa/src/lib.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 988a13d74d..fde673eb5a 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -155,7 +155,7 @@ impl BlockStatus for Arc> where } /// Buffering imported messages until blocks with given hashes are imported. -pub struct UntilImported { +struct UntilImported { import_notifications: Fuse>, status_check: Status, inner: Fuse, @@ -417,7 +417,7 @@ fn outgoing_messages( } /// The environment we run GRANDPA in. -pub struct Environment { +struct Environment { inner: Arc>, voters: Arc>, config: Config, @@ -507,7 +507,7 @@ pub trait CompatibleDigestItem { /// A new authority set along with the canonical block it changed at. #[derive(Debug)] -pub struct NewAuthoritySet { +struct NewAuthoritySet { canon_number: N, canon_hash: H, set_id: u64, @@ -516,7 +516,7 @@ pub struct NewAuthoritySet { /// Signals either an early exit of a voter or an error. #[derive(Debug)] -pub enum ExitOrError { +enum ExitOrError { /// An error occurred. Error(Error), /// Early exit of the voter: the new set ID and the new authorities along with respective weights. -- GitLab From 0768c11a67889419a763fc6f1f983e2c9e43a7c3 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sun, 28 Oct 2018 20:36:59 +0100 Subject: [PATCH 013/243] add substrate finality grandpa primitives for WASM --- Cargo.lock | 12 ++++ Cargo.toml | 1 + core/finality-grandpa/Cargo.toml | 1 + core/finality-grandpa/primitives/Cargo.toml | 21 ++++++ core/finality-grandpa/primitives/src/lib.rs | 73 +++++++++++++++++++++ core/finality-grandpa/src/lib.rs | 25 +------ core/test-runtime/src/lib.rs | 1 - 7 files changed, 111 insertions(+), 23 deletions(-) create mode 100644 core/finality-grandpa/primitives/Cargo.toml create mode 100644 core/finality-grandpa/primitives/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index ab11df3d8a..c988464c3d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3019,6 +3019,17 @@ dependencies = [ "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "substrate-fg-primitives" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-api 0.1.0", + "sr-primitives 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "substrate-finality-grandpa" version = "0.1.0" @@ -3032,6 +3043,7 @@ dependencies = [ "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-consensus-common 0.1.0", + "substrate-fg-primitives 0.1.0", "substrate-keyring 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", diff --git a/Cargo.toml b/Cargo.toml index 54ae7d9d82..899c9cedfb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,6 +27,7 @@ members = [ "core/consensus/rhd", "core/executor", "core/finality-grandpa", + "core/finality-grandpa/primitives", "core/keyring", "core/network", "core/primitives", diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index afff3ad5cb..2181d2f16d 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -14,6 +14,7 @@ substrate-client = { path = "../client" } log = "0.4" parking_lot = "0.4" tokio = "0.1.7" +substrate-fg-primitives = { path = "primitives" } [dependencies.finality-grandpa] #version = "0.3.0" diff --git a/core/finality-grandpa/primitives/Cargo.toml b/core/finality-grandpa/primitives/Cargo.toml new file mode 100644 index 0000000000..b568da0c06 --- /dev/null +++ b/core/finality-grandpa/primitives/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "substrate-fg-primitives" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +substrate-primitives = { path = "../../primitives", default-features = false } +parity-codec = { version = "2.1", default-features = false } +parity-codec-derive = { version = "2.1", default-features = false } +sr-api = { path = "../../sr-api", default-features = false } +sr-primitives = { path = "../../sr-primitives", default-features = false } + +[features] +default = ["std"] +std = [ + "substrate-primitives/std", + "parity-codec/std", + "parity-codec-derive/std", + "sr-api/std", + "sr-primitives/std", +] diff --git a/core/finality-grandpa/primitives/src/lib.rs b/core/finality-grandpa/primitives/src/lib.rs new file mode 100644 index 0000000000..047c37632a --- /dev/null +++ b/core/finality-grandpa/primitives/src/lib.rs @@ -0,0 +1,73 @@ +// Copyright 2018 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 . + +//! Primitives for GRANDPA integration, suitable for WASM compilation. + +#![cfg_attr(not(feature = "std"), no_std)] + +extern crate substrate_primitives; +extern crate sr_primitives; +extern crate parity_codec; + +#[macro_use] +extern crate parity_codec_derive; + +#[macro_use] +extern crate sr_api; + +use substrate_primitives::AuthorityId; +use sr_primitives::traits::{Block as BlockT, DigestFor, NumberFor}; + +/// A scheduled change of authority set. +#[cfg_attr(feature = "std", derive(Debug, PartialEq))] +#[derive(Encode, Decode)] +pub struct ScheduledChange { + /// The new authorities after the change, along with their respective weights. + pub next_authorities: Vec<(AuthorityId, u64)>, + /// The number of blocks to delay. + pub delay: N, +} + +/// WASM function call to check for pending changes. +pub const PENDING_CHANGE_CALL: &str = "grandpa_pending_change"; +/// WASM function call to get current GRANDPA authorities. +pub const AUTHORITIES_CALL: &str = "grandpa_pending_change"; + +decl_apis! { + /// APIs for integrating the GRANDPA finality gadget into runtimes. + /// + /// This is primarily used for negotiating authority-set changes for the + /// gadget. GRANDPA uses a signalling model of changing authority sets: + /// changes should be signalled with a delay of N blocks, and then automatically + /// applied in the runtime after those N blocks have passed. + /// + /// The consensus protocol will coordinate the handoff externally. + pub trait Api { + /// Check a digest for pending changes. + /// Return `None` if there are no pending changes. + /// + /// Precedence towards earlier or later digest items can be given + /// based on the rules of the chain. + /// + /// No change should be scheduled if one is already and the delay has not + /// passed completely. + fn grandpa_pending_change(digest: DigestFor) -> Option>>; + + /// Get the current GRANDPA authorities. This should not change except + /// for when changes are scheduled and the corresponding delay has passed. + fn grandpa_authorities() -> Vec; + } +} diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index fde673eb5a..0b8405a6fe 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -14,11 +14,9 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Integration of the GRANDPA finality gadget into substrate. //! //! This is a long-running future that produces finality notifications. -// end::description[] extern crate finality_grandpa as grandpa; extern crate futures; @@ -29,6 +27,7 @@ extern crate substrate_primitives; extern crate tokio; extern crate parking_lot; extern crate parity_codec as codec; +extern crate substrate_fg_primitives as fg_primitives; #[macro_use] extern crate log; @@ -64,6 +63,8 @@ use std::time::{Instant, Duration}; use authorities::SharedAuthoritySet; +pub use fg_primitives::ScheduledChange; + mod authorities; const LAST_COMPLETED_KEY: &[u8] = b"grandpa_completed_round"; @@ -485,26 +486,6 @@ impl grandpa::Chain> for E } } -/// A scheduled change of authority set. -#[derive(Debug, PartialEq)] -pub struct ScheduledChange { - /// The new authorities after the change, along with their respective weights. - pub next_authorities: Vec<(AuthorityId, u64)>, - /// The number of blocks to delay. - pub delay: N, -} - -/// A GRANDPA-compatible DigestItem. This can describe when GRANDPA set changes -/// are scheduled. -// -// With specialization, could do a blanket implementation so this trait -// doesn't have to be implemented by users. -pub trait CompatibleDigestItem { - /// If this digest item notes a GRANDPA set change, return information about - /// the scheduled change. - fn scheduled_change(&self) -> Option> { None } -} - /// A new authority set along with the canonical block it changed at. #[derive(Debug)] struct NewAuthoritySet { diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index de678e7205..a136f02cf0 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -38,7 +38,6 @@ extern crate sr_io as runtime_io; #[macro_use] extern crate sr_version as runtime_version; - #[cfg(test)] #[macro_use] extern crate hex_literal; -- GitLab From a3667dfaae414f4aceb0de1529aabc3104d11cb9 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sun, 28 Oct 2018 20:50:31 +0100 Subject: [PATCH 014/243] call into chain WASM to check for changes --- core/finality-grandpa/src/lib.rs | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 0b8405a6fe..dd5f97f264 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -48,7 +48,7 @@ use client::{Client, error::Error as ClientError, ImportNotifications, backend:: use codec::{Encode, Decode}; use consensus_common::{BlockImport, ImportBlock, ImportResult}; use runtime_primitives::traits::{ - NumberFor, Block as BlockT, Header as HeaderT, DigestItemFor, + NumberFor, Block as BlockT, Header as HeaderT, DigestFor, }; use runtime_primitives::generic::BlockId; use substrate_primitives::{ed25519, AuthorityId, Blake2Hasher}; @@ -434,7 +434,6 @@ impl grandpa::Chain> for E N: Network + 'static, N::In: 'static, NumberFor: BlockNumberOps, - DigestItemFor: CompatibleDigestItem>, { fn ancestry(&self, base: Block::Hash, block: Block::Hash) -> Result, GrandpaError> { let tree_route_res = ::client::blockchain::tree_route( @@ -529,7 +528,6 @@ impl voter::Environment> f N: Network + 'static, N::In: 'static, NumberFor: BlockNumberOps, - DigestItemFor: CompatibleDigestItem>, { type Timer = Box>; type Id = AuthorityId; @@ -686,7 +684,7 @@ pub struct GrandpaBlockImport { impl BlockImport for GrandpaBlockImport where B: Backend + 'static, E: CallExecutor + 'static + Clone, - DigestItemFor: CompatibleDigestItem>, + DigestFor: Encode, { type Error = ClientError; @@ -696,13 +694,20 @@ impl BlockImport for GrandpaBlockImport use runtime_primitives::traits::Digest; use authorities::PendingChange; - let maybe_event = block.header.digest().logs().iter() - .filter_map(|log| log.scheduled_change()) - .next() - .map(|change| (block.header.hash(), *block.header.number(), change)); + let maybe_change: Option>> = self.inner.call_api_at( + &BlockId::hash(block.header.parent_hash().clone()), + ::fg_primitives::PENDING_CHANGE_CALL, + block.header.digest() + )?; + + let maybe_change = maybe_change.map(|change| ( + block.header.hash(), + block.header.number().clone(), + change + )); let result = self.inner.import_block(block, new_authorities); - if let (true, Some((hash, number, change))) = (result.is_ok(), maybe_event) { + if let (true, Some((hash, number, change))) = (result.is_ok(), maybe_change) { self.authority_set.add_pending_change(PendingChange { next_authorities: change.next_authorities, finalization_depth: number + change.delay, @@ -734,7 +739,7 @@ pub fn run_grandpa( N: Network + 'static, N::In: 'static, NumberFor: BlockNumberOps, - DigestItemFor: CompatibleDigestItem>, + DigestFor: Encode, { use futures::future::{self, Loop as FutureLoop}; @@ -826,8 +831,6 @@ mod tests { use keyring::Keyring; use client::BlockchainEvents; - impl CompatibleDigestItem> for DigestItemFor { } - #[derive(Clone)] struct TestGrandpaNetwork { inner: Arc>, -- GitLab From 13ee7a7dc672b9476b09eb45f760ef239337de63 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 29 Oct 2018 02:05:47 +0100 Subject: [PATCH 015/243] write authority set to DB --- core/finality-grandpa/src/authorities.rs | 13 +-- core/finality-grandpa/src/lib.rs | 103 +++++++++++++++-------- 2 files changed, 70 insertions(+), 46 deletions(-) diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index dd6a433995..7896c08495 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -47,16 +47,9 @@ impl SharedAuthoritySet { } } - /// Execute some work using the inner authority set. - pub(crate) fn with(&self, f: F) -> U - where F: FnOnce(&AuthoritySet) -> U - { - f(&*self.inner.read()) - } - - /// Execute a closure with the inner set mutably. - pub(crate) fn with_mut(&self, f: F) -> U where F: FnOnce(&mut AuthoritySet) -> U { - f(&mut *self.inner.write()) + /// Acquire a reference to the inner read-write lock. + pub(crate) fn inner(&self) -> &RwLock> { + &*self.inner } } diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index dd5f97f264..58de2553b3 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -620,36 +620,57 @@ impl voter::Environment> f return Ok(()); } - self.authority_set.with_mut(|authority_set| { - let client = &self.inner; - let status = authority_set.apply_changes(number, |canon_number| { - client.block_hash_from_id(&BlockId::number(canon_number)) - .map(|h| h.expect("given number always less than newly-finalized number; \ - thus there is a block with that number finalized already; qed")) - })?; - - if status.changed { - // TODO [now]: write to disk. if it fails, exit the node. - // write `authorities.encode()` - - if let Some((ref canon_hash, ref canon_number)) = status.new_set_block { - // write `LastFinalized` entry with `RoundState::genesis(canon)`. - } - } + let mut authority_set = self.authority_set.inner().write(); + let client = &self.inner; + let status = authority_set.apply_changes(number, |canon_number| { + client.block_hash_from_id(&BlockId::number(canon_number)) + .map(|h| h.expect("given number always less than newly-finalized number; \ + thus there is a block with that number finalized already; qed")) + })?; + + if status.changed { + // write new authority set state to disk. + let encoded_set = authority_set.encode(); + + let write_result = if let Some((ref canon_hash, ref canon_number)) = status.new_set_block { + // we also overwrite the "last completed round" entry with a blank slate + // because from the perspective of the finality gadget, the chain has + // reset. + let round_state = RoundState::genesis((*canon_hash, *canon_number)); + let last_completed: LastCompleted<_, _> = (0, round_state); + let encoded = last_completed.encode(); + + client.backend().insert_aux( + &[ + (AUTHORITY_SET_KEY, &encoded_set[..]), + (LAST_COMPLETED_KEY, &encoded[..]), + ], + &[] + ) + } else { + client.backend().insert_aux(&[(AUTHORITY_SET_KEY, &encoded_set[..])], &[]) + }; + + if let Err(e) = write_result { + warn!(target: "finality", "Failed to write updated authority set to disk. Bailing."); + warn!(target: "finality", "Node is in a potentially inconsistent state."); - if let Some((canon_hash, canon_number)) = status.new_set_block { - // the authority set has changed. - let (new_id, set_ref) = authority_set.current(); - return Err(ExitOrError::AuthoritiesChanged(NewAuthoritySet { - canon_hash, - canon_number, - set_id: new_id, - authorities: set_ref.to_vec(), - })); + return Err(e.into()); } + } + if let Some((canon_hash, canon_number)) = status.new_set_block { + // the authority set has changed. + let (new_id, set_ref) = authority_set.current(); + Err(ExitOrError::AuthoritiesChanged(NewAuthoritySet { + canon_hash, + canon_number, + set_id: new_id, + authorities: set_ref.to_vec(), + })) + } else { Ok(()) - }) + } } fn prevote_equivocation( @@ -688,7 +709,7 @@ impl BlockImport for GrandpaBlockImport { type Error = ClientError; - fn import_block(&self, block: ImportBlock, new_authorities: Option>) + fn import_block(&self, mut block: ImportBlock, new_authorities: Option>) -> Result { use runtime_primitives::traits::Digest; @@ -700,22 +721,32 @@ impl BlockImport for GrandpaBlockImport block.header.digest() )?; - let maybe_change = maybe_change.map(|change| ( - block.header.hash(), - block.header.number().clone(), - change - )); + // when we update the authorities, we need to hold the lock + // until the block is written to prevent a race if we need to restore + // the old authority set on error. + let just_in_case = maybe_change.map(|change| { + let hash = block.header.hash(); + let number = block.header.number().clone(); - let result = self.inner.import_block(block, new_authorities); - if let (true, Some((hash, number, change))) = (result.is_ok(), maybe_change) { - self.authority_set.add_pending_change(PendingChange { + let mut authorities = self.authority_set.inner().write(); + let old_set = authorities.clone(); + authorities.add_pending_change(PendingChange { next_authorities: change.next_authorities, finalization_depth: number + change.delay, canon_height: number, canon_hash: hash, }); - // TODO [now]: write to DB, and what to do on failure? + block.auxiliary.push((AUTHORITY_SET_KEY.to_vec(), Some(authorities.encode()))); + (old_set, authorities) + }); + + let result = self.inner.import_block(block, new_authorities); + if let Err(ref e) = result { + if let Some((old_set, mut authorities)) = just_in_case { + debug!(target: "afg", "Restoring old set after block import error: {:?}", e); + *authorities = old_set; + } } result -- GitLab From 9478b90cf153e7ebbc1ce0adcdddcca12c07a9ea Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 29 Oct 2018 02:31:51 +0100 Subject: [PATCH 016/243] read authority set from DB on startup --- core/finality-grandpa/primitives/src/lib.rs | 6 ++--- core/finality-grandpa/src/authorities.rs | 10 -------- core/finality-grandpa/src/lib.rs | 28 +++++++++++++++++---- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/core/finality-grandpa/primitives/src/lib.rs b/core/finality-grandpa/primitives/src/lib.rs index 047c37632a..ddf924cc2e 100644 --- a/core/finality-grandpa/primitives/src/lib.rs +++ b/core/finality-grandpa/primitives/src/lib.rs @@ -44,7 +44,7 @@ pub struct ScheduledChange { /// WASM function call to check for pending changes. pub const PENDING_CHANGE_CALL: &str = "grandpa_pending_change"; /// WASM function call to get current GRANDPA authorities. -pub const AUTHORITIES_CALL: &str = "grandpa_pending_change"; +pub const AUTHORITIES_CALL: &str = "grandpa_authorities"; decl_apis! { /// APIs for integrating the GRANDPA finality gadget into runtimes. @@ -66,8 +66,8 @@ decl_apis! { /// passed completely. fn grandpa_pending_change(digest: DigestFor) -> Option>>; - /// Get the current GRANDPA authorities. This should not change except + /// Get the current GRANDPA authorities and weights. This should not change except /// for when changes are scheduled and the corresponding delay has passed. - fn grandpa_authorities() -> Vec; + fn grandpa_authorities() -> Vec<(AuthorityId, u64)>; } } diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index 7896c08495..6a32e3ddb7 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -56,11 +56,6 @@ impl SharedAuthoritySet { impl SharedAuthoritySet where N: Add + Ord + Clone + Debug { - /// Note an upcoming pending transition. - pub(crate) fn add_pending_change(&self, pending: PendingChange) { - self.inner.write().add_pending_change(pending) - } - /// Get the earliest limit-block number, if any. pub(crate) fn current_limit(&self) -> Option { self.inner.read().current_limit() @@ -96,11 +91,6 @@ pub(crate) struct AuthoritySet { } impl AuthoritySet { - /// Get the set identifier. - pub(crate) fn set_id(&self) -> u64 { - self.set_id - } - /// Get the current set id and a reference to the current authority set. pub(crate) fn current(&self) -> (u64, &[(AuthorityId, u64)]) { (self.set_id, &self.current_authorities[..]) diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 58de2553b3..2291c0c823 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -712,7 +712,6 @@ impl BlockImport for GrandpaBlockImport fn import_block(&self, mut block: ImportBlock, new_authorities: Option>) -> Result { - use runtime_primitives::traits::Digest; use authorities::PendingChange; let maybe_change: Option>> = self.inner.call_api_at( @@ -779,10 +778,29 @@ pub fn run_grandpa( let chain_info = client.info()?; let genesis_hash = chain_info.chain.genesis_hash; - // TODO [now]: attempt to load from disk. - let authority_set = SharedAuthoritySet::genesis( - voters.iter().map(|(&id, &weight)| (id, weight)).collect(), - ); + let authority_set = match client.backend().get_aux(AUTHORITY_SET_KEY)? { + None => { + info!(target: "afg", "Loading GRANDPA authorities \ + from genesis on what appears to be first startup."); + + // no authority set on disk: fetch authorities from genesis state. + // if genesis state is not available, we may be a light client, but these + // are unsupported for following GRANDPA directly. + let genesis_authorities: Vec<(AuthorityId, u64)> = client + .call_api_at(&BlockId::Number(NumberFor::::zero()), fg_primitives::AUTHORITIES_CALL, &())?; + + let authority_set = SharedAuthoritySet::genesis(genesis_authorities); + let encoded = authority_set.inner().read().encode(); + client.backend().insert_aux(&[(AUTHORITY_SET_KEY, &encoded[..])], &[])?; + + authority_set + } + Some(raw) => ::authorities::AuthoritySet::decode(&mut &raw[..]) + .ok_or_else(|| ::client::error::ErrorKind::Backend( + format!("GRANDPA authority set kept in invalid format") + ))? + .into(), + }; let block_import = GrandpaBlockImport { inner: client.clone(), -- GitLab From be260accc114d1bdabdb289cb0c9bdc70f6e4e72 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 29 Oct 2018 15:56:10 +0100 Subject: [PATCH 017/243] refactor import queue to use explicit block import references --- core/network/src/import_queue.rs | 61 +++++++++++++++++++------------- core/network/src/service.rs | 2 -- core/network/src/test/mod.rs | 38 +++++++++++++++----- 3 files changed, 67 insertions(+), 34 deletions(-) diff --git a/core/network/src/import_queue.rs b/core/network/src/import_queue.rs index 4a6775a2a9..42fcb1b6d6 100644 --- a/core/network/src/import_queue.rs +++ b/core/network/src/import_queue.rs @@ -34,14 +34,16 @@ use primitives::AuthorityId; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, NumberFor, Zero}; pub use blocks::BlockData; -use chain::Client; +use client::error::Error as ClientError; use error::{ErrorKind, Error}; use protocol::Context; use service::ExecuteInContext; use sync::ChainSync; -pub use consensus::{ImportBlock, ImportResult, BlockOrigin}; +pub use consensus::{ImportBlock, BlockImport, ImportResult, BlockOrigin}; +/// Shared block import struct used by the queue. +pub type SharedBlockImport = Arc + Send + Sync>; #[cfg(any(test, feature = "test-helpers"))] use std::cell::RefCell; @@ -98,6 +100,7 @@ pub struct BasicQueue> { handle: Mutex>>, data: Arc>, verifier: Arc, + block_import: SharedBlockImport, } /// Locks order: queue, queue_blocks, best_importing_number @@ -111,11 +114,12 @@ struct AsyncImportQueueData { impl> BasicQueue { /// Instantiate a new basic queue, with given verifier. - pub fn new(verifier: Arc) -> Self { + pub fn new(verifier: Arc, block_import: SharedBlockImport) -> Self { Self { handle: Mutex::new(None), data: Arc::new(AsyncImportQueueData::new()), verifier, + block_import, } } } @@ -141,8 +145,9 @@ impl> ImportQueue for BasicQueue { let qdata = self.data.clone(); let verifier = self.verifier.clone(); + let block_import = self.block_import.clone(); *self.handle.lock() = Some(::std::thread::Builder::new().name("ImportQueue".into()).spawn(move || { - import_thread(link, qdata, verifier) + import_thread(block_import, link, qdata, verifier) }).map_err(|err| Error::from(ErrorKind::Io(err)))?); Ok(()) } @@ -205,6 +210,7 @@ impl> Drop for BasicQueue { /// Blocks import thread. fn import_thread, V: Verifier>( + block_import: SharedBlockImport, link: L, qdata: Arc>, verifier: Arc @@ -229,6 +235,7 @@ fn import_thread, V: Verifier>( let blocks_hashes: Vec = new_blocks.1.iter().map(|b| b.block.hash.clone()).collect(); if !import_many_blocks( + &*block_import, &link, Some(&*qdata), new_blocks, @@ -249,8 +256,6 @@ fn import_thread, V: Verifier>( /// Hooks that the verification queue can use to influence the synchronization /// algorithm. pub trait Link: Send { - /// Get chain reference. - fn chain(&self) -> &Client; /// Block imported. fn block_imported(&self, _hash: &B::Hash, _number: NumberFor) { } /// Maintain sync. @@ -265,8 +270,6 @@ pub trait Link: Send { /// A link implementation that connects to the network. pub struct NetworkLink> { - /// The client handle. - pub(crate) client: Arc>, /// The chain-sync handle pub(crate) sync: Weak>>, /// Network context. @@ -286,10 +289,6 @@ impl> NetworkLink { } impl> Link for NetworkLink { - fn chain(&self) -> &Client { - &*self.client - } - fn block_imported(&self, hash: &B::Hash, number: NumberFor) { self.with_sync(|sync, _| sync.block_imported(&hash, number)) } @@ -342,6 +341,7 @@ enum BlockImportError { /// Import a bunch of blocks. fn import_many_blocks<'a, B: BlockT, L: Link, V: Verifier>( + import_handle: &BlockImport, link: &L, qdata: Option<&AsyncImportQueueData>, blocks: (BlockOrigin, Vec>), @@ -365,7 +365,7 @@ fn import_many_blocks<'a, B: BlockT, L: Link, V: Verifier>( // Blocks in the response/drain should be in ascending order. for block in blocks { let import_result = import_single_block( - link.chain(), + import_handle, blocks_origin.clone(), block, verifier.clone(), @@ -389,7 +389,7 @@ fn import_many_blocks<'a, B: BlockT, L: Link, V: Verifier>( /// Single block import function. fn import_single_block>( - chain: &Client, + import_handle: &BlockImport, block_origin: BlockOrigin, block: BlockData, verifier: Arc @@ -431,7 +431,7 @@ fn import_single_block>( BlockImportError::VerificationFailed(peer, msg) })?; - match chain.import(import_block, new_authorities) { + match import_handle.import_block(import_block, new_authorities) { Ok(ImportResult::AlreadyInChain) => { trace!(target: "sync", "Block already in chain {}: {:?}", number, hash); Ok(BlockImportResult::ImportedKnown(hash, number)) @@ -558,15 +558,25 @@ impl Verifier for PassThroughVerifier { } } -#[cfg(any(test, feature = "test-helpers"))] /// Blocks import queue that is importing blocks in the same thread. /// The boolean value indicates whether blocks should be imported without instant finality. -pub struct SyncImportQueue>(Arc, ImportCB); +#[cfg(any(test, feature = "test-helpers"))] +pub struct SyncImportQueue> { + verifier: Arc, + link: ImportCB, + block_import: SharedBlockImport, +} + #[cfg(any(test, feature = "test-helpers"))] impl> SyncImportQueue { - /// Create a new SyncImportQueue wrapping the given Verifier - pub fn new(verifier: Arc) -> Self { - SyncImportQueue(verifier, ImportCB::new()) + /// Create a new SyncImportQueue wrapping the given Verifier and block import + /// handle. + pub fn new(verifier: Arc, block_import: SharedBlockImport) -> Self { + SyncImportQueue { + verifier, + link: ImportCB::new(), + block_import, + } } } @@ -577,10 +587,12 @@ impl> ImportQueue for SyncImpor &self, link: L, ) -> Result<(), Error> { - let v = self.0.clone(); - self.1.set(Box::new(move |origin, new_blocks| { + let v = self.verifier.clone(); + let import_handle = self.block_import.clone(); + self.link.set(Box::new(move |origin, new_blocks| { let verifier = v.clone(); import_many_blocks( + &*import_handle, &link, None, (origin, new_blocks), @@ -605,7 +617,7 @@ impl> ImportQueue for SyncImpor } fn import_blocks(&self, origin: BlockOrigin, blocks: Vec>) { - self.1.call(origin, blocks); + self.link.call(origin, blocks); } } @@ -644,7 +656,6 @@ pub mod tests { } impl Link for TestLink { - fn chain(&self) -> &Client { &*self.chain } fn block_imported(&self, _hash: &Hash, _number: NumberFor) { self.imported.set(self.imported.get() + 1); } @@ -762,7 +773,9 @@ pub mod tests { let qdata = AsyncImportQueueData::new(); let verifier = Arc::new(PassThroughVerifier(true)); qdata.is_stopping.store(true, Ordering::SeqCst); + let client = test_client::new(); assert!(!import_many_blocks( + &client, &mut TestLink::new(), Some(&qdata), (BlockOrigin::File, vec![block.clone(), block]), diff --git a/core/network/src/service.rs b/core/network/src/service.rs index 0e46f50998..976fb8bc8e 100644 --- a/core/network/src/service.rs +++ b/core/network/src/service.rs @@ -130,7 +130,6 @@ impl, H: ExHashT> Service { protocol_id: ProtocolId, import_queue: I, ) -> Result>, Error> { - let chain = params.chain.clone(); let import_queue = Arc::new(import_queue); let handler = Arc::new(Protocol::new( params.config, @@ -153,7 +152,6 @@ impl, H: ExHashT> Service { // connect the import-queue to the network service. let link = ::import_queue::NetworkLink { - client: chain, sync: Arc::downgrade(service.handler.sync()), context: Arc::downgrade(&service), }; diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index 34eb873cc6..b852ceab80 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -24,6 +24,7 @@ use std::sync::Arc; use parking_lot::RwLock; use client; +use client::error::Error as ClientError; use client::block_builder::BlockBuilder; use runtime_primitives::generic::BlockId; use io::SyncIo; @@ -38,7 +39,7 @@ use import_queue::{SyncImportQueue, PassThroughVerifier, Verifier}; use consensus::BlockOrigin; use specialization::Specialization; use consensus_gossip::ConsensusGossip; -use import_queue::ImportQueue; +use import_queue::{BlockImport, ImportQueue}; use service::ExecuteInContext; use test_client; @@ -163,7 +164,6 @@ impl> Peer { let info = self.client.info().expect("In-mem client does not fail"); let header = self.client.header(&BlockId::Hash(info.chain.best_hash)).unwrap().unwrap(); let network_link = ::import_queue::NetworkLink { - client: self.sync.context_data().chain.clone(), sync: Arc::downgrade(self.sync.sync()), context: Arc::downgrade(&self.executor), }; @@ -235,16 +235,31 @@ impl> Peer { pub fn generate_blocks(&self, count: usize, origin: BlockOrigin, mut edit_block: F) where F: FnMut(&mut BlockBuilder) { - for _ in 0 .. count { + use blocks::BlockData; + + for _ in 0..count { let mut builder = self.client.new_block().unwrap(); edit_block(&mut builder); let block = builder.bake().unwrap(); let hash = block.header.hash(); trace!("Generating {}, (#{}, parent={})", hash, block.header.number, block.header.parent_hash); let header = block.header.clone(); - self.client.justify_and_import(origin, block).unwrap(); - self.sync.on_block_imported(&mut TestIo::new(&self.queue, None), hash, &header); + + // NOTE: if we use a non-synchronous queue in the test-net in the future, + // this may not work. + self.import_queue.import_blocks(origin, vec![BlockData { + origin: None, + block: ::message::BlockData:: { + hash, + header: Some(header), + body: Some(block.extrinsics), + receipt: None, + message_queue: None, + justification: None, + }, + }]); } + } /// Push blocks to the peer (simplified: with or without a TX) @@ -308,7 +323,12 @@ pub trait TestNetFactory: Sized { fn mut_peers>>)>(&mut self, closure: F ); fn started(&self) -> bool; - fn set_started(&mut self, now: bool); + fn set_started(&mut self, now: bool); + + /// Get custom block import handle for fresh client. + fn make_block_import(&self, client: Arc) -> Arc + Send + Sync> { + client + } fn default_config() -> ProtocolConfig { ProtocolConfig::default() @@ -330,7 +350,9 @@ pub trait TestNetFactory: Sized { let client = Arc::new(test_client::new()); let tx_pool = Arc::new(EmptyTransactionPool); let verifier = self.make_verifier(client.clone(), config); - let import_queue = Arc::new(SyncImportQueue::new(verifier)); + let block_import = self.make_block_import(client.clone()); + + let import_queue = Arc::new(SyncImportQueue::new(verifier, block_import)); let specialization = DummySpecialization { gossip: ConsensusGossip::new(), }; @@ -471,7 +493,7 @@ impl TestNetFactory for TestNet { started: false } } - + fn make_verifier(&self, _client: Arc, _config: &ProtocolConfig) -> Arc { -- GitLab From 2362386cfa6a6f8d3a7ab83c7d186ba00a38ae92 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 29 Oct 2018 16:25:22 +0100 Subject: [PATCH 018/243] generalizable data for peers in test network --- core/consensus/aura/src/lib.rs | 7 ++++--- core/network/src/test/mod.rs | 38 ++++++++++++++++++++-------------- core/service/src/lib.rs | 4 ++-- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index 7355119074..cb4a24de3e 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -464,6 +464,7 @@ mod tests { impl TestNetFactory for AuraTestNet { type Verifier = AuraVerifier; + type PeerData = (); /// Create new test network with peers and given config. fn from_config(_config: &ProtocolConfig) -> Self { @@ -480,15 +481,15 @@ mod tests { Arc::new(AuraVerifier { client, config }) } - fn peer(&self, i: usize) -> &Peer { + fn peer(&self, i: usize) -> &Peer { &self.peers[i] } - fn peers(&self) -> &Vec>> { + fn peers(&self) -> &Vec>> { &self.peers } - fn mut_peers>>)>(&mut self, closure: F ) { + fn mut_peers>>)>(&mut self, closure: F) { closure(&mut self.peers); } diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index b852ceab80..735f6c0c13 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -140,23 +140,26 @@ pub struct TestPacket { pub type PeersClient = client::Client; -pub struct Peer> { +pub struct Peer, D> { client: Arc, pub sync: Arc>, pub queue: Arc>>, import_queue: Arc>, executor: Arc, + /// Some custom data set up at initialization time. + pub data: D, } -impl> Peer { +impl, D> Peer { fn new( client: Arc, sync: Arc>, queue: Arc>>, import_queue: Arc>, + data: D, ) -> Self { let executor = Arc::new(DummyContextExecutor(sync.clone(), queue.clone())); - Peer { client, sync, queue, import_queue, executor} + Peer { client, sync, queue, import_queue, executor, data } } /// Called after blockchain has been populated to updated current state. fn start(&self) { @@ -311,6 +314,7 @@ impl TransactionPool for EmptyTransactionPool { pub trait TestNetFactory: Sized { type Verifier: 'static + Verifier; + type PeerData: Default; /// These two need to be implemented! fn from_config(config: &ProtocolConfig) -> Self; @@ -318,16 +322,18 @@ pub trait TestNetFactory: Sized { /// Get reference to peer. - fn peer(&self, i: usize) -> &Peer; - fn peers(&self) -> &Vec>>; - fn mut_peers>>)>(&mut self, closure: F ); + fn peer(&self, i: usize) -> &Peer; + fn peers(&self) -> &Vec>>; + fn mut_peers>>)>(&mut self, closure: F ); fn started(&self) -> bool; fn set_started(&mut self, now: bool); - /// Get custom block import handle for fresh client. - fn make_block_import(&self, client: Arc) -> Arc + Send + Sync> { - client + /// Get custom block import handle for fresh client, along with peer data. + fn make_block_import(&self, client: Arc) + -> (Arc + Send + Sync>, Self::PeerData) + { + (client, Default::default()) } fn default_config() -> ProtocolConfig { @@ -350,7 +356,7 @@ pub trait TestNetFactory: Sized { let client = Arc::new(test_client::new()); let tx_pool = Arc::new(EmptyTransactionPool); let verifier = self.make_verifier(client.clone(), config); - let block_import = self.make_block_import(client.clone()); + let (block_import, data) = self.make_block_import(client.clone()); let import_queue = Arc::new(SyncImportQueue::new(verifier, block_import)); let specialization = DummySpecialization { @@ -369,7 +375,8 @@ pub trait TestNetFactory: Sized { client, Arc::new(sync), Arc::new(RwLock::new(VecDeque::new())), - import_queue + import_queue, + data, )); self.mut_peers(|peers| { @@ -479,12 +486,13 @@ pub trait TestNetFactory: Sized { } pub struct TestNet { - peers: Vec>>, + peers: Vec>>, started: bool } impl TestNetFactory for TestNet { type Verifier = PassThroughVerifier; + type PeerData = (); /// Create new test network with peers and given config. fn from_config(_config: &ProtocolConfig) -> Self { @@ -500,15 +508,15 @@ impl TestNetFactory for TestNet { Arc::new(PassThroughVerifier(false)) } - fn peer(&self, i: usize) -> &Peer { + fn peer(&self, i: usize) -> &Peer { &self.peers[i] } - fn peers(&self) -> &Vec>> { + fn peers(&self) -> &Vec>> { &self.peers } - fn mut_peers>>)>(&mut self, closure: F ) { + fn mut_peers>>)>(&mut self, closure: F ) { closure(&mut self.peers); } diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index 9e7c201e8f..1265486449 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -528,8 +528,8 @@ macro_rules! construct_simple_service { /// // The first one is for the initializing the full import queue and the second for the /// // light import queue. /// ImportQueue = BasicQueue -/// { |_, _| Ok(BasicQueue::new(Arc::new(NoneVerifier {}))) } -/// { |_, _| Ok(BasicQueue::new(Arc::new(NoneVerifier {}))) }, +/// { |_, client| Ok(BasicQueue::new(Arc::new(NoneVerifier {}, client))) } +/// { |_, client| Ok(BasicQueue::new(Arc::new(NoneVerifier {}, client))) }, /// } /// } /// ``` -- GitLab From 914f21c463e80355d617368aff1e4ec87a6217d9 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 29 Oct 2018 17:03:08 +0100 Subject: [PATCH 019/243] tests compile using new test framework --- Cargo.lock | 1 + core/finality-grandpa/Cargo.toml | 1 + core/finality-grandpa/src/lib.rs | 184 +++++++++++++++++++++++-------- core/network/src/test/mod.rs | 2 +- 4 files changed, 140 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c988464c3d..3b1b27388d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3047,6 +3047,7 @@ dependencies = [ "substrate-keyring 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", + "substrate-test-client 0.1.0", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index 2181d2f16d..96892ec6f7 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -24,3 +24,4 @@ features = ["derive-codec"] [dev-dependencies] substrate-network = { path = "../network", features = ["test-helpers"] } substrate-keyring = { path = "../keyring" } +substrate-test-client = { path = "../test-client"} diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 2291c0c823..d8fe874a5e 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -38,6 +38,9 @@ extern crate substrate_network as network; #[cfg(test)] extern crate substrate_keyring as keyring; +#[cfg(test)] +extern crate substrate_test_client as test_client; + #[macro_use] extern crate parity_codec_derive; @@ -620,6 +623,7 @@ impl voter::Environment> f return Ok(()); } + // lock must be held through writing to DB to avoid race let mut authority_set = self.authority_set.inner().write(); let client = &self.inner; let status = authority_set.apply_changes(number, |canon_number| { @@ -752,32 +756,23 @@ impl BlockImport for GrandpaBlockImport } } -/// Run a GRANDPA voter as a task. This returns two pieces of data: a task to run, -/// and a `BlockImport` implementation. -pub fn run_grandpa( - config: Config, +/// Half of a link between a block-import worker and a the background voter. +// This should remain non-clone. +pub struct LinkHalf { client: Arc>, - voters: HashMap, - network: N, -) -> ::client::error::Result<( - impl Future, - GrandpaBlockImport, -)> where - Block::Hash: Ord, + authority_set: SharedAuthoritySet>, +} + +/// Make block importer and link half necessary to tie the background voter +/// to it. +pub fn block_import(client: Arc>) + -> Result<(GrandpaBlockImport, LinkHalf), ClientError> + where B: Backend + 'static, E: CallExecutor + 'static, - N: Network + 'static, - N::In: 'static, - NumberFor: BlockNumberOps, - DigestFor: Encode, { - use futures::future::{self, Loop as FutureLoop}; - use runtime_primitives::traits::Zero; - let chain_info = client.info()?; - let genesis_hash = chain_info.chain.genesis_hash; - let authority_set = match client.backend().get_aux(AUTHORITY_SET_KEY)? { None => { info!(target: "afg", "Loading GRANDPA authorities \ @@ -802,10 +797,33 @@ pub fn run_grandpa( .into(), }; - let block_import = GrandpaBlockImport { - inner: client.clone(), - authority_set: authority_set.clone(), - }; + Ok(( + GrandpaBlockImport { inner: client.clone(), authority_set: authority_set.clone() }, + LinkHalf { client, authority_set }, + )) +} + +/// Run a GRANDPA voter as a task. Provide configuration and a link to a +/// block import worker that has already been instantiated with `block_import`. +pub fn run_grandpa( + config: Config, + link: LinkHalf, + network: N, +) -> ::client::error::Result> where + Block::Hash: Ord, + B: Backend + 'static, + E: CallExecutor + 'static, + N: Network + 'static, + N::In: 'static, + NumberFor: BlockNumberOps, + DigestFor: Encode, +{ + use futures::future::{self, Loop as FutureLoop}; + use runtime_primitives::traits::Zero; + + let LinkHalf { client, authority_set } = link; + let chain_info = client.info()?; + let genesis_hash = chain_info.chain.genesis_hash; let (last_round_number, last_state) = match client.backend().get_aux(LAST_COMPLETED_KEY)? { None => (0, RoundState::genesis((genesis_hash, >::zero()))), @@ -815,6 +833,10 @@ pub fn run_grandpa( ))? }; + let voters = authority_set.inner().read().current().1.iter() + .cloned() + .collect(); + let initial_environment = Arc::new(Environment { inner: client.clone(), config: config.clone(), @@ -824,7 +846,7 @@ pub fn run_grandpa( authority_set: authority_set.clone(), }); - let voters = future::loop_fn((initial_environment, last_round_number, last_state), move |params| { + let work = future::loop_fn((initial_environment, last_round_number, last_state), move |params| { let (env, last_round_number, last_state) = params; let chain_info = match client.info() { Ok(i) => i, @@ -866,29 +888,84 @@ pub fn run_grandpa( })) }); - let work = voters.map_err(|e| warn!("GRANDPA Voter failed: {:?}", e)); - - Ok((work, block_import)) + Ok(work.map_err(|e| warn!("GRANDPA Voter failed: {:?}", e))) } #[cfg(test)] mod tests { use super::*; - use network::test::*; + use network::test::{Block, Hash, TestNetFactory, Peer, PeersClient}; + use network::import_queue::{PassThroughVerifier}; + use network::ProtocolConfig; use parking_lot::Mutex; use tokio::runtime::current_thread; use keyring::Keyring; use client::BlockchainEvents; + use test_client; + + type PeerData = Mutex>>; + type GrandpaPeer = Peer; + + struct GrandpaTestNet { + peers: Vec>, + started: bool + } + + impl TestNetFactory for GrandpaTestNet { + type Verifier = PassThroughVerifier; + type PeerData = PeerData; + + /// Create new test network with peers and given config. + fn from_config(_config: &ProtocolConfig) -> Self { + GrandpaTestNet { + peers: Vec::new(), + started: false + } + } + + fn make_verifier(&self, _client: Arc, _cfg: &ProtocolConfig) + -> Arc + { + Arc::new(PassThroughVerifier(false)) // use non-instant finality. + } + + fn make_block_import(&self, client: Arc) + -> (Arc + Send + Sync>, PeerData) + { + let (import, link) = block_import(client).expect("Could not create block import for fresh peer."); + (Arc::new(import), Mutex::new(Some(link))) + } + + fn peer(&self, i: usize) -> &GrandpaPeer { + &self.peers[i] + } + + fn peers(&self) -> &Vec> { + &self.peers + } + + fn mut_peers>)>(&mut self, closure: F) { + closure(&mut self.peers); + } + + fn started(&self) -> bool { + self.started + } + + fn set_started(&mut self, new: bool) { + self.started = new; + } + } #[derive(Clone)] - struct TestGrandpaNetwork { - inner: Arc>, + struct MessageRouting { + inner: Arc>, peer_id: usize, } - impl TestGrandpaNetwork { - fn new(inner: Arc>, peer_id: usize,) -> Self { - TestGrandpaNetwork { + impl MessageRouting { + fn new(inner: Arc>, peer_id: usize,) -> Self { + MessageRouting { inner, peer_id, } @@ -904,7 +981,7 @@ mod tests { hash } - impl Network for TestGrandpaNetwork { + impl Network for MessageRouting { type In = Box,Error=()>>; fn messages_for(&self, round: u64) -> Self::In { @@ -936,7 +1013,7 @@ mod tests { #[test] fn finalize_20_unanimous_3_peers() { - let mut net = TestNet::new(3); + let mut net = GrandpaTestNet::new(3); net.peer(0).push_blocks(20, false); net.sync(); @@ -955,20 +1032,27 @@ mod tests { let mut runtime = current_thread::Runtime::new().unwrap(); for (peer_id, key) in peers { - let client = net.lock().peer(*peer_id).client().clone(); + let (client, link) = { + let mut net = net.lock(); + // temporary needed for some reason + let link = net.peers[*peer_id].data.lock().take().expect("link initialized at startup; qed"); + ( + net.peers[*peer_id].client().clone(), + link, + ) + }; finality_notifications.push( client.finality_notification_stream() .take_while(|n| Ok(n.header.number() < &20)) .for_each(move |_| Ok(())) ); - let (voter, _) = run_grandpa( + let voter = run_grandpa( Config { gossip_duration: TEST_GOSSIP_DURATION, local_key: Some(Arc::new(key.clone().into())), }, - client, - voters.iter().map(|&id| (id, 1)).collect(), - TestGrandpaNetwork::new(net.clone(), *peer_id), + link, + MessageRouting::new(net.clone(), *peer_id), ).expect("all in order with client and network"); runtime.spawn(voter); @@ -989,7 +1073,7 @@ mod tests { #[test] fn observer_can_finalize() { - let mut net = TestNet::new(4); + let mut net = GrandpaTestNet::new(4); net.peer(0).push_blocks(20, false); net.sync(); @@ -1013,20 +1097,26 @@ mod tests { .chain(::std::iter::once((3, None))); for (peer_id, local_key) in all_peers { - let client = net.lock().peer(peer_id).client().clone(); + let (client, link) = { + let mut net = net.lock(); + let link = net.peers[peer_id].data.lock().take().expect("link initialized at startup; qed"); + ( + net.peers[peer_id].client().clone(), + link, + ) + }; finality_notifications.push( client.finality_notification_stream() .take_while(|n| Ok(n.header.number() < &20)) .for_each(move |_| Ok(())) ); - let (voter, _) = run_grandpa( + let voter = run_grandpa( Config { gossip_duration: TEST_GOSSIP_DURATION, local_key, }, - client, - voters.clone(), - TestGrandpaNetwork::new(net.clone(), peer_id), + link, + MessageRouting::new(net.clone(), peer_id), ).expect("all in order with client and network"); runtime.spawn(voter); diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index 735f6c0c13..ac7968ea97 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -324,7 +324,7 @@ pub trait TestNetFactory: Sized { /// Get reference to peer. fn peer(&self, i: usize) -> &Peer; fn peers(&self) -> &Vec>>; - fn mut_peers>>)>(&mut self, closure: F ); + fn mut_peers>>)>(&mut self, closure: F); fn started(&self) -> bool; fn set_started(&mut self, now: bool); -- GitLab From 4b29c0d5a7279a0f4a34896827701dcdc2c9278a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 29 Oct 2018 17:05:42 +0100 Subject: [PATCH 020/243] extract out tests to file --- core/finality-grandpa/src/lib.rs | 248 +---------------------------- core/finality-grandpa/src/tests.rs | 241 ++++++++++++++++++++++++++++ 2 files changed, 244 insertions(+), 245 deletions(-) create mode 100644 core/finality-grandpa/src/tests.rs diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index d8fe874a5e..21d5c054fb 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -70,6 +70,9 @@ pub use fg_primitives::ScheduledChange; mod authorities; +#[cfg(test)] +mod tests; + const LAST_COMPLETED_KEY: &[u8] = b"grandpa_completed_round"; const AUTHORITY_SET_KEY: &[u8] = b"grandpa_voters"; @@ -890,248 +893,3 @@ pub fn run_grandpa( Ok(work.map_err(|e| warn!("GRANDPA Voter failed: {:?}", e))) } - -#[cfg(test)] -mod tests { - use super::*; - use network::test::{Block, Hash, TestNetFactory, Peer, PeersClient}; - use network::import_queue::{PassThroughVerifier}; - use network::ProtocolConfig; - use parking_lot::Mutex; - use tokio::runtime::current_thread; - use keyring::Keyring; - use client::BlockchainEvents; - use test_client; - - type PeerData = Mutex>>; - type GrandpaPeer = Peer; - - struct GrandpaTestNet { - peers: Vec>, - started: bool - } - - impl TestNetFactory for GrandpaTestNet { - type Verifier = PassThroughVerifier; - type PeerData = PeerData; - - /// Create new test network with peers and given config. - fn from_config(_config: &ProtocolConfig) -> Self { - GrandpaTestNet { - peers: Vec::new(), - started: false - } - } - - fn make_verifier(&self, _client: Arc, _cfg: &ProtocolConfig) - -> Arc - { - Arc::new(PassThroughVerifier(false)) // use non-instant finality. - } - - fn make_block_import(&self, client: Arc) - -> (Arc + Send + Sync>, PeerData) - { - let (import, link) = block_import(client).expect("Could not create block import for fresh peer."); - (Arc::new(import), Mutex::new(Some(link))) - } - - fn peer(&self, i: usize) -> &GrandpaPeer { - &self.peers[i] - } - - fn peers(&self) -> &Vec> { - &self.peers - } - - fn mut_peers>)>(&mut self, closure: F) { - closure(&mut self.peers); - } - - fn started(&self) -> bool { - self.started - } - - fn set_started(&mut self, new: bool) { - self.started = new; - } - } - - #[derive(Clone)] - struct MessageRouting { - inner: Arc>, - peer_id: usize, - } - - impl MessageRouting { - fn new(inner: Arc>, peer_id: usize,) -> Self { - MessageRouting { - inner, - peer_id, - } - } - } - - fn round_to_topic(round: u64) -> Hash { - let mut hash = Hash::default(); - round.using_encoded(|s| { - let raw = hash.as_mut(); - raw[..8].copy_from_slice(s); - }); - hash - } - - impl Network for MessageRouting { - type In = Box,Error=()>>; - - fn messages_for(&self, round: u64) -> Self::In { - let messages = self.inner.lock().peer(self.peer_id) - .with_spec(|spec, _| spec.gossip.messages_for(round_to_topic(round))); - - let messages = messages.map_err( - move |_| panic!("Messages for round {} dropped too early", round) - ); - - Box::new(messages) - } - - fn send_message(&self, round: u64, message: Vec) { - let mut inner = self.inner.lock(); - inner.peer(self.peer_id).gossip_message(round_to_topic(round), message); - inner.route(); - } - - fn drop_messages(&self, round: u64) { - let topic = round_to_topic(round); - self.inner.lock().peer(self.peer_id) - .with_spec(|spec, _| spec.gossip.collect_garbage(|t| t == &topic)); - } - } - - const TEST_GOSSIP_DURATION: Duration = Duration::from_millis(500); - const TEST_ROUTING_INTERVAL: Duration = Duration::from_millis(50); - - #[test] - fn finalize_20_unanimous_3_peers() { - let mut net = GrandpaTestNet::new(3); - net.peer(0).push_blocks(20, false); - net.sync(); - - let net = Arc::new(Mutex::new(net)); - let peers = &[ - (0, Keyring::Alice), - (1, Keyring::Bob), - (2, Keyring::Charlie), - ]; - - let voters: Vec<_> = peers.iter() - .map(|&(_, ref key)| AuthorityId(key.to_raw_public())) - .collect(); - - let mut finality_notifications = Vec::new(); - - let mut runtime = current_thread::Runtime::new().unwrap(); - for (peer_id, key) in peers { - let (client, link) = { - let mut net = net.lock(); - // temporary needed for some reason - let link = net.peers[*peer_id].data.lock().take().expect("link initialized at startup; qed"); - ( - net.peers[*peer_id].client().clone(), - link, - ) - }; - finality_notifications.push( - client.finality_notification_stream() - .take_while(|n| Ok(n.header.number() < &20)) - .for_each(move |_| Ok(())) - ); - let voter = run_grandpa( - Config { - gossip_duration: TEST_GOSSIP_DURATION, - local_key: Some(Arc::new(key.clone().into())), - }, - link, - MessageRouting::new(net.clone(), *peer_id), - ).expect("all in order with client and network"); - - runtime.spawn(voter); - } - - // wait for all finalized on each. - let wait_for = ::futures::future::join_all(finality_notifications) - .map(|_| ()) - .map_err(|_| ()); - - let drive_to_completion = ::tokio::timer::Interval::new_interval(TEST_ROUTING_INTERVAL) - .for_each(move |_| { net.lock().route_until_complete(); Ok(()) }) - .map(|_| ()) - .map_err(|_| ()); - - runtime.block_on(wait_for.select(drive_to_completion).map_err(|_| ())).unwrap(); - } - - #[test] - fn observer_can_finalize() { - let mut net = GrandpaTestNet::new(4); - net.peer(0).push_blocks(20, false); - net.sync(); - - let net = Arc::new(Mutex::new(net)); - let peers = &[ - (0, Keyring::Alice), - (1, Keyring::Bob), - (2, Keyring::Charlie), - ]; - - let voters: HashMap<_, _> = peers.iter() - .map(|&(_, ref key)| (AuthorityId(key.to_raw_public()), 1)) - .collect(); - - let mut finality_notifications = Vec::new(); - - let mut runtime = current_thread::Runtime::new().unwrap(); - let all_peers = peers.iter() - .cloned() - .map(|(id, key)| (id, Some(Arc::new(key.into())))) - .chain(::std::iter::once((3, None))); - - for (peer_id, local_key) in all_peers { - let (client, link) = { - let mut net = net.lock(); - let link = net.peers[peer_id].data.lock().take().expect("link initialized at startup; qed"); - ( - net.peers[peer_id].client().clone(), - link, - ) - }; - finality_notifications.push( - client.finality_notification_stream() - .take_while(|n| Ok(n.header.number() < &20)) - .for_each(move |_| Ok(())) - ); - let voter = run_grandpa( - Config { - gossip_duration: TEST_GOSSIP_DURATION, - local_key, - }, - link, - MessageRouting::new(net.clone(), peer_id), - ).expect("all in order with client and network"); - - runtime.spawn(voter); - } - - // wait for all finalized on each. - let wait_for = ::futures::future::join_all(finality_notifications) - .map(|_| ()) - .map_err(|_| ()); - - let drive_to_completion = ::tokio::timer::Interval::new_interval(TEST_ROUTING_INTERVAL) - .for_each(move |_| { net.lock().route_until_complete(); Ok(()) }) - .map(|_| ()) - .map_err(|_| ()); - - runtime.block_on(wait_for.select(drive_to_completion).map_err(|_| ())).unwrap(); - } -} diff --git a/core/finality-grandpa/src/tests.rs b/core/finality-grandpa/src/tests.rs new file mode 100644 index 0000000000..7b3c6a39bf --- /dev/null +++ b/core/finality-grandpa/src/tests.rs @@ -0,0 +1,241 @@ +use super::*; +use network::test::{Block, Hash, TestNetFactory, Peer, PeersClient}; +use network::import_queue::{PassThroughVerifier}; +use network::ProtocolConfig; +use parking_lot::Mutex; +use tokio::runtime::current_thread; +use keyring::Keyring; +use client::BlockchainEvents; +use test_client; + +type PeerData = Mutex>>; +type GrandpaPeer = Peer; + +struct GrandpaTestNet { + peers: Vec>, + started: bool +} + +impl TestNetFactory for GrandpaTestNet { + type Verifier = PassThroughVerifier; + type PeerData = PeerData; + + /// Create new test network with peers and given config. + fn from_config(_config: &ProtocolConfig) -> Self { + GrandpaTestNet { + peers: Vec::new(), + started: false + } + } + + fn make_verifier(&self, _client: Arc, _cfg: &ProtocolConfig) + -> Arc + { + Arc::new(PassThroughVerifier(false)) // use non-instant finality. + } + + fn make_block_import(&self, client: Arc) + -> (Arc + Send + Sync>, PeerData) + { + let (import, link) = block_import(client).expect("Could not create block import for fresh peer."); + (Arc::new(import), Mutex::new(Some(link))) + } + + fn peer(&self, i: usize) -> &GrandpaPeer { + &self.peers[i] + } + + fn peers(&self) -> &Vec> { + &self.peers + } + + fn mut_peers>)>(&mut self, closure: F) { + closure(&mut self.peers); + } + + fn started(&self) -> bool { + self.started + } + + fn set_started(&mut self, new: bool) { + self.started = new; + } +} + +#[derive(Clone)] +struct MessageRouting { + inner: Arc>, + peer_id: usize, +} + +impl MessageRouting { + fn new(inner: Arc>, peer_id: usize,) -> Self { + MessageRouting { + inner, + peer_id, + } + } +} + +fn round_to_topic(round: u64) -> Hash { + let mut hash = Hash::default(); + round.using_encoded(|s| { + let raw = hash.as_mut(); + raw[..8].copy_from_slice(s); + }); + hash +} + +impl Network for MessageRouting { + type In = Box,Error=()>>; + + fn messages_for(&self, round: u64) -> Self::In { + let messages = self.inner.lock().peer(self.peer_id) + .with_spec(|spec, _| spec.gossip.messages_for(round_to_topic(round))); + + let messages = messages.map_err( + move |_| panic!("Messages for round {} dropped too early", round) + ); + + Box::new(messages) + } + + fn send_message(&self, round: u64, message: Vec) { + let mut inner = self.inner.lock(); + inner.peer(self.peer_id).gossip_message(round_to_topic(round), message); + inner.route(); + } + + fn drop_messages(&self, round: u64) { + let topic = round_to_topic(round); + self.inner.lock().peer(self.peer_id) + .with_spec(|spec, _| spec.gossip.collect_garbage(|t| t == &topic)); + } +} + +const TEST_GOSSIP_DURATION: Duration = Duration::from_millis(500); +const TEST_ROUTING_INTERVAL: Duration = Duration::from_millis(50); + +#[test] +fn finalize_20_unanimous_3_peers() { + let mut net = GrandpaTestNet::new(3); + net.peer(0).push_blocks(20, false); + net.sync(); + + let net = Arc::new(Mutex::new(net)); + let peers = &[ + (0, Keyring::Alice), + (1, Keyring::Bob), + (2, Keyring::Charlie), + ]; + + let voters: Vec<_> = peers.iter() + .map(|&(_, ref key)| AuthorityId(key.to_raw_public())) + .collect(); + + let mut finality_notifications = Vec::new(); + + let mut runtime = current_thread::Runtime::new().unwrap(); + for (peer_id, key) in peers { + let (client, link) = { + let mut net = net.lock(); + // temporary needed for some reason + let link = net.peers[*peer_id].data.lock().take().expect("link initialized at startup; qed"); + ( + net.peers[*peer_id].client().clone(), + link, + ) + }; + finality_notifications.push( + client.finality_notification_stream() + .take_while(|n| Ok(n.header.number() < &20)) + .for_each(move |_| Ok(())) + ); + let voter = run_grandpa( + Config { + gossip_duration: TEST_GOSSIP_DURATION, + local_key: Some(Arc::new(key.clone().into())), + }, + link, + MessageRouting::new(net.clone(), *peer_id), + ).expect("all in order with client and network"); + + runtime.spawn(voter); + } + + // wait for all finalized on each. + let wait_for = ::futures::future::join_all(finality_notifications) + .map(|_| ()) + .map_err(|_| ()); + + let drive_to_completion = ::tokio::timer::Interval::new_interval(TEST_ROUTING_INTERVAL) + .for_each(move |_| { net.lock().route_until_complete(); Ok(()) }) + .map(|_| ()) + .map_err(|_| ()); + + runtime.block_on(wait_for.select(drive_to_completion).map_err(|_| ())).unwrap(); +} + +#[test] +fn observer_can_finalize() { + let mut net = GrandpaTestNet::new(4); + net.peer(0).push_blocks(20, false); + net.sync(); + + let net = Arc::new(Mutex::new(net)); + let peers = &[ + (0, Keyring::Alice), + (1, Keyring::Bob), + (2, Keyring::Charlie), + ]; + + let voters: HashMap<_, _> = peers.iter() + .map(|&(_, ref key)| (AuthorityId(key.to_raw_public()), 1)) + .collect(); + + let mut finality_notifications = Vec::new(); + + let mut runtime = current_thread::Runtime::new().unwrap(); + let all_peers = peers.iter() + .cloned() + .map(|(id, key)| (id, Some(Arc::new(key.into())))) + .chain(::std::iter::once((3, None))); + + for (peer_id, local_key) in all_peers { + let (client, link) = { + let mut net = net.lock(); + let link = net.peers[peer_id].data.lock().take().expect("link initialized at startup; qed"); + ( + net.peers[peer_id].client().clone(), + link, + ) + }; + finality_notifications.push( + client.finality_notification_stream() + .take_while(|n| Ok(n.header.number() < &20)) + .for_each(move |_| Ok(())) + ); + let voter = run_grandpa( + Config { + gossip_duration: TEST_GOSSIP_DURATION, + local_key, + }, + link, + MessageRouting::new(net.clone(), peer_id), + ).expect("all in order with client and network"); + + runtime.spawn(voter); + } + + // wait for all finalized on each. + let wait_for = ::futures::future::join_all(finality_notifications) + .map(|_| ()) + .map_err(|_| ()); + + let drive_to_completion = ::tokio::timer::Interval::new_interval(TEST_ROUTING_INTERVAL) + .for_each(move |_| { net.lock().route_until_complete(); Ok(()) }) + .map(|_| ()) + .map_err(|_| ()); + + runtime.block_on(wait_for.select(drive_to_completion).map_err(|_| ())).unwrap(); +} -- GitLab From 6a7e6cf331787c53b7bd4d6143ced9a7100a0e4b Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 30 Oct 2018 23:46:27 +0100 Subject: [PATCH 021/243] tests compile after changes --- Cargo.lock | 4 +- core/finality-grandpa/Cargo.toml | 2 +- core/finality-grandpa/primitives/src/lib.rs | 2 +- core/finality-grandpa/src/lib.rs | 60 ++++++++--- core/finality-grandpa/src/tests.rs | 114 ++++++++++++++------ core/network/src/import_queue.rs | 32 ++++-- core/network/src/test/mod.rs | 2 +- 7 files changed, 156 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3b1b27388d..b14022ea3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -581,7 +581,6 @@ dependencies = [ [[package]] name = "finality-grandpa" version = "0.3.0" -source = "git+https://github.com/paritytech/finality-grandpa#f1ad8d7ca020e5db0e51e32cd62e8cd3c578d121" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3034,7 +3033,7 @@ dependencies = [ name = "substrate-finality-grandpa" version = "0.1.0" dependencies = [ - "finality-grandpa 0.3.0 (git+https://github.com/paritytech/finality-grandpa)", + "finality-grandpa 0.3.0", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4202,7 +4201,6 @@ dependencies = [ "checksum failure_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "946d0e98a50d9831f5d589038d2ca7f8f455b1c21028c0db0e84116a12696426" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" -"checksum finality-grandpa 0.3.0 (git+https://github.com/paritytech/finality-grandpa)" = "" "checksum fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d5ec8112f00ea8a483e04748a85522184418fd1cf02890b626d8fc28683f7de" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index 96892ec6f7..fa30e427f8 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -18,7 +18,7 @@ substrate-fg-primitives = { path = "primitives" } [dependencies.finality-grandpa] #version = "0.3.0" -git = "https://github.com/paritytech/finality-grandpa" +path = "../../../finality-afg" features = ["derive-codec"] [dev-dependencies] diff --git a/core/finality-grandpa/primitives/src/lib.rs b/core/finality-grandpa/primitives/src/lib.rs index ddf924cc2e..649d424e6b 100644 --- a/core/finality-grandpa/primitives/src/lib.rs +++ b/core/finality-grandpa/primitives/src/lib.rs @@ -33,7 +33,7 @@ use sr_primitives::traits::{Block as BlockT, DigestFor, NumberFor}; /// A scheduled change of authority set. #[cfg_attr(feature = "std", derive(Debug, PartialEq))] -#[derive(Encode, Decode)] +#[derive(Clone, Encode, Decode)] pub struct ScheduledChange { /// The new authorities after the change, along with their respective weights. pub next_authorities: Vec<(AuthorityId, u64)>, diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 21d5c054fb..d12b35ea1f 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -699,20 +699,58 @@ impl voter::Environment> f } } +/// Client side of the GRANDPA APIs declared in fg-primitives. +pub trait ApiClient { + /// Get the genesis authorities for GRANDPA. + fn genesis_authorities(&self) -> Result, ClientError>; + + /// Check a header's digest for a scheduled change. + fn scheduled_change(&self, header: &Block::Header) + -> Result>>, ClientError>; +} + +impl ApiClient for Arc> where + B: Backend + 'static, + E: CallExecutor + 'static + Clone, + DigestFor: Encode, +{ + fn genesis_authorities(&self) -> Result, ClientError> { + use runtime_primitives::traits::Zero; + + self.call_api_at( + &BlockId::Number(NumberFor::::zero()), + fg_primitives::AUTHORITIES_CALL, + &() + ) + } + + fn scheduled_change(&self, header: &Block::Header) + -> Result>>, ClientError> + { + self.call_api_at( + &BlockId::hash(header.parent_hash().clone()), + ::fg_primitives::PENDING_CHANGE_CALL, + header.digest(), + ) + } +} + /// A block-import handler for GRANDPA. /// /// This scans each imported block for signals of changing authority set. /// When using GRANDPA, the block import worker should be using this block import /// object. -pub struct GrandpaBlockImport { +pub struct GrandpaBlockImport { inner: Arc>, authority_set: SharedAuthoritySet>, + api_client: Api, } -impl BlockImport for GrandpaBlockImport where +impl BlockImport for GrandpaBlockImport where B: Backend + 'static, E: CallExecutor + 'static + Clone, DigestFor: Encode, + Api: ApiClient, { type Error = ClientError; @@ -721,11 +759,7 @@ impl BlockImport for GrandpaBlockImport { use authorities::PendingChange; - let maybe_change: Option>> = self.inner.call_api_at( - &BlockId::hash(block.header.parent_hash().clone()), - ::fg_primitives::PENDING_CHANGE_CALL, - block.header.digest() - )?; + let maybe_change = self.api_client.scheduled_change(&block.header)?; // when we update the authorities, we need to hold the lock // until the block is written to prevent a race if we need to restore @@ -768,14 +802,13 @@ pub struct LinkHalf { /// Make block importer and link half necessary to tie the background voter /// to it. -pub fn block_import(client: Arc>) - -> Result<(GrandpaBlockImport, LinkHalf), ClientError> +pub fn block_import(client: Arc>, api_client: Api) + -> Result<(GrandpaBlockImport, LinkHalf), ClientError> where B: Backend + 'static, E: CallExecutor + 'static, + Api: ApiClient, { - use runtime_primitives::traits::Zero; - let authority_set = match client.backend().get_aux(AUTHORITY_SET_KEY)? { None => { info!(target: "afg", "Loading GRANDPA authorities \ @@ -784,8 +817,7 @@ pub fn block_import(client: Arc>) // no authority set on disk: fetch authorities from genesis state. // if genesis state is not available, we may be a light client, but these // are unsupported for following GRANDPA directly. - let genesis_authorities: Vec<(AuthorityId, u64)> = client - .call_api_at(&BlockId::Number(NumberFor::::zero()), fg_primitives::AUTHORITIES_CALL, &())?; + let genesis_authorities: Vec<(AuthorityId, u64)> = api_client.genesis_authorities()?; let authority_set = SharedAuthoritySet::genesis(genesis_authorities); let encoded = authority_set.inner().read().encode(); @@ -801,7 +833,7 @@ pub fn block_import(client: Arc>) }; Ok(( - GrandpaBlockImport { inner: client.clone(), authority_set: authority_set.clone() }, + GrandpaBlockImport { inner: client.clone(), authority_set: authority_set.clone(), api_client }, LinkHalf { client, authority_set }, )) } diff --git a/core/finality-grandpa/src/tests.rs b/core/finality-grandpa/src/tests.rs index 7b3c6a39bf..adc1646413 100644 --- a/core/finality-grandpa/src/tests.rs +++ b/core/finality-grandpa/src/tests.rs @@ -6,16 +6,34 @@ use parking_lot::Mutex; use tokio::runtime::current_thread; use keyring::Keyring; use client::BlockchainEvents; -use test_client; +use test_client::{self, runtime::BlockNumber}; type PeerData = Mutex>>; type GrandpaPeer = Peer; struct GrandpaTestNet { peers: Vec>, + test_config: TestApi, started: bool } +impl GrandpaTestNet { + fn new(test_config: TestApi, n_peers: usize) -> Self { + let mut net = GrandpaTestNet { + peers: Vec::with_capacity(n_peers), + started: false, + test_config, + }; + let config = Self::default_config(); + + for _ in 0..n_peers { + net.add_peer(&config); + } + + net + } +} + impl TestNetFactory for GrandpaTestNet { type Verifier = PassThroughVerifier; type PeerData = PeerData; @@ -24,6 +42,7 @@ impl TestNetFactory for GrandpaTestNet { fn from_config(_config: &ProtocolConfig) -> Self { GrandpaTestNet { peers: Vec::new(), + test_config: Default::default(), started: false } } @@ -37,7 +56,7 @@ impl TestNetFactory for GrandpaTestNet { fn make_block_import(&self, client: Arc) -> (Arc + Send + Sync>, PeerData) { - let (import, link) = block_import(client).expect("Could not create block import for fresh peer."); + let (import, link) = block_import(client, self.test_config.clone()).expect("Could not create block import for fresh peer."); (Arc::new(import), Mutex::new(Some(link))) } @@ -113,43 +132,74 @@ impl Network for MessageRouting { } } +#[derive(Default, Clone)] +struct TestApi { + genesis_authorities: Vec<(AuthorityId, u64)>, + scheduled_changes: HashMap>, +} + +impl TestApi { + fn new(genesis_authorities: Vec<(AuthorityId, u64)>) -> Self { + TestApi { + genesis_authorities, + scheduled_changes: HashMap::new(), + } + } +} + +impl ApiClient for TestApi { + fn genesis_authorities(&self) -> Result, ClientError> { + Ok(self.genesis_authorities.clone()) + } + + fn scheduled_change(&self, header: &::Header) + -> Result>>, ClientError> + { + // we take only scheduled changes at given block number where there are no + // extrinsics. + Ok(self.scheduled_changes.get(header.number()).map(|c| c.clone())) + } +} + const TEST_GOSSIP_DURATION: Duration = Duration::from_millis(500); const TEST_ROUTING_INTERVAL: Duration = Duration::from_millis(50); #[test] -fn finalize_20_unanimous_3_peers() { - let mut net = GrandpaTestNet::new(3); +fn finalize_3_voters_no_observers() { + let peers = &[Keyring::Alice, Keyring::Bob, Keyring::Charlie]; + let voters: Vec<_> = peers.iter() + .map(|key| AuthorityId(key.to_raw_public())) + .map(|id| (id, 1)) + .collect(); + + let mut net = GrandpaTestNet::new(TestApi::new(voters), 3); net.peer(0).push_blocks(20, false); net.sync(); - let net = Arc::new(Mutex::new(net)); - let peers = &[ - (0, Keyring::Alice), - (1, Keyring::Bob), - (2, Keyring::Charlie), - ]; + for i in 0..3 { + assert_eq!(net.peer(i).client().info().unwrap().chain.best_number, 20, + "Peer #{} failed to sync", i); + } - let voters: Vec<_> = peers.iter() - .map(|&(_, ref key)| AuthorityId(key.to_raw_public())) - .collect(); + let net = Arc::new(Mutex::new(net)); let mut finality_notifications = Vec::new(); - let mut runtime = current_thread::Runtime::new().unwrap(); - for (peer_id, key) in peers { + + for (peer_id, key) in peers.iter().enumerate() { let (client, link) = { let mut net = net.lock(); // temporary needed for some reason - let link = net.peers[*peer_id].data.lock().take().expect("link initialized at startup; qed"); + let link = net.peers[peer_id].data.lock().take().expect("link initialized at startup; qed"); ( - net.peers[*peer_id].client().clone(), + net.peers[peer_id].client().clone(), link, ) }; finality_notifications.push( client.finality_notification_stream() .take_while(|n| Ok(n.header.number() < &20)) - .for_each(move |_| Ok(())) + .for_each(|_| Ok(())) ); let voter = run_grandpa( Config { @@ -157,7 +207,7 @@ fn finalize_20_unanimous_3_peers() { local_key: Some(Arc::new(key.clone().into())), }, link, - MessageRouting::new(net.clone(), *peer_id), + MessageRouting::new(net.clone(), peer_id), ).expect("all in order with client and network"); runtime.spawn(voter); @@ -177,31 +227,27 @@ fn finalize_20_unanimous_3_peers() { } #[test] -fn observer_can_finalize() { - let mut net = GrandpaTestNet::new(4); +fn finalize_3_voters_1_observer() { + let peers = &[Keyring::Alice, Keyring::Bob, Keyring::Charlie]; + let voters: Vec<_> = peers.iter() + .map(|key| AuthorityId(key.to_raw_public())) + .map(|id| (id, 1)) + .collect(); + + let mut net = GrandpaTestNet::new(TestApi::new(voters), 4); net.peer(0).push_blocks(20, false); net.sync(); let net = Arc::new(Mutex::new(net)); - let peers = &[ - (0, Keyring::Alice), - (1, Keyring::Bob), - (2, Keyring::Charlie), - ]; - - let voters: HashMap<_, _> = peers.iter() - .map(|&(_, ref key)| (AuthorityId(key.to_raw_public()), 1)) - .collect(); - let mut finality_notifications = Vec::new(); let mut runtime = current_thread::Runtime::new().unwrap(); let all_peers = peers.iter() .cloned() - .map(|(id, key)| (id, Some(Arc::new(key.into())))) - .chain(::std::iter::once((3, None))); + .map(|key| Some(Arc::new(key.into()))) + .chain(::std::iter::once(None)); - for (peer_id, local_key) in all_peers { + for (peer_id, local_key) in all_peers.enumerate() { let (client, link) = { let mut net = net.lock(); let link = net.peers[peer_id].data.lock().take().expect("link initialized at startup; qed"); diff --git a/core/network/src/import_queue.rs b/core/network/src/import_queue.rs index 42fcb1b6d6..96496e33ad 100644 --- a/core/network/src/import_queue.rs +++ b/core/network/src/import_queue.rs @@ -268,6 +268,11 @@ pub trait Link: Send { fn restart(&self) { } } +/// A link implementation that does nothing. +pub struct NoopLink; + +impl Link for NoopLink { } + /// A link implementation that connects to the network. pub struct NetworkLink> { /// The chain-sync handle @@ -340,9 +345,9 @@ enum BlockImportError { } /// Import a bunch of blocks. -fn import_many_blocks<'a, B: BlockT, L: Link, V: Verifier>( +fn import_many_blocks<'a, B: BlockT, V: Verifier>( import_handle: &BlockImport, - link: &L, + link: &Link, qdata: Option<&AsyncImportQueueData>, blocks: (BlockOrigin, Vec>), verifier: Arc @@ -460,7 +465,7 @@ fn import_single_block>( } /// Process single block import result. -fn process_import_result<'a, B: BlockT>( +fn process_import_result( link: &Link, result: Result::Header as HeaderT>::Number>, BlockImportError> ) -> usize @@ -568,15 +573,30 @@ pub struct SyncImportQueue> { } #[cfg(any(test, feature = "test-helpers"))] -impl> SyncImportQueue { +impl> SyncImportQueue { /// Create a new SyncImportQueue wrapping the given Verifier and block import /// handle. pub fn new(verifier: Arc, block_import: SharedBlockImport) -> Self { - SyncImportQueue { + let queue = SyncImportQueue { verifier, link: ImportCB::new(), block_import, - } + }; + + let v = queue.verifier.clone(); + let import_handle = queue.block_import.clone(); + queue.link.set(Box::new(move |origin, new_blocks| { + let verifier = v.clone(); + import_many_blocks( + &*import_handle, + &NoopLink, + None, + (origin, new_blocks), + verifier, + ) + })); + + queue } } diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index ac7968ea97..c5addcd4e1 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -258,7 +258,7 @@ impl, D> Peer { body: Some(block.extrinsics), receipt: None, message_queue: None, - justification: None, + justification: Some(Vec::new()), }, }]); } -- GitLab From 770f1f62ccaca849f12d17fd6bf4238f59bf97c2 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 31 Oct 2018 12:39:27 +0100 Subject: [PATCH 022/243] initial test to ensure auxiliary data is generated correctly --- core/finality-grandpa/src/authorities.rs | 21 ++- core/finality-grandpa/src/tests.rs | 175 +++++++++++++++++++++-- core/network/src/test/mod.rs | 12 +- 3 files changed, 186 insertions(+), 22 deletions(-) diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index 6a32e3ddb7..8541a64123 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -39,11 +39,7 @@ impl SharedAuthoritySet { /// The genesis authority set. pub(crate) fn genesis(initial: Vec<(AuthorityId, u64)>) -> Self { SharedAuthoritySet { - inner: Arc::new(RwLock::new(AuthoritySet { - current_authorities: initial, - set_id: 0, - pending_changes: Vec::new(), - })) + inner: Arc::new(RwLock::new(AuthoritySet::genesis(initial))) } } @@ -91,6 +87,15 @@ pub(crate) struct AuthoritySet { } impl AuthoritySet { + /// Get a genesis set with given authorities. + pub(crate) fn genesis(initial: Vec<(AuthorityId, u64)>) -> Self { + AuthoritySet { + current_authorities: initial, + set_id: 0, + pending_changes: Vec::new(), + } + } + /// Get the current set id and a reference to the current authority set. pub(crate) fn current(&self) -> (u64, &[(AuthorityId, u64)]) { (self.set_id, &self.current_authorities[..]) @@ -113,6 +118,12 @@ impl AuthoritySet self.pending_changes.insert(idx, pending); } + + /// Inspect pending changes. + pub(crate) fn pending_changes(&self) -> &[PendingChange] { + &self.pending_changes + } + /// Get the earliest limit-block number, if any. pub(crate) fn current_limit(&self) -> Option { self.pending_changes.get(0).map(|change| change.effective_number().clone()) diff --git a/core/finality-grandpa/src/tests.rs b/core/finality-grandpa/src/tests.rs index adc1646413..252fbcf830 100644 --- a/core/finality-grandpa/src/tests.rs +++ b/core/finality-grandpa/src/tests.rs @@ -1,3 +1,21 @@ +// Copyright 2018 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 . + +//! Tests and test helpers for GRANDPA. + use super::*; use network::test::{Block, Hash, TestNetFactory, Peer, PeersClient}; use network::import_queue::{PassThroughVerifier}; @@ -7,6 +25,10 @@ use tokio::runtime::current_thread; use keyring::Keyring; use client::BlockchainEvents; use test_client::{self, runtime::BlockNumber}; +use codec::Decode; +use consensus_common::BlockOrigin; + +use authorities::AuthoritySet; type PeerData = Mutex>>; type GrandpaPeer = Peer; @@ -135,14 +157,14 @@ impl Network for MessageRouting { #[derive(Default, Clone)] struct TestApi { genesis_authorities: Vec<(AuthorityId, u64)>, - scheduled_changes: HashMap>, + scheduled_changes: Arc>>>, } impl TestApi { fn new(genesis_authorities: Vec<(AuthorityId, u64)>) -> Self { TestApi { genesis_authorities, - scheduled_changes: HashMap::new(), + scheduled_changes: Arc::new(Mutex::new(HashMap::new())), } } } @@ -157,20 +179,29 @@ impl ApiClient for TestApi { { // we take only scheduled changes at given block number where there are no // extrinsics. - Ok(self.scheduled_changes.get(header.number()).map(|c| c.clone())) + let change = self.scheduled_changes.lock().get(&header.hash()).map(|c| c.clone()); + if change.is_some() { + println!("Found transition for {:?}", header.hash()); + } + + Ok(change) } } const TEST_GOSSIP_DURATION: Duration = Duration::from_millis(500); const TEST_ROUTING_INTERVAL: Duration = Duration::from_millis(50); +fn make_ids(keys: &[Keyring]) -> Vec<(AuthorityId, u64)> { + keys.iter() + .map(|key| AuthorityId(key.to_raw_public())) + .map(|id| (id, 1)) + .collect() +} + #[test] fn finalize_3_voters_no_observers() { let peers = &[Keyring::Alice, Keyring::Bob, Keyring::Charlie]; - let voters: Vec<_> = peers.iter() - .map(|key| AuthorityId(key.to_raw_public())) - .map(|id| (id, 1)) - .collect(); + let voters = make_ids(peers); let mut net = GrandpaTestNet::new(TestApi::new(voters), 3); net.peer(0).push_blocks(20, false); @@ -229,10 +260,7 @@ fn finalize_3_voters_no_observers() { #[test] fn finalize_3_voters_1_observer() { let peers = &[Keyring::Alice, Keyring::Bob, Keyring::Charlie]; - let voters: Vec<_> = peers.iter() - .map(|key| AuthorityId(key.to_raw_public())) - .map(|id| (id, 1)) - .collect(); + let voters = make_ids(peers); let mut net = GrandpaTestNet::new(TestApi::new(voters), 4); net.peer(0).push_blocks(20, false); @@ -285,3 +313,128 @@ fn finalize_3_voters_1_observer() { runtime.block_on(wait_for.select(drive_to_completion).map_err(|_| ())).unwrap(); } + +#[test] +fn transition_3_voters_twice_1_observer() { + let peers_a = &[ + Keyring::Alice, + Keyring::Bob, + Keyring::Charlie, + ]; + + let peers_b = &[ + Keyring::Dave, + Keyring::Eve, + Keyring::Ferdie, + ]; + + let peers_c = &[ + Keyring::Alice, + Keyring::Eve, + Keyring::Two, + ]; + + let observer = &[Keyring::One]; + + let genesis_voters = make_ids(peers_a); + + let api = TestApi::new(genesis_voters); + let transitions = api.scheduled_changes.clone(); + let add_transition = move |hash, change| { + transitions.lock().insert(hash, change); + }; + + let mut net = GrandpaTestNet::new(api, 8); + + // first 20 blocks: transition at 15, applied at 20. + { + net.peer(0).push_blocks(14, false); + net.peer(0).generate_blocks(1, BlockOrigin::File, |builder| { + let block = builder.bake().unwrap(); + println!("Adding transition for {:?}", block.header.hash()); + add_transition(block.header.hash(), ScheduledChange { + next_authorities: make_ids(peers_b), + delay: 4, + }); + + block + }); + net.peer(0).push_blocks(5, false); + } + + // at block 21 we do another transition, but this time instant. + // add more until we have 30. + { + net.peer(0).generate_blocks(1, BlockOrigin::File, |builder| { + let block = builder.bake().unwrap(); + println!("Adding transition for {:?}", block.header.hash()); + add_transition(block.header.hash(), ScheduledChange { + next_authorities: make_ids(peers_c), + delay: 0, + }); + + block + }); + + net.peer(0).push_blocks(9, false); + } + net.sync(); + + for (i, peer) in net.peers().iter().enumerate() { + assert_eq!(peer.client().info().unwrap().chain.best_number, 30, + "Peer #{} failed to sync", i); + + let set_raw = peer.client().backend().get_aux(::AUTHORITY_SET_KEY).unwrap().unwrap(); + let set = AuthoritySet::::decode(&mut &set_raw[..]).unwrap(); + + assert_eq!(set.current(), (0, make_ids(peers_a).as_slice())); + assert_eq!(set.pending_changes().len(), 2); + } + + // let net = Arc::new(Mutex::new(net)); + // let mut finality_notifications = Vec::new(); + + // let mut runtime = current_thread::Runtime::new().unwrap(); + // let all_peers = peers.iter() + // .cloned() + // .map(|key| Some(Arc::new(key.into()))) + // .chain(::std::iter::once(None)); + + // for (peer_id, local_key) in all_peers.enumerate() { + // let (client, link) = { + // let mut net = net.lock(); + // let link = net.peers[peer_id].data.lock().take().expect("link initialized at startup; qed"); + // ( + // net.peers[peer_id].client().clone(), + // link, + // ) + // }; + // finality_notifications.push( + // client.finality_notification_stream() + // .take_while(|n| Ok(n.header.number() < &20)) + // .for_each(move |_| Ok(())) + // ); + // let voter = run_grandpa( + // Config { + // gossip_duration: TEST_GOSSIP_DURATION, + // local_key, + // }, + // link, + // MessageRouting::new(net.clone(), peer_id), + // ).expect("all in order with client and network"); + + // runtime.spawn(voter); + // } + + // // wait for all finalized on each. + // let wait_for = ::futures::future::join_all(finality_notifications) + // .map(|_| ()) + // .map_err(|_| ()); + + // let drive_to_completion = ::tokio::timer::Interval::new_interval(TEST_ROUTING_INTERVAL) + // .for_each(move |_| { net.lock().route_until_complete(); Ok(()) }) + // .map(|_| ()) + // .map_err(|_| ()); + + // runtime.block_on(wait_for.select(drive_to_completion).map_err(|_| ())).unwrap(); +} diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index c5addcd4e1..f8869fcc81 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -236,14 +236,13 @@ impl, D> Peer { /// Add blocks to the peer -- edit the block before adding pub fn generate_blocks(&self, count: usize, origin: BlockOrigin, mut edit_block: F) - where F: FnMut(&mut BlockBuilder) + where F: FnMut(BlockBuilder) -> Block { use blocks::BlockData; for _ in 0..count { - let mut builder = self.client.new_block().unwrap(); - edit_block(&mut builder); - let block = builder.bake().unwrap(); + let builder = self.client.new_block().unwrap(); + let block = edit_block(builder); let hash = block.header.hash(); trace!("Generating {}, (#{}, parent={})", hash, block.header.number, block.header.parent_hash); let header = block.header.clone(); @@ -269,7 +268,7 @@ impl, D> Peer { pub fn push_blocks(&self, count: usize, with_tx: bool) { let mut nonce = 0; if with_tx { - self.generate_blocks(count, BlockOrigin::File, |builder| { + self.generate_blocks(count, BlockOrigin::File, |mut builder| { let transfer = Transfer { from: Keyring::Alice.to_raw_public().into(), to: Keyring::Alice.to_raw_public().into(), @@ -279,9 +278,10 @@ impl, D> Peer { let signature = Keyring::from_raw_public(transfer.from.0).unwrap().sign(&transfer.encode()).into(); builder.push(Extrinsic { transfer, signature }).unwrap(); nonce = nonce + 1; + builder.bake().unwrap() }); } else { - self.generate_blocks(count, BlockOrigin::File, |_| ()); + self.generate_blocks(count, BlockOrigin::File, |builder| builder.bake().unwrap()); } } -- GitLab From 82115aaff6446661a646b3c76b84b5c767e13f51 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 17 Oct 2018 13:05:30 -0700 Subject: [PATCH 023/243] set aux in block import --- core/client/src/backend.rs | 3 +++ core/client/src/in_mem.rs | 37 ++++++++++++++++++++++++----- core/client/src/light/backend.rs | 10 ++++++++ core/client/src/light/blockchain.rs | 4 ++++ 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/core/client/src/backend.rs b/core/client/src/backend.rs index 615704361c..b994b1307d 100644 --- a/core/client/src/backend.rs +++ b/core/client/src/backend.rs @@ -76,6 +76,9 @@ where fn reset_storage, Vec)>>(&mut self, iter: I) -> error::Result<()>; /// Inject changes trie data into the database. fn update_changes_trie(&mut self, update: MemoryDB) -> error::Result<()>; + /// Update auxiliary keys. Values are `None` if should be deleted. + fn set_aux(&mut self, ops: I) -> error::Result<()> + where I: IntoIterator, Option>)>; } /// Client backend. Manages the data layer. diff --git a/core/client/src/in_mem.rs b/core/client/src/in_mem.rs index 5548528cc7..88f94dfbed 100644 --- a/core/client/src/in_mem.rs +++ b/core/client/src/in_mem.rs @@ -96,6 +96,7 @@ struct BlockchainStorage { genesis_hash: Block::Hash, cht_roots: HashMap, Block::Hash>, leaves: LeafSet>, + aux: HashMap, Vec>, } /// In-memory blockchain. Supports concurrent reads. @@ -144,6 +145,7 @@ impl Blockchain { genesis_hash: Default::default(), cht_roots: HashMap::new(), leaves: LeafSet::new(), + aux: HashMap::new(), })); Blockchain { storage: storage.clone(), @@ -247,6 +249,16 @@ impl Blockchain { self.storage.write().finalized_hash = hash; Ok(()) } + + fn write_aux(&self, ops: Vec<(Vec, Option>)>) { + let mut storage = self.storage.write(); + for (k, v) in ops { + match v { + Some(v) => storage.aux.insert(k, v), + None => storage.aux.remove(&k), + }; + } + } } impl HeaderBackend for Blockchain { @@ -320,6 +332,7 @@ impl light::blockchain::Storage for Blockchain header: Block::Header, authorities: Option>, state: NewBlockState, + aux_ops: Vec<(Vec, Option>)>, ) -> error::Result<()> { let hash = header.hash(); let parent_hash = *header.parent_hash(); @@ -328,6 +341,7 @@ impl light::blockchain::Storage for Blockchain self.cache.insert(parent_hash, authorities); } + self.write_aux(aux_ops); Ok(()) } @@ -356,6 +370,7 @@ pub struct BlockImportOperation { old_state: InMemory, new_state: Option>, changes_trie_update: Option>, + aux: Option, Option>)>>, } impl backend::BlockImportOperation for BlockImportOperation @@ -404,6 +419,13 @@ where self.new_state = Some(InMemory::from(iter.collect::>())); Ok(()) } + + fn set_aux(&mut self, ops: I) -> error::Result<()> + where I: IntoIterator, Option>)> + { + self.aux = Some(ops.into_iter().collect()); + Ok(()) + } } /// In-memory backend. Keeps all states and blocks in memory. Useful for testing. @@ -417,7 +439,6 @@ where states: RwLock>>, changes_trie_storage: InMemoryChangesTrieStorage, blockchain: Blockchain, - aux: RwLock, Vec>>, } impl Backend @@ -433,7 +454,6 @@ where states: RwLock::new(HashMap::new()), changes_trie_storage: InMemoryChangesTrieStorage::new(), blockchain: Blockchain::new(), - aux: RwLock::new(HashMap::new()), } } } @@ -461,6 +481,7 @@ where old_state: state, new_state: None, changes_trie_update: None, + aux: None, }) } @@ -488,6 +509,10 @@ where self.blockchain.cache.insert(parent_hash, operation.pending_authorities); } } + + if let Some(ops) = operation.aux { + self.blockchain.write_aux(ops); + } Ok(()) } @@ -515,18 +540,18 @@ where } fn insert_aux<'a, 'b: 'a, 'c: 'a, I: IntoIterator, D: IntoIterator>(&self, insert: I, delete: D) -> error::Result<()> { - let mut aux = self.aux.write(); + let mut storage = self.blockchain.storage.write(); for (k, v) in insert { - aux.insert(k.to_vec(), v.to_vec()); + storage.aux.insert(k.to_vec(), v.to_vec()); } for k in delete { - aux.remove(*k); + storage.aux.remove(*k); } Ok(()) } fn get_aux(&self, key: &[u8]) -> error::Result>> { - Ok(self.aux.read().get(key).cloned()) + Ok(self.blockchain.storage.read().aux.get(key).cloned()) } } diff --git a/core/client/src/light/backend.rs b/core/client/src/light/backend.rs index e83640aa6c..5a1cee15c6 100644 --- a/core/client/src/light/backend.rs +++ b/core/client/src/light/backend.rs @@ -45,6 +45,7 @@ pub struct ImportOperation { header: Option, authorities: Option>, leaf_state: NewBlockState, + aux_ops: Vec<(Vec, Option>)>, _phantom: ::std::marker::PhantomData<(S, F)>, } @@ -86,6 +87,7 @@ impl ClientBackend for Backend where header: None, authorities: None, leaf_state: NewBlockState::Normal, + aux_ops: Vec::new(), _phantom: Default::default(), }) } @@ -96,6 +98,7 @@ impl ClientBackend for Backend where header, operation.authorities, operation.leaf_state, + operation.aux_ops, ) } @@ -193,6 +196,13 @@ where // we're not storing anything locally => ignore changes Ok(()) } + + fn set_aux(&mut self, ops: I) -> ClientResult<()> + where I: IntoIterator, Option>)> + { + self.aux_ops = ops.into_iter().collect(); + Ok(()) + } } impl StateBackend for OnDemandState diff --git a/core/client/src/light/blockchain.rs b/core/client/src/light/blockchain.rs index 97c20ecc90..2dd7097751 100644 --- a/core/client/src/light/blockchain.rs +++ b/core/client/src/light/blockchain.rs @@ -35,11 +35,15 @@ use light::fetcher::{Fetcher, RemoteHeaderRequest}; /// Light client blockchain storage. pub trait Storage: BlockchainHeaderBackend { /// Store new header. Should refuse to revert any finalized blocks. + /// + /// Takes new authorities, the leaf state of the new block, and + /// any auxiliary storage updates to place in the same operation. fn import_header( &self, header: Block::Header, authorities: Option>, state: NewBlockState, + aux_ops: Vec<(Vec, Option>)>, ) -> ClientResult<()>; /// Mark historic header as finalized. -- GitLab From a47d765f7d08ab0eb5fcf9226e9b77b3eeddf44a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 17 Oct 2018 13:27:39 -0700 Subject: [PATCH 024/243] implement aux-storing in client-db --- core/client/db/src/lib.rs | 21 +++++++++++++++++++++ core/client/db/src/light.rs | 17 +++++++++++++---- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index 36ab5f4b2a..2d1fe3fd7c 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -277,6 +277,18 @@ pub struct BlockImportOperation { updates: MemoryDB, changes_trie_updates: MemoryDB, pending_block: Option>, + aux_ops: Vec<(Vec, Option>)>, +} + +impl BlockImportOperation { + fn apply_aux(&mut self, transaction: &mut DBTransaction) { + for (key, maybe_val) in self.aux_ops.drain(..) { + match maybe_val { + Some(val) => transaction.put_vec(columns::AUX, &key, val), + None => transaction.delete(columns::AUX, &key), + } + } + } } impl client::backend::BlockImportOperation @@ -326,6 +338,13 @@ where Block: BlockT, self.changes_trie_updates = update; Ok(()) } + + fn set_aux(&mut self, ops: I) -> Result<(), client::error::Error> + where I: IntoIterator, Option>)> + { + self.aux_ops = ops.into_iter().collect(); + Ok(()) + } } struct StorageDb { @@ -581,6 +600,7 @@ impl client::backend::Backend for Backend whe old_state: state, updates: MemoryDB::default(), changes_trie_updates: MemoryDB::default(), + aux_ops: Vec::new(), }) } @@ -588,6 +608,7 @@ impl client::backend::Backend for Backend whe -> Result<(), client::error::Error> { let mut transaction = DBTransaction::new(); + operation.apply_aux(&mut transaction); if let Some(pending_block) = operation.pending_block { let hash = pending_block.header.hash(); diff --git a/core/client/db/src/light.rs b/core/client/db/src/light.rs index f336df4d28..eed75f25f8 100644 --- a/core/client/db/src/light.rs +++ b/core/client/db/src/light.rs @@ -43,6 +43,7 @@ pub(crate) mod columns { pub const HEADER: Option = Some(2); pub const CACHE: Option = Some(3); pub const CHT: Option = Some(4); + pub const AUX: Option = Some(5); } /// Light blockchain storage. Stores most recent headers + CHTs for older headers. @@ -238,6 +239,7 @@ impl LightBlockchainStorage for LightStorage header: Block::Header, authorities: Option>, leaf_state: NewBlockState, + aux_ops: Vec<(Vec, Option>)>, ) -> ClientResult<()> { let mut transaction = DBTransaction::new(); @@ -253,6 +255,13 @@ impl LightBlockchainStorage for LightStorage ::utils::number_and_hash_to_lookup_key(number, hash) }; + for (key, maybe_val) in aux_ops { + match maybe_val { + Some(val) => transaction.put_vec(columns::AUX, &key, val), + None => transaction.delete(columns::AUX, &key), + } + } + if leaf_state.is_best() { // handle reorg. { @@ -427,7 +436,7 @@ pub(crate) mod tests { ) -> Hash { let header = prepare_header(parent, number, extrinsics_root); let hash = header.hash(); - db.import_header(header, authorities, NewBlockState::Best).unwrap(); + db.import_header(header, authorities, NewBlockState::Best, Vec::new()).unwrap(); hash } @@ -439,7 +448,7 @@ pub(crate) mod tests { ) -> Hash { let header = prepare_header(parent, number, Default::default()); let hash = header.hash(); - db.import_header(header, authorities, NewBlockState::Best).unwrap(); + db.import_header(header, authorities, NewBlockState::Best, Vec::new()).unwrap(); hash } @@ -451,7 +460,7 @@ pub(crate) mod tests { ) -> Hash { let header = prepare_header(parent, number, Default::default()); let hash = header.hash(); - db.import_header(header, authorities, NewBlockState::Final).unwrap(); + db.import_header(header, authorities, NewBlockState::Final, Vec::new()).unwrap(); hash } @@ -463,7 +472,7 @@ pub(crate) mod tests { ) -> Hash { let header = prepare_header(parent, number, Default::default()); let hash = header.hash(); - db.import_header(header, authorities, NewBlockState::Normal).unwrap(); + db.import_header(header, authorities, NewBlockState::Normal, Vec::new()).unwrap(); hash } -- GitLab From aea36fce699cd3c3a14d0e9436b8d3eddf86755c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 17 Oct 2018 13:34:59 -0700 Subject: [PATCH 025/243] client sets aux in import pipeline --- core/client/src/client.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/client/src/client.rs b/core/client/src/client.rs index a82b2133f0..eb9bbd6645 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -503,6 +503,7 @@ impl Client where body: Option>, authorities: Option>, finalized: bool, + aux: Vec<(Vec, Option>)>, ) -> error::Result { let parent_hash = import_headers.post().parent_hash().clone(); match self.backend.blockchain().status(BlockId::Hash(hash))? { @@ -593,6 +594,8 @@ impl Client where if let Some(Some(changes_update)) = changes_update { transaction.update_changes_trie(changes_update)?; } + + transaction.set_aux(aux)?; self.backend.commit_operation(transaction)?; if make_notifications { @@ -916,7 +919,7 @@ impl consensus::BlockImport for Client where post_runtime_digests, body, finalized, - .. + auxiliary, } = import_block; let parent_hash = header.parent_hash().clone(); @@ -948,6 +951,7 @@ impl consensus::BlockImport for Client where body, new_authorities, finalized, + auxiliary, ); *self.importing_block.write() = None; -- GitLab From c552349b31c1e108c2abf102b419276735994b4c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 1 Nov 2018 20:15:51 +0100 Subject: [PATCH 026/243] finish GRANDPA test: dynamic authority sets --- Cargo.lock | 1 + core/finality-grandpa/Cargo.toml | 1 + core/finality-grandpa/src/authorities.rs | 1 + core/finality-grandpa/src/lib.rs | 48 ++++++-- core/finality-grandpa/src/tests.rs | 146 +++++++++++++---------- 5 files changed, 126 insertions(+), 71 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b14022ea3a..1c3bd04108 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3033,6 +3033,7 @@ dependencies = [ name = "substrate-finality-grandpa" version = "0.1.0" dependencies = [ + "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "finality-grandpa 0.3.0", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index fa30e427f8..f570f4c4d8 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -25,3 +25,4 @@ features = ["derive-codec"] substrate-network = { path = "../network", features = ["test-helpers"] } substrate-keyring = { path = "../keyring" } substrate-test-client = { path = "../test-client"} +env_logger = "0.5" diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index 8541a64123..79674acefa 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -120,6 +120,7 @@ impl AuthoritySet } /// Inspect pending changes. + #[cfg(test)] pub(crate) fn pending_changes(&self) -> &[PendingChange] { &self.pending_changes } diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index d12b35ea1f..ee493d67e5 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -41,6 +41,9 @@ extern crate substrate_keyring as keyring; #[cfg(test)] extern crate substrate_test_client as test_client; +#[cfg(test)] +extern crate env_logger; + #[macro_use] extern crate parity_codec_derive; @@ -100,6 +103,14 @@ pub struct Config { pub gossip_duration: Duration, /// The local signing key. pub local_key: Option>, + /// Some local identifier of the voter. + pub name: Option, +} + +impl Config { + fn name(&self) -> &str { + self.name.as_ref().map(|s| s.as_str()).unwrap_or("") + } } /// Errors that can occur while voting in GRANDPA. @@ -133,13 +144,13 @@ pub trait Network: Clone { /// Get a stream of messages for a specific round. This stream should /// never logically conclude. - fn messages_for(&self, round: u64) -> Self::In; + fn messages_for(&self, round: u64, set_id: u64) -> Self::In; /// Send a message at a specific round out. - fn send_message(&self, round: u64, message: Vec); + fn send_message(&self, round: u64, set_id: u64, message: Vec); /// Clean up messages for a round. - fn drop_messages(&self, round: u64); + fn drop_messages(&self, round: u64, set_id: u64); } /// Something which can determine if a block is known. @@ -297,6 +308,7 @@ impl, I> Stream for UntilImported { round: u64, + set_id: u64, inner: I, network: N, } @@ -320,7 +332,7 @@ impl Sink for ClearOnDrop { impl Drop for ClearOnDrop { fn drop(&mut self) { - self.network.drop_messages(self.round); + self.network.drop_messages(self.round, self.set_id); } } @@ -406,7 +418,7 @@ fn outgoing_messages( }; // forward to network. - network.send_message(round, signed.encode()); + network.send_message(round, set_id, signed.encode()); Some(signed) } else { None @@ -473,6 +485,8 @@ impl grandpa::Chain> for E // once blocks are finalized that make that transition irrelevant or activate it, // we will proceed onwards. most of the time there will be no pending transition. let limit = self.authority_set.current_limit(); + trace!(target: "afg", "Finding best chain containing block {:?} with number limit {:?}", block, limit); + match self.inner.best_containing(block, limit) { Ok(Some(hash)) => { let header = self.inner.header(&BlockId::Hash(hash)).ok()? @@ -564,7 +578,7 @@ impl voter::Environment> f let incoming = checked_message_stream::( round, self.set_id, - self.network.messages_for(round), + self.network.messages_for(round, self.set_id), self.voters.clone(), ); @@ -585,11 +599,12 @@ impl voter::Environment> f ); // join incoming network messages with locally originating ones. - let incoming = Box::new(incoming.select(out_rx).map_err(Into::into)); + let incoming = Box::new(out_rx.select(incoming).map_err(Into::into)); // schedule network message cleanup when sink drops. let outgoing = Box::new(ClearOnDrop { round, + set_id: self.set_id, network: self.network.clone(), inner: outgoing.sink_map_err(Into::into), }); @@ -604,6 +619,15 @@ impl voter::Environment> f } fn completed(&self, round: u64, state: RoundState>) -> Result<(), Self::Error> { + debug!( + target: "afg", "Voter {} completed round {} in set {}. Estimate = {:?}, Finalized in round = {:?}", + self.config.name(), + round, + self.set_id, + state.estimate.as_ref().map(|e| e.1), + state.finalized.as_ref().map(|e| e.1), + ); + let encoded_state = (round, state).encode(); if let Err(e) = self.inner.backend() .insert_aux(&[(LAST_COMPLETED_KEY, &encoded_state[..])], &[]) @@ -669,6 +693,12 @@ impl voter::Environment> f if let Some((canon_hash, canon_number)) = status.new_set_block { // the authority set has changed. let (new_id, set_ref) = authority_set.current(); + + if set_ref.len() > 16 { + info!("Applying GRANDPA set change to new set with {} authorities", set_ref.len()); + } else { + info!("Applying GRANDPA set change to new set {:?}", set_ref); + } Err(ExitOrError::AuthoritiesChanged(NewAuthoritySet { canon_hash, canon_number, @@ -772,7 +802,7 @@ impl BlockImport for GrandpaBlockImport( let work = future::loop_fn((initial_environment, last_round_number, last_state), move |params| { let (env, last_round_number, last_state) = params; + debug!(target: "afg", "{}: Starting new voter with set ID {}", config.name(), env.set_id); + let chain_info = match client.info() { Ok(i) => i, Err(e) => return future::Either::B(future::err(Error::Client(e))), diff --git a/core/finality-grandpa/src/tests.rs b/core/finality-grandpa/src/tests.rs index 252fbcf830..1a47a8fa8b 100644 --- a/core/finality-grandpa/src/tests.rs +++ b/core/finality-grandpa/src/tests.rs @@ -27,6 +27,7 @@ use client::BlockchainEvents; use test_client::{self, runtime::BlockNumber}; use codec::Decode; use consensus_common::BlockOrigin; +use std::collections::HashSet; use authorities::AuthoritySet; @@ -69,6 +70,13 @@ impl TestNetFactory for GrandpaTestNet { } } + fn default_config() -> ProtocolConfig { + // the authority role ensures gossip hits all nodes here. + ProtocolConfig { + roles: ::network::Roles::AUTHORITY, + } + } + fn make_verifier(&self, _client: Arc, _cfg: &ProtocolConfig) -> Arc { @@ -118,21 +126,25 @@ impl MessageRouting { } } -fn round_to_topic(round: u64) -> Hash { +fn make_topic(round: u64, set_id: u64) -> Hash { let mut hash = Hash::default(); round.using_encoded(|s| { let raw = hash.as_mut(); raw[..8].copy_from_slice(s); }); + set_id.using_encoded(|s| { + let raw = hash.as_mut(); + raw[8..16].copy_from_slice(s); + }); hash } impl Network for MessageRouting { type In = Box,Error=()>>; - fn messages_for(&self, round: u64) -> Self::In { + fn messages_for(&self, round: u64, set_id: u64) -> Self::In { let messages = self.inner.lock().peer(self.peer_id) - .with_spec(|spec, _| spec.gossip.messages_for(round_to_topic(round))); + .with_spec(|spec, _| spec.gossip.messages_for(make_topic(round, set_id))); let messages = messages.map_err( move |_| panic!("Messages for round {} dropped too early", round) @@ -141,14 +153,14 @@ impl Network for MessageRouting { Box::new(messages) } - fn send_message(&self, round: u64, message: Vec) { + fn send_message(&self, round: u64, set_id: u64, message: Vec) { let mut inner = self.inner.lock(); - inner.peer(self.peer_id).gossip_message(round_to_topic(round), message); - inner.route(); + inner.peer(self.peer_id).gossip_message(make_topic(round, set_id), message); + inner.route_until_complete(); } - fn drop_messages(&self, round: u64) { - let topic = round_to_topic(round); + fn drop_messages(&self, round: u64, set_id: u64) { + let topic = make_topic(round, set_id); self.inner.lock().peer(self.peer_id) .with_spec(|spec, _| spec.gossip.collect_garbage(|t| t == &topic)); } @@ -179,12 +191,7 @@ impl ApiClient for TestApi { { // we take only scheduled changes at given block number where there are no // extrinsics. - let change = self.scheduled_changes.lock().get(&header.hash()).map(|c| c.clone()); - if change.is_some() { - println!("Found transition for {:?}", header.hash()); - } - - Ok(change) + Ok(self.scheduled_changes.lock().get(&header.hash()).map(|c| c.clone())) } } @@ -236,6 +243,7 @@ fn finalize_3_voters_no_observers() { Config { gossip_duration: TEST_GOSSIP_DURATION, local_key: Some(Arc::new(key.clone().into())), + name: Some(format!("peer#{}", peer_id)), }, link, MessageRouting::new(net.clone(), peer_id), @@ -293,6 +301,7 @@ fn finalize_3_voters_1_observer() { Config { gossip_duration: TEST_GOSSIP_DURATION, local_key, + name: Some(format!("peer#{}", peer_id)), }, link, MessageRouting::new(net.clone(), peer_id), @@ -344,14 +353,13 @@ fn transition_3_voters_twice_1_observer() { transitions.lock().insert(hash, change); }; - let mut net = GrandpaTestNet::new(api, 8); + let mut net = GrandpaTestNet::new(api, 9); // first 20 blocks: transition at 15, applied at 20. { net.peer(0).push_blocks(14, false); net.peer(0).generate_blocks(1, BlockOrigin::File, |builder| { let block = builder.bake().unwrap(); - println!("Adding transition for {:?}", block.header.hash()); add_transition(block.header.hash(), ScheduledChange { next_authorities: make_ids(peers_b), delay: 4, @@ -367,7 +375,6 @@ fn transition_3_voters_twice_1_observer() { { net.peer(0).generate_blocks(1, BlockOrigin::File, |builder| { let block = builder.bake().unwrap(); - println!("Adding transition for {:?}", block.header.hash()); add_transition(block.header.hash(), ScheduledChange { next_authorities: make_ids(peers_c), delay: 0, @@ -391,50 +398,63 @@ fn transition_3_voters_twice_1_observer() { assert_eq!(set.pending_changes().len(), 2); } - // let net = Arc::new(Mutex::new(net)); - // let mut finality_notifications = Vec::new(); - - // let mut runtime = current_thread::Runtime::new().unwrap(); - // let all_peers = peers.iter() - // .cloned() - // .map(|key| Some(Arc::new(key.into()))) - // .chain(::std::iter::once(None)); - - // for (peer_id, local_key) in all_peers.enumerate() { - // let (client, link) = { - // let mut net = net.lock(); - // let link = net.peers[peer_id].data.lock().take().expect("link initialized at startup; qed"); - // ( - // net.peers[peer_id].client().clone(), - // link, - // ) - // }; - // finality_notifications.push( - // client.finality_notification_stream() - // .take_while(|n| Ok(n.header.number() < &20)) - // .for_each(move |_| Ok(())) - // ); - // let voter = run_grandpa( - // Config { - // gossip_duration: TEST_GOSSIP_DURATION, - // local_key, - // }, - // link, - // MessageRouting::new(net.clone(), peer_id), - // ).expect("all in order with client and network"); - - // runtime.spawn(voter); - // } - - // // wait for all finalized on each. - // let wait_for = ::futures::future::join_all(finality_notifications) - // .map(|_| ()) - // .map_err(|_| ()); - - // let drive_to_completion = ::tokio::timer::Interval::new_interval(TEST_ROUTING_INTERVAL) - // .for_each(move |_| { net.lock().route_until_complete(); Ok(()) }) - // .map(|_| ()) - // .map_err(|_| ()); - - // runtime.block_on(wait_for.select(drive_to_completion).map_err(|_| ())).unwrap(); + let net = Arc::new(Mutex::new(net)); + let mut finality_notifications = Vec::new(); + + let mut runtime = current_thread::Runtime::new().unwrap(); + let all_peers = peers_a.iter() + .chain(peers_b) + .chain(peers_c) + .chain(observer) + .cloned() + .collect::>() // deduplicate + .into_iter() + .map(|key| Some(Arc::new(key.into()))) + .enumerate(); + + for (peer_id, local_key) in all_peers { + let (client, link) = { + let mut net = net.lock(); + let link = net.peers[peer_id].data.lock().take().expect("link initialized at startup; qed"); + ( + net.peers[peer_id].client().clone(), + link, + ) + }; + finality_notifications.push( + client.finality_notification_stream() + .take_while(|n| Ok(n.header.number() < &30)) + .for_each(move |_| Ok(())) + .map(move |()| { + let set_raw = client.backend().get_aux(::AUTHORITY_SET_KEY).unwrap().unwrap(); + let set = AuthoritySet::::decode(&mut &set_raw[..]).unwrap(); + + assert_eq!(set.current(), (2, make_ids(peers_c).as_slice())); + assert!(set.pending_changes().is_empty()); + }) + ); + let voter = run_grandpa( + Config { + gossip_duration: TEST_GOSSIP_DURATION, + local_key, + name: Some(format!("peer#{}", peer_id)), + }, + link, + MessageRouting::new(net.clone(), peer_id), + ).expect("all in order with client and network"); + + runtime.spawn(voter); + } + + // wait for all finalized on each. + let wait_for = ::futures::future::join_all(finality_notifications) + .map(|_| ()) + .map_err(|_| ()); + + let drive_to_completion = ::tokio::timer::Interval::new_interval(TEST_ROUTING_INTERVAL) + .for_each(move |_| { net.lock().route_until_complete(); Ok(()) }) + .map(|_| ()) + .map_err(|_| ()); + + runtime.block_on(wait_for.select(drive_to_completion).map_err(|_| ())).unwrap(); } -- GitLab From a6acdc6bcd84e589e8047333bb348a54a0ae9a4a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 1 Nov 2018 20:25:59 +0100 Subject: [PATCH 027/243] use published finality-grandpa --- Cargo.lock | 4 +++- core/finality-grandpa/Cargo.toml | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1c3bd04108..d2db5f91f6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -581,6 +581,7 @@ dependencies = [ [[package]] name = "finality-grandpa" version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3034,7 +3035,7 @@ name = "substrate-finality-grandpa" version = "0.1.0" dependencies = [ "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "finality-grandpa 0.3.0", + "finality-grandpa 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4202,6 +4203,7 @@ dependencies = [ "checksum failure_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "946d0e98a50d9831f5d589038d2ca7f8f455b1c21028c0db0e84116a12696426" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" +"checksum finality-grandpa 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "be6d2735e8f570474c7925a60ebe04ec0bdd9eea7cc4fddab78a0ecfdefec20e" "checksum fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d5ec8112f00ea8a483e04748a85522184418fd1cf02890b626d8fc28683f7de" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index f570f4c4d8..a4b20e5177 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -17,8 +17,7 @@ tokio = "0.1.7" substrate-fg-primitives = { path = "primitives" } [dependencies.finality-grandpa] -#version = "0.3.0" -path = "../../../finality-afg" +version = "0.3.0" features = ["derive-codec"] [dev-dependencies] -- GitLab From 427dd546bbd2926fad90ae3449a0077426f58331 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 2 Nov 2018 18:17:57 +0100 Subject: [PATCH 028/243] all tests compile --- core/consensus/aura/src/lib.rs | 8 ++++---- core/network/src/import_queue.rs | 4 +--- core/network/src/test/sync.rs | 2 +- core/service/src/chain_ops.rs | 10 +++------- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index cb4a24de3e..c57161668d 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -404,11 +404,11 @@ pub type AuraImportQueue = BasicQueue>; /// Start an import queue for the Aura consensus algorithm. pub fn import_queue(config: Config, client: Arc) -> AuraImportQueue where B: Block, - C: Authorities + BlockImport + Send + Sync, + C: Authorities + BlockImport + Send + Sync, DigestItemFor: CompatibleDigestItem, { - let verifier = Arc::new(AuraVerifier { config, client }); - BasicQueue::new(verifier) + let verifier = Arc::new(AuraVerifier { config, client: client.clone() }); + BasicQueue::new(verifier, client) } @@ -458,7 +458,7 @@ mod tests { const TEST_ROUTING_INTERVAL: Duration = Duration::from_millis(50); pub struct AuraTestNet { - peers: Vec>>>, + peers: Vec, ()>>>, started: bool } diff --git a/core/network/src/import_queue.rs b/core/network/src/import_queue.rs index 96496e33ad..0d760e0d15 100644 --- a/core/network/src/import_queue.rs +++ b/core/network/src/import_queue.rs @@ -652,7 +652,6 @@ pub mod tests { use super::*; struct TestLink { - chain: Arc>, imported: Cell, maintains: Cell, disconnects: Cell, @@ -662,7 +661,6 @@ pub mod tests { impl TestLink { fn new() -> TestLink { TestLink { - chain: Arc::new(test_client::new()), imported: Cell::new(0), maintains: Cell::new(0), disconnects: Cell::new(0), @@ -806,7 +804,7 @@ pub mod tests { #[test] fn async_import_queue_drops() { let verifier = Arc::new(PassThroughVerifier(true)); - let queue = BasicQueue::new(verifier); + let queue = BasicQueue::new(verifier, Arc::new(test_client::new())); queue.start(TestLink::new()).unwrap(); drop(queue); } diff --git a/core/network/src/test/sync.rs b/core/network/src/test/sync.rs index 0f9e407828..c31b1c3d5e 100644 --- a/core/network/src/test/sync.rs +++ b/core/network/src/test/sync.rs @@ -94,7 +94,7 @@ fn own_blocks_are_announced() { ::env_logger::init().ok(); let mut net = TestNet::new(3); net.sync(); // connect'em - net.peer(0).generate_blocks(1, BlockOrigin::Own, |_| ()); + net.peer(0).generate_blocks(1, BlockOrigin::Own, |builder| builder.bake().unwrap()); net.sync(); assert_eq!(net.peer(0).client.backend().blockchain().info().unwrap().best_number, 1); assert_eq!(net.peer(1).client.backend().blockchain().info().unwrap().best_number, 1); diff --git a/core/service/src/chain_ops.rs b/core/service/src/chain_ops.rs index d23e82b1cf..f9b7790863 100644 --- a/core/service/src/chain_ops.rs +++ b/core/service/src/chain_ops.rs @@ -88,16 +88,12 @@ pub fn export_blocks(config: FactoryFullConfiguration, exit: E, mut pub fn import_blocks(config: FactoryFullConfiguration, exit: E, mut input: R) -> error::Result<()> where F: ServiceFactory, E: Future + Send + 'static, R: Read, { - use network::ClientHandle; - - struct DummyLink(::std::sync::Arc); - impl> Link for DummyLink { - fn chain(&self) -> &ClientHandle { &*self.0 } - } + struct DummyLink; + impl Link for DummyLink { } let client = new_client::(&config)?; let queue = components::FullComponents::::build_import_queue(&config, client.clone())?; - queue.start(DummyLink(client.clone()))?; + queue.start(DummyLink)?; let (exit_send, exit_recv) = std::sync::mpsc::channel(); ::std::thread::spawn(move || { -- GitLab From 13a4d9a1c6908085191f71f0bbf4cbf1499cf254 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 3 Nov 2018 16:45:18 +0100 Subject: [PATCH 029/243] API id module --- core/finality-grandpa/primitives/src/lib.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/finality-grandpa/primitives/src/lib.rs b/core/finality-grandpa/primitives/src/lib.rs index 649d424e6b..21fd9c6e3b 100644 --- a/core/finality-grandpa/primitives/src/lib.rs +++ b/core/finality-grandpa/primitives/src/lib.rs @@ -46,6 +46,14 @@ pub const PENDING_CHANGE_CALL: &str = "grandpa_pending_change"; /// WASM function call to get current GRANDPA authorities. pub const AUTHORITIES_CALL: &str = "grandpa_authorities"; +/// The ApiIds for GRANDPA API. +pub mod id { + use sr_api::ApiId; + + /// ApiId for the GrandpaApi trait. + pub const GRANDPA_API: ApiId = *b"fgrandpa"; +} + decl_apis! { /// APIs for integrating the GRANDPA finality gadget into runtimes. /// @@ -55,7 +63,7 @@ decl_apis! { /// applied in the runtime after those N blocks have passed. /// /// The consensus protocol will coordinate the handoff externally. - pub trait Api { + pub trait GrandpaApi { /// Check a digest for pending changes. /// Return `None` if there are no pending changes. /// -- GitLab From 437f0b86a3a7fb60719d704a031344c91ac61fe2 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 3 Nov 2018 16:47:38 +0100 Subject: [PATCH 030/243] ignore test temporarily --- core/network/src/test/sync.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/core/network/src/test/sync.rs b/core/network/src/test/sync.rs index c31b1c3d5e..6b1af9a6af 100644 --- a/core/network/src/test/sync.rs +++ b/core/network/src/test/sync.rs @@ -90,6 +90,7 @@ fn sync_after_fork_works() { } #[test] +#[ignore] // reinstate when import queue handlers dispatch announce messages. fn own_blocks_are_announced() { ::env_logger::init().ok(); let mut net = TestNet::new(3); -- GitLab From 1522b5cb9b9a4fc63ad0ad92cde5eef768916656 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 3 Nov 2018 17:08:47 +0100 Subject: [PATCH 031/243] fix test --- core/network/src/test/mod.rs | 5 +++++ core/network/src/test/sync.rs | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index f8869fcc81..d3975e032b 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -194,6 +194,11 @@ impl, D> Peer { io.to_disconnect.clone() } + fn with_io<'a, F, U>(&'a self, f: F) -> U where F: FnOnce(&mut TestIo<'a>) -> U { + let mut io = TestIo::new(&self.queue, None); + f(&mut io) + } + /// Produce the next pending message to send to another peer. fn pending_message(&self) -> Option { self.flush(); diff --git a/core/network/src/test/sync.rs b/core/network/src/test/sync.rs index 6b1af9a6af..4d714eb828 100644 --- a/core/network/src/test/sync.rs +++ b/core/network/src/test/sync.rs @@ -90,12 +90,14 @@ fn sync_after_fork_works() { } #[test] -#[ignore] // reinstate when import queue handlers dispatch announce messages. fn own_blocks_are_announced() { ::env_logger::init().ok(); let mut net = TestNet::new(3); net.sync(); // connect'em net.peer(0).generate_blocks(1, BlockOrigin::Own, |builder| builder.bake().unwrap()); + + let header = net.peer(0).client().header(&BlockId::Number(1)).unwrap().unwrap(); + net.peer(0).with_io(|io| net.peer(0).sync.on_block_imported(io, header.hash(), &header)); net.sync(); assert_eq!(net.peer(0).client.backend().blockchain().info().unwrap().best_number, 1); assert_eq!(net.peer(1).client.backend().blockchain().info().unwrap().best_number, 1); -- GitLab From d436cf8097c1b787355586c1b23ddb288699d372 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 5 Nov 2018 10:47:34 +0100 Subject: [PATCH 032/243] re-export ApiId from sr-api --- core/sr-api/src/lib.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/sr-api/src/lib.rs b/core/sr-api/src/lib.rs index 7fffc43590..ed148c0030 100644 --- a/core/sr-api/src/lib.rs +++ b/core/sr-api/src/lib.rs @@ -25,16 +25,18 @@ extern crate sr_primitives as primitives; #[doc(hidden)] pub extern crate parity_codec as codec; extern crate sr_version as runtime_version; +use rstd::vec::Vec; #[doc(hidden)] pub use primitives::{traits::Block as BlockT, generic::BlockId, transaction_validity::TransactionValidity, ApplyResult}; -use runtime_version::{ApiId, RuntimeVersion}; -use rstd::vec::Vec; #[doc(hidden)] pub use rstd::slice; #[doc(hidden)] pub use codec::{Encode, Decode}; +// these are part of the public API, so need to be re-exported +pub use runtime_version::{ApiId, RuntimeVersion}; + /// Declare the given API traits. /// /// # Example: @@ -432,7 +434,7 @@ macro_rules! decl_apis { /// The ApiIds for the various standard runtime APIs. pub mod id { use super::ApiId; - + /// ApiId for the BlockBuilder trait. pub const BLOCK_BUILDER: ApiId = *b"blkbuild"; -- GitLab From f26699a59ed9e9e163c94224fa401d67c2069eab Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 5 Nov 2018 11:27:01 +0100 Subject: [PATCH 033/243] add some docs --- core/finality-grandpa/src/lib.rs | 34 +++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index cc3d6b0349..0ea5d782b0 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -16,7 +16,39 @@ //! Integration of the GRANDPA finality gadget into substrate. //! -//! This is a long-running future that produces finality notifications. +//! This crate provides a long-running future that produces finality notifications. +//! +//! # Usage +//! +//! First, create a block-import wrapper with the `block_import` function. +//! The GRANDPA worker needs to be linked together with this block import object, +//! so a `LinkHalf` is returned as well. All blocks imported (from network or consensus or otherwise) +//! must pass through this wrapper, otherwise consensus is likely to break in +//! unexpected ways. +//! +//! Next, use the `LinkHalf` and a local configuration to `run_grandpa`. This requires a +//! `Network` implementation. The returned future should be driven to completion and +//! will finalize blocks in the background. +//! +//! # Changing authority sets +//! +//! The rough idea behind changing authority sets in GRANDPA is that at some point, +//! we obtain agreement for some maximum block height that the current set can +//! finalize, and once a block with that height is finalized the next set will +//! pick up finalization from there. +//! +//! Technically speaking, this would be implemented as a voting rule which says, +//! "if there is a signal for a change in N blocks in block B, only vote on +//! chains with length NUM(B) + N if they contain B". This conditional-inclusion +//! logic is complex to compute because it requires looking arbitrarily far +//! back in the chain. +//! +//! Instead, we keep track of a list of all signals we've seen so far, +//! sorted ascending by the block number they would be applied at. We never vote +//! on chains with number higher than the earliest handoff block number +//! (this is num(signal) + N). When finalizing a block, we either apply or prune +//! any signaled changes based on whether the signaling block is included in the +//! newly-finalized chain. extern crate finality_grandpa as grandpa; extern crate futures; -- GitLab From 0eacc2de88f4a10bf6cd6f259c17a77a7bf4add1 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Mon, 12 Nov 2018 17:54:57 +0100 Subject: [PATCH 034/243] Some minor TODOs removal (#1102) * Only reconnect if topology changed * Minor changes --- core/network-libp2p/src/custom_proto.rs | 1 - core/network-libp2p/src/lib.rs | 6 +++--- core/network-libp2p/src/service_task.rs | 13 ++++++++++--- core/network-libp2p/src/topology.rs | 24 ++++++++++++++++++++---- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/core/network-libp2p/src/custom_proto.rs b/core/network-libp2p/src/custom_proto.rs index 863e2d68b3..fd76581d3e 100644 --- a/core/network-libp2p/src/custom_proto.rs +++ b/core/network-libp2p/src/custom_proto.rs @@ -115,7 +115,6 @@ impl RegisteredProtocolSubstream { self.send_queue.push_back(data); // If the length of the queue goes over a certain arbitrary threshold, we print a warning. - // TODO: figure out a good threshold if self.send_queue.len() >= 2048 { warn!(target: "sub-libp2p", "Queue of packets to send over substream is pretty \ large: {}", self.send_queue.len()); diff --git a/core/network-libp2p/src/lib.rs b/core/network-libp2p/src/lib.rs index 9d53b01b01..4852f65d84 100644 --- a/core/network-libp2p/src/lib.rs +++ b/core/network-libp2p/src/lib.rs @@ -18,8 +18,7 @@ //! TODO: Missing doc // end::description[] -#![recursion_limit="128"] -#![type_length_limit = "268435456"] +#![recursion_limit = "128"] extern crate parking_lot; extern crate fnv; @@ -58,7 +57,8 @@ pub use custom_proto::RegisteredProtocol; pub use error::{Error, ErrorKind, DisconnectReason}; pub use libp2p::{Multiaddr, multiaddr::Protocol, PeerId}; pub use service_task::{start_service, Service, ServiceEvent}; -pub use traits::*; // TODO: expand to actual items +pub use traits::{NetworkConfiguration, NodeIndex, NodeId, NonReservedPeerMode}; +pub use traits::{ProtocolId, Secret, Severity}; /// Check if node url is valid pub fn validate_node_url(url: &str) -> Result<(), Error> { diff --git a/core/network-libp2p/src/service_task.rs b/core/network-libp2p/src/service_task.rs index e370a68c38..f40170b00c 100644 --- a/core/network-libp2p/src/service_task.rs +++ b/core/network-libp2p/src/service_task.rs @@ -567,6 +567,8 @@ impl Service { /// Adds a list of peers to the network topology. fn add_discovered_peers(&mut self, list: impl IntoIterator) { + let mut topology_has_changed = false; + for peer in list { let connected = match peer.connection_ty { KadConnectionType::NotConnected => false, @@ -575,15 +577,20 @@ impl Service { KadConnectionType::CannotConnect => continue, }; - self.topology.add_kademlia_discovered_addrs( + let changed = self.topology.add_kademlia_discovered_addrs( &peer.node_id, peer.multiaddrs.iter().map(|a| (a.clone(), connected)) ); + + if changed { + topology_has_changed = true; + } } // Potentially connect to the newly-discovered nodes. - // TODO: only do so if the topology reports that something new has been added - self.connect_to_nodes(); + if topology_has_changed { + self.connect_to_nodes(); + } } /// Handles the swarm opening a connection to the given peer. diff --git a/core/network-libp2p/src/topology.rs b/core/network-libp2p/src/topology.rs index ad92448c6a..061a3d1795 100644 --- a/core/network-libp2p/src/topology.rs +++ b/core/network-libp2p/src/topology.rs @@ -245,12 +245,16 @@ impl NetTopology { /// Adds addresses that a node says it is listening on. /// /// The addresses are most likely to be valid. + /// + /// Returns `true` if the topology has changed in some way. Returns `false` if calling this + /// method was a no-op. #[inline] pub fn add_self_reported_listen_addrs( &mut self, peer_id: &PeerId, addrs: I, - ) where I: Iterator { + ) -> bool + where I: Iterator { self.add_discovered_addrs(peer_id, addrs.map(|a| (a, true))) } @@ -260,21 +264,28 @@ impl NetTopology { /// /// For each address, incorporates a boolean. If true, that means we have some sort of hint /// that this address can be reached. + /// + /// Returns `true` if the topology has changed in some way. Returns `false` if calling this + /// method was a no-op. #[inline] pub fn add_kademlia_discovered_addrs( &mut self, peer_id: &PeerId, addrs: I, - ) where I: Iterator { + ) -> bool + where I: Iterator { self.add_discovered_addrs(peer_id, addrs) } - /// Inner implementaiton of the `add_*_discovered_addrs`. + /// Inner implementaiton of the `add_*_discovered_addrs` methods. + /// Returns `true` if the topology has changed in some way. Returns `false` if calling this + /// method was a no-op. fn add_discovered_addrs( &mut self, peer_id: &PeerId, addrs: I, - ) where I: Iterator { + ) -> bool + where I: Iterator { let mut addrs: Vec<_> = addrs.collect(); let now_systime = SystemTime::now(); let now = Instant::now(); @@ -291,6 +302,8 @@ impl NetTopology { true }); + let mut anything_changed = false; + if !addrs.is_empty() { trace!( target: "sub-libp2p", @@ -317,6 +330,7 @@ impl NetTopology { } } + anything_changed = true; peer.addrs.push(Addr { addr, expires: now_systime + KADEMLIA_DISCOVERY_EXPIRATION, @@ -329,6 +343,8 @@ impl NetTopology { }), }); } + + anything_changed } /// Indicates the peer store that we're connected to this given address. -- GitLab From d45de4b37d0ff139056af2aa1e67e25b72b32369 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Mon, 12 Nov 2018 18:40:18 +0100 Subject: [PATCH 035/243] Remove unneeded Serde requirements (#1076) * Remove superfluous serde requirements. * Try to ensure hash is serde * Fixups * Building again * Attempt to reenable Block (doesn't build) * Fixes compilation for node cli * Fixes test compilation * Fix wasm * Fix tests * Remove unneeded changes * Fix up comments * Reenable some code * Compile error when origin misused. * Remove unnecessary includes of `serde_derive` * Cleanups --- Cargo.lock | 14 ----- core/client/src/client.rs | 6 +- core/rpc-servers/src/lib.rs | 10 +-- core/rpc/src/author/mod.rs | 24 +++---- core/rpc/src/author/tests.rs | 10 +-- core/rpc/src/chain/mod.rs | 8 +-- core/service/src/chain_ops.rs | 12 ++-- core/service/src/lib.rs | 7 +-- core/sr-api/src/lib.rs | 6 -- core/sr-primitives/src/generic/block.rs | 42 ++++++++++--- .../src/generic/checked_extrinsic.rs | 4 +- core/sr-primitives/src/generic/digest.rs | 7 ++- core/sr-primitives/src/generic/header.rs | 44 +++---------- core/sr-primitives/src/generic/tests.rs | 52 +-------------- .../src/generic/unchecked_extrinsic.rs | 11 +++- .../src/generic/unchecked_mortal_extrinsic.rs | 12 +++- core/sr-primitives/src/testing.rs | 40 +++++++++--- core/sr-primitives/src/traits.rs | 59 ++++++++++++------ core/test-runtime/src/lib.rs | 4 -- .../substrate_test_runtime.compact.wasm | Bin 44927 -> 44860 bytes core/transaction-pool/graph/src/base_pool.rs | 5 +- core/transaction-pool/graph/src/lib.rs | 1 + core/transaction-pool/graph/src/listener.rs | 3 +- core/transaction-pool/graph/src/pool.rs | 5 +- core/transaction-pool/graph/src/ready.rs | 3 +- node/runtime/src/lib.rs | 2 +- node/runtime/wasm/Cargo.lock | 12 ---- .../release/node_runtime.compact.wasm | Bin 624812 -> 624437 bytes srml/assets/Cargo.toml | 2 - srml/assets/src/lib.rs | 7 --- srml/balances/Cargo.toml | 2 - srml/balances/src/address.rs | 4 +- srml/balances/src/lib.rs | 4 -- srml/balances/src/mock.rs | 1 + srml/consensus/Cargo.toml | 2 - srml/consensus/src/lib.rs | 4 -- srml/contract/Cargo.toml | 2 - srml/contract/src/lib.rs | 4 -- srml/council/Cargo.toml | 2 - srml/council/src/lib.rs | 4 -- srml/council/src/motions.rs | 7 +-- srml/democracy/Cargo.toml | 2 - srml/democracy/src/lib.rs | 8 +-- srml/example/Cargo.toml | 2 - srml/example/src/lib.rs | 7 --- srml/executive/Cargo.toml | 2 - srml/executive/src/lib.rs | 6 +- srml/session/Cargo.toml | 2 - srml/session/src/lib.rs | 4 -- srml/staking/Cargo.toml | 2 - srml/staking/src/lib.rs | 7 +-- srml/support/src/dispatch.rs | 55 +++++++++++----- srml/support/src/event.rs | 10 +-- srml/support/src/lib.rs | 5 +- srml/system/Cargo.toml | 2 - srml/system/src/lib.rs | 17 +++-- srml/timestamp/Cargo.toml | 2 - srml/timestamp/src/lib.rs | 4 -- srml/treasury/Cargo.toml | 2 - srml/treasury/src/lib.rs | 4 -- srml/upgrade-key/Cargo.toml | 2 - srml/upgrade-key/src/lib.rs | 3 - 62 files changed, 253 insertions(+), 343 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eabd0d765f..c17744a472 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2653,7 +2653,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2671,7 +2670,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2689,7 +2687,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2708,7 +2705,6 @@ dependencies = [ "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-sandbox 0.1.0", @@ -2729,7 +2725,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2749,7 +2744,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2767,7 +2761,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2785,7 +2778,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2804,7 +2796,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2824,7 +2815,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2864,7 +2854,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2880,7 +2869,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2898,7 +2886,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -2916,7 +2903,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 4645a56a2f..1279bc486a 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -23,7 +23,7 @@ use parking_lot::{Mutex, RwLock}; use primitives::AuthorityId; use runtime_primitives::{ Justification, - generic::{BlockId, SignedBlock, Block as RuntimeBlock}, + generic::{BlockId, SignedBlock}, transaction_validity::{TransactionValidity, TransactionTag}, }; use consensus::{ImportBlock, ImportResult, BlockOrigin}; @@ -775,11 +775,11 @@ impl Client where /// Get full block by id. pub fn block(&self, id: &BlockId) - -> error::Result>> + -> error::Result>> { Ok(match (self.header(id)?, self.body(id)?, self.justification(id)?) { (Some(header), Some(extrinsics), Some(justification)) => - Some(SignedBlock { block: RuntimeBlock { header, extrinsics }, justification }), + Some(SignedBlock { block: Block::new(header, extrinsics), justification }), _ => None, }) } diff --git a/core/rpc-servers/src/lib.rs b/core/rpc-servers/src/lib.rs index 47934f805a..faa6f2bf41 100644 --- a/core/rpc-servers/src/lib.rs +++ b/core/rpc-servers/src/lib.rs @@ -32,7 +32,7 @@ extern crate sr_primitives; extern crate log; use std::io; -use sr_primitives::traits::{Block as BlockT, NumberFor}; +use sr_primitives::{traits::{Block as BlockT, NumberFor}, generic::SignedBlock}; type Metadata = apis::metadata::Metadata; type RpcHandler = pubsub::PubSubHandler; @@ -40,7 +40,7 @@ pub type HttpServer = http::Server; pub type WsServer = ws::Server; /// Construct rpc `IoHandler` -pub fn rpc_handler( +pub fn rpc_handler( state: S, chain: C, author: A, @@ -48,10 +48,10 @@ pub fn rpc_handler( ) -> RpcHandler where Block: BlockT + 'static, ExHash: Send + Sync + 'static + sr_primitives::Serialize + sr_primitives::DeserializeOwned, - PendingExtrinsics: serde::Serialize + serde::de::DeserializeOwned + Send + Sync + 'static, + SignedBlock: serde::Serialize + sr_primitives::DeserializeOwned, S: apis::state::StateApi, - C: apis::chain::ChainApi, Block::Extrinsic, Metadata=Metadata>, - A: apis::author::AuthorApi, + C: apis::chain::ChainApi, SignedBlock, Metadata=Metadata>, + A: apis::author::AuthorApi, Y: apis::system::SystemApi, { let mut io = pubsub::PubSubHandler::default(); diff --git a/core/rpc/src/author/mod.rs b/core/rpc/src/author/mod.rs index ff08c4c840..287b51dcc3 100644 --- a/core/rpc/src/author/mod.rs +++ b/core/rpc/src/author/mod.rs @@ -19,13 +19,12 @@ use std::sync::Arc; use client::{self, Client}; -use codec::Decode; +use codec::{Encode, Decode}; use transaction_pool::{ txpool::{ ChainApi as PoolChainApi, BlockHash, ExHash, - ExtrinsicFor, IntoPoolError, Pool, watcher::Status, @@ -47,19 +46,16 @@ use self::error::Result; build_rpc_trait! { /// Substrate authoring RPC API - pub trait AuthorApi { + pub trait AuthorApi { type Metadata; - /// Submit extrinsic for inclusion in block. - #[rpc(name = "author_submitRichExtrinsic")] - fn submit_rich_extrinsic(&self, Extrinsic) -> Result; /// Submit hex-encoded extrinsic for inclusion in block. #[rpc(name = "author_submitExtrinsic")] fn submit_extrinsic(&self, Bytes) -> Result; /// Returns all pending extrinsics, potentially grouped by sender. #[rpc(name = "author_pendingExtrinsics")] - fn pending_extrinsics(&self) -> Result; + fn pending_extrinsics(&self) -> Result>; #[pubsub(name = "author_extrinsicUpdate")] { /// Submit an extrinsic to watch. @@ -103,7 +99,7 @@ impl Author where } } -impl AuthorApi, BlockHash

, ExtrinsicFor

, Vec>> for Author where +impl AuthorApi, BlockHash

> for Author where B: client::backend::Backend<

::Block, Blake2Hasher> + Send + Sync + 'static, E: client::CallExecutor<

::Block, Blake2Hasher> + Send + Sync + 'static, P: PoolChainApi + Sync + Send + 'static, @@ -112,12 +108,8 @@ impl AuthorApi, BlockHash

, ExtrinsicFor

, Vec Result> { - let dxt = Decode::decode(&mut &xt[..]).ok_or(error::Error::from(error::ErrorKind::BadFormat))?; - self.submit_rich_extrinsic(dxt) - } - - fn submit_rich_extrinsic(&self, xt: <

::Block as traits::Block>::Extrinsic) -> Result> { + fn submit_extrinsic(&self, ext: Bytes) -> Result> { + let xt = Decode::decode(&mut &ext[..]).ok_or(error::Error::from(error::ErrorKind::BadFormat))?; let best_block_hash = self.client.info()?.chain.best_hash; self.pool .submit_one(&generic::BlockId::hash(best_block_hash), xt) @@ -127,8 +119,8 @@ impl AuthorApi, BlockHash

, ExtrinsicFor

, Vec Result>> { - Ok(self.pool.ready().map(|tx| tx.data.clone()).collect()) + fn pending_extrinsics(&self) -> Result> { + Ok(self.pool.ready().map(|tx| tx.data.encode().into()).collect()) } fn watch_extrinsic(&self, _metadata: Self::Metadata, subscriber: pubsub::Subscriber, BlockHash

>>, xt: Bytes) { diff --git a/core/rpc/src/author/tests.rs b/core/rpc/src/author/tests.rs index 7032355ef2..82f5d37162 100644 --- a/core/rpc/src/author/tests.rs +++ b/core/rpc/src/author/tests.rs @@ -71,11 +71,11 @@ fn submit_rich_transaction_should_not_cause_error() { let h: H256 = hex!("fccc48291473c53746cd267cf848449edd7711ee6511fba96919d5f9f4859e4f").into(); assert_matches!( - AuthorApi::submit_rich_extrinsic(&p, uxt(Keyring::Alice, 0)), + AuthorApi::submit_extrinsic(&p, uxt(Keyring::Alice, 0).encode().into()), Ok(h2) if h == h2 ); assert!( - AuthorApi::submit_rich_extrinsic(&p, uxt(Keyring::Alice, 0)).is_err() + AuthorApi::submit_extrinsic(&p, uxt(Keyring::Alice, 0).encode().into()).is_err() ); } @@ -108,7 +108,7 @@ fn should_watch_extrinsic() { let signature = Keyring::from_raw_public(tx.from.to_fixed_bytes()).unwrap().sign(&tx.encode()).into(); Extrinsic { transfer: tx, signature } }; - AuthorApi::submit_rich_extrinsic(&p, replacement).unwrap(); + AuthorApi::submit_extrinsic(&p, replacement.encode().into()).unwrap(); let (res, data) = runtime.block_on(data.into_future()).unwrap(); assert_eq!( res, @@ -131,9 +131,9 @@ fn should_return_pending_extrinsics() { subscriptions: Subscriptions::new(runtime.executor()), }; let ex = uxt(Keyring::Alice, 0); - AuthorApi::submit_rich_extrinsic(&p, ex.clone()).unwrap(); + AuthorApi::submit_extrinsic(&p, ex.encode().into()).unwrap(); assert_matches!( p.pending_extrinsics(), - Ok(ref expected) if expected == &vec![ex] + Ok(ref expected) if *expected == vec![Bytes(ex.encode())] ); } diff --git a/core/rpc/src/chain/mod.rs b/core/rpc/src/chain/mod.rs index 8542d2ff4c..62b76ed232 100644 --- a/core/rpc/src/chain/mod.rs +++ b/core/rpc/src/chain/mod.rs @@ -39,7 +39,7 @@ use self::error::Result; build_rpc_trait! { /// Substrate blockchain API - pub trait ChainApi { + pub trait ChainApi { type Metadata; /// Get header of a relay chain block. @@ -48,7 +48,7 @@ build_rpc_trait! { /// Get header and body of a relay chain block. #[rpc(name = "chain_getBlock")] - fn block(&self, Trailing) -> Result>>; + fn block(&self, Trailing) -> Result>; /// Get hash of the n-th block in the canon chain. /// @@ -163,7 +163,7 @@ impl Chain where } } -impl ChainApi, Block::Extrinsic> for Chain where +impl ChainApi, SignedBlock> for Chain where Block: BlockT + 'static, B: client::backend::Backend + Send + Sync + 'static, E: client::CallExecutor + Send + Sync + 'static, @@ -176,7 +176,7 @@ impl ChainApi, Block:: } fn block(&self, hash: Trailing) - -> Result>> + -> Result>> { let hash = self.unwrap_or_best(hash)?; Ok(self.client.block(&BlockId::Hash(hash))?) diff --git a/core/service/src/chain_ops.rs b/core/service/src/chain_ops.rs index e94db8c6f0..221b05dd77 100644 --- a/core/service/src/chain_ops.rs +++ b/core/service/src/chain_ops.rs @@ -18,7 +18,6 @@ use std::{self, io::{Read, Write}}; use futures::Future; -use serde_json; use runtime_primitives::generic::{SignedBlock, BlockId}; use runtime_primitives::traits::{As, Block, Header}; @@ -34,7 +33,10 @@ use chain_spec::ChainSpec; /// Export a range of blocks to a binary stream. pub fn export_blocks(config: FactoryFullConfiguration, exit: E, mut output: W, from: FactoryBlockNumber, to: Option>, json: bool) -> error::Result<()> - where F: ServiceFactory, E: Future + Send + 'static, W: Write, + where + F: ServiceFactory, + E: Future + Send + 'static, + W: Write, { let client = new_client::(&config)?; let mut block = from; @@ -104,14 +106,14 @@ pub fn import_blocks(config: FactoryFullConfiguration, exit: E, mut if exit_recv.try_recv().is_ok() { break; } - if let Some(signed) = SignedBlock::<::Header, ::Extrinsic>::decode(&mut input) { - let header = signed.block.header; + if let Some(signed) = SignedBlock::::decode(&mut input) { + let (header, extrinsics) = signed.block.deconstruct(); let hash = header.hash(); let block = message::BlockData:: { hash: hash, justification: Some(signed.justification), header: Some(header), - body: Some(signed.block.extrinsics), + body: Some(extrinsics), receipt: None, message_queue: None }; diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index 9e7c201e8f..3b817e4ced 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -69,7 +69,7 @@ use parking_lot::{Mutex, RwLock}; use keystore::Store as Keystore; use client::BlockchainEvents; use runtime_primitives::traits::{Header, As}; -use runtime_primitives::generic::BlockId; +use runtime_primitives::generic::{BlockId, SignedBlock}; use exit_future::Signal; #[doc(hidden)] pub use tokio::runtime::TaskExecutor; @@ -124,8 +124,7 @@ impl Service where Components: components::Components, ::Executor: std::clone::Clone, - txpool::ExHash: serde::de::DeserializeOwned + serde::Serialize, - txpool::ExtrinsicFor: serde::de::DeserializeOwned + serde::Serialize, + for<'de> SignedBlock>: ::serde::Deserialize<'de>, { /// Creates a new service. pub fn new( @@ -247,7 +246,7 @@ impl Service let chain = rpc::apis::chain::Chain::new(client.clone(), subscriptions.clone()); let state = rpc::apis::state::State::new(client.clone(), subscriptions.clone()); let author = rpc::apis::author::Author::new(client.clone(), transaction_pool.clone(), subscriptions.clone()); - rpc::rpc_handler::, ComponentExHash, _, _, _, _, _>( + rpc::rpc_handler::, ComponentExHash, _, _, _, _>( state, chain, author, diff --git a/core/sr-api/src/lib.rs b/core/sr-api/src/lib.rs index 7fffc43590..a80420a8d7 100644 --- a/core/sr-api/src/lib.rs +++ b/core/sr-api/src/lib.rs @@ -456,12 +456,6 @@ decl_apis! { fn metadata() -> Data; } - /// The `OldTxQueue` api trait for interfering with the old transaction queue. - pub trait OldTxQueue { - fn account_nonce(account: AccountId) -> Index; - fn lookup_address(address: Address) -> Option; - } - /// The `TaggedTransactionQueue` api trait for interfering with the new transaction queue. pub trait TaggedTransactionQueue { fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity; diff --git a/core/sr-primitives/src/generic/block.rs b/core/sr-primitives/src/generic/block.rs index 6cbb7929d8..61452668ad 100644 --- a/core/sr-primitives/src/generic/block.rs +++ b/core/sr-primitives/src/generic/block.rs @@ -19,9 +19,13 @@ #[cfg(feature = "std")] use std::fmt; +#[cfg(feature = "std")] +use serde::{Deserialize, Deserializer}; +#[cfg(feature = "std")] +use codec::Decode; use rstd::prelude::*; use codec::Codec; -use traits::{self, Member, Block as BlockT, Header as HeaderT}; +use traits::{self, Member, Block as BlockT, Header as HeaderT, MaybeSerialize}; use ::Justification; /// Something to identify a block. @@ -59,17 +63,28 @@ impl fmt::Display for BlockId { /// Abstraction over a substrate block. #[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug, Serialize))] #[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] #[cfg_attr(feature = "std", serde(deny_unknown_fields))] -pub struct Block { +pub struct Block { /// The block header. pub header: Header, /// The accompanying extrinsics. pub extrinsics: Vec, } -impl traits::Block for Block +// TODO: Remove Deserialize for Block once RPC no longer needs it #1098 +#[cfg(feature = "std")] +impl<'a, Header: 'a, Extrinsic: 'a + MaybeSerialize> Deserialize<'a> for Block where + Block: Decode, +{ + fn deserialize>(de: D) -> Result { + let r = >::deserialize(de)?; + Decode::decode(&mut &r[..]).ok_or(::serde::de::Error::custom("Invalid value passed into decode")) + } +} + +impl traits::Block for Block where Header: HeaderT, Extrinsic: Member + Codec + traits::Extrinsic, @@ -94,12 +109,25 @@ where /// Abstraction over a substrate block and justification. #[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug, Serialize))] #[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] #[cfg_attr(feature = "std", serde(deny_unknown_fields))] -pub struct SignedBlock { +pub struct SignedBlock { /// Full block. - pub block: Block, + pub block: Block, /// Block justification. pub justification: Justification, } + +// TODO: Remove Deserialize for SignedBlock once RPC no longer needs it #1098 +#[cfg(feature = "std")] +impl<'a, Block: BlockT,> Deserialize<'a> for SignedBlock where + Block::Header: 'a, + Block::Extrinsic: 'a + Codec + MaybeSerialize, + SignedBlock: Decode, +{ + fn deserialize>(de: D) -> Result { + let r = >::deserialize(de)?; + Decode::decode(&mut &r[..]).ok_or(::serde::de::Error::custom("Invalid value passed into decode")) + } +} diff --git a/core/sr-primitives/src/generic/checked_extrinsic.rs b/core/sr-primitives/src/generic/checked_extrinsic.rs index e69ce77336..749577cdd6 100644 --- a/core/sr-primitives/src/generic/checked_extrinsic.rs +++ b/core/sr-primitives/src/generic/checked_extrinsic.rs @@ -23,7 +23,7 @@ use traits::{self, Member, SimpleArithmetic, MaybeDisplay}; /// existence implies that it has been checked and is good, particularly with /// regards to the signature. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Debug))] pub struct CheckedExtrinsic { /// Who this purports to be from and the number of extrinsics have come before /// from the same signer, if anyone (note this is not a signature). @@ -37,7 +37,7 @@ impl traits::Applyable where AccountId: Member + MaybeDisplay, Index: Member + MaybeDisplay + SimpleArithmetic, - Call: Member + Call: Member, { type Index = Index; type AccountId = AccountId; diff --git a/core/sr-primitives/src/generic/digest.rs b/core/sr-primitives/src/generic/digest.rs index 41ffd6da0d..c71ee4c7aa 100644 --- a/core/sr-primitives/src/generic/digest.rs +++ b/core/sr-primitives/src/generic/digest.rs @@ -19,7 +19,7 @@ use rstd::prelude::*; use codec::{Decode, Encode, Codec, Input}; -use traits::{self, Member, DigestItem as DigestItemT}; +use traits::{self, Member, DigestItem as DigestItemT, MaybeSerializeDebug}; use substrate_primitives::hash::H512 as Signature; @@ -122,7 +122,10 @@ impl DigestItem { } } -impl traits::DigestItem for DigestItem { +impl< + Hash: Codec + Member + MaybeSerializeDebug, + AuthorityId: Codec + Member + MaybeSerializeDebug +> traits::DigestItem for DigestItem { type Hash = Hash; type AuthorityId = AuthorityId; diff --git a/core/sr-primitives/src/generic/header.rs b/core/sr-primitives/src/generic/header.rs index fc6f73b5cf..ec70d5d66b 100644 --- a/core/sr-primitives/src/generic/header.rs +++ b/core/sr-primitives/src/generic/header.rs @@ -21,7 +21,7 @@ use serde::{Deserialize, Deserializer}; use codec::{Decode, Encode, Codec, Input, Output, HasCompact}; use traits::{self, Member, SimpleArithmetic, SimpleBitOps, MaybeDisplay, - Hash as HashT, DigestItem as DigestItemT}; + Hash as HashT, DigestItem as DigestItemT, MaybeSerializeDebug, MaybeSerializeDebugButNotDeserialize}; use generic::Digest; /// Abstraction over a block header for a substrate chain. @@ -42,42 +42,14 @@ pub struct Header { pub digest: Digest, } -// Hack to work around the fact that deriving deserialize doesn't work nicely with -// the `hashing` trait used as a parameter. -// dummy struct that uses the hash type directly. -// https://github.com/serde-rs/serde/issues/1296 -#[cfg(feature = "std")] -#[serde(rename_all = "camelCase")] -#[derive(Deserialize)] -struct DeserializeHeader { - parent_hash: H, - number: N, - state_root: H, - extrinsics_root: H, - digest: Digest, -} - -#[cfg(feature = "std")] -impl From> for Header { - fn from(other: DeserializeHeader) -> Self { - Header { - parent_hash: other.parent_hash, - number: other.number, - state_root: other.state_root, - extrinsics_root: other.extrinsics_root, - digest: other.digest, - } - } -} - +// TODO: Remove Deserialize for Header once RPC no longer needs it #1098 #[cfg(feature = "std")] impl<'a, Number: 'a, Hash: 'a + HashT, DigestItem: 'a> Deserialize<'a> for Header where - Number: Deserialize<'a>, - Hash::Output: Deserialize<'a>, - DigestItem: Deserialize<'a>, + Header: Decode, { fn deserialize>(de: D) -> Result { - DeserializeHeader::::deserialize(de).map(Into::into) + let r = >::deserialize(de)?; + Decode::decode(&mut &r[..]).ok_or(::serde::de::Error::custom("Invalid value passed into decode")) } } @@ -114,11 +86,11 @@ impl Encode for Header where } impl traits::Header for Header where - Number: Member + ::rstd::hash::Hash + Copy + MaybeDisplay + SimpleArithmetic + Codec, + Number: Member + MaybeSerializeDebug + ::rstd::hash::Hash + Copy + MaybeDisplay + SimpleArithmetic + Codec, Hash: HashT, DigestItem: DigestItemT + Codec, - Hash::Output: Default + ::rstd::hash::Hash + Copy + Member + MaybeDisplay + SimpleBitOps + Codec, - { + Hash::Output: Default + ::rstd::hash::Hash + Copy + Member + MaybeSerializeDebugButNotDeserialize + MaybeDisplay + SimpleBitOps + Codec, +{ type Number = Number; type Hash = ::Output; type Hashing = Hash; diff --git a/core/sr-primitives/src/generic/tests.rs b/core/sr-primitives/src/generic/tests.rs index c095a2b45d..7689610617 100644 --- a/core/sr-primitives/src/generic/tests.rs +++ b/core/sr-primitives/src/generic/tests.rs @@ -17,56 +17,8 @@ //! Tests for the generic implementations of Extrinsic/Header/Block. use codec::{Decode, Encode}; -use substrate_primitives::{H256, H512}; -use super::{Digest, Header, DigestItem, UncheckedExtrinsic}; - -type Block = super::Block< - Header>, - UncheckedExtrinsic, ->; - -#[test] -fn block_roundtrip_serialization() { - let block: Block = Block { - header: Header { - parent_hash: [0u8; 32].into(), - number: 100_000, - state_root: [1u8; 32].into(), - extrinsics_root: [2u8; 32].into(), - digest: Digest { logs: vec![ - DigestItem::Other::(vec![1, 2, 3]), - DigestItem::Other::(vec![4, 5, 6]), - ] }, - }, - extrinsics: vec![ - UncheckedExtrinsic::new_signed( - 0, - 100, - [255u8; 32].into(), - H512::from([0u8; 64]).into() - ), - UncheckedExtrinsic::new_signed( - 100, - 99, - [128u8; 32].into(), - H512::from([255u8; 64]).into() - ) - ] - }; - - { - let encoded = ::serde_json::to_vec(&block).unwrap(); - let decoded: Block = ::serde_json::from_slice(&encoded).unwrap(); - - assert_eq!(block, decoded); - } - { - let encoded = block.encode(); - let decoded = Block::decode(&mut &encoded[..]).unwrap(); - - assert_eq!(block, decoded); - } -} +use substrate_primitives::H256; +use super::DigestItem; #[test] fn system_digest_item_encoding() { diff --git a/core/sr-primitives/src/generic/unchecked_extrinsic.rs b/core/sr-primitives/src/generic/unchecked_extrinsic.rs index a37affd9ca..ec3801591d 100644 --- a/core/sr-primitives/src/generic/unchecked_extrinsic.rs +++ b/core/sr-primitives/src/generic/unchecked_extrinsic.rs @@ -25,7 +25,6 @@ use traits::{self, Member, SimpleArithmetic, MaybeDisplay, Lookup}; use super::CheckedExtrinsic; #[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct SignatureContent where Address: Codec, @@ -40,7 +39,6 @@ where /// A extrinsic right from the external world. This is unchecked and so /// can contain a signature. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct UncheckedExtrinsic where Address: Codec, @@ -143,6 +141,15 @@ impl } } +#[cfg(feature = "std")] +impl serde::Serialize + for UncheckedExtrinsic +{ + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + self.using_encoded(|bytes| seq.serialize_bytes(bytes)) + } +} + /// TODO: use derive when possible. #[cfg(feature = "std")] impl fmt::Debug diff --git a/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs b/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs index 5d91556d8c..e15a37c3bf 100644 --- a/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs +++ b/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs @@ -30,7 +30,6 @@ const TRANSACTION_VERSION: u8 = 1; /// A extrinsic right from the external world. This is unchecked and so /// can contain a signature. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct UncheckedMortalExtrinsic { /// The signature, address, number of extrinsics have come before from /// the same signer and an era describing the longevity of this transaction, @@ -58,7 +57,7 @@ impl UncheckedMortalExtrinsic Extrinsic for UncheckedMortalExtrinsic { +impl Extrinsic for UncheckedMortalExtrinsic { fn is_signed(&self) -> Option { Some(self.signature.is_some()) } @@ -158,6 +157,15 @@ where } } +#[cfg(feature = "std")] +impl serde::Serialize + for UncheckedMortalExtrinsic +{ + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + self.using_encoded(|bytes| seq.serialize_bytes(bytes)) + } +} + /// TODO: use derive when possible. #[cfg(feature = "std")] impl fmt::Debug for UncheckedMortalExtrinsic where diff --git a/core/sr-primitives/src/testing.rs b/core/sr-primitives/src/testing.rs index 847af9a3c2..cd1ca5cb4a 100644 --- a/core/sr-primitives/src/testing.rs +++ b/core/sr-primitives/src/testing.rs @@ -16,9 +16,9 @@ //! Testing utilities. -use serde::{Serialize, de::DeserializeOwned}; -use std::{fmt::Debug, ops::Deref}; -use codec::Codec; +use serde::{Serialize, Serializer, Deserialize, de::Error as DeError, Deserializer}; +use std::{fmt::Debug, ops::Deref, fmt}; +use codec::{Codec, Encode, Decode}; use traits::{self, Checkable, Applyable, BlakeTwo256}; use generic::DigestItem as GenDigestItem; @@ -101,7 +101,7 @@ impl traits::Header for Header { #[derive(PartialEq, Eq, Clone, Serialize, Deserialize, Debug, Encode, Decode)] pub struct ExtrinsicWrapper(Xt); -impl traits::Extrinsic for ExtrinsicWrapper { +impl traits::Extrinsic for ExtrinsicWrapper where Xt: Serialize { fn is_signed(&self) -> Option { None } @@ -121,13 +121,13 @@ impl Deref for ExtrinsicWrapper { } } -#[derive(PartialEq, Eq, Clone, Serialize, Deserialize, Debug, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Serialize, Debug, Encode, Decode)] pub struct Block { pub header: Header, pub extrinsics: Vec, } -impl traits::Block for Block { +impl traits::Block for Block { type Extrinsic = Xt; type Header = Header; type Hash =

::Hash; @@ -146,20 +146,40 @@ impl Deserialize<'a> for Block where Block: Decode { + fn deserialize>(de: D) -> Result { + let r = >::deserialize(de)?; + Decode::decode(&mut &r[..]).ok_or(DeError::custom("Invalid value passed into decode")) + } +} + +#[derive(PartialEq, Eq, Clone, Encode, Decode)] pub struct TestXt(pub Option, pub u64, pub Call); -impl Checkable for TestXt { +impl Serialize for TestXt where TestXt: Encode +{ + fn serialize(&self, seq: S) -> Result where S: Serializer { + self.using_encoded(|bytes| seq.serialize_bytes(bytes)) + } +} + +impl Debug for TestXt { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "TestXt({:?}, {:?})", self.0, self.1) + } +} + +impl Checkable for TestXt { type Checked = Self; fn check(self, _: &Context) -> Result { Ok(self) } } -impl traits::Extrinsic for TestXt { +impl traits::Extrinsic for TestXt { fn is_signed(&self) -> Option { None } } impl Applyable for TestXt where - Call: 'static + Sized + Send + Sync + Clone + Eq + Codec + Debug + Serialize + DeserializeOwned, + Call: 'static + Sized + Send + Sync + Clone + Eq + Codec + Debug, { type AccountId = u64; type Index = u64; diff --git a/core/sr-primitives/src/traits.rs b/core/sr-primitives/src/traits.rs index 5c568460ee..809c617218 100644 --- a/core/sr-primitives/src/traits.rs +++ b/core/sr-primitives/src/traits.rs @@ -246,7 +246,7 @@ tuple_impl!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, pub trait Hash: 'static + MaybeSerializeDebug + Clone + Eq + PartialEq { // Stupid bug in the Rust compiler believes derived // traits must be fulfilled by all type parameters. /// The hash type produced. - type Output: Member + AsRef<[u8]> + AsMut<[u8]>; + type Output: Member + MaybeSerializeDebug + AsRef<[u8]> + AsMut<[u8]>; /// Produce the hash of some byte-slice. fn hash(s: &[u8]) -> Self::Output; @@ -365,6 +365,16 @@ pub trait MaybeSerializeDebugButNotDeserialize {} #[cfg(not(feature = "std"))] impl MaybeSerializeDebugButNotDeserialize for T {} +#[cfg(feature = "std")] +pub trait MaybeSerialize: Serialize {} +#[cfg(feature = "std")] +impl MaybeSerialize for T {} + +#[cfg(not(feature = "std"))] +pub trait MaybeSerialize {} +#[cfg(not(feature = "std"))] +impl MaybeSerialize for T {} + #[cfg(feature = "std")] pub trait MaybeSerializeDebug: Serialize + DeserializeOwned + Debug {} #[cfg(feature = "std")] @@ -375,6 +385,16 @@ pub trait MaybeSerializeDebug {} #[cfg(not(feature = "std"))] impl MaybeSerializeDebug for T {} +#[cfg(feature = "std")] +pub trait MaybeDebug: Debug {} +#[cfg(feature = "std")] +impl MaybeDebug for T {} + +#[cfg(not(feature = "std"))] +pub trait MaybeDebug {} +#[cfg(not(feature = "std"))] +impl MaybeDebug for T {} + #[cfg(feature = "std")] pub trait MaybeDisplay: Display {} #[cfg(feature = "std")] @@ -395,9 +415,8 @@ pub trait MaybeDecode {} #[cfg(not(feature = "std"))] impl MaybeDecode for T {} - -pub trait Member: Send + Sync + Sized + MaybeSerializeDebug + Eq + PartialEq + Clone + 'static {} -impl Member for T {} +pub trait Member: Send + Sync + Sized + MaybeDebug + Eq + PartialEq + Clone + 'static {} +impl Member for T {} /// Something which fulfills the abstract idea of a Substrate header. It has types for a `Number`, /// a `Hash` and a `Digest`. It provides access to an `extrinsics_root`, `state_root` and @@ -405,8 +424,8 @@ impl + AsMut<[u8]>; + type Number: Member + MaybeSerializeDebug + ::rstd::hash::Hash + Copy + MaybeDisplay + SimpleArithmetic + Codec; + type Hash: Member + MaybeSerializeDebug + ::rstd::hash::Hash + Copy + MaybeDisplay + Default + SimpleBitOps + Codec + AsRef<[u8]> + AsMut<[u8]>; type Hashing: Hash; type Digest: Digest; @@ -445,9 +464,9 @@ pub trait Header: Clone + Send + Sync + Codec + Eq + MaybeSerializeDebug + 'stat /// /// You can get an iterator over each of the `extrinsics` and retrieve the `header`. pub trait Block: Clone + Send + Sync + Codec + Eq + MaybeSerializeDebug + 'static { - type Extrinsic: Member + Codec + Extrinsic; + type Extrinsic: Member + Codec + Extrinsic + MaybeSerialize; type Header: Header; - type Hash: Member + ::rstd::hash::Hash + Copy + MaybeDisplay + Default + SimpleBitOps + Codec + AsRef<[u8]> + AsMut<[u8]>; + type Hash: Member + MaybeSerializeDebug + ::rstd::hash::Hash + Copy + MaybeDisplay + Default + SimpleBitOps + Codec + AsRef<[u8]> + AsMut<[u8]>; fn header(&self) -> &Self::Header; fn extrinsics(&self) -> &[Self::Extrinsic]; @@ -458,6 +477,13 @@ pub trait Block: Clone + Send + Sync + Codec + Eq + MaybeSerializeDebug + 'stati } } +/// Something that acts like an `Extrinsic`. +pub trait Extrinsic { + /// Is this `Extrinsic` signed? + /// If no information are available about signed/unsigned, `None` should be returned. + fn is_signed(&self) -> Option { None } +} + /// Extract the hashing type for a block. pub type HashFor = <::Header as Header>::Hashing; /// Extract the number type for a block. @@ -516,8 +542,8 @@ pub trait Applyable: Sized + Send + Sync { /// Something that acts like a `Digest` - it can have `Log`s `push`ed onto it and these `Log`s are /// each `Codec`. -pub trait Digest: Member + Default { - type Hash: Member; +pub trait Digest: Member + MaybeSerializeDebug + Default { + type Hash: Member + MaybeSerializeDebug; type Item: DigestItem; /// Get reference to all digest items. @@ -539,9 +565,9 @@ pub trait Digest: Member + Default { /// for casting member to 'system' log items, known to substrate. /// /// If the runtime does not supports some 'system' items, use `()` as a stub. -pub trait DigestItem: Codec + Member { - type Hash: Member; - type AuthorityId: Member; +pub trait DigestItem: Codec + Member + MaybeSerializeDebug { + type Hash: Member + MaybeSerializeDebug; + type AuthorityId: Member + MaybeSerializeDebug; /// Returns Some if the entry is the `AuthoritiesChange` entry. fn as_authorities_change(&self) -> Option<&[Self::AuthorityId]>; @@ -571,10 +597,3 @@ pub trait ProvideInherent { block: &Block, data: Self::Inherent, extract_function: &F ) -> Result<(), Self::Error>; } - -/// Something that acts like an `Extrinsic`. -pub trait Extrinsic { - /// Is this `Extrinsic` signed? - /// If no information are available about signed/unsigned, `None` should be returned. - fn is_signed(&self) -> Option { None } -} diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index de678e7205..5844ecbbb9 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -24,10 +24,6 @@ extern crate sr_std as rstd; extern crate parity_codec as codec; extern crate sr_primitives as runtime_primitives; -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - #[macro_use] extern crate srml_support as runtime_support; #[macro_use] diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 72683d7e19b2af43325f7f1ec1357721881a4c0d..fe88a3463d8679758db6c75f0f567cb6d335816b 100644 GIT binary patch delta 6689 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 E3q7BAHvj+t delta 6841 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 diff --git a/core/transaction-pool/graph/src/base_pool.rs b/core/transaction-pool/graph/src/base_pool.rs index 21a52a9750..e6ad3cd6dd 100644 --- a/core/transaction-pool/graph/src/base_pool.rs +++ b/core/transaction-pool/graph/src/base_pool.rs @@ -23,6 +23,7 @@ use std::{ sync::Arc, }; +use serde::Serialize; use sr_primitives::traits::Member; use sr_primitives::transaction_validity::{ TransactionTag as Tag, @@ -79,7 +80,7 @@ pub struct PruneStatus { /// Immutable transaction #[cfg_attr(test, derive(Clone))] -#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] +#[derive(Debug, PartialEq, Eq)] pub struct Transaction { /// Raw extrinsic representing that transaction. pub data: Extrinsic, @@ -120,7 +121,7 @@ impl Default for BasePool { } } -impl BasePool { +impl BasePool { /// Imports transaction to the pool. /// /// The pool consists of two parts: Future and Ready. diff --git a/core/transaction-pool/graph/src/lib.rs b/core/transaction-pool/graph/src/lib.rs index e41284efe3..2c456aac52 100644 --- a/core/transaction-pool/graph/src/lib.rs +++ b/core/transaction-pool/graph/src/lib.rs @@ -33,6 +33,7 @@ extern crate futures; extern crate parking_lot; extern crate sr_primitives; +extern crate serde; #[macro_use] extern crate error_chain; #[macro_use] extern crate log; #[macro_use] extern crate serde_derive; diff --git a/core/transaction-pool/graph/src/listener.rs b/core/transaction-pool/graph/src/listener.rs index 1947bfb93b..d4645eb2c5 100644 --- a/core/transaction-pool/graph/src/listener.rs +++ b/core/transaction-pool/graph/src/listener.rs @@ -19,6 +19,7 @@ use std::{ collections::HashMap, hash, }; +use serde::Serialize; use watcher; use sr_primitives::traits; @@ -35,7 +36,7 @@ impl Default for Listener { } } -impl Listener { +impl Listener { fn fire(&mut self, hash: &H, fun: F) where F: FnOnce(&mut watcher::Sender) { let clean = if let Some(h) = self.watchers.get_mut(hash) { fun(h); diff --git a/core/transaction-pool/graph/src/pool.rs b/core/transaction-pool/graph/src/pool.rs index fe1f2d2aee..d9b4b33f36 100644 --- a/core/transaction-pool/graph/src/pool.rs +++ b/core/transaction-pool/graph/src/pool.rs @@ -26,6 +26,7 @@ use error; use listener::Listener; use rotator::PoolRotator; use watcher::Watcher; +use serde::Serialize; use futures::sync::mpsc; use parking_lot::{Mutex, RwLock}; @@ -54,7 +55,7 @@ pub trait ChainApi: Send + Sync { /// Block type. type Block: traits::Block; /// Hash type - type Hash: hash::Hash + Eq + traits::Member; + type Hash: hash::Hash + Eq + traits::Member + Serialize; /// Error type. type Error: From + error::IntoPoolError; @@ -287,7 +288,7 @@ fn fire_events( listener: &mut Listener, imported: &base::Imported, ) where - H: hash::Hash + Eq + traits::Member, + H: hash::Hash + Eq + traits::Member + Serialize, H2: Clone, { match *imported { diff --git a/core/transaction-pool/graph/src/ready.rs b/core/transaction-pool/graph/src/ready.rs index 47ab34c7fb..1a531b3f49 100644 --- a/core/transaction-pool/graph/src/ready.rs +++ b/core/transaction-pool/graph/src/ready.rs @@ -21,6 +21,7 @@ use std::{ sync::Arc, }; +use serde::Serialize; use parking_lot::RwLock; use sr_primitives::traits::Member; use sr_primitives::transaction_validity::{ @@ -120,7 +121,7 @@ impl Default for ReadyTransactions { } } -impl ReadyTransactions { +impl ReadyTransactions { /// Borrows a map of tags that are provided by transactions in this queue. pub fn provided_tags(&self) -> &HashMap { &self.provided_tags diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index d1afc82c44..8a982b9ff8 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -226,7 +226,7 @@ pub type Header = generic::Header; /// Block type as expected by this runtime. pub type Block = generic::Block; /// A Block signed with a Justification -pub type SignedBlock = generic::SignedBlock; +pub type SignedBlock = generic::SignedBlock; /// BlockId type as expected by this runtime. pub type BlockId = generic::BlockId; /// Unchecked extrinsic type as expected by this runtime. diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 355963104b..231ddef3f7 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -606,7 +606,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -624,7 +623,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -642,7 +640,6 @@ dependencies = [ "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-sandbox 0.1.0", @@ -662,7 +659,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -682,7 +678,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -700,7 +695,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -717,7 +711,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -737,7 +730,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -775,7 +767,6 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -791,7 +782,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -809,7 +799,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -827,7 +816,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 4fbcc974d009df0e7d334462296e80ed16a01032..8d53eefe478c3428a332b27b469e77d4e4617ef4 100644 GIT binary patch delta 69043 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 F{|^y>$728h delta 69463 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 diff --git a/srml/assets/Cargo.toml b/srml/assets/Cargo.toml index 58d84fb9bb..e695453c1e 100644 --- a/srml/assets/Cargo.toml +++ b/srml/assets/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } substrate-primitives = { path = "../../core/primitives", default-features = false } @@ -20,7 +19,6 @@ srml-system = { path = "../system", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "parity-codec/std", "parity-codec-derive/std", "substrate-primitives/std", diff --git a/srml/assets/src/lib.rs b/srml/assets/src/lib.rs index e266a00bdd..09f81cb843 100644 --- a/srml/assets/src/lib.rs +++ b/srml/assets/src/lib.rs @@ -30,13 +30,6 @@ extern crate sr_io as runtime_io; #[cfg(test)] extern crate substrate_primitives; -// Needed for deriving `Serialize` and `Deserialize` for various types. -// We only implement the serde traits for std builds - they're unneeded -// in the wasm runtime. -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - // Needed for deriving `Encode` and `Decode` for `RawEvent`. #[macro_use] extern crate parity_codec_derive; diff --git a/srml/balances/Cargo.toml b/srml/balances/Cargo.toml index 769e801ca9..9f7fd249b0 100644 --- a/srml/balances/Cargo.toml +++ b/srml/balances/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } @@ -22,7 +21,6 @@ srml-system = { path = "../system", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "safe-mix/std", "substrate-keyring", "parity-codec/std", diff --git a/srml/balances/src/address.rs b/srml/balances/src/address.rs index 2cd545d0d1..ccaa6b46a5 100644 --- a/srml/balances/src/address.rs +++ b/srml/balances/src/address.rs @@ -22,16 +22,14 @@ use super::{Member, Decode, Encode, As, Input, Output}; /// A vetted and verified extrinsic from the external world. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug, Hash))] +#[cfg_attr(feature = "std", derive(Debug, Hash))] pub enum Address where AccountId: Member, AccountIndex: Member, { /// It's an account ID (pubkey). - #[cfg_attr(feature = "std", serde(deserialize_with="AccountId::deserialize"))] Id(AccountId), /// It's an account index. - #[cfg_attr(feature = "std", serde(deserialize_with="AccountIndex::deserialize"))] Index(AccountIndex), } diff --git a/srml/balances/src/lib.rs b/srml/balances/src/lib.rs index cf2f9bc4da..7fd694d98c 100644 --- a/srml/balances/src/lib.rs +++ b/srml/balances/src/lib.rs @@ -18,10 +18,6 @@ #![cfg_attr(not(feature = "std"), no_std)] -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - #[macro_use] extern crate srml_support as runtime_support; diff --git a/srml/balances/src/mock.rs b/srml/balances/src/mock.rs index d2e62cb83d..5fb6bb80dc 100644 --- a/srml/balances/src/mock.rs +++ b/srml/balances/src/mock.rs @@ -72,6 +72,7 @@ impl ExtBuilder { self.existential_deposit = existential_deposit; self } + #[allow(dead_code)] pub fn transfer_fee(mut self, transfer_fee: u64) -> Self { self.transfer_fee = transfer_fee; self diff --git a/srml/consensus/Cargo.toml b/srml/consensus/Cargo.toml index c7bbfe03f6..d099cb120f 100644 --- a/srml/consensus/Cargo.toml +++ b/srml/consensus/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } substrate-primitives = { path = "../../core/primitives", default-features = false } @@ -20,7 +19,6 @@ srml-system = { path = "../system", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "parity-codec/std", "substrate-primitives/std", "sr-std/std", diff --git a/srml/consensus/src/lib.rs b/srml/consensus/src/lib.rs index 0d2bd7f279..302d7a2b35 100644 --- a/srml/consensus/src/lib.rs +++ b/srml/consensus/src/lib.rs @@ -25,10 +25,6 @@ extern crate sr_std as rstd; #[macro_use] extern crate srml_support as runtime_support; -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - extern crate parity_codec; #[macro_use] extern crate parity_codec_derive; diff --git a/srml/contract/Cargo.toml b/srml/contract/Cargo.toml index 51a0b172db..60da497f0e 100644 --- a/srml/contract/Cargo.toml +++ b/srml/contract/Cargo.toml @@ -5,7 +5,6 @@ authors = ["Parity Technologies "] [dependencies] serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } pwasm-utils = { version = "0.3", default-features = false } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } @@ -26,7 +25,6 @@ assert_matches = "1.1" [features] default = ["std"] std = [ - "serde_derive", "serde/std", "parity-codec/std", "parity-codec-derive/std", diff --git a/srml/contract/src/lib.rs b/srml/contract/src/lib.rs index 5e3722bb04..e3f6a600b3 100644 --- a/srml/contract/src/lib.rs +++ b/srml/contract/src/lib.rs @@ -52,10 +52,6 @@ #![cfg_attr(not(feature = "std"), no_std)] -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - #[macro_use] extern crate parity_codec_derive; diff --git a/srml/council/Cargo.toml b/srml/council/Cargo.toml index 39cd73e96c..e2bad6b3c8 100644 --- a/srml/council/Cargo.toml +++ b/srml/council/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } @@ -23,7 +22,6 @@ srml-system = { path = "../system", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "safe-mix/std", "parity-codec/std", "parity-codec-derive/std", diff --git a/srml/council/src/lib.rs b/srml/council/src/lib.rs index 412de7d2b2..26d88c6c7b 100644 --- a/srml/council/src/lib.rs +++ b/srml/council/src/lib.rs @@ -21,10 +21,6 @@ #[cfg(feature = "std")] extern crate serde; -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - #[cfg(test)] #[macro_use] extern crate hex_literal; diff --git a/srml/council/src/motions.rs b/srml/council/src/motions.rs index 2b3850369b..69af4a563e 100644 --- a/srml/council/src/motions.rs +++ b/srml/council/src/motions.rs @@ -20,7 +20,7 @@ use rstd::prelude::*; use rstd::result; use codec::Compact; use substrate_primitives::u32_trait::Value as U32; -use primitives::traits::{Hash, EnsureOrigin, MaybeSerializeDebug}; +use primitives::traits::{Hash, EnsureOrigin}; use srml_support::dispatch::{Result, Dispatchable, Parameter}; use srml_support::{StorageValue, StorageMap}; use super::{Trait as CouncilTrait, Module as Council}; @@ -29,12 +29,12 @@ use system::{self, ensure_signed}; /// Simple index type for proposal counting. pub type ProposalIndex = u32; -pub trait Trait: CouncilTrait + MaybeSerializeDebug { +pub trait Trait: CouncilTrait { /// The outer origin type. type Origin: From; /// The outer call dispatch type. - type Proposal: Parameter + Dispatchable::Origin> + MaybeSerializeDebug; + type Proposal: Parameter + Dispatchable::Origin>; /// The outer event type. type Event: From> + Into<::Event>; @@ -66,7 +66,6 @@ decl_event!( ); decl_module! { - #[cfg_attr(feature = "std", serde(bound(deserialize = "::Proposal: ::serde::de::DeserializeOwned")))] pub struct Module for enum Call where origin: ::Origin { fn deposit_event() = default; fn propose(origin, threshold: Compact, proposal: Box<::Proposal>) -> Result { diff --git a/srml/democracy/Cargo.toml b/srml/democracy/Cargo.toml index c037a4b219..ea8b63920f 100644 --- a/srml/democracy/Cargo.toml +++ b/srml/democracy/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } @@ -22,7 +21,6 @@ srml-system = { path = "../system", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "safe-mix/std", "parity-codec/std", "substrate-primitives/std", diff --git a/srml/democracy/src/lib.rs b/srml/democracy/src/lib.rs index 34aad5856c..0c589d5893 100644 --- a/srml/democracy/src/lib.rs +++ b/srml/democracy/src/lib.rs @@ -21,10 +21,6 @@ #[cfg(test)] extern crate substrate_primitives; -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - #[macro_use] extern crate parity_codec_derive; #[cfg_attr(not(feature = "std"), macro_use)] @@ -41,7 +37,7 @@ extern crate srml_system as system; use rstd::prelude::*; use rstd::result; use codec::{HasCompact, Compact}; -use primitives::traits::{Zero, As, MaybeSerializeDebug}; +use primitives::traits::{Zero, As}; use srml_support::{StorageValue, StorageMap, Parameter, Dispatchable, IsSubType}; use srml_support::dispatch::Result; use system::ensure_signed; @@ -55,7 +51,7 @@ pub type PropIndex = u32; pub type ReferendumIndex = u32; pub trait Trait: balances::Trait + Sized { - type Proposal: Parameter + Dispatchable + IsSubType> + MaybeSerializeDebug; + type Proposal: Parameter + Dispatchable + IsSubType>; type Event: From> + Into<::Event>; } diff --git a/srml/example/Cargo.toml b/srml/example/Cargo.toml index 34d8d058d1..8fe76d9bf0 100644 --- a/srml/example/Cargo.toml +++ b/srml/example/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } substrate-primitives = { path = "../../core/primitives", default-features = false } @@ -21,7 +20,6 @@ srml-balances = { path = "../balances", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "parity-codec/std", "parity-codec-derive/std", "sr-std/std", diff --git a/srml/example/src/lib.rs b/srml/example/src/lib.rs index 4c2708e953..8dcbb7094b 100644 --- a/srml/example/src/lib.rs +++ b/srml/example/src/lib.rs @@ -34,13 +34,6 @@ extern crate substrate_primitives; // Needed for various traits. In our case, `OnFinalise`. extern crate sr_primitives; -// Needed for deriving `Serialize` and `Deserialize` for various types. -// We only implement the serde traits for std builds - they're unneeded -// in the wasm runtime. -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - // Needed for deriving `Encode` and `Decode` for `RawEvent`. #[macro_use] extern crate parity_codec_derive; diff --git a/srml/executive/Cargo.toml b/srml/executive/Cargo.toml index 33cd0432e0..ee956e9399 100644 --- a/srml/executive/Cargo.toml +++ b/srml/executive/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } sr-std = { path = "../../core/sr-std", default-features = false } @@ -25,7 +24,6 @@ std = [ "sr-std/std", "srml-support/std", "serde/std", - "serde_derive", "parity-codec/std", "parity-codec-derive/std", "sr-primitives/std", diff --git a/srml/executive/src/lib.rs b/srml/executive/src/lib.rs index ea83267c91..005b8508db 100644 --- a/srml/executive/src/lib.rs +++ b/srml/executive/src/lib.rs @@ -18,10 +18,6 @@ #![cfg_attr(not(feature = "std"), no_std)] -#[cfg(test)] -#[macro_use] -extern crate serde_derive; - #[cfg(test)] #[macro_use] extern crate parity_codec_derive; @@ -295,7 +291,7 @@ mod tests { } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. - #[derive(Clone, Eq, PartialEq, Debug, Serialize, Deserialize)] + #[derive(Clone, Eq, PartialEq)] pub struct Runtime; impl system::Trait for Runtime { type Origin = Origin; diff --git a/srml/session/Cargo.toml b/srml/session/Cargo.toml index c006eff0a4..ad798edbdb 100644 --- a/srml/session/Cargo.toml +++ b/srml/session/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} substrate-primitives = { path = "../../core/primitives", default-features = false } parity-codec = { version = "2.1", default-features = false } @@ -23,7 +22,6 @@ srml-timestamp = { path = "../timestamp", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "safe-mix/std", "parity-codec/std", "parity-codec-derive/std", diff --git a/srml/session/src/lib.rs b/srml/session/src/lib.rs index df3afa9aa1..99bf182cf8 100644 --- a/srml/session/src/lib.rs +++ b/srml/session/src/lib.rs @@ -19,10 +19,6 @@ #![cfg_attr(not(feature = "std"), no_std)] -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - extern crate sr_std as rstd; #[macro_use] diff --git a/srml/staking/Cargo.toml b/srml/staking/Cargo.toml index 7a1f4ef4eb..4d35592144 100644 --- a/srml/staking/Cargo.toml +++ b/srml/staking/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } @@ -26,7 +25,6 @@ srml-timestamp = { path = "../timestamp", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "safe-mix/std", "substrate-keyring", "parity-codec/std", diff --git a/srml/staking/src/lib.rs b/srml/staking/src/lib.rs index 680da340c5..cd21fe05ad 100644 --- a/srml/staking/src/lib.rs +++ b/srml/staking/src/lib.rs @@ -23,10 +23,6 @@ #[cfg(feature = "std")] extern crate serde; -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - #[macro_use] extern crate srml_support as runtime_support; @@ -75,7 +71,7 @@ pub enum LockStatus { /// Preference of what happens on a slash event. #[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Debug))] pub struct ValidatorPrefs { // TODO: @bkchr shouldn't need this Copy but derive(Encode) breaks otherwise /// Validator should ensure this many more slashes than is necessary before being unstaked. #[codec(compact)] @@ -103,7 +99,6 @@ pub trait Trait: balances::Trait + session::Trait { } decl_module! { - #[cfg_attr(feature = "std", serde(bound(deserialize = "T::Balance: ::serde::de::DeserializeOwned")))] pub struct Module for enum Call where origin: T::Origin { fn deposit_event() = default; diff --git a/srml/support/src/dispatch.rs b/srml/support/src/dispatch.rs index dd52e35b3c..24ba2a9c75 100644 --- a/srml/support/src/dispatch.rs +++ b/srml/support/src/dispatch.rs @@ -20,8 +20,6 @@ pub use rstd::prelude::{Vec, Clone, Eq, PartialEq}; #[cfg(feature = "std")] pub use std::fmt; pub use rstd::result; -#[cfg(feature = "std")] -use serde; pub use codec::{Codec, Decode, Encode, Input, Output}; pub use substrate_metadata::{ ModuleMetadata, FunctionMetadata, DecodeDifferent, @@ -36,11 +34,6 @@ pub trait Dispatchable { fn dispatch(self, origin: Self::Origin) -> Result; } -#[cfg(feature = "std")] -pub trait Callable { - type Call: Dispatchable + Codec + ::serde::Serialize + Clone + PartialEq + Eq; -} -#[cfg(not(feature = "std"))] pub trait Callable { type Call: Dispatchable + Codec + Clone + PartialEq + Eq; } @@ -50,10 +43,10 @@ pub trait Callable { pub type CallableCallFor = ::Call; #[cfg(feature = "std")] -pub trait Parameter: Codec + serde::Serialize + Clone + Eq + fmt::Debug {} +pub trait Parameter: Codec + Clone + Eq + fmt::Debug {} #[cfg(feature = "std")] -impl Parameter for T where T: Codec + serde::Serialize + Clone + Eq + fmt::Debug {} +impl Parameter for T where T: Codec + Clone + Eq + fmt::Debug {} #[cfg(not(feature = "std"))] pub trait Parameter: Codec + Clone + Eq {} @@ -188,6 +181,42 @@ macro_rules! decl_module { $($rest)* ); }; + (@normalize + $(#[$attr:meta])* + pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident> + for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident + { $( $deposit_event:tt )* } + { $( $on_finalise:tt )* } + [ $($t:tt)* ] + $(#[doc = $doc_attr:tt])* + $fn_vis:vis fn $fn_name:ident($origin:ident : T::Origin $(, $param_name:ident : $param:ty)* ) -> $result:ty { $( $impl:tt )* } + $($rest:tt)* + ) => { + compile_error!("\ +First parameter of dispatch should be marked `origin` only, with no\n\ +type specified (a bit like `self`).\n\ +(For root-matching dispatches, ensure the first parameter does not use\n\ +the `T::Origin` type.)\ +") + }; + (@normalize + $(#[$attr:meta])* + pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident> + for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident + { $( $deposit_event:tt )* } + { $( $on_finalise:tt )* } + [ $($t:tt)* ] + $(#[doc = $doc_attr:tt])* + $fn_vis:vis fn $fn_name:ident(origin : $origin:ty $(, $param_name:ident : $param:ty)* ) -> $result:ty { $( $impl:tt )* } + $($rest:tt)* + ) => { + compile_error!("\ +First parameter of dispatch should be marked `origin` only, with no\n\ +type specified (a bit like `self`).\n\ +(For root-matching dispatches, ensure the first parameter is not named\n\ +`origin`.)\ +") + }; (@normalize $(#[$attr:meta])* pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident> @@ -351,7 +380,7 @@ macro_rules! decl_module { ) => { // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. #[derive(Clone, Copy, PartialEq, Eq)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[cfg_attr(feature = "std", derive(Debug))] // TODO: switching based on std feature is because of an issue in // serde-derive for when we attempt to derive `Deserialize` on these types, // in a situation where we've imported `srml_support` as another name. @@ -360,7 +389,7 @@ macro_rules! decl_module { // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. #[derive(Clone, Copy, PartialEq, Eq)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[cfg_attr(feature = "std", derive(Debug))] #[cfg(not(feature = "std"))] pub struct $mod_type<$trait_instance: $trait_name>(::core::marker::PhantomData<$trait_instance>); @@ -389,7 +418,6 @@ macro_rules! decl_module { #[cfg(feature = "std")] $(#[$attr])* - #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum $call_type<$trait_instance: $trait_name> { __PhantomItem(::std::marker::PhantomData<$trait_instance>), __OtherPhantomItem(::std::marker::PhantomData<$trait_instance>), @@ -401,7 +429,6 @@ macro_rules! decl_module { #[cfg(not(feature = "std"))] $(#[$attr])* - #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum $call_type<$trait_instance: $trait_name> { __PhantomItem(::core::marker::PhantomData<$trait_instance>), __OtherPhantomItem(::core::marker::PhantomData<$trait_instance>), @@ -610,7 +637,7 @@ macro_rules! impl_outer_dispatch { ) => { $(#[$attr])* #[derive(Clone, PartialEq, Eq)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[cfg_attr(feature = "std", derive(Debug))] pub enum $call_type { $( $camelcase ( $crate::dispatch::CallableCallFor<$camelcase> ) diff --git a/srml/support/src/event.rs b/srml/support/src/event.rs index ae7ddea412..02f295ab18 100644 --- a/srml/support/src/event.rs +++ b/srml/support/src/event.rs @@ -115,7 +115,7 @@ macro_rules! decl_event { ) => { // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. #[derive(Clone, PartialEq, Eq, Encode, Decode)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[cfg_attr(feature = "std", derive(Debug))] $(#[$attr])* pub enum Event { $( @@ -216,7 +216,7 @@ macro_rules! __decl_generic_event { pub type Event<$event_generic_param> = RawEvent<$( <$generic as $trait>::$trait_type ),*>; // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. #[derive(Clone, PartialEq, Eq, Encode, Decode)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[cfg_attr(feature = "std", derive(Debug))] $(#[$attr])* pub enum RawEvent<$( $generic_param ),*> { $( @@ -364,7 +364,7 @@ macro_rules! impl_outer_event { ) => { // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. #[derive(Clone, PartialEq, Eq, Encode, Decode)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[cfg_attr(feature = "std", derive(Debug))] $(#[$attr])* #[allow(non_camel_case_types)] pub enum $name { @@ -518,7 +518,7 @@ mod tests { ); } - #[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, Deserialize, Serialize)] + #[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, Serialize)] pub struct TestRuntime; impl_outer_event! { @@ -529,7 +529,7 @@ mod tests { } } - #[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, Deserialize, Serialize)] + #[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, Serialize)] pub struct TestRuntime2; impl_outer_event! { diff --git a/srml/support/src/lib.rs b/srml/support/src/lib.rs index e9cd35afa5..e70af960f1 100644 --- a/srml/support/src/lib.rs +++ b/srml/support/src/lib.rs @@ -36,7 +36,7 @@ extern crate mashup; #[cfg(test)] #[macro_use] extern crate pretty_assertions; -#[cfg(test)] +#[cfg(feature = "std")] #[macro_use] extern crate serde_derive; #[cfg(test)] @@ -122,3 +122,6 @@ pub enum Void {} #[doc(hidden)] pub use mashup::*; + +#[cfg(feature = "std")] +pub use serde_derive::*; diff --git a/srml/system/Cargo.toml b/srml/system/Cargo.toml index c4bde66fc8..5bc00b1230 100644 --- a/srml/system/Cargo.toml +++ b/srml/system/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } @@ -20,7 +19,6 @@ srml-support = { path = "../support", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "safe-mix/std", "parity-codec/std", "parity-codec-derive/std", diff --git a/srml/system/src/lib.rs b/srml/system/src/lib.rs index b10b311259..eccd99a98c 100644 --- a/srml/system/src/lib.rs +++ b/srml/system/src/lib.rs @@ -27,10 +27,6 @@ extern crate sr_std as rstd; #[macro_use] extern crate srml_support as runtime_support; -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - #[macro_use] extern crate parity_codec_derive; @@ -41,7 +37,8 @@ extern crate safe_mix; use rstd::prelude::*; use primitives::traits::{self, CheckEqual, SimpleArithmetic, SimpleBitOps, Zero, One, Bounded, Lookup, - Hash, Member, MaybeDisplay, EnsureOrigin, Digest as DigestT, As, CurrentHeight, BlockNumberToHash}; + Hash, Member, MaybeDisplay, EnsureOrigin, Digest as DigestT, As, CurrentHeight, BlockNumberToHash, + MaybeSerializeDebugButNotDeserialize, MaybeSerializeDebug}; use substrate_primitives::storage::well_known_keys; use runtime_support::{storage, StorageValue, StorageMap, Parameter}; use safe_mix::TripletMix; @@ -68,12 +65,12 @@ pub fn extrinsics_data_root(xts: Vec>) -> H::Output { pub trait Trait: Eq + Clone { type Origin: Into>> + From>; - type Index: Parameter + Member + Default + MaybeDisplay + SimpleArithmetic + Copy; - type BlockNumber: Parameter + Member + MaybeDisplay + SimpleArithmetic + Default + Bounded + Copy + rstd::hash::Hash; - type Hash: Parameter + Member + MaybeDisplay + SimpleBitOps + Default + Copy + CheckEqual + rstd::hash::Hash + AsRef<[u8]> + AsMut<[u8]>; + type Index: Parameter + Member + MaybeSerializeDebugButNotDeserialize + Default + MaybeDisplay + SimpleArithmetic + Copy; + type BlockNumber: Parameter + Member + MaybeSerializeDebug + MaybeDisplay + SimpleArithmetic + Default + Bounded + Copy + rstd::hash::Hash; + type Hash: Parameter + Member + MaybeSerializeDebug + MaybeDisplay + SimpleBitOps + Default + Copy + CheckEqual + rstd::hash::Hash + AsRef<[u8]> + AsMut<[u8]>; type Hashing: Hash; - type Digest: Parameter + Member + Default + traits::Digest; - type AccountId: Parameter + Member + MaybeDisplay + Ord + Default; + type Digest: Parameter + Member + MaybeSerializeDebugButNotDeserialize + Default + traits::Digest; + type AccountId: Parameter + Member + MaybeSerializeDebug + MaybeDisplay + Ord + Default; type Header: Parameter + traits::Header< Number = Self::BlockNumber, Hash = Self::Hash, diff --git a/srml/timestamp/Cargo.toml b/srml/timestamp/Cargo.toml index c07a62aeda..8472bb89ca 100644 --- a/srml/timestamp/Cargo.toml +++ b/srml/timestamp/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } parity-codec-derive = { version = "2.1", default-features = false } parity-codec = { version = "2.1", default-features = false } substrate-primitives = { path = "../../core/primitives", default-features = false } @@ -29,7 +28,6 @@ std = [ "sr-primitives/std", "srml-consensus/std", "serde/std", - "serde_derive", "parity-codec-derive/std", "parity-codec/std", "substrate-primitives/std", diff --git a/srml/timestamp/src/lib.rs b/srml/timestamp/src/lib.rs index 36004e88c3..8911a7e5df 100644 --- a/srml/timestamp/src/lib.rs +++ b/srml/timestamp/src/lib.rs @@ -39,10 +39,6 @@ extern crate sr_std as rstd; #[macro_use] extern crate srml_support as runtime_support; -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - #[cfg(test)] extern crate substrate_primitives; #[cfg(test)] diff --git a/srml/treasury/Cargo.toml b/srml/treasury/Cargo.toml index 32621e1561..9090ac4d9b 100644 --- a/srml/treasury/Cargo.toml +++ b/srml/treasury/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } substrate-primitives = { path = "../../core/primitives", default-features = false } @@ -21,7 +20,6 @@ srml-balances = { path = "../balances", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "parity-codec/std", "parity-codec-derive/std", "substrate-primitives/std", diff --git a/srml/treasury/src/lib.rs b/srml/treasury/src/lib.rs index 94e60e4b32..340ab48a8c 100644 --- a/srml/treasury/src/lib.rs +++ b/srml/treasury/src/lib.rs @@ -25,10 +25,6 @@ extern crate srml_support as runtime_support; #[cfg(test)] extern crate sr_io as runtime_io; - -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; #[cfg(feature = "std")] extern crate serde; diff --git a/srml/upgrade-key/Cargo.toml b/srml/upgrade-key/Cargo.toml index 980a7240a9..74561894ac 100644 --- a/srml/upgrade-key/Cargo.toml +++ b/srml/upgrade-key/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } substrate-primitives = { path = "../../core/primitives", default-features = false } @@ -21,7 +20,6 @@ srml-consensus = { path = "../consensus", default-features = false } default = ["std"] std = [ "serde/std", - "serde_derive", "parity-codec/std", "parity-codec-derive/std", "sr-std/std", diff --git a/srml/upgrade-key/src/lib.rs b/srml/upgrade-key/src/lib.rs index 28433d8fbd..9a8e7493e9 100644 --- a/srml/upgrade-key/src/lib.rs +++ b/srml/upgrade-key/src/lib.rs @@ -25,9 +25,6 @@ extern crate sr_io; #[cfg(test)] extern crate substrate_primitives; extern crate sr_primitives; -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; #[macro_use] extern crate parity_codec_derive; extern crate parity_codec as codec; -- GitLab From 8e8f86c4f91a2a9029e9febf3a2383e8182c50d1 Mon Sep 17 00:00:00 2001 From: Andrew Jones Date: Mon, 12 Nov 2018 18:58:44 +0000 Subject: [PATCH 036/243] RPC: expose chain spec `properties` (#1104) * Add properties to chain spec * Read properties as serde_json::Value * Use a serde json::map::Map directly for properties * Add type alias for json Map * Update chain_spec.rs --- Cargo.lock | 1 + core/rpc/Cargo.toml | 1 + core/rpc/src/system/mod.rs | 4 ++++ core/rpc/src/system/tests.rs | 11 +++++++++++ core/service/src/chain_spec.rs | 11 +++++++++++ core/service/src/lib.rs | 8 +++++++- node/cli/res/bbq-birch.json | 3 +++ node/cli/src/chain_spec.rs | 7 ++++--- 8 files changed, 42 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c17744a472..f62c803817 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3325,6 +3325,7 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-version 0.1.0", "substrate-client 0.1.0", diff --git a/core/rpc/Cargo.toml b/core/rpc/Cargo.toml index 3f35394c91..0a1c95bb5e 100644 --- a/core/rpc/Cargo.toml +++ b/core/rpc/Cargo.toml @@ -11,6 +11,7 @@ jsonrpc-pubsub = { git="https://github.com/paritytech/jsonrpc.git" } log = "0.4" parking_lot = "0.4" parity-codec = "2.1" +serde_json = "1.0" substrate-client = { path = "../client" } substrate-executor = { path = "../executor" } substrate-transaction-pool = { path = "../transaction-pool" } diff --git a/core/rpc/src/system/mod.rs b/core/rpc/src/system/mod.rs index 78fd7dda87..44f9033a2d 100644 --- a/core/rpc/src/system/mod.rs +++ b/core/rpc/src/system/mod.rs @@ -37,5 +37,9 @@ build_rpc_trait! { /// Get the chain's type. Given as a string identifier. #[rpc(name = "system_chain")] fn system_chain(&self) -> Result; + + /// Get a custom set of properties as a JSON object, defined in the chain spec. + #[rpc(name = "system_properties")] + fn system_properties(&self) -> Result>; } } diff --git a/core/rpc/src/system/tests.rs b/core/rpc/src/system/tests.rs index 95f37e79c8..0a1222c068 100644 --- a/core/rpc/src/system/tests.rs +++ b/core/rpc/src/system/tests.rs @@ -27,6 +27,9 @@ impl SystemApi for () { fn system_chain(&self) -> Result { Ok("testchain".into()) } + fn system_properties(&self) -> Result> { + Ok(serde_json::map::Map::new()) + } } #[test] @@ -52,3 +55,11 @@ fn system_chain_works() { "testchain".to_owned() ); } + +#[test] +fn system_properties_works() { + assert_eq!( + SystemApi::system_properties(&()).unwrap(), + serde_json::map::Map::new() + ); +} diff --git a/core/service/src/chain_spec.rs b/core/service/src/chain_spec.rs index 1b9cad490a..bc3ebf63cb 100644 --- a/core/service/src/chain_spec.rs +++ b/core/service/src/chain_spec.rs @@ -88,8 +88,12 @@ struct ChainSpecFile { pub telemetry_url: Option, pub protocol_id: Option, pub consensus_engine: Option, + pub properties: Option, } +/// Arbitrary properties defined in chain spec as a JSON object +pub type Properties = json::map::Map; + /// A configuration of a chain. Can be used to build a genesis block. pub struct ChainSpec { spec: ChainSpecFile, @@ -130,6 +134,11 @@ impl ChainSpec { self.spec.consensus_engine.as_ref().map(String::as_str) } + pub fn properties(&self) -> Properties { + // Return an empty JSON object if 'properties' not defined in config + self.spec.properties.as_ref().unwrap_or(&json::map::Map::new()).clone() + } + /// Parse json content into a `ChainSpec` pub fn from_embedded(json: &'static [u8]) -> Result { let spec = json::from_slice(json).map_err(|e| format!("Error parsing spec file: {}", e))?; @@ -158,6 +167,7 @@ impl ChainSpec { telemetry_url: Option<&str>, protocol_id: Option<&str>, consensus_engine: Option<&str>, + properties: Option, ) -> Self { let spec = ChainSpecFile { @@ -167,6 +177,7 @@ impl ChainSpec { telemetry_url: telemetry_url.map(str::to_owned), protocol_id: protocol_id.map(str::to_owned), consensus_engine: consensus_engine.map(str::to_owned), + properties, }; ChainSpec { spec, diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index 3b817e4ced..07dbf9addb 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -78,7 +78,7 @@ use codec::{Encode, Decode}; pub use self::error::{ErrorKind, Error}; pub use config::{Configuration, Roles, PruningMode}; -pub use chain_spec::ChainSpec; +pub use chain_spec::{ChainSpec, Properties}; pub use transaction_pool::txpool::{self, Pool as TransactionPool, Options as TransactionPoolOptions, ChainApi, IntoPoolError}; pub use client::ExecutionStrategy; @@ -235,6 +235,7 @@ impl Service // RPC let rpc_config = RpcConfig { chain_name: config.chain_spec.name().to_string(), + properties: config.chain_spec.properties().clone(), impl_name: config.impl_name, impl_version: config.impl_version, }; @@ -378,6 +379,7 @@ fn maybe_start_server(address: Option, start: F) -> Result substrate_rpc::system::error::Result { Ok(self.chain_name.clone()) } + + fn system_properties(&self) -> substrate_rpc::system::error::Result { + Ok(self.properties.clone()) + } } /// Transaction pool adapter. diff --git a/node/cli/res/bbq-birch.json b/node/cli/res/bbq-birch.json index 7504b7e8ca..ebd6b19fbd 100644 --- a/node/cli/res/bbq-birch.json +++ b/node/cli/res/bbq-birch.json @@ -1,6 +1,9 @@ { "name": "BBQ Birch", "id": "bbq-birch", + "properties": { + "tokenSymbol": "BBQ" + }, "telemetryUrl": "wss://telemetry.polkadot.io/submit/", "protocolId": null, "bootNodes": [ diff --git a/node/cli/src/chain_spec.rs b/node/cli/src/chain_spec.rs index 5058f0de60..a3fd6e0863 100644 --- a/node/cli/src/chain_spec.rs +++ b/node/cli/src/chain_spec.rs @@ -140,6 +140,7 @@ pub fn staging_testnet_config() -> ChainSpec { Some(STAGING_TELEMETRY_URL.into()), None, None, + None, ) } @@ -240,7 +241,7 @@ fn development_config_genesis() -> GenesisConfig { /// Development config (single validator Alice) pub fn development_config() -> ChainSpec { - ChainSpec::from_genesis("Development", "development", development_config_genesis, vec![], None, None, None) + ChainSpec::from_genesis("Development", "development", development_config_genesis, vec![], None, None, None, None) } fn local_testnet_genesis() -> GenesisConfig { @@ -254,7 +255,7 @@ fn local_testnet_genesis() -> GenesisConfig { /// Local testnet config (multivalidator Alice + Bob) pub fn local_testnet_config() -> ChainSpec { - ChainSpec::from_genesis("Local Testnet", "local_testnet", local_testnet_genesis, vec![], None, None, None) + ChainSpec::from_genesis("Local Testnet", "local_testnet", local_testnet_genesis, vec![], None, None, None, None) } #[cfg(test)] @@ -271,7 +272,7 @@ mod tests { /// Local testnet config (multivalidator Alice + Bob) pub fn integration_test_config() -> ChainSpec { - ChainSpec::from_genesis("Integration Test", "test", local_testnet_genesis_instant, vec![], None, None, None) + ChainSpec::from_genesis("Integration Test", "test", local_testnet_genesis_instant, vec![], None, None, None, None) } #[test] -- GitLab From 4c0327e064649b91a9ac1fce88e2e9e13e0ce3cd Mon Sep 17 00:00:00 2001 From: Chevdor Date: Mon, 12 Nov 2018 20:13:13 +0100 Subject: [PATCH 037/243] Also change the image for the second stage (#1103) The fix in #1101 fixed the build but it produces an image that could not run. The PR fixes that as well. Ref #1099 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d4a43eda8d..f7a36f2a5b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ RUN cargo build --$PROFILE # ===== SECOND STAGE ====== -FROM alpine:3.8 +FROM alpine:edge LABEL maintainer="chevdor@gmail.com" LABEL description="This is the 2nd stage: a very small image where we copy the Substrate binary." ARG PROFILE=release -- GitLab From 3f4cfeee8085723242735a6f9f29d26a9ce4517a Mon Sep 17 00:00:00 2001 From: azban Date: Mon, 12 Nov 2018 11:21:03 -0800 Subject: [PATCH 038/243] test-utils: add chain-spec-builder cli (#1061) * test-utils: add chain-spec-builder cli * style changes, mostly indentation * fix padding * add issue to todo * more style fixes * share seed padding with keystore * fix master rebase error --- Cargo.lock | 1 + Cargo.toml | 1 + core/keystore/src/lib.rs | 39 +- core/service/src/lib.rs | 4 +- node/cli/Cargo.toml | 1 + node/cli/src/chain_spec.rs | 95 +- node/cli/src/lib.rs | 3 +- test-utils/chain-spec-builder/Cargo.lock | 3943 +++++++++++++++++++++ test-utils/chain-spec-builder/Cargo.toml | 10 + test-utils/chain-spec-builder/src/cli.yml | 24 + test-utils/chain-spec-builder/src/main.rs | 51 + 11 files changed, 4116 insertions(+), 56 deletions(-) create mode 100644 test-utils/chain-spec-builder/Cargo.lock create mode 100644 test-utils/chain-spec-builder/Cargo.toml create mode 100644 test-utils/chain-spec-builder/src/cli.yml create mode 100644 test-utils/chain-spec-builder/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index f62c803817..cab6452706 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1729,6 +1729,7 @@ dependencies = [ "substrate-cli 0.3.0", "substrate-client 0.1.0", "substrate-consensus-aura 0.1.0", + "substrate-keystore 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", "substrate-service 0.3.0", diff --git a/Cargo.toml b/Cargo.toml index 54ae7d9d82..0396030022 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -76,6 +76,7 @@ exclude = [ "core/executor/wasm", "pwasm-alloc", "core/test-runtime/wasm", + "test-utils/chain-spec-builder" ] [badges] diff --git a/core/keystore/src/lib.rs b/core/keystore/src/lib.rs index aeb9c50886..5a87fbcd7e 100644 --- a/core/keystore/src/lib.rs +++ b/core/keystore/src/lib.rs @@ -131,6 +131,24 @@ pub struct Store { additional: HashMap, } +pub fn pad_seed(seed: &str) -> Seed { + let mut s: [u8; 32] = [' ' as u8; 32]; + + let was_hex = if seed.len() == 66 && &seed[0..2] == "0x" { + if let Ok(d) = hex::decode(&seed[2..]) { + s.copy_from_slice(&d); + true + } else { false } + } else { false }; + + if !was_hex { + let len = ::std::cmp::min(32, seed.len()); + &mut s[..len].copy_from_slice(&seed.as_bytes()[..len]); + } + + s +} + impl Store { /// Create a new store at the given path. pub fn open(path: PathBuf) -> Result { @@ -153,24 +171,11 @@ impl Store { /// Create a new key from seed. Do not place it into the store. /// Only the first 32 bytes of the sead are used. This is meant to be used for testing only. - // TODO: Remove this + // FIXME: remove this - https://github.com/paritytech/substrate/issues/1063 pub fn generate_from_seed(&mut self, seed: &str) -> Result { - let mut s: [u8; 32] = [' ' as u8; 32]; - - let was_hex = if seed.len() == 66 && &seed[0..2] == "0x" { - if let Ok(d) = hex::decode(&seed[2..]) { - s.copy_from_slice(&d); - true - } else { false } - } else { false }; - - if !was_hex { - let len = ::std::cmp::min(32, seed.len()); - &mut s[..len].copy_from_slice(&seed.as_bytes()[..len]); - } - - let pair = Pair::from_seed(&s); - self.additional.insert(pair.public(), s); + let padded_seed = pad_seed(seed); + let pair = Pair::from_seed(&padded_seed); + self.additional.insert(pair.public(), padded_seed); Ok(pair) } diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index 07dbf9addb..6592bce75f 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -139,10 +139,12 @@ impl Service let executor = NativeExecutor::new(); let mut keystore = Keystore::open(config.keystore_path.as_str().into())?; + + // This is meant to be for testing only + // FIXME: remove this - https://github.com/paritytech/substrate/issues/1063 for seed in &config.keys { keystore.generate_from_seed(seed)?; } - // Keep the public key for telemetry let public_key = match keystore.contents()?.get(0) { Some(public_key) => public_key.clone(), diff --git a/node/cli/Cargo.toml b/node/cli/Cargo.toml index 6f1f92cc82..2ffabbbabb 100644 --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -24,6 +24,7 @@ substrate-network = { path = "../../core/network" } substrate-consensus-aura = { path = "../../core/consensus/aura" } sr-primitives = { path = "../../core/sr-primitives" } node-executor = { path = "../executor" } +substrate-keystore = { path = "../../core/keystore" } [dev-dependencies] substrate-service-test = { path = "../../core/service/test" } diff --git a/node/cli/src/chain_spec.rs b/node/cli/src/chain_spec.rs index a3fd6e0863..1efef9e84b 100644 --- a/node/cli/src/chain_spec.rs +++ b/node/cli/src/chain_spec.rs @@ -18,16 +18,20 @@ use primitives::{AuthorityId, ed25519}; use node_primitives::AccountId; -use node_runtime::{GenesisConfig, ConsensusConfig, CouncilSeatsConfig, CouncilVotingConfig, DemocracyConfig, - SessionConfig, StakingConfig, TimestampConfig, BalancesConfig, TreasuryConfig, UpgradeKeyConfig, - ContractConfig, Permill, Perbill}; +use node_runtime::{ConsensusConfig, CouncilSeatsConfig, CouncilVotingConfig, DemocracyConfig, + SessionConfig, StakingConfig, TimestampConfig, BalancesConfig, TreasuryConfig, + UpgradeKeyConfig, ContractConfig, Permill, Perbill}; +pub use node_runtime::GenesisConfig; use substrate_service; +use substrate_keystore::pad_seed; + const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; /// Specialised `ChainSpec`. pub type ChainSpec = substrate_service::ChainSpec; +/// BBQ birch testnet generator pub fn bbq_birch_config() -> Result { ChainSpec::from_embedded(include_bytes!("../res/bbq-birch.json")) } @@ -43,7 +47,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig { hex!["f295940fa750df68a686fcf4abd4111c8a9c5a5a5a83c4c8639c451a94a7adfd"].into(), ]; const MILLICENTS: u128 = 1_000_000_000; - const CENTS: u128 = 1_000 * MILLICENTS; // assume this is worth about a cent. + const CENTS: u128 = 1_000 * MILLICENTS; // assume this is worth about a cent. const DOLLARS: u128 = 100 * CENTS; const SECS_PER_BLOCK: u64 = 4; @@ -53,12 +57,12 @@ fn staging_testnet_config_genesis() -> GenesisConfig { GenesisConfig { consensus: Some(ConsensusConfig { - code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), // TODO change + code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), // TODO change authorities: initial_authorities.clone(), }), system: None, balances: Some(BalancesConfig { - balances: endowed_accounts.iter().map(|&k|(k, 10_000_000 * DOLLARS)).collect(), + balances: endowed_accounts.iter().map(|&k| (k, 10_000_000 * DOLLARS)).collect(), transaction_base_fee: 1 * CENTS, transaction_byte_fee: 10 * MILLICENTS, existential_deposit: 1 * DOLLARS, @@ -68,7 +72,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig { }), session: Some(SessionConfig { validators: initial_authorities.iter().cloned().map(Into::into).collect(), - session_length: 5 * MINUTES + session_length: 5 * MINUTES, }), staking: Some(StakingConfig { current_era: 0, @@ -84,9 +88,9 @@ fn staging_testnet_config_genesis() -> GenesisConfig { minimum_validator_count: 4, }), democracy: Some(DemocracyConfig { - launch_period: 5 * MINUTES, // 1 day per public referendum - voting_period: 5 * MINUTES, // 3 days to discuss & vote on an active referendum - minimum_deposit: 50 * DOLLARS, // 12000 as the minimum deposit for a referendum + launch_period: 5 * MINUTES, // 1 day per public referendum + voting_period: 5 * MINUTES, // 3 days to discuss & vote on an active referendum + minimum_deposit: 50 * DOLLARS, // 12000 as the minimum deposit for a referendum }), council_seats: Some(CouncilSeatsConfig { active_council: vec![], @@ -98,8 +102,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig { approval_voting_period: 2 * DAYS, term_duration: 28 * DAYS, desired_seats: 0, - inactive_grace_period: 1, // one additional vote should go by before an inactive voter can be reaped. - + inactive_grace_period: 1, // one additional vote should go by before an inactive voter can be reaped. }), council_voting: Some(CouncilVotingConfig { cooloff_period: 4 * DAYS, @@ -130,8 +133,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig { /// Staging testnet config. pub fn staging_testnet_config() -> ChainSpec { - let boot_nodes = vec![ - ]; + let boot_nodes = vec![]; ChainSpec::from_genesis( "Staging Testnet", "staging_testnet", @@ -144,15 +146,30 @@ pub fn staging_testnet_config() -> ChainSpec { ) } -fn testnet_genesis(initial_authorities: Vec, upgrade_key: AccountId) -> GenesisConfig { - let endowed_accounts = vec![ - ed25519::Pair::from_seed(b"Alice ").public().0.into(), - ed25519::Pair::from_seed(b"Bob ").public().0.into(), - ed25519::Pair::from_seed(b"Charlie ").public().0.into(), - ed25519::Pair::from_seed(b"Dave ").public().0.into(), - ed25519::Pair::from_seed(b"Eve ").public().0.into(), - ed25519::Pair::from_seed(b"Ferdie ").public().0.into(), - ]; +/// Helper function to generate AuthorityID from seed +pub fn get_authority_id_from_seed(seed: &str) -> AuthorityId { + let padded_seed = pad_seed(seed); + // NOTE from ed25519 impl: + // prefer pkcs#8 unless security doesn't matter -- this is used primarily for tests. + ed25519::Pair::from_seed(&padded_seed).public().0.into() +} + +/// Helper function to create GenesisConfig for testing +pub fn testnet_genesis( + initial_authorities: Vec, + upgrade_key: AccountId, + endowed_accounts: Option>, +) -> GenesisConfig { + let endowed_accounts = endowed_accounts.unwrap_or_else(|| { + vec![ + get_authority_id_from_seed("Alice"), + get_authority_id_from_seed("Bob"), + get_authority_id_from_seed("Charlie"), + get_authority_id_from_seed("Dave"), + get_authority_id_from_seed("Eve"), + get_authority_id_from_seed("Ferdie"), + ] + }); GenesisConfig { consensus: Some(ConsensusConfig { code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), @@ -166,7 +183,7 @@ fn testnet_genesis(initial_authorities: Vec, upgrade_key: AccountId transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, - balances: endowed_accounts.iter().map(|&k|(k, (1 << 60))).collect(), + balances: endowed_accounts.iter().map(|&k| (k.into(), (1 << 60))).collect(), }), session: Some(SessionConfig { validators: initial_authorities.iter().cloned().map(Into::into).collect(), @@ -192,8 +209,8 @@ fn testnet_genesis(initial_authorities: Vec, upgrade_key: AccountId }), council_seats: Some(CouncilSeatsConfig { active_council: endowed_accounts.iter() - .filter(|a| initial_authorities.iter().find(|&b| a.as_bytes() == b.0).is_none()) - .map(|a| (a.clone(), 1000000)).collect(), + .filter(|a| initial_authorities.iter().find(|&b| a.0 == b.0).is_none()) + .map(|a| (a.clone().into(), 1000000)).collect(), candidacy_bond: 10, voter_bond: 2, present_slash_per_voter: 1, @@ -209,7 +226,7 @@ fn testnet_genesis(initial_authorities: Vec, upgrade_key: AccountId voting_period: 20, }), timestamp: Some(TimestampConfig { - period: 5, // 5 second block time. + period: 5, // 5 second block time. }), treasury: Some(TreasuryConfig { proposal_bond: Permill::from_percent(5), @@ -232,10 +249,12 @@ fn testnet_genesis(initial_authorities: Vec, upgrade_key: AccountId } fn development_config_genesis() -> GenesisConfig { - testnet_genesis(vec![ - ed25519::Pair::from_seed(b"Alice ").public().into(), - ], - ed25519::Pair::from_seed(b"Alice ").public().0.into() + testnet_genesis( + vec![ + get_authority_id_from_seed("Alice"), + ], + get_authority_id_from_seed("Alice").into(), + None, ) } @@ -245,11 +264,13 @@ pub fn development_config() -> ChainSpec { } fn local_testnet_genesis() -> GenesisConfig { - testnet_genesis(vec![ - ed25519::Pair::from_seed(b"Alice ").public().into(), - ed25519::Pair::from_seed(b"Bob ").public().into(), - ], - ed25519::Pair::from_seed(b"Alice ").public().0.into() + testnet_genesis( + vec![ + get_authority_id_from_seed("Alice"), + get_authority_id_from_seed("Bob"), + ], + get_authority_id_from_seed("Alice").into(), + None, ) } @@ -276,7 +297,7 @@ mod tests { } #[test] - fn test_connectivity() { + fn test_connectiviy() { service_test::connectivity::(integration_test_config()); } } diff --git a/node/cli/src/lib.rs b/node/cli/src/lib.rs index beb47f91ff..078ee5e143 100644 --- a/node/cli/src/lib.rs +++ b/node/cli/src/lib.rs @@ -37,12 +37,13 @@ extern crate node_primitives; #[macro_use] extern crate substrate_service; extern crate node_executor; +extern crate substrate_keystore; #[macro_use] extern crate log; pub use cli::error; -mod chain_spec; +pub mod chain_spec; mod service; use tokio::runtime::Runtime; diff --git a/test-utils/chain-spec-builder/Cargo.lock b/test-utils/chain-spec-builder/Cargo.lock new file mode 100644 index 0000000000..9a05a2818e --- /dev/null +++ b/test-utils/chain-spec-builder/Cargo.lock @@ -0,0 +1,3943 @@ +[[package]] +name = "aes-ctr" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aes-soft 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "aesni 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ctr 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aes-soft" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aesni" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aho-corasick" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aio-limited" +version = "0.1.0" +source = "git+https://github.com/paritytech/aio-limited.git#a7c0bd6944902b1c9fb2bcf4f8fe1412c824b5b9" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ansi_term" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "app_dirs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "arrayref" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "arrayvec" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "asn1_der" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "etrace 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "atty" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "backtrace" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "backtrace-sys" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "base58" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "base64" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "base64" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "base64" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bigint" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bitflags" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bitflags" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "blake2-rfc" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "block-buffer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "block-cipher-trait" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bs58" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byte-tools" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byteorder" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byteorder" +version = "1.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bytes" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cc" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cfg-if" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "chain-spec-builder" +version = "0.1.0" +dependencies = [ + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "node-cli 0.1.0", + "substrate-primitives 0.1.0", + "substrate-service 0.3.0", +] + +[[package]] +name = "chashmap" +version = "2.2.1" +source = "git+https://github.com/redox-os/tfs#3e7dcdb0c586d0d8bb3f25bfd948d2f418a4ab10" +dependencies = [ + "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "chrono" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "clap" +version = "2.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "yaml-rust 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cmake" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "core-foundation" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "core-foundation-sys" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "crossbeam-deque" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-deque" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.5.0" +source = "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 = "ctr" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "datastore" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "chashmap 2.2.1 (git+https://github.com/redox-os/tfs)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "digest" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "either" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "elastic-array" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "env_logger" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "environmental" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "error-chain" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "eth-secp256k1" +version = "0.5.7" +source = "git+https://github.com/paritytech/rust-secp256k1#ccc06e7480148b723eb44ac56cf4d20eec380b6f" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "etrace" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "exit-future" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fdlimit" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fixed-hash" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fnv" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fs-swap" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-cpupool" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "gcc" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "generic-array" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "getopts" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "globset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "h2" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hash-db" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" + +[[package]] +name = "hash256-std-hasher" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" +dependencies = [ + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heapsize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hex" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "hex-literal" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hex-literal-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "http" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "httparse" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "humantime" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hyper" +version = "0.10.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hyper" +version = "0.12.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "indexmap" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "integer-sqrt" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "interleaved-ordered" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "iovec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "itoa" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "jsonrpc-core" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#2ed142d55662155b0dc76b9b5d2732300f265dd6" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "jsonrpc-http-server" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#2ed142d55662155b0dc76b9b5d2732300f265dd6" +dependencies = [ + "hyper 0.12.13 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-server-utils 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "jsonrpc-macros" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#2ed142d55662155b0dc76b9b5d2732300f265dd6" +dependencies = [ + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "jsonrpc-pubsub" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#2ed142d55662155b0dc76b9b5d2732300f265dd6" +dependencies = [ + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "jsonrpc-server-utils" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#2ed142d55662155b0dc76b9b5d2732300f265dd6" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "jsonrpc-ws-server" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#2ed142d55662155b0dc76b9b5d2732300f265dd6" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-server-utils 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ws 0.7.5 (git+https://github.com/tomusdrw/ws-rs)", +] + +[[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 = "kvdb" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "kvdb-rocksdb" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 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)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "language-tags" +version = "0.2.2" +source = "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.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lazycell" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.43" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libloading" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-dns 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-floodsub 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-identify 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-kad 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-mplex 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-peerstore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-ping 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-ratelimit 0.1.1 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-relay 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-secio 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-tcp-transport 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-transport-timeout 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-uds 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-websocket 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-yamux 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-core" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "multihash 0.8.1-pre (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "multistream-select 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rw-stream-sink 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "smallvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-dns" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "tokio-dns-unofficial 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-floodsub" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-identify" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-peerstore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-kad" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bigint 4.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "datastore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-identify 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-ping 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-mplex" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-peerstore" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "datastore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-ping" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "multistream-select 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-ratelimit" +version = "0.1.1" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "aio-limited 0.1.0 (git+https://github.com/paritytech/aio-limited.git)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-relay" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "libp2p-peerstore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-secio" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "aes-ctr 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "asn1_der 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "ctr 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rw-stream-sink 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "twofish 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-tcp-transport" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "tk-listen 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-transport-timeout" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-uds" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libp2p-websocket" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "rw-stream-sink 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.20.3 (git+https://github.com/tomaka/rust-websocket?branch=send)", +] + +[[package]] +name = "libp2p-yamux" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "yamux 0.1.0 (git+https://github.com/paritytech/yamux)", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "local-encoding" +version = "0.2.0" +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)", + "skeptic 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lock_api" +version = "0.1.4" +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)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mashup" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "mashup-impl 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mashup-impl" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memchr" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "memoffset" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memory-db" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" +dependencies = [ + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "heapsize 0.4.2 (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 = "mime" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio" +version = "0.6.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.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 = "mio-extras" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio-uds" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miow" +version = "0.2.1" +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)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "multiaddr" +version = "0.3.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "multihash 0.8.1-pre (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "multihash" +version = "0.8.1-pre" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "sha1 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "multistream-select" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "names" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "nan-preserving-float" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "native-tls" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)", + "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "net2" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-cli" +version = "0.1.0" +dependencies = [ + "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "node-executor 0.1.0", + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "substrate-cli 0.3.0", + "substrate-client 0.1.0", + "substrate-consensus-aura 0.1.0", + "substrate-network 0.1.0", + "substrate-primitives 0.1.0", + "substrate-service 0.3.0", + "substrate-transaction-pool 0.1.0", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-executor" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "substrate-executor 0.1.0", + "substrate-primitives 0.1.0", + "substrate-state-machine 0.1.0", + "substrate-trie 0.4.0", + "trie-root 0.9.0 (git+https://github.com/paritytech/trie)", +] + +[[package]] +name = "node-primitives" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "node-runtime" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "node-primitives 0.1.0", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-api 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-contract 0.1.0", + "srml-council 0.1.0", + "srml-democracy 0.1.0", + "srml-executive 0.1.0", + "srml-session 0.1.0", + "srml-staking 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "srml-treasury 0.1.0", + "srml-upgrade-key 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "nodrop" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "nohash-hasher" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "num-integer" +version = "0.1.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-traits" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "num_cpus" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ole32-sys" +version = "0.2.0" +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 = "opaque-debug" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "openssl" +version = "0.9.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "openssl" +version = "0.10.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "openssl-sys" +version = "0.9.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "owning_ref" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-bytes" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "parity-codec" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-codec-derive" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-crypto" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-rocksdb" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "local-encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-rocksdb-sys 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-rocksdb-sys" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "local-encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-snappy-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-snappy-sys" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-wasm" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (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.14 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot" +version = "0.5.5" +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.14 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot_core" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "pkg-config" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro-hack" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-hack-impl" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro2" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "protobuf" +version = "2.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "pulldown-cmark" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pwasm-utils" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quick-error" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "quick-error" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "quote" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rayon" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon-core" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_syscall" +version = "0.1.40" +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.40 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex-syntax" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex-syntax" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "remove_dir_all" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ring" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rust-crypto" +version = "0.2.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustc-hex" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustc-hex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustc-serialize" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rw-stream-sink" +version = "0.1.0" +source = "git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d#8111062f0177fd7423626f2db9560273644a4c4d" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ryu" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "safe-mix" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "safemem" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "safemem" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "schannel" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "scoped-tls" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "scopeguard" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "security-framework" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "security-framework-sys" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "serde" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "serde_derive" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.17 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_json" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sha1" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "sha1" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "sha2" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "shell32-sys" +version = "0.1.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 = "skeptic" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slab" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slab" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slog" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slog-async" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-json" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-scope" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "smallvec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "smallvec" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-api" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", +] + +[[package]] +name = "sr-io" +version = "0.1.0" +dependencies = [ + "environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", + "substrate-state-machine 0.1.0", + "substrate-trie 0.4.0", +] + +[[package]] +name = "sr-primitives" +version = "0.1.0" +dependencies = [ + "integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "sr-sandbox" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-std" +version = "0.1.0" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-version" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", +] + +[[package]] +name = "srml-balances" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-consensus" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-contract" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-council" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-democracy 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-democracy" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-executive" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", +] + +[[package]] +name = "srml-session" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-staking" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-session 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-support" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "substrate-metadata 0.1.0", +] + +[[package]] +name = "srml-system" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-timestamp" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-treasury" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-upgrade-key" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "stdweb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "stream-cipher" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "string" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "strsim" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "substrate-cli" +version = "0.3.0" +dependencies = [ + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.5.13 (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.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.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "substrate-client 0.1.0", + "substrate-network 0.1.0", + "substrate-network-libp2p 0.1.0", + "substrate-primitives 0.1.0", + "substrate-service 0.3.0", + "substrate-telemetry 0.3.0", + "sysinfo 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-client" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-api 0.1.0", + "sr-primitives 0.1.0", + "substrate-consensus-common 0.1.0", + "substrate-executor 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-state-machine 0.1.0", + "substrate-telemetry 0.3.0", + "substrate-trie 0.4.0", +] + +[[package]] +name = "substrate-client-db" +version = "0.1.0" +dependencies = [ + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "substrate-client 0.1.0", + "substrate-executor 0.1.0", + "substrate-primitives 0.1.0", + "substrate-state-db 0.1.0", + "substrate-state-machine 0.1.0", + "substrate-trie 0.4.0", +] + +[[package]] +name = "substrate-consensus-aura" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-version 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "substrate-client 0.1.0", + "substrate-consensus-common 0.1.0", + "substrate-network 0.1.0", + "substrate-primitives 0.1.0", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-consensus-common" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-version 0.1.0", + "substrate-primitives 0.1.0", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-executor" +version = "0.1.0" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-version 0.1.0", + "substrate-primitives 0.1.0", + "substrate-serializer 0.1.0", + "substrate-state-machine 0.1.0", + "substrate-trie 0.4.0", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-keyring" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "substrate-keystore" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-crypto 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0", + "subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-metadata" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-network" +version = "0.1.0" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "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)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "substrate-client 0.1.0", + "substrate-consensus-common 0.1.0", + "substrate-keyring 0.1.0", + "substrate-network-libp2p 0.1.0", + "substrate-primitives 0.1.0", + "substrate-test-client 0.1.0", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-network-libp2p" +version = "0.1.0" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-primitives" +version = "0.1.0" +dependencies = [ + "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-rpc" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-macros 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-version 0.1.0", + "substrate-client 0.1.0", + "substrate-executor 0.1.0", + "substrate-primitives 0.1.0", + "substrate-transaction-pool 0.1.0", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-rpc-servers" +version = "0.1.0" +dependencies = [ + "jsonrpc-http-server 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-ws-server 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "substrate-rpc 0.1.0", +] + +[[package]] +name = "substrate-serializer" +version = "0.1.0" +dependencies = [ + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-service" +version = "0.3.0" +dependencies = [ + "error-chain 0.12.0 (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.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "substrate-client 0.1.0", + "substrate-client-db 0.1.0", + "substrate-consensus-common 0.1.0", + "substrate-executor 0.1.0", + "substrate-keystore 0.1.0", + "substrate-network 0.1.0", + "substrate-primitives 0.1.0", + "substrate-rpc 0.1.0", + "substrate-rpc-servers 0.1.0", + "substrate-telemetry 0.3.0", + "substrate-transaction-pool 0.1.0", + "target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-state-db" +version = "0.1.0" +dependencies = [ + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "substrate-state-machine" +version = "0.1.0" +dependencies = [ + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0", + "substrate-trie 0.4.0", + "trie-db 0.9.0 (git+https://github.com/paritytech/trie)", + "trie-root 0.9.0 (git+https://github.com/paritytech/trie)", +] + +[[package]] +name = "substrate-telemetry" +version = "0.3.0" +dependencies = [ + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-json 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-scope 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-test-client" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "substrate-client 0.1.0", + "substrate-consensus-common 0.1.0", + "substrate-executor 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-test-runtime 0.1.0", +] + +[[package]] +name = "substrate-test-runtime" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-api 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", + "srml-support 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "substrate-transaction-graph" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", +] + +[[package]] +name = "substrate-transaction-pool" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "substrate-client 0.1.0", + "substrate-primitives 0.1.0", + "substrate-transaction-graph 0.1.0", +] + +[[package]] +name = "substrate-trie" +version = "0.4.0" +dependencies = [ + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "memory-db 0.9.0 (git+https://github.com/paritytech/trie)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-db 0.9.0 (git+https://github.com/paritytech/trie)", + "trie-root 0.9.0 (git+https://github.com/paritytech/trie)", +] + +[[package]] +name = "subtle" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "syn" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "syn" +version = "0.15.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sysinfo" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "target_info" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "tempdir" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tempfile" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "termcolor" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wincolor 1.0.1 (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.43 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.40 (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 = "textwrap" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "thread_local" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "time" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tiny-keccak" +version = "1.4.2" +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 = "tk-listen" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-codec" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-core" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-current-thread" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-dns-unofficial" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-executor" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-fs" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-io" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-reactor" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-tcp" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-threadpool" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-timer" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-tls" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-udp" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-uds" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "traitobject" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "trie-db" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" +dependencies = [ + "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "trie-root" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" +dependencies = [ + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", +] + +[[package]] +name = "try-lock" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "twofish" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "twox-hash" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "typeable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "typenum" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ucd-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "uint" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicase" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicase" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicode-width" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicode-xid" +version = "0.1.0" +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 = "unsigned-varint" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unsigned-varint" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (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 = "url" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "utf8-ranges" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "vcpkg" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "vec_map" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" +version = "0.1.5" +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 = "want" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasmi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "websocket" +version = "0.20.3" +source = "git+https://github.com/tomaka/rust-websocket?branch=send#28ea5eb82b573bf3ace2fc75c36d791bcedf08b1" +dependencies = [ + "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.1 (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.6" +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-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (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" + +[[package]] +name = "wincolor" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws" +version = "0.7.5" +source = "git+https://github.com/tomusdrw/ws-rs#f12d19c4c19422fc79af28a3181f598bc07ecd1e" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +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 = "xdg" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "yaml-rust" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "yamux" +version = "0.1.0" +source = "git+https://github.com/paritytech/yamux#966f2730f7a32150f282eef29fd2aecb14d7b9fa" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "nohash-hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[metadata] +"checksum aes-ctr 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f65958ff3692041c36fc009261ccd63f24cd8e0dc1164266f068c2387e8b4e4f" +"checksum aes-soft 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67cc03b0a090a05cb01e96998a01905d7ceedce1bc23b756c0bb7faa0682ccb1" +"checksum aesni 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6810b7fb9f2bb4f76f05ac1c170b8dde285b6308955dc3afd89710268c958d9e" +"checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" +"checksum aio-limited 0.1.0 (git+https://github.com/paritytech/aio-limited.git)" = "" +"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +"checksum app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e73a24bad9bd6a94d6395382a6c69fe071708ae4409f763c5475e14ee896313d" +"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" +"checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" +"checksum asn1_der 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "766afdc5c6d7c15de1abe4c9c15e360be3aa972c363ba5b606be3c4271235886" +"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" +"checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" +"checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" +"checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" +"checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" +"checksum base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5032d51da2741729bfdaeb2664d9b8c6d9fd1e2b90715c660b6def36628499c2" +"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" +"checksum bigint 4.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ebecac13b3c745150d7b6c3ea7572d372f09d627c2077e893bf26c5c7f70d282" +"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" +"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" +"checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" +"checksum block-cipher-trait 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "370424437b9459f3dfd68428ed9376ddfe03d8b70ede29cc533b3557df186ab4" +"checksum bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0de79cfb98e7aa9988188784d8664b4b5dad6eaaa0863b91d9a4ed871d4f7a42" +"checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" +"checksum byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96c8b41881888cc08af32d47ac4edd52bc7fa27fef774be47a92443756451304" +"checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d" +"checksum bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ce55bd354b095246fc34caf4e9e242f5297a7fd938b090cadfea6eee614aa62" +"checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" +"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" +"checksum chashmap 2.2.1 (git+https://github.com/redox-os/tfs)" = "" +"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" +"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" +"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +"checksum cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "6ec65ee4f9c9d16f335091d23693457ed4928657ba4982289d7fafee03bc614a" +"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" +"checksum core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25bfd746d203017f7d5cbd31ee5d8e17f94b6521c7af77ece6c9e4b2d4b16c67" +"checksum core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "065a5d7ffdcbc8fa145d6f0746f3555025b9097a9e9cda59f7467abae670c78d" +"checksum crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "bd66663db5a988098a89599d4857919b3acf7f61402e61365acfd3919857b9be" +"checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" +"checksum crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3486aefc4c0487b9cb52372c97df0a48b8c249514af1ee99703bf70d2f2ceda1" +"checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" +"checksum crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30fecfcac6abfef8771151f8be4abc9e4edc112c2bcb233314cafde2680536e9" +"checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" +"checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" +"checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" +"checksum ctr 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4b669fcb8e20124db86dbd9b01e74ec0e9e420e65381311ce5249864fc7ff0c0" +"checksum datastore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" +"checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" +"checksum elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88d4851b005ef16de812ea9acdb7bece2f0a40dd86c07b85631d7dafa54537bb" +"checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" +"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" +"checksum environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db746025e3ea695bfa0ae744dbacd5fcfc8db51b9760cf8bd0ab69708bb93c49" +"checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" +"checksum eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)" = "" +"checksum etrace 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f17311e68ea07046ee809b8513f6c259518bc10173681d98c21f8c3926f56f40" +"checksum exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9aa7b56cef68c4182db7212dece19cc9f6e2916cf9412e57e6cea53ec02f316d" +"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +"checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" +"checksum fixed-hash 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7afe6ce860afb14422711595a7b26ada9ed7de2f43c0b2ab79d09ee196287273" +"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" +"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +"checksum fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bb" +"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 futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" +"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" +"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" +"checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d" +"checksum getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797" +"checksum globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4743617a7464bbda3c8aec8558ff2f9429047e025771037df561d383337ff865" +"checksum h2 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "7dd33bafe2e6370e6c8eb0cf1b8c5f93390b90acde7e9b03723f166b28b648ed" +"checksum hash-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" +"checksum hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)" = "" +"checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" +"checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" +"checksum hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4da5f0e01bd8a71a224a4eedecaacfcabda388dbb7a80faf04d3514287572d95" +"checksum hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d340b6514f232f6db1bd16db65302a5278a04fef9ce867cb932e7e5fa21130a" +"checksum http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "24f58e8c2d8e886055c3ead7b28793e1455270b5fb39650984c224bc538ba581" +"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" +"checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e" +"checksum hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "df0caae6b71d266b91b4a83111a61d2b94ed2e2bea024c532b933dcff867e58c" +"checksum hyper 0.12.13 (registry+https://github.com/rust-lang/crates.io-index)" = "95ffee0d1d30de4313fdaaa485891ce924991d45bbc18adfc8ac5b1639e62fbb" +"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" +"checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" +"checksum interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "141340095b15ed7491bd3d4ced9d20cebfb826174b6bb03386381f62b01e3d77" +"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" +"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" +"checksum jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum jsonrpc-http-server 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum jsonrpc-macros 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum jsonrpc-server-utils 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum jsonrpc-ws-server 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "72ae89206cea31c32014b39d5a454b96135894221610dbfd19cf4d2d044fa546" +"checksum kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "06cf755dc587839ba34d3cbe3f12b6ad55850fbcdfe67336157a021a1a5c43ae" +"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" +"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" +"checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7" +"checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" +"checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" +"checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" +"checksum libp2p 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-dns 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-floodsub 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-identify 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-kad 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-mplex 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-peerstore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-ping 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-ratelimit 0.1.1 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-relay 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-secio 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-tcp-transport 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-transport-timeout 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-uds 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-websocket 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum libp2p-yamux 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" +"checksum local-encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e1ceb20f39ff7ae42f3ff9795f3986b1daad821caaa1e1732a0944103a5a1a66" +"checksum lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775751a3e69bde4df9b38dd00a1b5d6ac13791e4223d4a0506577f0dd27cfb7a" +"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" +"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f2d82b34c7fb11bb41719465c060589e291d505ca4735ea30016a91f6fc79c3b" +"checksum mashup-impl 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "aa607bfb674b4efb310512527d64266b065de3f894fc52f84efcbf7eaa5965fb" +"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +"checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16" +"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum memory-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" +"checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" +"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" +"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" +"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" +"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" +"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum multihash 0.8.1-pre (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum multistream-select 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" +"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" +"checksum native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f74dbadc8b43df7864539cedb7bc91345e532fdd913cfdc23ad94f4d2d40fbc0" +"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" +"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"checksum nohash-hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "27593c72432b8cec9ae79e92792a73c38341064d525b6b612a9fccf8b7d17407" +"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" +"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" +"checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" +"checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" +"checksum opaque-debug 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d620c9c26834b34f039489ac0dfdb12c7ac15ccaf818350a64c9b5334a452ad7" +"checksum openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "5e1309181cdcbdb51bc3b6bedb33dfac2a83b3d585033d3f6d9e22e8c1928613" +"checksum openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)" = "a3605c298474a3aa69de92d21139fb5e2a81688d308262359d85cdd0d12a7985" +"checksum openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)" = "278c1ad40a89aa1e741a1eed089a2f60b18fab8089c3139b542140fc7d674106" +"checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" +"checksum parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5168b4cf41f3835e4bc6ffb32f51bc9365dc50cb351904595b3931d917fd0c" +"checksum parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dca389ea5e1632c89b2ce54f7e2b4a8a8c9d278042222a91e0bf95451218cb4c" +"checksum parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffa42c2cb493b60b12c75b26e8c94cb734af4df4d7f2cc229dc04c1953dac189" +"checksum parity-crypto 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c1117f6574377d21309bfa1f7d69ff734120685d92b02c3f362b122585758840" +"checksum parity-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cd55d2d6d6000ec99f021cf52c9acc7d2a402e14f95ced4c5de230696fabe00b" +"checksum parity-rocksdb-sys 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0e59eda423021494a6cf1be74f6989add403f53157409993f794e17b123cab51" +"checksum parity-snappy-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c2086caac40c79289cb70d7e1c64f5888e1c53f5d38399d3e95101493739f423" +"checksum parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "511379a8194230c2395d2f5fa627a5a7e108a9f976656ce723ae68fca4097bfc" +"checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" +"checksum parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4d05f1349491390b1730afba60bb20d55761bef489a954546b58b4b34e1e2ac" +"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" +"checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" +"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" +"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" +"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" +"checksum proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c725b36c99df7af7bf9324e9c999b9e37d92c8f8caf106d82e1d7953218d2d8" +"checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" +"checksum proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "3d7b7eaaa90b4a90a932a9ea6666c95a389e424eff347f0f793979289429feee" +"checksum protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "671a9cce836bd3635b40b2b0a72783481755ee988c493891f4e974b45264cc9d" +"checksum pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07" +"checksum pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "efd695333cfae6e9dbe2703a6d040e252b57a6fc3b9a65c712615ac042b2e0c5" +"checksum quick-error 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb6ccf8db7bbcb9c2eae558db5ab4f3da1c2a87e4e597ed394726bc8ea6ca1d" +"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" +"checksum quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "63b5829244f52738cfee93b3a165c1911388675be000c888d2fae620dee8fa5b" +"checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" +"checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" +"checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" +"checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" +"checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" +"checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" +"checksum rayon 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "df7a791f788cb4c516f0e091301a29c2b71ef680db5e644a7d68835c8ae6dbfa" +"checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" +"checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" +"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" +"checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" +"checksum regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2069749032ea3ec200ca51e4a31df41759190a88edca0d2d86ee8bedf7073341" +"checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" +"checksum regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "747ba3b235651f6e2f67dfa8bcdcd073ddb7c243cb21c442fc12395dfcac212d" +"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" +"checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" +"checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a" +"checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395" +"checksum rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0ceb8ce7a5e520de349e1fa172baeba4a9e8d5ef06c47471863530bc4972ee1e" +"checksum rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "403bb3a286107a04825a5f82e1270acc1e14028d3d554d7a1e08914549575ab8" +"checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum rw-stream-sink 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=8111062f0177fd7423626f2db9560273644a4c4d)" = "" +"checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" +"checksum safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347" +"checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" +"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" +"checksum schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "0e1a231dc10abf6749cfa5d7767f25888d484201accbd919b66ab5413c502d56" +"checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" +"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" +"checksum security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "dfa44ee9c54ce5eecc9de7d5acbad112ee58755239381f687e564004ba4a2332" +"checksum security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "5421621e836278a0b139268f36eee0dc7e389b784dc3f79d8f11aabadf41bead" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef" +"checksum serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "225de307c6302bec3898c51ca302fc94a7a1697ef0845fcee6448f33c032249c" +"checksum serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)" = "43344e7ce05d0d8280c5940cabb4964bea626aa58b1ec0e8c73fa2a8512a38ce" +"checksum sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cc30b1e1e8c40c121ca33b86c23308a090d19974ef001b4bf6e61fd1a0fb095c" +"checksum sha1 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "171698ce4ec7cbb93babeb3190021b4d72e96ccb98e33d277ae4ea959d6f2d9e" +"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" +"checksum sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9eb6be24e4c23a84d7184280d2722f7f2731fcdd4a9d886efbfe4413e4847ea0" +"checksum shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" +"checksum skeptic 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24ebf8a06f5f8bae61ae5bbc7af7aac4ef6907ae975130faba1199e5fe82256a" +"checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" +"checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" +"checksum slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e1a2eec401952cd7b12a84ea120e2d57281329940c3f93c2bf04f462539508e" +"checksum slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e544d16c6b230d84c866662fe55e31aacfca6ae71e6fc49ae9a311cb379bfc2f" +"checksum slog-json 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddd14b8df2df39378b3e933c79784350bf715b11444d99f903df0253bbe524e5" +"checksum slog-scope 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "053344c94c0e2b22da6305efddb698d7c485809427cf40555dc936085f67a9df" +"checksum smallvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1347484b6f8bc4b32a9323d9800b6d934376391002ad9c528cc659fe8afc08ee" +"checksum smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "153ffa32fd170e9944f7e0838edf824a754ec4c1fc64746fcc9fe1f8fa602e5d" +"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" +"checksum stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" +"checksum stream-cipher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "30dc6118470d69ce0fdcf7e6f95e95853f7f4f72f80d835d4519577c323814ab" +"checksum string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00caf261d6f90f588f8450b8e1230fa0d5be49ee6140fdfbcb55335aff350970" +"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" +"checksum subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc7f6353c2ee5407358d063a14cccc1630804527090a6fb5a9489ce4924280fb" +"checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" +"checksum syn 0.15.17 (registry+https://github.com/rust-lang/crates.io-index)" = "3391038ebc3e4ab24eb028cb0ef2f2dc4ba0cbf72ee895ed6a6fad730640b5bc" +"checksum sysinfo 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "11c5f6e8a7a7146f26ffed9a5ff8bab2706f1ac8a413a415e1d211b819d5c24d" +"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" +"checksum target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" +"checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" +"checksum tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "55c1195ef8513f3273d55ff59fe5da6940287a0d7a98331254397f464833675b" +"checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" +"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" +"checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" +"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +"checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" +"checksum tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e9175261fbdb60781fcd388a4d6cc7e14764a2b629a7ad94abb439aed223a44f" +"checksum tk-listen 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dec7ba6a80b7695fc2abb21af18bed445a362ffd80b64704771ce142d6d2151d" +"checksum tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6e93c78d23cc61aa245a8acd2c4a79c4d7fa7fb5c3ca90d5737029f043a84895" +"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" +"checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" +"checksum tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f90fcd90952f0a496d438a976afba8e5c205fb12123f813d8ab3aa1c8436638c" +"checksum tokio-dns-unofficial 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bb9bf62ca2c53bf2f2faec3e48a98b6d8c9577c27011cb0203a4beacdc8ab328" +"checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde" +"checksum tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "60ae25f6b17d25116d2cba342083abe5255d3c2c79cb21ea11aa049c53bf7c75" +"checksum tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "7392fe0a70d5ce0c882c4778116c519bd5dbaa8a7c3ae3d04578b3afafdcda21" +"checksum tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4b26fd37f1125738b2170c80b551f69ff6fecb277e6e5ca885e53eec2b005018" +"checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912" +"checksum tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3929aee321c9220ed838ed6c3928be7f9b69986b0e3c22c972a66dbf8a298c68" +"checksum tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3a52f00c97fedb6d535d27f65cccb7181c8dd4c6edc3eda9ea93f6d45d05168e" +"checksum tokio-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "772f4b04e560117fe3b0a53e490c16ddc8ba6ec437015d91fa385564996ed913" +"checksum tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da941144b816d0dcda4db3a1ba87596e4df5e860a72b70783fe435891f80601c" +"checksum tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df195376b43508f01570bacc73e13a1de0854dc59e79d1ec09913e8db6dd2a70" +"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" +"checksum trie-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" +"checksum trie-root 0.9.0 (git+https://github.com/paritytech/trie)" = "" +"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" +"checksum twofish 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1eef327f05b0d0ec1b9d7d119d8f4d9f602ceee37e0540aff8071e8e66c2e22e" +"checksum twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f85be565a110ed72ed7048cf56570db04ce0a592c98aa59b7dacde3e5718750" +"checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" +"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" +"checksum ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d0f8bfa9ff0cadcd210129ad9d2c5f145c13e9ced3d3e5d948a6213487d52444" +"checksum uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "754ba11732b9161b94c41798e5197e5e75388d012f760c42adb5000353e98646" +"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" +"checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" +"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +"checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" +"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" +"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +"checksum unsigned-varint 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5c1441164e5da61f00acd15f5a9e61939693c2c6e8b9fae36a220b82de7e212" +"checksum unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb8abc4b7d8158bdfbbaaccc35331ed3c30c2673e99000d7ae665a2eb6576f4" +"checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" +"checksum url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2a321979c09843d272956e73700d12c4e7d3d92b2ee112b31548aef0d4efc5a6" +"checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" +"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" +"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" +"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" +"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" +"checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" +"checksum websocket 0.20.3 (git+https://github.com/tomaka/rust-websocket?branch=send)" = "" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" +"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-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "afc5508759c5bf4285e61feb862b6083c8480aec864fa17a81fdec6f69b461ab" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" +"checksum ws 0.7.5 (git+https://github.com/tomusdrw/ws-rs)" = "" +"checksum ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "329d3e6dd450a9c5c73024e1047f0be7e24121a68484eb0b5368977bee3cf8c3" +"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +"checksum xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a66b7c2281ebde13cf4391d70d4c7e5946c3c25e72a7b859ca8f677dcd0b0c61" +"checksum yaml-rust 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e66366e18dc58b46801afbf2ca7661a9f59cc8c5962c29892b6039b4f86fa992" +"checksum yamux 0.1.0 (git+https://github.com/paritytech/yamux)" = "" diff --git a/test-utils/chain-spec-builder/Cargo.toml b/test-utils/chain-spec-builder/Cargo.toml new file mode 100644 index 0000000000..7bd99e53aa --- /dev/null +++ b/test-utils/chain-spec-builder/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "chain-spec-builder" +version = "0.1.0" +authors = ["haydn dufrene "] + +[dependencies] +clap = { version = "~2.32", features = ["yaml"] } +node-cli = { path = "../../node/cli" } +substrate-primitives = { path = "../../core/primitives" } +substrate-service = { path = "../../core/service" } diff --git a/test-utils/chain-spec-builder/src/cli.yml b/test-utils/chain-spec-builder/src/cli.yml new file mode 100644 index 0000000000..08c0233c31 --- /dev/null +++ b/test-utils/chain-spec-builder/src/cli.yml @@ -0,0 +1,24 @@ +name: chain-spec-builder +author: "azban " +about: Utility for creating chain specs primarily for testing +args: +- initial_authority_seed: + short: a + value_name: INITIAL_AUTHORITY_SEED + help: Initial authority seed + takes_value: true + multiple: true + required: true +- endowed_account_seed: + short: e + value_name: ENDOWED_ACCOUNT_SEED + help: Endowed account seed + takes_value: true + multiple: true + required: true +- upgrade_key_seed: + short: u + value_name: UPGRADE_KEY_SEED + help: Upgrade key seed + takes_value: true + required: true diff --git a/test-utils/chain-spec-builder/src/main.rs b/test-utils/chain-spec-builder/src/main.rs new file mode 100644 index 0000000000..f0e9ef066f --- /dev/null +++ b/test-utils/chain-spec-builder/src/main.rs @@ -0,0 +1,51 @@ +#[macro_use] +extern crate clap; + +use clap::App; + +extern crate node_cli; +extern crate substrate_service; +extern crate substrate_primitives; + +use node_cli::chain_spec; +use substrate_service::chain_ops::build_spec; + +fn genesis_constructor() -> chain_spec::GenesisConfig { + let yaml = load_yaml!("./cli.yml"); + let matches = App::from_yaml(yaml).get_matches(); + let authorities = matches.values_of("initial_authority_seed") + .unwrap() + .map(chain_spec::get_authority_id_from_seed) + .collect(); + + let endowed_accounts = matches.values_of("endowed_account_seed") + .unwrap() + .map(chain_spec::get_authority_id_from_seed) + .collect(); + + let upgrade_key_seed = matches.value_of("upgrade_key_seed").unwrap(); + let upgrade_key = chain_spec::get_authority_id_from_seed(upgrade_key_seed); + chain_spec::testnet_genesis( + authorities, + upgrade_key.into(), + Some(endowed_accounts), + ) +} + +fn generate_chain_spec() -> String { + let chain_spec = chain_spec::ChainSpec::from_genesis( + "Custom", + "custom", + genesis_constructor, + vec![], + None, + None, + None, + ); + build_spec(chain_spec, false).unwrap() +} + +fn main() { + let json = generate_chain_spec(); + println!("{}", json); +} -- GitLab From f64ebee2fe72e3ba829297fd7ac9e1101c929b46 Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Mon, 12 Nov 2018 20:44:05 +0100 Subject: [PATCH 039/243] srml-contract: Extract schedule (#1044) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Rename Config → Schedule. * Fetch and pass config. * Integrate config everywhere. * <<::T as Trait> → < * Update roots * Cache existential_deposit * Update COMPLEXITY.md * Update roots. --- .../substrate_test_runtime.compact.wasm | Bin 44860 -> 44864 bytes node/cli/src/chain_spec.rs | 2 + node/executor/src/lib.rs | 10 +-- .../release/node_runtime.compact.wasm | Bin 624437 -> 619713 bytes srml/contract/COMPLEXITY.md | 39 ++++----- srml/contract/src/exec.rs | 39 +++++---- srml/contract/src/lib.rs | 81 +++++++++++++++++- srml/contract/src/tests.rs | 1 + srml/contract/src/vm/env_def/macros.rs | 4 +- srml/contract/src/vm/mod.rs | 62 ++------------ srml/contract/src/vm/prepare.rs | 35 ++++---- srml/contract/src/vm/runtime.rs | 24 +++--- 12 files changed, 164 insertions(+), 133 deletions(-) diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index fe88a3463d8679758db6c75f0f567cb6d335816b..cb5c02bbb90c5b4248fd0a3f071a730895cdf9a3 100644 GIT binary patch delta 1582 zcmZ`(T})g>6rP#8ccCn@BP>D%%cU%(lDg0~ZeyX+D~*I=%L67@O|=%Omb3w(DMUj7 zf9T3WyWwEFWvh}}W2>>*bYeoHHT$3mi6jzZ3=c|HZA?>ZLerNTW8ydWO2KG1x%p1c zoH^$^-#N3NFNoBFNPf%>ug6E1czD%REX8~S%$`!e^Pf3SsyTxT9;0u~p4^$y6bp+? z%dkaQWCN0_)!W5!I+L;8H}9N!EMdn~Ugo?v_u4<bJs=Kuw)0+NC+1D%wc- z58QC9N2q2^x*!!zF?+LIgPSW&wW;JP=eMY!beHNVtu{R-lQ|S$SDHTv#x^>TW%e7| z^l6i9f1dhj-9AH%MXA2B85ODWh_QM(rOZJEug#?&NKvvvFM>rR)WTErLueB&_^bA2 z@I^Wtu51`Qsr!x@==d7?`nLoT?I^T_7SZSk3k!zquotxe_vtnufTP4bErieUpc>k8 zOz`r{TXW6aX(zF?n3g*LNK&w_lFv|cT{S2S*426dSL)w0c^U0({Dqe(d*==gj>Aor zB@yTLw65&ZO6y5tG*>l7=$oed`J%esblQg`ueJWjAC9?=EZ@jH(boO&_TmABO{%G8(kzTH$^MF+G zof=RGc3Rh152J8}SP?qiy$^%9-MusG&I+Z}6FtYUF6!$e4ZL`41XEtCH^egC`B{D! zWjTe8ehG1I9X*L0ulEjRF9+KxCHszN@HrJ9_*9eKJyg1iPf^#%Q#I4hP$OXV7~djB z9R-|+5Z9&|7B@I>&WW1QrV$pi8fS;eh;BngJKBzlA4Y%8US2VKOr04$VDQ*@tfgkk zQAJDPj*7v8D9)f9;V}ug3ZaR9UrXDQ#q4=H5!-;~KZ}KU%LONmj&Rf5MO*n_Y2{Yt zL$*aE(A$XjQ|mY)R6D){>4(N^^ozVg9cX9$L`8MdDW!S3rSx8daS-6H3T9_vZL8t1 zFhUxbDCSW*J8{{Ul!DoVgZNkaMD2NdR@}o@{^)u+Ei?>N#|< zt-b1S=L@0k9=a5-RnMNO;AF=eNhI>=&B@JFkZ9(N4kSu=l7 zE}jGifG+_hun*{GY=9kykq5`5>tGjwI)OwY{d>!lOaS|U_X2OCnkJ~v^}VHnv#>q? lo9}n2jUV{3{stkAo45b~ delta 1572 zcmZ`(eMntp7=NGl+x!YKK3ps<^}(7FqqK@|A;8Ll~mL%iVA`n^n1^lQ>Yy{{2rd~ z=l4A4%r5eoMgIPI(%deGc$b11@#rjb_c1drf2MDUrsXw_I7P%~&d%()$Se!;bVD`Sg)jQcQ060hr!K=%t`;;mA!Pso!jo*Op5DS8|e>O?0wLgJ#|tg)8S4* z?gNBHkIz8C*L-(7{4rRKOheOs%x#8G%`!bl2}wr(Y*o`ni7lXNfegCSuAo<$b}fksM*F9Veb@RsjS zqm(!rEZg-Dh6(bhhKZLfaWw@4%9d+z7^7NikQ)&6Rx_mtxC6;&K!C->f>;c`LB%q( zrI%CDg{|4n?2D&uLYbo5XE4z1uPLKB(NI%?7W!+d9e_mb>rV2E{dM1xUz)pj5_&vQ zUse#dqCZlV?Y5F?lUU7?!m#+Xem$k+kM(EVNb+LSSF|}|MMPI3((M3`^0x-TWRRmA zgJ32z9fQc&zIqq>PChk3fES*w3S3776 zkEre<)`u{rL}!qv2smSTT~VSIFL3EB6L=0UOsp3A z+kg)PeZWIN9oPl*GS GenesisConfig { gas_price: 1 * MILLICENTS, max_depth: 1024, block_gas_limit: 10_000_000, + current_schedule: Default::default(), }), upgrade_key: Some(UpgradeKeyConfig { key: endowed_accounts[0].clone(), @@ -241,6 +242,7 @@ pub fn testnet_genesis( gas_price: 1, max_depth: 1024, block_gas_limit: 10_000_000, + current_schedule: Default::default(), }), upgrade_key: Some(UpgradeKeyConfig { key: upgrade_key, diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index fd68aadd51..fe491c7cfd 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -295,9 +295,9 @@ mod tests { 1, GENESIS_HASH.into(), if support_changes_trie { - hex!("978a3ff733a86638da39d36a349c693b5cf562bcc8db30fec6c2b6c40f925a9b").into() + hex!("a998cf2956b526aecc0887903df66457e640bb2debfd7976b5c7696da31cdaef").into() } else { - hex!("7bbad534e3de3db3c8cda015c4e8ed8ba10dde7e3fca21f4fd4fbc686e6c1410").into() + hex!("2caffd5fcc42934e6b758613ff0a7e624a8c5b7c67b7c405bf6985a7e3a19701").into() }, if support_changes_trie { Some(hex!("1f8f44dcae8982350c14dee720d34b147e73279f5a2ce1f9781195a991970978").into()) @@ -321,7 +321,7 @@ mod tests { construct_block( 2, block1(false).1, - hex!("7be30152ee2ee909047cffad5f0a28bf8c2b0a97c124b500aeac112f6917738e").into(), + hex!("72b2afc379ce2161aef95ef6f86a2321867f12b046703ea0af5aed158c2a4f30").into(), None, vec![ CheckedExtrinsic { @@ -344,7 +344,7 @@ mod tests { construct_block( 1, GENESIS_HASH.into(), - hex!("325a73726dc640af41becb42938e7152e218f130219c0695aae35b6a156f93f3").into(), + hex!("5f4461c584ce91dd6862313fd075ffc26dc702fcc1183634ee7b0c5de8b5b4d1").into(), None, vec![ CheckedExtrinsic { @@ -626,7 +626,7 @@ mod tests { let b = construct_block( 1, GENESIS_HASH.into(), - hex!("cf0fee74c87ecff646804984bbdf85832a788b3ca2a2aa33e20da61fa7182b37").into(), + hex!("9885d4297ce0341ec07957d1de32848460565a17ef2ea400df0e2326634914ae").into(), None, vec![ CheckedExtrinsic { diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 8d53eefe478c3428a332b27b469e77d4e4617ef4..94c8b1f3b87d8fb0a5e210df1fe498c8ac6e2fa3 100644 GIT binary patch delta 167262 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
6`mSRsQ24w5BnrKjs~AgwXnm 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

4Nf2UzJ!bTViV34KRB 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 delta 169784 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К_L*e&;9Jn}21+1#>!+2eR}`k7Uf1`1=0# z8S&n~4wg(QBu@Et(BGdjAW%$n-&_8oH_FbP_=ukcgWcIFLJbfAx|yibV%0grt#{_PXNJu|=Mvv6YW&t=A)y;bpdp9~hh zIK^t91V1%ihw?Ncq9aS#Vn2jYVs`4S%uF#SmR~8-SAnJAU#b-1CI21t?}If>sSsR) zpwke|tcnJ9WesUIq=+1XN@tZX_d>38-Rf9k8k{%}O(Z-Cj?uuAw04p4q%;KC6{J1 z>xs-=B}Vl8sX0;Gj0b<^bx3%%vv8%wt9-41D_Tof6My~hV8FZJACHYUy&%ZPLr(>} zakjigI8^d+&)oLe%Y22)Xe%YrHtB9_KN>F>hI`TMRI0gWr8RN*=0bmMCv(FWCHHom zBZ#8*Q?+HP808Ny-6HU+2E@{&aOD?v27#6z=ZHpI;?6D^l;71!- z;v&F>8A*CXF@+&vdXO^}#8DyFuf;VNZ{%K;bXa2AJxN}D6#7eZJM-)p=T2xgP8h~o z7Eq+kl%7X%Euu5(V%7>gQRtC6kbN;p2ABmdSd|;ug3d}dDWa)!ZTkv;d$P$^F>$K) zY<#GslkpUaWgW2~P(ON{Cu!F@mbX2jZUxKR{-7&e9V;A|+iCZUsd7czpY1-nz;@0b z(DpkY?VIhf*Ot!rx-I|#vBj$nMd8_XuceREjp zc4r>hRc*O_RLzZDe;z$d`m&3SwP+mV)U}>7n@MlD8j3VTSAL$ZEdB>(=%|v)Pc!mq zI-?yZnm*LKhOxt&6%C)XnK1j>v-aXP^@2_)5Tym^PbwBl87qMkaG0{idRuZl@jt<% zg#5jtVf-)FTq)aTD*$L3D68?X`}AW=M|NEY)`)e3@711!SXn)RST7#Wr4(p$4M zhd$)^KvaJ3yG66npi!^;?` z7l25bS}iKs)6D2*5IW?ZT1tm#>EbXh3W{NV zY=5FdZU7mU4sQFirurGEx-=TDJIL4oVPkAtG+O(WuH7rz9@VuM8q~E64RWo89S7#1 zWp=wq<@X)X#xBK_*));McpJyg$^MR5DFL2b8Kma(Sc0uc$wV?;bhDCvm9%;BCDFI&7#ZtJL>e3- zUO7gfDGaqIUiGw6f#5Keek#BzU}UA;$ye;AO95(@KaNSyC3$ERO=B5o*i^}>*cPB5 zEMfy0wJ6MF#GWbp+Fo|2{in<9PLaniu)BWlHm`OqD?rz95IFz@T@SU=&>(vp`{AJ0 zCh4Q6aQb%1p8WF)w$XvQ4Hrs1c@P}m~FOvNtCew zHl}MY`LT3m@r(3%emK+8=Yd?;Ryi+*j74rnYl3SwfJ}rWf=bBY1_79ii`cBv`@!Um zlbflW8Yl5;DyOz`vIYp@PjDJZ^A)*T+ zFHw-Hb#h8|xuCI9qp;Fr>teOfJ$AA=>&+5E^{Tc#HeozaT;n)NQkD|mWI)xZq^`JW)A>xG_@1zkux zB2=}f=(@SiWI7WLVqmEYNaI(grnG^c#;-D-3CF~81$)Zqe7*%wDRC%j}}Y&3#$%j)7YY^Hx6PEkgzP}{PkEvrp)RA!b=S|JwwQ0d|Q!xd{P5a_^4d>^Poj;{2S~{3)}1L19NhLpSh8{F zuYkgkVcYGx!oBa(wQG6XcXgeyyzP6scEYrUkYDD9>1|Y;)X7sZ^N_lYzb9fsjNb$U zRW}I+sy4weqvj-oNY_KIPdAC(?hdrN&J zS~VDZ2`|ty^vYZ`udWj2mbRg+?i5?ISx{MjXa3@w^Rw~Dy>mu>ehr3}NMK22BhLm2 zEFiln5-qri(cHRy&`57h5%ZYI;-K0qjyOv=T_9z;>1Ag=r zG1#Ic(Y0+Q@S~@Bl5!lNd7(mU3D<~qmG%u+LsjOUlRijhdYRovze_m%1zH^yT9gs< z30er1bz(*fT2RqWLkH&WUj-t~k*1yLHw7BBFohY#`fR;N=zmn#AVG`Y2`v(QtD}XG zB}`c_RsT@GsoF4(s+%yb19UKyqi&&`sw-;|XfdbvniK0=k|#KmMB$^eS9s@$(j^hj z*$7>8#4kUcjlrf~%*Az9Hv3?0dzA(AyY+z+(sDE4(ivfz$P$5f@)KUy#~m3% zo{0C}I4b1(Wax?}2*2aH*P4CW+7xjo-Dhc=6rdi_y6MWIHm6ic$ysJ9l6dL@W0y{C zQmdj*I4*ZmzFfjT>1K81t4nn{V#ViRv@7c`A?7KmmWWNMWa@09<7shm1FS1kg`>;$ z>tF_A+G85&b1qN2l}Ol+F5)(c1X|Cn0)Uj#_*2|FYubqaGx{0*E}t>EaHbP$Ql^CT zu-djW?P{v@+3hV7vg{Q7NfL5-oe`{{1?Dd7s6~bMm1Cn9aI7PG(WzDMh|Ek2QY zlTahX6Z7xIwv|2uSCZ{!WzYk}IgxCQPsxOUBSQ0#JWYJ|J6WO^R@`doaXZR2+@+3n z;E3-`RSDxIIDB=4t7}Qj1wNl1wqn$#}O0XIxlFz9>J4WOQhq-(CVa7cvgkh zM&Mx}iN6@0RzV2!;16sQ)b$A;fkSB85nUfKR23?(lq7L;?z*Cf%k{KBV#p%*)K1`4Dm#WjH7=Gik&M@Rg}U-DGY_jeo3Nj948Eu;B}jppHGG~3;1W~QUzIwKj;)+rQ;@l=r*PLrZbCyw`? zksl~;m8=shfvG5+YJ=7g|MM_RY&uQOu^e%hR)xWoxg1Hp8We_%@vvV+>H-0njx>xn zyG~bU!MdE+?t4TIsgGu@RCS(`Qyw13ozEYRI@C zjjHfnUD0{|T~{>730=`bzM?BC#9g|gLVQctpq8j1xA4m>mL~1=7U@OwN&?sF)>U=u zs=9Sm-MXr7T~#+%NqccYuSpY#e(^Ij4voTD5;Z5Y;ZIYzwJ5b!fNIeM_TxF5G?RMG zmr!o{RZM@W$e2cE)o>jHeM32`V8$3qw{gsar?ac%4KujHd`0al2Ln!7=r}*Y2-T!F zW{NmYr8kNHS8vQ$_<^7>@+^rj^lzUmlL^bx#Wz? zklxH`^~|`hIbGba6GM&E6>d2OuG{F*gD^c*n9P|6{wG2vwGrgvF}80`97p^BPBwzM z?NB$&jLWwT&gq|x1!t}~!k}lQG}1{8CSXkGaN3THUFR*7HR8O5G95=-jTQ8K*t!RM z;Yw2aSpvycufnMcBi3zZ#mb`Xlp4d&1HqkaM#nORPCf2NRG_0CEoUgW(aWqL04R~f7TT!Kcj1n zDLh-u50}wLb)9oS+j+Xe*2l!wRS1j49D1`7hhD#P=tWy$98IkyA8i%ukoLyQflPKe zCV@vSWlnlf!)Q-W6|+Xi8{|@x-;R!$;KPgn3Q6_VY@{Xw;6aI*|oiFT0``r1RYkx>J1Ta##Rw z%xZ4+*0CkM?yalgL{zP2YNzfx=dNsY*ICS}4ExTyK9729%J^i7YKvaGX4fAM0OiP9mGCIb^23X5h2%3?a5DB4H zr+7V}GS^arq}6kTSd-Jht(-=K<(j!U?qKk8b4bM<9bAELf@&oEHcX&&44Rumtc$Mk zM&}=8OZ_ZtY8$Wtk-wB`c5~RdGkjtjuru8zh2-dKQ8cy-R3h0HA8AvMTh}V>PI9-iTRw5JwNppp3mXoH;x;ROvS&e#l#sq zlz7IxL_wdEDClqkQ_y=70-BZhVv7>6<-`{&On~TC?XgH$a!0y^P6l)sm{ z&3#DS<}Re}&!_-(Ut6fN6VWE9ia(%Hz^2}TgLvEM9hgqQs!W4`bs51j0`6pPr*#iB z30MJ>39AcOJ!lfJdXT7#nSf2b1DSPSlX>4E^Zr#~2T2Q`5$P(|HTg4aenmRUrofJR zXR>tGO%|~xsmYTW>@J%uwx*WZEdT$TEVU+^#VLLOEz{;D@R}*R#bkLtFxcv+W=Z0s zNevh`1r27Btuv<8kBK4K7+WJond*XQ3#L#i z&L+{AEVf4XPS^V#x5h~r3OQ!F%M;3x?7Ee>Q!Igl%G6i@HwTNDuw&9lXg|8TJ@a}c zUv{~2+dUxG6AogXRZLTGD@QnHO?fDWGfMx|^)9)yb_uLlaY@5}Ke)b|8nwPt2dfzN z)L^X%t_crvi#@>AxU~qAm?h)b4zA+z30$c#?0Yu2?kZRhL1Y^IpA)X-(tEnzt9`k} z7SA(lv+>d;M7s<|BT2**enciflORtVyO=9w{^9qM!=0JKhr!WdmwR1T;B52|#jF4j zc;c~mw;y*p_SqJ+FmF=rL7Kv|2hGIi%PS{}>36OM=NZ!j82HRgxU*iItcg3H7>F~T zU*7g5h(qLoW@f&yu!yODVB1%DXs(l{O2?d3XsUEf^i{)*ijB}*t>^3B)pW5vb`4ym z9m7)Rbpm;!LI@EhJ?ZT15ThIwLRwF{j7t{#RD)9K+g{`KrOXV$zJ6 z?kDrkxY(K3dIk8%TY6gFoI}OWay<&wyPhIS9k!fs=&nCB{X|n>op;RZI-d>euGCBJ z&{yYWzwPJh^sRnzcGlvq!$e3O8NDz!^mK~5x@*Uul>3WTW=+uxrq%;B~7w``co#RnmpJ0xr0VrEFrv|7_K?k7V%ijV} z>EJDqagzY*Fpv&%L?s{^YuE8)(z#h*l&F(T6fwELF*pe+4%%(mdXp`P7>X|zh~XI@ z!Iy*w>>P49_|duTH9NeLr(!2CmGbwkjZJJSJ}SEYMj>T17h%e}`=dDko$GoOWE0Yz ztF<7xj?QL&73`sThI7dZI!n$sSeN!c`y;utIJxbmB`>90>3He7eNBX$E!=1M>KFoR z+EZi3Xai=Dwx$^~9AfD4A*Fvz5#z4u5aSedtY)l89Ium>N^z8$v)K3)>&SEvcPX$o zH)>yWa|}*v&!m>f<%O0TL%!+E$1U@`K^xwhk1pmLbR23%E4IMKac9P}e41*y)&MS_ zamjbRPJ@rg%tZq(cB`e{Br#`N?X%XV}izuu>j1_>DuUEZQDogV#_3CX>)A;x>!@JERmULSNzg zJ91sWX2M9!vhG@>YI85h*&}f}0JEqd-feSoM>OzGJ|!igzbbz7tGwCqrKht0Ac#(4 zsZ6`FD44(2oe-&=BZeXAW(;)G!)Y?~y7Rxx>Hi(MH~o?_bu~eK`em-`SFH~Z(bHcT zYRMwNS(TY|a#hz{z=&SqxpJ?Z&SV;jo)3c_h=WGwpYvqk0~<@(2V5x0eC~*a+yY-G zEtU%**jmVrC#40Ob7Po5jZ900gZ0+tf=Z$r|d?gL17g{5GMm1|vSL!MH7?Nj>A%Pl|@K zZjjiUbHh1dzulF&Gewa!K)qyToLjyIF|`EEzuI3q8YE2jIw=-|XdMByCNQfN=bW{B zJ{8yEFLJj0asAw4N3ENYey_U?*ha+&ls@9W8e@FtHi>R0h< zEqbD+e{KRMt)nG`@xP;sUPl)_jdam_2zx9ty3j6A=%QvPOJ#&%$A&X1kJMTz%A3J; zEJNvSqzirjY;@6MbkPG{96KZWB!QzSynPjN^2&VsL(Yu6FHLN!>3KhE7rz&7OT)ij z#F^OoQl6bJpJ}_07usoNralJuW%|vuenwYj?^<2am(3^O^yLeJu5HxooXq*U*)IcC z#4>+P%@p)%K3j@+Zi-~305kr79JQTP*}4>;n)y`img2#`rloi-9)m3!k<7qoYEJUw zugMg5uT8~8)qM^|(&A)(A!Jlu@p=o3r5?Udgo#+Yv3VDv%Ax~C%8jVs!k5G@a*Kvt z2b->!ns+TqK!>S%D;Hw%?TTmWFF9LIcXNey6rZsqzelYj?7P-Potv(||7?lJ;gqS* zmPIjvMiQ*JmI#s34b!y?VN6-z)eC@@;5c>Q#H)F`YwJ3&2e|0}Anfz+w623|560Ej z9JX271~TkQEU1{CVnJnZDi+iNCx``|-L)m7N}c4AIOBxvjnj;ytS0S%$@t$>Wirq8 zp!ueGo^G0J@R=#Y)#^mjxR*lHPV6zxU71~C<+_ze0GEOipR(ai4g2P6%7)yl&E{B%hYK!&)QCNNmYJaPgaXxwS1!Prni|^5c+czaV zyz7C)v`byj&C0){``UtCr29YSy8e`5LyK#+1snbrWMC2cS$5VieGRTyc(lp()Y$?y zTqao$(VNZyi#DABSW9P+&@oj37A;jFWzk7~Q;USyj$$(nkCwYFRf{I8do5fVca%;j z)7}LdsxxUsubaGV8v)byIWg%So-ygA=JsR1MMu{Qot>1cbfzxV|6&5Cm^9gqG?Tek zrWQS$BzlzfjMuv;dMGT2ONX7@a)Y%QzkZ*5C!G+&r#_ykJFydNjHF%tPdZ^v$gavH z7`UFquihu$Q^RzfZ#HPx_nI`5n}|aCJE$ddOgd;iYlENUM+#NspDr_!$X3n1r_H}IWbsik6q9~LwDFSI5Ok9VVYNaubmJqT3bs+7SnMP?Kt$qifHQhDy@&4|wW0~CZ#%;|!Pvf>@g*F{;u z2M;g<2LNL0b`7Z~)J%g-om6Ak>$#oFQ^2)eW z1LEze)0JpUG6G<7aGcZ`4jL6U%X$sNqpjp5E$a$x;XF_AL7%t=>rFLnR1aaJAfkb%O0#Z)Pkyi{Kn;e{$a<1#! zVj>ZVY)CVKZWHwbf;Q&qIh#2^h9qNC{+#>SP9uiP#u*b=4?keaoFP`za* zx*c(p`T6A7mENf?@R#CR%2eKPL3zZx%@@BN!F3|1Qv<4Qr)g8DoNSs7zGWi}W0B&t z@rxf0W=_t+L0%q58o?2z6Vx2*H)Y8Jb^$ugEa^XhoEgqZDZ+*XG<(DTK^Qb!=}nVfSKw*`)ef#OyA+XSRarA z1Mpquw2wrT?7k}BYtn)_8==-t7?BAI$yh{1o;`&N+&1rYv)PWh6rOzf>z#I`{A9kx* zr!_G4;f5vdEfQ}!%#=U{Ad~T@skt~+!@kuagYJljqXTVH%)QL2_Drr3I4J@d%^gkF z9sq8FhG+)I2?oQWI6>d&i`Fq)vqy6uX_+j{Z*@eC816{U5L9jR@8%>-=>lH?>p-Dp zWwKT@n;=$4GLNW@$uwHxIS_=oQ}4=}z|%FAnnhtj^CZp)nU!m}DAGSsS zR+_vP#Dl8E3Pq*G|Btpe0g$UI^S&jg=u30(7#nbPt+9Xe4FI+Y?`8GOAICC5?+XZL@==_gN~ISE~{iG zXSlR!{~BU&L~a;X+)mWeBt_*|Fqw*X=9hATfVdHE5>=s|!_*+(GASdZWpw6S!o(nG zial`#m%24;;9`WB&rK69kxtO84J7db9hQJoc{rvG3i&AaoG(0Oh_cycEwS%9V`(({ zoZQZ)Nn0o=+uXp}KG<|LMBQczJY&M-^eH>LfL#i@ zTT1!vHfI2B!+OUdS@U*qcp;n9#Ou>=l3gRORAX%NSk_e`{*EypocN+Vf|tnj92o70aeTr-@+5zpspU$E;p0JL>tn}4mr)}SXmXSGd2v1 zZ<=JUN$NFv`E?0y5E#sN6KB_%AZHVi>LB=vrEILFRLWnoBu;d#X2Jt(fm~s{IRyg| zTQ~IuG(I&;2KoZ@5kffxGu!#gMi!iiky&T3Z{1E$c1)x?1Kpfoxr(H63wh-$UHIBW zJWdaMfEuroN^8@FrrbBw2rm$8i5VpPD#_GT<3m(oJ6M^IylI~rn6Ixv^Cp6#cd_h{ z3Cqb2$kOu&2T|r&7jNLgO-r+I#`;E!6U+BqxJSUz7DKU~YKvuSPCjQ(C3M);xj_mW z)37sc<$`V#k-d5o`@{6HW3g(meFLslpDQ-mZ_R;QOzzdtmN~fsee-3W%<{LVn|Mmw zcBJ-rHN#v~WNbgX7omoH;i!$9$cS_`&8f2fO!>BIVzIWP3ZvA;F~%-*xP`gU*>|O3 zR$W2)D=Tr8tBF_AtbDmS5&xs!Okm}jkN5{UaB}@KM934S_!Gv6o3FUQ`BE)lo|rv3 zfLmk6xGNz3AX8s$jQnQXpmY?z5ezDP-AY8;hSg5CBgf7BQaC_qP>suoHAzi(Z7&Ve zapP47Kf}THQzFTP2CFcL=u(dmjVLwjHc3b=s%zoc>sBW?RuG_Bj$>VP3; z1Ttj-RR9n`a7#Bt*v!DqyOby>=1uUBIPC*aYEaq2(Uek6QBf)bsx9WV+H!~Ql?nuG zB_??@(uZs;;80pE0%d9fdpq_p7b`yzRx~z#Buk4MzLw^Xv&~FZz+x6aoDDo})~!?3 z@X*v&vpQX^hvSp|_>JA$JtOLuvT6aU7TcBqRb>pD>~N5&bFE?T>n6RRy_?sZpiPcN z?d&4U!wQ^Tis5cWUueC5-aDyFY_-GPdd=9Kp;niNHGv^dbqG&AowP zzR-X%_XIYEPC{KNuu-V z?5hVsDC2y#JRAZ+pgDgY7bp>;GPdwIh#vMH5)*`?*msu*YRL z+2JFcSOyOUDvt?mkN-Ztxl`hCr49Y-@!wEY!%RU_J;24BR%;RqJ zFfAB4@-S5jJ8=@DY)++=H{#=j^kJp(%8XNW$Phw;iD)stn8hbI{U?fr9M}!+wZUDi z8b()TJ0g?%*^^??wS_}3UDehVv%(3=^j<9UVi034!Y7e3A-v1yrH;g?w%`Z;6|FiQ z0bcAjW^;*7d9g%o=Vp_kqFbfVA434qfyUKwS(J;;q&b7PuwlAY9h=teN3`~(nDpxd zS$y-H6srQ0J#@oY-o=|BZ82)Iv+xJC*(bI|nS&*#HdPnxqemJr{(wc+N zLlAUc8I*^)ULet{vlGJ-POLlBi(%@835+(IDcWuc&n|{gw}j`;*br<5%`DOpW7nWn z^8EHa@$%RT9tJJzdlIBmWMZGH_j_P^cZ3?9D{L`xQAhsnF%;9G4P z!5|ue;H$jUjo__S?#dfcLsB_7P94SI#prZ{2Vv#?s>w9-tD4!Kwy~w*kuNbL5(`|I z)9=`YY>;gktzKMdBc;4|_X2f;@ght9ocZl*gThyN4a(X7Wv$uhQBYW`9P`^F+46}A zI8=u-po#j3^<8(xu3y7xAJt;kSTSD-1U@js*)DK{^xVwc(vWEJ!fdHxo}(_c*=q-~ zA2l5A5#{%>4AS{TT*R@<)T%d%-nNWVDu!s3$OK5}+)5v%^py#N(Y84(uktCfDZXt( zOap(2O`=($PgWC0)e;}9CbrfRsRlC>u-QT5v_WlK%^2*yz|);O#D7+0$`m)>V{ zfPI;b#zZ#pua@S!eo`a!`>@4GakJjeU;CfyTG6^TjIN>94^jVY>+iH8Xb~#fx$c4z zQN0%=doF-nAb1omAS}I9oPSRH`B)B>pm08PKfnEops)&n6<~Ub4H{uW*E@xc?Wn#w z{p8Z1a4rKxRz-J_FTC_QCYC;UT!c)iP%<16qL_K0So%1_-o%fSQuX4eel3v~KQ-QI z3*LMU>AD)qf4>x_DdmR-BrB-1{X1O^F^5tU6pf&BRgQ}%wMlb(!HD80O$10hpBSQM(dZc+vSBf?7^cAt<&07?2 zN?9mP8!fVcbs(dr{bS_Dq~qiC3RpeSDKXp5gIZ!E@~EvuRu(vyIrjD)4foMO(=j?6 zm@9SoK!A}&UPQr*90o6^uGJ$%!fb1X-Z?D>aKJknBZ7qW)qoPi$~&+deH<0DIui(6 zorBZI#l@eOq=HeJ*~EcL*jz60fLvaCP88~ST!eHAj%B+$tu$u$0Re} zp|x855f>2y#UCv;Negt{nyv$any$TMOQlxicO5L4uRYS5VWFdZsL)Xx2wh8KsM=G_ zt;8sxogU)a3r4fC4uA2dCF)XrX#MO{+|!~OH9>qZY3vnpu(CVQOW9F@2`7{_)`d;z z&Gs0Om~)K)dd{IHHmU)b#DLV#1`J4@@*5Lwa~Lo@@ug_S**R{nFZWc#Kx{TOVqlxC zZ)u7Fby75~tHHm8$ul6KjhqE@O_d)RzZ6@eZ3^m@LTVAcl5h~Gru9S&2?*&8G%7f( z<{;$$1H#UV>^4V1l;gUy-UzBk4RAfHdqV+QjG;FP5bGN%RVa|_vHwO5(<*)ol;*w~ z1LqJ~VQ!_WtolJTq8jmriSG+?im%2|u`Y@B6iY+ul4!_~(lDQ-7AP1*IM%)5=ioQ3 zwk3y=!Julm1joeq&*H(F7~*bRC#rWWrdGK_LandjRVX8#1&Q>H(It3XC8o$)HP%Ev zw83G7%;|E&aY?vsAiA@;*Yd^ybvW?zg2I51>nNbwk$7MT(~bfXZ!DbCn66&M zyh${@-dL3pL4s@fH!%@7h*XQyH!%_DO^xyzQ6Q#=cMWZ~BFW@br}Z|RtEi_5Hj0xJ z;D+ANYK5y^LX9Alz}TyigA!nXb;KYa)p}TuS~bORlm(7?(__>W+rkVh#fG+{YcXi{ z0`5OM+nE(3UmqQ@O1m;xavj{ZxWUuL8`rvOWA(<5K5J&(8{lR`(c0_Z7%jkLwo#|< zS98Bb^`i;UE!GIR5lcLOsnhK{zK+`(4HJ%6qbvpK)jUn*O+3}yd0Tj@#+jC1;i)?E zBuvb`m~|GRc0x0^qpaX|8@Vs9!}KSWjdEf#Y@>Y< zX*DLp+XMKEP^jM9C@03Q!6>ij8yBsi^?#Tew*HT^9%wZ66p3%JHFvtd4wFz*i*6Ei zLmYj!-nRZUh7T`KZdtgMrlV+?FfeUs3#37}YiLnyM!m~O+L(o(nZ04o8qCKtMbU*b zr4q_RgM@DxgPno)#|;XhOk8e;$!|7zX}35Cm?*WKj>&$~Qhd0r<+)378n>4FD@(hJ zDBSss1rJqDClc$hb~v~U7+#dpPR|h{T^M)~AFaKU5Q|ai-{8A-hrMi6*p6Y}zaq}d zy;_MU3xlAnt2D%|$*c#Y+fy8%Eh_{!SJiXjp_%r&26VF((cj$7cVYtw-Qa2|qLJ2r z{|9}qg^);R5Q1XuDbfhfqRRkrYplu(U0#*1e1P~=xS+_@mf@g&;9BB|1+eDuTWxHJ zx<$P;zG{-&hKSM=;#m1@h$ub3w7QsEEj5m3+GvYlt6B8B(H2nmfq78C2+qjS$V7sX z^Z!rvOL9>W4VBA7_)BY20BTu8q&4>|kV*x4_;DQ#H4m`0l$W%$Aj5=gI&ZdsU4pUs zVT?*1_%wF^7R)XY)nH^|A+{8<>e@CNMrieR_PK2rDZ-NbvxVSYR4FcbG$}4c#H?SF zWb-vG0zR?6DWn7%cM3X%JEoveSTTu?cz}G}!u)L&__o1Of+K9`L2ONt4!QcXmTitKpnJ9CF!B*#`tyF%8Iqy zFsrqSt=e33*AI2$n0Cc&^bx2AA!{{nOv^Esy8Ob2wI8Iu!NVJZ`l+U2Ay3ocUaRWY zw2A+Sh(<}LacZlp*t_a?RC7m}wa6SwZ2r)W!l&WTj0_@73iz~QoBIe^&}|C3$A~5Z z&^*HpgH#!OutzcW&*CJ^5V^A|6jL|Pt_t%M32V-uor;-)$i zAV=476F19obSNDte3Jny`(q2 zB@3k(vzD_{x(C*VYmHT9+bDy7LftVrdfC<#vCox|_gJwI9So}*UV=VlxUrRPP@Llk zYR3amPKKDWF;uED-XAH@1>MJx7W^k_BL#u*e-z~L1bh1;T8i#ln^d>;tQr_%#m=Ic z1jdZY^k^bdRVr|eL*@V3kAFAhPc?c&onuR;Z(vW?&>@X^X^@qT3ywQrz zqN<`daTZmKUT`GXS0{XA{cMk3@>D=9h!J8T{+3?rg`oJHCIF1xT68Qtm+r+;Tl6a7 zcXxqX)vh|3L zV6e@6V4;~z$8j6)yR44Ah{u=NSur%czZLn*Q<~j};jyEe&FtHbBII?$3q>8EF9vac zKoc}O4=AO}zvan{JbQYLCtCrbCm|cJL;7eC=Fd-Jk6%d`szB$6(OV|SXKC?Sf!g>* zL9yu!FdUkwyJ<*Sp$1M3UBv{P-y6tuZIM6Ba3X&e>q6Wpr!{96v>#VZ)gEdm^`Cdir(1&CWrh_PXNfEk$uY`D;YQUWdN6ujOzDHQF(SwO1{M3Jsc zIO{L~FjEcy+!Er&wNHvaNlS4pR6YqdN@;bPDT&ivzvs8-VvUwzTx!9?Z{kOcN8?%= zyG3VXKvQo?AE#wDV7$N!P|m;c`bHUk>;tYjfm4LO=Ptq>o2UWyFH zWf-x>rZ8Ti-Ff)XlImJ=VtOlWXr@|LU4Ft%y#c0KK@E4e`qP+RtYfY>Bgh<^qP&C| zq&Lkx1xh#Bt^C_N3f9{kLV7Otx^_!q#tm-3R+mE-v6UbXn%~gm2*>92yGBcKB zf{@K3^-a^^*l0~=JA(m792A|H(MI8sVmAa%2dhZCFAf!n%kYMJj7(ehQe?Vu0fUh} zIJLz3DD}hAoJwN-i_>i9@|uq2I0A)Bsah4*R!52NZmtRxi{B9Y{nViH-QR&UD!Uc; zNyYc?b-Vd1Pa*Xg%?Fa32t|$D>UG_dE^xcN;f46-@4ty}?qm0{;z8tn?ZNow?dr{q zq*U~7%Z=Z6nXdg-oT=XzWQ}~UhSf4aNoWU(g_eYaRr=dZ938zDQzD*Qdz11_C?EtG zHYUqfuhnbgpEed8?=mT0H4sBZ@v+_o;6FU~R@2bWh!zIzzEkdUHnrO)A?Ydp+lIkb@B$1D@w!zy> z$%@Bpyi(TElVjGWa~@>Aq*#+P{zeIJLBGL&wp2j(kx87fNhEcr^SIS z46vm875IY`1z4!SfeQ%^ToMPiC_wUw1IJnwA*3=(_%?O|`4B)&PRr!9Sb>6W<1e&0 zNk+9veY7KlZmU!osh?H0ymHUbab4+FRTd2OdPR(QSM)H?h+{39tBCNP zuJc0?KML$No!i_Ebe@vqFg@;S;dmw>YG%Eeb@3()nruj7)HByO(Gh?py7;*YyNL)g zN~#9XN$jU%C+Dy^DJI|JI65qws>?o(aW!!M_v7d)#QK=JLLi-)&$xR;$FcU4^n`(Y zK;+(`O5##c!!^fi!rAGN0jgH4L2_M`w(Bj^spo#QQkc_-gLFsZgEH=4rp}SD1Ow$l!RaTR=QiNRBt(79!+BS_M z*xL4*BiQ;s)d|1Jlnc84HA&`kaXSBR&EiVWEoJ=C;i>YQ&gj?~ukUev;^=YL({(y} zO(}YRHQm_`s>P}6ag@#nSxt(L2$~zCbVj-;oguIyW@3gAV1fOF5;{h_t4k9t*1b~e z={-YbPz{4$&(*%6Lv0?0z|MboXyjAZL=Ea~!-S3hMynhPWhQZG z%#ik6A(Rzt1}6tXRSixb+QV1%24}SxSQrc3`KMedHCUW@`Ryg;o5#N(n^d)B6rWru z(+PXj8cuLZAyVN7l}38?1r*EbD1UM5M%k^3KQ#(k?RT)T4a{OwyT{D|1IO(}qS%C5 zyuC=Qv7bi%B9Z9aMQ+^Rn5!3ya#^MJDvFISbd$us6mNraLO@x(ld@d2l{CiajgfZ=~|qQp(+{v&L% zH;KXR_~ceJB35>Zq@wSBCOgvU0y{9ro!`RYy=sm-Yy1Pv@>t^=t?_zZ&u#|5+_+(K zPWio=z3Fj|*-JE8Y+=5DXD6XMdyShjCQPNomv1U%bpe}OzjgxB0kw?*SX;=}>xP$n zAPurhY?Izv{ zSTu*8v&xF*TT_7NZM=Lxa@d{|YmLgG5yAw>_)gF>T+4rPRF>b-^psjdQpeGxb{xr6 z{g|Fk+r^ig4mN&*tf+IXMtS))7hb_aBrrn(0_PDLstJJyJb$QT3$*5y_eKGN3fUO< zNkVoI1yOCP!*MZyT3h;(1ZFaDp1$_tTJ3J54bpV5BLV(y!b7LR&_lu zcnT|#gU!wHk1iFRh2wIz%Djs+dofls?<6`6LQF2ID5mcX_iTkP1&od7ox5mbec#qP z-r%PzjTW}+A=WD5tfw{Zpk^w;PpdkJWiGL80n_x)BCAPF_D_?&Evy=)8B*RX`oRZR z*L9FE2Tro5lkSUlv?!C&)=7+t^=8)*KwHoZs+LK{os4;GGR%mHC@|~{KjR7V|2U?Q z3^i&p^{d{wy{@D=$@EFH@rmwZf2|C~HV4eS*0CGkcSAM5RQrnv?hI~i6wq3gCY1*7 zqjyC3YwY3>#h8R);zDKz5CI5q1MP}jejZ(|$|rQ7h3%0H9~j`RpwVpaTenNy?P1GGg<)Imjgyn>wN9pd*ZuF$tN< z`#{EG(6yee9x}EU7JRNmmT?fSq4{Ki?!*&YKSPf(} zj*EIGl!hOTKH6Ct%S!h9FX|!o_-GWK&LhW2<#_j^czs#ud%cH5yd*J^zaRI$$jRTq%1jy&QY7 z9vvNw5glmrE-}t=vGx;dL(MwzUVW&GVBF5kl7`6nSc0JV2rw_MPHQJesczsVSJ?rLNBxWrpwyiK$ zp|NfHM>0}Zq^PsRxDH7eVbUnX#!&ri&m(<-_Fw4IR3(zV6035?Vo<__Qh5ck_>D#_ zKwh-smcn1IXyNX(nt&Gy532J($@>Lsmmf*~RT)Gwc17bXYjInip_R%5U2>BQymomt zs(7e0&5SR{rX(73H_g1YK65&DQORT8tT}`hw*bcbH*6I9stjX%+Yuonfk}CzOD&Sf zv{z?gnDpd=7I9YLK>w?qMt1D5(+YkWCQzyCngoFp2vfrtVR|JscSJc9Y*7lMX|$)#yfsu-9kM8wRRU3c=JZF{L)_AE*+m>we@5KmnJ zswRFq-%K|`z)L_9GXe#B(nPn*s>5 zi$yLmePz+sh@yqcCKDi@{80bd+lx=}&5h(_n_}#nBdW;seLVUjyK@!Y$DeR#S}7wj z4V@U7s0b5jVoXK(+q@^P2pe*0y}d!U+6g~AjG*P+Bhth|XmAhJ&Y;?&ZD^TDCmY#` z=;%r!JQ_>We18hiM0bRtxv0#%3y;oA+16x~LODS?T&5K|?&==R^7WDO$ohGbYh66S zP{k9JhKa$%Mm?e04hvPIoGE%C72`?^Erg)$Q70>)3F;D(}f$=ne|x$TiKo@8>k z<<%777onRV)ZU(z@Ca1AR9P+z@W!S_r4gqih#08S6n4r%&&Dky z<()q8?|QtiKQPZ0RMuKXa{%4ykIPYRIR_8eX1}SUBh8+n-j%Dh)98xMmCwthaadg( z88eppb)-%|c95$U@2Z6^;u;};!?oz0*1Oey5|V}!dE-QK6%-pB}2Ds#-=f9ZUwPMnY`B96G^HDoBdy#!C;&viG1Z2E+(*8BBtE8@R zjmY@#Pu2d;3H7!a848GeV+S@1(f^|A}%vQ|65KCqqpkklM zrjQ|tUNJgTh9u9c&!}Az>D6a>HN-z%erdH-&qfPN+36K+LIK=8+7uX{2@0-npl=d5 z^-V$zaSw5mcy@&)3&D`V0gc*Fuy{~F^) z8@|U=h$_&^fPh!Cg^jbnOsBHFad_QE#J!!aA=C!lb-^dL+z*Aubt~rb4WxSS_4rI; zr((=S-HQ08Gz*}O{J9!SF6LAxPtJC4DEnvH{zb&-M%D)@kwBtyH^4HBUH_PgGt}8R zJQj5~B>LD5+39TbbnOk^S`=&u_l_=DlP%;uYNNw9gd?Ln*JSrg ze>ENbdQJBGL2vYpD0?0|QH)!g9hJT*9nD^weQd~Ee^Q`ozLYBW>R9CRsOZ@#!Ng&I z->RV1BFU%)om}3&H(L4oY+vQtH(Yq?hPHI3lD=f8RC!}?dQaQLlmOG!4UsS)#P;H8 z51SD$m9Kb^_7Aa_V7`qVF_ft~=h3Dq<`PqNL`o$Fmm&GSq2Yt3VQ8)MD2zt*a1qf}@^ zqgXA#YjyW9;*!)&ch<(0ftEq$=5fMLUnZ~3`!8l2e>U1`WR-I?-E-E0L&XKXf~alR0iIH>$CzffL=fCq~caS(*EwBKLxt7!$Iq)LOpkFEk0 zIlGn?dksReY}(+K!bgles8Q7CyIquF>`P=>n2oP`kWoJNA<-j=Y{5*&Nid~gl*kBWBTNhN~L zXMoH6Ug>>#%2-(ol}l zZ@SQ}Kpltn-t?fZ>WgBu?B?v;3P9qsJ=3RBKU|&NfXZOS-#Y4K|mCcRXM zAaJteE)W-8(?)n_0G%nonUkkgX>p`RP;a_32C(E8GAkpQ^}ijVPwci%yHiEF(eEBs)(p}NnU&~GxpS|O2@b7H&`q#23 z7My@0w8WNFt6`+>a=+HD>YMKK!gYK^R> zM04K1HEGS(wa**g-9f|3HaGYGr8yOKdWXmjt&(C-!Hjq*p&0 zb>ETg8}ub<_;8Tom($V4{_N@zs~?rLcp928Mw{1(RK@=2)3;}*QN&kn&wj!cF`+%? zg>ts;ptM7x{yVaZc2wlMcVvIv*CKqb=#gZ>7{nz#{Qh~bRJYp3_s6E!B7&Bv?XK*Y zAdGgtE4xdO8#w%~Y&IBtJN&5Fg-C6&RU^>}FK3TQe=!}s@?y)G>Fd)2J+EXh3WD1P zZu{r#sR4>${?+W%^q11nUaw|9mA)YzeeKokt-&49zOQ9x55EDYxO`NE17kgwIix}` zx$3p-cuI=yc`Z9;3_EM4N{DeMDdipQ&n%so8a$|Yd-VEi*?Cmopr7{E^wVCkVJ~m%_0!%Dpr005R?D!6l@w&4 zNp3dlk$T-kKkb!%iqYWoQ*=AaDES`iO}g}!pOustVK0--^Gbjud?s$*NhS=XFEq*u z8fB%`H)=cmwAbmU-!%O+3opyo>!;B@J-NQh3-C0j%dJlvrMQ+e_2XNv9y4j+?EpQ} zuffTFp=^Y%Q!)*-c{Kj=YNss0&!Cvz=eC#DR&o+A^e683CNvaRZd_Y^El#@vv#Ldq zsjJ06l`utOUCTDCOI9LH%3K}j9rG$O;H7}9#Ea;fUcz_epH*h_RaERTa6Ip+7uEandFakege=Gp4pn)WAy!4PZ_0bHFPs~isW}(%Z@OK13Ms9jp8CE5U<%}Mh(3|c>BPB50!P7ASVwwbv zB)s(kRwBybMFKf`VMJGlM{xzvpiWxLj3!$?eh!a(P`r(C3ke~f7hpBFmDiflM6gfH ztc9>{qf*ltG|ZtV#*q7-e;M>e^b1$qmvKFI7ozsw+@6)|{t|P=-t>x?RF|6>V!X@` z59S*rz^KLnB`tQ9pY3&6P5R@Nolj+b}2QJ4Q-2fq89|%z{{o-Fi zuRl7iFV`2Y475-&8;#!u`h*%x1NKr=QjqMuLU9i~-?97{l4c4wn7hVkY!sTgYYk+? z3!P5PV1nvF9d_WvZ(lWSqiK_KxymL67My;t+$A-7mBHIv5;*y)CA7o=;1a+49}UygJ_p&P2~C zRUc!!xzcQkby2D#<>Dn(@eGWKqOugupz{3*emSu5XSo-HVEVv~FXx`il>V{-4P(4? zY;j(xg@9rC|kiL87W*F z!_#}xI0Vz`HCw`?Oy+Lr-+Sy0|8e_81K*gQ8yZCG^DSX!YN|ilJOiE0<%y1*nHwH_ zHkvUiH)`7a_JKfKwD;%cx3}A2Y^ky~mAyk>tQSQf*9)p z4sE0M==PbpT~LyLJTo`Fa(ix{U^C$xD!ZFHdQ*35S4buk?$%OHuHV$Ik)#jgpcJl; z<+|y_)YSKKkP*7{biVJ&>=UTjC9Y4COV?+z?1Ihq!*!Sd_r(a}jW zbGhJx=#p8vi8SfXS-I{R7$T*hI73=`KN9XR-P{#m9^}vK4kAOoABcm;Q zST?}Un=1Cvu~frscx${0di)~8a3_H%?RI__qv zXu6E36P!Ch8qMp=oXSr5W^`3Yg70<}ce~7rI|tDgMYIRA#b;Kh5%8jh^IR0Xoa;<~ zA&9ol$&DQkUgPh|!P&&K5;Bs=+*nCFl=iDVa$Tbx($|?m=*YjkO_Obmk>Z}Y5xX+s zqFz)dr?m}~tzG{TQ3}#&6oi3SIbGfo9mxlEL)VDf5#*9(zEfpR$6S^sY?Z??r|vps z@-!HW#oojOk4u`oz3H(%*>dGjc9{eW$Dm7Ct!oq@k9;WpDm}VzY|}2r7)jqf%+Z8^u!{bv;#KuMZ+a#`XxRWKkKa1>%4z}jc@{=RrM+Qf?)x(9w4q;G8%C4wNRvJlyb&w{&hT5^GIZ(=B$b=$u7ZXTlX{Zqh)OINA55*IiY`$Ca)jGj)cQxv1 znzC6^GG}KWHWBHv20INYs5}gydnf^~D+?c1-x!Xppw-u_02>^hAZlot^=^Q57u`G_ zqv|}NYJp*jA#tf@wLL#sC`|203R=SvGCDTAI_rN)J_ zln0|DI@#g287{rs4LoITvr|*h1O*8i{U}gc z$5x|C6enQPE5(W4^s)Sl<0%@c6RpyhQr-;LgnuQArAWw??K_Q7RELzb@|y@7KbYTy zcN|aJJ1tJg3QF79n1G~LESnq4uefZ4;R@QH8v{?TB=&S>bNkj+ab~Qb=$|OYmQp?zK!t~chCPCwj zNl5>Zo?BxQLChq$njXtlfOn1U;Yp}2aeXEm4{SCdr&*&BWB4sC<1<-hG^`YBAXwGpYoHlaxXJpusfM&oAPutUO>b^- zDsfOo`BN}+TJAViYr|L}SN0dJT$r192F*sDHr2koED2{jK4UUR{ln$vdm3VD} ziq^VpoN3i!(!y#gw@9sXOapG&qd6Nm=ium@W$f3%FvLt%VroM}_7_oI)($v|g(Er^ z#!xnGSvnP1G*w^IlVsXtBqv(tP`wOf0jO9Inu)1``HQ=|a|Qw?lK`TJ6!!B*8ZCK| ze!2>(ETA%ouB^fUy|#s7L7g@Pk98B(v5FG~OmnA=@8qPznhb_V3XM)LH0O&uu*I6-sVD@dVuvVDH)A)aa*V#X_DAUhbB6_6qQwX1x{s@p zhJf8ryDL!X)w-)bytrVB%RzG6S&Z0#2ig$&^MU_!ayCKxi6P{qAWKxhR$;C%h3)R; z?|M|WX(tJZ!q&rSGOa~0<5)W__0YQotzKo}Q8m&OAFh0tpXd&kNFl&-=h0AM}1<<6G! zU@XvqPn1~LC+^}lL_>eBaD{bIM_ab`C$jH*f3j`u*-1hr^~1xF&;|u(QEi_qWkVB zeb?(%<>YsLgV4g|Ib^8PiD<>b+zb|;!5HA$EOWtQFg3;oW$&gk<)fJ2K9@Z5J>=AWA7*>wpK7)aChBN&OUNk^zjeXdFEld&9ZH^0Kg6vU1# zqVkx=V}ZRzM4=bYnDlPOSDG7)_;Nmq^MKB z9CU4J>yUVtT%A}aMYT8mw&t-q=H*wR1mXs1fvXKGoFlAktrfDBLe5g|-=^skeyt%4 zw_#4;y;;jvd6Rr+D&HTf`Lg6QI$xV$j%&pnaU4J_Vvbfha5!mZL)XXo+>!4Fxq$sUOtt+Tktmj z&P@F^H?Mfb=IemXO6QZ~rGC<`_p=7ne(3IiT=(DE_DmP|4NwKnlZesvJSGkAh-1=M3M`D>0}rjl8%pYb)qFxavT_khD(7jU zRlP2O=5<2zsp`}EdNfzs)YMbeR83ICyk`p|jwJMZ?VbQAYp*u>SDORV;nv$LjRne< z@~xr>@^b2sbG_=_hMMo9eqEaBem&U zy1cFih;;yhs(RD+RXxmE+H3-ieULmT-ys{w?M?r^nyr;$UEf||Q5+eaj{1tA2edJ` zyyY@dIx5R(eYu)(^4Z^1cE|z!uOWM0g|Goj9a_pQYTvz-m3S*%QOaKqF@<>27B9|?7)N&P_A`WF$B%2)9Ipp4+}$wH zA>A#})r)g`wPB|$YM%ov2d_CMHzImtaqdGdZSQK@AxHYO+10d1j?7Iu+JZJE%P>Jw z-9vFCrU{wzL^GS!*`k?!ouJ)0Esr0H6=D&gx8wtW%@+6OqBNFG5Y1; zcqTgh=-iQgtfY~740R51)CrM_I-SCiAjatbS)AKt$Y68b0w<8T2gu=cY4H9LoQc9a z>q0bH1mq4Df~n}FV{)Bi z%i=aQv9tlU$AHJnmhK)Lt%isW8djJ`$Rs0sZs7pom4)=f64Wejv-yMZ343Y=FG|I? z=sMD=jttiUGGtO;IPzHRKue^hAkl`Wo!=;3b`GS3Vs3*E>#IgBP)&Z-ygY<6Z}t_X zVfWALy5e#$J$setsGt`^?w|K=aM|T-nz|o5I*a*WWAxwNm$-L1OrH;#WjB9lG zV&plQ)n`I<)D&uNpHY~p0jxcqkl&b4-C56 zS?^guahEtE(N~Da-8LVD1mkJqVRrS?$F#V3N_5h3xt;ceW7(@5)WwW4(<$*@*!XMW z7lXIIM*T~J&I!QQKCXQfm%@mq;^+^@<;Fzs9+%7GJM6SV{MNs|fsA}h_s?28C83Cf zmKV~KRh639xav-*4NnEGGRLjuxbDwk-f|*`(*t>ooh9k=-AsR`IO8_;pK?0Dp-}VU zAzg5HvQIkPE!>h|A-%?Xk#m#uZH@)t*CmWzukh=#Hc@vIOzOL}=@^!!JeMc)|x?xVTBK~Aihzc?Cod~PNSkPbOMxA({Ey(`UN0P}Hu zRwzNe8ztsov9vRgNZ}E`a$N1+<8w2p>9yl?<0^66=|#-k*nWBvMZ)dOEUL0O4R7D9 zCN;*$Vsa>L_H%k^6Pks1v8^BzLmKm|B!O!SnM_S?abKxuk=LVc{KO!Oy`)}g6KBRlhByEezmbL6VE zvl|8-qStpuFPxtn7u*wV8P>r2Nph(dm-5W&1wR?Ab!Z%%EVXn2Cr)J!M(9!b5_Vl26C&? zBdyfdIIF$2?*{(*?cBe#>~0AG>v`1*LXV37#1+0TMo_kwsGwGh$|>_7tsC~e+!-zJ z-GQ6GpZi-&(++gh+B`bhfzc)R#wzWw4*YaeZfkaj9eDY9S`qDbdpN!Q@85h5LkqkZlOr;mR$T?$=f7E!#c#_)Sq#l@|< z1Az5M_uLWox36-$S;cRTy)&F#!i31eb1l}US-4U3uNQ`UcT_hKBl3YJ&iq_Bl`^#f zUbOtOaC$W53t?+?@8`n4ood8~(qe2bGmqWt#r4#Lb_sXypjyL|Sw6jzEdMS{b52n6EF&%rKR)!^;sbeGpiXEdg7cQ>3zvrfmDOGWE2Ej0 z=Y~Z$e?HtJ|CDgq)mYR%ml?J_W{wzE!$%dn(N8Z64-TG-MqM5r73#3C3@|xoSU9cY z5f^{Xid?~N&G2wS^xUv;m;?EV9WkBOUXPR2hR{vDE zPUo8Y;=~56Y5NTiFHS?ij}H&`NI!6C^w#ijQH{u&W$%gZ84(^5+#3DIh;Y|{#UCTX zaW$kh|Ki?};j-=XjM1qY)@ZI<)%apA`fyh`_oODUf{nai>K8}1rHPL#^2fP|79ZD2 zjGR`Eu_VDo$e{xS#i=)3w9ka-$!~AgI zVh2Zy3-sV9B`wa^=^E&X!%b%&V$m{e@hJzJn^ho6mcabZ=%IDth9Xn5eW~vS*ypIO z_{yT^*M;MvwfBTGf{_D1z9-x-=wlYxvapo`M(4=x(a!a;!OZxXY6or+Y7V36_l8eq z#uReVTla?h1f9|J`@%1<5aW^i!YMrc`aW1ySNE9GD10uXyC)Q~(c=5V6N60jOA`uh7QKoh1$%v1Ix3k%&V| zorgIET8#x7ihAkEO3%(-9_?{&cztx)x^UQNX$cC{K>;uk{w>_;xLSsGkBR0#5S~t> z9(*7i;BwkG!zcG1vuFBo&Dl?IlTOmM%7CHx4N95HUOxmj=(*gpw5L=W#3fb>I-^gn z509sm@2(GzED#>Sf1R>5M@C~F40p<5N4H`!9`s%s?5&m8kqYsA@{P5<}&(A_Gu}-a&zPQ9uYZvQ|9Sn;vYG;MgcH+ji z^NfCXb=cSTCjny==1w8%x&~_NkB+`3oF6X3YwyGo+QD&PJyrg}El)CC%i>LU z0+j{9{>XxPIae_H_iMtb!)s;X*T#b=Wju_wULTHbwPUYALoPb%+Hl|eDhex)hMlgt zHvH${u7Ty(g`Y~(t)E>V_8|k_y*?ZhOpL~?4yOk%Mu)5pN7uy8ven_9QU4?1^jaY= zKN8-|?8|2!4X@7Mp^`!F4%hV0uN7s>`9E<^xO=Uro6iY1(2kF+K=ido=YJ;btChI! zGvNdAyAkaS4)eieoVrL)Q^hBu>sN#~(d2W(8R?sX=ws)G(~u~Henm@Ggk2Q8 z?%eRC=wvn+=(ywCw6_zj5Ag#IRzD3H{CGonHi+mxD$^Mq@$K;Bjz^nhdi~pBE1CY~ z+u=dMQ_-~VgnM+nUZ3sk?}WRNAMOzrEw7h0*DcBh=rjum17JLrEati;2;=C&IqQ{*q}z^z4SPExPy#>yOVqDcbl% z80I!vt_pt|@RQMev2|z8mgUtnVW*U*D4NjDGQ0I4Iegfhpe$ zFHd(|`5nMNwjTU3Wan-PXAX>bD*UgY5wM1&1D-Z@<*=t|(w!;=HME9A>6B)Iy!bSv zJT3au)8Pq6CZJinWj&`md!jvp%rPL{aU>o*}@`Xdj>aRVJc4);$7KaLK2 z)`sE5&qA&ZBxaC^;q`CNh8yYWeVfDG8Y`#h2@%=y6FDI==hSCgTDvw~u9mo#6$~)o zQZ9P(Cuq8dJ_mgJqvM}5>K*%&@X%W2mNh!>Cn282Qo6ppSJf-rWC{_bylCZ5!r=u* zt98@(t>NXZpMaNH(ctI9DIN8nM2ntB{cVqyKOc^695B|Af#<`)2~rvty`!8B)L+_S z3>qT(P}`M{)1<-0mhw-d8@Gh}bv*GH&%>*LHy}R0$+|1@9~l1vcnrQXaNSQyJKm%B z11LxDLrbLwN*j3l#c*Lh_)fInYvI2HPYvwy%doE{*mvN_H^MIkTz~WHaMv`~!M_Vn z@4&PAxwpdIJ1$q_>!`+1D_->bx5C-Mw1Ek4hs$!o&j+siKj956`9BIDBVfqA?}jsx zi^snk&Vq|x_b%{hAGrVB@QWFE{Jxp|==!2JN1w{%_vl!o>PA#yWe9+bTchVQ`TPVN z90}~N49fQ@J1+m2reiFOXvtsJ(eTO-VpkGE=jSc?&s6%qV`D38cIW!!!)iTD!|R3d zTeb%d9MS{(OsCBimM-<0MeN5Zx}a_E9+$~@<;%ECd%$+?)tB-Dx-oy6om|IAccPIE9dTWG(K4k@#w~BSJs}y$m%v}EF zFz*j$h+b;XKL%P>cM#ItKk#5j{?3*fWBJ&y{0Rw12d%Ig%+c}4x1ue>@?+EMz8{_a z*Ua#s&a*LU%a5Ki9U+AlQkHYdc}H$>-jVdiXQQ(^^9>)RuYE3htTVqL2nI64^G^lA zvVk9t$R8TyHoW^JtJ|ZluKc)GxgNANz$pX!cjfo3zFRpezjNZ9c;1UR|SG*f^9qy^nwh1RIp z3WJ;b%iR70WB(=h*KiP0=w2nTSN93QU#-_K*WtIXEa_;b&H)7|1~=LQZDQa zMn!-Ab#7#3G>x{-8QYy9)L(K(Om&lo<;iG@`=s!U z2~?DjQUT1Zj1dTxUS`ulwo&>^Zm$owxddhyhk(SqOQhD87J zPNooD-xeOeTbryETmLgXXj4e}^c0h`N^G@|T_UWpWVG3hrl_C9&dWx{LE%pDn%xJ5 z2ZgLhVP#V$>TV4WkDeP8UK_MU#}~qJL3ZGRLilbjwDI-p{xwGhW4pHg)DI;5h;nT= z@gt7v$LAwbveBkHH`;z1`yw~KoG4>Z^D?I0^-G`0kJ#H7Ikp5Xb$U<0fM9j6e5&(HPwtp{$sA$%mbEb2WzI4ih3T6=u3s-surBg|k# z7kdY$oe{7_>*{cU%$D98@B`(dMK^>WiRQhO z+cxmyu5d;^yy_+jz3Qel-MCv~MU&&>ot}Rv>R54hn2#>%M(@oHT+tm)NGHB1MVogD zD~W{e=ra?;OVUw#;H`-$!-+St%Q>yF7i<3lS^MeogEvM0drG)G`q|FmEBfM_yYNMt z)CYGBr$!_D!u4L4+O9n#itGo>o=3lYGR5BMXI0CyFZY|wFsKUj?=8nKd295>ZkUaQ zXx#4M&XbDW+4Nj(!p=CBVT6g)R=(_4R@Sm)S+DP~0iha@=ai>sri5c?^8h_r$X+7p zftl07;{vb#Z`bhX@#z9&^uy`lWUq{EpDBj+)EVK$L4MV%;D=LBqV0PU6r%%Yp&G`T zePcn=cJ7*mT0AX!X;wJL>lSs{`gadoqFeVdvqPs&MeiN~&M(|8ocTT#AGCWo-RnKR z#7lQaYjUSoxpIEDdpNon>tb;x4r~3=sR$OxO6{AvhqdqHdxU>V|LyI8!}kn>ps}If zn-h+Rnl`jh(oFIusA*97XVJ#J!bv;AnCcomJNzcFcxHAuWlU^%_(rjZHGUza)-YT% zL-s)HrfGZAw5id@_YRMtX%S7kE-KFnmp4{H^SX18L#q5_^!qvCl!C_?UX2ZFcEzLp z;|1vAw?^eN@GPIS54^PyU3x~dK7Dte@aXM7pS|yUeZH^3aoxV*C)LXK{laIkL0{P~ zd}ZX@zYs~6JG)tgMNm}O{!s!1%HN58w12o~aQnc2?H}%&8T@;r`|?!AALR1D(;WCz)NMZAzmP4>sHM!hJ$dh1&dURZNR-Mhes{y#6Up+9_~xeE(<>&SyBHtV9+KHqOR%q0AXn1&VL-f%@ z@sq?hsmI6aLv8%m&^9Z2>(Fpgur3;PShxt=?URRvEkW>Pbn4+@rRC@8^0U#u9Ud;L zahj8kFzf5fM})I*bGC?6jEsJDL|6dJo;w{A{31GLaac+J<@JG|FAk4r$^SH6#)(|M zI+}V+I9^YKdFmhd@G;?1LG^jMzW*^P0Vlj=i#Tv%;WA-3# zNtyrbVSAj&_DYgYbm=GX+a7xoEI2mPJqlKx3j1Dvl8r)7>Jy?rpA^n6ynvgvH%*{c zP#%c(Si-llv6=X`)GpEJxS=L+JkZBQTb6{A3tp;{V_Wpi1+ca)GmSUR_^0qRxY|ws z#DL5V{NSI$KLy@UcBOBQp86C%sMt{UH9{~>!I-2H;lTJ_3nOg%t7fzv9dU9vrY$xP zTktHcI62&>u@_cmQ)v;6`7~1Z_1EAbI{YZXwqmw);itociVyJ~t~mvUIEF1YUyXk9 z>2TzPuUKkfWD*OBCOVE-#}+VC4-Jz%q{_;!I0Z%L>S*IBVLAPOUW+oPhKEAai%+F- z^|CSoo0A7iUpCsX)0EQD3lxhO`^~B0v%$}!Z=M!j^S*33?%x-ehA#v!MJJuk49tt1 znH~-geir@g^l;CDpE(rjO=Q(%&H+wZ$&r8i8R5s$fBsAK?iu08-4j&$fp4P^EemHB z{A_NuvRFPoxGYpMa8f7pBs%wo*%Rhx zFD~VnI(anOa$z_&`psu@d(;|PTEV*NTci0aa`Itau!4X^E3Y$p_}tvs==l}7-3kem zbw6wus z(op7`e@&B26Z>3i*gQ+>ftGi%FiB=`W?rIC^|SY*qW@gwyE6%A?_O6CFHoh$YA2G} z#zwDQWy-v7%=GBC%fe!`&(&eE>BRquS3~P=;=j#J{I3p{PK^5R4EL_V>y0}@QB>|O zBm44Q7ErL{>mcgQi?bckZFhweYgm5vuJAwx>)@}42|}`{r}l4z2|^-xNrXf(x7BFK z=i3RZ2EeM1{xCkjTg~=6?B^Mo$tV6IGb;MTg#0-0e6cS5 z(ajU`SJqlQxs)Fpd^K87%8%>Xh9nkREEKAfyCyD-j!p0SOpJ!s=%=Opt?gCj&uN{T zql>%qGX{Gu1L`p?($NtQg(GRtOWm>A-Wt6zsm09pNj>?#!3nz|nf=_Js+F(oJ$5Jn z(EvE(WW8qm)TzlubW!Bu?|bs|Ydr3NUwAOcTfp8v(USu-B;G@ON_6W>nZ0+8r;8IZ z4Q@s8X?Os;-bPKA-<|F8ah*^WD*}7UqXU^AF1RMVB0s z?`@xV##x^{eZi8?9D3Ta(^f=ZJ0#yV@5~kFEcxV$5{Zk?Iqj1tA9UI&Cx2$eq7^4E zE1h}PiqgqvpS$FY1J8;x9k%3xgHB$);?())oqXnsqfc8#&Lzv1NBzt52eckU&pt^} zpN(E$o?n z*DLvJ<*%9^J#$a~<^4)$7fG!B)?QLf1+~Z2oLn(AIDT%-%ic5pD}QHC*N2L!PO^-r z_$=2~T8pU>T>r?moom;JqC4-+KN^$`x=r2md=J>Uc9hva%sjkIMZUb#?BtveM0@D;4Ms+O(-ZsgfFP|pX_01=6PxA4y2>-lM( zlTcYmUSIA@$#SSa^;$B4=fz|mq*D0RW#;*}4S81_TPyev4VC^qk+*b_gXkeK6^!5A zb*^&ECmcR59bHU)lnQ)CpTR@N=kwPz`R9@UAg=py_4!|*@iTe8h3g)PbYIR1q?bvL z2X7_y3kp!igZLA8j~P=;u{TKSxv|C6@m&8ee*$e6>8i-5r^&4J#{9)N-RBz_KNl}9 zrgkEKeSN2-Qp>4mAurZ2=sUPBA6HC`;<}ov(tkh!%uJ+Kmx`&q6X~Ntu+ry}u6(Qc zUL#w-ACup$H4>s!`@KlkxhJ;l@n>ibrFy^*W<-WgnbxjsNK zCvq+Dd=l47c%H%ac&-z*OSHqOv-N!SK&~UB&{*wuM5@HD9P4U^vdat#Q+59x`;)Nr4VYn*jkldL1jnk?0!aOZcLWSvA- z-#`^UYhrZU&+{X8PTjD53-%^&aumdQC*_;uolo8*6~(PBHpzM{S-pCoCb-s4>S~hp zWU_j^SF?7V)FkIwTjRO~DIY5c7f$Uh^aKYkC!*9_&q zC+jeuua>nL#{WiEuczpX7>$b)4e$jGnp9t^%i4EbBCBufc(Nuj-plh)vC~R3tk2=C z7>WNniGnkbw|-EZ+N7p(TvM}ez3f#7mb-6Dy02Dr2p=bh(Q%WC(dw7-!z&jgYSIV$ z_Z3rsPtLW-F;B+{`9n64!mXzDY|Z%~x<;!S#5qelVO$l!{tR_OWgMdbI`-`J4<6`p-Q z&#SK>zea_AZ|Z$gY;>)u^}s8|Hzhu36eKgq?;Gx+^1yrKpPk4rV?n>lQ+(hD(A-1@ zy-f0B55}L7-xE@!q&kl8eUCj9e@%YTg?^3YpSq@4srEn;>wzgw276GS&ol8X_PcY} zns(te{{`=nzsx(|%g0V}ri%*NgLE$>Za=l+9yU<8)Xcwgl_sZOvkH~|5P3YfJ*N&y zJC=98;UDMuV4mNY>?(eQ>lA&=FDa65-{Vx*fN^9vf|qA-UBvZofK6J6e!rr{o`Cdx z!#U1~^pz>i)4?0$^{ATNU!xD@N#@tHeo4)y5bZd>FF(=v3Js}&@=YrCBVlnvLC5jz z>Eg7h&V>03`H!Ii3wZ9arZD8W_jJ?P*o_TkUNjZd`3k$9sc-qFMCPX{RQ%%#uKULo z{fc`}8#C6`e|z-W`sd%0*R$o1@y>U|G`=&E2^5~xKrU){cWt8Jm!~~`CR?`K8!S>^)EE$5U#S3Dq^dHr#qu+F89Kb_k7Ha(@$09T>qPjLk=@+^L_m8*<{ZCs^Hy~|a6XXq^V+|AW<#+BTA z9zzxW^Z|rxh`+&Yc;TY7mH^jjn`jM&RoiWl&iSLWnAULdvrILs1j!2 z^jXN&dn#7)EdKKt_>j@;pTEnqTri%^Y$f0BJooS?TzmG=nEvu!#nf2dU%IEO_*2{q zbq`f|F){JtjQGVe(j_qc2jAfSQ2zEHUD~2gzl;0H{I!#=j`;Mib3co}SE*1}pT3!U zRs1mNyKw!ufAJCzLd8dUku2yJr0Iih{<`>69`$x7{?zbE{OPx3@0uQ^=M_9VJ0MBk zdZXVJdh2de>u#$bZyOt)m2EBg3vvEU4ez(|tQP9$$J<@xkEyScdZ*!oVnQzfpZ5D- zeBh;ASK_^1&PY7_iZ+lx?>KTg@`CGhWWFsGVzIj|CgUVQ*c+SR!eh!zuA8(&O z!QC$*&6@%TbMN)mk8-cZoQJdHNUlHPdNkKDr0*JYxYSuBHWqj^Y2H(ODEGedBe_>k z+qoXVRlkJhlkyFEhfaAk{+@gP{l9T9rtmD+iYoBq#ZOf11)`+z`t&{bb>rfTq$S5u zWBP^U+m$@)4s{jy_qUKH%G}6%Ijy#GUC0#=WyNH@uc&uFr{EsXOMz_ETsJWN{KlW? zwpzaB0H=q32?80%^IY<&z{hFbPKoCy;%A@#Zr;t|&p$t)Q9FZ#b!FG`7rBb{oXnqE zT;f?8_eoq;f%lzqn__3UD%Inkjr9py`i&y5rw2X9K7+Mn^;!IN3RyiV zDr@Y0>Ti;DFS4qY{^wh;u1Vf~$m@rP^1BxFt#6XGamK}b?{XTPyrD^Mue$j5dr!S8 zSwf{^NBV6{eCtx+^t>0L`QNoXJGQhbky|AXKFAH4PjZ#b^~8b2)KOe-=BgS#!u24o z6S)e3|Cf^bxW2}90@qu)dj0w)%J4#Q<6Sjmku9~2XTao#rIJ#qyZOKm&ivPFDAT)A z;@N}X0rLB9_3}Q6qg9Fgp1lo_-wV>!_C8Vny2J+_f&c56nwWMUs44EZp8URGU-5aL ztBwBQ+?V3KFCSc^HE)GZChZW_e=awNaea!b_nhv;y@!M^=&$pOHi%W`)7*Q|4h7^s z?+c{+GW>VS|9jHCPzV*JKb)-p5>vtvhew6qbvW27_z`Gv;&W~^%$Ftax zeyt1Y$-g?U(6{0nHH3Nu4kx!SU0+vo?|e~{+$C~*bSrl}3sJeeA@7yso5=fPxz6O; z$91Yc;J1N$kKM-;-|5{;Jc}D9e`hYLi=(L zR{~#EarHCzMR~)T5FlYsAS{7E-o8M9uo?CQ2@uwB-+T9wK*$av(mrk76$Md_RqMXs zhG=U+0Y$~4Eecqyezk6`wzaiYKW$4t6~F(v_f6jA@!IeA-QO>qJLml8%*>gYGiT;q z?!63j71Hm4mZgAMJ)l5GdOIllXXWkGFG!_xtcorJ<=!$tRb}nJJQkj{S;ZI{eHH^t zDKe^-r0;A)Y1qxcs^L=snJN(FXVs=*6Tqs~ty3?LVZPR+fiM3Lm8iF2l_Og`*9tz= zE_Wc(yoe~d;;Y^8*U(=GdE#x{49Cs&pjc-*m(wT|aMU*we>~#U>ZcZ;$|PTftLb>f zPscxvWtSJTBtK#HJx`)bAs7v+)@7BE&xBa+gPbd<`26#WIr*xr)vp57zWVK5V5QYB zj~_tJarhZfu0RN_a%3&S9jOs!{}jv;N8QM2dVmTrL5?rb+BJ(kPRS7t!p$GV_X^_8ic3&HgmWLD>( zOj}+{ihvh#9*XK}q@K??3yN(>rS&Z!?G{bOYaJP&84r2#N7g=nZc9IgR<+J^9llyf zLw|=~3%6!a>%f7EeNjnb6PIVeb_bSs?W*=)*~%FNS!uGt*W2(kp};YQUF>A`p-o<<`(ujP!6|SK{@mo4!QvJ z3+QE!dE~-`wG!P9MhO^OK#M^6vY!&&{6s1UV%ZU-RV6vi*H#p+CgZU*xgD?anNI^* z?Z@*hX$ADzn<`L6Uss|4?iRj^ZE{Z6AgvUum2DUB>Xc}uP0sj^WZEp>^vz(}PlN2I zM47_9V+a{}4dBb3?^*EGCh;IDpvK(GxaSiEzHH%UqVut%Vq~m^a4YC|6Lz*@dxa!0 zYC7fPo}KNxC_o*lW-9n0$T?(Gj%NN6wlLaXjvF@97qFXJ^sB&AeR=v#X(?IcdVtaYkyWMaq2(RSouN~k=);C znO*q_N4zyW^QSpt>ez*1{|?o7*YU@5)7-#MUYB>1E7 z#{-b3Enn-FrMhekUFLI+6=RtU?eRcu%8sR$WSk}0XOoP#BxRQ5FeECHaG4VNbfUAc z$8qpgXL~GuZn<+HZTC6P>+!Bl=(B|PoIs|(+KLI7d=X?a^t^v?4jOXOIf^xOr-dg0 z?~0bF(LKR}Pqg48A?Zc0cf!RRfKLKbRduojpJKu1vxL6?hNay}J5D)^&#MEo8$I%d zb5Y_BTfOW?Vsq}X$&{ItgVEYjB`QOyQU40Jh!x;c#!?RH*ESh!l`w(I`Fvz6P#H{3 z$NqIGrKZWCTusk!k&ov;U&?Z-0tINRvZQG{V3eu+%i#M}LfKGFx0yDZnpR}xTmr7e zkg0pqnBb{+qXjb6psV+%?m6F|kXBaWw0S7dfefl8r_(ajK9d@^%Jgm6ZL0$8k#8m! z&1KZANaDBhm<6<&A*yAW!{HH`!r^h82fq$(T9R zKzYh_fQ|=U0LmduA5cE|*&DIkS~sM5@H8Vm6|@Yrg4c;>^_;9aF#3bRCvx{9&B64Q zpzP5ngR$wJxsAzKsDg;dh5SZJAZPr05ys z3oQ?x?+2xx`)%r zxM{}Gl#$dFF9KAZR@k8PGC;kVwbo>SRsgEHs#9x0aR%hvOvwC^u?)~9X;8h*T*nfP z8L%zDvhz{R)R9&Ph4w?ZjtqIPPL`wc+GCP@$kcki6?xG}?xj>gcO?t@zcQafW;N&( zb`SDq=nLN~=XTrSjL<}R8g$mh)~Q|}P#*;e%1dSNj#PvK|Lktwg6_QTrUvel^t@jOFWT;LXv_exf@7YPn=# zjV*)fX!{=aPsm)tKwO#ju#>Q>^IPJxRxf+LTwr(+G5wU?`THSIEm8c#D3JSJ9W~tt zj0fp0_)`^p6FfD{Pp35~=ND&N;C*0|&L)wS?rRIv!1g`rXvoykhqAL~*|5rOMz&hh zqzRNGno7`tpi1sSI=?f0K}w+ZsfvDuT9yK++~zs0{>|4SoBva`IQccr{-?7ex0kWG zqpsb+Uq^GBzSihMAD(vh$!;<(a#Hze=b-U2-$dw5u}Jggx`rnFPw1wO2ED`R+WTz5 zrsnlVx1HB%LlWJ)v!vr9;N6~3k6cbg8x6fp71FZ@vs&63nmX$0jm^DsOifk=>e`x{ zJ913j#^#3hj&_wPwoyr}4e^Wf`T;{9pLXW#d-pV6 zjZ7uqICHdt8);#o97#_IIf|OUb{5br|Kr>(!gO+`98RmharP5K>BDcFey#8UD!M=p zp?6}kH_iIixk(hUU<7^iE%Xelq`MuE_BrD$(T0~>iB)It%D-aTdd68QMlcyfFP{N; z5~IldowG$7-N`DXPrq~Kh>}}gkPB~FAaleR^KLKh#^O#FrKD@JhAtA| zjHBv8R2;RRhu6!P{AvySGQN)qSEsm~N*v(3EzAvk?=kOlLt&RMU<7r;6$|RFK-6nN zYO?|HS@(x4P{0!loM596wTzQp=!63%`}=t^M+LG8a{cPAMEu6;5r-NOfZ$dgdH|mPS;(9o4 zcq8tZ$7f8WX--)t%BjsMTeL~#^l2}N4^25`k(iA4V9H8u%2ei!q8(BW&?+)l5bcT> zfuP~{g*{Fh?q;Q^Dq|c zmZ9nub7d}_=pjqRJo>hWT&2xlVP?MNa~OGdPuWW>p#42%NL0}mJ@KK6YHIBzCu$3m zL+@BGIYeAYf9ZvmFPh6W8c&fNIat)tr8%-rET#`~WR13DHXR=?3u#HNED=lT(p>2h zwe)1J+}dYZZrjFoOe$k-LsQ+xri&VyV#{f2Z&@r>P(`&IN>}to16IC;N#yTG2-~&`Y@2)+A_UA6ZY+`^bEuvml{Ge3aWy_NTx1kpo4Pa{J1F zh*@(b))xgBw6U+8DdKdXudESkDW{(dih4H56uPRP9HKRp;`1X=aJV1(U>%+6C(F97 zpITQuuckO!uhZuRvV;Qp(9}qk`LOi{+MO>aizZevmi89N^C-VSj>8w5XBJ4mXrW6A zRjD1btg9 zb|`Fkyqv=ycSQqw@Dh{V8?)67Y}6Z#`u&lpduz&FoliRl$XxXN$yS+1X9mbA+V|&m zCWcVUK$tl}+Xl+z+NHu&mlueJqF!&v?~R82VV54iOhh_!NP2OQyZ~=Xm4jiGA5z_5 znDBBs%;X9x8X^tHmFO?Cv_zdO!e^)O&wE2KKCdEt#JNLU%_K&z43#;KYhXLL+xeEK z{iF!JaxG0Nl0F(g4C3oxXww^iS|~@;-J0y17Y^yss7v>ULm>n0bzOfBgeK#CY>sVW zQ)gBZ7m*l_Y4XT044Lip-7vY;u|r(a$t^kG2oTq#If+ zS7h%LKNO4~M7I^owb?g|8&b*cG;V~9J8rQwmePwOWR=*puWA$~D@`7SMiD26YvRGYWm{!iL#M~MrBU+?RMT)aR(iriD~|0CZnlz z7IfUH)~D}>Wk1JVa7u+UWij`7IkeCQPUgxpX5C_ri0#-Cmb3 zaxYa)lhd>B6KMBk4YCh?vRp2)`eaiK`tKKOsM}x|aK1pz%vG^(0Q?8A-dwgw<_$77 z8_|s&22}e4UL)>vM~z6x(DktQK|z-;lH+;@LY}xQ=rz3Ym^x zpu!p%?j4Evqq;j3()C!(70^QuoBXk~t48+B^Lt#eKwOU-Mlj~`hk}pbGqOcBa?AjJ zj|xf-d*XT^=!t|e17ny4kHRUld|(uBT`}txbQ?bC@PuOSa3rFK9}`ruSo(U0BYMQ` z0pINodE;UCv2?)_R5$MO_(Fy!;xv)MA9~6VIa97&?AOt$Yw)2TG3qVmX)&j+Ir}&j|Pi zbM&J?Nxo9K0+m@jaIc~A@tE+3=(X{(GW$94Bf+amK0Q|^ ze~|sWxGtH&S0vvKu|| z=zK3&KNnv5-Wlguyz73v#~lon9JTPzLMUG0`?a*!C(oyl4~$nk8U66Vft1kahwzsv zMs6q)HDWNLmpdpL^BuFxVnKJr6A!s#ahJ~%iM(c$87@!M6Gl+v4*DW~f9&;?jBX5~ zkmEK+j}RJgLTsfMT+*N`LNY)5q(DEkPQt9abG^h%(L(a->^H;{f)-AOXL>X&?{NG| zRML%27$L0_WTE4fSjhO%bZ`Pb0`w-v8|HEePax(d(=D$VZi(J^dvaj59qwfa<=%8swT^Y;&*h< zWVy)kdjunBWgc~%B4=lRB>rZaGmq9yk?%M@7PBl9v{c|LgnytN6*6A(N6`g)gZ75z zray^pw&s2!un93e9QG7=S=67YaH_mp{DoeainZ`lCMD#ahG^=qv~!w#$niHUxMs)1 zrpvM7Gul2~{!05?&<#!Ko^3PaK7d*Wc zab#t?tQ24I>Y7i9W;t8?yC8Q9qCrR}IR1ekPc5`g^3_Sd_D?~--vF0z8q;IyFihy> zgJgIWB8GU_6*UZZSdaQ*u78P~h9-2R-q_G?SWWsL(MxY>X}q`&n)~v!e>OUXuT0#k6oVyY5z`iYr{^kc>}hLM(k3p&nD-0{L8pUaigPL^<&?R#}#Pjds1TY*$@{ zpkU1`+32`dn`KR()3fBz?CZ`!Tu9qyV;6C~Mi0-H!R&3?RcR^~(4mEJoGa#FwYx#1 z59Z1QeaeX&HTq(n+)SJ1q8Zz@#azr7+P_xzq8I1NLD~)ze51IDo?L>7UNB#l@-AQy zy+04Rcbd7c7B{C$Kba4=ev5WZS~V`D<^?j}u}iDBoaguavM24SlcVyCfZvBn8uu7s z4_3hlX)~-A53Z5}vv1YzPiflj_>s1PF3XWKX>>KB_}es&|I4)7HEOMvRh97|V$+yE z;75?A`$C~RG*^4uhDNM-)*I6%OyJ2hVS+gf;zk?%L)?YcJ%S)Pqz83hJo;npu2gw# zY`gy1cWU>fc$>H(U1kD)9{YBKQ_qSj%P4|UG*5wqt{}4xMLlBgAZLi5Q9JAk2b&?y@^R@ zdhKTh$im!MEaJkR&W$)4BQK!;np`b%iQ_HHm6ciU@6{I6?rqD9m2uO%Q+_L)$Lp=q zLr=8Ip?E9t@m5(a-r;iQiQjTvm*ion#QZV%Wmhl|^2L1bs_AYTuWP%^*>^*`^osul D0(O>- diff --git a/srml/contract/COMPLEXITY.md b/srml/contract/COMPLEXITY.md index f805eb45f0..a6f1c3dca7 100644 --- a/srml/contract/COMPLEXITY.md +++ b/srml/contract/COMPLEXITY.md @@ -132,53 +132,48 @@ Consists of dropping (in the Rust sense) of the `AccountDb`. This function performs the following steps: 1. Querying source and destination balances from an overlay (see `get_balance`), -2. Querying fee for the case. (This hits DB unless pre-loaded) -2. Querying `existential_deposit`. (This hits DB unless pre-loaded) +2. Querying `existential_deposit`. 3. Executing `ensure_account_liquid` hook. 4. Updating source and destination balance in the overlay (see `set_balance`). **Note** that the complexity of executing `ensure_account_liquid` hook should be considered separately. -In the course of the execution this function can perform up to 4 DB reads: 2x `get_balance`, fee and `existential_deposit`. The last two can be pre-loaded pushing the cost of loading to a higher level and making it a one time. It can also induce up to 2 DB writes via `set_balance` if flushed to the storage. +In the course of the execution this function can perform up to 2 DB reads to `get_balance` of source and destination accounts. It can also induce up to 2 DB writes via `set_balance` if flushed to the storage. Moreover, if the source balance goes below `existential_deposit` then the account will be deleted along with all its storage which requires time proportional to the number of storage entries of that account. Assuming marshaled size of a balance value is of the constant size we can neglect its effect on the performance. -**complexity**: up to 4 DB reads and up to 2 DB writes (if flushed to the storage) in the standard case. If removal of the source account takes place then it will additionally perform a DB write per one storage entry that the account has. For the current `AccountDb` implementation computing complexity also depends on the depth of the `AccountDb` cascade. Memorywise it can be assumed to be constant. +**complexity**: up to 2 DB reads and up to 2 DB writes (if flushed to the storage) in the standard case. If removal of the source account takes place then it will additionally perform a DB write per one storage entry that the account has. For the current `AccountDb` implementation computing complexity also depends on the depth of the `AccountDb` cascade. Memorywise it can be assumed to be constant. ## Call This function receives input data for the contract execution. The execution consists of the following steps: -1. Querying `MaxDepth` and `call_base_fee`. (These hit DB unless pre-loaded) -2. Loading code from the DB. -3. `transfer`-ing funds between the caller and the destination account. -4. Executing the code of the destination account. -5. Committing overlayed changed to the underlying `AccountDb`. +1. Loading code from the DB. +2. `transfer`-ing funds between the caller and the destination account. +3. Executing the code of the destination account. +4. Committing overlayed changed to the underlying `AccountDb`. **Note** that the complexity of executing the contract code should be considered separately. -The execution of this function will involve 2 DB reads for querying `MaxDepth` and `MaxDepth` constants. These values can be pre-loaded pushing the cost of loading to a higher level and making it a one time. - Loading code most probably will trigger a DB read, since the code is immutable and therefore will not get into the cache (unless a suicide removes it). -Also, `transfer` can make up to 4 DB reads and up to 2 DB writes (if flushed to the storage) in the standard case. If removal of the source account takes place then it will additionally perform a DB write per one storage entry that the account has. +Also, `transfer` can make up to 2 DB reads and up to 2 DB writes (if flushed to the storage) in the standard case. If removal of the source account takes place then it will additionally perform a DB write per one storage entry that the account has. Finally, all changes are `commit`-ted into the underlying overlay. The complexity of this depends on the number of changes performed by the code. Thus, the pricing of storage modification should account for that. -**complexity**: Up to 7 DB reads. DB read of the code is of dynamic size. There can also be up to 2 DB writes (if flushed to the storage). Additionally, if the source account removal takes place a DB write will be performed per one storage entry that the account has. +**complexity**: Up to 3 DB reads. DB read of the code is of dynamic size. There can also be up to 2 DB writes (if flushed to the storage). Additionally, if the source account removal takes place a DB write will be performed per one storage entry that the account has. ## Create This function takes the code of the constructor and input data. Creation of a contract consists of the following steps: -1. Querying `MaxDepth` and `create_base_fee`. (These hit DB unless pre-loaded) -2. Calling `DetermineContractAddress` hook to determine an address for the contract, -3. `transfer`-ing funds between self and the newly created contract. -4. Executing the constructor code. This will yield the final code of the code. -5. Storing the code for the newly created contract in the overlay. -6. Committing overlayed changed to the underlying `AccountDb`. +1. Calling `DetermineContractAddress` hook to determine an address for the contract, +2. `transfer`-ing funds between self and the newly created contract. +3. Executing the constructor code. This will yield the final code of the code. +4. Storing the code for the newly created contract in the overlay. +5. Committing overlayed changed to the underlying `AccountDb`. **Note** that the complexity of executing the constructor code should be considered separately. @@ -186,15 +181,13 @@ This function takes the code of the constructor and input data. Creation of a co **Note** that the constructor returns code in the owned form and it's obtained via return facilities, which should have take fee for the return value. -The execution of this function involves 2 DB reads for querying `create_base_fee` and `MaxDepth` constants. These values can be pre-loaded pushing the cost of loading to a higher level and making it a one time. - -Also, `transfer` can make up to 4 DB reads and up to 2 DB writes (if flushed to the storage) in the standard case. If removal of the source account takes place then it will additionally perform a DB write per one storage entry that the account has. +Also, `transfer` can make up to 2 DB reads and up to 2 DB writes (if flushed to the storage) in the standard case. If removal of the source account takes place then it will additionally perform a DB write per one storage entry that the account has. Storing the code in the overlay may induce another DB write (if flushed to the storage) with the size proportional to the size of the constructor code. Finally, all changes are `commit`-ted into the underlying overlay. The complexity of this depends on the number of changes performed by the constructor code. Thus, the pricing of storage modification should account for that. -**complexity**: Up to 6 DB reads and induces up to 3 DB writes (if flushed to the storage), one of which is dependent on the size of the code. Additionally, if the source account removal takes place a DB write will be performed per one storage entry that the account has. +**complexity**: Up to 2 DB reads and induces up to 3 DB writes (if flushed to the storage), one of which is dependent on the size of the code. Additionally, if the source account removal takes place a DB write will be performed per one storage entry that the account has. # Externalities diff --git a/srml/contract/src/exec.rs b/srml/contract/src/exec.rs index cc74142947..f3cc2139bf 100644 --- a/srml/contract/src/exec.rs +++ b/srml/contract/src/exec.rs @@ -14,14 +14,13 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use super::{MaxDepth, ContractAddressFor, Module, Trait, Event, RawEvent}; +use super::{ContractAddressFor, Trait, Event, RawEvent, Config}; use account_db::{AccountDb, OverlayAccountDb}; use gas::GasMeter; use vm; use rstd::prelude::*; use runtime_primitives::traits::{Zero, CheckedAdd, CheckedSub}; -use runtime_support::StorageValue; use balances::{self, EnsureAccountLiquid}; // TODO: Add logs @@ -38,6 +37,7 @@ pub struct ExecutionContext<'a, T: Trait + 'a> { pub overlay: OverlayAccountDb<'a, T>, pub depth: usize, pub events: Vec>, + pub config: &'a Config, } impl<'a, T: Trait> ExecutionContext<'a, T> { @@ -51,12 +51,11 @@ impl<'a, T: Trait> ExecutionContext<'a, T> { data: &[u8], output_data: &mut Vec, ) -> Result { - if self.depth == >::get() as usize { + if self.depth == self.config.max_depth as usize { return Err("reached maximum depth, cannot make a call"); } - let call_base_fee = >::call_base_fee(); - if gas_meter.charge(call_base_fee).is_out_of_gas() { + if gas_meter.charge(self.config.call_base_fee).is_out_of_gas() { return Err("not enough gas to pay base call fee"); } @@ -70,6 +69,7 @@ impl<'a, T: Trait> ExecutionContext<'a, T> { self_account: dest.clone(), depth: self.depth + 1, events: Vec::new(), + config: self.config, }; if value > T::Balance::zero() { @@ -92,7 +92,7 @@ impl<'a, T: Trait> ExecutionContext<'a, T> { ctx: &mut nested, _caller: caller, }, - &::vm::Config::default(), + &self.config.schedule, gas_meter, ).map_err(|_| "vm execute returned error while call")?; } @@ -114,12 +114,11 @@ impl<'a, T: Trait> ExecutionContext<'a, T> { init_code: &[u8], data: &[u8], ) -> Result, &'static str> { - if self.depth == >::get() as usize { + if self.depth == self.config.max_depth as usize { return Err("reached maximum depth, cannot create"); } - let create_base_fee = >::create_base_fee(); - if gas_meter.charge(create_base_fee).is_out_of_gas() { + if gas_meter.charge(self.config.create_base_fee).is_out_of_gas() { return Err("not enough gas to pay base create fee"); } @@ -138,6 +137,7 @@ impl<'a, T: Trait> ExecutionContext<'a, T> { self_account: dest.clone(), depth: self.depth + 1, events: Vec::new(), + config: self.config, }; if endowment > T::Balance::zero() { @@ -160,7 +160,7 @@ impl<'a, T: Trait> ExecutionContext<'a, T> { ctx: &mut nested, _caller: caller, }, - &::vm::Config::default(), + &self.config.schedule, gas_meter, ).map_err(|_| "vm execute returned error while create")?; @@ -213,14 +213,15 @@ fn transfer<'a, T: Trait>( // `contract_create` will be `false` but `would_create` will be `true`. let would_create = to_balance.is_zero(); - let fee: T::Balance = if contract_create { - >::contract_fee() - } else { - if would_create { - >::creation_fee() - } else { - >::transfer_fee() - } + let fee: T::Balance = match (contract_create, would_create) { + // If this function is called from `CREATE` routine, then we always + // charge contract account creation fee. + (true, _) => ctx.config.contract_account_create_fee, + + // Otherwise the fee depends on whether we create a new account or transfer + // to an existing one. + (false, true) => ctx.config.account_create_fee, + (false, false) => ctx.config.transfer_fee, }; if gas_meter.charge_by_balance(fee).is_out_of_gas() { @@ -233,7 +234,7 @@ fn transfer<'a, T: Trait>( Some(b) => b, None => return Err("balance too low to send value"), }; - if would_create && value < >::existential_deposit() { + if would_create && value < ctx.config.existential_deposit { return Err("value too low to create account"); } ::EnsureAccountLiquid::ensure_account_liquid(transactor)?; diff --git a/srml/contract/src/lib.rs b/srml/contract/src/lib.rs index e3f6a600b3..e87c289ed8 100644 --- a/srml/contract/src/lib.rs +++ b/srml/contract/src/lib.rs @@ -168,11 +168,13 @@ decl_module! { // paying for the gas. let mut gas_meter = gas::buy_gas::(&origin, gas_limit)?; + let cfg = Config::preload(); let mut ctx = ExecutionContext { self_account: origin.clone(), depth: 0, overlay: OverlayAccountDb::::new(&account_db::DirectAccountDb), events: Vec::new(), + config: &cfg, }; let mut output_data = Vec::new(); @@ -221,11 +223,13 @@ decl_module! { // paying for the gas. let mut gas_meter = gas::buy_gas::(&origin, gas_limit)?; + let cfg = Config::preload(); let mut ctx = ExecutionContext { self_account: origin.clone(), depth: 0, overlay: OverlayAccountDb::::new(&account_db::DirectAccountDb), events: Vec::new(), + config: &cfg, }; let result = ctx.create(origin.clone(), endowment, &mut gas_meter, &ctor_code, &data); @@ -284,7 +288,8 @@ decl_storage! { BlockGasLimit get(block_gas_limit) config(): T::Gas = T::Gas::sa(1_000_000); /// Gas spent so far in this block. GasSpent get(gas_spent): T::Gas; - + /// Current cost schedule for contracts. + CurrentSchedule get(current_schedule) config(): Schedule = Schedule::default(); /// The code associated with an account. pub CodeOf: map T::AccountId => Vec; // TODO Vec values should be optimised to not do a length prefix. } @@ -310,3 +315,77 @@ impl balances::OnFreeBalanceZero for Module { >::remove_prefix(who.clone()); } } + +/// In-memory cache of configuration values. +/// +/// We assume that these values can't be changed in the +/// course of transaction execution. +pub struct Config { + pub schedule: Schedule, + pub existential_deposit: T::Balance, + pub max_depth: u32, + pub contract_account_create_fee: T::Balance, + pub account_create_fee: T::Balance, + pub transfer_fee: T::Balance, + pub call_base_fee: T::Gas, + pub create_base_fee: T::Gas, +} + +impl Config { + fn preload() -> Config { + Config { + schedule: >::current_schedule(), + existential_deposit: >::existential_deposit(), + max_depth: >::max_depth(), + contract_account_create_fee: >::contract_fee(), + account_create_fee: >::creation_fee(), + transfer_fee: >::transfer_fee(), + call_base_fee: >::call_base_fee(), + create_base_fee: >::create_base_fee(), + } + } +} + +/// Definition of the cost schedule and other parameterizations for wasm vm. +#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[derive(Clone, Encode, Decode)] +pub struct Schedule { + /// Gas cost of a growing memory by single page. + pub grow_mem_cost: Gas, + + /// Gas cost of a regular operation. + pub regular_op_cost: Gas, + + /// Gas cost per one byte returned. + pub return_data_per_byte_cost: Gas, + + /// Gas cost per one byte read from the sandbox memory. + sandbox_data_read_cost: Gas, + + /// Gas cost per one byte written to the sandbox memory. + sandbox_data_write_cost: Gas, + + /// How tall the stack is allowed to grow? + /// + /// See https://wiki.parity.io/WebAssembly-StackHeight to find out + /// how the stack frame cost is calculated. + pub max_stack_height: u32, + + //// What is the maximal memory pages amount is allowed to have for + /// a contract. + pub max_memory_pages: u32, +} + +impl> Default for Schedule { + fn default() -> Schedule { + Schedule { + grow_mem_cost: Gas::sa(1), + regular_op_cost: Gas::sa(1), + return_data_per_byte_cost: Gas::sa(1), + sandbox_data_read_cost: Gas::sa(1), + sandbox_data_write_cost: Gas::sa(1), + max_stack_height: 64 * 1024, + max_memory_pages: 16, + } + } +} diff --git a/srml/contract/src/tests.rs b/srml/contract/src/tests.rs index 62683e0a95..27d6e59a95 100644 --- a/srml/contract/src/tests.rs +++ b/srml/contract/src/tests.rs @@ -142,6 +142,7 @@ impl ExtBuilder { gas_price: self.gas_price, max_depth: 100, block_gas_limit: self.block_gas_limit, + current_schedule: Default::default(), }.build_storage() .unwrap().0, ); diff --git a/srml/contract/src/vm/env_def/macros.rs b/srml/contract/src/vm/env_def/macros.rs index 16ba669daf..c751bd0c12 100644 --- a/srml/contract/src/vm/env_def/macros.rs +++ b/srml/contract/src/vm/env_def/macros.rs @@ -219,7 +219,7 @@ mod tests { #[test] fn macro_define_func() { define_func!( ext_gas (_ctx, amount: u32) => { - let amount = <<::T as Trait>::Gas as As>::sa(amount); + let amount = <::Gas as As>::sa(amount); if !amount.is_zero() { Ok(()) } else { @@ -269,7 +269,7 @@ mod tests { fn macro_define_env() { define_env!(init_env, , ext_gas( _ctx, amount: u32 ) => { - let amount = <<::T as Trait>::Gas as As>::sa(amount); + let amount = <::Gas as As>::sa(amount); if !amount.is_zero() { Ok(()) } else { diff --git a/srml/contract/src/vm/mod.rs b/srml/contract/src/vm/mod.rs index 63cdc5861d..dc59154266 100644 --- a/srml/contract/src/vm/mod.rs +++ b/srml/contract/src/vm/mod.rs @@ -20,8 +20,7 @@ use exec::CreateReceipt; use gas::GasMeter; use rstd::prelude::*; -use runtime_primitives::traits::As; -use Trait; +use {Trait, Schedule}; use {balances, sandbox, system}; type BalanceOf = ::Balance; @@ -118,7 +117,7 @@ pub fn execute<'a, E: Ext>( input_data: &[u8], output_data: &mut Vec, ext: &'a mut E, - config: &Config, + schedule: &Schedule<::Gas>, gas_meter: &mut GasMeter, ) -> Result<(), Error> { let env = runtime::init_env(); @@ -126,7 +125,7 @@ pub fn execute<'a, E: Ext>( let PreparedContract { instrumented_code, memory, - } = prepare_contract(code, &config, &env)?; + } = prepare_contract(code, &schedule, &env)?; let mut imports = sandbox::EnvironmentDefinitionBuilder::new(); for (func_name, ext_func) in &env.funcs { @@ -134,7 +133,7 @@ pub fn execute<'a, E: Ext>( } imports.add_memory("env", "memory", memory.clone()); - let mut runtime = Runtime::new(ext, input_data, output_data, &config, memory, gas_meter); + let mut runtime = Runtime::new(ext, input_data, output_data, &schedule, memory, gas_meter); // Instantiate the instance from the instrumented module code. match sandbox::Instance::new(&instrumented_code, &imports, &mut runtime) { @@ -152,49 +151,6 @@ pub fn execute<'a, E: Ext>( } } -// TODO: Extract it to the root of the crate -#[derive(Clone)] -pub struct Config { - /// Gas cost of a growing memory by single page. - grow_mem_cost: T::Gas, - - /// Gas cost of a regular operation. - regular_op_cost: T::Gas, - - /// Gas cost per one byte returned. - return_data_per_byte_cost: T::Gas, - - /// Gas cost per one byte read from the sandbox memory. - sandbox_data_read_cost: T::Gas, - - /// Gas cost per one byte written to the sandbox memory. - sandbox_data_write_cost: T::Gas, - - /// How tall the stack is allowed to grow? - /// - /// See https://wiki.parity.io/WebAssembly-StackHeight to find out - /// how the stack frame cost is calculated. - max_stack_height: u32, - - //// What is the maximal memory pages amount is allowed to have for - /// a contract. - max_memory_pages: u32, -} - -impl Default for Config { - fn default() -> Config { - Config { - grow_mem_cost: T::Gas::sa(1), - regular_op_cost: T::Gas::sa(1), - return_data_per_byte_cost: T::Gas::sa(1), - sandbox_data_read_cost: T::Gas::sa(1), - sandbox_data_write_cost: T::Gas::sa(1), - max_stack_height: 64 * 1024, - max_memory_pages: 16, - } - } -} - #[cfg(test)] mod tests { use super::*; @@ -318,7 +274,7 @@ mod tests { &[], &mut Vec::new(), &mut mock_ext, - &::vm::Config::default(), + &Schedule::::default(), &mut GasMeter::with_limit(50_000, 1), ).unwrap(); @@ -381,7 +337,7 @@ mod tests { &[], &mut Vec::new(), &mut mock_ext, - &::vm::Config::default(), + &Schedule::default(), &mut GasMeter::with_limit(50_000, 1), ).unwrap(); @@ -421,7 +377,7 @@ mod tests { &[], &mut Vec::new(), &mut mock_ext, - &::vm::Config::default(), + &Schedule::default(), &mut GasMeter::with_limit(100_000, 1) ), Err(_) @@ -475,7 +431,7 @@ mod tests { &[], &mut Vec::new(), &mut mock_ext, - &::vm::Config::default(), + &Schedule::default(), &mut GasMeter::with_limit(50_000, 1), ).unwrap(); @@ -568,7 +524,7 @@ mod tests { &[], &mut return_buf, &mut mock_ext, - &Config::default(), + &Schedule::default(), &mut GasMeter::with_limit(50_000, 1), ).unwrap(); diff --git a/srml/contract/src/vm/prepare.rs b/srml/contract/src/vm/prepare.rs index b79ce8336d..8ec056dfc7 100644 --- a/srml/contract/src/vm/prepare.rs +++ b/srml/contract/src/vm/prepare.rs @@ -18,30 +18,30 @@ //! wasm module before execution. use super::env_def::HostFunctionSet; -use super::{Config, Error, Ext}; +use super::{Error, Ext}; use rstd::prelude::*; use parity_wasm::elements::{self, External, MemoryType, Type}; use pwasm_utils; use pwasm_utils::rules; use runtime_primitives::traits::As; use sandbox; -use Trait; +use {Trait, Schedule}; -struct ContractModule<'a, T: Trait + 'a> { +struct ContractModule<'a, Gas: 'a> { // An `Option` is used here for loaning (`take()`-ing) the module. // Invariant: Can't be `None` (i.e. on enter and on exit from the function // the value *must* be `Some`). module: Option, - config: &'a Config, + schedule: &'a Schedule, } -impl<'a, T: Trait> ContractModule<'a, T> { - fn new(original_code: &[u8], config: &'a Config) -> Result, Error> { +impl<'a, Gas: 'a + As + Clone> ContractModule<'a, Gas> { + fn new(original_code: &[u8], schedule: &'a Schedule) -> Result, Error> { let module = elements::deserialize_buffer(original_code).map_err(|_| Error::Deserialization)?; Ok(ContractModule { module: Some(module), - config, + schedule, }) } @@ -65,8 +65,8 @@ impl<'a, T: Trait> ContractModule<'a, T> { } fn inject_gas_metering(&mut self) -> Result<(), Error> { - let gas_rules = rules::Set::new(self.config.regular_op_cost.as_(), Default::default()) - .with_grow_cost(self.config.grow_mem_cost.as_()) + let gas_rules = rules::Set::new(self.schedule.regular_op_cost.clone().as_(), Default::default()) + .with_grow_cost(self.schedule.grow_mem_cost.clone().as_()) .with_forbidden_floats(); let module = self @@ -88,7 +88,7 @@ impl<'a, T: Trait> ContractModule<'a, T> { .expect("On entry to the function `module` can't be `None`; qed"); let contract_module = - pwasm_utils::stack_height::inject_limiter(module, self.config.max_stack_height) + pwasm_utils::stack_height::inject_limiter(module, self.schedule.max_stack_height) .map_err(|_| Error::StackHeightInstrumentation)?; self.module = Some(contract_module); @@ -167,16 +167,16 @@ pub(super) struct PreparedContract { /// The checks are: /// /// - module doesn't define an internal memory instance, -/// - imported memory (if any) doesn't reserve more memory than permitted by the `config`, +/// - imported memory (if any) doesn't reserve more memory than permitted by the `schedule`, /// - all imported functions from the external environment matches defined by `env` module, /// /// The preprocessing includes injecting code for gas metering and metering the height of stack. pub(super) fn prepare_contract( original_code: &[u8], - config: &Config, + schedule: &Schedule<::Gas>, env: &HostFunctionSet, ) -> Result { - let mut contract_module = ContractModule::new(original_code, config)?; + let mut contract_module = ContractModule::new(original_code, schedule)?; contract_module.ensure_no_internal_memory()?; contract_module.inject_gas_metering()?; contract_module.inject_stack_height_metering()?; @@ -189,7 +189,7 @@ pub(super) fn prepare_contract( // Requested initial number of pages should not exceed the requested maximum. return Err(Error::Memory); } - (_, Some(maximum)) if maximum > config.max_memory_pages => { + (_, Some(maximum)) if maximum > schedule.max_memory_pages => { // Maximum number of pages should not exceed the configured maximum. return Err(Error::Memory); } @@ -218,7 +218,6 @@ pub(super) fn prepare_contract( mod tests { use super::*; use std::fmt; - use tests::Test; use vm::tests::MockExt; use wabt; @@ -230,9 +229,9 @@ mod tests { fn parse_and_prepare_wat(wat: &str) -> Result { let wasm = wabt::Wat2Wasm::new().validate(false).convert(wat).unwrap(); - let config = Config::::default(); + let schedule = Schedule::::default(); let env = ::vm::runtime::init_env(); - prepare_contract::(wasm.as_ref(), &config, &env) + prepare_contract::(wasm.as_ref(), &schedule, &env) } #[test] @@ -244,7 +243,7 @@ mod tests { #[test] fn memory() { // This test assumes that maximum page number is configured to a certain number. - assert_eq!(Config::::default().max_memory_pages, 16); + assert_eq!(Schedule::::default().max_memory_pages, 16); let r = parse_and_prepare_wat(r#"(module (import "env" "memory" (memory 1 1)))"#); assert_matches!(r, Ok(_)); diff --git a/srml/contract/src/vm/runtime.rs b/srml/contract/src/vm/runtime.rs index 3bdc9bf12a..c56953fcdb 100644 --- a/srml/contract/src/vm/runtime.rs +++ b/srml/contract/src/vm/runtime.rs @@ -16,7 +16,7 @@ //! Environment definition of the wasm smart-contract runtime. -use super::{BalanceOf, Config, CreateReceipt, Error, Ext}; +use super::{BalanceOf, Schedule, CreateReceipt, Error, Ext}; use rstd::prelude::*; use codec::{Decode, Encode}; use gas::{GasMeter, GasMeterResult}; @@ -41,7 +41,7 @@ pub(crate) struct Runtime<'a, 'data, E: Ext + 'a> { input_data: &'data [u8], output_data: &'data mut Vec, scratch_buf: Vec, - config: &'a Config, + schedule: &'a Schedule<::Gas>, memory: sandbox::Memory, gas_meter: &'a mut GasMeter, special_trap: Option, @@ -51,7 +51,7 @@ impl<'a, 'data, E: Ext + 'a> Runtime<'a, 'data, E> { ext: &'a mut E, input_data: &'data [u8], output_data: &'data mut Vec, - config: &'a Config, + schedule: &'a Schedule<::Gas>, memory: sandbox::Memory, gas_meter: &'a mut GasMeter, ) -> Self { @@ -60,7 +60,7 @@ impl<'a, 'data, E: Ext + 'a> Runtime<'a, 'data, E> { input_data, output_data, scratch_buf: Vec::new(), - config, + schedule, memory, gas_meter, special_trap: None, @@ -117,7 +117,7 @@ fn read_sandbox_memory( ptr: u32, len: u32, ) -> Result, sandbox::HostError> { - let price = (ctx.config.sandbox_data_read_cost) + let price = (ctx.schedule.sandbox_data_read_cost) .checked_mul(& as As>::sa(len)) .ok_or(sandbox::HostError)?; charge_gas(ctx.gas_meter, price)?; @@ -169,7 +169,7 @@ define_env!(init_env, , // // - amount: How much gas is used. gas(ctx, amount: u32) => { - let amount = <<::T as Trait>::Gas as As>::sa(amount); + let amount = <::Gas as As>::sa(amount); charge_gas(&mut ctx.gas_meter, amount)?; Ok(()) @@ -257,7 +257,7 @@ define_env!(init_env, , let nested_gas_limit = if gas == 0 { ctx.gas_meter.gas_left() } else { - <<::T as Trait>::Gas as As>::sa(gas) + <::Gas as As>::sa(gas) }; let ext = &mut ctx.ext; let scratch_buf = &mut ctx.scratch_buf; @@ -316,7 +316,7 @@ define_env!(init_env, , let nested_gas_limit = if gas == 0 { ctx.gas_meter.gas_left() } else { - <<::T as Trait>::Gas as As>::sa(gas) + <::Gas as As>::sa(gas) }; let ext = &mut ctx.ext; let create_outcome = ctx.gas_meter.with_nested(nested_gas_limit, |nested_meter| { @@ -339,8 +339,8 @@ define_env!(init_env, , // Save a data buffer as a result of the execution, terminate the execution and return a // successful result to the caller. ext_return(ctx, data_ptr: u32, data_len: u32) => { - let data_len_in_gas = <<::T as Trait>::Gas as As>::sa(data_len as u64); - let price = (ctx.config.return_data_per_byte_cost) + let data_len_in_gas = <::Gas as As>::sa(data_len as u64); + let price = (ctx.schedule.return_data_per_byte_cost) .checked_mul(&data_len_in_gas) .ok_or(sandbox::HostError)?; @@ -382,7 +382,7 @@ define_env!(init_env, , // Finally, perform the write. write_sandbox_memory( - ctx.config.sandbox_data_write_cost, + ctx.schedule.sandbox_data_write_cost, ctx.gas_meter, &ctx.memory, dest_ptr, @@ -414,7 +414,7 @@ define_env!(init_env, , // Finally, perform the write. write_sandbox_memory( - ctx.config.sandbox_data_write_cost, + ctx.schedule.sandbox_data_write_cost, ctx.gas_meter, &ctx.memory, dest_ptr, -- GitLab From 470be19acbdd8c48e38089f43540fd86b4da76bd Mon Sep 17 00:00:00 2001 From: Luke Schoen Date: Mon, 12 Nov 2018 21:18:06 +0100 Subject: [PATCH 040/243] docs: Extends #999. Remove disused package readmes. Rename to sr-metadata. Fix Readme Rustdoc names (#1016) * docs: Remove safe-mix since is no longer local dependency * docs: Fix existing packages link. Still only includes Substrate Core * docs: Remove empty package Readmes. Remove old docs links. Rename to Readme * docs: Remove link to old docs * misc: Merge latest from master. Renaem to sr-metadata. Fix list of RustDoc package names * Rename substrate-metadata to sr-metadata, since it is in the "srml" subdirectory * Change example to use package name that opens all packages in RustDocs * Fix list of packages names that are available to open in RustDocs * fix typo * fix ordering of CLI options and add missing backslash --- Cargo.lock | 492 +++++++++--------- README.adoc | 50 +- core/cli/README.adoc | 7 - core/cli/src/lib.rs | 2 - core/client/README.adoc | 13 - core/client/db/README.adoc | 13 - core/client/db/src/lib.rs | 3 - core/client/src/lib.rs | 2 - core/consensus/common/README.adoc | 12 - core/consensus/common/src/lib.rs | 4 +- core/consensus/rhd/README.adoc | 12 - core/consensus/rhd/src/lib.rs | 2 - core/executor/README.adoc | 13 - core/executor/src/lib.rs | 2 - core/finality-grandpa/README.adoc | 12 - core/finality-grandpa/src/lib.rs | 2 - core/keyring/README.adoc | 13 - core/keyring/src/lib.rs | 2 - core/keystore/README.adoc | 13 - core/keystore/src/lib.rs | 2 - core/network-libp2p/README.adoc | 13 - core/network-libp2p/src/lib.rs | 4 +- core/network/README.adoc | 13 - core/network/src/lib.rs | 2 - core/primitives/README.adoc | 13 - core/primitives/src/lib.rs | 2 - core/rpc-servers/README.adoc | 14 - core/rpc-servers/src/lib.rs | 2 - core/rpc/README.adoc | 13 - core/rpc/src/lib.rs | 2 - core/serializer/README.adoc | 14 - core/serializer/src/lib.rs | 2 - core/service/README.adoc | 14 - core/service/src/lib.rs | 2 - core/sr-api/README.adoc | 12 - core/sr-api/src/lib.rs | 2 - core/sr-io/README.adoc | 13 - core/sr-io/src/lib.rs | 2 - core/sr-primitives/README.adoc | 12 - core/sr-primitives/src/lib.rs | 2 - core/sr-sandbox/README.adoc | 13 - core/sr-sandbox/src/lib.rs | 5 +- core/sr-std/README.adoc | 14 - core/sr-std/src/lib.rs | 2 - core/sr-version/README.adoc | 13 - core/sr-version/src/lib.rs | 2 - core/state-db/README.adoc | 13 - core/state-db/src/lib.rs | 3 - core/state-machine/README.adoc | 13 - core/state-machine/src/lib.rs | 2 - core/telemetry/README.adoc | 13 - core/telemetry/src/lib.rs | 2 - core/test-client/README.adoc | 13 - core/test-client/src/lib.rs | 2 - core/test-runtime/README.adoc | 13 - core/test-runtime/src/lib.rs | 2 - core/test-runtime/wasm/Cargo.lock | 22 +- .../substrate_test_runtime.compact.wasm | Bin 44864 -> 44927 bytes core/transaction-pool/README.adoc | 13 - core/transaction-pool/graph/README.adoc | 13 - core/transaction-pool/graph/src/lib.rs | 2 - core/transaction-pool/src/lib.rs | 2 - core/trie/README.adoc | 12 - core/trie/src/lib.rs | 2 - doc/packages/misc.adoc | 8 - doc/packages/packages.adoc | 4 - doc/packages/substrate.adoc | 66 --- node/runtime/wasm/Cargo.lock | 22 +- .../release/node_runtime.compact.wasm | Bin 619713 -> 620632 bytes node/src/main.rs | 2 +- srml/README.adoc | 2 - srml/balances/src/lib.rs | 8 +- srml/contract/{COMPLEXITY.md => README.md} | 2 + srml/metadata/Cargo.toml | 2 +- srml/metadata/README.adoc | 13 - srml/support/Cargo.toml | 4 +- srml/support/README.adoc | 14 - srml/support/src/dispatch.rs | 2 +- srml/support/src/event.rs | 2 +- srml/support/src/lib.rs | 4 +- srml/support/src/metadata.rs | 4 +- srml/support/src/storage/generator.rs | 2 +- srml/timestamp/src/lib.rs | 1 - 83 files changed, 321 insertions(+), 856 deletions(-) delete mode 100644 core/client/README.adoc delete mode 100644 core/client/db/README.adoc delete mode 100644 core/consensus/common/README.adoc delete mode 100644 core/consensus/rhd/README.adoc delete mode 100644 core/executor/README.adoc delete mode 100644 core/finality-grandpa/README.adoc delete mode 100644 core/keyring/README.adoc delete mode 100644 core/keystore/README.adoc delete mode 100644 core/network-libp2p/README.adoc delete mode 100644 core/network/README.adoc delete mode 100644 core/primitives/README.adoc delete mode 100644 core/rpc-servers/README.adoc delete mode 100644 core/rpc/README.adoc delete mode 100644 core/serializer/README.adoc delete mode 100644 core/service/README.adoc delete mode 100644 core/sr-api/README.adoc delete mode 100644 core/sr-io/README.adoc delete mode 100644 core/sr-primitives/README.adoc delete mode 100644 core/sr-sandbox/README.adoc delete mode 100644 core/sr-std/README.adoc delete mode 100644 core/sr-version/README.adoc delete mode 100644 core/state-db/README.adoc delete mode 100644 core/state-machine/README.adoc delete mode 100644 core/telemetry/README.adoc delete mode 100644 core/test-client/README.adoc delete mode 100644 core/test-runtime/README.adoc delete mode 100644 core/transaction-pool/README.adoc delete mode 100644 core/transaction-pool/graph/README.adoc delete mode 100644 core/trie/README.adoc delete mode 100644 doc/packages/misc.adoc delete mode 100644 doc/packages/packages.adoc delete mode 100644 doc/packages/substrate.adoc rename srml/contract/{COMPLEXITY.md => README.md} (99%) delete mode 100644 srml/metadata/README.adoc delete mode 100644 srml/support/README.adoc diff --git a/Cargo.lock b/Cargo.lock index cab6452706..c52e994004 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -31,23 +31,23 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "aio-limited" version = "0.1.0" -source = "git+https://github.com/paritytech/aio-limited.git#1f42497dcd2a6f85b83af97cd80314b26a1e4a9e" +source = "git+https://github.com/paritytech/aio-limited.git#a7c0bd6944902b1c9fb2bcf4f8fe1412c824b5b9" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -117,7 +117,7 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -142,21 +142,12 @@ name = "base58" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "base64" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "base64" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -165,7 +156,7 @@ name = "base64" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -174,7 +165,7 @@ name = "bigint" version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -241,7 +232,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "byteorder" -version = "1.2.6" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -249,7 +240,7 @@ name = "bytes" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -265,7 +256,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -356,8 +347,8 @@ dependencies = [ "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "criterion-plot 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "criterion-stats 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "isatty 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -372,7 +363,7 @@ name = "criterion-plot" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "cast 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -418,7 +409,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -432,7 +423,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -444,7 +435,7 @@ name = "crossbeam-utils" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -503,7 +494,7 @@ name = "curve25519-dalek" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -560,7 +551,7 @@ dependencies = [ "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "curve25519-dalek 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -594,7 +585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -619,7 +610,7 @@ source = "git+https://github.com/paritytech/rust-secp256k1#ccc06e7480148b723eb44 dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -639,22 +630,22 @@ dependencies = [ [[package]] name = "failure" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "failure_derive" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -676,7 +667,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -684,10 +675,10 @@ dependencies = [ [[package]] name = "fixed-hash" -version = "0.3.0-beta.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (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.43 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -788,10 +779,10 @@ name = "globset" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -800,16 +791,16 @@ name = "h2" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -889,10 +880,10 @@ dependencies = [ [[package]] name = "hyper" -version = "0.10.13" +version = "0.10.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -907,7 +898,7 @@ dependencies = [ [[package]] name = "hyper" -version = "0.12.12" +version = "0.12.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -918,14 +909,15 @@ dependencies = [ "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -942,7 +934,7 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -969,7 +961,7 @@ name = "isatty" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -996,10 +988,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "jsonrpc-core" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#207a277b098943864ecaf22dbab7a5e309866d6b" +source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1008,12 +1000,12 @@ dependencies = [ [[package]] name = "jsonrpc-http-server" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#207a277b098943864ecaf22dbab7a5e309866d6b" +source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" dependencies = [ - "hyper 0.12.12 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.13 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-server-utils 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1021,7 +1013,7 @@ dependencies = [ [[package]] name = "jsonrpc-macros" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#207a277b098943864ecaf22dbab7a5e309866d6b" +source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" dependencies = [ "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", @@ -1031,23 +1023,23 @@ dependencies = [ [[package]] name = "jsonrpc-pubsub" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#207a277b098943864ecaf22dbab7a5e309866d6b" +source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" dependencies = [ "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-server-utils" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#207a277b098943864ecaf22dbab7a5e309866d6b" +source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1057,12 +1049,12 @@ dependencies = [ [[package]] name = "jsonrpc-ws-server" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#207a277b098943864ecaf22dbab7a5e309866d6b" +source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-server-utils 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "ws 0.7.5 (git+https://github.com/tomusdrw/ws-rs)", @@ -1186,7 +1178,7 @@ dependencies = [ "stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1198,17 +1190,17 @@ dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1220,10 +1212,10 @@ source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371 dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "tokio-dns-unofficial 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1232,18 +1224,18 @@ version = "0.1.0" source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1257,12 +1249,12 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1283,15 +1275,15 @@ dependencies = [ "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "libp2p-identify 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "libp2p-ping 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1305,10 +1297,10 @@ dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1336,13 +1328,13 @@ dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1355,9 +1347,9 @@ dependencies = [ "aio-limited 0.1.0 (git+https://github.com/paritytech/aio-limited.git)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1369,12 +1361,12 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "protobuf 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1392,14 +1384,14 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "stdweb 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "twofish 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1411,10 +1403,10 @@ source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371 dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "tk-listen 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1425,7 +1417,7 @@ source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371 dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1436,9 +1428,9 @@ source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371 dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "tokio-uds 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1448,11 +1440,11 @@ source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371 dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "websocket 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1464,9 +1456,9 @@ dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "yamux 0.1.0 (git+https://github.com/paritytech/yamux)", ] @@ -1499,15 +1491,15 @@ name = "log" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "log" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1535,10 +1527,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1581,7 +1573,7 @@ dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1594,7 +1586,7 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1653,10 +1645,10 @@ source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371 dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1675,12 +1667,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "native-tls" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.14 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1694,7 +1687,7 @@ name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1706,7 +1699,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1717,7 +1710,7 @@ version = "0.1.0" dependencies = [ "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "node-executor 0.1.0", "node-primitives 0.1.0", "node-runtime 0.1.0", @@ -1877,11 +1870,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "openssl" -version = "0.10.14" +version = "0.10.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1937,7 +1930,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1987,7 +1980,7 @@ name = "parity-wasm" version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2109,7 +2102,7 @@ dependencies = [ [[package]] name = "protobuf" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2125,8 +2118,8 @@ name = "pwasm-utils" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2150,7 +2143,7 @@ dependencies = [ [[package]] name = "quote" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2248,11 +2241,11 @@ name = "regex" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2260,11 +2253,11 @@ name = "regex" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2272,7 +2265,7 @@ name = "regex-syntax" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2280,7 +2273,7 @@ name = "regex-syntax" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2362,7 +2355,7 @@ source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371 dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2451,8 +2444,8 @@ version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.12 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2602,7 +2595,7 @@ name = "sr-primitives" version = "0.1.0" dependencies = [ "integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2788,6 +2781,16 @@ dependencies = [ "substrate-primitives 0.1.0", ] +[[package]] +name = "srml-metadata" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "srml-session" version = "0.1.0" @@ -2843,7 +2846,7 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-metadata 0.1.0", + "srml-metadata 0.1.0", ] [[package]] @@ -2946,10 +2949,10 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2959,12 +2962,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base-x 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3025,7 +3028,7 @@ dependencies = [ "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3053,7 +3056,7 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3077,7 +3080,7 @@ dependencies = [ "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3139,7 +3142,7 @@ dependencies = [ "error-chain 0.12.0 (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.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3164,11 +3167,11 @@ name = "substrate-executor" version = "0.1.0" dependencies = [ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3189,7 +3192,7 @@ version = "0.1.0" dependencies = [ "finality-grandpa 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -3225,16 +3228,6 @@ dependencies = [ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "substrate-metadata" -version = "0.1.0" -dependencies = [ - "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "substrate-network" version = "0.1.0" @@ -3244,7 +3237,7 @@ dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3271,7 +3264,7 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3279,7 +3272,7 @@ dependencies = [ "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3290,9 +3283,9 @@ version = "0.1.0" dependencies = [ "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.3.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", "hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3307,7 +3300,7 @@ dependencies = [ "sr-std 0.1.0", "substrate-serializer 0.1.0", "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.5.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3322,7 +3315,7 @@ dependencies = [ "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-macros 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3345,7 +3338,7 @@ dependencies = [ "jsonrpc-http-server 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-ws-server 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "substrate-rpc 0.1.0", @@ -3367,7 +3360,7 @@ dependencies = [ "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3414,7 +3407,7 @@ name = "substrate-state-db" version = "0.1.0" dependencies = [ "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3428,7 +3421,7 @@ dependencies = [ "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", @@ -3442,7 +3435,7 @@ name = "substrate-telemetry" version = "0.3.0" dependencies = [ "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3470,7 +3463,7 @@ name = "substrate-test-runtime" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3492,7 +3485,7 @@ dependencies = [ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3506,7 +3499,7 @@ version = "0.1.0" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -3560,28 +3553,28 @@ version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.12" +version = "0.15.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "synstructure" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3590,7 +3583,7 @@ name = "sysinfo" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3620,7 +3613,7 @@ name = "tempfile" version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3710,9 +3703,9 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3726,14 +3719,14 @@ dependencies = [ "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3743,7 +3736,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3754,12 +3747,12 @@ dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3794,22 +3787,22 @@ dependencies = [ [[package]] name = "tokio-fs" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3820,13 +3813,13 @@ dependencies = [ "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3838,19 +3831,19 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-threadpool" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3873,8 +3866,8 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3884,26 +3877,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-uds" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3991,15 +3984,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "ucd-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "uint" -version = "0.5.0-beta.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4085,7 +4078,7 @@ dependencies = [ [[package]] name = "utf8-ranges" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -4145,7 +4138,7 @@ version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4154,7 +4147,7 @@ name = "wasmi" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4167,15 +4160,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tls 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4232,7 +4225,7 @@ name = "ws" version = "0.7.5" source = "git+https://github.com/tomusdrw/ws-rs#f12d19c4c19422fc79af28a3181f598bc07ecd1e" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4248,13 +4241,13 @@ name = "ws" version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.14 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4283,23 +4276,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "yamux" version = "0.1.0" -source = "git+https://github.com/paritytech/yamux#5c0d19af3bc59a12c2e45d18798350dd00746481" +source = "git+https://github.com/paritytech/yamux#966f2730f7a32150f282eef29fd2aecb14d7b9fa" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "nohash-hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [metadata] "checksum aes-ctr 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f65958ff3692041c36fc009261ccd63f24cd8e0dc1164266f068c2387e8b4e4f" "checksum aes-soft 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67cc03b0a090a05cb01e96998a01905d7ceedce1bc23b756c0bb7faa0682ccb1" "checksum aesni 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6810b7fb9f2bb4f76f05ac1c170b8dde285b6308955dc3afd89710268c958d9e" -"checksum aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "68f56c7353e5a9547cbd76ed90f7bb5ffc3ba09d4ea9bd1d8c06c8b1142eeb5a" +"checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" "checksum aio-limited 0.1.0 (git+https://github.com/paritytech/aio-limited.git)" = "" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" @@ -4313,7 +4306,6 @@ dependencies = [ "checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" "checksum base-x 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5cda5d0f5584d129112ad8bf4775b9fd2b9f1e30738c7b1a25314ba2244d6a51" "checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" -"checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" "checksum base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5032d51da2741729bfdaeb2664d9b8c6d9fd1e2b90715c660b6def36628499c2" "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" "checksum bigint 4.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ebecac13b3c745150d7b6c3ea7572d372f09d627c2077e893bf26c5c7f70d282" @@ -4326,11 +4318,11 @@ dependencies = [ "checksum bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0de79cfb98e7aa9988188784d8664b4b5dad6eaaa0863b91d9a4ed871d4f7a42" "checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" "checksum byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96c8b41881888cc08af32d47ac4edd52bc7fa27fef774be47a92443756451304" -"checksum byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "90492c5858dd7d2e78691cfb89f90d273a2800fc11d98f60786e5d87e2f83781" +"checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d" "checksum bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ce55bd354b095246fc34caf4e9e242f5297a7fd938b090cadfea6eee614aa62" "checksum cast 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "011941fb53da1a8ac3e4132a1becc367c44fe13f630769f3143d8c66c91c6cb6" "checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" -"checksum cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4e7bb64a8ebb0d856483e1e682ea3422f883c5f5615a90d51a2c82fe87fdd3" +"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" "checksum chashmap 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "47e651a8c1eb0cbbaa730f705e2531e75276c6f2bbe2eb12662cfd305213dff8" "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" @@ -4373,12 +4365,12 @@ dependencies = [ "checksum eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)" = "" "checksum etrace 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f17311e68ea07046ee809b8513f6c259518bc10173681d98c21f8c3926f56f40" "checksum exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9aa7b56cef68c4182db7212dece19cc9f6e2916cf9412e57e6cea53ec02f316d" -"checksum failure 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7efb22686e4a466b1ec1a15c2898f91fa9cb340452496dca654032de20ff95b9" -"checksum failure_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "946d0e98a50d9831f5d589038d2ca7f8f455b1c21028c0db0e84116a12696426" +"checksum failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6dd377bcc1b1b7ce911967e3ec24fa19c3224394ec05b54aa7b083d498341ac7" +"checksum failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "64c2d913fe8ed3b6c6518eedf4538255b989945c14c2a7d5cbff62a5e2120596" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" "checksum finality-grandpa 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "20d8cf871510f0d57630e75f9e65f87cba29581ccab1f78666d8b2e422d0baa6" -"checksum fixed-hash 0.3.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4e71c99c903a9fe54baed1bc701b43daba8c6dc6d4aec89a32f667ab6b3094c4" +"checksum fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a557e80084b05c32b455963ff565a9de6f2866da023d6671705c6aff6f65e01c" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" @@ -4403,10 +4395,10 @@ dependencies = [ "checksum http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "24f58e8c2d8e886055c3ead7b28793e1455270b5fb39650984c224bc538ba581" "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e" -"checksum hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)" = "368cb56b2740ebf4230520e2b90ebb0461e69034d85d1945febd9b3971426db2" -"checksum hyper 0.12.12 (registry+https://github.com/rust-lang/crates.io-index)" = "4aca412c241a2dd53af261efc7adf7736fdebd67dc0d1cc1ffdbcb9407e0e810" +"checksum hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "df0caae6b71d266b91b4a83111a61d2b94ed2e2bea024c532b933dcff867e58c" +"checksum hyper 0.12.13 (registry+https://github.com/rust-lang/crates.io-index)" = "95ffee0d1d30de4313fdaaa485891ce924991d45bbc18adfc8ac5b1639e62fbb" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum indexmap 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08173ba1e906efb6538785a8844dd496f5d34f0a2d88038e95195172fc667220" +"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" "checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" "checksum interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "141340095b15ed7491bd3d4ced9d20cebfb826174b6bb03386381f62b01e3d77" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" @@ -4452,11 +4444,11 @@ dependencies = [ "checksum local-encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e1ceb20f39ff7ae42f3ff9795f3986b1daad821caaa1e1732a0944103a5a1a66" "checksum lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775751a3e69bde4df9b38dd00a1b5d6ac13791e4223d4a0506577f0dd27cfb7a" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fcce5fa49cc693c312001daf1d13411c4a5283796bac1084299ea3e567113f" +"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" "checksum mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f2d82b34c7fb11bb41719465c060589e291d505ca4735ea30016a91f6fc79c3b" "checksum mashup-impl 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "aa607bfb674b4efb310512527d64266b065de3f894fc52f84efcbf7eaa5965fb" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4b3629fe9fdbff6daa6c33b90f7c08355c1aca05a3d01fa8063b822fcf185f3b" +"checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" "checksum memory-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" @@ -4470,7 +4462,7 @@ dependencies = [ "checksum multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" "checksum names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" "checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" -"checksum native-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8b0a7bd714e83db15676d31caf968ad7318e9cc35f93c85a90231c8f22867549" +"checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" @@ -4482,7 +4474,7 @@ dependencies = [ "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" "checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" "checksum opaque-debug 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d620c9c26834b34f039489ac0dfdb12c7ac15ccaf818350a64c9b5334a452ad7" -"checksum openssl 0.10.14 (registry+https://github.com/rust-lang/crates.io-index)" = "6285ab297861546af7a2753593b3160bfc09f0ab9d1f5bb009e39d81a169b499" +"checksum openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "5e1309181cdcbdb51bc3b6bedb33dfac2a83b3d585033d3f6d9e22e8c1928613" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" "checksum openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)" = "278c1ad40a89aa1e741a1eed089a2f60b18fab8089c3139b542140fc7d674106" "checksum owning_ref 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9d52571ddcb42e9c900c901a18d8d67e393df723fcd51dd59c5b1a85d0acb6cc" @@ -4509,13 +4501,13 @@ dependencies = [ "checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" "checksum proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1b06e2f335f48d24442b35a19df506a835fb3547bc3c06ef27340da9acf5cae7" "checksum proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "3d7b7eaaa90b4a90a932a9ea6666c95a389e424eff347f0f793979289429feee" -"checksum protobuf 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "56c363dfc36e450457f4fa05a91d8c3f0fed00fc21142b4ce2cb7b525675eaeb" +"checksum protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8e95ac45a1e122e1b62c3f23bbe51574c39d06d1c8c5a2a5676de497d0a84a34" "checksum pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07" "checksum pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "efd695333cfae6e9dbe2703a6d040e252b57a6fc3b9a65c712615ac042b2e0c5" "checksum quick-error 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb6ccf8db7bbcb9c2eae558db5ab4f3da1c2a87e4e597ed394726bc8ea6ca1d" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" -"checksum quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dd636425967c33af890042c483632d33fa7a18f19ad1d7ea72e8998c6ef8dea5" +"checksum quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "63b5829244f52738cfee93b3a165c1911388675be000c888d2fae620dee8fa5b" "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" "checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" @@ -4582,8 +4574,8 @@ dependencies = [ "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum syn 0.13.11 (registry+https://github.com/rust-lang/crates.io-index)" = "14f9bf6292f3a61d2c716723fdb789a41bbe104168e6f496dc6497e531ea1b9b" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" -"checksum syn 0.15.12 (registry+https://github.com/rust-lang/crates.io-index)" = "34ab9797e47d24cb76b8dc4d24ff36807018c7cc549c4cba050b068be0c586b0" -"checksum synstructure 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85bb9b7550d063ea184027c9b8c20ac167cd36d3e06b3a40bceb9d746dc1a7b7" +"checksum syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0b78d53b5e1b6e63129140b1336877c3bddbae398c7956150396bdad0e28676c" +"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum sysinfo 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "11c5f6e8a7a7146f26ffed9a5ff8bab2706f1ac8a413a415e1d211b819d5c24d" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" "checksum target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" @@ -4605,15 +4597,15 @@ dependencies = [ "checksum tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f90fcd90952f0a496d438a976afba8e5c205fb12123f813d8ab3aa1c8436638c" "checksum tokio-dns-unofficial 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bb9bf62ca2c53bf2f2faec3e48a98b6d8c9577c27011cb0203a4beacdc8ab328" "checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde" -"checksum tokio-fs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5cbe4ca6e71cb0b62a66e4e6f53a8c06a6eefe46cc5f665ad6f274c9906f135" -"checksum tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "8b8a85fffbec3c5ab1ab62324570230dcd37ee5996a7859da5caf7b9d45e3e8c" +"checksum tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "60ae25f6b17d25116d2cba342083abe5255d3c2c79cb21ea11aa049c53bf7c75" +"checksum tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "7392fe0a70d5ce0c882c4778116c519bd5dbaa8a7c3ae3d04578b3afafdcda21" "checksum tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4b26fd37f1125738b2170c80b551f69ff6fecb277e6e5ca885e53eec2b005018" "checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912" -"checksum tokio-threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "bbd8a8b911301c60cbfaa2a6588fb210e5c1038375b8bdecc47aa09a94c3c05f" +"checksum tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3929aee321c9220ed838ed6c3928be7f9b69986b0e3c22c972a66dbf8a298c68" "checksum tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3a52f00c97fedb6d535d27f65cccb7181c8dd4c6edc3eda9ea93f6d45d05168e" "checksum tokio-tls 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e53fdbf3156f588be1676022fe794232b24922d426e8c14f4e46891c1e31c440" "checksum tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da941144b816d0dcda4db3a1ba87596e4df5e860a72b70783fe435891f80601c" -"checksum tokio-uds 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "22e3aa6d1fcc19e635418dc0a30ab5bd65d347973d6f43f1a37bf8d9d1335fc9" +"checksum tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df195376b43508f01570bacc73e13a1de0854dc59e79d1ec09913e8db6dd2a70" "checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" "checksum trie-bench 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum trie-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" @@ -4624,8 +4616,8 @@ dependencies = [ "checksum twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f85be565a110ed72ed7048cf56570db04ce0a592c98aa59b7dacde3e5718750" "checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d" -"checksum uint 0.5.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4630460173a57c0af94b8306091e018025d988473f641a4af754b6cde980e1e3" +"checksum ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d0f8bfa9ff0cadcd210129ad9d2c5f145c13e9ced3d3e5d948a6213487d52444" +"checksum uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "082df6964410f6aa929a61ddfafc997e4f32c62c22490e439ac351cec827f436" "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" "checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" @@ -4637,7 +4629,7 @@ dependencies = [ "checksum unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb8abc4b7d8158bdfbbaaccc35331ed3c30c2673e99000d7ae665a2eb6576f4" "checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" "checksum url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2a321979c09843d272956e73700d12c4e7d3d92b2ee112b31548aef0d4efc5a6" -"checksum utf8-ranges 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd70f467df6810094968e2fce0ee1bd0e87157aceb026a8c083bcf5e25b9efe4" +"checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum vergen 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "93fb2d57fbc535fcd45548c99b141d2d960995daaf04b864c4d9fe1ea011c819" diff --git a/README.adoc b/README.adoc index dc51bee6af..d832b58313 100644 --- a/README.adoc +++ b/README.adoc @@ -227,18 +227,36 @@ Or you can join the BBQ Birch Testnet with: [source, shell] cargo run -If you want to see the multi-node consensus algorithm in action locally, then -you can create a local testnet. You'll need two terminals open. In one, run: +Detailed logs may be shown by running the node with the following environment variables set: `RUST_LOG=debug RUST_BACKTRACE=1 cargo run -- --dev`. -[source, shell] -cargo run -- --chain=local --validator --key Alice -d /tmp/alice --node-key 0000000000000000000000000000000000000000000000000000000000000001 +If you want to see the multi-node consensus algorithm in action locally, then you can create a local testnet with two validator nodes for Alice and Bob, who are the initial authorities of the genesis chain specification that have been endowed with a testnet DOTs. We'll give each node a name and expose them so they are listed on [Telemetry](https://telemetry.polkadot.io/#/Local%20Testnet). You'll need two terminals windows open. -and in the other, run: +We'll start Alice's substrate node first on default TCP port 30333 with her chain database stored locally at `/tmp/alice`. The Bootnode ID of her node is `QmQZ8TjTqeDj3ciwr93EJ95hxfDsb9pEYDizUAbWpigtQN`, which is generated from the `--node-key` value that we specify below: [source, shell] -cargo run -- --chain=local --validator --key Bob -d /tmp/bob --port 30334 --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/QmQZ8TjTqeDj3ciwr93EJ95hxfDsb9pEYDizUAbWpigtQN +cargo run -- \ + --base-path /tmp/alice \ + --chain=local \ + --key Alice \ + --name "ALICE" \ + --node-key 0000000000000000000000000000000000000000000000000000000000000001 \ + --telemetry-url ws://telemetry.polkadot.io:1024 \ + --validator + +In the second terminal, we'll run the following to start Bob's substrate node on a different TCP port of 30334, and with his chain database stored locally at `/tmp/bob`. We'll specify a value for the `--bootnodes` option that will connect his node to Alice's Bootnode ID on TCP port 30333: -include::doc/packages/packages.adoc[] +[source, shell] +cargo run -- \ + --base-path /tmp/bob \ + --bootnodes /ip4/127.0.0.1/tcp/30333/p2p/QmQZ8TjTqeDj3ciwr93EJ95hxfDsb9pEYDizUAbWpigtQN \ + --chain=local \ + --key Bob \ + --name "BOB" \ + --port 30334 \ + --telemetry-url ws://telemetry.polkadot.io:1024 \ + --validator + +Additional Substate CLI usage options are available and may be shown by running `cargo run -- --help`. == Documentation @@ -251,13 +269,16 @@ You can generate documentation for a Substrate Rust package and have it automati cargo doc --package --open ``` -Replacing `` with one of the following (i.e. `cargo doc --package node-cli --open`): +Replacing `` with one of the following (i.e. `cargo doc --package substrate --open`): +* All Substrate Packages +[source, shell] +substrate * Substrate Core [source, shell] -substrate, substrate-bft, substrate-cli, substrate-client, substrate-client-db, -substrate-executor, substrate-finality-grandpa, substrate-keyring, substrate-keystore, -substrate-metadata, substrate-misbehavior-check, substrate-network, +substrate, substrate-cli, substrate-client, substrate-client-db, +substrate-consensus-common, substrate-consensus-rhd, +substrate-executor, substrate-finality-grandpa, substrate-keyring, substrate-keystore, substrate-network, substrate-network-libp2p, substrate-primitives, substrate-rpc, substrate-rpc-servers, substrate-serializer, substrate-service, substrate-service-test, substrate-state-db, substrate-state-machine, substrate-telemetry, substrate-test-client, @@ -268,17 +289,16 @@ substrate-trie sr-api, sr-io, sr-primitives, sr-sandbox, sr-std, sr-version * Substrate Runtime Module Library (SRML) [source, shell] -srml-balances, srml-consensus, srml-contract, srml-council, srml-democracy, srml-example, -srml-executive, srml-session, srml-staking, srml-support, srml-system, srml-timestamp, +srml-assets, srml-balances, srml-consensus, srml-contract, srml-council, srml-democracy, srml-example, +srml-executive, srml-metadata, srml-session, srml-staking, srml-support, srml-system, srml-timestamp, srml-treasury * Node [source, shell] -node-cli, node-consensus, node-executor, node-network, node-primitives, node-runtime, node-service +node-cli, node-consensus, node-executor, node-network, node-primitives, node-runtime * Subkey [source, shell] subkey - === Contributing to documentation for Substrate packages https://doc.rust-lang.org/1.9.0/book/documentation.html[Document source code] for Substrate packages by annotating the source code with documentation comments. diff --git a/core/cli/README.adoc b/core/cli/README.adoc index f847930dab..fc58908fdf 100644 --- a/core/cli/README.adoc +++ b/core/cli/README.adoc @@ -1,13 +1,6 @@ = Substrate CLI -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description Substrate CLI library include::doc/shell-completion.adoc[] diff --git a/core/cli/src/lib.rs b/core/cli/src/lib.rs index 59d653bfed..5b82133d80 100644 --- a/core/cli/src/lib.rs +++ b/core/cli/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Substrate CLI library. -// end::description[] #![warn(missing_docs)] #![warn(unused_extern_crates)] diff --git a/core/client/README.adoc b/core/client/README.adoc deleted file mode 100644 index d644b1d039..0000000000 --- a/core/client/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Client - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/client/db/README.adoc b/core/client/db/README.adoc deleted file mode 100644 index c0b123392c..0000000000 --- a/core/client/db/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Client DB - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index 1e37b61cfd..60196e4a32 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Client backend that uses RocksDB database as storage. //! //! # Canonicality vs. Finality @@ -24,8 +23,6 @@ //! having discarded heavy state that will allow a chain reorganization. //! //! Finality implies canonicality but not vice-versa. -//! -// end::description[] extern crate substrate_client as client; extern crate kvdb_rocksdb; diff --git a/core/client/src/lib.rs b/core/client/src/lib.rs index a033277905..255b068015 100644 --- a/core/client/src/lib.rs +++ b/core/client/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Substrate Client and associated logic. -// end::description[] #![warn(missing_docs)] #![recursion_limit="128"] diff --git a/core/consensus/common/README.adoc b/core/consensus/common/README.adoc deleted file mode 100644 index d8f9e1daf2..0000000000 --- a/core/consensus/common/README.adoc +++ /dev/null @@ -1,12 +0,0 @@ -= Consensus Common - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/consensus/common/src/lib.rs b/core/consensus/common/src/lib.rs index 12d5cfa70d..4758a4abfe 100644 --- a/core/consensus/common/src/lib.rs +++ b/core/consensus/common/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate Consensus Common. If not, see . -// tag::description[] -//! Consensus basics and common features -// end::description[] +//! Tracks offline validators. // This provides "unused" building blocks to other crates #![allow(dead_code)] diff --git a/core/consensus/rhd/README.adoc b/core/consensus/rhd/README.adoc deleted file mode 100644 index ff7bde1714..0000000000 --- a/core/consensus/rhd/README.adoc +++ /dev/null @@ -1,12 +0,0 @@ -= Consensus Rhododendron (RHD) - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/consensus/rhd/src/lib.rs b/core/consensus/rhd/src/lib.rs index b99ea4a24c..4995592aaf 100644 --- a/core/consensus/rhd/src/lib.rs +++ b/core/consensus/rhd/src/lib.rs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! BFT Agreement based on a rotating proposer in different rounds. //! //! Where this crate refers to input stream, should never logically conclude. @@ -30,7 +29,6 @@ //! 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. -// end::description[] #![cfg(feature="rhd")] // FIXME: doesn't compile - https://github.com/paritytech/substrate/issues/1020 diff --git a/core/executor/README.adoc b/core/executor/README.adoc deleted file mode 100644 index 6a0ee23565..0000000000 --- a/core/executor/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Executor - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/executor/src/lib.rs b/core/executor/src/lib.rs index 64442b7f8e..5f05b33f53 100644 --- a/core/executor/src/lib.rs +++ b/core/executor/src/lib.rs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Temporary crate for contracts implementations. //! //! This will be replaced with WASM contracts stored on-chain. @@ -25,7 +24,6 @@ //! - init_block(PrevBlock?) -> InProgressBlock //! - add_transaction(InProgressBlock) -> InProgressBlock //! It is left as is for now as it might be removed before this is ever done. -// end::description[] #![warn(missing_docs)] #![recursion_limit="128"] diff --git a/core/finality-grandpa/README.adoc b/core/finality-grandpa/README.adoc deleted file mode 100644 index 5338cf9e8c..0000000000 --- a/core/finality-grandpa/README.adoc +++ /dev/null @@ -1,12 +0,0 @@ -= Finality GRANDPA (aka SHAFT) - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index d3fc1bf1ee..97c93acfe3 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -14,11 +14,9 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Integration of the GRANDPA finality gadget into substrate. //! //! This is a long-running future that produces finality notifications. -// end::description[] extern crate finality_grandpa as grandpa; extern crate futures; diff --git a/core/keyring/README.adoc b/core/keyring/README.adoc deleted file mode 100644 index 0118fe883d..0000000000 --- a/core/keyring/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Keyring - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/keyring/src/lib.rs b/core/keyring/src/lib.rs index 6ba79d146c..d2970c54c6 100644 --- a/core/keyring/src/lib.rs +++ b/core/keyring/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Support code for the runtime. A set of test accounts. -// end::description[] #[macro_use] extern crate hex_literal; #[macro_use] extern crate lazy_static; diff --git a/core/keystore/README.adoc b/core/keystore/README.adoc deleted file mode 100644 index 5a66a882ff..0000000000 --- a/core/keystore/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Keystore - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/keystore/src/lib.rs b/core/keystore/src/lib.rs index 5a87fbcd7e..6d8e3b3ae9 100644 --- a/core/keystore/src/lib.rs +++ b/core/keystore/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Keystore (and session key management) for ed25519 based chains like Polkadot. -// end::description[] extern crate substrate_primitives; extern crate parity_crypto as crypto; diff --git a/core/network-libp2p/README.adoc b/core/network-libp2p/README.adoc deleted file mode 100644 index 2f340aa397..0000000000 --- a/core/network-libp2p/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Network libp2p - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/network-libp2p/src/lib.rs b/core/network-libp2p/src/lib.rs index 4852f65d84..2bf6a0d490 100644 --- a/core/network-libp2p/src/lib.rs +++ b/core/network-libp2p/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] -//! TODO: Missing doc -// end::description[] +//! Substrate libp2p implementation of the ethcore network library #![recursion_limit = "128"] diff --git a/core/network/README.adoc b/core/network/README.adoc deleted file mode 100644 index ac29b0cd0b..0000000000 --- a/core/network/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Network - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/network/src/lib.rs b/core/network/src/lib.rs index 4a441dcc6f..fa9232970f 100644 --- a/core/network/src/lib.rs +++ b/core/network/src/lib.rs @@ -17,10 +17,8 @@ #![warn(unused_extern_crates)] #![warn(missing_docs)] -// tag::description[] //! Substrate-specific P2P networking: synchronizing blocks, propagating BFT messages. //! Allows attachment of an optional subprotocol for chain-specific requests. -// end::description[] extern crate linked_hash_map; extern crate parking_lot; diff --git a/core/primitives/README.adoc b/core/primitives/README.adoc deleted file mode 100644 index ed98cf12ad..0000000000 --- a/core/primitives/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Primitives - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/primitives/src/lib.rs b/core/primitives/src/lib.rs index affa1c5c00..c5ddcb130d 100644 --- a/core/primitives/src/lib.rs +++ b/core/primitives/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Shareable Substrate types. -// end::description[] #![warn(missing_docs)] diff --git a/core/rpc-servers/README.adoc b/core/rpc-servers/README.adoc deleted file mode 100644 index 18840be421..0000000000 --- a/core/rpc-servers/README.adoc +++ /dev/null @@ -1,14 +0,0 @@ - -= RPC Server - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- - diff --git a/core/rpc-servers/src/lib.rs b/core/rpc-servers/src/lib.rs index faa6f2bf41..8cf763d1e1 100644 --- a/core/rpc-servers/src/lib.rs +++ b/core/rpc-servers/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Substrate RPC servers. -// end::description[] #[warn(missing_docs)] diff --git a/core/rpc/README.adoc b/core/rpc/README.adoc deleted file mode 100644 index 5e4db49099..0000000000 --- a/core/rpc/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= RPC - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/rpc/src/lib.rs b/core/rpc/src/lib.rs index dbbc8e3a6a..cd9b50af79 100644 --- a/core/rpc/src/lib.rs +++ b/core/rpc/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Substrate RPC interfaces. -// end::description[] #![warn(missing_docs)] diff --git a/core/serializer/README.adoc b/core/serializer/README.adoc deleted file mode 100644 index 7b780bae43..0000000000 --- a/core/serializer/README.adoc +++ /dev/null @@ -1,14 +0,0 @@ - -= Serializer - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- - diff --git a/core/serializer/src/lib.rs b/core/serializer/src/lib.rs index 2ef799ed8e..667c57eb87 100644 --- a/core/serializer/src/lib.rs +++ b/core/serializer/src/lib.rs @@ -14,12 +14,10 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Substrate customizable serde serializer. //! //! The idea is that we can later change the implementation //! to something more compact, but for now we're using JSON. -// end::description[] #![warn(missing_docs)] diff --git a/core/service/README.adoc b/core/service/README.adoc deleted file mode 100644 index 4d74c098b2..0000000000 --- a/core/service/README.adoc +++ /dev/null @@ -1,14 +0,0 @@ - -= Service - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- - diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index 6592bce75f..ec26826d83 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -14,10 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Substrate service. Starts a thread that spins up the network, client, and extrinsic pool. //! Manages communication between them. -// end::description[] #![warn(unused_extern_crates)] diff --git a/core/sr-api/README.adoc b/core/sr-api/README.adoc deleted file mode 100644 index debd87e8eb..0000000000 --- a/core/sr-api/README.adoc +++ /dev/null @@ -1,12 +0,0 @@ -= Runtime API - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/sr-api/src/lib.rs b/core/sr-api/src/lib.rs index a80420a8d7..ee931f706e 100644 --- a/core/sr-api/src/lib.rs +++ b/core/sr-api/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! API's for interfacing with the runtime via native/wasm. -// end::description[] #![cfg_attr(not(feature = "std"), no_std)] diff --git a/core/sr-io/README.adoc b/core/sr-io/README.adoc deleted file mode 100644 index c035be1461..0000000000 --- a/core/sr-io/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Runtime io - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/sr-io/src/lib.rs b/core/sr-io/src/lib.rs index 12e09945d2..3394265a84 100644 --- a/core/sr-io/src/lib.rs +++ b/core/sr-io/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! This is part of the Substrate runtime. -// end::description[] #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), feature(lang_items))] diff --git a/core/sr-primitives/README.adoc b/core/sr-primitives/README.adoc deleted file mode 100644 index 0e9d636111..0000000000 --- a/core/sr-primitives/README.adoc +++ /dev/null @@ -1,12 +0,0 @@ -= Runtime Primitives - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/sr-primitives/src/lib.rs b/core/sr-primitives/src/lib.rs index a8759a4890..d1cd43242a 100644 --- a/core/sr-primitives/src/lib.rs +++ b/core/sr-primitives/src/lib.rs @@ -14,10 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! System manager: Handles all of the top-level stuff; executing block/transaction, setting code //! and depositing logs. -// end::description[] #![cfg_attr(not(feature = "std"), no_std)] diff --git a/core/sr-sandbox/README.adoc b/core/sr-sandbox/README.adoc deleted file mode 100644 index 61a203708c..0000000000 --- a/core/sr-sandbox/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Runtime Sandbox - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/sr-sandbox/src/lib.rs b/core/sr-sandbox/src/lib.rs index 6ed3243dc8..09af04747d 100755 --- a/core/sr-sandbox/src/lib.rs +++ b/core/sr-sandbox/src/lib.rs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! This crate provides means to instantiate and execute wasm modules. //! //! It works even when the user of this library executes from @@ -30,12 +29,10 @@ //! When this crate is used in the `std` environment all these functions are implemented by directly //! calling the wasm VM. //! -//! Example of possible use-cases for this library are the following: +//! Examples of possible use-cases for this library are not limited to the following: //! //! - implementing smart-contract runtimes that use wasm for contract code //! - executing a wasm substrate runtime inside of a wasm parachain -//! - etc -// end::description[] #![warn(missing_docs)] #![cfg_attr(not(feature = "std"), no_std)] diff --git a/core/sr-std/README.adoc b/core/sr-std/README.adoc deleted file mode 100644 index 36ea8d99c2..0000000000 --- a/core/sr-std/README.adoc +++ /dev/null @@ -1,14 +0,0 @@ - -= Runtime std - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- - diff --git a/core/sr-std/src/lib.rs b/core/sr-std/src/lib.rs index 87c3965646..416c91bc7f 100644 --- a/core/sr-std/src/lib.rs +++ b/core/sr-std/src/lib.rs @@ -14,10 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Lowest-abstraction level for the Substrate runtime: just exports useful primitives from std //! or core/alloc to be used with any code that depends on the runtime. -// end::description[] #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), feature(core_intrinsics))] diff --git a/core/sr-version/README.adoc b/core/sr-version/README.adoc deleted file mode 100644 index 28db6c615d..0000000000 --- a/core/sr-version/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Runtime Version - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/sr-version/src/lib.rs b/core/sr-version/src/lib.rs index 6f91692b82..b34abe901b 100644 --- a/core/sr-version/src/lib.rs +++ b/core/sr-version/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Version module for the Substrate runtime; Provides a function that returns the runtime version. -// end::description[] #![cfg_attr(not(feature = "std"), no_std)] diff --git a/core/state-db/README.adoc b/core/state-db/README.adoc deleted file mode 100644 index f9934ed8d9..0000000000 --- a/core/state-db/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= State DB - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/state-db/src/lib.rs b/core/state-db/src/lib.rs index 261d768560..51fffa1f2d 100644 --- a/core/state-db/src/lib.rs +++ b/core/state-db/src/lib.rs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! State database maintenance. Handles canonicalization and pruning in the database. The input to //! this module is a `ChangeSet` which is basically a list of key-value pairs (trie nodes) that //! were added or deleted during block execution. @@ -29,8 +28,6 @@ //! # Pruning. //! See `RefWindow` for pruning algorithm details. `StateDb` prunes on each canonicalization until pruning //! constraints are satisfied. -//! -// end::description[] #[macro_use] extern crate log; #[macro_use] extern crate parity_codec_derive; diff --git a/core/state-machine/README.adoc b/core/state-machine/README.adoc deleted file mode 100644 index aad08bed98..0000000000 --- a/core/state-machine/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= State Machine - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/state-machine/src/lib.rs b/core/state-machine/src/lib.rs index 9bb9110886..7b0f3690d8 100644 --- a/core/state-machine/src/lib.rs +++ b/core/state-machine/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Substrate state machine implementation. -// end::description[] #![warn(missing_docs)] diff --git a/core/telemetry/README.adoc b/core/telemetry/README.adoc deleted file mode 100644 index 9759c5bc50..0000000000 --- a/core/telemetry/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Telemetry - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/telemetry/src/lib.rs b/core/telemetry/src/lib.rs index 8d0ddb1ac9..64e55d48b2 100644 --- a/core/telemetry/src/lib.rs +++ b/core/telemetry/src/lib.rs @@ -14,14 +14,12 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Telemetry utils. //! //! `telemetry` macro may be used anywhere in the Substrate codebase //! in order to send real-time logging information to the telemetry //! server (if there is one). We use the async drain adapter of `slog` //! so that the logging thread doesn't get held up at all. -// end::description[] extern crate parking_lot; extern crate ws; diff --git a/core/test-client/README.adoc b/core/test-client/README.adoc deleted file mode 100644 index e56c4c7f66..0000000000 --- a/core/test-client/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Test client - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/test-client/src/lib.rs b/core/test-client/src/lib.rs index 98887c2b6e..6a92a3f692 100644 --- a/core/test-client/src/lib.rs +++ b/core/test-client/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Client testing utilities. -// end::description[] #![warn(missing_docs)] diff --git a/core/test-runtime/README.adoc b/core/test-runtime/README.adoc deleted file mode 100644 index 15b3c4c4ac..0000000000 --- a/core/test-runtime/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Test runtime - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index 5844ecbbb9..0a9c02d8df 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! The Substrate runtime. This can be compiled with #[no_std], ready for Wasm. -// end::description[] #![cfg_attr(not(feature = "std"), no_std)] diff --git a/core/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock index 9e33aaa02e..a0ececf55f 100644 --- a/core/test-runtime/wasm/Cargo.lock +++ b/core/test-runtime/wasm/Cargo.lock @@ -526,6 +526,16 @@ dependencies = [ "sr-std 0.1.0", ] +[[package]] +name = "srml-metadata" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "srml-support" version = "0.1.0" @@ -538,7 +548,7 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-metadata 0.1.0", + "srml-metadata 0.1.0", ] [[package]] @@ -551,16 +561,6 @@ name = "static_assertions" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "substrate-metadata" -version = "0.1.0" -dependencies = [ - "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "substrate-primitives" version = "0.1.0" diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index cb5c02bbb90c5b4248fd0a3f071a730895cdf9a3..bbac245c7b46250a9c9f4b73e8827bcfb1fc4616 100644 GIT binary patch delta 6265 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. -// tag::description[] //! Generic Transaction Pool //! //! The pool is based on dependency graph between transactions @@ -24,7 +23,6 @@ //! //! TODO [ToDr] //! - [ ] Multi-threading (getting ready transactions should not block the pool) -// end::description[] #![warn(missing_docs)] #![warn(unused_extern_crates)] diff --git a/core/transaction-pool/src/lib.rs b/core/transaction-pool/src/lib.rs index 5d31ac8fb7..44f63ed37d 100644 --- a/core/transaction-pool/src/lib.rs +++ b/core/transaction-pool/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Substrate transaction pool. -// end::description[] #![warn(missing_docs)] #![warn(unused_extern_crates)] diff --git a/core/trie/README.adoc b/core/trie/README.adoc deleted file mode 100644 index 953724ca12..0000000000 --- a/core/trie/README.adoc +++ /dev/null @@ -1,12 +0,0 @@ -= Substrate Trie - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/core/trie/src/lib.rs b/core/trie/src/lib.rs index 06598ed63b..3b9791e99a 100644 --- a/core/trie/src/lib.rs +++ b/core/trie/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -// tag::description[] //! Utility functions to interact with Substrate's Base-16 Modified Merkle Patricia tree ("trie"). -// end::description[] // TODO: no_std diff --git a/doc/packages/misc.adoc b/doc/packages/misc.adoc deleted file mode 100644 index 2081d34efc..0000000000 --- a/doc/packages/misc.adoc +++ /dev/null @@ -1,8 +0,0 @@ - -=== Misc packages - -:leveloffset: +3 - -include::../../subkey/README.adoc[] - -:leveloffset: -3 diff --git a/doc/packages/packages.adoc b/doc/packages/packages.adoc deleted file mode 100644 index aa95bb1f93..0000000000 --- a/doc/packages/packages.adoc +++ /dev/null @@ -1,4 +0,0 @@ - -include::substrate.adoc[] - -include::misc.adoc[] diff --git a/doc/packages/substrate.adoc b/doc/packages/substrate.adoc deleted file mode 100644 index 3df3366def..0000000000 --- a/doc/packages/substrate.adoc +++ /dev/null @@ -1,66 +0,0 @@ - -== Substrate Packages - -=== Substrate Core - -:leveloffset: +3 - -include::../../core/client/README.adoc[] - -include::../../core/test-client/README.adoc[] - -include::../../core/client/db/README.adoc[] - -include::../../core/state-db/README.adoc[] - -include::../../core/consensus/common/README.adoc[] - -include::../../core/consensus/rhd/README.adoc[] - -include::../../core/executor/README.adoc[] - -include::../../core/finality-grandpa/README.adoc[] - -include::../../core/transaction-pool/README.adoc[] - -include::../../core/keyring/README.adoc[] - -include::../../core/network/README.adoc[] - -include::../../core/network-libp2p/README.adoc[] - -include::../../core/rpc/README.adoc[] - -include::../../core/rpc-servers/README.adoc[] - -include::../../srml/README.adoc[] - -include::../../core/sr-api/README.adoc[] - -include::../../core/sr-io/README.adoc[] - -include::../../core/sr-primitives/README.adoc[] - -include::../../core/sr-sandbox/README.adoc[] - -include::../../core/sr-std/README.adoc[] - -include::../../core/state-machine/README.adoc[] - -include::../../core/test-runtime/README.adoc[] - -include::../../core/telemetry/README.adoc[] - -include::../../core/cli/README.adoc[] - -include::../../core/service/README.adoc[] - -include::../../core/trie/README.adoc[] - -include::../../core/keystore/README.adoc[] - -include::../../core/primitives/README.adoc[] - -include::../../core/serializer/README.adoc[] - -:leveloffset: -3 diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 231ddef3f7..85a0109be8 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -702,6 +702,16 @@ dependencies = [ "srml-system 0.1.0", ] +[[package]] +name = "srml-metadata" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "srml-session" version = "0.1.0" @@ -755,7 +765,7 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-metadata 0.1.0", + "srml-metadata 0.1.0", ] [[package]] @@ -844,16 +854,6 @@ dependencies = [ "substrate-primitives 0.1.0", ] -[[package]] -name = "substrate-metadata" -version = "0.1.0" -dependencies = [ - "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "substrate-primitives" version = "0.1.0" diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 94c8b1f3b87d8fb0a5e210df1fe498c8ac6e2fa3..aee72d47e77ac5d8faa87bf7d6c34129b68b6c47 100644 GIT binary patch delta 60941 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 b*U(97lZL;cWTh3;(4j-$(lgc(D2M+Cc`;E$ delta 59827 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 diff --git a/node/src/main.rs b/node/src/main.rs index bf5717042e..1f55cd7aab 100644 --- a/node/src/main.rs +++ b/node/src/main.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! Substrate CLI +//! Substrate Node CLI #![warn(missing_docs)] diff --git a/srml/README.adoc b/srml/README.adoc index 616c12568a..81b4f216e6 100644 --- a/srml/README.adoc +++ b/srml/README.adoc @@ -2,5 +2,3 @@ = Runtime Set of libs for the substrate runtime. - -TODO: Add READMEs to packages. diff --git a/srml/balances/src/lib.rs b/srml/balances/src/lib.rs index 7fd694d98c..ba771662e4 100644 --- a/srml/balances/src/lib.rs +++ b/srml/balances/src/lib.rs @@ -14,7 +14,13 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! Balances: Handles balances. +//! Balances: Handles setting and retrieval of free balance, +//! retrieving total balance, reserve and unreserve balance, +//! repatriating a reserved balance to a beneficiary account that exists, +//! transfering a balance between accounts (when not reserved), +//! slashing an account balance, account removal, rewards, +//! lookup of an index to reclaim an account (when not balance not reserved), +//! increasing total stake. #![cfg_attr(not(feature = "std"), no_std)] diff --git a/srml/contract/COMPLEXITY.md b/srml/contract/README.md similarity index 99% rename from srml/contract/COMPLEXITY.md rename to srml/contract/README.md index a6f1c3dca7..5673758cc7 100644 --- a/srml/contract/COMPLEXITY.md +++ b/srml/contract/README.md @@ -1,3 +1,5 @@ +# Complexity + This analysis is on the computing and memory complexity of specific procedures. It provides a rough estimate of operations performed in general and especially focusing on DB reads and writes. It is also an attempt to estimate the memory consumption at its peak. The primary goal is to come up with decent pricing for functions that can be invoked by a user (via extrinsics) or by untrusted code that prevents DoS attacks. diff --git a/srml/metadata/Cargo.toml b/srml/metadata/Cargo.toml index 2e113ab6f0..24f0a21b33 100644 --- a/srml/metadata/Cargo.toml +++ b/srml/metadata/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-metadata" +name = "srml-metadata" version = "0.1.0" authors = ["Parity Technologies "] diff --git a/srml/metadata/README.adoc b/srml/metadata/README.adoc deleted file mode 100644 index 8f4939087e..0000000000 --- a/srml/metadata/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= Substrate BFT - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/srml/support/Cargo.toml b/srml/support/Cargo.toml index f1254a538d..a2370010d8 100644 --- a/srml/support/Cargo.toml +++ b/srml/support/Cargo.toml @@ -8,7 +8,7 @@ hex-literal = { version = "0.1.0", optional = true } serde = { version = "1.0", default-features = false } serde_derive = { version = "1.0", optional = true } parity-codec = { version = "2.1", default-features = false } -substrate-metadata = { path = "../metadata", default-features = false } +srml-metadata = { path = "../metadata", default-features = false } sr-std = { path = "../../core/sr-std", default-features = false } sr-io = { path = "../../core/sr-io", default-features = false } sr-primitives = { path = "../../core/sr-primitives", default-features = false } @@ -28,7 +28,7 @@ std = [ "parity-codec/std", "sr-std/std", "sr-primitives/std", - "substrate-metadata/std", + "srml-metadata/std", ] nightly = [] strict = [] diff --git a/srml/support/README.adoc b/srml/support/README.adoc deleted file mode 100644 index 699235e5ae..0000000000 --- a/srml/support/README.adoc +++ /dev/null @@ -1,14 +0,0 @@ - -= Runtime Support - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- - diff --git a/srml/support/src/dispatch.rs b/srml/support/src/dispatch.rs index 24ba2a9c75..08d73d59e4 100644 --- a/srml/support/src/dispatch.rs +++ b/srml/support/src/dispatch.rs @@ -21,7 +21,7 @@ pub use rstd::prelude::{Vec, Clone, Eq, PartialEq}; pub use std::fmt; pub use rstd::result; pub use codec::{Codec, Decode, Encode, Input, Output}; -pub use substrate_metadata::{ +pub use srml_metadata::{ ModuleMetadata, FunctionMetadata, DecodeDifferent, CallMetadata, FunctionArgumentMetadata, OuterDispatchMetadata, OuterDispatchCall }; diff --git a/srml/support/src/event.rs b/srml/support/src/event.rs index 02f295ab18..ddc6b7d64f 100644 --- a/srml/support/src/event.rs +++ b/srml/support/src/event.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -pub use substrate_metadata::{EventMetadata, DecodeDifferent, OuterEventMetadata, FnEncode}; +pub use srml_metadata::{EventMetadata, DecodeDifferent, OuterEventMetadata, FnEncode}; /// Implement the `Event` for a module. /// diff --git a/srml/support/src/lib.rs b/srml/support/src/lib.rs index e70af960f1..20cf57ca71 100644 --- a/srml/support/src/lib.rs +++ b/srml/support/src/lib.rs @@ -14,9 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -// tag::description[] //! Support code for the runtime. -// end::description[] #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), feature(alloc))] @@ -29,7 +27,7 @@ pub extern crate sr_std as rstd; extern crate sr_io as runtime_io; #[doc(hidden)] pub extern crate sr_primitives as runtime_primitives; -extern crate substrate_metadata; +extern crate srml_metadata; extern crate mashup; diff --git a/srml/support/src/metadata.rs b/srml/support/src/metadata.rs index 132415d315..947c8877a6 100644 --- a/srml/support/src/metadata.rs +++ b/srml/support/src/metadata.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -pub use substrate_metadata::{ +pub use srml_metadata::{ DecodeDifferent, FnEncode, RuntimeMetadata, RuntimeModuleMetadata }; @@ -98,7 +98,7 @@ macro_rules! __runtime_modules_to_metadata { #[allow(dead_code)] mod tests { use super::*; - use substrate_metadata::{ + use srml_metadata::{ EventMetadata, OuterEventMetadata, RuntimeModuleMetadata, CallMetadata, ModuleMetadata, StorageFunctionModifier, StorageFunctionType, FunctionMetadata, StorageMetadata, StorageFunctionMetadata, OuterDispatchMetadata, OuterDispatchCall diff --git a/srml/support/src/storage/generator.rs b/srml/support/src/storage/generator.rs index 899bee44b0..31d583d6c9 100644 --- a/srml/support/src/storage/generator.rs +++ b/srml/support/src/storage/generator.rs @@ -53,7 +53,7 @@ pub use rstd::borrow::Borrow; #[doc(hidden)] pub use rstd::marker::PhantomData; -pub use substrate_metadata::{ +pub use srml_metadata::{ DecodeDifferent, StorageMetadata, StorageFunctionMetadata, StorageFunctionType, StorageFunctionModifier }; diff --git a/srml/timestamp/src/lib.rs b/srml/timestamp/src/lib.rs index 8911a7e5df..35c82b532f 100644 --- a/srml/timestamp/src/lib.rs +++ b/srml/timestamp/src/lib.rs @@ -29,7 +29,6 @@ //! ## Finalization //! //! This module should be hooked up to the finalization routine. -//! #![cfg_attr(not(feature = "std"), no_std)] -- GitLab From e54390219631fd81438aff7d60a153b362a001c1 Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Tue, 13 Nov 2018 14:17:14 +0300 Subject: [PATCH 041/243] Changes tries: support forks (#950) * forks support in changes trie storage * moved convert_hash to primitives * optimize ChangesTrieRootsStorage::root when anchor is canonicalized --- core/client/db/src/lib.rs | 161 ++++++++++++++---- core/client/db/src/utils.rs | 11 ++ core/client/src/cht.rs | 5 +- core/client/src/client.rs | 16 +- core/client/src/light/call_executor.rs | 4 +- core/client/src/light/fetcher.rs | 25 ++- core/executor/src/wasm_executor.rs | 13 +- core/primitives/src/hash.rs | 10 ++ core/primitives/src/lib.rs | 2 +- core/sr-io/with_std.rs | 4 +- core/sr-io/without_std.rs | 6 +- core/sr-primitives/src/traits.rs | 6 +- core/state-machine/src/changes_trie/build.rs | 29 ++-- .../src/changes_trie/changes_iterator.rs | 48 +++--- core/state-machine/src/changes_trie/mod.rs | 18 +- core/state-machine/src/changes_trie/prune.rs | 12 +- .../state-machine/src/changes_trie/storage.rs | 4 +- core/state-machine/src/ext.rs | 16 +- core/state-machine/src/lib.rs | 8 +- core/state-machine/src/testing.rs | 6 +- core/test-runtime/src/system.rs | 4 +- .../substrate_test_runtime.compact.wasm | Bin 44927 -> 222890 bytes node/executor/src/lib.rs | 4 +- .../release/node_runtime.compact.wasm | Bin 620632 -> 828029 bytes srml/system/src/lib.rs | 2 +- 25 files changed, 276 insertions(+), 138 deletions(-) diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index 60196e4a32..93a5352fd7 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -64,7 +64,7 @@ use hash_db::Hasher; use kvdb::{KeyValueDB, DBTransaction}; use trie::MemoryDB; use parking_lot::RwLock; -use primitives::{H256, AuthorityId, Blake2Hasher, ChangesTrieConfiguration}; +use primitives::{H256, AuthorityId, Blake2Hasher, ChangesTrieConfiguration, convert_hash}; use primitives::storage::well_known_keys; use runtime_primitives::{generic::BlockId, Justification, StorageMap, ChildrenStorageMap}; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, As, NumberFor, Zero, Digest, DigestItem}; @@ -145,7 +145,7 @@ impl<'a> state_db::MetaDb for StateMetaDb<'a> { /// Block database pub struct BlockchainDb { db: Arc, - meta: RwLock, Block::Hash>>, + meta: Arc, Block::Hash>>>, leaves: RwLock>>, } @@ -156,7 +156,7 @@ impl BlockchainDb { Ok(BlockchainDb { db, leaves: RwLock::new(leaves), - meta: RwLock::new(meta), + meta: Arc::new(RwLock::new(meta)), }) } @@ -387,6 +387,7 @@ impl state_machine::Storage for DbGenesisStorage { pub struct DbChangesTrieStorage { db: Arc, + meta: Arc, Block::Hash>>>, min_blocks_to_keep: Option, _phantom: ::std::marker::PhantomData, } @@ -400,7 +401,7 @@ impl DbChangesTrieStorage { } /// Prune obsolete changes tries. - pub fn prune(&self, config: Option, tx: &mut DBTransaction, block: NumberFor) { + pub fn prune(&self, config: Option, tx: &mut DBTransaction, block_hash: Block::Hash, block_num: NumberFor) { // never prune on archive nodes let min_blocks_to_keep = match self.min_blocks_to_keep { Some(min_blocks_to_keep) => min_blocks_to_keep, @@ -418,23 +419,54 @@ impl DbChangesTrieStorage { &config, &*self, min_blocks_to_keep, - block.as_(), + &state_machine::ChangesTrieAnchorBlockId { + hash: convert_hash(&block_hash), + number: block_num.as_(), + }, |node| tx.delete(columns::CHANGES_TRIE, node.as_ref())); } } impl state_machine::ChangesTrieRootsStorage for DbChangesTrieStorage { - fn root(&self, block: u64) -> Result, String> { - Ok(read_db::(&*self.db, columns::HASH_LOOKUP, columns::HEADER, BlockId::Number(As::sa(block))) - .map_err(|err| format!("{}", err)) - .and_then(|header| match header { - Some(header) => Block::Header::decode(&mut &header[..]) - .ok_or_else(|| format!("Failed to parse header of block {}", block)) - .map(Some), - None => Ok(None) - })? - .and_then(|header| header.digest().log(DigestItem::as_changes_trie_root) - .map(|root| H256::from_slice(root.as_ref())))) + fn root(&self, anchor: &state_machine::ChangesTrieAnchorBlockId, block: u64) -> Result, String> { + // check API requirement + assert!(block <= anchor.number, "API requirement"); + + // we need to get hash of the block to resolve changes trie root + let block_id = if block <= self.meta.read().finalized_number.as_() { + // if block is finalized, we could just read canonical hash + BlockId::Number(As::sa(block)) + } else { + // the block is not finalized + let mut current_num = anchor.number; + let mut current_hash: Block::Hash = convert_hash(&anchor.hash); + let maybe_anchor_header: Block::Header = ::utils::require_header::( + &*self.db, columns::HASH_LOOKUP, columns::HEADER, BlockId::Number(As::sa(current_num)) + ).map_err(|e| e.to_string())?; + if maybe_anchor_header.hash() == current_hash { + // if anchor is canonicalized, then the block is also canonicalized + BlockId::Number(As::sa(block)) + } else { + // else (block is not finalized + anchor is not canonicalized): + // => we should find the required block hash by traversing + // back from the anchor to the block with given number + while current_num != block { + let current_header: Block::Header = ::utils::require_header::( + &*self.db, columns::HASH_LOOKUP, columns::HEADER, BlockId::Hash(current_hash) + ).map_err(|e| e.to_string())?; + + current_hash = *current_header.parent_hash(); + current_num = current_num - 1; + } + + BlockId::Hash(current_hash) + } + }; + + Ok(::utils::require_header::(&*self.db, columns::HASH_LOOKUP, columns::HEADER, block_id) + .map_err(|e| e.to_string())? + .digest().log(DigestItem::as_changes_trie_root) + .map(|root| H256::from_slice(root.as_ref()))) } } @@ -480,6 +512,7 @@ impl Backend { fn from_kvdb(db: Arc, pruning: PruningMode, canonicalization_delay: u64) -> Result { let is_archive_pruning = pruning.is_archive(); let blockchain = BlockchainDb::new(db.clone())?; + let meta = blockchain.meta.clone(); let map_e = |e: state_db::Error| ::client::error::Error::from(format!("State database error: {:?}", e)); let state_db: StateDb = StateDb::new(pruning, &StateMetaDb(&*db)).map_err(map_e)?; let storage_db = StorageDb { @@ -488,6 +521,7 @@ impl Backend { }; let changes_tries_storage = DbChangesTrieStorage { db, + meta, min_blocks_to_keep: if is_archive_pruning { None } else { Some(MIN_BLOCKS_TO_KEEP_CHANGES_TRIES_FOR) }, _phantom: Default::default(), }; @@ -567,7 +601,7 @@ impl Backend { let changes_trie_config: Option = self.state_at(BlockId::Hash(parent_hash))? .storage(well_known_keys::CHANGES_TRIE_CONFIG)? .and_then(|v| Decode::decode(&mut &*v)); - self.changes_tries_storage.prune(changes_trie_config, transaction, f_num); + self.changes_tries_storage.prune(changes_trie_config, transaction, f_hash, f_num); } Ok(()) @@ -1191,10 +1225,13 @@ mod tests { #[test] fn changes_trie_storage_works() { let backend = Backend::::new_test(1000, 100); + backend.changes_tries_storage.meta.write().finalized_number = 1000; + let check_changes = |backend: &Backend, block: u64, changes: Vec<(Vec, Vec)>| { let (changes_root, mut changes_trie_update) = prepare_changes(changes); - assert_eq!(backend.changes_tries_storage.root(block), Ok(Some(changes_root))); + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: Default::default(), number: block }; + assert_eq!(backend.changes_tries_storage.root(&anchor, block), Ok(Some(changes_root))); for (key, (val, _)) in changes_trie_update.drain() { assert_eq!(backend.changes_trie_storage().unwrap().get(&key), Ok(Some(val))); @@ -1218,9 +1255,66 @@ mod tests { check_changes(&backend, 2, changes2); } + #[test] + fn changes_trie_storage_works_with_forks() { + let backend = Backend::::new_test(1000, 100); + + let changes0 = vec![(b"k0".to_vec(), b"v0".to_vec())]; + let changes1 = vec![(b"k1".to_vec(), b"v1".to_vec())]; + let changes2 = vec![(b"k2".to_vec(), b"v2".to_vec())]; + let block0 = insert_header(&backend, 0, Default::default(), changes0.clone(), Default::default()); + let block1 = insert_header(&backend, 1, block0, changes1.clone(), Default::default()); + let block2 = insert_header(&backend, 2, block1, changes2.clone(), Default::default()); + + let changes2_1_0 = vec![(b"k3".to_vec(), b"v3".to_vec())]; + let changes2_1_1 = vec![(b"k4".to_vec(), b"v4".to_vec())]; + let block2_1_0 = insert_header(&backend, 3, block2, changes2_1_0.clone(), Default::default()); + let block2_1_1 = insert_header(&backend, 4, block2_1_0, changes2_1_1.clone(), Default::default()); + + let changes2_2_0 = vec![(b"k5".to_vec(), b"v5".to_vec())]; + let changes2_2_1 = vec![(b"k6".to_vec(), b"v6".to_vec())]; + let block2_2_0 = insert_header(&backend, 3, block2, changes2_2_0.clone(), Default::default()); + let block2_2_1 = insert_header(&backend, 4, block2_2_0, changes2_2_1.clone(), Default::default()); + + // finalize block1 + backend.changes_tries_storage.meta.write().finalized_number = 1; + + // branch1: when asking for finalized block hash + let (changes1_root, _) = prepare_changes(changes1); + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 1), Ok(Some(changes1_root))); + + // branch2: when asking for finalized block hash + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_2_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 1), Ok(Some(changes1_root))); + + // branch1: when asking for non-finalized block hash (search by traversal) + let (changes2_1_0_root, _) = prepare_changes(changes2_1_0); + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_1_0_root))); + + // branch2: when asking for non-finalized block hash (search using canonicalized hint) + let (changes2_2_0_root, _) = prepare_changes(changes2_2_0); + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_2_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); + + // finalize first block of branch2 (block2_2_0) + backend.changes_tries_storage.meta.write().finalized_number = 3; + + // branch2: when asking for finalized block of this branch + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); + + // branch1: when asking for finalized block of other branch + // => result is incorrect (returned for the block of branch1), but this is expected, + // because the other fork is abandoned (forked before finalized header) + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); + } + #[test] fn changes_tries_are_pruned_on_finalization() { let mut backend = Backend::::new_test(1000, 100); + backend.changes_tries_storage.meta.write().finalized_number = 1000; backend.changes_tries_storage.min_blocks_to_keep = Some(8); let config = ChangesTrieConfiguration { digest_interval: 2, @@ -1243,26 +1337,27 @@ mod tests { let _ = insert_header(&backend, 12, block11, vec![(b"key_at_12".to_vec(), b"val_at_12".to_vec())], Default::default()); // check that roots of all tries are in the columns::CHANGES_TRIE + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: Default::default(), number: 100 }; fn read_changes_trie_root(backend: &Backend, num: u64) -> H256 { backend.blockchain().header(BlockId::Number(num)).unwrap().unwrap().digest().logs().iter() .find(|i| i.as_changes_trie_root().is_some()).unwrap().as_changes_trie_root().unwrap().clone() } - let root1 = read_changes_trie_root(&backend, 1); assert_eq!(backend.changes_tries_storage.root(1).unwrap(), Some(root1)); - let root2 = read_changes_trie_root(&backend, 2); assert_eq!(backend.changes_tries_storage.root(2).unwrap(), Some(root2)); - let root3 = read_changes_trie_root(&backend, 3); assert_eq!(backend.changes_tries_storage.root(3).unwrap(), Some(root3)); - let root4 = read_changes_trie_root(&backend, 4); assert_eq!(backend.changes_tries_storage.root(4).unwrap(), Some(root4)); - let root5 = read_changes_trie_root(&backend, 5); assert_eq!(backend.changes_tries_storage.root(5).unwrap(), Some(root5)); - let root6 = read_changes_trie_root(&backend, 6); assert_eq!(backend.changes_tries_storage.root(6).unwrap(), Some(root6)); - let root7 = read_changes_trie_root(&backend, 7); assert_eq!(backend.changes_tries_storage.root(7).unwrap(), Some(root7)); - let root8 = read_changes_trie_root(&backend, 8); assert_eq!(backend.changes_tries_storage.root(8).unwrap(), Some(root8)); - let root9 = read_changes_trie_root(&backend, 9); assert_eq!(backend.changes_tries_storage.root(9).unwrap(), Some(root9)); - let root10 = read_changes_trie_root(&backend, 10); assert_eq!(backend.changes_tries_storage.root(10).unwrap(), Some(root10)); - let root11 = read_changes_trie_root(&backend, 11); assert_eq!(backend.changes_tries_storage.root(11).unwrap(), Some(root11)); - let root12 = read_changes_trie_root(&backend, 12); assert_eq!(backend.changes_tries_storage.root(12).unwrap(), Some(root12)); + let root1 = read_changes_trie_root(&backend, 1); assert_eq!(backend.changes_tries_storage.root(&anchor, 1).unwrap(), Some(root1)); + let root2 = read_changes_trie_root(&backend, 2); assert_eq!(backend.changes_tries_storage.root(&anchor, 2).unwrap(), Some(root2)); + let root3 = read_changes_trie_root(&backend, 3); assert_eq!(backend.changes_tries_storage.root(&anchor, 3).unwrap(), Some(root3)); + let root4 = read_changes_trie_root(&backend, 4); assert_eq!(backend.changes_tries_storage.root(&anchor, 4).unwrap(), Some(root4)); + let root5 = read_changes_trie_root(&backend, 5); assert_eq!(backend.changes_tries_storage.root(&anchor, 5).unwrap(), Some(root5)); + let root6 = read_changes_trie_root(&backend, 6); assert_eq!(backend.changes_tries_storage.root(&anchor, 6).unwrap(), Some(root6)); + let root7 = read_changes_trie_root(&backend, 7); assert_eq!(backend.changes_tries_storage.root(&anchor, 7).unwrap(), Some(root7)); + let root8 = read_changes_trie_root(&backend, 8); assert_eq!(backend.changes_tries_storage.root(&anchor, 8).unwrap(), Some(root8)); + let root9 = read_changes_trie_root(&backend, 9); assert_eq!(backend.changes_tries_storage.root(&anchor, 9).unwrap(), Some(root9)); + let root10 = read_changes_trie_root(&backend, 10); assert_eq!(backend.changes_tries_storage.root(&anchor, 10).unwrap(), Some(root10)); + let root11 = read_changes_trie_root(&backend, 11); assert_eq!(backend.changes_tries_storage.root(&anchor, 11).unwrap(), Some(root11)); + let root12 = read_changes_trie_root(&backend, 12); assert_eq!(backend.changes_tries_storage.root(&anchor, 12).unwrap(), Some(root12)); // now simulate finalization of block#12, causing prune of tries at #1..#4 let mut tx = DBTransaction::new(); - backend.changes_tries_storage.prune(Some(config.clone()), &mut tx, 12); + backend.changes_tries_storage.prune(Some(config.clone()), &mut tx, Default::default(), 12); backend.storage.db.write(tx).unwrap(); assert!(backend.changes_tries_storage.get(&root1).unwrap().is_none()); assert!(backend.changes_tries_storage.get(&root2).unwrap().is_none()); @@ -1275,7 +1370,7 @@ mod tests { // now simulate finalization of block#16, causing prune of tries at #5..#8 let mut tx = DBTransaction::new(); - backend.changes_tries_storage.prune(Some(config.clone()), &mut tx, 16); + backend.changes_tries_storage.prune(Some(config.clone()), &mut tx, Default::default(), 16); backend.storage.db.write(tx).unwrap(); assert!(backend.changes_tries_storage.get(&root5).unwrap().is_none()); assert!(backend.changes_tries_storage.get(&root6).unwrap().is_none()); @@ -1286,7 +1381,7 @@ mod tests { // => no changes tries are pruned, because we never prune in archive mode backend.changes_tries_storage.min_blocks_to_keep = None; let mut tx = DBTransaction::new(); - backend.changes_tries_storage.prune(Some(config), &mut tx, 20); + backend.changes_tries_storage.prune(Some(config), &mut tx, Default::default(), 20); backend.storage.db.write(tx).unwrap(); assert!(backend.changes_tries_storage.get(&root9).unwrap().is_some()); assert!(backend.changes_tries_storage.get(&root10).unwrap().is_some()); diff --git a/core/client/db/src/utils.rs b/core/client/db/src/utils.rs index f7b81845e8..5caebd7e72 100644 --- a/core/client/db/src/utils.rs +++ b/core/client/db/src/utils.rs @@ -187,6 +187,17 @@ pub fn read_header( } } +/// Required header from the database. +pub fn require_header( + db: &KeyValueDB, + col_index: Option, + col: Option, + id: BlockId, +) -> client::error::Result { + read_header(db, col_index, col, id) + .and_then(|header| header.ok_or_else(|| client::error::ErrorKind::UnknownBlock(format!("{}", id)).into())) +} + /// Read meta from the database. pub fn read_meta(db: &KeyValueDB, col_meta: Option, col_header: Option) -> Result< Meta<<::Header as HeaderT>::Number, Block::Hash>, diff --git a/core/client/src/cht.rs b/core/client/src/cht.rs index fd8e07c3dd..39e1aaa95b 100644 --- a/core/client/src/cht.rs +++ b/core/client/src/cht.rs @@ -27,7 +27,7 @@ use hash_db; use heapsize::HeapSizeOf; use trie; -use primitives::H256; +use primitives::{H256, convert_hash}; use runtime_primitives::traits::{As, Header as HeaderT, SimpleArithmetic, One}; use state_machine::backend::InMemory as InMemoryState; use state_machine::{prove_read, read_proof_check}; @@ -113,8 +113,7 @@ pub fn check_proof( Hasher: hash_db::Hasher, Hasher::Out: Ord + HeapSizeOf, { - let mut root: Hasher::Out = Default::default(); - root.as_mut().copy_from_slice(local_root.as_ref()); + let root: Hasher::Out = convert_hash(&local_root); let local_cht_key = encode_cht_key(local_number); let local_cht_value = read_proof_check::(root, remote_proof, &local_cht_key).map_err(|e| ClientError::from(e))?; diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 1279bc486a..f1d1549185 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -30,14 +30,14 @@ use consensus::{ImportBlock, ImportResult, BlockOrigin}; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, Zero, As, NumberFor, CurrentHeight, BlockNumberToHash}; use runtime_primitives::{ApplyResult, BuildStorage}; use runtime_api as api; -use primitives::{Blake2Hasher, H256, ChangesTrieConfiguration}; +use primitives::{Blake2Hasher, H256, ChangesTrieConfiguration, convert_hash}; use primitives::storage::{StorageKey, StorageData}; use primitives::storage::well_known_keys; use codec::{Encode, Decode}; use state_machine::{ Backend as StateBackend, CodeExecutor, - ExecutionStrategy, ExecutionManager, prove_read, - key_changes, key_changes_proof, OverlayedChanges + ExecutionStrategy, ExecutionManager, ChangesTrieAnchorBlockId, + prove_read, key_changes, key_changes_proof, OverlayedChanges }; use backend::{self, BlockImportOperation}; @@ -355,7 +355,10 @@ impl Client where config, storage, self.require_block_number_from_id(&BlockId::Hash(first))?.as_(), - self.require_block_number_from_id(&BlockId::Hash(last))?.as_(), + &ChangesTrieAnchorBlockId { + hash: convert_hash(&last), + number: self.require_block_number_from_id(&BlockId::Hash(last))?.as_(), + }, self.backend.blockchain().info()?.best_number.as_(), key) .map_err(|err| error::ErrorKind::ChangesTrieAccessFailed(err).into()) @@ -388,7 +391,10 @@ impl Client where config, storage, self.require_block_number_from_id(&BlockId::Hash(first))?.as_(), - self.require_block_number_from_id(&BlockId::Hash(last))?.as_(), + &ChangesTrieAnchorBlockId { + hash: convert_hash(&last), + number: self.require_block_number_from_id(&BlockId::Hash(last))?.as_(), + }, max_number.as_(), key) .map_err(|err| error::ErrorKind::ChangesTrieAccessFailed(err).into()) diff --git a/core/client/src/light/call_executor.rs b/core/client/src/light/call_executor.rs index d52883db64..732b783b73 100644 --- a/core/client/src/light/call_executor.rs +++ b/core/client/src/light/call_executor.rs @@ -21,6 +21,7 @@ use std::marker::PhantomData; use std::sync::Arc; use futures::{IntoFuture, Future}; +use primitives::convert_hash; use runtime_primitives::generic::BlockId; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT}; use state_machine::{Backend as StateBackend, CodeExecutor, OverlayedChanges, @@ -136,8 +137,7 @@ pub fn check_execution_proof( { let local_state_root = request.header.state_root(); - let mut root: H::Out = Default::default(); - root.as_mut().copy_from_slice(local_state_root.as_ref()); + let root: H::Out = convert_hash(&local_state_root); let mut changes = OverlayedChanges::default(); let local_result = execution_proof_check::( diff --git a/core/client/src/light/fetcher.rs b/core/client/src/light/fetcher.rs index 95e02b91f9..b75b74a0a9 100644 --- a/core/client/src/light/fetcher.rs +++ b/core/client/src/light/fetcher.rs @@ -21,10 +21,10 @@ use futures::IntoFuture; use hash_db::Hasher; use heapsize::HeapSizeOf; -use primitives::ChangesTrieConfiguration; +use primitives::{ChangesTrieConfiguration, convert_hash}; use runtime_primitives::traits::{As, Block as BlockT, Header as HeaderT, NumberFor}; -use state_machine::{CodeExecutor, ChangesTrieRootsStorage, read_proof_check, - key_changes_proof_check}; +use state_machine::{CodeExecutor, ChangesTrieRootsStorage, ChangesTrieAnchorBlockId, + read_proof_check, key_changes_proof_check}; use call_executor::CallResult; use cht; @@ -192,9 +192,8 @@ impl FetchChecker for LightDataChecker request: &RemoteReadRequest, remote_proof: Vec> ) -> ClientResult>> { - let mut root: H::Out = Default::default(); - root.as_mut().copy_from_slice(request.header.state_root().as_ref()); - read_proof_check::(root, remote_proof, &request.key).map_err(Into::into) + read_proof_check::(convert_hash(request.header.state_root()), remote_proof, &request.key) + .map_err(Into::into) } fn check_execution_proof( @@ -229,7 +228,10 @@ impl FetchChecker for LightDataChecker }, remote_proof, first_number, - request.last_block.0.as_(), + &ChangesTrieAnchorBlockId { + hash: convert_hash(&request.last_block.1), + number: request.last_block.0.as_(), + }, remote_max.as_(), &request.key) .map(|pairs| pairs.into_iter().map(|(b, x)| (As::sa(b), x)).collect()) @@ -248,15 +250,12 @@ impl<'a, H, Hash> ChangesTrieRootsStorage for RootsStorage<'a, Hash> H: Hasher, Hash: 'a + Send + Sync + Clone + AsRef<[u8]>, { - fn root(&self, block: u64) -> Result, String> { + fn root(&self, _anchor: &ChangesTrieAnchorBlockId, block: u64) -> Result, String> { + // we can't ask for roots from parallel forks here => ignore anchor Ok(block.checked_sub(self.first) .and_then(|index| self.roots.get(index as usize)) .cloned() - .map(|root| { - let mut hasher_root: H::Out = Default::default(); - hasher_root.as_mut().copy_from_slice(root.as_ref()); - hasher_root - })) + .map(|root| convert_hash(&root))) } } diff --git a/core/executor/src/wasm_executor.rs b/core/executor/src/wasm_executor.rs index 90d6db6001..7480b61950 100644 --- a/core/executor/src/wasm_executor.rs +++ b/core/executor/src/wasm_executor.rs @@ -29,7 +29,7 @@ use wasm_utils::UserError; use primitives::{blake2_256, twox_128, twox_256, ed25519}; use primitives::hexdisplay::HexDisplay; use primitives::sandbox as sandbox_primitives; -use primitives::Blake2Hasher; +use primitives::{H256, Blake2Hasher}; use trie::ordered_trie_root; use sandbox; @@ -412,8 +412,15 @@ impl_function_executor!(this: FunctionExecutor<'e, E>, Ok(0) } }, - ext_storage_changes_root(block: u64, result: *mut u8) -> u32 => { - let r = this.ext.storage_changes_root(block); + ext_storage_changes_root(parent_hash_data: *const u8, parent_hash_len: u32, parent_number: u64, result: *mut u8) -> u32 => { + let mut parent_hash = H256::default(); + if parent_hash_len != parent_hash.as_ref().len() as u32 { + return Err(UserError("Invalid parent_hash_len in ext_storage_changes_root").into()); + } + let raw_parent_hash = this.memory.get(parent_hash_data, parent_hash_len as usize) + .map_err(|_| UserError("Invalid attempt to get parent_hash in ext_storage_changes_root"))?; + parent_hash.as_mut().copy_from_slice(&raw_parent_hash[..]); + let r = this.ext.storage_changes_root(parent_hash, parent_number); if let Some(ref r) = r { this.memory.set(result, &r[..]).map_err(|_| UserError("Invalid attempt to set memory in ext_storage_changes_root"))?; } diff --git a/core/primitives/src/hash.rs b/core/primitives/src/hash.rs index 5733a738c9..8d04df2684 100644 --- a/core/primitives/src/hash.rs +++ b/core/primitives/src/hash.rs @@ -76,6 +76,16 @@ impl_rest!(H160, 20); impl_rest!(H256, 32); impl_rest!(H512, 64); +/// Hash conversion. Used to convert between unbound associated hash types in traits, +/// implemented by the same hash type. +/// Panics if used to convert between different hash types. +pub fn convert_hash, H2: AsRef<[u8]>>(src: &H2) -> H1 { + let mut dest = H1::default(); + assert_eq!(dest.as_mut().len(), src.as_ref().len()); + dest.as_mut().copy_from_slice(src.as_ref()); + dest +} + #[cfg(test)] mod tests { use super::*; diff --git a/core/primitives/src/lib.rs b/core/primitives/src/lib.rs index c5ddcb130d..20f044a872 100644 --- a/core/primitives/src/lib.rs +++ b/core/primitives/src/lib.rs @@ -107,7 +107,7 @@ mod changes_trie; #[cfg(test)] mod tests; -pub use self::hash::{H160, H256, H512}; +pub use self::hash::{H160, H256, H512, convert_hash}; pub use self::uint::U256; pub use authority_id::AuthorityId; pub use changes_trie::ChangesTrieConfiguration; diff --git a/core/sr-io/with_std.rs b/core/sr-io/with_std.rs index 72fa107469..a608a632fe 100644 --- a/core/sr-io/with_std.rs +++ b/core/sr-io/with_std.rs @@ -157,9 +157,9 @@ pub fn child_storage_root(storage_key: &[u8]) -> Option> { } /// "Commit" all existing operations and get the resultant storage change root. -pub fn storage_changes_root(block: u64) -> Option { +pub fn storage_changes_root(parent_hash: [u8; 32], parent_num: u64) -> Option { ext::with(|ext| - ext.storage_changes_root(block) + ext.storage_changes_root(parent_hash.into(), parent_num) ).unwrap_or(None) } diff --git a/core/sr-io/without_std.rs b/core/sr-io/without_std.rs index 5b892ecffe..d0f112b76e 100644 --- a/core/sr-io/without_std.rs +++ b/core/sr-io/without_std.rs @@ -72,7 +72,7 @@ extern "C" { fn ext_get_child_storage_into(storage_key_data: *const u8, storage_key_len: u32, key_data: *const u8, key_len: u32, value_data: *mut u8, value_len: u32, value_offset: u32) -> u32; fn ext_storage_root(result: *mut u8); fn ext_child_storage_root(storage_key_data: *const u8, storage_key_len: u32, written_out: *mut u32) -> *mut u8; - fn ext_storage_changes_root(block: u64, result: *mut u8) -> u32; + fn ext_storage_changes_root(parent_hash_data: *const u8, parent_hash_len: u32, parent_num: u64, result: *mut u8) -> u32; fn ext_blake2_256_enumerated_trie_root(values_data: *const u8, lens_data: *const u32, lens_len: u32, result: *mut u8); fn ext_chain_id() -> u64; fn ext_blake2_256(data: *const u8, len: u32, out: *mut u8); @@ -269,10 +269,10 @@ pub fn child_storage_root(storage_key: &[u8]) -> Option> { } /// The current storage' changes root. -pub fn storage_changes_root(block: u64) -> Option<[u8; 32]> { +pub fn storage_changes_root(parent_hash: [u8; 32], parent_num: u64) -> Option<[u8; 32]> { let mut result: [u8; 32] = Default::default(); let is_set = unsafe { - ext_storage_changes_root(block, result.as_mut_ptr()) + ext_storage_changes_root(parent_hash.as_ptr(), parent_hash.len() as u32, parent_num, result.as_mut_ptr()) }; if is_set != 0 { diff --git a/core/sr-primitives/src/traits.rs b/core/sr-primitives/src/traits.rs index 809c617218..28c7997a0f 100644 --- a/core/sr-primitives/src/traits.rs +++ b/core/sr-primitives/src/traits.rs @@ -276,7 +276,7 @@ pub trait Hash: 'static + MaybeSerializeDebug + Clone + Eq + PartialEq { // Stup fn storage_root() -> Self::Output; /// Acquire the global storage changes root. - fn storage_changes_root(block: u64) -> Option; + fn storage_changes_root(parent_hash: Self::Output, parent_number: u64) -> Option; } /// Blake2-256 Hash implementation. @@ -308,8 +308,8 @@ impl Hash for BlakeTwo256 { fn storage_root() -> Self::Output { runtime_io::storage_root().into() } - fn storage_changes_root(block: u64) -> Option { - runtime_io::storage_changes_root(block).map(Into::into) + fn storage_changes_root(parent_hash: Self::Output, parent_number: u64) -> Option { + runtime_io::storage_changes_root(parent_hash.into(), parent_number).map(Into::into) } } diff --git a/core/state-machine/src/changes_trie/build.rs b/core/state-machine/src/changes_trie/build.rs index 991b395938..c183f2b3cc 100644 --- a/core/state-machine/src/changes_trie/build.rs +++ b/core/state-machine/src/changes_trie/build.rs @@ -25,7 +25,7 @@ use overlayed_changes::OverlayedChanges; use trie_backend_essence::{TrieBackendStorage, TrieBackendEssence}; use changes_trie::build_iterator::digest_build_iterator; use changes_trie::input::{InputKey, InputPair, DigestIndex, ExtrinsicIndex}; -use changes_trie::{Configuration, Storage}; +use changes_trie::{AnchorBlockId, Configuration, Storage}; /// Prepare input pairs for building a changes trie of given block. /// @@ -37,7 +37,7 @@ pub fn prepare_input<'a, B, S, H>( backend: &B, storage: Option<&'a S>, changes: &OverlayedChanges, - block: u64, + parent: &'a AnchorBlockId, ) -> Result>, String> where B: Backend, @@ -54,10 +54,10 @@ pub fn prepare_input<'a, B, S, H>( let mut input = Vec::new(); input.extend(prepare_extrinsics_input( backend, - block, + parent.number + 1, changes)?); input.extend(prepare_digest_input::<_, H>( - block, + parent, config, storage)?); @@ -73,7 +73,6 @@ fn prepare_extrinsics_input( where B: Backend, H: Hasher, - { let mut extrinsic_map = BTreeMap::, BTreeSet>::new(); for (key, val) in changes.prospective.top.iter().chain(changes.committed.top.iter()) { @@ -103,19 +102,19 @@ fn prepare_extrinsics_input( /// Prepare DigestIndex input pairs. fn prepare_digest_input<'a, S, H>( - block: u64, + parent: &'a AnchorBlockId, config: &Configuration, storage: &'a S -) -> Result, String> +) -> Result + 'a, String> where S: Storage, &'a S: TrieBackendStorage, H: Hasher, - H::Out: HeapSizeOf, + H::Out: 'a + HeapSizeOf, { let mut digest_map = BTreeMap::, BTreeSet>::new(); - for digest_build_block in digest_build_iterator(config, block) { - let trie_root = storage.root(digest_build_block)?; + for digest_build_block in digest_build_iterator(config, parent.number + 1) { + let trie_root = storage.root(parent, digest_build_block)?; let trie_root = trie_root.ok_or_else(|| format!("No changes trie root for block {}", digest_build_block))?; let trie_storage = TrieBackendEssence::<_, H>::new(storage, trie_root); @@ -136,7 +135,7 @@ fn prepare_digest_input<'a, S, H>( Ok(digest_map.into_iter() .map(move |(key, set)| InputPair::DigestIndex(DigestIndex { - block, + block: parent.number + 1, key }, set.into_iter().collect()))) } @@ -228,7 +227,7 @@ mod test { #[test] fn build_changes_trie_nodes_on_non_digest_block() { let (backend, storage, changes) = prepare_for_build(); - let changes_trie_nodes = prepare_input(&backend, Some(&storage), &changes, 5).unwrap(); + let changes_trie_nodes = prepare_input(&backend, Some(&storage), &changes, &AnchorBlockId { hash: Default::default(), number: 4 }).unwrap(); assert_eq!(changes_trie_nodes, Some(vec![ InputPair::ExtrinsicIndex(ExtrinsicIndex { block: 5, key: vec![100] }, vec![0, 2, 3]), InputPair::ExtrinsicIndex(ExtrinsicIndex { block: 5, key: vec![101] }, vec![1]), @@ -239,7 +238,7 @@ mod test { #[test] fn build_changes_trie_nodes_on_digest_block_l1() { let (backend, storage, changes) = prepare_for_build(); - let changes_trie_nodes = prepare_input(&backend, Some(&storage), &changes, 4).unwrap(); + let changes_trie_nodes = prepare_input(&backend, Some(&storage), &changes, &AnchorBlockId { hash: Default::default(), number: 3 }).unwrap(); assert_eq!(changes_trie_nodes, Some(vec![ InputPair::ExtrinsicIndex(ExtrinsicIndex { block: 4, key: vec![100] }, vec![0, 2, 3]), InputPair::ExtrinsicIndex(ExtrinsicIndex { block: 4, key: vec![101] }, vec![1]), @@ -255,7 +254,7 @@ mod test { #[test] fn build_changes_trie_nodes_on_digest_block_l2() { let (backend, storage, changes) = prepare_for_build(); - let changes_trie_nodes = prepare_input(&backend, Some(&storage), &changes, 16).unwrap(); + let changes_trie_nodes = prepare_input(&backend, Some(&storage), &changes, &AnchorBlockId { hash: Default::default(), number: 15 }).unwrap(); assert_eq!(changes_trie_nodes, Some(vec![ InputPair::ExtrinsicIndex(ExtrinsicIndex { block: 16, key: vec![100] }, vec![0, 2, 3]), InputPair::ExtrinsicIndex(ExtrinsicIndex { block: 16, key: vec![101] }, vec![1]), @@ -279,7 +278,7 @@ mod test { extrinsics: Some(vec![1].into_iter().collect()) }); - let changes_trie_nodes = prepare_input(&backend, Some(&storage), &changes, 4).unwrap(); + let changes_trie_nodes = prepare_input(&backend, Some(&storage), &changes, &AnchorBlockId { hash: Default::default(), number: 3 }).unwrap(); assert_eq!(changes_trie_nodes, Some(vec![ InputPair::ExtrinsicIndex(ExtrinsicIndex { block: 4, key: vec![100] }, vec![0, 2, 3]), InputPair::ExtrinsicIndex(ExtrinsicIndex { block: 4, key: vec![101] }, vec![1]), diff --git a/core/state-machine/src/changes_trie/changes_iterator.rs b/core/state-machine/src/changes_trie/changes_iterator.rs index 8b4d2bd540..e8bd1e7db6 100644 --- a/core/state-machine/src/changes_trie/changes_iterator.rs +++ b/core/state-machine/src/changes_trie/changes_iterator.rs @@ -23,7 +23,7 @@ use codec::{Decode, Encode}; use hash_db::{HashDB, Hasher}; use heapsize::HeapSizeOf; use substrate_trie::{Recorder, MemoryDB}; -use changes_trie::{Configuration, RootsStorage, Storage}; +use changes_trie::{AnchorBlockId, Configuration, RootsStorage, Storage}; use changes_trie::input::{DigestIndex, ExtrinsicIndex, DigestIndexValue, ExtrinsicIndexValue}; use changes_trie::storage::{TrieBackendAdapter, InMemoryStorage}; use proving_backend::ProvingBackendEssence; @@ -35,7 +35,7 @@ pub fn key_changes, H: Hasher>( config: &Configuration, storage: &S, begin: u64, - end: u64, + end: &AnchorBlockId, max: u64, key: &[u8], ) -> Result, String> where H::Out: HeapSizeOf { @@ -46,7 +46,7 @@ pub fn key_changes, H: Hasher>( storage, begin, end, - surface: surface_iterator(config, max, begin, end)?, + surface: surface_iterator(config, max, begin, end.number)?, extrinsics: Default::default(), blocks: Default::default(), @@ -62,7 +62,7 @@ pub fn key_changes_proof, H: Hasher>( config: &Configuration, storage: &S, begin: u64, - end: u64, + end: &AnchorBlockId, max: u64, key: &[u8], ) -> Result>, String> where H::Out: HeapSizeOf { @@ -73,7 +73,7 @@ pub fn key_changes_proof, H: Hasher>( storage, begin, end, - surface: surface_iterator(config, max, begin, end)?, + surface: surface_iterator(config, max, begin, end.number)?, extrinsics: Default::default(), blocks: Default::default(), @@ -98,7 +98,7 @@ pub fn key_changes_proof_check, H: Hasher>( roots_storage: &S, proof: Vec>, begin: u64, - end: u64, + end: &AnchorBlockId, max: u64, key: &[u8] ) -> Result, String> where H::Out: HeapSizeOf { @@ -115,7 +115,7 @@ pub fn key_changes_proof_check, H: Hasher>( storage: &proof_db, begin, end, - surface: surface_iterator(config, max, begin, end)?, + surface: surface_iterator(config, max, begin, end.number)?, extrinsics: Default::default(), blocks: Default::default(), @@ -174,12 +174,12 @@ impl<'a> Iterator for SurfaceIterator<'a> { /// Drilldown iterator - receives 'digest points' from surface iterator and explores /// every point until extrinsic is found. -pub struct DrilldownIteratorEssence<'a, RS: 'a + RootsStorage, S: 'a + Storage, H: Hasher> { +pub struct DrilldownIteratorEssence<'a, RS: 'a + RootsStorage, S: 'a + Storage, H: Hasher> where H::Out: 'a { key: &'a [u8], roots_storage: &'a RS, storage: &'a S, begin: u64, - end: u64, + end: &'a AnchorBlockId, surface: SurfaceIterator<'a>, extrinsics: VecDeque<(u64, u32)>, @@ -213,14 +213,14 @@ impl<'a, RS: 'a + RootsStorage, S: Storage, H: Hasher> DrilldownIteratorEs // not having a changes trie root is an error because: // we never query roots for future blocks // AND trie roots for old blocks are known (both on full + light node) - let trie_root = self.roots_storage.root(block)? + let trie_root = self.roots_storage.root(&self.end, block)? .ok_or_else(|| format!("Changes trie root for block {} is not found", block))?; // only return extrinsics for blocks before self.max // most of blocks will be filtered out beore pushing to `self.blocks` // here we just throwing away changes at digest blocks we're processing debug_assert!(block >= self.begin, "We shall not touch digests earlier than a range' begin"); - if block <= self.end { + if block <= self.end.number { let extrinsics_key = ExtrinsicIndex { block, key: self.key.to_vec() }.encode(); let extrinsics = trie_reader(&self.storage, trie_root, &extrinsics_key); if let Some(extrinsics) = extrinsics? { @@ -239,7 +239,7 @@ impl<'a, RS: 'a + RootsStorage, S: Storage, H: Hasher> DrilldownIteratorEs // filter level0 blocks here because we tend to use digest blocks, // AND digest block changes could also include changes for out-of-range blocks let begin = self.begin; - let end = self.end; + let end = self.end.number; self.blocks.extend(blocks.into_iter() .rev() .filter(|b| level > 1 || (*b >= begin && *b <= end)) @@ -261,7 +261,7 @@ impl<'a, RS: 'a + RootsStorage, S: Storage, H: Hasher> DrilldownIteratorEs } /// Exploring drilldown operator. -struct DrilldownIterator<'a, RS: 'a + RootsStorage, S: 'a + Storage, H: Hasher> { +struct DrilldownIterator<'a, RS: 'a + RootsStorage, S: 'a + Storage, H: Hasher> where H::Out: 'a { essence: DrilldownIteratorEssence<'a, RS, S, H>, } @@ -278,7 +278,7 @@ impl<'a, RS: 'a + RootsStorage, S: Storage, H: Hasher> Iterator } /// Proving drilldown iterator. -struct ProvingDrilldownIterator<'a, RS: 'a + RootsStorage, S: 'a + Storage, H: Hasher> { +struct ProvingDrilldownIterator<'a, RS: 'a + RootsStorage, S: 'a + Storage, H: Hasher> where H::Out: 'a { essence: DrilldownIteratorEssence<'a, RS, S, H>, proof_recorder: RefCell>, } @@ -427,23 +427,23 @@ mod tests { fn drilldown_iterator_works() { let (config, storage) = prepare_for_drilldown(); let drilldown_result = key_changes::, Blake2Hasher>( - &config, &storage, 0, 16, 16, &[42]); + &config, &storage, 0, &AnchorBlockId { hash: Default::default(), number: 16 }, 16, &[42]); assert_eq!(drilldown_result, Ok(vec![(8, 2), (8, 1), (6, 3), (3, 0)])); let drilldown_result = key_changes::, Blake2Hasher>( - &config, &storage, 0, 2, 4, &[42]); + &config, &storage, 0, &AnchorBlockId { hash: Default::default(), number: 2 }, 4, &[42]); assert_eq!(drilldown_result, Ok(vec![])); let drilldown_result = key_changes::, Blake2Hasher>( - &config, &storage, 0, 3, 4, &[42]); + &config, &storage, 0, &AnchorBlockId { hash: Default::default(), number: 3 }, 4, &[42]); assert_eq!(drilldown_result, Ok(vec![(3, 0)])); let drilldown_result = key_changes::, Blake2Hasher>( - &config, &storage, 7, 8, 8, &[42]); + &config, &storage, 7, &AnchorBlockId { hash: Default::default(), number: 8 }, 8, &[42]); assert_eq!(drilldown_result, Ok(vec![(8, 2), (8, 1)])); let drilldown_result = key_changes::, Blake2Hasher>( - &config, &storage, 5, 7, 8, &[42]); + &config, &storage, 5, &AnchorBlockId { hash: Default::default(), number: 7 }, 8, &[42]); assert_eq!(drilldown_result, Ok(vec![(6, 3)])); } @@ -453,16 +453,16 @@ mod tests { storage.clear_storage(); assert!(key_changes::, Blake2Hasher>( - &config, &storage, 0, 100, 1000, &[42]).is_err()); + &config, &storage, 0, &AnchorBlockId { hash: Default::default(), number: 100 }, 1000, &[42]).is_err()); } #[test] fn drilldown_iterator_fails_when_range_is_invalid() { let (config, storage) = prepare_for_drilldown(); assert!(key_changes::, Blake2Hasher>( - &config, &storage, 0, 100, 50, &[42]).is_err()); + &config, &storage, 0, &AnchorBlockId { hash: Default::default(), number: 100 }, 50, &[42]).is_err()); assert!(key_changes::, Blake2Hasher>( - &config, &storage, 20, 10, 100, &[42]).is_err()); + &config, &storage, 20, &AnchorBlockId { hash: Default::default(), number: 10 }, 100, &[42]).is_err()); } @@ -474,7 +474,7 @@ mod tests { let (remote_config, remote_storage) = prepare_for_drilldown(); let remote_proof = key_changes_proof::, Blake2Hasher>( &remote_config, &remote_storage, - 0, 16, 16, &[42]).unwrap(); + 0, &AnchorBlockId { hash: Default::default(), number: 16 }, 16, &[42]).unwrap(); // happens on local light node: @@ -483,7 +483,7 @@ mod tests { local_storage.clear_storage(); let local_result = key_changes_proof_check::, Blake2Hasher>( &local_config, &local_storage, remote_proof, - 0, 16, 16, &[42]); + 0, &AnchorBlockId { hash: Default::default(), number: 16 }, 16, &[42]); // check that drilldown result is the same as if it was happening at the full node assert_eq!(local_result, Ok(vec![(8, 2), (8, 1), (6, 3), (3, 0)])); diff --git a/core/state-machine/src/changes_trie/mod.rs b/core/state-machine/src/changes_trie/mod.rs index fb16cb54d6..1d523854ee 100644 --- a/core/state-machine/src/changes_trie/mod.rs +++ b/core/state-machine/src/changes_trie/mod.rs @@ -58,10 +58,20 @@ use trie::{DBValue, trie_root}; /// Changes that are made outside of extrinsics are marked with this index; pub const NO_EXTRINSIC_INDEX: u32 = 0xffffffff; +/// Block identifier that could be used to determine fork of this block. +#[derive(Debug)] +pub struct AnchorBlockId { + /// Hash of this block. + pub hash: Hash, + /// Number of this block. + pub number: u64, +} + /// Changes trie storage. Provides access to trie roots and trie nodes. pub trait RootsStorage: Send + Sync { - /// Get changes trie root for given block. - fn root(&self, block: u64) -> Result, String>; + /// Get changes trie root for the block with given number which is an ancestor (or the block + /// itself) of the anchor_block (i.e. anchor_block.number >= block). + fn root(&self, anchor: &AnchorBlockId, block: u64) -> Result, String>; } /// Changes trie storage. Provides access to trie roots and trie nodes. @@ -79,13 +89,13 @@ pub fn compute_changes_trie_root<'a, B: Backend, S: Storage, H: Hasher>( backend: &B, storage: Option<&'a S>, changes: &OverlayedChanges, - block: u64, + parent: &'a AnchorBlockId, ) -> Option<(H::Out, Vec<(Vec, Vec)>)> where &'a S: TrieBackendStorage, H::Out: Ord + HeapSizeOf, { - let input_pairs = prepare_input::(backend, storage, changes, block) + let input_pairs = prepare_input::(backend, storage, changes, parent) .expect("storage is not allowed to fail within runtime")?; let transaction = input_pairs.into_iter() .map(Into::into) diff --git a/core/state-machine/src/changes_trie/prune.rs b/core/state-machine/src/changes_trie/prune.rs index 8168a0771d..70bae77b02 100644 --- a/core/state-machine/src/changes_trie/prune.rs +++ b/core/state-machine/src/changes_trie/prune.rs @@ -21,7 +21,7 @@ use heapsize::HeapSizeOf; use substrate_trie::Recorder; use proving_backend::ProvingBackendEssence; use trie_backend_essence::TrieBackendEssence; -use changes_trie::{Configuration, Storage}; +use changes_trie::{AnchorBlockId, Configuration, Storage}; use changes_trie::storage::TrieBackendAdapter; /// Prune obslete changes tries. Puning happens at the same block, where highest @@ -33,21 +33,21 @@ pub fn prune, H: Hasher, F: FnMut(H::Out)>( config: &Configuration, storage: &S, min_blocks_to_keep: u64, - current_block: u64, + current_block: &AnchorBlockId, mut remove_trie_node: F, ) where H::Out: HeapSizeOf, { // we only CAN prune at block where max-level-digest is created - let digest_interval = match config.digest_level_at_block(current_block) { + let digest_interval = match config.digest_level_at_block(current_block.number) { Some((digest_level, digest_interval, _)) if digest_level == config.digest_levels => digest_interval, _ => return, }; // select range for pruning - let (first, last) = match pruning_range(min_blocks_to_keep, current_block, digest_interval) { + let (first, last) = match pruning_range(min_blocks_to_keep, current_block.number, digest_interval) { Some((first, last)) => (first, last), None => return, }; @@ -55,7 +55,7 @@ pub fn prune, H: Hasher, F: FnMut(H::Out)>( // delete changes trie for every block in range // TODO: limit `max_digest_interval` so that this cycle won't involve huge ranges for block in first..last+1 { - let root = match storage.root(block) { + let root = match storage.root(current_block, block) { Ok(Some(root)) => root, Ok(None) => continue, Err(error) => { @@ -139,7 +139,7 @@ mod tests { H::Out: HeapSizeOf, { let mut pruned_trie_nodes = HashSet::new(); - prune(config, storage, min_blocks_to_keep, current_block, + prune(config, storage, min_blocks_to_keep, &AnchorBlockId { hash: Default::default(), number: current_block }, |node| { pruned_trie_nodes.insert(node); }); pruned_trie_nodes } diff --git a/core/state-machine/src/changes_trie/storage.rs b/core/state-machine/src/changes_trie/storage.rs index 1cdd03841e..088b605e9c 100644 --- a/core/state-machine/src/changes_trie/storage.rs +++ b/core/state-machine/src/changes_trie/storage.rs @@ -22,7 +22,7 @@ use trie::DBValue; use heapsize::HeapSizeOf; use trie::MemoryDB; use parking_lot::RwLock; -use changes_trie::{RootsStorage, Storage}; +use changes_trie::{AnchorBlockId, RootsStorage, Storage}; use trie_backend_essence::TrieBackendStorage; #[cfg(test)] @@ -110,7 +110,7 @@ impl InMemoryStorage where H::Out: HeapSizeOf { } impl RootsStorage for InMemoryStorage where H::Out: HeapSizeOf { - fn root(&self, block: u64) -> Result, String> { + fn root(&self, _anchor_block: &AnchorBlockId, block: u64) -> Result, String> { Ok(self.data.read().roots.get(&block).cloned()) } } diff --git a/core/state-machine/src/ext.rs b/core/state-machine/src/ext.rs index b03ed28250..1bcb3fb732 100644 --- a/core/state-machine/src/ext.rs +++ b/core/state-machine/src/ext.rs @@ -18,7 +18,7 @@ use std::{error, fmt, cmp::Ord}; use backend::{Backend, Consolidate}; -use changes_trie::{Storage as ChangesTrieStorage, compute_changes_trie_root}; +use changes_trie::{AnchorBlockId, Storage as ChangesTrieStorage, compute_changes_trie_root}; use {Externalities, OverlayedChanges}; use hash_db::Hasher; use primitives::storage::well_known_keys::is_child_storage_key; @@ -288,12 +288,12 @@ where Some(self.child_storage_root_transaction(storage_key).0) } - fn storage_changes_root(&mut self, block: u64) -> Option { + fn storage_changes_root(&mut self, parent: H::Out, parent_num: u64) -> Option { let root_and_tx = compute_changes_trie_root::<_, T, H>( self.backend, self.changes_trie_storage.clone(), self.overlay, - block, + &AnchorBlockId { hash: parent, number: parent_num }, ); let root_and_tx = root_and_tx.map(|(root, changes)| { let mut calculated_root = Default::default(); @@ -305,7 +305,7 @@ where } } - (block, mdb, root) + (parent_num + 1, mdb, root) }); let root = root_and_tx.as_ref().map(|(_, _, root)| root.clone()); self.changes_trie_transaction = root_and_tx; @@ -353,7 +353,7 @@ mod tests { let mut overlay = prepare_overlay_with_changes(); let backend = TestBackend::default(); let mut ext = TestExt::new(&mut overlay, &backend, None); - assert_eq!(ext.storage_changes_root(100), None); + assert_eq!(ext.storage_changes_root(Default::default(), 100), None); } #[test] @@ -363,7 +363,7 @@ mod tests { let storage = TestChangesTrieStorage::new(); let backend = TestBackend::default(); let mut ext = TestExt::new(&mut overlay, &backend, Some(&storage)); - assert_eq!(ext.storage_changes_root(100), None); + assert_eq!(ext.storage_changes_root(Default::default(), 100), None); } #[test] @@ -372,7 +372,7 @@ mod tests { let storage = TestChangesTrieStorage::new(); let backend = TestBackend::default(); let mut ext = TestExt::new(&mut overlay, &backend, Some(&storage)); - assert_eq!(ext.storage_changes_root(100), + assert_eq!(ext.storage_changes_root(Default::default(), 99), Some(hex!("5b829920b9c8d554a19ee2a1ba593c4f2ee6fc32822d083e04236d693e8358d5").into())); } @@ -383,7 +383,7 @@ mod tests { let storage = TestChangesTrieStorage::new(); let backend = TestBackend::default(); let mut ext = TestExt::new(&mut overlay, &backend, Some(&storage)); - assert_eq!(ext.storage_changes_root(100), + assert_eq!(ext.storage_changes_root(Default::default(), 99), Some(hex!("bcf494e41e29a15c9ae5caa053fe3cb8b446ee3e02a254efbdec7a19235b76e4").into())); } } diff --git a/core/state-machine/src/lib.rs b/core/state-machine/src/lib.rs index 7b0f3690d8..e88b3f370a 100644 --- a/core/state-machine/src/lib.rs +++ b/core/state-machine/src/lib.rs @@ -53,7 +53,9 @@ pub use trie::{TrieMut, TrieDBMut, DBValue, MemoryDB}; pub use testing::TestExternalities; pub use ext::Ext; pub use backend::Backend; -pub use changes_trie::{Storage as ChangesTrieStorage, +pub use changes_trie::{ + AnchorBlockId as ChangesTrieAnchorBlockId, + Storage as ChangesTrieStorage, RootsStorage as ChangesTrieRootsStorage, InMemoryStorage as InMemoryChangesTrieStorage, key_changes, key_changes_proof, key_changes_proof_check, @@ -154,8 +156,8 @@ pub trait Externalities { /// Returns None if key provided is not a storage key. This can due to not being started with CHILD_STORAGE_KEY_PREFIX, or the trie implementation regards the key as invalid. fn child_storage_root(&mut self, storage_key: &[u8]) -> Option>; - /// Get the change trie root of the current storage overlay at given block. - fn storage_changes_root(&mut self, block: u64) -> Option where H::Out: Ord; + /// Get the change trie root of the current storage overlay at a block wth given parent. + fn storage_changes_root(&mut self, parent: H::Out, parent_num: u64) -> Option where H::Out: Ord; } /// Code execution engine. diff --git a/core/state-machine/src/testing.rs b/core/state-machine/src/testing.rs index 75ad342b6b..876a190a96 100644 --- a/core/state-machine/src/testing.rs +++ b/core/state-machine/src/testing.rs @@ -22,7 +22,7 @@ use hash_db::Hasher; use heapsize::HeapSizeOf; use trie::trie_root; use backend::InMemory; -use changes_trie::{compute_changes_trie_root, InMemoryStorage as ChangesTrieInMemoryStorage}; +use changes_trie::{compute_changes_trie_root, InMemoryStorage as ChangesTrieInMemoryStorage, AnchorBlockId}; use primitives::storage::well_known_keys::CHANGES_TRIE_CONFIG; use super::{Externalities, OverlayedChanges}; @@ -136,12 +136,12 @@ impl Externalities for TestExternalities where H::Out: Ord + He None } - fn storage_changes_root(&mut self, block: u64) -> Option { + fn storage_changes_root(&mut self, parent: H::Out, parent_num: u64) -> Option { compute_changes_trie_root::<_, _, H>( &InMemory::default(), Some(&self.changes_trie_storage), &self.changes, - block, + &AnchorBlockId { hash: parent, number: parent_num }, ).map(|(root, _)| root.clone()) } } diff --git a/core/test-runtime/src/system.rs b/core/test-runtime/src/system.rs index a3041647d4..3703fb553e 100644 --- a/core/test-runtime/src/system.rs +++ b/core/test-runtime/src/system.rs @@ -93,7 +93,7 @@ pub fn execute_block(block: Block) { // check digest let mut digest = Digest::default(); - if let Some(storage_changes_root) = storage_changes_root(header.number) { + if let Some(storage_changes_root) = storage_changes_root(header.parent_hash.into(), header.number - 1) { digest.push(generic::DigestItem::ChangesTrieRoot::(storage_changes_root.into())); } assert!(digest == header.digest, "Header digest items must match that calculated."); @@ -160,7 +160,7 @@ pub fn finalise_block() -> Header { let number = ::take(); let parent_hash = ::take(); let storage_root = BlakeTwo256::storage_root(); - let storage_changes_root = BlakeTwo256::storage_changes_root(number); + let storage_changes_root = BlakeTwo256::storage_changes_root(parent_hash, number - 1); let mut digest = Digest::default(); if let Some(storage_changes_root) = storage_changes_root { diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index bbac245c7b46250a9c9f4b73e8827bcfb1fc4616..c526eacd1f6de9e9567014c2f14dd520dcceb777 100644 GIT binary patch literal 222890 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 B@h|`Y delta 8133 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

j<<8q%516+NcdGJDi`+GctT@}Cc#7qe2p|rO zr7!-wows@P)|CKdv2uYB$zBIQGDyZjqw@`TK(`&Zi$%=Y4FZ6qH9;i84i; z(zT#@YllD#R4oz;x=Jl&6BUAX{(gS<;o0?;9XN_f6W#Vf3ABMI&10tzd)c%v%^7I0 zHN!K{yFAIv}4LgGFBU@z^1Uf$ff=YI3H^TO;ZYLKr9z{;4ACaJiE4gi4#F0rEFHo@F{ zd2)g3`86_Yx~~?rmK=^&S{ctRXsZ5+Y3>TJ81DtZ1@!k9wAQ>z{KME`8%+C@ZfQkj zD&NWJ_VExIYq=x<4)ZFKRf1rXg90b+?z`G4;pPl zn|sqn+m`;!+`%D%zw_`({^4W(vC+bHj6eTacxp<|s6)LQ`t;##gT}BiG(4c=!Qier zROQV_r}N~a*YO39)$qNKge%%^8!`rm+BWDTJoVU3EfX5nS`ESn7}z!epDyAD(SJ7T zC5F@Bss`U*0Z$W`7=9gf`5W-Rx(J^iAMlUGhLT3ML2_^?WB^Gse=cg~zo4-gzE1+b z8t@DJNMkPnKOb;AAPxt@(||6(7XUHzLVpnqQ-9&>M!CBb`VjGqGeM7%d!MAzeKw5l*I~z$N0Dj2;UHJVS*auaKq} zYFA2&lxQ#$h=x+BP%L63lSZ^p=i)Z6tq=RgAz_B;?Ybro(zSJXe1UW46Kr7DydA` zi0DQ#mI}nP(MY^-VwE)A6N<#bdOVa4CF7ZNRxiCKisQ!bUh{gaQTUYDra$OfnO~+o zhl55i8;wWxbS4^(#AkLE{$-6cxo~WaG^x#eaD=dWA{tMGpx|sUl#1)I7VijN6*D^C zB!}@(IHaeC!CGsL~nVhw);K@kS3P;mYMS-oA7BptVK`1RA z2^pz)CZ37SzU(dY%EGyI(&5HLDi{gqNj;iK>sYGjoJ(Ig=PtXzZOf!YR8J)Wm^Kp4 zhU1Y$TdeSJtEI*!2#`r7jej@U4-qh;A_Yj6of5#qI64STDxy?Zf&eJd+Og4CsBm zY0Ml724k@d=tZDkBb1I5K3px$niMk9nLq#>1!1bGP&nFEn7>-`7ozJWWo9ao4JY+v zD3;8o$!TKW^lBUb*^5d>`W`Ekr=-b#a)W3zkO{_u!ED%wB`$r^O}?n5aA`h0YQ*B< zKq#Ax!J8t6-ahfAx8udCjC7Jsi^js4WGWGdUB?ocL}1>82jKaIf4&{YoQQ-X*-SJL zfc->5p#_DdSt&L-q-QcAJqbLNoJvI&4)!!Hy|tiZVNriEq-$G(iEzY7#AE45ESrFR Wc9v~1w&2NKBbXkztILF22L2cNFF(2f diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index fe491c7cfd..704f2d342f 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -734,7 +734,7 @@ mod tests { let mut t = new_test_ext(true); Executor::new().call(&mut t, 8, COMPACT_CODE, "execute_block", &block1(true).0, true).0.unwrap(); - assert!(t.storage_changes_root(1).is_some()); + assert!(t.storage_changes_root(Default::default(), 0).is_some()); } #[test] @@ -742,6 +742,6 @@ mod tests { let mut t = new_test_ext(true); WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "execute_block", &block1(true).0).unwrap(); - assert!(t.storage_changes_root(1).is_some()); + assert!(t.storage_changes_root(Default::default(), 0).is_some()); } } diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index aee72d47e77ac5d8faa87bf7d6c34129b68b6c47..aafdeedceb1d923b7286b845a5eb33e75a0b0ae7 100644 GIT binary patch delta 293625 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.>3?&X_gv`o2j490^hWq&zY@q5ZCf^)Ec-voiRs^ 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 QF|rw>{iOVjG+HL|UrP*}c>n+a diff --git a/srml/system/src/lib.rs b/srml/system/src/lib.rs index eccd99a98c..c3cffda04f 100644 --- a/srml/system/src/lib.rs +++ b/srml/system/src/lib.rs @@ -284,7 +284,7 @@ impl Module { let mut digest = >::take(); let extrinsics_root = >::take(); let storage_root = T::Hashing::storage_root(); - let storage_changes_root = T::Hashing::storage_changes_root(number.as_()); + let storage_changes_root = T::Hashing::storage_changes_root(parent_hash, number.as_() - 1); // we can't compute changes trie root earlier && put it to the Digest // because it will include all currently existing temporaries -- GitLab From 0cc0a79382156ec7982c12f8eb510de6134f86e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Tue, 13 Nov 2018 13:33:28 +0100 Subject: [PATCH 042/243] Implement runtime api client side directly in the runtime (#1094) * Move `initialise_block` into `Core` trait as it is crucial calling the API functions * Switch to first version of new runtime API implementation * Fixes bug in tests * Reenable asserts * Directly use the `TestAPI` in the tests * Start improving the api traits :100644 100644 898aadc7 49217199 M Cargo.lock :100644 100644 61570436 465ed664 M core/client/src/backend.rs :100644 100644 5d0c886b 64d710fd M core/client/src/block_builder.rs :100644 100644 c447855e 5ecbe474 M core/client/src/client.rs :100644 100644 139cef13 f90dbf3d M core/client/src/error.rs :100644 100644 2800c503 3298e66a M core/client/src/runtime_api.rs :100644 100644 affa1c5c 809b08bc M core/primitives/src/lib.rs :100644 100644 2877dfa9 d5547413 M core/sr-api/Cargo.toml :100644 100644 9a49784d 6a625a03 M core/sr-api/src/lib.rs :100644 100644 7c28e1c7 a1a444a9 M core/sr-primitives/src/traits.rs :100644 100644 2e113ab6 dcc01a6d M srml/metadata/Cargo.toml :100644 100644 ea722a70 0809531a M srml/metadata/src/lib.rs * Refactoring * Move `sr-api` into client and more refactoring * Fixes tests * Some documentation and cleanup * Fixes compilation after rebase * More refactoring and more documentation * Makes `substrate-client` compilable on `wasm` On `wasm` it basically just exports the runtime api stuff. * Fixes grumbles * Updates wasm files after rebasing the master * Remove TODO comment * Remove whitespaces * Fixes after rebasing master * Another rebase, another fix commit --- Cargo.lock | 20 +- Cargo.toml | 1 - core/cli/src/informant.rs | 6 +- core/client/Cargo.toml | 68 +- core/client/db/src/lib.rs | 12 +- core/client/src/backend.rs | 7 +- core/client/src/block_builder/api.rs | 40 + .../src/{ => block_builder}/block_builder.rs | 82 +- core/client/src/block_builder/mod.rs | 23 + core/client/src/blockchain.rs | 16 + core/client/src/client.rs | 434 +++++----- core/client/src/lib.rs | 71 +- core/client/src/light/mod.rs | 4 +- core/client/src/runtime_api/core.rs | 62 ++ .../src/runtime_api/macros.rs} | 148 +--- core/client/src/runtime_api/mod.rs | 99 +++ core/client/src/runtime_api/traits.rs | 35 + core/consensus/aura/src/lib.rs | 19 +- core/finality-grandpa/src/lib.rs | 22 +- core/network/src/chain.rs | 25 +- core/network/src/import_queue.rs | 2 +- core/network/src/test/mod.rs | 9 +- core/primitives/src/lib.rs | 23 + core/rpc/src/author/mod.rs | 15 +- core/rpc/src/chain/mod.rs | 14 +- core/rpc/src/state/mod.rs | 19 +- core/service/src/components.rs | 208 ++++- core/service/src/consensus.rs | 47 +- core/service/src/lib.rs | 99 +-- core/service/test/src/lib.rs | 10 +- core/sr-api/Cargo.toml | 19 - core/sr-primitives/src/traits.rs | 36 +- core/test-client/Cargo.toml | 2 +- core/test-client/src/block_builder_ext.rs | 11 +- core/test-client/src/client_ext.rs | 4 +- core/test-client/src/lib.rs | 7 +- core/test-runtime/Cargo.toml | 4 +- core/test-runtime/src/lib.rs | 184 +++- core/test-runtime/wasm/Cargo.lock | 788 +++++++++++++++++- core/test-runtime/wasm/Cargo.toml | 4 +- .../substrate_test_runtime.compact.wasm | Bin 222890 -> 45154 bytes core/transaction-pool/src/api.rs | 23 +- node/cli/src/lib.rs | 7 +- node/cli/src/service.rs | 28 +- node/runtime/Cargo.toml | 6 +- node/runtime/src/lib.rs | 191 ++++- node/runtime/wasm/Cargo.lock | 779 ++++++++++++++++- node/runtime/wasm/Cargo.toml | 6 +- .../release/node_runtime.compact.wasm | Bin 828029 -> 618357 bytes srml/metadata/Cargo.toml | 4 + srml/metadata/src/lib.rs | 21 +- 51 files changed, 2990 insertions(+), 774 deletions(-) create mode 100644 core/client/src/block_builder/api.rs rename core/client/src/{ => block_builder}/block_builder.rs (59%) create mode 100644 core/client/src/block_builder/mod.rs create mode 100644 core/client/src/runtime_api/core.rs rename core/{sr-api/src/lib.rs => client/src/runtime_api/macros.rs} (79%) create mode 100644 core/client/src/runtime_api/mod.rs create mode 100644 core/client/src/runtime_api/traits.rs delete mode 100644 core/sr-api/Cargo.toml diff --git a/Cargo.lock b/Cargo.lock index c52e994004..371aa40d65 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1786,7 +1786,6 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", @@ -1803,6 +1802,7 @@ dependencies = [ "srml-timestamp 0.1.0", "srml-treasury 0.1.0", "srml-upgrade-key 0.1.0", + "substrate-client 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", ] @@ -2566,16 +2566,6 @@ dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "sr-api" -version = "0.1.0" -dependencies = [ - "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "sr-version 0.1.0", -] - [[package]] name = "sr-io" version = "0.1.0" @@ -2789,6 +2779,8 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -3060,8 +3052,9 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 0.1.0", "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", "substrate-consensus-common 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", @@ -3455,6 +3448,7 @@ dependencies = [ "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", + "substrate-state-machine 0.1.0", "substrate-test-runtime 0.1.0", ] @@ -3468,12 +3462,12 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 0.1.0", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", "srml-support 0.1.0", + "substrate-client 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", ] diff --git a/Cargo.toml b/Cargo.toml index 0396030022..e38e3c3e23 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,6 @@ members = [ "core/primitives", "core/rpc", "core/rpc-servers", - "core/sr-api", "core/sr-io", "core/sr-sandbox", "core/sr-std", diff --git a/core/cli/src/informant.rs b/core/cli/src/informant.rs index 85d82132b4..5912da8126 100644 --- a/core/cli/src/informant.rs +++ b/core/cli/src/informant.rs @@ -30,9 +30,8 @@ use runtime_primitives::traits::{Header, As}; const TIMER_INTERVAL_MS: u64 = 5000; /// Spawn informant on the event loop -pub fn start(service: &Service, exit: ::exit_future::Exit, handle: TaskExecutor) - where - C: Components, +pub fn start(service: &Service, exit: ::exit_future::Exit, handle: TaskExecutor) where + C: Components, { let interval = Interval::new(Instant::now(), Duration::from_millis(TIMER_INTERVAL_MS)); @@ -121,4 +120,3 @@ fn speed(best_number: u64, last_number: Option) -> String { format!(" {:4.1} bps", speed / 10.0) } } - diff --git a/core/client/Cargo.toml b/core/client/Cargo.toml index 5eeb75940d..1ecf284dc1 100644 --- a/core/client/Cargo.toml +++ b/core/client/Cargo.toml @@ -4,27 +4,55 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -error-chain = "0.12" -fnv = "1.0" -log = "0.4" -parking_lot = "0.4" -hex-literal = "0.1" -futures = "0.1.17" -slog = "^2" -heapsize = "0.4" -substrate-consensus-common = { path = "../consensus/common" } -parity-codec = "2.1" -substrate-executor = { path = "../executor" } -substrate-primitives = { path = "../primitives" } -sr-primitives = { path = "../sr-primitives" } -sr-api = { path = "../sr-api" } -substrate-state-machine = { path = "../state-machine" } -substrate-keyring = { path = "../keyring" } -substrate-trie = { path = "../trie" } -substrate-telemetry = { path = "../telemetry" } -hash-db = { git = "https://github.com/paritytech/trie" } -kvdb = "0.1" +error-chain = { version = "0.12", optional = true } +fnv = { version = "1.0", optional = true } +log = { version = "0.4", optional = true } +parking_lot = { version = "0.4", optional = true } +hex-literal = { version = "0.1", optional = true } +futures = { version = "0.1.17", optional = true } +slog = { version = "^2", optional = true } +heapsize = { version = "0.4", optional = true } +substrate-consensus-common = { path = "../consensus/common", optional = true } +substrate-executor = { path = "../executor", optional = true } +substrate-state-machine = { path = "../state-machine", optional = true } +substrate-keyring = { path = "../keyring", optional = true } +substrate-trie = { path = "../trie", optional = true } +substrate-telemetry = { path = "../telemetry", optional = true } +hash-db = { git = "https://github.com/paritytech/trie", optional = true } +kvdb = { version = "0.1", optional = true } + +parity-codec = { version = "2.1", default-features = false } +substrate-primitives = { path = "../primitives", default-features = false } +sr-primitives = { path = "../sr-primitives", default-features = false } +sr-version = { path = "../sr-version", default-features = false } +sr-std = { path = "../sr-std", default-features = false } [dev-dependencies] substrate-test-client = { path = "../test-client" } kvdb-memorydb = "0.1" + +[features] +default = ["std"] +std = [ + "parity-codec/std", + "substrate-consensus-common", + "substrate-primitives/std", + "parking_lot", + "error-chain", + "fnv", + "log", + "hex-literal", + "futures", + "slog", + "heapsize", + "substrate-executor", + "sr-primitives/std", + "sr-version/std", + "sr-std/std", + "substrate-state-machine", + "substrate-keyring", + "substrate-trie", + "substrate-telemetry", + "hash-db", + "kvdb" +] diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index 93a5352fd7..f485841fd8 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -94,17 +94,17 @@ pub struct DatabaseSettings { } /// Create an instance of db-backed client. -pub fn new_client( +pub fn new_client( settings: DatabaseSettings, executor: E, genesis_storage: S, block_execution_strategy: ExecutionStrategy, api_execution_strategy: ExecutionStrategy, -) -> Result, client::LocalCallExecutor, E>, Block>, client::error::Error> -where - Block: BlockT, - E: CodeExecutor + RuntimeInfo, - S: BuildStorage, +) -> Result, client::LocalCallExecutor, E>, Block, RA>, client::error::Error> + where + Block: BlockT, + E: CodeExecutor + RuntimeInfo, + S: BuildStorage, { let backend = Arc::new(Backend::new(settings, CANONICALIZATION_DELAY)?); let executor = client::LocalCallExecutor::new(backend.clone(), executor); diff --git a/core/client/src/backend.rs b/core/client/src/backend.rs index e613c15534..b953c9aedf 100644 --- a/core/client/src/backend.rs +++ b/core/client/src/backend.rs @@ -47,8 +47,7 @@ impl NewBlockState { } /// Block insertion operation. Keeps hold if the inserted block state and data. -pub trait BlockImportOperation -where +pub trait BlockImportOperation where Block: BlockT, H: Hasher, { @@ -85,11 +84,9 @@ where /// /// The same applies for live `BlockImportOperation`s: while an import operation building on a parent `P` /// is alive, the state for `P` should not be pruned. -pub trait Backend: Send + Sync -where +pub trait Backend: Send + Sync where Block: BlockT, H: Hasher, - { /// Associated block insertion operation type. type BlockImportOperation: BlockImportOperation; diff --git a/core/client/src/block_builder/api.rs b/core/client/src/block_builder/api.rs new file mode 100644 index 0000000000..a5cbe7e554 --- /dev/null +++ b/core/client/src/block_builder/api.rs @@ -0,0 +1,40 @@ +// Copyright 2018 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 . + +//! The runtime api for building blocks. + +use runtime_primitives::{traits::Block as BlockT, ApplyResult}; +use rstd::vec::Vec; + +decl_runtime_apis! { + /// The `BlockBuilder` api trait that provides required functions for building a block for a runtime. + pub trait BlockBuilder { + /// The runtime api for building blocks./// Apply the given extrinsics. + fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult; + /// Finish the current block. + fn finalise_block() -> ::Header; + /// Generate inherent extrinsics. + fn inherent_extrinsics( + inherent: InherentExtrinsic + ) -> Vec; + /// Check that the inherents are valid. + fn check_inherents( + block: Block, data: InherentData + ) -> Result<(), Error>; + /// Generate a random seed. + fn random_seed() -> ::Hash; + } +} diff --git a/core/client/src/block_builder.rs b/core/client/src/block_builder/block_builder.rs similarity index 59% rename from core/client/src/block_builder.rs rename to core/client/src/block_builder/block_builder.rs index d7365750a2..7d5b867e3a 100644 --- a/core/client/src/block_builder.rs +++ b/core/client/src/block_builder/block_builder.rs @@ -14,60 +14,48 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! Utility struct to build a block. - +use super::api::BlockBuilder as BlockBuilderApi; use std::vec::Vec; -use std::marker::PhantomData; use codec::Encode; -use state_machine; -use runtime_primitives::traits::{Header as HeaderT, Hash, Block as BlockT, One, HashFor}; +use blockchain::HeaderBackend; +use runtime_primitives::traits::{ + Header as HeaderT, Hash, Block as BlockT, One, HashFor, ProvideRuntimeApi, ApiRef +}; +use primitives::H256; use runtime_primitives::generic::BlockId; -use runtime_api::BlockBuilder as BlockBuilderAPI; -use {backend, error, Client, CallExecutor}; +use runtime_api::Core; +use error; use runtime_primitives::ApplyOutcome; -use primitives::{Blake2Hasher, H256}; -use hash_db::Hasher; /// Utility for building new (valid) blocks from a stream of extrinsics. -pub struct BlockBuilder<'a, B, E, Block, H> -where - B: backend::Backend + 'a, - E: CallExecutor + Clone + 'a, - Block: BlockT, - H: Hasher, - H::Out: Ord, - -{ +pub struct BlockBuilder<'a, Block, A: ProvideRuntimeApi> where Block: BlockT { header: ::Header, extrinsics: Vec<::Extrinsic>, - client: &'a Client, + api: ApiRef<'a, A::Api>, block_id: BlockId, - changes: state_machine::OverlayedChanges, - _marker: PhantomData, } -impl<'a, B, E, Block> BlockBuilder<'a, B, E, Block, Blake2Hasher> +impl<'a, Block, A> BlockBuilder<'a, Block, A> where - B: backend::Backend + 'a, - E: CallExecutor + Clone + 'a, Block: BlockT, + A: ProvideRuntimeApi + HeaderBackend + 'a, + A::Api: BlockBuilderApi, { /// Create a new instance of builder from the given client, building on the latest block. - pub fn new(client: &'a Client) -> error::Result { - client.info().and_then(|i| Self::at_block(&BlockId::Hash(i.chain.best_hash), client)) + pub fn new(api: &'a A) -> error::Result { + api.info().and_then(|i| Self::at_block(&BlockId::Hash(i.best_hash), api)) } /// Create a new instance of builder from the given client using a particular block's ID to /// build upon. - pub fn at_block(block_id: &BlockId, client: &'a Client) -> error::Result { - let number = client.block_number_from_id(block_id)? + pub fn at_block(block_id: &BlockId, api: &'a A) -> error::Result { + let number = api.block_number_from_id(block_id)? .ok_or_else(|| error::ErrorKind::UnknownBlock(format!("{}", block_id)))? + One::one(); - let parent_hash = client.block_hash_from_id(block_id)? + let parent_hash = api.block_hash_from_id(block_id)? .ok_or_else(|| error::ErrorKind::UnknownBlock(format!("{}", block_id)))?; - let mut changes = Default::default(); let header = <::Header as HeaderT>::new( number, Default::default(), @@ -76,16 +64,14 @@ where Default::default() ); - client.initialise_block(block_id, &mut changes, &header)?; - changes.commit_prospective(); + let api = api.runtime_api(); + api.initialise_block(block_id, &header)?; Ok(BlockBuilder { header, extrinsics: Vec::new(), - client, + api, block_id: *block_id, - changes, - _marker: Default::default(), }) } @@ -93,30 +79,32 @@ where /// can be validly executed (by executing it); if it is invalid, it'll be returned along with /// the error. Otherwise, it will return a mutable reference to self (in order to chain). pub fn push(&mut self, xt: ::Extrinsic) -> error::Result<()> { - match self.client.apply_extrinsic(&self.block_id, &mut self.changes, &xt) { - Ok(result) => { - match result { + fn impl_push<'a, T, Block: BlockT>( + api: &mut ApiRef<'a, T>, + block_id: &BlockId, + xt: Block::Extrinsic, + extrinsics: &mut Vec + ) -> error::Result<()> where T: BlockBuilderApi { + api.map_api_result(|api| { + match api.apply_extrinsic(block_id, &xt)? { Ok(ApplyOutcome::Success) | Ok(ApplyOutcome::Fail) => { - self.extrinsics.push(xt); - self.changes.commit_prospective(); + extrinsics.push(xt); Ok(()) } Err(e) => { - self.changes.discard_prospective(); Err(error::ErrorKind::ApplyExtrinsicFailed(e).into()) } } - } - Err(e) => { - self.changes.discard_prospective(); - Err(e) - } + }) } + + //FIXME: Please NLL, help me! + impl_push(&mut self.api, &self.block_id, xt, &mut self.extrinsics) } /// Consume the builder to return a valid `Block` containing all pushed extrinsics. pub fn bake(mut self) -> error::Result { - self.header = self.client.finalise_block(&self.block_id, &mut self.changes)?; + self.header = self.api.finalise_block(&self.block_id)?; debug_assert_eq!( self.header.extrinsics_root().clone(), diff --git a/core/client/src/block_builder/mod.rs b/core/client/src/block_builder/mod.rs new file mode 100644 index 0000000000..f22f599ffd --- /dev/null +++ b/core/client/src/block_builder/mod.rs @@ -0,0 +1,23 @@ +// Copyright 2018 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 . + +//! Utility struct to build a block. + +#[cfg(feature = "std")] +mod block_builder; +#[cfg(feature = "std")] +pub use self::block_builder::*; +pub mod api; diff --git a/core/client/src/blockchain.rs b/core/client/src/blockchain.rs index a2896ab7f3..8c46e5ebe2 100644 --- a/core/client/src/blockchain.rs +++ b/core/client/src/blockchain.rs @@ -40,6 +40,22 @@ pub trait HeaderBackend: Send + Sync { fn expect_header(&self, id: BlockId) -> Result { self.header(id)?.ok_or_else(|| ErrorKind::UnknownBlock(format!("{}", id)).into()) } + + /// Convert an arbitrary block ID into a block hash. + fn block_hash_from_id(&self, id: &BlockId) -> Result> { + match *id { + BlockId::Hash(h) => Ok(Some(h)), + BlockId::Number(n) => self.hash(n), + } + } + + /// Convert an arbitrary block ID into a block hash. + fn block_number_from_id(&self, id: &BlockId) -> Result>> { + match *id { + BlockId::Hash(_) => Ok(self.header(*id)?.map(|h| h.number().clone())), + BlockId::Number(n) => Ok(Some(n)), + } + } } /// Blockchain database backend. Does not perform any validation. diff --git a/core/client/src/client.rs b/core/client/src/client.rs index f1d1549185..c008f0d157 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -16,8 +16,8 @@ //! Substrate Client -use std::sync::Arc; -use error::{Error, ErrorKind}; +use std::{marker::PhantomData, sync::Arc}; +use error::Error; use futures::sync::mpsc; use parking_lot::{Mutex, RwLock}; use primitives::AuthorityId; @@ -27,25 +27,29 @@ use runtime_primitives::{ transaction_validity::{TransactionValidity, TransactionTag}, }; use consensus::{ImportBlock, ImportResult, BlockOrigin}; -use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, Zero, As, NumberFor, CurrentHeight, BlockNumberToHash}; -use runtime_primitives::{ApplyResult, BuildStorage}; -use runtime_api as api; +use runtime_primitives::traits::{ + Block as BlockT, Header as HeaderT, Zero, As, NumberFor, CurrentHeight, BlockNumberToHash, + ApiRef, ProvideRuntimeApi +}; +use runtime_primitives::BuildStorage; +use runtime_api::{Core as CoreAPI, CallApiAt, TaggedTransactionQueue, ConstructRuntimeApi}; use primitives::{Blake2Hasher, H256, ChangesTrieConfiguration, convert_hash}; use primitives::storage::{StorageKey, StorageData}; use primitives::storage::well_known_keys; -use codec::{Encode, Decode}; +use codec::Decode; use state_machine::{ - Backend as StateBackend, CodeExecutor, - ExecutionStrategy, ExecutionManager, ChangesTrieAnchorBlockId, - prove_read, key_changes, key_changes_proof, OverlayedChanges + Backend as StateBackend, CodeExecutor, ChangesTrieAnchorBlockId, + ExecutionStrategy, ExecutionManager, prove_read, + key_changes, key_changes_proof, OverlayedChanges }; +use codec::Encode; use backend::{self, BlockImportOperation}; use blockchain::{self, Info as ChainInfo, Backend as ChainBackend, HeaderBackend as ChainHeaderBackend}; use call_executor::{CallExecutor, LocalCallExecutor}; use executor::{RuntimeVersion, RuntimeInfo}; use notifications::{StorageNotifications, StorageEventStream}; -use {cht, error, in_mem, block_builder, genesis, consensus}; +use {cht, error, in_mem, block_builder::{self, api::BlockBuilder as BlockBuilderAPI}, genesis, consensus}; /// Type that implements `futures::Stream` of block import events. pub type ImportNotifications = mpsc::UnboundedReceiver>; @@ -54,7 +58,7 @@ pub type ImportNotifications = mpsc::UnboundedReceiver = mpsc::UnboundedReceiver>; /// Substrate Client -pub struct Client where Block: BlockT { +pub struct Client where Block: BlockT { backend: Arc, executor: E, storage_notifications: Mutex>, @@ -65,6 +69,7 @@ pub struct Client where Block: BlockT { block_execution_strategy: ExecutionStrategy, api_execution_strategy: ExecutionStrategy, changes_trie_config: Option, + _phantom: PhantomData, } /// A source of blockchain events. @@ -180,36 +185,36 @@ impl PrePostHeader { } /// Create an instance of in-memory client. -pub fn new_in_mem( +pub fn new_in_mem( executor: E, genesis_storage: S, -) -> error::Result, LocalCallExecutor, E>, Block>> -where - E: CodeExecutor + RuntimeInfo, - S: BuildStorage, - Block: BlockT, +) -> error::Result, LocalCallExecutor, E>, Block, RA>> + where + E: CodeExecutor + RuntimeInfo, + S: BuildStorage, + Block: BlockT, { new_with_backend(Arc::new(in_mem::Backend::new()), executor, genesis_storage) } /// Create a client with the explicitely provided backend. /// This is useful for testing backend implementations. -pub fn new_with_backend( +pub fn new_with_backend( backend: Arc, executor: E, build_genesis_storage: S, -) -> error::Result, Block>> -where - E: CodeExecutor + RuntimeInfo, - S: BuildStorage, - Block: BlockT, - B: backend::LocalBackend +) -> error::Result, Block, RA>> + where + E: CodeExecutor + RuntimeInfo, + S: BuildStorage, + Block: BlockT, + B: backend::LocalBackend { let call_executor = LocalCallExecutor::new(backend.clone(), executor); Client::new(backend, call_executor, build_genesis_storage, ExecutionStrategy::NativeWhenPossible, ExecutionStrategy::NativeWhenPossible) } -impl Client where +impl Client where B: backend::Backend, E: CallExecutor, Block: BlockT, @@ -255,6 +260,7 @@ impl Client where block_execution_strategy, api_execution_strategy, changes_trie_config, + _phantom: Default::default(), }) } @@ -323,6 +329,36 @@ impl Client where self.header_proof_with_cht_size(id, cht::SIZE) } + pub(crate) fn call_at_state( + &self, + at: &BlockId, + function: &'static str, + args: Vec, + changes: &mut OverlayedChanges + ) -> error::Result> { + let state = self.state_at(at)?; + + let execution_manager = || match self.api_execution_strategy { + ExecutionStrategy::NativeWhenPossible => ExecutionManager::NativeWhenPossible, + ExecutionStrategy::AlwaysWasm => ExecutionManager::AlwaysWasm, + ExecutionStrategy::Both => ExecutionManager::Both(|wasm_result, native_result| { + warn!("Consensus error between wasm and native runtime execution at block {:?}", at); + warn!(" Function {:?}", function); + warn!(" Native result {:?}", native_result); + warn!(" Wasm result {:?}", wasm_result); + wasm_result + }), + }; + + self.executor.call_at_state(&state, changes, function, &args, execution_manager()) + .map(|res| res.0) + } + + /// Get block hash by number. + pub fn block_hash(&self, block_number: <::Header as HeaderT>::Number) -> error::Result> { + self.backend.blockchain().hash(block_number) + } + /// Reads given header and generates CHT-based header proof for CHT of given size. pub fn header_proof_with_cht_size(&self, id: &BlockId, cht_size: u64) -> error::Result<(Block::Header, Vec>)> { let proof_error = || error::ErrorKind::Backend(format!("Failed to generate header proof for {:?}", id)); @@ -402,88 +438,41 @@ impl Client where } /// Create a new block, built on the head of the chain. - pub fn new_block(&self) -> error::Result> - where E: Clone + pub fn new_block( + &self + ) -> error::Result> where + E: Clone + Send + Sync, + RA: BlockBuilderAPI { block_builder::BlockBuilder::new(self) } /// Create a new block, built on top of `parent`. - pub fn new_block_at(&self, parent: &BlockId) -> error::Result> - where E: Clone + pub fn new_block_at( + &self, parent: &BlockId + ) -> error::Result> where + E: Clone + Send + Sync, + RA: BlockBuilderAPI { block_builder::BlockBuilder::at_block(parent, &self) } - /// Set up the native execution environment to call into a native runtime code. - pub fn call_api(&self, function: &'static str, args: &A) -> error::Result - where A: Encode, R: Decode - { - self.call_api_at(&BlockId::Number(self.info()?.chain.best_number), function, args) - } - - /// Call a runtime function at given block. - pub fn call_api_at(&self, at: &BlockId, function: &'static str, args: &A) -> error::Result - where A: Encode, R: Decode - { - let parent = at; - let header = <::Header as HeaderT>::new( - self.block_number_from_id(&parent)? - .ok_or_else(|| error::ErrorKind::UnknownBlock(format!("{:?}", parent)))? + As::sa(1), - Default::default(), - Default::default(), - self.block_hash_from_id(&parent)? - .ok_or_else(|| error::ErrorKind::UnknownBlock(format!("{:?}", parent)))?, - Default::default() - ); - let mut overlay = Default::default(); - - self.call_at_state(at, "initialise_block", &header, &mut overlay)?; - self.call_at_state(at, function, args, &mut overlay) - } - - fn call_at_state( - &self, - at: &BlockId, - function: &'static str, - args: &A, - changes: &mut OverlayedChanges - ) -> error::Result { - let state = self.state_at(at)?; - - let execution_manager = || match self.api_execution_strategy { - ExecutionStrategy::NativeWhenPossible => ExecutionManager::NativeWhenPossible, - ExecutionStrategy::AlwaysWasm => ExecutionManager::AlwaysWasm, - ExecutionStrategy::Both => ExecutionManager::Both(|wasm_result, native_result| { - warn!("Consensus error between wasm and native runtime execution at block {:?}", at); - warn!(" Function {:?}", function); - warn!(" Native result {:?}", native_result); - warn!(" Wasm result {:?}", wasm_result); - wasm_result - }), - }; - - self.executor.call_at_state( - &state, - changes, - function, - &args.encode(), - execution_manager() - ).and_then(|res| - R::decode(&mut &res.0[..]) - .ok_or_else(|| Error::from(ErrorKind::CallResultDecode(function))) - ) - } - // TODO [ToDr] Optimize and re-use tags from the pool. - fn transaction_tags(&self, at: Block::Hash, body: &Option>) -> error::Result> { + fn transaction_tags( + &self, + at: Block::Hash, + body: &Option> + ) -> error::Result> where + RA: TaggedTransactionQueue, + E: CallExecutor + Send + Sync + Clone, + { let id = BlockId::Hash(at); Ok(match body { None => vec![], Some(ref extrinsics) => { let mut tags = vec![]; for tx in extrinsics { - let tx = api::TaggedTransactionQueue::validate_transaction(self, &id, &tx)?; + let tx = self.runtime_api().validate_transaction(&id, &tx)?; match tx { TransactionValidity::Valid { mut provides, .. } => { tags.append(&mut provides); @@ -508,7 +497,10 @@ impl Client where body: Option>, authorities: Option>, finalized: bool, - ) -> error::Result { + ) -> error::Result where + RA: TaggedTransactionQueue, + E: CallExecutor + Send + Sync + Clone, + { let parent_hash = import_headers.post().parent_hash().clone(); match self.backend.blockchain().status(BlockId::Hash(hash))? { blockchain::BlockStatus::InChain => return Ok(ImportResult::AlreadyInChain), @@ -737,30 +729,9 @@ impl Client where } } - /// Get block hash by number. - pub fn block_hash(&self, block_number: <::Header as HeaderT>::Number) -> error::Result> { - self.backend.blockchain().hash(block_number) - } - - /// Convert an arbitrary block ID into a block hash. - pub fn block_hash_from_id(&self, id: &BlockId) -> error::Result> { - match *id { - BlockId::Hash(h) => Ok(Some(h)), - BlockId::Number(n) => self.block_hash(n), - } - } - - /// Convert an arbitrary block ID into a block hash. - pub fn block_number_from_id(&self, id: &BlockId) -> error::Result>> { - match *id { - BlockId::Hash(_) => Ok(self.header(id)?.map(|h| h.number().clone())), - BlockId::Number(n) => Ok(Some(n)), - } - } - /// Convert an arbitrary block ID into a block hash, returning error if the block is unknown. fn require_block_number_from_id(&self, id: &BlockId) -> error::Result> { - self.block_number_from_id(id) + self.backend.blockchain().block_number_from_id(id) .and_then(|n| n.ok_or_else(|| error::ErrorKind::UnknownBlock(format!("{}", id)).into())) } @@ -896,11 +867,87 @@ impl Client where } } +impl ChainHeaderBackend for Client where + B: backend::Backend, + E: CallExecutor + Send + Sync, + Block: BlockT, + RA: Send + Sync +{ + fn header(&self, id: BlockId) -> error::Result> { + self.backend.blockchain().header(id) + } + + fn info(&self) -> error::Result> { + self.backend.blockchain().info() + } + + fn status(&self, id: BlockId) -> error::Result { + self.backend.blockchain().status(id) + } + + fn number(&self, hash: Block::Hash) -> error::Result::Header as HeaderT>::Number>> { + self.backend.blockchain().number(hash) + } -impl consensus::BlockImport for Client where + fn hash(&self, number: NumberFor) -> error::Result> { + self.backend.blockchain().hash(number) + } +} + +impl ProvideRuntimeApi for Client where B: backend::Backend, - E: CallExecutor + Clone, + E: CallExecutor + Clone + Send + Sync, Block: BlockT, + RA: CoreAPI +{ + type Api = RA; + + fn runtime_api<'a>(&'a self) -> ApiRef<'a, Self::Api> { + Self::Api::construct_runtime_api(self) + } +} + +impl CallApiAt for Client where + B: backend::Backend, + E: CallExecutor + Clone + Send + Sync, + Block: BlockT, + RA: CoreAPI +{ + fn call_api_at( + &self, + at: &BlockId, + function: &'static str, + args: Vec, + changes: &mut OverlayedChanges, + initialised_block: &mut Option>, + ) -> error::Result> { + //TODO: Find a better way to prevent double block initialization + if function != "initialise_block" && initialised_block.map(|id| id != *at).unwrap_or(true) { + let parent = at; + let header = <::Header as HeaderT>::new( + self.block_number_from_id(parent)? + .ok_or_else(|| error::ErrorKind::UnknownBlock(format!("{:?}", parent)))? + + As::sa(1), + Default::default(), + Default::default(), + self.block_hash_from_id(&parent)? + .ok_or_else(|| error::ErrorKind::UnknownBlock(format!("{:?}", parent)))?, + Default::default() + ); + self.call_at_state(at, "initialise_block", header.encode(), changes)?; + *initialised_block = Some(*at); + } + + self.call_at_state(at, function, args, changes) + } +} + + +impl consensus::BlockImport for Client where + B: backend::Backend, + E: CallExecutor + Clone + Send + Sync, + Block: BlockT, + RA: TaggedTransactionQueue { type Error = Error; @@ -963,7 +1010,7 @@ impl consensus::BlockImport for Client where } } -impl consensus::Authorities for Client where +impl consensus::Authorities for Client where B: backend::Backend, E: CallExecutor + Clone, Block: BlockT, @@ -974,7 +1021,7 @@ impl consensus::Authorities for Client where } } -impl CurrentHeight for Client where +impl CurrentHeight for Client where B: backend::Backend, E: CallExecutor + Clone, Block: BlockT, @@ -985,7 +1032,7 @@ impl CurrentHeight for Client where } } -impl BlockNumberToHash for Client where +impl BlockNumberToHash for Client where B: backend::Backend, E: CallExecutor + Clone, Block: BlockT, @@ -998,7 +1045,7 @@ impl BlockNumberToHash for Client where } -impl BlockchainEvents for Client +impl BlockchainEvents for Client where E: CallExecutor, Block: BlockT, @@ -1022,7 +1069,7 @@ where } } -impl ChainHead for Client +impl ChainHead for Client where B: backend::Backend, E: CallExecutor, @@ -1033,116 +1080,17 @@ where } } -impl BlockBody for Client where - B: backend::Backend, - E: CallExecutor, - Block: BlockT, +impl BlockBody for Client + where + B: backend::Backend, + E: CallExecutor, + Block: BlockT, { fn block_body(&self, id: &BlockId) -> error::Result::Extrinsic>>> { self.body(id) } } -impl api::Core for Client where - B: backend::Backend, - E: CallExecutor, - Block: BlockT, -{ - type Error = Error; - - fn version(&self, at: &BlockId) -> Result { - self.call_api_at(at, "version", &()) - } - - fn authorities(&self, at: &BlockId) -> Result, Self::Error> { - self.authorities_at(at) - } - - fn execute_block(&self, at: &BlockId, block: &Block) -> Result<(), Self::Error> { - self.call_api_at(at, "execute_block", &(block)) - } -} - -impl api::Metadata> for Client where - B: backend::Backend, - E: CallExecutor, - Block: BlockT, -{ - type Error = Error; - - fn metadata(&self, at: &BlockId) -> Result, Self::Error> { - self.executor.call(at, "metadata",&[]).map(|v| v.return_data) - } -} - -impl api::BlockBuilder for Client where - B: backend::Backend, - E: CallExecutor, - Block: BlockT, -{ - type Error = Error; - type OverlayedChanges = OverlayedChanges; - - fn initialise_block( - &self, - at: &BlockId, - changes: &mut OverlayedChanges, - header: &::Header - ) -> Result<(), Self::Error> { - self.call_at_state(at, "initialise_block", header, changes) - } - - fn apply_extrinsic( - &self, - at: &BlockId, - changes: &mut OverlayedChanges, - extrinsic: &::Extrinsic - ) -> Result { - self.call_at_state(at, "apply_extrinsic", extrinsic, changes) - } - - fn finalise_block( - &self, - at: &BlockId, - changes: &mut OverlayedChanges - ) -> Result<::Header, Self::Error> { - self.call_at_state(at, "finalise_block", &(), changes) - } - - fn inherent_extrinsics( - &self, at: &BlockId, inherent: &InherentExtrinsic - ) -> Result, Self::Error> { - self.call_api_at(at, "inherent_extrinsics", &(inherent)) - } - - fn check_inherents( - &self, - at: &BlockId, - block: &Block, - data: &InherentData - ) -> Result, Self::Error> { - self.call_api_at(at, "check_inherents", &(block, data)) - } - - fn random_seed(&self, at: &BlockId) -> Result<::Hash, Self::Error> { - self.call_api_at(at, "random_seed", &()) - } -} - -impl api::TaggedTransactionQueue for Client where - B: backend::Backend, - E: CallExecutor, - Block: BlockT, -{ - type Error = Error; - - fn validate_transaction( - &self, at: &BlockId, tx: &::Extrinsic - ) -> Result { - self.call_api_at(at, "validate_transaction", &(tx)) - } -} - #[cfg(test)] pub(crate) mod tests { use std::collections::HashMap; @@ -1155,14 +1103,14 @@ pub(crate) mod tests { use consensus::BlockOrigin; use test_client::client::backend::Backend as TestBackend; use test_client::BlockBuilderExt; - use test_client::runtime::{self, Block, Transfer}; + use test_client::runtime::{self, Block, Transfer, ClientWithApi, test_api::TestAPI}; /// Returns tuple, consisting of: /// 1) test client pre-filled with blocks changing balances; /// 2) roots of changes tries for these blocks /// 3) test cases in form (begin, end, key, vec![(block, extrinsic)]) that are required to pass pub fn prepare_client_with_key_changes() -> ( - test_client::client::Client, + test_client::client::Client, Vec, Vec<(u64, u64, Vec, Vec<(u64, u32)>)>, ) { @@ -1234,8 +1182,20 @@ pub(crate) mod tests { fn client_initialises_from_genesis_ok() { let client = test_client::new(); - assert_eq!(client.call_api::<_, u64>("balance_of", &Keyring::Alice.to_raw_public()).unwrap(), 1000); - assert_eq!(client.call_api::<_, u64>("balance_of", &Keyring::Ferdie.to_raw_public()).unwrap(), 0); + assert_eq!( + client.runtime_api().balance_of( + &BlockId::Number(client.info().unwrap().chain.best_number), + &Keyring::Alice.to_raw_public() + ).unwrap(), + 1000 + ); + assert_eq!( + client.runtime_api().balance_of( + &BlockId::Number(client.info().unwrap().chain.best_number), + &Keyring::Ferdie.to_raw_public() + ).unwrap(), + 0 + ); } #[test] @@ -1278,8 +1238,20 @@ pub(crate) mod tests { assert_eq!(client.info().unwrap().chain.best_number, 1); assert!(client.state_at(&BlockId::Number(1)).unwrap() != client.state_at(&BlockId::Number(0)).unwrap()); - assert_eq!(client.call_api::<_, u64>("balance_of", &Keyring::Alice.to_raw_public()).unwrap(), 958); - assert_eq!(client.call_api::<_, u64>("balance_of", &Keyring::Ferdie.to_raw_public()).unwrap(), 42); + assert_eq!( + client.runtime_api().balance_of( + &BlockId::Number(client.info().unwrap().chain.best_number), + &Keyring::Alice.to_raw_public() + ).unwrap(), + 958 + ); + assert_eq!( + client.runtime_api().balance_of( + &BlockId::Number(client.info().unwrap().chain.best_number), + &Keyring::Ferdie.to_raw_public() + ).unwrap(), + 42 + ); } #[test] diff --git a/core/client/src/lib.rs b/core/client/src/lib.rs index 255b068015..58fced9687 100644 --- a/core/client/src/lib.rs +++ b/core/client/src/lib.rs @@ -16,60 +16,101 @@ //! Substrate Client and associated logic. +#![cfg_attr(not(feature = "std"), no_std)] #![warn(missing_docs)] #![recursion_limit="128"] +#[cfg(feature = "std")] extern crate substrate_trie as trie; extern crate parity_codec as codec; extern crate substrate_primitives as primitives; extern crate sr_primitives as runtime_primitives; +#[cfg(feature = "std")] extern crate substrate_state_machine as state_machine; +#[cfg(feature = "std")] extern crate substrate_consensus_common as consensus; -#[cfg(test)] extern crate substrate_keyring as keyring; -#[cfg(test)] extern crate substrate_test_client as test_client; -#[macro_use] extern crate substrate_telemetry; -#[macro_use] extern crate slog; // needed until we can reexport `slog_info` from `substrate_telemetry` +extern crate sr_version as runtime_version; +extern crate sr_std as rstd; +#[cfg(test)] +extern crate substrate_keyring as keyring; +#[cfg(test)] +extern crate substrate_test_client as test_client; +#[cfg(feature = "std")] +#[macro_use] +extern crate substrate_telemetry; +#[cfg(feature = "std")] +#[macro_use] +extern crate slog; // needed until we can reexport `slog_info` from `substrate_telemetry` +#[cfg(feature = "std")] extern crate fnv; +#[cfg(feature = "std")] extern crate futures; +#[cfg(feature = "std")] extern crate parking_lot; +#[cfg(feature = "std")] extern crate hash_db; +#[cfg(feature = "std")] extern crate heapsize; +#[cfg(feature = "std")] extern crate kvdb; -extern crate sr_api; -#[macro_use] extern crate error_chain; -#[macro_use] extern crate log; -#[cfg_attr(test, macro_use)] extern crate substrate_executor as executor; -#[cfg(test)] #[macro_use] extern crate hex_literal; -#[cfg(test)] extern crate kvdb_memorydb; +#[cfg(feature = "std")] +#[macro_use] +extern crate error_chain; +#[cfg(feature = "std")] +#[macro_use] +extern crate log; +#[cfg(feature = "std")] +#[cfg_attr(test, macro_use)] +extern crate substrate_executor as executor; +#[cfg(test)] +#[macro_use] +extern crate hex_literal; +#[cfg(feature = "std")] +#[cfg(test)] +extern crate kvdb_memorydb; +#[macro_use] +pub mod runtime_api; +#[cfg(feature = "std")] pub mod error; +#[cfg(feature = "std")] pub mod blockchain; +#[cfg(feature = "std")] pub mod backend; +#[cfg(feature = "std")] pub mod cht; +#[cfg(feature = "std")] pub mod in_mem; +#[cfg(feature = "std")] pub mod genesis; pub mod block_builder; +#[cfg(feature = "std")] pub mod light; +#[cfg(feature = "std")] mod leaves; +#[cfg(feature = "std")] mod call_executor; +#[cfg(feature = "std")] mod client; +#[cfg(feature = "std")] mod notifications; +#[cfg(feature = "std")] pub use blockchain::Info as ChainInfo; +#[cfg(feature = "std")] pub use call_executor::{CallResult, CallExecutor, LocalCallExecutor}; +#[cfg(feature = "std")] pub use client::{ new_with_backend, new_in_mem, BlockBody, BlockStatus, ImportNotifications, FinalityNotifications, BlockchainEvents, Client, ClientInfo, ChainHead, }; +#[cfg(feature = "std")] pub use notifications::{StorageEventStream, StorageChangeSet}; +#[cfg(feature = "std")] pub use state_machine::ExecutionStrategy; +#[cfg(feature = "std")] pub use leaves::LeafSet; - -/// Traits for interfacing with the runtime from the client. -pub mod runtime_api { - pub use sr_api::*; -} diff --git a/core/client/src/light/mod.rs b/core/client/src/light/mod.rs index 8791e2930f..29db81a001 100644 --- a/core/client/src/light/mod.rs +++ b/core/client/src/light/mod.rs @@ -48,11 +48,11 @@ pub fn new_light_backend, F: Fetcher>(bloc } /// Create an instance of light client. -pub fn new_light( +pub fn new_light( backend: Arc>, fetcher: Arc, genesis_storage: GS, -) -> ClientResult, RemoteCallExecutor, F, Blake2Hasher>, B>> +) -> ClientResult, RemoteCallExecutor, F, Blake2Hasher>, B, RA>> where B: BlockT, S: BlockchainStorage, diff --git a/core/client/src/runtime_api/core.rs b/core/client/src/runtime_api/core.rs new file mode 100644 index 0000000000..20798422b7 --- /dev/null +++ b/core/client/src/runtime_api/core.rs @@ -0,0 +1,62 @@ +// Copyright 2018 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 . + +#[cfg(feature = "std")] +use super::{ConstructRuntimeApi, ApiExt}; +use runtime_version::RuntimeVersion; +use runtime_primitives::traits::Block as BlockT; +#[cfg(feature = "std")] +use runtime_primitives::generic::BlockId; +use primitives::AuthorityId; +#[cfg(feature = "std")] +use error::Result; +use rstd::vec::Vec; + +/// The `Core` api trait that is mandantory for each runtime. +/// This is the side that should be implemented for the `RuntimeApi` that is used by the `Client`. +/// Any modifications at one of these two traits, needs to be done on the other one as well. +#[cfg(feature = "std")] +pub trait Core: 'static + Send + Sync + ConstructRuntimeApi + ApiExt { + /// Returns the version of the runtime. + fn version(&self, at: &BlockId) -> Result; + /// Returns the authorities. + fn authorities(&self, at: &BlockId) -> Result>; + /// Execute the given block. + fn execute_block(&self, at: &BlockId, block: &Block) -> Result<()>; + /// Initialise a block with the given header. + fn initialise_block( + &self, + at: &BlockId, + header: &::Header + ) -> Result<()>; +} + +pub mod runtime { + use super::*; + + /// The `Core` api trait that is mandantory for each runtime. + /// This is the side that should be implemented for the `Runtime`. + pub trait Core { + /// Returns the version of the runtime. + fn version() -> RuntimeVersion; + /// Returns the authorities. + fn authorities() -> Vec; + /// Execute the given block. + fn execute_block(block: Block); + /// Initialise a block with the given header. + fn initialise_block(header: ::Header); + } +} diff --git a/core/sr-api/src/lib.rs b/core/client/src/runtime_api/macros.rs similarity index 79% rename from core/sr-api/src/lib.rs rename to core/client/src/runtime_api/macros.rs index ee931f706e..238314680b 100644 --- a/core/sr-api/src/lib.rs +++ b/core/client/src/runtime_api/macros.rs @@ -14,31 +14,14 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! API's for interfacing with the runtime via native/wasm. - -#![cfg_attr(not(feature = "std"), no_std)] - -extern crate sr_std as rstd; -extern crate sr_primitives as primitives; -#[doc(hidden)] -pub extern crate parity_codec as codec; -extern crate sr_version as runtime_version; - -#[doc(hidden)] -pub use primitives::{traits::Block as BlockT, generic::BlockId, transaction_validity::TransactionValidity, ApplyResult}; -use runtime_version::{ApiId, RuntimeVersion}; -use rstd::vec::Vec; -#[doc(hidden)] -pub use rstd::slice; -#[doc(hidden)] -pub use codec::{Encode, Decode}; +//! Macros for declaring and implementing the runtime APIs. /// Declare the given API traits. /// /// # Example: /// /// ```nocompile -/// decl_apis!{ +/// decl_runtime_apis!{ /// pub trait Test ExtraClientSide { /// fn test(event: Event) -> AccountId; /// @@ -66,11 +49,11 @@ pub use codec::{Encode, Decode}; /// } /// ``` /// -/// The declarations generated in the `runtime` module will be used by `impl_apis!` for implementing +/// The declarations generated in the `runtime` module will be used by `impl_runtime_apis!` for implementing /// the traits for a runtime. The other declarations should be used for implementing the interface /// in the client. #[macro_export] -macro_rules! decl_apis { +macro_rules! decl_runtime_apis { ( $( $( #[$attr:meta] )* @@ -89,7 +72,7 @@ macro_rules! decl_apis { )* ) => { $( - decl_apis!( + decl_runtime_apis!( @ADD_BLOCK_GENERIC $( #[$attr] )* pub trait $name $(< $( $generic_param $( : $generic_bound )* ),* >)* { @@ -107,7 +90,7 @@ macro_rules! decl_apis { $( $( $generic_param $( : $generic_bound )* ),* )* ); )* - decl_apis! { + decl_runtime_apis! { @GENERATE_RUNTIME_TRAITS $( $( #[$attr] )* @@ -136,7 +119,7 @@ macro_rules! decl_apis { Block: BlockT $(, $generic_param_rest:ident $( : $generic_bound_rest:ident )* )* ) => { - decl_apis!( + decl_runtime_apis!( @ADD_BLOCK_GENERIC $( #[$attr] )* pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { @@ -149,7 +132,7 @@ macro_rules! decl_apis { )* }; Found; - $( $generic_param_parsed $( : $generic_bound_parsed )* , )* Block: $crate::BlockT; + $( $generic_param_parsed $( : $generic_bound_parsed )* , )* Block: $crate::runtime_api::BlockT; $( $generic_param_rest $( : $generic_bound_rest )* ),* ); }; @@ -169,7 +152,7 @@ macro_rules! decl_apis { $generic_param:ident $( : $generic_bound:ident )* $(, $generic_param_rest:ident $( : $generic_bound_rest:ident )* )* ) => { - decl_apis!( + decl_runtime_apis!( @ADD_BLOCK_GENERIC $( #[$attr] )* pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { @@ -200,7 +183,7 @@ macro_rules! decl_apis { Found; $( $generic_param_parsed:ident $( : $generic_bound_parsed:path )* ),*; ) => { - decl_apis!( + decl_runtime_apis!( @GENERATE_RETURN_TYPES $( #[$attr] )* pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { @@ -231,7 +214,7 @@ macro_rules! decl_apis { ; $( $generic_param_parsed:ident $( : $generic_bound_parsed:ident )* ),*; ) => { - decl_apis!( + decl_runtime_apis!( @GENERATE_RETURN_TYPES $( #[$attr] )* pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { @@ -244,7 +227,7 @@ macro_rules! decl_apis { )* }; // We need to add the required generic Block parameter - Block: $crate::BlockT $(, $generic_param_parsed $( : $generic_bound_parsed )* )*; + Block: $crate::runtime_api::BlockT $(, $generic_param_parsed $( : $generic_bound_parsed )* )*; {}; $( $( $return_ty )*; )* ); @@ -265,7 +248,7 @@ macro_rules! decl_apis { $return_ty_current:ty; $( $( $return_ty_rest:ty )*; )* ) => { - decl_apis!( + decl_runtime_apis!( @GENERATE_RETURN_TYPES $( #[$attr] )* pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { @@ -278,7 +261,7 @@ macro_rules! decl_apis { )* }; $( $generic_param_parsed $( : $generic_bound_parsed )* ),*; - { $( $result_return_ty; )* Result<$return_ty_current, Self::Error>; }; + { $( $result_return_ty; )* $crate::error::Result<$return_ty_current>; }; $( $( $return_ty_rest )*; )* ); }; @@ -298,7 +281,7 @@ macro_rules! decl_apis { ; $( $( $return_ty_rest:ty )*; )* ) => { - decl_apis!( + decl_runtime_apis!( @GENERATE_RETURN_TYPES $( #[$attr] )* pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { @@ -311,7 +294,7 @@ macro_rules! decl_apis { )* }; $( $generic_param_parsed $( : $generic_bound_parsed )* ),*; - { $( $result_return_ty; )* Result<(), Self::Error>; }; + { $( $result_return_ty; )* $crate::error::Result<()>; }; $( $( $return_ty_rest )*; )* ); }; @@ -329,7 +312,7 @@ macro_rules! decl_apis { $( $generic_param_parsed:ident $( : $generic_bound_parsed:path )* ),*; { $( $result_return_ty:ty; )* }; ) => { - decl_apis!( + decl_runtime_apis!( @GENERATE_CLIENT_TRAITS $( #[$attr] )* pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { @@ -360,15 +343,14 @@ macro_rules! decl_apis { { $( $result_return_ty:ty; )* }; ) => { $( #[$attr] )* - pub trait $name < $( $generic_param_parsed $( : $generic_bound_parsed )* ),* > { - /// The Error type returned by this API. - type Error; + #[cfg(feature = "std")] + pub trait $name < $( $generic_param_parsed $( : $generic_bound_parsed )* ),* > : $crate::runtime_api::Core { $( type $client_generic_param $( : $client_generic_bound )*; )* $( $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic: $crate::Encode + $crate::Decode ),* > )* ( - &self, at: &$crate::BlockId $(, $param_name: $param_type )* + fn $fn_name $( < $( $fn_generic: $crate::runtime_api::Encode + $crate::runtime_api::Decode ),* > )* ( + &self, at: &$crate::runtime_api::BlockId $(, $param_name: $param_type )* ) -> $result_return_ty; )* } @@ -386,7 +368,7 @@ macro_rules! decl_apis { }; )* ) => { - decl_apis! { + decl_runtime_apis! { @GENERATE_RUNTIME_TRAITS_WITH_JOINED_GENERICS $( $( #[$attr] )* @@ -427,57 +409,8 @@ macro_rules! decl_apis { }; } -/// The ApiIds for the various standard runtime APIs. -pub mod id { - use super::ApiId; - - /// ApiId for the BlockBuilder trait. - pub const BLOCK_BUILDER: ApiId = *b"blkbuild"; - - /// ApiId for the TaggedTransactionQueue trait. - pub const TAGGED_TRANSACTION_QUEUE: ApiId = *b"validatx"; - - /// ApiId for the Metadata trait. - pub const METADATA: ApiId = *b"metadata"; -} - -decl_apis! { - /// The `Core` api trait that is mandantory for each runtime. - pub trait Core { - fn version() -> RuntimeVersion; - fn authorities() -> Vec; - fn execute_block(block: Block); - } - - /// The `Metadata` api trait that returns metadata for the runtime. - pub trait Metadata { - fn metadata() -> Data; - } - - /// The `TaggedTransactionQueue` api trait for interfering with the new transaction queue. - pub trait TaggedTransactionQueue { - fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity; - } - - /// The `BlockBuilder` api trait that provides required functions for building a block for a runtime. - pub trait BlockBuilder ExtraClientSide { - /// Initialise a block with the given header. - fn initialise_block(header: ::Header) ExtraClientSide(changes: &mut Self::OverlayedChanges); - /// Apply the given extrinsics. - fn apply_extrinsic(extrinsic: ::Extrinsic) ExtraClientSide(changes: &mut Self::OverlayedChanges) -> ApplyResult; - /// Finish the current block. - fn finalise_block() ExtraClientSide(changes: &mut Self::OverlayedChanges) -> ::Header; - /// Generate inherent extrinsics. - fn inherent_extrinsics(inherent: InherentExtrinsic) -> Vec; - /// Check that the inherents are valid. - fn check_inherents(block: Block, data: InherentData) -> Result<(), Error>; - /// Generate a random seed. - fn random_seed() -> ::Hash; - } -} - /// Implement the given API's for the given runtime. -/// All desired API's need to be implemented in one `impl_apis!` call. +/// All desired API's need to be implemented in one `impl_runtime_apis!` call. /// Besides generating the implementation for the runtime, there will be also generated an /// auxiliary module named `api` that contains function for inferring with the API in native/wasm. /// It is important to use the traits from the `runtime` module with this macro. @@ -486,18 +419,17 @@ decl_apis! { /// /// ```nocompile /// #[macro_use] -/// extern crate sr_api as runtime_api; +/// extern crate substrate_client as client; /// -/// use runtime_api::runtime::{Core, TaggedTransactionQueue}; +/// use client::runtime_api::runtime::{Core, TaggedTransactionQueue}; /// -/// impl_apis! { -/// impl Core for Runtime { -/// fn version() -> RuntimeVersion { 1 } -/// fn authorities() -> Vec { vec![1] } +/// impl_runtime_apis! { +/// impl Core for Runtime { +/// fn version() -> RuntimeVersion { unimplemented!() } +/// fn authorities() -> Vec { unimplemented!() } /// fn execute_block(block: Block) { /// //comment -/// let block = call_arbitrary_code(block); -/// execute(block); +/// unimplemented!() /// } /// } /// @@ -511,7 +443,7 @@ decl_apis! { /// fn main() {} /// ``` #[macro_export] -macro_rules! impl_apis { +macro_rules! impl_runtime_apis { ( impl $trait_name:ident $( < $( $generic:ident ),* > )* for $runtime:ident { $( @@ -529,7 +461,7 @@ macro_rules! impl_apis { } )* } - impl_apis! { + impl_runtime_apis! { $runtime; $( $fn_name ( $( $arg_name: $arg_ty ),* ); )*; $( $rest )* @@ -554,7 +486,7 @@ macro_rules! impl_apis { } )* } - impl_apis! { + impl_runtime_apis! { $runtime; $( $fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); )* $( $fn_name ( $( $arg_name: $arg_ty ),* ); )*; @@ -573,7 +505,7 @@ macro_rules! impl_apis { match method { $( stringify!($fn_name) => { - Some({impl_apis! { + Some({impl_runtime_apis! { @GENERATE_IMPL_CALL $runtime; $fn_name; @@ -594,11 +526,11 @@ macro_rules! impl_apis { &[0u8; 0] } else { unsafe { - $crate::slice::from_raw_parts(input_data, input_len) + $crate::runtime_api::slice::from_raw_parts(input_data, input_len) } }; - let output = { impl_apis! { + let output = { impl_runtime_apis! { @GENERATE_IMPL_CALL $runtime; $fn_name; @@ -622,13 +554,13 @@ macro_rules! impl_apis { $arg_name:ident : $arg_ty:ty; $input:ident; ) => { - let $arg_name : $arg_ty = match $crate::codec::Decode::decode(&mut $input) { + let $arg_name : $arg_ty = match $crate::runtime_api::Decode::decode(&mut $input) { Some(input) => input, None => panic!("Bad input data provided to {}", stringify!($fn_name)), }; let output = $runtime::$fn_name($arg_name); - $crate::codec::Encode::encode(&output) + $crate::runtime_api::Encode::encode(&output) }; (@GENERATE_IMPL_CALL $runtime:ident; @@ -636,12 +568,12 @@ macro_rules! impl_apis { $( $arg_name:ident : $arg_ty:ty ),*; $input:ident; ) => { - let ( $( $arg_name ),* ) : ($( $arg_ty ),*) = match $crate::codec::Decode::decode(&mut $input) { + let ( $( $arg_name ),* ) : ($( $arg_ty ),*) = match $crate::runtime_api::Decode::decode(&mut $input) { Some(input) => input, None => panic!("Bad input data provided to {}", stringify!($fn_name)), }; let output = $runtime::$fn_name($( $arg_name ),*); - $crate::codec::Encode::encode(&output) + $crate::runtime_api::Encode::encode(&output) }; } diff --git a/core/client/src/runtime_api/mod.rs b/core/client/src/runtime_api/mod.rs new file mode 100644 index 0000000000..62f0f0ca03 --- /dev/null +++ b/core/client/src/runtime_api/mod.rs @@ -0,0 +1,99 @@ +// Copyright 2018 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 . + +//! All the functionality required for declaring and implementing runtime api's. +//! Core api's are also declared here. + +#[doc(hidden)] +#[cfg(feature = "std")] +pub use state_machine::OverlayedChanges; +#[doc(hidden)] +pub use runtime_primitives::{traits::Block as BlockT, generic::BlockId}; +#[cfg(feature = "std")] +use runtime_primitives::traits::ApiRef; +use runtime_version::ApiId; +#[doc(hidden)] +pub use rstd::slice; +#[cfg(feature = "std")] +use rstd::result; +#[doc(hidden)] +pub use codec::{Encode, Decode}; +#[cfg(feature = "std")] +use error; + +mod core; +#[macro_use] +mod macros; +mod traits; + +/// Something that can be constructed to a runtime api. +#[cfg(feature = "std")] +pub trait ConstructRuntimeApi: Sized { + /// Construct an instance of the runtime api. + fn construct_runtime_api<'a, T: CallApiAt>(call: &'a T) -> ApiRef<'a, Self>; +} + +/// An extension for the `RuntimeApi`. +#[cfg(feature = "std")] +pub trait ApiExt { + /// The given closure will be called with api instance. Inside the closure any api call is + /// allowed. After doing the api call, the closure is allowed to map the `Result` to a + /// different `Result` type. This can be important, as the internal data structure that keeps + /// track of modifications to the storage, discards changes when the `Result` is an `Err`. + /// On `Ok`, the structure commits the changes to an internal buffer. + fn map_api_result result::Result, R, E>( + &self, + map_call: F + ) -> result::Result; +} + +/// Something that can call the runtime api at a given block. +#[cfg(feature = "std")] +pub trait CallApiAt { + /// Calls the given api function with the given encoded arguments at the given block + /// and returns the encoded result. + fn call_api_at( + &self, + at: &BlockId, + function: &'static str, + args: Vec, + changes: &mut OverlayedChanges, + initialised_block: &mut Option>, + ) -> error::Result>; +} + +/// The ApiIds for the various standard runtime APIs. +pub mod id { + use super::ApiId; + + /// ApiId for the BlockBuilder trait. + pub const BLOCK_BUILDER: ApiId = *b"blkbuild"; + + /// ApiId for the TaggedTransactionQueue trait. + pub const TAGGED_TRANSACTION_QUEUE: ApiId = *b"validatx"; + + /// ApiId for the Metadata trait. + pub const METADATA: ApiId = *b"metadata"; +} + +pub use self::core::*; +pub use self::traits::*; + +/// The runtime apis that should be implemented for the `Runtime`. +pub mod runtime { + pub use super::core::runtime::Core; + pub use super::traits::runtime::*; +} diff --git a/core/client/src/runtime_api/traits.rs b/core/client/src/runtime_api/traits.rs new file mode 100644 index 0000000000..4d237a09ef --- /dev/null +++ b/core/client/src/runtime_api/traits.rs @@ -0,0 +1,35 @@ +// Copyright 2018 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 . + +use primitives::OpaqueMetadata; +use runtime_primitives::{ + traits::{Block as BlockT}, + transaction_validity::TransactionValidity +}; + +decl_runtime_apis! { + /// The `Metadata` api trait that returns metadata for the runtime. + pub trait Metadata { + /// Returns the metadata of a runtime. + fn metadata() -> OpaqueMetadata; + } + + /// The `TaggedTransactionQueue` api trait for interfering with the new transaction queue. + pub trait TaggedTransactionQueue { + /// Validate the given transaction. + fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity; + } +} diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index 7355119074..e55756eacf 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -130,22 +130,7 @@ pub trait CompatibleDigestItem: Sized { fn as_aura_seal(&self) -> Option<(u64, &ed25519::Signature)>; } -impl CompatibleDigestItem for generic::DigestItem { - /// Construct a digest item which is a slot number and a signature on the - /// hash. - fn aura_seal(slot_number: u64, signature: ed25519::Signature) -> Self { - generic::DigestItem::Seal(slot_number, signature) - } - /// If this item is an Aura seal, return the slot number and signature. - fn as_aura_seal(&self) -> Option<(u64, &ed25519::Signature)> { - match self { - generic::DigestItem::Seal(slot, ref sign) => Some((*slot, sign)), - _ => None - } - } -} - -impl CompatibleDigestItem for generic::DigestItem { +impl CompatibleDigestItem for generic::DigestItem { /// Construct a digest item which is a slot number and a signature on the /// hash. fn aura_seal(slot_number: u64, signature: ed25519::Signature) -> Self { @@ -429,7 +414,7 @@ mod tests { type Error = client::error::Error; - type TestClient = client::Client; + type TestClient = client::Client; struct DummyFactory(Arc); struct DummyProposer(u64, Arc); diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 97c93acfe3..21f75f47f8 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -41,7 +41,7 @@ extern crate substrate_keyring as keyring; use futures::prelude::*; use futures::stream::Fuse; use futures::sync::mpsc; -use client::{Client, ImportNotifications, backend::Backend, CallExecutor}; +use client::{Client, ImportNotifications, backend::Backend, CallExecutor, blockchain::HeaderBackend}; use codec::{Encode, Decode}; use runtime_primitives::traits::{As, NumberFor, Block as BlockT, Header as HeaderT}; use runtime_primitives::generic::BlockId; @@ -121,9 +121,10 @@ pub trait BlockStatus { fn block_number(&self, hash: Block::Hash) -> Result, Error>; } -impl> BlockStatus for Arc> where +impl, RA> BlockStatus for Arc> where B: Backend, - E: CallExecutor, + E: CallExecutor + Send + Sync, + RA: Send + Sync, NumberFor: As, { fn block_number(&self, hash: Block::Hash) -> Result, Error> { @@ -376,14 +377,14 @@ fn outgoing_messages( } /// The environment we run GRANDPA in. -pub struct Environment { - inner: Arc>, +pub struct Environment { + inner: Arc>, voters: HashMap, config: Config, network: N, } -impl, B, E, N> grandpa::Chain for Environment where +impl, B, E, N, RA> grandpa::Chain for Environment where Block: 'static, B: Backend + 'static, E: CallExecutor + 'static, @@ -434,12 +435,13 @@ impl, B, E, N> grandpa::Chain for Environm } } -impl, N> voter::Environment for Environment where +impl, N, RA> voter::Environment for Environment where Block: 'static, B: Backend + 'static, - E: CallExecutor + 'static, + E: CallExecutor + 'static + Send + Sync, N: Network + 'static, N::In: 'static, + RA: 'static + Send + Sync, NumberFor: As, { type Timer = Box>; @@ -543,9 +545,9 @@ impl, N> voter::Environment for Envi } /// Run a GRANDPA voter as a task. The returned future should be executed in a tokio runtime. -pub fn run_grandpa, N>( +pub fn run_grandpa, N, RA: Send + Sync + 'static>( config: Config, - client: Arc>, + client: Arc>, voters: HashMap, network: N, ) -> Result,client::error::Error> where diff --git a/core/network/src/chain.rs b/core/network/src/chain.rs index 6e4ec75cde..32cb18f276 100644 --- a/core/network/src/chain.rs +++ b/core/network/src/chain.rs @@ -68,52 +68,53 @@ pub trait Client: Send + Sync { ) -> Result<(NumberFor, Vec>), Error>; } -impl Client for SubstrateClient where +impl Client for SubstrateClient where B: client::backend::Backend + Send + Sync + 'static, E: CallExecutor + Send + Sync + 'static, Self: BlockImport, Block: BlockT, + RA: Send + Sync { fn import(&self, block: ImportBlock, new_authorities: Option>) -> Result { - (self as &SubstrateClient).import_block(block, new_authorities) + (self as &SubstrateClient).import_block(block, new_authorities) } fn info(&self) -> Result, Error> { - (self as &SubstrateClient).info() + (self as &SubstrateClient).info() } fn block_status(&self, id: &BlockId) -> Result { - (self as &SubstrateClient).block_status(id) + (self as &SubstrateClient).block_status(id) } fn block_hash(&self, block_number: ::Number) -> Result, Error> { - (self as &SubstrateClient).block_hash(block_number) + (self as &SubstrateClient).block_hash(block_number) } fn header(&self, id: &BlockId) -> Result, Error> { - (self as &SubstrateClient).header(id) + (self as &SubstrateClient).header(id) } fn body(&self, id: &BlockId) -> Result>, Error> { - (self as &SubstrateClient).body(id) + (self as &SubstrateClient).body(id) } fn justification(&self, id: &BlockId) -> Result, Error> { - (self as &SubstrateClient).justification(id) + (self as &SubstrateClient).justification(id) } fn header_proof(&self, block_number: ::Number) -> Result<(Block::Header, Vec>), Error> { - (self as &SubstrateClient).header_proof(&BlockId::Number(block_number)) + (self as &SubstrateClient).header_proof(&BlockId::Number(block_number)) } fn read_proof(&self, block: &Block::Hash, key: &[u8]) -> Result>, Error> { - (self as &SubstrateClient).read_proof(&BlockId::Hash(block.clone()), key) + (self as &SubstrateClient).read_proof(&BlockId::Hash(block.clone()), key) } fn execution_proof(&self, block: &Block::Hash, method: &str, data: &[u8]) -> Result<(Vec, Vec>), Error> { - (self as &SubstrateClient).execution_proof(&BlockId::Hash(block.clone()), method, data) + (self as &SubstrateClient).execution_proof(&BlockId::Hash(block.clone()), method, data) } fn key_changes_proof( @@ -123,6 +124,6 @@ impl Client for SubstrateClient where max: Block::Hash, key: &[u8] ) -> Result<(NumberFor, Vec>), Error> { - (self as &SubstrateClient).key_changes_proof(first, last, max, key) + (self as &SubstrateClient).key_changes_proof(first, last, max, key) } } diff --git a/core/network/src/import_queue.rs b/core/network/src/import_queue.rs index b31dee6310..5a21393ae4 100644 --- a/core/network/src/import_queue.rs +++ b/core/network/src/import_queue.rs @@ -677,7 +677,7 @@ pub mod tests { fn restart(&mut self) { self.restarts += 1; } } - fn prepare_good_block() -> (client::Client, Hash, u64, BlockData) { + fn prepare_good_block() -> (client::Client, Hash, u64, BlockData) { let client = test_client::new(); let block = client.new_block().unwrap().bake().unwrap(); client.justify_and_import(BlockOrigin::File, block).unwrap(); diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index 843ad836e0..f5b70f2e9a 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -28,7 +28,6 @@ use client::block_builder::BlockBuilder; use runtime_primitives::generic::BlockId; use io::SyncIo; use protocol::{Context, Protocol, ProtocolContext}; -use primitives::{Blake2Hasher}; use config::ProtocolConfig; use service::TransactionPool; use network_libp2p::{NodeIndex, PeerId, Severity}; @@ -137,7 +136,7 @@ pub struct TestPacket { recipient: NodeIndex, } -pub type PeersClient = client::Client; +pub type PeersClient = client::Client; pub struct Peer> { client: Arc, @@ -230,7 +229,7 @@ impl> Peer { /// Add blocks to the peer -- edit the block before adding pub fn generate_blocks(&self, count: usize, origin: BlockOrigin, mut edit_block: F) - where F: FnMut(&mut BlockBuilder) + where F: FnMut(&mut BlockBuilder) { for _ in 0 .. count { let mut builder = self.client.new_block().unwrap(); @@ -305,7 +304,7 @@ pub trait TestNetFactory: Sized { fn mut_peers>>)>(&mut self, closure: F ); fn started(&self) -> bool; - fn set_started(&mut self, now: bool); + fn set_started(&mut self, now: bool); fn default_config() -> ProtocolConfig { ProtocolConfig::default() @@ -468,7 +467,7 @@ impl TestNetFactory for TestNet { started: false } } - + fn make_verifier(&self, _client: Arc, _config: &ProtocolConfig) -> Arc { diff --git a/core/primitives/src/lib.rs b/core/primitives/src/lib.rs index 20f044a872..1bbfaafb24 100644 --- a/core/primitives/src/lib.rs +++ b/core/primitives/src/lib.rs @@ -129,7 +129,30 @@ impl From> for Bytes { fn from(s: Vec) -> Self { Bytes(s) } } +impl From for Bytes { + fn from(s: OpaqueMetadata) -> Self { Bytes(s.0) } +} + impl Deref for Bytes { type Target = [u8]; fn deref(&self) -> &[u8] { &self.0[..] } } + +/// Stores the encoded `RuntimeMetadata` for the native side as opaque type. +#[derive(Encode, Decode)] +pub struct OpaqueMetadata(Vec); + +impl OpaqueMetadata { + /// Creates a new instance with the given metadata blob. + pub fn new(metadata: Vec) -> Self { + OpaqueMetadata(metadata) + } +} + +impl rstd::ops::Deref for OpaqueMetadata { + type Target = Vec; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} diff --git a/core/rpc/src/author/mod.rs b/core/rpc/src/author/mod.rs index 287b51dcc3..9d3482f1ee 100644 --- a/core/rpc/src/author/mod.rs +++ b/core/rpc/src/author/mod.rs @@ -71,23 +71,19 @@ build_rpc_trait! { } /// Authoring API -pub struct Author where - P: PoolChainApi + Sync + Send + 'static, -{ +pub struct Author where P: PoolChainApi + Sync + Send + 'static { /// Substrate client - client: Arc::Block>>, + client: Arc::Block, RA>>, /// Extrinsic pool pool: Arc>, /// Subscriptions manager subscriptions: Subscriptions, } -impl Author where - P: PoolChainApi + Sync + Send + 'static, -{ +impl Author where P: PoolChainApi + Sync + Send + 'static { /// Create new instance of Authoring API. pub fn new( - client: Arc::Block>>, + client: Arc::Block, RA>>, pool: Arc>, subscriptions: Subscriptions, ) -> Self { @@ -99,12 +95,13 @@ impl Author where } } -impl AuthorApi, BlockHash

> for Author where +impl AuthorApi, BlockHash

> for Author where B: client::backend::Backend<

::Block, Blake2Hasher> + Send + Sync + 'static, E: client::CallExecutor<

::Block, Blake2Hasher> + Send + Sync + 'static, P: PoolChainApi + Sync + Send + 'static, P::Block: traits::Block, P::Error: 'static, + RA: Send + Sync + 'static { type Metadata = ::metadata::Metadata; diff --git a/core/rpc/src/chain/mod.rs b/core/rpc/src/chain/mod.rs index 62b76ed232..e836857bc9 100644 --- a/core/rpc/src/chain/mod.rs +++ b/core/rpc/src/chain/mod.rs @@ -97,16 +97,16 @@ build_rpc_trait! { } /// Chain API with subscriptions support. -pub struct Chain { +pub struct Chain { /// Substrate client. - client: Arc>, + client: Arc>, /// Current subscriptions. subscriptions: Subscriptions, } -impl Chain { +impl Chain { /// Create new Chain API RPC handler. - pub fn new(client: Arc>, subscriptions: Subscriptions) -> Self { + pub fn new(client: Arc>, subscriptions: Subscriptions) -> Self { Self { client, subscriptions, @@ -114,10 +114,11 @@ impl Chain { } } -impl Chain where +impl Chain where Block: BlockT + 'static, B: client::backend::Backend + Send + Sync + 'static, E: client::CallExecutor + Send + Sync + 'static, + RA: Send + Sync + 'static { fn unwrap_or_best(&self, hash: Trailing) -> Result { Ok(match hash.into() { @@ -163,10 +164,11 @@ impl Chain where } } -impl ChainApi, SignedBlock> for Chain where +impl ChainApi, SignedBlock> for Chain where Block: BlockT + 'static, B: client::backend::Backend + Send + Sync + 'static, E: client::CallExecutor + Send + Sync + 'static, + RA: Send + Sync + 'static { type Metadata = ::metadata::Metadata; diff --git a/core/rpc/src/state/mod.rs b/core/rpc/src/state/mod.rs index d94b8f3dee..f1ad6a67c2 100644 --- a/core/rpc/src/state/mod.rs +++ b/core/rpc/src/state/mod.rs @@ -32,7 +32,7 @@ use primitives::{Blake2Hasher, Bytes}; use rpc::Result as RpcResult; use rpc::futures::{stream, Future, Sink, Stream}; use runtime_primitives::generic::BlockId; -use runtime_primitives::traits::{Block as BlockT, Header}; +use runtime_primitives::traits::{Block as BlockT, Header, ProvideRuntimeApi}; use subscriptions::Subscriptions; @@ -87,16 +87,16 @@ build_rpc_trait! { } /// State API with subscriptions support. -pub struct State { +pub struct State { /// Substrate client. - client: Arc>, + client: Arc>, /// Current subscriptions. subscriptions: Subscriptions, } -impl State { +impl State { /// Create new State API RPC handler. - pub fn new(client: Arc>, subscriptions: Subscriptions) -> Self { + pub fn new(client: Arc>, subscriptions: Subscriptions) -> Self { Self { client, subscriptions, @@ -104,7 +104,7 @@ impl State { } } -impl State where +impl State where Block: BlockT, B: client::backend::Backend, E: CallExecutor, @@ -114,10 +114,11 @@ impl State where } } -impl StateApi for State where +impl StateApi for State where Block: BlockT + 'static, B: client::backend::Backend + Send + Sync + 'static, - E: CallExecutor + Send + Sync + 'static, + E: CallExecutor + Send + Sync + 'static + Clone, + RA: Metadata { type Metadata = ::metadata::Metadata; @@ -151,7 +152,7 @@ impl StateApi for State where fn metadata(&self, block: Trailing) -> Result { let block = self.unwrap_or_best(block)?; - self.client.metadata(&BlockId::Hash(block)).map(Bytes).map_err(Into::into) + self.client.runtime_api().metadata(&BlockId::Hash(block)).map(Into::into).map_err(Into::into) } fn query_storage(&self, keys: Vec, from: Block::Hash, to: Trailing) -> Result>> { diff --git a/core/service/src/components.rs b/core/service/src/components.rs index a2b9225d3a..cde3a5aecb 100644 --- a/core/service/src/components.rs +++ b/core/service/src/components.rs @@ -16,21 +16,20 @@ //! Substrate service components. -use std::sync::Arc; -use std::marker::PhantomData; -use std::ops::Deref; +use std::{sync::Arc, net::SocketAddr, marker::PhantomData, ops::Deref}; use serde::{Serialize, de::DeserializeOwned}; use tokio::runtime::TaskExecutor; -use chain_spec::ChainSpec; +use chain_spec::{ChainSpec, Properties}; use client_db; -use client::{self, Client}; -use {error, Service}; +use client::{self, Client, runtime_api::{TaggedTransactionQueue, Metadata}}; +use {error, Service, RpcConfig, maybe_start_server, TransactionPoolAdapter}; use network::{self, OnDemand, import_queue::ImportQueue}; use substrate_executor::{NativeExecutor, NativeExecutionDispatch}; use transaction_pool::txpool::{self, Options as TransactionPoolOptions, Pool as TransactionPool}; -use runtime_primitives::{traits::Block as BlockT, traits::Header as HeaderT, BuildStorage}; +use runtime_primitives::{traits::Block as BlockT, traits::Header as HeaderT, BuildStorage, generic::SignedBlock}; use config::Configuration; -use primitives::{H256, Blake2Hasher}; +use primitives::{Blake2Hasher, H256}; +use rpc; // Type aliases. // These exist mainly to avoid typing `::Foo` all over the code. @@ -70,10 +69,10 @@ pub type LightExecutor = client::light::call_executor::RemoteCallExecutor< >; /// Full client type for a factory. -pub type FullClient = Client, FullExecutor, ::Block>; +pub type FullClient = Client, FullExecutor, ::Block, ::RuntimeApi>; /// Light client type for a factory. -pub type LightClient = Client, LightExecutor, ::Block>; +pub type LightClient = Client, LightExecutor, ::Block, ::RuntimeApi>; /// `ChainSpec` specialization for a factory. pub type FactoryChainSpec = ChainSpec<::Genesis>; @@ -97,7 +96,8 @@ pub type FactoryFullConfiguration = Configuration<::Conf pub type ComponentClient = Client< ::Backend, ::Executor, - FactoryBlock<::Factory> + FactoryBlock<::Factory>, + ::RuntimeApi, >; /// Block type for `Components` @@ -116,10 +116,114 @@ pub type PoolApi = ::TransactionPoolApi; pub trait RuntimeGenesis: Serialize + DeserializeOwned + BuildStorage {} impl RuntimeGenesis for T {} +/// Something that can start the RPC service. +pub trait StartRPC { + fn start_rpc( + client: Arc, C::RuntimeApi>>, + chain_name: String, + impl_name: &'static str, + impl_version: &'static str, + rpc_http: Option, + rpc_ws: Option, + properties: Properties, + task_executor: TaskExecutor, + transaction_pool: Arc>, + ) -> Result<(Option, Option), error::Error>; +} + +impl StartRPC for T where + T::RuntimeApi: Metadata>, + for<'de> SignedBlock>: ::serde::Deserialize<'de>, +{ + fn start_rpc( + client: Arc, T::RuntimeApi>>, + chain_name: String, + impl_name: &'static str, + impl_version: &'static str, + rpc_http: Option, + rpc_ws: Option, + properties: Properties, + task_executor: TaskExecutor, + transaction_pool: Arc>, + ) -> Result<(Option, Option), error::Error> { + let rpc_config = RpcConfig { properties, chain_name, impl_name, impl_version }; + + let handler = || { + let client = client.clone(); + let subscriptions = rpc::apis::Subscriptions::new(task_executor.clone()); + let chain = rpc::apis::chain::Chain::new(client.clone(), subscriptions.clone()); + let state = rpc::apis::state::State::new(client.clone(), subscriptions.clone()); + let author = rpc::apis::author::Author::new( + client.clone(), transaction_pool.clone(), subscriptions + ); + rpc::rpc_handler::, ComponentExHash, _, _, _, _>( + state, + chain, + author, + rpc_config.clone(), + ) + }; + + Ok(( + maybe_start_server(rpc_http, |address| rpc::start_http(address, handler()))?, + maybe_start_server(rpc_ws, |address| rpc::start_ws(address, handler()))?, + )) + } +} + +/// Something that can create an instance of `network::Params`. +pub trait CreateNetworkParams { + fn create_network_params( + client: Arc, C::RuntimeApi>>, + roles: network::Roles, + network_config: network::NetworkConfiguration, + on_demand: Option, NetworkService>>>, + transaction_pool_adapter: TransactionPoolAdapter, + specialization: S, + ) -> network::Params, S, ComponentExHash>; +} + +impl CreateNetworkParams for T where + T::RuntimeApi: TaggedTransactionQueue> +{ + fn create_network_params( + client: Arc, T::RuntimeApi>>, + roles: network::Roles, + network_config: network::NetworkConfiguration, + on_demand: Option, NetworkService>>>, + transaction_pool_adapter: TransactionPoolAdapter, + specialization: S, + ) -> network::Params, S, ComponentExHash> { + network::Params { + config: network::ProtocolConfig { roles }, + network_config, + chain: client, + on_demand: on_demand.map(|d| d as Arc>>), + transaction_pool: Arc::new(transaction_pool_adapter), + specialization, + } + } +} + +/// The super trait that combines all required traits a `Service` needs to implement. +pub trait ServiceTrait: + Deref> + + Send + + Sync + + 'static + + StartRPC + + CreateNetworkParams +{} +impl ServiceTrait for T where + T: Deref> + Send + Sync + 'static + StartRPC + CreateNetworkParams +{} + /// A collection of types and methods to build a service on top of the substrate service. pub trait ServiceFactory: 'static + Sized { /// Block type. type Block: BlockT; + /// The type that implements the runtime API. + type RuntimeApi: Send + Sync; /// Network protocol extensions. type NetworkProtocol: network::specialization::Specialization; /// Chain runtime. @@ -133,9 +237,9 @@ pub trait ServiceFactory: 'static + Sized { /// Other configuration for service members. type Configuration: Default; /// Extended full service type. - type FullService: Deref>> + Send + Sync + 'static; + type FullService: ServiceTrait>; /// Extended light service type. - type LightService: Deref>> + Send + Sync + 'static; + type LightService: ServiceTrait>; /// ImportQueue for full client type FullImportQueue: network::import_queue::ImportQueue + 'static; /// ImportQueue for light clients @@ -192,7 +296,7 @@ pub trait ServiceFactory: 'static + Sized { } /// A collection of types and function to generalise over full / light client type. -pub trait Components: 'static { +pub trait Components: Sized + 'static { /// Associated service factory. type Factory: ServiceFactory; /// Client backend. @@ -204,6 +308,12 @@ pub trait Components: 'static { Hash = <::Block as BlockT>::Hash, Block = FactoryBlock >; + /// The type that implements the runtime API. + type RuntimeApi: Send + Sync; + /// A type that can start the RPC. + type RPC: StartRPC; + /// A type that can create the network params. + type CreateNetworkParams: CreateNetworkParams; /// Our Import Queue type ImportQueue: ImportQueue> + 'static; @@ -212,11 +322,13 @@ pub trait Components: 'static { fn build_client( config: &FactoryFullConfiguration, executor: CodeExecutor, - ) - -> Result<( + ) -> Result< + ( Arc>, Option, NetworkService>>> - ), error::Error>; + ), + error::Error + >; /// Create extrinsic pool. fn build_transaction_pool(config: TransactionPoolOptions, client: Arc>) @@ -232,6 +344,29 @@ pub trait Components: 'static { /// A struct that implement `Components` for the full client. pub struct FullComponents { _factory: PhantomData, + service: Service>, +} + +impl FullComponents { + pub fn new( + config: FactoryFullConfiguration, + task_executor: TaskExecutor + ) -> Result { + Ok( + Self { + _factory: Default::default(), + service: Service::new(config, task_executor)?, + } + ) + } +} + +impl Deref for FullComponents { + type Target = Service; + + fn deref(&self) -> &Self::Target { + &self.service + } } impl Components for FullComponents { @@ -240,6 +375,9 @@ impl Components for FullComponents { type Backend = FullBackend; type TransactionPoolApi = ::FullTransactionPoolApi; type ImportQueue = Factory::FullImportQueue; + type RuntimeApi = Factory::RuntimeApi; + type RPC = Factory::FullService; + type CreateNetworkParams = Factory::FullService; fn build_client( config: &FactoryFullConfiguration, @@ -281,6 +419,29 @@ impl Components for FullComponents { /// A struct that implement `Components` for the light client. pub struct LightComponents { _factory: PhantomData, + service: Service>, +} + +impl LightComponents { + pub fn new( + config: FactoryFullConfiguration, + task_executor: TaskExecutor + ) -> Result { + Ok( + Self { + _factory: Default::default(), + service: Service::new(config, task_executor)?, + } + ) + } +} + +impl Deref for LightComponents { + type Target = Service; + + fn deref(&self) -> &Self::Target { + &self.service + } } impl Components for LightComponents { @@ -289,16 +450,19 @@ impl Components for LightComponents { type Backend = LightBackend; type TransactionPoolApi = ::LightTransactionPoolApi; type ImportQueue = ::LightImportQueue; + type RuntimeApi = Factory::RuntimeApi; + type RPC = Factory::LightService; + type CreateNetworkParams = Factory::LightService; fn build_client( config: &FactoryFullConfiguration, executor: CodeExecutor, ) - -> Result<( - Arc>, - Option, - NetworkService>>> - ), error::Error> + -> Result< + ( + Arc>, + Option, NetworkService>>> + ), error::Error> { let db_settings = client_db::DatabaseSettings { cache_size: None, diff --git a/core/service/src/consensus.rs b/core/service/src/consensus.rs index c9a528dd27..338c1680cf 100644 --- a/core/service/src/consensus.rs +++ b/core/service/src/consensus.rs @@ -23,11 +23,11 @@ use std::time::{self, Duration, Instant}; use std; use client::{self, error, Client as SubstrateClient, CallExecutor}; -use client::runtime_api::{Core, BlockBuilder as BlockBuilderAPI, id::BLOCK_BUILDER}; +use client::{block_builder::api::BlockBuilder as BlockBuilderApi, runtime_api::{id::BLOCK_BUILDER, Core}}; use codec::{Decode, Encode}; use consensus_common::{self, InherentData, evaluation, offline_tracker::OfflineTracker}; use primitives::{H256, AuthorityId, ed25519, Blake2Hasher}; -use runtime_primitives::traits::{Block as BlockT, Hash as HashT, Header as HeaderT}; +use runtime_primitives::traits::{Block as BlockT, Hash as HashT, Header as HeaderT, ProvideRuntimeApi}; use runtime_primitives::generic::BlockId; use transaction_pool::txpool::{self, Pool as TransactionPool}; @@ -47,11 +47,8 @@ pub trait BlockBuilder { } /// Local client abstraction for the consensus. -pub trait AuthoringApi: - Send - + Sync - + BlockBuilderAPI<::Block, Error=::Error> - + Core<::Block, AuthorityId, Error=::Error> +pub trait AuthoringApi: Send + Sync + ProvideRuntimeApi where + ::Api: Core { /// The block used for this API type. type Block: BlockT; @@ -67,20 +64,22 @@ pub trait AuthoringApi: ) -> Result; } -impl<'a, B, E, Block> BlockBuilder for client::block_builder::BlockBuilder<'a, B, E, Block, Blake2Hasher> where - B: client::backend::Backend + Send + Sync + 'static, +impl<'a, B, E, Block, RA> BlockBuilder for client::block_builder::BlockBuilder<'a, Block, SubstrateClient> where + B: client::backend::Backend + 'static, E: CallExecutor + Send + Sync + Clone + 'static, Block: BlockT, + RA: BlockBuilderApi, { fn push_extrinsic(&mut self, extrinsic: ::Extrinsic) -> Result<(), error::Error> { client::block_builder::BlockBuilder::push(self, extrinsic).map_err(Into::into) } } -impl<'a, B, E, Block> AuthoringApi for SubstrateClient where +impl AuthoringApi for SubstrateClient where B: client::backend::Backend + Send + Sync + 'static, E: CallExecutor + Send + Sync + Clone + 'static, Block: BlockT, + RA: BlockBuilderApi, { type Block = Block; type Error = client::error::Error; @@ -95,7 +94,7 @@ impl<'a, B, E, Block> AuthoringApi for SubstrateClient where let mut block_builder = self.new_block_at(at)?; if runtime_version.has_api(BLOCK_BUILDER, 1) { - self.inherent_extrinsics(at, &inherent_data)? + self.runtime_api().inherent_extrinsics(at, &inherent_data)? .into_iter().try_for_each(|i| block_builder.push(i))?; } @@ -106,10 +105,7 @@ impl<'a, B, E, Block> AuthoringApi for SubstrateClient where } /// Proposer factory. -pub struct ProposerFactory where - C: AuthoringApi, - A: txpool::ChainApi, -{ +pub struct ProposerFactory where A: txpool::ChainApi { /// The client instance. pub client: Arc, /// The transaction pool. @@ -122,10 +118,11 @@ pub struct ProposerFactory where impl consensus_common::Environment<::Block> for ProposerFactory where C: AuthoringApi, + ::Api: BlockBuilderApi<::Block>, A: txpool::ChainApi::Block>, client::error::Error: From<::Error> { - type Proposer = Proposer; + type Proposer = Proposer<::Block, C, A>; type Error = error::Error; fn init( @@ -138,7 +135,7 @@ impl consensus_common::Environment<::Block> for Propose let id = BlockId::hash(parent_hash); - let authorities: Vec = self.client.authorities(&id)?; + let authorities: Vec = self.client.runtime_api().authorities(&id)?; self.offline.write().note_new_block(&authorities[..]); info!("Starting consensus session on top of parent {:?}", parent_hash); @@ -161,21 +158,23 @@ impl consensus_common::Environment<::Block> for Propose } /// The proposer logic. -pub struct Proposer { +pub struct Proposer { client: Arc, start: Instant, - parent_hash: <::Block as BlockT>::Hash, - parent_id: BlockId<::Block>, - parent_number: <<::Block as BlockT>::Header as HeaderT>::Number, + parent_hash: ::Hash, + parent_id: BlockId, + parent_number: <::Header as HeaderT>::Number, transaction_pool: Arc>, offline: SharedOfflineTracker, authorities: Vec, minimum_timestamp: u64, } -impl consensus_common::Proposer<::Block> for Proposer where - C: AuthoringApi, - A: txpool::ChainApi::Block>, +impl consensus_common::Proposer<::Block> for Proposer where + Block: BlockT, + C: AuthoringApi, + ::Api: BlockBuilderApi, + A: txpool::ChainApi, client::error::Error: From<::Error> { type Create = Result<::Block, error::Error>; diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index ec26826d83..f64882bbe3 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -67,7 +67,7 @@ use parking_lot::{Mutex, RwLock}; use keystore::Store as Keystore; use client::BlockchainEvents; use runtime_primitives::traits::{Header, As}; -use runtime_primitives::generic::{BlockId, SignedBlock}; +use runtime_primitives::generic::BlockId; use exit_future::Signal; #[doc(hidden)] pub use tokio::runtime::TaskExecutor; @@ -87,8 +87,11 @@ pub use components::{ServiceFactory, FullBackend, FullExecutor, LightBackend, ComponentBlock, FullClient, LightClient, FullComponents, LightComponents, CodeExecutor, NetworkService, FactoryChainSpec, FactoryBlock, FactoryFullConfiguration, RuntimeGenesis, FactoryGenesis, - ComponentExHash, ComponentExtrinsic, FactoryExtrinsic, + ComponentExHash, ComponentExtrinsic, FactoryExtrinsic }; +use components::{StartRPC, CreateNetworkParams}; +#[doc(hidden)] +pub use network::OnDemand; const DEFAULT_PROTOCOL_ID: &'static str = "sup"; @@ -122,7 +125,7 @@ impl Service where Components: components::Components, ::Executor: std::clone::Clone, - for<'de> SignedBlock>: ::serde::Deserialize<'de>, + // ::RuntimeApi: client::runtime_api::BlockBuilder<<::Factory as ServiceFactory>::Block, Error=client::error::Error, OverlayedChanges=client::runtime_api::OverlayedChanges> + Sync + Send + client::runtime_api::Core<<::Factory as components::ServiceFactory>::Block, primitives::AuthorityId, Error=client::error::Error, OverlayedChanges=client::runtime_api::OverlayedChanges> + client::runtime_api::ConstructRuntimeApi::Factory as ServiceFactory>::Block> + client::runtime_api::Metadata<<::Factory as components::ServiceFactory>::Block, Vec, Error=client::error::Error> + client::runtime_api::TaggedTransactionQueue<<::Factory as components::ServiceFactory>::Block, Error=client::error::Error>, { /// Creates a new service. pub fn new( @@ -173,17 +176,10 @@ impl Service client: client.clone(), }; - let network_params = network::Params { - config: network::ProtocolConfig { - roles: config.roles, - }, - network_config: config.network, - chain: client.clone(), - on_demand: on_demand.clone() - .map(|d| d as Arc>>), - transaction_pool: Arc::new(transaction_pool_adapter), - specialization: network_protocol, - }; + let network_params = Components::CreateNetworkParams::create_network_params( + client.clone(), config.roles, config.network, on_demand.clone(), + transaction_pool_adapter, network_protocol + ); let mut protocol_id = network::ProtocolId::default(); let protocol_id_full = config.chain_spec.protocol_id().unwrap_or(DEFAULT_PROTOCOL_ID).as_bytes(); @@ -232,33 +228,13 @@ impl Service task_executor.spawn(events); } - // RPC - let rpc_config = RpcConfig { - chain_name: config.chain_spec.name().to_string(), - properties: config.chain_spec.properties().clone(), - impl_name: config.impl_name, - impl_version: config.impl_version, - }; - let (rpc_http, rpc_ws) = { - let handler = || { - let client = client.clone(); - let subscriptions = rpc::apis::Subscriptions::new(task_executor.clone()); - let chain = rpc::apis::chain::Chain::new(client.clone(), subscriptions.clone()); - let state = rpc::apis::state::State::new(client.clone(), subscriptions.clone()); - let author = rpc::apis::author::Author::new(client.clone(), transaction_pool.clone(), subscriptions.clone()); - rpc::rpc_handler::, ComponentExHash, _, _, _, _>( - state, - chain, - author, - rpc_config.clone(), - ) - }; - ( - maybe_start_server(config.rpc_http, |address| rpc::start_http(address, handler()))?, - maybe_start_server(config.rpc_ws, |address| rpc::start_ws(address, handler()))?, - ) - }; + // RPC + let (rpc_http, rpc_ws) = Components::RPC::start_rpc( + client.clone(), config.chain_spec.name().to_string(), config.impl_name, + config.impl_version, config.rpc_http, config.rpc_ws, config.chain_spec.properties(), + task_executor.clone(), transaction_pool.clone() + )?; let proposer = Arc::new(ProposerFactory { client: client.clone(), @@ -309,9 +285,7 @@ impl Service } } -impl Service where - Components: components::Components, -{ +impl Service where Components: components::Components { /// Get shared client instance. pub fn client(&self) -> Arc> { self.client.clone() @@ -420,7 +394,7 @@ impl TransactionPoolAdapter { } } -impl network::TransactionPool, ComponentBlock> for TransactionPoolAdapter { +impl network::TransactionPool, ComponentBlock> for TransactionPoolAdapter where ::RuntimeApi: Send + Sync{ fn transactions(&self) -> Vec<(ComponentExHash, ComponentExtrinsic)> { self.pool.ready() .map(|t| { @@ -468,41 +442,6 @@ impl network::TransactionPool, ComponentBlock< } } -/// Creates a simple `Service` implementation. -/// This `Service` just holds an instance to a `service::Service` and implements `Deref`. -/// It also provides a `new` function that takes a `config` and a `TaskExecutor`. -#[macro_export] -macro_rules! construct_simple_service { - ( - $name: ident - ) => { - pub struct $name { - inner: $crate::Arc<$crate::Service>, - } - - impl $name { - fn new( - config: FactoryFullConfiguration, - executor: $crate::TaskExecutor - ) -> $crate::Result { - Ok( - Self { - inner: $crate::Arc::new($crate::Service::new(config, executor)?) - } - ) - } - } - - impl $crate::Deref for $name { - type Target = $crate::Service; - - fn deref(&self) -> &Self::Target { - &self.inner - } - } - } -} - /// Constructs a service factory with the given name that implements the `ServiceFactory` trait. /// The required parameters are required to be given in the exact order. Some parameters are followed /// by `{}` blocks. These blocks are required and used to initialize the given parameter. @@ -544,6 +483,7 @@ macro_rules! construct_service_factory { $(#[$attr:meta])* struct $name:ident { Block = $block:ty, + RuntimeApi = $runtime_api:ty, NetworkProtocol = $protocol:ty { $( $protocol_init:tt )* }, RuntimeDispatch = $dispatch:ty, FullTransactionPoolApi = $full_transaction:ty { $( $full_transaction_init:tt )* }, @@ -564,6 +504,7 @@ macro_rules! construct_service_factory { #[allow(unused_variables)] impl $crate::ServiceFactory for $name { type Block = $block; + type RuntimeApi = $runtime_api; type NetworkProtocol = $protocol; type RuntimeDispatch = $dispatch; type FullTransactionPoolApi = $full_transaction; diff --git a/core/service/test/src/lib.rs b/core/service/test/src/lib.rs index 0a967e3cd6..a155b18b37 100644 --- a/core/service/test/src/lib.rs +++ b/core/service/test/src/lib.rs @@ -179,7 +179,10 @@ impl TestNet { } } -pub fn connectivity(spec: FactoryChainSpec) { +pub fn connectivity(spec: FactoryChainSpec) where + ::RuntimeApi: + client::block_builder::api::BlockBuilder<::Block> +{ const NUM_NODES: u32 = 10; { let temp = TempDir::new("substrate-connectivity-test").expect("Error creating test dir"); @@ -219,6 +222,9 @@ where F: ServiceFactory, B: Fn(&F::FullService) -> ImportBlock, E: Fn(&F::FullService) -> FactoryExtrinsic, + ::RuntimeApi: + client::block_builder::api::BlockBuilder<::Block> + + client::runtime_api::TaggedTransactionQueue<::Block> { const NUM_NODES: u32 = 10; const NUM_BLOCKS: usize = 512; @@ -255,6 +261,8 @@ where pub fn consensus(spec: FactoryChainSpec, authorities: Vec) where F: ServiceFactory, + ::RuntimeApi: + client::block_builder::api::BlockBuilder<::Block> { const NUM_NODES: u32 = 20; const NUM_BLOCKS: u64 = 200; diff --git a/core/sr-api/Cargo.toml b/core/sr-api/Cargo.toml deleted file mode 100644 index 2877dfa919..0000000000 --- a/core/sr-api/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "sr-api" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -parity-codec = { version = "2.1", default-features = false } -sr-std = { path = "../sr-std", default-features = false } -sr-primitives = { path = "../sr-primitives", default-features = false } -sr-version = { path = "../sr-version", default-features = false } - -[features] -default = ["std"] -std = [ - "sr-std/std", - "parity-codec/std", - "sr-primitives/std", - "sr-version/std", -] diff --git a/core/sr-primitives/src/traits.rs b/core/sr-primitives/src/traits.rs index 28c7997a0f..fe1c6756e2 100644 --- a/core/sr-primitives/src/traits.rs +++ b/core/sr-primitives/src/traits.rs @@ -27,8 +27,10 @@ use codec::{Codec, Encode, HasCompact}; pub use integer_sqrt::IntegerSquareRoot; pub use num_traits::{Zero, One, Bounded}; pub use num_traits::ops::checked::{CheckedAdd, CheckedSub, CheckedMul, CheckedDiv}; -use rstd::ops::{Add, Sub, Mul, Div, Rem, AddAssign, SubAssign, MulAssign, DivAssign, - RemAssign, Shl, Shr}; +use rstd::ops::{ + Add, Sub, Mul, Div, Rem, AddAssign, SubAssign, MulAssign, DivAssign, + RemAssign, Shl, Shr +}; /// A lazy value. pub trait Lazy { @@ -597,3 +599,33 @@ pub trait ProvideInherent { block: &Block, data: Self::Inherent, extract_function: &F ) -> Result<(), Self::Error>; } + +/// Auxiliary wrapper that holds an api instance and binds it to the given lifetime. +pub struct ApiRef<'a, T>(T, rstd::marker::PhantomData<&'a ()>); + +impl<'a, T> From for ApiRef<'a, T> { + fn from(api: T) -> Self { + ApiRef(api, Default::default()) + } +} + +impl<'a, T> rstd::ops::Deref for ApiRef<'a, T> { + type Target = T; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +/// Something that provides a runtime api. +pub trait ProvideRuntimeApi { + /// The concrete type that provides the api. + type Api; + + /// Returns the runtime api. + /// The returned instance will keep track of modifications to the storage. Any successful + /// call to an api function, will `commit` its changes to an internal buffer. Otherwise, + /// the modifications will be `discarded`. The modifications will not be applied to the + /// storage, even on a `commit`. + fn runtime_api<'a>(&'a self) -> ApiRef<'a, Self::Api>; +} diff --git a/core/test-client/Cargo.toml b/core/test-client/Cargo.toml index aa48f95211..9f282f9db3 100644 --- a/core/test-client/Cargo.toml +++ b/core/test-client/Cargo.toml @@ -10,6 +10,6 @@ substrate-executor = { path = "../executor" } substrate-consensus-common = { path = "../consensus/common" } substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } +substrate-state-machine = { path = "../state-machine" } substrate-test-runtime = { path = "../test-runtime" } sr-primitives = { path = "../sr-primitives" } - diff --git a/core/test-client/src/block_builder_ext.rs b/core/test-client/src/block_builder_ext.rs index 11dd859c07..3c334b07a1 100644 --- a/core/test-client/src/block_builder_ext.rs +++ b/core/test-client/src/block_builder_ext.rs @@ -20,8 +20,8 @@ use codec; use client; use keyring; use runtime; - -use primitives::{Blake2Hasher}; +use runtime_primitives::traits::ProvideRuntimeApi; +use client::block_builder::api::BlockBuilder; /// Extension trait for test block builder. pub trait BlockBuilderExt { @@ -29,10 +29,9 @@ pub trait BlockBuilderExt { fn push_transfer(&mut self, transfer: runtime::Transfer) -> Result<(), client::error::Error>; } -impl<'a, B, E> BlockBuilderExt for client::block_builder::BlockBuilder<'a, B, E, runtime::Block, Blake2Hasher> - where - B: client::backend::Backend, - E: client::CallExecutor + Clone, +impl<'a, A> BlockBuilderExt for client::block_builder::BlockBuilder<'a, runtime::Block, A> where + A: ProvideRuntimeApi + client::blockchain::HeaderBackend + 'a, + A::Api: BlockBuilder { fn push_transfer(&mut self, transfer: runtime::Transfer) -> Result<(), client::error::Error> { self.push(sign_tx(transfer)) diff --git a/core/test-client/src/client_ext.rs b/core/test-client/src/client_ext.rs index 61133c4d9d..f16bfce40f 100644 --- a/core/test-client/src/client_ext.rs +++ b/core/test-client/src/client_ext.rs @@ -35,11 +35,11 @@ pub trait TestClient: Sized { fn genesis_hash(&self) -> runtime::Hash; } -impl TestClient for Client +impl TestClient for Client where B: client::backend::Backend, E: client::CallExecutor, - Self: BlockImport + Self: BlockImport, { fn justify_and_import(&self, origin: BlockOrigin, block: runtime::Block) -> client::error::Result<()> diff --git a/core/test-client/src/lib.rs b/core/test-client/src/lib.rs index 6a92a3f692..ce504bd085 100644 --- a/core/test-client/src/lib.rs +++ b/core/test-client/src/lib.rs @@ -27,6 +27,7 @@ pub extern crate substrate_client as client; pub extern crate substrate_keyring as keyring; pub extern crate substrate_test_runtime as runtime; pub extern crate substrate_consensus_common as consensus; +extern crate substrate_state_machine as state_machine; pub mod client_ext; pub mod trait_tests; @@ -65,12 +66,12 @@ pub type Executor = client::LocalCallExecutor< >; /// Creates new client instance used for tests. -pub fn new() -> client::Client { +pub fn new() -> client::Client { new_with_backend(Arc::new(Backend::new()), false) } /// Creates new test client instance that suports changes trie creation. -pub fn new_with_changes_trie() -> client::Client { +pub fn new_with_changes_trie() -> client::Client { new_with_backend(Arc::new(Backend::new()), true) } @@ -79,7 +80,7 @@ pub fn new_with_changes_trie() -> client::Client( backend: Arc, support_changes_trie: bool -) -> client::Client>, runtime::Block> +) -> client::Client>, runtime::Block, runtime::ClientWithApi> where B: backend::LocalBackend, { diff --git a/core/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml index 6687c019f6..42f4d1edd1 100644 --- a/core/test-runtime/Cargo.toml +++ b/core/test-runtime/Cargo.toml @@ -11,8 +11,8 @@ serde_derive = { version = "1.0", optional = true } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } substrate-keyring = { path = "../keyring", optional = true } +substrate-client = { path = "../client", optional = true } substrate-primitives = { path = "../primitives", default-features = false } -sr-api = { path = "../sr-api", default-features = false } sr-std = { path = "../sr-std", default-features = false } sr-io = { path = "../sr-io", default-features = false } sr-primitives = { path = "../sr-primitives", default-features = false } @@ -26,9 +26,9 @@ std = [ "hex-literal", "serde", "serde_derive", + "substrate-client", "substrate-keyring", "parity-codec/std", - "sr-api/std", "sr-std/std", "sr-io/std", "srml-support/std", diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index 0a9c02d8df..9fbdb11638 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -22,12 +22,13 @@ extern crate sr_std as rstd; extern crate parity_codec as codec; extern crate sr_primitives as runtime_primitives; +#[macro_use] +extern crate substrate_client as client; + #[macro_use] extern crate srml_support as runtime_support; #[macro_use] extern crate parity_codec_derive; -#[macro_use] -extern crate sr_api as runtime_api; extern crate sr_io as runtime_io; #[macro_use] extern crate sr_version as runtime_version; @@ -47,12 +48,20 @@ pub mod system; use rstd::prelude::*; use codec::{Encode, Decode}; -use runtime_api::runtime::*; +use client::{runtime_api::runtime::*, block_builder::api::runtime::*}; +#[cfg(feature = "std")] +use client::runtime_api::ApiExt; use runtime_primitives::traits::{BlindCheckable, BlakeTwo256, Block as BlockT, Extrinsic as ExtrinsicT}; +#[cfg(feature = "std")] +use runtime_primitives::traits::ApiRef; use runtime_primitives::{ApplyResult, Ed25519Signature, transaction_validity::TransactionValidity}; +#[cfg(feature = "std")] +use runtime_primitives::generic::BlockId; use runtime_version::RuntimeVersion; pub use primitives::hash::H256; use primitives::AuthorityId; +#[cfg(feature = "std")] +use primitives::OpaqueMetadata; #[cfg(any(feature = "std", test))] use runtime_version::NativeVersion; @@ -152,8 +161,8 @@ pub fn changes_trie_config() -> primitives::ChangesTrieConfiguration { } } -mod test_api { - decl_apis! { +pub mod test_api { + decl_runtime_apis! { pub trait TestAPI { fn balance_of(id: AccountId) -> u64; } @@ -162,10 +171,161 @@ mod test_api { use test_api::runtime::TestAPI; +#[cfg(feature = "std")] +pub struct ClientWithApi { + call: ::std::ptr::NonNull>, + commit_on_success: ::std::cell::RefCell, + initialised_block: ::std::cell::RefCell>>, + changes: ::std::cell::RefCell, +} + +#[cfg(feature = "std")] +unsafe impl Send for ClientWithApi {} +#[cfg(feature = "std")] +unsafe impl Sync for ClientWithApi {} + +#[cfg(feature = "std")] +impl ApiExt for ClientWithApi { + fn map_api_result Result, R, E>(&self, map_call: F) -> Result { + *self.commit_on_success.borrow_mut() = false; + let res = map_call(self); + *self.commit_on_success.borrow_mut() = true; + + self.commit_on_ok(&res); + + res + } +} + +#[cfg(feature = "std")] +impl client::runtime_api::ConstructRuntimeApi for ClientWithApi { + fn construct_runtime_api<'a, T: client::runtime_api::CallApiAt>(call: &'a T) -> ApiRef<'a, Self> { + ClientWithApi { + call: unsafe { + ::std::ptr::NonNull::new_unchecked( + ::std::mem::transmute( + call as &client::runtime_api::CallApiAt + ) + ) + }, + commit_on_success: true.into(), + initialised_block: None.into(), + changes: Default::default(), + }.into() + } +} + +#[cfg(feature = "std")] +impl ClientWithApi { + fn call_api_at( + &self, + at: &BlockId, + function: &'static str, + args: &A + ) -> client::error::Result { + let res = unsafe { + self.call.as_ref().call_api_at( + at, + function, + args.encode(), + &mut *self.changes.borrow_mut(), + &mut *self.initialised_block.borrow_mut() + ).and_then(|r| + R::decode(&mut &r[..]) + .ok_or_else(|| + client::error::ErrorKind::CallResultDecode(function).into() + ) + ) + }; + + self.commit_on_ok(&res); + res + } + + fn commit_on_ok(&self, res: &Result) { + if *self.commit_on_success.borrow() { + if res.is_err() { + self.changes.borrow_mut().discard_prospective(); + } else { + self.changes.borrow_mut().commit_prospective(); + } + } + } +} + +#[cfg(feature = "std")] +impl client::runtime_api::Core for ClientWithApi { + fn version(&self, at: &BlockId) -> Result { + self.call_api_at(at, "version", &()) + } + + fn authorities(&self, at: &BlockId) -> Result, client::error::Error> { + self.call_api_at(at, "authorities", &()) + } + + fn execute_block(&self, at: &BlockId, block: &Block) -> Result<(), client::error::Error> { + self.call_api_at(at, "execute_block", block) + } + + fn initialise_block(&self, at: &BlockId, header: &::Header) -> Result<(), client::error::Error> { + self.call_api_at(at, "initialise_block", header) + } +} + +#[cfg(feature = "std")] +impl client::block_builder::api::BlockBuilder for ClientWithApi { + fn apply_extrinsic(&self, at: &BlockId, extrinsic: &::Extrinsic) -> Result { + self.call_api_at(at, "apply_extrinsic", extrinsic) + } + + fn finalise_block(&self, at: &BlockId) -> Result<::Header, client::error::Error> { + self.call_api_at(at, "finalise_block", &()) + } + + fn inherent_extrinsics( + &self, at: &BlockId, inherent: &Inherent + ) -> Result, client::error::Error> { + self.call_api_at(at, "inherent_extrinsics", inherent) + } + + fn check_inherents(&self, at: &BlockId, block: &Block, inherent: &Inherent) -> Result, client::error::Error> { + self.call_api_at(at, "check_inherents", &(block, inherent)) + } + + fn random_seed(&self, at: &BlockId) -> Result<::Hash, client::error::Error> { + self.call_api_at(at, "random_seed", &()) + } +} + +#[cfg(feature = "std")] +impl client::runtime_api::TaggedTransactionQueue for ClientWithApi { + fn validate_transaction( + &self, + at: &BlockId, + utx: &::Extrinsic + ) -> Result { + self.call_api_at(at, "validate_transaction", utx) + } +} + +#[cfg(feature = "std")] +impl client::runtime_api::Metadata for ClientWithApi { + fn metadata(&self, at: &BlockId) -> Result { + self.call_api_at(at, "metadata", &()) + } +} + +#[cfg(feature = "std")] +impl test_api::TestAPI for ClientWithApi { + fn balance_of(&self, at: &BlockId, id: &AccountId) -> Result { + self.call_api_at(at, "balance_of", id) + } +} + struct Runtime; -impl_apis! { - impl Core for Runtime { +impl_runtime_apis! { + impl Core for Runtime { fn version() -> RuntimeVersion { version() } @@ -177,19 +337,19 @@ impl_apis! { fn execute_block(block: Block) { system::execute_block(block) } + + fn initialise_block(header: ::Header) { + system::initialise_block(header) + } } - impl TaggedTransactionQueue for Runtime { + impl TaggedTransactionQueue for Runtime { fn validate_transaction(utx: ::Extrinsic) -> TransactionValidity { system::validate_transaction(utx) } } impl BlockBuilder for Runtime { - fn initialise_block(header: ::Header) { - system::initialise_block(header) - } - fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult { system::execute_transaction(extrinsic) } diff --git a/core/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock index a0ececf55f..f9c0964148 100644 --- a/core/test-runtime/wasm/Cargo.lock +++ b/core/test-runtime/wasm/Cargo.lock @@ -6,6 +6,27 @@ dependencies = [ "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "backtrace" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "backtrace-sys" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "base58" version = "0.1.0" @@ -30,11 +51,35 @@ name = "byteorder" version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "bytes" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cc" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "cfg-if" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "chrono" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "cloudabi" version = "0.0.3" @@ -48,6 +93,11 @@ name = "constant_time_eq" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crossbeam" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "crossbeam-deque" version = "0.2.0" @@ -57,6 +107,15 @@ dependencies = [ "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-deque" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-epoch" version = "0.3.1" @@ -71,6 +130,19 @@ dependencies = [ "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-epoch" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-utils" version = "0.2.2" @@ -79,6 +151,11 @@ dependencies = [ "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-utils" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "crunchy" version = "0.1.6" @@ -102,6 +179,14 @@ name = "environmental" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "error-chain" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "fixed-hash" version = "0.3.0-beta.3" @@ -115,6 +200,24 @@ dependencies = [ "static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "fnv" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -129,6 +232,11 @@ name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "gcc" version = "0.3.54" @@ -172,11 +280,58 @@ dependencies = [ "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "httparse" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "integer-sqrt" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "iovec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "itoa" +version = "0.4.3" +source = "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 = "kvdb" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "lazy_static" version = "0.2.11" @@ -190,11 +345,25 @@ dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "lazycell" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "libc" version = "0.2.43" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "lock_api" +version = "0.1.4" +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)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "log" version = "0.3.9" @@ -229,6 +398,11 @@ dependencies = [ "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "memoffset" version = "0.2.1" @@ -248,16 +422,84 @@ name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "mio" +version = "0.6.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.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 = "mio-extras" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio-uds" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miow" +version = "0.2.1" +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)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "nan-preserving-float" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "net2" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "nodrop" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "num-integer" +version = "0.1.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num-traits" version = "0.2.6" @@ -271,6 +513,30 @@ dependencies = [ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "openssl" +version = "0.10.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "openssl-sys" +version = "0.9.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "owning_ref" version = "0.3.3" @@ -279,6 +545,11 @@ dependencies = [ "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parity-bytes" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "parity-codec" version = "2.1.5" @@ -315,6 +586,15 @@ dependencies = [ "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parking_lot" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parking_lot_core" version = "0.2.14" @@ -326,6 +606,28 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parking_lot_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "pkg-config" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "proc-macro-hack" version = "0.4.1" @@ -401,6 +703,11 @@ dependencies = [ "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "redox_syscall" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "ring" version = "0.12.1" @@ -413,6 +720,11 @@ dependencies = [ "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rustc-demangle" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "rustc-hex" version = "2.0.1" @@ -426,6 +738,11 @@ dependencies = [ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ryu" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "scopeguard" version = "0.3.3" @@ -460,21 +777,67 @@ dependencies = [ ] [[package]] -name = "smallvec" -version = "0.6.5" +name = "serde_json" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "sr-api" -version = "0.1.0" +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slab" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slog" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slog-async" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "sr-version 0.1.0", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-json" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-scope" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "smallvec" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -534,6 +897,8 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -561,6 +926,77 @@ name = "static_assertions" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "substrate-client" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", + "substrate-consensus-common 0.1.0", + "substrate-executor 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-state-machine 0.1.0", + "substrate-telemetry 0.3.0", + "substrate-trie 0.4.0", +] + +[[package]] +name = "substrate-consensus-common" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-version 0.1.0", + "substrate-primitives 0.1.0", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-executor" +version = "0.1.0" +dependencies = [ + "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-version 0.1.0", + "substrate-primitives 0.1.0", + "substrate-serializer 0.1.0", + "substrate-state-machine 0.1.0", + "substrate-trie 0.4.0", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-keyring" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0", +] + [[package]] name = "substrate-primitives" version = "0.1.0" @@ -586,6 +1022,14 @@ dependencies = [ "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "substrate-serializer" +version = "0.1.0" +dependencies = [ + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "substrate-state-machine" version = "0.1.0" @@ -602,6 +1046,20 @@ dependencies = [ "trie-root 0.9.0 (git+https://github.com/paritytech/trie)", ] +[[package]] +name = "substrate-telemetry" +version = "0.3.0" +dependencies = [ + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-json 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-scope 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "substrate-test-runtime" version = "0.1.0" @@ -610,12 +1068,12 @@ dependencies = [ "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 0.1.0", "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", "srml-support 0.1.0", + "substrate-client 0.1.0", "substrate-primitives 0.1.0", ] @@ -650,6 +1108,182 @@ dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "thread_local" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "time" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-codec" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-current-thread" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-executor" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-fs" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-io" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-reactor" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-tcp" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-threadpool" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-timer" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-udp" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-uds" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "trie-db" version = "0.9.0" @@ -687,6 +1321,19 @@ dependencies = [ "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-xid" version = "0.1.0" @@ -705,6 +1352,21 @@ name = "untrusted" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "vcpkg" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "version_check" version = "0.1.5" @@ -726,6 +1388,11 @@ dependencies = [ "parity-wasm 0.31.3 (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.6" @@ -735,6 +1402,11 @@ 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" @@ -745,52 +1417,115 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "ws" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +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)", +] + [metadata] "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" +"checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" +"checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" "checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" "checksum byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "90492c5858dd7d2e78691cfb89f90d273a2800fc11d98f60786e5d87e2f83781" +"checksum bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ce55bd354b095246fc34caf4e9e242f5297a7fd938b090cadfea6eee614aa62" +"checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" "checksum cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4e7bb64a8ebb0d856483e1e682ea3422f883c5f5615a90d51a2c82fe87fdd3" +"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" +"checksum crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "bd66663db5a988098a89599d4857919b3acf7f61402e61365acfd3919857b9be" "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" +"checksum crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3486aefc4c0487b9cb52372c97df0a48b8c249514af1ee99703bf70d2f2ceda1" "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" +"checksum crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30fecfcac6abfef8771151f8be4abc9e4edc112c2bcb233314cafde2680536e9" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" +"checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" "checksum crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c240f247c278fa08a6d4820a6a222bfc6e0d999e51ba67be94f44c905b2161f2" "checksum elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88d4851b005ef16de812ea9acdb7bece2f0a40dd86c07b85631d7dafa54537bb" "checksum environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db746025e3ea695bfa0ae744dbacd5fcfc8db51b9760cf8bd0ab69708bb93c49" +"checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" "checksum fixed-hash 0.3.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4e71c99c903a9fe54baed1bc701b43daba8c6dc6d4aec89a32f667ab6b3094c4" +"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" +"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" "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 futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" "checksum hash-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" "checksum hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4da5f0e01bd8a71a224a4eedecaacfcabda388dbb7a80faf04d3514287572d95" "checksum hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d340b6514f232f6db1bd16db65302a5278a04fef9ce867cb932e7e5fa21130a" +"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" +"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" +"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" +"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" +"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "72ae89206cea31c32014b39d5a454b96135894221610dbfd19cf4d2d044fa546" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" "checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7" +"checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" +"checksum lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775751a3e69bde4df9b38dd00a1b5d6ac13791e4223d4a0506577f0dd27cfb7a" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" "checksum log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fcce5fa49cc693c312001daf1d13411c4a5283796bac1084299ea3e567113f" "checksum mashup 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d886e371548f5c66258a99df9ec03366bff02cc96ea3d3f8f346b5d2d6836de7" "checksum mashup-impl 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8d426741e35fab52542d84dfee615f442c2b37247bee8b1ed5c25ca723487580" +"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" "checksum memory-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" +"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" +"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" +"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" +"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" +"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" +"checksum openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "5e1309181cdcbdb51bc3b6bedb33dfac2a83b3d585033d3f6d9e22e8c1928613" +"checksum openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)" = "278c1ad40a89aa1e741a1eed089a2f60b18fab8089c3139b542140fc7d674106" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" +"checksum parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5168b4cf41f3835e4bc6ffb32f51bc9365dc50cb351904595b3931d917fd0c" "checksum parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dca389ea5e1632c89b2ce54f7e2b4a8a8c9d278042222a91e0bf95451218cb4c" "checksum parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffa42c2cb493b60b12c75b26e8c94cb734af4df4d7f2cc229dc04c1953dac189" "checksum parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "511379a8194230c2395d2f5fa627a5a7e108a9f976656ce723ae68fca4097bfc" "checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" +"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" "checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" +"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" +"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" +"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c725b36c99df7af7bf9324e9c999b9e37d92c8f8caf106d82e1d7953218d2d8" "checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" "checksum proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)" = "ffe022fb8c8bd254524b0b3305906c1921fa37a84a644e29079a9e62200c3901" @@ -800,29 +1535,62 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "edecf0f94da5551fc9b492093e30b041a891657db7940ee221f9d2f66e82eef2" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" +"checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" +"checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395" "checksum rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "403bb3a286107a04825a5f82e1270acc1e14028d3d554d7a1e08914549575ab8" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)" = "84257ccd054dc351472528c8587b4de2dbf0dc0fe2e634030c1a90bfdacebaa9" "checksum serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)" = "31569d901045afbff7a9479f793177fe9259819aff10ab4f89ef69bbc5f567fe" +"checksum serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)" = "43344e7ce05d0d8280c5940cabb4964bea626aa58b1ec0e8c73fa2a8512a38ce" +"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" +"checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" +"checksum slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e1a2eec401952cd7b12a84ea120e2d57281329940c3f93c2bf04f462539508e" +"checksum slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e544d16c6b230d84c866662fe55e31aacfca6ae71e6fc49ae9a311cb379bfc2f" +"checksum slog-json 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddd14b8df2df39378b3e933c79784350bf715b11444d99f903df0253bbe524e5" +"checksum slog-scope 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "053344c94c0e2b22da6305efddb698d7c485809427cf40555dc936085f67a9df" "checksum smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "153ffa32fd170e9944f7e0838edf824a754ec4c1fc64746fcc9fe1f8fa602e5d" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" "checksum syn 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)" = "854b08a640fc8f54728fb95321e3ec485b365a97fe47609797c671addd1dde69" +"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" +"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +"checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" +"checksum tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6e93c78d23cc61aa245a8acd2c4a79c4d7fa7fb5c3ca90d5737029f043a84895" +"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" +"checksum tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f90fcd90952f0a496d438a976afba8e5c205fb12123f813d8ab3aa1c8436638c" +"checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde" +"checksum tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "60ae25f6b17d25116d2cba342083abe5255d3c2c79cb21ea11aa049c53bf7c75" +"checksum tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "7392fe0a70d5ce0c882c4778116c519bd5dbaa8a7c3ae3d04578b3afafdcda21" +"checksum tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4b26fd37f1125738b2170c80b551f69ff6fecb277e6e5ca885e53eec2b005018" +"checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912" +"checksum tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3929aee321c9220ed838ed6c3928be7f9b69986b0e3c22c972a66dbf8a298c68" +"checksum tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3a52f00c97fedb6d535d27f65cccb7181c8dd4c6edc3eda9ea93f6d45d05168e" +"checksum tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da941144b816d0dcda4db3a1ba87596e4df5e860a72b70783fe435891f80601c" +"checksum tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df195376b43508f01570bacc73e13a1de0854dc59e79d1ec09913e8db6dd2a70" "checksum trie-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum trie-root 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f85be565a110ed72ed7048cf56570db04ce0a592c98aa59b7dacde3e5718750" "checksum uint 0.5.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4630460173a57c0af94b8306091e018025d988473f641a4af754b6cde980e1e3" +"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +"checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "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 url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" +"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" +"checksum ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "329d3e6dd450a9c5c73024e1047f0be7e24121a68484eb0b5368977bee3cf8c3" +"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" diff --git a/core/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml index f606a6b300..02b97a2c7e 100644 --- a/core/test-runtime/wasm/Cargo.toml +++ b/core/test-runtime/wasm/Cargo.toml @@ -9,7 +9,7 @@ hex-literal = { version = "0.1.0", optional = true } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } substrate-primitives = { path = "../../primitives", default-features = false } -sr-api = { path = "../../sr-api", default-features = false } +substrate-client = { path = "../../client", default-features = false } sr-std = { path = "../../sr-std", default-features = false } sr-io = { path = "../../sr-io", default-features = false } sr-version = { path = "../../sr-version", default-features = false } @@ -22,12 +22,12 @@ std = [ "log", "hex-literal", "parity-codec/std", - "sr-api/std", "sr-std/std", "sr-io/std", "srml-support/std", "sr-version/std", "substrate-primitives/std", + "substrate-client/std", "sr-primitives/std" ] diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index c526eacd1f6de9e9567014c2f14dd520dcceb777..76ec888e142aeab6808077bf9e13aa9ff43b221c 100644 GIT binary patch delta 6764 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 B@h|`Y diff --git a/core/transaction-pool/src/api.rs b/core/transaction-pool/src/api.rs index a8cb3ada50..a29010b50c 100644 --- a/core/transaction-pool/src/api.rs +++ b/core/transaction-pool/src/api.rs @@ -18,8 +18,9 @@ use std::{ sync::Arc, + marker::PhantomData, }; -use client::{self, runtime_api::TaggedTransactionQueue}; +use client::{runtime_api::TaggedTransactionQueue, blockchain::HeaderBackend}; use parity_codec::Encode; use txpool; use substrate_primitives::{ @@ -36,30 +37,34 @@ use sr_primitives::{ use error; /// The transaction pool logic -pub struct ChainApi { - client: Arc>, +pub struct ChainApi { + client: Arc, + _marker: PhantomData, } -impl ChainApi { +impl ChainApi where + Block: traits::Block, + T: traits::ProvideRuntimeApi + HeaderBackend { /// Create new transaction pool logic. - pub fn new(client: Arc>) -> Self { + pub fn new(client: Arc) -> Self { ChainApi { client, + _marker: Default::default() } } } -impl txpool::ChainApi for ChainApi where +impl txpool::ChainApi for ChainApi where Block: traits::Block, - B: client::backend::Backend + Send + Sync + 'static, - E: client::CallExecutor + Send + Sync + Clone + 'static, + T: traits::ProvideRuntimeApi + HeaderBackend, + T::Api: TaggedTransactionQueue { type Block = Block; type Hash = H256; type Error = error::Error; fn validate_transaction(&self, at: &BlockId, uxt: &txpool::ExtrinsicFor) -> error::Result { - Ok(self.client.validate_transaction(at, uxt)?) + Ok(self.client.runtime_api().validate_transaction(at, uxt)?) } // TODO [toDr] Use proper lbock number type diff --git a/node/cli/src/lib.rs b/node/cli/src/lib.rs index 078ee5e143..8a56e2edfa 100644 --- a/node/cli/src/lib.rs +++ b/node/cli/src/lib.rs @@ -33,6 +33,7 @@ extern crate substrate_transaction_pool as transaction_pool; #[macro_use] extern crate substrate_network as network; extern crate substrate_consensus_aura as consensus; +extern crate substrate_client as client; extern crate node_primitives; #[macro_use] extern crate substrate_service; @@ -49,6 +50,7 @@ mod service; use tokio::runtime::Runtime; pub use cli::{VersionInfo, IntoExit}; use substrate_service::{ServiceFactory, Roles as ServiceRoles}; +use std::ops::Deref; /// The chain specification option. #[derive(Clone, Debug)] @@ -118,12 +120,13 @@ pub fn run(args: I, exit: E, version: cli::VersionInfo) -> error::Resul Ok(()) } -fn run_until_exit( +fn run_until_exit( runtime: &mut Runtime, - service: service::Service, + service: T, e: E, ) -> error::Result<()> where + T: Deref>, C: substrate_service::Components, E: IntoExit, { diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index d02ea48767..820c1dee26 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -20,8 +20,8 @@ use std::sync::Arc; use transaction_pool::{self, txpool::{Pool as TransactionPool}}; +use node_runtime::{GenesisConfig, ClientWithApi}; use node_primitives::Block; -use node_runtime::GenesisConfig; use substrate_service::{ FactoryFullConfiguration, LightComponents, FullComponents, FullBackend, FullClient, LightClient, LightBackend, FullExecutor, LightExecutor, @@ -29,6 +29,7 @@ use substrate_service::{ }; use node_executor; use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue}; +use client; const AURA_SLOT_DURATION: u64 = 6; @@ -37,23 +38,22 @@ construct_simple_protocol! { pub struct NodeProtocol where Block = Block { } } -construct_simple_service!(Service); - construct_service_factory! { struct Factory { Block = Block, + RuntimeApi = ClientWithApi, NetworkProtocol = NodeProtocol { |config| Ok(NodeProtocol::new()) }, RuntimeDispatch = node_executor::Executor, - FullTransactionPoolApi = transaction_pool::ChainApi, FullExecutor, Block> + FullTransactionPoolApi = transaction_pool::ChainApi, FullExecutor, Block, ClientWithApi>, Block> { |config, client| Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(client))) }, - LightTransactionPoolApi = transaction_pool::ChainApi, LightExecutor, Block> + LightTransactionPoolApi = transaction_pool::ChainApi, LightExecutor, Block, ClientWithApi>, Block> { |config, client| Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(client))) }, Genesis = GenesisConfig, Configuration = (), - FullService = Service> + FullService = FullComponents { |config: FactoryFullConfiguration, executor: TaskExecutor| { let is_auth = config.roles == Roles::AUTHORITY; - Service::>::new(config, executor.clone()).map(move |service|{ + FullComponents::::new(config, executor.clone()).map(move |service|{ if is_auth { if let Ok(Some(Ok(key))) = service.keystore().contents() .map(|keys| keys.get(0).map(|k| service.keystore().load(k, ""))) @@ -77,18 +77,20 @@ construct_service_factory! { }) } }, - LightService = Service> - { |config, executor| Service::>::new(config, executor) }, + LightService = LightComponents + { |config, executor| >::new(config, executor) }, FullImportQueue = AuraImportQueue> { |config, client| Ok(import_queue(AuraConfig { local_key: None, slot_duration: 5 }, client)) }, LightImportQueue = AuraImportQueue> - { |config, client| Ok(import_queue(AuraConfig { - local_key: None, - slot_duration: 5 - }, client)) }, + { |config, client| Ok( + import_queue(AuraConfig { + local_key: None, + slot_duration: 5 + }, client)) + }, } } diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 6c86355b25..1f6ccad0c3 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -11,10 +11,10 @@ serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false } parity-codec = "2.1" parity-codec-derive = "2.1" -sr-api = { path = "../../core/sr-api", default-features = false } sr-std = { path = "../../core/sr-std" } srml-support = { path = "../../srml/support" } substrate-primitives = { path = "../../core/primitives" } +substrate-client = { path = "../../core/client", optional = true } substrate-keyring = { path = "../../core/keyring" } srml-balances = { path = "../../srml/balances" } srml-consensus = { path = "../../srml/consensus" } @@ -37,7 +37,6 @@ default = ["std"] std = [ "parity-codec/std", "substrate-primitives/std", - "sr-api/std", "sr-std/std", "srml-support/std", "srml-balances/std", @@ -57,5 +56,6 @@ std = [ "node-primitives/std", "serde_derive", "serde/std", - "safe-mix/std" + "safe-mix/std", + "substrate-client", ] diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index 8a982b9ff8..84ffbb4ab0 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -20,9 +20,6 @@ // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. #![recursion_limit="256"] -#[macro_use] -extern crate sr_api as runtime_api; - #[macro_use] extern crate srml_support; @@ -35,9 +32,14 @@ extern crate serde_derive; extern crate substrate_primitives; +#[macro_use] +extern crate substrate_client as client; + #[macro_use] extern crate parity_codec_derive; +extern crate parity_codec as codec; + extern crate sr_std as rstd; extern crate srml_balances as balances; extern crate srml_consensus as consensus; @@ -55,23 +57,33 @@ extern crate srml_upgrade_key as upgrade_key; extern crate sr_version as version; extern crate node_primitives; +#[cfg(feature = "std")] +use codec::{Encode, Decode}; use rstd::prelude::*; use substrate_primitives::u32_trait::{_2, _4}; use node_primitives::{ - AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, - SessionKey, Signature + AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, SessionKey, Signature }; -use runtime_api::{runtime::*, id::*}; +#[cfg(feature = "std")] +use node_primitives::Block as GBlock; +use client::{block_builder::api::runtime::*, runtime_api::{runtime::*, id::*}}; +#[cfg(feature = "std")] +use client::runtime_api::ApiExt; use runtime_primitives::ApplyResult; use runtime_primitives::transaction_validity::TransactionValidity; use runtime_primitives::generic; use runtime_primitives::traits::{Convert, BlakeTwo256, Block as BlockT}; +#[cfg(feature = "std")] +use runtime_primitives::traits::ApiRef; +#[cfg(feature = "std")] +use substrate_primitives::AuthorityId; use version::RuntimeVersion; use council::{motions as council_motions, voting as council_voting}; #[cfg(feature = "std")] use council::seats as council_seats; #[cfg(any(feature = "std", test))] use version::NativeVersion; +use substrate_primitives::OpaqueMetadata; #[cfg(any(feature = "std", test))] pub use runtime_primitives::BuildStorage; @@ -236,8 +248,155 @@ pub type CheckedExtrinsic = generic::CheckedExtrinsic; /// Executive: handles dispatch to the various modules. pub type Executive = executive::Executive, Balances, AllModules>; -impl_apis! { - impl Core for Runtime { +#[cfg(feature = "std")] +pub struct ClientWithApi { + call: ::std::ptr::NonNull>, + commit_on_success: ::std::cell::RefCell, + initialised_block: ::std::cell::RefCell>, + changes: ::std::cell::RefCell, +} + +#[cfg(feature = "std")] +unsafe impl Send for ClientWithApi {} +#[cfg(feature = "std")] +unsafe impl Sync for ClientWithApi {} + +#[cfg(feature = "std")] +impl ApiExt for ClientWithApi { + fn map_api_result Result, R, E>(&self, map_call: F) -> Result { + *self.commit_on_success.borrow_mut() = false; + let res = map_call(self); + *self.commit_on_success.borrow_mut() = true; + + self.commit_on_ok(&res); + + res + } +} + +#[cfg(feature = "std")] +impl client::runtime_api::ConstructRuntimeApi for ClientWithApi { + fn construct_runtime_api<'a, T: client::runtime_api::CallApiAt>(call: &'a T) -> ApiRef<'a, Self> { + ClientWithApi { + call: unsafe { + ::std::ptr::NonNull::new_unchecked( + ::std::mem::transmute( + call as &client::runtime_api::CallApiAt + ) + ) + }, + commit_on_success: true.into(), + initialised_block: None.into(), + changes: Default::default(), + }.into() + } +} + +#[cfg(feature = "std")] +impl ClientWithApi { + fn call_api_at( + &self, + at: &GBlockId, + function: &'static str, + args: &A + ) -> client::error::Result { + let res = unsafe { + self.call.as_ref().call_api_at( + at, + function, + args.encode(), + &mut *self.changes.borrow_mut(), + &mut *self.initialised_block.borrow_mut() + ).and_then(|r| + R::decode(&mut &r[..]) + .ok_or_else(|| + client::error::ErrorKind::CallResultDecode(function).into() + ) + ) + }; + + self.commit_on_ok(&res); + res + } + + fn commit_on_ok(&self, res: &Result) { + if *self.commit_on_success.borrow() { + if res.is_err() { + self.changes.borrow_mut().discard_prospective(); + } else { + self.changes.borrow_mut().commit_prospective(); + } + } + } +} + +#[cfg(feature = "std")] +type GBlockId = generic::BlockId; + +#[cfg(feature = "std")] +impl client::runtime_api::Core for ClientWithApi { + fn version(&self, at: &GBlockId) -> Result { + self.call_api_at(at, "version", &()) + } + + fn authorities(&self, at: &GBlockId) -> Result, client::error::Error> { + self.call_api_at(at, "authorities", &()) + } + + fn execute_block(&self, at: &GBlockId, block: &GBlock) -> Result<(), client::error::Error> { + self.call_api_at(at, "execute_block", block) + } + + fn initialise_block(&self, at: &GBlockId, header: &::Header) -> Result<(), client::error::Error> { + self.call_api_at(at, "initialise_block", header) + } +} + +#[cfg(feature = "std")] +impl client::block_builder::api::BlockBuilder for ClientWithApi { + fn apply_extrinsic(&self, at: &GBlockId, extrinsic: &::Extrinsic) -> Result { + self.call_api_at(at, "apply_extrinsic", extrinsic) + } + + fn finalise_block(&self, at: &GBlockId) -> Result<::Header, client::error::Error> { + self.call_api_at(at, "finalise_block", &()) + } + + fn inherent_extrinsics( + &self, at: &GBlockId, inherent: &Inherent + ) -> Result, client::error::Error> { + self.call_api_at(at, "inherent_extrinsics", inherent) + } + + fn check_inherents(&self, at: &GBlockId, block: &GBlock, inherent: &Inherent) -> Result, client::error::Error> { + self.call_api_at(at, "check_inherents", &(block, inherent)) + } + + fn random_seed(&self, at: &GBlockId) -> Result<::Hash, client::error::Error> { + self.call_api_at(at, "random_seed", &()) + } +} + +#[cfg(feature = "std")] +impl client::runtime_api::TaggedTransactionQueue for ClientWithApi { + fn validate_transaction( + &self, + at: &GBlockId, + utx: &::Extrinsic + ) -> Result { + self.call_api_at(at, "validate_transaction", utx) + } +} + +#[cfg(feature = "std")] +impl client::runtime_api::Metadata for ClientWithApi { + fn metadata(&self, at: &GBlockId) -> Result { + self.call_api_at(at, "metadata", &()) + } +} + +impl_runtime_apis! { + impl Core for Runtime { fn version() -> RuntimeVersion { VERSION } @@ -249,19 +408,19 @@ impl_apis! { fn execute_block(block: Block) { Executive::execute_block(block) } - } - impl Metadata for Runtime { - fn metadata() -> RuntimeMetadata { - Runtime::metadata() + fn initialise_block(header: ::Header) { + Executive::initialise_block(&header) } } - impl BlockBuilder for Runtime { - fn initialise_block(header: ::Header) { - Executive::initialise_block(&header) + impl Metadata for Runtime { + fn metadata() -> OpaqueMetadata { + Runtime::metadata().into() } + } + impl BlockBuilder for Runtime { fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult { Executive::apply_extrinsic(extrinsic) } @@ -283,7 +442,7 @@ impl_apis! { } } - impl TaggedTransactionQueue for Runtime { + impl TaggedTransactionQueue for Runtime { fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity { Executive::validate_transaction(tx) } diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 85a0109be8..bb067bc400 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -6,6 +6,27 @@ dependencies = [ "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "backtrace" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "backtrace-sys" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "base58" version = "0.1.0" @@ -30,11 +51,35 @@ name = "byteorder" version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "bytes" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cc" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "cfg-if" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "chrono" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "cloudabi" version = "0.0.3" @@ -48,6 +93,11 @@ name = "constant_time_eq" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crossbeam" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "crossbeam-deque" version = "0.2.0" @@ -57,6 +107,15 @@ dependencies = [ "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-deque" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-epoch" version = "0.3.1" @@ -71,6 +130,19 @@ dependencies = [ "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-epoch" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-utils" version = "0.2.2" @@ -79,6 +151,11 @@ dependencies = [ "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-utils" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "crunchy" version = "0.1.6" @@ -102,6 +179,14 @@ name = "environmental" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "error-chain" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "fixed-hash" version = "0.3.0-beta.3" @@ -115,6 +200,24 @@ dependencies = [ "static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "fnv" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -129,6 +232,11 @@ name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "gcc" version = "0.3.54" @@ -172,11 +280,58 @@ dependencies = [ "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "httparse" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "integer-sqrt" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "iovec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "itoa" +version = "0.4.3" +source = "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 = "kvdb" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "lazy_static" version = "0.2.11" @@ -190,11 +345,25 @@ dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "lazycell" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "libc" version = "0.2.43" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "lock_api" +version = "0.1.4" +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)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "log" version = "0.3.9" @@ -229,6 +398,11 @@ dependencies = [ "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "memoffset" version = "0.2.1" @@ -248,11 +422,71 @@ name = "memory_units" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "mio" +version = "0.6.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.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 = "mio-extras" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio-uds" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miow" +version = "0.2.1" +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)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "nan-preserving-float" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "net2" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "node-primitives" version = "0.1.0" @@ -275,7 +509,6 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-api 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", @@ -292,6 +525,7 @@ dependencies = [ "srml-timestamp 0.1.0", "srml-treasury 0.1.0", "srml-upgrade-key 0.1.0", + "substrate-client 0.1.0", "substrate-primitives 0.1.0", ] @@ -300,6 +534,14 @@ name = "nodrop" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "num-integer" +version = "0.1.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num-traits" version = "0.2.6" @@ -313,6 +555,30 @@ dependencies = [ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "openssl" +version = "0.10.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "openssl-sys" +version = "0.9.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "owning_ref" version = "0.3.3" @@ -321,6 +587,11 @@ dependencies = [ "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parity-bytes" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "parity-codec" version = "2.1.5" @@ -357,6 +628,15 @@ dependencies = [ "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parking_lot" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parking_lot_core" version = "0.2.14" @@ -368,6 +648,28 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parking_lot_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "pkg-config" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "proc-macro-hack" version = "0.4.1" @@ -453,6 +755,11 @@ dependencies = [ "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "redox_syscall" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "ring" version = "0.12.1" @@ -465,6 +772,11 @@ dependencies = [ "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rustc-demangle" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "rustc-hex" version = "2.0.1" @@ -478,6 +790,11 @@ dependencies = [ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ryu" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "safe-mix" version = "1.0.0" @@ -520,21 +837,67 @@ dependencies = [ ] [[package]] -name = "smallvec" -version = "0.6.5" +name = "serde_json" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "sr-api" -version = "0.1.0" +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slab" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slog" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slog-async" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "sr-version 0.1.0", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-json" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-scope" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "smallvec" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -710,6 +1073,8 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -845,6 +1210,68 @@ name = "static_assertions" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "substrate-client" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", + "substrate-consensus-common 0.1.0", + "substrate-executor 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-state-machine 0.1.0", + "substrate-telemetry 0.3.0", + "substrate-trie 0.4.0", +] + +[[package]] +name = "substrate-consensus-common" +version = "0.1.0" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-version 0.1.0", + "substrate-primitives 0.1.0", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-executor" +version = "0.1.0" +dependencies = [ + "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-version 0.1.0", + "substrate-primitives 0.1.0", + "substrate-serializer 0.1.0", + "substrate-state-machine 0.1.0", + "substrate-trie 0.4.0", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "substrate-keyring" version = "0.1.0" @@ -879,6 +1306,14 @@ dependencies = [ "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "substrate-serializer" +version = "0.1.0" +dependencies = [ + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "substrate-state-machine" version = "0.1.0" @@ -895,6 +1330,20 @@ dependencies = [ "trie-root 0.9.0 (git+https://github.com/paritytech/trie)", ] +[[package]] +name = "substrate-telemetry" +version = "0.3.0" +dependencies = [ + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-json 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-scope 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "substrate-trie" version = "0.4.0" @@ -926,6 +1375,182 @@ dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "thread_local" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "time" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-codec" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-current-thread" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-executor" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-fs" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-io" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-reactor" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-tcp" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-threadpool" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-timer" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-udp" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-uds" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "trie-db" version = "0.9.0" @@ -963,6 +1588,19 @@ dependencies = [ "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-xid" version = "0.1.0" @@ -981,6 +1619,21 @@ name = "untrusted" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "vcpkg" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "version_check" version = "0.1.5" @@ -1002,6 +1655,11 @@ dependencies = [ "parity-wasm 0.31.3 (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.6" @@ -1011,6 +1669,11 @@ 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" @@ -1021,52 +1684,115 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "ws" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +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)", +] + [metadata] "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" +"checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" +"checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" "checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" "checksum byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "90492c5858dd7d2e78691cfb89f90d273a2800fc11d98f60786e5d87e2f83781" +"checksum bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ce55bd354b095246fc34caf4e9e242f5297a7fd938b090cadfea6eee614aa62" +"checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" "checksum cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4e7bb64a8ebb0d856483e1e682ea3422f883c5f5615a90d51a2c82fe87fdd3" +"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" +"checksum crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "bd66663db5a988098a89599d4857919b3acf7f61402e61365acfd3919857b9be" "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" +"checksum crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3486aefc4c0487b9cb52372c97df0a48b8c249514af1ee99703bf70d2f2ceda1" "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" +"checksum crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30fecfcac6abfef8771151f8be4abc9e4edc112c2bcb233314cafde2680536e9" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" +"checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" "checksum crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c240f247c278fa08a6d4820a6a222bfc6e0d999e51ba67be94f44c905b2161f2" "checksum elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88d4851b005ef16de812ea9acdb7bece2f0a40dd86c07b85631d7dafa54537bb" "checksum environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db746025e3ea695bfa0ae744dbacd5fcfc8db51b9760cf8bd0ab69708bb93c49" +"checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" "checksum fixed-hash 0.3.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4e71c99c903a9fe54baed1bc701b43daba8c6dc6d4aec89a32f667ab6b3094c4" +"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" +"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" "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 futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" "checksum hash-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" "checksum hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4da5f0e01bd8a71a224a4eedecaacfcabda388dbb7a80faf04d3514287572d95" "checksum hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d340b6514f232f6db1bd16db65302a5278a04fef9ce867cb932e7e5fa21130a" +"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" +"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" +"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" +"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" +"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "72ae89206cea31c32014b39d5a454b96135894221610dbfd19cf4d2d044fa546" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" "checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7" +"checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" +"checksum lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775751a3e69bde4df9b38dd00a1b5d6ac13791e4223d4a0506577f0dd27cfb7a" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" "checksum log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fcce5fa49cc693c312001daf1d13411c4a5283796bac1084299ea3e567113f" "checksum mashup 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d886e371548f5c66258a99df9ec03366bff02cc96ea3d3f8f346b5d2d6836de7" "checksum mashup-impl 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8d426741e35fab52542d84dfee615f442c2b37247bee8b1ed5c25ca723487580" +"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" "checksum memory-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" +"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" +"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" +"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" +"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" +"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" +"checksum openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "5e1309181cdcbdb51bc3b6bedb33dfac2a83b3d585033d3f6d9e22e8c1928613" +"checksum openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)" = "278c1ad40a89aa1e741a1eed089a2f60b18fab8089c3139b542140fc7d674106" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" +"checksum parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5168b4cf41f3835e4bc6ffb32f51bc9365dc50cb351904595b3931d917fd0c" "checksum parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dca389ea5e1632c89b2ce54f7e2b4a8a8c9d278042222a91e0bf95451218cb4c" "checksum parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffa42c2cb493b60b12c75b26e8c94cb734af4df4d7f2cc229dc04c1953dac189" "checksum parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "511379a8194230c2395d2f5fa627a5a7e108a9f976656ce723ae68fca4097bfc" "checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" +"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" "checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" +"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" +"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" +"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c725b36c99df7af7bf9324e9c999b9e37d92c8f8caf106d82e1d7953218d2d8" "checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" "checksum proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)" = "ffe022fb8c8bd254524b0b3305906c1921fa37a84a644e29079a9e62200c3901" @@ -1077,30 +1803,63 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "edecf0f94da5551fc9b492093e30b041a891657db7940ee221f9d2f66e82eef2" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" +"checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" +"checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395" "checksum rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "403bb3a286107a04825a5f82e1270acc1e14028d3d554d7a1e08914549575ab8" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" "checksum safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)" = "84257ccd054dc351472528c8587b4de2dbf0dc0fe2e634030c1a90bfdacebaa9" "checksum serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)" = "31569d901045afbff7a9479f793177fe9259819aff10ab4f89ef69bbc5f567fe" +"checksum serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)" = "43344e7ce05d0d8280c5940cabb4964bea626aa58b1ec0e8c73fa2a8512a38ce" +"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" +"checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" +"checksum slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e1a2eec401952cd7b12a84ea120e2d57281329940c3f93c2bf04f462539508e" +"checksum slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e544d16c6b230d84c866662fe55e31aacfca6ae71e6fc49ae9a311cb379bfc2f" +"checksum slog-json 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddd14b8df2df39378b3e933c79784350bf715b11444d99f903df0253bbe524e5" +"checksum slog-scope 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "053344c94c0e2b22da6305efddb698d7c485809427cf40555dc936085f67a9df" "checksum smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "153ffa32fd170e9944f7e0838edf824a754ec4c1fc64746fcc9fe1f8fa602e5d" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" "checksum syn 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)" = "854b08a640fc8f54728fb95321e3ec485b365a97fe47609797c671addd1dde69" +"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" +"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +"checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" +"checksum tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6e93c78d23cc61aa245a8acd2c4a79c4d7fa7fb5c3ca90d5737029f043a84895" +"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" +"checksum tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f90fcd90952f0a496d438a976afba8e5c205fb12123f813d8ab3aa1c8436638c" +"checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde" +"checksum tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "60ae25f6b17d25116d2cba342083abe5255d3c2c79cb21ea11aa049c53bf7c75" +"checksum tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "7392fe0a70d5ce0c882c4778116c519bd5dbaa8a7c3ae3d04578b3afafdcda21" +"checksum tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4b26fd37f1125738b2170c80b551f69ff6fecb277e6e5ca885e53eec2b005018" +"checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912" +"checksum tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3929aee321c9220ed838ed6c3928be7f9b69986b0e3c22c972a66dbf8a298c68" +"checksum tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3a52f00c97fedb6d535d27f65cccb7181c8dd4c6edc3eda9ea93f6d45d05168e" +"checksum tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da941144b816d0dcda4db3a1ba87596e4df5e860a72b70783fe435891f80601c" +"checksum tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df195376b43508f01570bacc73e13a1de0854dc59e79d1ec09913e8db6dd2a70" "checksum trie-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum trie-root 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f85be565a110ed72ed7048cf56570db04ce0a592c98aa59b7dacde3e5718750" "checksum uint 0.5.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4630460173a57c0af94b8306091e018025d988473f641a4af754b6cde980e1e3" +"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +"checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "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 url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" +"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" +"checksum ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "329d3e6dd450a9c5c73024e1047f0be7e24121a68484eb0b5368977bee3cf8c3" +"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index 17ae789bdf..9e74ff9d5d 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -8,11 +8,11 @@ crate-type = ["cdylib"] [dependencies] integer-sqrt = { version = "0.1.2" } -safe-mix = { version = "1.0", default-features = false} +safe-mix = { version = "1.0", default-features = false } parity-codec-derive = { version = "2.1" } parity-codec = { version = "2.1", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } -sr-api = { path = "../../../core/sr-api", default-features = false } +substrate-client = { path = "../../../core/client", default-features = false } sr-std = { path = "../../../core/sr-std", default-features = false } srml-support = { path = "../../../srml/support", default-features = false } srml-balances = { path = "../../../srml/balances", default-features = false } @@ -37,7 +37,7 @@ std = [ "safe-mix/std", "parity-codec/std", "substrate-primitives/std", - "sr-api/std", + "substrate-client/std", "sr-std/std", "srml-support/std", "srml-balances/std", diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index aafdeedceb1d923b7286b845a5eb33e75a0b0ae7..766de4bda344ef0120ad9430fe43fcc41ecdabd8 100644 GIT binary patch delta 93323 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 delta 298880 zcmc${31Cz;*Ec>%Zl}|Brc5`ww|BZ1T6W3~9rjf~R1i==K%wl5xZ8q=fGovP!cJL~ zeXTHnphXZ-QPAgk6tzml4Oc)>!Hw^Ca%ZN~Qjqs~zwiGSJGn_tl9Q8@b52fjbAS0X z{jZ~qcCKaNwMITTb;y*F_?tRm^050xngU#_Sc2;m8{-4Tn5UPx@1aOn9Lc}$QG(|=R zL`GU7ExZ=s>3_fm(0?MJc0jaxvRHTk{v9W`O{=&7SePBFdBY$G2WIsE>qBSEqW z!^fE3VU}?trw$u2Z0a!6X=Wci9&p3Pj-KMp|B%%hHgV$EhlYTdlShxAGJ3e_BNlq^ z=<)tQ<#JM!pr|y{C#=@+Q6q?05DD`;+~}{$@-0 z0Y2v5`$mnO$BX$~zJM?1zpy2I1(*Ep6Z{xE&JOd_{9pVD_7b1LUS}`!LwrBq$4mHX z{uV#Z53@3MguTkj_$&Ma2Y;Wx2QDal+|Bp$$6jMcS@4cm^mqA}Tv!U(01hafUE`EJ)&5y|MjIr1Fh=Oc+$&7zL7MAx5D+wi=(c4xNNb+LA9z|@O= z2=#7^E@G}WiMhdvx=CkFdx1UGH8n9qMTu;Pu20Z^e>M*4fKmCe-dr1^K*9T#SuKqJHW|KYip(v?>r3a{&YuC&p)j zV7YM#`0XB-hz3W+{l9K7#~7Q|o)O19p%HITWyFn4nj?pjCxh?}^gj5Vu1nB2)-fv> zK}p>om}_vo&t3C#PqIC(@m-TxW7nkKF|O=>A+DWWd%3POeiC4XO$LMcOUs*1ra92N z83}@Sn)M5&nPb+qZZ@<0>?{VjTk{^sd9Hb{)bXYeUDM5WgeQdH5G28csV1j=ObSnf zJkXh)+BpR1`h6zix1`TguI!%4uGx(zmHyQ=in-qDHA^MOyC&Z9UFph(CzyCfFxSxD z4p&l(TCSE2_8|L0gDsYijp~D3!+ICGw)cGp$&cOolxtj9Z)IN->R)#6$Xq`(Pf*=U zbJc4xb8sun@nWq2zo%J&^Mc7vz41m0vW3Z^A-Yo(=z-1(BUfuL`r0^B&zYzkN>`S% zPzs7WS=cUthY=OcdLU5|p|FoHJ?Kp1Y?bS?4hew#yF(5j>vqgUSy#VKIiOyIYh`15 z>Do@5BkB1r$6Z>#+APl%->)(IxU_e_Xo9@&wl`d_-+A8k#qImW&MRfEk~{kH3-6Zx zd`Aav`Ss{wle4ki>1umt?}*FuUp3`%JNm`)cqD>n7rRRCOg0xSc-3Sd>8f}8-qO7T zXPHrDn_)|V$p^z)G1jRxV)*k6t?eHHygHYDHgdh0b#cua+m)mEsj)e{_)pj0V;iw< zu7=~d}*KW1qOj zPI{X4bX}e_8TF2t{0q{DO}UeOQu@-A5gdU&t*M!Ha^3N019ZzZ`_Vp8OAeKxBNdu1 z+MAm3FEl;ai4Onp=um84l8^BF&64c!-nwvJz$_5XV({)fhOVS7ogYbaK_%h0hN$YquW-&b7Z5*oTa&>{{&G!P(-aJ~VNIj3TVY}J=>*Fn!49|v_S;;9KXX()AJ25uUm9?S1>pw4q;pyua@>QIEM{l6t&Fc5N4X0uV$8cz? zNNQK7K3EE1l?-%MY>Re%yKz3d)Ait{lCilRrRY}27x`OQ=m z&wE_=>}X><>6dccwG}C!`lWn;lpNR6onbAXc*;{UMpg8;7l@k4HvQ_28qNIZjUwwS z*SMW+{&&T5T=rdIEjL%iV4XK=V6fa9H85~_qrl*4*Pva?Y$yFv-f;EZU)PnpyJHQh zn`%r=FRcl7O^vCEFLrGCtG6|ST<5(}1KF>=Q3KgC-YAg$z_t9v2{oYAeox1Q!(KR} z*a2@8#df>O(WAHb)UKgu{NBm7nX@Yg{%`7i>1%uIuo{3f_f7uib}IJO)K0zq*QQSR zr^>F>fP?L&nutB;rE9CN>-wO^)bxY3|Eb}+t{Dews_@jo>Ww=NIcq?2*`b>lko1=m zgNy!x1`H$(SlaXDb)+mVymCME+r4Gu@%x{$Y}T*zYFTR*Qh@~*lyFReeVD8Bs~Ms9 zkd{Q66aVbpT@Sz7C*m@qdE5d?!SlEk!M``TK6y2ZjdYohI7u6JJCe>umQFZwR{+J{ zIo=wIGUSa+iZprSHAH@YqatDnRBs;7GHS^|06F`^o9Pg+5pOk)`uGVb=}!zLy_B9| z3^-kb-nt`VqpzIE<5UisET{t%wN7V9Ob-bjw}OR?s>i`W-C(`TV^%S*rdyf*Z5>0e*gp;*?}jVTy>u093xzG*?hv2U9qa8;a-Dh>NSg;JXQ za6hFCK9}dJ`0*+dD$Wx~Y3+-!Ny=Tf{!|aY(|;NcEWZ4yxtT2~O}f&NC0|}tW-6#} zGLaC}oR1ffx#e6@I2Q7Ks`K(9*Yw{Xpf^pqrl+?%N#bfGZs%-wq9p|r&%97rk=8lIp =1K10K^>=p;Vmr|_`CBlX6iOq`2X~>J-N#Z$MWYG)mcbw< zQ$QI38!OwEmT)#RxQt9TO}E;+yBCME4>eZqo*2yn5y}VS8B8DfdOXWDpHl{${5_s^ zOn7yU5-*GtC#2CqZxqij%7F>2W6Lk*C<-vJHxc3N9Hp0NK}-cc@)j`4zvqo2>rHt& zf%UChOtXl?Mur{v3unT!+7M|bp3mWPAd5g?iDa_hDQ`<;n`~Q+IyhDTybMla-CM2n zCK*C`i8pHCQ0$EwIL!7&QNC!7T$se#vnBGqB-RpiuqCsvK!;1o4926(&{-i8U(i+F zXF7{S>{p%TBd?i*!Az7R94r^XGe+zc2Zpa)HcDZw8^US~1D{0FGUNmdD2r3T-sFyO zBz}*0pmR0`$n1O=OF<_`mRy~}9za%6Q`n~$71D*J_0b7pXnTBkFSKL}4Zl$#m zyCY(Ws@#Igm2l;RlWf5<%o~wmAL(Axh~3TDxW!FaJvL6(Z^Bx$aqh8A*au9EvuSd0 zGnVWgnaA#8R;#J~_5-`um&`7{oaR2+jO}3&`>t2{aaFlI(t-_u2$G2{Sv-X;TeABp z+|`nG)cvFwId_=qJ%p6mBc$9>t=RSevl3kk+;8NwY!-1^HP`@h3BtMwf~~K~fcC73 z`GV14yY_5&coBv!j}wq)06i;TY|q-6OK3<($}8>J$7W-Ac|3kW4)BgcfYXgccrbv#)vIEX zLpXnXLB89CwKQw+csNVtk|Zw3 zP`QycN`uozrEH9xNl~_!F<13UW=R6y|)x)Wb%SNlbNK zkaA8B7T)@Q*WOUdlU8na6N9sinxlM_QW(5J7>h2QRF4aPr2*fzzEr=CyQbIWJOQbP%i7q z8nAiN*$d*UfRcuKVvP$hVBA^6ARTma(P7ER6qURW7NkQx_4CcznR0e7mcSOu=X-(B zljNtpAhM3R``^NBB4n7Vj@*5^>$AYfXOg4jp)HU}J^PkJ< z8+cUgMtCG>wwtg*qSgSwd{dB5!tN0dcY^qz7eJtHr+49a`A!kA273Ot(D1W}7>0e8(fy zXD{|VoZ9PoIOlzsx73qT@vY~f$nAM3R>fs*v}Kn2+r#WR>O#>GNQ#PA2*Ul^5r+R> zm9HO#h4QNG^BQYzp7|MN$)VfKk?ysxu~B4jguKaGm|w&`4>G#H$$nu^y7S*+9T@dX zP`~7#@30)V`vm)*I=22Dw!ngp31=X(%HLr<-Lqh7QMZP_%W};9S4^j>Fjr2QoECd5 z9{#U%)cw^5>tVHGI;!C!!xW;b&smtbcXni^5SGp z1vHB1`H2cv$NPNfa~3F1R8g4n^i^4{cEO{0sJI4fQVk0+31a3{2GLAb5#$8RUSBi4=|L39 z<6YsvW6gL^Y0G857FBJy>hwZWbwM}N=KLD7ZZv%|UTy%gnDD9Sw)4IzrEh@$9YKlo9U8x-|g zOalN1@Fobn6vb8;QIr!!-}?a+J!(+Y`XlShCdj*gWcNjQN#{?u(?7By4Qt4#rY)+| zY1Dbv(7f?w3`LB*a0#q)=sZir0##1>nMJtIpJ%HXe}B6yzQ}StsdeSI7g>wYGAa`W z<%dl)vo6&Z=wSgS_YhaMH{mdHkBRgdKpM7OjR@Z}($|)P*^`=9N{NH?hP4?Zy z{^l;`o^&g_H-kMVPd~^O!;GEq5R`J9)fm2=SP|v%e2g0een$k)E|$elvkcbFZGVKN zX#_VI$u+^?ZFnf}mI|v!}C`QlHK& z*FJZ*E{3s2wmY_XH^_@ctiIen9m~_j@{Q@Nhkx#RBe(YqmPQ!NV6Ehi87#8AG6i;9X)LEy-%Ygt`6X93eudh-G{13~UWb}NFSg{-fC zM{DLQd$$*wmCD3|N33)Ga-ZAyV(6nzWO5yPMd>Ono?l_N43-px+N+LC$-HLnhG7#(3w ztst92TosXR4^rR&k3VWnuR|k^Xk?@9w3*BSx@GYqhV5O1vza46_Fga2VBzG<5{&~V z&+xs^&NrT*?Pcu=>Wa(2PAN60@Dl*xG#ar;ZP3CVCwGp)2BBH{d zWk8AurQx3o6*w4*3`?*V^%kX_&E?@aVp^REqJTx z+6uav0g$)M6LoLIqTkK?pR;INV5nGh(NaGaJw9JFuFmXjpMykbvq03kmUjm)sLs2a z4c^^s@Gd4rjl2uC_v2l;Vxh3I=MAQPUNP;6mDeyW_9=oO9)^?i(;$2ho-ArGYU4@s z4GZXs1>Qe1wro`_(!~TlTn;Z5xveK)np85a8BAyf6Y4>oY?(+$rEGGF-5FQ_CJ1)~ z37X?bv=pR3e#x-!0wN(SJ}(v-$)rGV)X`)dE{Y>Bo+AQju?0DJijrB2M3chihO8xz zno$RdM?=twY=~hc=C~f{pIYP*&}bKpL+U_ZuJCX+Cn7KwP^d}WcSUs$#CU}b0F6v(o6lbmIy$&ek0caNtj>`x=Gy7MZV ztb^=$bjs|{P74S)gyVxC1N70V&(xu?`k(RUqeDKn*nRm^w(&I z2G5G7B&o&CFtnk3pz4S*Zy>2B5QKdBS&`<`P2W6Qa?7yIbNM+4D$xo%+y~!s+rzLKDM97XyMH8@T4XDpsDpGwU*}GJ9^F_?dL?d6M-7*oERILISe^*UYd?b+%EE9Ru zr+}Lo5~EL~RBz0>CYVAtr*&)rS#n@v`*JZJJ*i@DR1U&_Ygpv4NU5(7{fMJ($`F?; zSBUi1Fx8a3T})wUTfT&ZgyN;*DzaMHh~&l8CPQp_1jL^!M9R3TB=s^4tcEBULpEc7 z8}^e_BE~w;^{4p=o3_ckCCd* zE!17x5v1g(Kl=uu{-A30`?xiKjfll`AGk);i>cZsov6QRnuNAw33BUtO;#*Ty4Wn% zK*B`)|A7fRFJCSZwXaLx|93P%%O}^|pyitxSs&&5u2uTbf22GN@W0~`L(QA7KQcFi z<#qUvUY@|-(f_V)9|b;HCz9ASpTTdw8DS{9u2%;C)b&-@q#dB2eqJxS#a+Y1K4j$` z&x_0sKKhrFn)aUvu^-gS+Vb-rQ)}jzp)irnP4WiC4$l2hVp-iQkI0dm##l%6^XfaAA zuv(153*n4`o*~Ao|+F^Y~Uq%St6lp+0gqiUG|dp-~Len<{`8OO+^42DDdb zhPKydZ$Rr}YDyFd!q5$lh^jt;PdADV)t62kHi>K>CrsHS94tycw@EZ^9YF{L(&1&{ zSpn#3|3;AAK9kf(WFFiU$W=p$MFPfzq&&tY4TGvK%M24HXV`Cf2FzWi$XwRdCDHRXq{WJ-aM@(P7;5$m(z5+Z1^J2p$E9b+ z{4F9fj84&B>y>1q{4i=^gE!LWlzd3CIU=gwL&WeMs^NG4b@1yb!(I|os%oJ}3^X1w z(70*Bum@E884pnV&8oG34SnRB2gT6;a^xN~5PVP}D3`q=a6Cx4Y~`_6;BZm?T4S(q zOpa)hF_mz_L9!}iHmW*J zA_p*LV?l~~3vr_CdsswunTYoe@fI(guhDT58_KkkZ76mUg3&c{l$-r_6rg31JA~#i z_B~)A&@Kp?%Z1gy?J%5Qk$SjinH<&0)(sOnPLFiN>rsvvk*~+=w$8SmdK_F)@gzr) zghe$uMN&d+bOM|eAj^hCdqGMNkhR_dWs5ZuZB{r!^&lG6Xm95T3RSC8ae9oiu)q;R znT8%tu@W$>==bQm3_ z`e0obXgIfr0|pUL(4q(WQ3J1$DnN~1y!OBjBieu{L>u_S4cbsu4!kdI#Sv3bAK51P z@DU(E+POdvH8!PSw$S!cwDO`GK1su7L67Xv`k-p=)= zS!oX-w-IrJOv;N(!*5@uh~?Qqs>Hx&p?Q%AQdkfYQh!ZEjUG*dXZ4x)R=B7Q3m;QM zxeN?DvnKbV>J;{)s+o<#Uf;-hpqc4D^&}=X6GP?1V?qzPubIinMZ)r9BCU|Dj~Xo# zYs&u@m}%EX&10b)Jti8ZV7)^FNRD-|cTL2Qaj%PB_UgotYfgyx!m5P8B#i59tD}P{ zvc=G5CWa>qZGhoCA($rH1RB8(Q#P89GNfW_Y?oGBMo#s%F@Va=@01T66VbO-LjqD! zwONTo)z-;MRIOVfm4zOrI7E4j!n`aZnd;sh)f+a@sn(uCh1L(A9(uW;8Kx^C>SI*3 zxPk5K>23v{XSj zS+xb$G4$q(asl^~)87i&h(`BueM2SR7|7fnU1u)8w#ppk=xm3lI`}3+v5zw zO|2=bjgVY*LNvnR(sxh5Nf{ABJ+jhIApJzrPcZ%1=*PQ`z|Jey63lj+^;RFDpwkVa zFFGkA!~FySSO5bURl@)pgNJ=~CsrFhtUY~owY+g%@V|PP!D^*{Ize3$?k$yQ1{c=*|z<-H4nTm8~q8hC- z{JLsuY;6SP>cAZ%@VCk>{}Nr2Ba~WmL{eb#t*@~ysF5!_M1Hmz%NXMTK(1k}x+ zUB6I+r5#hY1_oG;>7CGcUqIMzH zUG+_ClxkXsQIfsI*CR!JtahWdSGZ4=#iNDh8R!|8i3Ow zgeckaeUV`I*C0SR+{dA{uv@U}Z4nunY0bg}&NZ#W{4&Vqh?hhEBcg5%Ks6pK6J9nw z2$NRXL24h_=xJp~751v5)Ot-F4fJ%hYY25z>345OQNo8iu0VjEN`MJ#^-$lTA>SA{ zAMwdflo#I@5zUB}G!$r)u1-O~J43idfohp*jGQK8LKs2F8n~;Dz`nxEymB44@5NAgIuQ~YRd+vh0}E=B9I<}l5b#jDSO9uN~G0& z1cs@|GCcq@8rCXIV;nLurGRMIEmuapaTEnkzzK5jDUp?cb%gN`J+=5&6Y8W)fGjyB zqB`IN8+9tc&@E=NnCZ|N{skz@8N3A|>)rh@z#VhpW6@H>sxn4~ofF61zm|*oT*C|s zH{uu12rIwEU$XdctVG&l)_Jh?sv1JLMn|CReO9^B7M_I#6e)L{6)_QhN*=|Oj+Y;u z6_Z(%yVvJpC}ZL7?O%xIoG`agPhw=;ry|&G{aP@_BHf|qM1)Z98k^-S7eusd^PO11 zS1`JcME>}l*aRDE$@cnV;$a+_VT^_gsFROxSXgdH!fJ=YCsmxv?Pg1ebmsK%TLB)_n zf$fS4km!(OuV5fmd57Grp53os5w>8Q%l(hg9=HiK7id~{bx{9$-C@D-kiOGI3&FY3 zXtOrrMs)%<1z`Kk+6^h>0c#(qb)(u^Ux$#rf>dqC1GU?3qR}0}T7taaqP4mS*dHuf z=bLDGV$h9A=;=pVu+d$d0;-WAo(|UV=CcHXeQ$)D!8fvfh~~oZy&s}AWFJe5RT~Tb zyx*#|rgPi7ZQ3bt;uE3TlX%x6sFt>rZ#*p5*V6FLg=}Tl{z8B?er?%1OdE&dhr%>^ zZ>LeX_U?_E_H-maLVE{|)QZ%Suz4@*MQU{s9T=&#L{-m45+;&IY1@I&t|;`0t&#t! zt*t`p)M#ycDh|BBd>ahKhhP9H=bj#h23r?t1$NZgF-FV9+55>c+HE*O{(6i?Z+)Y( z+Hydw_6b`n^WwmdYvuGft)JuB#fR07R~XGMlb&P*+zFmBXf3}_(&~V;dc5{DFx?uj zbp}p9$HVfwL0N;-<*WoP8)bJUXmxG`ZE&ajBLRqab7v=Nocf)Uq^-VDsjB!zCu{d) z(|KzVDDk7ZE0E_*yM{eZ78cDdt8Rr7};wwv@O@kPLdyV)@lJ}U6%GZ$Gl6a ztL0;k46mzoU=Pa;b+!AFe9h7Hz|6ud!vrZ;4?rm=hZK;!Ek`R+Z%ATyRdpbkhR+?4 ziy{4IVc>qEo;K_z;H0C0_S!#G=hGkQ4YhBsOBFe$k=B87cQ(Qia$g_iTX|ZV{Hu{7 zimfpw`i)xi2+@z4X!CCZY*SP161BKGPfM-ZVsngu)=W!a|3vJz%^@VaxeJ#^+jV_xa~~7!91{W0ihww7Zyk zpMz$i!J}UOM_j(qR%;KLWo@U_#JYCc<(t6jbiQ_x+I`EZB@%5sSY33I#C0dM*9IvL zt~vY74jSEgv$&IXCuxvQ+G78zJR&uwvl77VJ8S*?b3GkAWaNI`SsTv(*eZK=(Uy0l zDXnI{x0lAt{gu78C`QM&G*N+e1k~c8&?A@dIt8dvx2yIWM(CZMP&zHTX{G;63wL&R zEr3BQ)$gG#MStGtfst7(FB?H-PZhhPr}ltR?dShoqx`X#w(!QID*t_p_KDI0*z^F} z2YPF6G&;GD(&%6J(f0mxGwzT2YR3W~MAr1z#sE3n0PWcXjOB_VsA`X`LRUjTdJxqy z+J^>cIbgbP2WZ1+!Q>CPPZa{_LG=LOF?VXXJW;N?Qyb_1HW3!4Uhadyk!b_9I|x-{ z)JbI3_`cKrf!aazZ`vU3b_6E|X^*L^J3UhO;{X;!7wJ@3Jok1wv&c?fEXNMk#-oED z57q{vgL!v>(;t=(-K9-PM3d!oMT%jgm(e4TKT08R54fA=t!#L=_De9am7x^nmU&t| zQS`=PSw0Vb1-x*ZJReM&CtrC+>+D`QU)x8^0`{DiA`2F3Px~&Zlz%PMrV{v+V(mV> zB=B)DL`S*2T&#^iaMvP;(sKFABJFnT3s|&z-@tXZ8KF%RsQtzJw3%#4JFp|a1WDQqkcXlqgDmIp9B^W;YlC^E7KweAGk^I^?_ zlH(tS`HHCRQLXSAg3zte)yR1CQ7uJ)Akujs#BctinpH+TrZuMuAJb-_dnX@5_u9yx z9|I=M<)p`fU!MEf$6*wJ`fnAgLHMyy+XNCUDN^HmsYo$c(sZpOsu?~VXy(be6wH;o zro-sWlV_%DaVYTnbgc-nM`j?FCl}8E&@Fdh~o;>)ZmWJT7CsE~G88i!oo9k{qOH1TQ zZDk|Bm8<4yp>paA{C1i+(_b=2$WLG3?JDQgzl-=#%5sbfh>+c;b6g)Q zhfe3w7~%(~^KO-Z^@nH;_}Zm%*buFY-<OWu=xpV8V^;^c-Lanfs?5Fz_3I{@hsC!6ljR zU0CUr%cpl~mvFU4(Qd7UEPqaGf}F6$n26NNP=sO zoK`8gcMD#`_WV{%MtHk$O*Jl1ri+QeOABS|}%z`<=T8) zp%Ax1%L%6P*z#uf4YJP)Eiz?3?hV2ZVE488Ox;nbpTZA}`OJC#zE43w|RZwR#Y^|1v5=Ad)S#tO) ztrf_!dX+W{Ng1oPwAxAJnXAME_yOqzIdrua7gE^?PSr%pi5s*an~~}TROw^aX+ia> zqyu@+UEcNtJR79MEfe1UD7+$NXo(h71HzHf%0JAU=Bfi>l&VdqJAiYbhk8{|S%4ai z?xxDS*J=&qcO^K(fIhF);$`$2Z9p~rA6)|tpCosz(PC2kd$64b;u^H&z!$XmYBdmn zt0jThs&!h{py4T1vbW3Rby|9468Wwb;f)ah&xIINCTdnGksxQRgRdk>Hr%8o7DC#2 zIaF=E08it_e`cRfNUIC~X%K0H!NYCV8pc@lk2n;Uo#3Km4;As;-0xYP1p&w6^pDkw zjme5{+tNGUSoZp^Ao4xS5|K`N2{HNt?RYuYTZ1wUW=-h^wWAR zySE=BD*TMu;h84Pt|pCfA3JrMCbZG>K+il2sKzM;&ua~Ht5m8BPZ98znh*waRf>S) z&uewksfaI$XzgtXZ^gmt@!X9R{eqft#8Oo{vt4lyM1!E!H?!}Rg)b=U3G*>tUVTBk z-9PW{4O)CnQ$zaL!-t97wLxprSjn|=qFcfH0BWDd3>Wb%3#Gb1btU%5sel74Jn3G&_1RMs${xrC(?>d zT1*{-VBinmRZzYM-+flbgZy-pmfgx2GNTL0K+_N>Bx*cj(!kw_ETo8fNf@0^mNoF! zh|OAdntz@CykiWh=kBasn|(v-KSmcfYf)*c_dZFjTFp`9tDIGda?lG}Tn}n0%Olzw z_@mt16H$e$PilOu!ZW8UWon{axJ7H!^~OV9+55y=w1cVi4hc>}?O@1FUPcVsswEW~ zeZ^?_t{L+^`0f((K5S%+(`rQ@lcKKubn4htGxmUCJkbUc?FPq?g^oe;#&I(Dj) zYghqY*K&v4zZ0c-rVVE8Bwkxw^@pf$v+SPYxQSwY7A4C?=utZpRy^Hu@ zpt`k)>y_q@^HBMcOcc`fdO*IZ_Jt^sYdLu>w$N~gH)9!o9|J6@*8`^bDN*-FLSuu zdYR?(Pe;oiFS9)J9x5LrOa5lLvi}tpgR|FWEy!7c%jA7+J~xynV&{d$ncpVpDB0jD z=KWR1Z9bfL2JTWci5bjKmE=cw;&VU)Wu<@ zTe||kkLo$6ZxNx28~!B|G~c)nsKVP8+a`8SR! zdB#+Ap_Ub!^7gANj_)}lbFQ++V6CB7(cc~O<@Bpq)cXT}bCuQcHd0e>hMEr&K9~qG zJX0(WHiT3aF27|nw^$l_d4=W z8m~p&nh?Y5v8FOz;2TPR%1wedPu`1hz7Noe~{1Thu3kU(eI0+W+Di!gE! zKEh;wNiGcF34q-iz?<^}O#Y#9U7F220|j%AFk+|vVkz?V zznS8ClJ!+*zIS*)_4*j+5<5@gbC1a~J8wumljYx$ zn7}5P8^x1{;;5KIIPI_naMq3Chzlw);V%$>mdZSJSjW)o*I|p<%U{K*7QB0gD{`@5 z*T|m0x?OIK;`#7@fOScss# z*o5VSpq^ih_uQlSB?T#F>33II)U8 z!qy4KQ7;af;mm809)f?71@y%%90tW9Fei?e$exKjxzd`LlE^btD+d`G)i^Q~>pu+_=2+#SM1GOgk~@-k9s2r^EKlOug&$u5DgyWF7%~<(D(MPm7fIKbanu&L zDX%1)3xonmVUiSZQ`!k{z@O9fFsw0B=b1nw<(#Y-2MuPqK8or!i?i@W~xu1IeJ^9OoJ}~i&=8c zLGl~4ZEtR-Xstd4h5q6CX6lx+2o7WN>FBlOI}V;&NF5^up>#^9(O-vMnXIS~773lx zRVFK0t3cOhvXZrmxX)xIYZY;?$%@@>x@3lIR&FQ!Lup9uARF}=J){kqg2td=7)B)} zjNbqB_5-)(+@K%wOcKv%bDg2WSE4*aRSRvZp`teNTuV3i0tRLWMnEQm0%n6Oa=YNs zvYUg)jjmRw8b2sk<2)=4e;De)u`LswVWT?3bWU|DY(2w(Y^?2c`;CS{NL}Z3Z}Hae zQQj7#YMclQ0kRy_NukARC0XF2`zNyG`?{b8RxvP)1y4)hF2ymJd>B__#^G2%AT~>5sheE?ItC7kgvYKT1+)5${5ypwLq#X0@;vjR*O8}mr?LfW z)w3((4=xDjR?3R9Z(yhf+(K{qfYUlUTT_r9zpcH=en!5W3j3l$ew@ndcuge;`rKHm zCPtk_G!6`UH}rJbHx0^mNE+nYw$GO$X>j3(;STtow@dML6}kV>smB1)&pdD%P(ADvQmNI^=v z?x~&PD3l@fOr9B;;jP$NM)pcUicL?KgEILLi0YRzd17P?-lg{nE%NhBI-odlw_i7ke=*J?u8&!_Y&-%=;TkHG`$v3Op(uI^B9YVB#IIVHmmNX z1(D$6Y@QgBidT+|zNbl1hdXSkR9Mm3rl-ks zUYAca8!?%d!zWj2%~d&kNM)>78jrW@)oc)%l?z+{W7#DalBHz1oRrIdBf9`wq-r6q z7ufUMi|X-CEczfiLI-52kIqF{cvx`H9=2M3sLx{}jD1RarHnZn78n^Z4LCkiD91E_ z$yV-O-GGPEhS~Op{4oSMjX3#=$29^YCdiUTd>vvP8}p$Ep3Z~Wb)qr<63@Gv@cjrT zJ;?g9_2e%j_`9cS>z-cx2x1wx@QDcIEu8#ANxc>1%-$US zmBoGdw-B=5_2DbbSiOcgv!rtp&ysukDjFOZ0D9nSdCjY2K5(nbbl=Kvv!W0=6TmWX z3rF|k{i>$)8HDv{gF8W{9sN`x^ldMYSU4VCeCam6#``?^cK$P-6Z@mV8F%ny7&ts* z;P%R112`RT1TOtiRz{D5Uk6o^mu$|RybMA2fncS*a_vCAx)uL4dq5 zh!4^zPZp2jF*1KJ@2id@*OCjz@fi2^!Mr0e$PN=}0`vC7iZ9qbd0S!UhX^4S_x_jzF{3-5{YMC|+EIzel$6~`~4|F$t z6z2~rg=2`r5-ZP6hv9HiUY!ny2Ua?>`K=@hUvgM7;I1i|0aMt!1d-p&;GOxr?Xuw$ zSe7c-C^_Z{-hm42e1hLq2^lq$H!^S80W%~`YNxnUcC-95g<#)4qL#kRiX8{>6 zdp^a-QO-+G@g`B~YAKj;%Gd1ckRm|hY!KjIvgPdS5TJz}?*ORdSH5y-bNJZsCuqfk z7s_$)ojzj2>@(eK=kSvnzLzn10bgllhj3jQdT~g$TFw(9iub>YmyiHPpN%=aj~uA( zg5~^P&c@4kSMpX3=%81uo=yk9oC+9UN>;!{D5=ajDtQ4Vb(Q08y^4?G2_p;-z3~}f ztkeY0=lO&WSvb2AEfI3bTAou$w-al5UGXwjiNCMqjfi6P)?snnLf*cP&rm?a5 z_t?DZD>8dtmpe9K;Fc_xiv|ZqUGwpoveoqE36pMu_NPxJcs@RJ#3&ZKZ;dw_A78+G z-Zg)GCidV~FBodUg56Wgp5wB?Ml`;4x72r;uW6j0+bz!|Sfb>PjXbbUMX9Qz$|t(k zzv!0+>@?sxZ;!0l2-m~+GIo=fkz(bLM+40A?oEc*<;>?iLylS=XqBfnalbmFX7Z{PSEHMwZ?z#9hy@ia5SPk!EuKDYtIn1-7}gq6sJK zsldKdrf%hR_@74?&wwtmZ{r%K(bTQH53K0dw(@K^JkD=b2x2nE%6i)%yDYL`o8h*8 zY8%P|g`Dkh-F~tSNX|YYPi|Kd;?j0L44iPs4k+D! z$rU?zdMxBDj4sUqyO3B4*FPZuqwka-?cjZ)emoADfdf+ZMCVWR2=mjPC>!2tj+S@q zp^h^xrjHO`gp zqmyj*ld}DO-b5X*a$GV;%K7_wgy-~`0nk!z+t1UL{fL(UXmMo3i|Gsd2FWVke&jg>MBs3I=81N=R`Y33#*JW2VdqX5&u?ny3FkV z@es!TzP$J{zXZI$dWAO*qDh2}r*p^LDP?F7$;%F7>)=y)@-Wo!r*i76m=~YQRj=}L z^Qi+QnepKy9$W7M1g|;-QKAwd!)ALQ$~;;0ZlCkCipbZG@GKTAFC5`1t@Z)X7zeuK z>CdR*W^9*CjXH&a!-4U--30A`?Ys?xQ6ibd;CrT&DH3Ao=Tr{I~OAu zzDS=&o5jU8wOb7B2ol(x#mg~|?TEn;frCcQc%P?vw>}+bdEH10oFnialg~g zDZhIk#0->?AMjK@d!=mg0lycWDfxgujMVtk5LX9Q%I2qeR_*GAJ-e!{0TTpGh;~U6 zD!X9YY2Jo*=e|E}Y`Un#oDX>mQ0CqbAxYkKU;PkP2|u|~CZ6RD!>iYg#p2MjJS~f^ zpenXiwI(oDej@SQNySH7&+=Oc|3A-i`smci&-sIprEaK#92VpQmtzwwakAc*{C&U# ze5F<+qrc({aZ%Tmuar?e|CML=l`m()QcHm)n2iEqU>D`R#9f8d2e%%dox?-+LM6 zGaS}%&&ugnc&sw3g0C2xj}!mEvE4hb@JJYKmAUc?ZwNhp@(RyVitTsGfDtFN zf9LVKzqg-WUx%3p@1^rHgee5RJztLaop*->-0?eq%Dj6O=BrKq_#6Ca09r!MIGRCd zw;nE?Tm6SxVio_%zu>!9$!ULKha^yL`-_j~ZfukSTRv~8TpcKKZJ2%77(^q!QwFkU znn;w`tT)Sze`CvTll<^+m?m3govS<_zSuEWvCQ5ozrG6QII|~OywCAnh99}Oo4c3F zTZEuR`-?*CBx2pGiKnqd`AHK`q2~_=i0A$HD0i0845&IMee=y{j5^EIG`$`e{QBxm zGbb*aP%D7b0LKY?yV|e9U4ZH}G&q~dfi619Rc0{?2nPm=N7Sw{5#voo4BytiL4iPv zNQohyX3ldE+%T*k#bXhS0F!;YbXr6=Ua?fpvj}zM7MpO9a!8O!SR5qc_|HpaLXc1& z>hfmX&vwZF1c}>09jjGzM9|lYyIp1m;~tW7=?)fc8~XLV#z&)h{O-ee|C^>(MhNZ= z#HZ&%#1K@!H>6tiJ&?E3Djr9WU=t*qpRkDz2wt~|wkTi@6}KREd#FlW8Y-y3m!aYq zf~~bgy)@N*x&~{Xrl+Fe5_pS!hyV9M=vZJB{#^^j56Jd*@fhE~Odht27HpUN!!AY< z3ycgCA63rZF5x1L7JT5nC^;isRDL<^WTvpmli?zt?Uwckyea*a91{ULeI<8Bh;9ge zkHD>nXQUp9*QLLbuSTl8z$lg1H%jF_5G5Y0Z0olu(KfsScAt~JG0^dh-EM&z=6vK%pDkKbcZS)i;J3z}S$dLUM$*V?F-nc!~YLH-yk zIx4#jRwvy!p_(w7Gse7EoFKbxOq{5LPrxpY69d>f_xU){hICJE0$v+0mv<%z2j=J_ z31X~}c){e`1kn(ZJRwosLt|2uDC*&``i?|=ECr@`qG+vT4f=wH{Kl9(>eNAXay>Ii zanOP!kylCM6G=r zQ$#Mw{6PC|S(qY5Bk7wI(M;?BqN%A0(c4qS2oyMwD(c082ixN+B)yiOzrV=rgo(h? zV3DCa>a-T5Rx_H&Po^16wL4Ap1ZG#$L^7EZdb%+k73@9f2JG^51NL~jxYaY&Aqv3| z0p6+3G1VJohz2$1GUPs-fja*4Z@D2uWbk#<<;e_O8sJ4LAybT?6C*P+{Sv|HPe!8u z+^<6$HK%*J9F-;1*%c+mo68ef;^VkIVAO1}4{r_J3iYLiN5{D^n*E2f#iMMGY+Faf zpr`%oh{=5AeEC)#2)J_Dq^@`XB-~mTTR+?6+jWJ5d^Q*AV&wPAMJHAy-^&$^IIuC-6QnlU)Dv|rZ%ikJgAKWf^>AV189A>WCR~NwT~Cnf zOvYx36xpdh?nT@u2h|sK%twj<^()NZg%Z9eG;(D9A(llqt? z78%w+MEL868ik<00app2Z2Sa|2B=JS?)>90v?t69^2?M_1Xl^F$nlz$PnOBq*zN={ zZiG;p!{MnE7j0B^Fum0PWP%a8rV%brh-xU35?~GZ4e3tiJX!)OM4{t5nVgh`uME`5 z6Sb_Q)(ry~$J8Ec2>ygEy{e&TK_k+psmNU1NUWwb)ZBzw-0wHSn2{b|)kI|D1KT2u z0NXdgmB(A;geKr?Bd-xi_-+#*1*Fny zS4bEA_$of(4UWOd5d+~j$tyx@c@L6URLujBJw+us_tA5PbMEVa!q<)}p$eT}_<Nq`TI6uF(u1kJUB|j^uZwV^2unJ};D9h92Wdm#$5thy>RQ7WH zrAnw%^qk>bNl;a3@uwfu#$OcFwrimZ|4mt*CX0SmV6PCEhZTw8FqT^>#{+fRfI9y< zpuBA9q_0c@!vyEf#~e7_$MXg5S9hMcg0Gur!I2i=Jmr1#^d!J}no@F&-14fqQ~~`X zpI0PSYYGQQQQ13RM5p3TCgb{3b*ZWM`ctIRb}~xf5SX<6ZjQ-Ot23-H>F5t7Tj(he zd%<|i4hMj7QED3w1^NA%G0T z!E+Z%iJCYe*t|?hCweK`)^n6EKnFJ&3>oR*X4G?(h^Ly_-7<(|Mv_r2A&UsqeGa>E zN5s*3j(3}7f?<+3!7KF{bv3kSg!OmiB_1%!!8hoTq%D-EsZ6u^zpZP2r2fca^9MOX z3b}|Bkk&^8G{busb>|LmUrf|%<_K?Z)_^Q0skQEGQ$nX~5r%sZNJF$AtOCxeItICp zNmPGB$I5`){qp!|oc)LcTnmvX$hIFe!!1Y0mWUJ0!0+G$U2|OWgOdZz!BSyQw7H|Y zSNFD2D%FSyVbHzRZ{e6)f3j>Zot!qcg||@{wHFrYs=*KN2~Rj`mg%jdx5>iU(lMh@ zuD~p<3XK3aEXyDQi%l&Zb)prKxB0K|cRHXTGVn(@(&Xu9*9qZjoo7W4MMGA#k}?osW#u;UJ7A$qYG)63f;e$b{MyOUovz^o%K%{oW*FWf1wY2OWCN`QWXl1IVtfUV zj3cwn)zTJF3o``S9YavFwa-dv@xil>AB#Mt zLn78~woK2hE?|cPsOGpk&Yh#V&Wq@-=;(8zMpq;pFUEIuG>9}?ZN}T9X|Z+E1S5D{ zh}9Ky@|?KW)lo}(QzUeAbVYAW>gK3W`+|mDI=}Y7MUYz?4m%hlMstU@$IWiI=uPgv z`9)bb@zCeyZl1W-%`qjKN;Qx)N5l2hvTg{#J&?Yl-|6n44SKByxTYbZW)H^%*%W#a zL{@EY4=}9f#6#1m{DPxv2~%}UmqpS>0}&&6(Z9d$9x zTK052)sh#;fdz`?9anj7NT98YC^@xVnA&kNPc^YKdpqd-vFAW8dBka!9F$8N+YWMsS0VJ--B;yM!*Xb$jR+(AP{i(+bPPsfu4CezL5>8e zr?ivRm>CH@<*`AI%2mI}+G#V*-{=drd(t@74XY=UG-pW~OU7oH7@0IGs=nl?WL(k6 zWX|=YC+#JNra>LhKi$y}jXjj^SO8z@V8^KX%kp9ND$PK2&2@6kg@Q;aJcL{#q0}aY z-moE#F&Oi6hCrS!DYgx9gcXg9@}mVB{}Cxd3yG;5;&=&+bf=*h+Hm_1gX~45^5}4f zJa1EE1oUA?#pn@^wTLeJvZI)$z3r(t(s5d|f05-09Rp7VYGKo;9y`x?`8nOvnvGS@DH((*qVW~neKA=qy#h}89dYRjR4Erl?2pa`+C8!D zN9Ua)*7D7AMAlEv5!ytN^fQhwUJ%oNc0SVPiYZr}H<5JoFU~LJ9-Na5vOqx`AWJFN za0$mnk#!AsjGPk#esw}s?pgDzvz%SKFOJ-BHchvd^8e~PA69@%Z~e#Lbk=vwyq_g@ z-gH)Xc<}Myrn5F$RPC1Yb$jNQV#6(G7vPQGcBbKSzx3O<-(kLZeA~GK7v{Zx$Jxqp z25D~Han|$uS;G*yire_FiW8#bkTyzOzQg|Etzo^ZBQiLq35OKC$&=O%8QJO}nW509^1#53OO zFJ}*6?$^JZ!-2UM9yvb&=7Jxi-zN#rV_fvJKwN(8?Bke#|D z3q;4K&Tw2TGUzGBlbF|)y~*doM8WmWyi2SzFj`Y%nWe0awSId$_=Lt*19Y674X$8~ z{-^J&a@vRxM{csp{{(6cHC?aTt+dvSwFYeW5&pu!$KSN z3^3R>Y_~v~CTvg@(s2#9$)3szg5fnwyJ4{EuvEdRB9n(jGb$HiwTbE!Vm09`EyR)_ zPQo0zkgVaL7+e-XtkaK$7~T9I>&IHa8SKZ(he=E+i#J&vSyAz^A4@1pONWMkgmmCV z;{H6L61S&FD-W6LV?PEq-4o`|Tv!%GTp){v(<+dW#pmQe77J%xAWMOBJCKc*dmCWS zsY--JqSiSMFU$X*Al4zyEEcaX;lX9Is$h2|^Yzu0 zI?0m#s9;vAx@;x5J-I(fcT1B|Um=`6$u;VO6fZlDkmJTbS1Zr{V3zKTlu7?#qqVgJ}GZZgW!X!BFH(-t^53Ey>jY;}IaVF1kCtQ2D0O%odxlcuet0i)L8$|g`i(e7lIweM z>^PDQjc1kNEQtqYJ1>5ZXYaz9QGvyofyKp<3aHL`5nPcy(aw2-DzPx)Bg!SnWX~p0 zGS5c|%tN7ltFUfxZq;G!gnuG~knQQ7$P5j8MA3Rwuw-bcIb^|Pb0>n&5o4>e(@4^} z8XE{_do{KgPLCuu6xn{0#9$zE&Qq=y3(#P`5M3UFh4y-NYYr`wSqT88C9^O)(vGXc zhQmP}rob6fmtBYRVm%p{U5~wme0$bstGuAGqCz9t@{C3jzL1-dA@~Y6JEe)YGFXT< zO)Sh{-Se9478BJnndDDlvg;O}Oy;w~^_;f>MPwCa(4n#)#I~6j(Qk{NW}-q{MbTNn=i8#)ERf~5#pGG+ z0I>VaY&OgO?RIf_HbQk#atm;@rFU6`-^B&!LYo_o=-7;fh&MdkKY#^7J4F`uP@ak5j2GA4vuQIE2XZc> ztFzu^g^Xf>^eh+Dv`61%3Aor|{z6tQIPVF)C&IlDBv9msRDJ$!|tOZ;VUoB-z^cmFB84E<8Wytgg zk+q*y5Z^AtY|%ZJmthhYKY;cm*lt7OX&(5Td;HH?P#n6;;6bi)o;TlTk@ld&FkC7P zeTzH`wnVI5!NU3PJ3u2sMa2Y8W?$VCc-LT{7aOMTEov$ymu!wcM&-TZPr@ZBNW<208AG zCut4y({RS2!ADp<9*XWCv2V2_BK~8nwhuk6K4vrQeEBt0FDSR$Bw9Uz>se0+CRzF? z?67u9)cq6)IqDhrDVwhWZ6TinZP{AD_oDviY?pR;{w7uuchZ&G1VOu~czqLFTzmmA zMaNukqn#-cwd{APy|-cIGfPz4j3sZg=)alujW+3td~iid7N92e+&_G`lki#^c)jhp zwiyc^YO;L`I|)nbcfMfP3$F6!tt``r2XtXc(d{diDPGc8XKmS@jGk zw}IPlII&#VSKxT%4g{09U|bdH+Mv-AK*xi<_F^pHi01FE5bbnt!uY_G9N)ofeo`ns z`FBDKIGzV4D!`2wO@7e=uH}Wrs~kt-HJO7Y!=Lk{4XCS16YaBDcy8AY$zr7gp>7Ly zeQKux6tGJy%wpwf*ze8)YcWGq*@@vceIW*MaWQN+D=pG@vVgX*nMUvZ?JYkFZW`D^ zZdL*9^T9DfsZ7t2fJ65_jD! zfEE$Gi>1RzX67!|2WGW|VI2QWanD*SJC$BH#2nd4b}CxHPBffaaz%viX0=PqR)Yql zD5VGn4T%Nl6F2NH(s#2eEx#?eDHPl^u#;-a!hdQ?XaC%0)cqRhaqPkK>zn5hSpkpr znMl|J^0;uG=(>m1D}g6oqKsOO+o-Q)+1R4FVU4nJ4@(Nr-KO~l3`;)~xAw3)MZVvV zMdKq2ty1VhIo-)rWx?01jsZ0~#cvm9zGib^)s()MMcCh2C?@S?-6Kpj%Ogf0Xg1{J z2jqgr{k4}Zh3x;{KGsj0DW2|QU9s+U-OpnEiKmy-%C$vI-p^{;KiDI7?q_w1>jB$P ziOE@1A9o0FF300(Eg+l9PJ%HsxDa0jb{$~dLsbR-R(OPHeUSYCg-hi_7-q5t#l*%# zj7;9{9%8YTE!7}W3oQ{8U@qFdk8(xZ1De7L3p5Zl3B!~=DVlu)PG}R}3S%ee@JB-z zkM|Mu)!(wpxugywWxDv`TNax;2@;R7D3NfO#W~Mv0l>mxb`Qj%{dXW!n?$K280c$6 z?;~tKR{i*+45s{I=TTO(Hrc^Z>hoRucVVe)ZSxq+h9C}c8*u=@e09ch!i+{G=c0X5ATP5F9h2$2*^ z5hX?86D*c{uWFG?XzvrOZ~)z|loxIx;4r;*oM3eeV>}^Cyt$M{3 zBojKd-savQj-F&?3nZSR(ka%(7=pgTvF;(Bsiz15WSX%s;_a;B zu6;z z9DEdbd=P=;QaExDumHvWYGODR17Z#`w17r9zSx^3md5Z}K?FP>u{iTx2-o5up9s2O z>H0ZVJ;3DIa8?0gzsO1AAz+T&=UFllG%$++)5ZAn>=*_>=L_sVc?K8;aj*j?+eOGl zJX-LX7Vx=fdXcqdQ}FcDWFaoH($WM_(lBTX3_Qsy+v$P{;Ngp`hJCdr60*S>ZuwY5 z=a{1k;zNiSo&$!ay_lK9Vkz$P9G2v#yQ9oO&|BQeVdMPvkUT<5`Wi9%5(J4|V)-SA z1#?88 zB!055u*ec^&6yJoJ*(ZahV9qfJ4Eo0Om5QG|B)qXZN-ouS*Pk3?9n9uO7V{7TNLgg z#9a3Un5Xd=U2R7;E@)L-@tu=b5T$oG;n#tI-ivb_G_Qgos^_@|y; zCM;C+cds!yj2H}abkZTymk8e&T6STU<29_1;vaB;TcP?~W%B5(MA_=A7*Y+z*H>Aq zh=UrQRCEWLS?xAgiQ1HvC+-&r0vPJ+ud#~SYH{Wo>qe?*If9{zZtyFMbi5ugR=n^l z>y7yBzp{?`;)^r?z)=COisb7ox~z9NNQxFXJRl8-g=m0H`+#D(IBq81xXzvjdQV?x zmAHq*tRiC3*ATNR-(d2RLMZ}vxWP&UB%57MS5dSQuik)GX^hx@gGJ&wbd2_38eC&Y zW)A?Jl|o8e3@2CtLq%gB38jZKDp-zn<0g>NRFu8Rq-pb%o2b#Xpc& zD{=S_7RDd#!736dp8mwD&;j#A^th;YpB2Yjf~4NSwNkJHnjyO0XZ^!<3{6NwP(jns z#31cS;%z`rk$s;Ht4XVs3)2>Cw+mH?B5e%G8|ED#E}G6}3{*6}DDlPvRsp)dH4mWU z*db0oVD)_$sHuT+mISzP(eN=i-B<-f<6B6LIt*m}qP{K4hZIAx$k{twCf-ZpzOBUl+^%l5$hS5FRdW z`~_8xA?iJ1W3b>tunrZAudrf)K#_$6L3R!ij>qW98Y1d3^vP>QoyX?1AMltZhJ$a3 zcRXOxh1|i>kdVz878LND*!UP#Yb3q~5Gk`GHV&nD>VveNUIH`gdDsDOoqOA-x5R%wE=ky zY=CIlp%`*?ac3wG3p6ihm8!~Yhd8=|MTi!h2SXBnp7RkAh z!^ePiDQsd4ruXDkfxT!fqrolk1>Oydl()+zQ3lH|uV({wwo4i^Tj$}>Nv+ZOz>KMT zF^6bE%i%yGwtWAXrZTF`0w9`Mlx*3DiJ5}7ZP6v~$D?<>9}DOJFGX$4{aEM?`34rv zGHSny%2N3hwPdb7aYH39ld%9d(VA)s_hhhe=FD?rXiDMJG-!E%$w*b_WCQQkQm~e?j5aO*BzCwX5y+Juh>A9hB~Oj1L_!=FACZMJhFg1VKTn42M+hf_|B!#Pt$kO@Gn1CG%ZLUc(EH6CI_vAIhs!ip$HC0a;CqIlzO&Po;P{Uz(88 zypq0q19+;_8$|Qcys1}kttPTc^LF+hcMH6ykz${*M|8%CUfM9ph~oLx*mj}CfD66` zh$Sk0_6a+%Kkx<-} z#$d~}B!^xAB2U}8E6B`4{B`clZq;RQdmH^Khz4V z%JOaz>wH(bJPl@uJ(>7;J9KYhXA9Ne6CpK$^E1vH{ z@bP%Q9bDMk75F7TY}c5J#YbXXMgEl?>wDcwJP|#bUWu2)5uK@(Fs!x+X9A|yEbMHe z9I0KG{OXPbPDk->CU81OSEMp;QHk3ou+l{pF6-&E$b zja07+A6N{S%SEU!5AkIcUZtdLiZiOH+=PzEPtWv3UY_com?%eaY9gmocn1=Br2Xs; z@pB>uE!O+I93{w5+p2sj@R?ne&w(?j8h zBtF!#xl$ezFFT1xa_^3f+){{ z=jriE73@l&=5nnR<7)8r_WRpKLQPI*C2x+gz&D;!S@Ch`TH`U?wL*-P}z@!zTNl}XS>@gwry1Zh{0h+~{ zJHd>?C(XDhCmGd}?E_st(zz~AhjG%*x)|sS#Lc?=Yp{KxavkDdU3jt+g8Q)q3Go1W>?uU314GbV~( zoAb$t8QFqQq*vl_YQylp61Ne%$7GQFIk`AOu)QVdQA^RdCGYv~Ag{IL-L$2irmgsO z1EaZGC%#)-D*ouir)UE`nVpdv1mm^O^8aWrh{P^D@!#dTrV9|eKmLhqK#+#cI zKDa z%$Fe91Pd*lUxITv9b(;0(R471j}!+7^V-EGz#!3$21ntPl^aH4?v3_AuEHW>2soF8 zqW2KKlJDO^^GyT{<P`tNB0~K?{pQCw9QBvea zX(ejH)E=rHuzjv1QF#nsinbme!#~2v81ovaCmtHz|2l74WWp0*2j^yRa2LHm+`5?E zA5WGy8jHbnP7EE3oN;vEB5vhKPkwJ0d$Rr*M`=Wc3csXsch@6bkbWSXvjOB8% z_+c^#)-=&z3P#~H@!}NTM5Q`D1su>h!Kd;LDkx(rk1e$Xf_9vJHkcT6UJmMj16a_5 zIL+rE#m=dO0daP!WMrOB1)Qu#8&qn@G+vS64kRdS=1h@bs70(eHx2b$BDCq848}@L zmodrHc^U6TTzC}%_Gr_@fa#oU31ymt(|HBtcyBs?0YRN+fM}c(CueYZx#ct-CtjL~ z+@^`iGtubjV#7>~{3LN`Ca)wb@PeuUa26*T%;L#~&AXX$kqV<8gB!H%t>#=kU9K>!}%U1NqZLk-4%~ zwdcxOJv*0IlG${lY>t5C(=g2E%!L@2iF=ZRGJOLPrh)arKkmVvH5pyc$|{k+vAQ zB#Ft3`CAAKS|anTx`da)$nLO2j_kEdkS74=oXU1dn>^LpA`pI$|-nbC2x+v8mnYr zzg04D(klKQax1f%!cH>OOMAiqXNpbxXo}7WKD8%>L935eYNf;fJM7~bS zw?F_Ez;g>O0H9f*+*;GXz~!l}nY)9w-Jr~JCI2n^OjpI~$3zN<)KxQ`z2@~r~O4Y%Zw!35?hJyMnoTh10T-E-QL?je;x++vQF8n}@F@!=`0hcqOkJ z1~UiRY!0y49*_`9BB(z93m%857XJm5OW9)e7hFCfd*=(xb!>fX<-2kD=asD><(ozH zm%JxQr%+(MkI>k!u<~sd?Z4t_Wk^dXcbH6DG|QIhZM%EQFK9-DShtHuiw9qE`MeeK zNE9`<@fYoL_K79iconbmC`4S|#-9)Q87lO=nZVqo{dTi*Qr^F{OKKeVZRZvFqP-}f zBo$D~+{ej*?XENxmBn=0!K?I8B0V~y;7|Fii~;j|x|u~OnUz~`5)~>g>;S!5A^ftS zX8A(Y%>v7_RSeGpW4Bdo%K{O*D9&W@5|KHiLBxB2*dc%pk!+vi$jBH|%e6uj-ih08 zABj#oC0gIu30=)Kojm2%ACzatQmx6a?itD>B0yZ9@lmj#w$ z#GzeW+JIV7<-Z$(A8zH`jk+EbS-YWHftkWD@EXcYK}7E1;rxf)vcGQZ=H*21J)BzeO(`?*hgS`Oyq`d%gAxnPqHIE2h zhA64{e_%=mcfaO%-_G;vUPx}FecZEOHvQIq-j#+!>w~-sDISvod_}?{Iwu@AP#-;j zrD=_LZ~&?xXzgwsFOOUem=duqOxD3?%q?%#~TT(G%s!S)0R zqUfPbOOi)OA`*^b30*DHkD3bM)kh(2Tok_^l|5eQ7*F(r5}VB8ZD2MV!yg7)7rc{1 zhvD%s9vx=&+C~Q*<0XQmQj-zYmSg_2V|*z!zw>ckBMM{{*L&oV~# ziDm=~b`orkE;`zc@?!W&j{E)4Nv9Q1NpTwS-YG9jY3=Kp|D1wa7xmwGinp|a$chve z^-uHe-sm_{?<5aIF-J~woJO{m5H3!i<;fIp*kQo`N;WU2b`0*E1|#OJYaXDo-vj8~ zjTrpF;va!de$QVhVmZ8!iQaeM5TR1)6{eZ1ltv;?t<72;!qQ{EtTUw&hpZXil!r{*Pc`y>l`i(oq#yckV@7&>*i|f1m#w*k4oA?_<0w1{C4*_JNsQnJZ z$%x;1w+fiYHXM_)kAvDIa2$PgUN;WLYqCq^;XySL#NOX|Rl2wF&)>NmHVy7#!)F85 zMI1FSZ{ov2GAt$ZKjfeH?($Oh0}I8Mcd?&`Wb7WV5w3$r#s+t92}COmNRc#yd*&WC z@uuTFg?kb=IrsQzJ5K!{?Nv&Q{sWpHT=ek=G%Dvr+xz5rHr$7JfL^=$fVVD#4F;Q+ zvy8$a5YmU>tX1CHclnd2Q32cjl#17{3pX;hAM;{GVl|SJ;UZYu+W~qF zeut6{*+o5E?O7X%Zm-6dZD5Q(OY@zAUO-{ZVZ=0 zp(q4sdlD)~%8p`s8_F~=Os@`j5Ns>_n&YB#nAsWs2?LtyiBH4yN_GV2gz0qk-r@kW z%c_LyvL9uCzY(t2;ybA_A!1G&y}Y-V5(QrOWY~VzL;O#kKy0uJmkFE@$q{-zK8*rG z&7N5rq31sC>)9Crlxgcci6!(vt(yJgFp1)}Mr%IHu!tP?r0 z`Y+l?o`Yrec&FCbb2na}qrsh6QC~!TS0+K93Gb%~`mRDq^-3+>k4^$-*4D4V`%)d9 z?nV(Ab@g)Ed9kvt{wi!NOV!h>+mFc(t|&6tf#5+-GgkF#*fPj+T0qXwXuR^#)&{;H75p z%$9mtWc7JV{W&-Rt@QJ7uC>zdVl-WBtrrhEMh{EVvyk90K&A9Hn3Y$Kiw14az5B1yV>dlf zq2TUG(O{2?lP8kZ1S;n39B-bONa$s6p3;L!9Y-lie`1aV2X3$wL)z(K?WN`dwlLT) zakURTqPfp&K*i(|hP*$~XpfIu?Tl zqV5}Pz5Fa8SO&|)Hk00v3@e6r(Y;K->ok3zeNKPh>6`mcyX)O+`Npp@)~Qa)ka@Up zFTXOy$W^A~WEJ=rNxR8kTa+nSB)!jwjQ_8inFsq-B0N!o`!WlDqQt)Epr_{xG^9t0 zfxYxt`-2a}tX_Ik`~DT8K_5LqIC|@$751;lf<{7Kujj(i{36joIKOTN(lwER?x#;3 z!=r=U_g9LK`sm6292>bSbgQfJn+!+B5)kgI$h{ zVBBpzL|p2vhvWX=hrRU_`@J<(la%;-58pQhhkQC=oLJ}rs&~?VA@GX+G242pagDtgDMF3JAxms z;aT>!{#9XJj)|X^2zQJT>Bu~?OZ1L0Lh`>wlS~3N$w*R{MqmCi-O>Nr{W&LgiAx3K z=Gb#)mq;jMl;B^tG?{InSCG^%g{=f9tQ)u216udJPR$NCWiA@Yx6IoxK|X!~x@t8(b2U zHc-E0k2yluW0sQpZZJ2L6osORvUpu_ClyzHk4x8!iqFC@ks+mB4>L%U6&7yD>!(JB z8@+wB;as@USlcI}A`Gc%Xb@pYi3>oL#qtPa7)d+`EGv?W8v&?()8aM%XF3K=P$yYMywd98Py6Dtiw&g8db|DSU-aTAXDQ>J*#Zln^y5Wc^4J!PVt1? zYKSQgqmuWu^t{^!_5>Y5UDugG)m+xG+ZPxqY*lG zBs0q87rqfyOGI$PCwoGZ;B7SoUY8in4Of9u?|U45VM@JK$=Fz)`;PU_pAQR|KR#Og z`6V%;gpoq_G@DBpMD9yQ;v&9{qEVy~3nwkoXdr%jtk1|3tS) zbVZ-)@u7$5$P}G9LbsBQ3$96qjZ4R;dK@9*^`|oZvZuM}-Sg@izH1TY^)kwa>;vV% zatLt`4H*~3A?vM~x4?+hTN7#c<+7wA_FI?5_*M2$`-7|WhE$~e!8P$&n*K)-T+>yE zE(gUkT^cSK(_9~kUtVL+R3lS2=!2j;j42d_+v@Bn0)$3B*-7D0_vDKZgI{M+;4fyr z&ML#%_ByNP>9ImjG_1PgDDl}^NCqd5i3@9qb?`*2(@Wc}5HX_927R10BucQ2dIpY7 zzqOH)sB?MHYR8DHpXfoPfqrd^K1>YwRL=&O`!j%1;JDBA^TgYh`cki2%vG#upr8BR zAHcU?z)(_F+vz+kU=qZUO}dAFMZ8ck(cux8?agA_X1y=YbVPad5ZAf;GST3?iH3Xh zPgU*)@ zE-G$s*W3L)ztcPPD#Y3uS-Sbsx)-#p$js7<5L5b2mdV@g%#wxN&eCtuZGD$^>YAoX z!y${3qS8LyMZ`drRx&(_bjJIEQGfUP2ZSp!GH)K(+O&-H_JC}``rZ0^h$}DbffND3 zXWAYx#K>yr9+X*A+}@)K>xC8eQ9@qUPqHXSl_rz;^QC*$0QL6keW{FP`}KnmL|;0fufu4KIH*?$ z|Mo7`9S3sBP9F!E0=ot@_jk{|FS;KDU;OaCc>AE<1y(!19Mn_EEVJD=`gIV1y5H(= zyLQNS!y=906oNbJo;d%l{%mnMi`={A_`&%a9MS~01l#|Q?~68v^?KU(;_yAal>Oda z5quXi_3Yhx(O{JA2a2>sZ7*CptdFolL{clJdyDzA z5iM2nkAKt2UOMm?B=>y}X~Go~1CC)k7XXrwUpTIp7GEJ+yEy+iqzzE4X>BsdK ztYE_-4|O=9M?j}P=!BkZ8JJ~7qio$NGLD(TjJX$ZLKf_QQoo71Jv^zuk!p@)G;2Qz z8aM&oG_V1-K{O!SjyJDyurIJ-KqKfN=9@YQxv>QS+F}i>7=81mdLJX5D+r2nr}Prd z3y46<{1@5(pEGN4S})PWl3AQrFt7yuyG+I6)0mLgA3!y&$MH2ZZHt=I7MKgo+gtU- z#B9B+ef&eQE*tdYBk@PJ-VYt!tO4H8FTre*qNi3ByTXh ze?Ij5oTJZU^`r=gd%S!i98UF<2WmreXFCMCJ;-Wt?db-)xZJ=<*Fdr5C;b&j)0KY) zjl@t|dsY7h-ub_PB*DAjniQ^gT!T98QxWj1UZ=d2E-MryYR2b^nw0V2U-ht7VAxEd z66b_v^<-UjuZNU4Zv2xmfA4jlw0pad7wHOhjQGr zABY3j^~#E(mb$K&EsQD8AQxFCy{~)v-N1qYJ;1CRa%S$np}&J=<74)0l*fm|Qx9&P|ah$7O9@#K&H=}02jE8us5v@qY|800!5F8>b1 zV%-Dfm0i~Su3Yy<-PN}RD?@)!D-4^HBITYwtpH*zNpZ{{`VnmX{r-pE6DQXK{QOgJ zxeyf=C#~6GvA9(XxQ{Zx&@HT^5`Csi)IJ~7~-zKIST-~mEalBoEX-ilws zG8kpIFha$}*MI5HW7L&;gk^iuJ<;ZoY(^$I?p@#Q6p5X2<=hF; zqBBH!6MynTCdn4;>&)tgjyG#w1W8<~(jR!jo@LWOc|9L=VKsC`+AZ2SFgRY)E^ii$ z3NT4KZYjs~3pKABL|`~5a7a&&G-rj+jcRa>VpV#ku>9;?-1kGG9;P zLMCw~jnyz$izpl+CH10LF)2M!VY#aX)wR)!tfBRdo^Y?;u!PrD$LQ2N!s2G2kp-_W z^cW_U=L5EWevVZ~s>3)g+rSAzEDePMib5|bp1jCr%J$9bFPp!uzj^o@ELTOad2I)< zE)bMg3}7vNBKf@mY!5KEbs$?HlRi5L=czY~%s~=0?+s$-^Pxr#^6KKrOLVQ42uTOx zFNjg;=#2|vaXK5$uRhvIHr647S!yU+W)D^iNhMt{g)@Gv$D?Or;J!S+MUAC7_Yf!H^k-9j@wBXE1)TFNF^jbC|5Ge&%>Mq+^YusKSH$Zlo=RPNkd*rf#5HT8PFG+s5h+AqMM?dDv*1oRpT8r1EM+VU z%oPLhQp`s2c4;G#PXaFhhIk-m44U;zX@m55b)t-TVp`Lppj6o`rbZbZq6ybFI(3QF zoG21KzXH=Y$*Is1-%9)yWi(a!HJq%_ByZu9hn;HCv+=b{7I4^Aqb%)o5uc}B86!c% zvjAgbjRx9}@krD^-YBMBrth-#@6LDN5I|;Tmd*d;zqBeNUU_+Bzbe&hRIQy{D>b=hzvS9| zlaf$*l1*4-D zTxGz}!D&@|q3tRe!~Yg44ks8#tNgD89;s}2w7}e~tE8rl5=#<|#s70g!>Sq;T%zzI zqon5>x3S!rH&4%mW=2;2a^85+h!n53Fp794w=llYa5l>P{f})BXhTHo$e}}{2KN~< zCTif2mq(6xrQgVbLx;Sa4{-wMtR{B!GFry{`yOd!Ot$}f@Y!vRl|gyiF531m;_?Me z|67pfP!D61UH76uOlf6Q`PZe2#NI~fyd`*E>}|}m|F69$68jk~{(Z58cyYDAQ8{1P z2?LB*S>7=5Pv-DLX zGXGdRHriM$hL17+q#>H&nX?Gg=6}Y{?Zw7`e_zeaCC0pb)vUDC7$n|bY7}KD=|lUy zB#tdL_KJ^}8M8&l<;Gy~-Et6<`^$|7o{}FJ4voK@)^F&LR8e(>@sjv_h4HIq6GO)s z<-{)^8mUF|jcuB_o>eQMTo$KRA)Do6jf$QHV?m`nJI5Kzz_brF+WhOvdyc$i_-Wyz z`lP>-RzN}G{zPMlp3*11&yap;B5jh9BL=-@B&quSnPjvOfh!F>dHA~VRxaGU*Nw6f zP0|Jr?Kh%NzcH!mqu6F0%oj)c8O6kR{ft`CGO)|gkpqYHZ#;Bp`p_3& z?2tBM;Ly|#BZdwe`f{K2mqp=JqoT7#pO*)S+Nnl;XJ0^xQK?2%|6vj&ZPd__X<}8X zQKz&Sfa(sz*Qm6Vp`+_{u2Vcx>QQ^lLpjM{~}r1c{N=Y}@$d^ycX zafsjFH!67koN0Wg`L!LI`bv6Q<38!>p8d0pN=|=Dpz2ihZ6nlk_Z_2C*iLU{_=;< z_J${FF55tS$7nWN7+eN_S-5GqW2Fe(SK$W3O@`|SHwA78+%Dem*>HQnKN)|;Y_^)V zzYq`!&vh?AFQ-|7Fo(-l$`alM!+#)WSWa3R3=bBTmCMv1=#hl{Rj zjPhlvbAuZ0T4K{ZG=l0>4Mr&0UJH{J~D!}!nYCL3jRj8n~ne*c|zA3KRYvy zAe^vQ6@L-d@Ax1CX78 zAe+ru&%_>mPoCuaCjV9VsbSV%`*0I06!st={PUAtau`w^kSl+zk1x;X(_OXzZ+M|T z87^5n@|PZEjw$-CQrwqGGQQRLdI8_m&GcK*-en_xrw_siv&yBoa+dV}HDA%^Q=@2x z%8HT}RK&ArZzseljr?B~ zciC+LqHs0TWA+qtm{YjIT|k;iCzQV!{EE%nk7m;Jpx**ZS~J9EyMTBay#=Mcf;b%Q zmcM0Y+8D3bbnGeS+*E-ZUUJzSW<6J1%A&m2mM~|{7`U_qCBkh9w-j8O4D_32skdut z-Z7={YC@X-&j-Bf>PCRaI99)m+>W3S)wp9Q3?o|p%D&1xyL^(`F5~ zBDEpLA2wQcG{@VVRufFO3W)UG>5w}Bh9jj)UdsHmzBrT+uvsm{7`FmI!6(|oY+ zk1^}6+*!zy(p8Ui*bD~$a6 zkb!DsEaKER#kGOoI^(|qtU_RqeEFp2@q?P205DN*`sD{s&jW0;b$-^D@yL9IPO!i# ztOR>Uo+ha#$&stt;I3GrVY20IHW1pmHacbm54B&9)zIeYgt#S@?+%N5Lfm ztHM=27tuI3!c{l)M8UP;Z-PJShP3ktpnlng3ru^#{R@AD+GPl*f>gL2&=j5@-sKHf zaA98m!+ztSoFr!*-UEPi&PGMnV0cmsc)y!8^#+H2G$3HP`xV^Ya4W-2gzE=47VaGsMcf1ZmLZLzNgZbUI*;N8zz>X6pzqw@DkM<7 zKRRE6*<#KXEL@)eL?L-WK9G$TzryzN@;-vD(9{TF&!f-&-j0j>rFmGFZo{FM<__NxLwe*vg*YX%~uqtjF-q{TrU9pIWKrY zMOllzYe{Ps4qg#ysV53bD~t64J~Go1N%sK{LE?XEqcyQpeDbAHH1tg`xHn7NI1ocW z5xoP%&{8v1llg!Kf06q$p(QaasPoqVTya>G#_Y|V-x)Yhu?>ZPnJ+tEZ)+iD^$r8V z+QHeBqoj}69iaxqUqc8H3{^!da%Fzr%Ep@Dcf1)E1g;ifN>Rxy|1W@BCxsCY5+uvd zs6O8}Ln+10N-jy7mcS);`xUtHa1-Ft()N8tm#s70X>i-YeE}|!hGuX{6pw`)1NW~A zX1e2WiF&SwTNdtMxNf*D;eu+mvK7WhG6GJbPW9j}fJ@7GEZmWB{otw*9iHIhqVn^z zKxCFtv}8$uD9T%XLEg5t5tjgx5epClInysSABZ(qMMx_FUiIGCeDLqUuizB-Todp# zcImgm5>NgU3&21sK*c<^vLwh){I6RIR19R#{{ny40#9NI{YC&@jrT_jpkq4nzn|__D_;>*& zQQSuut*iyX-$5MOWy;hIN18GbW%MH=6g5{F4L}(2jcef&4@tj*3Z(FUfKdomRMb=1 zW$S`CRgplzG=qOm<>$K{~zbdE(;AwEsFFzSvW`TElmk3*ZBv8td z)fNECAj{%cwEsZ^ADvY?%L@ooJjiZ*tHtybzNs?5ql}Jlo50^0?gF?K%_RzZ3W!vM zTV;3@VM<4K0N<+c!}z9_PKDbLF8wToIaeS13gT5a_OqlPfNz>2E#PKQ0cvuoot0YX zC|Z(LxTm2x=4T>|`cP4U{NYak2aUXKZELdt6~72!G%^Rc&G@-+Zk7$K?0=Ka39RRMtlzSWCs^baV$Ck%G zUjX=D0H+G8pQSRr3jlu#a5W|=iKQ|F3INZq=#^?V+0?XQ1%N9BwrY#g%27#?DZX`e zv?VRY(XRpGsf*RGIs8SWVkpA`O*tQIY!25_P0UUk4gWI;?*calZV|Xm;9f)yNpLsA zjfX4XmWJCEu3C7XMIJQr=r{TUU+0m3HT;At(jVsj`XYgv7FhsLO(lSAi(iEg1iWfi z4&tqS)ku8u4S4?%0HGC#el1qy&9b++1dxnLoqgRAC%krRcbTIJDNJ2`Zyc5SSoqix_+>{K=u`4WEv1m5EA6QOgmo z=8n?ZQ2088tIDf<`XS8R-DwU61Rgall|4?RDqQ~ z^x;@_(-8||D7gi^dI8{P0j_$Lz7Uo95yKt-c0B!r>?*o4a zWJC%;Md}oTgCH9=4st7zwbF++irb&hKU~6^L&cV#iOtRjJO;pO8s#8PVSzG!kPkK! zuxh2rpRa9I-b%fdVX1L`V8a5eNK=X)pWbOjY9ke0}lN~^>hDpoN! z^zBVctB4QyVNt#UpKXe)9p z+)+pY;J05YD08Whb?)`mMdkhra<^jX0r|~w6j?y-dPlR_swqD3jMxIeT>vL}R+T2f zy=kKmSIPTb$&yxO-Nsu~L20dO>*{7&lg2CHXOWo3yYhF3Uv-Jv9i@Wmopv1TexN5wu5^I`I6YVr(=e>g1(1@Cxy7$Ive!`nbqoFWSmMcl*HWOO zsM7$iwrn0*;t4)vgV_LCzT%dwwhEU~J5^XgEZ`cjk+fFO&zepkT*+mhpaP1u*@|zn zB%+^%1s}c*yxb^=4Yc+_-82Mjntf-@6Tw07V(XQx$LcQ`US4~yLuk=9WNF=U{KN|gt zFF|;@JQ0Yq{R+i0^{4uogmdR-AhVzOCY_o@4*;!(8>O(2*$xGO`#oP!=90`lUjTR* zz^$u`CHLM1fXDnZ_<#by6Y_y4!*3Gtj9~?UH%By$Gu3nn?!}UovW_kwZ98vKDy?;M zO*YD#PbSi$!L-TmE2t~g%i{m1#Mwx!7D!dl0Hpng{z?A)@7?*@KZ0j8$_H-mWs>Z} zJxyM60^C-pWiPm8;TD7267KyM%r)c^ToP{9b@yr(2bkpT1pJ*4UcQG5idRU0aEaeN z1-CuivPjo~{K4RQO4F`VnpqxbALdMOFMX z_+LQyRk#V3bfMmgnfZfId{lONn5kwr&UjdTNO_IkVY}m z*}$lkSQ(pq9fIWY_Y&ac3?S0#0)SdvDE4^~eI6PGtKH>$fTx9&eg!QXM-X4bjJDMq z>C4WVZVzD8l4KS5_aj`@U4@V84P8BTx1u#cP*;%5l!-qz2%8{GaovydwIO74-bS|r ztRg@8w_YOi!Ag@nrDcspq^dQ_wl%Q;D~WGEGN&1G0xm5%>)?`(az5NJxC&0WitsA8 zAK-}jQUp{smX?rA{84Kw^)ts%SGZJA8eHnJR;lKCM!NWQ2qQFB#NSu=CYnN-9`t_G z7(9b-T6$<9zU&RJg70hiriC{Ve;j!dS*T2^h?4M7ro>exc)v+u))3z`en{G*U#nEH z^_0;iaH_We3adqoYemuGG_HGG)K3gLjd)c_imz+NKcM)p`ibJ%h*y=R_=aZu>TJZH z=_d|Sys9+CH#Xy+{~qzz`ia-RN4%;$#Wy$OjWdWZnJOxrLA+`M#kZ#T^5XL|My$PI zsyKuAjPaKGTiZhLb1iX;yx(dleh9xB!>WyH4sJr6VkA_@sOh%b5{I^DNI*5*j(Q8B z!d1^HPG%qk3zextisEbzp>xz&zlJ=hXBF%Nub=W%$Wj##P3`Y%h3a|5sg(8hJ|$FG zRFkg;;?%bq8IrmHHrrAeN^6mI6{VzLg~Z?g8L_ zsiMknRSJ|uoT{|7D48$*i$gqNvY@oqb=sTOB@eM|nxO`}8-&Uqif;j7a`{2=>Qf zh|?+d&$smd5FLN(IO%7!X}jS6l^kt7wZ0ppgW5~GhT2V3-EWB3Azs=^&ETFEdi!=m zd|lHg!uD&4>?yW19`GC5XCSU<>|0)XbFz1ds^Py;_F(v>k-D_(@8J1aI>wpl?uxvR z&Oksu`>l%2=0vcxVqf+m%KFftJX;nn+T#I+%5Ru?8`7o2)=8VcXZ?owYQ)tl|F5Kb zO5?1z`>CWIUi=kspNob(+};+?{SmHri}ETC);;UXZ?~8By1T&jOQocHfqPuE?SoNW zTw=I5D-UxoMefVz1aMD2x8UCLBZx=!R%qv?MRar&?4b38a60PyH7Y^`!7_J{1pt$EOr-!KdP! z{(XaSenj_LQyjwL%~}U5FF3q7dH04-z)x0Pcu$bwH*4N+ohaZd_!Pd+m#*|PMeOHJ z6Y{=SDogm1?*;a2r2iazI8on^kufC#DsXZM_Dj=PD)5WzMOl(^-sQ)KZF84a+S(&LcZV0_zKI9aTV^) zrw#=k;8W|epP~N%j|W@*r51a|4`TT=69|IU(7vZUe+TlkZhM7Cf+r^O9iY9Tr48sx zzVAVQgKh0EHNdxE$WiX=P^a^`KZ?KMQx)pplp~6Yyg~bLx4#p-hxybDZbaUX@!#_3 zVd#)&;y**ogy>Ge9(?LwX$5|7^)=&T2Y7GsshNBVpR-CZWN;r{;RDjT-<127F;qIy zo+tHCl5k z_bJOg0X+q}c1R|70`xr5dzR|_N z;7hVW<+TWWq{i-3o{uBpfmCxCkS>;t*DqIXF~=3EQM z73WiE3zSliS#S|V8(904+Pz)KE}u`v)fjvUo!4V;dhM^#I29l({Z_6AWFut$>!@-H zM?cL*YI&sX@~7ame!Wqf0bE>9RjvK zp~KASN06aWCjt4~VdlS_UNM23qkWN2%7Tj7_-w>g@`KVg3D(jK(V7I($d3>0TRfXH0XFKz$bYALE39|~!_x0ku;!PZ3FG-NNN)fu zy&;#{QS7%ig^0tjLo=U2hc>QZhXGtu9fol&3o@?}{(Ggf`|@!OIq4v~81i$GQII(X zI!brE9oVV!7_sYu?4e}7YO+CHm^~8omP0{jv7&TFd65gq<2um)X+m=588W-2>rdsQ zhBbzo&V<~9qG4nGxsX;tI(sqXKz4QMDEqi4*$g}cjVYty6ivCB%wr|X^XM>p9q7yi zrLs4Jt`x%mb!FMRf!8}`kWsm!fwC{7!tJvj-Wk?@jkD%#yA$TToJqIBc42=*EaH)vc6IZ$NUEvjj?tD%8?+L5F*KVpnP`YA4% zE|4t4Dm$?8PM&b{tM-S556u zb8#m!=Sa*Zz;2-39SS;&l?pSvY5b>{98_(^5Y67{Z%R1c4HQnJsu9+a+bt8ZcpBAWtNuBm*+RbA~+)nCr5AjdRvqTzGUI&5lDn5b^ zwE_(@dj-J?Qf_=1Q}nYY33R-SDC|9*%1ZoUa?rIwR;6BcAjpWr9~8I_b#9ad8Pn>r zcCT^czoDs_kw?mvQAfA&n})$kN?f%k5A#U5FUzVwAUv%luLGk#ok4x(74vRZ(`%^< z7F*y)Bh&SoT}Qdd;MzZ(a_5owtDa%Q6%dU)8q8M2`LLlU)E|Vl2mFh74t$XgF{=S@yR4&Pc>BWdNEag&93o4gpBzqK0Cwe^8bEK*Ye8oIPXFAWNp^nRR zQgw|@+w}gFP9Lm`s;D^v>JbuuV2!LNl>g@*F^pFsE1MuLhY_S_(Pgftab%uOiY}}S z8!m--Um%Ase%~huUMEGf@=|tiUoMB~VvRWl>TOcT`_01lARGR{rLrG+0|+b)4N!*S zog~uzo5~F{{yRlKi!#xn5f}0>N<^7 z%U`2wIINAYv65w#J(G;1=gZY*{xD@?QkuV>&31*&P#Dxa(9GP$ zy42jTW>jKn>VmMQqLnwiNU1mQ37@ZuKA8dkUx=AhpZbm#{2jM!PIshMg<)LtXS$*r z#-v^hgALE1jv6c(xMvXTOG?fbF2fVgalsS1)7#4h z{jJHlJi?^3^^>hC+3fk`{+Zk`%05*fgUrt<0(zRi0qs=d$hRR6k|uU;e}T&q_!RAk z|7CuLvheo}VUzIpS3ZIc{}Mp*96<9SPt#wZg?L4~K>n6m?#(P5{*{ePm5tT`|hzY|m6hRSC{0%I14B=C6t=LXfc{)yhb4b*EhZAE@-WDqohLSAvNOx$VI^ ziplPj&p!)&J!Sa_vUPc@u7Lkp0pmMZcOXF}L3VDw;@)y$=0BebGWp%$tVRIagsUc( z;F`SIf9nqIYl6&H6Z$Zk5> zj)CR5ABy{Rv8Z&P1v9f7_An>rA)Kr-`$Hx>gzhaYJli3WSwLnY#s*J8q(m&Eo8*MM z8ztiQ?Cwi(=sVJKF+~%(WOXgk()}Ao{_l|J-ht7x2$kJepsXV~eGZ@t`fB&ycNLeQ z`$kCofJD%dC!#cie*|g%bqgkCnEzkH-&UA^3#mDMCWKpr=3q>Eo-X@y>9>H()_s{` zjmHVz=V8~!1k;$bzqlJ#L-pI1%h7^8b{4#X%SnPwD+NE{vRp83{$6-fjQE3augOqB z`V6l9&*5?tnW@(BVdVzt%NgyN$G9{_*=zY&3pWa~H+nM4>Uhd>YqNiZ{7}Ukv#TNZ z?}vK!9l-!XQ1Cg7vMHS!W9R`}`;0?7?J0aQm!BnYO{X^?2Wl8U4nbtPjgO$iDuE7n zaZPo&n=89MuIUc?PNLMoa(sf)igSa$C*{*z?j72dwXFU@- z?QH(z02N89oez&{=kgJBm?w}h9w=p8CeUFe*Hi}`Fmdl3afg!JW>octi|WYqWAN0bv)%X@iJc77X2_lK3Kq9{vNFhgKZK!_&c4IP zsm&(%0pt@RqwHspeH860YxMGzs;Jlm_3qB%UpdBKA9pW)rKG6$FNpL>*Kfv$yW6PO zuF_4i?3R%KkYJR(3(~r@SN6}IYz@-eKxeM!f=N5_;cTxz3et2$^~Za%GP_Lm&sOVd z>(BPtb=gZGchP8R3^H2~?CP9_;|Vpgu-;`oP{D5lg2SMsqU=lLen764xkvF5W=Qau zja0TM7Qx$H-wUaHBFDk=GpxGGYymY*+uWtm5We z{3NS8^+%M-^dYY@U9a<#^?g|jbN_zCKbG!pMnmR;%#qN2qWVqwNIW*tla=+`d9pUU z6QrAe#R}?*oz+;shnMYEKi`v046#Q1!OiS0_7P_;!JSRX7?9(z`*6$pKa7EaYIMmM z=vEv9-Gk1Lo90XfT4?<{AlLe=j;_jxRq|IFF7cJ~H-Zd_dIzm0Pk|v_oz0XzRbCsc zA*1s#dJ-FEDmffX#;PJQ@|_>od7;~fHB21FQ&m!WBHO*`qj>p{l->mJs0Wt=PTPcC zAt`+Z+u}u=GXC!06qM#>C*GXjwj-st!3 z5gYxyYiK`kaMgjyk;=Y`!woy2@LW>5OB4>?XPYqSg;Ot{&utMY-4^A?5Yx{je_y22 zeWKj4@JBHs)7_)|4*2wPc=BC(c^p+tEy>`|vXGsZ{8lqVd+jDYBFd@EOqE|A{rB)Y8<#ty^NtxTABaPNgQaGmiQ5jOe+VNF9fTjnw;~N@;5;g=WQ}IuVXseLUIu)O-qoRNdD!xSmbt+M@29>{h zT%M|sQC+roN7(7glvUXRHu=g_rR3u|pmY^6y`pn-5S$FVMe4>zm5Z=!fw<$MihFwU z)C67!@iue3<>C!;^eWN(K5;{zdA#3GN?)7_oBQk*2K@;YvkwY_#iaE1Vg41mN%{9_ z8JQKv`KNHrab#djkp3!D@nH$hZI~s7Y}^_I^RzRX#o*MTL6F&x3pdB2wdEzWZ^y?{ zf&wC$0YnU9OJ6>c(2_X`n&_bdXR78PdlWeXGK#;H=*4Ux2pStD>*#w8Zc^JQ4Fp$s zG8W6AyEf)xCk*#NO&Y-g#5>Bjg9%&nM~>ztY*Otwjt(y2De?~_0nVT8jb&Td|8a^tfxPb9i{7^qNCi#+EyDQ z-6_wlZ1box9M1Yp%IK7*^q6YlAXBdmg^`rP|G@*U*k?O2#^xr)1}_;O1}k7bxi??v zC1twjY(&;#SB8CzbJC-1YBnWGv)JGy0`7z{fJ2DpTR|)r=uVXWABgQY1Dp(Jqs-3YNEosh``wuCSZcLV;gO(NDw$6_;iqDwNd^6lB8 zlT7!2A#~(sU?M&EFv;raLI3OgEo0|zJJRr%Nn!g7oUb@^)$@(sP1W)9-Yz}JqXz=ue)8-6TZ&>)hk8hZ3fH z8uo-kLGm=L)V}0tSZUV!Ps2){WGxw_TJ1^J=_1n&hcL^pC1odtak$aVY;x$mpvM8M z&7|x=`rSS2sxLn4%IaB{ZYe_?69Si1?Pi;Z=qIBg&;8mPI1lh~e`Rx#11#=TI|B%jU?Op>f zJ;m(=UWHc<&u=CQ*meR}QTjO~_z2QdQ$fYG=-z6A%gEl#TMyv1s_M~nWz;M^(7iIb zKWqQfDA1OvILYjV_-?emAN3FkN+Z39fmQBRaaEHVf~|be#JDae3jODCY~r>x zdk+zf4Zj(jFpVd?!pUZE8*r(L0xoO@=O7We61KTpAOp(X*790-9mT731L}4#Y}Wr| zdzxf8`^}(x5Yfb>h^bp9b=oTOFMkRyX`CL~;cfQ2bpE{(oX+Iz7DD_sDfnHv-9oI8 zg5(xrH8dOi*zO^QAxQbcJwyQ~_YfZYeLTC>UD%OMrkL8K`Za+L1=|EF%UB1zr23Kx zbS^w#p}7gB{e>BHdSZoUkm;(IjRv36I{|wM&!mGN#9!V1{sE5`F^Kvg@aZ$2L8Nelndu{UPqEOgOY@ z27575_F971K@ckit|xeXIEQ(+6Y)RGX0V|v`;V$&K2-hwk9TQgIMoy*dRVH5`AnqtZLh$%q!3?KMu<$@g!~^%sp@aMBvh@Y4~d{*&5u@ zWmR*4hXAQOi2e}W)|oqlD#**Dp?GwT$a|`#PfxioOKLR%(uV@iXt9lB!3J4Pz zJ>A3o=jTD)uH06!1OL%fILq6n`X5 zS43mgwS?@%kVcWtklrlsi6QSIKR8+K6GP&`l9VO%Iixpaf#}4LqbO2pNCA68nB@m< z&4aszT<#)8n}s!p;^Lb~(6DtImexYtup1Y>ox(~OHrzde_8WR29d3LXtIlGihwqnU zUX`}F`X2c&(7fz546w8onT8w}D_6k~9NKFF`#@$ucCYfV`3&w-U!tepPDWq$(ejEL z@y>KHFI_eF4z7m`*?XvOCbYIKeTKD>^a*7^U7x{?(AI(Q$fp?@CU)~ zg1*YBEK9cTi17kcSePaV-wUq=v<@QpCCnofo3JzN^s37W%(CaH9Ws& zWmqvsKLuOJI7JQ&BGtZ3wYOUBD@tlV2HoYz_(ijTReMgg>kJcHbE^3zXll)=){jK5 z3@hhQp;lG$Rasn>f%yba-kC?#$fTmj8WHF?%6e>+NY`U;P&rx(9ag}F4x1@q*J1M^ zeTP-;m=sJptbp&~{ab}bpHbRl11VI}V;=gJ7jU7&7OQgCVHZRC4m$-sn*Y9F0b7T~ z^4Zyll=hg%zQ+n!J%;}ZxTM2Ysdm?4Yf5T=9@V8CR=`PzG5*&&aqF=kpnZ?k(j&gd z`iOS5S%@YVQk03)Ku<`|)jSGS5UuGktazCc)x8(E+ZMNs<7I7TZEeP{RlF_tN z82o^AUFWds*dF}i44D0NPJXVogO0X5l4P%-uuSU8dooj<$30*%vUHJj39ud7Loj;us^)6b~?ZT6g^SEYV zD*rX3(c}6!PFH+QVV}XyUo8xB`_Sq)Ra2LA?r`WIL{CiTe?@rvQ7-iIhFv}a?+I2h z4RJMdZ?LA0MbiBH*mDp$UCB`iz2@X`O}sEw@d>JZhP||BIV&jAq$2zkHnX6X(U6_w zET|aW-hwXRQVTW!x3{1tIi(gPIA+y!7L*7u-el8Uig*jG-OrJsB_})8wfik_X{~RA z3$<4KM7t{)RtjvC2=WIbdoWKQ)iK$cbbcN<_8IhI{&PwcFg>R;U5|awd0Zc-^XfQ{ z>A3tQ%wCVx7aBhWtO;-bDpjnHoY_M^Vr(xKrr*a(d(NDq;XLsDSXOuVjw|!}rs+fp zQs+%W8n_gR+H}YBn4`tx6}^q9_sIC*cx4tMZzU*|)w_tFC8#XB6Fj+<%%Jl{y8o|D zXHk^bR5Zz|lLjO*$B@Ut+8%r)XGMEKR@2xps^1?nIaSKM3Qb{g zPj$v*YV`guP1yxy#ism>#N|?NO-bRXCli#)WP2hGRUZk0^1tdS@m%4Tkng%<=wCco5Qf9X(e*lJ zue)5rV=yK&o=cSe-yKUz-^kyyYh*kI2kp!85h;HJg||yn_~j02R>zl`@p@c%+^jcj zzafhc_lE6{4!AdL)9wx1`_gc!e zSNn9S+80XH>iZw|?szh?pH1{`jHX2->23IC7hWvgH31LrhLd&&sOJZ7#Exev{WtGG zZlFmuUzFKnB2CbmFUv3|%Zg;~ZboIw_{#kNIM=kby!Dc2<%1|v@=Xr{2`r+s+;jG&o&tl@AkFe1m1(J)_L=L+QuBUkgD#{T;_rI7F>4LWlt_ckKpnc zsl%PjmLUDzMCRYHUnerUCvo>OG_0A*=OWS7w6zzbe3R|C{E&&VgZO-Ps5)=cA&_e! z!^Uva;n1H$r-N|QsiGNE;ScFer$gJ*+$h|18!uBEj;!7}3^u0jy$;~}9Hh7lT^Xcz zpUS210(;FqKxK8h-dbTV(ia|cm+#7b$L*Brxj*;Gq=sFq#sOlpjl zzs<}*LQE@nVTrkm-PfWU`yo}fOka!c!605rLl{Q-7yzeCZ$7xZKK1=i4WRpbv`T#@ct{&j{kUU(a%O=`8IHfLnV ziI^%GOET{3;;t>~&_Z#hXMQc_e~U~F6n(4QO4ba3*_BJ8R!+OnGY5z{vdDZAi{fWJ zcdEFvid^-aZo0-m{ELCW_7M zCnWS@QRqYl_6YdKd|%8@i_BYK9s|=ns+Yx0s(c_)9l0bee-bI3W*f7Ym>U(Ddk~yz ztHo6RZ!Yfi0(YElo`xG2=5Au{Uto6Ez0<{>`8zRBDKd3ew%Ri<7W0}Sb2FIld*O=S~)P+agylA)n-#dx?2Sk*QaTSHR3%%q8*S1>~*c zZO#8Py$*dxtL)CAjt_MHf1~FtkKZa{unTal?Zmf!Zwc$BzX6uA$y@M902J6lZMYbSckGA!?`&(?v5i+MtkxdX#! zE6+Sz%q!c6;%h9gum+iu_+Di`R@9kQ^QIzGw+VYSQoj{_P~4}BTy5Pi_eK9I=0A(f$yEBjXX^d` zvT$gjr5_XcI+px&&4LJm6&p})=p^JYbB{ZQZG!1gJgf^Ct+du3qnSF~g zheA$}%vdgIClgEN^rFmpkkcfyrDUS+*ML8sgvzyClKc5sODf0O+Wi{G#!NCbaeD&C0<{d73-VD15frCj^9 z;{P=e`nQ~Yd+KLEs`?NvopfpBQr4Zz4aZ|Z{Y7Cvx2jt z`}nwsr0*XE>0NS9!~TqMQ!RE}aeoPnW`-4$OYzcNesl@W+H2jWA&W&!Gq1rzuc3ew z4Th;da4K-nmWN}~)?7qXaEp|B2f|u=8@hY_jRlE}+_vpno7>G=yS=ps?mpJq4}lD= zAa`hVHRkfhgf%{QTIF?+Gi%|TA9Xr``fo)wSwTe;m(=^d#tC%w9@MCe{03Iz1_;Q% z`JPteOi1}R-_NR84JrTTw?Qx8EkvzGOa2gpU7=M={x~Z65S@0(#9u;=J%Xc1?#isC zn^42m)GL|FK~`@QIv?XJe`lNlsFVqnV+`th@CGLbCb>+KmmBLo>US)I zUnT|P$}vuKr9{s#-XYXcqO=J*QEDxjMI~xU<;^r=#4#|(a1l|EqC zLzGeV_o`uwm}*o~l@6;U`>5|i;|Q2RRj07xwGtd17*@v|(pn}KvW%7gPjVG zy@~>k6CFMyY26HYU9B4(M(PrMX;2Q<8%dqP?|J=G!-}W`%i-r^lIKS_{L~Vh<+p}t ztW<5Qp8LYlCtiFhP=9Ax{ zXDYBkw-{hOV}p+E8{fa!H>^;ZSFi`i2i3E~yvli8DEo-YG9;@s;@$*Q%@3sG^xf4)<^0He+N)#IdJH4{dopjkQ&a5F); z-AtHEhRuY7-AwS<&x8U_WAQhiDXLC$9p|y{ zxB^Z(&f}!x)cK=uP1UJkRTKke%4hgb14rLflm9em78m`eGXM6~p6sgi*jHP?NwprA zv}_8~>=s#mmTTFU75G1Cnw!zG>+EDkLu*EBaJ&hv0j0U{rD)A=D-p3*t-8RK=mV`G zxD!%SpsTMBYx+@op6E$IUYh=rCn913+L#FM$F%cFvaHW8cYWru@3R6<`po0RpNd2a zWyLklisjAiHOYyYf%=9!LCG0t(PT&KthFDmr3d&C$+*!*(6;psW_RXF98ZO?IUpt<+ZJ;dfb(7g!Z)zhBhgd zp*x>t^4`luM4wH=%=df_eGYm!OVV(N%xEqm`tsgYW+B9br2g^W!_>17nHRZ;7%+jK z#d)6ZcaR3~^g2@wu`Q|phhgS=K0g=zEw5btnNnFUA_i_mHCrlYIu{XxdXRI5a+Y%u zv5{8C7nSn{7ZHOa&OcM#ULdQ5i-;lhVP-EruM*8Sgj3f-WNzXjV(27tK2gq>Ttp0$ z%tmY(GaGXeF+4-g(aJfFi-?W;lQZ)ra%OW8F+!!zS5AB}S5YH*>pu0mvi`5L~N#f2i zB4R7HU#Sn3^C=e*)8vnnA0?;%8yvtxOy`g}GaqmVssE>8>IptG&u|ejBbG}e?hrE7 zTtsZ$iJWbeGnv z`Wu|Zkf#aGjr4;~y!>GcXrFydcr1|IpwE7`>zM-Nzo5$Q2z>@H?sI?@9)NDGzI}E# z_AsE>edZ;G%_c+BQwhWLWwndVu-uPmlVL5S0aFWhHUj(qBZzt-IT~6ajUO6l03HQ- zn&2+ceOiBOu*KN(jLpQgx(DoOmfZxDWdrue4W_W(wag11U{wjKmHof7R_1}o2mOEG z(m@nO>=sS8X`O#DC$CXH(_bm3F`FavNYTqsw%Z>#%j#Z9`%ZUoe&>K?qZB$|RM0-JY66_EiLs{+y?01MaYVzKZ|8<9@l(=Ux zbt)7p(Z16tH@JQK8YncRtJSwLr0N?o$U5sd%Bp=swu&yG98b}#^M_2W5uAgXAycg7 zT@jL-;vwABS+8`b>l9;^sP+cr7Zj_lM^=s+I@yXp=HcOH#b(rld@%H6yZ5X|6&vJW z=-!EL0+U5+MQn86hwMtHJJx+WCYbVJ)uwGYP;DC4HF^%oiy+$s85m~i^9)wSbtO7Q zU$Ae2eL|O-yi8N)bA;kRH)+4P+_~i>) z@{#k4+~WIaM1@t?pJH;$h)(8Yf}%Nj#DGNG5-QM2ri5EU>ek@gh3t~C+JUT*gQ8Aw z&x4GY3y(HDAB~C&BPSaC3Aj{na@30SDY)hc!AS;x1uBq?+%l>Dcx=;>s6_Q6DY7B_ zZONwk{m|4CsQIx;vo+ulNd5j>ut~p2U#h!Gs6D_n(!!t zbFjwXq)PqZuD-Ih$;{|TDqWnoee9^fB%8q|Il^Fkug62XemVnmLZg(-=6+bF1zw3R*7yDUU|r&pj%vT=)wmY(Nk^KcnKN#7 z?i?f+16K;pv$pg?7dgTBZhX6fjq}6M8gS!ABz^EIT4kd=bF<}SgldV@r!Y`%AX>k>G@V!I7) zHeI$y(LM!R?#7md#fHlkg|T>x4Q*`f2dyc(#b|5ksgUx+7L$#81thKyw%E?N*Fc)^ ztfbwaQkQl=O4Ri#x+cX8m?eYHHW4Nn_0Li&3OzO`2+4Mm+ET2+ub5A0gGQNjoNW=^j8k zHYMu%gu1?5zg?4Ov}@PoUCeN;HEP!6{S#$cj6gkHd^CP&A=1>r)wWxC6}QLK5aNhlT5Tp+vyQZZ=SCKhEvDwrlX#6r^19&TmazXRo; zX`30`9pg-Rh6Ta}_;lJ1)`Mr_9ApCpLWSEt;AyIQ+9<=1gRRynrf5nM`KHY=czzQ3 zrp-0s_kkw7lffah&1&5_@xkWw-pP-;MECB94=#4y>lZe4@AN&RSUYF6f!c%Vf3h8) z79I=?raw`k&Fv6a)q)M7jdNk@)9$uHJJKxxrfnO?7uEz$wxrX5YByU_6aOC5H9V(J zkvQ#FMv43{K+G-3KMOYXVEW3FAm#+Four+Rosf+o| zWT!tdx5dk2uJpY}Yt7vLPT$vHtM5y5#)m*z*Z(u8{sZrfDrc>5iM5{9q%~x+m;Mza~y|Fs!JFV z^;?yW+2%`Ce4eXEzuc>ODw`YgvE1~&c=WLk{q zOkKLgRALAog=x#EF`0t3h)I7uV_I}7tjQEsTV|XU=`DJ``D<>Najpf!xy&kQpYe`O zr7wYU(u~iITTelSry1WFw>!{;zc;v}hyTedwA~7%i-Q>{zV@Q`Z|?N`vd{!x@d6bl z5WE4V@xhF|mk*vseO&R29l-+sUvK4-2`3y z4^qb@%Jue!jwX~)elvsU5vSX4y`+C;)}EYoOO(y5j7?i*V(Uy|stsN}jMTA)651X@ z+m}U4kq+uf+m=U5mb%qNrfpkgUjJ)i+O~5NWj$f)6hsMSe?wUl%Xq&|xfd&mf6_LE zwB2Z%rh@YOb{z~7wXNOT)dz^XFh5%CO^iJaQjHf%i(K+!^RQ? zuFmFGc+0R?iJeYalhfRb?B){+b}LLbA7FONDl_FEvzzT)>})yIFb(xkt<)?r>4Qy| z=B70oSDDM0dck>At(3Sd>Q7xuOk5*Hu_JL=XJ6X6Ogl1pAx?ZY3cAE+lYu2Zn~_N4 zLVRX__o&2W8nFg(*%r9$2rs>agHGI)x)&>wZl(i*%dl4on}^5ELC_?lFNhW<{VYo{ zdOlrO4_PfZESgJ6Io7&vWOON9P1?lf{orozxnrU`;qCxTns6lCT|IYF^eau62b9e* z-L4=&NG!BL-L5fjRb3EdPFx)X50QMgYx-Y<{YrHE_svdJE^NNE(2N?v1FRVuxlF*I z`5FN$N9~_v3v)_|(8&xaGg;YOE9=yWDw7uJp7)6*y1?~b^eP6+FkJzStW z%XD?BB8DBl3N+=zU=gY5fC7IC{CWv*sP>NmMaq(|l-qQy<2FN|Eas^vxxiZ{=Ax)0 zP;NH3I65DwF)L3sEeZ;?Xgn9JIDLI9=E1M${Rej>Itvsjt2Y^?RVbslR8UE ztkAeHS!ac&OJYTkdJCu8TKYP5t4B|rkS^-HnG!%Bh9~ksY5BLNA_7gGp(8pfMui}Gb`2HkI)wPm}#xv zlI(&uEy4dF9gZd?w51rDjbxd&-OLxQz%;1`zYD#T&prjR(MU7;5f};^J$5srrL|o( z@i*iwq7J2X>p7r(JqK7lgQeV&Q;f8>%rnxOB8~0pSOGd6^-7(8si~$Z3njjw=C3C+ z{+2tsiZ-k)l532#Htb9Jfoj77Yr}G&yvQ(h9lVN+3(>8V=wGYSN1>nBI2doA+u~aEVFJ} zDP@j)#K=mG;Wv#mlcd7lKPmW8Bl>w1Dy^&Z98>zGiaRo5bJF9Soa}ypavIt_&N18D zO$-g?BWdtk=u|?lIz=JBgNno#)~Gw0q|K4zjWj1tp$Ga+S5 zkH5JNxdu95K~hReC`4L`wb3Uhx}PMn5^G(F7714n|0=9V&2?y9E*n3v`dWPH4_tIv z2BCXie2XQ54l1y4D zlfJe3WRjKs)=8fO9*U&Wx?cKEw464d=1uyKD{&E6Kl`cVO2nqo-1JLyG)2z#MSgKb z=z(B5;!2%=$*U`x5U~D4A^wwh9zZh(Naf~_pLeD;? zMyi+5u`NeikDuu|M_Z43s2*R5-V0#!AL(cW1@D12o6a=fJ?^>74L%JtBjR&pMew}G z=b8~O1I^RtTFviz?g>`2hpJgE`UtkQU}^N+5+1?;D`d#BTpI)RTVMDTbF_zzrv<7i z4)jGmbI&C<1ayu4VBJT=Xa6i4rko;YRe2Y<|o_I9AwWH)6_s+S*0)&wRRJZYX^<8nzkT9IZL22<6DT zk(>nE8qsX`aS9WPN(2?%jvnF*x7s$~I4|64!Y6p)J|?U%ubSePz9xN{m+l+sUiJzv zJs|o3)!JcLO@oa4oELWRMW6-Bk;Z)wXucd{ZTtyn&KqYHsR7o8ab{Mmw@HjW-J}&K z%pp7Ebko7hOSZ8h#%PZvSaSQZS0bE5iTOYuV^nyVFFel*3zif<%L>!hr1W{k($?lH z6HJUbatV*RfE{THF-CB;=eij4Ctwm|9z&((uQlqZXlI1q^xR|2_g{JLF*QfVu$u;; z_GlXbA9&W$HUK=-0C*9-U%=+SV$4>y3BC%)Y`m&QT{2Ug z6=v?!aLoTJ%v=w>8(;P+S46S=_(~D0iZ_5Z+HW#XedxJ2MZd!R2xzt58tqBhPk>g{ ztu`*c^uo8A@K;{=wn#msukR$mOmO}H`Ts7fr4g3txyxFu*CY(y9gU@yZ_#4~ueZL` zYhDKDTi^8w6Bo@k;l98mn5j8~f#&{M#@!TXnrErr*iI`AceeXt(K8Bw9njQ{qHwhvCkioyqRmQghZ~j#lZMo|TcvzT~RH zo*i=!ZbknOgH~gDR!4t0u?QQNu(~bgR2`Q5-IE)vT5J#YCcQ#MN>sLIQrTXTX{%Ye zm`9ziGLgD(EmY?2drImWsrW0b%I-#78!=y5kh~qM~8a4*HyKxGtJ~( zJe+NNp*>=-wdlx7{VI7MRdZziWjuTg9RBmYppf@+m$1Hr%%TJBcJl)}Gm7dj8EUS0bief@%fgcQL;8p+a0%^kBAY=hzR@>h5g|-ci70wrk_)p}ek* z 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 diff --git a/srml/metadata/Cargo.toml b/srml/metadata/Cargo.toml index 24f0a21b33..d442a5e225 100644 --- a/srml/metadata/Cargo.toml +++ b/srml/metadata/Cargo.toml @@ -8,12 +8,16 @@ parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } +sr-std = { path = "../../core/sr-std", default-features = false } +substrate-primitives = { path = "../../core/primitives", default-features = false } [features] default = ["std"] std = [ "parity-codec/std", "parity-codec-derive/std", + "sr-std/std", + "substrate-primitives/std", "serde", "serde_derive" ] diff --git a/srml/metadata/src/lib.rs b/srml/metadata/src/lib.rs index ea722a705e..0809531a9f 100644 --- a/srml/metadata/src/lib.rs +++ b/srml/metadata/src/lib.rs @@ -21,14 +21,12 @@ //! codec-encoded metadata. #![cfg_attr(not(feature = "std"), no_std)] -#![cfg_attr(not(feature = "std"), feature(alloc))] - -#[cfg(not(feature = "std"))] -extern crate alloc; #[macro_use] extern crate parity_codec_derive; extern crate parity_codec as codec; +extern crate sr_std as rstd; +extern crate substrate_primitives as primitives; #[cfg(feature = "std")] extern crate serde; @@ -36,17 +34,10 @@ extern crate serde; #[macro_use] extern crate serde_derive; -#[cfg(feature = "std")] -pub mod alloc { - pub use std::vec; -} - use codec::{Encode, Output}; #[cfg(feature = "std")] use codec::{Decode, Input}; - -// Make Vec available on `std` and `no_std` -use alloc::vec::Vec; +use rstd::vec::Vec; #[cfg(feature = "std")] type StringBuf = String; @@ -294,3 +285,9 @@ pub struct RuntimeMetadata { pub modules: DecodeDifferentArray, pub outer_dispatch: OuterDispatchMetadata, } + +impl Into for RuntimeMetadata { + fn into(self) -> primitives::OpaqueMetadata { + primitives::OpaqueMetadata::new(self.encode()) + } +} -- GitLab From 491f56a3eee7477c3650a596863a445935a9b305 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Tue, 13 Nov 2018 16:26:53 +0100 Subject: [PATCH 043/243] Remove dependency on libp2p from cli (#1107) --- Cargo.lock | 1 - core/cli/Cargo.toml | 1 - core/cli/src/lib.rs | 4 +--- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 371aa40d65..c9d66bbb6a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3027,7 +3027,6 @@ dependencies = [ "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-network 0.1.0", - "substrate-network-libp2p 0.1.0", "substrate-primitives 0.1.0", "substrate-service 0.3.0", "substrate-telemetry 0.3.0", diff --git a/core/cli/Cargo.toml b/core/cli/Cargo.toml index 4fc17e34cb..1552791b26 100644 --- a/core/cli/Cargo.toml +++ b/core/cli/Cargo.toml @@ -25,7 +25,6 @@ exit-future = "0.1" sysinfo = "0.6.2" substrate-client = { path = "../../core/client" } substrate-network = { path = "../../core/network" } -substrate-network-libp2p = { path = "../../core/network-libp2p" } sr-primitives = { path = "../../core/sr-primitives" } substrate-primitives = { path = "../../core/primitives" } substrate-service = { path = "../../core/service" } diff --git a/core/cli/src/lib.rs b/core/cli/src/lib.rs index 5b82133d80..fc4ab029aa 100644 --- a/core/cli/src/lib.rs +++ b/core/cli/src/lib.rs @@ -34,7 +34,6 @@ extern crate sysinfo; extern crate substrate_client as client; extern crate substrate_network as network; -extern crate substrate_network_libp2p as network_libp2p; extern crate sr_primitives as runtime_primitives; extern crate substrate_service as service; extern crate substrate_primitives as primitives; @@ -56,13 +55,12 @@ pub mod error; pub mod informant; mod panic_hook; -use network_libp2p::Protocol; use runtime_primitives::traits::As; use service::{ ServiceFactory, FactoryFullConfiguration, RuntimeGenesis, FactoryGenesis, PruningMode, ChainSpec, }; -use network::NonReservedPeerMode; +use network::{NonReservedPeerMode, Protocol}; use primitives::H256; use std::io::{Write, Read, stdin, stdout}; -- GitLab From e84317efdbc56044ca8fbf33f3e793790155726b Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 14 Nov 2018 08:59:54 +0100 Subject: [PATCH 044/243] Fix extrinsic impl. (#1109) --- .../src/generic/unchecked_extrinsic.rs | 18 ++++++++++++------ srml/support/src/dispatch.rs | 14 ++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/core/sr-primitives/src/generic/unchecked_extrinsic.rs b/core/sr-primitives/src/generic/unchecked_extrinsic.rs index ec3801591d..d6442cbc0b 100644 --- a/core/sr-primitives/src/generic/unchecked_extrinsic.rs +++ b/core/sr-primitives/src/generic/unchecked_extrinsic.rs @@ -21,7 +21,7 @@ use std::fmt; use rstd::prelude::*; use codec::{Decode, Encode, Codec, Input, HasCompact}; -use traits::{self, Member, SimpleArithmetic, MaybeDisplay, Lookup}; +use traits::{self, Member, SimpleArithmetic, MaybeDisplay, Lookup, Extrinsic}; use super::CheckedExtrinsic; #[derive(PartialEq, Eq, Clone, Encode, Decode)] @@ -73,11 +73,6 @@ where function, } } - - /// `true` if there is a signature. - pub fn is_signed(&self) -> bool { - self.signature.is_some() - } } impl traits::Checkable @@ -113,6 +108,17 @@ where } } +impl< + Address: Codec, + Index: HasCompact + Codec, + Signature: Codec, + Call, +> Extrinsic for UncheckedExtrinsic { + fn is_signed(&self) -> Option { + Some(self.signature.is_some()) + } +} + impl Decode for UncheckedExtrinsic { diff --git a/srml/support/src/dispatch.rs b/srml/support/src/dispatch.rs index 08d73d59e4..cfcb3ae972 100644 --- a/srml/support/src/dispatch.rs +++ b/srml/support/src/dispatch.rs @@ -193,11 +193,8 @@ macro_rules! decl_module { $($rest:tt)* ) => { compile_error!("\ -First parameter of dispatch should be marked `origin` only, with no\n\ -type specified (a bit like `self`).\n\ -(For root-matching dispatches, ensure the first parameter does not use\n\ -the `T::Origin` type.)\ -") +first parameter of dispatch should be marked `origin` only, with no type specified (a bit like `self`)\n\ +(For root-matching dispatches, ensure the first parameter does not use the `T::Origin` type.)") }; (@normalize $(#[$attr:meta])* @@ -211,11 +208,8 @@ the `T::Origin` type.)\ $($rest:tt)* ) => { compile_error!("\ -First parameter of dispatch should be marked `origin` only, with no\n\ -type specified (a bit like `self`).\n\ -(For root-matching dispatches, ensure the first parameter is not named\n\ -`origin`.)\ -") +first parameter of dispatch should be marked `origin` only, with no type specified (a bit like `self`)\n\ +(For root-matching dispatches, ensure the first parameter is not named`origin`.)") }; (@normalize $(#[$attr:meta])* -- GitLab From 068cbcaedf0295241a29e09943253c439e009594 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Wed, 14 Nov 2018 11:25:16 +0100 Subject: [PATCH 045/243] Some tweaks in the network crate (#1108) * Move Roles to network::config * Make network::config public * Move NetworkConfig and NonReservedMode to config * Move Params to config * Move node_id() to NetworkManager and fix tests * Rename Specialization to NetworkSpecialization --- core/cli/src/lib.rs | 2 +- core/consensus/aura/src/lib.rs | 2 +- core/network/src/config.rs | 55 +++++++++++++++- core/network/src/consensus_gossip.rs | 6 +- core/network/src/lib.rs | 7 +- core/network/src/message.rs | 2 +- core/network/src/on_demand.rs | 10 +-- core/network/src/protocol.rs | 12 ++-- core/network/src/service.rs | 96 ++++++++-------------------- core/network/src/specialization.rs | 2 +- core/network/src/sync.rs | 2 +- core/network/src/test/mod.rs | 4 +- core/network/src/test/sync.rs | 2 +- core/service/src/components.rs | 18 +++--- core/service/src/config.rs | 3 +- core/service/test/src/lib.rs | 3 +- 16 files changed, 117 insertions(+), 109 deletions(-) diff --git a/core/cli/src/lib.rs b/core/cli/src/lib.rs index fc4ab029aa..8aec489457 100644 --- a/core/cli/src/lib.rs +++ b/core/cli/src/lib.rs @@ -60,7 +60,7 @@ use service::{ ServiceFactory, FactoryFullConfiguration, RuntimeGenesis, FactoryGenesis, PruningMode, ChainSpec, }; -use network::{NonReservedPeerMode, Protocol}; +use network::{Protocol, config::NonReservedPeerMode}; use primitives::H256; use std::io::{Write, Read, stdin, stdout}; diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index e55756eacf..6e993f1879 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -405,7 +405,7 @@ mod tests { use network::test::*; use network::test::{Block as TestBlock, PeersClient}; use runtime_primitives::traits::Block as BlockT; - use network::ProtocolConfig; + use network::config::ProtocolConfig; use parking_lot::Mutex; use tokio::runtime::current_thread; use keyring::Keyring; diff --git a/core/network/src/config.rs b/core/network/src/config.rs index fc6a1e374b..a7936ce491 100644 --- a/core/network/src/config.rs +++ b/core/network/src/config.rs @@ -14,9 +14,34 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -pub use service::Roles; +//! Configuration for the networking layer of Substrate. -/// Protocol configuration +pub use network_libp2p::{NonReservedPeerMode, NetworkConfiguration}; + +use chain::Client; +use codec; +use on_demand::OnDemandService; +use runtime_primitives::traits::{Block as BlockT}; +use service::{ExHashT, TransactionPool}; +use std::sync::Arc; + +/// Service initialization parameters. +pub struct Params { + /// Configuration. + pub config: ProtocolConfig, + /// Network layer configuration. + pub network_config: NetworkConfiguration, + /// Substrate relay chain access point. + pub chain: Arc>, + /// On-demand service reference. + pub on_demand: Option>>, + /// Transaction pool. + pub transaction_pool: Arc>, + /// Protocol specialization. + pub specialization: S, +} + +/// Configuration for the Substrate-specific part of the networking layer. #[derive(Clone)] pub struct ProtocolConfig { /// Assigned roles. @@ -30,3 +55,29 @@ impl Default for ProtocolConfig { } } } + +bitflags! { + /// Bitmask of the roles that a node fulfills. + pub struct Roles: u8 { + /// No network. + const NONE = 0b00000000; + /// Full node, does not participate in consensus. + const FULL = 0b00000001; + /// Light client node. + const LIGHT = 0b00000010; + /// Act as an authority + const AUTHORITY = 0b00000100; + } +} + +impl codec::Encode for Roles { + fn encode_to(&self, dest: &mut T) { + dest.push_byte(self.bits()) + } +} + +impl codec::Decode for Roles { + fn decode(input: &mut I) -> Option { + Self::from_bits(input.read_byte()?) + } +} diff --git a/core/network/src/consensus_gossip.rs b/core/network/src/consensus_gossip.rs index 0ecb0e5e68..882d2f02fd 100644 --- a/core/network/src/consensus_gossip.rs +++ b/core/network/src/consensus_gossip.rs @@ -26,8 +26,8 @@ use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, Hash, HashF use runtime_primitives::generic::BlockId; use message::generic::{Message, ConsensusMessage}; use protocol::Context; -use service::Roles; -use specialization::Specialization; +use config::Roles; +use specialization::NetworkSpecialization; use StatusMessage; use generic_message; @@ -262,7 +262,7 @@ where } } -impl Specialization for ConsensusGossip where +impl NetworkSpecialization for ConsensusGossip where Block::Header: HeaderT { fn status(&self) -> Vec { diff --git a/core/network/src/lib.rs b/core/network/src/lib.rs index fa9232970f..a8ad20496f 100644 --- a/core/network/src/lib.rs +++ b/core/network/src/lib.rs @@ -51,10 +51,10 @@ mod sync; #[macro_use] mod protocol; mod io; -mod config; mod chain; mod blocks; mod on_demand; +pub mod config; pub mod import_queue; pub mod consensus_gossip; pub mod error; @@ -65,13 +65,12 @@ pub mod specialization; pub mod test; pub use chain::Client as ClientHandle; -pub use service::{Service, FetchFuture, TransactionPool, Params, ManageNetwork, SyncProvider}; +pub use service::{Service, FetchFuture, TransactionPool, ManageNetwork, SyncProvider}; pub use protocol::{ProtocolStatus, PeerInfo, Context}; pub use sync::{Status as SyncStatus, SyncState}; -pub use network_libp2p::{NonReservedPeerMode, NetworkConfiguration, NodeIndex, ProtocolId, Severity, Protocol}; +pub use network_libp2p::{NodeIndex, ProtocolId, Severity, Protocol}; pub use message::{generic as generic_message, RequestId, Status as StatusMessage}; pub use error::Error; -pub use config::{Roles, ProtocolConfig}; pub use on_demand::{OnDemand, OnDemandService, RemoteResponse}; #[doc(hidden)] pub use runtime_primitives::traits::Block as BlockT; diff --git a/core/network/src/message.rs b/core/network/src/message.rs index f08fce3368..40cd9a435d 100644 --- a/core/network/src/message.rs +++ b/core/network/src/message.rs @@ -125,7 +125,7 @@ pub struct RemoteReadResponse { /// Generic types. pub mod generic { use runtime_primitives::Justification; - use service::Roles; + use config::Roles; use super::{ BlockAttributes, RemoteCallResponse, RemoteReadResponse, RequestId, Transactions, Direction diff --git a/core/network/src/on_demand.rs b/core/network/src/on_demand.rs index bc0f3aec9c..5fbf893714 100644 --- a/core/network/src/on_demand.rs +++ b/core/network/src/on_demand.rs @@ -30,6 +30,7 @@ use client::light::fetcher::{Fetcher, FetchChecker, RemoteHeaderRequest, use io::SyncIo; use message; use network_libp2p::{Severity, NodeIndex}; +use config::Roles; use service; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, NumberFor}; @@ -41,7 +42,7 @@ const RETRY_COUNT: usize = 1; /// On-demand service API. pub trait OnDemandService: Send + Sync { /// When new node is connected. - fn on_connect(&self, peer: NodeIndex, role: service::Roles, best_number: NumberFor); + fn on_connect(&self, peer: NodeIndex, role: Roles, best_number: NumberFor); /// When block is announced by the peer. fn on_block_announce(&self, peer: NodeIndex, best_number: NumberFor); @@ -211,8 +212,8 @@ impl OnDemandService for OnDemand where E: service::ExecuteInContext, B::Header: HeaderT, { - fn on_connect(&self, peer: NodeIndex, role: service::Roles, best_number: NumberFor) { - if !role.intersects(service::Roles::FULL | service::Roles::AUTHORITY) { // TODO: correct? + fn on_connect(&self, peer: NodeIndex, role: Roles, best_number: NumberFor) { + if !role.intersects(Roles::FULL | Roles::AUTHORITY) { // TODO: correct? return; } @@ -511,9 +512,10 @@ pub mod tests { use client::{self, error::{ErrorKind as ClientErrorKind, Result as ClientResult}}; use client::light::fetcher::{Fetcher, FetchChecker, RemoteHeaderRequest, RemoteCallRequest, RemoteReadRequest, RemoteChangesRequest}; + use config::Roles; use message; use network_libp2p::NodeIndex; - use service::{Roles, ExecuteInContext}; + use service::ExecuteInContext; use test::TestIo; use super::{REQUEST_TIMEOUT, OnDemand, OnDemandService}; use test_client::runtime::{changes_trie_config, Block, Header}; diff --git a/core/network/src/protocol.rs b/core/network/src/protocol.rs index 4e98ee8f80..af20a6b1bc 100644 --- a/core/network/src/protocol.rs +++ b/core/network/src/protocol.rs @@ -27,11 +27,11 @@ use codec::{Encode, Decode}; use message::{self, Message}; use message::generic::Message as GenericMessage; -use specialization::Specialization; +use specialization::NetworkSpecialization; use sync::{ChainSync, Status as SyncStatus, SyncState}; -use service::{Roles, TransactionPool, ExHashT}; +use service::{TransactionPool, ExHashT}; use import_queue::ImportQueue; -use config::ProtocolConfig; +use config::{ProtocolConfig, Roles}; use chain::Client; use on_demand::OnDemandService; use io::SyncIo; @@ -50,7 +50,7 @@ const MAX_BLOCK_DATA_RESPONSE: u32 = 128; const LIGHT_MAXIMAL_BLOCKS_DIFFERENCE: u64 = 8192; // Lock must always be taken in order declared here. -pub struct Protocol, H: ExHashT> { +pub struct Protocol, H: ExHashT> { config: ProtocolConfig, on_demand: Option>>, genesis_hash: B::Hash, @@ -184,7 +184,7 @@ pub(crate) struct ContextData { pub chain: Arc>, } -impl, H: ExHashT> Protocol { +impl, H: ExHashT> Protocol { /// Create a new instance. pub fn new>( config: ProtocolConfig, @@ -761,7 +761,7 @@ macro_rules! construct_simple_protocol { } } - impl $crate::specialization::Specialization<$block> for $protocol { + impl $crate::specialization::NetworkSpecialization<$block> for $protocol { fn status(&self) -> Vec { $( let status = self.$status_protocol_name.status(); diff --git a/core/network/src/service.rs b/core/network/src/service.rs index 6d38d4484f..92c9beea94 100644 --- a/core/network/src/service.rs +++ b/core/network/src/service.rs @@ -25,11 +25,9 @@ use network_libp2p::{start_service, Service as NetworkService, ServiceEvent as N use network_libp2p::{RegisteredProtocol, parse_str_addr, Protocol as Libp2pProtocol}; use io::NetSyncIo; use protocol::{self, Protocol, ProtocolContext, Context, ProtocolStatus}; -use config::{ProtocolConfig}; +use config::Params; use error::Error; -use chain::Client; -use specialization::Specialization; -use on_demand::OnDemandService; +use specialization::NetworkSpecialization; use import_queue::ImportQueue; use runtime_primitives::traits::{Block as BlockT}; use tokio::{runtime::Runtime, timer::Interval}; @@ -40,38 +38,10 @@ pub type FetchFuture = oneshot::Receiver>; const TICK_TIMEOUT: Duration = Duration::from_millis(1000); const PROPAGATE_TIMEOUT: Duration = Duration::from_millis(5000); -bitflags! { - /// Node roles bitmask. - pub struct Roles: u8 { - /// No network. - const NONE = 0b00000000; - /// Full node, does not participate in consensus. - const FULL = 0b00000001; - /// Light client node. - const LIGHT = 0b00000010; - /// Act as an authority - const AUTHORITY = 0b00000100; - } -} - -impl ::codec::Encode for Roles { - fn encode_to(&self, dest: &mut T) { - dest.push_byte(self.bits()) - } -} - -impl ::codec::Decode for Roles { - fn decode(input: &mut I) -> Option { - Self::from_bits(input.read_byte()?) - } -} - /// Sync status pub trait SyncProvider: Send + Sync { /// Get sync status fn status(&self) -> ProtocolStatus; - /// Get this node id if available. - fn node_id(&self) -> Option; } pub trait ExHashT: ::std::hash::Hash + Eq + ::std::fmt::Debug + Clone + Send + Sync + 'static {} @@ -93,24 +63,8 @@ pub trait ExecuteInContext: Send + Sync { fn execute_in_context)>(&self, closure: F); } -/// Service initialization parameters. -pub struct Params { - /// Configuration. - pub config: ProtocolConfig, - /// Network layer configuration. - pub network_config: NetworkConfiguration, - /// Substrate relay chain access point. - pub chain: Arc>, - /// On-demand service reference. - pub on_demand: Option>>, - /// Transaction pool. - pub transaction_pool: Arc>, - /// Protocol specialization. - pub specialization: S, -} - /// Substrate network service. Handles network IO and manages connectivity. -pub struct Service, H: ExHashT> { +pub struct Service, H: ExHashT> { /// Network service network: Arc>, /// Protocol handler @@ -123,7 +77,7 @@ pub struct Service, H: ExHashT> { bg_thread: Option<(oneshot::Sender<()>, thread::JoinHandle<()>)>, } -impl, H: ExHashT> Service { +impl, H: ExHashT> Service { /// Creates and register protocol with the network service pub fn new>( params: Params, @@ -178,13 +132,13 @@ impl, H: ExHashT> Service { } } -impl, H: ExHashT> ::consensus::SyncOracle for Service { +impl, H: ExHashT> ::consensus::SyncOracle for Service { fn is_major_syncing(&self) -> bool { self.handler.sync().read().status().is_major_syncing() } } -impl, H:ExHashT> Drop for Service { +impl, H:ExHashT> Drop for Service { fn drop(&mut self) { self.handler.stop(); if let Some((sender, join)) = self.bg_thread.take() { @@ -196,30 +150,17 @@ impl, H:ExHashT> Drop for Service, H: ExHashT> ExecuteInContext for Service { +impl, H: ExHashT> ExecuteInContext for Service { fn execute_in_context)>(&self, closure: F) { closure(&mut ProtocolContext::new(self.handler.context_data(), &mut NetSyncIo::new(&self.network, self.protocol_id))) } } -impl, H: ExHashT> SyncProvider for Service { +impl, H: ExHashT> SyncProvider for Service { /// Get sync status fn status(&self) -> ProtocolStatus { self.handler.status() } - - fn node_id(&self) -> Option { - let network = self.network.lock(); - let ret = network - .listeners() - .next() - .map(|addr| { - let mut addr = addr.clone(); - addr.append(Libp2pProtocol::P2p(network.peer_id().clone().into())); - addr.to_string() - }); - ret - } } /// Trait for managing network @@ -232,9 +173,11 @@ pub trait ManageNetwork: Send + Sync { fn remove_reserved_peer(&self, peer: PeerId); /// Add reserved peer fn add_reserved_peer(&self, peer: String) -> Result<(), String>; + /// Returns a user-friendly identifier of our node. + fn node_id(&self) -> Option; } -impl, H: ExHashT> ManageNetwork for Service { +impl, H: ExHashT> ManageNetwork for Service { fn accept_unreserved_peers(&self) { self.network.lock().accept_unreserved_peers(); } @@ -264,10 +207,23 @@ impl, H: ExHashT> ManageNetwork for Se self.network.lock().add_reserved_peer(addr, peer_id); Ok(()) } + + fn node_id(&self) -> Option { + let network = self.network.lock(); + let ret = network + .listeners() + .next() + .map(|addr| { + let mut addr = addr.clone(); + addr.append(Libp2pProtocol::P2p(network.peer_id().clone().into())); + addr.to_string() + }); + ret + } } /// Starts the background thread that handles the networking. -fn start_thread, H: ExHashT>( +fn start_thread, H: ExHashT>( config: NetworkConfiguration, protocol: Arc>, registered: RegisteredProtocol, @@ -308,7 +264,7 @@ fn start_thread, H: ExHashT>( } /// Runs the background thread that handles the networking. -fn run_thread, H: ExHashT>( +fn run_thread, H: ExHashT>( network_service: Arc>, protocol: Arc>, protocol_id: ProtocolId, diff --git a/core/network/src/specialization.rs b/core/network/src/specialization.rs index 70ad9e9b2e..d1cde8b33b 100644 --- a/core/network/src/specialization.rs +++ b/core/network/src/specialization.rs @@ -21,7 +21,7 @@ use runtime_primitives::traits::Block as BlockT; use protocol::Context; /// A specialization of the substrate network protocol. Handles events and sends messages. -pub trait Specialization: Send + Sync + 'static { +pub trait NetworkSpecialization: Send + Sync + 'static { /// Get the current specialization-status. fn status(&self) -> Vec; diff --git a/core/network/src/sync.rs b/core/network/src/sync.rs index e69b22fc57..1287beffe9 100644 --- a/core/network/src/sync.rs +++ b/core/network/src/sync.rs @@ -25,7 +25,7 @@ use blocks::{self, BlockCollection}; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, As, NumberFor}; use runtime_primitives::generic::BlockId; use message::{self, generic::Message as GenericMessage}; -use service::Roles; +use config::Roles; use import_queue::ImportQueue; // Maximum blocks to request in a single packet. diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index f5b70f2e9a..458f659949 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -35,7 +35,7 @@ use keyring::Keyring; use codec::Encode; use import_queue::{SyncImportQueue, PassThroughVerifier, Verifier}; use consensus::BlockOrigin; -use specialization::Specialization; +use specialization::NetworkSpecialization; use consensus_gossip::ConsensusGossip; use import_queue::ImportQueue; use service::ExecuteInContext; @@ -62,7 +62,7 @@ pub struct DummySpecialization { pub gossip: ConsensusGossip, } -impl Specialization for DummySpecialization { +impl NetworkSpecialization for DummySpecialization { fn status(&self) -> Vec { vec![] } fn on_connect(&mut self, ctx: &mut Context, peer_id: NodeIndex, status: ::message::Status) { diff --git a/core/network/src/test/sync.rs b/core/network/src/test/sync.rs index 0f9e407828..479b96ecc0 100644 --- a/core/network/src/test/sync.rs +++ b/core/network/src/test/sync.rs @@ -16,9 +16,9 @@ use client::backend::Backend; use client::blockchain::HeaderBackend as BlockchainHeaderBackend; +use config::Roles; use consensus::BlockOrigin; use sync::SyncState; -use Roles; use super::*; #[test] diff --git a/core/service/src/components.rs b/core/service/src/components.rs index cde3a5aecb..0325b75e9e 100644 --- a/core/service/src/components.rs +++ b/core/service/src/components.rs @@ -175,12 +175,12 @@ impl StartRPC for T where pub trait CreateNetworkParams { fn create_network_params( client: Arc, C::RuntimeApi>>, - roles: network::Roles, - network_config: network::NetworkConfiguration, + roles: network::config::Roles, + network_config: network::config::NetworkConfiguration, on_demand: Option, NetworkService>>>, transaction_pool_adapter: TransactionPoolAdapter, specialization: S, - ) -> network::Params, S, ComponentExHash>; + ) -> network::config::Params, S, ComponentExHash>; } impl CreateNetworkParams for T where @@ -188,14 +188,14 @@ impl CreateNetworkParams for T where { fn create_network_params( client: Arc, T::RuntimeApi>>, - roles: network::Roles, - network_config: network::NetworkConfiguration, + roles: network::config::Roles, + network_config: network::config::NetworkConfiguration, on_demand: Option, NetworkService>>>, transaction_pool_adapter: TransactionPoolAdapter, specialization: S, - ) -> network::Params, S, ComponentExHash> { - network::Params { - config: network::ProtocolConfig { roles }, + ) -> network::config::Params, S, ComponentExHash> { + network::config::Params { + config: network::config::ProtocolConfig { roles }, network_config, chain: client, on_demand: on_demand.map(|d| d as Arc>>), @@ -225,7 +225,7 @@ pub trait ServiceFactory: 'static + Sized { /// The type that implements the runtime API. type RuntimeApi: Send + Sync; /// Network protocol extensions. - type NetworkProtocol: network::specialization::Specialization; + type NetworkProtocol: network::specialization::NetworkSpecialization; /// Chain runtime. type RuntimeDispatch: NativeExecutionDispatch + Send + Sync + 'static; /// Extrinsic pool backend type for the full client. diff --git a/core/service/src/config.rs b/core/service/src/config.rs index 00866d9563..b91c26ed04 100644 --- a/core/service/src/config.rs +++ b/core/service/src/config.rs @@ -20,9 +20,8 @@ use std::net::SocketAddr; use transaction_pool; use chain_spec::ChainSpec; pub use client::ExecutionStrategy; -pub use network::Roles; -pub use network::NetworkConfiguration; pub use client_db::PruningMode; +pub use network::config::{NetworkConfiguration, Roles}; use runtime_primitives::BuildStorage; use serde::{Serialize, de::DeserializeOwned}; use target_info::Target; diff --git a/core/service/test/src/lib.rs b/core/service/test/src/lib.rs index a155b18b37..7ffa783e97 100644 --- a/core/service/test/src/lib.rs +++ b/core/service/test/src/lib.rs @@ -47,7 +47,8 @@ use service::{ Roles, FactoryExtrinsic, }; -use network::{NetworkConfiguration, NonReservedPeerMode, Protocol, SyncProvider, ManageNetwork}; +use network::{Protocol, SyncProvider, ManageNetwork}; +use network::config::{NetworkConfiguration, NonReservedPeerMode}; use sr_primitives::traits::As; use sr_primitives::generic::BlockId; use consensus::{ImportBlock, BlockImport}; -- GitLab From c10123e41c2f4bfa7aa82f65c229920111c66d19 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Wed, 14 Nov 2018 07:39:38 -0500 Subject: [PATCH 046/243] Clean up justification (#1111) * adding mac libraries and how to start testnet * Clean up Justification struct, Issue #1033 * adding mac libraries and how to start testnet --- core/client/src/client.rs | 10 +++++----- core/consensus/aura/src/lib.rs | 8 ++++---- core/consensus/common/src/block_import.rs | 10 +++++----- core/consensus/rhd/src/lib.rs | 4 ++-- core/network/src/import_queue.rs | 4 ++-- core/test-client/src/client_ext.rs | 4 ++-- node/cli/src/service.rs | 2 +- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/core/client/src/client.rs b/core/client/src/client.rs index c008f0d157..6cf62dca2c 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -962,8 +962,8 @@ impl consensus::BlockImport for Client let ImportBlock { origin, header, - external_justification, - post_runtime_digests, + justification, + post_digests, body, finalized, .. @@ -975,11 +975,11 @@ impl consensus::BlockImport for Client blockchain::BlockStatus::Unknown => return Ok(ImportResult::UnknownParent), } - let import_headers = if post_runtime_digests.is_empty() { + let import_headers = if post_digests.is_empty() { PrePostHeader::Same(header) } else { let mut post_header = header.clone(); - for item in post_runtime_digests { + for item in post_digests { post_header.digest_mut().push(item); } PrePostHeader::Different(header, post_header) @@ -994,7 +994,7 @@ impl consensus::BlockImport for Client origin, hash, import_headers, - external_justification, + justification, body, new_authorities, finalized, diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index 6e993f1879..029fbe8025 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -240,8 +240,8 @@ pub fn start_aura( let import_block = ImportBlock { origin: BlockOrigin::Own, header, - external_justification: Vec::new(), - post_runtime_digests: vec![item], + justification: Vec::new(), + post_digests: vec![item], body: Some(body), finalized: false, auxiliary: Vec::new(), @@ -365,8 +365,8 @@ impl Verifier for AuraVerifier where let import_block = ImportBlock { origin, header: pre_header, - external_justification: Vec::new(), - post_runtime_digests: vec![item], + justification: Vec::new(), + post_digests: vec![item], body, finalized: false, auxiliary: Vec::new(), diff --git a/core/consensus/common/src/block_import.rs b/core/consensus/common/src/block_import.rs index 582886d827..566e5bfb02 100644 --- a/core/consensus/common/src/block_import.rs +++ b/core/consensus/common/src/block_import.rs @@ -44,7 +44,7 @@ pub struct ImportBlock { /// /// Consensus engines which alter the header (by adding post-runtime digests) /// should strip those off in the initial verification process and pass them - /// via the `post_runtime_digests` field. During block authorship, they should + /// via the `post_digests` field. During block authorship, they should /// not be pushed to the header directly. /// /// The reason for this distinction is so the header can be directly @@ -52,10 +52,10 @@ pub struct ImportBlock { /// post-runtime digests are pushed back on after. pub header: Block::Header, /// Justification provided for this block from the outside:. - pub external_justification: Justification, + pub justification: Justification, /// Digest items that have been added after the runtime for external /// work, like a consensus signature. - pub post_runtime_digests: Vec>, + pub post_digests: Vec>, /// Block's body pub body: Option>, /// Is this block finalized already? @@ -82,8 +82,8 @@ impl ImportBlock { ( self.origin, self.header, - self.external_justification, - self.post_runtime_digests, + self.justification, + self.post_digests, self.body, self.finalized, self.auxiliary, diff --git a/core/consensus/rhd/src/lib.rs b/core/consensus/rhd/src/lib.rs index 4995592aaf..449f9c3ffa 100644 --- a/core/consensus/rhd/src/lib.rs +++ b/core/consensus/rhd/src/lib.rs @@ -417,10 +417,10 @@ impl Future for BftFuture Verifier for PassThroughVerifier { header, body, finalized: self.0, - external_justification: justification, - post_runtime_digests: vec![], + justification: justification, + post_digests: vec![], auxiliary: Vec::new(), }, None)) } diff --git a/core/test-client/src/client_ext.rs b/core/test-client/src/client_ext.rs index f16bfce40f..d0a8765255 100644 --- a/core/test-client/src/client_ext.rs +++ b/core/test-client/src/client_ext.rs @@ -47,8 +47,8 @@ impl TestClient for Client let import = ImportBlock { origin, header: block.header, - external_justification: vec![], - post_runtime_digests: vec![], + justification: vec![], + post_digests: vec![], body: Some(block.extrinsics), finalized: false, auxiliary: Vec::new(), diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index 820c1dee26..5a5edb89b0 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -124,7 +124,7 @@ mod tests { let block = proposer.propose().expect("Error making test block"); ImportBlock { origin: BlockOrigin::File, - external_justification: Vec::new(), + justification: Vec::new(), internal_justification: Vec::new(), finalized: true, body: Some(block.extrinsics), -- GitLab From 152f481d136c718132b1cb198d862074b70a9f0c Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 14 Nov 2018 14:34:32 +0100 Subject: [PATCH 047/243] address grumbles --- core/finality-grandpa/src/authorities.rs | 2 +- core/finality-grandpa/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index 79674acefa..c97769cb43 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -73,7 +73,7 @@ impl From> for SharedAuthoritySet { pub(crate) struct Status { /// Whether internal changes were made. pub(crate) changed: bool, - /// `Some` when underlying authority set has changed, containign the + /// `Some` when underlying authority set has changed, containing the /// block where that set changed. pub(crate) new_set_block: Option<(H, N)>, } diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 63851b1e4b..ba23383db2 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -798,7 +798,7 @@ impl, RA> ApiClient for Arc Date: Wed, 14 Nov 2018 18:06:10 +0300 Subject: [PATCH 048/243] Fetch changes trie roots + CHT-based proof for these roots (#896) * build CHT for changes tries roots * collect chnages tries roots proof in key_changes_proof * flush check_changes_proof * fixed compilation * LightDataChecker now has a ref to the blockchain * continue passing proofs * new light db tests * more CHT tests * more tests for key changes proof when headers are missing * lost files --- core/client/db/src/light.rs | 314 ++++++++------ core/client/src/cht.rs | 202 +++++++-- core/client/src/client.rs | 131 +++++- core/client/src/error.rs | 10 +- core/client/src/in_mem.rs | 21 +- core/client/src/light/blockchain.rs | 90 +++- core/client/src/light/fetcher.rs | 410 ++++++++++++++---- core/client/src/light/mod.rs | 7 +- core/network/src/chain.rs | 11 +- core/network/src/message.rs | 11 +- core/network/src/on_demand.rs | 24 +- core/network/src/protocol.rs | 22 +- core/service/src/components.rs | 2 +- core/state-machine/src/lib.rs | 33 +- core/state-machine/src/proving_backend.rs | 48 +- core/state-machine/src/trie_backend.rs | 5 + .../state-machine/src/trie_backend_essence.rs | 5 + .../substrate_test_runtime.compact.wasm | Bin 45154 -> 223059 bytes .../release/node_runtime.compact.wasm | Bin 618357 -> 828026 bytes 19 files changed, 1034 insertions(+), 312 deletions(-) diff --git a/core/client/db/src/light.rs b/core/client/db/src/light.rs index f336df4d28..cbe42ac52b 100644 --- a/core/client/db/src/light.rs +++ b/core/client/db/src/light.rs @@ -31,7 +31,7 @@ use codec::{Decode, Encode}; use primitives::{AuthorityId, Blake2Hasher}; use runtime_primitives::generic::BlockId; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, - Zero, One, As, NumberFor}; + Zero, One, As, NumberFor, Digest, DigestItem}; use cache::{DbCacheSync, DbCache, ComplexBlockId}; use utils::{meta_keys, Meta, db_err, number_to_lookup_key, open_database, read_db, block_id_to_lookup_key, read_meta}; @@ -45,11 +45,16 @@ pub(crate) mod columns { pub const CHT: Option = Some(4); } +/// Prefix for headers CHT. +const HEADER_CHT_PREFIX: u8 = 0; +/// Prefix for changes tries roots CHT. +const CHANGES_TRIE_CHT_PREFIX: u8 = 1; + /// Light blockchain storage. Stores most recent headers + CHTs for older headers. /// Locks order: meta, leaves, cache. pub struct LightStorage { db: Arc, - meta: RwLock::Header as HeaderT>::Number, Block::Hash>>, + meta: RwLock, Block::Hash>>, leaves: RwLock>>, cache: DbCacheSync, } @@ -109,7 +114,7 @@ impl LightStorage fn update_meta( &self, hash: Block::Hash, - number: <::Header as HeaderT>::Number, + number: NumberFor, is_best: bool, is_finalized: bool, ) { @@ -167,7 +172,7 @@ impl BlockchainHeaderBackend for LightStorage } } - fn number(&self, hash: Block::Hash) -> ClientResult::Header as HeaderT>::Number>> { + fn number(&self, hash: Block::Hash) -> ClientResult>> { if let Some(lookup_key) = block_id_to_lookup_key::(&*self.db, columns::HASH_LOOKUP, BlockId::Hash(hash))? { let number = ::utils::lookup_key_to_number(&lookup_key)?; Ok(Some(number)) @@ -176,12 +181,21 @@ impl BlockchainHeaderBackend for LightStorage } } - fn hash(&self, number: <::Header as HeaderT>::Number) -> ClientResult> { + fn hash(&self, number: NumberFor) -> ClientResult> { Ok(self.header(BlockId::Number(number))?.map(|header| header.hash().clone())) } } impl LightStorage { + // Get block changes trie root, if available. + fn changes_trie_root(&self, block: BlockId) -> ClientResult> { + self.header(block) + .map(|header| header.and_then(|header| + header.digest().log(DigestItem::as_changes_trie_root) + .cloned())) + } + + // Note that a block is finalized. Only call with child of last finalized block. fn note_finalized( &self, transaction: &mut DBTransaction, @@ -199,35 +213,68 @@ impl LightStorage { let lookup_key = ::utils::number_to_lookup_key(header.number().clone()); transaction.put(columns::META, meta_keys::FINALIZED_BLOCK, &lookup_key); - // build new CHT if required + // build new CHT(s) if required if let Some(new_cht_number) = cht::is_build_required(cht::SIZE, *header.number()) { let new_cht_start: NumberFor = cht::start_number(cht::SIZE, new_cht_number); - let new_cht_root = cht::compute_root::( + + let new_header_cht_root = cht::compute_root::( cht::SIZE, new_cht_number, (new_cht_start.as_()..) - .map(|num| self.hash(As::sa(num)).unwrap_or_default()) + .map(|num| self.hash(As::sa(num))) + )?; + transaction.put( + columns::CHT, + &cht_key(HEADER_CHT_PREFIX, new_cht_start), + new_header_cht_root.as_ref() ); - if let Some(new_cht_root) = new_cht_root { - transaction.put(columns::CHT, &number_to_lookup_key(new_cht_start), new_cht_root.as_ref()); - - let mut prune_block = new_cht_start; - let new_cht_end = cht::end_number(cht::SIZE, new_cht_number); - trace!(target: "db", "Replacing blocks [{}..{}] with CHT#{}", new_cht_start, new_cht_end, new_cht_number); + // if the header includes changes trie root, let's build a changes tries roots CHT + if header.digest().log(DigestItem::as_changes_trie_root).is_some() { + let new_changes_trie_cht_root = cht::compute_root::( + cht::SIZE, new_cht_number, (new_cht_start.as_()..) + .map(|num| self.changes_trie_root(BlockId::Number(As::sa(num)))) + )?; + transaction.put( + columns::CHT, + &cht_key(CHANGES_TRIE_CHT_PREFIX, new_cht_start), + new_changes_trie_cht_root.as_ref() + ); + } - while prune_block <= new_cht_end { - if let Some(hash) = self.hash(prune_block)? { - let lookup_key = block_id_to_lookup_key::(&*self.db, columns::HASH_LOOKUP, BlockId::Number(prune_block))? - .expect("retrieved hash for `prune_block` right above. therefore retrieving lookup key must succeed. q.e.d."); - transaction.delete(columns::HASH_LOOKUP, hash.as_ref()); - transaction.delete(columns::HEADER, &lookup_key); - } - prune_block += NumberFor::::one(); + // prune headers that are replaced with CHT + let mut prune_block = new_cht_start; + let new_cht_end = cht::end_number(cht::SIZE, new_cht_number); + trace!(target: "db", "Replacing blocks [{}..{}] with CHT#{}", + new_cht_start, new_cht_end, new_cht_number); + + while prune_block <= new_cht_end { + if let Some(hash) = self.hash(prune_block)? { + let lookup_key = block_id_to_lookup_key::(&*self.db, columns::HASH_LOOKUP, BlockId::Number(prune_block))? + .expect("retrieved hash for `prune_block` right above. therefore retrieving lookup key must succeed. q.e.d."); + transaction.delete(columns::HASH_LOOKUP, hash.as_ref()); + transaction.delete(columns::HEADER, &lookup_key); } + prune_block += One::one(); } } Ok(()) } + + /// Read CHT root of given type for the block. + fn read_cht_root( + &self, + cht_type: u8, + cht_size: u64, + block: NumberFor + ) -> ClientResult { + let no_cht_for_block = || ClientErrorKind::Backend(format!("CHT for block {} not exists", block)).into(); + + let cht_number = cht::block_to_cht_number(cht_size, block).ok_or_else(no_cht_for_block)?; + let cht_start = cht::start_number(cht_size, cht_number); + self.db.get(columns::CHT, &cht_key(cht_type, cht_start)).map_err(db_err)? + .ok_or_else(no_cht_for_block) + .and_then(|hash| Block::Hash::decode(&mut &*hash).ok_or_else(no_cht_for_block)) + } } impl LightBlockchainStorage for LightStorage @@ -354,14 +401,12 @@ impl LightBlockchainStorage for LightStorage Ok(()) } - fn cht_root(&self, cht_size: u64, block: <::Header as HeaderT>::Number) -> ClientResult { - let no_cht_for_block = || ClientErrorKind::Backend(format!("CHT for block {} not exists", block)).into(); + fn header_cht_root(&self, cht_size: u64, block: NumberFor) -> ClientResult { + self.read_cht_root(HEADER_CHT_PREFIX, cht_size, block) + } - let cht_number = cht::block_to_cht_number(cht_size, block).ok_or_else(no_cht_for_block)?; - let cht_start = cht::start_number(cht_size, cht_number); - self.db.get(columns::CHT, &number_to_lookup_key(cht_start)).map_err(db_err)? - .ok_or_else(no_cht_for_block) - .and_then(|hash| Block::Hash::decode(&mut &*hash).ok_or_else(no_cht_for_block)) + fn changes_trie_cht_root(&self, cht_size: u64, block: NumberFor) -> ClientResult { + self.read_cht_root(CHANGES_TRIE_CHT_PREFIX, cht_size, block) } fn finalize_header(&self, id: BlockId) -> ClientResult<()> { @@ -400,68 +445,72 @@ impl LightBlockchainStorage for LightStorage } } +/// Build the key for inserting header-CHT at given block. +fn cht_key>(cht_type: u8, block: N) -> [u8; 5] { + let mut key = [cht_type; 5]; + key[1..].copy_from_slice(&number_to_lookup_key(block)); + key +} + #[cfg(test)] pub(crate) mod tests { use client::cht; + use runtime_primitives::generic::DigestItem; use runtime_primitives::testing::{H256 as Hash, Header, Block as RawBlock, ExtrinsicWrapper}; use super::*; type Block = RawBlock>; - fn prepare_header(parent: &Hash, number: u64, extrinsics_root: Hash) -> Header { + pub fn default_header(parent: &Hash, number: u64) -> Header { Header { number: number.into(), parent_hash: *parent, state_root: Hash::random(), digest: Default::default(), - extrinsics_root, + extrinsics_root: Default::default(), } } - pub fn insert_block_with_extrinsics_root( - db: &LightStorage, - parent: &Hash, - number: u64, - authorities: Option>, - extrinsics_root: Hash, - ) -> Hash { - let header = prepare_header(parent, number, extrinsics_root); - let hash = header.hash(); - db.import_header(header, authorities, NewBlockState::Best).unwrap(); - hash + fn header_with_changes_trie(parent: &Hash, number: u64) -> Header { + let mut header = default_header(parent, number); + header.digest.logs.push(DigestItem::ChangesTrieRoot([(number % 256) as u8; 32].into())); + header + } + + fn header_with_extrinsics_root(parent: &Hash, number: u64, extrinsics_root: Hash) -> Header { + let mut header = default_header(parent, number); + header.extrinsics_root = extrinsics_root; + header } - pub fn insert_block( + pub fn insert_block Header>( db: &LightStorage, - parent: &Hash, - number: u64, - authorities: Option> + authorities: Option>, + header: F, ) -> Hash { - let header = prepare_header(parent, number, Default::default()); + let header = header(); let hash = header.hash(); db.import_header(header, authorities, NewBlockState::Best).unwrap(); hash } - fn insert_final_block( + fn insert_final_block Header>( db: &LightStorage, - parent: &Hash, - number: u64, - authorities: Option> + authorities: Option>, + header: F, ) -> Hash { - let header = prepare_header(parent, number, Default::default()); + let header = header(); let hash = header.hash(); db.import_header(header, authorities, NewBlockState::Final).unwrap(); hash } - fn insert_non_best_block( + fn insert_non_best_block Header>( db: &LightStorage, - parent: &Hash, - number: u64, - authorities: Option> + authorities: Option>, + header: F, ) -> Hash { - let header = prepare_header(parent, number, Default::default()); + let header = header(); let hash = header.hash(); db.import_header(header, authorities, NewBlockState::Normal).unwrap(); hash @@ -470,7 +519,7 @@ pub(crate) mod tests { #[test] fn returns_known_header() { let db = LightStorage::new_test(); - let known_hash = insert_block(&db, &Default::default(), 0, None); + let known_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); let header_by_hash = db.header(BlockId::Hash(known_hash)).unwrap().unwrap(); let header_by_number = db.header(BlockId::Number(0)).unwrap().unwrap(); assert_eq!(header_by_hash, header_by_number); @@ -486,12 +535,12 @@ pub(crate) mod tests { #[test] fn returns_info() { let db = LightStorage::new_test(); - let genesis_hash = insert_block(&db, &Default::default(), 0, None); + let genesis_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); let info = db.info().unwrap(); assert_eq!(info.best_hash, genesis_hash); assert_eq!(info.best_number, 0); assert_eq!(info.genesis_hash, genesis_hash); - let best_hash = insert_block(&db, &genesis_hash, 1, None); + let best_hash = insert_block(&db, None, || default_header(&genesis_hash, 1)); let info = db.info().unwrap(); assert_eq!(info.best_hash, best_hash); assert_eq!(info.best_number, 1); @@ -501,7 +550,7 @@ pub(crate) mod tests { #[test] fn returns_block_status() { let db = LightStorage::new_test(); - let genesis_hash = insert_block(&db, &Default::default(), 0, None); + let genesis_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); assert_eq!(db.status(BlockId::Hash(genesis_hash)).unwrap(), BlockStatus::InChain); assert_eq!(db.status(BlockId::Number(0)).unwrap(), BlockStatus::InChain); assert_eq!(db.status(BlockId::Hash(1.into())).unwrap(), BlockStatus::Unknown); @@ -511,7 +560,7 @@ pub(crate) mod tests { #[test] fn returns_block_hash() { let db = LightStorage::new_test(); - let genesis_hash = insert_block(&db, &Default::default(), 0, None); + let genesis_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); assert_eq!(db.hash(0).unwrap(), Some(genesis_hash)); assert_eq!(db.hash(1).unwrap(), None); } @@ -520,64 +569,81 @@ pub(crate) mod tests { fn import_header_works() { let db = LightStorage::new_test(); - let genesis_hash = insert_block(&db, &Default::default(), 0, None); + let genesis_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); assert_eq!(db.db.iter(columns::HEADER).count(), 1); assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), 1); - let _ = insert_block(&db, &genesis_hash, 1, None); + let _ = insert_block(&db, None, || default_header(&genesis_hash, 1)); assert_eq!(db.db.iter(columns::HEADER).count(), 2); assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), 2); } #[test] fn finalized_ancient_headers_are_replaced_with_cht() { - let db = LightStorage::new_test(); + fn insert_headers Header>(header_producer: F) -> LightStorage { + let db = LightStorage::new_test(); - // insert genesis block header (never pruned) - let mut prev_hash = insert_final_block(&db, &Default::default(), 0, None); + // insert genesis block header (never pruned) + let mut prev_hash = insert_final_block(&db, None, || header_producer(&Default::default(), 0)); - // insert SIZE blocks && ensure that nothing is pruned - for number in 0..cht::SIZE { - prev_hash = insert_block(&db, &prev_hash, 1 + number, None); - } - assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), (1 + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::CHT).count(), 0); + // insert SIZE blocks && ensure that nothing is pruned + for number in 0..cht::SIZE { + prev_hash = insert_block(&db, None, || header_producer(&prev_hash, 1 + number)); + } + assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE) as usize); + assert_eq!(db.db.iter(columns::CHT).count(), 0); - // insert next SIZE blocks && ensure that nothing is pruned - for number in 0..cht::SIZE { - prev_hash = insert_block(&db, &prev_hash, 1 + cht::SIZE + number, None); - } - assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), (1 + cht::SIZE + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::CHT).count(), 0); - - // insert block #{2 * cht::SIZE + 1} && check that new CHT is created + headers of this CHT are pruned - // nothing is yet finalized, so nothing is pruned. - prev_hash = insert_block(&db, &prev_hash, 1 + cht::SIZE + cht::SIZE, None); - assert_eq!(db.db.iter(columns::HEADER).count(), (2 + cht::SIZE + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), (2 + cht::SIZE + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::CHT).count(), 0); - - // now finalize the block. - for i in (0..(cht::SIZE + cht::SIZE)).map(|i| i + 1) { - db.finalize_header(BlockId::Number(i)).unwrap(); + // insert next SIZE blocks && ensure that nothing is pruned + for number in 0..cht::SIZE { + prev_hash = insert_block(&db, None, || header_producer(&prev_hash, 1 + cht::SIZE + number)); + } + assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE + cht::SIZE) as usize); + assert_eq!(db.db.iter(columns::CHT).count(), 0); + + // insert block #{2 * cht::SIZE + 1} && check that new CHT is created + headers of this CHT are pruned + // nothing is yet finalized, so nothing is pruned. + prev_hash = insert_block(&db, None, || header_producer(&prev_hash, 1 + cht::SIZE + cht::SIZE)); + assert_eq!(db.db.iter(columns::HEADER).count(), (2 + cht::SIZE + cht::SIZE) as usize); + assert_eq!(db.db.iter(columns::CHT).count(), 0); + + // now finalize the block. + for i in (0..(cht::SIZE + cht::SIZE)).map(|i| i + 1) { + db.finalize_header(BlockId::Number(i)).unwrap(); + } + db.finalize_header(BlockId::Hash(prev_hash)).unwrap(); + db } - db.finalize_header(BlockId::Hash(prev_hash)).unwrap(); + + // when headers are created without changes tries roots + let db = insert_headers(default_header); assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE + 1) as usize); assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), (1 + cht::SIZE + 1) as usize); assert_eq!(db.db.iter(columns::CHT).count(), 1); assert!((0..cht::SIZE).all(|i| db.db.get(columns::HEADER, &number_to_lookup_key(1 + i)).unwrap().is_none())); + assert!(db.header_cht_root(cht::SIZE, cht::SIZE / 2).is_ok()); + assert!(db.header_cht_root(cht::SIZE, cht::SIZE + cht::SIZE / 2).is_err()); + assert!(db.changes_trie_cht_root(cht::SIZE, cht::SIZE / 2).is_err()); + assert!(db.changes_trie_cht_root(cht::SIZE, cht::SIZE + cht::SIZE / 2).is_err()); + + // when headers are created with changes tries roots + let db = insert_headers(header_with_changes_trie); + assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE + 1) as usize); + assert_eq!(db.db.iter(columns::CHT).count(), 2); + assert!((0..cht::SIZE).all(|i| db.db.get(columns::HEADER, &number_to_lookup_key(1 + i)).unwrap().is_none())); + assert!(db.header_cht_root(cht::SIZE, cht::SIZE / 2).is_ok()); + assert!(db.header_cht_root(cht::SIZE, cht::SIZE + cht::SIZE / 2).is_err()); + assert!(db.changes_trie_cht_root(cht::SIZE, cht::SIZE / 2).is_ok()); + assert!(db.changes_trie_cht_root(cht::SIZE, cht::SIZE + cht::SIZE / 2).is_err()); } #[test] fn get_cht_fails_for_genesis_block() { - assert!(LightStorage::::new_test().cht_root(cht::SIZE, 0).is_err()); + assert!(LightStorage::::new_test().header_cht_root(cht::SIZE, 0).is_err()); } #[test] fn get_cht_fails_for_non_existant_cht() { - assert!(LightStorage::::new_test().cht_root(cht::SIZE, (cht::SIZE / 2) as u64).is_err()); + assert!(LightStorage::::new_test().header_cht_root(cht::SIZE, (cht::SIZE / 2) as u64).is_err()); } #[test] @@ -585,15 +651,21 @@ pub(crate) mod tests { let db = LightStorage::new_test(); // insert 1 + SIZE + SIZE + 1 blocks so that CHT#0 is created - let mut prev_hash = insert_final_block(&db, &Default::default(), 0, None); + let mut prev_hash = insert_final_block(&db, None, || header_with_changes_trie(&Default::default(), 0)); for i in 1..1 + cht::SIZE + cht::SIZE + 1 { - prev_hash = insert_block(&db, &prev_hash, i as u64, None); + prev_hash = insert_block(&db, None, || header_with_changes_trie(&prev_hash, i as u64)); db.finalize_header(BlockId::Hash(prev_hash)).unwrap(); } - let cht_root_1 = db.cht_root(cht::SIZE, cht::start_number(cht::SIZE, 0)).unwrap(); - let cht_root_2 = db.cht_root(cht::SIZE, (cht::start_number(cht::SIZE, 0) + cht::SIZE / 2) as u64).unwrap(); - let cht_root_3 = db.cht_root(cht::SIZE, cht::end_number(cht::SIZE, 0)).unwrap(); + let cht_root_1 = db.header_cht_root(cht::SIZE, cht::start_number(cht::SIZE, 0)).unwrap(); + let cht_root_2 = db.header_cht_root(cht::SIZE, (cht::start_number(cht::SIZE, 0) + cht::SIZE / 2) as u64).unwrap(); + let cht_root_3 = db.header_cht_root(cht::SIZE, cht::end_number(cht::SIZE, 0)).unwrap(); + assert_eq!(cht_root_1, cht_root_2); + assert_eq!(cht_root_2, cht_root_3); + + let cht_root_1 = db.changes_trie_cht_root(cht::SIZE, cht::start_number(cht::SIZE, 0)).unwrap(); + let cht_root_2 = db.changes_trie_cht_root(cht::SIZE, (cht::start_number(cht::SIZE, 0) + cht::SIZE / 2) as u64).unwrap(); + let cht_root_3 = db.changes_trie_cht_root(cht::SIZE, cht::end_number(cht::SIZE, 0)).unwrap(); assert_eq!(cht_root_1, cht_root_2); assert_eq!(cht_root_2, cht_root_3); } @@ -601,16 +673,16 @@ pub(crate) mod tests { #[test] fn tree_route_works() { let db = LightStorage::new_test(); - let block0 = insert_block(&db, &Default::default(), 0, None); + let block0 = insert_block(&db, None, || default_header(&Default::default(), 0)); // fork from genesis: 3 prong. - let a1 = insert_block(&db, &block0, 1, None); - let a2 = insert_block(&db, &a1, 2, None); - let a3 = insert_block(&db, &a2, 3, None); + let a1 = insert_block(&db, None, || default_header(&block0, 1)); + let a2 = insert_block(&db, None, || default_header(&a1, 2)); + let a3 = insert_block(&db, None, || default_header(&a2, 3)); // fork from genesis: 2 prong. - let b1 = insert_block_with_extrinsics_root(&db, &block0, 1, None, Hash::from([1; 32])); - let b2 = insert_block(&db, &b1, 2, None); + let b1 = insert_block(&db, None, || header_with_extrinsics_root(&block0, 1, Hash::from([1; 32]))); + let b2 = insert_block(&db, None, || default_header(&b1, 2)); { let tree_route = ::client::blockchain::tree_route( @@ -686,19 +758,19 @@ pub(crate) mod tests { (7, None), // block will work for 'future' block too ]; - let hash0 = insert_final_block(&db, &Default::default(), 0, None); + let hash0 = insert_final_block(&db, None, || default_header(&Default::default(), 0)); run_checks(&db, 0, &checks); - let hash1 = insert_final_block(&db, &hash0, 1, None); + let hash1 = insert_final_block(&db, None, || default_header(&hash0, 1)); run_checks(&db, 1, &checks); - let hash2 = insert_final_block(&db, &hash1, 2, Some(vec![[1u8; 32].into()])); + let hash2 = insert_final_block(&db, Some(vec![[1u8; 32].into()]), || default_header(&hash1, 2)); run_checks(&db, 2, &checks); - let hash3 = insert_final_block(&db, &hash2, 3, Some(vec![[1u8; 32].into()])); + let hash3 = insert_final_block(&db, Some(vec![[1u8; 32].into()]), || default_header(&hash2, 3)); run_checks(&db, 3, &checks); - let hash4 = insert_final_block(&db, &hash3, 4, Some(vec![[1u8; 32].into(), [2u8; 32].into()])); + let hash4 = insert_final_block(&db, Some(vec![[1u8; 32].into(), [2u8; 32].into()]), || default_header(&hash3, 4)); run_checks(&db, 4, &checks); - let hash5 = insert_final_block(&db, &hash4, 5, Some(vec![[1u8; 32].into(), [2u8; 32].into()])); + let hash5 = insert_final_block(&db, Some(vec![[1u8; 32].into(), [2u8; 32].into()]), || default_header(&hash4, 5)); run_checks(&db, 5, &checks); - let hash6 = insert_final_block(&db, &hash5, 6, None); + let hash6 = insert_final_block(&db, None, || default_header(&hash5, 6)); run_checks(&db, 7, &checks); (hash2, hash6) @@ -708,9 +780,9 @@ pub(crate) mod tests { // some older non-best blocks are inserted // ... -> B2(1) -> B2_1(1) -> B2_2(2) // => the cache ignores all writes before best finalized block - let hash2_1 = insert_non_best_block(&db, &hash2, 3, Some(vec![[1u8; 32].into()])); + let hash2_1 = insert_non_best_block(&db, Some(vec![[1u8; 32].into()]), || default_header(&hash2, 3)); assert_eq!(None, db.cache().authorities_at(BlockId::Hash(hash2_1))); - let hash2_2 = insert_non_best_block(&db, &hash2_1, 4, Some(vec![[1u8; 32].into(), [2u8; 32].into()])); + let hash2_2 = insert_non_best_block(&db, Some(vec![[1u8; 32].into(), [2u8; 32].into()]), || default_header(&hash2_1, 4)); assert_eq!(None, db.cache().authorities_at(BlockId::Hash(hash2_2))); } @@ -721,32 +793,32 @@ pub(crate) mod tests { // \> B6_1_1(5) // \> B6_1_2(6) -> B6_1_3(7) - let hash7 = insert_block(&db, &hash6, 7, Some(vec![[3u8; 32].into()])); + let hash7 = insert_block(&db, Some(vec![[3u8; 32].into()]), || default_header(&hash6, 7)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); - let hash8 = insert_block(&db, &hash7, 8, Some(vec![[3u8; 32].into()])); + let hash8 = insert_block(&db, Some(vec![[3u8; 32].into()]), || default_header(&hash7, 8)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash8)), Some(vec![[3u8; 32].into()])); - let hash6_1 = insert_block(&db, &hash6, 7, Some(vec![[4u8; 32].into()])); + let hash6_1 = insert_block(&db, Some(vec![[4u8; 32].into()]), || default_header(&hash6, 7)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash8)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1)), Some(vec![[4u8; 32].into()])); - let hash6_1_1 = insert_non_best_block(&db, &hash6_1, 8, Some(vec![[5u8; 32].into()])); + let hash6_1_1 = insert_non_best_block(&db, Some(vec![[5u8; 32].into()]), || default_header(&hash6_1, 8)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash8)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1)), Some(vec![[4u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1_1)), Some(vec![[5u8; 32].into()])); - let hash6_1_2 = insert_non_best_block(&db, &hash6_1, 8, Some(vec![[6u8; 32].into()])); + let hash6_1_2 = insert_non_best_block(&db, Some(vec![[6u8; 32].into()]), || default_header(&hash6_1, 8)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash8)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1)), Some(vec![[4u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1_1)), Some(vec![[5u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1_2)), Some(vec![[6u8; 32].into()])); - let hash6_2 = insert_block(&db, &hash6_1, 8, Some(vec![[4u8; 32].into()])); + let hash6_2 = insert_block(&db, Some(vec![[4u8; 32].into()]), || default_header(&hash6_1, 8)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash8)), Some(vec![[3u8; 32].into()])); diff --git a/core/client/src/cht.rs b/core/client/src/cht.rs index 39e1aaa95b..51fb485da6 100644 --- a/core/client/src/cht.rs +++ b/core/client/src/cht.rs @@ -23,6 +23,8 @@ //! root has. A correct proof implies that the claimed block is identical to the one //! we discarded. +use std::collections::HashSet; + use hash_db; use heapsize::HeapSizeOf; use trie; @@ -30,7 +32,8 @@ use trie; use primitives::{H256, convert_hash}; use runtime_primitives::traits::{As, Header as HeaderT, SimpleArithmetic, One}; use state_machine::backend::InMemory as InMemoryState; -use state_machine::{prove_read, read_proof_check}; +use state_machine::{MemoryDB, TrieBackend, Backend as StateBackend, + prove_read_on_trie_backend, read_proof_check, read_proof_check_on_proving_backend}; use error::{Error as ClientError, ErrorKind as ClientErrorKind, Result as ClientResult}; @@ -63,41 +66,48 @@ pub fn compute_root( cht_size: u64, cht_num: Header::Number, hashes: I, -) -> Option +) -> ClientResult where Header: HeaderT, Hasher: hash_db::Hasher, Hasher::Out: Ord, - I: IntoIterator>, + I: IntoIterator>>, { - build_pairs::(cht_size, cht_num, hashes) - .map(|pairs| trie::trie_root::(pairs)) + Ok(trie::trie_root::( + build_pairs::(cht_size, cht_num, hashes)? + )) } /// Build CHT-based header proof. -pub fn build_proof( +pub fn build_proof( cht_size: u64, cht_num: Header::Number, - block_num: Header::Number, - hashes: I -) -> Option>> + blocks: BlocksI, + hashes: HashesI +) -> ClientResult>> where Header: HeaderT, Hasher: hash_db::Hasher, Hasher::Out: Ord + HeapSizeOf, - I: IntoIterator>, + BlocksI: IntoIterator, + HashesI: IntoIterator>>, { - let transaction = build_pairs::(cht_size, cht_num, hashes)? + let transaction = build_pairs::(cht_size, cht_num, hashes)? .into_iter() .map(|(k, v)| (None, k, Some(v))) .collect::>(); let storage = InMemoryState::::default().update(transaction); - let (value, proof) = prove_read(storage, &encode_cht_key(block_num)).ok()?; - if value.is_none() { - None - } else { - Some(proof) + let trie_storage = storage.try_into_trie_backend() + .expect("InMemoryState::try_into_trie_backend always returns Some; qed"); + let mut total_proof = HashSet::new(); + for block in blocks.into_iter() { + debug_assert_eq!(block_to_cht_number(cht_size, block), Some(cht_num)); + + let (value, proof) = prove_read_on_trie_backend(&trie_storage, &encode_cht_key(block))?; + assert!(value.is_some(), "we have just built trie that includes the value for block"); + total_proof.extend(proof); } + Ok(total_proof.into_iter().collect()) } /// Check CHT-based header proof. @@ -109,20 +119,104 @@ pub fn check_proof( ) -> ClientResult<()> where Header: HeaderT, - Header::Hash: AsRef<[u8]>, Hasher: hash_db::Hasher, Hasher::Out: Ord + HeapSizeOf, +{ + do_check_proof::(local_root, local_number, remote_hash, move |local_root, local_cht_key| + read_proof_check::(local_root, remote_proof, + local_cht_key).map_err(|e| ClientError::from(e))) +} + +/// Check CHT-based header proof on pre-created proving backend. +pub fn check_proof_on_proving_backend( + local_root: Header::Hash, + local_number: Header::Number, + remote_hash: Header::Hash, + proving_backend: &TrieBackend, Hasher>, +) -> ClientResult<()> + where + Header: HeaderT, + Hasher: hash_db::Hasher, + Hasher::Out: Ord + HeapSizeOf, +{ + do_check_proof::(local_root, local_number, remote_hash, |_, local_cht_key| + read_proof_check_on_proving_backend::( + proving_backend, local_cht_key).map_err(|e| ClientError::from(e))) +} + +/// Check CHT-based header proof using passed checker function. +fn do_check_proof( + local_root: Header::Hash, + local_number: Header::Number, + remote_hash: Header::Hash, + checker: F, +) -> ClientResult<()> + where + Header: HeaderT, + Hasher: hash_db::Hasher, + Hasher::Out: Ord + HeapSizeOf, + F: FnOnce(Hasher::Out, &[u8]) -> ClientResult>>, { let root: Hasher::Out = convert_hash(&local_root); let local_cht_key = encode_cht_key(local_number); - let local_cht_value = read_proof_check::(root, remote_proof, - &local_cht_key).map_err(|e| ClientError::from(e))?; - let local_cht_value = local_cht_value.ok_or_else(|| ClientErrorKind::InvalidHeaderProof)?; - let local_hash = decode_cht_value(&local_cht_value).ok_or_else(|| ClientErrorKind::InvalidHeaderProof)?; + let local_cht_value = checker(root, &local_cht_key)?; + let local_cht_value = local_cht_value.ok_or_else(|| ClientErrorKind::InvalidCHTProof)?; + let local_hash = decode_cht_value(&local_cht_value).ok_or_else(|| ClientErrorKind::InvalidCHTProof)?; match &local_hash[..] == remote_hash.as_ref() { true => Ok(()), - false => Err(ClientErrorKind::InvalidHeaderProof.into()), + false => Err(ClientErrorKind::InvalidCHTProof.into()), } + +} + +/// Group ordered blocks by CHT number and call functor with blocks of each group. +pub fn for_each_cht_group( + cht_size: u64, + blocks: I, + mut functor: F, + mut functor_param: P, +) -> ClientResult<()> + where + Header: HeaderT, + I: IntoIterator, + F: FnMut(P, Header::Number, Vec) -> ClientResult

, +{ + let mut current_cht_num = None; + let mut current_cht_blocks = Vec::new(); + for block in blocks { + let new_cht_num = match block_to_cht_number(cht_size, block.as_()) { + Some(new_cht_num) => new_cht_num, + None => return Err(ClientErrorKind::Backend(format!( + "Cannot compute CHT root for the block #{}", block)).into() + ), + }; + + let advance_to_next_cht = current_cht_num.is_some() && current_cht_num != Some(new_cht_num); + if advance_to_next_cht { + let current_cht_num = current_cht_num.expect("advance_to_next_cht is true; + it is true only when current_cht_num is Some; qed"); + assert!(new_cht_num > current_cht_num, "for_each_cht_group only supports ordered iterators"); + + functor_param = functor( + functor_param, + As::sa(current_cht_num), + ::std::mem::replace(&mut current_cht_blocks, Vec::new()), + )?; + } + + current_cht_blocks.push(block); + current_cht_num = Some(new_cht_num); + } + + if let Some(current_cht_num) = current_cht_num { + functor( + functor_param, + As::sa(current_cht_num), + ::std::mem::replace(&mut current_cht_blocks, Vec::new()), + )?; + } + + Ok(()) } /// Build pairs for computing CHT. @@ -130,26 +224,29 @@ fn build_pairs( cht_size: u64, cht_num: Header::Number, hashes: I -) -> Option, Vec)>> +) -> ClientResult, Vec)>> where Header: HeaderT, - I: IntoIterator>, + I: IntoIterator>>, { let start_num = start_number(cht_size, cht_num); let mut pairs = Vec::new(); let mut hash_number = start_num; for hash in hashes.into_iter().take(cht_size as usize) { - pairs.push(hash.map(|hash| ( + let hash = hash?.ok_or_else(|| ClientError::from( + ClientErrorKind::MissingHashRequiredForCHT(cht_num.as_(), hash_number.as_()) + ))?; + pairs.push(( encode_cht_key(hash_number).to_vec(), encode_cht_value(hash) - ))?); + )); hash_number += Header::Number::one(); } if pairs.len() as u64 == cht_size { - Some(pairs) + Ok(pairs) } else { - None + Err(ClientErrorKind::MissingHashRequiredForCHT(cht_num.as_(), hash_number.as_()).into()) } } @@ -241,30 +338,59 @@ mod tests { #[test] fn build_pairs_fails_when_no_enough_blocks() { - assert!(build_pairs::(SIZE, 0, vec![Some(1.into()); SIZE as usize / 2]).is_none()); + assert!(build_pairs::(SIZE, 0, + ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize / 2)).is_err()); } #[test] fn build_pairs_fails_when_missing_block() { - assert!(build_pairs::(SIZE, 0, ::std::iter::repeat(Some(1.into())).take(SIZE as usize / 2) - .chain(::std::iter::once(None)) - .chain(::std::iter::repeat(Some(2.into())).take(SIZE as usize / 2 - 1))).is_none()); + assert!(build_pairs::(SIZE, 0, ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize / 2) + .chain(::std::iter::once(Ok(None))) + .chain(::std::iter::repeat_with(|| Ok(Some(2.into()))).take(SIZE as usize / 2 - 1))).is_err()); } #[test] fn compute_root_works() { - assert!(compute_root::(SIZE, 42, vec![Some(1.into()); SIZE as usize]).is_some()); + assert!(compute_root::(SIZE, 42, + ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize)).is_ok()); } #[test] - fn build_proof_fails_when_querying_wrong_block() { - assert!(build_proof::( - SIZE, 0, (SIZE * 1000) as u64, vec![Some(1.into()); SIZE as usize]).is_none()); + #[should_panic] + fn build_proof_panics_when_querying_wrong_block() { + assert!(build_proof::( + SIZE, 0, vec![(SIZE * 1000) as u64], + ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize)).is_err()); } #[test] fn build_proof_works() { - assert!(build_proof::( - SIZE, 0, (SIZE / 2) as u64, vec![Some(1.into()); SIZE as usize]).is_some()); + assert!(build_proof::( + SIZE, 0, vec![(SIZE / 2) as u64], + ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize)).is_ok()); + } + + #[test] + #[should_panic] + fn for_each_cht_group_panics() { + let _ = for_each_cht_group::(SIZE, vec![SIZE * 5, SIZE * 2], |_, _, _| Ok(()), ()); + } + + #[test] + fn for_each_cht_group_works() { + let _ = for_each_cht_group::(SIZE, vec![ + SIZE * 2 + 1, SIZE * 2 + 2, SIZE * 2 + 5, + SIZE * 4 + 1, SIZE * 4 + 7, + SIZE * 6 + 1 + ], |_, cht_num, blocks| { + match cht_num { + 2 => assert_eq!(blocks, vec![SIZE * 2 + 1, SIZE * 2 + 2, SIZE * 2 + 5]), + 4 => assert_eq!(blocks, vec![SIZE * 4 + 1, SIZE * 4 + 7]), + 6 => assert_eq!(blocks, vec![SIZE * 6 + 1]), + _ => unreachable!(), + } + + Ok(()) + }, ()); } } diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 6cf62dca2c..967da7a589 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -16,7 +16,7 @@ //! Substrate Client -use std::{marker::PhantomData, sync::Arc}; +use std::{marker::PhantomData, collections::{HashSet, BTreeMap}, sync::Arc}; use error::Error; use futures::sync::mpsc; use parking_lot::{Mutex, RwLock}; @@ -29,7 +29,7 @@ use runtime_primitives::{ use consensus::{ImportBlock, ImportResult, BlockOrigin}; use runtime_primitives::traits::{ Block as BlockT, Header as HeaderT, Zero, As, NumberFor, CurrentHeight, BlockNumberToHash, - ApiRef, ProvideRuntimeApi + ApiRef, ProvideRuntimeApi, Digest, DigestItem, }; use runtime_primitives::BuildStorage; use runtime_api::{Core as CoreAPI, CallApiAt, TaggedTransactionQueue, ConstructRuntimeApi}; @@ -38,8 +38,9 @@ use primitives::storage::{StorageKey, StorageData}; use primitives::storage::well_known_keys; use codec::Decode; use state_machine::{ - Backend as StateBackend, CodeExecutor, ChangesTrieAnchorBlockId, + DBValue, Backend as StateBackend, CodeExecutor, ChangesTrieAnchorBlockId, ExecutionStrategy, ExecutionManager, prove_read, + ChangesTrieRootsStorage, ChangesTrieStorage, key_changes, key_changes_proof, OverlayedChanges }; use codec::Encode; @@ -49,6 +50,7 @@ use blockchain::{self, Info as ChainInfo, Backend as ChainBackend, HeaderBackend use call_executor::{CallExecutor, LocalCallExecutor}; use executor::{RuntimeVersion, RuntimeInfo}; use notifications::{StorageNotifications, StorageEventStream}; +use light::fetcher::ChangesProof; use {cht, error, in_mem, block_builder::{self, api::BlockBuilder as BlockBuilderAPI}, genesis, consensus}; /// Type that implements `futures::Stream` of block import events. @@ -366,9 +368,8 @@ impl Client where let block_num = *header.number(); let cht_num = cht::block_to_cht_number(cht_size, block_num).ok_or_else(proof_error)?; let cht_start = cht::start_number(cht_size, cht_num); - let headers = (cht_start.as_()..).map(|num| self.block_hash(As::sa(num)).unwrap_or_default()); - let proof = cht::build_proof::(cht_size, cht_num, block_num, headers) - .ok_or_else(proof_error)?; + let headers = (cht_start.as_()..).map(|num| self.block_hash(As::sa(num))); + let proof = cht::build_proof::(cht_size, cht_num, ::std::iter::once(block_num), headers)?; Ok((header, proof)) } @@ -402,6 +403,8 @@ impl Client where } /// Get proof for computation of (block, extrinsic) pairs where key has been changed at given blocks range. + /// `min` is the hash of the first block, which changes trie root is known to the requester - when we're using + /// changes tries from ascendants of this block, we should provide proofs for changes tries roots /// `max` is the hash of the last block known to the requester - we can't use changes tries from descendants /// of this block. /// Works only for runtimes that are supporting changes tries. @@ -409,9 +412,57 @@ impl Client where &self, first: Block::Hash, last: Block::Hash, + min: Block::Hash, max: Block::Hash, key: &[u8] - ) -> error::Result<(NumberFor, Vec>)> { + ) -> error::Result> { + self.key_changes_proof_with_cht_size( + first, + last, + min, + max, + key, + cht::SIZE, + ) + } + + /// Does the same work as `key_changes_proof`, but assumes that CHTs are of passed size. + pub fn key_changes_proof_with_cht_size( + &self, + first: Block::Hash, + last: Block::Hash, + min: Block::Hash, + max: Block::Hash, + key: &[u8], + cht_size: u64, + ) -> error::Result> { + struct AccessedRootsRecorder<'a, Block: BlockT> { + storage: &'a ChangesTrieStorage, + min: u64, + required_roots_proofs: Mutex, H256>>, + }; + + impl<'a, Block: BlockT> ChangesTrieRootsStorage for AccessedRootsRecorder<'a, Block> { + fn root(&self, anchor: &ChangesTrieAnchorBlockId, block: u64) -> Result, String> { + let root = self.storage.root(anchor, block)?; + if block < self.min { + if let Some(ref root) = root { + self.required_roots_proofs.lock().insert( + As::sa(block), + root.clone() + ); + } + } + Ok(root) + } + } + + impl<'a, Block: BlockT> ChangesTrieStorage for AccessedRootsRecorder<'a, Block> { + fn get(&self, key: &H256) -> Result, String> { + self.storage.get(key) + } + } + let config = self.changes_trie_config.as_ref(); let storage = self.backend.changes_trie_storage(); let (config, storage) = match (config, storage) { @@ -419,22 +470,76 @@ impl Client where _ => return Err(error::ErrorKind::ChangesTriesNotSupported.into()), }; + let min_number = self.require_block_number_from_id(&BlockId::Hash(min))?; + let recording_storage = AccessedRootsRecorder:: { + storage, + min: min_number.as_(), + required_roots_proofs: Mutex::new(BTreeMap::new()), + }; + let max_number = ::std::cmp::min( self.backend.blockchain().info()?.best_number, self.require_block_number_from_id(&BlockId::Hash(max))?, ); - key_changes_proof::<_, Blake2Hasher>( + + // fetch key changes proof + let key_changes_proof = key_changes_proof::<_, Blake2Hasher>( config, - storage, + &recording_storage, self.require_block_number_from_id(&BlockId::Hash(first))?.as_(), &ChangesTrieAnchorBlockId { hash: convert_hash(&last), number: self.require_block_number_from_id(&BlockId::Hash(last))?.as_(), }, max_number.as_(), - key) - .map_err(|err| error::ErrorKind::ChangesTrieAccessFailed(err).into()) - .map(|proof| (max_number, proof)) + key + ) + .map_err(|err| error::Error::from(error::ErrorKind::ChangesTrieAccessFailed(err)))?; + + // now gather proofs for all changes tries roots that were touched during key_changes_proof + // execution AND are unknown (i.e. replaced with CHT) to the requester + let roots = recording_storage.required_roots_proofs.into_inner(); + let roots_proof = self.changes_trie_roots_proof(cht_size, roots.keys().cloned())?; + + Ok(ChangesProof { + max_block: max_number, + proof: key_changes_proof, + roots: roots.into_iter().map(|(n, h)| (n, convert_hash(&h))).collect(), + roots_proof, + }) + } + + /// Generate CHT-based proof for roots of changes tries at given blocks. + fn changes_trie_roots_proof>>( + &self, + cht_size: u64, + blocks: I + ) -> error::Result>> { + // most probably we have touched several changes tries that are parts of the single CHT + // => GroupBy changes tries by CHT number and then gather proof for the whole group at once + let mut proof = HashSet::new(); + + cht::for_each_cht_group::(cht_size, blocks, |_, cht_num, cht_blocks| { + let cht_proof = self.changes_trie_roots_proof_at_cht(cht_size, cht_num, cht_blocks)?; + proof.extend(cht_proof); + Ok(()) + }, ())?; + + Ok(proof.into_iter().collect()) + } + + /// Generates CHT-based proof for roots of changes tries at given blocks (that are part of single CHT). + fn changes_trie_roots_proof_at_cht( + &self, + cht_size: u64, + cht_num: NumberFor, + blocks: Vec> + ) -> error::Result>> { + let cht_start = cht::start_number(cht_size, cht_num); + let roots = (cht_start.as_()..).map(|num| self.header(&BlockId::Number(As::sa(num))) + .map(|block| block.and_then(|block| block.digest().log(DigestItem::as_changes_trie_root).cloned()))); + let proof = cht::build_proof::(cht_size, cht_num, blocks, roots)?; + Ok(proof) } /// Create a new block, built on the head of the chain. @@ -1097,7 +1202,7 @@ pub(crate) mod tests { use super::*; use keyring::Keyring; use primitives::twox_128; - use runtime_primitives::traits::{Digest as DigestT, DigestItem as DigestItemT}; + use runtime_primitives::traits::DigestItem as DigestItemT; use runtime_primitives::generic::DigestItem; use test_client::{self, TestClient}; use consensus::BlockOrigin; diff --git a/core/client/src/error.rs b/core/client/src/error.rs index aa09344c99..2a793e8049 100644 --- a/core/client/src/error.rs +++ b/core/client/src/error.rs @@ -88,8 +88,8 @@ error_chain! { display("This method is not currently available when running in light client mode"), } - /// Invalid remote header proof. - InvalidHeaderProof { + /// Invalid remote CHT-based proof. + InvalidCHTProof { description("invalid header proof"), display("Remote node has responded with invalid header proof"), } @@ -135,6 +135,12 @@ error_chain! { description("Potential long-range attack: block not in finalized chain."), display("Potential long-range attack: block not in finalized chain."), } + + /// Hash that is required for building CHT is missing. + MissingHashRequiredForCHT(cht_num: u64, block_number: u64) { + description("missed hash required for building CHT"), + display("Failed to get hash of block#{} for building CHT#{}", block_number, cht_num), + } } } diff --git a/core/client/src/in_mem.rs b/core/client/src/in_mem.rs index 70adb97607..323ca3fdc3 100644 --- a/core/client/src/in_mem.rs +++ b/core/client/src/in_mem.rs @@ -94,7 +94,8 @@ struct BlockchainStorage { finalized_hash: Block::Hash, finalized_number: NumberFor, genesis_hash: Block::Hash, - cht_roots: HashMap, Block::Hash>, + header_cht_roots: HashMap, Block::Hash>, + changes_trie_cht_roots: HashMap, Block::Hash>, leaves: LeafSet>, } @@ -142,7 +143,8 @@ impl Blockchain { finalized_hash: Default::default(), finalized_number: Zero::zero(), genesis_hash: Default::default(), - cht_roots: HashMap::new(), + header_cht_roots: HashMap::new(), + changes_trie_cht_roots: HashMap::new(), leaves: LeafSet::new(), })); Blockchain { @@ -233,9 +235,9 @@ impl Blockchain { && this.genesis_hash == other.genesis_hash } - /// Insert CHT root. + /// Insert header CHT root. pub fn insert_cht_root(&self, block: NumberFor, cht_root: Block::Hash) { - self.storage.write().cht_roots.insert(block, cht_root); + self.storage.write().header_cht_roots.insert(block, cht_root); } fn finalize_header(&self, id: BlockId) -> error::Result<()> { @@ -339,9 +341,14 @@ impl light::blockchain::Storage for Blockchain Blockchain::finalize_header(self, id) } - fn cht_root(&self, _cht_size: u64, block: NumberFor) -> error::Result { - self.storage.read().cht_roots.get(&block).cloned() - .ok_or_else(|| error::ErrorKind::Backend(format!("CHT for block {} not exists", block)).into()) + fn header_cht_root(&self, _cht_size: u64, block: NumberFor) -> error::Result { + self.storage.read().header_cht_roots.get(&block).cloned() + .ok_or_else(|| error::ErrorKind::Backend(format!("Header CHT for block {} not exists", block)).into()) + } + + fn changes_trie_cht_root(&self, _cht_size: u64, block: NumberFor) -> error::Result { + self.storage.read().changes_trie_cht_roots.get(&block).cloned() + .ok_or_else(|| error::ErrorKind::Backend(format!("Changes trie CHT for block {} not exists", block)).into()) } fn cache(&self) -> Option<&blockchain::Cache> { diff --git a/core/client/src/light/blockchain.rs b/core/client/src/light/blockchain.rs index 97c20ecc90..5e8a81b413 100644 --- a/core/client/src/light/blockchain.rs +++ b/core/client/src/light/blockchain.rs @@ -48,8 +48,11 @@ pub trait Storage: BlockchainHeaderBackend { /// Get last finalized header. fn last_finalized(&self) -> ClientResult; - /// Get CHT root for given block. Fails if the block is not pruned (not a part of any CHT). - fn cht_root(&self, cht_size: u64, block: NumberFor) -> ClientResult; + /// Get headers CHT root for given block. Fails if the block is not pruned (not a part of any CHT). + fn header_cht_root(&self, cht_size: u64, block: NumberFor) -> ClientResult; + + /// Get changes trie CHT root for given block. Fails if the block is not pruned (not a part of any CHT). + fn changes_trie_cht_root(&self, cht_size: u64, block: NumberFor) -> ClientResult; /// Get storage cache. fn cache(&self) -> Option<&BlockchainCache>; @@ -106,7 +109,7 @@ impl BlockchainHeaderBackend for Blockchain where Bloc self.fetcher().upgrade().ok_or(ClientErrorKind::NotAvailableOnLightClient)? .remote_header(RemoteHeaderRequest { - cht_root: self.storage.cht_root(cht::SIZE, number)?, + cht_root: self.storage.header_cht_root(cht::SIZE, number)?, block: number, retry_count: None, }) @@ -155,3 +158,84 @@ impl BlockchainBackend for Blockchain where Block: Blo unimplemented!() } } + +#[cfg(test)] +pub mod tests { + use std::collections::HashMap; + use test_client::runtime::{Hash, Block, Header}; + use blockchain::Info; + use light::fetcher::tests::OkCallFetcher; + use super::*; + + pub type DummyBlockchain = Blockchain; + + pub struct DummyStorage { + pub changes_tries_cht_roots: HashMap, + } + + impl DummyStorage { + pub fn new() -> Self { + DummyStorage { + changes_tries_cht_roots: HashMap::new(), + } + } + } + + impl BlockchainHeaderBackend for DummyStorage { + fn header(&self, _id: BlockId) -> ClientResult> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn info(&self) -> ClientResult> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn status(&self, _id: BlockId) -> ClientResult { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn number(&self, _hash: Hash) -> ClientResult>> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn hash(&self, _number: u64) -> ClientResult> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + } + + impl Storage for DummyStorage { + fn import_header( + &self, + _header: Header, + _authorities: Option>, + _state: NewBlockState, + ) -> ClientResult<()> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn finalize_header(&self, _block: BlockId) -> ClientResult<()> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn last_finalized(&self) -> ClientResult { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn header_cht_root(&self, _cht_size: u64, _block: u64) -> ClientResult { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn changes_trie_cht_root(&self, cht_size: u64, block: u64) -> ClientResult { + cht::block_to_cht_number(cht_size, block) + .and_then(|cht_num| self.changes_tries_cht_roots.get(&cht_num)) + .cloned() + .ok_or_else(|| ClientErrorKind::Backend( + format!("Test error: CHT for block #{} not found", block) + ).into()) + } + + fn cache(&self) -> Option<&BlockchainCache> { + None + } + } +} diff --git a/core/client/src/light/fetcher.rs b/core/client/src/light/fetcher.rs index b75b74a0a9..6b7938bab7 100644 --- a/core/client/src/light/fetcher.rs +++ b/core/client/src/light/fetcher.rs @@ -16,19 +16,22 @@ //! Light client data fetcher. Fetches requested data from remote full nodes. +use std::sync::Arc; +use std::collections::BTreeMap; use std::marker::PhantomData; use futures::IntoFuture; -use hash_db::Hasher; +use hash_db::{HashDB, Hasher}; use heapsize::HeapSizeOf; use primitives::{ChangesTrieConfiguration, convert_hash}; use runtime_primitives::traits::{As, Block as BlockT, Header as HeaderT, NumberFor}; use state_machine::{CodeExecutor, ChangesTrieRootsStorage, ChangesTrieAnchorBlockId, - read_proof_check, key_changes_proof_check}; + TrieBackend, read_proof_check, key_changes_proof_check, create_proof_check_backend_storage}; use call_executor::CallResult; use cht; use error::{Error as ClientError, ErrorKind as ClientErrorKind, Result as ClientResult}; +use light::blockchain::{Blockchain, Storage as BlockchainStorage}; use light::call_executor::check_execution_proof; /// Remote call request. @@ -83,15 +86,30 @@ pub struct RemoteChangesRequest { /// Only use digests from blocks up to this hash. Should be last_block OR come /// after this block and be the part of the same fork. pub max_block: (Header::Number, Header::Hash), - // TODO: get rid of this + preserve change_trie_roots when replacing headers with CHT!!! - /// Changes trie roots for the range of blocks [first_block..max_block]. - pub tries_roots: Vec, + /// Known changes trie roots for the range of blocks [tries_roots.0..max_block]. + /// Proofs for roots of ascendants of tries_roots.0 are provided by the remote node. + pub tries_roots: (Header::Number, Header::Hash, Vec), /// Storage key to read. pub key: Vec, /// Number of times to retry request. None means that default RETRY_COUNT is used. pub retry_count: Option, } +/// Key changes read proof. +#[derive(Debug, PartialEq, Eq)] +pub struct ChangesProof { + /// Max block that has been used in changes query. + pub max_block: Header::Number, + /// All touched nodes of all changes tries. + pub proof: Vec>, + /// All changes tries roots that have been touched AND are missing from + /// the requester' node. It is a map of block number => changes trie root. + pub roots: BTreeMap, + /// The proofs for all changes tries roots that have been touched AND are + /// missing from the requester' node. It is a map of CHT number => proof. + pub roots_proof: Vec>, +} + /// Light client data fetcher. Implementations of this trait must check if remote data /// is correct (see FetchedDataChecker) and return already checked data. pub trait Fetcher: Send + Sync { @@ -117,8 +135,8 @@ pub trait Fetcher: Send + Sync { /// Light client remote data checker. /// -/// Implementations of this trait should not use any blockchain data except that is -/// passed to its methods. +/// Implementations of this trait should not use any prunable blockchain data +/// except that is passed to its methods. pub trait FetchChecker: Send + Sync { /// Check remote header proof. fn check_header_proof( @@ -143,32 +161,158 @@ pub trait FetchChecker: Send + Sync { fn check_changes_proof( &self, request: &RemoteChangesRequest, - remote_max: NumberFor, - remote_proof: Vec> + proof: ChangesProof ) -> ClientResult, u32)>>; } /// Remote data checker. -pub struct LightDataChecker { +pub struct LightDataChecker, F> { + blockchain: Arc>, executor: E, - _hasher: PhantomData, + _hasher: PhantomData<(B, H)>, } -impl LightDataChecker { +impl, F> LightDataChecker { /// Create new light data checker. - pub fn new(executor: E) -> Self { + pub fn new(blockchain: Arc>, executor: E) -> Self { Self { - executor, _hasher: PhantomData + blockchain, executor, _hasher: PhantomData + } + } + + /// Check remote changes query proof assuming that CHT-s are of given size. + fn check_changes_proof_with_cht_size( + &self, + request: &RemoteChangesRequest, + remote_proof: ChangesProof, + cht_size: u64, + ) -> ClientResult, u32)>> + where + H: Hasher, + H::Out: Ord + HeapSizeOf, + { + // since we need roots of all changes tries for the range begin..max + // => remote node can't use max block greater that one that we have passed + if remote_proof.max_block > request.max_block.0 || remote_proof.max_block < request.last_block.0 { + return Err(ClientErrorKind::ChangesTrieAccessFailed(format!( + "Invalid max_block used by the remote node: {}. Local: {}..{}..{}", + remote_proof.max_block, request.first_block.0, request.last_block.0, request.max_block.0, + )).into()); + } + + // check if remote node has responded with extra changes trie roots proofs + // all changes tries roots must be in range [request.first_block.0; request.tries_roots.0) + let is_extra_first_root = remote_proof.roots.keys().next() + .map(|first_root| *first_root < request.first_block.0 + || *first_root >= request.tries_roots.0) + .unwrap_or(false); + let is_extra_last_root = remote_proof.roots.keys().next_back() + .map(|last_root| *last_root >= request.tries_roots.0) + .unwrap_or(false); + if is_extra_first_root || is_extra_last_root { + return Err(ClientErrorKind::ChangesTrieAccessFailed(format!( + "Extra changes tries roots proofs provided by the remote node: [{:?}..{:?}]. Expected in range: [{}; {})", + remote_proof.roots.keys().next(), remote_proof.roots.keys().next_back(), + request.first_block.0, request.tries_roots.0, + )).into()); } + + // if request has been composed when some required headers were already pruned + // => remote node has sent us CHT-based proof of required changes tries roots + // => check that this proof is correct before proceeding with changes proof + let remote_max_block = remote_proof.max_block; + let remote_roots = remote_proof.roots; + let remote_roots_proof = remote_proof.roots_proof; + let remote_proof = remote_proof.proof; + if !remote_roots.is_empty() { + self.check_changes_tries_proof( + cht_size, + &remote_roots, + remote_roots_proof, + )?; + } + + // and now check the key changes proof + get the changes + key_changes_proof_check::<_, H>( + &request.changes_trie_config, + &RootsStorage { + roots: (request.tries_roots.0, &request.tries_roots.2), + prev_roots: remote_roots, + }, + remote_proof, + request.first_block.0.as_(), + &ChangesTrieAnchorBlockId { + hash: convert_hash(&request.last_block.1), + number: request.last_block.0.as_(), + }, + remote_max_block.as_(), + &request.key) + .map(|pairs| pairs.into_iter().map(|(b, x)| (As::sa(b), x)).collect()) + .map_err(|err| ClientErrorKind::ChangesTrieAccessFailed(err).into()) + } + + /// Check CHT-based proof for changes tries roots. + fn check_changes_tries_proof( + &self, + cht_size: u64, + remote_roots: &BTreeMap, B::Hash>, + remote_roots_proof: Vec>, + ) -> ClientResult<()> + where + H: Hasher, + H::Out: Ord + HeapSizeOf, + { + // all the checks are sharing the same storage + let storage = create_proof_check_backend_storage(remote_roots_proof); + + // we remote_roots.keys() are sorted => we can use this to group changes tries roots + // that are belongs to the same CHT + let blocks = remote_roots.keys().cloned(); + cht::for_each_cht_group::(cht_size, blocks, |mut storage, _, cht_blocks| { + // get local changes trie CHT root for given CHT + // it should be there, because it is never pruned AND request has been composed + // when required header has been pruned (=> replaced with CHT) + let first_block = cht_blocks.first().cloned() + .expect("for_each_cht_group never calls callback with empty groups"); + let local_cht_root = self.blockchain.storage().changes_trie_cht_root(cht_size, first_block)?; + + // check changes trie root for every block within CHT range + for block in cht_blocks { + // check if the proofs storage contains the root + // normally this happens in when the proving backend is created, but since + // we share the storage for multiple checks, do it here + let mut cht_root = H::Out::default(); + cht_root.as_mut().copy_from_slice(local_cht_root.as_ref()); + if !storage.contains(&cht_root) { + return Err(ClientErrorKind::InvalidCHTProof.into()); + } + + // check proof for single changes trie root + let proving_backend = TrieBackend::new(storage, cht_root); + let remote_changes_trie_root = remote_roots[&block]; + cht::check_proof_on_proving_backend::( + local_cht_root, + block, + remote_changes_trie_root, + &proving_backend)?; + + // and return the storage to use in following checks + storage = proving_backend.into_storage(); + } + + Ok(storage) + }, storage) } } -impl FetchChecker for LightDataChecker +impl FetchChecker for LightDataChecker where Block: BlockT, E: CodeExecutor, H: Hasher, H::Out: Ord + HeapSizeOf, + S: BlockchainStorage, + F: Send + Sync, { fn check_header_proof( &self, @@ -177,7 +321,7 @@ impl FetchChecker for LightDataChecker remote_proof: Vec> ) -> ClientResult { let remote_header = remote_header.ok_or_else(|| - ClientError::from(ClientErrorKind::InvalidHeaderProof))?; + ClientError::from(ClientErrorKind::InvalidCHTProof))?; let remote_header_hash = remote_header.hash(); cht::check_proof::( request.cht_root, @@ -207,55 +351,39 @@ impl FetchChecker for LightDataChecker fn check_changes_proof( &self, request: &RemoteChangesRequest, - remote_max: NumberFor, - remote_proof: Vec> + remote_proof: ChangesProof ) -> ClientResult, u32)>> { - // since we need roots of all changes tries for the range begin..max - // => remote node can't use max block greater that one that we have passed - if remote_max > request.max_block.0 || remote_max < request.last_block.0 { - return Err(ClientErrorKind::ChangesTrieAccessFailed(format!( - "Invalid max_block used by the remote node: {}. Local: {}..{}..{}", - remote_max, request.first_block.0, request.last_block.0, request.max_block.0, - )).into()); - } - - let first_number = request.first_block.0.as_(); - key_changes_proof_check::<_, H>( - &request.changes_trie_config, - &RootsStorage { - first: first_number, - roots: &request.tries_roots, - }, - remote_proof, - first_number, - &ChangesTrieAnchorBlockId { - hash: convert_hash(&request.last_block.1), - number: request.last_block.0.as_(), - }, - remote_max.as_(), - &request.key) - .map(|pairs| pairs.into_iter().map(|(b, x)| (As::sa(b), x)).collect()) - .map_err(|err| ClientErrorKind::ChangesTrieAccessFailed(err).into()) + self.check_changes_proof_with_cht_size(request, remote_proof, cht::SIZE) } } -/// A view of HashMap as a changes trie roots storage. -struct RootsStorage<'a, Hash: 'a> { - first: u64, - roots: &'a [Hash], +/// A view of BTreeMap as a changes trie roots storage. +struct RootsStorage<'a, Number: As, Hash: 'a> { + roots: (Number, &'a [Hash]), + prev_roots: BTreeMap, } -impl<'a, H, Hash> ChangesTrieRootsStorage for RootsStorage<'a, Hash> +impl<'a, H, Number, Hash> ChangesTrieRootsStorage for RootsStorage<'a, Number, Hash> where H: Hasher, + Number: Send + Sync + Eq + ::std::cmp::Ord + Copy + As, Hash: 'a + Send + Sync + Clone + AsRef<[u8]>, { fn root(&self, _anchor: &ChangesTrieAnchorBlockId, block: u64) -> Result, String> { // we can't ask for roots from parallel forks here => ignore anchor - Ok(block.checked_sub(self.first) - .and_then(|index| self.roots.get(index as usize)) - .cloned() - .map(|root| convert_hash(&root))) + let root = if block < self.roots.0.as_() { + self.prev_roots.get(&As::sa(block)).cloned() + } else { + block.checked_sub(self.roots.0.as_()) + .and_then(|index| self.roots.1.get(index as usize)) + .cloned() + }; + + Ok(root.map(|root| { + let mut hasher_root: H::Out = Default::default(); + hasher_root.as_mut().copy_from_slice(root.as_ref()); + hasher_root + })) } } @@ -263,18 +391,20 @@ impl<'a, H, Hash> ChangesTrieRootsStorage for RootsStorage<'a, Hash> pub mod tests { use futures::future::{ok, err, FutureResult}; use parking_lot::Mutex; + use keyring::Keyring; use call_executor::CallResult; use client::tests::prepare_client_with_key_changes; use executor::{self, NativeExecutionDispatch}; use error::Error as ClientError; - use test_client::{self, TestClient}; + use test_client::{self, TestClient, blockchain::HeaderBackend}; use test_client::runtime::{self, Hash, Block, Header}; use consensus::BlockOrigin; use in_mem::{Blockchain as InMemoryBlockchain}; use light::fetcher::{Fetcher, FetchChecker, LightDataChecker, RemoteCallRequest, RemoteHeaderRequest}; - use primitives::{Blake2Hasher}; + use light::blockchain::tests::{DummyStorage, DummyBlockchain}; + use primitives::{twox_128, Blake2Hasher}; use primitives::storage::well_known_keys; use runtime_primitives::generic::BlockId; use state_machine::Backend; @@ -305,10 +435,9 @@ pub mod tests { } } - fn prepare_for_read_proof_check() -> ( - LightDataChecker, Blake2Hasher>, - Header, Vec>, usize) - { + type TestChecker = LightDataChecker, Blake2Hasher, Block, DummyStorage, OkCallFetcher>; + + fn prepare_for_read_proof_check() -> (TestChecker, Header, Vec>, usize) { // prepare remote client let remote_client = test_client::new(); let remote_block_id = BlockId::Number(0); @@ -330,21 +459,19 @@ pub mod tests { ::backend::NewBlockState::Final, ).unwrap(); let local_executor = test_client::LocalExecutor::new(); - let local_checker = LightDataChecker::new(local_executor); + let local_checker = LightDataChecker::new(Arc::new(DummyBlockchain::new(DummyStorage::new())), local_executor); (local_checker, remote_block_header, remote_read_proof, authorities_len) } - fn prepare_for_header_proof_check(insert_cht: bool) -> ( - LightDataChecker, Blake2Hasher>, - Hash, Header, Vec>) - { + fn prepare_for_header_proof_check(insert_cht: bool) -> (TestChecker, Hash, Header, Vec>) { // prepare remote client let remote_client = test_client::new(); let mut local_headers_hashes = Vec::new(); for i in 0..4 { let builder = remote_client.new_block().unwrap(); remote_client.justify_and_import(BlockOrigin::Own, builder.bake().unwrap()).unwrap(); - local_headers_hashes.push(remote_client.block_hash(i + 1).unwrap()); + local_headers_hashes.push(remote_client.block_hash(i + 1) + .map_err(|_| ClientErrorKind::Backend("TestError".into()).into())); } // 'fetch' header proof from remote node @@ -353,12 +480,12 @@ pub mod tests { // check remote read proof locally let local_storage = InMemoryBlockchain::::new(); - let local_cht_root = cht::compute_root::(4, 0, local_headers_hashes.into_iter()).unwrap(); + let local_cht_root = cht::compute_root::(4, 0, local_headers_hashes).unwrap(); if insert_cht { local_storage.insert_cht_root(1, local_cht_root); } let local_executor = test_client::LocalExecutor::new(); - let local_checker = LightDataChecker::new(local_executor); + let local_checker = LightDataChecker::new(Arc::new(DummyBlockchain::new(DummyStorage::new())), local_executor); (local_checker, local_cht_root, remote_block_header, remote_header_proof) } @@ -406,10 +533,12 @@ pub mod tests { } #[test] - fn changes_proof_is_generated_and_checked() { + fn changes_proof_is_generated_and_checked_when_headers_are_not_pruned() { let (remote_client, local_roots, test_cases) = prepare_client_with_key_changes(); - let local_checker = LightDataChecker::<_, Blake2Hasher>::new( - test_client::LocalExecutor::new()); + let local_checker = TestChecker::new( + Arc::new(DummyBlockchain::new(DummyStorage::new())), + test_client::LocalExecutor::new() + ); let local_checker = &local_checker as &FetchChecker; let max = remote_client.info().unwrap().chain.best_number; let max_hash = remote_client.info().unwrap().chain.best_hash; @@ -419,8 +548,8 @@ pub mod tests { let end_hash = remote_client.block_hash(end).unwrap().unwrap(); // 'fetch' changes proof from remote node - let (remote_max, remote_proof) = remote_client.key_changes_proof( - begin_hash, end_hash, max_hash, &key + let remote_proof = remote_client.key_changes_proof( + begin_hash, end_hash, begin_hash, max_hash, &key ).unwrap(); // check proof on local client @@ -430,12 +559,16 @@ pub mod tests { first_block: (begin, begin_hash), last_block: (end, end_hash), max_block: (max, max_hash), - tries_roots: local_roots_range, + tries_roots: (begin, begin_hash, local_roots_range), key: key, retry_count: None, }; - let local_result = local_checker.check_changes_proof( - &request, remote_max, remote_proof).unwrap(); + let local_result = local_checker.check_changes_proof(&request, ChangesProof { + max_block: remote_proof.max_block, + proof: remote_proof.proof, + roots: remote_proof.roots, + roots_proof: remote_proof.roots_proof, + }).unwrap(); // ..and ensure that result is the same as on remote node match local_result == expected_result { @@ -446,11 +579,60 @@ pub mod tests { } } + #[test] + fn changes_proof_is_generated_and_checked_when_headers_are_pruned() { + // we're testing this test case here: + // (1, 4, dave.clone(), vec![(4, 0), (1, 1), (1, 0)]), + let (remote_client, remote_roots, _) = prepare_client_with_key_changes(); + let dave = twox_128(&runtime::system::balance_of_key(Keyring::Dave.to_raw_public().into())).to_vec(); + + // 'fetch' changes proof from remote node: + // we're fetching changes for range b1..b4 + // we do not know changes trie roots before b3 (i.e. we only know b3+b4) + // but we have changes trie CHT root for b1...b4 + let b1 = remote_client.block_hash_from_id(&BlockId::Number(1)).unwrap().unwrap(); + let b3 = remote_client.block_hash_from_id(&BlockId::Number(3)).unwrap().unwrap(); + let b4 = remote_client.block_hash_from_id(&BlockId::Number(4)).unwrap().unwrap(); + let remote_proof = remote_client.key_changes_proof_with_cht_size( + b1, b4, b3, b4, &dave, 4 + ).unwrap(); + + // prepare local checker, having a root of changes trie CHT#0 + let local_cht_root = cht::compute_root::(4, 0, remote_roots.iter().cloned().map(|ct| Ok(Some(ct)))).unwrap(); + let mut local_storage = DummyStorage::new(); + local_storage.changes_tries_cht_roots.insert(0, local_cht_root); + let local_checker = TestChecker::new( + Arc::new(DummyBlockchain::new(local_storage)), + test_client::LocalExecutor::new() + ); + + // check proof on local client + let request = RemoteChangesRequest::

{ + changes_trie_config: runtime::changes_trie_config(), + first_block: (1, b1), + last_block: (4, b4), + max_block: (4, b4), + tries_roots: (3, b3, vec![remote_roots[2].clone(), remote_roots[3].clone()]), + key: dave, + retry_count: None, + }; + let local_result = local_checker.check_changes_proof_with_cht_size(&request, ChangesProof { + max_block: remote_proof.max_block, + proof: remote_proof.proof, + roots: remote_proof.roots, + roots_proof: remote_proof.roots_proof, + }, 4).unwrap(); + + assert_eq!(local_result, vec![(4, 0), (1, 1), (1, 0)]); + } + #[test] fn check_changes_proof_fails_if_proof_is_wrong() { let (remote_client, local_roots, test_cases) = prepare_client_with_key_changes(); - let local_checker = LightDataChecker::<_, Blake2Hasher>::new( - test_client::LocalExecutor::new()); + let local_checker = TestChecker::new( + Arc::new(DummyBlockchain::new(DummyStorage::new())), + test_client::LocalExecutor::new() + ); let local_checker = &local_checker as &FetchChecker; let max = remote_client.info().unwrap().chain.best_number; let max_hash = remote_client.info().unwrap().chain.best_hash; @@ -460,24 +642,86 @@ pub mod tests { let end_hash = remote_client.block_hash(end).unwrap().unwrap(); // 'fetch' changes proof from remote node - let (remote_max, mut remote_proof) = remote_client.key_changes_proof( - begin_hash, end_hash, max_hash, &key).unwrap(); + let remote_proof = remote_client.key_changes_proof( + begin_hash, end_hash, begin_hash, max_hash, &key).unwrap(); + let local_roots_range = local_roots.clone()[(begin - 1) as usize..].to_vec(); let request = RemoteChangesRequest::
{ changes_trie_config: runtime::changes_trie_config(), first_block: (begin, begin_hash), last_block: (end, end_hash), max_block: (max, max_hash), - tries_roots: local_roots_range.clone(), + tries_roots: (begin, begin_hash, local_roots_range.clone()), key: key, retry_count: None, }; // check proof on local client using max from the future - assert!(local_checker.check_changes_proof(&request, remote_max + 1, remote_proof.clone()).is_err()); + assert!(local_checker.check_changes_proof(&request, ChangesProof { + max_block: remote_proof.max_block + 1, + proof: remote_proof.proof.clone(), + roots: remote_proof.roots.clone(), + roots_proof: remote_proof.roots_proof.clone(), + }).is_err()); // check proof on local client using broken proof - remote_proof = local_roots_range.into_iter().map(|v| v.as_bytes().to_vec()).collect(); - assert!(local_checker.check_changes_proof(&request, remote_max, remote_proof).is_err()); + assert!(local_checker.check_changes_proof(&request, ChangesProof { + max_block: remote_proof.max_block, + proof: local_roots_range.clone().into_iter().map(|v| v.as_ref().to_vec()).collect(), + roots: remote_proof.roots, + roots_proof: remote_proof.roots_proof, + }).is_err()); + + // extra roots proofs are provided + assert!(local_checker.check_changes_proof(&request, ChangesProof { + max_block: remote_proof.max_block, + proof: remote_proof.proof.clone(), + roots: vec![(begin - 1, Default::default())].into_iter().collect(), + roots_proof: vec![], + }).is_err()); + assert!(local_checker.check_changes_proof(&request, ChangesProof { + max_block: remote_proof.max_block, + proof: remote_proof.proof.clone(), + roots: vec![(end + 1, Default::default())].into_iter().collect(), + roots_proof: vec![], + }).is_err()); + } + + #[test] + fn check_changes_tries_proof_fails_if_proof_is_wrong() { + // we're testing this test case here: + // (1, 4, dave.clone(), vec![(4, 0), (1, 1), (1, 0)]), + let (remote_client, remote_roots, _) = prepare_client_with_key_changes(); + let local_cht_root = cht::compute_root::( + 4, 0, remote_roots.iter().cloned().map(|ct| Ok(Some(ct)))).unwrap(); + let dave = twox_128(&runtime::system::balance_of_key(Keyring::Dave.to_raw_public().into())).to_vec(); + + // 'fetch' changes proof from remote node: + // we're fetching changes for range b1..b4 + // we do not know changes trie roots before b3 (i.e. we only know b3+b4) + // but we have changes trie CHT root for b1...b4 + let b1 = remote_client.block_hash_from_id(&BlockId::Number(1)).unwrap().unwrap(); + let b3 = remote_client.block_hash_from_id(&BlockId::Number(3)).unwrap().unwrap(); + let b4 = remote_client.block_hash_from_id(&BlockId::Number(4)).unwrap().unwrap(); + let remote_proof = remote_client.key_changes_proof_with_cht_size( + b1, b4, b3, b4, &dave, 4 + ).unwrap(); + + // fails when changes trie CHT is missing from the local db + let local_checker = TestChecker::new( + Arc::new(DummyBlockchain::new(DummyStorage::new())), + test_client::LocalExecutor::new() + ); + assert!(local_checker.check_changes_tries_proof(4, &remote_proof.roots, + remote_proof.roots_proof.clone()).is_err()); + + // fails when proof is broken + let mut local_storage = DummyStorage::new(); + local_storage.changes_tries_cht_roots.insert(0, local_cht_root); + let local_checker = TestChecker::new( + Arc::new(DummyBlockchain::new(local_storage)), + test_client::LocalExecutor::new() + ); + assert!(local_checker.check_changes_tries_proof(4, &remote_proof.roots, vec![]).is_err()); } } diff --git a/core/client/src/light/mod.rs b/core/client/src/light/mod.rs index 29db81a001..8727455d30 100644 --- a/core/client/src/light/mod.rs +++ b/core/client/src/light/mod.rs @@ -65,13 +65,14 @@ where } /// Create an instance of fetch data checker. -pub fn new_fetch_checker( +pub fn new_fetch_checker, F>( + blockchain: Arc>, executor: E, -) -> LightDataChecker +) -> LightDataChecker where E: CodeExecutor, H: Hasher, { - LightDataChecker::new(executor) + LightDataChecker::new(blockchain, executor) } diff --git a/core/network/src/chain.rs b/core/network/src/chain.rs index 32cb18f276..8547f9006e 100644 --- a/core/network/src/chain.rs +++ b/core/network/src/chain.rs @@ -18,8 +18,9 @@ use client::{self, Client as SubstrateClient, ClientInfo, BlockStatus, CallExecutor}; use client::error::Error; +use client::light::fetcher::ChangesProof; use consensus::BlockImport; -use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, NumberFor}; +use runtime_primitives::traits::{Block as BlockT, Header as HeaderT}; use runtime_primitives::generic::{BlockId}; use consensus::{ImportBlock, ImportResult}; use runtime_primitives::Justification; @@ -63,9 +64,10 @@ pub trait Client: Send + Sync { &self, first: Block::Hash, last: Block::Hash, + min: Block::Hash, max: Block::Hash, key: &[u8] - ) -> Result<(NumberFor, Vec>), Error>; + ) -> Result, Error>; } impl Client for SubstrateClient where @@ -121,9 +123,10 @@ impl Client for SubstrateClient where &self, first: Block::Hash, last: Block::Hash, + min: Block::Hash, max: Block::Hash, key: &[u8] - ) -> Result<(NumberFor, Vec>), Error> { - (self as &SubstrateClient).key_changes_proof(first, last, max, key) + ) -> Result, Error> { + (self as &SubstrateClient).key_changes_proof(first, last, min, max, key) } } diff --git a/core/network/src/message.rs b/core/network/src/message.rs index 40cd9a435d..519d7c78eb 100644 --- a/core/network/src/message.rs +++ b/core/network/src/message.rs @@ -189,7 +189,7 @@ pub mod generic { /// Remote changes request. RemoteChangesRequest(RemoteChangesRequest), /// Remote changes reponse. - RemoteChangesResponse(RemoteChangesResponse), + RemoteChangesResponse(RemoteChangesResponse), /// Chain-specific message #[codec(index = "255")] ChainSpecific(Vec), @@ -298,6 +298,9 @@ pub mod generic { pub first: H, /// Hash of the last block of the range (including last) where changes are requested. pub last: H, + /// Hash of the first block for which the requester has the changes trie root. All other + /// affected roots must be proved. + pub min: H, /// Hash of the last block that we can use when querying changes. pub max: H, /// Storage key which changes are requested. @@ -306,7 +309,7 @@ pub mod generic { #[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)] /// Remote changes response. - pub struct RemoteChangesResponse { + pub struct RemoteChangesResponse { /// Id of a request this response was made for. pub id: RequestId, /// Proof has been generated using block with this number as a max block. Should be @@ -314,5 +317,9 @@ pub mod generic { pub max: N, /// Changes proof. pub proof: Vec>, + /// Changes tries roots missing on the requester' node. + pub roots: Vec<(N, H)>, + /// Missing changes tries roots proof. + pub roots_proof: Vec>, } } diff --git a/core/network/src/on_demand.rs b/core/network/src/on_demand.rs index 5fbf893714..59a5333a47 100644 --- a/core/network/src/on_demand.rs +++ b/core/network/src/on_demand.rs @@ -26,7 +26,7 @@ use linked_hash_map::Entry; use parking_lot::Mutex; use client::{self, error::{Error as ClientError, ErrorKind as ClientErrorKind}}; use client::light::fetcher::{Fetcher, FetchChecker, RemoteHeaderRequest, - RemoteCallRequest, RemoteReadRequest, RemoteChangesRequest}; + RemoteCallRequest, RemoteReadRequest, RemoteChangesRequest, ChangesProof}; use io::SyncIo; use message; use network_libp2p::{Severity, NodeIndex}; @@ -72,7 +72,7 @@ pub trait OnDemandService: Send + Sync { &self, io: &mut SyncIo, peer: NodeIndex, - response: message::RemoteChangesResponse> + response: message::RemoteChangesResponse, Block::Hash> ); } @@ -284,11 +284,15 @@ impl OnDemandService for OnDemand where }) } - fn on_remote_changes_response(&self, io: &mut SyncIo, peer: NodeIndex, response: message::RemoteChangesResponse>) { + fn on_remote_changes_response(&self, io: &mut SyncIo, peer: NodeIndex, response: message::RemoteChangesResponse, B::Hash>) { self.accept_response("changes", io, peer, response.id, |request| match request.data { RequestData::RemoteChanges(request, sender) => match self.checker.check_changes_proof( - &request, response.max, response.proof - ) { + &request, ChangesProof { + max_block: response.max, + proof: response.proof, + roots: response.roots.into_iter().collect(), + roots_proof: response.roots_proof, + }) { Ok(response) => { // we do not bother if receiver has been dropped already let _ = sender.send(Ok(response)); @@ -483,6 +487,7 @@ impl Request { id: self.id, first: data.first_block.1.clone(), last: data.last_block.1.clone(), + min: data.tries_roots.1.clone(), max: data.max_block.1.clone(), key: data.key.clone(), }), @@ -509,9 +514,10 @@ pub mod tests { use std::time::Instant; use futures::Future; use parking_lot::RwLock; + use runtime_primitives::traits::NumberFor; use client::{self, error::{ErrorKind as ClientErrorKind, Result as ClientResult}}; use client::light::fetcher::{Fetcher, FetchChecker, RemoteHeaderRequest, - RemoteCallRequest, RemoteReadRequest, RemoteChangesRequest}; + RemoteCallRequest, RemoteReadRequest, RemoteChangesRequest, ChangesProof}; use config::Roles; use message; use network_libp2p::NodeIndex; @@ -557,7 +563,7 @@ pub mod tests { } } - fn check_changes_proof(&self, _: &RemoteChangesRequest
, _: u64, _: Vec>) -> ClientResult> { + fn check_changes_proof(&self, _: &RemoteChangesRequest
, _: ChangesProof
) -> ClientResult, u32)>> { match self.ok { true => Ok(vec![(100, 2)]), false => Err(ClientErrorKind::Backend("Test error".into()).into()), @@ -855,7 +861,7 @@ pub mod tests { first_block: (1, Default::default()), last_block: (100, Default::default()), max_block: (100, Default::default()), - tries_roots: vec![], + tries_roots: (1, Default::default(), vec![]), key: vec![], retry_count: None, }); @@ -868,6 +874,8 @@ pub mod tests { id: 0, max: 1000, proof: vec![vec![2]], + roots: vec![], + roots_proof: vec![], }); thread.join().unwrap(); } diff --git a/core/network/src/protocol.rs b/core/network/src/protocol.rs index af20a6b1bc..932e724bfe 100644 --- a/core/network/src/protocol.rs +++ b/core/network/src/protocol.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use std::collections::{HashMap, HashSet}; +use std::collections::{HashMap, HashSet, BTreeMap}; use std::{mem, cmp}; use std::sync::Arc; use std::time; @@ -33,6 +33,7 @@ use service::{TransactionPool, ExHashT}; use import_queue::ImportQueue; use config::{ProtocolConfig, Roles}; use chain::Client; +use client::light::fetcher::ChangesProof; use on_demand::OnDemandService; use io::SyncIo; use error; @@ -673,20 +674,29 @@ impl, H: ExHashT> Protocol { fn on_remote_changes_request(&self, io: &mut SyncIo, who: NodeIndex, request: message::RemoteChangesRequest) { trace!(target: "sync", "Remote changes proof request {} from {} for key {} ({}..{})", request.id, who, request.key.to_hex(), request.first, request.last); - let (max, proof) = match self.context_data.chain.key_changes_proof(request.first, request.last, request.max, &request.key) { - Ok((max, proof)) => (max, proof), + let proof = match self.context_data.chain.key_changes_proof(request.first, request.last, request.min, request.max, &request.key) { + Ok(proof) => proof, Err(error) => { trace!(target: "sync", "Remote changes proof request {} from {} for key {} ({}..{}) failed with: {}", request.id, who, request.key.to_hex(), request.first, request.last, error); - (Zero::zero(), Default::default()) + ChangesProof:: { + max_block: Zero::zero(), + proof: vec![], + roots: BTreeMap::new(), + roots_proof: vec![], + } }, }; self.send_message(io, who, GenericMessage::RemoteChangesResponse(message::RemoteChangesResponse { - id: request.id, max, proof, + id: request.id, + max: proof.max_block, + proof: proof.proof, + roots: proof.roots.into_iter().collect(), + roots_proof: proof.roots_proof, })); } - fn on_remote_changes_response(&self, io: &mut SyncIo, who: NodeIndex, response: message::RemoteChangesResponse>) { + fn on_remote_changes_response(&self, io: &mut SyncIo, who: NodeIndex, response: message::RemoteChangesResponse, B::Hash>) { trace!(target: "sync", "Remote changes proof response {} from {} (max={})", response.id, who, response.max); self.on_demand.as_ref().map(|s| s.on_remote_changes_response(io, who, response)); diff --git a/core/service/src/components.rs b/core/service/src/components.rs index 0325b75e9e..379e592238 100644 --- a/core/service/src/components.rs +++ b/core/service/src/components.rs @@ -471,7 +471,7 @@ impl Components for LightComponents { }; let db_storage = client_db::light::LightStorage::new(db_settings)?; let light_blockchain = client::light::new_light_blockchain(db_storage); - let fetch_checker = Arc::new(client::light::new_fetch_checker::<_, Blake2Hasher>(executor)); + let fetch_checker = Arc::new(client::light::new_fetch_checker::<_, Blake2Hasher, _, _, _>(light_blockchain.clone(), executor)); let fetcher = Arc::new(network::OnDemand::new(fetch_checker)); let client_backend = client::light::new_light_backend(light_blockchain, fetcher.clone()); let client = client::light::new_light(client_backend, fetcher.clone(), &config.chain_spec)?; diff --git a/core/state-machine/src/lib.rs b/core/state-machine/src/lib.rs index e88b3f370a..0b7f1ccd6d 100644 --- a/core/state-machine/src/lib.rs +++ b/core/state-machine/src/lib.rs @@ -61,6 +61,7 @@ pub use changes_trie::{ key_changes, key_changes_proof, key_changes_proof_check, prune as prune_changes_tries}; pub use overlayed_changes::OverlayedChanges; +pub use proving_backend::create_proof_check_backend_storage; pub use trie_backend_essence::Storage; pub use trie_backend::TrieBackend; @@ -403,7 +404,7 @@ where { let trie_backend = backend.try_into_trie_backend() .ok_or_else(|| Box::new(ExecutionError::UnableToGenerateProof) as Box)?; - let proving_backend = proving_backend::ProvingBackend::new(trie_backend); + let proving_backend = proving_backend::ProvingBackend::new(&trie_backend); let (result, _, _) = execute::, _>( &proving_backend, None, @@ -444,11 +445,24 @@ pub fn prove_read( where B: Backend, H: Hasher, - H::Out: Ord + HeapSizeOf { + let trie_backend = backend.try_into_trie_backend() .ok_or_else(|| Box::new(ExecutionError::UnableToGenerateProof) as Box)?; + prove_read_on_trie_backend(&trie_backend, key) +} + +/// Generate storage read proof on pre-created trie backend. +pub fn prove_read_on_trie_backend( + trie_backend: &TrieBackend, + key: &[u8] +) -> Result<(Option>, Vec>), Box> +where + S: trie_backend_essence::TrieBackendStorage, + H: Hasher, + H::Out: Ord + HeapSizeOf +{ let proving_backend = proving_backend::ProvingBackend::<_, H>::new(trie_backend); let result = proving_backend.storage(key).map_err(|e| Box::new(e) as Box)?; Ok((result, proving_backend.extract_proof())) @@ -462,11 +476,22 @@ pub fn read_proof_check( ) -> Result>, Box> where H: Hasher, + H::Out: Ord + HeapSizeOf +{ + let proving_backend = proving_backend::create_proof_check_backend::(root, proof)?; + read_proof_check_on_proving_backend(&proving_backend, key) +} +/// Check storage read proof on pre-created proving backend. +pub fn read_proof_check_on_proving_backend( + proving_backend: &TrieBackend, H>, + key: &[u8], +) -> Result>, Box> +where + H: Hasher, H::Out: Ord + HeapSizeOf { - let backend = proving_backend::create_proof_check_backend::(root, proof)?; - backend.storage(key).map_err(|e| Box::new(e) as Box) + proving_backend.storage(key).map_err(|e| Box::new(e) as Box) } /// Sets overlayed changes' changes trie configuration. Returns error if configuration diff --git a/core/state-machine/src/proving_backend.rs b/core/state-machine/src/proving_backend.rs index a46fd74b5f..85afc0b3dc 100644 --- a/core/state-machine/src/proving_backend.rs +++ b/core/state-machine/src/proving_backend.rs @@ -84,14 +84,14 @@ impl<'a, S, H> ProvingBackendEssence<'a, S, H> /// Patricia trie-based backend which also tracks all touched storage trie values. /// These can be sent to remote node and used as a proof of execution. -pub struct ProvingBackend, H: Hasher> { - backend: TrieBackend, +pub struct ProvingBackend<'a, S: 'a + TrieBackendStorage, H: 'a + Hasher> { + backend: &'a TrieBackend, proof_recorder: RefCell>, } -impl, H: Hasher> ProvingBackend { +impl<'a, S: 'a + TrieBackendStorage, H: 'a + Hasher> ProvingBackend<'a, S, H> { /// Create new proving backend. - pub fn new(backend: TrieBackend) -> Self { + pub fn new(backend: &'a TrieBackend) -> Self { ProvingBackend { backend, proof_recorder: RefCell::new(Recorder::new()), @@ -108,10 +108,10 @@ impl, H: Hasher> ProvingBackend { } } -impl Backend for ProvingBackend +impl<'a, S, H> Backend for ProvingBackend<'a, S, H> where - S: TrieBackendStorage, - H: Hasher, + S: 'a + TrieBackendStorage, + H: 'a + Hasher, H::Out: Ord + HeapSizeOf, { type Error = String; @@ -174,10 +174,7 @@ where H: Hasher, H::Out: HeapSizeOf, { - let mut db = MemoryDB::default(); // TODO: use new for correctness - for item in proof { - db.insert(&item); - } + let db = create_proof_check_backend_storage(proof); if !db.contains(&root) { return Err(Box::new(ExecutionError::InvalidProof) as Box); @@ -186,6 +183,21 @@ where Ok(TrieBackend::new(db, root)) } +/// Create in-memory storage of proof check backend. +pub fn create_proof_check_backend_storage( + proof: Vec> +) -> MemoryDB +where + H: Hasher, + H::Out: HeapSizeOf, +{ + let mut db = MemoryDB::default(); // TODO: use new for correctness + for item in proof { + db.insert(&item); + } + db +} + #[cfg(test)] mod tests { use backend::{InMemory}; @@ -193,18 +205,20 @@ mod tests { use super::*; use primitives::{Blake2Hasher}; - fn test_proving() -> ProvingBackend, Blake2Hasher> { - ProvingBackend::new(test_trie()) + fn test_proving<'a>(trie_backend: &'a TrieBackend, Blake2Hasher>) -> ProvingBackend<'a, MemoryDB, Blake2Hasher> { + ProvingBackend::new(trie_backend) } #[test] fn proof_is_empty_until_value_is_read() { - assert!(test_proving().extract_proof().is_empty()); + let trie_backend = test_trie(); + assert!(test_proving(&trie_backend).extract_proof().is_empty()); } #[test] fn proof_is_non_empty_after_value_is_read() { - let backend = test_proving(); + let trie_backend = test_trie(); + let backend = test_proving(&trie_backend); assert_eq!(backend.storage(b"key").unwrap(), Some(b"value".to_vec())); assert!(!backend.extract_proof().is_empty()); } @@ -218,7 +232,7 @@ mod tests { #[test] fn passes_throgh_backend_calls() { let trie_backend = test_trie(); - let proving_backend = test_proving(); + let proving_backend = test_proving(&trie_backend); assert_eq!(trie_backend.storage(b"key").unwrap(), proving_backend.storage(b"key").unwrap()); assert_eq!(trie_backend.pairs(), proving_backend.pairs()); @@ -241,7 +255,7 @@ mod tests { assert_eq!(in_memory_root, trie_root); (0..64).for_each(|i| assert_eq!(trie.storage(&[i]).unwrap().unwrap(), vec![i])); - let proving = ProvingBackend::new(trie); + let proving = ProvingBackend::new(&trie); assert_eq!(proving.storage(&[42]).unwrap().unwrap(), vec![42]); let proof = proving.extract_proof(); diff --git a/core/state-machine/src/trie_backend.rs b/core/state-machine/src/trie_backend.rs index 6dcaf3868e..f29608b5d1 100644 --- a/core/state-machine/src/trie_backend.rs +++ b/core/state-machine/src/trie_backend.rs @@ -49,6 +49,11 @@ impl, H: Hasher> TrieBackend where H::Out: HeapSi pub fn root(&self) -> &H::Out { self.essence.root() } + + /// Consumes self and returns underlying storage. + pub fn into_storage(self) -> S { + self.essence.into_storage() + } } impl super::Error for String {} diff --git a/core/state-machine/src/trie_backend_essence.rs b/core/state-machine/src/trie_backend_essence.rs index 56424ae022..2c2281b730 100644 --- a/core/state-machine/src/trie_backend_essence.rs +++ b/core/state-machine/src/trie_backend_essence.rs @@ -56,6 +56,11 @@ impl, H: Hasher> TrieBackendEssence where H::Out: &self.root } + /// Consumes self and returns underlying storage. + pub fn into_storage(self) -> S { + self.storage + } + /// Get the value of storage at given key. pub fn storage(&self, key: &[u8]) -> Result>, String> { let mut read_overlay = MemoryDB::default(); diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 76ec888e142aeab6808077bf9e13aa9ff43b221c..27b4e0e4caac5e61a9afacc0becb3c3efc51cad6 100644 GIT binary patch literal 223059 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%0Dk`x5lqY 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 delta 7282 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 WBNF;U=pgQ#|z37uMR^L!wV zpJt^CB%Y$;8P>%Zj=sa;^5NbYXCOzEm*;>yb%Bo$utcCWAas$qF$MEBBGB{rA(jmW ziow88uw9fthh-I;2QAOBI=Nic;&T|6uvI&Lj!9F=N9S0Z43jY6+Jq9Ghw~L- zz_kso^7zw&mYb%oiJ$;Ph-oE+1~kw^dn}+uST*QPxp33Zf>t4_h`Httw=6qELDaJI zJ~0nPh`*;*Rebg}E7fUzE;Ru!?aqBtm4cfFSC!NRh#QBvg6Lv3?DjQg?m`ou4yL)b z0A@8f#L@6P8(2oD>R*%>XrRb*uoduCpPAJUep4Jh&jwVNOfwcnywp|P^*IrC7PJJ~ zJ4R1lqhW6JaqD2b+AXgq)=f*z0T;jl&K1)yu))FGwV>KyEa_tLJ5DhYd=!Kd5P_6f z9D@j2jADgJdJ`}p<|0E2Xq4mQPqV~|cwQ@nfEOVaC(jGvavtOpMb|vtxX7vpnLHcL zPe4u=In{U=m?KX%OCf>=W-(}{cqyBmzyRociM^a>fMF1aI&i*Tgnff261HeTABm>l zu(oVE9-5ja#5b&@G)$B<4C1|k2ViA8T`)}i@*7sezE%@S=fE0XoiE~Y%uxmLAxwV49-$@uT`}%k2ofKORo_A^m@5ijX0cV~ zLLOKXA3~3G;S(KQ-W`JE==x`|0tVxT1=>X(3QA^ohtPV6GZ}1T=nM3umecb{@_s?D zh@8u;gpZ0P5r3b{)77|QA!HcFsUrOfs~jwcFvwK!%XkJ^ymti@b*6~8%3@Mx;?=4( z@j+A}e4;{Sq3)2k9SxKNknCV^g$>mw$hSVz8k#7+y^KEJD_*_I;3@qP#~iV z_Q=)+t!gX2a`N(`!$rIASt&@4qrL~4J3^7fBgmZk&+j4oZV;7!U_GM4|5n0K zPf@ei`iVV3NN{no*!u&-^y%XE53E?v>2fxf2icM34Fs10#hm0))I-mNg$jY5)8;Ub z$1q1H{cie_;TuoOF3fX$<{nb~0}gOERljRY9^jQITYC*ds-gJg8fz7GM8gA)o?tVp z1Li7Go3ipI{s=(;Lw)0QRzdq%oWIVVCiS%(!BAf}_=!b3UJRNbdi})uB7Vm;nY=1dihvz%vJyen%`T@4Fie#w{SDsVIGmNqg(*x7a|<*Jj9Q5=e`68+uY*`Z zqQ&FyS!Fuoo{a7mRexv2@oXV!J#e!XOp{(0-G65TBXx{Rh(b_7)40S4?MGD#SA~b=aw|Y z!hv*L#r1?Z{s0^_b~Ya{QR;I|tzNA`VM%Dp&;Q;KEB};2Q^PPGDQ^DB+QIy&-d}7y zR$EBb;bPfURxB7Ovd|w0&SApw5ZzcqxF16MyFt`>XwLaT4_R_#4SHqnK8q{l35|nz zY)-F`psr%mLsYGi_yj;OrvB|ABxx8^mw&`+##1l&sRR0>uk3}sbkbi=&xT_1BQ`w5 zL>gfl)OU+`^oR{3-7oI3lw%IBf>JXN`((qTv`8P8vf=Em5MPJyT zPtfWt{Dv(gUHeN*@*2l zfaDvN41_`v{YK(TJ1>SV`OeP!;W$up2X7zMQgI|8AUx~3m)2+x3Zb_OsY2~1ZTRkGC@~-(M4hsoL(PicZ;p*En6!3_{CI}}5%F0L)* z5y9sDuu{Ew&LNJkW>KOA=b;e8yKz1Wdb7_tf1!0BH-tH&0<^|BVf`5Neq%N@9&>xz zn&3V(meJrA_yXgG70TD;k|KlOmp8bYWAz8ENEFz+^RMZBQPf<(e z>Jyh_@=_VAL7Ge*h36ii&6(%H(3Fy=&o&X0k*dzgIFTeW5=f^Iw?{{1RepItFRG#o zj`o@6dkU;rze2odvL#*dzbhH>s3i8m2zv@nv=882O6Gd=)+QGyDu9F%N!-HUAQ!pe}zi7FUl8dpNnfnc^tI-ehNMWwOb#?E2>+YL&KzI z5VXCxC=<@RLG^$s4`WI-KR{9x>co<8{xs<*ehuex2Lxo^ExH%uO`DpE47w~1dw^Ky zAW#rBoZyiH)Hw6DIAV$MT07DHz9t+t4xqzroHeC>V;hc^T`9&rp+|@fMA{LkhUe~j zQ7wWe*e^ga62T?HB)_ySf_o_NMg-7~hb|)d?{s`8DoXa)%Td79HgP11j|VEAD9-!9 zx4Jl|{ghHA_!~&Erv!f@3gSy4fAcH@SCok6t7-pXU$pF2=nLb;pMSDiqFoG^`v_?I zGyZLyuVQ!&A2<$~#PR@?S0|Rs`mS4rN~ zC$&};StWTp``z2Z;T{x34wPs^C6y-?Ox@1=OCUH6(cq@t1 z$-W|$c$?C6lAe$u>9{)oDLrO{c|h>xN<1DZ-mSz*x;|Qo(;ia2%6xD!U@jM-{yfCa z%Di%nY>LxeRPIJc<)>$QGA~Q@PfnJjI5nBm!NAXwd9?k)UhzXR1})S`c{xgup|(}{ z4B+!z6+RcvkgEKd{7luQs=R#sS~?L1y{#-;9uEugdDPew<*V^@%g#z!OuTc|cr^EI z*U0S@DW+=>)5}-qL-2CX!s@&cp7uFYohQNPtik(5uGP%#M|r>>FHgY=1e_Jb^oce2 zM*F$zBB>^)V|$Bg@)6V`-;FYrYw@Q3`8J^zPqu&mo7h;3S1UT@D_U_~ZW}GQVQ@0% ziO-X?a(n?Ia8=0MS{x@F=qQxU^XNCxDCJ+I*_y)J!HmgSn}34SeMf5ZB*!$EJUyt5 z0WwuouEVF$WZqhb*AJIdRRfb&h$clW?ek+o>UDXA_|r6tHBXWmg-@DsZYSCKlBEJ& zfYP}x9}1hNeRVO=7mHhUxwObLOyf!6tS4EhMMEB;g_3=gXL~kK2QJ99Kz!1OmqpcXHsalb z*W7GGk6#z^*ecuJ5uH4IqIOpt_wXvgAKYw2S0o~)oNcWLZOk(eGrKWj_E=)P6cZz^ zH^$(-E7~`~guN?@Ji)7ne0j4G9cPj0KfNhBKfz}s>MBK@vqT-cDathEnTT4`6j3>r zywBehKQ`sv5Y@ODqHbBDuH6(Ct zry*u^3qF+|tiwSQ!}nm_CTuN}4fRLl;?%>QmY`QHMU$4i_rHU@-jYA9t?)K&#cvoG z?NvMR1KJAlTPHqU8|=;OjNBkKZ+MEoto0JfU3l`p%XM8BAa=0`>B=hP1x>GC<`SKUQtPZv?vHUH_; zTRfGg+O^vv;~Cx}9yeyw;HkcyokLzAr~5@=UZn`n{3pFc=~vt`Zu|7vN6l{zEWGONgI` zV1l?r@n`vS2%PmSU31&q zbmbcE8zCc5yJw|CTJV9SG#ZKU(vn z*jR7dDIfqyyY>~{6AqioQ+=uDKmvfV5mJwv%HKv@+-qRX>%Gcxz=FOL#j#g;0($4y zS9uw2nTVc-!F5rrnufJ@nYcU+)NHzFFdc((x_D+fe?p}?IUVfNMZstA4k{>P22Y4x z4kE{fByb9o&n zHS^h7$Y#2jHVe(1AwHPJTgW1NsUjsV8qDS?h0S}UauEkpQ`Zb0E#98Z-$I_v=Afr% zh;?)LNEg+)1u0AjSaU5C<>x}8m@a0_<@f%E|JUaMv(rV9`LY7F=cBVPh{^MLIe!~J zn-8?i5I5)ZR)0%gc^QxP_FsU0LnX)~t}o<8km19HGQ)&LvU3J6LWj%{I~MV$wCP@# z03PyW#W50AE(TLOL-bj~2jz*QQF3Mpr{gk1-r#HHm9f}NYZ*LL+ywXLDm5^2l$TKGbi%LG-H^H_|q4$I{T z+pwJPLX`%u09KZHH?P3pLgaTV!BC^3tFRDF7YA1XxywYtTl_o%AHRj!Is>L7^yGW|%?#LhN~ZSzqw7jCPaMhlPUSG4a>L;+TwK0)?7$`U zG6H-dxf~q+aG}4?%T_hLOxmIzBeOxA%teJ2ocRhpcUxT1_kA8!9O)o@``~Hk)Xb`2c#PGuW_MT@(YLA7VIqO ze#!8n$9594P2lb!9z1$r3mhsYe#jG>#>yO^0l=)9fQ=%}W0%jvNv%L`n0(ohZVJHL zVG>9_n&k@!JS}c~$WtA&MW%d2<-mT9&C_hOP<6t63+BRAM-@a zv2q_n?Q%}6{g}&FkMDkr`CL`FcklyP^{?)L6tPXj?c}{_HHT{FErcfQ;&j5U{VtwX zDtGV2G|{r`B;K)mrvHd$M2YwJ^Eh#T7Z38~kt}NN=FiyY9umuU^U4$mJw=$fvYU4c z`vJ=3yqUlXr2QVVa#9k$yRV1J2D`y^T??SmF$y;!=BH;df`j*{d* zq=IPzx>Alg{C5nz*^Wi~c@>mXbw3|N8cSd)UVOfvOVdazssaySHO8Hp2T<1|BI^K@ z4%of_5ne;>-izpiJd$5NAp7g)0bWM*J;>=T+#v_~VJJGPeZm`ts8)jr*+BA3|1&5_pwGH_gqId|kMIy*x|P1b z8mN1z&$;Cu{$-z|JKhpIKIe^n>V-(md(<=<4%7>wM|rM#A^bMTAnto>dmFOVMRBf+ zo*>TM=1)-}D<{AVy2BkvrB%hcJA72MrH(#jwln~insD!|q5AV0F^G84SdaCV8Lm%q zN^jI~y_NUwD1C`ttLlAijJ~X>48Ac(FCltQ(aU>BOxGg|MOKyOhw-o#DM8OIJ8@_P zXRuvWy({PGy9$eAzo0X59orwjaCz%>gL_b$uEQLHwXS)=77kBf*wO!BE8e`vW9^S8 zi=FqN6-P4mE3Xl$V|l_hQC|r}qY`xI7(qYzD^%h8CyVjFN-X63%E!@h-s62@#kk)f z5#a>?Z;&)DinhO#%-tkNYTui7tQeG%8^C zA5uM3<^j^L6MY_l&BYzM4|somkqj1#iYhh1dK9ETs$I^4a?AYA-H#yK8ng%36N_FC z(WxkH;X~-LE-rcmA<_`fKZ5QSdkJqnl5H&Xn2#uCfQCyYyG-mm>$+adevETww>Hsq(iIit@;CxWw`XT;|(s) zV5i;Wn>D>PWpMl#nWg>gFXE*&_V5(*jJ|Ibr}aEgmVEa=vIK`e*)P70H^TB?cpb9g za|=(vyhD2Fk2Gzx7~Drsu-|`M%UjFdvEG&fb(i0a3X_2@P z9RD!`>6}5Z=ka65$hc6?@9&EB{q&ST4$T_y?DA|`CvGB_${ag)nIsp3yx``8=a4}V zA}Lp?WCrL5b{8G>3B~P)!^O9K^+;^{Jm`zJsDE8YHECS#R|%f45@ukYO3WAQ0Itmu zH~Q&SivGRWIU>2g9#tr}Fz=K7^)Ku&mvE=)DcVTUJx%Y3T_?%Vtd^=uQ8K{TYP>>& z9=ebD{rZH7I{`*#V=9GU{LlCFD&^g@ReMZlbvJpn#UROu(dU=!)l?un()-?a?I#U) zM~EGo+dI}}jN(nz^V$AqM*seT@D#QGX+CU?RWA1hQs0ZLNfE|W@mg^sDepOPx`8{n zgb^bWbfX3lyB@lMc_BX4jXBV3bTtfmZ}hTZ(0ijt3K?C!jgIoSovpx0(KyGXa>?lo z>iO7wCRHARl6RJvG3Z{K=Qb?VkibnZ>{^oig(M>BIHZQPV(4*m=VJ3i z$!oa5Wir~_%0qxGEP+^elGo--=!Jk1V)_((`q#2=torXN9i;i}qtQdKkN6~6`^Q;1j5oZza zlfT>WTAGowo11 z)CN30&&R|R^F%@k2Z{>zh1LQ>S)_@wTj#~x3kn;uu5uXzKj_DKVbS{{gd9KObLqU8 zdl3q@t>WB8*gtF+6|$kp|5)_R=JI-qRoT23#?j+!F7F+Lx270!i5In>T_`dx@v8Rs zwl2B^^Wuw_xO}@+7W&sE-X#&&J~%Lp-1f%UN^gvJwBT=Svv{zcU=F+{Uibz?;O;`P z`5SZ*b^srK!{tMmDyw)gD2KPE>mat~fWz4#a&mYKb=u>c{D3%HBwvR>OxZ=3d13Ts zk;}Z%|K0nFweDgt`<}a)@iWe+;&F_HFa^r`nLEX%yC#0_-sP4TGP?ZCE78!I`ZJUT zesH<#3CLtodjZ4Yr(gKfl`siyIJ#<|2z6)hMEdId{zTZPN~GnVU}3_p=?(2GKNR0` zJzR_k!$q<~HGL$FXn8?J1Fn}A5q7S+kvyLk31d+v12Va8#BI~1KEAs6!cQJzNwNd%?9F;d4X6}v`){{kBT`x|x9<1lB zb%OURT|Y&tj@5peOah#1=bAeBNvc*zrrbJivx-C9QWr`V}& z5Tcjx)2@CY`fzQB_gIL&oSKvF(udkV*etSL;GJObTUf7RKeSmiFRasbqF!7gJlu|F zF76c7D`OtJ!}QwLrpduDJ51k;+P4qatML!0b&;ZVVZE&QAY3n0)Szi9uiYePvE75= z@_9H40oopg%aO9TnBImm4UW*O10GY`3jg(H(K*8GjF%&Trg~y?gkI5(;G77Z?w(v0 zWOiBQNL}`$?C(jDdM$pJ-h~JgbKB@;eZ7<{@SH7!v4b8Kc=9e{LtReKu`MDcO0UOv zZb3k}*)uDmbZMeVnR)j`0cF}QZ*mDeSbMs_4l1}~{!6#H^L46MMC+G0*!8icbSUd~ ziJS!eN9`T&k(D~qAB6jo-qJi5Y;o~HtHj=xx?418sVDe?FH!Ic zGk8`@y)?4=sHNT&PEad78_xAs`aO)MZ(8fcLnaf}=^a!oQ!qNz+hA5M*diLV(d*@Z zG*|Pi-y&Xbqss#cJKE@z?eI5ftJ5pUQ^~j6FFkhC z;|_Q!~~qPRgPx19=53crmG(^c?wzp;Be|l@y8kHJTs^N6LDa&9u?4@$pfq`!X>uxij z){!Es&2ucwY!;U` z(1`X%y|0(FTOr~_zYp|@))2Q~oAeAE9DQXIB{|?b><0yAytwwE9zx2-7q;so#GuXk zIe>Y#0E_}Bexzp;$&KBqS1IO#VPb&it5f@IaREW;q?feQi9o<4iDO%JFTX)Vy_o3m z7uJAnV)r(^Kdjo_UOmjU?X*lZEN`NbUVXF5-JskJ&mYG{@9m(|KV^DRp%!!-*@2Js z?iww?s07X6?mPAJw7kQc;=pq0&DyC?)a*M?h(>#LvJmtYd}g;^QLUnVx9UmquwBX? zxq=Sdqu1f%=A1F{7h59k}QiuO8)#SQE6YX?E6QJZ}SQD!x9=b-)+$`mN`b#dwweFV=o7dKh% z?vr|;L^ST~Iw4;86x9XVTz^QkUHDX&uV~12bv&eZ_QjPG#}4UaZg=63F5kMYcUbRF zWvo1`9|3>#>}UG>7_Cu9^zxBwPEg%(B$14jag-ytdrVqeBYGDY zBm8(oPbJ&5c1QIan2L43(C4|9$acdlhrtxv^TtV${e}KiaXE`T%jEd+MA0!dXeeL+ z{mN<4=1aXEF0cFYS3TDL)d>-L53Jst1A5U=lpO$0cDvFffBU6A$_f!p2%G*D7@POK ziN|mV4^^mfTpw#+wOPD>9KDQaseOI;vra~%!6(2_t~y5(u9z5f0_TYVAO(a=C-stI z7oxRq7M;W*2<|)Oq{QaXlX@>J*hnnX9Zu;{P~Q$YrKea1W@*vrobD7EC(Je0RQsNi z1qYtiZ=r4vPV19WO@0u~I!x;y&cHSeZUBw924vgu_AsQg;D$ksFnnG%Ev4li2HB?n zcV;k`DG?XX=p~x_34d+`7M}bUjOSU4tbi)HXmD09@r3dLJkhsaS%UsurefJyOvq2q zKX&GM7ZH^Li8Zh28V$tjIVI))({S=6T89l)j+LM+4OS zj}aeSfJ*6vxOM^eb-!~~48Eu@moG$N2j7z=s$@gUbxD-V)`_;a%GML%JeRHG5iIYj zY(2tJXtmu_3^Qi;Ik7KCk0Ea;yeH3jf5_1nvU-xUz|}*3&I0F}$pfvgxrrGD)ht+u z#P)PMSYmEqv}>@~{=Gg1OkSlQKqE1fHeAzxgm=-8AW85pzAkybz1N`%-7JEB((9C! zOi%fOIG}R591vwZ>?b{<6;?!(*TG3iSv^@--RB|M!h?S@=I_1kXNZU&`tm2em3`+H zQTztxQJ(oV<%XUTY#u31!N~;A_0!_B8+s*0QDblDr3+)qGbpPpliuGw18!o$0DC(7 zrkt4vZt4rLjC8xDp9Ln8Z|f17VlI7?OFVVQWG-jk(d&40oYl&6-F)7WulPUTX0As` zU_P$Q3BgLg3%kSrwA#dojd%6(d>)oo=&o`XtB{}dCa&*K?jw>~5o8g2ftyc?en0CG zv4>?Soz%79HTP4V8T>CK#z)(teu1R6`;_SXi(bb7w+?dg{wcBO7d^>Mq!;4}ml}ZD zzz7WA4$op~X1m=%H>Y0t1&GDE2g)nEtoc2;?v1^t?+#Vg&Y)HpHeZOwzv{0QK&*)r zd*got!+?W3K>>k{aj^;&lPHaOVS=?o4Ei0pL(8=CciDZXem7U48u#@cZD->C86YPf z$SFc;3u7kBTXu6%Q80oE3>De;A#Z|&`xe9}{?OBMN8+A8^x4ql_ViX578azx08KjDDz} z@rFLZQt~izZZW(WE5oyJVFs>zxH*uO61$r*=#{)*HDgC|`8Y55xCfG5TiS~4)eecC zty#R|y+8Jems;bbtQYt|c_n5zvg2s$s4+pyBa+jVWjz9JPyW@o6C9t~tgMEkau zOIaokXVGGITbQj_%TMaSq$=e~Tik;r54-E0@^MV8Y{dqM+3i>_6o0cF+u`^GudK9B zL-Bh=Mj9?-_@Wc5XL4X2Sehg2!9KCF1FKa7Vhzl2lL9@z{(+vWG41H{B5px+G?Flw9+B9a$m?mNwYt@c~lX)&NGmXVk?dq2amn1|UfRkI{P2XKot`bz$M$fQ@);CikebRCX zpR3Lgsab?Y%|IIqURUTfLMqP>Z2de4IbLo(aa=Qi<5O4?3I!E~z%Cv=!)D3$%^oP5 zzk8s0>=mq51+aH*2eB^DSF9eyTKYxcUk9;+K-`YOY_UxG)DRpd-6k@JNYuPJgk|SL zjU3|D#iM8GLLm`06nMWR#tubiToTKMvXMOJuYF`P8a9ljhSQZAxM7P7SB$t&A|n?t zUSA)^=t;e^!&oQZ$O;pUhU0!SwH#tjRu944!73qXqze{^p5ZJkRPLL|)ys1Gl$^nZ z(^=gD74Lo0%^~qpx=AC_F{PqK=m<6&&0aBrVRv6F8i{eTS{xe5Zle|6QMldgJ@55V zYyDRz&Q1yMve?a%rr znwr)l#<3qHR-YcvQb0K7kC%D;Jf3|getxLeCE8s1kxt6(&W}tcY~v%{q5&`ZST7g8 zk#3QoYZwgE@*nTn!1BN2V?B{pkryA!^eZ3druQtYYxpmiTiC}a9R@`>UEvP(IOgv} zH-~O~$HK+Nlh`0wc*Bqn;mGNZJ*7Yq=`<3=V9lsn;Kq`Fmn7fD(v!e1_LLe?rTiNx z@_1;Tyo-u5*Ga8|{Ml+)fA=$sZC8KJIC~o*SSp2QVu8vELyrSFES{Q#6b4f9UWFmJzQ+yX|tPIW-+VH~37BR1+k<7mZhXC>Dwy8DfcXiKW+ep{<-nc{~ zPSdW6N#&4eU^%0hc7?u6*T1{S0R#HX%q&~r+CR0*qsBZpdO+psHLBE3sg;^ib3jV% z{?$@aQ&Uq0R3A{KYV~KT^sn8&W@`1+wA7llQ>uA$${D&==((}u`;AT?KKNPht@1`k zEwu8W^kHe0{h{qD8YBM}D!xoIj#vI)3p`fI@M^)iSyxU?8!MJ48_WLZj7C&3%DY72 zrACbRsK;34%$uioN;4xXe>sz$F`~uuEsP@GX)TP8H5^7VfB$0}1lkalFgiWmJ*?mG z@$SLHpBp`D%z)8@(}zEo4{-wMtSa{QFERrMx}gZ zCk-;5XL-ZK&S6H)d_l%=Q0a=pjm|V|GQ4w_8kMyFxyE;v8H4_PjWd@U<;45TjY0XU zQgMYbM7*`aD9RcSO&{>AII+U`RJ^y+m?Ju_GKPt-R$-R^zRI}ojd|N}X#Baf0qMh2 zMU~aYv*M%G#wwBaj!{RmiS+SC8S&#gMrzS~Bah~lcg?$4ki?la$SZTWu~5XN8_oZH z)#s!et@73SZn`naJ8p#0%dYnuF=ABu*fj6aQO0SfX7jFi-iXdW-%gA(R(Mgx*7m3; z(uSoE7}amU_*C^VAbrg60fUE%vo9KpyiKPWX&R1Z<^KNHDLJCm|1gfceP5?{}o@W46adgYn2I8SG+9bM1rS%(;mg*jx zK00kwMbkH`0JIAtGv1YpjgbzqYJyS0yLf_8Q{$cM)M?yrs5mmwNDIPuZtmX7lZ>jk zOg7zU{qOtc*ek|T$Mb{I#n7onQeZtZ?|#Dvq=_o?jBv4Js^N(o+i&QYw1VpQ`&47N zE4O@9N+wKu)yUx{{>8BYMltc#0Ha2m=3_>UaSuyN9Xz@p5x6F1r*%mmJ$U%QCh6%z z)1P^!L)xgp>8Vr&8p-X(4C|jZ$^N&!@6*&#Wlc`36vp-4_V^fVP;ce4X#|%wt(r@Tc3_oO>M!g}{q#8*gex8v~(G2Z3 zw9gxM{dOr3l>T;fBIZfg1p~G2Ae?U3}ql;P!-n8vcseY&C6vA|M)`8$N(OPO}0L z4wo&~65hpOhP#|D+X(UXTBAwfY2#b~@c#^vw9Y8;w_um(zRoCHnp*cH{^IdhLwDH< z!~HbEWh)BzS36n)H&eU=(2P$F7uaE&?R&V?D5@X*&}JE)Rmf$dVf-mv%C1pYvyrjD z9A$G2;b@%g5!_%)e1b22NTACWi16Vkp5OulTr%%&2uFDtwn~QC*fszN0l?F6ffrkE zxYXu+32apXPX)UWUjc4ixYWJ@sBt)4Rp1yDPzL@t;UbCcZMf8sy!j!AhQ16HiuVH$ zII?YmOBm^b+E4+TyuYqDLbbwo5Z(&@M!0g002_J3HyA%SGmasguvZ0tQTS8-s`z$W z{MGSojjsWJq$R#4zTNm!^-&GHgHb^Ze+vyxfU7#RHR=FlXCTOCbJjDlN8g#R`oGDa z13xv)`fCrUL+`sFln*@$uKhcLpdaw)EiCH;TQSM=L#6wOdsQPP5ncna<9ggAxV zweZJT{GY+!0sbglcU1{)bGSX=z6G}{+&|zZ!KGiZ@&2Zfe^+sr-4-MYS4BOhO*e-* zg)7|E2RzXUPl2Wz;jD{}f<}lG86gY-&E(%$ELqhvqAEf(151p=EX(bBM;gXtqucQ53{tUAFFU z6`YD!-KOA_J2l1yLtvZjFx>iZ75r216Jd74C4%b<_xJxdXq^WUsvCNv;M(v%fj{bo zZ1|~LcH^GXK5+lUAE9<7!l@t?ZU-=h=ZAOs!WCSE^n-nPWunVg3JGMti(X!=$toy+ z9r~i|764s@0YyutJI*Cnl16YT{1fC!#Hmq&S$7p)9DPpVcS@OXbC8}05&gykR(+Fy z;CK+R!jg!U8!_8Iw2-y@y$pC-=hg48aaguZ@Norz&jGkvBPfXpe*Cf#mRJDv(tOZe zJ7V&fnNKSKd@aCfWmZ2qC`|A<0Jn~G0{Ix=RxZk{3z5N8OXe!G&j4+u*4EYTB;phj z))tU9Ctt<M53ZrxKfvmOo6>3+N z_0w~Oltu{ahAbDuRb>3t`hK{gAiq@e?@$&kt@JyGZy=ObTw5+l-j6`FCay+iH00IK zT*7FnEw^-`zbUFon*mPDp!!+BR~G<&C|~aW{wlqp0PxcQSKUt~To#3Q84;yFDgg9H zfLh1D30iJf0ieGERNSnHPM>*FH6BH?POnCU;efO!+>3r@)R@*76F`OFZDCQPk=ibZU9_0x+9bP{F9Ya1(*$p%rc6`!~jI`ffX0$ZQB## zTYzLF0K}jq`1Q;OV$D?%)rx>uy*D}^{7m>2oMNPF0-gpk{gztd$$xaQD`__0v6PeA-|mR=A=~RQLyT(xd2!Flexl= zV1lv2lb?Q)`7l3iS(Xl=AS=Ae-%@=jfh?+o#VA+}f9D%{3l4%`4gaVrrabZ%;GaSv zzr!U;K)(dUsVQeIoZ?33%d=t?s4i52#-Y3gPOt!vMy5m=YQk+mIpH@8-)h+J`XFyw zW=Ia30XqQ*B-7-6L`;+w)%@k;)D z3-PTHPV!C$5zM^+B*~}|{-}?XAau_co|Z4XTs3oyC;7sa(2_qN6`nsI6^?u|!JHxGfN`q$Aa^ zK?oJIf-*Y7eFFZ@a2La^U@lSET|lHF+$zK42vh2^&+x4Z z{}SKS(iw0Y!lmDBk^Ub>jehtMr5LO;ex++zcu}O)j;^QVShLOR@_0HZ;fl zEQC=XDk_ja{1M=wo3}OUVius{mm-WtW~0U?^~r?W0)D7CGE5zZ#|%(9l4$6bNuI6) zw>sPul&bo6Ey8H9sljAjg+4-@>UZl3qF{F+UX3GU0cp(vRQ`QAr8xQ>0X!i>rMEKK z&ByzDte~<^A}wKArByVZ@>M-V-@df*^qmX*0}`v%jlyMNvYzD%D(f!5)q+OgrfBiu zRfsBY`KPa{$?yML=Gqf^k@jEe5(;o@UBcm4>Y#D71eiZnnb>^b3Gf$}Ev=Hjr410( z*q3}EzG)p%zt!*;5>@t~#qa#R#qT3lO>auE9sUa9_(dp@3V^;sc>zjQQReL{=mz3S z`o4!+()xmIfld9SkiyKKkSdSS7I2ky1i-BW(jt;hC;&VFV@?rTfA0IX7-6M%{k_$t zk+~H|)tibv*+xV`2xPgiK3GGYT6LA%N-wP~hRnF58 zZ$+*(?Lah7DN~mE(n1W+iS^BPpGeq1`_*Eq(F#h`x zg{p~hDqs9j5%(43CF`!sjeJ=~ukjb5)qMe5TuMnJSi6{68 zYrxW}1VpXrXWgag^n$;zAZ&=JrKiSmZPl{_WB3o7^=DnR;1MQ6Hav@}uN0xqHH zF7T#W*#lv!_cpBc^E3d<&49k?*AK92F+T`c)m;>)3ZrlO4YK5$aSFhy3n(%_@NfVt z^!+#3=l=&--_DPT|BL^j#)=dwfuz$Q6YXjiE7U8$a@FKi9K|$Lj=1Q$_@f4!90e51 z`6I5iHd%_IZG3DufN5~{MK}rTE8+TB2{};_WNQUjE0yd5ziuv`72osshC*~NL@Qp6 zl3QqSJ%B4P<&FTjbuIC&wYRbI6af7qpw(oe%+0#=+gUJl2B6hk%~zGq1!SIoi&*Z* z$we@=0BE)Its0_s@2H@qDA?pcAlX>bQXKvEAYKhT@*je~i0HTry31atjKB=avsF8j zuU!t8`u2WXm$YX&1DEoi2lolMec)DuTN5tP)Cjml#J@(KN_v9F~V%5oh1O86i@{XT{bfNIk&eA77R$b)vse8fG& z7L9dg&;OJ9k4OPOYec_#* zufwHo7}CvTO-PIM1;S_$(xkeGZ|bs&_`B}=rt}Z+O>=>GDo3|ACJ+s@0Axg{rCOK4 zHxWFV0rl}snG#Ff*7r>mybr!gep#9QRyk3LY(?mBZEfAv8R1nAGj^xSB5PvpI;fa z^o5_uT4stbLeVt^sI)_XvANK4wThA7!nC;x5QSp^uIiQ#JhA}rvH(|-gCAV3Ed@Z= z&6l~w1|YEj@TU1Px2On`3jps9a4UN{6n>vRB?aJWe5o<`&nkj~>M{nIsl}ZdYN<4=+^alK;XucIK*SCPG??$v5XjB=0OEX3kko%_qr}3p)ZdC*x zw`4W0fVAfkPZOY^wAT=)gz8MQnq9`(zFzoZ1u*kl2xXlFljyMKRQQ^A)3w+X_l!fgxpN*{BBbPQZt z48MX))3Z6;N^s-gmVx_2Z<7^x87?tWm*CQXY7Ex{*ABN4Nei#{GVK9xz$I2}3|vx0 zbcajqYhk!Vs?MU$#9OR@OM5o-Yl_OMK|N@Xe*#k6;(UGzdlK+!{;oxQ?w$ih8hibm zl0saXrGR9_t8jvEVezY(KML@wUpiRg34Rd#YL!v$QY?ii$X) zIN*#k8l@T)MPn4Fh|ws{IHN|zG0x(UNHiwK5tA5a#W6&UzTdacJyq3U{%^gt-dm5w zxwXH&_t|Hkea3t4t!j5nwFk;Nb-I&JAJ#$8K4Si6zq71a?9qq3?K5T z@w`15{gC>(kY0@uMdo`xXYx6Xe7cj;zv2S??db&c^hU-2J~gagqrYhP9bRW9N%%_Q1CIzzGKZs=zF?k^NTY3 zn;HLkJLhh?S-*-;?b7|jrTxKrJnqls{O5ltN0GLB8@2rtDC&?#JzW!wzlqtHk0`j0 zZLMz};iA3P@TUra^7GUmQ1|D(8>x@}8TEI5*7{vKPx~3|Ptf+QRxoboX+NX=@1NDS z4alsYQBNGz(Rc;8%FferKcn3psb(Z!Z_}1f{40Kvap2G7ZHY_rd5iZh7G7s2ID)*Y zu8srp1#K<2itzu+{1lmePxJ*%CGY=eoL*0F+Ln9$Pxah@jnw~fygSajlTY0c9>nJk ze2(L@mCt`4=U%vYjZY2UC-~Ibd;T%*H3mOD-3#6oesrwsvIp>~JLCKL+=9-^X{wZNkwV3pgCC-N7?_YF24p;2iaKjsPp)b9@fu)APRt z%Q0u4LA;6rG=`4kQ`?n*)j-SGsuSGq!Qa0u0FNr-`x_u-*`7RpnR<$d7Eb_Q7e!dQ z`Zo=I>;IZWen7#mr4mkfX44id{_fWzGWV4t|H@A)Ow4|Qe+BuLPTXN>E6#TlI$B|D z67w0A=LH15CZ4}LJhi<)Qt3pYI%;Vr`5rkLp5NkrKn02`6g*p~5Ltqq(T!)KT(I#( zT)mNU@fU*{kjZQRZ)B0KpHu&gaSfMsd}_P%0H2%j>E+jg>+_hN;06A~$$uV<;s6x= zoceRM{=De!9M$3*FW=w9_CfmjyE>c5eooyV^~;3*_2j|o=5Fu(bL#)6@3`$qRzKku z=XHkJG9%Xt<~^MZ_WQKrSuoCP-6pTR5M{Ne&%6Yz5bK|RWF-3M3SRMlDEJO!Ey~Eh zj(N9n%;IOapFG#GlXcAC^zFgyWsiRub(yiTP4D}^DARYb;m`kXlYWGMgg)z$-QCXDjQV5kN4)BP6B$x zf_cz>AM`MF^bSeuy5@v=#uY^u~8~pHE3CN=jUsD7z3J zegn39H5l1xDBK1^D{kV-MD|Z8+yjOkB={|&C66yp2j$nJ@PR6OP-*sTCb4bFuL`1^J*5cqhexwV7UQb2>~IQ3KW7=z4`s@F zJBH!ZMK;BiT|%bqF-ke+!DSF_V6A7>2fAsnbUuu0arkl?ujhd@;NPOL$^a|*dZs62 z17!BgsC)|f28$k$%-jWkir$aQ4oq6>+=v-jto~Ptwdi~ltKToN7F{aZwx#-C>>=w;(+g%f?2k4u8G-H6%d+lIj{WXTRn+8|g*HAHI= z$d(@jjiTd0FivzFviZ<{5Il!1g*hGsx!|ubkc(k4{SaIn)Aiuun0oAEx{S<4F|EM) z;*fgmL%IyP`g}YHa)D>~nEr^uMuT8$SjB@NkNqH6smjKK;8~Q52Z6_a5ah890^*-% z#Dl=&;z95tMim4NLk)sE!5s!cc3fy*)Y*;!uthI={#%th;KgG&mVBFxRX?`Gf)~Re zxf!D5=3J_CBiV{=0~Lmyn)nDhwFz_@z%|in7}t^@^=H5Toa^^hWU!=1~p;&c+l$(1+@}I$&`3eGG{aLSe!^QC8wT)**#fz zHXl{oXH(L7ko%K0Y^b{k(h5kXmqQL@2~9@nCq2o2`w?hd8HJ?a%C#_0mM&jU3ez`$ z&WlkZeQOSQbqq_=_kwP8C`c(^zmzg}WYykktXk!aC?QDQMO_+_>1i;&SG9ul zg|LsK|KRK-hUOt!-m2?oaw~H|SK2@Mi!iKzm^S+lDS22(_gO$j$~lDAJKq+=^aW(R zOk^@hv9Tc@>1lkNgJKxe@dQ0Ms;9^x^%?Z=WFc5VA)3iTGzVMU9?7Wu$in%EJgiPX zi0um)pvi{xO;~DRdPz1G{O%K^>KPqTvf+6Ydu@v}XjlR{P-N0As>uteTYWv7gX2j_ zeuf)`#v0PyTApdVNn0jU=S(wcfN|Ad|95n&m|f6zb&kxg4AZN z_!|(N>{vmP3_)#1H3)0>LC(iHJ@gSI_oRKgp1~!NNbkdkYYl6*2XPtY)Grncxw^D~%o=oSW(Y+Vb7 zkImA`b+ZGQ0x+z_i-*WK>$+IF+*x{V6HA|3|I54e_5ZfzXNVwq5d~Ds$!8##wJzf$ z=yat(r<=GYI^E8-q|^Oelbs&snhKKLwg70qSKkbEB&iF3MyP)7VB&u#{i4f#u8*df zY0P*H1jZ})2s%{@)X(e{1S?3HaU~4VPaCDs`3h!XAL&F|>W{)9e4C|}>rV~@DM|Q~ z7&lKmKrd8AAUWpp36O&F{s$2A88!JkQ)^(B?>F+Ht=*NI-A zOkqCtvPCzo;kCp~7TZ%%Ba?L+Tqn4h!PS2{`7S2$H}}H&tGZGD25!RBW!bR41>&~? zy8=F9?3^+X@L(paUj|{IvMj7`9Rwip=TF1>dqfb<^bHKN)Rhbj8egt-Ex2N2(#H7( z*2(K{LNCG8kbWyyMzxb#%ba`nQGVa<9G@&sg~@hQ>X&e-qXy+mQc^tup;J8->IG6o z8L?uVVl$cLQeVSmI;pbChHdgtawm_}MLnSEIH<=+{N*b4|H-E$_yd=!SGbfnLR^U; zNY0|kTuEbLo=b{;T^`o|2I5_T46*oCAHFk7ie_cy!;yWt9HWc%wUeOUBz1n!JbVYT z{vTY*`@tK)#8O|MgEY9ORC;_>9t4NW(#-*vJGrC|1ePb$_d)N<%AXAC-)jzn#um0< zx6%Ob_h!Y!gKY1Tu>M3^;wDnIKX*>fhgM`~Nd9pY*58J#obI0eB2ppPWdFUlE8sy2 zc+U#puLQ?aOjLgbWt~H+=Ffc9AJfK5PNeEr0cTL~pGeh%nR@T;&)dAD>SavI|A81y z_o?oVOZ61D2dVlWRM5Hf7$%NW&bg&wu6`8S*DLE~Y5DZ1>Z~uw#Qo^SQq`G1?-#q2 znG~P+h8p~x zu;jL*Jrb+Ju<8%AM0fm1yc7nT|B^DQ@MPctJclJEzD~F{snrc&5LOK${%WJL8KG6G zYPM%w9#$>D)O=Febz#u+9t0ng%GQNdqrKo5VsSH;lDT_zeTYlrV_ZH}y^cwhEZ@93 zc(a5^yugJ>=uU4Qa~_e{5zdtnE+ws0_3<5&~((ZG#6+gQPD1tKT?%> zEscbKB_k5qNm*t|bWjPBr-s>XIOTD=B~eyUgi|%CoO&*u{u;6{$yk=kB3#)ell=!K zy}Tk@lAT+GnH4g-g7p|Gy=ON2JoJs&;v-1cWUaV7{%0A2ZxG#u289IaIk{}v{iTk< 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

pokgbCC5*o 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ⅅA+Y*#`A7? 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 Date: Thu, 15 Nov 2018 18:09:03 +0100 Subject: [PATCH 055/243] more issues due to core API reshuffle --- core/finality-grandpa/src/lib.rs | 2 +- core/finality-grandpa/src/tests.rs | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index b4f4f077e2..60f56776da 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -490,7 +490,7 @@ impl, B, E, N, RA> grandpa::Chain: BlockNumberOps, { fn ancestry(&self, base: Block::Hash, block: Block::Hash) -> Result, GrandpaError> { - if base == block { return Err(NotDescendent) } + if base == block { return Err(GrandpaError::NotDescendent) } let tree_route_res = ::client::blockchain::tree_route( self.inner.backend().blockchain(), diff --git a/core/finality-grandpa/src/tests.rs b/core/finality-grandpa/src/tests.rs index 1d8c7db7c5..f8ef67f4f7 100644 --- a/core/finality-grandpa/src/tests.rs +++ b/core/finality-grandpa/src/tests.rs @@ -181,17 +181,26 @@ impl TestApi { } } -impl ApiClient for TestApi { - fn genesis_authorities(&self) -> Result, ClientError> { - Ok(self.genesis_authorities.clone()) +impl GrandpaApi for TestApi { + fn grandpa_authorities(&self, at: &BlockId) -> Result, ClientError> { + if at == &BlockId::Number(0) { + Ok(self.genesis_authorities.clone()) + } else { + panic!("should generally only request genesis authorities") + } } - fn scheduled_change(&self, header: &::Header) + fn grandpa_pending_change(&self, at: &BlockId, _digest: DigestFor) -> Result>>, ClientError> { + let parent_hash = match at { + &BlockId::Hash(at) => at, + _ => panic!("not requested by block hash!!"), + }; + // we take only scheduled changes at given block number where there are no // extrinsics. - Ok(self.scheduled_changes.lock().get(&header.hash()).map(|c| c.clone())) + Ok(self.scheduled_changes.lock().get(&parent_hash).map(|c| c.clone())) } } @@ -349,8 +358,8 @@ fn transition_3_voters_twice_1_observer() { let api = TestApi::new(genesis_voters); let transitions = api.scheduled_changes.clone(); - let add_transition = move |hash, change| { - transitions.lock().insert(hash, change); + let add_transition = move |parent_hash, change| { + transitions.lock().insert(parent_hash, change); }; let mut net = GrandpaTestNet::new(api, 9); @@ -360,7 +369,7 @@ fn transition_3_voters_twice_1_observer() { net.peer(0).push_blocks(14, false); net.peer(0).generate_blocks(1, BlockOrigin::File, |builder| { let block = builder.bake().unwrap(); - add_transition(block.header.hash(), ScheduledChange { + add_transition(*block.header.parent_hash(), ScheduledChange { next_authorities: make_ids(peers_b), delay: 4, }); @@ -375,7 +384,7 @@ fn transition_3_voters_twice_1_observer() { { net.peer(0).generate_blocks(1, BlockOrigin::File, |builder| { let block = builder.bake().unwrap(); - add_transition(block.header.hash(), ScheduledChange { + add_transition(*block.header.parent_hash(), ScheduledChange { next_authorities: make_ids(peers_c), delay: 0, }); -- GitLab From 214b687db41106e4bce362034bb297de2432828f Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 15 Nov 2018 18:36:16 +0100 Subject: [PATCH 056/243] start to refactor block import wrapper a bit --- .../client/src/block_builder/block_builder.rs | 4 +-- core/client/src/client.rs | 10 +++---- core/client/src/runtime_api/macros.rs | 2 +- core/client/src/runtime_api/mod.rs | 2 +- core/finality-grandpa/src/lib.rs | 30 +++++++++---------- core/test-client/src/block_builder_ext.rs | 3 +- 6 files changed, 26 insertions(+), 25 deletions(-) diff --git a/core/client/src/block_builder/block_builder.rs b/core/client/src/block_builder/block_builder.rs index 7d5b867e3a..cb67db5adf 100644 --- a/core/client/src/block_builder/block_builder.rs +++ b/core/client/src/block_builder/block_builder.rs @@ -39,7 +39,7 @@ impl<'a, Block, A> BlockBuilder<'a, Block, A> where Block: BlockT, A: ProvideRuntimeApi + HeaderBackend + 'a, - A::Api: BlockBuilderApi, + A::Api: BlockBuilderApi + Core, { /// Create a new instance of builder from the given client, building on the latest block. pub fn new(api: &'a A) -> error::Result { @@ -84,7 +84,7 @@ where block_id: &BlockId, xt: Block::Extrinsic, extrinsics: &mut Vec - ) -> error::Result<()> where T: BlockBuilderApi { + ) -> error::Result<()> where T: BlockBuilderApi + Core { api.map_api_result(|api| { match api.apply_extrinsic(block_id, &xt)? { Ok(ApplyOutcome::Success) | Ok(ApplyOutcome::Fail) => { diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 03cefca49e..df03cc8e0e 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -547,7 +547,7 @@ impl Client where &self ) -> error::Result> where E: Clone + Send + Sync, - RA: BlockBuilderAPI + RA: BlockBuilderAPI + CoreAPI, { block_builder::BlockBuilder::new(self) } @@ -557,7 +557,7 @@ impl Client where &self, parent: &BlockId ) -> error::Result> where E: Clone + Send + Sync, - RA: BlockBuilderAPI + RA: BlockBuilderAPI + CoreAPI, { block_builder::BlockBuilder::at_block(parent, &self) } @@ -568,7 +568,7 @@ impl Client where at: Block::Hash, body: &Option> ) -> error::Result> where - RA: TaggedTransactionQueue, + RA: TaggedTransactionQueue + CoreAPI, E: CallExecutor + Send + Sync + Clone, { let id = BlockId::Hash(at); @@ -604,7 +604,7 @@ impl Client where finalized: bool, aux: Vec<(Vec, Option>)>, ) -> error::Result where - RA: TaggedTransactionQueue, + RA: TaggedTransactionQueue + CoreAPI, E: CallExecutor + Send + Sync + Clone, { let parent_hash = import_headers.post().parent_hash().clone(); @@ -1058,7 +1058,7 @@ impl consensus::BlockImport for Client B: backend::Backend, E: CallExecutor + Clone + Send + Sync, Block: BlockT, - RA: TaggedTransactionQueue + RA: TaggedTransactionQueue + CoreAPI, { type Error = Error; diff --git a/core/client/src/runtime_api/macros.rs b/core/client/src/runtime_api/macros.rs index b58f2143c8..ad13d8b265 100644 --- a/core/client/src/runtime_api/macros.rs +++ b/core/client/src/runtime_api/macros.rs @@ -347,7 +347,7 @@ macro_rules! decl_runtime_apis { ) => { $( #[$attr] )* #[cfg(feature = "std")] - pub trait $name < $( $generic_param_parsed $( : $generic_bound_parsed )* ),* > : $crate::runtime_api::Core { + pub trait $name < $( $generic_param_parsed $( : $generic_bound_parsed )* ),* > { $( type $client_generic_param $( : $client_generic_bound )*; )* $( diff --git a/core/client/src/runtime_api/mod.rs b/core/client/src/runtime_api/mod.rs index e151718360..fd3bc5f172 100644 --- a/core/client/src/runtime_api/mod.rs +++ b/core/client/src/runtime_api/mod.rs @@ -23,7 +23,7 @@ pub use state_machine::OverlayedChanges; #[doc(hidden)] pub use runtime_primitives::{traits::Block as BlockT, generic::BlockId}; #[cfg(feature = "std")] -use runtime_primitives::traits::ApiRef; +pub use runtime_primitives::traits::ApiRef; pub use runtime_version::ApiId; #[doc(hidden)] pub use rstd::slice; diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 60f56776da..7aa377410f 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -84,7 +84,7 @@ use futures::stream::Fuse; use futures::sync::mpsc; use client::{Client, error::Error as ClientError, ImportNotifications, backend::Backend, CallExecutor}; use client::blockchain::HeaderBackend; -use client::runtime_api::TaggedTransactionQueue; +use client::runtime_api::{Core as CoreAPI, TaggedTransactionQueue}; use codec::{Encode, Decode}; use consensus_common::{BlockImport, ImportBlock, ImportResult}; use runtime_primitives::traits::{ @@ -775,16 +775,16 @@ impl, N, RA> voter::Environment, RA> { - inner: Arc>, +pub struct GrandpaBlockImport { + import: Import, authority_set: SharedAuthoritySet>, + api: Api, } -impl, RA> BlockImport for GrandpaBlockImport where - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, - DigestFor: Encode, - RA: GrandpaApi + TaggedTransactionQueue, +impl> BlockImport for GrandpaBlockImport where + Import: BlockImport, + Api: ProvideRuntimeApi, + Api::Api: GrandpaApi, { type Error = ClientError; @@ -793,7 +793,7 @@ impl, RA> BlockImport for GrandpaBlockImpo { use authorities::PendingChange; - let maybe_change = self.inner.runtime_api().grandpa_pending_change( + let maybe_change = self.api.runtime_api().grandpa_pending_change( &BlockId::hash(*block.header.parent_hash()), &block.header.digest().clone(), )?; @@ -818,7 +818,7 @@ impl, RA> BlockImport for GrandpaBlockImpo (old_set, authorities) }); - let result = self.inner.import_block(block, new_authorities); + let result = self.import.import_block(block, new_authorities); if let Err(ref e) = result { if let Some((old_set, mut authorities)) = just_in_case { debug!(target: "afg", "Restoring old set after block import error: {:?}", e); @@ -832,15 +832,15 @@ impl, RA> BlockImport for GrandpaBlockImpo /// Half of a link between a block-import worker and a the background voter. // This should remain non-clone. -pub struct LinkHalf, RA> { - client: Arc>, +pub struct LinkHalf { + client: C, authority_set: SharedAuthoritySet>, } /// Make block importer and link half necessary to tie the background voter /// to it. -pub fn block_import, RA>(client: Arc>) - -> Result<(GrandpaBlockImport, LinkHalf), ClientError> +pub fn block_import(client: Arc>) + -> Result<(GrandpaBlockImport, LinkHalf), ClientError> where B: Backend + 'static, E: CallExecutor + 'static + Clone + Send + Sync, @@ -881,7 +881,7 @@ pub fn block_import, RA>(client: Arc, N, RA>( config: Config, - link: LinkHalf, + link: LinkHalf>, network: N, ) -> ::client::error::Result> where Block::Hash: Ord, diff --git a/core/test-client/src/block_builder_ext.rs b/core/test-client/src/block_builder_ext.rs index 3c334b07a1..81e4bf756c 100644 --- a/core/test-client/src/block_builder_ext.rs +++ b/core/test-client/src/block_builder_ext.rs @@ -22,6 +22,7 @@ use keyring; use runtime; use runtime_primitives::traits::ProvideRuntimeApi; use client::block_builder::api::BlockBuilder; +use client::runtime_api::Core as CoreAPI; /// Extension trait for test block builder. pub trait BlockBuilderExt { @@ -31,7 +32,7 @@ pub trait BlockBuilderExt { impl<'a, A> BlockBuilderExt for client::block_builder::BlockBuilder<'a, runtime::Block, A> where A: ProvideRuntimeApi + client::blockchain::HeaderBackend + 'a, - A::Api: BlockBuilder + A::Api: BlockBuilder + CoreAPI, { fn push_transfer(&mut self, transfer: runtime::Transfer) -> Result<(), client::error::Error> { self.push(sign_tx(transfer)) -- GitLab From baf7cf636e2cc20ef65138d745da795ad9c13b65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 16 Nov 2018 07:44:51 +0100 Subject: [PATCH 057/243] Try to get grandpa tests compiling again (#1121) * Revert "start to refactor block import wrapper a bit" This reverts commit b919de49e1a82422a0870b66100832d531174771. * Refactor grandpa stuff to get tests almost compiling * Fixes after rebase * Fixes merge compile errors --- core/client/db/src/light.rs | 21 ++-- .../client/src/block_builder/block_builder.rs | 4 +- core/client/src/client.rs | 10 +- core/client/src/light/blockchain.rs | 1 + core/client/src/runtime_api/macros.rs | 2 +- core/client/src/runtime_api/mod.rs | 3 +- core/finality-grandpa/src/lib.rs | 46 +++++---- core/finality-grandpa/src/tests.rs | 90 ++++++++++++++++-- core/test-client/src/block_builder_ext.rs | 3 +- .../substrate_test_runtime.compact.wasm | Bin 223059 -> 45224 bytes node/runtime/src/lib.rs | 2 +- .../release/node_runtime.compact.wasm | Bin 828026 -> 623475 bytes 12 files changed, 132 insertions(+), 50 deletions(-) diff --git a/core/client/db/src/light.rs b/core/client/db/src/light.rs index 8d0712658b..c03ab98c02 100644 --- a/core/client/db/src/light.rs +++ b/core/client/db/src/light.rs @@ -480,17 +480,16 @@ pub(crate) mod tests { } } - pub fn insert_block_with_extrinsics_root( - db: &LightStorage, - parent: &Hash, - number: u64, - authorities: Option>, - extrinsics_root: Hash, - ) -> Hash { - let header = prepare_header(parent, number, extrinsics_root); - let hash = header.hash(); - db.import_header(header, authorities, NewBlockState::Best, Vec::new()).unwrap(); - hash + fn header_with_changes_trie(parent: &Hash, number: u64) -> Header { + let mut header = default_header(parent, number); + header.digest.logs.push(DigestItem::ChangesTrieRoot([(number % 256) as u8; 32].into())); + header + } + + fn header_with_extrinsics_root(parent: &Hash, number: u64, extrinsics_root: Hash) -> Header { + let mut header = default_header(parent, number); + header.extrinsics_root = extrinsics_root; + header } pub fn insert_block Header>( diff --git a/core/client/src/block_builder/block_builder.rs b/core/client/src/block_builder/block_builder.rs index cb67db5adf..7d5b867e3a 100644 --- a/core/client/src/block_builder/block_builder.rs +++ b/core/client/src/block_builder/block_builder.rs @@ -39,7 +39,7 @@ impl<'a, Block, A> BlockBuilder<'a, Block, A> where Block: BlockT, A: ProvideRuntimeApi + HeaderBackend + 'a, - A::Api: BlockBuilderApi + Core, + A::Api: BlockBuilderApi, { /// Create a new instance of builder from the given client, building on the latest block. pub fn new(api: &'a A) -> error::Result { @@ -84,7 +84,7 @@ where block_id: &BlockId, xt: Block::Extrinsic, extrinsics: &mut Vec - ) -> error::Result<()> where T: BlockBuilderApi + Core { + ) -> error::Result<()> where T: BlockBuilderApi { api.map_api_result(|api| { match api.apply_extrinsic(block_id, &xt)? { Ok(ApplyOutcome::Success) | Ok(ApplyOutcome::Fail) => { diff --git a/core/client/src/client.rs b/core/client/src/client.rs index df03cc8e0e..03cefca49e 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -547,7 +547,7 @@ impl Client where &self ) -> error::Result> where E: Clone + Send + Sync, - RA: BlockBuilderAPI + CoreAPI, + RA: BlockBuilderAPI { block_builder::BlockBuilder::new(self) } @@ -557,7 +557,7 @@ impl Client where &self, parent: &BlockId ) -> error::Result> where E: Clone + Send + Sync, - RA: BlockBuilderAPI + CoreAPI, + RA: BlockBuilderAPI { block_builder::BlockBuilder::at_block(parent, &self) } @@ -568,7 +568,7 @@ impl Client where at: Block::Hash, body: &Option> ) -> error::Result> where - RA: TaggedTransactionQueue + CoreAPI, + RA: TaggedTransactionQueue, E: CallExecutor + Send + Sync + Clone, { let id = BlockId::Hash(at); @@ -604,7 +604,7 @@ impl Client where finalized: bool, aux: Vec<(Vec, Option>)>, ) -> error::Result where - RA: TaggedTransactionQueue + CoreAPI, + RA: TaggedTransactionQueue, E: CallExecutor + Send + Sync + Clone, { let parent_hash = import_headers.post().parent_hash().clone(); @@ -1058,7 +1058,7 @@ impl consensus::BlockImport for Client B: backend::Backend, E: CallExecutor + Clone + Send + Sync, Block: BlockT, - RA: TaggedTransactionQueue + CoreAPI, + RA: TaggedTransactionQueue { type Error = Error; diff --git a/core/client/src/light/blockchain.rs b/core/client/src/light/blockchain.rs index e50f62ec20..5996732c3f 100644 --- a/core/client/src/light/blockchain.rs +++ b/core/client/src/light/blockchain.rs @@ -213,6 +213,7 @@ pub mod tests { _header: Header, _authorities: Option>, _state: NewBlockState, + _aux_ops: Vec<(Vec, Option>)>, ) -> ClientResult<()> { Err(ClientErrorKind::Backend("Test error".into()).into()) } diff --git a/core/client/src/runtime_api/macros.rs b/core/client/src/runtime_api/macros.rs index ad13d8b265..b58f2143c8 100644 --- a/core/client/src/runtime_api/macros.rs +++ b/core/client/src/runtime_api/macros.rs @@ -347,7 +347,7 @@ macro_rules! decl_runtime_apis { ) => { $( #[$attr] )* #[cfg(feature = "std")] - pub trait $name < $( $generic_param_parsed $( : $generic_bound_parsed )* ),* > { + pub trait $name < $( $generic_param_parsed $( : $generic_bound_parsed )* ),* > : $crate::runtime_api::Core { $( type $client_generic_param $( : $client_generic_bound )*; )* $( diff --git a/core/client/src/runtime_api/mod.rs b/core/client/src/runtime_api/mod.rs index fd3bc5f172..acf4db705c 100644 --- a/core/client/src/runtime_api/mod.rs +++ b/core/client/src/runtime_api/mod.rs @@ -23,7 +23,7 @@ pub use state_machine::OverlayedChanges; #[doc(hidden)] pub use runtime_primitives::{traits::Block as BlockT, generic::BlockId}; #[cfg(feature = "std")] -pub use runtime_primitives::traits::ApiRef; +use runtime_primitives::traits::ApiRef; pub use runtime_version::ApiId; #[doc(hidden)] pub use rstd::slice; @@ -32,6 +32,7 @@ use rstd::result; pub use codec::{Encode, Decode}; #[cfg(feature = "std")] use error; +pub use runtime_version::RuntimeVersion; mod core; #[macro_use] diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 7aa377410f..6a70b3dfca 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -84,7 +84,7 @@ use futures::stream::Fuse; use futures::sync::mpsc; use client::{Client, error::Error as ClientError, ImportNotifications, backend::Backend, CallExecutor}; use client::blockchain::HeaderBackend; -use client::runtime_api::{Core as CoreAPI, TaggedTransactionQueue}; +use client::runtime_api::TaggedTransactionQueue; use codec::{Encode, Decode}; use consensus_common::{BlockImport, ImportBlock, ImportResult}; use runtime_primitives::traits::{ @@ -775,16 +775,20 @@ impl, N, RA> voter::Environment { - import: Import, +pub struct GrandpaBlockImport, RA, PRA> { + inner: Arc>, authority_set: SharedAuthoritySet>, - api: Api, + api: Arc, } -impl> BlockImport for GrandpaBlockImport where - Import: BlockImport, - Api: ProvideRuntimeApi, - Api::Api: GrandpaApi, +impl, RA, PRA> BlockImport + for GrandpaBlockImport where + B: Backend + 'static, + E: CallExecutor + 'static + Clone + Send + Sync, + DigestFor: Encode, + RA: TaggedTransactionQueue, + PRA: ProvideRuntimeApi, + PRA::Api: GrandpaApi { type Error = ClientError; @@ -818,7 +822,7 @@ impl> BlockImport for GrandpaBlockI (old_set, authorities) }); - let result = self.import.import_block(block, new_authorities); + let result = self.inner.import_block(block, new_authorities); if let Err(ref e) = result { if let Some((old_set, mut authorities)) = just_in_case { debug!(target: "afg", "Restoring old set after block import error: {:?}", e); @@ -832,19 +836,23 @@ impl> BlockImport for GrandpaBlockI /// Half of a link between a block-import worker and a the background voter. // This should remain non-clone. -pub struct LinkHalf { - client: C, +pub struct LinkHalf, RA> { + client: Arc>, authority_set: SharedAuthoritySet>, } /// Make block importer and link half necessary to tie the background voter /// to it. -pub fn block_import(client: Arc>) - -> Result<(GrandpaBlockImport, LinkHalf), ClientError> +pub fn block_import, RA, PRA>( + client: Arc>, + api: Arc +) -> Result<(GrandpaBlockImport, LinkHalf), ClientError> where B: Backend + 'static, E: CallExecutor + 'static + Clone + Send + Sync, - RA: GrandpaApi, + RA: Send + Sync, + PRA: ProvideRuntimeApi, + PRA::Api: GrandpaApi { use runtime_primitives::traits::Zero; let authority_set = match client.backend().get_aux(AUTHORITY_SET_KEY)? { @@ -855,7 +863,7 @@ pub fn block_import(client: Arc>) // no authority set on disk: fetch authorities from genesis state. // if genesis state is not available, we may be a light client, but these // are unsupported for following GRANDPA directly. - let genesis_authorities = client.runtime_api() + let genesis_authorities = api.runtime_api() .grandpa_authorities(&BlockId::number(Zero::zero()))?; let authority_set = SharedAuthoritySet::genesis(genesis_authorities); @@ -872,7 +880,11 @@ pub fn block_import(client: Arc>) }; Ok(( - GrandpaBlockImport { inner: client.clone(), authority_set: authority_set.clone() }, + GrandpaBlockImport { + inner: client.clone(), + authority_set: authority_set.clone(), + api + }, LinkHalf { client, authority_set }, )) } @@ -881,7 +893,7 @@ pub fn block_import(client: Arc>) /// block import worker that has already been instantiated with `block_import`. pub fn run_grandpa, N, RA>( config: Config, - link: LinkHalf>, + link: LinkHalf, network: N, ) -> ::client::error::Result> where Block::Hash: Ord, diff --git a/core/finality-grandpa/src/tests.rs b/core/finality-grandpa/src/tests.rs index f8ef67f4f7..967686a925 100644 --- a/core/finality-grandpa/src/tests.rs +++ b/core/finality-grandpa/src/tests.rs @@ -23,15 +23,30 @@ use network::config::{ProtocolConfig, Roles}; use parking_lot::Mutex; use tokio::runtime::current_thread; use keyring::Keyring; -use client::BlockchainEvents; +use client::{ + BlockchainEvents, runtime_api::{Core, RuntimeVersion, ApiExt, ConstructRuntimeApi, CallApiAt}, + error::Result +}; use test_client::{self, runtime::BlockNumber}; use codec::Decode; use consensus_common::BlockOrigin; -use std::collections::HashSet; +use std::{collections::HashSet, result}; +use runtime_primitives::traits::{ApiRef, ProvideRuntimeApi}; +use runtime_primitives::generic::BlockId; use authorities::AuthoritySet; -type PeerData = Mutex>>; +type PeerData = + Mutex< + Option< + LinkHalf< + test_client::Backend, + test_client::Executor, + Block, + test_client::runtime::ClientWithApi, + > + > + >; type GrandpaPeer = Peer; struct GrandpaTestNet { @@ -86,7 +101,10 @@ impl TestNetFactory for GrandpaTestNet { fn make_block_import(&self, client: Arc) -> (Arc + Send + Sync>, PeerData) { - let (import, link) = block_import(client, self.test_config.clone()).expect("Could not create block import for fresh peer."); + let (import, link) = block_import( + client, + Arc::new(self.test_config.clone()) + ).expect("Could not create block import for fresh peer."); (Arc::new(import), Mutex::new(Some(link))) } @@ -181,17 +199,69 @@ impl TestApi { } } -impl GrandpaApi for TestApi { - fn grandpa_authorities(&self, at: &BlockId) -> Result, ClientError> { +struct RuntimeApi { + inner: TestApi, +} + +impl ProvideRuntimeApi for TestApi { + type Api = RuntimeApi; + + fn runtime_api<'a>(&'a self) -> ApiRef<'a, Self::Api> { + RuntimeApi { inner: self.clone() }.into() + } +} + +impl Core for RuntimeApi { + fn version(&self, _: &BlockId) -> Result { + unimplemented!("Not required for testing!") + } + + fn authorities(&self, _: &BlockId) -> Result> { + unimplemented!("Not required for testing!") + } + + fn execute_block(&self, _: &BlockId, _: &Block) -> Result<()> { + unimplemented!("Not required for testing!") + } + + fn initialise_block( + &self, + _: &BlockId, + _: &::Header + ) -> Result<()> { + unimplemented!("Not required for testing!") + } +} + +impl ApiExt for RuntimeApi { + fn map_api_result result::Result, R, E>( + &self, + _: F + ) -> result::Result { + unimplemented!("Not required for testing!") + } +} + +impl ConstructRuntimeApi for RuntimeApi { + fn construct_runtime_api<'a, T: CallApiAt>(_: &'a T) -> ApiRef<'a, Self> { + unimplemented!("Not required for testing!") + } +} + +impl GrandpaApi for RuntimeApi { + fn grandpa_authorities( + &self, + at: &BlockId + ) -> Result> { if at == &BlockId::Number(0) { - Ok(self.genesis_authorities.clone()) + Ok(self.inner.genesis_authorities.clone()) } else { panic!("should generally only request genesis authorities") } } - fn grandpa_pending_change(&self, at: &BlockId, _digest: DigestFor) - -> Result>>, ClientError> + fn grandpa_pending_change(&self, at: &BlockId, _: &DigestFor) + -> Result>>> { let parent_hash = match at { &BlockId::Hash(at) => at, @@ -200,7 +270,7 @@ impl GrandpaApi for TestApi { // we take only scheduled changes at given block number where there are no // extrinsics. - Ok(self.scheduled_changes.lock().get(&parent_hash).map(|c| c.clone())) + Ok(self.inner.scheduled_changes.lock().get(&parent_hash).map(|c| c.clone())) } } diff --git a/core/test-client/src/block_builder_ext.rs b/core/test-client/src/block_builder_ext.rs index 81e4bf756c..3c334b07a1 100644 --- a/core/test-client/src/block_builder_ext.rs +++ b/core/test-client/src/block_builder_ext.rs @@ -22,7 +22,6 @@ use keyring; use runtime; use runtime_primitives::traits::ProvideRuntimeApi; use client::block_builder::api::BlockBuilder; -use client::runtime_api::Core as CoreAPI; /// Extension trait for test block builder. pub trait BlockBuilderExt { @@ -32,7 +31,7 @@ pub trait BlockBuilderExt { impl<'a, A> BlockBuilderExt for client::block_builder::BlockBuilder<'a, runtime::Block, A> where A: ProvideRuntimeApi + client::blockchain::HeaderBackend + 'a, - A::Api: BlockBuilder + CoreAPI, + A::Api: BlockBuilder { fn push_transfer(&mut self, transfer: runtime::Transfer) -> Result<(), client::error::Error> { self.push(sign_tx(transfer)) diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 27b4e0e4caac5e61a9afacc0becb3c3efc51cad6..d7e8471570b6f5e34efdc22ab6952789f4ac24f9 100644 GIT binary patch delta 5405 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 Su6}pGAkyxApf!+Pz5frfhg!A( literal 223059 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%0Dk`x5lqY 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 diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index dca769f4d4..41595889da 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -465,7 +465,7 @@ impl_runtime_apis! { impl GrandpaApi for ClientWithApi { - fn grandpa_pending_change(digest: DigestFor) + fn grandpa_pending_change(_digest: DigestFor) -> Option>> { unimplemented!("Robert, where is the impl?") } diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 488086fdbd5b57adb8140e41d2686869e5288aef..9789295b32308aea42124172e8055be2d375ce67 100644 GIT binary patch delta 207099 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

htTnqou! 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

cFm$)Qp_ru@ww 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 -- GitLab From 8ff01392e8157988b7e90fdf6743172beb6ad587 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 16 Nov 2018 08:36:04 +0100 Subject: [PATCH 058/243] rename fg-primitives to more verbose name (#1123) --- Cargo.lock | 28 ++++++++++----------- core/finality-grandpa/Cargo.toml | 2 +- core/finality-grandpa/primitives/Cargo.toml | 2 +- core/finality-grandpa/src/lib.rs | 2 +- node/runtime/Cargo.toml | 4 +-- node/runtime/src/lib.rs | 6 ++--- node/runtime/wasm/Cargo.lock | 4 +-- node/runtime/wasm/Cargo.toml | 4 +-- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 993b4bdd6b..08ee2e5604 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1804,7 +1804,7 @@ dependencies = [ "srml-treasury 0.1.0", "srml-upgrade-key 0.1.0", "substrate-client 0.1.0", - "substrate-fg-primitives 0.1.0", + "substrate-finality-grandpa-primitives 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", ] @@ -3180,18 +3180,6 @@ dependencies = [ "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "substrate-fg-primitives" -version = "0.1.0" -dependencies = [ - "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-client 0.1.0", - "substrate-primitives 0.1.0", -] - [[package]] name = "substrate-finality-grandpa" version = "0.1.0" @@ -3206,7 +3194,7 @@ dependencies = [ "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-consensus-common 0.1.0", - "substrate-fg-primitives 0.1.0", + "substrate-finality-grandpa-primitives 0.1.0", "substrate-keyring 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", @@ -3214,6 +3202,18 @@ dependencies = [ "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "substrate-finality-grandpa-primitives" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "substrate-client 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "substrate-keyring" version = "0.1.0" diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index a4b20e5177..9c03c2bc10 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -14,7 +14,7 @@ substrate-client = { path = "../client" } log = "0.4" parking_lot = "0.4" tokio = "0.1.7" -substrate-fg-primitives = { path = "primitives" } +substrate-finality-grandpa-primitives = { path = "primitives" } [dependencies.finality-grandpa] version = "0.3.0" diff --git a/core/finality-grandpa/primitives/Cargo.toml b/core/finality-grandpa/primitives/Cargo.toml index 8f9c6628b8..0ddb489af7 100644 --- a/core/finality-grandpa/primitives/Cargo.toml +++ b/core/finality-grandpa/primitives/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-fg-primitives" +name = "substrate-finality-grandpa-primitives" version = "0.1.0" authors = ["Parity Technologies "] diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 6a70b3dfca..85f2377670 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -59,7 +59,7 @@ extern crate substrate_primitives; extern crate tokio; extern crate parking_lot; extern crate parity_codec as codec; -extern crate substrate_fg_primitives as fg_primitives; +extern crate substrate_finality_grandpa_primitives as fg_primitives; #[macro_use] extern crate log; diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 5865927893..6faf6fc64e 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -14,7 +14,7 @@ parity-codec-derive = "2.1" sr-std = { path = "../../core/sr-std" } srml-support = { path = "../../srml/support" } substrate-primitives = { path = "../../core/primitives" } -substrate-fg-primitives = { path = "../../core/finality-grandpa/primitives" } +substrate-finality-grandpa-primitives = { path = "../../core/finality-grandpa/primitives" } substrate-client = { path = "../../core/client" } substrate-keyring = { path = "../../core/keyring" } srml-balances = { path = "../../srml/balances" } @@ -59,5 +59,5 @@ std = [ "serde/std", "safe-mix/std", "substrate-client/std", - "substrate-fg-primitives/std", + "substrate-finality-grandpa-primitives/std", ] diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index 41595889da..90306a8e52 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -56,7 +56,7 @@ extern crate srml_upgrade_key as upgrade_key; #[macro_use] extern crate sr_version as version; extern crate node_primitives; -extern crate substrate_fg_primitives; +extern crate substrate_finality_grandpa_primitives; #[cfg(feature = "std")] use codec::{Encode, Decode}; @@ -85,7 +85,7 @@ use council::seats as council_seats; #[cfg(any(feature = "std", test))] use version::NativeVersion; use substrate_primitives::OpaqueMetadata; -use substrate_fg_primitives::{runtime::GrandpaApi, ScheduledChange}; +use substrate_finality_grandpa_primitives::{runtime::GrandpaApi, ScheduledChange}; #[cfg(any(feature = "std", test))] pub use runtime_primitives::BuildStorage; @@ -398,7 +398,7 @@ impl client::runtime_api::Metadata for ClientWithApi { } #[cfg(feature = "std")] -impl substrate_fg_primitives::GrandpaApi for ClientWithApi { +impl substrate_finality_grandpa_primitives::GrandpaApi for ClientWithApi { fn grandpa_pending_change(&self, at: &GBlockId, digest: &DigestFor) -> Result>>, client::error::Error> { self.call_api_at(at, "grandpa_pending_change", digest) diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 4eeae1fd9d..d340628488 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -526,7 +526,7 @@ dependencies = [ "srml-treasury 0.1.0", "srml-upgrade-key 0.1.0", "substrate-client 0.1.0", - "substrate-fg-primitives 0.1.0", + "substrate-finality-grandpa-primitives 0.1.0", "substrate-primitives 0.1.0", ] @@ -1274,7 +1274,7 @@ dependencies = [ ] [[package]] -name = "substrate-fg-primitives" +name = "substrate-finality-grandpa-primitives" version = "0.1.0" dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index 6e9cfd0910..50f9da3592 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -12,7 +12,7 @@ safe-mix = { version = "1.0", default-features = false } parity-codec-derive = { version = "2.1" } parity-codec = { version = "2.1", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } -substrate-fg-primitives = { path = "../../../core/finality-grandpa/primitives", default-features = false } +substrate-finality-grandpa-primitives = { path = "../../../core/finality-grandpa/primitives", default-features = false } substrate-client = { path = "../../../core/client", default-features = false } sr-std = { path = "../../../core/sr-std", default-features = false } srml-support = { path = "../../../srml/support", default-features = false } @@ -39,7 +39,7 @@ std = [ "parity-codec/std", "substrate-primitives/std", "substrate-client/std", - "substrate-fg-primitives/std", + "substrate-finality-grandpa-primitives/std", "sr-std/std", "srml-support/std", "srml-balances/std", -- GitLab From c9945f7d679f60e1367221d1320139d9f447ceb2 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 16 Nov 2018 11:36:35 +0100 Subject: [PATCH 059/243] add extra verification for aura (#1126) * add extra verification for aura * fix tests * adjust documentation wording --- core/consensus/aura/src/lib.rs | 45 +++++++++++++++++++++++++--------- node/cli/src/service.rs | 28 +++++++++++++-------- 2 files changed, 52 insertions(+), 21 deletions(-) diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index babfef8dc1..1869eba5dd 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -286,7 +286,6 @@ enum CheckedHeader { Checked(H, u64, ed25519::Signature), } - /// check a header has been signed by the right key. If the slot is too far in the future, an error will be returned. /// if it's successful, returns the pre-header, the slot number, and the signat. // @@ -328,15 +327,37 @@ fn check_header(slot_now: u64, mut header: B::Header, hash: B::Hash, a } } +/// Extra verification for Aura blocks. +pub trait ExtraVerification: Send + Sync { + /// Future that resolves when the block is verified or fails with error if not. + type Verified: IntoFuture; + + /// Do additional verification for this block. + fn verify(&self, header: &B::Header, body: Option<&[B::Extrinsic]>) -> Self::Verified; +} + +/// No-op extra verification. +#[derive(Debug, Clone, Copy)] +pub struct NothingExtra; + +impl ExtraVerification for NothingExtra { + type Verified = Result<(), String>; + + fn verify(&self, _: &B::Header, _: Option<&[B::Extrinsic]>) -> Self::Verified { + Ok(()) + } +} /// A verifier for Aura blocks. -pub struct AuraVerifier { +pub struct AuraVerifier { config: Config, client: Arc, + extra: E, } -impl Verifier for AuraVerifier where +impl Verifier for AuraVerifier where C: Authorities + BlockImport + Send + Sync, DigestItemFor: CompatibleDigestItem, + E: ExtraVerification, { fn verify( &self, @@ -352,6 +373,8 @@ impl Verifier for AuraVerifier where let authorities = self.client.authorities(&BlockId::Hash(parent_hash)) .map_err(|e| format!("Could not fetch authorities at {:?}: {:?}", parent_hash, e))?; + let extra_verification = self.extra.verify(&header, body.as_ref().map(|x| &x[..])); + // we add one to allow for some small drift. // FIXME: in the future, alter this queue to allow deferring of headers // https://github.com/paritytech/substrate/issues/1019 @@ -362,6 +385,7 @@ impl Verifier for AuraVerifier where debug!(target: "aura", "Checked {:?}; importing.", pre_header); + extra_verification.into_future().wait()?; let import_block = ImportBlock { origin, header: pre_header, @@ -384,20 +408,19 @@ impl Verifier for AuraVerifier where } /// The Aura import queue type. -pub type AuraImportQueue = BasicQueue>; +pub type AuraImportQueue = BasicQueue>; /// Start an import queue for the Aura consensus algorithm. -pub fn import_queue(config: Config, client: Arc) -> AuraImportQueue where +pub fn import_queue(config: Config, client: Arc, extra: E) -> AuraImportQueue where B: Block, C: Authorities + BlockImport + Send + Sync, DigestItemFor: CompatibleDigestItem, + E: ExtraVerification, { - let verifier = Arc::new(AuraVerifier { config, client: client.clone() }); + let verifier = Arc::new(AuraVerifier { config, client: client.clone(), extra, }); BasicQueue::new(verifier, client) } - - #[cfg(test)] mod tests { use super::*; @@ -443,12 +466,12 @@ mod tests { const TEST_ROUTING_INTERVAL: Duration = Duration::from_millis(50); pub struct AuraTestNet { - peers: Vec, ()>>>, + peers: Vec, ()>>>, started: bool } impl TestNetFactory for AuraTestNet { - type Verifier = AuraVerifier; + type Verifier = AuraVerifier; type PeerData = (); /// Create new test network with peers and given config. @@ -463,7 +486,7 @@ mod tests { -> Arc { let config = Config { local_key: None, slot_duration: SLOT_DURATION }; - Arc::new(AuraVerifier { client, config }) + Arc::new(AuraVerifier { client, config, extra: NothingExtra }) } fn peer(&self, i: usize) -> &Peer { diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index 5a5edb89b0..b232beb538 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -28,7 +28,7 @@ use substrate_service::{ Roles, TaskExecutor, }; use node_executor; -use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue}; +use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue, NothingExtra}; use client; const AURA_SLOT_DURATION: u64 = 6; @@ -79,17 +79,25 @@ construct_service_factory! { }, LightService = LightComponents { |config, executor| >::new(config, executor) }, - FullImportQueue = AuraImportQueue> - { |config, client| Ok(import_queue(AuraConfig { - local_key: None, - slot_duration: 5 - }, client)) }, - LightImportQueue = AuraImportQueue> - { |config, client| Ok( - import_queue(AuraConfig { + FullImportQueue = AuraImportQueue, NothingExtra> + { |config, client| Ok(import_queue( + AuraConfig { local_key: None, slot_duration: 5 - }, client)) + }, + client, + NothingExtra, + )) + }, + LightImportQueue = AuraImportQueue, NothingExtra> + { |config, client| Ok(import_queue( + AuraConfig { + local_key: None, + slot_duration: 5 + }, + client, + NothingExtra, + )) }, } } -- GitLab From 7e497ee78f92270ce7432ed4a92fca9eada4e014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 16 Nov 2018 16:14:49 +0100 Subject: [PATCH 060/243] Make sure to call the runtime trait functions (#1129) * Make sure to call the runtime trait functions The runtime trait functions export their functions as extern c functions. These functions itself call the trait functions. This commit makes sure that the trait functions are called and not functions with the same name that are implemented for the runtime. * Update the wasm files --- core/client/src/runtime_api/macros.rs | 82 ++++++++++++++++-- .../substrate_test_runtime.compact.wasm | Bin 45224 -> 45150 bytes .../release/node_runtime.compact.wasm | Bin 623475 -> 612946 bytes 3 files changed, 75 insertions(+), 7 deletions(-) diff --git a/core/client/src/runtime_api/macros.rs b/core/client/src/runtime_api/macros.rs index b58f2143c8..1721fbd416 100644 --- a/core/client/src/runtime_api/macros.rs +++ b/core/client/src/runtime_api/macros.rs @@ -465,14 +465,20 @@ macro_rules! impl_runtime_apis { )* } impl_runtime_apis! { + @EXTEND_FUNCTIONS $runtime; - $( $fn_name ( $( $arg_name: $arg_ty ),* ); )*; + ; + $trait_name; + $( $( $generic ),* )*; + { $( $fn_name ( $( $arg_name: $arg_ty ),* ); )* } $( $rest )* } }; ( $runtime:ident; - $( $fn_name_parsed:ident ( $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); )*; + $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( + $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); + )*; impl $trait_name:ident $( < $( $generic:ident ),* > )* for $runtime_ignore:ident { $( fn $fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ) $( -> $return_ty:ty )* { @@ -490,15 +496,73 @@ macro_rules! impl_runtime_apis { )* } impl_runtime_apis! { + @EXTEND_FUNCTIONS $runtime; - $( $fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); )* - $( $fn_name ( $( $arg_name: $arg_ty ),* ); )*; + $( + $trait_name_parsed $( < $( $parsed_generic ),* > )* + ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); + )*; + $trait_name; + $( $( $generic ),* )*; + { $( $fn_name ( $( $arg_name: $arg_ty ),* ); )* } + $( $rest )* + } + }; + (@EXTEND_FUNCTIONS + $runtime:ident; + $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( + $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); + )*; + $trait_name:ident; + $( $generic:ident ),*; + { + $fn_name_extend:ident ( $( $arg_name_extend:ident : $arg_ty_extend:ty ),* ); + $( $extend_rest:tt )* + } + $( $rest:tt )* + ) => { + impl_runtime_apis! { + @EXTEND_FUNCTIONS + $runtime; + $( + $trait_name_parsed $( < $( $parsed_generic ),* > )* + ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); + )* + $trait_name < $( $generic ),* > + ::$fn_name_extend ( $( $arg_name_extend: $arg_ty_extend ),* );; + $trait_name; + $( $generic ),*; + { + $( $extend_rest )* + } + $( $rest )* + } + }; + (@EXTEND_FUNCTIONS + $runtime:ident; + $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( + $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); + )*; + $trait_name:ident; + $( $generic:ident ),*; + {} + $( $rest:tt )* + ) => { + impl_runtime_apis! { + $runtime; + $( + $trait_name_parsed $( < $( $parsed_generic ),* > )* + ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); + )*; $( $rest )* } }; ( $runtime:ident; - $( $fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ); )*; + $( + $trait_name:ident $( < $( $generic:ident ),* > )* + ::$fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ); + )*; ) => { pub mod api { use super::*; @@ -511,6 +575,7 @@ macro_rules! impl_runtime_apis { Some({impl_runtime_apis! { @GENERATE_IMPL_CALL $runtime; + $trait_name $( < $( $generic ),* > )*; $fn_name; $( $arg_name : $arg_ty ),*; data; @@ -536,6 +601,7 @@ macro_rules! impl_runtime_apis { let output = { impl_runtime_apis! { @GENERATE_IMPL_CALL $runtime; + $trait_name $( < $( $generic ),* > )*; $fn_name; $( $arg_name : $arg_ty ),*; input; @@ -553,6 +619,7 @@ macro_rules! impl_runtime_apis { }; (@GENERATE_IMPL_CALL $runtime:ident; + $trait_name:ident $( < $( $generic:ident ),* > )*; $fn_name:ident; $arg_name:ident : $arg_ty:ty; $input:ident; @@ -562,11 +629,12 @@ macro_rules! impl_runtime_apis { None => panic!("Bad input data provided to {}", stringify!($fn_name)), }; - let output = $runtime::$fn_name($arg_name); + let output = <$runtime as $trait_name $( < $( $generic ),* > )*>::$fn_name($arg_name); $crate::runtime_api::Encode::encode(&output) }; (@GENERATE_IMPL_CALL $runtime:ident; + $trait_name:ident $( < $( $generic:ident ),* > )*; $fn_name:ident; $( $arg_name:ident : $arg_ty:ty ),*; $input:ident; @@ -576,7 +644,7 @@ macro_rules! impl_runtime_apis { None => panic!("Bad input data provided to {}", stringify!($fn_name)), }; - let output = $runtime::$fn_name($( $arg_name ),*); + let output = <$runtime as $trait_name $( < $( $generic ),* > )*>::$fn_name($( $arg_name ),*); $crate::runtime_api::Encode::encode(&output) }; } diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index d7e8471570b6f5e34efdc22ab6952789f4ac24f9..6f1c85ae97645c8308ac087647b253a9f2ae111a 100644 GIT binary patch delta 5889 zcmaJ_d2p1+mGAEFn?rL*AC>?efW8@xF0d>if{gL2oRw?;SUd4%_xJjn zu}0Y58mZsw*WK@XSHFJU<2S{>Oo{lCOf43Ru@(o~Sd7O`)b7smMfMCe4}GI|PxI31 zmCSkK`}s>;TBK)p7SRVI_#f&WXx$NEZld~$+BeYIGt}G>*~9b`|G7`b_`K?x<+@jQ zIyKG7b(iMjI^#O$y6$)4r|V9yU&qhyb?V&jRX=%!7iOG`PcmNO$M#Mt6HF<_rzA_6)YR4|VqT zuzRvv`}(@}HbYiOI@sCHsxqJK>`7m_G`q8>BQg+y9-q#VlcLVEdbydK=Xv&3v0OT| zE*_QxS__|$ztNrn{&oF99!^}+mvDYeUUv*+UpY3(YJ}U=EKwtT023pLN1c5%{GO}c zcS8;9rm*7267$`^b7tR4E)eztfd!IhmGF-eWm#(-+2hBFpMeFuM&tlYJuMI96!MA0 zOF89w#c2$i9#b=NnAaM8c9I#{gb+0+Mg6psI2GB&c~BlG%#n+Bl-?W82fx4LQOg+x zGAg3hHD)N{KQp4x(Dfw6O$3lJSIv?Kb_B%7hvfMkyU7cK*VBAe~xRPo&>2YD60-Y;eDF z5Uetc61lVRjF=pi8Ro_`ZQ9H#?np?pQDFL1@B?vtRQ|GP?%aPMO)5weGsEIW7Bsqi zP<~vrC2j4)p+&Ih?$DChjI!4aO~m+qcdUq6Q`*j;2r&^BVUw@%GgFupg+30&5NRqT zftrXRA1J3edD9&=%4miCGewy=XRoyk8pb4Rl-u!OFEFB3Oi@xRtkWV|CRk9TPin6> z`1S|&26Oa+UzqxZAh*~$VBi}U0cLW81s!YrPV9*|?+OsqhpfJ+rSA^7Ohr0 zn#?FSImENOK=6$k0S=~!m1}Wr1>u%28sH`auPB&1t?B*IpwkZ{x-3vgb&Cb?iGTyp zO?EgZqNW2sx8>`K8gr5#Beg{^gTx#c#$r$>un}@oAJ2`JGqys5MHM}!OamcdqgexK z(x&L9C}$8>n-K7dT8{QMkHRpfVZmh9M-(ub25h95n}!Q|p(SY{h3Z&-ET)%E*Z1`?zM^BJPwqNL<};lK+i>DJmGVct1SDmGO9TqTz-$?=Yqc zAFR%W&<$jUSdyI)4KhVY_T4akvQHqc*>nSTwXWIr5$m+46v#3B;ddSa$`77eVurY}WG*=-uWHC;(6&W9xCoLNjWrv>Rk*_;JkYy24| zbT0>G1>+VEcxWT7VoXsfj#&VdSO&R*1b0V?D~(%oQZ(#|6fG}B!v;#x%85q7h_%>M zYVFb#&E8LnR-2;Pn@`c+Q76(wOq*GHMUj3mLkVzu*L&bcWIhkRHqL3o-0$ZiY%1%z z5dGv?N_Ihp&i$Y6FQ=vT2b~sQ>t~qlv;+_U4Kol(@+lO(*Se&FA!*i2HRIhqN%nCWIuC*ILCAS(tX5HOXkQ@HuE9#yA+K##E-@J{^4M zyIYWL(?rldUj$~0U}-~!<=0>dIJqkTtu)FbT$#X%MJ@4wt*RWm-<0D^YZfPMWNr*P**&}gKt?9>%8fbsu~U?a-a=(WIT7eN zh0ZFdXe^gDI0a{oFoEEx8^=Ur9#~E$Sz0%e2pL_S)7O~gCgh~kspBZ-F|pqXhy!^- zR|m2wK-gtY;3X z@&Q;`6d`Eoa+wTePbbaDsBF!_Aj;OLEO!o%k=5j)sFc0e}lo*F^9a+t~vqe4DW zm4BDAfFdA5pe=MfQdN@qdpffy2gAdLE`L&GW!{`k@-JN~ZXJ~2rGHp7X?vB-WqZ{P zELq~9Otz}$iScLUBh~w%=#A>zXn(eB0B!T~LizBQMu7e6mtv~_)g<*Fm#+bqRr9^f zda8{fgsGV>Bb<1;UivlsxRKJY)Jsm!Rj$yq|v_E}0SLfBzweGP3 zWm~FhQYGCL)J>|StCW0CapL85zYwVO``51rlOM0ocZTh%{r&Y+wV!OsP9BosP2H-$3wY?EJ!;m^ zsici=F0Z?y9P`$UW2VUc@XWsvoO+r9>K0IR-V)ex(~7Lqo=aTaJVzOF%YWPUp{mV= zt4uiY?^~TTa{J*mE<_LIUirb+yhPKs%OZWM2UGozRy$;ETM2GmEp2(&UR2s2Z_8Vy z!VZT5zMN}sE%GxW&@PsY63Ti=bey0sfP{fz%r^pZs;z*R%TL-&@!UbVsJ#=SjJ9uv z`tP^b!J2v7pQN}vu>H(^*OdBGGwLI`koF4zY~_(+2q)dkfIyT_v(2b{G*T!3(6i`q zTO?J!+ZQVbNab^xUVR7WRv@3nKjVMDHb1 z#MAdA6zT7K5GuUWS5Sh$n)w*4V6jzfl!T>>NmoQv^|<1R{w=tWZ0irBeWCwewAcIV z7bE7KUJG@D%8o}zz$>UOHjs}27bX-xPjpo;lAmF{${VZc32kgqa8W1ubk^4 zUx8O1cxtuG-@hXRk>xYE&t+5I-Ty9@jKyeUxQD-q_TVsXqlvNuA@E9k?OVHv{=tp9}RqkI7WW4Z+E8& z#fsbHvI#Zo3ZYt!c#q(X!*Xn7wYV}SuZ}E`KR;Xvv;XCAVVX^gj*u_69~s2RjUx;4 z=m}$z;b_g8b;CY7BK=4ALei0=w*|J>(6gKBZm4*tAh**niJeUOcDN%igOrPCrzlE= zx`$aeBp<5)m&&nRUY1xlmcutsDP}a!X7&Yp$N22lF>09?Jg4adLIvPpMx7#z#^pr3 zcCO0aX4J%$5kYS90!k|Kukn}Z`Qhag?a#0p>FP=i|B?`XH zxp%_A9v>dYW7zA7(&wJ%iH$Ejz~$S|U)306a`N=!^7!dxa^VZhHUnk@4kY^r0BOCER3t+;l%OAhP6~aPROrVJgVmrv zi1Eh(|AK!g8e_v4SdGqC04o6d0eyf^0g{1J3k0Mi%g~2NfRx~!pzEJQ@BRXMf0E9g z59vLv&h7{w3pL1X->J!*_1Nk-@y6U1=bi7YuGvql?m6`0+TImu9Z0>zW*9_DKFc-_ z^!5&Ua?>g89j!e(B7-I0MoJf4Q6cK*?<;`Eo;k`?lQ$LGsK=S`z@_M2>(eDnOTM0t&DyjUb_$Fq^i zuZ~ypCGyobD(Bt(nfKa?v%Fb`Ut1vKm+q3@S9|8)^SST0l`{V7Yr(2JA90u7@rGM1 nA0O{a{LlDBr@a2gTGU|+CkAutVeM|bT89a?_wBV5?C$$Nn>2ZE delta 6069 zcmb7IeQ;FQb-(w%w;$5(N>7$h^#yvnERq%>#786{Kp#&;7$-msu{{Ob2rL$(wb18E z1_!f>4YH8=khpeCh+=SzK~7A}WZT+**oo{o6VIfBaZ7EtK2|0+hxGaNDc$79Yv-2i*0%Fk#zsdO7FA@*f;M z+3y^gVAaBHYL=)LUVxK_;#-|vH2gbPgZGLW)=goJ499cbA3C$IB_;@ag203mnI-&I zyfkyIBm3-8VrPJ!SBo5glTXTloMQe;{7gTVC*QfkLjpOZZ+0jN;ocUqZRRpTB~m<6ZD5 zz6TfV2a1<85XvfDkMFV4CiiQDV3lSBnmK*b!$H;)VPKz6vfL|N}x`NPVS^_mOD0eNow``h~6;C>3k!H@>XQk-p*_MQ)gliKaC!%XMy~9r z3i6PYRm+7{AbDDj{J1K|qt=8F+-Q(rRCVT-n+#rXEtRO0($%?GiiP&M6hlTi<4Y9huDcw+OJb(udB;6WxDQ-3D226&`Q zuz*ljxX|Q15YU>;q4Pdi_Iv<#U56Gc6MOv*Q#V+^+3eGlR_%TlpdPilVE%r;+jRPM zteABa_XXiHQ)pjJ_~6ByoQ=^9DL{?3xT=Ix^W;9aQPs;+X5!d%RLtJ zV+p?#FwFy2M#OaDmu7j}BSx0Z+vH`4;dBCd#xh#pj97Weh4UgI#%eSMTA(rCmdBWZ zP7yOn4KW$SgsM;pQ(>qpEE3QWfJuyQnMM<=W(_}u$jvYiUbIHcG(6A^Uy>Lz6`fD> z*ml2daR*tPS)VboO~Mc`Ds**_9Zg5I7~t0DgJ5oe6PZyroM=H@-B@h$3I;=U!#%n( zp>EU048sMZ&ax@VLLBm-LsP;a)HfmlM{3^<7bN-w2Dm-Xa05;-Wmr9=B^VF_CUwj} z#2}t4iAi`{Yg9%9Jrw>%B;Zb(kudJBu_JLNJJOi4<20eqNvd2_s({&|+m0k0q`~nJ zoQZ@$%qp73nJmO|YP5?S4UPFVGhvW~9cHRePD`w3np#tAf5IMVnZ)G9QNGR3GkC?vcP6+9U zc8VHV8ZkZ7o!UqY@sJ#P3-0CC8Ln)vh~HJ1^S3d6o%Xrg??&8b0O}qy1MV_tQ{3s} zqS4GCQ@bk|gMvsz?tlaBJAERtpInyK9dKFP4k?!v6Ld%b3lf!MD7(>)@Y*b$K;0yAj|X^b*NlEPE=l0&X{^JvNY8*uO#cScan|E;B92eOLb*=UnxnD z1W=NMWJZ0#9jX#g2*`r-0jK`T`jU*P!3k#3nL8pPhC_DLTN$6sM7>$RRD3=tZ`5C% z_wiAxKt=?}zot5oHyd)rJ4a<&;{g;6Lyc4T_E|mnX09oguBNBZI^Gmh{ck0(`_?q0 z^{X{M$!MhN2tt?|_KOwo{N@6lH4|50X2?zJ^5mP%Kj01Vd)BU^dU52=ZM;EVzcb`$ zEbzKLvb%ZyELL*kx)(rrW8KEt1MBaa0;Ae*{T4-JoNri8{Hit%qcgGbp9%N;raYZ5 zm9O3VK%ug&J5laYHTEv5Cn~>;a`}FDFuwV|OM)+w{w?1IlRaAsoEGIsOCH_g7f%n# zi(B?_hg`U|B&CGiveo2z{IRWTICsQW?0-Dk_CQ0I;;H)<@G%!wiR&#tD>2%9^(|D$jh)I-51t$b!Po!K*r=^nL56+d1_uX-#%ppZjr+|Zddv-yHf9m-T6f^qrJt+dnjlD&%;3K{F z;`>%_BfcWK8sCO!gMl>S^jKI?<=bB$l*gj^$N}Tg3J`n{tySy_xJ#DzS+x5)`o3Mf z3}-h=B_E1g#!M>t7_$CC7kXj z9>aI)3GDCq=#xPV#Q)}CKaE!m{*p!pui*REQ=2f5J+z7QD>8hzG*hQLny~%|@p2-T zL;mP+VAa%dI!a&w(S&>35!z}LA=Tm}H8Ep~1Kv_p?^08%7Jo}{WLSQ7xUT339&LcvWIDGrlMfu2xbXTGCImPPmg?#queb6`a$dtf?%$LVDueznu2jvX= zlqBVmJt*bccX(Xt(au92Cg&$pNjkHR$iv4g3X~mE&l+4j)lpLtzkEE0&;3&Ir>Qpo znc0bt&Iu%08nw&=wr62Rdc}cpRw=|A$K{IA+BxccH6tcdikrNUvc4P~eUY+7`H5Dj ze*8ozCH1^@Vjhe#d7_CTKPXGAgU85cq@XQ|i56510@$jSk*d{V2@q!TsRD6}Yl7Ne zZn>haIP2t7#KjFc$|5M5ET`OE7tB7QcpJciK@PylL-KT8D02*Way{xQZhdk{o|IMa z^CkH>zU!aajPL1Z5bp7;XF2!$+(42U7{CkP&*F1`@Eqq%{?Exvvi#I?dFh7_%5A5X z$N%cNySU66E0T-H=E~7i;rOSginzwCSLDXASj=HC`nMg=6j^{bG{zi&Z*YSZ0-gar z9dIpY4FB1O!21BN0n*G{fH{C}VX#cVzW~ezT$t$B0@8dVvCd8O1^SbKv|j9HV!n zd+dR);JXv}PoYUQ82uCs9|ZgYe`K-Ofv*GH4~V0iy$t9D{A)nyI886Whv?Zq2K9~| z&OKrNesGPv`}yjvIrRMd@a^Z{mbQ*)r(?!Dv2*qlu`7!vwYG`N$G!r-PXuy!b|2y6}b@ZP^{(8?QM18$Hd{AMWXG>+A@~x6j_6F+cT* zI4H|sT45}h`A%FSdtZ8Als3w&@m!g9_KtG(dc1Pw?r_b{+SXm)SXR?oRaM=(thMYb z@5v!~{oHB3kRFw_@}D9w!QsvG&o~$LwFKASBaQL-GIDlfcE#-H=EWNmi>=_5viV$1 z){(#%^YlPAF;F;Yb N*xI$PNx?l`{|AW diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 9789295b32308aea42124172e8055be2d375ce67..ef9eb5aba31bd5c67452151c3d4593d73a967140 100644 GIT binary patch delta 225064 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

h1Ntg;ciN{EKd3*fRRmFHJZ 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≫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

Q&Cc_E$&-G5H_3f3BA=5S;&($!MHx`{= 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⩔imd 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

  • P**SEP#CEDWHD z6p-aVx!vbya9Ru|cF9BNO$q)qc1=QorKUt$K(VT3;tC*3)y7DvAK?VJ`>hRtb?0?Z zG1MdV)QqqCp{lJzf*>c87@p8qdR}CK)An)M)|(; z0C$1M2VNXjq*l-*Vkpa+305x7qE5KYF?6D9Xl(4qL)pz=M54h+(+%VI z(F?t#0ni_G+&**TmJg1vp}$hB&LKEr(--KJZ-`tj{-BWSr{IR^sRh>?K)E?*h)~2A zfKoy)LB5#`2#yl_SjbFK#Gsc&p>jQhenZ58oM*>M`mqKG4M(h;1z0T~ z*YHjuz$iHSXc&yBl6V%v2KJ9u48!MsD@rlhH8I3%BjUy%#d;|qtj*a>4oP-IrcY>I zXTghIa+Ub;te7|rw_VU9R0o+dAf3)&Y$_FDZst^y`ztk-v(ja>21GPqCOM7|J1TJq zSgoruuxDo#@C}q5_BvHpcF%)j4r~CfG&hF09}ZlPB93&CT;Hh{}Qyh_+vV{ z#7WwDYCY}ggcS|XJu#Os$Lf0g|f_om5pj!?Ag&l$qCv{P;!>e z(nqx0P}eM~r}%PCTvG$9w>{+LEf=95+IJ3HND7uRUV6Bw9sX)Pbp|_4?t5XKh8Omw zIV{!+!($ELuBZhb?}bfE+fRkT;K!JPRyBMI2&QqhO1;!E>Am4PyI?R9?m*_HNyJ0r zzjSLBrXi&b1C=q2{b#veePx)h>!zT$&!uiLO;+7BtoWko2f99pSO z=Kw~P!e~$`N(hM;itbcDCHP+-9NO`+S=JiN|8_U?Oyn&3D7pXTGf&5SwNt300(KxC z$QJ0281$jVI>aM$Lw@(G0*8)2rUO30rJow>n3W?how3BTiE$RT8-DB>NRF&R#ljpuBFmyQ{WHtA zTu_gV^fikTLZTE102;3VkfWJO9Jpy`7ql(e94fXw1(V|a#U{jziON~GYSFUPTQzex zCOGWZEuyh~`@+Cqwr>vjUi`Q#s>w@GyM&FZ{k)i47!Rt4+>xuj?VVDdO7_P zBOq8@*qN;6Tk&Z@^Bvm`UddSTMl9=Eefb;w`?NF6w%VbUtqD#U`yJo;^Y9J@(9GCg zl8a$%53$K7iKc##cB@DE;&rAMqZQjE>VtKHU zMw@?-Cl=?d)qc9{3`SHoIAcjRU^5~yIO~oem+a}NhSkFJA%SA2#v#=kUYj*e>inUc zgJf74Ue$pm+8&LJOv+%xSC$oJ+a-5`Ij(K4#5|rN@^jM;{%|m@VAXCf!d`DD{(wXn zi%d{en-?8iB?7kt6}sHBi7_B?t?*=e3i}`=Cu?#i(^J6;+G39Jkg=^cn95P9fXx;P zN051oc?MgfPU!8A8CBjxDqlMj_;NuPR#ojMOeG4{N4O^bZJym5B3K_EVaCs|p>V

    G)CYkAY2)z~88*-Aj7q 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 delta 1358 zcmY+DOKep|7{~8D)0P01PA`-K3wkX?FabNSGY>ZO^4R!F6zPjcJ9B0R2vSP#HKq#_ zNsN}3M8g$Fr9?0>VL>8#O`3=cSSXSpP!kPqd?cDQB$%*JBPQw`VlsepEQ^?#t`F58 zF5YasRR5}&{5IX#b#lI`rBE!yr+)O*n)-{UUT^E!S#{&po-sEzp${Gytv~(td(Hn< zluxByM%!}rz`jvkdv4s-T(vf)#}CvdHs)d83C)ZqZ#LD>%=}rLufKD;bNhS~EDXm? z68khqo{#&Dk>5l<5cyLih+NSE<60>E(hLhpoyA;xBU5Ar#%LK2PYi(0aJ?V2LGL^@Od3uJ^E9>LPCs}O(u@<7 z(o9-|t+g^dHUPRx+8U>g%Vc~nDRG@?z(4daMV9wKUVGwjd%AB^;bA*leD&yh1!6+eRD8q~ztBItDxX>{K$|cORjPgum z#zq-E?%Ec5MnHGCb23>F#)iORD2YH!q$yFH>ePrZJp^_@gSq9JX7R&{$7J|<2<(J1 z6*Q{kwNTjDREHhA0Ebj$lA+WYBZ!U4hPQTsxsr`}Vv(nDBuTtp*BkEc0n5XQ-Cz|= zt#XPJnnkrtnzHc8ZtyNN$YaW^qFOm5g$$#6Km)oIb3vr$&I*@06!2cK4`N1~)0}zb z6(L@Rb9=#4B}JLB4$~AfZ-iDoJoNT~j!+(st|7tVFmW*=L(JMx83sq%1mjTvW>Tsh z@Y?dLx zB{9)3%4d&^fcauuMh%abNqeOb)qHlp0Y4O>kQq%0j$Ruo6=$=97Tk(Ih(?}ij$OQ^ zQ5_X39&CUJr%`!I6?2)hmWLNSuuv(UA&m@6y@(d_aMuH|UO8fT10?v$2WFeI6S78#+CfasU7T diff --git a/node/cli/src/chain_spec.rs b/node/cli/src/chain_spec.rs index ea634ab06e..d8bc5bad5d 100644 --- a/node/cli/src/chain_spec.rs +++ b/node/cli/src/chain_spec.rs @@ -59,7 +59,6 @@ fn staging_testnet_config_genesis() -> GenesisConfig { consensus: Some(ConsensusConfig { code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), // TODO change authorities: initial_authorities.clone(), - _genesis_phantom_data: Default::default(), }), system: None, balances: Some(BalancesConfig { @@ -70,12 +69,10 @@ fn staging_testnet_config_genesis() -> GenesisConfig { transfer_fee: 1 * CENTS, creation_fee: 1 * CENTS, reclaim_rebate: 1 * CENTS, - _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { validators: initial_authorities.iter().cloned().map(Into::into).collect(), session_length: 5 * MINUTES, - _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { current_era: 0, @@ -89,13 +86,11 @@ fn staging_testnet_config_genesis() -> GenesisConfig { bonding_duration: 1 * DAYS, offline_slash_grace: 4, minimum_validator_count: 4, - _genesis_phantom_data: Default::default(), }), democracy: Some(DemocracyConfig { launch_period: 5 * MINUTES, // 1 day per public referendum voting_period: 5 * MINUTES, // 3 days to discuss & vote on an active referendum minimum_deposit: 50 * DOLLARS, // 12000 as the minimum deposit for a referendum - _genesis_phantom_data: Default::default(), }), council_seats: Some(CouncilSeatsConfig { active_council: vec![], @@ -108,23 +103,19 @@ fn staging_testnet_config_genesis() -> GenesisConfig { term_duration: 28 * DAYS, desired_seats: 0, inactive_grace_period: 1, // one additional vote should go by before an inactive voter can be reaped. - _genesis_phantom_data: Default::default(), }), council_voting: Some(CouncilVotingConfig { cooloff_period: 4 * DAYS, voting_period: 1 * DAYS, - _genesis_phantom_data: Default::default(), }), timestamp: Some(TimestampConfig { period: SECS_PER_BLOCK, - _genesis_phantom_data: Default::default(), }), treasury: Some(TreasuryConfig { proposal_bond: Permill::from_percent(5), proposal_bond_minimum: 1 * DOLLARS, spend_period: 1 * DAYS, burn: Permill::from_percent(50), - _genesis_phantom_data: Default::default(), }), contract: Some(ContractConfig { contract_fee: 1 * CENTS, @@ -134,11 +125,9 @@ fn staging_testnet_config_genesis() -> GenesisConfig { max_depth: 1024, block_gas_limit: 10_000_000, current_schedule: Default::default(), - _genesis_phantom_data: Default::default(), }), upgrade_key: Some(UpgradeKeyConfig { key: endowed_accounts[0].clone(), - _genesis_phantom_data: Default::default(), }), } } @@ -186,7 +175,6 @@ pub fn testnet_genesis( consensus: Some(ConsensusConfig { code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), authorities: initial_authorities.clone(), - _genesis_phantom_data: Default::default(), }), system: None, balances: Some(BalancesConfig { @@ -197,12 +185,10 @@ pub fn testnet_genesis( creation_fee: 0, reclaim_rebate: 0, balances: endowed_accounts.iter().map(|&k| (k.into(), (1 << 60))).collect(), - _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { validators: initial_authorities.iter().cloned().map(Into::into).collect(), session_length: 10, - _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { current_era: 0, @@ -216,13 +202,11 @@ pub fn testnet_genesis( current_offline_slash: 0, current_session_reward: 0, offline_slash_grace: 0, - _genesis_phantom_data: Default::default(), }), democracy: Some(DemocracyConfig { launch_period: 9, voting_period: 18, minimum_deposit: 10, - _genesis_phantom_data: Default::default(), }), council_seats: Some(CouncilSeatsConfig { active_council: endowed_accounts.iter() @@ -237,23 +221,19 @@ pub fn testnet_genesis( term_duration: 1000000, desired_seats: (endowed_accounts.len() - initial_authorities.len()) as u32, inactive_grace_period: 1, - _genesis_phantom_data: Default::default(), }), council_voting: Some(CouncilVotingConfig { cooloff_period: 75, voting_period: 20, - _genesis_phantom_data: Default::default(), }), timestamp: Some(TimestampConfig { period: 5, // 5 second block time. - _genesis_phantom_data: Default::default(), }), treasury: Some(TreasuryConfig { proposal_bond: Permill::from_percent(5), proposal_bond_minimum: 1_000_000, spend_period: 12 * 60 * 24, burn: Permill::from_percent(50), - _genesis_phantom_data: Default::default(), }), contract: Some(ContractConfig { contract_fee: 21, @@ -263,11 +243,9 @@ pub fn testnet_genesis( max_depth: 1024, block_gas_limit: 10_000_000, current_schedule: Default::default(), - _genesis_phantom_data: Default::default(), }), upgrade_key: Some(UpgradeKeyConfig { key: upgrade_key, - _genesis_phantom_data: Default::default(), }), } } @@ -311,7 +289,7 @@ mod tests { fn local_testnet_genesis_instant() -> GenesisConfig { let mut genesis = local_testnet_genesis(); - genesis.timestamp = Some(TimestampConfig { period: 0, _genesis_phantom_data: Default::default() }); + genesis.timestamp = Some(TimestampConfig { period: 0 }); genesis } diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index b232beb538..5a5edb89b0 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -28,7 +28,7 @@ use substrate_service::{ Roles, TaskExecutor, }; use node_executor; -use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue, NothingExtra}; +use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue}; use client; const AURA_SLOT_DURATION: u64 = 6; @@ -79,25 +79,17 @@ construct_service_factory! { }, LightService = LightComponents { |config, executor| >::new(config, executor) }, - FullImportQueue = AuraImportQueue, NothingExtra> - { |config, client| Ok(import_queue( - AuraConfig { + FullImportQueue = AuraImportQueue> + { |config, client| Ok(import_queue(AuraConfig { + local_key: None, + slot_duration: 5 + }, client)) }, + LightImportQueue = AuraImportQueue> + { |config, client| Ok( + import_queue(AuraConfig { local_key: None, slot_duration: 5 - }, - client, - NothingExtra, - )) - }, - LightImportQueue = AuraImportQueue, NothingExtra> - { |config, client| Ok(import_queue( - AuraConfig { - local_key: None, - slot_duration: 5 - }, - client, - NothingExtra, - )) + }, client)) }, } } diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index 4c8f5c1030..6cbbb2f11e 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -29,6 +29,3 @@ srml-timestamp = { path = "../../srml/timestamp" } srml-treasury = { path = "../../srml/treasury" } srml-contract = { path = "../../srml/contract" } wabt = "0.4" - -[features] -benchmarks = [] diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index d6fc59d7d7..704f2d342f 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -17,14 +17,10 @@ //! A `CodeExecutor` specialisation which uses natively compiled runtime when the wasm to be //! executed is equivalent to the natively compiled code. -#![cfg_attr(feature = "benchmarks", feature(test))] - extern crate node_runtime; #[macro_use] extern crate substrate_executor; #[cfg_attr(test, macro_use)] extern crate substrate_primitives as primitives; -#[cfg(feature = "benchmarks")] extern crate test; - #[cfg(test)] extern crate substrate_keyring as keyring; #[cfg(test)] extern crate sr_primitives as runtime_primitives; #[cfg(test)] extern crate srml_support as runtime_support; @@ -234,12 +230,10 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, - _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { session_length: 2, validators: vec![One.to_raw_public().into(), Two.to_raw_public().into(), three], - _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { sessions_per_era: 2, @@ -253,7 +247,6 @@ mod tests { current_offline_slash: 0, current_session_reward: 0, offline_slash_grace: 0, - _genesis_phantom_data: Default::default(), }), democracy: Some(Default::default()), council_seats: Some(Default::default()), @@ -751,19 +744,4 @@ mod tests { assert!(t.storage_changes_root(Default::default(), 0).is_some()); } - - #[cfg(feature = "benchmarks")] - mod benches { - use super::*; - use test::Bencher; - - #[bench] - fn wasm_execute_block(b: &mut Bencher) { - b.iter(|| { - let mut t = new_test_ext(false); - WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "execute_block", &block1(false).0).unwrap(); - WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "execute_block", &block2().0).unwrap(); - }); - } - } } diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 3a032be99a..d340628488 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -472,6 +472,11 @@ dependencies = [ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "nan-preserving-float" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "net2" version = "0.2.33" @@ -934,7 +939,7 @@ dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0", "substrate-primitives 0.1.0", - "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1265,7 +1270,7 @@ dependencies = [ "substrate-serializer 0.1.0", "substrate-state-machine 0.1.0", "substrate-trie 0.4.0", - "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1311,7 +1316,7 @@ dependencies = [ "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.5.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1654,11 +1659,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wasmi" -version = "0.4.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1781,6 +1787,7 @@ dependencies = [ "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" @@ -1861,7 +1868,7 @@ dependencies = [ "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8a60b9508cff2b7c27ed41200dd668806280740fadc8c88440e9c88625e84f1a" +"checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index c61d791a9bd7b3723bf0831a629283574b6db173..b9cceb155a933475aa8da3ac55116dac729353a5 100644 GIT binary patch literal 831981 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ℜ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 }Sx(%0pJC5D^h3zRGe+*ek#&X}v(~@G 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 literal 620256 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 z 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�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∓g6KT&OHt+hpH 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 diff --git a/srml/balances/src/mock.rs b/srml/balances/src/mock.rs index b3355636b3..5fb6bb80dc 100644 --- a/srml/balances/src/mock.rs +++ b/srml/balances/src/mock.rs @@ -104,7 +104,6 @@ impl ExtBuilder { transfer_fee: self.transfer_fee, creation_fee: self.creation_fee, reclaim_rebate: 0, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } diff --git a/srml/consensus/src/mock.rs b/srml/consensus/src/mock.rs index 88eb669a84..e3a13d4597 100644 --- a/srml/consensus/src/mock.rs +++ b/srml/consensus/src/mock.rs @@ -54,7 +54,6 @@ pub fn new_test_ext(authorities: Vec) -> runtime_io::TestExternalities{ code: vec![], authorities, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } diff --git a/srml/contract/src/tests.rs b/srml/contract/src/tests.rs index db339ecde1..27d6e59a95 100644 --- a/srml/contract/src/tests.rs +++ b/srml/contract/src/tests.rs @@ -131,7 +131,6 @@ impl ExtBuilder { transfer_fee: self.transfer_fee, creation_fee: self.creation_fee, reclaim_rebate: 0, - _genesis_phantom_data: Default::default(), }.build_storage() .unwrap().0, ); @@ -144,7 +143,6 @@ impl ExtBuilder { max_depth: 100, block_gas_limit: self.block_gas_limit, current_schedule: Default::default(), - _genesis_phantom_data: Default::default(), }.build_storage() .unwrap().0, ); diff --git a/srml/council/src/lib.rs b/srml/council/src/lib.rs index 2ea0def3a5..26d88c6c7b 100644 --- a/srml/council/src/lib.rs +++ b/srml/council/src/lib.rs @@ -122,13 +122,11 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(democracy::GenesisConfig::{ launch_period: 1, voting_period: 3, minimum_deposit: 1, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(seats::GenesisConfig:: { candidacy_bond: 9, @@ -145,12 +143,10 @@ mod tests { presentation_duration: 2, desired_seats: 2, term_duration: 5, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(voting::GenesisConfig:: { cooloff_period: 2, voting_period: 1, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/democracy/src/lib.rs b/srml/democracy/src/lib.rs index d2d2b6e4f9..0c589d5893 100644 --- a/srml/democracy/src/lib.rs +++ b/srml/democracy/src/lib.rs @@ -358,13 +358,11 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ launch_period: 1, voting_period: 1, minimum_deposit: 1, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/example/src/lib.rs b/srml/example/src/lib.rs index 9ad2f6fdb8..8dcbb7094b 100644 --- a/srml/example/src/lib.rs +++ b/srml/example/src/lib.rs @@ -313,7 +313,6 @@ mod tests { t.extend(GenesisConfig::{ dummy: 42, foo: 24, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } diff --git a/srml/executive/src/lib.rs b/srml/executive/src/lib.rs index c5aded4a68..005b8508db 100644 --- a/srml/executive/src/lib.rs +++ b/srml/executive/src/lib.rs @@ -327,7 +327,6 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); let xt = primitives::testing::TestXt(Some(1), 0, Call::transfer(2.into(), 69.into())); let mut t = runtime_io::TestExternalities::::new(t); diff --git a/srml/session/src/lib.rs b/srml/session/src/lib.rs index 33ac3dbabf..99bf182cf8 100644 --- a/srml/session/src/lib.rs +++ b/srml/session/src/lib.rs @@ -270,16 +270,13 @@ mod tests { t.extend(consensus::GenesisConfig::{ code: vec![], authorities: vec![1, 2, 3], - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(timestamp::GenesisConfig::{ period: 5, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ session_length: 2, validators: vec![1, 2, 3], - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/staking/src/mock.rs b/srml/staking/src/mock.rs index bfef4653a6..b22af1b1b5 100644 --- a/srml/staking/src/mock.rs +++ b/srml/staking/src/mock.rs @@ -88,12 +88,10 @@ pub fn new_test_ext( t.extend(consensus::GenesisConfig::{ code: vec![], authorities: vec![], - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(session::GenesisConfig::{ session_length, validators: vec![10, 20], - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(balances::GenesisConfig::{ balances: if monied { @@ -111,7 +109,6 @@ pub fn new_test_ext( transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ sessions_per_era, @@ -125,11 +122,9 @@ pub fn new_test_ext( current_session_reward: reward, current_offline_slash: 20, offline_slash_grace: 0, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(timestamp::GenesisConfig::{ - period: 5, - _genesis_phantom_data: Default::default(), + period: 5 }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/support/src/storage/generator.rs b/srml/support/src/storage/generator.rs index 60e26e8aee..31d583d6c9 100644 --- a/srml/support/src/storage/generator.rs +++ b/srml/support/src/storage/generator.rs @@ -627,8 +627,6 @@ macro_rules! __generate_genesis_config { #[serde(rename_all = "camelCase")] #[serde(deny_unknown_fields)] pub struct GenesisConfig<$traitinstance: $traittype> { - #[serde(skip)] - pub _genesis_phantom_data: $crate::storage::generator::PhantomData<$traitinstance>, $(pub $fieldname : $fieldtype ,)* $( $(#[$attr])* pub $extrafieldname : $extrafieldty ,)* } @@ -637,7 +635,6 @@ macro_rules! __generate_genesis_config { impl<$traitinstance: $traittype> Default for GenesisConfig<$traitinstance> { fn default() -> Self { GenesisConfig { - _genesis_phantom_data: Default::default(), $($fieldname : $fielddefault ,)* $($extrafieldname : $extrafielddefault ,)* } diff --git a/srml/system/src/lib.rs b/srml/system/src/lib.rs index 666348254f..c3cffda04f 100644 --- a/srml/system/src/lib.rs +++ b/srml/system/src/lib.rs @@ -201,6 +201,7 @@ decl_storage! { } add_extra_genesis { config(changes_trie_config): Option; + config(_phantom): ::std::marker::PhantomData; build(|storage: &mut primitives::StorageMap, _: &mut primitives::ChildrenStorageMap, config: &GenesisConfig| { use codec::Encode; diff --git a/srml/timestamp/src/lib.rs b/srml/timestamp/src/lib.rs index db1e2934db..35c82b532f 100644 --- a/srml/timestamp/src/lib.rs +++ b/srml/timestamp/src/lib.rs @@ -211,10 +211,7 @@ mod tests { #[test] fn timestamp_works() { let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; - t.extend(GenesisConfig:: { - period: 5, - _genesis_phantom_data: Default::default() - }.build_storage().unwrap().0); + t.extend(GenesisConfig:: { period: 0 }.build_storage().unwrap().0); with_externalities(&mut TestExternalities::new(t), || { Timestamp::set_timestamp(42); @@ -227,10 +224,7 @@ mod tests { #[should_panic(expected = "Timestamp must be updated only once in the block")] fn double_timestamp_should_fail() { let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; - t.extend(GenesisConfig:: { - period: 5, - _genesis_phantom_data: Default::default() - }.build_storage().unwrap().0); + t.extend(GenesisConfig:: { period: 5 }.build_storage().unwrap().0); with_externalities(&mut TestExternalities::new(t), || { Timestamp::set_timestamp(42); @@ -243,10 +237,7 @@ mod tests { #[should_panic(expected = "Timestamp must increment by at least between sequential blocks")] fn block_period_is_enforced() { let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; - t.extend(GenesisConfig:: { - period: 5, - _genesis_phantom_data: Default::default() - }.build_storage().unwrap().0); + t.extend(GenesisConfig:: { period: 5 }.build_storage().unwrap().0); with_externalities(&mut TestExternalities::new(t), || { Timestamp::set_timestamp(42); diff --git a/srml/treasury/src/lib.rs b/srml/treasury/src/lib.rs index 2ec3deffce..340ab48a8c 100644 --- a/srml/treasury/src/lib.rs +++ b/srml/treasury/src/lib.rs @@ -330,14 +330,12 @@ mod tests { creation_fee: 0, existential_deposit: 0, reclaim_rebate: 0, - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ proposal_bond: Permill::from_percent(5), proposal_bond_minimum: 1, spend_period: 2, burn: Permill::from_percent(50), - _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } -- GitLab From e59521d220de3bda691d96949e961890ec334057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Sun, 18 Nov 2018 10:09:18 +0100 Subject: [PATCH 064/243] Revert and redo #952 (#1133) * Revert "Pruning changes trie without digests (#952)" This reverts commit 468d4698ad91385c385225215aa81290697e90cb. * pruning changes tries without digests * u64::max_value() * Update wasm files and fix merge conflict * Fixes tests --- Cargo.lock | 17 +-- core/client/db/src/lib.rs | 113 +++++++++--------- core/client/src/runtime_api/macros.rs | 82 +++++++++++-- core/consensus/aura/src/lib.rs | 45 +++++-- core/executor/Cargo.toml | 2 +- core/primitives/Cargo.toml | 2 +- core/sr-sandbox/Cargo.toml | 2 +- core/test-runtime/wasm/Cargo.lock | 15 +-- .../substrate_test_runtime.compact.wasm | Bin 223056 -> 45227 bytes node/cli/src/chain_spec.rs | 24 +++- node/cli/src/service.rs | 28 +++-- node/executor/Cargo.toml | 3 + node/executor/src/lib.rs | 22 ++++ node/runtime/wasm/Cargo.lock | 17 +-- .../release/node_runtime.compact.wasm | Bin 831981 -> 613214 bytes srml/balances/src/mock.rs | 1 + srml/consensus/src/mock.rs | 1 + srml/contract/src/tests.rs | 2 + srml/council/src/lib.rs | 4 + srml/democracy/src/lib.rs | 2 + srml/example/src/lib.rs | 1 + srml/executive/src/lib.rs | 1 + srml/session/src/lib.rs | 3 + srml/staking/src/mock.rs | 7 +- srml/support/src/storage/generator.rs | 3 + srml/system/src/lib.rs | 1 - srml/timestamp/src/lib.rs | 15 ++- srml/treasury/src/lib.rs | 2 + 28 files changed, 287 insertions(+), 128 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 08ee2e5604..7a7ba66182 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1661,11 +1661,6 @@ dependencies = [ "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "nan-preserving-float" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "native-tls" version = "0.2.2" @@ -2609,7 +2604,7 @@ dependencies = [ "sr-std 0.1.0", "substrate-primitives 0.1.0", "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3177,7 +3172,7 @@ dependencies = [ "substrate-state-machine 0.1.0", "substrate-trie 0.4.0", "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3313,7 +3308,7 @@ dependencies = [ "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4156,12 +4151,11 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4473,7 +4467,6 @@ dependencies = [ "checksum multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" "checksum multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" "checksum names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" -"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" "checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" @@ -4650,7 +4643,7 @@ dependencies = [ "checksum wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "182ae543249ccf2705f324d233891c1176fca142e137b55ba43d9dbfe93f18a2" "checksum wabt-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ca77c6b934a2b32618941b2f565aac43b8cb7141378c3b4fba4d8fcdcd57da3" "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" -"checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" +"checksum wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8a60b9508cff2b7c27ed41200dd668806280740fadc8c88440e9c88625e84f1a" "checksum websocket 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c9faed2bff8af2ea6b9f8b917d3d00b467583f6781fe3def174a9e33c879703" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index bdc82bfc35..a01d5a368c 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -1276,6 +1276,62 @@ mod tests { check_changes(&backend, 2, changes2); } + #[test] + fn changes_trie_storage_works_with_forks() { + let backend = Backend::::new_test(1000, 100); + + let changes0 = vec![(b"k0".to_vec(), b"v0".to_vec())]; + let changes1 = vec![(b"k1".to_vec(), b"v1".to_vec())]; + let changes2 = vec![(b"k2".to_vec(), b"v2".to_vec())]; + let block0 = insert_header(&backend, 0, Default::default(), changes0.clone(), Default::default()); + let block1 = insert_header(&backend, 1, block0, changes1.clone(), Default::default()); + let block2 = insert_header(&backend, 2, block1, changes2.clone(), Default::default()); + + let changes2_1_0 = vec![(b"k3".to_vec(), b"v3".to_vec())]; + let changes2_1_1 = vec![(b"k4".to_vec(), b"v4".to_vec())]; + let block2_1_0 = insert_header(&backend, 3, block2, changes2_1_0.clone(), Default::default()); + let block2_1_1 = insert_header(&backend, 4, block2_1_0, changes2_1_1.clone(), Default::default()); + + let changes2_2_0 = vec![(b"k5".to_vec(), b"v5".to_vec())]; + let changes2_2_1 = vec![(b"k6".to_vec(), b"v6".to_vec())]; + let block2_2_0 = insert_header(&backend, 3, block2, changes2_2_0.clone(), Default::default()); + let block2_2_1 = insert_header(&backend, 4, block2_2_0, changes2_2_1.clone(), Default::default()); + + // finalize block1 + backend.changes_tries_storage.meta.write().finalized_number = 1; + + // branch1: when asking for finalized block hash + let (changes1_root, _) = prepare_changes(changes1); + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 1), Ok(Some(changes1_root))); + + // branch2: when asking for finalized block hash + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_2_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 1), Ok(Some(changes1_root))); + + // branch1: when asking for non-finalized block hash (search by traversal) + let (changes2_1_0_root, _) = prepare_changes(changes2_1_0); + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_1_0_root))); + + // branch2: when asking for non-finalized block hash (search using canonicalized hint) + let (changes2_2_0_root, _) = prepare_changes(changes2_2_0); + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_2_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); + + // finalize first block of branch2 (block2_2_0) + backend.changes_tries_storage.meta.write().finalized_number = 3; + + // branch2: when asking for finalized block of this branch + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); + + // branch1: when asking for finalized block of other branch + // => result is incorrect (returned for the block of branch1), but this is expected, + // because the other fork is abandoned (forked before finalized header) + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); + } + #[test] fn changes_tries_with_digest_are_pruned_on_finalization() { let mut backend = Backend::::new_test(1000, 100); @@ -1378,6 +1434,7 @@ mod tests { backend.blockchain().header(BlockId::Number(num)).unwrap().unwrap().digest().logs().iter() .find(|i| i.as_changes_trie_root().is_some()).unwrap().as_changes_trie_root().unwrap().clone() } + let root1 = read_changes_trie_root(&backend, 1); assert_eq!(backend.changes_tries_storage.root(&anchor, 1).unwrap(), Some(root1)); let root2 = read_changes_trie_root(&backend, 2); assert_eq!(backend.changes_tries_storage.root(&anchor, 2).unwrap(), Some(root2)); let root3 = read_changes_trie_root(&backend, 3); assert_eq!(backend.changes_tries_storage.root(&anchor, 3).unwrap(), Some(root3)); @@ -1400,62 +1457,6 @@ mod tests { assert!(backend.changes_tries_storage.get(&root3).unwrap().is_some()); } - #[test] - fn changes_trie_storage_works_with_forks() { - let backend = Backend::::new_test(1000, 100); - - let changes0 = vec![(b"k0".to_vec(), b"v0".to_vec())]; - let changes1 = vec![(b"k1".to_vec(), b"v1".to_vec())]; - let changes2 = vec![(b"k2".to_vec(), b"v2".to_vec())]; - let block0 = insert_header(&backend, 0, Default::default(), changes0.clone(), Default::default()); - let block1 = insert_header(&backend, 1, block0, changes1.clone(), Default::default()); - let block2 = insert_header(&backend, 2, block1, changes2.clone(), Default::default()); - - let changes2_1_0 = vec![(b"k3".to_vec(), b"v3".to_vec())]; - let changes2_1_1 = vec![(b"k4".to_vec(), b"v4".to_vec())]; - let block2_1_0 = insert_header(&backend, 3, block2, changes2_1_0.clone(), Default::default()); - let block2_1_1 = insert_header(&backend, 4, block2_1_0, changes2_1_1.clone(), Default::default()); - - let changes2_2_0 = vec![(b"k5".to_vec(), b"v5".to_vec())]; - let changes2_2_1 = vec![(b"k6".to_vec(), b"v6".to_vec())]; - let block2_2_0 = insert_header(&backend, 3, block2, changes2_2_0.clone(), Default::default()); - let block2_2_1 = insert_header(&backend, 4, block2_2_0, changes2_2_1.clone(), Default::default()); - - // finalize block1 - backend.changes_tries_storage.meta.write().finalized_number = 1; - - // branch1: when asking for finalized block hash - let (changes1_root, _) = prepare_changes(changes1); - let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; - assert_eq!(backend.changes_tries_storage.root(&anchor, 1), Ok(Some(changes1_root))); - - // branch2: when asking for finalized block hash - let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_2_1, number: 4 }; - assert_eq!(backend.changes_tries_storage.root(&anchor, 1), Ok(Some(changes1_root))); - - // branch1: when asking for non-finalized block hash (search by traversal) - let (changes2_1_0_root, _) = prepare_changes(changes2_1_0); - let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; - assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_1_0_root))); - - // branch2: when asking for non-finalized block hash (search using canonicalized hint) - let (changes2_2_0_root, _) = prepare_changes(changes2_2_0); - let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_2_1, number: 4 }; - assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); - - // finalize first block of branch2 (block2_2_0) - backend.changes_tries_storage.meta.write().finalized_number = 3; - - // branch2: when asking for finalized block of this branch - assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); - - // branch1: when asking for finalized block of other branch - // => result is incorrect (returned for the block of branch1), but this is expected, - // because the other fork is abandoned (forked before finalized header) - let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; - assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); - } - #[test] fn tree_route_works() { let backend = Backend::::new_test(1000, 100); diff --git a/core/client/src/runtime_api/macros.rs b/core/client/src/runtime_api/macros.rs index b58f2143c8..1721fbd416 100644 --- a/core/client/src/runtime_api/macros.rs +++ b/core/client/src/runtime_api/macros.rs @@ -465,14 +465,20 @@ macro_rules! impl_runtime_apis { )* } impl_runtime_apis! { + @EXTEND_FUNCTIONS $runtime; - $( $fn_name ( $( $arg_name: $arg_ty ),* ); )*; + ; + $trait_name; + $( $( $generic ),* )*; + { $( $fn_name ( $( $arg_name: $arg_ty ),* ); )* } $( $rest )* } }; ( $runtime:ident; - $( $fn_name_parsed:ident ( $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); )*; + $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( + $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); + )*; impl $trait_name:ident $( < $( $generic:ident ),* > )* for $runtime_ignore:ident { $( fn $fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ) $( -> $return_ty:ty )* { @@ -490,15 +496,73 @@ macro_rules! impl_runtime_apis { )* } impl_runtime_apis! { + @EXTEND_FUNCTIONS $runtime; - $( $fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); )* - $( $fn_name ( $( $arg_name: $arg_ty ),* ); )*; + $( + $trait_name_parsed $( < $( $parsed_generic ),* > )* + ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); + )*; + $trait_name; + $( $( $generic ),* )*; + { $( $fn_name ( $( $arg_name: $arg_ty ),* ); )* } + $( $rest )* + } + }; + (@EXTEND_FUNCTIONS + $runtime:ident; + $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( + $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); + )*; + $trait_name:ident; + $( $generic:ident ),*; + { + $fn_name_extend:ident ( $( $arg_name_extend:ident : $arg_ty_extend:ty ),* ); + $( $extend_rest:tt )* + } + $( $rest:tt )* + ) => { + impl_runtime_apis! { + @EXTEND_FUNCTIONS + $runtime; + $( + $trait_name_parsed $( < $( $parsed_generic ),* > )* + ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); + )* + $trait_name < $( $generic ),* > + ::$fn_name_extend ( $( $arg_name_extend: $arg_ty_extend ),* );; + $trait_name; + $( $generic ),*; + { + $( $extend_rest )* + } + $( $rest )* + } + }; + (@EXTEND_FUNCTIONS + $runtime:ident; + $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( + $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); + )*; + $trait_name:ident; + $( $generic:ident ),*; + {} + $( $rest:tt )* + ) => { + impl_runtime_apis! { + $runtime; + $( + $trait_name_parsed $( < $( $parsed_generic ),* > )* + ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); + )*; $( $rest )* } }; ( $runtime:ident; - $( $fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ); )*; + $( + $trait_name:ident $( < $( $generic:ident ),* > )* + ::$fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ); + )*; ) => { pub mod api { use super::*; @@ -511,6 +575,7 @@ macro_rules! impl_runtime_apis { Some({impl_runtime_apis! { @GENERATE_IMPL_CALL $runtime; + $trait_name $( < $( $generic ),* > )*; $fn_name; $( $arg_name : $arg_ty ),*; data; @@ -536,6 +601,7 @@ macro_rules! impl_runtime_apis { let output = { impl_runtime_apis! { @GENERATE_IMPL_CALL $runtime; + $trait_name $( < $( $generic ),* > )*; $fn_name; $( $arg_name : $arg_ty ),*; input; @@ -553,6 +619,7 @@ macro_rules! impl_runtime_apis { }; (@GENERATE_IMPL_CALL $runtime:ident; + $trait_name:ident $( < $( $generic:ident ),* > )*; $fn_name:ident; $arg_name:ident : $arg_ty:ty; $input:ident; @@ -562,11 +629,12 @@ macro_rules! impl_runtime_apis { None => panic!("Bad input data provided to {}", stringify!($fn_name)), }; - let output = $runtime::$fn_name($arg_name); + let output = <$runtime as $trait_name $( < $( $generic ),* > )*>::$fn_name($arg_name); $crate::runtime_api::Encode::encode(&output) }; (@GENERATE_IMPL_CALL $runtime:ident; + $trait_name:ident $( < $( $generic:ident ),* > )*; $fn_name:ident; $( $arg_name:ident : $arg_ty:ty ),*; $input:ident; @@ -576,7 +644,7 @@ macro_rules! impl_runtime_apis { None => panic!("Bad input data provided to {}", stringify!($fn_name)), }; - let output = $runtime::$fn_name($( $arg_name ),*); + let output = <$runtime as $trait_name $( < $( $generic ),* > )*>::$fn_name($( $arg_name ),*); $crate::runtime_api::Encode::encode(&output) }; } diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index babfef8dc1..1869eba5dd 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -286,7 +286,6 @@ enum CheckedHeader { Checked(H, u64, ed25519::Signature), } - /// check a header has been signed by the right key. If the slot is too far in the future, an error will be returned. /// if it's successful, returns the pre-header, the slot number, and the signat. // @@ -328,15 +327,37 @@ fn check_header(slot_now: u64, mut header: B::Header, hash: B::Hash, a } } +/// Extra verification for Aura blocks. +pub trait ExtraVerification: Send + Sync { + /// Future that resolves when the block is verified or fails with error if not. + type Verified: IntoFuture; + + /// Do additional verification for this block. + fn verify(&self, header: &B::Header, body: Option<&[B::Extrinsic]>) -> Self::Verified; +} + +/// No-op extra verification. +#[derive(Debug, Clone, Copy)] +pub struct NothingExtra; + +impl ExtraVerification for NothingExtra { + type Verified = Result<(), String>; + + fn verify(&self, _: &B::Header, _: Option<&[B::Extrinsic]>) -> Self::Verified { + Ok(()) + } +} /// A verifier for Aura blocks. -pub struct AuraVerifier { +pub struct AuraVerifier { config: Config, client: Arc, + extra: E, } -impl Verifier for AuraVerifier where +impl Verifier for AuraVerifier where C: Authorities + BlockImport + Send + Sync, DigestItemFor: CompatibleDigestItem, + E: ExtraVerification, { fn verify( &self, @@ -352,6 +373,8 @@ impl Verifier for AuraVerifier where let authorities = self.client.authorities(&BlockId::Hash(parent_hash)) .map_err(|e| format!("Could not fetch authorities at {:?}: {:?}", parent_hash, e))?; + let extra_verification = self.extra.verify(&header, body.as_ref().map(|x| &x[..])); + // we add one to allow for some small drift. // FIXME: in the future, alter this queue to allow deferring of headers // https://github.com/paritytech/substrate/issues/1019 @@ -362,6 +385,7 @@ impl Verifier for AuraVerifier where debug!(target: "aura", "Checked {:?}; importing.", pre_header); + extra_verification.into_future().wait()?; let import_block = ImportBlock { origin, header: pre_header, @@ -384,20 +408,19 @@ impl Verifier for AuraVerifier where } /// The Aura import queue type. -pub type AuraImportQueue = BasicQueue>; +pub type AuraImportQueue = BasicQueue>; /// Start an import queue for the Aura consensus algorithm. -pub fn import_queue(config: Config, client: Arc) -> AuraImportQueue where +pub fn import_queue(config: Config, client: Arc, extra: E) -> AuraImportQueue where B: Block, C: Authorities + BlockImport + Send + Sync, DigestItemFor: CompatibleDigestItem, + E: ExtraVerification, { - let verifier = Arc::new(AuraVerifier { config, client: client.clone() }); + let verifier = Arc::new(AuraVerifier { config, client: client.clone(), extra, }); BasicQueue::new(verifier, client) } - - #[cfg(test)] mod tests { use super::*; @@ -443,12 +466,12 @@ mod tests { const TEST_ROUTING_INTERVAL: Duration = Duration::from_millis(50); pub struct AuraTestNet { - peers: Vec, ()>>>, + peers: Vec, ()>>>, started: bool } impl TestNetFactory for AuraTestNet { - type Verifier = AuraVerifier; + type Verifier = AuraVerifier; type PeerData = (); /// Create new test network with peers and given config. @@ -463,7 +486,7 @@ mod tests { -> Arc { let config = Config { local_key: None, slot_duration: SLOT_DURATION }; - Arc::new(AuraVerifier { client, config }) + Arc::new(AuraVerifier { client, config, extra: NothingExtra }) } fn peer(&self, i: usize) -> &Peer { diff --git a/core/executor/Cargo.toml b/core/executor/Cargo.toml index a3de26a3cb..c6cddf341c 100644 --- a/core/executor/Cargo.toml +++ b/core/executor/Cargo.toml @@ -14,7 +14,7 @@ substrate-state-machine = { path = "../state-machine" } sr-version = { path = "../sr-version" } serde = "1.0" serde_derive = "1.0" -wasmi = { version = "0.4.1" } +wasmi = { version = "0.4.2" } byteorder = "1.1" lazy_static = "1.0" parking_lot = "*" diff --git a/core/primitives/Cargo.toml b/core/primitives/Cargo.toml index 171841f1e2..5821a5fe94 100644 --- a/core/primitives/Cargo.toml +++ b/core/primitives/Cargo.toml @@ -15,7 +15,7 @@ serde_derive = { version = "1.0", optional = true } uint = { version = "0.5.0-beta", default-features = false } twox-hash = { version = "1.1.0", optional = true } byteorder = { version = "1.1", default-features = false } -wasmi = { version = "0.4.1", optional = true } +wasmi = { version = "0.4.2", optional = true } hash-db = { git = "https://github.com/paritytech/trie", default-features = false } hash256-std-hasher = { git = "https://github.com/paritytech/trie", default-features = false } ring = { version = "0.12", optional = true } diff --git a/core/sr-sandbox/Cargo.toml b/core/sr-sandbox/Cargo.toml index 8cb35aed79..daa9408296 100755 --- a/core/sr-sandbox/Cargo.toml +++ b/core/sr-sandbox/Cargo.toml @@ -8,7 +8,7 @@ build = "build.rs" rustc_version = "0.2" [dependencies] -wasmi = { version = "0.4.1", optional = true } +wasmi = { version = "0.4.2", optional = true } substrate-primitives = { path = "../primitives", default-features = false } sr-std = { path = "../sr-std", default-features = false } parity-codec = { version = "2.1", default-features = false } diff --git a/core/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock index f9c0964148..c268f0c400 100644 --- a/core/test-runtime/wasm/Cargo.lock +++ b/core/test-runtime/wasm/Cargo.lock @@ -472,11 +472,6 @@ dependencies = [ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "nan-preserving-float" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "net2" version = "0.2.33" @@ -985,7 +980,7 @@ dependencies = [ "substrate-serializer 0.1.0", "substrate-state-machine 0.1.0", "substrate-trie 0.4.0", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1019,7 +1014,7 @@ dependencies = [ "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.5.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1379,12 +1374,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wasmi" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1507,7 +1501,6 @@ dependencies = [ "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" @@ -1586,7 +1579,7 @@ dependencies = [ "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" +"checksum wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8a60b9508cff2b7c27ed41200dd668806280740fadc8c88440e9c88625e84f1a" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 142b7da402fa1faaaa0be775ace981e859448b25..d353d621df3f10a412b1e193ab6e38cd798bc9e3 100644 GIT binary patch delta 6602 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 diff --git a/node/cli/src/chain_spec.rs b/node/cli/src/chain_spec.rs index d8bc5bad5d..ea634ab06e 100644 --- a/node/cli/src/chain_spec.rs +++ b/node/cli/src/chain_spec.rs @@ -59,6 +59,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig { consensus: Some(ConsensusConfig { code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), // TODO change authorities: initial_authorities.clone(), + _genesis_phantom_data: Default::default(), }), system: None, balances: Some(BalancesConfig { @@ -69,10 +70,12 @@ fn staging_testnet_config_genesis() -> GenesisConfig { transfer_fee: 1 * CENTS, creation_fee: 1 * CENTS, reclaim_rebate: 1 * CENTS, + _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { validators: initial_authorities.iter().cloned().map(Into::into).collect(), session_length: 5 * MINUTES, + _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { current_era: 0, @@ -86,11 +89,13 @@ fn staging_testnet_config_genesis() -> GenesisConfig { bonding_duration: 1 * DAYS, offline_slash_grace: 4, minimum_validator_count: 4, + _genesis_phantom_data: Default::default(), }), democracy: Some(DemocracyConfig { launch_period: 5 * MINUTES, // 1 day per public referendum voting_period: 5 * MINUTES, // 3 days to discuss & vote on an active referendum minimum_deposit: 50 * DOLLARS, // 12000 as the minimum deposit for a referendum + _genesis_phantom_data: Default::default(), }), council_seats: Some(CouncilSeatsConfig { active_council: vec![], @@ -103,19 +108,23 @@ fn staging_testnet_config_genesis() -> GenesisConfig { term_duration: 28 * DAYS, desired_seats: 0, inactive_grace_period: 1, // one additional vote should go by before an inactive voter can be reaped. + _genesis_phantom_data: Default::default(), }), council_voting: Some(CouncilVotingConfig { cooloff_period: 4 * DAYS, voting_period: 1 * DAYS, + _genesis_phantom_data: Default::default(), }), timestamp: Some(TimestampConfig { period: SECS_PER_BLOCK, + _genesis_phantom_data: Default::default(), }), treasury: Some(TreasuryConfig { proposal_bond: Permill::from_percent(5), proposal_bond_minimum: 1 * DOLLARS, spend_period: 1 * DAYS, burn: Permill::from_percent(50), + _genesis_phantom_data: Default::default(), }), contract: Some(ContractConfig { contract_fee: 1 * CENTS, @@ -125,9 +134,11 @@ fn staging_testnet_config_genesis() -> GenesisConfig { max_depth: 1024, block_gas_limit: 10_000_000, current_schedule: Default::default(), + _genesis_phantom_data: Default::default(), }), upgrade_key: Some(UpgradeKeyConfig { key: endowed_accounts[0].clone(), + _genesis_phantom_data: Default::default(), }), } } @@ -175,6 +186,7 @@ pub fn testnet_genesis( consensus: Some(ConsensusConfig { code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), authorities: initial_authorities.clone(), + _genesis_phantom_data: Default::default(), }), system: None, balances: Some(BalancesConfig { @@ -185,10 +197,12 @@ pub fn testnet_genesis( creation_fee: 0, reclaim_rebate: 0, balances: endowed_accounts.iter().map(|&k| (k.into(), (1 << 60))).collect(), + _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { validators: initial_authorities.iter().cloned().map(Into::into).collect(), session_length: 10, + _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { current_era: 0, @@ -202,11 +216,13 @@ pub fn testnet_genesis( current_offline_slash: 0, current_session_reward: 0, offline_slash_grace: 0, + _genesis_phantom_data: Default::default(), }), democracy: Some(DemocracyConfig { launch_period: 9, voting_period: 18, minimum_deposit: 10, + _genesis_phantom_data: Default::default(), }), council_seats: Some(CouncilSeatsConfig { active_council: endowed_accounts.iter() @@ -221,19 +237,23 @@ pub fn testnet_genesis( term_duration: 1000000, desired_seats: (endowed_accounts.len() - initial_authorities.len()) as u32, inactive_grace_period: 1, + _genesis_phantom_data: Default::default(), }), council_voting: Some(CouncilVotingConfig { cooloff_period: 75, voting_period: 20, + _genesis_phantom_data: Default::default(), }), timestamp: Some(TimestampConfig { period: 5, // 5 second block time. + _genesis_phantom_data: Default::default(), }), treasury: Some(TreasuryConfig { proposal_bond: Permill::from_percent(5), proposal_bond_minimum: 1_000_000, spend_period: 12 * 60 * 24, burn: Permill::from_percent(50), + _genesis_phantom_data: Default::default(), }), contract: Some(ContractConfig { contract_fee: 21, @@ -243,9 +263,11 @@ pub fn testnet_genesis( max_depth: 1024, block_gas_limit: 10_000_000, current_schedule: Default::default(), + _genesis_phantom_data: Default::default(), }), upgrade_key: Some(UpgradeKeyConfig { key: upgrade_key, + _genesis_phantom_data: Default::default(), }), } } @@ -289,7 +311,7 @@ mod tests { fn local_testnet_genesis_instant() -> GenesisConfig { let mut genesis = local_testnet_genesis(); - genesis.timestamp = Some(TimestampConfig { period: 0 }); + genesis.timestamp = Some(TimestampConfig { period: 0, _genesis_phantom_data: Default::default() }); genesis } diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index 5a5edb89b0..b232beb538 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -28,7 +28,7 @@ use substrate_service::{ Roles, TaskExecutor, }; use node_executor; -use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue}; +use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue, NothingExtra}; use client; const AURA_SLOT_DURATION: u64 = 6; @@ -79,17 +79,25 @@ construct_service_factory! { }, LightService = LightComponents { |config, executor| >::new(config, executor) }, - FullImportQueue = AuraImportQueue> - { |config, client| Ok(import_queue(AuraConfig { - local_key: None, - slot_duration: 5 - }, client)) }, - LightImportQueue = AuraImportQueue> - { |config, client| Ok( - import_queue(AuraConfig { + FullImportQueue = AuraImportQueue, NothingExtra> + { |config, client| Ok(import_queue( + AuraConfig { local_key: None, slot_duration: 5 - }, client)) + }, + client, + NothingExtra, + )) + }, + LightImportQueue = AuraImportQueue, NothingExtra> + { |config, client| Ok(import_queue( + AuraConfig { + local_key: None, + slot_duration: 5 + }, + client, + NothingExtra, + )) }, } } diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index 6cbbb2f11e..4c8f5c1030 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -29,3 +29,6 @@ srml-timestamp = { path = "../../srml/timestamp" } srml-treasury = { path = "../../srml/treasury" } srml-contract = { path = "../../srml/contract" } wabt = "0.4" + +[features] +benchmarks = [] diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index 704f2d342f..d6fc59d7d7 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -17,10 +17,14 @@ //! A `CodeExecutor` specialisation which uses natively compiled runtime when the wasm to be //! executed is equivalent to the natively compiled code. +#![cfg_attr(feature = "benchmarks", feature(test))] + extern crate node_runtime; #[macro_use] extern crate substrate_executor; #[cfg_attr(test, macro_use)] extern crate substrate_primitives as primitives; +#[cfg(feature = "benchmarks")] extern crate test; + #[cfg(test)] extern crate substrate_keyring as keyring; #[cfg(test)] extern crate sr_primitives as runtime_primitives; #[cfg(test)] extern crate srml_support as runtime_support; @@ -230,10 +234,12 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { session_length: 2, validators: vec![One.to_raw_public().into(), Two.to_raw_public().into(), three], + _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { sessions_per_era: 2, @@ -247,6 +253,7 @@ mod tests { current_offline_slash: 0, current_session_reward: 0, offline_slash_grace: 0, + _genesis_phantom_data: Default::default(), }), democracy: Some(Default::default()), council_seats: Some(Default::default()), @@ -744,4 +751,19 @@ mod tests { assert!(t.storage_changes_root(Default::default(), 0).is_some()); } + + #[cfg(feature = "benchmarks")] + mod benches { + use super::*; + use test::Bencher; + + #[bench] + fn wasm_execute_block(b: &mut Bencher) { + b.iter(|| { + let mut t = new_test_ext(false); + WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "execute_block", &block1(false).0).unwrap(); + WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "execute_block", &block2().0).unwrap(); + }); + } + } } diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index d340628488..3a032be99a 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -472,11 +472,6 @@ dependencies = [ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "nan-preserving-float" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "net2" version = "0.2.33" @@ -939,7 +934,7 @@ dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0", "substrate-primitives 0.1.0", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1270,7 +1265,7 @@ dependencies = [ "substrate-serializer 0.1.0", "substrate-state-machine 0.1.0", "substrate-trie 0.4.0", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1316,7 +1311,7 @@ dependencies = [ "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.5.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1659,12 +1654,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wasmi" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1787,7 +1781,6 @@ dependencies = [ "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" @@ -1868,7 +1861,7 @@ dependencies = [ "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" +"checksum wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8a60b9508cff2b7c27ed41200dd668806280740fadc8c88440e9c88625e84f1a" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index b9cceb155a933475aa8da3ac55116dac729353a5..c94b484d458cd12cb80f02463d1bb1bf1323dfe8 100644 GIT binary patch delta 220745 zcmcG12b@&Z_5Zu~O?kUBvpd@>?3-a(7HNx0k-BfC7lBxUB?2lc3nCyIqlUqTn5Y2< zy{M?DC|FQ*)gfY8#X^im?5G$qMNy+-G)5!J|9j4TZ+3QfK=b?k{_uhK-mT}Je$OrQ z>0b~2^TXZy7_-hgLl}l3J`=H-W+IUgiJ2l{%#{4*Ljpc1-I(c5tn4#ql1wZyW^%e% zf{Z0gPyzWmaS0x|D7<6|RYV>7aKEU5CHP~^v?!5MSN>&)5XmlLlrWPgiD_k~IeY#& z1+&jxJmchfvu7=uan|B97tK0tcCwFIU5uPO$~kG?thuufo^kMifrc;HU;Z2oTrQ6* z7gRM$1>8zA7M*$KVnZaqmEF2WD1E`AIrA6KIDPiHhLtX>yIHVk_NjBuO+GJ%C*F~7 zNh{CdKR(OySwi4b;Eztj|7~wRlt2-mB`u%8gTAEj$$$?z(h{6ciNeT}(lYQbB=Tj{ zFr^Gg{6X0Q7y)Bs*}(%;Nd#dk&pgaIaZM`$10@)mikyiKl? zx63=^pT%?X1-bal1q;uf@wVJ09}w@0M`f$HLR>2UBHx$K%4g&y@?!b6cuTw`-;_J$ zJMtcJcY}CWyd$>AN8}UYadEj=E-sQ6%6H{^^3U>Vxk_FySITSTW%74&nOrV&uV2x! zDsYAfZ(jP85uId&B8GEgGGe`*tSh)ebV;@p>@C06FMJ8vXdBMRi4nsVc#(^vcD@qh zQDReVZt~fje+j$g(cF_o^1i|=L``y7(N|(kOaJ0QGWnr3WOj`$op5u#H1I6urxC3| zi_$5lFGq|;yJ$6PBdOXg5W~CO9G5n7MOcPVKYK1aE;j|c}};3L~YA0-HxzCkK~?S=ZGFHr}aKgB-izQ zDfwidzb2j)BEX}rmsT8Ou9xAs9K�%`ww#v`t$$(dM{spfoTRQ7?UQ|7b!GYQzGR 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 literal 831981 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ℜ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 }Sx(%0pJC5D^h3zRGe+*ek#&X}v(~@G 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 diff --git a/srml/balances/src/mock.rs b/srml/balances/src/mock.rs index 5fb6bb80dc..b3355636b3 100644 --- a/srml/balances/src/mock.rs +++ b/srml/balances/src/mock.rs @@ -104,6 +104,7 @@ impl ExtBuilder { transfer_fee: self.transfer_fee, creation_fee: self.creation_fee, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } diff --git a/srml/consensus/src/mock.rs b/srml/consensus/src/mock.rs index e3a13d4597..88eb669a84 100644 --- a/srml/consensus/src/mock.rs +++ b/srml/consensus/src/mock.rs @@ -54,6 +54,7 @@ pub fn new_test_ext(authorities: Vec) -> runtime_io::TestExternalities{ code: vec![], authorities, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } diff --git a/srml/contract/src/tests.rs b/srml/contract/src/tests.rs index 27d6e59a95..db339ecde1 100644 --- a/srml/contract/src/tests.rs +++ b/srml/contract/src/tests.rs @@ -131,6 +131,7 @@ impl ExtBuilder { transfer_fee: self.transfer_fee, creation_fee: self.creation_fee, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage() .unwrap().0, ); @@ -143,6 +144,7 @@ impl ExtBuilder { max_depth: 100, block_gas_limit: self.block_gas_limit, current_schedule: Default::default(), + _genesis_phantom_data: Default::default(), }.build_storage() .unwrap().0, ); diff --git a/srml/council/src/lib.rs b/srml/council/src/lib.rs index 26d88c6c7b..2ea0def3a5 100644 --- a/srml/council/src/lib.rs +++ b/srml/council/src/lib.rs @@ -122,11 +122,13 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(democracy::GenesisConfig::{ launch_period: 1, voting_period: 3, minimum_deposit: 1, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(seats::GenesisConfig:: { candidacy_bond: 9, @@ -143,10 +145,12 @@ mod tests { presentation_duration: 2, desired_seats: 2, term_duration: 5, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(voting::GenesisConfig:: { cooloff_period: 2, voting_period: 1, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/democracy/src/lib.rs b/srml/democracy/src/lib.rs index 0c589d5893..d2d2b6e4f9 100644 --- a/srml/democracy/src/lib.rs +++ b/srml/democracy/src/lib.rs @@ -358,11 +358,13 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ launch_period: 1, voting_period: 1, minimum_deposit: 1, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/example/src/lib.rs b/srml/example/src/lib.rs index 8dcbb7094b..9ad2f6fdb8 100644 --- a/srml/example/src/lib.rs +++ b/srml/example/src/lib.rs @@ -313,6 +313,7 @@ mod tests { t.extend(GenesisConfig::{ dummy: 42, foo: 24, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } diff --git a/srml/executive/src/lib.rs b/srml/executive/src/lib.rs index 005b8508db..c5aded4a68 100644 --- a/srml/executive/src/lib.rs +++ b/srml/executive/src/lib.rs @@ -327,6 +327,7 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); let xt = primitives::testing::TestXt(Some(1), 0, Call::transfer(2.into(), 69.into())); let mut t = runtime_io::TestExternalities::::new(t); diff --git a/srml/session/src/lib.rs b/srml/session/src/lib.rs index 99bf182cf8..33ac3dbabf 100644 --- a/srml/session/src/lib.rs +++ b/srml/session/src/lib.rs @@ -270,13 +270,16 @@ mod tests { t.extend(consensus::GenesisConfig::{ code: vec![], authorities: vec![1, 2, 3], + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(timestamp::GenesisConfig::{ period: 5, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ session_length: 2, validators: vec![1, 2, 3], + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/staking/src/mock.rs b/srml/staking/src/mock.rs index b22af1b1b5..bfef4653a6 100644 --- a/srml/staking/src/mock.rs +++ b/srml/staking/src/mock.rs @@ -88,10 +88,12 @@ pub fn new_test_ext( t.extend(consensus::GenesisConfig::{ code: vec![], authorities: vec![], + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(session::GenesisConfig::{ session_length, validators: vec![10, 20], + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(balances::GenesisConfig::{ balances: if monied { @@ -109,6 +111,7 @@ pub fn new_test_ext( transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ sessions_per_era, @@ -122,9 +125,11 @@ pub fn new_test_ext( current_session_reward: reward, current_offline_slash: 20, offline_slash_grace: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(timestamp::GenesisConfig::{ - period: 5 + period: 5, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/support/src/storage/generator.rs b/srml/support/src/storage/generator.rs index 31d583d6c9..60e26e8aee 100644 --- a/srml/support/src/storage/generator.rs +++ b/srml/support/src/storage/generator.rs @@ -627,6 +627,8 @@ macro_rules! __generate_genesis_config { #[serde(rename_all = "camelCase")] #[serde(deny_unknown_fields)] pub struct GenesisConfig<$traitinstance: $traittype> { + #[serde(skip)] + pub _genesis_phantom_data: $crate::storage::generator::PhantomData<$traitinstance>, $(pub $fieldname : $fieldtype ,)* $( $(#[$attr])* pub $extrafieldname : $extrafieldty ,)* } @@ -635,6 +637,7 @@ macro_rules! __generate_genesis_config { impl<$traitinstance: $traittype> Default for GenesisConfig<$traitinstance> { fn default() -> Self { GenesisConfig { + _genesis_phantom_data: Default::default(), $($fieldname : $fielddefault ,)* $($extrafieldname : $extrafielddefault ,)* } diff --git a/srml/system/src/lib.rs b/srml/system/src/lib.rs index c3cffda04f..666348254f 100644 --- a/srml/system/src/lib.rs +++ b/srml/system/src/lib.rs @@ -201,7 +201,6 @@ decl_storage! { } add_extra_genesis { config(changes_trie_config): Option; - config(_phantom): ::std::marker::PhantomData; build(|storage: &mut primitives::StorageMap, _: &mut primitives::ChildrenStorageMap, config: &GenesisConfig| { use codec::Encode; diff --git a/srml/timestamp/src/lib.rs b/srml/timestamp/src/lib.rs index 35c82b532f..db1e2934db 100644 --- a/srml/timestamp/src/lib.rs +++ b/srml/timestamp/src/lib.rs @@ -211,7 +211,10 @@ mod tests { #[test] fn timestamp_works() { let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; - t.extend(GenesisConfig:: { period: 0 }.build_storage().unwrap().0); + t.extend(GenesisConfig:: { + period: 5, + _genesis_phantom_data: Default::default() + }.build_storage().unwrap().0); with_externalities(&mut TestExternalities::new(t), || { Timestamp::set_timestamp(42); @@ -224,7 +227,10 @@ mod tests { #[should_panic(expected = "Timestamp must be updated only once in the block")] fn double_timestamp_should_fail() { let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; - t.extend(GenesisConfig:: { period: 5 }.build_storage().unwrap().0); + t.extend(GenesisConfig:: { + period: 5, + _genesis_phantom_data: Default::default() + }.build_storage().unwrap().0); with_externalities(&mut TestExternalities::new(t), || { Timestamp::set_timestamp(42); @@ -237,7 +243,10 @@ mod tests { #[should_panic(expected = "Timestamp must increment by at least between sequential blocks")] fn block_period_is_enforced() { let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; - t.extend(GenesisConfig:: { period: 5 }.build_storage().unwrap().0); + t.extend(GenesisConfig:: { + period: 5, + _genesis_phantom_data: Default::default() + }.build_storage().unwrap().0); with_externalities(&mut TestExternalities::new(t), || { Timestamp::set_timestamp(42); diff --git a/srml/treasury/src/lib.rs b/srml/treasury/src/lib.rs index 340ab48a8c..2ec3deffce 100644 --- a/srml/treasury/src/lib.rs +++ b/srml/treasury/src/lib.rs @@ -330,12 +330,14 @@ mod tests { creation_fee: 0, existential_deposit: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ proposal_bond: Permill::from_percent(5), proposal_bond_minimum: 1, spend_period: 2, burn: Permill::from_percent(50), + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } -- GitLab From e17747e8edaa78c7643d88579c64807ab41e699d Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Mon, 19 Nov 2018 08:58:21 +0300 Subject: [PATCH 065/243] Fix light client startup (#1130) * fix light client startup * fix grumbles --- core/client/db/src/lib.rs | 4 ++-- core/client/db/src/light.rs | 24 +++++++++++++++++++++--- core/client/src/client.rs | 23 +++++++++++------------ 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index a01d5a368c..d9bf538b5a 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -168,7 +168,7 @@ impl BlockchainDb { is_finalized: bool ) { let mut meta = self.meta.write(); - if number == Zero::zero() { + if number.is_zero() { meta.genesis_hash = hash; meta.finalized_hash = hash; } @@ -778,7 +778,7 @@ impl client::backend::Backend for Backend whe transaction.put(columns::HASH_LOOKUP, hash.as_ref(), &lookup_key); - if number == Zero::zero() { + if number.is_zero() { transaction.put(columns::META, meta_keys::FINALIZED_BLOCK, &lookup_key); transaction.put(columns::META, meta_keys::GENESIS_HASH, hash.as_ref()); } diff --git a/core/client/db/src/light.rs b/core/client/db/src/light.rs index c03ab98c02..37a803f74c 100644 --- a/core/client/db/src/light.rs +++ b/core/client/db/src/light.rs @@ -121,7 +121,7 @@ impl LightStorage ) { let mut meta = self.meta.write(); - if number == Zero::zero() { + if number.is_zero() { meta.genesis_hash = hash; meta.finalized_hash = hash; } @@ -369,6 +369,11 @@ impl LightBlockchainStorage for LightStorage transaction.put(columns::HEADER, &lookup_key, &header.encode()); transaction.put(columns::HASH_LOOKUP, hash.as_ref(), &lookup_key); + if number.is_zero() { + transaction.put(columns::META, meta_keys::FINALIZED_BLOCK, &lookup_key); + transaction.put(columns::META, meta_keys::GENESIS_HASH, hash.as_ref()); + } + let finalized = match leaf_state { NewBlockState::Final => true, _ => false, @@ -385,7 +390,7 @@ impl LightBlockchainStorage for LightStorage let mut cache = self.cache.0.write(); let cache_ops = cache.transaction(&mut transaction) .on_block_insert( - ComplexBlockId::new(*header.parent_hash(), if number == Zero::zero() { Zero::zero() } else { number - One::one() }), + ComplexBlockId::new(*header.parent_hash(), if number.is_zero() { Zero::zero() } else { number - One::one() }), ComplexBlockId::new(hash, number), authorities, finalized, @@ -429,7 +434,7 @@ impl LightBlockchainStorage for LightStorage let mut cache = self.cache.0.write(); let cache_ops = cache.transaction(&mut transaction) .on_block_finalize( - ComplexBlockId::new(*header.parent_hash(), if number == Zero::zero() { Zero::zero() } else { number - One::one() }), + ComplexBlockId::new(*header.parent_hash(), if number.is_zero() { Zero::zero() } else { number - One::one() }), ComplexBlockId::new(hash, number) )? .into_ops(); @@ -860,4 +865,17 @@ pub(crate) mod tests { assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_2)), Some(vec![[4u8; 32].into()])); } } + + #[test] + fn database_is_reopened() { + let db = LightStorage::new_test(); + let hash0 = insert_final_block(&db, None, || default_header(&Default::default(), 0)); + assert_eq!(db.info().unwrap().best_hash, hash0); + assert_eq!(db.header(BlockId::Hash(hash0)).unwrap().unwrap().hash(), hash0); + + let db = db.db; + let db = LightStorage::from_kvdb(db).unwrap(); + assert_eq!(db.info().unwrap().best_hash, hash0); + assert_eq!(db.header(BlockId::Hash::(hash0)).unwrap().unwrap().hash(), hash0); + } } diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 03cefca49e..1b77d88dda 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -70,7 +70,6 @@ pub struct Client where Block: BlockT { importing_block: RwLock>, // holds the block hash currently being imported. TODO: replace this with block queue block_execution_strategy: ExecutionStrategy, api_execution_strategy: ExecutionStrategy, - changes_trie_config: Option, _phantom: PhantomData, } @@ -245,12 +244,6 @@ impl Client where backend.commit_operation(op)?; } - // changes trie configuration should never change => we can read it in advance - let changes_trie_config = backend.state_at(BlockId::Number(backend.blockchain().info()?.best_number))? - .storage(well_known_keys::CHANGES_TRIE_CONFIG) - .map_err(|e| error::Error::from_state(Box::new(e)))? - .and_then(|c| Decode::decode(&mut &*c)); - Ok(Client { backend, executor, @@ -261,7 +254,6 @@ impl Client where importing_block: Default::default(), block_execution_strategy, api_execution_strategy, - changes_trie_config, _phantom: Default::default(), }) } @@ -381,7 +373,7 @@ impl Client where last: Block::Hash, key: &[u8] ) -> error::Result, u32)>> { - let config = self.changes_trie_config.as_ref(); + let config = self.changes_trie_config()?; let storage = self.backend.changes_trie_storage(); let (config, storage) = match (config, storage) { (Some(config), Some(storage)) => (config, storage), @@ -389,7 +381,7 @@ impl Client where }; key_changes::<_, Blake2Hasher>( - config, + &config, storage, self.require_block_number_from_id(&BlockId::Hash(first))?.as_(), &ChangesTrieAnchorBlockId { @@ -463,7 +455,7 @@ impl Client where } } - let config = self.changes_trie_config.as_ref(); + let config = self.changes_trie_config()?; let storage = self.backend.changes_trie_storage(); let (config, storage) = match (config, storage) { (Some(config), Some(storage)) => (config, storage), @@ -484,7 +476,7 @@ impl Client where // fetch key changes proof let key_changes_proof = key_changes_proof::<_, Blake2Hasher>( - config, + &config, &recording_storage, self.require_block_number_from_id(&BlockId::Hash(first))?.as_(), &ChangesTrieAnchorBlockId { @@ -975,6 +967,13 @@ impl Client where unreachable!("this is a bug. `target_hash` is in blockchain but wasn't found following all leaves backwards"); } + + fn changes_trie_config(&self) -> Result, Error> { + Ok(self.backend.state_at(BlockId::Number(self.backend.blockchain().info()?.best_number))? + .storage(well_known_keys::CHANGES_TRIE_CONFIG) + .map_err(|e| error::Error::from_state(Box::new(e)))? + .and_then(|c| Decode::decode(&mut &*c))) + } } impl ChainHeaderBackend for Client where -- GitLab From 4e5f603142fd4d0ff7b8443542d15e9b16f1b833 Mon Sep 17 00:00:00 2001 From: Wei Tang Date: Mon, 19 Nov 2018 20:47:49 +0800 Subject: [PATCH 066/243] Fix typo in `apply_extrinsic` (#1136) --- core/client/src/block_builder/api.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/client/src/block_builder/api.rs b/core/client/src/block_builder/api.rs index a5cbe7e554..67a66373aa 100644 --- a/core/client/src/block_builder/api.rs +++ b/core/client/src/block_builder/api.rs @@ -22,7 +22,7 @@ use rstd::vec::Vec; decl_runtime_apis! { /// The `BlockBuilder` api trait that provides required functions for building a block for a runtime. pub trait BlockBuilder { - /// The runtime api for building blocks./// Apply the given extrinsics. + /// Apply the given extrinsics. fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult; /// Finish the current block. fn finalise_block() -> ::Header; -- GitLab From 46a68a49a39faa7010a9419366d19878e35c09a4 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 19 Nov 2018 14:46:36 +0100 Subject: [PATCH 067/243] Fix doc on set_validator_count (#1137) --- srml/staking/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srml/staking/src/lib.rs b/srml/staking/src/lib.rs index cd21fe05ad..55c453e7cb 100644 --- a/srml/staking/src/lib.rs +++ b/srml/staking/src/lib.rs @@ -215,7 +215,7 @@ decl_module! { Ok(()) } - /// The length of a staking era in sessions. + /// The ideal number of validators. fn set_validator_count(new: Compact) -> Result { let new: u32 = new.into(); >::put(new); -- GitLab From 3c747ae121c6609a3e02dd9ac624e9caeae52993 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 19 Nov 2018 14:54:35 +0100 Subject: [PATCH 068/243] alter DB schema to fix lookup race (#1135) --- core/client/db/src/cache/list_storage.rs | 8 +- core/client/db/src/cache/mod.rs | 8 +- core/client/db/src/lib.rs | 126 ++++++++--------------- core/client/db/src/light.rs | 98 +++++++++--------- core/client/db/src/utils.rs | 78 +++++++++++--- 5 files changed, 162 insertions(+), 156 deletions(-) diff --git a/core/client/db/src/cache/list_storage.rs b/core/client/db/src/cache/list_storage.rs index ea3fbb94ac..ec6883d262 100644 --- a/core/client/db/src/cache/list_storage.rs +++ b/core/client/db/src/cache/list_storage.rs @@ -86,7 +86,7 @@ pub struct DbColumns { /// Column holding cache meta. pub meta: Option, /// Column holding the mapping of { block number => block hash } for blocks of the best chain. - pub hash_lookup: Option, + pub key_lookup: Option, /// Column holding the mapping of { block hash => block header }. pub header: Option, /// Column holding cache entries. @@ -126,12 +126,12 @@ impl DbStorage { impl Storage for DbStorage { fn read_id(&self, at: NumberFor) -> ClientResult> { - utils::read_header::(&*self.db, self.columns.hash_lookup, self.columns.header, BlockId::Number(at)) + utils::read_header::(&*self.db, self.columns.key_lookup, self.columns.header, BlockId::Number(at)) .map(|maybe_header| maybe_header.map(|header| header.hash())) } fn read_header(&self, at: &Block::Hash) -> ClientResult> { - utils::read_header::(&*self.db, self.columns.hash_lookup, self.columns.header, BlockId::Hash(*at)) + utils::read_header::(&*self.db, self.columns.key_lookup, self.columns.header, BlockId::Hash(*at)) } fn read_meta(&self) -> ClientResult> { @@ -197,7 +197,7 @@ impl<'a, Block: BlockT, T: CacheItemT> StorageTransaction for DbStorag mod meta { use super::*; - /// Convert cache name into cache metadata key. + /// Convert cache name into cache metadata key. pub fn key(name: &[u8]) -> Vec { let mut key_name = meta_keys::CACHE_META_PREFIX.to_vec(); key_name.extend_from_slice(name); diff --git a/core/client/db/src/cache/mod.rs b/core/client/db/src/cache/mod.rs index 788ad8b61e..db2a1762db 100644 --- a/core/client/db/src/cache/mod.rs +++ b/core/client/db/src/cache/mod.rs @@ -72,7 +72,7 @@ impl DbCache { /// Create new cache. pub fn new( db: Arc, - hash_lookup_column: Option, + key_lookup_column: Option, header_column: Option, authorities_column: Option, best_finalized_block: ComplexBlockId, @@ -82,7 +82,7 @@ impl DbCache { self::list_storage::DbStorage::new(b"auth".to_vec(), db, self::list_storage::DbColumns { meta: COLUMN_META, - hash_lookup: hash_lookup_column, + key_lookup: key_lookup_column, header: header_column, cache: authorities_column, }, @@ -188,7 +188,7 @@ impl BlockchainCache for DbCacheSync { BlockId::Hash(hash) => { let header = utils::read_header::( &**db, - columns.hash_lookup, + columns.key_lookup, columns.header, BlockId::Hash(hash.clone())).ok()??; ComplexBlockId::new(hash, *header.number()) @@ -196,7 +196,7 @@ impl BlockchainCache for DbCacheSync { BlockId::Number(number) => { let hash = utils::read_header::( &**db, - columns.hash_lookup, + columns.key_lookup, columns.header, BlockId::Number(number.clone())).ok()??.hash(); ComplexBlockId::new(hash, number) diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index d9bf538b5a..d1cab2d15d 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -115,8 +115,8 @@ mod columns { pub const META: Option = ::utils::COLUMN_META; pub const STATE: Option = Some(1); pub const STATE_META: Option = Some(2); - /// maps hashes to lookup keys - pub const HASH_LOOKUP: Option = Some(3); + /// maps hashes to lookup keys and numbers to canon hashes. + pub const KEY_LOOKUP: Option = Some(3); pub const HEADER: Option = Some(4); pub const BODY: Option = Some(5); pub const JUSTIFICATION: Option = Some(6); @@ -187,7 +187,7 @@ impl BlockchainDb { impl client::blockchain::HeaderBackend for BlockchainDb { fn header(&self, id: BlockId) -> Result, client::error::Error> { - ::utils::read_header(&*self.db, columns::HASH_LOOKUP, columns::HEADER, id) + ::utils::read_header(&*self.db, columns::KEY_LOOKUP, columns::HEADER, id) } fn info(&self) -> Result, client::error::Error> { @@ -205,7 +205,7 @@ impl client::blockchain::HeaderBackend for BlockchainDb read_db( &*self.db, - columns::HASH_LOOKUP, + columns::KEY_LOOKUP, columns::HEADER, id )?.is_some(), @@ -218,7 +218,7 @@ impl client::blockchain::HeaderBackend for BlockchainDb Result>, client::error::Error> { - if let Some(lookup_key) = block_id_to_lookup_key::(&*self.db, columns::HASH_LOOKUP, BlockId::Hash(hash))? { + if let Some(lookup_key) = block_id_to_lookup_key::(&*self.db, columns::KEY_LOOKUP, BlockId::Hash(hash))? { let number = utils::lookup_key_to_number(&lookup_key)?; Ok(Some(number)) } else { @@ -236,7 +236,7 @@ impl client::blockchain::HeaderBackend for BlockchainDb client::blockchain::Backend for BlockchainDb { fn body(&self, id: BlockId) -> Result>, client::error::Error> { - match read_db(&*self.db, columns::HASH_LOOKUP, columns::BODY, id)? { + match read_db(&*self.db, columns::KEY_LOOKUP, columns::BODY, id)? { Some(body) => match Decode::decode(&mut &body[..]) { Some(body) => Ok(Some(body)), None => return Err(client::error::ErrorKind::Backend("Error decoding body".into()).into()), @@ -246,7 +246,7 @@ impl client::blockchain::Backend for BlockchainDb { } fn justification(&self, id: BlockId) -> Result, client::error::Error> { - match read_db(&*self.db, columns::HASH_LOOKUP, columns::JUSTIFICATION, id)? { + match read_db(&*self.db, columns::KEY_LOOKUP, columns::JUSTIFICATION, id)? { Some(justification) => match Decode::decode(&mut &justification[..]) { Some(justification) => Ok(Some(justification)), None => return Err(client::error::ErrorKind::Backend("Error decoding justification".into()).into()), @@ -460,7 +460,7 @@ impl state_machine::ChangesTrieRootsStorage for DbC let mut current_num = anchor.number; let mut current_hash: Block::Hash = convert_hash(&anchor.hash); let maybe_anchor_header: Block::Header = ::utils::require_header::( - &*self.db, columns::HASH_LOOKUP, columns::HEADER, BlockId::Number(As::sa(current_num)) + &*self.db, columns::KEY_LOOKUP, columns::HEADER, BlockId::Number(As::sa(current_num)) ).map_err(|e| e.to_string())?; if maybe_anchor_header.hash() == current_hash { // if anchor is canonicalized, then the block is also canonicalized @@ -471,7 +471,7 @@ impl state_machine::ChangesTrieRootsStorage for DbC // back from the anchor to the block with given number while current_num != block { let current_header: Block::Header = ::utils::require_header::( - &*self.db, columns::HASH_LOOKUP, columns::HEADER, BlockId::Hash(current_hash) + &*self.db, columns::KEY_LOOKUP, columns::HEADER, BlockId::Hash(current_hash) ).map_err(|e| e.to_string())?; current_hash = *current_header.parent_hash(); @@ -482,7 +482,7 @@ impl state_machine::ChangesTrieRootsStorage for DbC } }; - Ok(::utils::require_header::(&*self.db, columns::HASH_LOOKUP, columns::HEADER, block_id) + Ok(::utils::require_header::(&*self.db, columns::KEY_LOOKUP, columns::HEADER, block_id) .map_err(|e| e.to_string())? .digest().log(DigestItem::as_changes_trie_root) .map(|root| H256::from_slice(root.as_ref()))) @@ -609,7 +609,7 @@ impl Backend { ).into()) } - let lookup_key = ::utils::number_to_lookup_key(f_num); + let lookup_key = ::utils::number_and_hash_to_lookup_key(f_num, f_hash.clone()); transaction.put(columns::META, meta_keys::FINALIZED_BLOCK, &lookup_key); let commit = self.storage.state_db.canonicalize_block(&f_hash); @@ -670,13 +670,8 @@ impl client::backend::Backend for Backend whe let parent_hash = *pending_block.header.parent_hash(); let number = pending_block.header.number().clone(); - // blocks in longest chain are keyed by number - let lookup_key = if pending_block.leaf_state.is_best() { - ::utils::number_to_lookup_key(number).to_vec() - } else { - // other blocks are keyed by number + hash - ::utils::number_and_hash_to_lookup_key(number, hash) - }; + // blocks are keyed by number + hash. + let lookup_key = ::utils::number_and_hash_to_lookup_key(number, hash); if pending_block.leaf_state.is_best() { let meta = self.blockchain.meta.read(); @@ -689,7 +684,8 @@ impl client::backend::Backend for Backend whe BlockId::Hash(parent_hash), )?; - // uncanonicalize + // uncanonicalize: check safety violations and ensure the numbers no longer + // point to these block hashes in the key mapping. for retracted in tree_route.retracted() { if retracted.hash == meta.finalized_hash { warn!("Potential safety failure: reverting finalized block {:?}", @@ -698,76 +694,40 @@ impl client::backend::Backend for Backend whe return Err(::client::error::ErrorKind::NotInFinalizedChain.into()); } - let prev_lookup_key = ::utils::number_to_lookup_key(retracted.number); - let new_lookup_key = ::utils::number_and_hash_to_lookup_key(retracted.number, retracted.hash); - - // change mapping from `number -> header` - // to `number + hash -> header` - let retracted_header = if let Some(header) = ::client::blockchain::HeaderBackend::::header(&self.blockchain, BlockId::Number(retracted.number))? { - header - } else { - return Err(client::error::ErrorKind::UnknownBlock(format!("retracted {:?}", retracted)).into()); - }; - transaction.delete(columns::HEADER, &prev_lookup_key); - transaction.put(columns::HEADER, &new_lookup_key, &retracted_header.encode()); - - // if body is stored - // change mapping from `number -> body` - // to `number + hash -> body` - if let Some(retracted_body) = ::client::blockchain::Backend::::body(&self.blockchain, BlockId::Number(retracted.number))? { - transaction.delete(columns::BODY, &prev_lookup_key); - transaction.put(columns::BODY, &new_lookup_key, &retracted_body.encode()); - } - - // if justification is stored - // change mapping from `number -> justification` - // to `number + hash -> justification` - if let Some(retracted_justification) = ::client::blockchain::Backend::::justification(&self.blockchain, BlockId::Number(retracted.number))? { - transaction.delete(columns::JUSTIFICATION, &prev_lookup_key); - transaction.put(columns::JUSTIFICATION, &new_lookup_key, &retracted_justification.encode()); - } - - transaction.put(columns::HASH_LOOKUP, retracted.hash.as_ref(), &new_lookup_key); + ::utils::remove_number_to_key_mapping( + &mut transaction, + columns::KEY_LOOKUP, + retracted.number + ); } - // canonicalize + // canonicalize: set the number lookup to map to this block's hash. for enacted in tree_route.enacted() { - let prev_lookup_key = ::utils::number_and_hash_to_lookup_key(enacted.number, enacted.hash); - let new_lookup_key = ::utils::number_to_lookup_key(enacted.number); - - // change mapping from `number + hash -> header` - // to `number -> header` - let enacted_header = if let Some(header) = ::client::blockchain::HeaderBackend::::header(&self.blockchain, BlockId::Number(enacted.number))? { - header - } else { - return Err(client::error::ErrorKind::UnknownBlock(format!("enacted {:?}", enacted)).into()); - }; - transaction.delete(columns::HEADER, &prev_lookup_key); - transaction.put(columns::HEADER, &new_lookup_key, &enacted_header.encode()); - - // if body is stored - // change mapping from `number + hash -> body` - // to `number -> body` - if let Some(enacted_body) = ::client::blockchain::Backend::::body(&self.blockchain, BlockId::Number(enacted.number))? { - transaction.delete(columns::BODY, &prev_lookup_key); - transaction.put(columns::BODY, &new_lookup_key, &enacted_body.encode()); - } - - // if justification is stored - // change mapping from `number -> justification` - // to `number + hash -> justification` - if let Some(enacted_justification) = ::client::blockchain::Backend::::justification(&self.blockchain, BlockId::Number(enacted.number))? { - transaction.delete(columns::JUSTIFICATION, &prev_lookup_key); - transaction.put(columns::JUSTIFICATION, &new_lookup_key, &enacted_justification.encode()); - } - - transaction.put(columns::HASH_LOOKUP, enacted.hash.as_ref(), &new_lookup_key); + ::utils::insert_number_to_key_mapping( + &mut transaction, + columns::KEY_LOOKUP, + enacted.number, + enacted.hash + ); } } transaction.put(columns::META, meta_keys::BEST_BLOCK, &lookup_key); + ::utils::insert_number_to_key_mapping( + &mut transaction, + columns::KEY_LOOKUP, + number, + hash, + ); } + ::utils::insert_hash_to_key_mapping( + &mut transaction, + columns::KEY_LOOKUP, + number, + hash, + ); + transaction.put(columns::HEADER, &lookup_key, &pending_block.header.encode()); if let Some(body) = pending_block.body { transaction.put(columns::BODY, &lookup_key, &body.encode()); @@ -776,8 +736,6 @@ impl client::backend::Backend for Backend whe transaction.put(columns::JUSTIFICATION, &lookup_key, &justification.encode()); } - transaction.put(columns::HASH_LOOKUP, hash.as_ref(), &lookup_key); - if number.is_zero() { transaction.put(columns::META, meta_keys::FINALIZED_BLOCK, &lookup_key); transaction.put(columns::META, meta_keys::GENESIS_HASH, hash.as_ref()); @@ -876,9 +834,9 @@ impl client::backend::Backend for Backend whe || client::error::ErrorKind::UnknownBlock( format!("Error reverting to {}. Block header not found.", best)))?; - let lookup_key = ::utils::number_to_lookup_key(header.number().clone()); + let lookup_key = ::utils::number_and_hash_to_lookup_key(header.number().clone(), header.hash().clone()); transaction.put(columns::META, meta_keys::BEST_BLOCK, &lookup_key); - transaction.delete(columns::HASH_LOOKUP, header.hash().as_ref()); + transaction.delete(columns::KEY_LOOKUP, header.hash().as_ref()); self.storage.db.write(transaction).map_err(db_err)?; self.blockchain.update_meta(header.hash().clone(), best.clone(), true, false); self.blockchain.leaves.write().revert(header.hash().clone(), header.number().clone(), header.parent_hash().clone()); diff --git a/core/client/db/src/light.rs b/core/client/db/src/light.rs index 37a803f74c..dea53f4ff8 100644 --- a/core/client/db/src/light.rs +++ b/core/client/db/src/light.rs @@ -33,13 +33,13 @@ use runtime_primitives::generic::BlockId; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, Zero, One, As, NumberFor, Digest, DigestItem}; use cache::{DbCacheSync, DbCache, ComplexBlockId}; -use utils::{meta_keys, Meta, db_err, number_to_lookup_key, open_database, +use utils::{meta_keys, Meta, db_err, open_database, read_db, block_id_to_lookup_key, read_meta}; use DatabaseSettings; pub(crate) mod columns { pub const META: Option = ::utils::COLUMN_META; - pub const HASH_LOOKUP: Option = Some(1); + pub const KEY_LOOKUP: Option = Some(1); pub const HEADER: Option = Some(2); pub const CACHE: Option = Some(3); pub const CHT: Option = Some(4); @@ -93,7 +93,7 @@ impl LightStorage let leaves = LeafSet::read_from_db(&*db, columns::META, meta_keys::LEAF_PREFIX)?; let cache = DbCache::new( db.clone(), - columns::HASH_LOOKUP, + columns::KEY_LOOKUP, columns::HEADER, columns::CACHE, ComplexBlockId::new(meta.finalized_hash, meta.finalized_number), @@ -143,7 +143,7 @@ impl BlockchainHeaderBackend for LightStorage Block: BlockT, { fn header(&self, id: BlockId) -> ClientResult> { - ::utils::read_header(&*self.db, columns::HASH_LOOKUP, columns::HEADER, id) + ::utils::read_header(&*self.db, columns::KEY_LOOKUP, columns::HEADER, id) } fn info(&self) -> ClientResult> { @@ -161,7 +161,7 @@ impl BlockchainHeaderBackend for LightStorage let exists = match id { BlockId::Hash(_) => read_db( &*self.db, - columns::HASH_LOOKUP, + columns::KEY_LOOKUP, columns::HEADER, id )?.is_some(), @@ -174,7 +174,7 @@ impl BlockchainHeaderBackend for LightStorage } fn number(&self, hash: Block::Hash) -> ClientResult>> { - if let Some(lookup_key) = block_id_to_lookup_key::(&*self.db, columns::HASH_LOOKUP, BlockId::Hash(hash))? { + if let Some(lookup_key) = block_id_to_lookup_key::(&*self.db, columns::KEY_LOOKUP, BlockId::Hash(hash))? { let number = ::utils::lookup_key_to_number(&lookup_key)?; Ok(Some(number)) } else { @@ -211,7 +211,7 @@ impl LightStorage { ).into()) } - let lookup_key = ::utils::number_to_lookup_key(header.number().clone()); + let lookup_key = ::utils::number_and_hash_to_lookup_key(header.number().clone(), hash); transaction.put(columns::META, meta_keys::FINALIZED_BLOCK, &lookup_key); // build new CHT(s) if required @@ -249,9 +249,14 @@ impl LightStorage { while prune_block <= new_cht_end { if let Some(hash) = self.hash(prune_block)? { - let lookup_key = block_id_to_lookup_key::(&*self.db, columns::HASH_LOOKUP, BlockId::Number(prune_block))? + let lookup_key = block_id_to_lookup_key::(&*self.db, columns::KEY_LOOKUP, BlockId::Number(prune_block))? .expect("retrieved hash for `prune_block` right above. therefore retrieving lookup key must succeed. q.e.d."); - transaction.delete(columns::HASH_LOOKUP, hash.as_ref()); + ::utils::remove_key_mappings( + transaction, + columns::KEY_LOOKUP, + prune_block, + hash + ); transaction.delete(columns::HEADER, &lookup_key); } prune_block += One::one(); @@ -294,14 +299,6 @@ impl LightBlockchainStorage for LightStorage let number = *header.number(); let parent_hash = *header.parent_hash(); - // blocks in longest chain are keyed by number - let lookup_key = if leaf_state.is_best() { - ::utils::number_to_lookup_key(number).to_vec() - } else { - // other blocks are keyed by number + hash - ::utils::number_and_hash_to_lookup_key(number, hash) - }; - for (key, maybe_val) in aux_ops { match maybe_val { Some(val) => transaction.put_vec(columns::AUX, &key, val), @@ -309,6 +306,9 @@ impl LightBlockchainStorage for LightStorage } } + // blocks are keyed by number + hash. + let lookup_key = ::utils::number_and_hash_to_lookup_key(number, hash); + if leaf_state.is_best() { // handle reorg. { @@ -328,46 +328,40 @@ impl LightBlockchainStorage for LightStorage (&retracted.number, &retracted.hash)); } - let prev_lookup_key = ::utils::number_to_lookup_key(retracted.number); - let new_lookup_key = ::utils::number_and_hash_to_lookup_key(retracted.number, retracted.hash); - - // change mapping from `number -> header` - // to `number + hash -> header` - let retracted_header = if let Some(header) = self.header(BlockId::Number(retracted.number))? { - header - } else { - return Err(::client::error::ErrorKind::UnknownBlock(format!("retracted {:?}", retracted)).into()); - }; - transaction.delete(columns::HEADER, &prev_lookup_key); - transaction.put(columns::HEADER, &new_lookup_key, &retracted_header.encode()); - - transaction.put(columns::HASH_LOOKUP, retracted.hash.as_ref(), &new_lookup_key); + ::utils::remove_number_to_key_mapping( + &mut transaction, + columns::KEY_LOOKUP, + retracted.number + ); } for enacted in tree_route.enacted() { - let prev_lookup_key = ::utils::number_and_hash_to_lookup_key(enacted.number, enacted.hash); - let new_lookup_key = ::utils::number_to_lookup_key(enacted.number); - - // change mapping from `number + hash -> header` - // to `number -> header` - let enacted_header = if let Some(header) = self.header(BlockId::Number(enacted.number))? { - header - } else { - return Err(::client::error::ErrorKind::UnknownBlock(format!("enacted {:?}", enacted)).into()); - }; - transaction.delete(columns::HEADER, &prev_lookup_key); - transaction.put(columns::HEADER, &new_lookup_key, &enacted_header.encode()); - - transaction.put(columns::HASH_LOOKUP, enacted.hash.as_ref(), &new_lookup_key); + ::utils::insert_number_to_key_mapping( + &mut transaction, + columns::KEY_LOOKUP, + enacted.number, + enacted.hash + ); } } } transaction.put(columns::META, meta_keys::BEST_BLOCK, &lookup_key); + ::utils::insert_number_to_key_mapping( + &mut transaction, + columns::KEY_LOOKUP, + number, + hash, + ); } + ::utils::insert_hash_to_key_mapping( + &mut transaction, + columns::KEY_LOOKUP, + number, + hash, + ); transaction.put(columns::HEADER, &lookup_key, &header.encode()); - transaction.put(columns::HASH_LOOKUP, hash.as_ref(), &lookup_key); if number.is_zero() { transaction.put(columns::META, meta_keys::FINALIZED_BLOCK, &lookup_key); @@ -462,7 +456,7 @@ impl LightBlockchainStorage for LightStorage /// Build the key for inserting header-CHT at given block. fn cht_key>(cht_type: u8, block: N) -> [u8; 5] { let mut key = [cht_type; 5]; - key[1..].copy_from_slice(&number_to_lookup_key(block)); + key[1..].copy_from_slice(&::utils::number_index_key(block)); key } @@ -585,11 +579,11 @@ pub(crate) mod tests { let genesis_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); assert_eq!(db.db.iter(columns::HEADER).count(), 1); - assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), 1); + assert_eq!(db.db.iter(columns::KEY_LOOKUP).count(), 2); let _ = insert_block(&db, None, || default_header(&genesis_hash, 1)); assert_eq!(db.db.iter(columns::HEADER).count(), 2); - assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), 2); + assert_eq!(db.db.iter(columns::KEY_LOOKUP).count(), 4); } #[test] @@ -631,9 +625,9 @@ pub(crate) mod tests { // when headers are created without changes tries roots let db = insert_headers(default_header); assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE + 1) as usize); - assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), (1 + cht::SIZE + 1) as usize); + assert_eq!(db.db.iter(columns::KEY_LOOKUP).count(), (2 * (1 + cht::SIZE + 1)) as usize); assert_eq!(db.db.iter(columns::CHT).count(), 1); - assert!((0..cht::SIZE).all(|i| db.db.get(columns::HEADER, &number_to_lookup_key(1 + i)).unwrap().is_none())); + assert!((0..cht::SIZE).all(|i| db.header(BlockId::Number(1 + i)).unwrap().is_none())); assert!(db.header_cht_root(cht::SIZE, cht::SIZE / 2).is_ok()); assert!(db.header_cht_root(cht::SIZE, cht::SIZE + cht::SIZE / 2).is_err()); assert!(db.changes_trie_cht_root(cht::SIZE, cht::SIZE / 2).is_err()); @@ -643,7 +637,7 @@ pub(crate) mod tests { let db = insert_headers(header_with_changes_trie); assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE + 1) as usize); assert_eq!(db.db.iter(columns::CHT).count(), 2); - assert!((0..cht::SIZE).all(|i| db.db.get(columns::HEADER, &number_to_lookup_key(1 + i)).unwrap().is_none())); + assert!((0..cht::SIZE).all(|i| db.header(BlockId::Number(1 + i)).unwrap().is_none())); assert!(db.header_cht_root(cht::SIZE, cht::SIZE / 2).is_ok()); assert!(db.header_cht_root(cht::SIZE, cht::SIZE + cht::SIZE / 2).is_err()); assert!(db.changes_trie_cht_root(cht::SIZE, cht::SIZE / 2).is_ok()); diff --git a/core/client/db/src/utils.rs b/core/client/db/src/utils.rs index 5caebd7e72..416bf239b2 100644 --- a/core/client/db/src/utils.rs +++ b/core/client/db/src/utils.rs @@ -68,11 +68,14 @@ pub struct Meta { } /// A block lookup key: used for canonical lookup from block number to hash -pub type ShortBlockLookupKey = [u8; 4]; +pub type NumberIndexKey = [u8; 4]; /// Convert block number into short lookup key (LE representation) for /// blocks that are in the canonical chain. -pub fn number_to_lookup_key(n: N) -> ShortBlockLookupKey where N: As { +/// +/// In the current database schema, this kind of key is only used for +/// lookups into an index, NOT for storing header data or others. +pub fn number_index_key(n: N) -> NumberIndexKey where N: As { let n: u64 = n.as_(); assert!(n & 0xffffffff00000000 == 0); @@ -90,7 +93,7 @@ pub fn number_and_hash_to_lookup_key(number: N, hash: H) -> Vec where N: As, H: AsRef<[u8]> { - let mut lookup_key = number_to_lookup_key(number).to_vec(); + let mut lookup_key = number_index_key(number).to_vec(); lookup_key.extend_from_slice(hash.as_ref()); lookup_key } @@ -107,25 +110,76 @@ pub fn lookup_key_to_number(key: &[u8]) -> client::error::Result where N: | (key[3] as u64)).map(As::sa) } +/// Delete number to hash mapping in DB transaction. +pub fn remove_number_to_key_mapping>( + transaction: &mut DBTransaction, + key_lookup_col: Option, + number: N, +) { + transaction.delete(key_lookup_col, number_index_key(number).as_ref()) +} + +/// Remove key mappings. +pub fn remove_key_mappings, H: AsRef<[u8]>>( + transaction: &mut DBTransaction, + key_lookup_col: Option, + number: N, + hash: H, +) { + remove_number_to_key_mapping(transaction, key_lookup_col, number); + transaction.delete(key_lookup_col, hash.as_ref()); +} + +/// Place a number mapping into the database. This maps number to current perceived +/// block hash at that position. +pub fn insert_number_to_key_mapping + Clone, H: AsRef<[u8]>>( + transaction: &mut DBTransaction, + key_lookup_col: Option, + number: N, + hash: H, +) { + transaction.put_vec( + key_lookup_col, + number_index_key(number.clone()).as_ref(), + number_and_hash_to_lookup_key(number, hash), + ) +} + +/// Insert a hash to key mapping in the database. +pub fn insert_hash_to_key_mapping, H: AsRef<[u8]> + Clone>( + transaction: &mut DBTransaction, + key_lookup_col: Option, + number: N, + hash: H, +) { + transaction.put_vec( + key_lookup_col, + hash.clone().as_ref(), + number_and_hash_to_lookup_key(number, hash), + ) +} + /// Convert block id to block lookup key. /// block lookup key is the DB-key header, block and justification are stored under. /// looks up lookup key by hash from DB as necessary. pub fn block_id_to_lookup_key( db: &KeyValueDB, - hash_lookup_col: Option, + key_lookup_col: Option, id: BlockId ) -> Result>, client::error::Error> where Block: BlockT, + ::runtime_primitives::traits::NumberFor: As, { - match id { - // numbers are solely looked up in canonical chain - BlockId::Number(n) => Ok(Some(number_to_lookup_key(n).to_vec())), - BlockId::Hash(h) => db.get(hash_lookup_col, h.as_ref()).map(|v| - v.map(|v| { v.into_vec() }) - ).map_err(db_err), - } -} + let res = match id { + BlockId::Number(n) => db.get( + key_lookup_col, + number_index_key(n).as_ref(), + ), + BlockId::Hash(h) => db.get(key_lookup_col, h.as_ref()), + }; + res.map(|v| v.map(|v| v.into_vec())).map_err(db_err) +} /// Maps database error to client error pub fn db_err(err: io::Error) -> client::error::Error { -- GitLab From a786c1d22ef141f2ffd317bf424b3e7319d62246 Mon Sep 17 00:00:00 2001 From: Luke Schoen Date: Tue, 20 Nov 2018 08:41:56 +0100 Subject: [PATCH 069/243] docs: Fix typos (#1141) --- srml/council/src/seats.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srml/council/src/seats.rs b/srml/council/src/seats.rs index 957b69bdfe..d582ac6904 100644 --- a/srml/council/src/seats.rs +++ b/srml/council/src/seats.rs @@ -51,7 +51,7 @@ use system::{self, ensure_signed}; // to keep the system as stateless as possible (making it a bit easier to reason about), we just // restrict when votes can begin to blocks that lie on boundaries (`voting_period`). -// for an approval vote of C councilers: +// for an approval vote of C councillors: // top K runners-up are maintained between votes. all others are discarded. // - candidate removed & bond returned when elected. @@ -63,7 +63,7 @@ use system::{self, ensure_signed}; // they fall in the top K+C voted can present themselves. they get the total stake // recorded (based on the snapshot); an ordered list is maintained (the leaderboard). Noone may // present themselves that, if elected, would result in being included twice on the council -// (important since existing councilers will will have their approval votes as it may be that they +// (important since existing councillors will have their approval votes as it may be that they // don't get removed), nor if existing presenters would mean they're not in the top K+C. // following B blocks, the top C candidates are elected and have their bond returned. the top C @@ -72,7 +72,7 @@ use system::{self, ensure_signed}; // vote-clearing happens lazily; for an approval to count, the most recent vote at the time of the // voter's most recent vote must be no later than the most recent vote at the time that the // candidate in the approval position was registered there. as candidates are removed from the -// register and others join in their place, this prevent an approval meant for an earlier candidate +// register and others join in their place, this prevents an approval meant for an earlier candidate // being used to elect a new candidate. // the candidate list increases as needed, but the contents (though not really the capacity) reduce -- GitLab From 34c797e80d83fa3d3695de2fef1986a7dfa5680c Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 21 Nov 2018 15:54:15 +0100 Subject: [PATCH 070/243] Remove unneeded bounds. (#1149) * Remove unneeded bounds. * Other wasm. --- .../substrate_test_runtime.compact.wasm | Bin 45227 -> 45224 bytes .../release/node_runtime.compact.wasm | Bin 613214 -> 612546 bytes srml/support/src/runtime.rs | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index d353d621df3f10a412b1e193ab6e38cd798bc9e3..f03d9469f583d2ea892f985efffa9ef3c4e2e746 100644 GIT binary patch delta 3353 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 diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index c94b484d458cd12cb80f02463d1bb1bf1323dfe8..e095fb95e655705e21e80e729955aa74510dcff2 100644 GIT binary patch delta 81259 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 Date: Wed, 21 Nov 2018 18:42:50 +0100 Subject: [PATCH 071/243] Minimal switch of substrate-node to GRANDPA /Aura (#1128) * add beginnings of SRML grandpa library * get srml-grandpa compiling * tests for srml-grandpa * add optional session integration to grandpa SRML * start integration into node runtime * Allow extracting pending change from header digest * Make it compile on wasm * make tests compile again * Move Authority Key fetching into service, simplify service factory construction * Generalize Authority Consensus Setup system * Add Authority Setup Docs * Allow CLI params to be extensible - move params to structopts - split parsing and default command execution - add custom config to node - extended parsing of custom config - extending params via structop's flatten * Minor fixes on cli extension params: - added docs - re-add actual app name, rather than node-name - make strategy and subcommand optional * better cli params * synchronize GRANDPA and normal node authorities * Implement grandpa::network for gossip consensus * run_grandpa in Node * Fix missed merge error * Integrate grandpa import queue * more specific type def * link up linkhalf and import block * make grandpa future send * get compiling * Fix new params convention and license header * get it running * rebuild node runtime WASM * change logging level * Update node/cli/src/params.rs Co-Authored-By: rphmeier * Update node/cli/src/params.rs Co-Authored-By: rphmeier * Update node/cli/src/lib.rs Co-Authored-By: rphmeier * Update node/runtime/src/lib.rs Co-Authored-By: rphmeier * Update node/cli/src/lib.rs Co-Authored-By: rphmeier * Clean up and Fixme for mutable config * Move GrandpaService Integration into grandpa, feature gated but on per default * Fixing grandpa runtime module test * Update wasm runtime hashes for tests * GRANDPA: use post-header hash when logging scheduled changes * add an extra bit of logging to authorities * fixing missing constrain * remove old code * move `NewAuthorities` to an event in srml-grandpa * fix node-executor tests to use grandpa log * Remove GossipConsensus from tests, use newly provided sync-feature, fixes tests * Update to latest wasm runtimes * address grumbles * address grumbles * only derive deserialize when using std * Clean up use of Deserialize --- Cargo.lock | 301 ++++++++++------- Cargo.toml | 1 + core/cli/Cargo.toml | 7 +- core/cli/src/cli.yml | 253 --------------- core/cli/src/lib.rs | 170 +++++----- core/cli/src/params.rs | 216 +++++++++++++ core/consensus/common/src/block_import.rs | 40 ++- core/finality-grandpa/Cargo.toml | 8 +- core/finality-grandpa/primitives/src/lib.rs | 16 + core/finality-grandpa/src/authorities.rs | 14 +- core/finality-grandpa/src/lib.rs | 116 +++++-- .../src/service_integration.rs | 40 +++ core/finality-grandpa/src/tests.rs | 22 +- core/network/src/consensus_gossip.rs | 58 +--- core/network/src/lib.rs | 2 +- core/network/src/protocol.rs | 17 + core/network/src/service.rs | 14 +- core/network/src/test/mod.rs | 35 +- core/service/src/chain_ops.rs | 5 +- core/service/src/components.rs | 10 +- core/service/src/lib.rs | 75 ++++- core/sr-primitives/src/generic/digest.rs | 4 +- core/sr-primitives/src/lib.rs | 8 +- core/sr-primitives/src/testing.rs | 23 +- core/sr-primitives/src/traits.rs | 10 +- core/test-runtime/src/lib.rs | 15 +- .../substrate_test_runtime.compact.wasm | Bin 45224 -> 45224 bytes node/cli/Cargo.toml | 9 + {core => node}/cli/build.rs | 12 +- {core => node}/cli/doc/shell-completion.adoc | 0 node/cli/src/chain_spec.rs | 10 +- node/cli/src/cli.yml | 12 - node/cli/src/lib.rs | 38 ++- node/cli/src/params.rs | 33 ++ node/cli/src/service.rs | 116 ++++--- node/executor/Cargo.toml | 1 + node/executor/src/lib.rs | 57 +++- node/primitives/src/lib.rs | 2 +- node/runtime/Cargo.toml | 2 + node/runtime/src/lib.rs | 36 ++- node/runtime/wasm/Cargo.lock | 21 +- node/runtime/wasm/Cargo.toml | 6 +- .../release/node_runtime.compact.wasm | Bin 612546 -> 639289 bytes srml/balances/src/lib.rs | 2 +- srml/balances/src/mock.rs | 2 +- srml/consensus/src/lib.rs | 2 +- srml/consensus/src/mock.rs | 2 +- srml/council/src/lib.rs | 2 +- srml/democracy/src/lib.rs | 2 +- srml/grandpa/Cargo.toml | 35 ++ srml/grandpa/src/lib.rs | 303 ++++++++++++++++++ srml/grandpa/src/mock.rs | 79 +++++ srml/grandpa/src/tests.rs | 108 +++++++ srml/session/src/lib.rs | 9 + srml/staking/src/mock.rs | 2 +- srml/support/src/dispatch.rs | 3 + srml/support/src/metadata.rs | 2 +- srml/support/src/storage/generator.rs | 2 +- srml/system/src/lib.rs | 2 +- 59 files changed, 1695 insertions(+), 697 deletions(-) delete mode 100644 core/cli/src/cli.yml create mode 100644 core/cli/src/params.rs create mode 100644 core/finality-grandpa/src/service_integration.rs rename {core => node}/cli/build.rs (91%) rename {core => node}/cli/doc/shell-completion.adoc (100%) delete mode 100644 node/cli/src/cli.yml create mode 100644 node/cli/src/params.rs create mode 100644 srml/grandpa/Cargo.toml create mode 100644 srml/grandpa/src/lib.rs create mode 100644 srml/grandpa/src/mock.rs create mode 100644 srml/grandpa/src/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 7a7ba66182..ef32ae3c9b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,12 +40,11 @@ dependencies = [ [[package]] name = "aio-limited" version = "0.1.0" -source = "git+https://github.com/paritytech/aio-limited.git#a7c0bd6944902b1c9fb2bcf4f8fe1412c824b5b9" +source = "git+https://github.com/paritytech/aio-limited.git#f01b01501c87c93d3005f9120cc35d0e576fa7a3" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -85,7 +84,7 @@ name = "arrayvec" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -354,7 +353,7 @@ dependencies = [ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "simplelog 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -396,11 +395,11 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -411,21 +410,21 @@ dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-epoch" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -443,6 +442,14 @@ name = "crossbeam-utils" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crossbeam-utils" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crunchy" version = "0.1.6" @@ -516,7 +523,7 @@ dependencies = [ "chashmap 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -586,7 +593,7 @@ dependencies = [ "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -642,9 +649,9 @@ name = "failure_derive" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -710,7 +717,7 @@ name = "fs-swap" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -784,7 +791,7 @@ dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -825,6 +832,14 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "heck" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "hex" version = "0.3.2" @@ -894,12 +909,12 @@ dependencies = [ "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hyper" -version = "0.12.13" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -989,21 +1004,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "jsonrpc-core" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-http-server" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ - "hyper 0.12.13 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-server-utils 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1014,7 +1029,7 @@ dependencies = [ [[package]] name = "jsonrpc-macros" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", @@ -1024,7 +1039,7 @@ dependencies = [ [[package]] name = "jsonrpc-pubsub" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1034,12 +1049,12 @@ dependencies = [ [[package]] name = "jsonrpc-server-utils" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1050,7 +1065,7 @@ dependencies = [ [[package]] name = "jsonrpc-ws-server" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", @@ -1126,11 +1141,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazy_static" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "lazycell" @@ -1196,7 +1208,7 @@ dependencies = [ "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1233,7 +1245,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1253,7 +1265,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1280,7 +1292,7 @@ dependencies = [ "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1364,7 +1376,7 @@ dependencies = [ "libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1386,7 +1398,7 @@ dependencies = [ "hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", @@ -1518,7 +1530,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1666,7 +1678,7 @@ name = "native-tls" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1704,7 +1716,9 @@ dependencies = [ name = "node-cli" version = "0.1.0" dependencies = [ + "clap 2.32.0 (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.25 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "node-executor 0.1.0", @@ -1715,9 +1729,11 @@ dependencies = [ "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", + "structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-cli 0.3.0", "substrate-client 0.1.0", "substrate-consensus-aura 0.1.0", + "substrate-finality-grandpa 0.1.0", "substrate-keystore 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", @@ -1740,6 +1756,7 @@ dependencies = [ "srml-balances 0.1.0", "srml-consensus 0.1.0", "srml-contract 0.1.0", + "srml-grandpa 0.1.0", "srml-session 0.1.0", "srml-staking 0.1.0", "srml-support 0.1.0", @@ -1791,6 +1808,7 @@ dependencies = [ "srml-council 0.1.0", "srml-democracy 0.1.0", "srml-executive 0.1.0", + "srml-grandpa 0.1.0", "srml-session 0.1.0", "srml-staking 0.1.0", "srml-support 0.1.0", @@ -1806,7 +1824,7 @@ dependencies = [ [[package]] name = "nodrop" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1873,7 +1891,7 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1926,8 +1944,8 @@ name = "parity-codec-derive" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2091,7 +2109,7 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "0.4.20" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2099,7 +2117,7 @@ dependencies = [ [[package]] name = "protobuf" -version = "2.1.2" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2140,10 +2158,10 @@ dependencies = [ [[package]] name = "quote" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2201,7 +2219,7 @@ dependencies = [ [[package]] name = "rayon" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2215,7 +2233,7 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2247,12 +2265,12 @@ dependencies = [ [[package]] name = "regex" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2267,7 +2285,7 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2357,7 +2375,7 @@ dependencies = [ [[package]] name = "ryu" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2383,7 +2401,7 @@ name = "schannel" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2440,18 +2458,18 @@ name = "serde_derive" version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2541,7 +2559,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2588,7 +2606,7 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-std 0.1.0", "substrate-primitives 0.1.0", @@ -2768,6 +2786,25 @@ dependencies = [ "substrate-primitives 0.1.0", ] +[[package]] +name = "srml-grandpa" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-session 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-finality-grandpa-primitives 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "srml-metadata" version = "0.1.0" @@ -2937,11 +2974,11 @@ name = "stdweb-derive" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2950,13 +2987,13 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base-x 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2982,6 +3019,26 @@ name = "strsim" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "structopt" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt-derive 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "structopt-derive" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "subkey" version = "0.1.0" @@ -3016,12 +3073,13 @@ dependencies = [ "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.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", + "structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-client 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", @@ -3159,7 +3217,7 @@ dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3193,6 +3251,7 @@ dependencies = [ "substrate-keyring 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", + "substrate-service 0.3.0", "substrate-test-client 0.1.0", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3214,7 +3273,7 @@ name = "substrate-keyring" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", ] @@ -3228,7 +3287,7 @@ dependencies = [ "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3276,7 +3335,7 @@ dependencies = [ "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3325,7 +3384,7 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-version 0.1.0", "substrate-client 0.1.0", @@ -3355,7 +3414,7 @@ name = "substrate-serializer" version = "0.1.0" dependencies = [ "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3365,13 +3424,13 @@ dependencies = [ "error-chain 0.12.0 (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.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", @@ -3440,7 +3499,7 @@ dependencies = [ name = "substrate-telemetry" version = "0.3.0" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3559,18 +3618,18 @@ name = "syn" version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.16" +version = "0.15.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3579,9 +3638,9 @@ name = "synstructure" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3592,7 +3651,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3683,7 +3742,7 @@ name = "thread_local" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3780,7 +3839,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3819,7 +3878,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3847,7 +3906,7 @@ name = "tokio-threadpool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4033,6 +4092,11 @@ name = "unicode-normalization" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "unicode-segmentation" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-width" version = "0.1.5" @@ -4075,7 +4139,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "url" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4126,7 +4190,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "wabt-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4177,7 +4241,7 @@ dependencies = [ "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tls 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4239,7 +4303,7 @@ dependencies = [ "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4257,7 +4321,7 @@ dependencies = [ "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4282,7 +4346,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "yamux" version = "0.1.0" -source = "git+https://github.com/paritytech/yamux#966f2730f7a32150f282eef29fd2aecb14d7b9fa" +source = "git+https://github.com/paritytech/yamux#8f3d16e7645447645d3552a52159d56c8a01de27" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4343,11 +4407,12 @@ dependencies = [ "checksum criterion-stats 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c71521cb4c7b7eac76b540e75447fb0172c4234d6333729001b886aaa21d6da4" "checksum crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "bd66663db5a988098a89599d4857919b3acf7f61402e61365acfd3919857b9be" "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" -"checksum crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3486aefc4c0487b9cb52372c97df0a48b8c249514af1ee99703bf70d2f2ceda1" +"checksum crossbeam-deque 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4fe1b6f945f824c7a25afe44f62e25d714c0cc523f8e99d8db5cd1026e1269d3" "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" -"checksum crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30fecfcac6abfef8771151f8be4abc9e4edc112c2bcb233314cafde2680536e9" +"checksum crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2449aaa4ec7ef96e5fb24db16024b935df718e9ae1cec0a1e68feeca2efca7b8" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" "checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" +"checksum crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c55913cc2799171a550e307918c0a360e8c16004820291bf3b638969b4a01816" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" "checksum crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c240f247c278fa08a6d4820a6a222bfc6e0d999e51ba67be94f44c905b2161f2" "checksum crypto-mac 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0999b4ff4d3446d4ddb19a63e9e00c1876e75cd7000d20e57a693b4b3f08d958" @@ -4394,6 +4459,7 @@ dependencies = [ "checksum hash-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" +"checksum heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea04fa3ead4e05e51a7c806fc07271fdbde4e246a6c6d1efd52e72230b771b82" "checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" "checksum hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4da5f0e01bd8a71a224a4eedecaacfcabda388dbb7a80faf04d3514287572d95" "checksum hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d340b6514f232f6db1bd16db65302a5278a04fef9ce867cb932e7e5fa21130a" @@ -4402,7 +4468,7 @@ dependencies = [ "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e" "checksum hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "df0caae6b71d266b91b4a83111a61d2b94ed2e2bea024c532b933dcff867e58c" -"checksum hyper 0.12.13 (registry+https://github.com/rust-lang/crates.io-index)" = "95ffee0d1d30de4313fdaaa485891ce924991d45bbc18adfc8ac5b1639e62fbb" +"checksum hyper 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2f60ae467ef4fc5eba9a34d31648c9c8ed902faf45a217f6734ce9ea64779ac7" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" "checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" @@ -4425,7 +4491,7 @@ dependencies = [ "checksum kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "06cf755dc587839ba34d3cbe3f12b6ad55850fbcdfe67336157a021a1a5c43ae" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" -"checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7" +"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" "checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" "checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" @@ -4470,7 +4536,7 @@ dependencies = [ "checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" -"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nohash-hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "27593c72432b8cec9ae79e92792a73c38341064d525b6b612a9fccf8b7d17407" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" @@ -4505,28 +4571,28 @@ dependencies = [ "checksum proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c725b36c99df7af7bf9324e9c999b9e37d92c8f8caf106d82e1d7953218d2d8" "checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" "checksum proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1b06e2f335f48d24442b35a19df506a835fb3547bc3c06ef27340da9acf5cae7" -"checksum proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "3d7b7eaaa90b4a90a932a9ea6666c95a389e424eff347f0f793979289429feee" -"checksum protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8e95ac45a1e122e1b62c3f23bbe51574c39d06d1c8c5a2a5676de497d0a84a34" +"checksum proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)" = "88dae56b29da695d783ea7fc5a90de281f79eb38407e77f6d674dd8befc4ac47" +"checksum protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "671a9cce836bd3635b40b2b0a72783481755ee988c493891f4e974b45264cc9d" "checksum pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07" "checksum pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "efd695333cfae6e9dbe2703a6d040e252b57a6fc3b9a65c712615ac042b2e0c5" "checksum quick-error 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb6ccf8db7bbcb9c2eae558db5ab4f3da1c2a87e4e597ed394726bc8ea6ca1d" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" -"checksum quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "63b5829244f52738cfee93b3a165c1911388675be000c888d2fae620dee8fa5b" +"checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c" "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" "checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" "checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" "checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" -"checksum rayon 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "df7a791f788cb4c516f0e091301a29c2b71ef680db5e644a7d68835c8ae6dbfa" +"checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" "checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" "checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" -"checksum regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2069749032ea3ec200ca51e4a31df41759190a88edca0d2d86ee8bedf7073341" +"checksum regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ee84f70c8c08744ea9641a731c7fadb475bf2ecc52d7f627feb833e0b3990467" "checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" -"checksum regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "747ba3b235651f6e2f67dfa8bcdcd073ddb7c243cb21c442fc12395dfcac212d" +"checksum regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fbc557aac2b708fe84121caf261346cc2eed71978024337e42eb46b8a252ac6e" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" "checksum rhododendron 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a09bc21b21795c366c8bf0e87afb71175f5f736b3a5b279b6f4e81839d0a877b" "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" @@ -4537,7 +4603,7 @@ dependencies = [ "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" -"checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" +"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" "checksum safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347" "checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" "checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" @@ -4550,7 +4616,7 @@ dependencies = [ "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef" "checksum serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "225de307c6302bec3898c51ca302fc94a7a1697ef0845fcee6448f33c032249c" -"checksum serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)" = "43344e7ce05d0d8280c5940cabb4964bea626aa58b1ec0e8c73fa2a8512a38ce" +"checksum serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "c37ccd6be3ed1fdf419ee848f7c758eb31b054d7cd3ae3600e3bae0adf569811" "checksum sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cc30b1e1e8c40c121ca33b86c23308a090d19974ef001b4bf6e61fd1a0fb095c" "checksum sha1 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "171698ce4ec7cbb93babeb3190021b4d72e96ccb98e33d277ae4ea959d6f2d9e" "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" @@ -4575,11 +4641,13 @@ dependencies = [ "checksum stream-cipher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "30dc6118470d69ce0fdcf7e6f95e95853f7f4f72f80d835d4519577c323814ab" "checksum string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00caf261d6f90f588f8450b8e1230fa0d5be49ee6140fdfbcb55335aff350970" "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" +"checksum structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "41c4a2479a078509940d82773d90ff824a8c89533ab3b59cd3ce8b0c0e369c02" +"checksum structopt-derive 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "5352090cfae7a2c85e1a31146268b53396106c88ca5d6ccee2e3fae83b6e35c2" "checksum subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc7f6353c2ee5407358d063a14cccc1630804527090a6fb5a9489ce4924280fb" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum syn 0.13.11 (registry+https://github.com/rust-lang/crates.io-index)" = "14f9bf6292f3a61d2c716723fdb789a41bbe104168e6f496dc6497e531ea1b9b" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" -"checksum syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0b78d53b5e1b6e63129140b1336877c3bddbae398c7956150396bdad0e28676c" +"checksum syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)" = "8886c8d2774e853fcd7d9d2131f6e40ba46c9c0e358e4d57178452abd6859bb0" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum sysinfo 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "11c5f6e8a7a7146f26ffed9a5ff8bab2706f1ac8a413a415e1d211b819d5c24d" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" @@ -4627,13 +4695,14 @@ dependencies = [ "checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" +"checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum unsigned-varint 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5c1441164e5da61f00acd15f5a9e61939693c2c6e8b9fae36a220b82de7e212" "checksum unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb8abc4b7d8158bdfbbaaccc35331ed3c30c2673e99000d7ae665a2eb6576f4" "checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" -"checksum url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2a321979c09843d272956e73700d12c4e7d3d92b2ee112b31548aef0d4efc5a6" +"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" diff --git a/Cargo.toml b/Cargo.toml index 7be891ec59..98c433f605 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,6 +48,7 @@ members = [ "srml/democracy", "srml/example", "srml/executive", + "srml/grandpa", "srml/metadata", "core/sr-primitives", "srml/session", diff --git a/core/cli/Cargo.toml b/core/cli/Cargo.toml index 1552791b26..871daef9f3 100644 --- a/core/cli/Cargo.toml +++ b/core/cli/Cargo.toml @@ -3,10 +3,9 @@ name = "substrate-cli" version = "0.3.0" authors = ["Parity Technologies "] description = "Substrate CLI interface." -build = "build.rs" [dependencies] -clap = { version = "~2.32", features = ["yaml"] } +clap = "~2.32" backtrace = "0.3" env_logger = "0.5" error-chain = "0.12" @@ -30,6 +29,4 @@ substrate-primitives = { path = "../../core/primitives" } substrate-service = { path = "../../core/service" } substrate-telemetry = { path = "../../core/telemetry" } names = "0.11.0" - -[build-dependencies] -clap = "~2.32" +structopt = "0.2.13" diff --git a/core/cli/src/cli.yml b/core/cli/src/cli.yml deleted file mode 100644 index fed66ad91d..0000000000 --- a/core/cli/src/cli.yml +++ /dev/null @@ -1,253 +0,0 @@ -name: {name} -author: {author} -about: {description} -args: - - log: - short: l - long: log - value_name: LOG_PATTERN - help: Sets a custom logging filter - takes_value: true - - base-path: - long: base-path - short: d - value_name: PATH - help: Specify custom base path - takes_value: true - - keystore-path: - long: keystore-path - value_name: PATH - help: Specify custom keystore path - takes_value: true - - key: - long: key - value_name: STRING - help: Specify additional key seed - takes_value: true - - node-key: - long: node-key - value_name: KEY - help: Specify node secret key (64-character hex string) - takes_value: true - - validator: - long: validator - help: Enable validator mode - takes_value: false - - light: - long: light - help: Run in light client mode - takes_value: false - - dev: - long: dev - help: Run in development mode; implies --chain=dev --validator --key Alice - takes_value: false - - listen-addr: - long: listen-addr - value_name: LISTEN_ADDR - help: Listen on this multiaddress - takes_value: true - multiple: true - - port: - long: port - value_name: PORT - help: Specify p2p protocol TCP port. Only used if --listen-addr is not specified. - takes_value: true - - rpc-external: - long: rpc-external - help: Listen to all RPC interfaces (default is local) - takes_value: false - - ws-external: - long: ws-external - help: Listen to all Websocket interfaces (default is local) - takes_value: false - - rpc-port: - long: rpc-port - value_name: PORT - help: Specify HTTP RPC server TCP port - takes_value: true - - ws-port: - long: ws-port - value_name: PORT - help: Specify WebSockets RPC server TCP port - takes_value: true - - bootnodes: - long: bootnodes - value_name: URL - help: Specify a list of bootnodes - takes_value: true - multiple: true - - reserved-nodes: - long: reserved-nodes - value_name: URL - help: Specify a list of reserved node addresses - takes_value: true - multiple: true - - out-peers: - long: out-peers - value_name: OUT_PEERS - help: Specify the number of outgoing connections we're trying to maintain - takes_value: true - - in-peers: - long: in-peers - value_name: IN_PEERS - help: Specify the maximum number of incoming connections we're accepting - takes_value: true - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification (one of dev, local or staging) - takes_value: true - - pruning: - long: pruning - value_name: PRUNING_MODE - help: Specify the pruning mode, a number of blocks to keep or "archive". Default is 256. - takes_value: true - - name: - long: name - value_name: NAME - help: The human-readable name for this node, as reported to the telemetry server, if enabled - takes_value: true - - telemetry: - short: t - long: telemetry - help: Should connect to the Substrate telemetry server (telemetry is off by default on local chains) - takes_value: false - - no-telemetry: - long: no-telemetry - help: Should not connect to the Substrate telemetry server (telemetry is on by default on global chains) - takes_value: false - - telemetry-url: - long: telemetry-url - value_name: TELEMETRY_URL - help: The URL of the telemetry server. Implies --telemetry - takes_value: true - - execution: - long: execution - value_name: STRATEGY - help: The means of execution used when calling into the runtime. Can be either wasm, native or both. -subcommands: - - build-spec: - about: Build a spec.json file, outputing to stdout - args: - - raw: - long: raw - help: Force raw genesis storage output. - takes_value: false - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification (one of dev, local or staging) - takes_value: true - - dev: - long: dev - help: Specify the development chain - takes_value: false - - export-blocks: - about: Export blocks to a file - args: - - OUTPUT: - index: 1 - help: Output file name or stdout if unspecified. - required: false - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification. - takes_value: true - - dev: - long: dev - help: Specify the development chain - takes_value: false - - base-path: - long: base-path - short: d - value_name: PATH - help: Specify custom base path. - takes_value: true - - from: - long: from - value_name: BLOCK - help: Specify starting block number. 1 by default. - takes_value: true - - to: - long: to - value_name: BLOCK - help: Specify last block number. Best block by default. - takes_value: true - - json: - long: json - help: Use JSON output rather than binary. - takes_value: false - - import-blocks: - about: Import blocks from file. - args: - - INPUT: - index: 1 - help: Input file or stdin if unspecified. - required: false - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification. - takes_value: true - - dev: - long: dev - help: Specify the development chain - takes_value: false - - base-path: - long: base-path - short: d - value_name: PATH - help: Specify custom base path. - takes_value: true - - execution: - long: execution - value_name: STRATEGY - help: The means of execution used when executing blocks. Can be either wasm, native or both. - - api-execution: - long: api-execution - value_name: STRATEGY - help: The means of execution used when calling into the runtime. Can be either wasm, native or both. - - max-heap-pages: - long: max-heap-pages - value_name: COUNT - help: The maximum number of 64KB pages to ever allocate for Wasm execution. Don't alter this unless you know what you're doing. - - revert: - about: Revert chain to the previous state - args: - - NUM: - index: 1 - help: Number of blocks to revert. Default is 256. - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification. - takes_value: true - - dev: - long: dev - help: Specify the development chain - takes_value: false - - base-path: - long: base-path - short: d - value_name: PATH - help: Specify custom base path. - takes_value: true - - purge-chain: - about: Remove the whole chain data. - args: - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification. - takes_value: true - - dev: - long: dev - help: Specify the development chain - takes_value: false - - base-path: - long: base-path - short: d - value_name: PATH - help: Specify custom base path. - takes_value: true diff --git a/core/cli/src/lib.rs b/core/cli/src/lib.rs index 8aec489457..a435a53d51 100644 --- a/core/cli/src/lib.rs +++ b/core/cli/src/lib.rs @@ -50,7 +50,10 @@ extern crate clap; extern crate error_chain; #[macro_use] extern crate log; +#[macro_use] +extern crate structopt; +mod params; pub mod error; pub mod informant; mod panic_hook; @@ -72,6 +75,8 @@ use std::path::{Path, PathBuf}; use std::str::FromStr; use names::{Generator, Name}; use regex::Regex; +use structopt::StructOpt; +pub use params::{CoreParams, CoreCommands, ExecutionStrategy}; use futures::Future; @@ -90,11 +95,11 @@ pub struct VersionInfo { } /// CLI Action -pub enum Action { +pub enum Action { /// Substrate handled the command. No need to do anything. ExecutedInternally, /// Service mode requested. Caller should start the service. - RunService((FactoryFullConfiguration, E)), + RunService(E), } /// Something that can be converted into an exit signal. @@ -117,7 +122,7 @@ fn load_spec(matches: &clap::ArgMatches, factory: F) -> Result PathBuf { - matches.value_of("base-path") + matches.value_of("base_path") .map(|x| Path::new(x).to_owned()) .unwrap_or_else(default_base_path) } @@ -145,84 +150,42 @@ fn is_node_name_valid(_name: &str) -> Result<(), &str> { Ok(()) } -/// Parse command line arguments and execute commands or return service configuration. -/// -/// IANA unassigned port ranges that we could use: -/// 6717-6766 Unassigned -/// 8504-8553 Unassigned -/// 9556-9591 Unassigned -/// 9803-9874 Unassigned -/// 9926-9949 Unassigned -pub fn prepare_execution( - args: I, - exit: E, - version: VersionInfo, - spec_factory: S, - impl_name: &'static str, -) -> error::Result> +/// Parse command line arguments +pub fn parse_args_default<'a, I, T>(args: I, version: VersionInfo) -> clap::ArgMatches<'a> where I: IntoIterator, T: Into + Clone, - E: IntoExit, - F: ServiceFactory, - S: FnOnce(&str) -> Result>>, String>, { - panic_hook::set(); - let full_version = service::config::full_version_from_strs( version.version, version.commit ); - let yaml = format!(include_str!("./cli.yml"), - name = version.executable_name, - description = version.description, - author = version.author, - ); - let yaml = &clap::YamlLoader::load_from_str(&yaml).expect("Invalid yml file")[0]; - let matches = match clap::App::from_yaml(yaml) + + match CoreParams::clap() + .name(version.executable_name) + .author(version.author) + .about(version.description) .version(&(full_version + "\n")[..]) .get_matches_from_safe(args) { Ok(m) => m, Err(e) => e.exit(), - }; - - // TODO [ToDr] Split parameters parsing from actual execution. - let log_pattern = matches.value_of("log").unwrap_or(""); - init_logger(log_pattern); - fdlimit::raise_fd_limit(); - - if let Some(matches) = matches.subcommand_matches("build-spec") { - let spec = load_spec(&matches, spec_factory)?; - build_spec::(matches, spec)?; - return Ok(Action::ExecutedInternally); - } - - if let Some(matches) = matches.subcommand_matches("export-blocks") { - let spec = load_spec(&matches, spec_factory)?; - export_blocks::(matches, spec, exit.into_exit())?; - return Ok(Action::ExecutedInternally); - } - - if let Some(matches) = matches.subcommand_matches("import-blocks") { - let spec = load_spec(&matches, spec_factory)?; - import_blocks::(matches, spec, exit.into_exit())?; - return Ok(Action::ExecutedInternally); - } - - if let Some(matches) = matches.subcommand_matches("revert") { - let spec = load_spec(&matches, spec_factory)?; - revert_chain::(matches, spec)?; - return Ok(Action::ExecutedInternally); } +} - if let Some(matches) = matches.subcommand_matches("purge-chain") { - let spec = load_spec(&matches, spec_factory)?; - purge_chain::(matches, spec)?; - return Ok(Action::ExecutedInternally); - } +/// Parse clap::Matches into config and chain specification +pub fn parse_matches<'a, F, S>( + spec_factory: S, + version: VersionInfo, + impl_name: &'static str, + matches: &clap::ArgMatches<'a> +) -> error::Result<(ChainSpec<::Genesis>, FactoryFullConfiguration)> +where + F: ServiceFactory, + S: FnOnce(&str) -> Result>>, String>, +{ let spec = load_spec(&matches, spec_factory)?; - let mut config = service::Configuration::default_with_spec(spec); + let mut config = service::Configuration::default_with_spec(spec.clone()); config.impl_name = impl_name; config.impl_commit = version.commit; @@ -284,14 +247,14 @@ where config.network.config_path = Some(network_path(&base_path, config.chain_spec.id()).to_string_lossy().into()); config.network.net_config_path = config.network.config_path.clone(); config.network.reserved_nodes.extend(matches - .values_of("reserved-nodes") + .values_of("reserved_nodes") .map_or(Default::default(), |v| v.map(|n| n.to_owned()).collect::>())); if !config.network.reserved_nodes.is_empty() { config.network.non_reserved_mode = NonReservedPeerMode::Deny; } config.network.listen_addresses = Vec::new(); - for addr in matches.values_of("listen-addr").unwrap_or_default() { + for addr in matches.values_of("listen_addr").unwrap_or_default() { let addr = addr.parse().map_err(|_| "Invalid listen multiaddress")?; config.network.listen_addresses.push(addr); } @@ -310,17 +273,17 @@ where config.network.public_addresses = Vec::new(); config.network.client_version = config.client_id(); - config.network.use_secret = match matches.value_of("node-key").map(H256::from_str) { + config.network.use_secret = match matches.value_of("node_key").map(H256::from_str) { Some(Ok(secret)) => Some(secret.into()), Some(Err(err)) => return Err(format!("Error parsing node key: {}", err).into()), None => None, }; - let in_peers = match matches.value_of("in-peers") { + let in_peers = match matches.value_of("in_peers") { Some(in_peers) => in_peers.parse().map_err(|_| "Invalid in-peers value specified.")?, None => 25, }; - let out_peers = match matches.value_of("out-peers") { + let out_peers = match matches.value_of("out_peers") { Some(out_peers) => out_peers.parse().map_err(|_| "Invalid out-peers value specified.")?, None => 25, }; @@ -334,20 +297,73 @@ where config.keys.push("Alice".into()); } - let rpc_interface: &str = if matches.is_present("rpc-external") { "0.0.0.0" } else { "127.0.0.1" }; - let ws_interface: &str = if matches.is_present("ws-external") { "0.0.0.0" } else { "127.0.0.1" }; + let rpc_interface: &str = if matches.is_present("rpc_external") { "0.0.0.0" } else { "127.0.0.1" }; + let ws_interface: &str = if matches.is_present("ws_external") { "0.0.0.0" } else { "127.0.0.1" }; - config.rpc_http = Some(parse_address(&format!("{}:{}", rpc_interface, 9933), "rpc-port", &matches)?); - config.rpc_ws = Some(parse_address(&format!("{}:{}", ws_interface, 9944), "ws-port", &matches)?); + config.rpc_http = Some(parse_address(&format!("{}:{}", rpc_interface, 9933), "rpc_port", &matches)?); + config.rpc_ws = Some(parse_address(&format!("{}:{}", ws_interface, 9944), "ws_port", &matches)?); // Override telemetry - if matches.is_present("no-telemetry") { + if matches.is_present("no_telemetry") { config.telemetry_url = None; - } else if let Some(url) = matches.value_of("telemetry-url") { + } else if let Some(url) = matches.value_of("telemetry_url") { config.telemetry_url = Some(url.to_owned()); } - Ok(Action::RunService((config, exit))) + Ok((spec, config)) +} + +// +// IANA unassigned port ranges that we could use: +// 6717-6766 Unassigned +// 8504-8553 Unassigned +// 9556-9591 Unassigned +// 9803-9874 Unassigned +// 9926-9949 Unassigned + +/// execute default commands or return service configuration +pub fn execute_default<'a, F, E>( + spec: ChainSpec>, + exit: E, + matches: &clap::ArgMatches<'a> +) -> error::Result> +where + E: IntoExit, + F: ServiceFactory, +{ + + panic_hook::set(); + + let log_pattern = matches.value_of("log").unwrap_or(""); + init_logger(log_pattern); + fdlimit::raise_fd_limit(); + + if let Some(matches) = matches.subcommand_matches("build_spec") { + build_spec::(matches, spec)?; + return Ok(Action::ExecutedInternally); + } + + if let Some(matches) = matches.subcommand_matches("export_blocks") { + export_blocks::(matches, spec, exit.into_exit())?; + return Ok(Action::ExecutedInternally); + } + + if let Some(matches) = matches.subcommand_matches("import_blocks") { + import_blocks::(matches, spec, exit.into_exit())?; + return Ok(Action::ExecutedInternally); + } + + if let Some(matches) = matches.subcommand_matches("revert") { + revert_chain::(matches, spec)?; + return Ok(Action::ExecutedInternally); + } + + if let Some(matches) = matches.subcommand_matches("purge_chain") { + purge_chain::(matches, spec)?; + return Ok(Action::ExecutedInternally); + } + + Ok(Action::RunService(exit)) } fn build_spec(matches: &clap::ArgMatches, spec: ChainSpec>) -> error::Result<()> diff --git a/core/cli/src/params.rs b/core/cli/src/params.rs new file mode 100644 index 0000000000..a6e56f33f2 --- /dev/null +++ b/core/cli/src/params.rs @@ -0,0 +1,216 @@ +// Copyright 2018 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 . + +use std::path::PathBuf; +use structopt::StructOpt; + +#[derive(Debug, StructOpt)] +#[structopt(name = "Substrate")] +pub struct CoreParams { + #[structopt(short = "l", long = "log", value_name = "LOG_PATTERN", help = "Sets a custom logging filter")] + log: Option, + + #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path", parse(from_os_str))] + base_path: Option, + + #[structopt(long = "keystore-path", value_name = "PATH", help = "Specify custom keystore path", parse(from_os_str))] + keystore_path: Option, + + #[structopt(long = "key", value_name = "STRING", help = "Specify additional key seed")] + key: Option, + + #[structopt(long = "node-key", value_name = "KEY", help = "Specify node secret key (64-character hex string)")] + node_key: Option, + + #[structopt(long = "validator",help = "Enable validator mode")] + validator: bool, + + #[structopt(long = "light", help = "Run in light client mode")] + light: bool, + + #[structopt(long = "dev", help = "Run in development mode; implies --chain=dev --validator --key Alice")] + dev: bool, + + #[structopt(long = "listen-addr", value_name = "LISTEN_ADDR", help = "Listen on this multiaddress")] + listen_addr: Vec, + + #[structopt(long = "port", value_name = "PORT", help = "Specify p2p protocol TCP port. Only used if --listen-addr is not specified.")] + port: Option, + + #[structopt(long = "rpc-external", help = "Listen to all RPC interfaces (default is local)")] + rpc_external: bool, + + #[structopt(long = "ws-external", help = "Listen to all Websocket interfaces (default is local)")] + ws_external: bool, + + #[structopt(long = "rpc-port", value_name = "PORT", help = "Specify HTTP RPC server TCP port")] + rpc_port: Option, + + #[structopt(long = "ws-port", value_name = "PORT", help = "Specify WebSockets RPC server TCP port")] + ws_port: Option, + + #[structopt(long = "bootnodes", value_name = "URL", help = "Specify a list of bootnodes")] + bootnodes: Vec, + + #[structopt(long = "reserved-nodes", value_name = "URL", help = "Specify a list of reserved node addresses")] + reserved_nodes: Vec, + + #[structopt(long = "out-peers", value_name = "OUT_PEERS", help = "Specify the number of outgoing connections we're trying to maintain")] + out_peers: Option, + + #[structopt(long = "in-peers", value_name = "IN_PEERS", help = "Specify the maximum number of incoming connections we're accepting")] + in_peers: Option, + + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification (one of dev, local or staging)")] + chain: Option, + + #[structopt(long = "pruning", value_name = "PRUNING_MODE", help = "Specify the pruning mode, a number of blocks to keep or 'archive'. Default is 256.")] + pruning: Option, + + #[structopt(long = "name", value_name = "NAME", help = "The human-readable name for this node, as reported to the telemetry server, if enabled")] + name: Option, + + #[structopt(short = "t", long = "telemetry", help = "Should connect to the Substrate telemetry server (telemetry is off by default on local chains)")] + telemetry: bool, + + #[structopt(long = "no-telemetry", help = "Should not connect to the Substrate telemetry server (telemetry is on by default on global chains)")] + no_telemetry: bool, + + #[structopt(long = "telemetry-url", value_name = "TELEMETRY_URL", help = "The URL of the telemetry server. Implies --telemetry")] + telemetry_url: Option, + + #[structopt(long = "execution", value_name = "STRATEGY", help = "The means of execution used when calling into the runtime. Can be either wasm, native or both.")] + execution: Option, + + #[structopt(subcommand)] + cmds: Option, +} + +#[derive(Debug, StructOpt)] +pub enum ExecutionStrategy { + Native, + Wasm, + Both, +} + +impl Default for ExecutionStrategy { + fn default() -> Self { + ExecutionStrategy::Both + } +} + +impl std::str::FromStr for ExecutionStrategy { + type Err = String; + fn from_str(input: &str) -> Result { + match input { + "native" => Ok(ExecutionStrategy::Native), + "wasm" | "webassembly" => Ok(ExecutionStrategy::Wasm), + "both" => Ok(ExecutionStrategy::Both), + _ => Err("Please specify either 'native', 'wasm' or 'both".to_owned()) + + } + } +} + +#[derive(Debug, StructOpt)] +pub enum CoreCommands { + #[structopt(name = "build-spec", about = "Build a spec.json file, outputing to stdout")] + BuildSpec { + #[structopt(long = "raw", help = "Force raw genesis storage output.")] + raw: bool, + + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification (one of dev, local or staging)")] + chain: Option, + + #[structopt(long = "dev", help = "Specify the development chain")] + dev: bool, + }, + + #[structopt(name = "export-blocks", about = "Export blocks to a file")] + ExportBlocks { + #[structopt(help = "Output file name or stdout if unspecified.", parse(from_os_str))] + OUTPUT: Option, + + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + chain: Option, + + #[structopt(long = "dev", help = "Specify the development chain")] + dev: bool, + + #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.")] + base_path: Option, + + #[structopt(long = "from", value_name = "BLOCK", help = "Specify starting block number. 1 by default.")] + from: Option, + + #[structopt(long = "to", value_name = "BLOCK", help = "Specify last block number. Best block by default.")] + to: Option, + + #[structopt(long = "json", help = "Use JSON output rather than binary.")] + json: bool, + }, + + #[structopt(name = "import-blocks", about = "Import blocks from file.")] + ImportBlocks { + #[structopt(help = "Input file or stdin if unspecified.", parse(from_os_str))] + INPUT: Option, + + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + chain: Option, + + #[structopt(long = "dev", help = "Specify the development chain")] + dev: bool, + + #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.", parse(from_os_str))] + base_path: Option, + + #[structopt(long = "execution", value_name = "STRATEGY", help = "The means of execution used when executing blocks. Can be either wasm, native or both.")] + execution: ExecutionStrategy, + + #[structopt(long = "api-execution", value_name = "STRATEGY", help = "The means of execution used when calling into the runtime. Can be either wasm, native or both.")] + api_execution: ExecutionStrategy, + + #[structopt(long = "max-heap-pages", value_name = "COUNT", help = "The maximum number of 64KB pages to ever allocate for Wasm execution. Don't alter this unless you know what you're doing.")] + max_heap_pages: Option, + }, + + #[structopt(name = "revert", about = "Revert chain to the previous state")] + Revert { + #[structopt(help = "Number of blocks to revert. Default is 256.")] + NUM: Option, + + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + chain: Option, + + #[structopt(long = "dev", help = "Specify the development chain")] + dev: bool, + + #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.", parse(from_os_str))] + base_path: Option, + }, + + #[structopt(name = "purge-chain", about = "Remove the whole chain data.")] + PurgeChain { + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + chain: Option, + + #[structopt(long = "dev", help = "Specify the development chain")] + dev: bool, + + #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.", parse(from_os_str))] + base_path: Option + } +} diff --git a/core/consensus/common/src/block_import.rs b/core/consensus/common/src/block_import.rs index 566e5bfb02..e92a691879 100644 --- a/core/consensus/common/src/block_import.rs +++ b/core/consensus/common/src/block_import.rs @@ -1,7 +1,25 @@ +// Copyright 2017-2018 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 . + +//! Block import helpers. use primitives::AuthorityId; -use runtime_primitives::traits::{Block as BlockT, DigestItemFor}; +use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, DigestItemFor}; use runtime_primitives::Justification; +use std::borrow::Cow; /// Block import result. #[derive(Debug)] @@ -89,6 +107,24 @@ impl ImportBlock { self.auxiliary, ) } + + /// Get a handle to full header (with post-digests applied). + pub fn post_header(&self) -> Cow { + use runtime_primitives::traits::Digest; + + if self.post_digests.is_empty() { + Cow::Borrowed(&self.header) + } else { + Cow::Owned({ + let mut hdr = self.header.clone(); + for digest_item in &self.post_digests { + hdr.digest_mut().push(digest_item.clone()); + } + + hdr + }) + } + } } @@ -101,4 +137,4 @@ pub trait BlockImport { block: ImportBlock, new_authorities: Option> ) -> Result; -} \ No newline at end of file +} diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index 9c03c2bc10..9fe2776744 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -4,13 +4,15 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -futures = "0.1.17" +futures = "0.1" parity-codec = "2.1" parity-codec-derive = "2.0" sr-primitives = { path = "../sr-primitives" } substrate-consensus-common = { path = "../consensus/common" } substrate-primitives = { path = "../primitives" } substrate-client = { path = "../client" } +substrate-network = { path = "../network" } +substrate-service = { path = "../service", optional = true } log = "0.4" parking_lot = "0.4" tokio = "0.1.7" @@ -25,3 +27,7 @@ substrate-network = { path = "../network", features = ["test-helpers"] } substrate-keyring = { path = "../keyring" } substrate-test-client = { path = "../test-client"} env_logger = "0.5" + +[features] +default = ["service-integration"] +service-integration = ["substrate-service"] diff --git a/core/finality-grandpa/primitives/src/lib.rs b/core/finality-grandpa/primitives/src/lib.rs index aaca423ecd..4940574533 100644 --- a/core/finality-grandpa/primitives/src/lib.rs +++ b/core/finality-grandpa/primitives/src/lib.rs @@ -17,6 +17,10 @@ //! Primitives for GRANDPA integration, suitable for WASM compilation. #![cfg_attr(not(feature = "std"), no_std)] +#![cfg_attr(not(feature = "std"), feature(alloc))] + +#[cfg(not(feature = "std"))] +extern crate alloc; extern crate substrate_primitives; extern crate sr_primitives; @@ -57,6 +61,14 @@ pub mod id { pub const GRANDPA_API: ApiId = *b"fgrandpa"; } +/// Well-known storage keys for GRANDPA. +pub mod well_known_keys { + /// The key for the authorities and weights vector in storage. + pub const AUTHORITY_PREFIX: &[u8] = b":grandpa:auth:"; + /// The key for the authorities count. + pub const AUTHORITY_COUNT: &[u8] = b":grandpa:auth:len"; +} + decl_runtime_apis! { /// APIs for integrating the GRANDPA finality gadget into runtimes. /// This should be implemented on the runtime side. @@ -76,6 +88,10 @@ decl_runtime_apis! { /// /// No change should be scheduled if one is already and the delay has not /// passed completely. + /// + /// This should be a pure function: i.e. as long as the runtime can interpret + /// the digest type it should return the same result regardless of the current + /// state. fn grandpa_pending_change(digest: DigestFor) -> Option>>; diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index c97769cb43..bdb6220fd6 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -50,7 +50,9 @@ impl SharedAuthoritySet { } impl SharedAuthoritySet - where N: Add + Ord + Clone + Debug +where + N: Add + Ord + Clone + Debug, + H: Debug { /// Get the earliest limit-block number, if any. pub(crate) fn current_limit(&self) -> Option { @@ -103,7 +105,9 @@ impl AuthoritySet { } impl AuthoritySet - where N: Add + Ord + Clone + Debug, +where + N: Add + Ord + Clone + Debug, + H: Debug { /// Note an upcoming pending transition. pub(crate) fn add_pending_change(&mut self, pending: PendingChange) { @@ -152,7 +156,11 @@ impl AuthoritySet // check if the block that signalled the change is canonical in // our chain. - if canonical(change.canon_height.clone())? == change.canon_hash { + let canonical_at_height = canonical(change.canon_height.clone())?; + debug!(target: "afg", "Evaluating potential set change at block {:?}. Our canonical hash is {:?}", + (&change.canon_height, &change.canon_hash), canonical_at_height); + + if canonical_at_height == change.canon_hash { // apply this change: make the set canonical info!(target: "finality", "Applying authority set change scheduled at block #{:?}", change.canon_height); diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 85f2377670..956b87df0e 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -55,6 +55,7 @@ extern crate futures; extern crate substrate_client as client; extern crate sr_primitives as runtime_primitives; extern crate substrate_consensus_common as consensus_common; +extern crate substrate_network as network; extern crate substrate_primitives; extern crate tokio; extern crate parking_lot; @@ -64,8 +65,8 @@ extern crate substrate_finality_grandpa_primitives as fg_primitives; #[macro_use] extern crate log; -#[cfg(test)] -extern crate substrate_network as network; +#[cfg(feature="service-integration")] +extern crate substrate_service as service; #[cfg(test)] extern crate substrate_keyring as keyring; @@ -86,7 +87,7 @@ use client::{Client, error::Error as ClientError, ImportNotifications, backend:: use client::blockchain::HeaderBackend; use client::runtime_api::TaggedTransactionQueue; use codec::{Encode, Decode}; -use consensus_common::{BlockImport, ImportBlock, ImportResult}; +use consensus_common::{BlockImport, ImportBlock, ImportResult, Authorities}; use runtime_primitives::traits::{ NumberFor, Block as BlockT, Header as HeaderT, DigestFor, ProvideRuntimeApi }; @@ -98,6 +99,8 @@ use tokio::timer::Interval; use grandpa::Error as GrandpaError; use grandpa::{voter, round::State as RoundState, Equivocation, BlockNumberOps}; +use network::{Service as NetworkService, ExHashT}; +use network::consensus_gossip::{ConsensusMessage}; use std::collections::{VecDeque, HashMap}; use std::sync::Arc; use std::time::{Instant, Duration}; @@ -108,6 +111,11 @@ pub use fg_primitives::ScheduledChange; mod authorities; +#[cfg(feature="service-integration")] +mod service_integration; +#[cfg(feature="service-integration")] +pub use service_integration::{LinkHalfForService, BlockImportForService}; + #[cfg(test)] mod tests; @@ -173,7 +181,7 @@ impl From for Error { /// handle to a gossip service or similar. /// /// Intended to be a lightweight handle such as an `Arc`. -pub trait Network: Clone { +pub trait Network : Clone { /// A stream of input messages for a topic. type In: Stream,Error=()>; @@ -188,6 +196,52 @@ pub trait Network: Clone { fn drop_messages(&self, round: u64, set_id: u64); } +/// Bridge between NetworkService, gossiping consensus messages and Grandpa +pub struct NetworkBridge, H: ExHashT> { + service: Arc> +} + +impl, H: ExHashT> NetworkBridge { + /// Create a new NetworkBridge to the given NetworkService + pub fn new(service: Arc>) -> Self { + NetworkBridge { service } + } +} + + +impl, H: ExHashT> Clone for NetworkBridge { + fn clone(&self) -> Self { + NetworkBridge { + service: Arc::clone(&self.service) + } + } +} + +fn message_topic(round: u64, set_id: u64) -> B::Hash { + use runtime_primitives::traits::Hash as HashT; + <::Hashing as HashT>::hash(format!("{}-{}", set_id, round).as_bytes()) +} + +impl, H: ExHashT> Network for NetworkBridge { + type In = mpsc::UnboundedReceiver; + fn messages_for(&self, round: u64, set_id: u64) -> Self::In { + self.service.consensus_gossip().write().messages_for(message_topic::(round, set_id)) + } + + fn send_message(&self, round: u64, set_id: u64, message: Vec) { + let topic = message_topic::(round, set_id); + let gossip = self.service.consensus_gossip(); + self.service.with_spec(move |_s, context|{ + gossip.write().multicast(context, topic, message); + }); + } + + fn drop_messages(&self, round: u64, set_id: u64) { + let topic = message_topic::(round, set_id); + self.service.consensus_gossip().write().collect_garbage(|t| t == &topic); + } +} + /// Something which can determine if a block is known. pub trait BlockStatus { /// Return `Ok(Some(number))` or `Ok(None)` depending on whether the block @@ -523,7 +577,7 @@ impl, B, E, N, RA> grandpa::Chain { @@ -583,22 +637,22 @@ impl, N, RA> voter::Environment + 'static, E: CallExecutor + 'static + Send + Sync, - N: Network + 'static, - N::In: 'static, + N: Network + 'static + Send, + N::In: 'static + Send, RA: 'static + Send + Sync, NumberFor: BlockNumberOps, { - type Timer = Box>; + type Timer = Box + Send>; type Id = AuthorityId; type Signature = ed25519::Signature; - type In = Box, Self::Signature, Self::Id>, Error = Self::Error, - >>; - type Out = Box + Send>; + type Out = Box>, SinkError = Self::Error, - >>; + > + Send>; type Error = ExitOrError>; #[allow(unreachable_code)] @@ -689,6 +743,8 @@ impl, N, RA> voter::Environment, N, RA> voter::Environment, RA, PRA> BlockImport // until the block is written to prevent a race if we need to restore // the old authority set on error. let just_in_case = maybe_change.map(|change| { - let hash = block.header.hash(); + let hash = block.post_header().hash(); let number = block.header.number().clone(); let mut authorities = self.authority_set.inner().write(); @@ -834,12 +888,38 @@ impl, RA, PRA> BlockImport } } +impl, RA, PRA> Authorities for GrandpaBlockImport +where + B: Backend + 'static, + E: CallExecutor + 'static + Clone + Send + Sync, + RA: TaggedTransactionQueue, // necessary for client to import `BlockImport`. +{ + + type Error = as Authorities>::Error; + fn authorities(&self, at: &BlockId) -> Result, Self::Error> { + self.inner.authorities_at(at) + } +} + /// Half of a link between a block-import worker and a the background voter. // This should remain non-clone. pub struct LinkHalf, RA> { client: Arc>, authority_set: SharedAuthoritySet>, } +impl, RA> Clone for LinkHalf +where + B: Backend + 'static, + E: CallExecutor + 'static + Clone + Send + Sync, + RA: TaggedTransactionQueue, // necessary for client to import `BlockImport`. +{ + fn clone(&self) -> Self { + LinkHalf { + client: self.client.clone(), + authority_set: self.authority_set.clone() + } + } +} /// Make block importer and link half necessary to tie the background voter /// to it. @@ -895,12 +975,12 @@ pub fn run_grandpa, N, RA>( config: Config, link: LinkHalf, network: N, -) -> ::client::error::Result> where +) -> ::client::error::Result + Send + 'static> where Block::Hash: Ord, B: Backend + 'static, E: CallExecutor + Send + Sync + 'static, - N: Network + 'static, - N::In: 'static, + N: Network + Send + Sync + 'static, + N::In: Send + 'static, NumberFor: BlockNumberOps, DigestFor: Encode, RA: Send + Sync + 'static, diff --git a/core/finality-grandpa/src/service_integration.rs b/core/finality-grandpa/src/service_integration.rs new file mode 100644 index 0000000000..c4f5398312 --- /dev/null +++ b/core/finality-grandpa/src/service_integration.rs @@ -0,0 +1,40 @@ +// Copyright 2018 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 . + +/// Integrate grandpa finality with substrate service + +use client; +use service::{FullBackend, FullExecutor, ServiceFactory}; + +pub type BlockImportForService = ::GrandpaBlockImport< + FullBackend, + FullExecutor, + ::Block, + ::RuntimeApi, + client::Client< + FullBackend, + FullExecutor, + ::Block, + ::RuntimeApi + >, +>; + +pub type LinkHalfForService = ::LinkHalf< + FullBackend, + FullExecutor, + ::Block, + ::RuntimeApi +>; \ No newline at end of file diff --git a/core/finality-grandpa/src/tests.rs b/core/finality-grandpa/src/tests.rs index 967686a925..ef5228e0fc 100644 --- a/core/finality-grandpa/src/tests.rs +++ b/core/finality-grandpa/src/tests.rs @@ -158,11 +158,15 @@ fn make_topic(round: u64, set_id: u64) -> Hash { } impl Network for MessageRouting { - type In = Box,Error=()>>; + type In = Box,Error=()> + Send>; fn messages_for(&self, round: u64, set_id: u64) -> Self::In { - let messages = self.inner.lock().peer(self.peer_id) - .with_spec(|spec, _| spec.gossip.messages_for(make_topic(round, set_id))); + let inner = self.inner.lock(); + let peer = inner.peer(self.peer_id); + let mut gossip = peer.consensus_gossip().write(); + let messages = peer.with_spec(move |_, _| { + gossip.messages_for(make_topic(round, set_id)) + }); let messages = messages.map_err( move |_| panic!("Messages for round {} dropped too early", round) @@ -179,8 +183,12 @@ impl Network for MessageRouting { fn drop_messages(&self, round: u64, set_id: u64) { let topic = make_topic(round, set_id); - self.inner.lock().peer(self.peer_id) - .with_spec(|spec, _| spec.gossip.collect_garbage(|t| t == &topic)); + let inner = self.inner.lock(); + let peer = inner.peer(self.peer_id); + let mut gossip = peer.consensus_gossip().write(); + peer.with_spec(move |_, _| { + gossip.collect_garbage(|t| t == &topic) + }); } } @@ -318,6 +326,8 @@ fn finalize_3_voters_no_observers() { .take_while(|n| Ok(n.header.number() < &20)) .for_each(|_| Ok(())) ); + fn assert_send(_: &T) { } + let voter = run_grandpa( Config { gossip_duration: TEST_GOSSIP_DURATION, @@ -328,6 +338,8 @@ fn finalize_3_voters_no_observers() { MessageRouting::new(net.clone(), peer_id), ).expect("all in order with client and network"); + assert_send(&voter); + runtime.spawn(voter); } diff --git a/core/network/src/consensus_gossip.rs b/core/network/src/consensus_gossip.rs index 882d2f02fd..794efc3c98 100644 --- a/core/network/src/consensus_gossip.rs +++ b/core/network/src/consensus_gossip.rs @@ -24,14 +24,11 @@ use rand::{self, Rng}; use network_libp2p::NodeIndex; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, Hash, HashFor}; use runtime_primitives::generic::BlockId; -use message::generic::{Message, ConsensusMessage}; +pub use message::generic::{Message, ConsensusMessage}; use protocol::Context; use config::Roles; -use specialization::NetworkSpecialization; -use StatusMessage; -use generic_message; -// TODO: Add additional spam/DoS attack protection. +// FIXME: Add additional spam/DoS attack protection: https://github.com/paritytech/substrate/issues/1115 const MESSAGE_LIFETIME: Duration = Duration::from_secs(600); struct PeerConsensus { @@ -55,10 +52,7 @@ pub struct ConsensusGossip { session_start: Option, } -impl ConsensusGossip -where - B::Header: HeaderT -{ +impl ConsensusGossip { /// Create a new instance. pub fn new() -> Self { ConsensusGossip { @@ -262,52 +256,6 @@ where } } -impl NetworkSpecialization for ConsensusGossip where - Block::Header: HeaderT -{ - fn status(&self) -> Vec { - Vec::new() - } - - fn on_connect(&mut self, ctx: &mut Context, who: NodeIndex, status: StatusMessage) { - self.new_peer(ctx, who, status.roles); - } - - fn on_disconnect(&mut self, ctx: &mut Context, who: NodeIndex) { - self.peer_disconnected(ctx, who); - } - - fn on_message( - &mut self, - ctx: &mut Context, - who: NodeIndex, - message: &mut Option<::message::Message> - ) { - match message.take() { - Some(generic_message::Message::Consensus(topic, msg)) => { - trace!(target: "gossip", "Consensus message from {}: {:?}", who, msg); - self.on_incoming(ctx, who, topic, msg); - } - r => *message = r, - } - } - - fn on_abort(&mut self) { - self.abort(); - } - - fn maintain_peers(&mut self, _ctx: &mut Context) { - self.collect_garbage(|_| true); - } - - fn on_block_imported( - &mut self, - _ctx: &mut Context, - _hash: ::Hash, - _header: &::Header) - {} -} - #[cfg(test)] mod tests { use runtime_primitives::testing::{H256, Block as RawBlock, ExtrinsicWrapper}; diff --git a/core/network/src/lib.rs b/core/network/src/lib.rs index a8ad20496f..de3a30402e 100644 --- a/core/network/src/lib.rs +++ b/core/network/src/lib.rs @@ -65,7 +65,7 @@ pub mod specialization; pub mod test; pub use chain::Client as ClientHandle; -pub use service::{Service, FetchFuture, TransactionPool, ManageNetwork, SyncProvider}; +pub use service::{Service, FetchFuture, TransactionPool, ManageNetwork, SyncProvider, ExHashT}; pub use protocol::{ProtocolStatus, PeerInfo, Context}; pub use sync::{Status as SyncStatus, SyncState}; pub use network_libp2p::{NodeIndex, ProtocolId, Severity, Protocol}; diff --git a/core/network/src/protocol.rs b/core/network/src/protocol.rs index 932e724bfe..9b3a3965c1 100644 --- a/core/network/src/protocol.rs +++ b/core/network/src/protocol.rs @@ -27,6 +27,7 @@ use codec::{Encode, Decode}; use message::{self, Message}; use message::generic::Message as GenericMessage; +use consensus_gossip::ConsensusGossip; use specialization::NetworkSpecialization; use sync::{ChainSync, Status as SyncStatus, SyncState}; use service::{TransactionPool, ExHashT}; @@ -57,6 +58,7 @@ pub struct Protocol, H: ExHashT> { genesis_hash: B::Hash, sync: Arc>>, specialization: RwLock, + consensus_gossip: RwLock>, context_data: ContextData, // Connected peers pending Status message. handshaking_peers: RwLock>, @@ -207,6 +209,7 @@ impl, H: ExHashT> Protocol { genesis_hash: info.chain.genesis_hash, sync: Arc::new(RwLock::new(sync)), specialization: RwLock::new(specialization), + consensus_gossip: RwLock::new(ConsensusGossip::new()), handshaking_peers: RwLock::new(HashMap::new()), transaction_pool: transaction_pool, }; @@ -221,6 +224,11 @@ impl, H: ExHashT> Protocol { &self.sync } + + pub(crate) fn consensus_gossip<'a>(&'a self) -> &'a RwLock> { + &self.consensus_gossip + } + /// Returns protocol status pub fn status(&self) -> ProtocolStatus { let sync = self.sync.read(); @@ -278,6 +286,9 @@ impl, H: ExHashT> Protocol { GenericMessage::RemoteHeaderResponse(response) => self.on_remote_header_response(io, who, response), GenericMessage::RemoteChangesRequest(request) => self.on_remote_changes_request(io, who, request), GenericMessage::RemoteChangesResponse(response) => self.on_remote_changes_response(io, who, response), + GenericMessage::Consensus(topic, msg) => { + self.consensus_gossip.write().on_incoming(&mut ProtocolContext::new(&self.context_data, io), who, topic, msg); + }, other => self.specialization.write().on_message(&mut ProtocolContext::new(&self.context_data, io), who, &mut Some(other)), } } @@ -297,6 +308,7 @@ impl, H: ExHashT> Protocol { pub fn on_peer_disconnected(&self, io: &mut SyncIo, peer: NodeIndex) { trace!(target: "sync", "Disconnecting {}: {}", peer, io.peer_debug_info(peer)); + // lock all the the peer lists so that add/remove peer events are in order let mut sync = self.sync.write(); let mut spec = self.specialization.write(); @@ -309,6 +321,7 @@ impl, H: ExHashT> Protocol { }; if removed { let mut context = ProtocolContext::new(&self.context_data, io); + self.consensus_gossip.write().peer_disconnected(&mut context, peer); sync.peer_disconnected(&mut context, peer); spec.on_disconnect(&mut context, peer); self.on_demand.as_ref().map(|s| s.on_disconnect(peer)); @@ -391,6 +404,7 @@ impl, H: ExHashT> Protocol { /// Perform time based maintenance. pub fn tick(&self, io: &mut SyncIo) { + self.consensus_gossip.write().collect_garbage(|_| true); self.maintain_peers(io); self.on_demand.as_ref().map(|s| s.maintain_peers(io)); } @@ -478,6 +492,7 @@ impl, H: ExHashT> Protocol { let mut context = ProtocolContext::new(&self.context_data, io); self.on_demand.as_ref().map(|s| s.on_connect(who, status.roles, status.best_number)); self.sync.write().new_peer(&mut context, who); + self.consensus_gossip.write().new_peer(&mut context, who, status.roles); self.specialization.write().on_connect(&mut context, who, status); } @@ -555,10 +570,12 @@ impl, H: ExHashT> Protocol { let mut spec = self.specialization.write(); let mut peers = self.context_data.peers.write(); let mut handshaking_peers = self.handshaking_peers.write(); + let mut consensus_gossip = self.consensus_gossip.write(); sync.clear(); spec.on_abort(); peers.clear(); handshaking_peers.clear(); + consensus_gossip.abort(); } pub fn stop(&self) { diff --git a/core/network/src/service.rs b/core/network/src/service.rs index 0b3d0f3f32..d5552f8520 100644 --- a/core/network/src/service.rs +++ b/core/network/src/service.rs @@ -19,11 +19,12 @@ use std::sync::Arc; use std::{io, thread}; use std::time::Duration; use futures::{self, Future, Stream, stream, sync::oneshot}; -use parking_lot::Mutex; +use parking_lot::{Mutex, RwLock}; use network_libp2p::{ProtocolId, PeerId, NetworkConfiguration, ErrorKind}; use network_libp2p::{start_service, Service as NetworkService, ServiceEvent as NetworkServiceEvent}; use network_libp2p::{RegisteredProtocol, parse_str_addr, Protocol as Libp2pProtocol}; use io::NetSyncIo; +use consensus_gossip::ConsensusGossip; use protocol::{self, Protocol, ProtocolContext, Context, ProtocolStatus}; use config::Params; use error::Error; @@ -44,6 +45,7 @@ pub trait SyncProvider: Send + Sync { fn status(&self) -> ProtocolStatus; } +/// Minimum Requirements for a Hash within Networking pub trait ExHashT: ::std::hash::Hash + Eq + ::std::fmt::Debug + Clone + Send + Sync + 'static {} impl ExHashT for T where T: ::std::hash::Hash + Eq + ::std::fmt::Debug + Clone + Send + Sync + 'static {} @@ -82,9 +84,8 @@ impl, H: ExHashT> Service>( params: Params, protocol_id: ProtocolId, - import_queue: I, + import_queue: Arc, ) -> Result>, Error> { - let import_queue = Arc::new(import_queue); let handler = Arc::new(Protocol::new( params.config, params.chain, @@ -101,7 +102,7 @@ impl, H: ExHashT> Service, H: ExHashT> Service(&'a self) -> &'a RwLock> { + self.handler.consensus_gossip() + } } impl, H: ExHashT> ::consensus::SyncOracle for Service { diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index d591896159..6120cd2035 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -58,31 +58,23 @@ impl ExecuteInContext for DummyContextExecutor { } /// The test specialization. -pub struct DummySpecialization { - /// Consensus gossip handle. - pub gossip: ConsensusGossip, -} +pub struct DummySpecialization { } impl NetworkSpecialization for DummySpecialization { fn status(&self) -> Vec { vec![] } - fn on_connect(&mut self, ctx: &mut Context, peer_id: NodeIndex, status: ::message::Status) { - self.gossip.new_peer(ctx, peer_id, status.roles); + fn on_connect(&mut self, _ctx: &mut Context, _peer_id: NodeIndex, _status: ::message::Status) { } - fn on_disconnect(&mut self, ctx: &mut Context, peer_id: NodeIndex) { - self.gossip.peer_disconnected(ctx, peer_id); + fn on_disconnect(&mut self, _ctx: &mut Context, _peer_id: NodeIndex) { } fn on_message( &mut self, - ctx: &mut Context, - peer_id: NodeIndex, - message: &mut Option<::message::Message> + _ctx: &mut Context, + _peer_id: NodeIndex, + _message: &mut Option<::message::Message> ) { - if let Some(::message::generic::Message::Consensus(topic, data)) = message.take() { - self.gossip.on_incoming(ctx, peer_id, topic, data); - } } } @@ -179,6 +171,10 @@ impl, D> Peer { self.sync.on_peer_connected(&mut TestIo::new(&self.queue, Some(other)), other); } + pub fn consensus_gossip(&self) -> &RwLock> { + self.sync.consensus_gossip() + } + /// Called on disconnect from other indicated peer. fn on_disconnect(&self, other: NodeIndex) { let mut io = TestIo::new(&self.queue, Some(other)); @@ -233,9 +229,10 @@ impl, D> Peer { /// Push a message into the gossip network and relay to peers. /// `TestNet::sync_step` needs to be called to ensure it's propagated. pub fn gossip_message(&self, topic: Hash, data: Vec) { - self.sync.with_spec(&mut TestIo::new(&self.queue, None), |spec, ctx| { - spec.gossip.multicast(ctx, topic, data); - }) + let gossip = self.sync.consensus_gossip(); + self.sync.with_spec(&mut TestIo::new(&self.queue, None), move |_s, context|{ + gossip.write().multicast(context, topic, data); + }); } /// Add blocks to the peer -- edit the block before adding @@ -363,9 +360,7 @@ pub trait TestNetFactory: Sized { let (block_import, data) = self.make_block_import(client.clone()); let import_queue = Arc::new(SyncImportQueue::new(verifier, block_import)); - let specialization = DummySpecialization { - gossip: ConsensusGossip::new(), - }; + let specialization = DummySpecialization { }; let sync = Protocol::new( config.clone(), client.clone(), diff --git a/core/service/src/chain_ops.rs b/core/service/src/chain_ops.rs index 4f2f10a39c..3d2a6bdea4 100644 --- a/core/service/src/chain_ops.rs +++ b/core/service/src/chain_ops.rs @@ -87,14 +87,15 @@ pub fn export_blocks(config: FactoryFullConfiguration, exit: E, mut } /// Import blocks from a binary stream. -pub fn import_blocks(config: FactoryFullConfiguration, exit: E, mut input: R) -> error::Result<()> +pub fn import_blocks(mut config: FactoryFullConfiguration, exit: E, mut input: R) -> error::Result<()> where F: ServiceFactory, E: Future + Send + 'static, R: Read, { struct DummyLink; impl Link for DummyLink { } let client = new_client::(&config)?; - let queue = components::FullComponents::::build_import_queue(&config, client.clone())?; + // FIXME: this shouldn't need a mutable config. https://github.com/paritytech/substrate/issues/1134 + let queue = components::FullComponents::::build_import_queue(&mut config, client.clone())?; queue.start(DummyLink)?; let (exit_send, exit_recv) = std::sync::mpsc::channel(); diff --git a/core/service/src/components.rs b/core/service/src/components.rs index 379e592238..b7d1781f3f 100644 --- a/core/service/src/components.rs +++ b/core/service/src/components.rs @@ -266,7 +266,7 @@ pub trait ServiceFactory: 'static + Sized { /// ImportQueue for a full client fn build_full_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, _client: Arc> ) -> Result { if let Some(name) = config.chain_spec.consensus_engine() { @@ -281,7 +281,7 @@ pub trait ServiceFactory: 'static + Sized { /// ImportQueue for a light client fn build_light_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, _client: Arc> ) -> Result { if let Some(name) = config.chain_spec.consensus_engine() { @@ -336,7 +336,7 @@ pub trait Components: Sized + 'static { /// instance of import queue for clients fn build_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, client: Arc> ) -> Result; } @@ -409,7 +409,7 @@ impl Components for FullComponents { } fn build_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, client: Arc> ) -> Result { Factory::build_full_import_queue(config, client) @@ -485,7 +485,7 @@ impl Components for LightComponents { } fn build_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, client: Arc> ) -> Result { Factory::build_light_import_queue(config, client) diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index 9b0283795f..aebf447149 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -103,6 +103,8 @@ pub struct Service { keystore: Keystore, exit: ::exit_future::Exit, signal: Option, + /// Configuration of this Service + pub config: FactoryFullConfiguration, proposer: Arc, Components::TransactionPoolApi>>, _rpc_http: Option, _rpc_ws: Option>, // WsServer is not `Sync`, but the service needs to be. @@ -129,7 +131,7 @@ impl Service { /// Creates a new service. pub fn new( - config: FactoryFullConfiguration, + mut config: FactoryFullConfiguration, task_executor: TaskExecutor, ) -> Result @@ -159,7 +161,7 @@ impl Service }; let (client, on_demand) = Components::build_client(&config, executor)?; - let import_queue = Components::build_import_queue(&config, client.clone())?; + let import_queue = Arc::new(Components::build_import_queue(&mut config, client.clone())?); let best_header = client.best_block_header()?; let version = config.full_version(); @@ -168,7 +170,7 @@ impl Service let network_protocol = ::build_network_protocol(&config)?; let transaction_pool = Arc::new( - Components::build_transaction_pool(config.transaction_pool, client.clone())? + Components::build_transaction_pool(config.transaction_pool.clone(), client.clone())? ); let transaction_pool_adapter = TransactionPoolAdapter:: { imports_external_transactions: !(config.roles == Roles::LIGHT), @@ -177,19 +179,30 @@ impl Service }; let network_params = Components::CreateNetworkParams::create_network_params( - client.clone(), config.roles, config.network, on_demand.clone(), - transaction_pool_adapter, network_protocol + client.clone(), + config.roles, + config.network.clone(), + on_demand.clone(), + transaction_pool_adapter, + network_protocol, ); - let mut protocol_id = network::ProtocolId::default(); - let protocol_id_full = config.chain_spec.protocol_id().unwrap_or(DEFAULT_PROTOCOL_ID).as_bytes(); - if protocol_id_full.len() > protocol_id.len() { - warn!("Protocol ID truncated to {} chars", protocol_id.len()); - } - let id_len = protocol_id_full.len().min(protocol_id.len()); - &mut protocol_id[0..id_len].copy_from_slice(&protocol_id_full[0..id_len]); + let protocol_id = { + let protocol_id_full = config.chain_spec.protocol_id().unwrap_or(DEFAULT_PROTOCOL_ID).as_bytes(); + let mut protocol_id = network::ProtocolId::default(); + if protocol_id_full.len() > protocol_id.len() { + warn!("Protocol ID truncated to {} chars", protocol_id.len()); + } + let id_len = protocol_id_full.len().min(protocol_id.len()); + &mut protocol_id[0..id_len].copy_from_slice(&protocol_id_full[0..id_len]); + protocol_id + }; - let network = network::Service::new(network_params, protocol_id, import_queue)?; + let network = network::Service::new( + network_params, + protocol_id, + import_queue + )?; on_demand.map(|on_demand| on_demand.set_service_link(Arc::downgrade(&network))); { @@ -244,7 +257,7 @@ impl Service }); // Telemetry - let telemetry = match config.telemetry_url { + let telemetry = match config.telemetry_url.clone() { Some(url) => { let is_authority = config.roles == Roles::AUTHORITY; let pubkey = format!("{}", public_key); @@ -276,6 +289,7 @@ impl Service transaction_pool: transaction_pool, signal: Some(signal), keystore: keystore, + config, proposer, exit, _rpc_http: rpc_http, @@ -283,6 +297,23 @@ impl Service _telemetry: telemetry, }) } + + /// give the authority key, if we are an authority and have a key + pub fn authority_key(&self) -> Option { + if self.config.roles != Roles::AUTHORITY { return None } + let keystore = &self.keystore; + if let Ok(Some(Ok(key))) = keystore.contents().map(|keys| keys.get(0) + .map(|k| keystore.load(k, ""))) + { + Some(key) + } else { + None + } + } + + pub fn config(&self) -> &FactoryFullConfiguration { + &self.config + } } impl Service where Components: components::Components { @@ -466,6 +497,9 @@ impl network::TransactionPool, ComponentBlock< /// Configuration = (), /// FullService = Service> /// { |config, executor| Service::>::new(config, executor) }, +/// // Setup as Consensus Authority (if the role and key are given) +/// AuthoritySetup = { +/// |service: Self::FullService, executor: TaskExecutor, key: Arc| { Ok(service) }}, /// LightService = Service> /// { |config, executor| Service::>::new(config, executor) }, /// // Declare the import queue. The import queue is special as it takes two initializers. @@ -491,6 +525,7 @@ macro_rules! construct_service_factory { Genesis = $genesis:ty, Configuration = $config:ty, FullService = $full_service:ty { $( $full_service_init:tt )* }, + AuthoritySetup = { $( $authority_setup:tt )* }, LightService = $light_service:ty { $( $light_service_init:tt )* }, FullImportQueue = $full_import_queue:ty { $( $full_import_queue_init:tt )* }, @@ -539,14 +574,14 @@ macro_rules! construct_service_factory { } fn build_full_import_queue( - config: &$crate::FactoryFullConfiguration, + config: &mut $crate::FactoryFullConfiguration, client: $crate::Arc<$crate::FullClient>, ) -> $crate::Result { ( $( $full_import_queue_init )* ) (config, client) } fn build_light_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, client: Arc<$crate::LightClient>, ) -> Result { ( $( $light_import_queue_init )* ) (config, client) @@ -565,7 +600,13 @@ macro_rules! construct_service_factory { executor: $crate::TaskExecutor ) -> Result { - ( $( $full_service_init )* ) (config, executor) + ( $( $full_service_init )* ) (config, executor.clone()).and_then(|service| { + if let Some(key) = (&service).authority_key() { + ($( $authority_setup )*)(service, executor, Arc::new(key)) + } else { + Ok(service) + } + }) } } } diff --git a/core/sr-primitives/src/generic/digest.rs b/core/sr-primitives/src/generic/digest.rs index c71ee4c7aa..ea2dafb758 100644 --- a/core/sr-primitives/src/generic/digest.rs +++ b/core/sr-primitives/src/generic/digest.rs @@ -24,7 +24,7 @@ use traits::{self, Member, DigestItem as DigestItemT, MaybeSerializeDebug}; use substrate_primitives::hash::H512 as Signature; #[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug, Serialize))] pub struct Digest { pub logs: Vec, } @@ -57,7 +57,7 @@ impl traits::Digest for Digest where /// Digest item that is able to encode/decode 'system' digest items and /// provide opaque access to other items. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug, Serialize))] pub enum DigestItem { /// System digest item announcing that authorities set has been changed /// in the block. Contains the new set of authorities. diff --git a/core/sr-primitives/src/lib.rs b/core/sr-primitives/src/lib.rs index d1cd43242a..9ad97cf28c 100644 --- a/core/sr-primitives/src/lib.rs +++ b/core/sr-primitives/src/lib.rs @@ -354,7 +354,7 @@ macro_rules! impl_outer_log { /// Wrapper for all possible log entries for the `$trait` runtime. Provides binary-compatible /// `Encode`/`Decode` implementations with the corresponding `generic::DigestItem`. #[derive(Clone, PartialEq, Eq)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[cfg_attr(feature = "std", derive(Debug, Serialize))] $(#[$attr])* #[allow(non_camel_case_types)] pub struct $name($internal); @@ -362,7 +362,7 @@ macro_rules! impl_outer_log { /// All possible log entries for the `$trait` runtime. `Encode`/`Decode` implementations /// are auto-generated => it is not binary-compatible with `generic::DigestItem`. #[derive(Clone, PartialEq, Eq, Encode, Decode)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[cfg_attr(feature = "std", derive(Debug, Serialize))] $(#[$attr])* #[allow(non_camel_case_types)] pub enum InternalLog { @@ -482,7 +482,7 @@ mod tests { use super::RuntimeT; pub type Log = RawLog<::AuthorityId>; - #[derive(Serialize, Deserialize, Debug, Encode, Decode, PartialEq, Eq, Clone)] + #[derive(Serialize, Debug, Encode, Decode, PartialEq, Eq, Clone)] pub enum RawLog { A1(AuthorityId), AuthoritiesChange(Vec), A3(AuthorityId) } } @@ -490,7 +490,7 @@ mod tests { use super::RuntimeT; pub type Log = RawLog<::AuthorityId>; - #[derive(Serialize, Deserialize, Debug, Encode, Decode, PartialEq, Eq, Clone)] + #[derive(Serialize, Debug, Encode, Decode, PartialEq, Eq, Clone)] pub enum RawLog { B1(AuthorityId), B2(AuthorityId) } } diff --git a/core/sr-primitives/src/testing.rs b/core/sr-primitives/src/testing.rs index cd1ca5cb4a..31be26d3a9 100644 --- a/core/sr-primitives/src/testing.rs +++ b/core/sr-primitives/src/testing.rs @@ -26,7 +26,7 @@ pub use substrate_primitives::{H256, AuthorityId}; pub type DigestItem = GenDigestItem; -#[derive(Default, PartialEq, Eq, Clone, Serialize, Deserialize, Debug, Encode, Decode)] +#[derive(Default, PartialEq, Eq, Clone, Serialize, Debug, Encode, Decode)] pub struct Digest { pub logs: Vec, } @@ -48,7 +48,7 @@ impl traits::Digest for Digest { } } -#[derive(PartialEq, Eq, Clone, Serialize, Deserialize, Debug, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Serialize, Debug, Encode, Decode)] #[serde(rename_all = "camelCase")] #[serde(deny_unknown_fields)] pub struct Header { @@ -98,15 +98,30 @@ impl traits::Header for Header { } } -#[derive(PartialEq, Eq, Clone, Serialize, Deserialize, Debug, Encode, Decode)] +impl<'a> Deserialize<'a> for Header { + fn deserialize>(de: D) -> Result { + let r = >::deserialize(de)?; + Decode::decode(&mut &r[..]).ok_or(DeError::custom("Invalid value passed into decode")) + } +} + +#[derive(PartialEq, Eq, Clone, Debug, Encode, Decode)] pub struct ExtrinsicWrapper(Xt); -impl traits::Extrinsic for ExtrinsicWrapper where Xt: Serialize { +impl traits::Extrinsic for ExtrinsicWrapper { fn is_signed(&self) -> Option { None } } +#[cfg(feature = "std")] +impl serde::Serialize for ExtrinsicWrapper +{ + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + self.using_encoded(|bytes| seq.serialize_bytes(bytes)) + } +} + impl From for ExtrinsicWrapper { fn from(xt: Xt) -> Self { ExtrinsicWrapper(xt) diff --git a/core/sr-primitives/src/traits.rs b/core/sr-primitives/src/traits.rs index fe1c6756e2..85ce07ff4b 100644 --- a/core/sr-primitives/src/traits.rs +++ b/core/sr-primitives/src/traits.rs @@ -544,8 +544,8 @@ pub trait Applyable: Sized + Send + Sync { /// Something that acts like a `Digest` - it can have `Log`s `push`ed onto it and these `Log`s are /// each `Codec`. -pub trait Digest: Member + MaybeSerializeDebug + Default { - type Hash: Member + MaybeSerializeDebug; +pub trait Digest: Member + MaybeSerializeDebugButNotDeserialize + Default { + type Hash: Member + MaybeSerializeDebugButNotDeserialize; type Item: DigestItem; /// Get reference to all digest items. @@ -567,9 +567,9 @@ pub trait Digest: Member + MaybeSerializeDebug + Default { /// for casting member to 'system' log items, known to substrate. /// /// If the runtime does not supports some 'system' items, use `()` as a stub. -pub trait DigestItem: Codec + Member + MaybeSerializeDebug { - type Hash: Member + MaybeSerializeDebug; - type AuthorityId: Member + MaybeSerializeDebug; +pub trait DigestItem: Codec + Member + MaybeSerializeDebugButNotDeserialize { + type Hash: Member + MaybeSerializeDebugButNotDeserialize; + type AuthorityId: Member + MaybeSerializeDebugButNotDeserialize; /// Returns Some if the entry is the `AuthoritiesChange` entry. fn as_authorities_change(&self) -> Option<&[Self::AuthorityId]>; diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index 686bb14e57..65d122b498 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -18,6 +18,9 @@ #![cfg_attr(not(feature = "std"), no_std)] +#[cfg(feature = "std")] +extern crate serde; + extern crate sr_std as rstd; extern crate parity_codec as codec; extern crate sr_primitives as runtime_primitives; @@ -89,7 +92,7 @@ pub fn native_version() -> NativeVersion { /// Calls in transactions. #[derive(Clone, PartialEq, Eq, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug))] pub struct Transfer { pub from: AccountId, pub to: AccountId, @@ -99,12 +102,20 @@ pub struct Transfer { /// Extrinsic for test-runtime. #[derive(Clone, PartialEq, Eq, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug))] pub struct Extrinsic { pub transfer: Transfer, pub signature: Ed25519Signature, } +#[cfg(feature = "std")] +impl serde::Serialize for Extrinsic +{ + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + self.using_encoded(|bytes| seq.serialize_bytes(bytes)) + } +} + impl BlindCheckable for Extrinsic { type Checked = Self; diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index f03d9469f583d2ea892f985efffa9ef3c4e2e746..f24c5400ee268183525fd8c98aa36a3830b9e2b6 100644 GIT binary patch delta 735 zcmZ{hUr5tY6vywmzim3l4}ap{BJIbvq+DfF7#8LF5d~I+f)CN8Ooy>qES!O04-3jE zIx9~jx26v|V};P-zDA6Sh&>b}^b!@m*TaZlJ!G8=1}o~}-tRe|-#OoNF2Bq=&#d$8 zE8t)fd1wdd6dT;9@N880Ea`HoP+4D58=1;6!=!V~Zd{k4O@>%#s}_g1I4tlM{o9v$ zZcp z;-Y(^7|X^P%t<-Jimq#+fJ$ zu>Unc=SBvC#;j-?eO;%P44#P!b^4A4^0;)nDD6^n6ClumN9kW+5Z$WEbTFpn)?C{r zl9&fE693LcY`zO{c;1dr?>1w9azDOH3}GUx_|;AR&8#sG^{t}1*b1xS&|;zrk7tiryd&qFCwoy(*J0t&X}pzf F_ysKQ)4%`# delta 729 zcmZ`$Ur3Wt6u;+w-==eX?2~D;X!fzKD5Xrr5m8$oksyH-^wdU_im};Px`G}p%qbz% zj#2K9L`uv(*y09z>0w}?^-vE|Zxuq(%OVB^61X}aELc$w_x#TJ-E)4wbGg|Kp55U2 zHQ+Lcm(UI17Zo0m`0SJjm>25}1e>FwxiVE`x~y^4rQevQ)M}(y?y`$x+udgPhC{m+ z_(oh*bn(crws*;2 z1J_>$8rQQB*7Kt4%ByWkjq%EaP;Skdp@a|bY#MUu#3Z~yH=dxsz%X`-C42#j!Zgso z8lS?|onrLv4~|dgTw>&YA7D>%7>oBjIG&Od$sSB4Gs2sC1dzdZX@}*3tg;5iSTAm+ z{ipjSm3gSL6DowK=x{n3)q89BV3q&KRn}3%4_5gx>Tjn!gEJXNC_)~FN|3OTuq-iV zBAlVxPWXF=5HKeHgOB`&AFcA=O)B%!Tn?4_4#"] description = "Substrate node implementation in Rust." +build = "build.rs" [dependencies] log = "0.4" tokio = "0.1.7" +futures = "0.1" exit-future = "0.1" substrate-cli = { path = "../../core/cli" } parity-codec = { version = "2.1" } @@ -22,9 +24,16 @@ substrate-service = { path = "../../core/service" } substrate-transaction-pool = { path = "../../core/transaction-pool" } substrate-network = { path = "../../core/network" } substrate-consensus-aura = { path = "../../core/consensus/aura" } +substrate-finality-grandpa = { path = "../../core/finality-grandpa" } sr-primitives = { path = "../../core/sr-primitives" } node-executor = { path = "../executor" } +structopt = "0.2.13" substrate-keystore = { path = "../../core/keystore" } [dev-dependencies] substrate-service-test = { path = "../../core/service/test" } + +[build-dependencies] +substrate-cli = { path = "../../core/cli" } +structopt = "0.2.13" +clap = "~2.32" diff --git a/core/cli/build.rs b/node/cli/build.rs similarity index 91% rename from core/cli/build.rs rename to node/cli/build.rs index 61929bee63..b42b397de1 100644 --- a/core/cli/build.rs +++ b/node/cli/build.rs @@ -17,11 +17,18 @@ #[macro_use] extern crate clap; +extern crate substrate_cli as cli; + +#[macro_use] +extern crate structopt; + use std::fs; use std::env; use clap::Shell; use std::path::Path; +include!("src/params.rs"); + fn main() { build_shell_completion(); } @@ -37,7 +44,6 @@ fn build_shell_completion() { /// Build the shell auto-completion for a given Shell fn build_completion(shell: &Shell) { - let yml = load_yaml!("src/cli.yml"); let outdir = match env::var_os("OUT_DIR") { None => return, @@ -51,9 +57,9 @@ fn build_completion(shell: &Shell) { fs::create_dir(&path).ok(); - let mut app = clap::App::from_yaml(&yml); + let mut app = Params::clap(); app.gen_completions( - "polkadot", + "substrate-node", *shell, &path); } diff --git a/core/cli/doc/shell-completion.adoc b/node/cli/doc/shell-completion.adoc similarity index 100% rename from core/cli/doc/shell-completion.adoc rename to node/cli/doc/shell-completion.adoc diff --git a/node/cli/src/chain_spec.rs b/node/cli/src/chain_spec.rs index ea634ab06e..fd53d64612 100644 --- a/node/cli/src/chain_spec.rs +++ b/node/cli/src/chain_spec.rs @@ -20,7 +20,7 @@ use primitives::{AuthorityId, ed25519}; use node_primitives::AccountId; use node_runtime::{ConsensusConfig, CouncilSeatsConfig, CouncilVotingConfig, DemocracyConfig, SessionConfig, StakingConfig, TimestampConfig, BalancesConfig, TreasuryConfig, - UpgradeKeyConfig, ContractConfig, Permill, Perbill}; + UpgradeKeyConfig, ContractConfig, GrandpaConfig, Permill, Perbill}; pub use node_runtime::GenesisConfig; use substrate_service; @@ -140,6 +140,10 @@ fn staging_testnet_config_genesis() -> GenesisConfig { key: endowed_accounts[0].clone(), _genesis_phantom_data: Default::default(), }), + grandpa: Some(GrandpaConfig { + authorities: initial_authorities.clone().into_iter().map(|k| (k, 1)).collect(), + _genesis_phantom_data: Default::default(), + }) } } @@ -269,6 +273,10 @@ pub fn testnet_genesis( key: upgrade_key, _genesis_phantom_data: Default::default(), }), + grandpa: Some(GrandpaConfig { + authorities: initial_authorities.clone().into_iter().map(|k| (k, 1)).collect(), + _genesis_phantom_data: Default::default(), + }) } } diff --git a/node/cli/src/cli.yml b/node/cli/src/cli.yml deleted file mode 100644 index 6c1fe186e7..0000000000 --- a/node/cli/src/cli.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: substrate-node -author: "Parity Team " -about: Substrate Node Rust Implementation -args: - - log: - short: l - value_name: LOG_PATTERN - help: Sets a custom logging - takes_value: true -subcommands: - - validator: - about: Run validator node diff --git a/node/cli/src/lib.rs b/node/cli/src/lib.rs index 8a56e2edfa..7e691047df 100644 --- a/node/cli/src/lib.rs +++ b/node/cli/src/lib.rs @@ -34,6 +34,7 @@ extern crate substrate_transaction_pool as transaction_pool; extern crate substrate_network as network; extern crate substrate_consensus_aura as consensus; extern crate substrate_client as client; +extern crate substrate_finality_grandpa as grandpa; extern crate node_primitives; #[macro_use] extern crate substrate_service; @@ -42,14 +43,19 @@ extern crate substrate_keystore; #[macro_use] extern crate log; +#[macro_use] +extern crate structopt; pub use cli::error; pub mod chain_spec; mod service; +mod params; use tokio::runtime::Runtime; pub use cli::{VersionInfo, IntoExit}; use substrate_service::{ServiceFactory, Roles as ServiceRoles}; +use params::{Params as NodeParams}; +use structopt::StructOpt; use std::ops::Deref; /// The chain specification option. @@ -100,9 +106,37 @@ pub fn run(args: I, exit: E, version: cli::VersionInfo) -> error::Resul T: Into + Clone, E: IntoExit, { - match cli::prepare_execution::(args, exit, version, load_spec, "substrate-node")? { + let full_version = substrate_service::config::full_version_from_strs( + version.version, + version.commit + ); + + let matches = match NodeParams::clap() + .name(version.executable_name) + .author(version.author) + .about(version.description) + .version(&(full_version + "\n")[..]) + .get_matches_from_safe(args) { + Ok(m) => m, + Err(e) => e.exit(), + }; + + let (spec, mut config) = cli::parse_matches::(load_spec, version, "substrate-node", &matches)?; + + if matches.is_present("grandpa_authority_only") { + config.custom.grandpa_authority = true; + config.custom.grandpa_authority_only = true; + // Authority Setup is only called if validator is set as true + config.roles = ServiceRoles::AUTHORITY; + } else if matches.is_present("grandpa_authority") { + config.custom.grandpa_authority = true; + // Authority Setup is only called if validator is set as true + config.roles = ServiceRoles::AUTHORITY; + } + + match cli::execute_default::(spec, exit, &matches)? { cli::Action::ExecutedInternally => (), - cli::Action::RunService((config, exit)) => { + cli::Action::RunService(exit) => { info!("Substrate Node"); info!(" version {}", config.full_version()); info!(" by Parity Technologies, 2017, 2018"); diff --git a/node/cli/src/params.rs b/node/cli/src/params.rs new file mode 100644 index 0000000000..f092887587 --- /dev/null +++ b/node/cli/src/params.rs @@ -0,0 +1,33 @@ +// Copyright 2018 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 . + +use structopt::StructOpt; +use cli::CoreParams; + +/// Extend params for Node +#[derive(Debug, StructOpt)] +pub struct Params { + /// Should run as a GRANDPA authority node + #[structopt(long = "grandpa-authority", help = "Run Node as a GRANDPA authority, implies --validator")] + grandpa_authority: bool, + + /// Should run as a GRANDPA authority node only + #[structopt(long = "grandpa-authority-only", help = "Run Node as a GRANDPA authority only, don't as a usual validator, implies --grandpa-authority")] + grandpa_authority_only: bool, + + #[structopt(flatten)] + core: CoreParams +} diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index b232beb538..1bd61bc6c4 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -24,12 +24,14 @@ use node_runtime::{GenesisConfig, ClientWithApi}; use node_primitives::Block; use substrate_service::{ FactoryFullConfiguration, LightComponents, FullComponents, FullBackend, - FullClient, LightClient, LightBackend, FullExecutor, LightExecutor, - Roles, TaskExecutor, + FullClient, LightClient, LightBackend, FullExecutor, LightExecutor, TaskExecutor }; use node_executor; use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue, NothingExtra}; +use primitives::ed25519::Pair; use client; +use std::time::Duration; +use grandpa; const AURA_SLOT_DURATION: u64 = 6; @@ -38,6 +40,29 @@ construct_simple_protocol! { pub struct NodeProtocol where Block = Block { } } +/// Node specific configuration +pub struct NodeConfig { + /// should run as a grandpa authority + pub grandpa_authority: bool, + /// should run as a grandpa authority only, don't validate as usual + pub grandpa_authority_only: bool, + /// grandpa connection to import block + + // FIXME: rather than putting this on the config, let's have an actual intermediate setup state + // https://github.com/paritytech/substrate/issues/1134 + pub grandpa_link_half: Option>, +} + +impl Default for NodeConfig where F: substrate_service::ServiceFactory { + fn default() -> NodeConfig { + NodeConfig { + grandpa_authority: false, + grandpa_authority_only: false, + grandpa_link_half: None + } + } +} + construct_service_factory! { struct Factory { Block = Block, @@ -49,49 +74,62 @@ construct_service_factory! { LightTransactionPoolApi = transaction_pool::ChainApi, LightExecutor, Block, ClientWithApi>, Block> { |config, client| Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(client))) }, Genesis = GenesisConfig, - Configuration = (), + Configuration = NodeConfig, FullService = FullComponents - { |config: FactoryFullConfiguration, executor: TaskExecutor| { - let is_auth = config.roles == Roles::AUTHORITY; - FullComponents::::new(config, executor.clone()).map(move |service|{ - if is_auth { - if let Ok(Some(Ok(key))) = service.keystore().contents() - .map(|keys| keys.get(0).map(|k| service.keystore().load(k, ""))) - { - info!("Using authority key {}", key.public()); - let task = start_aura( - AuraConfig { - local_key: Some(Arc::new(key)), - slot_duration: AURA_SLOT_DURATION, - }, - service.client(), - service.proposer(), - service.network(), - ); - - executor.spawn(task); - } - } - - service - }) + { |config: FactoryFullConfiguration, executor: TaskExecutor| + FullComponents::::new(config, executor) }, + AuthoritySetup = { + |service: Self::FullService, executor: TaskExecutor, key: Arc| { + if service.config.custom.grandpa_authority { + info!("Running Grandpa session as Authority {}", key.public()); + let link_half = service.config().custom.grandpa_link_half.as_ref().take() + .expect("Link Half is present for Full Services or setup failed before. qed"); + let grandpa_fut = grandpa::run_grandpa( + grandpa::Config { + gossip_duration: Duration::new(4, 0), // FIXME: make this available through chainspec? + local_key: Some(key.clone()), + name: Some(service.config().name.clone()) + }, + (*link_half).clone(), + grandpa::NetworkBridge::new(service.network()) + )?; + + executor.spawn(grandpa_fut); + } + if !service.config.custom.grandpa_authority_only { + info!("Using authority key {}", key.public()); + executor.spawn(start_aura( + AuraConfig { + local_key: Some(key), + slot_duration: AURA_SLOT_DURATION, + }, + service.client(), + service.proposer(), + service.network(), + )); + } + Ok(service) } }, LightService = LightComponents { |config, executor| >::new(config, executor) }, - FullImportQueue = AuraImportQueue, NothingExtra> - { |config, client| Ok(import_queue( - AuraConfig { - local_key: None, - slot_duration: 5 - }, - client, - NothingExtra, - )) - }, + FullImportQueue = AuraImportQueue, NothingExtra> + { |config: &mut FactoryFullConfiguration , client: Arc>| { + let (block_import, link_half) = grandpa::block_import::<_, _, _, ClientWithApi, FullClient>(client.clone(), client)?; + config.custom.grandpa_link_half = Some(link_half); + + Ok(import_queue( + AuraConfig { + local_key: None, + slot_duration: 5 + }, + Arc::new(block_import), + NothingExtra, + )) + }}, LightImportQueue = AuraImportQueue, NothingExtra> - { |config, client| Ok(import_queue( - AuraConfig { + { |ref mut config, client| Ok( + import_queue(AuraConfig { local_key: None, slot_duration: 5 }, diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index 4c8f5c1030..620682d4ed 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -28,6 +28,7 @@ srml-consensus = { path = "../../srml/consensus" } srml-timestamp = { path = "../../srml/timestamp" } srml-treasury = { path = "../../srml/treasury" } srml-contract = { path = "../../srml/contract" } +srml-grandpa = { path = "../../srml/grandpa" } wabt = "0.4" [features] diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index d6fc59d7d7..ed5d1363b5 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -36,6 +36,7 @@ extern crate node_runtime; #[cfg(test)] extern crate srml_timestamp as timestamp; #[cfg(test)] extern crate srml_treasury as treasury; #[cfg(test)] extern crate srml_contract as contract; +#[cfg(test)] extern crate srml_grandpa as grandpa; #[cfg(test)] extern crate node_primitives; #[cfg(test)] extern crate parity_codec as codec; #[cfg(test)] extern crate sr_io as runtime_io; @@ -66,7 +67,7 @@ mod tests { use system::{EventRecord, Phase}; use node_runtime::{Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances, BuildStorage, GenesisConfig, BalancesConfig, SessionConfig, StakingConfig, System, - SystemConfig, Event, Log}; + SystemConfig, GrandpaConfig, Event, Log}; use wabt; const BLOATY_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.wasm"); @@ -262,14 +263,26 @@ mod tests { treasury: Some(Default::default()), contract: Some(Default::default()), upgrade_key: Some(Default::default()), + grandpa: Some(GrandpaConfig { + authorities: vec![ // set these so no GRANDPA events fire when session changes + (Alice.to_raw_public().into(), 1), + (Bob.to_raw_public().into(), 1), + (Charlie.to_raw_public().into(), 1), + ], + _genesis_phantom_data: Default::default(), + }), }.build_storage().unwrap().0) } + fn changes_trie_log(changes_root: Hash) -> Log { + Log::from(system::RawLog::ChangesTrieRoot::(changes_root)) + } + fn construct_block( number: BlockNumber, parent_hash: Hash, state_root: Hash, - changes_root: Option, + logs: Vec, extrinsics: Vec ) -> (Vec, Hash) { use trie::ordered_trie_root; @@ -281,8 +294,8 @@ mod tests { .into(); let mut digest = generic::Digest::::default(); - if let Some(changes_root) = changes_root { - digest.push(Log::from(system::RawLog::ChangesTrieRoot::(changes_root))); + for item in logs { + digest.push(item); } let header = Header { @@ -302,14 +315,16 @@ mod tests { 1, GENESIS_HASH.into(), if support_changes_trie { - hex!("a998cf2956b526aecc0887903df66457e640bb2debfd7976b5c7696da31cdaef").into() + hex!("df90128fe9ee27bd61d90308cc25ad262e518d4ba09e5077558be2389780d8e5").into() } else { - hex!("2caffd5fcc42934e6b758613ff0a7e624a8c5b7c67b7c405bf6985a7e3a19701").into() + hex!("3cb0654b6c47c6532108695327fc68e22f2e67a4b20029c3c9d05a285f9e80a2").into() }, if support_changes_trie { - Some(hex!("1f8f44dcae8982350c14dee720d34b147e73279f5a2ce1f9781195a991970978").into()) + vec![changes_trie_log( + hex!("1f8f44dcae8982350c14dee720d34b147e73279f5a2ce1f9781195a991970978").into(), + )] } else { - None + vec![] }, vec![ CheckedExtrinsic { @@ -328,8 +343,14 @@ mod tests { construct_block( 2, block1(false).1, - hex!("72b2afc379ce2161aef95ef6f86a2321867f12b046703ea0af5aed158c2a4f30").into(), - None, + hex!("612d3e3c542b4ce62105f2f1fbc4fef1652d5ba38401795115042bee56a50752").into(), + vec![ // session changes here, so we add a grandpa change signal log. + Log::from(::grandpa::RawLog::AuthoritiesChangeSignal(0, vec![ + (Keyring::One.to_raw_public().into(), 1), + (Keyring::Two.to_raw_public().into(), 1), + ([3u8; 32].into(), 1), + ])) + ], vec![ CheckedExtrinsic { signed: None, @@ -351,8 +372,8 @@ mod tests { construct_block( 1, GENESIS_HASH.into(), - hex!("5f4461c584ce91dd6862313fd075ffc26dc702fcc1183634ee7b0c5de8b5b4d1").into(), - None, + hex!("17df8f360a4a1bd8d5dc23f05b044f5b14ece43555f97d2058ded47d5e7fb64d").into(), + vec![], vec![ CheckedExtrinsic { signed: None, @@ -460,6 +481,14 @@ mod tests { phase: Phase::Finalization, event: Event::staking(staking::RawEvent::Reward(0)) }, + EventRecord { + phase: Phase::Finalization, + event: Event::grandpa(::grandpa::RawEvent::NewAuthorities(vec![ + (Keyring::One.to_raw_public().into(), 1), + (Keyring::Two.to_raw_public().into(), 1), + ([3u8; 32].into(), 1), + ])), + }, EventRecord { phase: Phase::Finalization, event: Event::treasury(treasury::RawEvent::Spending(0)) @@ -633,8 +662,8 @@ mod tests { let b = construct_block( 1, GENESIS_HASH.into(), - hex!("9885d4297ce0341ec07957d1de32848460565a17ef2ea400df0e2326634914ae").into(), - None, + hex!("81f45b36d1c8f667ac948bc48f8fb61d12aae87d841b6303ab0320ca906d01d2").into(), + vec![], vec![ CheckedExtrinsic { signed: None, diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs index 2e436e31de..e9b32db752 100644 --- a/node/primitives/src/lib.rs +++ b/node/primitives/src/lib.rs @@ -77,7 +77,7 @@ pub type BlockId = generic::BlockId; /// Opaque, encoded, unchecked extrinsic. #[derive(PartialEq, Eq, Clone, Default, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct UncheckedExtrinsic(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); impl traits::Extrinsic for UncheckedExtrinsic { diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 6faf6fc64e..6ca724a81b 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -23,6 +23,7 @@ srml-contract = { path = "../../srml/contract" } srml-council = { path = "../../srml/council" } srml-democracy = { path = "../../srml/democracy" } srml-executive = { path = "../../srml/executive" } +srml-grandpa = { path = "../../srml/grandpa" } sr-primitives = { path = "../../core/sr-primitives" } srml-session = { path = "../../srml/session" } srml-staking = { path = "../../srml/staking" } @@ -46,6 +47,7 @@ std = [ "srml-council/std", "srml-democracy/std", "srml-executive/std", + "srml-grandpa/std", "sr-primitives/std", "srml-session/std", "srml-staking/std", diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index 90306a8e52..7b59135351 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -47,6 +47,7 @@ extern crate srml_contract as contract; extern crate srml_council as council; extern crate srml_democracy as democracy; extern crate srml_executive as executive; +extern crate srml_grandpa as grandpa; extern crate srml_session as session; extern crate srml_staking as staking; extern crate srml_system as system; @@ -56,7 +57,6 @@ extern crate srml_upgrade_key as upgrade_key; #[macro_use] extern crate sr_version as version; extern crate node_primitives; -extern crate substrate_finality_grandpa_primitives; #[cfg(feature = "std")] use codec::{Encode, Decode}; @@ -65,6 +65,7 @@ use substrate_primitives::u32_trait::{_2, _4}; use node_primitives::{ AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, SessionKey, Signature }; +use grandpa::fg_primitives::{runtime::GrandpaApi, ScheduledChange, id::*}; #[cfg(feature = "std")] use node_primitives::Block as GBlock; use client::{block_builder::api::runtime::*, runtime_api::{runtime::*, id::*}}; @@ -85,7 +86,6 @@ use council::seats as council_seats; #[cfg(any(feature = "std", test))] use version::NativeVersion; use substrate_primitives::OpaqueMetadata; -use substrate_finality_grandpa_primitives::{runtime::GrandpaApi, ScheduledChange}; #[cfg(any(feature = "std", test))] pub use runtime_primitives::BuildStorage; @@ -109,7 +109,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { apis: apis_vec!([ (BLOCK_BUILDER, 1), (TAGGED_TRANSACTION_QUEUE, 1), - (METADATA, 1) + (METADATA, 1), + (GRANDPA_API, 1), ]), }; @@ -165,7 +166,7 @@ impl Convert for SessionKeyConversion { impl session::Trait for Runtime { type ConvertAccountIdToSessionKey = SessionKeyConversion; - type OnSessionChange = Staking; + type OnSessionChange = (Staking, grandpa::SyncedAuthorities); type Event = Event; } @@ -209,6 +210,12 @@ impl upgrade_key::Trait for Runtime { type Event = Event; } +impl grandpa::Trait for Runtime { + type SessionKey = SessionKey; + type Log = Log; + type Event = Event; +} + construct_runtime!( pub enum Runtime with Log(InternalLog: DigestItem) where Block = Block, @@ -225,6 +232,7 @@ construct_runtime!( CouncilVoting: council_voting, CouncilMotions: council_motions::{Module, Call, Storage, Event, Origin}, CouncilSeats: council_seats::{Config}, + Grandpa: grandpa::{Module, Storage, Config, Log(), Event}, Treasury: treasury, Contract: contract::{Module, Call, Config, Event}, UpgradeKey: upgrade_key, @@ -463,15 +471,23 @@ impl_runtime_apis! { } } - - impl GrandpaApi for ClientWithApi { - fn grandpa_pending_change(_digest: DigestFor) - -> Option>> { - unimplemented!("Robert, where is the impl?") + impl GrandpaApi for Runtime { + fn grandpa_pending_change(digest: DigestFor) + -> Option>> + { + for log in digest.logs.iter().filter_map(|l| match l { + Log(InternalLog::grandpa(grandpa_signal)) => Some(grandpa_signal), + _=> None + }) { + if let Some(change) = Grandpa::scrape_digest_change(log) { + return Some(change); + } + } + None } fn grandpa_authorities() -> Vec<(SessionKey, u64)> { - unimplemented!("Robert, where is the impl?") + Grandpa::grandpa_authorities() } } } diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 3a032be99a..83b4a4cc4a 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -513,6 +513,7 @@ dependencies = [ "srml-council 0.1.0", "srml-democracy 0.1.0", "srml-executive 0.1.0", + "srml-grandpa 0.1.0", "srml-session 0.1.0", "srml-staking 0.1.0", "srml-support 0.1.0", @@ -521,7 +522,6 @@ dependencies = [ "srml-treasury 0.1.0", "srml-upgrade-key 0.1.0", "substrate-client 0.1.0", - "substrate-finality-grandpa-primitives 0.1.0", "substrate-primitives 0.1.0", ] @@ -1061,6 +1061,25 @@ dependencies = [ "srml-system 0.1.0", ] +[[package]] +name = "srml-grandpa" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-session 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-finality-grandpa-primitives 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "srml-metadata" version = "0.1.0" diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index 50f9da3592..e460fcf234 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -12,7 +12,6 @@ safe-mix = { version = "1.0", default-features = false } parity-codec-derive = { version = "2.1" } parity-codec = { version = "2.1", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } -substrate-finality-grandpa-primitives = { path = "../../../core/finality-grandpa/primitives", default-features = false } substrate-client = { path = "../../../core/client", default-features = false } sr-std = { path = "../../../core/sr-std", default-features = false } srml-support = { path = "../../../srml/support", default-features = false } @@ -29,6 +28,7 @@ srml-system = { path = "../../../srml/system", default-features = false } srml-timestamp = { path = "../../../srml/timestamp", default-features = false } srml-treasury = { path = "../../../srml/treasury", default-features = false } srml-upgrade-key = { path = "../../../srml/upgrade-key", default-features = false } +srml-grandpa = { path = "../../../srml/grandpa", default-features = false } sr-version = { path = "../../../core/sr-version", default-features = false } node-primitives = { path = "../../primitives", default-features = false } @@ -39,8 +39,8 @@ std = [ "parity-codec/std", "substrate-primitives/std", "substrate-client/std", - "substrate-finality-grandpa-primitives/std", "sr-std/std", + "sr-primitives/std", "srml-support/std", "srml-balances/std", "srml-consensus/std", @@ -48,13 +48,13 @@ std = [ "srml-council/std", "srml-democracy/std", "srml-executive/std", - "sr-primitives/std", "srml-session/std", "srml-staking/std", "srml-system/std", "srml-timestamp/std", "srml-treasury/std", "srml-upgrade-key/std", + "srml-grandpa/std", "sr-version/std", "node-primitives/std", ] diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index e095fb95e655705e21e80e729955aa74510dcff2..130019eb4ffb27f8d3641503af2a81e278384352 100644 GIT binary patch literal 639289 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�*jYmqpNazMp zsx#A^Zl(xd?fxMp{Ayf4$G&{on8_7^I2e%Z+VL>9jf@nB#0a}e0&Oxh`!j@Uh&G0( zs?w<1xQqEqUa)fYs-*gQu4;@;$)TTUjMim1r5x_{^x%!u=!F5FqNim&mz|PJ*vPc^ ze|&e^?4n`bdNwyt$2hkI`uWb8;(;f%fL<>H*QXRi)CgZm7wpl3n0dy;r(oy&U~;Z? zbE56v2V|+iej-)3rHn%^Sa9;?9>KkMCi|v(T;`*1@BBuGz*5m0>H8$KN*D zqRQ`oRHh+my&cXak)wX?FLN4QlsV}>?bhjPN=Y*uub>spfx}TdoLW@|4i)QHgyog&Ix5R+|V;z1_Rl9DIv5H-pe|`&A6<8z1uPY{0pq0kbUZe8+1+k)@nwHP`mZW!t;>sRBJxFgUN?;kw&wa5os_ehZD9S z#UmIKg`DO4vU3p0lj;m;`RPzuJ!#-KSFgJv89`gjmZxjCIRBGE`P%nX3) zG!tEa_(s`h7If$r;U`YBBMq6+lp;80oq$W)W%aG))hp6#ZuDBwrrEM|3NBHB>I3S( z%yw-^pUNQc<1(@Jj0-nSzEmbdW@z%A_qp_0zt#yUbl&#AS zMrGbQHy3XGfylS(I2B{a+P3ZJ9ShePHGPAn2vL5k;R{f=-08DnFmb2PPKyHp2gN|R zn>cYbY%27CSw9SYIn@|#3Pa%UVUQYf0>;W{9z<@o!5b~u$gyK%(`ajsoFN#c^C)*oG(Lq2or4pNog85hxLI=ofX z{A>#txt_x|bQ>nptzuu%e2-8!3?Q4sR+&V$hI!ZJN@8Cu_K&ugOfcSde6XoM>=pYN z2~gvZ6v=Y(@4oXWhsgpMx<;}u`IYZHD)X6mUXTB}e3S;eFZrqRv2Bk(Q9knOf4BR7 zziL9>B_>{)_+O@*_=jaFZ{qp#(VO_2<)b(8{pBM~`~|!3_j<){heAzkwVwQcWj3$m zzm|_)$^TV8Qpvx!`(r>D_KB*0aOSa(yAgo7XchG|bHyQf24f=f^hrV(tLNrbw zs$^g)_PdFW_ik{C=}^G*``w=J*bmd{`R0g&^Jqxg2A%=TjBdEIo$~_(EZS{Y4BNtX z&SBa?@3aesqpD`PeTjnsmz+Y__C4AeZ?QS-inp*Z$DJ0R;DEtPxc(T|!1X*=S-wBR zby2E$!u2MuAEN4;xjxJF7Oo%V`Z}&3;re>6ALsf8uAk(3l4 z)u(}JA?Qz<8t?#4UWKjVe2kT=<84fQRipSQ#nI5lxhxXLs+z+3G#9Vtw!cLsV;7LQ6mC8Y`3eTZ^s>WwqVY%q3l6|J0hAZ6lb)~nu-&;N4 ztzPB*JXrjq_4APT^J>pySY2>sW?q}eZ{R z^r2I7=yGriJAM$WmYE2$Q@CCA@B|gm6RIYH)@l`Dc`lI>m70A)9hbQoMXZZZ2Y*vN zwDXVDLqM|m!)n>0NqasVm$k(d@ul%8$IrNXrf9sMvvAsdqG`9{b~zp_o~;>9ibS#Q zcKV#LzD+cYwta?)&&V8vY1}|DKrFF08dToNVXU5pOo;9Y4JMi3C6|gNU6)Ug>Q`iC z{KS8kGeeZ8H&C7g;7h*wT;qIBC)d8DoY1SDTPwrcHIIHc7rWB#K86>Oe*qyZ#+#RF zGA~)(pYIhPqeb!X@C1_oC(fNuv`0uzo0oW@FDl@?y%ROPnB&5U8Z9mi--rwT%-vi# zpW^z_o#<&38Sp>ue!npg?wno8nytJs)1I5(yk*%DJ& z)7_`;JaO{)ZO7jDhNHK;VKbN82gDLVGCyKxnsgBYclQ4grH#fz zcX&t0+3DXfsf0M@?I(B(hq1@mER+^8X1U?5XbvHUUi|MXramn+DfbU4rxxLGZ{HdG zIIl&)|A5yg^qQj>R>pVfZd+J5qp57A_;vB{3*=bPUh95XI63&SwD@;Q{b5qKX+^w% zXwjRc@tbN(_8(1)FDcvKCmUALz+VoIt#Xb-VyGGW&h{0T)+P=dgw*}7-x=9^zZ1MN4ee=-o#)K zbaH3^hpfVR!J@f=FxYSh+taxn{@*NF%1LBi-D!_8HomjyQ0#A047tF7t!ix>rJn6@ zFsWyv{Gt9kUuL*(8@#RPQq|w0stJL-O^Rr@=<(uj@?xX0f1v2|_6K?U3S+O;BebQ( zMnwP*n5g<2W!1{TGS;TRW4H`WdLmLy$RjylY7hWmiU>2?>UgsvUP%5*V{}K@qUr4T z;DKUDcYc5xjb;`qnweM5kK_!Ji(taln`cI86~C$%e}xxKDCv~z1oO;&r)re+ePy|3|C@Vd(G!FNQ1mb9ovS&KlIBTO2@n#1 z#VBHaMUP;OO{e^iyuH{;sqdv!*R5HjZE8Tq z9A?CRFeTBmB`X5k{x`_m1M{)jx@Tp_s1IWFX}nDXhbV3F!!D z8A4+bw3BZx#-u!BDd;OL=O*o68_V7#I{D_}QnLK1D7%GW5f|17yGr>IkrjK$^c|+% zxzV85OTwR|;sa>yQe59&{G7V?CqzKfyQVw;_Tpdb?YCP`o+XOExQxdS^ujI%NyXpB zj!06ztt>vRVZN>SS9<&YUbx-izMQA`^}_C0`kRWM)%(?6xTZd&-&FidB|qH@*LtyK zo}TK3OJcFNqIr?>WG`G-FZR~rXOv7Ba`0mNczV1SMzPp^#lO(|$9m!Vda?V8pHlLB zdtvOwuHcEe`O;YIEyZW`{!A|%t`~bt@smnk>4iOB>`I;<>4m+q*qe)gruPr`!jXEh zHy8h0$?xff8@$+lp5EOHm&IcD7N61k)4gzGz1Y3Q|EXjqvYWiv0iGV}h09~Hdx}r% zJ#);>^~6v*NV&fkURN)6ckwAD|M6aUy%#&k)3^4* zaxC_y;`JoJjBluydQCM!l78`j^Z#0_w>T8^+IT8EL_KF#vj%m~X zo&CZSkM;`H@&>*E#O3u~?sdIlz|$=~lchKJicLJ-)GIUv-ROxo^lZ8~(kp&R?H=y& z9XYPo_e|bi*E6wrtzWM3#H;=3kUt&lVM(CGRi1jFXTo*AU#|3iT;c1ReZJaR?iHU` ziOc=*vYv^%y?)u#GZA!Y&qUL>X98v9m(VLDATIIC?p`6j-{qH`y+Z7~W2j$hinLc}xU7d%L!3Ko94u<-je0nf_sMO|6?{g$q2&oxhiYA)mzBz0J zOek{wOnKwfWaW*sC;;R?p3&$+Ap~2q5joUxj2@c2SSc@!+TlvMP`X%paQ|t}RSc}& zG_{hWIn=Izb*W+LvC~r z%d4II9pLX?{*xg3L3FK{{wH0dR118$J%HRKSdy7F8Yw1c2dpv}gJv z^WJwz4;Z8W-4ZqpW}rYTP81-YwejLj74J$ljK%3XVSx+_HBS|9LAhZ!EsoTY6!q;= zY(z35EAjHF#7qq>goBEcSb(O`;88q>BVYhi3k0-`K^0XHXh^#$LD(W!ubO72q0 zM%bm2&9KW#@E_$9h0(dz_%eBS+F{;Smf8`+4m{-}=|IvS zb*y)w26dZew=%#;p>(uWMz}UrKgf z=?zTw1W)SS;p_w4;d=cJYlx&58<6-pIFW%=mM=9%CnO9$q75c=MEf&NfPGG$l=t42 zjdGAi_WK?`ve6oWgRLVkLX#SokvR#WC*{Xa-{-8@@m`QNBDARdhA6MiRgT*WGA)wg zY?1mbyA^NS5@2uU0O_rA_qSmPpznxg2;&nb5isnOko$ZuG=2h-B0+v(x{T;yd;mmD z$cfk-tWKw2<5eeGdS~MXO1^060xnE!$1s8Y&&yZw`#5N>DC@zKC z;mvZ-x5HbGWTNEzY-OfysJB?`nYj!$Rn|vCM&j;E68g<5U595SYM4WoJXt5T3NBB+ zC8oZ`Qy=zJdf8VM0BcYyHK$>QCZ{*~+qn=Xd=Hnm9LZ0>K7;2?DvDli6|HhTD(muP z#|N{TS&evtSSvW;a1lmutW6OP!{}0+d2%n^{+_Iw^h~(37CTAuvsLmXJpEo;W#Z7S z>?;J~or5&luz^boDkDUmf8cnlaQ5w>T;l@cbZGxNz57VUcnI|*;#w#OHlS|-e~9eN za(vLAtHa)CPxB=Da(g&Al>{~15iTi{ggas@I1|ozi-??4Vq>Q^qZzj2MM@COZ1rBY zBPB%If!-_H*$l0VcC_5na6@I&WYek0rsHJOakA+c*+_VaK>x(bc*$DU1Nbn~Wwohb zp!~_OwW3@6+iLqnSh8k?8a3MjZ=loKCUYcNMXfu@w!H0@x81U~Whzqvr&+Lyfk{~1 z6Rs}tWl3Q5ig5c>5?I|I?kJOlRh_bDRw}Ihs^prmr+h63fYhk#!WC0VRC0aTUnZ#% z*-Ot^5US5bh!jTWVA>ch$da5F6k|Sd%|q;;dhEImW*D zjHD$oJH!_|!E+HR33D$A{>LRL5mLBG0uIl;Aa_FUCwZz<`PL~a-&#>Q#YNtbEQ%%Q zg|-<`&5f%32<<`OTaCc`8YmKPBoP@%>L>W$7B!rR`NwFeM*DCLv=3t=K@$XiKaA~o zTPX*USU0B}sN!EFk$qUA7UI=TR##>xyfR^t4LJj_%ke*14f`eQNBbO|p*xOiY|_R` zTg6HoR;q>t!dQwdkK8Tkg&|}dHlGghOLsseP#x6lZuF}`{77Q%YD(Z z(G;0wyK-u>2O2Rt(nF*pZjXnt!7s@HzH{mMOPX1DLobh0i^v4zov7IBcnInYjHk(D ztMY#|M~8&`%-jR}sm{&9HUq7^rXOkR?`9CqG>4UeObnr98c^F~qyRB$M}%=gLZV+a z+j1P-$k+?~8>!T}y3AK+=n@IqiBcg!I(&r$n@?aSdUqnI3ia8j2-K@r$5)C+SMWVE zCMOU$h6W;fs{WjCGys$2V<(XR_t>UvAvlrVB5KzX9S2J}y5qOCp4*#pjo-%M6VBP8G{z1 zA&j~ZLuo1^YO@4}4FVL+$%rOhL=a+HO&*z$+R~iv(#W24UZP1Po|pi@@QM#8^O!NT z&~K?mU8p^p#)2+PzomMLKlPq)*ZCo3LuEW)iC-iM6CMk>rf;Y?=i)<2##R?SZCjYSn{bhpm@of7QRzrGra>nY|dg&ndw&5NJZdXlR& zvX8Jl*uwo!lXiluLZr0Rk_~{UDFq$r7I+j7rMM`TlNJwkDObfq5f)(aPu@#X+em&a)UP7E1RV6*{^y-v1Ey3TRULk8!VHCf$F6d&NfS{yg`J zi_-mPxL2T)Vx<%#rC6zxToo&&z^CtL4p3l|p!_&_71Z?OKq(7{(mqL=g28nES?(3& zBy9@w0}6Wa1IW&Ts}!L<9_pl93^KQp`op}vi|a=LP*GKizEU)mqOTN1rRXa~PbvE9 zja(IdwVkV?uinH}(N_viQ}or{Torva!&T8&w{cZ;)go6#SG|?1qN`G5KT(%YnB;dCX$rY(t6Zom1x$c>?nE6-eh}0abDUg(HuEw zC#(|r&nl6Hq?=95Bt`RRp>dViaZ|}GebDAq6l1LtVPy<4NK}bZ3w)Kq3TfQ5DbiF# z^tDCm&J3XrDYIg-*5~Ht19@XUIjjC~^47@TA+wK0e*NfiaVOW=W7}n)63~SlL zu=aUC)s-Gzb&bbPl|ff!5Y}~NfR)vL(5t=PdvqwqS)KGA9rmnrp6#pBle>!M-AOd> zZlZY`<>6SnP128cX;37bF!Z6%VkF6B{b6X3S2B6FiB4?!SEkHTc&3=+O9guK@jpwT z%(+y7G9b@C>BhLDOA@}MN`rlH1Z$8Ek?x+PeeRi1FsCs}m}}~h{&X%z`tPyXEM zLI_!J<{VR{;&L;tgF09M#~rgc%lv+QmhhF8FnAVBcIe5LT7QYJ==T?D2_;}y%W)G` zEpz8Xx0UqyS~^a)J|3h=M*MnxV(UxL`B0ucRU_Lb0qwd3i94@&nRNJkUHT&F3ix!2 zYQ(3qy0Y{((ve{6N{>lL60A$-2onWnR_Qni`-vFs@K>(Naw%1b5{ zl;SS=q>XVaTZ%0XiZ9xPgP6!!1x}_Otr`dg=Tj(JI}(n4%gyN*xs~F_e@#=~oF_>q z9e0jd6yWRJ+H}h2HCGi;N5}JV>lfHxas}fATQs#oF>MmfbbQ>4zM**0!og9oZRt|w z;i&v^kbjO(2?!zG2nKrjLAs}KAY48S_5qI)GJU~L+~gA`lGV0#aH3T7&?NA$a-NUi z7f@6RfiZl)op}^Dx*lP6zK~*~RvfStA#87^_%~LD(r76f!I;7dnzvfrWwA8ufmqVh zo|qGL-MZvH7oxxPq<%=ZMz7c773O^y?Y9j_W}wzf76W>DmBpN(2^{wrs;yTi1Gx+| z$oyYBM*boW8x(G;75Zlqu9CTYJrE@&NiB6EL<_js+OJT>`&IG4zDM=dzj^e7xHaB< zZ27s-n`zy&C^#9-8sd+78N(KLhcXa=h`mM@8&y@sS=E^K3255nFNO%|A5@R@rE*wM zD%yrn0l_*NCX(B^LF_@?nK?h4Sr%5HYUr(S()7eYe4+{*bBo5UPU?4sJx(WMg2Op9 ztsqF8-4tbe)IHQH#+RQO$4DzUk920v*08{tIrKg+mfdYz-HP6hnb>Qpq5XSuY>qTrrd77w;kvt=++Vu3uh zEO%73TvpZc#_3wNS6MEvvbyQj10{1WeO8FQ3`+orQP?5yLftYyeh zi7i&Y(?t|6=CziALS!3JdeBWl)gq0IH+*tyPwj6;jv@ zUC(mZv*1lkUQ^k5~u`bcCsC?#Y7i1Dl-`1%O-Mb}rdnLsO*%N^G`8SC^M$<-(_~>BeLUK3guj z+i*Q|A+DO1`GrQDXjxlyqpT^W1PIGTw^^!LH?!#GKZ|ZHr&*5Rnq@7+v`=lFxagj> zRb$wSoX}cQUSSs9oKr-V(~Iu*WYO)*Pr9s)qzcEBbpSTivI|R3)EUecUIK4hMH`${ z+q8HQi}8?%U-TVY+zmM$$=V#v0r~8hh-7s{0rB*=j+u@b8`c>lT5VorAWTLlE|u9gvt9dUw%caPh8?2+@jr(V;CizGU@NfDI4Hul zP)=S|yDZ~wOOcmljb;O$y=Xk%3$uKzqq_M>nNr?BcveS!zm8AtO)Z>l=Vxu>(f1&k zk^d49ADP^8NSJLoI{(#Ap{Sh`!(cUM%MlE!;1131KG{fb+i2I3u<1tu2)BmgdDi_S zR<1lrty6pjHGSCwgzqVZ#ZC!}Lqko{IYvCFQX*toscg_%yLq&!Z%c-KFFdR9@r{G> zJZe*`jRSSKxgX{w22@qe6Uu^c(gz9rjGp0}2{E%14)i)oZx!!t)tKw#2WwV$Qd@gJ zabrHqxfbOib@`sej(6qjr^JWpTU9Q=TCzCLyq0!`KiImE4xHbWaw;EzZJZ-5JF3JL zjMM?l_5swTxL4jFY0O zosHgh|g?Ytd^qHiQ( zRyu%A+l7d9ERCFsd9iDHnQ}1Mb#od_R|Q#b(8|ua2`37MHZ%FQ=`sho^@F~>L8TnS ziRyX#nB$2XGy_ewb-5`~4m-0Lv+}_-+?;T17&f)g0@bz*GwU!@5KUlC#K^_O!!dP_ zQl)KNGyd4W;?ZzT6!?Pyzzt53#2|zVxe>h#(Ju@@2d-HsMar>4{ zvxDBYt#iZ1)K9bg>F#Lp(@v_N+HIA_O`hlJ^v{MVB$oMf%TFwnUFZkf$^?tqkRTzj zIJm+QXcklU?VlW6Dbn@9W+e#`K!OUOzJvw%MitZS71|JlCE4sI6_iLkK3MD@l!pR@p>Y;7QUf zEQXoF;dYtwDq>0%!sblNbwidV-F5;)fw>E8>5!>v<@l77gKyFOD(AxLs}pk=T!vd`sB${CG|#Y_c66;Cxf$FkfABTl+gG!UHv6m#5M&7sDtu_e>E>g=tO@m_`&z z$cBj8CR3y}H!IuS1T*-`HpI-9J`t0XY@92wVYUUC466YsQRybQnp}|AF3Jn_f{h>z zK1CZTUQ>1{Oe)Cm?+G$EAP(WF3-n;~G-^r`7|5x(u2vj%)A+jm0{EI2meyCm8A<&^ z7lW6f44)g7ABZr^xh7Jcqf4h2!2D&WZN?G&5_ELB#8w1>5Kn)_T*Is&Btd@1FMy<3 zBByIrPqkYcCOKu-3{%;xT%S()n5LM@CCUr+;S?7U7Q{kFi`3?$X)d#v2^F`AP3xUK zm;>cM9NY1-lj1tu!Q#cq5NBH5AkD<0kS|-DS_`y%SA@_7W1Y#YTBJK=mp^>^y4yboSw(j`B z0Bb8inU%9=GMEt@oLQ!^)`onfro@jUD9RO{f`yuf$2~Jw00Jt^Qoh_57g~A zYq2-n%9?TXkbmDtUkXGUy@8I+qt+crKK5ntur$`Pa=bt+&V>PFf^0+Vg8 z8D!T2@C|DAa)Mg?rJFBKQ% zyEiYoZEfEy+dlHD+qMm&7v1)${+(6ZhhKHucl1vIw@a2+B+bFe{vGVPbXvQfww-@| zyQDSepZ`!kI{*B7`RM%f%jF|P`g4B&3jE`Qd4jF67e7F^_fJ$vy6#mY={7dvUVPif zwO@CeBk5Y&=A)*-`r{?sj)s3+KJw~?^=SBhiIM5~!_jbS|9AzMDt~oU|3)?wU;OAF z>%Z}9$X#e_a+FI~S3Uh|4esAv5BCM-(ouFeUwlvB&_DV$4A|@0FMaXD`#QE&UwrOc z`mg&Ma^K7*?TfGbrapVQBZjZ6F#PpO{u|j6e(`PJz|QfDACDt_Hke12*!Nnq#Nj^M z)*~8J`Kx1z>$Um)HLLA9w$NWZQm^f^(>|hU`L#yVHT`S9hOS)QzvgSmeW-u+*O2?5 ztOyr9-(7{xpd64ruX=b7a6-Ywx4pm5K?ac+E`8N)UrEg3YggM9eU4Rl&HA>FxXF_A z1nFx!X)UuJf9<+@xk5HCntU$P0TU5T<5xX|dkO!1?P}YjpwWwlJ)wJ{6k#(6Y@!Lxbr@8v>|9-$QE+@5qjZ3~P@a942DnBZWkmdo-?n?1>;k z+X$#nEBGECq0d|6j1q56p(*ZMpk{pUv`pMb1EUcgQ-gTvh|l6+!`PU|CRn_IfgwjS zBh>>mI*%Rc-rj%D(w06!7{84s@HYBP8Q*T+_|>JM6q=r zz?wz04!t(p6eB}GiL#d|@|@53_f;F5ZDEiiRB_dbrbyCzrvc~zI61ymSjG`fK+TMz z4q6I-_K&d1Bklpu8o(xWz~(YzkXX#dz`yurw&F}yFTUw!)%j=LSes$!(`om18Vv4t z-)==xbyN&rN3oZS8caYd&VA>nJ>&2_^qgTe(}l=}_zs!Ez@^AYAKj33Yxr=&L8s?F zov_6wk+e|6z;kK!ZMqz{Kc8YVQ(TC4G2FzQ;%Z+WHIFI}WFQ~0DCHe*Wi$OK-I2Y~ z0u*Ga{Ng7SYcZrwSO8)Sy3;4?l%V5o7rD|^`(E9{S;|*6oDfnvlI$a{Dbq!tjNxL$ zFR%?Jq9Kmtiy>9SD@IJ@Mr>`?`TB&`VfiINa zIUtT*L41L448z+JImZVJ3Qa_CL2~p{33q-%fb*77gY1wp< zE4Go6)uxNqvtY7APw=3Y6*k#)k;$Q1C6s{eCLNdLy7aB2v+1HrXVXO{-{T~qM*^EJ zBItR1sxa9mflU`x{<6Vk(%E#eE`5=7ykxPuMtmx(D@$)9oecr&N{>nJY>>W(bT(a7 z`Pp=l$<0$Glocl36jMc6ipoRjD&`ETrj|LbC@Dv zJ{^ArdE(h@F=T5p|`onpY(xTm%)ppZ}9nMMOUYp+SfDg9As z$nwfKQy1xwsW$edY$9`)2_kOOaH`6lxtil(EdUHtJgEZkgxvv{Luj91DgoT-03x!)?AD_s8v3OZ@numM z+Pm2M-R1PKbmR~7jou7Kmm1Bk9dz~#J*tZF)8lgW;)dxL^r9>R+~w_;xW$-#ju1iG z%ZmSGuk7~s>aXAk;r`h)s$ZFJP0Gr`Ib^3KK1{63A-|lkOZE=GtWv>;$_iq9sxN2| zJelz_WNe0X?MY^|MmTUePAnO5;12QG?B?N5+l~kP=>Whv{)YT*QgMiXGZ9Oh>dOZ$ zz!b|N8G@%A?%|m7Ia|jpCwn+^AYD!ZM}}}&WIsEX1$Ml18S1+`%N*LaLzngl##l~t z+FnXH0JwFxDOg3x;o*qTXXhqXp~(B zLoqOEaca;TEr%2+EWC`^2Ea+o;{__<99_L0@{S$_P%sKRI8I@S0}^(QhVTsa%y|=I zznog~0_F|1LrRh1u0#)r%7PbZO zPur6J%PO1<-}!KxtG}t z0Z82of&|ux7**F9d+)l%OLx8NSH!L_)671)*5z5?TltUzSB}--+ zJgC~@?%t_!>{I1Isy@WnC{&2NY$r*$T&*IUwQClJP3%RB2$NP)A|`pw5F@rQ#F#lm zO~>H~0NpYJ3@@kb`~&JIE=;gpt7}sHP{0CTEM;z zusb{(xpNgUR6rAf?t@PtjDWsgmCS_eBhWK{*nvK5{dJ%ZM4+z+=)(X#vj%7(C3OzS zWY&?8LRh&3SW-pWy#W#yb)8szoWoLG41VLdnla*(a&-%wHRzem1{a1I*rsL! zCMpj3wxZhPCfIZyaSgUVlw8euEDV!+4A_}V4hCAgO}ap7bV!lF%k5YvcVnql*JlN2|U!LUiL2H6C4 zU#F~vqK_Km3WAgekR+Cz45ITTTVOP)u$FO6W|ObZm3h--WbXz2> zW(^Qq-77@~3|^M$%Vo~Yw@{Yp*G2}}!~3u7PXrlz>q0!L297UJlB(OYo*U;?OG5PmcX z*6>poRjAhAc-6Lsx)&?JBI>?e2kfOafN7en12&Pc!0+_*4V@-yfMJG-BNhSsN*ypP zGk*j}49Y%-qc}CD{GDk4Q`;SF_NB3;lnVf|`^Zoflh~Cq!$~x0TZ8WKm@fO>!b%wX z9X7U+-|bup!SC3Da)saR;WQe*TV4s5`Q84NaIN1R;v8kacb&+R6^{Q|dkHh0EX&{o23 zPldR{b$$zrh9iCph5OkmW~=irrDg@BF3+lv0;PEHKvsa{aM)8JnQ*<|g4J?+Nc72L zl=Ba^t9(2|CDWlexa$9Dmd>0lmovJCGKvDCcnbR-~3%*0iAe8`+6o_ZimLU@o7G+ZK;1)tA{Fhc;wsI5ahmDbe-;`fbY3qe! zi_g>}ej?dMWW*^4GIMMQi#*W##YYVrCH>Bn*oY+z9kCGbTE`+A@|B?qA>PXpBia}b zAMMK*Wv_2I28>Dsu_Zwr5fd@VAdT1~ipF+$iEa-hX4?d#hqL==Ut&m{Asr+JjEIsU zbqgsXhC|oCx;MXS4MmFs(EcU3iBTZvrNs8jU6q|UJ$r0TxYt5Mo@^pqcKy!+gWh{7frdBZ3bdl_Ogq1T%VVEEz6iWd`&%NX+T#AIVholSzRSIyC|7g#{(7?w#|Ar3?P|VogOhK zqahomAq$M#I!tSZ4b&Z8jfZ^srrbas$)ba0e1=ci!y>T+ETU@Vx2WSKw{34sV}_Tm z^1=AuK;G8MH-7~{_ z3LMRWgc)!&_rkIL&pbZ{-zSvAh96X6kZJRABOyyzWam0~@iYEr!hkJ-LK3K%HQ&z` zt-QGv+GZl6L7O_v=f(|pEaHSQwyz6gv&^|r(ky!_p`=--p9)X275&YwBNH-DQ_}1j zN~5roCDgMe;?E6g!kb)7*`Cq1l8AH#sryYHn^_#%sN;+%&s7GVi?;8B1aQWN{Tj}2 z@4zxZ4f1qqt`V4UW+>hOXLC4)z?Uu)e6fCCgRiFJYn$V1tK)0o_Z46I77DtdMPJy8 z&YW=Bq0#m=__|?&ui-SlhK?^T6MRk67?fGzOQ%Q*Uqj(b?6?7qLE<~`$;}C8x=e5e zd9A^j9p^WT{%16{_y>Wr9W|VtH+9;al-Vujq_oqXOXNXlaTRRt##cpY+IM_0lm-`E zvYy%yt7|YfE+>qn`W%DUGl)G;j7BBKB735`^LA_=)Qh0E zg(?25)0@tLuITMT{5dp-+@1-HTY{g{zi_!;P@NAR`_F{bVU=@ zq7rZu6z*b_%l_UzF!n`@5JHC~CK2YyHI(ZC4tqX`hQ~#6jmyS-N)A)MU9OeXwje%T zpssa%3Rf;nG3R;|@xe6po^A9@02dbdQGV-NaiwDEIz*K8;KIXmg$thyOpS<|#bn9| z!hp1O7i#jXV)ip7Du&*px%l(NUI9_m`l2Iuk4WSlqrD}LBeh0Lj``Co9>>s#N9dJi z6LQp~<7+vabRGG7oj&(CeO~rj(dT49%Gq~9oR$^JIN>G$FX{h=UOOVk)`Ke3}OaCDW-BJ|NTP=)Fg=XKJytz430=RW;2|8c8Um1bZe#7pa@{>rhTrO6U^P-4!G zkF?moEEZ8Xn5=XJqargoju2A-ttk42ixJIGQ4CmQ2h4DOgxgHCAt}~EN8QQPjK5}e z)X7a*#`<#c(K8)IO4(uZG#K|nSiKWp*-RNlp@ZcZn%HcNqF}Q~7?_pbLx7Y_RXD>1 zf=P?zaD_z$4Z?B-LSa#ioh9c-DLr_EsRcC9mx5ADU6Hkg~lF!Y&6PMz-M<>4eeC`Mb<3(oqDZ=8ab+8H*A&Pl@2Zz$?e1_ zq)*%N-NcM&EVn9=je(xH%@a2%knIq|QK^VLI~ttIW5}G0Ix-u~cTp7-Y32j6doZjbTQ<_4f<%Y$CW&10*wf?J` zkZ_K&q;^7H`^X;N0TG4F!Md~Md0sd;R+;^f-2p<`Z~FFb2O zc^FSe7E9E8q4Exc1%`qxhHg&_W{w?W5sSS@M-3_#a@9FiZ4yi$Hp57r)>{blQ8PfS zotZR^HLKmK<_I5w8al)ih_w2@z5sF*j4Jhx_>uv(RPM~_*cIf`x2cM;G!=8#W$3h^G z!%*4}ea|6j?X*+pH6oF;tRKo}1TbRnnqaiy+|9e{@U3%i;-(&V?HXd>FCc)htGd15~2#Ni&EpHgH3325s zw2jBeK$D!9XbEduru3bv$6@la?8}9Yrn)a0j#=PUU{{tyE9l8mzkCy5!I{>@I%%uw0HNvX0JG7W4sbM~ zWpcFJVTM)b+Vpd3RP3n2>a{$7Q?J{K&a7U`(KYpYM!Uldx>gO1E{w(SB2opNxI&>L z8Jz$(z;UJGMh9jsKs@4qW4zmEcSMcxs~#dOho4bm8xY!ytFjdoIQnY%v11DjgbPyw zTGoXI2msNrG!RIhH3Na%s5NBA8@>Xrq>n~its%*VwJ{;duM=H{r;1gkK7>MCwWG0G z5zu>E5p0Y`yxTSC8rl=}3eYJErG&2Hs5n;EF>AS^kp61}GK9fm!9lAysafNs4T*%K z18UIeQ-H4o-5;f~Lr1AWr>$@<^9@Ew3o)NRDLqA#tHpaJ7<;0aQ~+*drc%nq(eJY% zkAa*L<=R<@f8FH(%h}LkYDRcUU}&Xls+;cX1W!yw#d0cdXCKtWFvmzp2GgE6Ps*8T z6&o*h`4ny`0pj@kw$8Hiad4?jrx}!;x4FO;K5F9Y>Q0<<%%-~r-4k3U6I?RGYobIy z>V4&syp2A;OM&TdPGPU#bR4Ko?SACGIH>bZoY34rSJLTH9 z7y;rKR*K|6@=rcksQQM^EB&z#7N}#Ehhfz=T+j25pR+to<@wR)l!tcCvuQ44cpV1a z&On}JSCiOP)*iJ~>(S@Xtk?ch$pRIKpj4ru5Ojk#6m(SElY>s{6vR z<^P|(_W`u4s_%Ty-uv8h&b|Ad+>@IGA_-)lBSInx2?!(-gzPJj#DGNFs0ooV6I{>YcsJ_=$J8{ADX2EQ#`1EgME8cR+OnnPr*R8p#+Ul&VlMl{^c@KKr7lFZ(*cC+3=__ z0-~H=bSf@^P>!a-6t-d?tZ{@-G|(Kl-;8%8JD3ANccSn}JAZ+a)nn#hGAG%5%k+?e z$$jT<;Ld{JuzHwUF&O5{QAG#`D&qs&cO3R(Xot1WR|#A;7`%1phWQgxWHBIQ%K$`2 ztqg%EHa`cdHz115&!BP%KydUlD9|6^9z_9%H7{)4w|m=e@+g}s=1=_8R4jwrbZn2# z1(HcVgYiy^0(T)2D@{Bvf2Y)vx0p@RBW9%7;weHp1^_=j2@$Xpo+1_WwD2q&ALE6< zZzL@v8O)f7*$#*o>5CZ@`J~^VG~_@I!L&^oHOzu+2SZUOGgygj5vo*Phu*gV1@l4T zlL}Y+M4w;m>SPdbp*PKrUbHd#suxMe;Il&_;NVN9nD}u+PjDEk)fKcVGlES6*;IcO z4RX|x_M3T|+)NjJ)R^13i`r1&Db9(aQAhC|4?Aj(n5OJ_YnvoOjREH)b2R##b_dJf zi|eH^U;~s+h(}9IWT)D0>M#^5Bve)lk8B%gFiwgC;#_6hRo2N)WhMPo;^aBSfWO3i zWKS7PU(>b0q|bOPM%Jsn(uMz;A<5g=(i(V8W%I<+HT8agi2m5;9&CW^dBzJtvzCYb zEL)4u#5N8azapBNY~RTJpy@1YT77+de~(881_KVi>SqHEzv^pqkU`hX`sUY={R6{I zYqn(@aM$UUEw>q&;qjNS+GL&vmFS5JC(IKBc}4eBdxKy` z#c5OHTFMe?0hQ(sQMemD!1Q2SHTA8{Nz5P`fmFt7=LH03Xz`jZCnV7Fp6)87@Tq(P zbgHd+HBVFp?F`n6nAr3{!M*`F*-hD6Dz`)UfM?1m5O%ah3XXL?O}`c6horM?SRC1z z+#WQ;Y0?ZRw_SS8FbBcFerNFRDF8D?o1E`8l{JGd(Dpg(BJG#pGAO_miU-nT62vlckup zGOdgfgvUQRL97@OgaRcO5Jbz)zy+_GxB4h3Ax$5mh}a9Gu?I*wxtbPCTyUB~6l4p) zq{4r9Hzdk$4VzxoA+2jIG}LW@Q%n5wn$%wq5o@8iHN4-2>PALfTcvRNb^B{|32&1- zCx{0-&|Rn#V?eMTKrJzaCOJKO%I1ReHJfl})i$WGfLuqR>@5vOA%Ra6+AU!C8DNqY+#A5UhNvtu(MefLGrQ zU-zDI*s(3#V9;+!?y{_9%qo5Pl~HeAjSADYiN#?6avccf*LvB1K(s3zm`RqEctmBHBo4MHE6bGLDOw3iDN zUdKZ%9W%Nlmjk&I8c|JQWd(F9elc!s#faH3uQkip5a!j_xV6{#$GZ-xJNg}!tZKhW zrp~mMwv+rXH63$=J{l9A??1m8@0)uoFFk6Z#prM&>!g?n>R{Wi3%`8%tx-JdoLcbB zznaXI6OH@Jfw(5aYVyH1YVada{ee*fuL5!r(yigV--u{P8zYoet?PIwOPdz*M@Vf0 zA5U8*(c*+gw2Lje9pj4o-IE@I4!xg;tM*>neK--ae6M)Fc>X9pPrdk|skq0iztBme zR}(*ZBsvKGdoG%vloAnDMYIV{K4&(K1b4y1Ee7EMY@H z3NU3e{KGT_*&$gXOOw##omrZ9&HN-X?8-rp7l;>Grqk*u)ul&R9l)i`EmVsG;VT0H z4rh}S0?O%iptKwmf}OgSR)%P{Dk$s4qy;FpEOA0W*;EILg2KTHal75NW95=6D7GA1 zfU?CD)`=LPXVrnCFhM}+01EDZwiD}YLbehskJTXEpI^4eym6>m8T~%s%e8ArGfbnd z?+9fDax%~a7WBt?;E>1wNFZCA#Tw}=Li-iJ7rt zywfo8h~1`&`^%){!`loZFuK6SR+#Z$E;_W|z^V~A2z^DDnM#1^mGPA0hjp|VzKe?+ zaDLX=9xbCQ*h8cZhC5h|b$3>aC{D)YAY;-dF2Jx6`<CN)z!n5-!Qh&wKK0Bq_de}uXPtHS+3VMD*zokHKkuA#Hg4Rs>D+TSZ{D)yyz|aK{~6D? z;DQS;yy&8>Teod{<})w8c>DHCE_v3oF1_^H%P!loBhTmNp8f30FTdi7E3e$SbJs2% zjLB&#pg-^Mx5wY+QT|R)R{hIB=WYI`OZdyua9;P9c!E6QZxa6Me&OGvm3MjniTs`6 zJN;c2uEqVr>vGCx`K$h~;O|QQ3ck27S9XEGQxX*p-I>Xqy0Fsug_Fyek19(*O-GFBUeccI3&KZE`>kh{72i z_9vW0Q= z-)4tn$;Q#`zbOYMNH#Pp` zZ9CkUXOAIE5`X-*9a@sm+)2&-e$kw_{=3C3MZZ;P{R6cAP~tJ85}OD?w)S3)T2xgo z@bUE?!sE{{m>CS|oD%FvyoP2!KBP4FSk*F4|2B>itqS#QQAp&I#hQIF9C!bGe;?_s)*5Z~o|KScJr?Rn`+;JaH6Zn&vXjW){$n#JZNb;*O z5SIA-XOGCv)os(9p?F1sS&W%C;4`L2+aqPg4+CIK1E61T*cNR=Dr8_Ae>F{)twdCU z8QBRVhau0RPRlZ=u+W;Yn3{El?p)mFX0GY@&o%J<1dd$dHwh0Do3o%59Jw91i{v#i zd?3m(zb?QLz!n_2k|7G+lN8V-!&JE9nt_`|32FY7V4OQWWS=-G&w-1@u~ZWQfvQCX zi7*1S_@!Is4*OkLWXj;pTR3|K6h1i>nr{xV!ZA66&gKZadOweXcrlZMMLC{R>vl?G zhQjF=K2}0igD%sB=9OyQvJjl<0Fso|y?->Syy*?RTs}Bq4bldNwMTJAkY>feAWlhr z>RSS)`03$|eOXt_gl{HGdczKu1a^WH8~N+$17pgk6SPPvo2?80J=EGzOML(-(1Qk; z?zga-c@fkJ8IC%BnHH$v#1MiMEK$hfj-gPYm~w9-??LWDtfR7(tC`wP|FajA3Bq4(V1Cx@O&k2e(IH-xVe@SCNFc1T}^d znr`DWN;bk;1x5FRIZB}n9iEHqHbB`eF=*NVCt1%%K|B&DSFhSo$ju%YgFO)@%4NMn z6O0wLCL*o2`h*Qmv?-@nTjB)Z6oX5o+lW)z*{_~TgW~~KP0)on7>B_=B?++AJ&WK7 z5KpS7=KUe>m3j(=T6l%c?MVwM^d+SC;Fqwj){JmkqREa601`>5bF;u95}Tzakr*iS zmx|tzc}g%b@~+VXaTr$2zMKps zBjaa-F+PY8sf}OO7Tp<1YdD=)p>7Sb5i1u#s>Njl6N1Bu6$A&>a8Z1HM!8;c^+1d2 zRHE;NQ7bYwYN1Gs<0LpNWy>TrdY}NhgC!~x)UFko)ipHRJ9^r)ZkE3 z8tsWD^p%2Pp*_I}*-aP~;OHpHPI^kiqxS_5)fNN8mN`|7cSL;9jKAEie@r(XD=+3SHGshvSXzDvLd2i!f_ zT4qU&Jt?r0zPe$83&Sr&KPi|SU1IBwcnwzPcfaEZE6RujO9#M8^YVtwCo6la%DVMs z|L}Io6sS@8EI$9#3&F>L|$}8i?bYLFUkc>5}FkTgV0Qt3d}(8lKxRAYL+&$ zpg#UTKq2o8wHLOh*@FX6CcOzhV#8m{1F zXyIjGf*JKrmXc z2EjbNf;GL+TtM*3MG(xIcX)$iB+Lf#VRcCm5Un&o`e{vzrvO4Jcj80h^9Y6}bk1Uw z1LzFfuoD5_v{bD>WLqlzL!tiIqL#|~arO9o$(r!P!JT3>Odic7Bzcybad35NP6gaN zK6ud(Vhh;|y%(}8)!D3dL3PM3p}wdvS0a&uXNr-M!5SzN(vT%qkcI@`IBD=yQ;{%M z0aIF!rL8f_#Mc(E%CGRQmUAm`FM`!78iojff$W)DWb?F?H6^lFE`n^u*Z6RltdT#+T6R5MaGN5)tz8v^;8M^K9;ywaJ%Zog*9^>U7~!*6G4Um4zxyrX0Nr=cHj3CQy`5C-ltZ$gm1CDHiS7 zs0guX05c}Zj|rS&k{`n%w{SBl(-ErUX(>O-At&VCXch5TsAYahC7@?!{Z9oDK{ zMtCse_dmtFB>n}b z#k*2Pg|tWR*8mIzA{`ptC+Wr%?6d{a3;s3fRY?CNWu@Qjz4xXqNEp3CA}~QwFs*SAMmqMoq;Qq&98`SVYyzE+bFD~&>HoX z?FGpdOLAG0vrKGg68!NeMsme!lBbefp-G*GRW?a;YBmgsnuJB{MGNpzj=tFCd2g>i^eKdot}yco)J>&Q*}297WWYY2M4vangH)%=m;wYu11#JpA)TT~n> z5hjjZiF5I=5))ih68b0TDwTMcIGqw5hW?r1UGNs+9V7P7aQqceG>C)z8V){$R6~0_ zl{gq3e5T#CgD*G)kBNiOd1Y3sz`Y0ttDQ%L1#tjCCI%prk?Vrz|1n~5LFQ3Y8*O8^ zltKtaSZR=$`C(6cNg(?5%=2}=WWOP^ilAVC=4t_?yeP}cBBxcSzSIM4F3OVpRd8wu zagg~XRF-wCjwfF?+d_UNIRE{`&;=c`MrkQ*8!+H(N0k9N1en7PwRQ&mC; zYEYwi6mkGyt*YR6S0gyPFckuN6sX-hE`sC2_wfzlUTD@^s=5* zXydY=(4&27S>eRu6^p3`uRQ(#FkUshi{Uk8VcqiV;>I)K7p{LIVaEzpW-cX-VTHQu zWCN?XQSarjNLH+)RD^)kv412fXQ`)onOY?v#DcNQh`{S6BRmU3BfrFU3PB_iqee_O z6-+6ZoPkY_ibZ)}5;V#$hl?$6ND?@_7noQOrgvx`y9p|n<^|skuOnUdmE=+eM`{R$ zhJ_W?i-95*_BnHv9mMFiTcq#tbGBcs&uZKFA8OpD1t8}VC{B}HbAkG${NwvF}5`QbvA( zih`hT!nXqj^{IIkTGZi!!lP(`?=CYQg=-cvM$NX4=d%;Tj7vc7ith|^7pwN@$ki0@c(7zE;!9`7;~l#b%8Zx}i!$S4rh`@l ztER-U?*BB2rh}=GoY|0K^cW=k6}UxE2NNj55Hz22Vs~2TPS72P#Y9_P(~Y9jWnAMr z^yOx=V9ktu|wey?UWP^c#{dp6n3(+Ar;xVw4Bn>q@35c$cp35M06S^UPC z-44I~G9^2oHG~9-%d#*hYd5xbP5|)+m+3%rE~e2*K;(qu+SGWwrPuLBJ-8yXaUItP%+T_ z!ZR?#FQ)tgW<6)m$&^&28(z38@&2(#0t9PrtEdSqH8(IdC-VhkoU0&pQzMfCrXzr4 z;Zuff;;BRr1;~1~dcf`}R-zfO**wvb^sJVoV;!p2U^}$dtn_p_JH;G#?16^$cG3{P zsDaJnXlN;Ei(pt`rq^Kh8l+Q~Qohsbe(_aY`3ll7>tt5cYE%jem@Lj}hzRxOvJl+f zi3Arm2S7S$6Kf!zJ|2kut9}9WjDy=VaD`c6wc#dB8?TL8z~!zBEx_UYV%)$_${Li5fHbsC;w|__?aRwG%jyyjp=@t_HZ-df2t}2B zq^Ia}a-YudOMJo~8svMPm{IAZ%KTZt9??RYl+D_HsfXYEc?;^z zAJWqm;c4~euE^sZBqkbX(#M>Gha_Eo>0L))W@)VTcJ#Qd3P|WcXny**&|LgNer)8` zfBER=O&&D#d?gS39P-ulO-PYc(64R$+G4-f^DE;C)qa6*d;1&dTI^Uwb-eS_M;bY9 z`;q939)&}+^lnU_6GudFm$PfcE=YG@p?-&mjr-puxHNTs?CTb)!8lm&7>=#-tMy*d zNWUB{h~BV<22f=aUq6?Q^cB$&(o;B(SU%8_OrlAjVtRDH#&?_ZR89_KazdY^cx88L zIVLPl1m}?gGSE-OUix}gtfGX=Suwg?W_ z|Iv&lqy<7ai?!1z#MtN+Oe-ja7S&VhFv5yu4SD~8dN)jFeWgAAXqDD>*7J0{uY?UP z*4J3NV%iv<7JF(@*)T3UK=TK+S4DTN8}oGs*q6uyvKUw%%6JFQi6OHnnaT&+P-7pA z)-Zjel5jlYH6)(NQZLTlm_KR{M_MJZ2W5OSS_xnj57;Wij%$DbJ%n8cEMdQ>1Liah zII;!w#Bfwb%OJ-jMGXCfAwUndKvN%+z{;w<=((GmcJRqBN)MtHlWI_b&mJwvK+hOD zC`2kIw5hraYJzIQNm5Q%sz-FC&WNt)j}~Ce2?=S*XRFAkg(N1TkYVzpE=b(V1v=Hf z^Bl@aE-n61#Csyi%p+QoOfDW7=PHq<);IEb7}j3vy|NE!n;n!z>DwZ2#NF%~GiyP- ztk*LWPG!JGDXHWlcS(g^%idjH{ftQjwT7gUW8Ec{f~a|r=>i-ct*nYIkXc}Vkq;%N z-am!3aJkb$ZZfI@1)E8rv{=Raf&`4Sm}evsLWrk`4j>t@sKxiKe3N9XLIO}9dI5VC z;oizQSgv@^&J}Rb($?o0=#NCRw%wYgV1EGnF(|x}C@Xaax;8bi``CCjA6+SZ6svme z_hTd0q&f27S+KufwgZiJC}f&UaIS>5eo0izje^&xJf_OKQunVKz}+4GAph;^GErQ;4T{K+r;?B^TlH{z-p;xfd<9Vi|oCM-2q3bvkB_27PjHR7SIKxn*i z5*C|mf~em@P{K((H%^jaT~Ls0h@{F%vLS}=7dFK31KAMv!DtN?UYdrNRD-=(44fp# zuoBr2$wC`qq*mDwEzQ|%FrpA^BU10 zwB@ocaz^V^I7=JddNtoEZ8W>(^k6}=kR(Le%*i}0i$uMW+9fZvwm?{3XrrP^H$`SqY=5_Pdp@aR! z+Qax#dxCYKT}@&o8YT;xzM7`iM?*t2!nsc)1!W7Fjo^I*N`Jdy*fzHyMk*bn z5q7m``WZ25oqdc$zJrXHkcwu6lw{2{m`9A8e(;r2($o#~lUdAT)<9a7G;?{`KH#gzh`gLQUE+#`&BWVkhyS`y2=lVw3 zsEoB;-|)PmZ*;d{&N_VG^-c8yyq5mKP~Ygm0)1oouk?JVZ>p8x@bqs+D_JmSonjaZ z(ZFaMdoZ>lqr#d(X|auI6uSrqdBg3UfjLi$0jQWzBC0S5mJPrf8a5(AamQ=XLe-+G zepyr^%jlS+oj$Bkc$CVc_^g^pKL|l{I3^QJn$WH|jVz0Cl)s4(NjOJSopwGS_nD6+ zI~YU+oOwC|AN|JR=NMDk_FL$g{aNzu;=AJo@h5zW4PC4d*b69fT4aKxZ6KKZio}$^ zYGMuMKfmQ@%D?^YBTUw^ zV8HaoV~zC-i)%}vKhimXxC;OP;5+nhJw0Y8u4de}l;C$O%eyVZnYpwe>P8cBNoy`w z30-DwZ1D#daCzU`KL=K~(MB_umvEQ;>hWu@{aVeh7uqk{y@<|Oy?4ps$?P0BV{LLQ z0M=@_FjfE=8W+ezAUUh9fZpM?kj(<#a1-FYmxkoT#G`*vEO>9bTmDjqSJP*Qce;dE zkUPAB{JJs7j|9l`s4wZt7-kwXOdr#=kealuoEO4J-%_(MJ>)eTEatX2YeX;jUibCI z+|j;Gj5(^;W~HcH&6|{u#T2fQIa{8o0O~P96YbzA4_`6lENGeXjKYUfpfMj>ig5p^ z9p2V@u9RP+qWoG1fnMqiH)5I>zG%p;VYQk$EkLDn3vN17{SRHF)p@1j&@@=Td-|Q^ zLdE<%zE&wYbfQrooeT;46oiZMdVOZSK}$w8M>$wgd}fmw%%i zbc!|TcfV&i=<*Typr6SvCsGZ%548sURbzvG7jAix>-*A>h=krF0nGfz>MMQUJ(dd$ z4+L-??T>_~ve5n{Y@45fP|3fEu%g0v*}9oV94AU4v+zG;P8=&4%U|)Xv3346>=nd7 zv-bwq#?ir7=JAbr`-TVS6rTQY<2EKkjOpL-MM?mB0TU<*9@=I;|80!p&W#A(Z+!F! z{vGH>{2o##B$~NFsCd1yWK$y=@Y~Ey-7zQhq@R$A5-m;U4`KI6Lw)8KkAxk0%S1pM6d~NCi3}zu>@=)=SytrL$GPf`cQ^ts*L>Tl)JvQb6lkCtUB`Ulmt-?tEfaw$ni_(oVw zLr312Klb?JQuPm0GuD7lU3fwJt{dBnM#<^*I4-%-|3&Y*0)*5K|a@HN4~0u?%`Xn@uEH2ex(W@y4NaX zJcxXmqidKa58i(3T;p2Q&lm6fyomadwk=(M)$hL4u)A;g-F$3!kA=IY-Q97QeYaIN zzZUjk%#UUR(m=@3*gHV)lRVQB3~lwEXCilA`D(H-_Xx5zfiE&FgvTL1Qpg-YsX~lR zBgUqP(O23~KdP{KqxP6c?ob!)ya@pt(U&Oy7Bhfciy+iRSx!5}DPT)!b}P%hC%V-H zfJ_1vKRN&>q?AkW-$Z)mVxGzhOj-E23YC(#T6h*@=|+e!F0?Z_;vd~`RrE#gCmZP} zTgk-X_?9sews}uXf)emVKB_%yOwogjt^4Nwf*=V1ksfjhQZ|1Z9Wce{Kn>8K0B;-j<%^8p>**~=6 zK=}fS#jG4;3G>aj-6TTOkvs!i97YetJ1_!iqxeYEG7S7G)TTN!z}IH_Ii>;?&@j&( zl3QCEFNVI`-S5JTUELReIg#y z;!V~_e=k}X`%>&alyo?SZ%p^bATA{DK>bKV`53PsN5309d|7-~n%NBgIyx z2GQnMG`79i)UWU^W&->m_ke&Xwj!263W7&67hQ`Drj_i*a06oE!3cZkRQ?BlDHnne zsqwJ^n`?Q>KjMwPW~F*e<}p&$=@(%FU%X4YST~ug>GT5KeDp2jbuBCFI`Zz~BfJTM zJbmH-Jp7)bt^$C!w4?R{We>?m`H_Z{xdw<_QCSw5k7Lv*7`@}o`FZmRVfB_(eJm9UtfJ9HXnJ@G=~(2%W_+QAN@$aL1;hvtj?AE% zMk$fMS2A7kREpvpkEh}(s}{%ED5keTH(_2Y&a=uEZCTwdT2@Tyc*{Ihpz&yTNmo|e zT^uc;WjY>yX(HfAvTO?GR}dncz{QEeBtk|%4f~=#aG~%RY+=jRqMgp67B-Tgvh>c; zYH{Wm)>7tF2(<`DORGg`3JfAfU7*^soh;|dK1)Gl@wJSlrCx}F$gsUzScSWl_*7U1 z@%)J(Dx6)r^wgY~stz^c@lnKqD|#1PU_Az+3h7Y|weyYf#uMv-trj+&Q$NH#fw zP6lluFmRN$=?yxAbB$UO=^|U_-)_}pV4>cBX2V)$_-8hhY#C+d6U2rn zMvsz*4H3m6@m8{HwK8UTvmN^DAV&IJAox*H)_%YXlKod2lbv!?OG zbfDqFm73*wEpSqI<(rB&^c+FLrmS^3Fd)sTX~dQ^qMc9{685k=l0PkkS4+an67~d* z$TS1|kwAvTL98+%*Z9+_;BQlz^!z6Rpz%6K)r=?arX2S(Lwnw$%Vy(;J zUbH@4+d5B6%~-bHTcq2CW^7B783EY|#Q|9u)vUFZI?X)yg=UoI0~X&f57rl|#ZZMB zI7SuDjKeBQW(-x}lUqs^QiugvxwZ?5hLZih?gsN{0m?Fk6CNSH!vj~flZT0h+)if0 zu?!2@$)d1=?}D9dXfq#|_>On6lZnSG(PnE}1==W+Ip*9)qi`R3b(puO;5DL1P1h~B zRJaLP%s9T)RBP_|1H?hFWckgPm2#d7Ir<&aNT(ZTq1 z&!K3GD#R>{SQykV#41}X^b5lk^F;7X@9Uk-&BJzsH&HjKprM$$k#{nQ;`~%SV^(skQZHwkxqHFg0)*@(VQbYZ*?Da?GSh5+AMrn1v_skvfg`TgK@M z1!cZVlw$l0g8_N$qv%w&P4_m^e!oTcHr{@}UiaCMv@+e($%53L2PlGlSh0MzCs)4>pR(`PVFVh`;y6dXoMz>(yma3qBG6>ze{ z)8L>c22>n5#ZPaDiHer0^>But>-U`p@i4~?Ji4)DSm=sPopagkV#K|JN!D;!)j&V+ z>-O9F?K!wnz9W-djY)=TN;-j{OX5pQ;%NIX(bbgygrekb@*5CHoRhu+rfkL^F4tI_ z@bjIloLyXqFMHK!?9?GP9;rx7nSjga3#y74G!cyS(b%{5c5F4<#FWLGqrKZ3L}sgP z)QXO*c^V+t>WWEY@)!#y;*(6fxx^Mt+hb_al4C=hf(&jCJRT&igKn>$t{1vvpfdF0 z=5mb$3-H75G7lnU7a8>S)GVCH|Ul6VM(G%KfC~qs}`WqU~^V&sJCa2 zc4nwif|?0|$V!$Co3!?AZjh^*c3rR`0}8=rT(Z7EiiOolL@7E!%E{>%#b@2sS?IwbnWUlSKD4GJWFb2?y5|#0Q1_Fgiyp*zLnK}S;WML9ua-|t`}X>J$m!UQBIw;XWVFtZD<_AHSQ0(_AoP)MyywqA zbK7Yjlm_NFv*ZHM8vL8^c91h(E21EXHNQ8?U<0{`VRQgo#U`#|TPSH+nHp$eISgPR z9;p_^or-*9Ku}ZQaipwNG`DV%u-%%Pl!1 z=hj%p#@h2^Y2_7tonRc_2V2`>H!`S&op9>H&-0Y0M6g6e23Poh(y}oIAcLJT!JD>( zJYs#Y;U}G5u4-$VZ1ag3H#KDhqUb~=OdP&7Zj&*zJfAAQ87D>&?Klevz0Lv>Va@_# z24?|0XV8tYg<%jRTT*zUVSLn(oZ9V%Wy+Buyj)NN!rA<0ma|NIbqf}UhJq4708|X< zKon*g1bRkZv+8vyV{=Ay;9yC*g))KXgG?~|h$Nqg3>YF{C<8X=`Z^C=NxFi;E`0hU5iBoC6Wm`_~1md7g;{Uody85T-5sw zf+zS{thJgdD&>Zuw?YFDEIJc{vVedgat zP1n_I`CO6pU;XnSI|@lb^)50Vm@Ib@2e(OuTRS6Y8s}Pn0`E>XCO}`S-Rv+%1pz0b zb&ft3z2XW|E<5>+CVYuaw1o1*jAGiQiKu2fVJ%9*YlYmh?={vwpw>%wX4I7gov|2O z8Ytc>ZCMb9nsy6Z69xrr(6rOiSOX*Q>LZ6YByA3po<-Uw99FWT))laFfyKObc#pj$ zB^#y{g=>JAEgnx7uNfc>7V%usRwe?`TASVgXtC*DvP}vTRx{mtR4dJ9HD?s9n;lrF zQ2U-uu!R|I_h^xj71nJrcT$L|gFIe8!krAJp#>LB(MFKsra@i57`s*G6o!$?oMOV9 zC5{oevT&BTS44SPZIXm!_oL$O!3Y$&2>5mGsMdLHkeT(RPp3Sz33v$!o0^;lHvRR z#RNq1T4;Ct&}8@(<|aX|1`S_UbJrbic;wGN%PR+EJ4J{z%|2T^icNQn5`gE@X z_6E8^R#4KJzD!a}`o&RP(MNGkWL7xM(H$)An`%V7ia(|BYT2jwTcY4ivU_%qYKl;L zn}$_|i6O(eNL$Wam9|FfYS7GRTMJ?7tGq9{V5(8PQ#2o%ltcX7ESbX%&Pt*C#WgJt zy16%facLET$#)8q#^|yrjF*cy!Q|19`%Jl0UEI5anS<|w3!Gm&yPIfpi_Pez!@`7< zU)y|^Pg9RH)S2J{mw!vP4JJ{XuMi{@yDD)P_&Pn)CK6LG_DlnP-BwYCe(l=YICTzJ z95ae+`F1zBez-PEL`A)>y%X}!-}AzBVV%aqW5@OmGTk=VXEYU9;xuYB=YQkit=mMhVsH0p2$UgbPWWYPQ zLB8^egH8nGEz6k^eC3+pyRTe}Th7eESMEGJ^p)=#Oqs7-EAjloSKblZYFiLedwn6l zu}7HST-;E&LvL%ci{Ug|Qke$b)^@v%~QNRpS`8;-Ss0%!&Tq8zmZ#2xySh~j1a`N&pAWk)S z$al#@&fI(};fA5#2?;UXWv=sR!5l};29J1^` z235T~aB)AlmY5hudP2;KEW<*@@x$i-h20lynq9mfIIhBx;zQ@iDSmA+1*;8B9v5`- zAs&a#oS6)i-0(>T3vc0q2XqG)cwX#;4KC(lilm`~)pRxxUUua(g`YAmru5l*i(5z5 zGaEuAyWEj)ipZAK>@Z@97QMm5!`6`;uhV@IsymSJj7oQxzV(6{OQoU7WgrE4XaoNV z%F!ygb!%sGp?f_vG45V3>NCYB`5!?I%@Oyyn-&EK75BQ65MK^D_p#Q}k!uWUYN11( zGVEQjOj4ejdtI*CQcZ|{T$n7YI@-fG6MR!~w1=mYf^S91=YzHyZ->U)d@{R8S%^k;X8RIk#&zaa*GLQd!95_37Q{x*oZ2qs^KEiR~%#-diUjew_UKVBWS2r*g(I{>1iBg3tj5p z2_JounU8)by*Edkk1Od7?~ii3IiwARRqS?yLtfZ5HXkZL35Tp@9{OeS(1Tm|NOHl2 z8T`FAkxGBBm9!2gw-NT3HropF&>r@1NvkJAhTy0Md!fC=9kPLr`5I1;V_s;QXY z`v>Oa!5U>3&OkFQy=w{i6F)!$03hq@hhjxAmd`Z!JJWc6kIE0(cKK(PQJ z&0*f#JxGqx!GwK7aUpJ{4>F9&$ikn7wO6VoA~NqBPqn68s7!V^$hX{+8h*iM^Tp$- zB+B9oV^yMPNzDe*ytgON2J4Js?|v6JW&cjXl8LPl9Bo9D4O_!8Fkh?>v=LP}Y*02; zd|o4)ldfYO;<3ho-nZhci+IC6)`A4C5u!^ROIe$RiNxZNaXFiG%CzyCPNza&s$Ij- zl5Iz%*VU^)7N+IQlCy4Hjc4e?^BS$W-tD)|b#Bkvx6Q?O z5b_f-)@H;F`!~*2GTmu&F|InV(OFm}qkuSor@RHvtJve$mXN>5FTp>i@@f&-9DD9aS!O7O>RsM^DUPDZPH3`!U zaO;J(p(MfJ%^yTBGtUCZF`8cibrBPBPcu3h)EW-Wg*PQ z6c&Fl?B0SV*dydU6d=}PahA3YsGFvL)IC!?MI(`G0yR|h(6;)r21*hdBMT$k)tO!7 zOjxv+y#-y=%V>(RE^0u`xDr=vNP7Ji>}i4SVn2|E$fLWS89>Wk1y1#tZ`lbof=YP= zn%0i?Q3O=-?uF#|Q!;~LFOCX6{nrfej!Qm z+~Tj!LMVAE(B{;TIBeK#*PxzZWk?+b!c@{g#w^0fMXdD}Xb;J0DG;d*0mdFJA{_;m z54?qw=*Yf;#gvtVmz>4SM6;N*z-)>JNIyFPPsMI!jcSD|PhpiBg^lwR@WWFWZUs*v zAWNQ-Y0`0il2N73YGe7(q%z6o&LyKX47r8;q^8AB$;fC8`AK_GhC~3{I}_Ppp#lO= z*{w^{?GeZeZE6Gp6+&#@6#RZXe8m`H7*`q#+Q4`#^fqV%qE=lS9Hoy4(2))f$#JxU zm<@q}=uN>u(w?Rztbvk&^q4;3AseZ>mVxNbg>g}Jp)EKv!nK7PpxS$Agbsl>lO1YQ z=7SN6Wd?Q>2K=$LN9Z+?G*wUu#z`P>=?n~nL%HdUl8}ub+yde#y2T0Ebw&DLT9F0y zXk!JLKI0u^PQC2;89MmdEZRG0u7T=^kGRjbKPAPch1lf(V*gUd{CxEN&|-6q$X2Ea zUC|DBy02d&yMfV+yUD&}TaeJs(v-z+V4hkQZ@z&^wYe0Fy~`WiVC$Aq|=Z-XPHbkzu zj~E(K2_kj1)mQ9$D8FGJ`-b5{$(AI;)@g_!z%-8=bDcZ*avL6H*o&LKcwS423X<`+ zhu63V1izT=T-Ux0eneq}(ePc6U&7@Tl zZoWok%9)nTMO)*msKgKFcp<;2=mIY9`-0Zwoli9ZBirF;eBa;OK+EyYN zEvKWT`Yf#Lg1_D~%S>2qV{zBsHQhKr8zRxVfS*tc*kTL4GS}$+Eqc&Yur?S{$)KZ@ z$8(2!-{i5TfeqPUH|rDWLsB76=3j5TdVsuHnCCW&YmIgR z{n9R|(XnH6cq;88{mV=%q%P>f3)~2$rFPLVIz#R9B22K_Mu&RE8kGnhZSKL(-$S;izb7< zKn-fG-J__~Z;v$#$d^4PE{;ERBEQ|Jo`N|l(3u$w|(a70Vc7qRP$;xMNdf-&ap7jP-`1?lcQvs$4q zgjLrU`sMmUzkR{<{`I&$;*~`IwHO6nyitTE+(H)i{tX_ z54){|STg;M_)9uxJRT94(b56*I*2u;;8vGjeiznLP8M(qdotGLegu8?22oB43-?U@ zisJ=F1(LqqMvF`hIwU<4#$bjumrM$8-qQP*s<;a zUUcSwCQRdBuytU;d)h%W7vVXWpC{oxzvN)l%zlEuCZXyE{hp6~u92@XNW!2G@Z&EW zb`7@PsUKo!#?YZRtR`O6IFlCrO2mAc&s=TG54IepJvkcguDe;}GH2t+C?(!6N+hn@ zDRD{gEJT%2Blv7ytr%$GQz_qNN=(TiYpMHT~~|P4Q(rC!jP@ln(XC*$i9xtgnRFr z66NO0>v6%Cr$ZxgcPT$C7>Y`X$EnBrUc`cVywk9`a7E3>ERak)1GXKf) zdN%7nzroLy`Wayw%Y4oM{O`cPGkVWr#&aTnKG^o7S&qbZIzcSi6x=JDqZTP+l%GP& z^vdl5(@&E}dir{ddyYPyBH)ZOKs6c6I{SIt`y19=+otXK2Rm3691OZ4wkU#${2h2# zIh_M-sP7cV)WX9|m{H|>#J46u<@ao32;ZX*RiQgg?U#1hXs9?llNJ;*PM~-&CEa>d z}}>pVqegp9~`=D_D`RQL4H^4TcZF&t6%iSThbY=e70?0euvJh)KpYA;6h1e zhS3npaj&Ns`}x1B=p22+w=sx>w%W%DNf!AwQs3c_ zVW5Zo2Vt`Z)xyYu_Q1BC)T#`OLj7vrAG4lQdi@bYx zk3hc=!sJKCH3W)*GjM;YLNK)%!J4eLg4wTLV^+8>=F!Gn+~H$Xd)7;ykQ`g6*uB8B&bl9 z?GqiZC`xn>{mxeJsdIVto@#s5dupC3?p5<^(bx5Y5o(4D#XXa1RkDvUEW}!1pveUc z#6b(U-)!1kY@0GQetV6>ioI`gLnhZS<=W<`+8(JG-8@eks zTD)IyjfAdjUV4`w!40e5h}UWBu2i3S{-#SgLEdV0qm&bNjA^Btr8EwmlQecYv5K0# zgO9vXRXp@Yt&F!NmphWnv{82UtGqGN+lTEzrMq9W2bKOFu?H17@fmwi_L!B!(D&&e z+)W&4$_^*wU^d>zRm9S0tf*{Y$ZsYUJ#gIBt3U_uaNw{0xl0Agm zi?GXk!tHH~frsCF$|R%e5?)VcW6#P?H6$vW`pcd-WO?xH2*S#J3h0C4t@Y(IQzW3@ zL|!4y^2Zo1Eh_x=s(99&Ll1X|#j~|KS$=~yib%uLg7nSylhKE2iGZ3O}6PvIGkwiHfW>;=L|=9R7QAu2=eVB8IrgFi(`vG;dK=>8OmrewP%68x!& zzY5X&QyN~*yCq@?<}yS*6rnq&jLv7p*0a1KcQePu@z9jwEbV4#7_?bYzDX(QVYZY~ z+z@BDfqs~pq(%|>tSQ4;<7^JN6Om7f$f-LJ`K&3!VtP4iny`>`v!(_M=`@>52Ntqx z))ZhN+1RnaA$dsYq5xbi1PZiqYcsx*zGkSiw0nqCrRb!($ZNnDOQdC3C9Q0BKX=w? z%vuy!yd#^nl7Zzc@8sXYLY%TylUaS-&Sn(~QA`i0($-!(*{tHlIC4x%a0(KFSlWH6 z%2JLOVVOh`)ex1%#1$$Tx3AmmVig2eFs?AOD%N`|f4Ec8!OY-P4Y}6x``Z}oI$MLK z?^(pN8SPvIf*Gn#2=}(7d_=q0=TK0WaT%&%dkO^+9G(xgusww?WQh-zu;gN)5!VmN zcR7!TYSSBqepm2#sAT;y&9CI~P$m0g+F!-vp#t~E0B{PAhw5Gc6iOI6p5j(o*y!w3 zr~nUs5x>XkymlA{k@n`1P_c3PSZqU}LJ(+WrVkw6m2#bonE&kY=k!9)W@7 z*(v2C1e~~aMXAACl6jC0SS^^yA5s0P(wt!V-?>FXN57d2T?e$V1-w0Mk$b3c2$Zu; zVQtu#*J*-f)FIJP0tRIvGN!_PH*1Gq%Uq1WrZYp71hK(9u$4_;6u+1YIDO&J2$}NP zS&686VH+V<-OMOOFu3_H2wREOQa6>9x?(Y5s}XA#q6d2e5_0j28CVsNLHLp?WGH;w z8W4OlHa9Wb+DycT913H?w{61LZBO!kjLO~ih}>bxx6gZo_C!f``ci=#x` zH|g9*^1BN64FxPI!3y?+@4jsYfpy8sS!%d6%SzcM${1J9qKt8R zVaJjhcH5<*oXyM@i6EF}rKXKu5NoOFY~+vhR$3}+qn9CxKrbbUXb?;+jM9trppIt@;M3;)E z#b8*h!7wCH4X|R&04o_N{171d^zIn%q3i>FO@Cw=ng!a;rbL2WsWpbiyCDop2$SQ^BHs7 zqA(=pH6XI;hJIU&stxkcR)@348$%ziy&=!-E>J}Q1XyY=rp(BuvD|3w)R4g8GWv-i&N2uF1`jAVyuF=u;R5X|_HTpP@ zkg%QhRlDo%Q3M!@W% z;iN>88CnV+Ho6;P*GQY{ybe`tUoZHu7#6e8hLUKg|GFlIq=msQaWm*Y-M|(uff%%f z*!9UN5=afY5=6M{%O8stkwC~?VHa6zeW*&HQV9nCzI*#YRH6P5KOs#iA_>y6Wh-;@ zbJHu`{M=-IgTX3(3J5cgQedR;s3qgm7VwS)7yfTGkj`XglMk{0?EPeGr+RBVahIzKd)ofRs79cDwA`6jCZM zyN*29z!pn%G+35Dz#agpFi;BN&tz%&Zn8PrvOOZk02H#m!YaBoZ6exc^v+1UHoYC? z%UPIMO6AwfE^a8?6{ION7VAhKXL0XChyk1`atTo(7Mpy9r|MAL3}{YMel<}gR_hc= z{0LN|8}b^4lUubuty`VDmN-@-+Jt^46(=)AfAl6H^TCk-J;|Xd%mvp)4+m&bjUDI# zX32|)lUXH={4`7nIY~ja2E7sSi{8k*fKrkTjZ^Xa@QsFwLnbpjT~!O}{iuM5M2CYZ zfkl>hft6Okf-pv4x>?jyz|_Z*qlfCQgnR)O$U71eGlgI2*LJgiFq~t+P7#Z?cQX0s ze@`q1JSCXo-H&`KdfAV@{KsDL%2)mPzWvw##H(NP z+5-n~&>6qPnfg9dymZnndDQDqe+rIBe1{2wtWxkvu@f1h`c2A7XUU!f%7a;~Pl=d+ z{2%}RFYa88&pJ8u;M`-;t#{l9GA}y-QFBTukBjpUIj2-x8p=jLQLURKVJEWg`>Sg|}2S2pK2hpB@v-wCTymG)Z z|F&-&#D=@d%Q5xDNKk67R&7JoqAJn~1awwDdLk`o4+*J#v}RU7I{i`Wrw``{wR~hj zKeH1B#WXcn`pw7gl}d39I_UUbR^#&_Y378m0ARBccT7aDJ53 z#Tn*M7pJm9T^x{7P*>$;<+y{o3Yl;;njHDcY4SshgSO!$gZ9D2L3{d12JN23K|ALp zgZ6>NLECteL3{t=plv?Mp#A*fplvzHpuKN#&@MR1p#9w9pj~*9L3{7wpj~v5L3_{Q zplv(JpxwPVXxmRRXzyMev`bDhXg|9+XwN#yp#99^pj~>BLA%R9E2b+)Wbus8S3FZ< zWghabiq$G}=5xdEl->4$e_@f8PeP#W2W z8BAK{Jtzo9Dlwy8PZi>GpwABPzG8lok1=CG*b@ zAsw3M80;O*z)D~{bM3bdI)wVE#VZE!0rKS?zLu6Mz}k#MU@cY;-z-v#Lpl6z`W*|P z{K61Q%_2*Db}XpbpLCdnzMb!q{I|-t%Xg=L+Dd-ArsQo_@;fypcUZ}nYD(T}CBIu! za=VrMUQNkctmHq{l-y<|U#=;+)k^+zP05?B^IV`mO?==Ot zsNj!l3f`!KKdC9WSp|PuQ}9zN__LaVH>lvh)fBv51z)czxJdKY3T{-v zU)B`7P6hvGO~D}*{8dfC4J!ESnu3EWc(kVAfC~Pmrr@xZml?ooODR`v{=4-q~uTa68Y6^Z# z1#hk?c)1F0ttt3X6}+XU;AJX!YfZtAsNkn-3a(SZJ8KGlSOxE@DR`+0?yMdKF57iW0tAY>L6g*D__tq5bRlzUR6kMZ%U#uy3t_nV0Q*gBk?yD)dN(G;+ zDcGZePt_DWM+Fbo6zo>Pzo;qLrGih_6zo*NLp23gs^EXCDY!xfzf@Cjxe9){rr_Bs z_?I;Wb1L{(H3hi}ex;^hhYJ36O#vrHB>87*3NBT_uhtYiO9lU?rr;74{8~-Hb`|`3 zO#ufpB>87+3ZAKge_KVwW_gh&CQohYPAYOkYnX>^+o3Di{$ESE^xwQev%miS06^L zLT*`#WvTCwmMEtzNlZ&VYc1|eK`gOO>|@pn*p}obVx^8T7i6>$E=&C$;Hs>sO$}G^ zfGMOfOth-EaMaHq^%oC{H=gvUpKoJR=Xl*zwo&nl9ZFe ztORE0Akl)PJx1b&_2TuT!u2=H*~7@nutKL0%l=uD8UESQ&|fTH9@cl33jSS9!P8Xm z?`sOqRKb6!DR`<1{$ou6!JY{lu8IzF6FSpZ!5`KXWGeV-O#$Z|CHWuK6mT$mlK+>Q zg40#-wVHypD)_H81#49BNKL_MD){d;1)O}4(# zQ$P-fB>!JE1!R{<^1rPq;JAb&|GSz3a$_Xy$sHdLPBKo|?mJ#U2Kywxt;X`>tfnNt zy{3R;o|F8JngR|2Nb!qf1M;#L^s*FeOvYqNbZKk-X~H~!EL0a4Yvp1i<9I4xu?#P$=oXZu+_0X+->PB+ABJ#R(`h2$OKk7z*8 zs1S$VOe)%2H{~cQQgk$wO@XW-lues=fU8A#+@J+inmbr58$DM*{T2&}RL(VZRr^u@ z_<0;J5qaX{M~I8`bbb~R$s9$AE6Cm}B7n%0LXB`Zg)AD_asCzV!cXGPm0RuM$3F)G zL=8N@oXg$6t_Qm`zKQ@>dIkMd9<{w(g>O~b!>x`s(VZRrqOHIp4sDuvwtewCY)B9V zIjJ;uSnijcSRZAKa5RR|BK;&Va^vF|YsZ>Jvn#7^f8xnTscA()!G#c|ZOjDs%%qw| z(S(nx>Ec|CC)?Eb!uJsSZ+Q6K_X0Hkv|z~E%Z@}3#1F)c+oCfch(Aeqp#Qm_=)wC4 zDa_L4#iQc-@hB;N&aQr6^t{vju7B;sGg==e#_=^zy)*hy^o!B?o$ejc)(=DM(ydRZS0-$v(eqry7v;>_|fQx?u}OceDu;a zFPgb0`e1bWUD2U~Q_JSASij;u(NnG?I`Uo7+oBDpUVsbq?3eHPfggL>b8g=8Q|JD4 z^p@zHcMvnV_R33%rF`}FGv4^ayI%k1=;`Nex#(Fx@#5>}qr(^88a?-#TW)y8kG$c> zU-HcFyX2KuJ$v8P`(N;?AKm%7cbf5q)U&et13WyAB_x=@k^=zfs$r^|gIq$+i8SYGbLN6+wQmnx6k>{a|?(`ORUNzEnj`FO4=`hxy$G-OZ550Tv?E39?TEc-@ zafH5gsR(`YRp1!_nnNk;np|&4nf-EQ*?YWdwlXYD<2?B)SiS_B*QB^9xV}1N#e(Zk zq%2Z$y*_2dm+Sr%zW~>LX?_uxA5U>baAgI19DjG5rCz;s$-mI>2~`|@4olm??qQ)DXnr7_lg~i=EHp{# zPbNFCILOP8U$&?FfVQViT-iOW5UVS@zizjh|3|yKpH&W#i7>yK)FGGh4G=^%NFUVK zI&I4i10q-pFGZ#WDsl`Q%2&URU3iDD()2t+G#p@RY>lD(@D=bc(N>{?+kos`fc$-g z%U=q|-lzrg%rWUY+8C;(Ap|AOP1rY5u!< z{+yJs3$D9U!g{#wN{Jxgx-%sThU=9n>*`#uNb%}%y*wpshU>FaLJ+vlr7Ze$%~O0v zTz90np}1a_vVza`(iA5X*Jq_fSa7{0#Ye_=G(YD zBh4@1!g250xty2g7joH>;(O(~ImLI$_1u)OD6X4Q;-mCM;F@jhJ7N^zQUm4{#RvK@}s@4;!=Yf~KCK+4L(IFVnrG$PM0p`w0W zMVBtIqW>n4)^QAuu3C4{tdCPAE^$152Pb`v%Cs)b{Nj)$mCda}k$Vrti9_l9_kwe6 zN^Ba}H7UV_Tv^K)N9i+{h>5SLrqwBNi(F4l^WW6)V&JI=+0f|+RarB(C zw3^CJp|Oijg({Ap47vb=qp848rK+bpG{;|6tKUvF3jwdhG!5O)xstwV8KGn?fxA}A z9K!pk6}DlCt)dMlW!y~UH(k?xB{BsC`>ITK5ngdZ&du*E6`OCNr-TtN-t_vVHvRvH zsxHTxNWmPz(TjKY?4@EZ#D|f$BV=RLa?07z!*|b4VJY2KjJ_i)DxgY;n*nizf`_{v zcf@~(yA|9K^u0Jz&s-`}PheF#?uc1|%{g8SQ?b_g5@V{3FqO|!Z1E1WS4rrxOE2KU zNm}!V+5de|dpV*5q&2&Z1H4H1v8Q`!%#!P}X5+b6UEN6Yq(8}_^*)zhR1!S(#P$E5 ztMb(NLji09EUC$)k|P5pHGj|sSnJQum0@CXMVAu|@>Rzc=py)829>&l&>rG%DVakP;;w2I({>~ zc-hfs_jEJ9sX*Oe;$lhcijRugxYHt#-f3j9d@D7yIvuyUlR3 z-31sm_#N)dXBe!LMHgX@xio1@ug6-O)UqUQH*kfg!fm4O+}xOECa2k4!}-pa)98A- z${w6>cQ$v!vQxNYw@oNp%^h28!d;&`_SJ;D0e5Vs@wgH$D48oW%!%Dy!dVQbilHIH zl{qh)`E;Rj?06H7$6kl{J!PTFA*6F;4&e~5q%F4LgqGKG$KIQ8mvP62n{an3cYDga zGr41HO(@&I9s6m*-P5_-Ro<=QZfAM7hPx}vyVJP4qP%-5cWjIawVci!yJ5oJ)3}=} z@6O;ZFYlhh-3}tUB-l8f=ZbC*q>+*?AsTDyitaPnQ@`?X`X`w7CKt3ujRS zn_og(>$t=5xw_9}%ogm=*cy>umuV_dTS;enTbgg|D^zV#{?K#6&x?=p1^%@~Yun;3 zNge-;`?!;7DP(7NQZ4|Fi`q@#B9HaX;TzW-5aLovfH!fgL07*kA^pqE*@#v>3&yql?EAV-Q3u+y+PoW;^-M> zlsP9v+0Qe>V_}f6Kt0yaet0Yl;+E56{XB!i{lJ_uZ$Wgu*I*!M^lkN9!4r+m}2 z7uh%+zHQq*R2%LWmM^?t`2NU!P5lL|ZL9yGyFTCO?FRV7k0=872o4Pa(wiX=6Lhvl zEhJ1pyv4*t%eE@&r5xYy?pGm3G5}=3mdAEbio!zjT4h9@6xo<})0{09>o+BjrXNs7 zNDIQi`kxnl1<1BDN7hO`jTSaI_8*EShMAgPs5Re8hR+8ZTr8 z6%J|q8g9!`Vyha)h#W>1vsgYSd0F*&EEj^JX|rlTCMTvCZsVMIO!=EVfGFb^&tT zK`f2HibGxAQDwoFV1};JoHV%-W{mi{J=O8v&C%y;a^?P=zlG8@2QeX&Zo)UyamY4W zB~tP$QyGP-nBJu%?1UKgNZ+)0q!u`fQ|HfBsJ1ggwbS0=?i1=Ta2ef#sUh8hJw+IE z`kP{e0SZm7i;g8D2?oL1(+|$Yw-074SbJGEql3@!p)Au!3f7k1Cq9|n&uD&qss!0Y zWV_ynX{3u1JMYxq#YP~0ddgn346rv2dU@xNqxqm@fMUd9GU+5_f;5qn9>e6Rv5iW} zLtCLw+*cEd35Q3VrG{K|NtK^g@`m#h>?3~K$i?{y-r=|Ssb{}*iZq<1kocH1@4cOv zpXLg;c;}I2n1X5qGG^hZ@7AXZB~kyVi+Z5OzSzq}Iqt>d&?c8A zKD)-w!Gv;wOKKptMKP!Yl56stEcI&D*0DJwli&W98jd$L_VW3o5gGym#M0e1lzUV7 z=2$oh?4cyWl95}G&11B{D~W0+doMPonq#c@>UIw{ z?^qk*L4bDHM5BaTLH`v5Nos{rY2_KMWdewkzW9^TUC_1;v;R>J&hfF6p{2y_^$4MY zbvn;B&NnKPvVX&m(!4Yl{1e|iV9~CbUiyp5gZ0H%>&mZW(C*zH!QilG;|0o@9ItPD zpCKe6Ir5@-DCuDA4apZxsLA#WN*&q~NK#9aHXKI+T*$9*%7P-7dBE-hdtRRCVb3{3 z1CN8=UtI+|+PFQs%D~oX=UZarwvjH%S?JMrAg5Pof|fWd)z1SlTvJ9-A0dIRif z?}>dPTDwY_sm&JH!uh<6Wu#TLF{&txW5(UmR7V*srAkna?!w}iWTDO(6qDzP24Pvz z6Jvh|$+2PY*iZ^8$Amqz(R4^RY11OYGVyGT-@(~F@>|CuGyVEnTO z<|V?~S(m4=Ym{}YFi10L2VC&?oz1kD<=QcI}-#2ivCslaE2RH)(Dkv1hC>f0ngaHUN?60nsv z#|PbEUA=EEgq8b9Rqr}QnI4LICcJU10`G8uEp!`kFakox+enKn0XHU8hzzb7UE%*>3L=vw95C!I-#i%){p8~AM|1-ut#r<*iRHfSwKRPnc!7pNQqML z$|@MuGshuLMB#>ulEt^20C8f;@R?uKixWHKv6LQ9M4Z%Ncwy(quz`4~6EvI!F4^)O z7BoK-MK)(49lULygXtT{Ov^Witdz)uUL%YS9c>Q`5&WR2Ha8a&5SeyWz#(p zg4kn35G5ZUmZ(zG^L&vt__FfJxAcjgvNz5uN^gy$=3$AS;*Xfupoop*1W&SGQ(c4% zQ^)~cjNQy@W4GbqeKX(9TIVTFCgV@dQ!v?a+#%qxC=fLK30^vRp`;8Xxo~~+E4<5y z65ywy5D+?`UB5g{hsrcQ0z%JeS1YMVdY#+6K^y+`GK3_RP~P)}hPAlQ8vbi04fbWE zy^SxAVi|-!EC`!K$PmW!$G-l#h768gtm(W|h7S&K8f9Z5Qp7PNO$`-nINb+O$8DAn zOf)t%@RnpKP7;%eK z+$@(zMt6-l*9s=M1})bfkuE(U!y4#e5S4aHR8;DS*9-qIdv60R*Hztl*1c7)UcL9K z^h)nTUr)xj%98zLTUcZn$&G2^`=+0)dQ#$1a;`UgpKTk~!eakCNq)h#WObk`^ zvS^ww$ouz2)Gb)f*U}FB73SlPQZ9Js=y%h6IbQ#3Y$3btGR4CErZNkY{9ObSl3YD0 za-3|4$5=N0HqE9WVw3ca*+N>#%_FcePqmY?hiYF5pzFRp$>ur@YR=ET(VgpMS{v~E z90Obe2K5w>Orowo5OwYF$0h2*4KXy&PG91BWg7eT-P0kX&T8&7M!jRK66%#Ft3+aO zlE2Vcb?!LG%2+Fhs3Cm|jl=r))uAwW^Yd`O9D9?`(8go4J>=x1N%*l3)3KdJ$09{m zO+f~;y)#?5$DFVefplILM?cTQ;)*_joEO02a9j0S@;$T#0eoRM^Rr&oMXIqC)RMTW z76ES-e8S^tkQ6C-p?}}PoEt5Ja7^$B!ab;dOWimp!hH)(n>?mz0=ko6_v^!bI2Uex zi@1+&B;4Of?l4dF29~J06_^_W8n!F@(5P2f^#G8|D7S*@nV-=6YW5TX85>1OWN!ki z{~{))s=+Q-^L~;`5n!o|RBA5?YcN}CD zhx`_?7>&gT2;?^`9x|y(=0xg29RCj(#$q9v3)ufx)c zL1(iqMsd0z`|kS)0Nm}5ODwb+fV_4N>3den94g?L6z)og?whqLr|;sk3HD*e`hN3^ z0j^uT-;0EWswKfimJ(F!+}T%_1iLWZLQpT;^4!im5GuoDSRc3`n4C{7mM`Y6~2XG z@iD{mvSER$6J$_d)AjCUm296;YdglWDulIIc} z$9R&GOd*I821hY%ET9iJD3NtF`C|j z`2zD(@x${BmFjr4T-_EHWFcF`2qHvbAFK@B@1cMl`hFx z+-fcm0x`%$5TbE#qA~KQkWCQ4@1CBEQ0b`jFjJgP2FRHbakL@S0eOOZ(`3ptTvUf1 zcP%GIjP4v?bfYxV7w}zS!wBEq;(T`tsNigw2;UYRP;OA9bHXH}$bI#*btZ!v>R}lD zEqbCaDMk5Wa6?WVr0#p(`k`75+UaqL_x3B5A_K-a?A-Y~4RkE+YYXW#j1_eujuivM zWXz(Eb&(#k+a~11SQoSQo!LsZlcX?$}(fzs2OqGbjZft@o}>=XTr>i)4A>M>%y;*tDAk-T(n=FO0IvPTj^srE^V!)V$^NTaHDr=Ve=j=C4yMx@oW z_H}i4jrOLYHE2LtY~wgtqPBBFFxo+2)d(@X`q$~lfaWWS;ai+ObQVotzccP->LA&q z0pGkP%I@4FDcA;V`EK_HmbL4X!8;|GAwU}F2YDGD@*@Na!c8h2Y-Z!JS&Ulo=yQ97CUo&)K|jKEE2$M`G4m~f zKQasX!>XMoBh0I^8xh(AJYsv?UWklU(9~z9rzz|(wlvmXY@}jJr!)SRHf8mj@wZc1 zmsD8TeM@YNEXyQ~#@~|Oh<2YpGUE@K_b>W89@sb_X9sbl&VFJ#ecrr@I|b~q5t}kR zmas0Vb!(O$>36fO3f8C^jDmdTCB0qQGBFxf3z`ii;v*kTi{w1qYz|2i(?|OAlzQmC zC`D$G^DX6s0KZDJS-Ug2aMEHreB6B(q-7yK&lP~wWH`!X%O92wC8BrBi=V13nrjc6 zs^d|?luiSyW-y&j@nJC6xb=^Mxpu049&?QaJ~E96hN>rTXFUqRt%2eJ1W4418ii>* zB=3>LJXFNkn`ZGA`i;zGB7HcZbnG7Miu8mfY6CTh7#S%Np_-QB`Y}rnliC#|a;V7` zRNO4<%67?i5pKgc0BKrE&sEHBiLe>B)sp6XrC6=DV|2FDl&-(=hOQTJsK z+VqTf{be5=QZWiP9f3d8b!r(^yn~W6MR&m<+z#Dfs0pSr$h-Wd&sxjx0;pu+;;C`8 zUSJUQ{J?D#3(Gs24a4^>*|G{|@-F1wg?{mrB!n;-rMbPhZW%n&hUfKhb)_`-523ka zFv;#s;E+(V1}=h(iqP@0WT6wRhoHZ(fU?y*#G5^j#}R^8 z$Fq45j$vwmPuJ#-_o8^Q_xUXnHt~{ewJbpE8T=Y9T!P?8kHGvg;6_bsm^sL?re+N% z+?~yO2PKwANW$Wt2uPY+8%W~gH%Q7%VPP_n1?Ff33COcy#4fAPIrkARm|3jEf*FaN zrJJC3%*k6kMC@yNWw%~I7kzQB0p6gD;DUuU>Zx#M+lyv)TV5wL4k!Vj2^}Mpv6^` z+^MnZ_t{ona6krTy^A0tA(I#lY7BLg{M4ehova6f^AhqyYAw^sTqt}du}X@XEFe!U zXRM9_$Xg{D9~~B`_)23c92oKU;8g(NnNFHQq^m3c-E0nR5{ZZMFQI`FfJ~Ca&>f@I zB{(gaAd;RE#;8#aNO3HtPY2RAX+=y2BT{AyShSA=h94Lq&WAM~FpP+cV~( zx^Pwjm#8b(Kv#)0tJ8jfdQsScFF2u1*C}S)L|736QLv4ZUj{%m3P#BZ$U2&V$5izg z%7e4A2|%YOCjE|i6>5XLIa--A?;@is^6z-XkewVn5!&2P4j%Z#D&_O!-Fcdxr`|=9 zfO(MI4M9YrLzyV&-9`E%@6LnQ!r)&OeOdfUK{Hz|n9?C(O`-_nali>eLxJ!gZL?)$ zKMKj=Tt+xgg&Z+zr$fh^Flzzch~9W0M2}f2qOW&3B4IPO zC(du^mF5?Eo_clGp@UE z4=u>Dh+Lc-G0jP|cfoU`xj=+D)`XrIoAxj`Yxe`*H;{bRF)?J1vu7Stw*!`-cU%e| zm(H`&eNQ5U#M{sz>_ye@uICTk`}cMCV14ZY3xe^&QI7>3mm0>)uFG%S{hB}je4SSm zF7lV6lCPMYnAOpGAhe*@jp)*!Qy-@F*sBF4J#&R@F(Ls$ev;1ozp7=`M{<_MgJC3Z zujfzKI8K(v@tD>Y!b8QLc(r;QyfiwF$5I=|NcTt5N2c-Fsn-~M7-BFgLPJos$+nQH zo1f?U#M>tksuyj4U^poJ>86IGCutvbxUj^4{GD~AK)M!G2?orMe$*(q8m?&L3B3ge zM)~_IVKQ8jf5oA{Gv5NMqao39%=y?-(%;{uWb!S41ELI(Ae~EgHKMH9n|Hw$|5fRU zCVoggwZq|*V2*G@mSDnb0}aL>(#um=7KbGdi8*?Kdk_&cwFM1fhRQLe7>tyB9CNH@9=*&Rh%Q7NmU0J(@ z_XEN%nP7wUB(8uvEuxzYnG)_S+d$1yJCnRls#r2~h@8v8$(R#m*`xQ8#lW1y*Dax; zYqzSx@Fsc(<_|JzUco?m5WcXHNWsPvXcBS>#n!YYW5y@-{3z!N-JNKyMD#}CIWdjU zyb8ce-k+M-7$VI+Ii^oiUtS@#oz{#G9qG!4NC8Y^0*8)Xyz)9BVqRYs+EzFq3+*wg zh!}7YTHr#7yTd?C!?X1UBNH1N9bsC9_C7L^6|rnb>)7-~bBIgW4ntT6TX<5Q^e)XV zfd^c&*2}25@K9V*@=)-+cd3j}c_^}A28;g9)Imq%Q`@_wf$|~Ko<}n6BWoy|_CNkH zU@X%cw@D+IqZ#$c3L<`v-;Q`7po;?|E-!RO`aWQu0-zS%UDt^T3899aFl zIBxTc6*&E2G3*HR7wwQ;<=-^E6n^W1izL(+z6WTezF0a49(yf6)*C`sYM#q>L|Y_a zFdS=FD5_^m@nOV1qgCNI-(F@hfqpQ7REWK^C+qT!vMONV#u571I2uc^k#@`GiNE<^ zE!tFiPOWl;H|CM-q4PzMh)E*#vYBm-HJb`g`^(wRp(5J9Ja{U@aAay6m*e6wlzu9?V$hlu zQOUab#vMR{_N8vx3a4gvMR;R5TMu`aXZy-uJ;qmRT8mnb z`NAx;Lb0@S8ZpdZ1z8wTgt;i$E|En9b3qi-UmoHV=)>8ZL%-{nvSb0bn(o{R_#V)F z1iPKI;8?k1_Ob#Pb9k!2Z0*Do5&C?1Tt?qXSR0Tv;OIF~bAXWpM6AZY%L?4tQ=kl+ zYn7)JfB}YZ}TJ17Hee zerhqBsR)voMr7i7znVnDMVc16nVx9bo|Y7vh%1)u5dtV<$w`(0LS{~@Wy|d~N32RcJNm~YNmJ|Dz*^*1)>Digs1JfKYvIq1-oF(8XU4Z9X7m%Lx+F^j5ZPL@U zqj{-YEcVMTmDbghm#}9M7JnDY4PzTbCISx#<)t`=;EQGy9S@^(3`q{ixUyZPbRsls z*^~57CJ&#Be>g)~nv+EJj#quibB&G;JDZ23`7~ljqzSqV#E67NSt$bpoH;9@NHM!D z8F@zcC;@4kCy-IF@z|`DaLTt~TbF}(fc)c9?zzI-$rmP8pMyRmd`IqKVkqW@V;x|u zk}C&!pRL{Io8Zx#Y>9m)y6?rsNHJj?{}@c7;=4`b)x@553(tmPLr^41;F~-0)U+1u zS>AFJPeCdo)2Szet*6qL<%2QnMH#m2ldJR;#!E)1ZNz7#_%t;{<)uqupmvM3p{$b6 z&T3TrpiPv1C%IHRxPW(bUY$07gD-<8L!h$1bEUrWM(8UolD?c0R_#)o$d`^f>`4UE z@-yd4cD7*uSgtvPq)<8P+FT7amrYagmcZ!O$WpK^0~OH&s>%$ou)Np?>dfr3 zJ4~f!f=F-6rlXI8fL)0~beFA&bxRJr#;DsBZrN8?x2tBw=x&=CGP>K&-2r<_aFg>* zRd$u>485y$Y4ynO&=T_})9kFbDEDYzsTaL#_~wjPE>G@beyd>dqkgLany=TxgKRR; z?HypGPgZ1?UoGlQv;ETS`BkH_G`m_Vzs_1EXiX8_$gc9D1EGixW>*1? z8{0l)XxTO|0sz^n-vSo&OzKq-YsJfentuYYNYS?D0jie)O9i6UB?bkjw_Ap)@U~DH zo!J?`Z6Opa8=+#90|*Dhf2n8J9btS%0s3{|2tzA=tsh}j#V^9X+Xug3c-IVm(P8>t zyh>j~W_iZ`N~d5A0Jtv03(#76S++IU`-BYC7gHkqFCeJi_@1fbFZc{~8;4~cf=J*gN^UnU6#~M1Kz|VuK~t9KM$(C|x+pCx8d8O2 z9GLmUTS2w7{u*q`U_mGfELyl@$Q!|O6ijgMLl$+3c)vUKGU+4{m&H_`jawWL zW#BX3msZ|Z_JU!mTr=!}W&1;#64t$plM;AC5NIgcv6pOY5~>(7KTCY6^43T04Tk0% z(a`!(IChJR?A9Q0D7a#`o96wi*u5wqDRswD8HuC&XMgQ2O-+p`NX}1@&tR?;D&=!c zaJ@9asU}$B4o%1=c;s_)w=&iGe0YKjDyP=J$q8l|qfIa3I(wwmVt#i&3^5}ijMoqu5C(b`MdRYtk+__#oBmYTOV`;S!X6($Pl{PSh=3 zSNny_BvF6Lu=hE_pCjyr&1)Cc&~ zuZv~O2bLjV3!}PYoI)IZBBwxSH-RY83Zu}Z3>d{$tW3^=&{$2R&cSW6<-j%I6V4@S z09maU>gW(2Z4KloJjxc(cWsL)aSh`SbhaeqqW}7j0`B7 z7iCVF8-iad4%4MnD^!(;gpC)$a2>O_)s{}KZIUgVsm!5&2F}Wry=OJq36@hsj zSt};7j%YOQ5;T8}iL1P3e0Q<`iT%J2#z(3rd_ z5&DEdQCe(why2^m8~Vi1$-Kp>>8cxA)z4WGoDY*eGi%-6Z>?pEcTftJuk~3nto7-O z+BRU3?Euhw*Rm~lXqx~%p2<3Q^x4KjkGHTT0a|ZUYd(O%U$H-{^4a5rb2S9;XP(<0 z)%bzRKm%Si1Yb_;oiOio{&^L*@l!@^H%C(O=m}kFxd}sI6!L_8tAzjc43@%|o9aX=77ae0OsNHa5b4G$OW2~I zs0;$M-2;vn^@K`<%^C;~Kyt9}-rhFgzTF+>+&=Gt-ZqnFXA|o}E=pztX)O$5VMssK z@gnLD6Gi3QHj?}LS8XKs_OHygb5Fr{9=*4}J>#c#fVheq+B|CgKFdZE_L(+0t-f~%jqwuVzN?bN^_A<=fhfgK;zFA2ENMf^r$-2(B9fpvu|U|lt^u4D@@2YNH3 zV10}+$(LFU*2j`Q3+i)T3O!O~3GEk^MX;VO>KTCbbi%hhh+tiz^Gu*DPHyS`ih=c% ze|iqEJ}khOz`821t{7NXf#zxntPj)XzWONxE1!jKYY;Ru0PBi_mGdJ+q}wv#UZBxc z!NbA3;!j8`k-IDOIhM&)UebIG`djn*?chTSF)&{*3k$vW*njf!*kU71iQrclKul9C~JTg=f91 z=&aB<>342{2BGge!O|5R_Ny?!1$^T(O!k$y;kUytx6xusRlpgH5hB~v%hRhdGXWa& z3M8`%!Yb?{81dMfbKdd;JuyT1o0ayadFLC7_SL^z01{Am7(le5f)xXbXbu?BBLj*Q z2RV6#_G;LGa-CqZ5|PPZa@_zX*HwW8ced9w0+O3b5CMaL$aaGWlK>tFBC9}TB|rp< z5=3-p7dvr0pMfpfKhGsuKhb!_dgaRS-NyYlHYEA|CXL5^A1;zlB2Ei80~^_!RKzD9 zMK*%5`(cP>Jw1S^Mm3RUxQ0~Jbzv6R;WO;votCoyx za~=*kW?L~DcbGQ>KgSLetuXXuzFxmA|8CY2{$M|q?+9b%#Y86*O0iR1O7%WT_2MGA zsq-YuNM_+pt&31>_$__lP~y!%nbn`|*ySlK5v9*dz+t3xKvAW#t8DTbWUZw}0qg_G}~ z%gAe_MiG75QHnnO=Rd((*fE@NripZng)h7N9b}*v{0rt5E8?(YE!PZ>pyirLRJjSz z-&$fVxW8C(>(9)KdDP8>B0b3jB;lVyoMR;T18Qog=r>}zQw^VEf6Lq(Lt&LGopt!`s;-9W5fU#zXqPf@U2luVW_-nP{bZp02v z7Iq~FU79Qv&^d9Ep~*T6rVw8Wn=sSBP^;x;j2LEpQ)SjiDr%5z4OaPXzn0V*Uo8?= zUdavQsBo;6U7q#hnA{}?t;%Rt4@;CO{DWTQ`1QfWo(H_^4~+NtL{q9zk-1|9=#OK; z$-`t>74$LNy@rABe5J>uWyUAG%W)&F_4h(4I=fWX1MBxM4EWI^KCBcu>!5MicT^QO4gys+MZPZOdwoR5t0k@6^O|yg;)@6^g zW;{ZM1EAV2p^v5P*^h`~_9G%7KMb-Wb&qhaqx4jGX7@50j|)fV9qZwk!<$xq{ZGL9p|#Xx5S5X=T4=nknhW1WF0bl$BTJF{6l<2FdB`zML#5V~j5n#uyR#K!awD zJv);Pi-*DD0hbU?D$?J_Ma5}fIxtRlg)c_H8_Gy1XQ{<4-{AZseJJ9b-iOMjW5pHH z5(rM!aM(|BAZ*;;FsKYq#{eo$_)Fsxai#^R9leKnPyr0f{ANVC+}g%4qhF6RL(F1> z{Q-;t$V(`J5?DY*?6aw)ure}8>O3Ifj~s*3-|=NNULEZ~^rsL-l~Iu^z;`(pQPpL8gAUkpJ`- zA;QJ3a(vRRErk)P6iaH@XhE)kV;Z7RH;fjmGlDGm+qKlvAhCPMJuDJF2JXTKNiz&# zY8Pw+sORsOmSUnF*6C2%T~0jVgql;Pwe6!a<@%cFQ8lEUm~%fW_0;kp5T_E%T1K?a zxJuata9!Sz&syzhuTXoDu|>W!v{gHYPS^zDg-F`kY*@8x#xNkZs1a$iYJ{U^0=Is% z>9^8#fR|!Fmeiy#Q3Yym5HB)(@l>CmZ$@oG5W*c@I`QHGiUb)=*)Agq4cO8xq}Ny= zVFx=v+1@BbB7E_#)s6zDgo~2$r8do2lGYNYjzAlojPq#eh=$p9x3XlPDn0~0Y9$(o zs1S0D6|fSmh!qqo(M)x>p+|5=aGM6_y1xikNy-9_>vF^h%s3=Q&?HIQ+QQh=x8P3= zOOTelnD;t_#~wKs^^1jFYJ8whA~7b8+3w)|xLDKR|=6#SaK`F8t8eIM|1W zY8gyH+t#e(nP4Xcpl{nFc;>dkfl9bsSLkr3jBTxMWWPa$!&&LrS!~4 zrq6#H_W_6rL0PEop_<=xFQ-|oMYBlbQbCZqFwZ6|6(oVgKz1R~eNBpq3dK+-JfMpCb>GrRz^D3$?F=!{}A%w1$1+|HK~$E+xm z-sAlOJFH)<77YDr(ho~RDpp3@YHfoE7Hq&_P*gZ92EI|*tC7sOavz-FV}?DziJc&d zt4;yKFW)9UK`53vmS((ZW1N z<*!Uo6$EOT`jvtjTo8w0(-0UuZp>14zhtBrY$W$6-G8XdrTi+mzoxjUN ziKykSd)Up^w}EL2yJ>JFvB1K`tS!Z;?H#wgeL-0=4uL6g=Q6-n(d6u?6-p2cA-iX8 z*x(qMnB$t5!Cs{k2X~$Uo_jmRL!xRenAl|RR%MS9jnbkCvuRmMiM-n^^}Mf;I<~&n zRvW{yG2*J!K2VPk{FfWzL9TtSlAheob9;N%CT%~0PC%@(Jyn@xs09$+WBaqy8 zAcWwSB;=kB*=q8$Zun>8wFGD!^X#Nimz_|5j&0dXldwkEnhbQ#j{Xfqx{U3OzI>T{6Fe5K}X4N|~*HBxRNzDoh7L^Dcn2Qu4Nb`Yqy- z<}L~nv}KSfyhK503Hue@`9-Q>s(X6{M4tNOs|zF{ z5uYoMyO|w+d!9M?up8dNZ_h_J{21n(go*MyluWclgaOT#(12W1a0TF__?}pbcr%1+ z;9%W8a%v7~y?iUhXE4C-gAgrRV$%JrBLIP|4XRopqeO&PE#nVRhJ2RK$R9ilSfNR2^*x8 zHKJkl;`oE;{37M^Yeccyt`vhu=j_;Gow{2#Hy-(KA3|V~49O;<`J?)QII$lO9sS6; z)*Qt35+rGwVY4!3;JmY0pS9y?Ip6e=T0Gwrv_S%vwTboow_hhbqLb_H{k6Ft2Glwm z?mDXh2@N}{R6NuPWW7BHeV+(0bGh4wxBj-omTxoHogF!JOV@lBl(E zXpuq;&RGgeCNzcc0Xyp0LoO*lO7?TjEa`O&LtAWUZV3}!>{Y1KZb%>V8*?nzWF6GA z+F^t`_lg}V?NzbE8H*jZHk9>BZfeMSeos z1DIH_wsotDf0z~g;jjy30xH|Uw7PW+mU_tsn1mdIM&S-Z4r&B#u+rgF;$aAT5IZm} z-3vC%FD7iGSCg`4M}PNIQge9BPm~ilGVc{@Uc!0cxB>Y1NKZf_bWr!SA7rku$gA$^ zR));*iv-@O*v?@Okvx_{>h$mtG8C4Gir)T9Nn-|@S>S)D=I(l=8f3spLt#a%ffgyk z4EThl`t%zmc%4Y{kLWyWQ4^0%5wWw8OPlWju@lUMB~C}0`rCeGxD0awPuP=*Cv=JM zf{WZ`N4on3MJDh2b!~{q&XQZ+3{=*T!0_3>{{L^`rk31#gy57WnI!CQoJ+p_;7Io0Sf)*I)+!ggAJ%0L-$k zl8AtcIwk;wj&<_KN&Z@NV6wnE+oIcfrIOBPoHNXNdsexsgWv(%z)E$CUD0Oxy+llf zk|h5DE%O0`7H`j6p7PhoXB4k!6;v_k!j}VizD|@ZGrnZP7B4YT7WQGmt`!5FT}c3ZTxtoS!E5iH#^@aV79-{(g?m6 z!)TuW0kFq0gb6j4qswHCEQC>#F|E|+w%^n=xr8wSMdXll5L z)I!M3iH~XiKBjpdSxUuB168oRSXi4ig7voGqON1_py?^)Xn~y;B>zOf)bYQQ(a__t z8WdH19udI0Pn(*5OQAvdZXQfu2yh@6@m&cn2*<`C`eoSNHDA2+~9p$5T=ul)ye0d1^Uky^=Kf|)dL>|3pJ;pxAyMzKZgU*RP+7Lt$9P~ zT5!Ao?JXdgA*Y}%r8||!+5PA zK*oT2K7arxh{9;f-4C4?Sq<<+9DE#4C>``1)Nnje&#UlcxaZ+z>-ki3XE679bvSF6 zo6$ceB{5EB+7=@oM)z}I;~2WbhAM{vmWRJMh7q!f4{V(`yxm)oHRt)`)<>5LyJ%9K6?;!B)gg{29ywF`ZuIh29xB{;xwlRiR$d ztU(_o2Q=QY%TT;^va-+QhY#=W7~Jj}-1?N;yFN2^dwC(dPo}&(or0=`HDa{rLk+VR zJ9wgGt5XWDYONR-%sq4Xlyvt)B}{%xHRM#h*?D~uMpLlJ- zL1FvF=_lRR+2bsdY132QkeE{3LObh7={L1_crJoD*p)dLp)`l6<8%)!6x=yCS@C8E zzks3dB2Lg+pR;S;O_C~}9$6`!Y%bU+i`Xdn=zN#kh%g#y!(p^BbsPUvq?>O0hQaMd z0k^kI4>tve0OZ!1GxZ0@@j16O89%Z&p9mlaOX{7&SmnoO_ zSr`w41!mZJ@cVfn2DJI(bTSLa%dR^z3bV^fZM?C%4HXA3;|ZPo654qGq&EJ~(Khya z8(_-e&Kp7-BfbC?Z(=z5+!w??QU2aq%)l>9KLZvF6Xq6%Y2#U)b+M`~GquZmdoLZ+ zGUX(uY)?EK*v)&1cl+Ww;f)t#8W@3OWA*dr=qL0ZI~*)i;yeP)Nm0BH*V z`f%sXfdcFpI@-oR zqmAG}E^!dr+EZ%lwbgB@c(a4k%Q#4ZsqdTA*6jrr{oM33L0+uHTd8xH|79=6YpM}N z#df-ib*@116Z9EEg~<6UJG`_HRuJSeiQVh*#_9XXR!QgX=dtR3s<@(`KX*a>{MqUI z$*K@}xn?9vh8!>9REDTrxKsg7g|o#N<151`Mo?SDo1JS%QQ@r-6-F83Qvva4)jw5T zwTd@82dA$3P@Ks5_O*lCgToN4KGw>6Cbe?kSS!1yZRHiyw{mo>l}k#kyu5lWDz1Xqdnb)$9AcN2T6tM@D=OaX zyk=}H6I*%hK-#`~demAdP)lCy=g9>@1j48L2k*Oqs{(@3F6$L)2G}HG~15d@9o!5@d zG>Stt^jC zUfrOIH#_eeYw&}U=KB4m2LHi;I&X}(^X;2P`NDOjZhWn}8!F!HJT%sgiJrg@jY0SC zm0I~~bt@{~?0k6oRz6Z1?6Z_NLe_HxOGGJgcv0DX6&aMK~{QOES+uNU8?vcgW`W(D#qG~`cCPMABm;&R!4Ap zd`;hJ8yt`?(E{ufRnca2tRueG0jk?=LW$(uG%1lRbTgUxC_cstB~r!ZXm8*gk850VXOsigQX<7sf|bN= zc>Ak1ylOr}3q4No+>pdruT90qpma_GhUkI6KZ*jm(412a)8;`G9YR`52mn z^%%cbSKpG96zh@5{qI-9M8yNe8b_Eb){uC0@P1ga4kP%l(~rQW{NhINAFD^8;))S` zWx5dr)#OVyf~lhTAvR4mR~0QhlC*z^xL?yitWraqksZ2{&W&pl?D-rh1<~WKl%1``xDjOR&hnQzj#62{^JYo zwr5O}Msq$g{CIV@Rb0{SFI-T!|M1(_?O(6%wu&pd{YMwn?ME-T+lA)#fu#LGz7E*- zpDwtM3D4IKH?Hk_##ec;HpsDXuo3&?RfvCu-!H-L9k4?x8g1Nc47$N2{kkm`|1 z^TDDR&IbpDEH5`>!Hh{NMbOIgQP9pWCGCGlU4eEaYfyNnPrw_PPrsP7@8|2#zfVrz zKf{;d{weHN?ro(K7{K2xk`zbq2St^Qft5n50D!U-Nk_k_qv8QM@X+H~pJG-}{xk*b zhZG_bow5&+m>6n0nok(wCngRtv*dDZrZhYiqe<0TWY`JxJy+mU7|?9Ux|~(krG;4D z90o*!D}S?bKq?*#h_#76AW3e5n!^K9P_xk8ES)Y){KMy%_-XaoHzn<#qnc3T$DV*1 ze>Q2$whtrvb*quxH7XdX^kQO9rgO81aG-PdL1vlx?1pN-XKo)Y>Qmx4~K=uowJ^O>{iw5 zt6Nd=X6I#NcJh}dwQ{e3GL%fgF5tyj@MKkuMa7$)qhqc7mr1QiRx?)**$hO!Hf-!N z$5WYWuS(jI>QVBS&GCCm`wGH&_;5Lna;VQO#IBcNolz?tK~^}AT$ti>(-E*3b$62emG4ufJX$f9<& zU$hPN7Q%s004%qyp9U}!#9nk!5PM}c#8mvZ9AfPsMq~xte9zFlAq(QXO_kC=2!$7&Z%RG0Xv+w*C zJInUnQ*xQRDjjH)4x;x3k9pT59#ffR@Q&%n5O~Zmz>9hOm+c=dG%{PTKAolI4k%Qs zDIxKrm5`uxvtxVk;;bzofx%VHZA&SV+y<<8+XZ9AFtUAe>e+lr>YX31R0=5F?69KUOmc*Y`!2B)rTdPnH_{cN(Y#TR_62gHiyZ$U%nC(|LyeM4}9e!y8i=}-KW%!C=F;By8qTm-7jTa za~q)l^V4@fq#9mC_rJfg`;_XK*+@m9`&g*eUWrmZIJdzhev@^7DpyzV61j70%=jHz zatH|@W&v|B<}ExEjWS9Hon}#to4(kGGJS&q7c4WGzD1|!bsL5#3lpcr)hkQ&a z8~;%yK2bU#he9^~jPQwHOc2vrO8l%O2TS0YiYwFMy@S3Nob5U7n+wRk>KyYtEo8q- zG30{0R z(;*p?Hdp2cDa}<8-i5Cc|es#^ak>T|lRwR@rGvD;N%buW1-gm@o_T6zFhXBtEC&XUQdF zDO8jWdRZu|BxqJEtCeg~ajEIhA*g6mqrOKd>X6ima zrLxbIR`mIv3+nT~n!3+Hzn;3!Pp<4Ur4@a?d%8Xc4E~qu^F=8$>+O97$N9gf9XV3S zj%#+Eq2OM7+k@49|6`@Q2;>bjXR0>?s=PSDK!bZg#ehHt?ep8t@gK zXw<$H$TQi6bkIPrvH?mfY}NF-7eMClBE~>aOk6hRYgv{*GbS z^u;;zFL9-F#FtO$V2Fh)zjvXY{7W^==(zbCcjOlwZ?(ORj)bfboYC=CCm@80ocWt5yvL4X&{EVhX%2cDqh(PHH1tR;x2qLy}>9)?=}kEv@3?766AuC(RQKb^Xk z(GfM-Z#niw`LY)`BAqW7Yx&-(YZ)Dp9|3qGY#1o>*Y=is3;DTW776KJd=+i_`oG}|G|cH5FuuBUDD8eyNbc1HML`y3%z20Nv7e5W*aWYWs_u;A40 z!gh-)4BIWjGaBaW<6Q$&SV|u^Necp3k-8Acqf^}4sTrcs5U%P<4=HN0Ez-jK{;B!W z^=auX-`df(f844^3A;5GTRUodM=`&1ZM^ese~vJ-_Bon!=o-tz+0x=*mHmwGO?!>? z#A_UX{2l9wzvDHQ$15oc)}MHd<*~j=*GcbMr_m(F;iVo!j%m}b30-EM0mu}yN> z!ZmBC-|U2}ZDs4kxV2+zY1m&&>OO3?Xnlx{jR&JXV4EA42hQR$4V>IS8+$fB_5+7F zJmCgdrCO@k!L+VZDzDXcz&zJBy0$s5)wo{=jc_It`v9+}yL()`C6WdNk^Ak50{LY1 zH5d?u9Kh6K$3`OhiF`fUzu1PW(HBFnGpx};zb#E>?qa|PZtbUgYCc)%4R)xTZx^o9 zU9v3Q*nKGFxI2yIXFmFnpXjDz5_SFsn}VxRPDR~U&je#&qf9X!mqG`5-e9M0JH~`3 zs)FyrIf1FrDB}y>436{35=nuSiQZFN_+rDh@lEck zYa3q(qX3z0=05-!z1d(dfBGh}D0cE60F1M)0>HZG1{h#Mlv_0bEgZ9EKqGg|fX09Y zw0KmP0Zo;rH%tT@Am@w?L0(|9|AnG8HjJ%nYksCqTk|J8^k@x-OYEzYOcqrUPM3)_oji(3;VKSia01NAZ z0^#TD>2*RxW7c9=bVyG{yteJYj9%HJ(?%euo(|6u=X7>B=K{bu_yLB%yUq?9*_^Td zQoY`1wL4D5R>5^ysK+|j^+p^c*|Av|$+o+~$a;t&aID$B`T@GrEFh2LdkpdsBX!0j zgJYA|JNl?_S$YSMZ|TH{FE}Q}Q6cCwG2WZ}J;Km!abN*(nePGr1PzZ3QFY8N$MZd# zOB^0x*6`-p=~zHlm+3jC#w~q~g6`KIxC0Ztbqh~goX?`(X!CC_^P=u=X*_(bsp10n zvSSM_Ky<7QQGAxA8>@xrc+wiEj-ymgDdPx%{J#3+|gA(Nn};sR0YY4 z`rC?jV~2TKF~;rIB;U~C9U1TJEIzajZy)RM_ELv;>Fd^ocX-V^yjB5M$|~TxU=7g} z-Q1n=&L!69e1z))-JBnSD;sVXaD9^YLcfHslOvo|-{O0=*v_7`2Ey#jwsCy@93#)R zuVuS*NY}Ek=m>{YaeCq!^OLQt^_t>P1riBg9MYO99bWF3z@R)wt<+bHJ*fTq6HS<|E{H&wq*GiQhNruwi;_Z?HEdzV6{ zO?7xTh3eRZ)K zZ={{pLY!)*Db);Jk|ob!YaMP3*LA44)UnzvGz^ragn%`6mOFQmYr!&$dE{e(Wf=aN zK+3tqk@@>Jk20|a^J4hGBy8nQ*d_vylR%DIS@8a@Qgfq7Kt;uH$e;}qJ|hAFhE zEv681Q(xnW^=uTcDp!08TRw$sd8ERcPvOpD;$U2%3)_k*>~a#8cWbVg%+eI9&pIhl z7d(0zc2*o|-Oy-z#mwVLIMVND19Xjms0jhK0fYlbdOL6t>V%4eIWCN(t-vikISPbPUSplQM zU1L+U$`tK{x)MndV}h%_CVY=!)5iB8j73=7_S^c=M(q?wVse|=PQ~zc>X<&cqyzJ$ zyrq+5siTQuG}qso?UWL~mj>Vu@O2QRugaw}L`|cuA5;#FQx%^a?%08KhryV;limuw z)Cns(w^8ReZdc(pc$!P*@93@4+(Nc`D>~1CA5`<@Kl=NQM{CdO?|^~K<#*pjY7z`^ z{&2RP4J7-m7xmW=W*KcK2tK;MM%7KojGL7Oy@dN(T9$MeM8&pSIl0bCDcifYd>90g|XEI_P+tLz2FQ7Om25Z@aq7c5kr5Y{mW9;C+r=}^N=`;vNb*AH7qq8X|VG1*10)D?ag{ZS|QUGzlF^SkJS8s>Lw z9f)w)9}XyBuG2PYG^2xSrIwrO7KNJ1tr0HYrtZ*G(F6)m#*x&@EBrPC0VRzSbRZDJ zR#_I=vM?4{aJK3aqvt}(>hO#>+e$TsHYw6l{0B1gOlp4 zAzf%_H8Yjo0N=fFjRPs!N+(;nRhVE?G*2OiY12pX0}-tjaESvkjIPaOfzR_)<7!JW zd7w`}sy_uA*K28xSghTxiDXroRsqcR4U4nsFkL4GADipD*zYKyCWBft~%8CG!pJ zmvSG$eg*eTy@6fuHj5y_d%MGQ#lgNKs?-Mdrh|Pwle(Y|P78133JP{09uvCo9fS9( zv1nm>j{^%#slc=CDn^!F6WZxz2f|%HdrG(iJa%Vcnk)hBzk_-E!E7fYNN2rYS!fbh z6-va_h5oR=&>x;$oQ6B3N4c#oI7dB7s-Y>nz|?dnDZ9Ybbf=(4Npk|NgB}%C*D3U< z)k2S&FZ8Hxp+_wgdQ_`Qk3uQGRa#GiHKMZ?Th9`|Nb>qiqHM<4RJpVxED!0~_{E8S zy&Em4$5wAWxpTYEA=V*12b{;D^PGTf|b2=a7 zNB3||`+;4y;C`R79y5NQUAASeF*Dn0)@wCSvXAZ&G{HAGud9)GpoD~2}F}bJcpT#Jbf!andC@r+xZz-nNek= zJ}m-05aK~ip0Kl)F}L16fjmFW&qz)?o%VJ)?d^8j zW3x_YS!U{z#Y(LzST8K2%L~hBZ;Ag!rt_q-aclaSTQP?_*ffBS?38U_hA0rdkOEFB z2&lqFvGbfKewns0FiMaW!Es^&_RVw~JXzGVh#EKxu$U8rJQJpF29jPXsByWV#+8B^ z3t9%(OrL9VbYNbmWezZsz*X5)g&&2|DEqw7C|&%9Iy4wq#;U=eHRk@8 ztxAKQM*s=~T7m`dXEwx>b}wXzBdY_QW_}d6TT{p$YHnissKob~GXz)O3?&dt@s18X zY>JkOlEB`&Cz*HX0Ifa!NizKL34uQz###A3mwGt4X9T6WI~jA2p=&>f)YT4Q%e-eaxuU6 z!bj>!OAdBVU%)?3xRWP1^=wvm+-f?Kcz;O7(!vT2QmG$;q2qRUD~xkO*x(BSEh#?M;saF9QH07XW~R9vE=qsm~TO>oTi~(s}e1 z(3wk4NM%7rBQKuP@unq}nVZ3)b9F`(&(LKSEt>L?X1z|tq!}_4l08(;Yoh$r19e32 zh+F2b{N_Wo9R9*XqP{vaxM(-YI2bph2XU@+<(2VBWa9Y*e4u;+)uq>tbgxz_UDgLL z8v2rms7P0b5N9<2qX!Ax%+kqp%M(6S#=s)Xj8E(>i-OnoSqK{lSrg=F0P2R0r|s3m zTbl&WNIsj%s8D$q$wpJbGaK}W{*o~^37%2h+BKs%_5^NY6k;cZLLqF1 zVOrS?wZ!92TE1I`stOxru*P2$!pA+9PRUCMV<1=xvf$ivj2Ch6sGtxL2fqsn5pnPv zp6~BBMIlX5h>rIaO#qFI6S0{T5lSWs(W3$g8a+S&7JA^w8luXRk=1>VsyZMmpLXf{ ztPu%dASz;02Jg|2y3e2En58Acvq#dnax@VYy)#MDAx`L28`44p)q=G{RO@CziE82J zNtj9KcPtmj_$w)OJtKZ+4KO=9&^T{A8);%(L%uU9BV_C-Bgc}J>HujZ73+~St$UIU zc}bJ0{>!3>DX3n+9P2Tlb~0!6F9*UIAK^th1>}9=)PHa%wIh_l4DMQo`<(Jl_mL%# zx@HSDTzqYy9jXIvKvoR^(J{<*>frywYapfZ+I&|2P^$&30T62aNY@ThFpi^#mVtrm z*kxwOVzZnlv^p`6$ZSAd=vKXV#3%)$e`3B-zbk!dck~4EV>m2ExaqMp|LCj8dsw9& z9veTkaSgN7V_2dgyD!rC;A+FD0=ihNNJqmo1}A#c!2RfM#DQ^=cEA1r2cYZl?ioA0 zn{=c5`%J`l!3&Jvrf^DfKafI}^x;F-{wLz5DC(a7l}y)f^3OgF}1|3 zu+2oSdhbzl-(dgyZI^9u!22!r8z=y>90NjvBDw~j2sAm4njs8P5*uP3p{&{E40`2s zQ2VhIo7Xd&C;D(x zXI6;rf>aq-X!7zuDol`~f8QpSk*(PBV?=NhZ6HO50}=HyILo=mjg7nc?}abRX6{vj zCd#3j(8m&1a3poBA*2xMhLNY5DnH6R&A-I0!O~v+V}6+z(tdrOUlzQyU!UO@a6OM&&V5%FbH1PfB~UUY2-X`wy8OH&%DhEm6*0%b%^NY{u? zL*+*GdcUx)l49~vn!*$%l65-k{5AnnN3mmEUS=gnkTj{Cq@KFoPg*P;M=qAQo+M-U za)kGaCpq(lB|D#Jq_c3tkXtv%;#_8e2HA=SvUFov`EyGD%s(rhxUAfz_4Gimo`M2G zg7x%T^m{JX^=HBch%?#%k(`~wY`cdd`(o{Yz+bWdA*E6iXK4(6r`Q(CHu^v6ydw<- zAk8e3)FP(`Uyf>Y6w*iZkPn16^-LS2Xl=c95sWWqLXuNVvw8v#H^n9fK`j}Qgufcx zZN|q@!K`^p(gYPr64Dgz>-+*_;5j_tf6<-^N|ZBWG&2I7*frDco!QG$2SnNk_TBicqzI7f<-=}}>M!W(A_^U?JWI>2$OZazw#1|hk$`od2JP?(Rj z7F1+mt(be)SdryZ8lPV2&49;7%&MnI^g_3-1q_lg0oK&Sl1x8V#8|)A`b-%NNQtZs;$ zCiHo*4W2wBAgED*zmI}%+PC@*lk#07WQ%IwQrb5(p-P}9#UjmNg+Y_I{qNEoPFWO~ zu?!=P1-uWl48O$6k1)%1V>0y+7)^pP9B0z!K;R7XY-GYyN$&1Ikpe}UyrVuvJ}7=? z_As9UhT1^Y7Z>B@l06JSg`q+QU0)mXgBu|cowW)+HI{HaNC75?bHfs@(bcDU$Oq5+(yT z$c4fLI=VQhD7lktVWFl&rR`8zK*ssmIvD^kF4R*?a7C~_npk2h zT^&dzH#zgyy&6fn6DJtxl0RZ=7mGj=Qqbt*5fpA0O^(;`-|)paGGS~UOkWTmbA1%$ zqHKY}y~MCyARzX)xQt;4VogvjELEKY77&tT);VA?NJ)yY;7h>?cIU(DN?pK{ zsVX&2V|8XaKpN2X(`u)Zd>1SeQweO599N6Gq}?_0cL@Hw&}2*|feS{V{Al2Z5jgte zTRB75;^{Jd=CcKOIw?3eq2I8VDLzbET9D=Dn5XEO?`evOC1==NFBK1;vwU`Yn|=Wq zj{jlBm_&@t9$lAw<(D82v!q(;XDvgHr$s#ne54d0HAz(VgOTWg#)bnJMd%PUQAu|o zsUq48U#aPoB}rg9#q&bva@(v}P_Ty7$Q&TcEl>)#8);#ALJLB;kujvD7PeHjK&fQ$ z@EBGmv>@|EipzplFo!z?V7SBU6=1+lFpaEj6PGO*0y1a%P(TpMYTPOZxMa$ZtwaDS zehd@4fRD9YT$zNSW%Y3SmbIqZd(@v(_egh?^RyF2lm)&X{AJ)Q3eqt1ikUskQD9yS z&a;}(Qte9!wv{--b?+vcxf1|I6GXoC%AUcd!P?>->* zW1Pm6Tj6SCHiHF6Qe^X8xv2^)sdUwWn2D(n?dt1W(qvX%!be&8I53FBLk0#By>=dw z4tR)#Qi3(aIQiK?v*6OIu!m;o?zlZfX~`ZU7>3<4WDmj7;3AD7TL^v84hO@Yk>LF;>^>4*(h zQ}-*By3~Uxh3%M03y&6FCgCeT!(dUSqd37W?aXGV-HMAc8>o21qD$6UN#}qJ9iPLb z*#ga5L%fVjd>Bo2RdIDFlu zoOv8EdXVQJiLJ2%X{Gfd!%&F=hbO8cIcG06bQj)*Gl9OMWpzTaAKf`K)H5+db;77U ztCL=WVh1pGM_WY31;1AYzxe`WE`BS%(Lnqyx)ED<*xWyxEQqEbfu@saA*44%&45lw zGeA)kRm-xMj`Y={JI*3U89p*AVDv^u=;}@Ye)%q@+qgkP8-K zGz(QWEPfoI26h?DFp#An)LlVPZEo)A1J@CnJs^Y*!+51A;1Dx?2j{Si8N}D z%*rxfL*T_4B!<=v@*2o5&U&^MsOwA(dN;Z?HK_mwbQ^$C(5(TZ>7Z~xpnqxacp_Rl zSr@zk5Dez9sVe|NxPf~HK$!IlN(m4$duf^=GGGu2fkXj$F#3ctj2BKfBX?nV8M>h2 zbB~`Fgjp8^0@H(ydJF+;-46mO<`@;yhC8R>hEbZtQqWH>bg%?xI+{^0#gReN`#e@= zG2~M8xh|{~@fXicPc33=i98S_RX9OGm!c6`6bJbSK9>CR;+$OtG&Of{Df09d8g=OjMN+i4D_u))NTFb=$od<Y@K(Af5RqamJd#iW>21Nn zZ2KNbOYhW1`n=97lYD;<4UzqX?vb~><`+23{#v4cYHRslC%5<0JiU<+YF;O#I@7sZ z65U1#=c?xqn?s?WZg}@~c{s^G@u7#%!2B`9UY7x=ZbomMxxgOA`aGoowjOr7OPx3I zqkEEn1n}gUI%$X7hFvE#^yUxKQ0Iag8gYzqX0f@%43gFpYSUzuH%DQsTRdTB8aH?J z`i1oc*;Fy?4Gc3-DGYw3Pqit!#7@c9CE0f)(Eo~nvRVM8vi%7y(<4pcIe|gT%)G$C zZVI<_^7daFBW`IO1dfW?+w+%-SQ^g)!$6x$jy$y{iQPN$lv-^gyYF7`Ce70$*CZ~- z`6}*1)Q?s}ijv#^3DZo4YC&O9!wvSQVCLa7PB3?3jY=X?s0&7Dc&2HUe~RMYH!wcEIfbfxO|=}Off(Uqz{&Q-|db!JQ5KM{*G z4r<`z@p^g&IrGd;rrXE0J<)9EkCXNn;2ZV)5jtXKO_FaBQ@9?!P*4Oube}CbD!r7{ z1I^94=FmzJ(8>J4^bz$Z(CeZ4Y28OLWwQo<(X63Ti#cebZSvq(Fe|1`>u&2el3M`l z(hTMg!Vvr)lKe0rW;HEABo5@E!oG`7s~N|v7KT42cD$3`^Y}c%P{NoO%VH?$&T13* z*jx7aGwwQff!tM=gtM}x0x%*YCo=eFATn{+QI4x+-A-icM`p7sGIFATM~f%|crjto zkLGJvUa`LS>izq!Q96L*^_4KZfY(=QDiQj^KjHOO$LrbalhYy`*efSX8^ipZu3HY) z{x6-E~#@ex_M?{J-Q6eCZ*vz{_BPI@BC8g@a=?Ci!f^0S&XwLIUuqEJaR8G}Dt}9i) zlB)!A_dWPJE@clM^RN88kQEn@c!jpO8NM@Q)WK0@lgpRQuf{oR3so+`aP)U zQOIemE*x9wcwJf3J$XZQZKp1P#J|#=*po}3Q3`}wGaljoKr*tBNKMwSMp_@d-{>!H zcHUy|Bcl9$Y#NhbD@qCZLekb5;4Z>YfTUzxQ;@&NdjItage-b_syQLAF6qEL78Ne) z15-NQA%adR@6vYTM-2tAtxw7M$gjDYz&nI?JHP% zyLjm#ax&0(*BI9^@|_C(Hvb9zdIsY#rO-XB_581p{BufntLOLf0?LkVk8+ECquW<; z3#mWSxZe1}PwQv?>Bay~TU>fdUlK*Yt7~7etLevIYm5kDrDaqJ;{5|2@nl+H9uYXr zmvn#9XbEg<=HH1i`|Qp$cq$HJ?k%SCbR9n`jPb>g9fjgorfldPlnt>|6p3;v`I|~! zWD-KDJLT%fCH<)J^XBigyb>3582K^G>;+i((f{QI$O(^T0WuN%aZ)`c44-Q3EPqd0 z!W=P92DKkWE+9^Q9d3qB!}V<`7E*m5+z#~M_s^%sA>f9{D{_Lqv;8^4St)4ONf7yb z`;b+5K!t{fgR*s%8AcAuaAuUXFw^)L=a9ap`WR}Vl?fkIW>V3#GpmmmqN_w4O3suq zR|#cft`f?|TqTrIyG>+}xzSZ3p2pxJp^Jx}GTgY zX&T~tq9=M63+H0=m59}OsRX9I>q^z1(^cBLuF~FhrRqP| zm8!qYHLo_BzH$bY2qIWaP zvNhMpYvmdteV?lX75*-DL*GYwUaYQuC(F>UXc8g#Vx;ToyTw(wKA7~#quf_Nne=w+_gfNYuqP7f;|6*tuz~~jx61HcDhywP z<<@7^{#-DHjr^{zkkIex3h8`KS4ioPbcJ-jsB1KQKg|!5nzR+F95sBYS}sdfZH6yZ z4;j8xT{3(-5m0|m6{F$J3^Xa6i8DcydLB<71iPXp1zJ>UQhH}xlTzsB zJ6=HdptTN}2QBM9t@bIE!{5&$D%68)#srHw=1A!>XCfIju={$pJvbBLrpCZ&#uzxw z7z3vn?Nh2|jFHofF>;#uJ(YXaV&}0%c#unx*1!R&2#?fY@M`Xfc0g*bB%PcDz*k|h zq==CM4oD*f9FRr|I3SG_a6lR<;D9tzzyT>zFeEj4%XXc^0m;M!2joKM_mlQ#nZG#Z z!og4)^WPE&1EZ1wZeD(b$r&wFH;9m$83qi9IQzy7+XFpJ#oRpcxSK z8K-b>Xkah|DL80VH7XK2wqM59+xEfMNsVMLXcE$@*6K6)0WLh!gk+ga4T$1hL&Vwfkt++%LIs~h$WbZ4w z<@UawiLbgvuV3xL>enx}3J!+9eldf=_Sdf-dUeVCr_y$zFU#}?&}RDUD%0PtZu*lz zB0)rw&q5SP;7)WMv-7UPiGBV(+TZPLgvEs7*?s(}=1N`*uH+PDR0sjPFjw-f;7Xnk zuHa8{V>ujC$ut_)tJ9^M`OxvhbrB6fSqMa&4h{r`)hvQHS1L}SFTdtj(&hK39k zp><)X=xNDNc~vk}xDFXAKFtM(7Py0JLwI+L{3}f zh(g=H!}UstPiZ;)e1xBVt5Thg_a71on$kPS6vC8$mbCwT_+4^IeHL|?W)LJJD#SL7YBIHWr7h?RtjF9-a8 z0&|RF61o!EiV!4e=tT&!NJIx`h{YN1Jl;UD=l9u0NW9+1uu0W`Asy~~n%VZ%B}%I< zR@ZUjrc#GD9|)D@gR?IYy?~-8*A8n6VYO6{Nvj zh#}rb%!e7cw@>s&!8HPhDio`PVRmJ)+i_(Z`G?;u%E)&?4v4A`Ym0-V{bArD?6ce& z^Y+l3r9ar!^y;t5g9G|%wPJle`Km&)ois8fDGvpTz?2FUx&N!=!x&RK2Z}tkgd)FP zjUp=E?EKFWMcyz8MQ&Lb5z~v_?XeUb1#jKY2z#=qS9-$yaORiWn&0=AbevNdx__ae z;nS3*Oe&KsW!I%-1O~HL7nXDW**EwGm!4ED^FPbd&nc-^h{Q}jp-P`}i-nqcbRn_-?_MVyZnwgV1CnpdHk9`J&6O@+^K&dtR*Z?Ua z;HB1UZ+q#r?X`(*ky5p7fCB^sd__c!f{F?T(P&VVsHg!^QL#ovjfyqC@f{Tv74?39 z|NmNh_RN_R!o$zKpU>?lpPaqd+H2P1zy9y_Uu%VGcc-?I_Hcfke#RC#Mxc#%?#A2I z#De2CvFXX&^T84yRP(X7^Qbp(20?nMZXvK*7$AT|L#M;;+_kYA_TRx3rPkxB+Ha&6!J$UvHf6WO5+OeveShnpXOl6Mk0gbbKM2AKA7Pv(K&~~K>ZoN}a=w^qW(9Jh_J}A1`HkfXdJ%DbM zEmvegPLXct#ct5dwm~$*@3ulw+9$sya(QT|>z@=V^w5xtiC!9_YRB8)9Ahf6gG!5J z$~VQ^E%PW~jATvucDp?0i^R8R!A}6*z+q-aP5c!K8%APbDSn4ZY4b|>W>>R{vv2(Cei=ESIzGCMlo7WW- z%qHrH1{Ck1;OJp`C?eOx9CstvAH*E{#5zT3Eh9#*Ysv}JjQTY8rCw!fqCuk^v(d>c zQSOwf9!?mh>u*1^g>w@}Afd&D9$Be4^Flka2z%D7O;3w~29rlSr-5VIE+`y_;xJOk z`HRGBzf(>h5No@RuxRT33+u14w#oC*^pMQsT2GeS%D8*h{u#9VWbFZ_)E%~TXvO6< zy7h-!gD%v3ms!E}`^zNuLoiw}9M4_3d3%u)OAi5X^cVs*GnoBu*ARRH^VsqJUf@NiEuZD=Bxv59pc_nt#L!j$S$WXs{xUhO% zoeio(P-07p#Lgk3UlFtbi|*@WUCDn>&>z;!v2=8q>KqKW2OkaUg~3gb&(vu&W1zG}TqU%K|N$V?&N zS_2K1+5fG;z|F#Z)>1r7P$^865E!Tw_7GMstWSMLNg!b!6`q@G&87DnHyCg~W+Xz1 zfE{xEQ>o7H*t3yeF^8WC4V%+Dh7k&UgB|N&h-%(IAi??sJq+|F_hGmU0p4k8cG+ip z)631fW}n-#soVyVpSx^w`A*weJW&!qR;WMb6ey@_Ygd)X(4qaFz2v7moa|bO-hTX0 zyYRIOMqE;dI}T`mfrjB{yWQ}p6PFpBP@h)gf?K)0vb8KWwZc_I;q*9@!&=qdLt(vPNGINK z(906-7E*i;{^_?A&Sb?P73&SkUfFu2Ig=46|H`*P%MFj>^siZNGg$ldmfR+{zTdBV z%7$>9)Va`Le`7bWq8{t7m5;EoFl8t=A`-Gd#tKfNnTT1>tn`s*X!DUjxT4+61y?Bowmx+N?cP z^OwstIFqhe>1O$FP0wQ=mq@4rVdNK@@9?ft&WqfeSjs`0wDkrSaz#WU709mg^AaH+ zEf^67X+$rkaZA6jLJLBzA>v=f+`QI_;6NnNW#T6H(clFira@8e{TAhF z@RhV+o02uk!6W+mhiE`E)7wD*a>PK*%vK`+EC5SO3trO-=#xnBv-0%l`C_z4$(H(B91yqHkBv|N;w^ap!Av|`?cQ$LFu)| zFTxP{sBJC$*WjG3HYdWj^T96DTP<}dDdVS>dV$Q9fMB-`9nBgTKiFxKf|utTUT(nV zc8P50`;sEF-QBw;s#G7`WlAd1=yUUSc&8CkkKPw=sLyu#PBk zp0cRRQ^be3FJ^7{(r&-MWD5WrWQ~PaB5D+FskL8?2XO;u<)980c{!`2`DQ~w1SV6} zFW0}X^E1Q-T%Hzky${b_u2ZwcoG&ETQxOecLeUEj+G^{fAnb%?aekKTAsyrb zH4EJpif5Cqx=3Kp$y!9`W34Ze#s`8f+J2A85hHGvYP8B?t~n;z01%2XWr|2Q#g-m5 zOI~x=f>{RY1|GWliwC+0BsMjP6(7`ZcJpPa4pbgz=F?@^qae6mI7C)quN)Z*Bv-XA z(>hG=v3Q&8N(mV`8}*s9HmKtSE4i{YlZ_J@gZ{9F=mafWbuW|{53ve5Ms_(P>?&>sWx@Qw;sZcQaZVR+>_qP|J`wXCqbiv9817--V^7iK0tg_rtA{ z%@;X)MLhN4_Cw-|g)nyC75leLBqzaWx}7$4Xx`p~l|pHQrWit_t#wKBTv5N~HwHVD zS$;qT?do?Vjf_3|9<>CZFTJ*rLbO2)B--&UMcIJ?@P$=!8I#b-$+`nVCnq;H&DJln z-8LKbbz-BRBdmfeTMx4{Y}pq6Ow$^5+)({2Boh}+h51)Z#X%atV7a`Jl>`eD=#$HR zx_c0%>@H1Fqg|NxdB!ENB8w>t+cJxJa-cA-4o!O{d0#&UHori_I$&rw8wSiQpx{d2 zj3u3uA{ulVBd99@3uS~jU`d!y&&DfWuLVlmV$D_FVq-R`X85D^Qp!v>85N2HiwtHE z#vrB3Os&8d<(Jr6%#Un@sJneU4DRosOE{c7=d=6xT7)D-{t@X|`&iIjFaYW1OuEAk z5RIy+pS46=jDS+b#sKqP-HXW6Pww&H9-z8Ijd+ZRY(WX4WgMiWH59#H&Oo(Y+~ciw zRBa14Jrj{dj4SWIxD6n~s_dIts=^co9WM^DUiK=10Dh6##&!a|0T@s}S21_Z=W;r& zEM~Liu0?5vsCB+CaKg3vWS#4bhX|jckW(On4}~Kg&D;cpl)yyu&n4Tr%j|;+Upk|T zoepVv!VP60Mm54tYr~B8^+0BMHM1zie>7=0`p7> z8I+@a2~i1yg<#GStYc?$Jf(ybVS&my?47p77O_f_~s-Y3m>2p{jrFW6%I~8gdc1Rh+Bp^4U;yUToi9Hjy6NcWJP- z<%1x6FCH(eYza*r7YlwolW)3f$Bv*avCHL+{7yHYI+#z0wBLE^2vYwRc}Fk%`nG(s z`!YsnqXYfTLKEXA#vK>no>;zJQw6C}=AJ8zdz!`XoC}@7j;7AFyx}~HDFYLo3Bjg} zsfj0Xc&x6D1H(YRX8X%*?`+rsXbkViCav?w+VJ=dH^#yq(-qYf(kOJ*fo(q*rPwDJ zCsNB#GTlRHzeFuCztFNVyv=Yj8Ay?Z*%#B}^d*Kq$mM2VjOpnM)Hz=KX1j9+KnfVR zwzM73s<8Ddt4&`f6loOCw$N{^2l~RL*~XfLa|VFW^{H zp>UBiL2$adRb=cH>@v%EDI0=pq?URWDX-s>uP138x73?SS!XSEJt^y;r93*vx`4OO z1(eyB>diJN0!M<#Z-*UG#LHdw(*A}({#ob8N4 zt$nnyDGPu&kq>=Zw{Es`>}I&qxaxq_H8IR0Her$1;ru#;x|Cvbo&KBNby&C*TjS=N zX48vo_r=E6zsV+AB%6q0+?I#7U;LXc2+M>)3T}6_tuZoOqMlAEYlp zCC7osIypQ{lf%DXU!a6sx`w7E?V_GDUt_?^F`Ha?Bf&5TmcfG*&nI_}Qg`>1bH&m; zZWgFQZ9Mfov(+4gSh!9tTh&?An&qRo8Elxa+k&Yo3;rvcL_aO9(s+LkT(B9!(~ z7PW1$wMtBB|5B<=U(BTw?fUo|^-|}VNH@@XcL~$ylwjIeG)^WACuHG*DLw|~!M&M1 zSvL8No-Cu#c$ca*x}6S)+SCDsNt#%e)P_jf#cxfUUY(8gWI%O=ya+z$QjY_v#{M#m zHmYv7eUczGa98hA-I@P#lm(s93RTqgqcrQb5`TwC3#x2;B%8#I)Mn!GSx0344%59{IDUkr06RL-eWZLQ-t?PRry!DX`c;76D%vr3m zP8G!S-`<)w*EI4^usMgAkG-&-o)t8kV2YuynEj>jBiCyd$%BMGIcyQa=#^{o-&anu zW0FB-sm(|XFQ{Odbz28~Qw3%G6z>eMmsm3Agr&JU7Rkj;i6vHoO z-X+1o*gVLPmINY7O`oqWvHt~&yC|#%W`4XSKWu?f|L`_ZRdftKx=lL3Z=Hd z{&%gEQevJ`>L+LtsJF89BnB9EtGSOsdjV{?k}Tk!@wO7KcFouAz1Z!ND3tHgg9dL- z4{<=sFyZFEM`=V=m2K4I+B5h^&ygoC*dEg6nNH23bpZ%6wW)M!4(M9dI#cgwAvRlD zIKV?PZhmH8XgE_Hsqi$u28jPX6 zuAPvHiT}a8r!_2clmQ+i=mI?2NCMl*TNA`FvH*7jjyIn!qg`<{LrqpDg8leJS%bqE zk1`0k&%?Z-eKe~ACK7;p`y$BQ))C!>UUOf#7F0uz!H%*od>1BpS3&`(UYj5Kb9Z>* z_||&EGt3?S47?RSrde@uwlv9w8rU0Kx-fd3{0dqkSQuW3t&Qca#SJ)=Xl+Pru-+v| zZhBA}G;;zS5{lKO0$4gPSh(QuE_rLr>157&+A_@!Ac%c-RRGH$h{C4Th4KSXSlTBI z6#+i+#H2rBtgMTe!NP$_+U8}7Tjm&Qd8_GBP z!Ba5qZB(vx5jAF=v8KX#Rh(S_HWCFsHz4`o^7P`5Dm%cJExl zu>p*;b$-~r-oP!xLK6d2SuA>RhMXZZldLVgz&~Aw>&;P~Q<3AQKAlZo%zo)?@-X}S zRC7}>`@yqM8K&K)f3tRu=zcJt>-H~&;l`vbR1>)K!Q;hTp2%=uC^2NL0D@Z_PhrNm6x~r45ZRsSZl_v`E7g6^u2RAQ zZ0hthCW{HM*<{D1q>{1HPMBJeRQr7eBWc;?>f+F8bp@>M09v`nu3N9!b?ddT8ewFh z6FA_J2k_rQZZf;lr+z$&U(D4315fk&U-=0GWO|MN#SQ}5aJhYPGIT{4jvfS9Pq(Flp<(b6!nIc&HL-)s+t|3djG?I-OIq*8U8Pc`p$R%fl5 z0UIsLI*|X<62UqU?=bryxYmQ{`V*P~kZNXjQE46RH8-R8EV2b+v0`cVro{B>J$??L|~Uf8ptbfv@LE$ich*MiH5m3e@uiZ zzoZ4}7p4U%zgL7P@?uL0z=w`!Ya^#+3kr)?wf4A^uy_+@%mxjN3=S zL0dvx2{*=|;io9X(xlVUIwGNLFZOFTIQ~v7`st!Bv<(X>>#88FCz)by*X@R-$tUdo z(lu(fF^aY%k+Yw!oh*7YQv{RL7OlO=0`^nb)kq}^?rMbV!TxpDM_K7jdqtXHGEb!K z!ZyS~B>M1OmCyqiXm$vMG_nyy19VSpN~MvE*@5-u5eZP5hQ+D@cX;s`9ZvUPhN<~u zfzS+YVYzwIjA*6Vl*t(`2(lCm)x?kIIo|N2F0X=8h{G@nH`I|J>h3xc(=zSH_>cu9 zh?V|XqjV8%e)mltx}ER*c6hmx!x!4CDnxb1Pj|+bZSm9ApN2AbhRE-H=c_;Dzxwts zpz24pA5R6{S73#R_WR~7xFEg~3}PYBTi7$eV1zVRQ>Al@9Ij!j?w8-Bug0&8=A2g< zQ@cSOSku#3songAv47pZls`}UO_q5Uo`Xv*319b`Uuy4pS=kbKyCjKA4GI6E+8KC8 zTqJg{9|Z!>DCd`XM#u+u2p*TFSE_!2*EqWHlt>d*FHkz%`1yzE>OxI+!5#Y+pMz#3 zf;t40$!XvGQXuN5?i?J&huZ5GORgwwQk_k=8 z1d1u-OV`Om`6HBN^Cv&;3&jifJ!59#DrxEV-tY_CHGz?7{1?3d{zu5Lt6dgyCjNy> zBJwYDd|Cq87c~%LT;@v_$1+QX-Em3=42ugXAfZ{y$5KGBL*4%xEbBrlNbvF2?Vf| zQU<|WH#E!mYS-p%MVe=*4{1CV0OE*gh&{wrq1p>#Qi@`dHoyW9dAQae1s4|uDiM^!50Fxbn%+U^ zAP*O_38PDUG^4Jn&}Z)tP>!4ccjfN3(`n7i<}(-k5THW1Fv>1~0&!yuhH3j~ZsR}* z#Yw&{7AROYmq)k4i)vY&Ec8%%xaR=*#v@kYW*py%voafuxwoY#ZCso$Pug*&YlMPL0*WzeRnL zY!68?qAE^k?O|AF&O4{saSN7Ypu<>9B&Y_d#!kCzC|Ek;ze;);y-D3lrtGZ8oFJRca1vt>K-`xd``G)<2=h241&Z8wzjQ`Xnm%18h z9<}GF{Y7n%%bno2J?B}#y~@WHAL4|j^#(*#xwi|SgxD)g-O1k1^Oy~h=pb`hYaHO5 z*t_ALm2>Q)JZl~3LWIL;g@AAv@f^R1*!`fa3QRyXEFDeo-?o?G&k6@Uwr>;@h4*Qn ztB83m%$djYmTj7?wC`43+xUnIaJrXs56A4*b&u!!&-Hz$z8gL0Je2Awok{JI#_OhE zdU3KwPa}8qRMfU*oe4zqWX8)Vd#Rn5oB?CYulMC`cJ(M|&ZLcCTn_&R##iWsO6?zI z3d|89a8L|>Q&w3V%Cgzj!a}f>l|K)r_^!Jpgp z7-IN=Q5~Y)hKSLy9d(FS6<5Hr%?Q3J<%QUYjOdK6@Rz5^#vI)7sL9e5}72os%&e0g{kva3l5B>^wJ_PTEFva{A_~oVc zHxJMh!xD62S^i73%7R(wxZ*F9D`v2(E8}#=fzTP=r6U%;#4R%VmrsF1u6q?K%T&pI z|Cy^{vQzVnvA(bcTaiQypmX8_jZT~-;`?ck0gLx_hMh{&)$Ai`74qD4%&MT_t*#eS3}kgb2n zjPA4adgP(6f2i9OG~o0FHGsd;FnTnN`9QP)S1 zAW9qYPD^~Jz1Hg`Zvp{d!=G#HBo1#DTz@dq_dyUdW~nLdq*Q?6~C zqpnfyqqQ^inzfz%v&qxYgeS6n)@JFZwH-oFPeY@cICYscn+x7|Gg@S>Q>APJ=YF#= zmSvs&vi;BQWZ8aC&Gz+-eY3sK&d5D&)7jLp?^CH^-&2>_Hk<;+xRDiJ0*-AQ+EEAFd z2Simh+czj>K}lNxJ?_UCBYN;OM#`BPyoy^fBkhkT0;E2$uZ?5&1m|DLb!9QkmORg< z0^n05EQM9`ONz{5EiBx9ZJxkVaKWoovKy-Kdi$X({6%eVE;38CU0-CDYGdo2Df^1d z4ckK$vdd8p>iKqF_wml^{n{FB(wgGuLCfcsI>)A;|;I#k**@s8f7F?Q;i^_^d9_Fo(!^)>wHa zAFTF@-L`|N(tA8(b05^*LUaY(wdySBWedLOY!9`h`?utqL*tuHHBww!IPE-qSbB&k ziLRM9%acZC?8&GcFP9z~xg2W2BS&d3i)wGPE1z6{+320yt-{e$7Ye7rQ%A!CTOi!H z#$>JAx>YQAF$~5||K5}1*78?+W}8e__NJPPWfHWsqp*Miqc4Vx+~fP;VI+X6EkJ4D zTHApYX{y^o9X?6#U2K5m%>Y|02Ki*9D`<-L9nhwrIG`0h-P0=3vH%)gSu()dv%M+; zw91BrPfA}|0eZI!3(%#)5zq^@z>rhy_B3nIk6y4XJOF`>YZppjqYl8{VK&BT#>1hrXVmVj|CmE7=-mzu?V`XQ(obSR+TM30Rr@4GZ`QERYqKu+zZ4An2EdFRZ|DdOrii^|Ud>C7Li+k2PUSRuOi? zdwIf^mL`l55G1b&qnIX4@f=)%#F;rjiQj9&mSo%!87538DKa-CC{Q#t@eeo6#QaaAAh$GwrCnUsJ#oom$8`$-#=tAxw30S3@B@DgVAC2t6 zuFLkLs^r8A25;O~?a~mG+4E#n%}Oq(4Ku?@N!j8x@D<4R#AVr@s|;;r9P;5( zs&~nkbI;6BX1k|EWH5*38OLg{&vYDM98+kJVGK5DIsOJJ@e)U+o5Ki5Z$>}-2t^FR zhVrJC9~oU-9@6m#t^9VsCdEgMu{&NecF{;BwH5-aIJ;MTDL~oD@OB~R@mI&SiECh~jAOMVF3Y?O7 z76zKORFcHn#DZi-?#1tN!AR-!v@~~Guj`>>nH9fn$5G%TLi>%~LzA{1nXk-ygrd^Z zBhp@1xe|;XT=VD3kRu>xH30Gk6pU=f32@i$Z=s6;4y}6(AT18&3c40EFqE~|AmF-F z&9o4Bnk|<67!zMvisB^2)r?uxUV=M#r=mLJ$hZCWX5=bM_M(m*N@$s1i7tuIdv~qc z76+>WcB+F{+*C823!@F|RMA@pD70A($WG|7b8Sl?8jlZZAPwYiyoC@}@xWeruxm1) zIOEo#_G*%pdlLG{;o~<`weAJl1v&85h#=HR{FET2kpL_l2>R2~AG3m*dK)jC2qyvn zr={-SEFEu*rlX^y)udh-t+Bp~0z0BJa_#6O-ng5pqic8DKTWJAbXcNSEY2bU8~Gy8 z4pXqLgw$XCM!!hJAMrE{ku$QoeRax|$_K%MIO#(xtRdvX&&~;aks(Sg`Y^vav}1O3 z)=EFx@2q^kf634NQ}Yz?yOeK7cvW1=qz2X-_>i{g_JScrsTH`?kxzwl~!>bRhG_JWW8BNbk lA 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

    p*YVDSE(KZrf3MEx&#KX82pj-+KPE>DNa7 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 GL-4=oCBW$b diff --git a/srml/balances/src/lib.rs b/srml/balances/src/lib.rs index ba771662e4..f945a5ee2e 100644 --- a/srml/balances/src/lib.rs +++ b/srml/balances/src/lib.rs @@ -273,7 +273,7 @@ decl_storage! { } /// Whatever happened about the hint given when creating the new account. -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Debug))] #[derive(Encode, Decode, PartialEq, Eq, Clone, Copy)] pub enum NewAccountOutcome { NoHint, diff --git a/srml/balances/src/mock.rs b/srml/balances/src/mock.rs index b3355636b3..9d4b72a0d8 100644 --- a/srml/balances/src/mock.rs +++ b/srml/balances/src/mock.rs @@ -29,7 +29,7 @@ impl_outer_origin!{ } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. -#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] +#[derive(Clone, PartialEq, Eq, Debug)] pub struct Runtime; impl system::Trait for Runtime { type Origin = Origin; diff --git a/srml/consensus/src/lib.rs b/srml/consensus/src/lib.rs index 302d7a2b35..b39977a476 100644 --- a/srml/consensus/src/lib.rs +++ b/srml/consensus/src/lib.rs @@ -75,7 +75,7 @@ pub type Log = RawLog< >; /// A logs in this module. -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] #[derive(Encode, Decode, PartialEq, Eq, Clone)] pub enum RawLog { /// Authorities set has been changed. Contains the new set of authorities. diff --git a/srml/consensus/src/mock.rs b/srml/consensus/src/mock.rs index 88eb669a84..268b54432d 100644 --- a/srml/consensus/src/mock.rs +++ b/srml/consensus/src/mock.rs @@ -28,7 +28,7 @@ impl_outer_origin!{ } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. -#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] +#[derive(Clone, PartialEq, Eq, Debug)] pub struct Test; impl Trait for Test { const NOTE_OFFLINE_POSITION: u32 = 1; diff --git a/srml/council/src/lib.rs b/srml/council/src/lib.rs index 2ea0def3a5..629b0ed9e1 100644 --- a/srml/council/src/lib.rs +++ b/srml/council/src/lib.rs @@ -75,7 +75,7 @@ mod tests { } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. - #[derive(Clone, Eq, PartialEq, Debug, Serialize, Deserialize)] + #[derive(Clone, Eq, PartialEq, Debug)] pub struct Test; impl system::Trait for Test { type Origin = Origin; diff --git a/srml/democracy/src/lib.rs b/srml/democracy/src/lib.rs index d2d2b6e4f9..6ea4060492 100644 --- a/srml/democracy/src/lib.rs +++ b/srml/democracy/src/lib.rs @@ -322,7 +322,7 @@ mod tests { } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. - #[derive(Clone, Eq, PartialEq, Debug, Serialize, Deserialize)] + #[derive(Clone, Eq, PartialEq, Debug)] pub struct Test; impl system::Trait for Test { type Origin = Origin; diff --git a/srml/grandpa/Cargo.toml b/srml/grandpa/Cargo.toml new file mode 100644 index 0000000000..60c576895e --- /dev/null +++ b/srml/grandpa/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "srml-grandpa" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default-features = false } +serde_derive = { version = "1.0", optional = true } +parity-codec = { version = "2.1", default-features = false } +parity-codec-derive = { version = "2.1", default-features = false } +substrate-primitives = { path = "../../core/primitives", default-features = false } +substrate-finality-grandpa-primitives = { path = "../../core/finality-grandpa/primitives", default-features = false } +sr-std = { path = "../../core/sr-std", default-features = false } +sr-io = { path = "../../core/sr-io", default-features = false } +sr-primitives = { path = "../../core/sr-primitives", default-features = false } +srml-support = { path = "../support", default-features = false } +srml-system = { path = "../system", default-features = false } +srml-session = { path = "../session", default-features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "parity-codec/std", + "substrate-primitives/std", + "substrate-finality-grandpa-primitives/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-primitives/std", + "srml-system/std", + "srml-session/std", +] diff --git a/srml/grandpa/src/lib.rs b/srml/grandpa/src/lib.rs new file mode 100644 index 0000000000..8173b9a725 --- /dev/null +++ b/srml/grandpa/src/lib.rs @@ -0,0 +1,303 @@ +// Copyright 2017-2018 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 . + +//! GRANDPA Consensus module for runtime. +//! +//! This manages the GRANDPA authority set ready for the native code. +//! These authorities are only for GRANDPA finality, not for consensus overall. +//! +//! In the future, it will also handle misbehavior reports, and on-chain +//! finality notifications. +//! +//! For full integration with GRANDPA, the `GrandpaApi` should be implemented. +//! The necessary items are re-exported via the `fg_primitives` crate. + +#![cfg_attr(not(feature = "std"), no_std)] + +#[allow(unused_imports)] +#[macro_use] +extern crate sr_std as rstd; + +#[macro_use] +extern crate srml_support as runtime_support; + +#[cfg(feature = "std")] +#[macro_use] +extern crate serde_derive; + +extern crate parity_codec; +#[macro_use] +extern crate parity_codec_derive; + +extern crate sr_primitives as primitives; +extern crate parity_codec as codec; +extern crate srml_system as system; +extern crate srml_session as session; +extern crate substrate_primitives; + +#[cfg(test)] +extern crate sr_io as runtime_io; + +// re-export since this is necessary for `impl_apis` in runtime. +pub extern crate substrate_finality_grandpa_primitives as fg_primitives; + +use rstd::prelude::*; +use fg_primitives::ScheduledChange; +use runtime_support::Parameter; +use runtime_support::dispatch::Result; +use runtime_support::storage::StorageValue; +use runtime_support::storage::unhashed::StorageVec; +use primitives::traits::{CurrentHeight, Convert}; +use substrate_primitives::AuthorityId; +use system::ensure_signed; + +#[cfg(feature = "std")] +use primitives::traits::MaybeSerializeDebug; + +#[cfg(not(feature = "std"))] +use primitives::traits::MaybeSerializeDebugButNotDeserialize; + +mod mock; +mod tests; + +struct AuthorityStorageVec(rstd::marker::PhantomData); +impl StorageVec for AuthorityStorageVec { + type Item = (S, u64); + const PREFIX: &'static [u8] = ::fg_primitives::well_known_keys::AUTHORITY_PREFIX; +} + +/// The log type of this crate, projected from module trait type. +pub type Log = RawLog< + ::BlockNumber, + ::SessionKey, +>; + +/// Logs which can be scanned by GRANDPA for authorities change events. +pub trait GrandpaChangeSignal { + /// Try to cast the log entry as a contained signal. + fn as_signal(&self) -> Option>; +} + +/// A logs in this module. +#[cfg_attr(feature = "std", derive(Serialize, Debug))] +#[derive(Encode, Decode, PartialEq, Eq, Clone)] +pub enum RawLog { + /// Authorities set change has been signalled. Contains the new set of authorities + /// and the delay in blocks before applying. + AuthoritiesChangeSignal(N, Vec<(SessionKey, u64)>), +} + +impl RawLog { + /// Try to cast the log entry as a contained signal. + pub fn as_signal(&self) -> Option<(N, &[(SessionKey, u64)])> { + match *self { + RawLog::AuthoritiesChangeSignal(ref n, ref signal) => Some((n.clone(), signal)), + } + } +} + +impl GrandpaChangeSignal for RawLog + where N: Clone, SessionKey: Clone + Into, +{ + fn as_signal(&self) -> Option> { + RawLog::as_signal(self).map(|(delay, next_authorities)| ScheduledChange { + delay, + next_authorities: next_authorities.iter() + .cloned() + .map(|(k, w)| (k.into(), w)) + .collect(), + }) + } +} + +pub trait Trait: system::Trait { + /// Type for all log entries of this module. + type Log: From> + Into>; + + /// The session key type used by authorities. + #[cfg(not(feature = "std"))] + type SessionKey: Parameter + Default + MaybeSerializeDebugButNotDeserialize; + + /// The session key type used by authorities. + #[cfg(feature = "std")] + type SessionKey: Parameter + Default + MaybeSerializeDebug; + + /// The event type of this module. + type Event: From> + Into<::Event>; +} + +/// A stored pending change. +#[derive(Encode, Decode)] +pub struct StoredPendingChange { + /// The block number this was scheduled at. + pub scheduled_at: N, + /// The delay in blocks until it will be applied. + pub delay: N, + /// The next authority set. + pub next_authorities: Vec<(SessionKey, u64)>, +} + +/// GRANDPA events. +decl_event!( + pub enum Event where ::SessionKey { + /// New authority set has been applied. + NewAuthorities(Vec<(SessionKey, u64)>), + } +); + +decl_storage! { + trait Store for Module as GrandpaFinality { + // Pending change: (signalled at, scheduled change). + PendingChange get(pending_change): Option>; + } + add_extra_genesis { + config(authorities): Vec<(T::SessionKey, u64)>; + + build(|storage: &mut primitives::StorageMap, _: &mut primitives::ChildrenStorageMap, config: &GenesisConfig| { + use codec::{Encode, KeyedVec}; + + let auth_count = config.authorities.len() as u32; + config.authorities.iter().enumerate().for_each(|(i, v)| { + storage.insert((i as u32).to_keyed_vec( + ::fg_primitives::well_known_keys::AUTHORITY_PREFIX), + v.encode() + ); + }); + storage.insert( + ::fg_primitives::well_known_keys::AUTHORITY_COUNT.to_vec(), + auth_count.encode(), + ); + }); + } +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Report some misbehaviour. + fn report_misbehavior(origin, _report: Vec) -> Result { + ensure_signed(origin)?; + // TODO: https://github.com/paritytech/substrate/issues/1112 + Ok(()) + } + + fn on_finalise(block_number: T::BlockNumber) { + if let Some(pending_change) = >::get() { + if block_number == pending_change.scheduled_at { + Self::deposit_log(RawLog::AuthoritiesChangeSignal( + pending_change.delay, + pending_change.next_authorities.clone(), + )); + } + + if block_number == pending_change.scheduled_at + pending_change.delay { + Self::deposit_event( + RawEvent::NewAuthorities(pending_change.next_authorities.clone()) + ); + >::set_items(pending_change.next_authorities); + >::kill(); + } + } + } + } +} + +impl Module { + /// Get the current set of authorities, along with their respective weights. + pub fn grandpa_authorities() -> Vec<(T::SessionKey, u64)> { + >::items() + } + + /// Schedule a change in the authorities. + /// + /// The change will be applied at the end of execution of the block + /// `in_blocks` after the current block. This value may be 0, in which + /// case the change is applied at the end of the current block. + /// + /// No change should be signalled while any change is pending. Returns + /// an error if a change is already pending. + pub fn schedule_change( + next_authorities: Vec<(T::SessionKey, u64)>, + in_blocks: T::BlockNumber, + ) -> Result { + if Self::pending_change().is_none() { + let scheduled_at = system::ChainContext::::default().current_height(); + >::put(StoredPendingChange { + delay: in_blocks, + scheduled_at, + next_authorities, + }); + + Ok(()) + } else { + Err("Attempt to signal GRANDPA change with one already pending.") + } + } + + /// Deposit one of this module's logs. + fn deposit_log(log: Log) { + >::deposit_log(::Log::from(log).into()); + } +} + +impl Module where AuthorityId: core::convert::From<::SessionKey> { + /// See if the digest contains any scheduled change. + pub fn scrape_digest_change(log: &Log) + -> Option> + { + as GrandpaChangeSignal>::as_signal(log) + } +} + +/// Helper for authorities being synchronized with the general session authorities. +/// +/// This is not the only way to manage an authority set for GRANDPA, but it is +/// a convenient one. When this is used, no other mechanism for altering authority +/// sets should be. +pub struct SyncedAuthorities(::rstd::marker::PhantomData); + +// TODO: remove when https://github.com/rust-lang/rust/issues/26925 is fixed +impl Default for SyncedAuthorities { + fn default() -> Self { + SyncedAuthorities(::rstd::marker::PhantomData) + } +} + +impl session::OnSessionChange for SyncedAuthorities where + T: Trait, + T: session::Trait, + ::ConvertAccountIdToSessionKey: Convert< + ::AccountId, + ::SessionKey, + >, +{ + fn on_session_change(_: X, _: bool) { + use primitives::traits::Zero; + + let next_authorities = >::validators() + .into_iter() + .map(T::ConvertAccountIdToSessionKey::convert) + .map(|key| (key, 1)) // evenly-weighted. + .collect::::SessionKey, u64)>>(); + + // instant changes + let last_authorities = >::grandpa_authorities(); + if next_authorities != last_authorities { + let _ = >::schedule_change(next_authorities, Zero::zero()); + } + } +} diff --git a/srml/grandpa/src/mock.rs b/srml/grandpa/src/mock.rs new file mode 100644 index 0000000000..d85085c9e0 --- /dev/null +++ b/srml/grandpa/src/mock.rs @@ -0,0 +1,79 @@ +// Copyright 2018 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 . + +//! Test utilities + +#![cfg(test)] + +use primitives::{BuildStorage, testing::{Digest, DigestItem, Header}}; +use primitives::generic::DigestItem as GenDigestItem; +use runtime_io; +use substrate_primitives::{H256, Blake2Hasher}; +use parity_codec::Encode; +use {system, GenesisConfig, Trait, Module, RawLog}; + +impl_outer_origin!{ + pub enum Origin for Test {} +} + +impl From> for DigestItem { + fn from(log: RawLog) -> DigestItem { + GenDigestItem::Other(log.encode()) + } +} + +// Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. +#[derive(Clone, PartialEq, Eq, Debug, Decode, Encode)] +pub struct Test; +impl Trait for Test { + type Log = DigestItem; + type SessionKey = u64; + type Event = TestEvent; +} +impl system::Trait for Test { + type Origin = Origin; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = ::primitives::traits::BlakeTwo256; + type Digest = Digest; + type AccountId = u64; + type Header = Header; + type Event = TestEvent; + type Log = DigestItem; +} + +mod grandpa { + pub use ::Event; +} + +impl_outer_event!{ + pub enum TestEvent for Test { + grandpa, + } +} + +pub fn new_test_ext(authorities: Vec<(u64, u64)>) -> runtime_io::TestExternalities { + let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; + t.extend(GenesisConfig:: { + _genesis_phantom_data: Default::default(), + authorities, + }.build_storage().unwrap().0); + t.into() +} + +pub type System = system::Module; +pub type Grandpa = Module; diff --git a/srml/grandpa/src/tests.rs b/srml/grandpa/src/tests.rs new file mode 100644 index 0000000000..4d8694b2a5 --- /dev/null +++ b/srml/grandpa/src/tests.rs @@ -0,0 +1,108 @@ +// Copyright 2017-2018 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 . + +//! Tests for the module. + +#![cfg(test)] + +use primitives::{testing, traits::OnFinalise}; +use primitives::traits::Header; +use runtime_io::with_externalities; +use mock::{Grandpa, System, new_test_ext}; +use system::{EventRecord, Phase}; +use {RawLog, RawEvent}; + +#[test] +fn authorities_change_logged() { + with_externalities(&mut new_test_ext(vec![(1, 1), (2, 1), (3, 1)]), || { + System::initialise(&1, &Default::default(), &Default::default()); + Grandpa::schedule_change(vec![(4, 1), (5, 1), (6, 1)], 0).unwrap(); + + System::note_finished_extrinsics(); + Grandpa::on_finalise(1); + + let header = System::finalise(); + assert_eq!(header.digest, testing::Digest { + logs: vec![ + RawLog::AuthoritiesChangeSignal(0, vec![(4, 1), (5, 1), (6, 1)]).into(), + ], + }); + + assert_eq!(System::events(), vec![ + EventRecord { + phase: Phase::Finalization, + event: RawEvent::NewAuthorities(vec![(4, 1), (5, 1), (6, 1)]).into(), + }, + ]); + }); +} + +#[test] +fn authorities_change_logged_after_delay() { + with_externalities(&mut new_test_ext(vec![(1, 1), (2, 1), (3, 1)]), || { + System::initialise(&1, &Default::default(), &Default::default()); + Grandpa::schedule_change(vec![(4, 1), (5, 1), (6, 1)], 1).unwrap(); + Grandpa::on_finalise(1); + let header = System::finalise(); + assert_eq!(header.digest, testing::Digest { + logs: vec![ + RawLog::AuthoritiesChangeSignal(1, vec![(4, 1), (5, 1), (6, 1)]).into(), + ], + }); + + // no change at this height. + assert_eq!(System::events(), vec![]); + + System::initialise(&2, &header.hash(), &Default::default()); + System::note_finished_extrinsics(); + Grandpa::on_finalise(2); + + let _header = System::finalise(); + assert_eq!(System::events(), vec![ + EventRecord { + phase: Phase::Finalization, + event: RawEvent::NewAuthorities(vec![(4, 1), (5, 1), (6, 1)]).into(), + }, + ]); + }); +} + +#[test] +fn cannot_schedule_change_when_one_pending() { + with_externalities(&mut new_test_ext(vec![(1, 1), (2, 1), (3, 1)]), || { + System::initialise(&1, &Default::default(), &Default::default()); + Grandpa::schedule_change(vec![(4, 1), (5, 1), (6, 1)], 1).unwrap(); + assert!(Grandpa::pending_change().is_some()); + assert!(Grandpa::schedule_change(vec![(5, 1)], 1).is_err()); + + Grandpa::on_finalise(1); + let header = System::finalise(); + + System::initialise(&2, &header.hash(), &Default::default()); + assert!(Grandpa::pending_change().is_some()); + assert!(Grandpa::schedule_change(vec![(5, 1)], 1).is_err()); + + Grandpa::on_finalise(2); + let header = System::finalise(); + + System::initialise(&3, &header.hash(), &Default::default()); + assert!(Grandpa::pending_change().is_none()); + assert!(Grandpa::schedule_change(vec![(5, 1)], 1).is_ok()); + + Grandpa::on_finalise(3); + let _header = System::finalise(); + }); +} diff --git a/srml/session/src/lib.rs b/srml/session/src/lib.rs index 33ac3dbabf..43eeaaad50 100644 --- a/srml/session/src/lib.rs +++ b/srml/session/src/lib.rs @@ -55,6 +55,15 @@ impl OnSessionChange for () { fn on_session_change(_: T, _: bool) {} } +impl OnSessionChange for (A, B) + where T: Clone, A: OnSessionChange, B: OnSessionChange +{ + fn on_session_change(time_elapsed: T, should_reward: bool) { + A::on_session_change(time_elapsed.clone(), should_reward); + B::on_session_change(time_elapsed, should_reward); + } +} + pub trait Trait: timestamp::Trait { type ConvertAccountIdToSessionKey: Convert; type OnSessionChange: OnSessionChange; diff --git a/srml/staking/src/mock.rs b/srml/staking/src/mock.rs index bfef4653a6..8788dae640 100644 --- a/srml/staking/src/mock.rs +++ b/srml/staking/src/mock.rs @@ -30,7 +30,7 @@ impl_outer_origin!{ } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. -#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] +#[derive(Clone, PartialEq, Eq, Debug)] pub struct Test; impl consensus::Trait for Test { const NOTE_OFFLINE_POSITION: u32 = 1; diff --git a/srml/support/src/dispatch.rs b/srml/support/src/dispatch.rs index cfcb3ae972..436ed87b9a 100644 --- a/srml/support/src/dispatch.rs +++ b/srml/support/src/dispatch.rs @@ -56,6 +56,9 @@ impl Parameter for T where T: Codec + Clone + Eq {} /// Declare a struct for this module, then implement dispatch logic to create a pairing of several /// dispatch traits and enums. +/// +/// The `on_finalise` function is special, since it can either take no parameters, +/// or one parameter, which has the runtime's block number type. #[macro_export] macro_rules! decl_module { ( diff --git a/srml/support/src/metadata.rs b/srml/support/src/metadata.rs index 947c8877a6..a7935c5524 100644 --- a/srml/support/src/metadata.rs +++ b/srml/support/src/metadata.rs @@ -197,7 +197,7 @@ mod tests { type EventModule = event_module::Module; type EventModule2 = event_module2::Module; - #[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, Deserialize, Serialize)] + #[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct TestRuntime; impl_outer_event! { diff --git a/srml/support/src/storage/generator.rs b/srml/support/src/storage/generator.rs index 60e26e8aee..d622b83577 100644 --- a/srml/support/src/storage/generator.rs +++ b/srml/support/src/storage/generator.rs @@ -622,8 +622,8 @@ macro_rules! __generate_genesis_config { // final build storage call [$call:expr] ) => { - #[derive(Serialize, Deserialize)] #[cfg(feature = "std")] + #[derive(Serialize, Deserialize)] #[serde(rename_all = "camelCase")] #[serde(deny_unknown_fields)] pub struct GenesisConfig<$traitinstance: $traittype> { diff --git a/srml/system/src/lib.rs b/srml/system/src/lib.rs index 666348254f..fda59529d4 100644 --- a/srml/system/src/lib.rs +++ b/srml/system/src/lib.rs @@ -154,7 +154,7 @@ pub type Log = RawLog< >; /// A logs in this module. -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] #[derive(Encode, Decode, PartialEq, Eq, Clone)] pub enum RawLog { /// Changes trie has been computed for this block. Contains the root of -- GitLab From bb32be1895423ed708ec7d5c0e88fee82fefedca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Thu, 22 Nov 2018 17:13:43 +0100 Subject: [PATCH 072/243] Make `grandpa` export its calls (#1153) --- .../substrate_test_runtime.compact.wasm | Bin 45224 -> 45227 bytes node/runtime/src/lib.rs | 2 +- .../release/node_runtime.compact.wasm | Bin 639289 -> 636432 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index f24c5400ee268183525fd8c98aa36a3830b9e2b6..1e1603db25f1ae1270c264dafde73776dd0499cf 100644 GIT binary patch delta 1785 zcmZ`(du$X%7@yg@wzPLg$F@Kf3MXx$Ev?<#*WE%YT}2RWzz{IVOLlK}ZA-LG+eA^M zH7T^nqvuV6P+Flp%vH1;Sq&x{Jwr?z0~#P=jRA`(fj@{TMv^9o`pxwSmBhR3{l59l zeDnKWd$DWW$!lEv2F^SZNgz)v(vCP|_&1E>&LtP-xRG7-a#~Z)(4GWRxG8>@#wnZ^ zVANTc-iX=uxs1i$;pDd4&uJsOoEcMoO3%5Oa^NN$IBhhVJs*!dCD}{UaEvzO1wf%M zuhd<1U~dBXv-~cShdkQwz62t`Of8JiTDRJtvV$fJ_A~x8_c2Meb)6qlA~4%rd?X_tVq-3LK9Ho`fqF2S&Xk6S`bV zw*(J4YlW=oEE)6JZWkV+|2%($t@>&PGg!>^t4qB%lTM#cI2~SH0Z!*v&-USO=qhWiu727KKq2pbp{ZDy}`Ea^8g;a6&vWDNm9rn4S6>#b!Rs2zJH$}Z@u$)(TL zet~b%^t!hn5C!zJx-~$0>i0h&i|H@*Bl!azP;QZxTl?jLA)~o>WYqL^twjEUGJ`@^g$8fzCcZ8PP8QkzLr+C}tEIdsA z+PQYoSQi_HPN>sUILPf`^;7U^%98w}=t_>iv1N?T|a#Ez?8Y3%#`suUeIc-rQ2B zzecZizvP4t&BU~}TXZ2UPG9WVo;l(sh<$qLm7W>6k>2T9*1Ez)P!VvsfIh$%;Njqb z{|r&EjC-LDF-vs9ufZYrD2w)f^G!5{+W)*0&d&>dY{%sdRX$ZBVjX>lA z(Fm9Y*aD7jz=!!a{)gX|;=fHJNCCe$;hv3vci{m6)CqhQU=3ge;8s8{;0{0+%1Ajl z+6N*gAz2n|H568LgSWyV*=axgotvnFAPWJ@kS$v@RNbbVjw?hASphXD*phCC)qoYI z$B$pg5qR5_gCRo>siI&?_WWvEeR4YOJ@FW^f~Fd_B_SA=WhE?x>EMZ@M6`KDHw{}+ zbXgZesu@*TQA5#k4(zl8tB)jdmY~~CNzU3d)KB*0^Pte1 zU+N9M-!aAnvH~8Q&-nC-&M^k(!J?J2`6;%Q{83Ogr{%pdMh6YNNN=S}A6=3uAW(hwW%1-xtlv|E3M>EARrw7s%8R&H;gI8h>?g z12sDytf0Hg!8iRApe?iA2+|oPl|rE()yZrD>}J*J87mlV9z_UTit9xCo_`|IF3Fag!vyQ7pG4ciXD(Xz|&%qTd`J4Wqrghnr zZV4K9HVavEX)@s#dpzg_dGN|Hy6dg_HiO1ox3ScJ({(yK?R0cw1vp*YxF8$-O(u;7 zDz)8w9qu19x1n=Rp=Bc2w1hwQPr82Br~OLplB{tc@LbvhXRE!A1-0Wl67+)Jsyy=Y z&M(nUZ4n->x!*Fapz*J%6*TX zZvQ=dMmgd!C;Ncyp|xx5+~B+I_JdB@D7n-b^gnDz7Nf@r>MEycR(4e&-#yn5yN0Fq z{BjJ#SpvHP7|v7+vBvnouOEV-KOf2@b z!k|JE+`BI(f@qxlmEe#=iinsy>7L;LL*M9pfDuwl%4XlAvkhYd9Yp#8rd=f&~&@|o< zER~aOHDYqS6FYj|i$xY-PoS_+#Y8fGemz<^(2T-mm z8K%ndh9XLlkRqy;GN~Ra%3HQ, Origin}, CouncilSeats: council_seats::{Config}, - Grandpa: grandpa::{Module, Storage, Config, Log(), Event}, + Grandpa: grandpa::{Module, Call, Storage, Config, Log(), Event}, Treasury: treasury, Contract: contract::{Module, Call, Config, Event}, UpgradeKey: upgrade_key, diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 130019eb4ffb27f8d3641503af2a81e278384352..56a3e347cea8854f841e6af0906632c55391fdd3 100644 GIT binary patch delta 170840 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%0D)!cWc0PH42#glgzK>AAv7P!CRT~r5_ZE1 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 z≧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%0Ap6=X;i7KOk@`gxFeOxVO_2I! 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 Date: Fri, 23 Nov 2018 02:35:01 +0100 Subject: [PATCH 073/243] add leaves function to chain (#1154) --- core/client/src/client.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 1b77d88dda..92a4688845 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -93,6 +93,9 @@ pub trait BlockchainEvents { pub trait ChainHead { /// Get best block header. fn best_block_header(&self) -> Result<::Header, error::Error>; + /// Get all leaves of the chain: block hashes that have no children currently. + /// Leaves that can never be finalized will not be returned. + fn leaves(&self) -> Result::Hash>, error::Error>; } /// Fetch block body by ID. @@ -1189,6 +1192,10 @@ where fn best_block_header(&self) -> error::Result<::Header> { Client::best_block_header(self) } + + fn leaves(&self) -> Result::Hash>, error::Error> { + self.backend.blockchain().leaves() + } } impl BlockBody for Client -- GitLab From 92bde022b57afc6b99e5f8e41ca1e2b806b9f651 Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Mon, 26 Nov 2018 12:58:09 +0300 Subject: [PATCH 074/243] fix purge-chain cli option (#1164) --- core/cli/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/cli/src/lib.rs b/core/cli/src/lib.rs index a435a53d51..7aeec0899f 100644 --- a/core/cli/src/lib.rs +++ b/core/cli/src/lib.rs @@ -358,7 +358,7 @@ where return Ok(Action::ExecutedInternally); } - if let Some(matches) = matches.subcommand_matches("purge_chain") { + if let Some(matches) = matches.subcommand_matches("purge-chain") { purge_chain::(matches, spec)?; return Ok(Action::ExecutedInternally); } -- GitLab From dc45529f20211ef5be8144261e2d183dc1e766c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Mon, 26 Nov 2018 14:29:13 +0000 Subject: [PATCH 075/243] core, node: use grandpa block import for locally sealed aura blocks (#1167) * core, node: use grandpa block import for locally sealed aura blocks * core: impl DerefMut for FullComponents * node: take grandpa_import_setup from service config --- core/consensus/aura/src/lib.rs | 10 +++++++--- core/service/src/components.rs | 8 +++++++- core/service/src/lib.rs | 4 ---- node/cli/src/service.rs | 22 +++++++++++++--------- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index 1869eba5dd..0313f7af3c 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -146,17 +146,19 @@ impl CompatibleDigestItem for generic::DigestItem( +pub fn start_aura( config: Config, client: Arc, + block_import: Arc, env: Arc, sync_oracle: SO, ) -> impl Future where B: Block, - C: Authorities + BlockImport + ChainHead, + C: Authorities + ChainHead, E: Environment, E::Proposer: Proposer, + I: BlockImport, SO: SyncOracle + Send + Clone, DigestItemFor: CompatibleDigestItem, Error: ::std::error::Error + Send + 'static + From<::consensus_common::Error>, @@ -164,6 +166,7 @@ pub fn start_aura( let make_authorship = move || { let config = config.clone(); let client = client.clone(); + let block_import = block_import.clone(); let env = env.clone(); let sync_oracle = sync_oracle.clone(); @@ -225,7 +228,7 @@ pub fn start_aura( } }; - let block_import = client.clone(); + let block_import = block_import.clone(); Either::A(proposal_work .map(move |b| { let (header, body) = b.deconstruct(); @@ -542,6 +545,7 @@ mod tests { local_key: Some(Arc::new(key.clone().into())), slot_duration: SLOT_DURATION }, + client.clone(), client, environ.clone(), DummyOracle, diff --git a/core/service/src/components.rs b/core/service/src/components.rs index b7d1781f3f..cc6771a634 100644 --- a/core/service/src/components.rs +++ b/core/service/src/components.rs @@ -16,7 +16,7 @@ //! Substrate service components. -use std::{sync::Arc, net::SocketAddr, marker::PhantomData, ops::Deref}; +use std::{sync::Arc, net::SocketAddr, marker::PhantomData, ops::Deref, ops::DerefMut}; use serde::{Serialize, de::DeserializeOwned}; use tokio::runtime::TaskExecutor; use chain_spec::{ChainSpec, Properties}; @@ -369,6 +369,12 @@ impl Deref for FullComponents { } } +impl DerefMut for FullComponents { + fn deref_mut(&mut self) -> &mut Service { + &mut self.service + } +} + impl Components for FullComponents { type Factory = Factory; type Executor = FullExecutor; diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index aebf447149..917b3d7482 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -310,10 +310,6 @@ impl Service None } } - - pub fn config(&self) -> &FactoryFullConfiguration { - &self.config - } } impl Service where Components: components::Components { diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index 1bd61bc6c4..1a4df71946 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -50,7 +50,7 @@ pub struct NodeConfig { // FIXME: rather than putting this on the config, let's have an actual intermediate setup state // https://github.com/paritytech/substrate/issues/1134 - pub grandpa_link_half: Option>, + pub grandpa_import_setup: Option<(Arc>, grandpa::LinkHalfForService)>, } impl Default for NodeConfig where F: substrate_service::ServiceFactory { @@ -58,7 +58,7 @@ impl Default for NodeConfig where F: substrate_service::ServiceFactory { NodeConfig { grandpa_authority: false, grandpa_authority_only: false, - grandpa_link_half: None + grandpa_import_setup: None, } } } @@ -79,18 +79,19 @@ construct_service_factory! { { |config: FactoryFullConfiguration, executor: TaskExecutor| FullComponents::::new(config, executor) }, AuthoritySetup = { - |service: Self::FullService, executor: TaskExecutor, key: Arc| { + |mut service: Self::FullService, executor: TaskExecutor, key: Arc| { + let (block_import, link_half) = service.config.custom.grandpa_import_setup.take() + .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); + if service.config.custom.grandpa_authority { info!("Running Grandpa session as Authority {}", key.public()); - let link_half = service.config().custom.grandpa_link_half.as_ref().take() - .expect("Link Half is present for Full Services or setup failed before. qed"); let grandpa_fut = grandpa::run_grandpa( grandpa::Config { gossip_duration: Duration::new(4, 0), // FIXME: make this available through chainspec? local_key: Some(key.clone()), - name: Some(service.config().name.clone()) + name: Some(service.config.name.clone()) }, - (*link_half).clone(), + link_half, grandpa::NetworkBridge::new(service.network()) )?; @@ -104,6 +105,7 @@ construct_service_factory! { slot_duration: AURA_SLOT_DURATION, }, service.client(), + block_import.clone(), service.proposer(), service.network(), )); @@ -116,14 +118,16 @@ construct_service_factory! { FullImportQueue = AuraImportQueue, NothingExtra> { |config: &mut FactoryFullConfiguration , client: Arc>| { let (block_import, link_half) = grandpa::block_import::<_, _, _, ClientWithApi, FullClient>(client.clone(), client)?; - config.custom.grandpa_link_half = Some(link_half); + let block_import = Arc::new(block_import); + + config.custom.grandpa_import_setup = Some((block_import.clone(), link_half)); Ok(import_queue( AuraConfig { local_key: None, slot_duration: 5 }, - Arc::new(block_import), + block_import, NothingExtra, )) }}, -- GitLab From 66c743a0475e9959b0e35dfa9c91e30cd0687163 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 26 Nov 2018 16:24:26 +0100 Subject: [PATCH 076/243] GRANDPA: add commit messages (#1151) * get compiling with latest version of grandpa * generalize UntilImported to prepare for waiting for commit message targets * extract until_imported out to own module * logic for blocking commits until enough blocks imported * add tests for commit message blocking logic * pass through commit mesage round number as well * extract communication streams to own module * add Error implementation for ExitOrError * introduce stream adapter for checking commit messages * output sink for commits * implement the unimplemented * remove extra line * update to latest version of grandpa api * update finality-grandpa to 0.4.0 * Use filter_map earlier when checking incoming commits messages Co-Authored-By: rphmeier * address some grumbles --- Cargo.lock | 73 ++- core/client/src/lib.rs | 2 +- core/finality-grandpa/Cargo.toml | 3 +- core/finality-grandpa/src/communication.rs | 281 ++++++++++ core/finality-grandpa/src/lib.rs | 431 +++++---------- core/finality-grandpa/src/tests.rs | 36 ++ core/finality-grandpa/src/until_imported.rs | 560 ++++++++++++++++++++ 7 files changed, 1093 insertions(+), 293 deletions(-) create mode 100644 core/finality-grandpa/src/communication.rs create mode 100644 core/finality-grandpa/src/until_imported.rs diff --git a/Cargo.lock b/Cargo.lock index ef32ae3c9b..f155a7cc89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -670,7 +670,7 @@ dependencies = [ [[package]] name = "finality-grandpa" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2196,6 +2196,33 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_isaac 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_core" version = "0.2.2" @@ -2209,6 +2236,39 @@ name = "rand_core" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_isaac" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_pcg" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rayon" version = "0.8.2" @@ -3238,12 +3298,13 @@ name = "substrate-finality-grandpa" version = "0.1.0" dependencies = [ "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "finality-grandpa 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "finality-grandpa 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-consensus-common 0.1.0", @@ -4440,7 +4501,7 @@ dependencies = [ "checksum failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "64c2d913fe8ed3b6c6518eedf4538255b989945c14c2a7d5cbff62a5e2120596" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" -"checksum finality-grandpa 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "be6d2735e8f570474c7925a60ebe04ec0bdd9eea7cc4fddab78a0ecfdefec20e" +"checksum finality-grandpa 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc88b8ddddcf3f998b8196d93c3ce31427c5b241cfe6c5a342e2a3f5d13ecbb" "checksum fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a557e80084b05c32b455963ff565a9de6f2866da023d6671705c6aff6f65e01c" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" @@ -4582,8 +4643,14 @@ dependencies = [ "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" "checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" +"checksum rand 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de3f08319b5395bd19b70e73c4c465329495db02dafeb8ca711a20f1c2bd058c" +"checksum rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "771b009e3a508cb67e8823dda454aaa5368c7bc1c16829fb77d3e980440dd34a" "checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" "checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" +"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_isaac 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d6ecfe9ebf36acd47a49d150990b047a5f7db0a7236ee2414b7ff5cc1097c7b" +"checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" +"checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" "checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" diff --git a/core/client/src/lib.rs b/core/client/src/lib.rs index 58fced9687..a73671ca47 100644 --- a/core/client/src/lib.rs +++ b/core/client/src/lib.rs @@ -106,7 +106,7 @@ pub use client::{ new_with_backend, new_in_mem, BlockBody, BlockStatus, ImportNotifications, FinalityNotifications, BlockchainEvents, - Client, ClientInfo, ChainHead, + BlockImportNotification, Client, ClientInfo, ChainHead, }; #[cfg(feature = "std")] pub use notifications::{StorageEventStream, StorageChangeSet}; diff --git a/core/finality-grandpa/Cargo.toml b/core/finality-grandpa/Cargo.toml index 9fe2776744..6bf16e77d2 100644 --- a/core/finality-grandpa/Cargo.toml +++ b/core/finality-grandpa/Cargo.toml @@ -17,9 +17,10 @@ log = "0.4" parking_lot = "0.4" tokio = "0.1.7" substrate-finality-grandpa-primitives = { path = "primitives" } +rand = "0.6" [dependencies.finality-grandpa] -version = "0.3.0" +version = "0.4.0" features = ["derive-codec"] [dev-dependencies] diff --git a/core/finality-grandpa/src/communication.rs b/core/finality-grandpa/src/communication.rs new file mode 100644 index 0000000000..8e06a0e7ca --- /dev/null +++ b/core/finality-grandpa/src/communication.rs @@ -0,0 +1,281 @@ +// Copyright 2017-2018 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 . + +//! Incoming message streams that verify signatures, and outgoing message streams +//! that sign or re-shape. + +use futures::prelude::*; +use futures::sync::mpsc; +use codec::{Encode, Decode}; +use substrate_primitives::{ed25519, AuthorityId}; +use runtime_primitives::traits::Block as BlockT; +use {Error, Network, Message, SignedMessage, Commit, CompactCommit}; + +use std::collections::HashMap; +use std::sync::Arc; + +fn localized_payload(round: u64, set_id: u64, message: &E) -> Vec { + (message, round, set_id).encode() +} + +// check a message. +fn check_message_sig( + message: &Message, + id: &AuthorityId, + signature: &ed25519::Signature, + round: u64, + set_id: u64, +) -> Result<(), ()> { + let as_public = ::ed25519::Public::from_raw(id.0); + let encoded_raw = localized_payload(round, set_id, message); + if ::ed25519::verify_strong(signature, &encoded_raw, as_public) { + Ok(()) + } else { + debug!(target: "afg", "Bad signature on message from {:?}", id); + Err(()) + } +} + +/// converts a message stream into a stream of signed messages. +/// the output stream checks signatures also. +pub(crate) fn checked_message_stream( + round: u64, + set_id: u64, + inner: S, + voters: Arc>, +) + -> impl Stream,Error=Error> where + S: Stream,Error=()> +{ + inner + .filter_map(|raw| { + let decoded = SignedMessage::::decode(&mut &raw[..]); + if decoded.is_none() { + debug!(target: "afg", "Skipping malformed message {:?}", raw); + } + decoded + }) + .and_then(move |msg| { + // check signature. + if !voters.contains_key(&msg.id) { + debug!(target: "afg", "Skipping message from unknown voter {}", msg.id); + return Ok(None); + } + + // we ignore messages where the signature doesn't check out. + let res = check_message_sig::( + &msg.message, + &msg.id, + &msg.signature, + round, + set_id + ); + Ok(res.map(move |()| msg).ok()) + }) + .filter_map(|x| x) + .map_err(|()| Error::Network(format!("Failed to receive message on unbounded stream"))) +} + +struct OutgoingMessages { + round: u64, + set_id: u64, + locals: Option<(Arc, AuthorityId)>, + sender: mpsc::UnboundedSender>, + network: N, +} + +impl Sink for OutgoingMessages { + type SinkItem = Message; + type SinkError = Error; + + fn start_send(&mut self, msg: Message) -> StartSend, Error> { + // when locals exist, sign messages on import + if let Some((ref pair, local_id)) = self.locals { + let encoded = localized_payload(self.round, self.set_id, &msg); + let signature = pair.sign(&encoded[..]); + let signed = SignedMessage:: { + message: msg, + signature, + id: local_id, + }; + + // forward to network and to inner sender. + self.network.send_message(self.round, self.set_id, signed.encode()); + let _ = self.sender.unbounded_send(signed); + } + + Ok(AsyncSink::Ready) + } + + fn poll_complete(&mut self) -> Poll<(), Error> { Ok(Async::Ready(())) } + + fn close(&mut self) -> Poll<(), Error> { + // ignore errors since we allow this inner sender to be closed already. + self.sender.close().or_else(|_| Ok(Async::Ready(()))) + } +} + +impl Drop for OutgoingMessages { + fn drop(&mut self) { + self.network.drop_messages(self.round, self.set_id); + } +} + +/// A sink for outgoing messages. This signs the messages with the key, +/// if we are an authority. A stream for the signed messages is also returned. +/// +/// A future can push unsigned messages into the sink. They will be automatically +/// broadcast to the network. The returned stream should be combined with other input. +pub(crate) fn outgoing_messages( + round: u64, + set_id: u64, + local_key: Option>, + voters: Arc>, + network: N, +) -> ( + impl Stream,Error=Error>, + impl Sink,SinkError=Error>, +) { + let locals = local_key.and_then(|pair| { + let public = pair.public(); + let id = AuthorityId(public.0); + if voters.contains_key(&id) { + Some((pair, id)) + } else { + None + } + }); + + let (tx, rx) = mpsc::unbounded(); + let outgoing = OutgoingMessages:: { + round, + set_id, + network, + locals, + sender: tx, + }; + + let rx = rx.map_err(move |()| Error::Network( + format!("Failed to receive on unbounded receiver for round {}", round) + )); + + (rx, outgoing) +} + +fn check_compact_commit( + msg: CompactCommit, + voters: &HashMap, + round: u64, + set_id: u64, +) -> Option> { + use grandpa::Message as GrandpaMessage; + if msg.precommits.len() != msg.auth_data.len() || msg.precommits.is_empty() { + debug!(target: "afg", "Skipping malformed compact commit"); + return None; + } + + // check signatures on all contained precommits. + for (precommit, &(ref sig, ref id)) in msg.precommits.iter().zip(&msg.auth_data) { + if !voters.contains_key(id) { + debug!(target: "afg", "Skipping commit containing unknown voter {}", id); + return None; + } + + let res = check_message_sig::( + &GrandpaMessage::Precommit(precommit.clone()), + id, + sig, + round, + set_id, + ); + + if let Err(()) = res { + debug!(target: "afg", "Skipping commit containing bad message"); + return None; + } + } + + Some(msg) +} + +/// A stream for incoming commit messages. This checks all the signatures on the +/// messages. +pub(crate) fn checked_commit_stream( + set_id: u64, + inner: S, + voters: Arc>, +) + -> impl Stream),Error=Error> where + S: Stream,Error=()> +{ + inner + .filter_map(|raw| { + // this could be optimized by decoding piecewise. + let decoded = <(u64, CompactCommit)>::decode(&mut &raw[..]); + if decoded.is_none() { + trace!(target: "afg", "Skipping malformed commit message {:?}", raw); + } + decoded + }) + .filter_map(move |(round, msg)| { + check_compact_commit::(msg, &*voters, round, set_id).map(move |c| (round, c)) + }) + .map_err(|()| Error::Network(format!("Failed to receive message on unbounded stream"))) +} + +/// An output sink for commit messages. +pub(crate) struct CommitsOut { + network: N, + set_id: u64, + _marker: ::std::marker::PhantomData, +} + +impl CommitsOut { + /// Create a new commit output stream. + pub(crate) fn new(network: N, set_id: u64) -> Self { + CommitsOut { + network, + set_id, + _marker: Default::default(), + } + } +} + +impl Sink for CommitsOut { + type SinkItem = (u64, Commit); + type SinkError = Error; + + fn start_send(&mut self, input: (u64, Commit)) -> StartSend { + let (round, commit) = input; + let (precommits, auth_data) = commit.precommits.into_iter() + .map(|signed| (signed.precommit, (signed.signature, signed.id))) + .unzip(); + + let compact_commit = CompactCommit:: { + target_hash: commit.target_hash, + target_number: commit.target_number, + precommits, + auth_data + }; + + self.network.send_commit(self.set_id, Encode::encode(&(round, compact_commit))); + + Ok(AsyncSink::Ready) + } + + fn close(&mut self) -> Poll<(), Error> { Ok(Async::Ready(())) } + fn poll_complete(&mut self) -> Poll<(), Error> { Ok(Async::Ready(())) } +} diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 956b87df0e..9b48f5aa51 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -61,6 +61,7 @@ extern crate tokio; extern crate parking_lot; extern crate parity_codec as codec; extern crate substrate_finality_grandpa_primitives as fg_primitives; +extern crate rand; #[macro_use] extern crate log; @@ -81,35 +82,40 @@ extern crate env_logger; extern crate parity_codec_derive; use futures::prelude::*; -use futures::stream::Fuse; use futures::sync::mpsc; -use client::{Client, error::Error as ClientError, ImportNotifications, backend::Backend, CallExecutor}; +use client::{ + Client, error::Error as ClientError, backend::Backend, CallExecutor, BlockchainEvents +}; use client::blockchain::HeaderBackend; use client::runtime_api::TaggedTransactionQueue; use codec::{Encode, Decode}; use consensus_common::{BlockImport, ImportBlock, ImportResult, Authorities}; use runtime_primitives::traits::{ - NumberFor, Block as BlockT, Header as HeaderT, DigestFor, ProvideRuntimeApi + NumberFor, Block as BlockT, Header as HeaderT, DigestFor, ProvideRuntimeApi, Hash as HashT, }; use fg_primitives::GrandpaApi; use runtime_primitives::generic::BlockId; use substrate_primitives::{ed25519, H256, AuthorityId, Blake2Hasher}; -use tokio::timer::Interval; +use tokio::timer::Delay; use grandpa::Error as GrandpaError; use grandpa::{voter, round::State as RoundState, Equivocation, BlockNumberOps}; use network::{Service as NetworkService, ExHashT}; use network::consensus_gossip::{ConsensusMessage}; -use std::collections::{VecDeque, HashMap}; +use std::collections::HashMap; +use std::fmt; use std::sync::Arc; use std::time::{Instant, Duration}; use authorities::SharedAuthoritySet; +use until_imported::{UntilCommitBlocksImported, UntilVoteTargetImported}; pub use fg_primitives::ScheduledChange; mod authorities; +mod communication; +mod until_imported; #[cfg(feature="service-integration")] mod service_integration; @@ -138,6 +144,20 @@ pub type SignedMessage = grandpa::SignedMessage< pub type Prevote = grandpa::Prevote<::Hash, NumberFor>; /// A precommit message for this chain's block type. pub type Precommit = grandpa::Precommit<::Hash, NumberFor>; +/// A commit message for this chain's block type. +pub type Commit = grandpa::Commit< + ::Hash, + NumberFor, + ed25519::Signature, + AuthorityId +>; +/// A compact commit message for this chain's block type. +pub type CompactCommit = grandpa::CompactCommit< + ::Hash, + NumberFor, + ed25519::Signature, + AuthorityId +>; /// Configuration for the GRANDPA service. #[derive(Clone)] @@ -181,7 +201,7 @@ impl From for Error { /// handle to a gossip service or similar. /// /// Intended to be a lightweight handle such as an `Arc`. -pub trait Network : Clone { +pub trait Network: Clone { /// A stream of input messages for a topic. type In: Stream,Error=()>; @@ -194,6 +214,13 @@ pub trait Network : Clone { /// Clean up messages for a round. fn drop_messages(&self, round: u64, set_id: u64); + + /// Get a stream of commit messages for a specific set-id. This stream + /// should never logically conclude. + fn commit_messages(&self, set_id: u64) -> Self::In; + + /// Send message over the commit channel. + fn send_commit(&self, set_id: u64, message: Vec); } /// Bridge between NetworkService, gossiping consensus messages and Grandpa @@ -208,7 +235,6 @@ impl, H: ExHashT } } - impl, H: ExHashT> Clone for NetworkBridge { fn clone(&self) -> Self { NetworkBridge { @@ -218,10 +244,13 @@ impl, H: ExHashT } fn message_topic(round: u64, set_id: u64) -> B::Hash { - use runtime_primitives::traits::Hash as HashT; <::Hashing as HashT>::hash(format!("{}-{}", set_id, round).as_bytes()) } +fn commit_topic(set_id: u64) -> B::Hash { + <::Hashing as HashT>::hash(format!("{}-COMMITS", set_id).as_bytes()) +} + impl, H: ExHashT> Network for NetworkBridge { type In = mpsc::UnboundedReceiver; fn messages_for(&self, round: u64, set_id: u64) -> Self::In { @@ -240,6 +269,18 @@ impl, H: ExHashT let topic = message_topic::(round, set_id); self.service.consensus_gossip().write().collect_garbage(|t| t == &topic); } + + fn commit_messages(&self, set_id: u64) -> Self::In { + self.service.consensus_gossip().write().messages_for(commit_topic::(set_id)) + } + + fn send_commit(&self, set_id: u64, message: Vec) { + let topic = commit_topic::(set_id); + let gossip = self.service.consensus_gossip(); + self.service.with_spec(move |_s, context|{ + gossip.write().multicast(context, topic, message); + }); + } } /// Something which can determine if a block is known. @@ -262,269 +303,6 @@ impl, RA> BlockStatus for Arc { - import_notifications: Fuse>, - status_check: Status, - inner: Fuse, - ready: VecDeque>, - check_pending: Interval, - pending: HashMap>>, -} - -impl, I: Stream> UntilImported { - fn new( - import_notifications: ImportNotifications, - status_check: Status, - stream: I, - ) -> Self { - // how often to check if pending messages that are waiting for blocks to be - // imported can be checked. - // - // the import notifications interval takes care of most of this; this is - // used in the event of missed import notifications - const CHECK_PENDING_INTERVAL: Duration = Duration::from_secs(5); - let now = Instant::now(); - - let check_pending = Interval::new(now + CHECK_PENDING_INTERVAL, CHECK_PENDING_INTERVAL); - UntilImported { - import_notifications: import_notifications.fuse(), - status_check, - inner: stream.fuse(), - ready: VecDeque::new(), - check_pending, - pending: HashMap::new(), - } - } -} - -impl, I> Stream for UntilImported - where I: Stream,Error=Error> -{ - type Item = SignedMessage; - type Error = Error; - - fn poll(&mut self) -> Poll>, Error> { - loop { - match self.inner.poll() { - Err(e) => return Err(e), - Ok(Async::Ready(None)) => return Ok(Async::Ready(None)), - Ok(Async::Ready(Some(signed_message))) => { - let (&target_hash, target_number) = signed_message.target(); - - // new message: hold it until the block is known. - if let Some(number) = self.status_check.block_number(target_hash)? { - if number != target_number { - warn!( - target: "afg", - "Authority {:?} signed GRANDPA message with \ - wrong block number for hash {}", - signed_message.id, - target_hash - ); - } else { - self.ready.push_back(signed_message) - } - } else { - self.pending.entry(target_hash) - .or_insert_with(Vec::new) - .push(signed_message); - } - } - Ok(Async::NotReady) => break, - } - } - - loop { - match self.import_notifications.poll() { - Err(_) => return Err(Error::Network(format!("Failed to get new message"))), - Ok(Async::Ready(None)) => return Ok(Async::Ready(None)), - Ok(Async::Ready(Some(notification))) => { - // new block imported. queue up all messages tied to that hash. - if let Some(messages) = self.pending.remove(¬ification.hash) { - self.ready.extend(messages); - } - } - Ok(Async::NotReady) => break, - } - } - - let mut update_interval = false; - while let Async::Ready(Some(_)) = self.check_pending.poll().map_err(Error::Timer)? { - update_interval = true; - } - - if update_interval { - let mut known_keys = Vec::new(); - for &block_hash in self.pending.keys() { - if let Some(number) = self.status_check.block_number(block_hash)? { - known_keys.push((block_hash, number)); - } - } - - for (known_hash, canon_number) in known_keys { - if let Some(mut pending_messages) = self.pending.remove(&known_hash) { - // verify canonicality of pending messages. - pending_messages.retain(|msg| { - let number_correct = msg.target().1 == canon_number; - if !number_correct { - warn!( - target: "afg", - "Authority {:?} signed GRANDPA message with \ - wrong block number for hash {}", - msg.id, - known_hash, - ); - } - number_correct - }); - self.ready.extend(pending_messages); - } - } - } - - if let Some(ready) = self.ready.pop_front() { - return Ok(Async::Ready(Some(ready))) - } - - if self.import_notifications.is_done() && self.inner.is_done() { - Ok(Async::Ready(None)) - } else { - Ok(Async::NotReady) - } - } -} - -// clears the network messages for inner round on drop. -struct ClearOnDrop { - round: u64, - set_id: u64, - inner: I, - network: N, -} - -impl Sink for ClearOnDrop { - type SinkItem = I::SinkItem; - type SinkError = I::SinkError; - - fn start_send(&mut self, item: Self::SinkItem) -> StartSend { - self.inner.start_send(item) - } - - fn poll_complete(&mut self) -> Poll<(), Self::SinkError> { - self.inner.poll_complete() - } - - fn close(&mut self) -> Poll<(), Self::SinkError> { - self.inner.close() - } -} - -impl Drop for ClearOnDrop { - fn drop(&mut self) { - self.network.drop_messages(self.round, self.set_id); - } -} - -fn localized_payload(round: u64, set_id: u64, message: &E) -> Vec { - let mut v = message.encode(); - - round.using_encoded(|s| v.extend(s)); - set_id.using_encoded(|s| v.extend(s)); - - v -} - -// converts a message stream into a stream of signed messages. -// the output stream checks signatures also. -fn checked_message_stream( - round: u64, - set_id: u64, - inner: S, - voters: Arc>, -) - -> impl Stream,Error=Error> where - S: Stream,Error=()> -{ - inner - .filter_map(|raw| { - let decoded = SignedMessage::::decode(&mut &raw[..]); - if decoded.is_none() { - debug!(target: "afg", "Skipping malformed message {:?}", raw); - } - decoded - }) - .and_then(move |msg| { - // check signature. - if !voters.contains_key(&msg.id) { - debug!(target: "afg", "Skipping message from unknown voter {}", msg.id); - return Ok(None); - } - - let as_public = ::ed25519::Public::from_raw(msg.id.0); - let encoded_raw = localized_payload(round, set_id, &msg.message); - if ::ed25519::verify_strong(&msg.signature, &encoded_raw, as_public) { - Ok(Some(msg)) - } else { - debug!(target: "afg", "Skipping message with bad signature"); - Ok(None) - } - }) - .filter_map(|x| x) - .map_err(|()| Error::Network(format!("Failed to receive message on unbounded stream"))) -} - -fn outgoing_messages( - round: u64, - set_id: u64, - local_key: Option>, - voters: Arc>, - network: N, -) -> ( - impl Stream,Error=Error>, - impl Sink,SinkError=Error>, -) { - let locals = local_key.and_then(|pair| { - let public = pair.public(); - let id = AuthorityId(public.0); - if voters.contains_key(&id) { - Some((pair, id)) - } else { - None - } - }); - - let (tx, rx) = mpsc::unbounded(); - let rx = rx - .map(move |msg: Message| { - // when locals exist, sign messages on import - if let Some((ref pair, local_id)) = locals { - let encoded = localized_payload(round, set_id, &msg); - let signature = pair.sign(&encoded[..]); - let signed = SignedMessage:: { - message: msg, - signature, - id: local_id, - }; - - // forward to network. - network.send_message(round, set_id, signed.encode()); - Some(signed) - } else { - None - } - }) - .filter_map(|x| x) - .map_err(move |()| Error::Network( - format!("Failed to receive on unbounded receiver for round {}", round) - )); - - let tx = tx.sink_map_err(move |e| Error::Network(format!("Failed to broadcast message \ - to network in round {}: {:?}", round, e))); - - (rx, tx) -} - /// The environment we run GRANDPA in. struct Environment { inner: Arc>, @@ -633,6 +411,17 @@ impl From for ExitOrError { } } +impl ::std::error::Error for ExitOrError { } + +impl fmt::Display for ExitOrError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match *self { + ExitOrError::Error(ref e) => write!(f, "{:?}", e), + ExitOrError::AuthoritiesChanged(_) => write!(f, "restarting voter on new authorities"), + } + } +} + impl, N, RA> voter::Environment> for Environment where Block: 'static, B: Backend + 'static, @@ -645,6 +434,8 @@ impl, N, RA> voter::Environment + Send>; type Id = AuthorityId; type Signature = ed25519::Signature; + + // regular round message streams type In = Box, Self::Signature, Self::Id>, Error = Self::Error, @@ -653,29 +444,26 @@ impl, N, RA> voter::Environment>, SinkError = Self::Error, > + Send>; + type Error = ExitOrError>; - #[allow(unreachable_code)] fn round_data( &self, round: u64 - ) -> voter::RoundData { - use client::BlockchainEvents; - use tokio::timer::Delay; - + ) -> voter::RoundData { let now = Instant::now(); let prevote_timer = Delay::new(now + self.config.gossip_duration * 2); let precommit_timer = Delay::new(now + self.config.gossip_duration * 4); // TODO: dispatch this with `mpsc::spawn`. - let incoming = checked_message_stream::( + let incoming = ::communication::checked_message_stream::( round, self.set_id, self.network.messages_for(round, self.set_id), self.voters.clone(), ); - let (out_rx, outgoing) = outgoing_messages::( + let (out_rx, outgoing) = ::communication::outgoing_messages::( round, self.set_id, self.config.local_key.clone(), @@ -685,7 +473,7 @@ impl, N, RA> voter::Environment, N, RA> voter::Environment, N, RA> voter::Environment) -> Result<(), Self::Error> { + fn finalize_block(&self, hash: Block::Hash, number: NumberFor, _commit: Commit) -> Result<(), Self::Error> { // ideally some handle to a synchronization oracle would be used // to avoid unconditionally notifying. if let Err(e) = self.inner.finalize_block(BlockId::Hash(hash), true) { @@ -794,6 +576,7 @@ impl, N, RA> voter::Environment, N, RA> voter::Environment Self::Timer { + use rand::{thread_rng, Rng}; + + //random between 0-1 seconds. + let delay: u64 = thread_rng().gen_range(0, 1000); + Box::new(Delay::new( + Instant::now() + Duration::from_millis(delay) + ).map_err(|e| Error::Timer(e).into())) + } + fn prevote_equivocation( &self, _round: u64, @@ -969,6 +762,52 @@ pub fn block_import, RA, PRA>( )) } +fn committer_communication, B, E, N, RA>( + set_id: u64, + voters: &Arc>, + client: &Arc>, + network: &N, +) -> ( + impl Stream< + Item = (u64, ::grandpa::CompactCommit, ed25519::Signature, AuthorityId>), + Error = ExitOrError>, + >, + impl Sink< + SinkItem = (u64, ::grandpa::Commit, ed25519::Signature, AuthorityId>), + SinkError = ExitOrError>, + >, +) where + B: Backend, + E: CallExecutor + Send + Sync, + N: Network, + RA: Send + Sync, + NumberFor: BlockNumberOps, +{ + // verification stream + let commit_in = ::communication::checked_commit_stream::( + set_id, + network.commit_messages(set_id), + voters.clone(), + ); + + // block commit messages until relevant blocks are imported. + let commit_in = UntilCommitBlocksImported::new( + client.import_notification_stream(), + client.clone(), + commit_in, + ); + + let commit_out = ::communication::CommitsOut::::new( + network.clone(), + set_id, + ); + + let commit_in = commit_in.map_err(Into::into); + let commit_out = commit_out.sink_map_err(Into::into); + + (commit_in, commit_out) +} + /// Run a GRANDPA voter as a task. Provide configuration and a link to a /// block import worker that has already been instantiated with `block_import`. pub fn run_grandpa, N, RA>( @@ -1027,7 +866,23 @@ pub fn run_grandpa, N, RA>( chain_info.chain.finalized_number, ); - let voter = voter::Voter::new(env, last_round_number, last_state, last_finalized); + let committer_data = committer_communication( + env.set_id, + &env.voters, + &client, + &network, + ); + + let voters = (*env.voters).clone(); + + let voter = voter::Voter::new( + env, + voters, + committer_data, + last_round_number, + last_state, + last_finalized, + ); let client = client.clone(); let config = config.clone(); let network = network.clone(); diff --git a/core/finality-grandpa/src/tests.rs b/core/finality-grandpa/src/tests.rs index ef5228e0fc..c8ba80098d 100644 --- a/core/finality-grandpa/src/tests.rs +++ b/core/finality-grandpa/src/tests.rs @@ -157,6 +157,21 @@ fn make_topic(round: u64, set_id: u64) -> Hash { hash } +fn make_commit_topic(set_id: u64) -> Hash { + let mut hash = Hash::default(); + + { + let raw = hash.as_mut(); + raw[16..22].copy_from_slice(b"commit"); + } + set_id.using_encoded(|s| { + let raw = hash.as_mut(); + raw[24..].copy_from_slice(s); + }); + + hash +} + impl Network for MessageRouting { type In = Box,Error=()> + Send>; @@ -190,6 +205,27 @@ impl Network for MessageRouting { gossip.collect_garbage(|t| t == &topic) }); } + + fn commit_messages(&self, set_id: u64) -> Self::In { + let inner = self.inner.lock(); + let peer = inner.peer(self.peer_id); + let mut gossip = peer.consensus_gossip().write(); + let messages = peer.with_spec(move |_, _| { + gossip.messages_for(make_commit_topic(set_id)) + }); + + let messages = messages.map_err( + move |_| panic!("Commit messages for set {} dropped too early", set_id) + ); + + Box::new(messages) + } + + fn send_commit(&self, set_id: u64, message: Vec) { + let mut inner = self.inner.lock(); + inner.peer(self.peer_id).gossip_message(make_commit_topic(set_id), message); + inner.route_until_complete(); + } } #[derive(Default, Clone)] diff --git a/core/finality-grandpa/src/until_imported.rs b/core/finality-grandpa/src/until_imported.rs new file mode 100644 index 0000000000..aba0472131 --- /dev/null +++ b/core/finality-grandpa/src/until_imported.rs @@ -0,0 +1,560 @@ +// Copyright 2017-2018 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 . + +//! Helper stream for waiting until one or more blocks are imported before +//! passing through inner items. This is done in a generic way to support +//! many different kinds of items. +//! +//! This is used for votes and commit messages currently. + +use super::{BlockStatus, Error, SignedMessage, CompactCommit}; + +use client::ImportNotifications; +use futures::prelude::*; +use futures::stream::Fuse; +use parking_lot::Mutex; +use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, NumberFor}; +use substrate_primitives::AuthorityId; +use tokio::timer::Interval; + +use std::collections::{HashMap, VecDeque}; +use std::sync::{atomic::{AtomicUsize, Ordering}, Arc}; +use std::time::{Duration, Instant}; + +// something which will block until imported. +pub(crate) trait BlockUntilImported: Sized { + // the type that is blocked on. + type Blocked; + + /// new incoming item. For all internal items, + /// check if they require to be waited for. + /// if so, call the `Wait` closure. + /// if they are ready, call the `Ready` closure. + fn schedule_wait( + input: Self::Blocked, + status_check: &S, + wait: Wait, + ready: Ready, + ) -> Result<(), Error> where + S: BlockStatus, + Wait: FnMut(Block::Hash, Self), + Ready: FnMut(Self::Blocked); + + /// called when the wait has completed. The canonical number is passed through + /// for further checks. + fn wait_completed(self, canon_number: NumberFor) -> Option; +} + +/// Buffering imported messages until blocks with given hashes are imported. +pub(crate) struct UntilImported> { + import_notifications: Fuse>, + status_check: Status, + inner: Fuse, + ready: VecDeque, + check_pending: Interval, + pending: HashMap>, +} + +impl UntilImported + where Status: BlockStatus, M: BlockUntilImported +{ + /// Create a new `UntilImported` wrapper. + pub(crate) fn new( + import_notifications: ImportNotifications, + status_check: Status, + stream: I, + ) -> Self { + // how often to check if pending messages that are waiting for blocks to be + // imported can be checked. + // + // the import notifications interval takes care of most of this; this is + // used in the event of missed import notifications + const CHECK_PENDING_INTERVAL: Duration = Duration::from_secs(5); + let now = Instant::now(); + + let check_pending = Interval::new(now + CHECK_PENDING_INTERVAL, CHECK_PENDING_INTERVAL); + UntilImported { + import_notifications: import_notifications.fuse(), + status_check, + inner: stream.fuse(), + ready: VecDeque::new(), + check_pending, + pending: HashMap::new(), + } + } +} + +impl Stream for UntilImported where + Status: BlockStatus, + I: Stream, + M: BlockUntilImported, +{ + type Item = M::Blocked; + type Error = Error; + + fn poll(&mut self) -> Poll, Error> { + loop { + match self.inner.poll()? { + Async::Ready(None) => return Ok(Async::Ready(None)), + Async::Ready(Some(input)) => { + // new input: schedule wait of any parts which require + // blocks to be known. + let mut ready = &mut self.ready; + let mut pending = &mut self.pending; + M::schedule_wait( + input, + &self.status_check, + |target_hash, wait| pending + .entry(target_hash) + .or_insert_with(Vec::new) + .push(wait), + |ready_item| ready.push_back(ready_item), + )?; + } + Async::NotReady => break, + } + } + + loop { + match self.import_notifications.poll() { + Err(_) => return Err(Error::Network(format!("Failed to get new message"))), + Ok(Async::Ready(None)) => return Ok(Async::Ready(None)), + Ok(Async::Ready(Some(notification))) => { + // new block imported. queue up all messages tied to that hash. + if let Some(messages) = self.pending.remove(¬ification.hash) { + let canon_number = notification.header.number().clone(); + let ready_messages = messages.into_iter() + .filter_map(|m| m.wait_completed(canon_number)); + + self.ready.extend(ready_messages); + } + } + Ok(Async::NotReady) => break, + } + } + + let mut update_interval = false; + while let Async::Ready(Some(_)) = self.check_pending.poll().map_err(Error::Timer)? { + update_interval = true; + } + + if update_interval { + let mut known_keys = Vec::new(); + for &block_hash in self.pending.keys() { + if let Some(number) = self.status_check.block_number(block_hash)? { + known_keys.push((block_hash, number)); + } + } + + for (known_hash, canon_number) in known_keys { + if let Some(pending_messages) = self.pending.remove(&known_hash) { + let ready_messages = pending_messages.into_iter() + .filter_map(|m| m.wait_completed(canon_number)); + + self.ready.extend(ready_messages); + } + } + } + + if let Some(ready) = self.ready.pop_front() { + return Ok(Async::Ready(Some(ready))) + } + + if self.import_notifications.is_done() && self.inner.is_done() { + Ok(Async::Ready(None)) + } else { + Ok(Async::NotReady) + } + } +} + +fn warn_authority_wrong_target(hash: H, id: AuthorityId) { + warn!( + target: "afg", + "Authority {:?} signed GRANDPA message with \ + wrong block number for hash {}", + id, + hash, + ); +} + +impl BlockUntilImported for SignedMessage { + type Blocked = Self; + + fn schedule_wait( + msg: Self::Blocked, + status_check: &S, + mut wait: Wait, + mut ready: Ready, + ) -> Result<(), Error> where + S: BlockStatus, + Wait: FnMut(Block::Hash, Self), + Ready: FnMut(Self::Blocked), + { + let (&target_hash, target_number) = msg.target(); + + if let Some(number) = status_check.block_number(target_hash)? { + if number != target_number { + warn_authority_wrong_target(target_hash, msg.id); + } else { + ready(msg); + } + } else { + wait(target_hash, msg) + } + + Ok(()) + } + + fn wait_completed(self, canon_number: NumberFor) -> Option { + let (&target_hash, target_number) = self.target(); + if canon_number != target_number { + warn_authority_wrong_target(target_hash, self.id); + + None + } else { + Some(self) + } + } +} + +/// Helper type definition for the stream which waits until vote targets for +/// signed messages are imported. +pub(crate) type UntilVoteTargetImported = UntilImported>; + +/// This blocks a commit message's import until all blocks +/// referenced in its votes are known. +/// +/// This is used for compact commits which have already been checked for +/// structural soundness. +pub(crate) struct BlockCommitMessage { + inner: Arc<(AtomicUsize, Mutex)>>)>, + target_number: NumberFor, +} + +impl BlockUntilImported for BlockCommitMessage { + type Blocked = (u64, CompactCommit); + + fn schedule_wait( + input: Self::Blocked, + status_check: &S, + mut wait: Wait, + mut ready: Ready, + ) -> Result<(), Error> where + S: BlockStatus, + Wait: FnMut(Block::Hash, Self), + Ready: FnMut(Self::Blocked), + { + use std::collections::hash_map::Entry; + + enum KnownOrUnknown { + Known(N), + Unknown(N), + } + + impl KnownOrUnknown { + fn number(&self) -> &N { + match *self { + KnownOrUnknown::Known(ref n) => n, + KnownOrUnknown::Unknown(ref n) => n, + } + } + } + + let mut checked_hashes: HashMap<_, KnownOrUnknown>> = HashMap::new(); + let mut unknown_count = 0; + + { + // returns false when should early exit. + let mut query_known = |target_hash, perceived_number| -> Result { + // check integrity: all precommits for same hash have same number. + let canon_number = match checked_hashes.entry(target_hash) { + Entry::Occupied(entry) => entry.get().number().clone(), + Entry::Vacant(mut entry) => { + if let Some(number) = status_check.block_number(target_hash)? { + entry.insert(KnownOrUnknown::Known(number)); + number + + } else { + entry.insert(KnownOrUnknown::Unknown(perceived_number)); + unknown_count += 1; + perceived_number + } + } + }; + + if canon_number != perceived_number { + // invalid commit: messages targeting wrong number or + // at least different from other vote. in same commit. + return Ok(false); + } + + Ok(true) + }; + + let commit = &input.1; + + // add known hashes from the precommits. + for precommit in &commit.precommits { + let target_number = precommit.target_number; + let target_hash = precommit.target_hash; + + if !query_known(target_hash, target_number)? { + return Ok(()) + } + } + + // see if commit target hash is known. + if !query_known(commit.target_hash, commit.target_number)? { + return Ok(()) + } + } + + // none of the hashes in the commit message were unknown. + // we can just return the commit directly. + if unknown_count == 0 { + ready(input); + return Ok(()) + } + + let locked_commit = Arc::new((AtomicUsize::new(unknown_count), Mutex::new(Some(input)))); + + // schedule waits for all unknown messages. + // when the last one of these has `wait_completed` called on it, + // the commit will be returned. + // + // in the future, we may want to issue sync requests to the network + // if this is taking a long time. + for (hash, is_known) in checked_hashes { + if let KnownOrUnknown::Unknown(target_number) = is_known { + wait(hash, BlockCommitMessage { + inner: locked_commit.clone(), + target_number, + }) + } + } + + Ok(()) + } + + fn wait_completed(self, canon_number: NumberFor) -> Option { + if self.target_number != canon_number { + // if we return without deducting the counter, then none of the other + // handles can return the commit message. + return None; + } + + let mut last_count = self.inner.0.load(Ordering::Acquire); + + // CAS loop to ensure that we always have a last reader. + loop { + if last_count == 1 { // we are the last one left. + return self.inner.1.lock().take(); + } + + let prev_value = self.inner.0.compare_and_swap( + last_count, + last_count - 1, + Ordering::SeqCst, + ); + + if prev_value == last_count { + return None; + } else { + last_count = prev_value; + } + } + } +} + +/// A stream which gates off incoming commit messages until all referenced +/// block hashes have been imported. +pub(crate) type UntilCommitBlocksImported = UntilImported< + Block, + Status, + I, + BlockCommitMessage, +>; + +#[cfg(test)] +mod tests { + use super::*; + use tokio::runtime::current_thread::Runtime; + use tokio::timer::Delay; + use test_client::runtime::{Block, Hash, Header}; + use consensus_common::BlockOrigin; + use client::BlockImportNotification; + use futures::future::Either; + use futures::sync::mpsc; + use grandpa::Precommit; + + #[derive(Clone)] + struct TestChainState { + sender: mpsc::UnboundedSender>, + known_blocks: Arc>>, + } + + impl TestChainState { + fn new() -> (Self, ImportNotifications) { + let (tx, rx) = mpsc::unbounded(); + let state = TestChainState { + sender: tx, + known_blocks: Arc::new(Mutex::new(HashMap::new())), + }; + + (state, rx) + } + + fn block_status(&self) -> TestBlockStatus { + TestBlockStatus { inner: self.known_blocks.clone() } + } + + fn import_header(&self, header: Header) { + let hash = header.hash(); + let number = header.number().clone(); + + self.known_blocks.lock().insert(hash, number); + self.sender.unbounded_send(BlockImportNotification { + hash, + origin: BlockOrigin::File, + header, + is_new_best: false, + tags: Vec::new(), + }).unwrap(); + } + } + + struct TestBlockStatus { + inner: Arc>>, + } + + impl BlockStatus for TestBlockStatus { + fn block_number(&self, hash: Hash) -> Result, Error> { + Ok(self.inner.lock().get(&hash).map(|x| x.clone())) + } + } + + fn make_header(number: u64) -> Header { + Header::new( + number, + Default::default(), + Default::default(), + Default::default(), + Default::default(), + ) + } + + #[test] + fn blocking_commit_message() { + let h1 = make_header(5); + let h2 = make_header(6); + let h3 = make_header(7); + + let (chain_state, import_notifications) = TestChainState::new(); + let block_status = chain_state.block_status(); + + let unknown_commit = CompactCommit:: { + target_hash: h1.hash(), + target_number: 5, + precommits: vec![ + Precommit { + target_hash: h2.hash(), + target_number: 6, + }, + Precommit { + target_hash: h3.hash(), + target_number: 7, + }, + ], + auth_data: Vec::new(), // not used + }; + + let (commit_tx, commit_rx) = mpsc::unbounded(); + + let until_imported = UntilCommitBlocksImported::new( + import_notifications, + block_status, + commit_rx.map_err(|_| panic!("should never error")), + ); + + commit_tx.unbounded_send((0, unknown_commit.clone())).unwrap(); + + let inner_chain_state = chain_state.clone(); + let work = until_imported + .into_future() + .select2(Delay::new(Instant::now() + Duration::from_millis(100))) + .then(move |res| match res { + Err(_) => panic!("neither should have had error"), + Ok(Either::A(_)) => panic!("timeout should have fired first"), + Ok(Either::B((_, until_imported))) => { + // timeout fired. push in the headers. + inner_chain_state.import_header(h1); + inner_chain_state.import_header(h2); + inner_chain_state.import_header(h3); + + until_imported + } + }); + + let mut runtime = Runtime::new().unwrap(); + assert_eq!(runtime.block_on(work).map_err(|(e, _)| e).unwrap().0, Some((0, unknown_commit))); + } + + #[test] + fn commit_message_all_known() { + let h1 = make_header(5); + let h2 = make_header(6); + let h3 = make_header(7); + + let (chain_state, import_notifications) = TestChainState::new(); + let block_status = chain_state.block_status(); + + let known_commit = CompactCommit:: { + target_hash: h1.hash(), + target_number: 5, + precommits: vec![ + Precommit { + target_hash: h2.hash(), + target_number: 6, + }, + Precommit { + target_hash: h3.hash(), + target_number: 7, + }, + ], + auth_data: Vec::new(), // not used + }; + + chain_state.import_header(h1); + chain_state.import_header(h2); + chain_state.import_header(h3); + + let (commit_tx, commit_rx) = mpsc::unbounded(); + + let until_imported = UntilCommitBlocksImported::new( + import_notifications, + block_status, + commit_rx.map_err(|_| panic!("should never error")), + ); + + commit_tx.unbounded_send((0, known_commit.clone())).unwrap(); + + let work = until_imported.into_future(); + + let mut runtime = Runtime::new().unwrap(); + assert_eq!(runtime.block_on(work).map_err(|(e, _)| e).unwrap().0, Some((0, known_commit))); + } +} -- GitLab From 41e9d3b4d21a0ea728ad31b3a21bb66460fd7ca0 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 27 Nov 2018 09:06:58 +0100 Subject: [PATCH 077/243] Simplify consensus message sending (#1166) * Create gossip_consensus_message helper on service, simplify consensus_gossip access --- core/finality-grandpa/src/lib.rs | 10 ++-------- core/network/src/protocol.rs | 8 +++++++- core/network/src/service.rs | 7 +++++++ core/network/src/test/mod.rs | 5 +---- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 9b48f5aa51..cea9653083 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -259,10 +259,7 @@ impl, H: ExHashT fn send_message(&self, round: u64, set_id: u64, message: Vec) { let topic = message_topic::(round, set_id); - let gossip = self.service.consensus_gossip(); - self.service.with_spec(move |_s, context|{ - gossip.write().multicast(context, topic, message); - }); + self.service.gossip_consensus_message(topic, message); } fn drop_messages(&self, round: u64, set_id: u64) { @@ -276,10 +273,7 @@ impl, H: ExHashT fn send_commit(&self, set_id: u64, message: Vec) { let topic = commit_topic::(set_id); - let gossip = self.service.consensus_gossip(); - self.service.with_spec(move |_s, context|{ - gossip.write().multicast(context, topic, message); - }); + self.service.gossip_consensus_message(topic, message); } } diff --git a/core/network/src/protocol.rs b/core/network/src/protocol.rs index 9b3a3965c1..cebda6c69c 100644 --- a/core/network/src/protocol.rs +++ b/core/network/src/protocol.rs @@ -224,7 +224,6 @@ impl, H: ExHashT> Protocol { &self.sync } - pub(crate) fn consensus_gossip<'a>(&'a self) -> &'a RwLock> { &self.consensus_gossip } @@ -297,6 +296,13 @@ impl, H: ExHashT> Protocol { send_message::(&self.context_data.peers, io, who, message) } + pub fn gossip_consensus_message(&self, io: &mut SyncIo, topic: B::Hash, message: Vec) { + let gossip = self.consensus_gossip(); + self.with_spec(io, move |_s, context|{ + gossip.write().multicast(context, topic, message); + }); + } + /// Called when a new peer is connected pub fn on_peer_connected(&self, io: &mut SyncIo, who: NodeIndex) { trace!(target: "sync", "Connected {}: {}", who, io.peer_debug_info(who)); diff --git a/core/network/src/service.rs b/core/network/src/service.rs index d5552f8520..d7d72dca8d 100644 --- a/core/network/src/service.rs +++ b/core/network/src/service.rs @@ -126,6 +126,13 @@ impl, H: ExHashT> Service) { + self.handler.gossip_consensus_message( + &mut NetSyncIo::new(&self.network, self.protocol_id), + topic, + message) + } /// Execute a closure with the chain-specific network specialization. pub fn with_spec(&self, f: F) -> U where F: FnOnce(&mut S, &mut Context) -> U diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index 6120cd2035..374e825bc8 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -229,10 +229,7 @@ impl, D> Peer { /// Push a message into the gossip network and relay to peers. /// `TestNet::sync_step` needs to be called to ensure it's propagated. pub fn gossip_message(&self, topic: Hash, data: Vec) { - let gossip = self.sync.consensus_gossip(); - self.sync.with_spec(&mut TestIo::new(&self.queue, None), move |_s, context|{ - gossip.write().multicast(context, topic, data); - }); + self.sync.gossip_consensus_message(&mut TestIo::new(&self.queue, None), topic, data); } /// Add blocks to the peer -- edit the block before adding -- GitLab From 8e8b8883beaf38db5766978406d965ba85190136 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 27 Nov 2018 09:25:27 +0100 Subject: [PATCH 078/243] Clean up CLI params (#1165) * Fix params: they are kebab not snake-cased * Fix docs missing in cli * remove unsed macro-use --- core/cli/src/lib.rs | 12 +-- core/cli/src/params.rs | 173 +++++++++++++++++++++++++++-------------- node/cli/build.rs | 4 - node/cli/src/lib.rs | 1 - 4 files changed, 122 insertions(+), 68 deletions(-) diff --git a/core/cli/src/lib.rs b/core/cli/src/lib.rs index 7aeec0899f..6220ceda87 100644 --- a/core/cli/src/lib.rs +++ b/core/cli/src/lib.rs @@ -338,17 +338,17 @@ where init_logger(log_pattern); fdlimit::raise_fd_limit(); - if let Some(matches) = matches.subcommand_matches("build_spec") { + if let Some(matches) = matches.subcommand_matches("build-spec") { build_spec::(matches, spec)?; return Ok(Action::ExecutedInternally); } - if let Some(matches) = matches.subcommand_matches("export_blocks") { + if let Some(matches) = matches.subcommand_matches("export-blocks") { export_blocks::(matches, spec, exit.into_exit())?; return Ok(Action::ExecutedInternally); } - if let Some(matches) = matches.subcommand_matches("import_blocks") { + if let Some(matches) = matches.subcommand_matches("import-blocks") { import_blocks::(matches, spec, exit.into_exit())?; return Ok(Action::ExecutedInternally); } @@ -394,7 +394,7 @@ fn export_blocks(matches: &clap::ArgMatches, spec: ChainSpec = match matches.value_of("OUTPUT") { + let file: Box = match matches.value_of("output") { Some(filename) => Box::new(File::create(filename)?), None => Box::new(stdout()), }; @@ -427,7 +427,7 @@ fn import_blocks(matches: &clap::ArgMatches, spec: ChainSpec = match matches.value_of("INPUT") { + let file: Box = match matches.value_of("input") { Some(filename) => Box::new(File::open(filename)?), None => Box::new(stdin()), }; @@ -442,7 +442,7 @@ fn revert_chain(matches: &clap::ArgMatches, spec: ChainSpec let mut config = service::Configuration::default_with_spec(spec); config.database_path = db_path(&base_path, config.chain_spec.id()).to_string_lossy().into(); - let blocks = match matches.value_of("NUM") { + let blocks = match matches.value_of("num") { Some(v) => v.parse().map_err(|_| "Invalid block count specified")?, None => 256, }; diff --git a/core/cli/src/params.rs b/core/cli/src/params.rs index a6e56f33f2..7211f206f8 100644 --- a/core/cli/src/params.rs +++ b/core/cli/src/params.rs @@ -17,92 +17,122 @@ use std::path::PathBuf; use structopt::StructOpt; +/// CLI Parameters provided by default #[derive(Debug, StructOpt)] #[structopt(name = "Substrate")] pub struct CoreParams { - #[structopt(short = "l", long = "log", value_name = "LOG_PATTERN", help = "Sets a custom logging filter")] + ///Sets a custom logging filter + #[structopt(short = "l", long = "log", value_name = "LOG_PATTERN")] log: Option, - #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path", parse(from_os_str))] + /// Specify custom base path + #[structopt(long = "base-path", short = "d", value_name = "PATH", parse(from_os_str))] base_path: Option, - #[structopt(long = "keystore-path", value_name = "PATH", help = "Specify custom keystore path", parse(from_os_str))] + /// Specify custom keystore path + #[structopt(long = "keystore-path", value_name = "PATH", parse(from_os_str))] keystore_path: Option, - #[structopt(long = "key", value_name = "STRING", help = "Specify additional key seed")] + /// Specify additional key seed + #[structopt(long = "key", value_name = "STRING")] key: Option, - #[structopt(long = "node-key", value_name = "KEY", help = "Specify node secret key (64-character hex string)")] + /// Specify node secret key (64-character hex string) + #[structopt(long = "node-key", value_name = "KEY")] node_key: Option, - #[structopt(long = "validator",help = "Enable validator mode")] + /// Enable validator mode + #[structopt(long = "validator")] validator: bool, - #[structopt(long = "light", help = "Run in light client mode")] + /// Run in light client mode + #[structopt(long = "light")] light: bool, - #[structopt(long = "dev", help = "Run in development mode; implies --chain=dev --validator --key Alice")] + /// Run in development mode; implies --chain=dev --validator --key Alice + #[structopt(long = "dev")] dev: bool, - #[structopt(long = "listen-addr", value_name = "LISTEN_ADDR", help = "Listen on this multiaddress")] + /// Listen on this multiaddress + #[structopt(long = "listen-addr", value_name = "LISTEN_ADDR")] listen_addr: Vec, - #[structopt(long = "port", value_name = "PORT", help = "Specify p2p protocol TCP port. Only used if --listen-addr is not specified.")] + /// Specify p2p protocol TCP port. Only used if --listen-addr is not specified. + #[structopt(long = "port", value_name = "PORT")] port: Option, - #[structopt(long = "rpc-external", help = "Listen to all RPC interfaces (default is local)")] + /// Listen to all RPC interfaces (default is local) + #[structopt(long = "rpc-external")] rpc_external: bool, - #[structopt(long = "ws-external", help = "Listen to all Websocket interfaces (default is local)")] + /// Listen to all Websocket interfaces (default is local) + #[structopt(long = "ws-external")] ws_external: bool, - #[structopt(long = "rpc-port", value_name = "PORT", help = "Specify HTTP RPC server TCP port")] + /// Specify HTTP RPC server TCP port + #[structopt(long = "rpc-port", value_name = "PORT")] rpc_port: Option, - #[structopt(long = "ws-port", value_name = "PORT", help = "Specify WebSockets RPC server TCP port")] + /// Specify WebSockets RPC server TCP port + #[structopt(long = "ws-port", value_name = "PORT")] ws_port: Option, - #[structopt(long = "bootnodes", value_name = "URL", help = "Specify a list of bootnodes")] + /// Specify a list of bootnodes + #[structopt(long = "bootnodes", value_name = "URL")] bootnodes: Vec, - #[structopt(long = "reserved-nodes", value_name = "URL", help = "Specify a list of reserved node addresses")] + /// Specify a list of reserved node addresses + #[structopt(long = "reserved-nodes", value_name = "URL")] reserved_nodes: Vec, - #[structopt(long = "out-peers", value_name = "OUT_PEERS", help = "Specify the number of outgoing connections we're trying to maintain")] + /// Specify the number of outgoing connections we're trying to maintain + #[structopt(long = "out-peers", value_name = "OUT_PEERS")] out_peers: Option, - #[structopt(long = "in-peers", value_name = "IN_PEERS", help = "Specify the maximum number of incoming connections we're accepting")] + /// Specify the maximum number of incoming connections we're accepting + #[structopt(long = "in-peers", value_name = "IN_PEERS")] in_peers: Option, - #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification (one of dev, local or staging)")] + /// Specify the chain specification (one of dev, local or staging) + #[structopt(long = "chain", value_name = "CHAIN_SPEC")] chain: Option, - #[structopt(long = "pruning", value_name = "PRUNING_MODE", help = "Specify the pruning mode, a number of blocks to keep or 'archive'. Default is 256.")] + /// Specify the pruning mode, a number of blocks to keep or 'archive'. Default is 256. + #[structopt(long = "pruning", value_name = "PRUNING_MODE")] pruning: Option, - #[structopt(long = "name", value_name = "NAME", help = "The human-readable name for this node, as reported to the telemetry server, if enabled")] + /// The human-readable name for this node, as reported to the telemetry server, if enabled + #[structopt(long = "name", value_name = "NAME")] name: Option, - #[structopt(short = "t", long = "telemetry", help = "Should connect to the Substrate telemetry server (telemetry is off by default on local chains)")] + /// Should connect to the Substrate telemetry server (telemetry is off by default on local chains) + #[structopt(short = "t", long = "telemetry")] telemetry: bool, - #[structopt(long = "no-telemetry", help = "Should not connect to the Substrate telemetry server (telemetry is on by default on global chains)")] + /// Should not connect to the Substrate telemetry server (telemetry is on by default on global chains) + #[structopt(long = "no-telemetry")] no_telemetry: bool, - #[structopt(long = "telemetry-url", value_name = "TELEMETRY_URL", help = "The URL of the telemetry server. Implies --telemetry")] + /// The URL of the telemetry server. Implies --telemetry + #[structopt(long = "telemetry-url", value_name = "TELEMETRY_URL")] telemetry_url: Option, - #[structopt(long = "execution", value_name = "STRATEGY", help = "The means of execution used when calling into the runtime. Can be either wasm, native or both.")] + /// The means of execution used when calling into the runtime. Can be either wasm, native or both. + #[structopt(long = "execution", value_name = "STRATEGY")] execution: Option, #[structopt(subcommand)] cmds: Option, } +/// How to execute blocks #[derive(Debug, StructOpt)] pub enum ExecutionStrategy { + /// Execute native only Native, + /// Execute wasm only Wasm, + /// Execute natively when possible, wasm otherwise Both, } @@ -125,92 +155,121 @@ impl std::str::FromStr for ExecutionStrategy { } } +/// Subcommands provided by Default #[derive(Debug, StructOpt)] pub enum CoreCommands { - #[structopt(name = "build-spec", about = "Build a spec.json file, outputing to stdout")] + /// Build a spec.json file, outputing to stdout + #[structopt(name = "build-spec")] BuildSpec { - #[structopt(long = "raw", help = "Force raw genesis storage output.")] + /// Force raw genesis storage output. + #[structopt(long = "raw")] raw: bool, - #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification (one of dev, local or staging)")] + /// Specify the chain specification (one of dev, local or staging) + #[structopt(long = "chain", value_name = "CHAIN_SPEC")] chain: Option, - #[structopt(long = "dev", help = "Specify the development chain")] + /// Specify the development chain + #[structopt(long = "dev")] dev: bool, }, - #[structopt(name = "export-blocks", about = "Export blocks to a file")] + /// Export blocks to a file + #[structopt(name = "export-blocks")] ExportBlocks { - #[structopt(help = "Output file name or stdout if unspecified.", parse(from_os_str))] - OUTPUT: Option, + /// Output file name or stdout if unspecified. + #[structopt(parse(from_os_str))] + output: Option, - #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + /// Specify the chain specification. + #[structopt(long = "chain", value_name = "CHAIN_SPEC")] chain: Option, - #[structopt(long = "dev", help = "Specify the development chain")] + /// Specify the development chain + #[structopt(long = "dev")] dev: bool, - #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.")] + /// Specify custom base path. + #[structopt(long = "base-path", short = "d", value_name = "PATH")] base_path: Option, - #[structopt(long = "from", value_name = "BLOCK", help = "Specify starting block number. 1 by default.")] + /// Specify starting block number. 1 by default. + #[structopt(long = "from", value_name = "BLOCK")] from: Option, - #[structopt(long = "to", value_name = "BLOCK", help = "Specify last block number. Best block by default.")] + /// Specify last block number. Best block by default. + #[structopt(long = "to", value_name = "BLOCK")] to: Option, - #[structopt(long = "json", help = "Use JSON output rather than binary.")] + /// Use JSON output rather than binary. + #[structopt(long = "json")] json: bool, }, - #[structopt(name = "import-blocks", about = "Import blocks from file.")] + /// Import blocks from file. + #[structopt(name = "import-blocks")] ImportBlocks { - #[structopt(help = "Input file or stdin if unspecified.", parse(from_os_str))] - INPUT: Option, + /// Input file or stdin if unspecified. + #[structopt(parse(from_os_str))] + input: Option, - #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + /// Specify the chain specification. + #[structopt(long = "chain", value_name = "CHAIN_SPEC")] chain: Option, - #[structopt(long = "dev", help = "Specify the development chain")] + /// Specify the development chain + #[structopt(long = "dev")] dev: bool, - #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.", parse(from_os_str))] + /// Specify custom base path. + #[structopt(long = "base-path", short = "d", value_name = "PATH", parse(from_os_str))] base_path: Option, - #[structopt(long = "execution", value_name = "STRATEGY", help = "The means of execution used when executing blocks. Can be either wasm, native or both.")] + /// The means of execution used when executing blocks. Can be either wasm, native or both. + #[structopt(long = "execution", value_name = "STRATEGY")] execution: ExecutionStrategy, - #[structopt(long = "api-execution", value_name = "STRATEGY", help = "The means of execution used when calling into the runtime. Can be either wasm, native or both.")] + /// The means of execution used when calling into the runtime. Can be either wasm, native or both. + #[structopt(long = "api-execution", value_name = "STRATEGY")] api_execution: ExecutionStrategy, - #[structopt(long = "max-heap-pages", value_name = "COUNT", help = "The maximum number of 64KB pages to ever allocate for Wasm execution. Don't alter this unless you know what you're doing.")] + /// The maximum number of 64KB pages to ever allocate for Wasm execution. Don't alter this unless you know what you're doing. + #[structopt(long = "max-heap-pages", value_name = "COUNT")] max_heap_pages: Option, }, - #[structopt(name = "revert", about = "Revert chain to the previous state")] + ///Revert chain to the previous state + #[structopt(name = "revert")] Revert { - #[structopt(help = "Number of blocks to revert. Default is 256.")] - NUM: Option, + /// Number of blocks to revert. Default is 256. + num: Option, - #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + /// Specify the chain specification. + #[structopt(long = "chain", value_name = "CHAIN_SPEC")] chain: Option, - #[structopt(long = "dev", help = "Specify the development chain")] + /// Specify the development chain + #[structopt(long = "dev")] dev: bool, - #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.", parse(from_os_str))] + /// Specify custom base path. + #[structopt(long = "base-path", short = "d", value_name = "PATH", parse(from_os_str))] base_path: Option, }, - #[structopt(name = "purge-chain", about = "Remove the whole chain data.")] + /// Remove the whole chain data. + #[structopt(name = "purge-chain")] PurgeChain { - #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + /// Specify the chain specification. + #[structopt(long = "chain", value_name = "CHAIN_SPEC")] chain: Option, - #[structopt(long = "dev", help = "Specify the development chain")] + /// Specify the development chain + #[structopt(long = "dev")] dev: bool, - #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.", parse(from_os_str))] + /// Specify custom base path. + #[structopt(long = "base-path", short = "d", value_name = "PATH", parse(from_os_str))] base_path: Option } } diff --git a/node/cli/build.rs b/node/cli/build.rs index b42b397de1..74472bff06 100644 --- a/node/cli/build.rs +++ b/node/cli/build.rs @@ -14,12 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -#[macro_use] extern crate clap; - extern crate substrate_cli as cli; - -#[macro_use] extern crate structopt; use std::fs; diff --git a/node/cli/src/lib.rs b/node/cli/src/lib.rs index 7e691047df..89e6c2fb3e 100644 --- a/node/cli/src/lib.rs +++ b/node/cli/src/lib.rs @@ -43,7 +43,6 @@ extern crate substrate_keystore; #[macro_use] extern crate log; -#[macro_use] extern crate structopt; pub use cli::error; -- GitLab From 7462774e2766544feb9e44c58f2244a64f7fd34f Mon Sep 17 00:00:00 2001 From: Guanghua Guo Date: Tue, 27 Nov 2018 17:56:54 +0800 Subject: [PATCH 079/243] Misspelled words (#1169) --- core/finality-grandpa/src/authorities.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/finality-grandpa/src/authorities.rs b/core/finality-grandpa/src/authorities.rs index bdb6220fd6..c006bd1400 100644 --- a/core/finality-grandpa/src/authorities.rs +++ b/core/finality-grandpa/src/authorities.rs @@ -137,7 +137,7 @@ where /// Apply or prune any pending transitions. Provide a closure that can be used to check for the /// finalized block with given number. /// - /// When the set has changed, the return value will be `Ok(Some((H, N)))` which is the cnaonical + /// When the set has changed, the return value will be `Ok(Some((H, N)))` which is the canonical /// block where the set last changed. pub(crate) fn apply_changes(&mut self, just_finalized: N, mut canonical: F) -> Result, E> -- GitLab From 01ff6f0034f84493db7d8b46b74a997600945678 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 27 Nov 2018 17:22:28 +0100 Subject: [PATCH 080/243] Remove Proposer from Service (#1171) * Remove Proposer from Service Refs #1021, #1158 --- Cargo.lock | 1 + core/service/src/lib.rs | 19 +------------------ node/cli/Cargo.toml | 1 + node/cli/src/lib.rs | 2 ++ node/cli/src/service.rs | 10 +++++++++- 5 files changed, 14 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f155a7cc89..b9d4696b20 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1733,6 +1733,7 @@ dependencies = [ "substrate-cli 0.3.0", "substrate-client 0.1.0", "substrate-consensus-aura 0.1.0", + "substrate-consensus-common 0.1.0", "substrate-finality-grandpa 0.1.0", "substrate-keystore 0.1.0", "substrate-network 0.1.0", diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index 917b3d7482..f5e578d72f 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -63,7 +63,7 @@ use std::collections::HashMap; #[doc(hidden)] pub use std::{ops::Deref, result::Result, sync::Arc}; use futures::prelude::*; -use parking_lot::{Mutex, RwLock}; +use parking_lot::Mutex; use keystore::Store as Keystore; use client::BlockchainEvents; use runtime_primitives::traits::{Header, As}; @@ -80,7 +80,6 @@ pub use chain_spec::{ChainSpec, Properties}; pub use transaction_pool::txpool::{self, Pool as TransactionPool, Options as TransactionPoolOptions, ChainApi, IntoPoolError}; pub use client::ExecutionStrategy; -use consensus_common::offline_tracker::OfflineTracker; pub use consensus::ProposerFactory; pub use components::{ServiceFactory, FullBackend, FullExecutor, LightBackend, LightExecutor, Components, PoolApi, ComponentClient, @@ -105,7 +104,6 @@ pub struct Service { signal: Option, /// Configuration of this Service pub config: FactoryFullConfiguration, - proposer: Arc, Components::TransactionPoolApi>>, _rpc_http: Option, _rpc_ws: Option>, // WsServer is not `Sync`, but the service needs to be. _telemetry: Option, @@ -249,13 +247,6 @@ impl Service task_executor.clone(), transaction_pool.clone() )?; - let proposer = Arc::new(ProposerFactory { - client: client.clone(), - transaction_pool: transaction_pool.clone(), - offline: Arc::new(RwLock::new(OfflineTracker::new())), - force_delay: 0 // FIXME: allow this to be configured - }); - // Telemetry let telemetry = match config.telemetry_url.clone() { Some(url) => { @@ -290,7 +281,6 @@ impl Service signal: Some(signal), keystore: keystore, config, - proposer, exit, _rpc_http: rpc_http, _rpc_ws: rpc_ws.map(Mutex::new), @@ -318,13 +308,6 @@ impl Service where Components: components::Components { self.client.clone() } - /// Get shared proposer instance - pub fn proposer(&self) - -> Arc, Components::TransactionPoolApi>> - { - self.proposer.clone() - } - /// Get shared network instance. pub fn network(&self) -> Arc> { self.network.as_ref().expect("self.network always Some").clone() diff --git a/node/cli/Cargo.toml b/node/cli/Cargo.toml index 4777af39bf..8ad41a263c 100644 --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -24,6 +24,7 @@ substrate-service = { path = "../../core/service" } substrate-transaction-pool = { path = "../../core/transaction-pool" } substrate-network = { path = "../../core/network" } substrate-consensus-aura = { path = "../../core/consensus/aura" } +substrate-consensus-common = { path = "../../core/consensus/common" } substrate-finality-grandpa = { path = "../../core/finality-grandpa" } sr-primitives = { path = "../../core/sr-primitives" } node-executor = { path = "../executor" } diff --git a/node/cli/src/lib.rs b/node/cli/src/lib.rs index 89e6c2fb3e..8d240face3 100644 --- a/node/cli/src/lib.rs +++ b/node/cli/src/lib.rs @@ -33,6 +33,7 @@ extern crate substrate_transaction_pool as transaction_pool; #[macro_use] extern crate substrate_network as network; extern crate substrate_consensus_aura as consensus; +extern crate substrate_consensus_common as consensus_common; extern crate substrate_client as client; extern crate substrate_finality_grandpa as grandpa; extern crate node_primitives; @@ -44,6 +45,7 @@ extern crate substrate_keystore; #[macro_use] extern crate log; extern crate structopt; +extern crate parking_lot; pub use cli::error; pub mod chain_spec; diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index 1a4df71946..6035677f85 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -28,9 +28,11 @@ use substrate_service::{ }; use node_executor; use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue, NothingExtra}; +use consensus_common::offline_tracker::OfflineTracker; use primitives::ed25519::Pair; use client; use std::time::Duration; +use parking_lot::RwLock; use grandpa; const AURA_SLOT_DURATION: u64 = 6; @@ -99,6 +101,12 @@ construct_service_factory! { } if !service.config.custom.grandpa_authority_only { info!("Using authority key {}", key.public()); + let proposer = Arc::new(substrate_service::ProposerFactory { + client: service.client(), + transaction_pool: service.transaction_pool(), + offline: Arc::new(RwLock::new(OfflineTracker::new())), + force_delay: 0 // FIXME: allow this to be configured https://github.com/paritytech/substrate/issues/1170 + }); executor.spawn(start_aura( AuraConfig { local_key: Some(key), @@ -106,7 +114,7 @@ construct_service_factory! { }, service.client(), block_import.clone(), - service.proposer(), + proposer, service.network(), )); } -- GitLab From 3d7aa48c3cc24acc02eb875ce5316568407560d1 Mon Sep 17 00:00:00 2001 From: Guanghua Guo Date: Fri, 30 Nov 2018 14:27:30 +0800 Subject: [PATCH 081/243] Delete unused extern (#1178) --- Cargo.lock | 1 - node/runtime/Cargo.toml | 2 -- node/runtime/src/lib.rs | 4 ---- 3 files changed, 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b9d4696b20..f400554404 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1799,7 +1799,6 @@ dependencies = [ "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 6ca724a81b..774513d76b 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -7,7 +7,6 @@ authors = ["Parity Technologies "] rustc-hex = "1.0" hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false } parity-codec = "2.1" parity-codec-derive = "2.1" @@ -57,7 +56,6 @@ std = [ "srml-upgrade-key/std", "sr-version/std", "node-primitives/std", - "serde_derive", "serde/std", "safe-mix/std", "substrate-client/std", diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index f3d1672642..a5f1fd96f7 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -26,10 +26,6 @@ extern crate srml_support; #[macro_use] extern crate sr_primitives as runtime_primitives; -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - extern crate substrate_primitives; #[macro_use] -- GitLab From 5651ac71c5b97aad59b6aa151b46a4f3bde376f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 30 Nov 2018 11:42:46 +0100 Subject: [PATCH 082/243] Rewrite `impl_runtime_apis!` and `decl_runtime_apis!` as proc-macro (#1174) * Rewrites `impl_runtime_apis!` macro as `proc-macro` * Adds some documentation * Require the `impl_runtime_apis` to use a path for accessing the trait * Make the runtime implement `GetNodeBlockType` * Moves first chunk of runtime api code into the `impl_runtime_apis` macro This also renames `ClientWithApi` into `RuntimeApi`. * Make `impl_runtime_apis` use `runtime` api version automatically * `decl_runtime_apis` automatically adds `Block: BlockT` as generic parameter * Remove function generic arguments in block builder api * Remove some unnused stuff from the `decl_runtime_apis` macro * Make `InherentData` working again * Make `impl_runtime_apis!` implement the `RuntimeApi` side as well * Make it compile again after rebasing with master * Split `sr-api-macros` into multiple files * Reimplement `decl_runtime_apis!` as proc_macro * Use `decl_runtime_apis!` for `Core` as well and improve error reporting * Adds documentation for `decl_runtime_apis!` and `impl_runtime_apis!` * Move some code * Adds compile fail tests * Adds a test and fixes some bugs * Make `impl_runtime_apis!` support `_` as parameter name * Fixes build errors with wasm * Wasm rebuild after master rebase * Apply suggestions from code review Co-Authored-By: bkchr * Addresses some grumbles * Adds test to ensure that method signatures need to match * New wasm files --- Cargo.lock | 32 +- Cargo.toml | 2 +- core/client/Cargo.toml | 1 + core/client/src/block_builder/api.rs | 12 +- core/client/src/client.rs | 12 +- core/client/src/lib.rs | 5 + .../{runtime_api/mod.rs => runtime_api.rs} | 49 +- core/client/src/runtime_api/core.rs | 62 -- core/client/src/runtime_api/macros.rs | 650 ------------------ core/client/src/runtime_api/traits.rs | 35 - core/consensus/aura/src/lib.rs | 2 +- core/consensus/common/src/lib.rs | 19 - core/finality-grandpa/primitives/src/lib.rs | 4 +- core/finality-grandpa/src/tests.rs | 2 +- core/network/src/import_queue.rs | 2 +- core/network/src/test/mod.rs | 2 +- core/service/src/consensus.rs | 8 +- core/sr-api-macros/Cargo.toml | 20 + core/sr-api-macros/src/compile_fail_tests.rs | 408 +++++++++++ core/sr-api-macros/src/decl_runtime_apis.rs | 278 ++++++++ core/sr-api-macros/src/impl_runtime_apis.rs | 528 ++++++++++++++ core/sr-api-macros/src/lib.rs | 164 +++++ core/sr-api-macros/src/utils.rs | 97 +++ core/sr-api-macros/tests/decl_and_impl.rs | 93 +++ core/sr-primitives/src/generic/era.rs | 8 +- core/sr-primitives/src/lib.rs | 29 + core/sr-primitives/src/traits.rs | 16 +- core/test-client/src/lib.rs | 6 +- core/test-runtime/src/lib.rs | 195 +----- core/test-runtime/wasm/Cargo.lock | 16 +- .../substrate_test_runtime.compact.wasm | Bin 45227 -> 46150 bytes node/cli/src/service.rs | 10 +- node/runtime/src/lib.rs | 218 +----- node/runtime/wasm/Cargo.lock | 16 +- .../release/node_runtime.compact.wasm | Bin 636432 -> 635745 bytes srml/consensus/src/lib.rs | 7 +- srml/support/src/inherent.rs | 62 +- srml/support/src/lib.rs | 1 + srml/support/src/runtime.rs | 43 +- srml/timestamp/src/lib.rs | 18 +- 40 files changed, 1863 insertions(+), 1269 deletions(-) rename core/client/src/{runtime_api/mod.rs => runtime_api.rs} (74%) delete mode 100644 core/client/src/runtime_api/core.rs delete mode 100644 core/client/src/runtime_api/macros.rs delete mode 100644 core/client/src/runtime_api/traits.rs create mode 100644 core/sr-api-macros/Cargo.toml create mode 100644 core/sr-api-macros/src/compile_fail_tests.rs create mode 100644 core/sr-api-macros/src/decl_runtime_apis.rs create mode 100644 core/sr-api-macros/src/impl_runtime_apis.rs create mode 100644 core/sr-api-macros/src/lib.rs create mode 100644 core/sr-api-macros/src/utils.rs create mode 100644 core/sr-api-macros/tests/decl_and_impl.rs diff --git a/Cargo.lock b/Cargo.lock index f400554404..38e527abea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -651,7 +651,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2520,7 +2520,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2641,6 +2641,21 @@ dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "sr-api-macros" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "substrate-client 0.1.0", + "substrate-primitives 0.1.0", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "sr-io" version = "0.1.0" @@ -3038,7 +3053,7 @@ dependencies = [ "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3053,7 +3068,7 @@ dependencies = [ "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3096,7 +3111,7 @@ dependencies = [ "heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3166,6 +3181,7 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-api-macros 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", @@ -3686,7 +3702,7 @@ dependencies = [ [[package]] name = "syn" -version = "0.15.20" +version = "0.15.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3701,7 +3717,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4714,7 +4730,7 @@ dependencies = [ "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum syn 0.13.11 (registry+https://github.com/rust-lang/crates.io-index)" = "14f9bf6292f3a61d2c716723fdb789a41bbe104168e6f496dc6497e531ea1b9b" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" -"checksum syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)" = "8886c8d2774e853fcd7d9d2131f6e40ba46c9c0e358e4d57178452abd6859bb0" +"checksum syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)" = "ae8b29eb5210bc5cf63ed6149cbf9adfc82ac0be023d8735c176ee74a2db4da7" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum sysinfo 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "11c5f6e8a7a7146f26ffed9a5ff8bab2706f1ac8a413a415e1d211b819d5c24d" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" diff --git a/Cargo.toml b/Cargo.toml index 98c433f605..30a3e92325 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,7 +60,7 @@ members = [ "core/serializer", "core/service", "core/service/test", - "core/state-db", + "core/sr-api-macros", "core/state-machine", "core/test-runtime", "core/telemetry", diff --git a/core/client/Cargo.toml b/core/client/Cargo.toml index 1ecf284dc1..9d960cb1a3 100644 --- a/core/client/Cargo.toml +++ b/core/client/Cargo.toml @@ -26,6 +26,7 @@ substrate-primitives = { path = "../primitives", default-features = false } sr-primitives = { path = "../sr-primitives", default-features = false } sr-version = { path = "../sr-version", default-features = false } sr-std = { path = "../sr-std", default-features = false } +sr-api-macros = { path = "../sr-api-macros" } [dev-dependencies] substrate-test-client = { path = "../test-client" } diff --git a/core/client/src/block_builder/api.rs b/core/client/src/block_builder/api.rs index 67a66373aa..3b8ceb6305 100644 --- a/core/client/src/block_builder/api.rs +++ b/core/client/src/block_builder/api.rs @@ -16,24 +16,20 @@ //! The runtime api for building blocks. -use runtime_primitives::{traits::Block as BlockT, ApplyResult}; +use runtime_primitives::{traits::Block as BlockT, ApplyResult, InherentData, CheckInherentError}; use rstd::vec::Vec; decl_runtime_apis! { /// The `BlockBuilder` api trait that provides required functions for building a block for a runtime. - pub trait BlockBuilder { + pub trait BlockBuilder { /// Apply the given extrinsics. fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult; /// Finish the current block. fn finalise_block() -> ::Header; /// Generate inherent extrinsics. - fn inherent_extrinsics( - inherent: InherentExtrinsic - ) -> Vec; + fn inherent_extrinsics(inherent: InherentData) -> Vec<::Extrinsic>; /// Check that the inherents are valid. - fn check_inherents( - block: Block, data: InherentData - ) -> Result<(), Error>; + fn check_inherents(block: Block, data: InherentData) -> Result<(), CheckInherentError>; /// Generate a random seed. fn random_seed() -> ::Hash; } diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 92a4688845..205827b6d4 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -1221,14 +1221,14 @@ pub(crate) mod tests { use consensus::BlockOrigin; use test_client::client::backend::Backend as TestBackend; use test_client::BlockBuilderExt; - use test_client::runtime::{self, Block, Transfer, ClientWithApi, test_api::TestAPI}; + use test_client::runtime::{self, Block, Transfer, RuntimeApi, test_api::TestAPI}; /// Returns tuple, consisting of: /// 1) test client pre-filled with blocks changing balances; /// 2) roots of changes tries for these blocks /// 3) test cases in form (begin, end, key, vec![(block, extrinsic)]) that are required to pass pub fn prepare_client_with_key_changes() -> ( - test_client::client::Client, + test_client::client::Client, Vec, Vec<(u64, u64, Vec, Vec<(u64, u32)>)>, ) { @@ -1303,14 +1303,14 @@ pub(crate) mod tests { assert_eq!( client.runtime_api().balance_of( &BlockId::Number(client.info().unwrap().chain.best_number), - &Keyring::Alice.to_raw_public() + &Keyring::Alice.to_raw_public().into() ).unwrap(), 1000 ); assert_eq!( client.runtime_api().balance_of( &BlockId::Number(client.info().unwrap().chain.best_number), - &Keyring::Ferdie.to_raw_public() + &Keyring::Ferdie.to_raw_public().into() ).unwrap(), 0 ); @@ -1359,14 +1359,14 @@ pub(crate) mod tests { assert_eq!( client.runtime_api().balance_of( &BlockId::Number(client.info().unwrap().chain.best_number), - &Keyring::Alice.to_raw_public() + &Keyring::Alice.to_raw_public().into() ).unwrap(), 958 ); assert_eq!( client.runtime_api().balance_of( &BlockId::Number(client.info().unwrap().chain.best_number), - &Keyring::Ferdie.to_raw_public() + &Keyring::Ferdie.to_raw_public().into() ).unwrap(), 42 ); diff --git a/core/client/src/lib.rs b/core/client/src/lib.rs index a73671ca47..fb07c130b2 100644 --- a/core/client/src/lib.rs +++ b/core/client/src/lib.rs @@ -31,6 +31,8 @@ extern crate substrate_state_machine as state_machine; extern crate substrate_consensus_common as consensus; extern crate sr_version as runtime_version; extern crate sr_std as rstd; +#[macro_use] +extern crate sr_api_macros; #[cfg(test)] extern crate substrate_keyring as keyring; #[cfg(test)] @@ -114,3 +116,6 @@ pub use notifications::{StorageEventStream, StorageChangeSet}; pub use state_machine::ExecutionStrategy; #[cfg(feature = "std")] pub use leaves::LeafSet; + +#[doc(inline)] +pub use sr_api_macros::{decl_runtime_apis, impl_runtime_apis}; diff --git a/core/client/src/runtime_api/mod.rs b/core/client/src/runtime_api.rs similarity index 74% rename from core/client/src/runtime_api/mod.rs rename to core/client/src/runtime_api.rs index acf4db705c..2e5c5e38ca 100644 --- a/core/client/src/runtime_api/mod.rs +++ b/core/client/src/runtime_api.rs @@ -14,17 +14,17 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! All the functionality required for declaring and implementing runtime api's. -//! Core api's are also declared here. +//! All the functionality required for declaring and implementing runtime apis. #[doc(hidden)] #[cfg(feature = "std")] pub use state_machine::OverlayedChanges; #[doc(hidden)] -pub use runtime_primitives::{traits::Block as BlockT, generic::BlockId}; -#[cfg(feature = "std")] -use runtime_primitives::traits::ApiRef; -pub use runtime_version::ApiId; +pub use runtime_primitives::{ + traits::{Block as BlockT, GetNodeBlockType, GetRuntimeBlockType, ApiRef}, generic::BlockId, + transaction_validity::TransactionValidity +}; +pub use runtime_version::{ApiId, RuntimeVersion}; #[doc(hidden)] pub use rstd::slice; #[cfg(feature = "std")] @@ -32,12 +32,9 @@ use rstd::result; pub use codec::{Encode, Decode}; #[cfg(feature = "std")] use error; -pub use runtime_version::RuntimeVersion; +use rstd::vec::Vec; +use primitives::{AuthorityId, OpaqueMetadata}; -mod core; -#[macro_use] -mod macros; -mod traits; /// Something that can be constructed to a runtime api. #[cfg(feature = "std")] @@ -113,11 +110,29 @@ pub mod id { pub const METADATA: ApiId = *b"metadata"; } -pub use self::core::*; -pub use self::traits::*; +decl_runtime_apis! { + /// The `Core` api trait that is mandantory for each runtime. + #[core_trait] + pub trait Core { + /// Returns the version of the runtime. + fn version() -> RuntimeVersion; + /// Returns the authorities. + fn authorities() -> Vec; + /// Execute the given block. + fn execute_block(block: Block); + /// Initialise a block with the given header. + fn initialise_block(header: ::Header); + } -/// The runtime apis that should be implemented for the `Runtime`. -pub mod runtime { - pub use super::core::runtime::Core; - pub use super::traits::runtime::*; + /// The `Metadata` api trait that returns metadata for the runtime. + pub trait Metadata { + /// Returns the metadata of a runtime. + fn metadata() -> OpaqueMetadata; + } + + /// The `TaggedTransactionQueue` api trait for interfering with the new transaction queue. + pub trait TaggedTransactionQueue { + /// Validate the given transaction. + fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity; + } } diff --git a/core/client/src/runtime_api/core.rs b/core/client/src/runtime_api/core.rs deleted file mode 100644 index 20798422b7..0000000000 --- a/core/client/src/runtime_api/core.rs +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2018 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 . - -#[cfg(feature = "std")] -use super::{ConstructRuntimeApi, ApiExt}; -use runtime_version::RuntimeVersion; -use runtime_primitives::traits::Block as BlockT; -#[cfg(feature = "std")] -use runtime_primitives::generic::BlockId; -use primitives::AuthorityId; -#[cfg(feature = "std")] -use error::Result; -use rstd::vec::Vec; - -/// The `Core` api trait that is mandantory for each runtime. -/// This is the side that should be implemented for the `RuntimeApi` that is used by the `Client`. -/// Any modifications at one of these two traits, needs to be done on the other one as well. -#[cfg(feature = "std")] -pub trait Core: 'static + Send + Sync + ConstructRuntimeApi + ApiExt { - /// Returns the version of the runtime. - fn version(&self, at: &BlockId) -> Result; - /// Returns the authorities. - fn authorities(&self, at: &BlockId) -> Result>; - /// Execute the given block. - fn execute_block(&self, at: &BlockId, block: &Block) -> Result<()>; - /// Initialise a block with the given header. - fn initialise_block( - &self, - at: &BlockId, - header: &::Header - ) -> Result<()>; -} - -pub mod runtime { - use super::*; - - /// The `Core` api trait that is mandantory for each runtime. - /// This is the side that should be implemented for the `Runtime`. - pub trait Core { - /// Returns the version of the runtime. - fn version() -> RuntimeVersion; - /// Returns the authorities. - fn authorities() -> Vec; - /// Execute the given block. - fn execute_block(block: Block); - /// Initialise a block with the given header. - fn initialise_block(header: ::Header); - } -} diff --git a/core/client/src/runtime_api/macros.rs b/core/client/src/runtime_api/macros.rs deleted file mode 100644 index 1721fbd416..0000000000 --- a/core/client/src/runtime_api/macros.rs +++ /dev/null @@ -1,650 +0,0 @@ -// Copyright 2018 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 . - -//! Macros for declaring and implementing the runtime APIs. - -// these are part of the public API, so need to be re-exported -pub use runtime_version::{ApiId, RuntimeVersion}; - -/// Declare the given API traits. -/// -/// # Example: -/// -/// ```nocompile -/// decl_runtime_apis!{ -/// pub trait Test ExtraClientSide { -/// fn test(event: Event) -> AccountId; -/// -/// /// A function that will have the extra parameter `param` on the client side, -/// /// the runtime does not have any parameter. -/// fn testWithExtraParams() ExtraClientSide(param: &Self::ClientArg); -/// } -/// } -/// ``` -/// -/// Will result in the following declaration: -/// -/// ```nocompile -/// mod runtime { -/// pub trait Test { -/// fn test(event: Event) -> AccountId; -/// } -/// } -/// -/// pub trait Test { -/// type Error; -/// type ClientArg; -/// fn test(&self, at: &BlockId, event: Event) -> Result; -/// fn testWithExtraParams(&self, at: &BlockId, param: &Client) -> Result; -/// } -/// ``` -/// -/// The declarations generated in the `runtime` module will be used by `impl_runtime_apis!` for implementing -/// the traits for a runtime. The other declarations should be used for implementing the interface -/// in the client. -#[macro_export] -macro_rules! decl_runtime_apis { - ( - $( - $( #[$attr:meta] )* - pub trait $name:ident $(< $( $generic_param:ident $( : $generic_bound:ident )* ),* >)* - $( ExtraClientSide < $( $client_generic_param:ident $( : $client_generic_bound:ident )* ),+ > )* - { - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident $( < $( $fn_generic:ident ),* > )* ( - $( $param_name:ident : $param_type:ty ),* - ) - $( ExtraClientSide ( $( $client_param_name:ident : $client_param_type:ty ),+ ) )* - $( -> $return_ty:ty)*; - )* - } - )* - ) => { - $( - decl_runtime_apis!( - @ADD_BLOCK_GENERIC - $( #[$attr] )* - pub trait $name $(< $( $generic_param $( : $generic_bound )* ),* >)* { - $( $( type $client_generic_param $( : $client_generic_bound )*; )* )* - $( - $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic ),* > )* ( - $( $( $client_param_name: $client_param_type, )* )* - $( $param_name : &$param_type, )* - ) $( -> $return_ty )*; - )* - }; - ; - ; - $( $( $generic_param $( : $generic_bound )* ),* )* - ); - )* - decl_runtime_apis! { - @GENERATE_RUNTIME_TRAITS - $( - $( #[$attr] )* - pub trait $name $(< $( $generic_param $( : $generic_bound )* ),* >)* { - $( - $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic ),* > )* ($( $param_name : $param_type )* ) $( -> $return_ty )*; - )* - }; - )* - } - }; - (@ADD_BLOCK_GENERIC - $( #[$attr:meta] )* - pub trait $name:ident $(< $( $generic_param_orig:ident $( : $generic_bound_orig:ident )* ),* >)* { - $( type $client_generic_param:ident $( : $client_generic_bound:ident )*; )* - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident $( < $( $fn_generic:ident ),* > )* ( - $( $param_name:ident : $param_type:ty, )* - ) $( -> $return_ty:ty)*; - )* - }; - ; - $( $generic_param_parsed:ident $( : $generic_bound_parsed:ident )* ),*; - Block: BlockT - $(, $generic_param_rest:ident $( : $generic_bound_rest:ident )* )* - ) => { - decl_runtime_apis!( - @ADD_BLOCK_GENERIC - $( #[$attr] )* - pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { - $( type $client_generic_param $( : $client_generic_bound )*; )* - $( - $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic ),* > )* ( - $( $param_name : $param_type, )* - ) $( -> $return_ty )*; - )* - }; - Found; - $( $generic_param_parsed $( : $generic_bound_parsed )* , )* Block: $crate::runtime_api::BlockT; - $( $generic_param_rest $( : $generic_bound_rest )* ),* - ); - }; - (@ADD_BLOCK_GENERIC - $( #[$attr:meta] )* - pub trait $name:ident $(< $( $generic_param_orig:ident $( : $generic_bound_orig:ident )* ),* >)* { - $( type $client_generic_param:ident $( : $client_generic_bound:ident )*; )* - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident $( < $( $fn_generic:ident ),* > )* ( - $( $param_name:ident : $param_type:ty, )* - ) $( -> $return_ty:ty )*; - )* - }; - $( $block_found:ident )*; - $( $generic_param_parsed:ident $( : $generic_bound_parsed:path )* ),*; - $generic_param:ident $( : $generic_bound:ident )* - $(, $generic_param_rest:ident $( : $generic_bound_rest:ident )* )* - ) => { - decl_runtime_apis!( - @ADD_BLOCK_GENERIC - $( #[$attr] )* - pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { - $( type $client_generic_param $( : $client_generic_bound )*; )* - $( - $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic ),* > )* ( - $( $param_name : $param_type, )* - ) $( -> $return_ty )*; - )* - }; - $( $block_found )*; - $( $generic_param_parsed $( : $generic_bound_parsed )* , )* $generic_param $( : $generic_bound )*; - $( $generic_param_rest $( : $generic_bound_rest )* ),* - ); - }; - (@ADD_BLOCK_GENERIC - $( #[$attr:meta] )* - pub trait $name:ident $(< $( $generic_param_orig:ident $( : $generic_bound_orig:ident )* ),* >)* { - $( type $client_generic_param:ident $( : $client_generic_bound:ident )*; )* - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident $( < $( $fn_generic:ident ),* > )* ( - $( $param_name:ident : $param_type:ty, )* - ) $( -> $return_ty:ty )*; - )* - }; - Found; - $( $generic_param_parsed:ident $( : $generic_bound_parsed:path )* ),*; - ) => { - decl_runtime_apis!( - @GENERATE_RETURN_TYPES - $( #[$attr] )* - pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { - $( type $client_generic_param $( : $client_generic_bound )*; )* - $( - $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic ),* > )* ( - $( $param_name : $param_type, )* - ) $( -> $return_ty )*; - )* - }; - $( $generic_param_parsed $( : $generic_bound_parsed )* ),*; - {}; - $( $( $return_ty )*; )* - ); - }; - (@ADD_BLOCK_GENERIC - $( #[$attr:meta] )* - pub trait $name:ident $(< $( $generic_param_orig:ident $( : $generic_bound_orig:ident )* ),* >)* { - $( type $client_generic_param:ident $( : $client_generic_bound:ident )*; )* - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident $( < $( $fn_generic:ident ),* > )* ( - $( $param_name:ident : $param_type:ty, )* - ) $( -> $return_ty:ty )*; - )* - }; - ; - $( $generic_param_parsed:ident $( : $generic_bound_parsed:ident )* ),*; - ) => { - decl_runtime_apis!( - @GENERATE_RETURN_TYPES - $( #[$attr] )* - pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { - $( type $client_generic_param $( : $client_generic_bound )*; )* - $( - $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic ),* > )* ( - $( $param_name : $param_type, )* - ) $( -> $return_ty )*; - )* - }; - // We need to add the required generic Block parameter - Block: $crate::runtime_api::BlockT $(, $generic_param_parsed $( : $generic_bound_parsed )* )*; - {}; - $( $( $return_ty )*; )* - ); - }; - (@GENERATE_RETURN_TYPES - $( #[$attr:meta] )* - pub trait $name:ident $(< $( $generic_param_orig:ident $( : $generic_bound_orig:ident )* ),* >)* { - $( type $client_generic_param:ident $( : $client_generic_bound:ident )*; )* - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident $( < $( $fn_generic:ident ),* > )* ( - $( $param_name:ident : $param_type:ty, )* - ) $( -> $return_ty:ty)*; - )* - }; - $( $generic_param_parsed:ident $( : $generic_bound_parsed:path )* ),*; - { $( $result_return_ty:ty; )* }; - $return_ty_current:ty; - $( $( $return_ty_rest:ty )*; )* - ) => { - decl_runtime_apis!( - @GENERATE_RETURN_TYPES - $( #[$attr] )* - pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { - $( type $client_generic_param $( : $client_generic_bound )*; )* - $( - $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic ),* > )* ( - $( $param_name : $param_type, )* - ) $( -> $return_ty )*; - )* - }; - $( $generic_param_parsed $( : $generic_bound_parsed )* ),*; - { $( $result_return_ty; )* $crate::error::Result<$return_ty_current>; }; - $( $( $return_ty_rest )*; )* - ); - }; - (@GENERATE_RETURN_TYPES - $( #[$attr:meta] )* - pub trait $name:ident $(< $( $generic_param_orig:ident $( : $generic_bound_orig:ident )* ),* >)* { - $( type $client_generic_param:ident $( : $client_generic_bound:ident )*; )* - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident $( < $( $fn_generic:ident ),* > )* ( - $( $param_name:ident : $param_type:ty, )* - ) $( -> $return_ty:ty)*; - )* - }; - $( $generic_param_parsed:ident $( : $generic_bound_parsed:path )* ),*; - { $( $result_return_ty:ty; )* }; - ; - $( $( $return_ty_rest:ty )*; )* - ) => { - decl_runtime_apis!( - @GENERATE_RETURN_TYPES - $( #[$attr] )* - pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { - $( type $client_generic_param $( : $client_generic_bound )*; )* - $( - $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic ),* > )* ( - $( $param_name : $param_type, )* - ) $( -> $return_ty )*; - )* - }; - $( $generic_param_parsed $( : $generic_bound_parsed )* ),*; - { $( $result_return_ty; )* $crate::error::Result<()>; }; - $( $( $return_ty_rest )*; )* - ); - }; - (@GENERATE_RETURN_TYPES - $( #[$attr:meta] )* - pub trait $name:ident $(< $( $generic_param_orig:ident $( : $generic_bound_orig:ident )* ),* >)* { - $( type $client_generic_param:ident $( : $client_generic_bound:ident )*; )* - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident $( < $( $fn_generic:ident ),* > )* ( - $( $param_name:ident : $param_type:ty, )* - ) $( -> $return_ty:ty)*; - )* - }; - $( $generic_param_parsed:ident $( : $generic_bound_parsed:path )* ),*; - { $( $result_return_ty:ty; )* }; - ) => { - decl_runtime_apis!( - @GENERATE_CLIENT_TRAITS - $( #[$attr] )* - pub trait $name $(< $( $generic_param_orig $( : $generic_bound_orig )* ),* >)* { - $( type $client_generic_param $( : $client_generic_bound )*; )* - $( - $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic ),* > )* ( - $( $param_name : $param_type, )* - ) $( -> $return_ty )*; - )* - }; - $( $generic_param_parsed $( : $generic_bound_parsed )* ),*; - { $( $result_return_ty; )* }; - ); - }; - (@GENERATE_CLIENT_TRAITS - $( #[$attr:meta] )* - pub trait $name:ident $(< $( $generic_param_orig:ident $( : $generic_bound_orig:ident )* ),* >)* { - $( type $client_generic_param:ident $( : $client_generic_bound:ident )*; )* - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident $( < $( $fn_generic:ident ),* > )* ( - $( $param_name:ident : $param_type:ty, )* - ) $( -> $return_ty:ty)*; - )* - }; - $( $generic_param_parsed:ident $( : $generic_bound_parsed:path )* ),*; - { $( $result_return_ty:ty; )* }; - ) => { - $( #[$attr] )* - #[cfg(feature = "std")] - pub trait $name < $( $generic_param_parsed $( : $generic_bound_parsed )* ),* > : $crate::runtime_api::Core { - $( type $client_generic_param $( : $client_generic_bound )*; )* - - $( - $( #[$fn_attr] )* - fn $fn_name $( < $( $fn_generic: $crate::runtime_api::Encode + $crate::runtime_api::Decode ),* > )* ( - &self, at: &$crate::runtime_api::BlockId $(, $param_name: $param_type )* - ) -> $result_return_ty; - )* - } - }; - (@GENERATE_RUNTIME_TRAITS - $( - $( #[$attr:meta] )* - pub trait $name:ident $(< $( $generic_param:ident $( : $generic_bound:ident )* ),* >)* { - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident $( < $( $fn_generic:ident ),* > )* ( - $( $param_name:ident : $param_type:ty )* - ) $( -> $return_ty:ty)*; - )* - }; - )* - ) => { - decl_runtime_apis! { - @GENERATE_RUNTIME_TRAITS_WITH_JOINED_GENERICS - $( - $( #[$attr] )* - pub trait $name < $( $( $generic_param $( : $generic_bound )*, )* )* $( $( $( $fn_generic, )* )* )* > { - $( - $( #[$fn_attr] )* - fn $fn_name ($( $param_name: $param_type ),*) $( -> $return_ty )*; - )* - } - )* - } - }; - (@GENERATE_RUNTIME_TRAITS_WITH_JOINED_GENERICS - $( - $( #[$attr:meta] )* - pub trait $name:ident < $( $generic_param:ident $( : $generic_bound:ident )*, )* > { - $( - $( #[$fn_attr:meta] )* - fn $fn_name:ident($( $param_name:ident : $param_type:ty ),*) $( -> $return_ty:ty)*; - )* - } - )* - ) => { - /// The API traits to implement on the runtime side. - pub mod runtime { - use super::*; - - $( - $( #[$attr] )* - pub trait $name < $( $generic_param $( : $generic_bound )* ),* > { - $( - $( #[$fn_attr] )* - fn $fn_name ($( $param_name: $param_type ),*) $( -> $return_ty )*; - )* - } - )* - } - }; -} - -/// Implement the given API's for the given runtime. -/// All desired API's need to be implemented in one `impl_runtime_apis!` call. -/// Besides generating the implementation for the runtime, there will be also generated an -/// auxiliary module named `api` that contains function for inferring with the API in native/wasm. -/// It is important to use the traits from the `runtime` module with this macro. -/// -/// # Example: -/// -/// ```nocompile -/// #[macro_use] -/// extern crate substrate_client as client; -/// -/// use client::runtime_api::runtime::{Core, TaggedTransactionQueue}; -/// -/// impl_runtime_apis! { -/// impl Core for Runtime { -/// fn version() -> RuntimeVersion { unimplemented!() } -/// fn authorities() -> Vec { unimplemented!() } -/// fn execute_block(block: Block) { -/// //comment -/// unimplemented!() -/// } -/// } -/// -/// impl TaggedTransactionQueue for Runtime { -/// fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity { -/// unimplemented!() -/// } -/// } -/// } -/// -/// fn main() {} -/// ``` -#[macro_export] -macro_rules! impl_runtime_apis { - ( - impl $trait_name:ident $( < $( $generic:ident ),* > )* for $runtime:ident { - $( - fn $fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ) $( -> $return_ty:ty )* { - $( $impl:tt )* - } - )* - } - $( $rest:tt )* - ) => { - impl $trait_name $( < $( $generic ),* > )* for $runtime { - $( - fn $fn_name ( $( $arg_name : $arg_ty ),* ) $( -> $return_ty )* { - $( $impl )* - } - )* - } - impl_runtime_apis! { - @EXTEND_FUNCTIONS - $runtime; - ; - $trait_name; - $( $( $generic ),* )*; - { $( $fn_name ( $( $arg_name: $arg_ty ),* ); )* } - $( $rest )* - } - }; - ( - $runtime:ident; - $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( - $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); - )*; - impl $trait_name:ident $( < $( $generic:ident ),* > )* for $runtime_ignore:ident { - $( - fn $fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ) $( -> $return_ty:ty )* { - $( $impl:tt )* - } - )* - } - $( $rest:tt )* - ) => { - impl $trait_name $( < $( $generic ),* > )* for $runtime { - $( - fn $fn_name ( $( $arg_name : $arg_ty ),* ) $( -> $return_ty )* { - $( $impl )* - } - )* - } - impl_runtime_apis! { - @EXTEND_FUNCTIONS - $runtime; - $( - $trait_name_parsed $( < $( $parsed_generic ),* > )* - ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); - )*; - $trait_name; - $( $( $generic ),* )*; - { $( $fn_name ( $( $arg_name: $arg_ty ),* ); )* } - $( $rest )* - } - }; - (@EXTEND_FUNCTIONS - $runtime:ident; - $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( - $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); - )*; - $trait_name:ident; - $( $generic:ident ),*; - { - $fn_name_extend:ident ( $( $arg_name_extend:ident : $arg_ty_extend:ty ),* ); - $( $extend_rest:tt )* - } - $( $rest:tt )* - ) => { - impl_runtime_apis! { - @EXTEND_FUNCTIONS - $runtime; - $( - $trait_name_parsed $( < $( $parsed_generic ),* > )* - ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); - )* - $trait_name < $( $generic ),* > - ::$fn_name_extend ( $( $arg_name_extend: $arg_ty_extend ),* );; - $trait_name; - $( $generic ),*; - { - $( $extend_rest )* - } - $( $rest )* - } - }; - (@EXTEND_FUNCTIONS - $runtime:ident; - $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( - $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); - )*; - $trait_name:ident; - $( $generic:ident ),*; - {} - $( $rest:tt )* - ) => { - impl_runtime_apis! { - $runtime; - $( - $trait_name_parsed $( < $( $parsed_generic ),* > )* - ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); - )*; - $( $rest )* - } - }; - ( - $runtime:ident; - $( - $trait_name:ident $( < $( $generic:ident ),* > )* - ::$fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ); - )*; - ) => { - pub mod api { - use super::*; - - #[cfg(feature = "std")] - pub fn dispatch(method: &str, mut data: &[u8]) -> Option> { - match method { - $( - stringify!($fn_name) => { - Some({impl_runtime_apis! { - @GENERATE_IMPL_CALL - $runtime; - $trait_name $( < $( $generic ),* > )*; - $fn_name; - $( $arg_name : $arg_ty ),*; - data; - }}) - } - )* - _ => None, - } - } - - $( - #[cfg(not(feature = "std"))] - #[no_mangle] - pub fn $fn_name(input_data: *mut u8, input_len: usize) -> u64 { - let mut input = if input_len == 0 { - &[0u8; 0] - } else { - unsafe { - $crate::runtime_api::slice::from_raw_parts(input_data, input_len) - } - }; - - let output = { impl_runtime_apis! { - @GENERATE_IMPL_CALL - $runtime; - $trait_name $( < $( $generic ),* > )*; - $fn_name; - $( $arg_name : $arg_ty ),*; - input; - } }; - let res = output.as_ptr() as u64 + ((output.len() as u64) << 32); - - // Leak the output vector to avoid it being freed. - // This is fine in a WASM context since the heap - // will be discarded after the call. - ::core::mem::forget(output); - res - } - )* - } - }; - (@GENERATE_IMPL_CALL - $runtime:ident; - $trait_name:ident $( < $( $generic:ident ),* > )*; - $fn_name:ident; - $arg_name:ident : $arg_ty:ty; - $input:ident; - ) => { - let $arg_name : $arg_ty = match $crate::runtime_api::Decode::decode(&mut $input) { - Some(input) => input, - None => panic!("Bad input data provided to {}", stringify!($fn_name)), - }; - - let output = <$runtime as $trait_name $( < $( $generic ),* > )*>::$fn_name($arg_name); - $crate::runtime_api::Encode::encode(&output) - }; - (@GENERATE_IMPL_CALL - $runtime:ident; - $trait_name:ident $( < $( $generic:ident ),* > )*; - $fn_name:ident; - $( $arg_name:ident : $arg_ty:ty ),*; - $input:ident; - ) => { - let ( $( $arg_name ),* ) : ($( $arg_ty ),*) = match $crate::runtime_api::Decode::decode(&mut $input) { - Some(input) => input, - None => panic!("Bad input data provided to {}", stringify!($fn_name)), - }; - - let output = <$runtime as $trait_name $( < $( $generic ),* > )*>::$fn_name($( $arg_name ),*); - $crate::runtime_api::Encode::encode(&output) - }; -} diff --git a/core/client/src/runtime_api/traits.rs b/core/client/src/runtime_api/traits.rs deleted file mode 100644 index 4d237a09ef..0000000000 --- a/core/client/src/runtime_api/traits.rs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 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 . - -use primitives::OpaqueMetadata; -use runtime_primitives::{ - traits::{Block as BlockT}, - transaction_validity::TransactionValidity -}; - -decl_runtime_apis! { - /// The `Metadata` api trait that returns metadata for the runtime. - pub trait Metadata { - /// Returns the metadata of a runtime. - fn metadata() -> OpaqueMetadata; - } - - /// The `TaggedTransactionQueue` api trait for interfering with the new transaction queue. - pub trait TaggedTransactionQueue { - /// Validate the given transaction. - fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity; - } -} diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index 0313f7af3c..a871861d18 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -440,7 +440,7 @@ mod tests { type Error = client::error::Error; - type TestClient = client::Client; + type TestClient = client::Client; struct DummyFactory(Arc); struct DummyProposer(u64, Arc); diff --git a/core/consensus/common/src/lib.rs b/core/consensus/common/src/lib.rs index 4758a4abfe..227131914c 100644 --- a/core/consensus/common/src/lib.rs +++ b/core/consensus/common/src/lib.rs @@ -86,25 +86,6 @@ pub trait Proposer { fn propose(&self) -> Self::Create; } -/// Inherent data to include in a block. -#[derive(Encode, Decode)] -pub struct InherentData { - /// Current timestamp. - pub timestamp: u64, - /// Indices of offline validators. - pub offline_indices: Vec, -} - -impl InherentData { - /// Create a new `InherentData` instance. - pub fn new(timestamp: u64, offline_indices: Vec) -> Self { - Self { - timestamp, - offline_indices - } - } -} - /// An oracle for when major synchronization work is being undertaken. /// /// Generally, consensus authoring work isn't undertaken while well behind diff --git a/core/finality-grandpa/primitives/src/lib.rs b/core/finality-grandpa/primitives/src/lib.rs index 4940574533..df224fa9d4 100644 --- a/core/finality-grandpa/primitives/src/lib.rs +++ b/core/finality-grandpa/primitives/src/lib.rs @@ -35,7 +35,7 @@ extern crate substrate_client as client; extern crate sr_std as rstd; use substrate_primitives::AuthorityId; -use sr_primitives::traits::{Block as BlockT, DigestFor, NumberFor}; +use sr_primitives::traits::{DigestFor, NumberFor}; use rstd::vec::Vec; /// A scheduled change of authority set. @@ -79,7 +79,7 @@ decl_runtime_apis! { /// applied in the runtime after those N blocks have passed. /// /// The consensus protocol will coordinate the handoff externally. - pub trait GrandpaApi { + pub trait GrandpaApi { /// Check a digest for pending changes. /// Return `None` if there are no pending changes. /// diff --git a/core/finality-grandpa/src/tests.rs b/core/finality-grandpa/src/tests.rs index c8ba80098d..1dfe8d69e8 100644 --- a/core/finality-grandpa/src/tests.rs +++ b/core/finality-grandpa/src/tests.rs @@ -43,7 +43,7 @@ type PeerData = test_client::Backend, test_client::Executor, Block, - test_client::runtime::ClientWithApi, + test_client::runtime::RuntimeApi, > > >; diff --git a/core/network/src/import_queue.rs b/core/network/src/import_queue.rs index cb7bf86e69..c6bb0c51bc 100644 --- a/core/network/src/import_queue.rs +++ b/core/network/src/import_queue.rs @@ -699,7 +699,7 @@ pub mod tests { } } - fn prepare_good_block() -> (client::Client, Hash, u64, BlockData) { + fn prepare_good_block() -> (client::Client, Hash, u64, BlockData) { let client = test_client::new(); let block = client.new_block().unwrap().bake().unwrap(); client.justify_and_import(BlockOrigin::File, block).unwrap(); diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index 374e825bc8..603aaa9572 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -129,7 +129,7 @@ pub struct TestPacket { recipient: NodeIndex, } -pub type PeersClient = client::Client; +pub type PeersClient = client::Client; pub struct Peer, D> { client: Arc, diff --git a/core/service/src/consensus.rs b/core/service/src/consensus.rs index 338c1680cf..240ba7dc49 100644 --- a/core/service/src/consensus.rs +++ b/core/service/src/consensus.rs @@ -25,10 +25,11 @@ use std; use client::{self, error, Client as SubstrateClient, CallExecutor}; use client::{block_builder::api::BlockBuilder as BlockBuilderApi, runtime_api::{id::BLOCK_BUILDER, Core}}; use codec::{Decode, Encode}; -use consensus_common::{self, InherentData, evaluation, offline_tracker::OfflineTracker}; +use consensus_common::{self, evaluation, offline_tracker::OfflineTracker}; use primitives::{H256, AuthorityId, ed25519, Blake2Hasher}; use runtime_primitives::traits::{Block as BlockT, Hash as HashT, Header as HeaderT, ProvideRuntimeApi}; use runtime_primitives::generic::BlockId; +use runtime_primitives::InherentData; use transaction_pool::txpool::{self, Pool as TransactionPool}; use parking_lot::RwLock; @@ -200,10 +201,7 @@ impl consensus_common::Proposer<::Block> for Pro ) } - let inherent_data = InherentData { - timestamp, - offline_indices, - }; + let inherent_data = InherentData::new(timestamp, offline_indices); let block = self.client.build_block( &self.parent_id, diff --git a/core/sr-api-macros/Cargo.toml b/core/sr-api-macros/Cargo.toml new file mode 100644 index 0000000000..05172e5bf8 --- /dev/null +++ b/core/sr-api-macros/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "sr-api-macros" +version = "0.1.0" +authors = ["Parity Technologies "] + +[lib] +proc-macro = true + +[dependencies] +quote = "0.6" +syn = { version = "0.15", features = [ "full", "fold", "extra-traits", "visit" ] } +proc-macro2 = "0.4" + +[dev-dependencies] +substrate-client = { path = "../client" } +sr-primitives = { path = "../sr-primitives" } +substrate-primitives = { path = "../primitives" } +parity-codec = "2.1" +parity-codec-derive = "2.1" +serde = "1.0" diff --git a/core/sr-api-macros/src/compile_fail_tests.rs b/core/sr-api-macros/src/compile_fail_tests.rs new file mode 100644 index 0000000000..14d77d003c --- /dev/null +++ b/core/sr-api-macros/src/compile_fail_tests.rs @@ -0,0 +1,408 @@ +// Copyright 2018 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 . + +//! Compile fail tests. + +mod declaring_own_block { + /*! + ```compile_fail + #[macro_use] + extern crate substrate_client; + extern crate sr_primitives as runtime_primitives; + + use runtime_primitives::traits::Block as BlockT; + + decl_runtime_apis! { + pub trait Api { + fn test(); + } + } + + fn main() {} + ``` + */ +} + +mod declaring_own_block_with_different_name { + /*! + ```compile_fail + #[macro_use] + extern crate substrate_client; + extern crate sr_primitives as runtime_primitives; + + use runtime_primitives::traits::Block as BlockT; + + decl_runtime_apis! { + pub trait Api { + fn test(); + } + } + + fn main() {} + ``` + */ +} + +mod adding_self_parameter { + /*! + ```compile_fail + #[macro_use] + extern crate substrate_client; + extern crate sr_primitives as runtime_primitives; + + decl_runtime_apis! { + pub trait Api { + fn test(&self); + } + } + + fn main() {} + ``` + */ +} + +mod adding_at_parameter { + /*! + ```compile_fail + #[macro_use] + extern crate substrate_client; + extern crate sr_primitives as runtime_primitives; + + decl_runtime_apis! { + pub trait Api { + fn test(at: u64); + } + } + + fn main() {} + ``` + */ +} + +mod adding_parameter_with_type_reference { + /*! + ```compile_fail + #[macro_use] + extern crate substrate_client; + extern crate sr_primitives as runtime_primitives; + + decl_runtime_apis! { + pub trait Api { + fn test(data: &u64); + } + } + + fn main() {} + ``` + */ +} + +mod missing_block_generic_parameter { + /*! + ```compile_fail + #[macro_use] + extern crate substrate_client; + extern crate sr_primitives as runtime_primitives; + extern crate substrate_primitives as primitives; + #[macro_use] + extern crate parity_codec_derive; + extern crate serde; + extern crate core; + + use primitives::hash::H256; + use runtime_primitives::traits::{BlakeTwo256, GetNodeBlockType, Extrinsic as ExtrinsicT}; + + // All the stuff we need to declare our `Block` + pub type BlockNumber = u64; + pub type DigestItem = runtime_primitives::generic::DigestItem; + pub type Digest = runtime_primitives::generic::Digest; + #[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] + pub struct Extrinsic {} + + impl serde::Serialize for Extrinsic { + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + unimplemented!() + } + } + impl ExtrinsicT for Extrinsic { + fn is_signed(&self) -> Option { + unimplemented!() + } + } + pub type Header = runtime_primitives::generic::Header; + pub type Block = runtime_primitives::generic::Block; + + /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` + /// trait are done by the `construct_runtime!` macro in a real runtime. + struct Runtime {} + impl GetNodeBlockType for Runtime { + type NodeBlock = Block; + } + + decl_runtime_apis! { + pub trait Api { + fn test(data: u64); + } + } + + impl_runtime_apis! { + impl self::Api for Runtime { + fn test(data: u64) { + unimplemented!() + } + } + } + + fn main() {} + ``` + */ +} + +mod missing_path_for_trait { + /*! + ```compile_fail + #[macro_use] + extern crate substrate_client; + extern crate sr_primitives as runtime_primitives; + extern crate substrate_primitives as primitives; + #[macro_use] + extern crate parity_codec_derive; + extern crate serde; + extern crate core; + + use primitives::hash::H256; + use runtime_primitives::traits::{BlakeTwo256, GetNodeBlockType, Extrinsic as ExtrinsicT}; + + // All the stuff we need to declare our `Block` + pub type BlockNumber = u64; + pub type DigestItem = runtime_primitives::generic::DigestItem; + pub type Digest = runtime_primitives::generic::Digest; + #[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] + pub struct Extrinsic {} + impl serde::Serialize for Extrinsic + { + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + unimplemented!() + } + } + impl ExtrinsicT for Extrinsic { + fn is_signed(&self) -> Option { + unimplemented!() + } + } + pub type Header = runtime_primitives::generic::Header; + pub type Block = runtime_primitives::generic::Block; + + /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` + /// trait are done by the `construct_runtime!` macro in a real runtime. + struct Runtime {} + impl GetNodeBlockType for Runtime { + type NodeBlock = Block; + } + + decl_runtime_apis! { + pub trait Api { + fn test(data: u64); + } + } + + impl_runtime_apis! { + impl Api for Runtime { + fn test(data: u64) { + unimplemented!() + } + } + } + + fn main() {} + ``` + */ +} + +mod empty_impl_runtime_apis_call { + /*! + ```compile_fail + #[macro_use] + extern crate substrate_client; + extern crate sr_primitives as runtime_primitives; + extern crate substrate_primitives as primitives; + #[macro_use] + extern crate parity_codec_derive; + extern crate serde; + extern crate core; + + use primitives::hash::H256; + use runtime_primitives::traits::{BlakeTwo256, GetNodeBlockType, Extrinsic as ExtrinsicT}; + + // All the stuff we need to declare our `Block` + pub type BlockNumber = u64; + pub type DigestItem = runtime_primitives::generic::DigestItem; + pub type Digest = runtime_primitives::generic::Digest; + #[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] + pub struct Extrinsic {} + impl serde::Serialize for Extrinsic + { + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + unimplemented!() + } + } + impl ExtrinsicT for Extrinsic { + fn is_signed(&self) -> Option { + unimplemented!() + } + } + pub type Header = runtime_primitives::generic::Header; + pub type Block = runtime_primitives::generic::Block; + + /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` + /// trait are done by the `construct_runtime!` macro in a real runtime. + struct Runtime {} + impl GetNodeBlockType for Runtime { + type NodeBlock = Block; + } + + decl_runtime_apis! { + pub trait Api { + fn test(data: u64); + } + } + + impl_runtime_apis! {} + + fn main() {} + ``` + */ +} + +mod type_reference_in_impl_runtime_apis_call { + /*! + ```compile_fail + #[macro_use] + extern crate substrate_client; + extern crate sr_primitives as runtime_primitives; + extern crate substrate_primitives as primitives; + #[macro_use] + extern crate parity_codec_derive; + extern crate serde; + extern crate core; + + use primitives::hash::H256; + use runtime_primitives::traits::{BlakeTwo256, GetNodeBlockType, Extrinsic as ExtrinsicT}; + + // All the stuff we need to declare our `Block` + pub type BlockNumber = u64; + pub type DigestItem = runtime_primitives::generic::DigestItem; + pub type Digest = runtime_primitives::generic::Digest; + #[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] + pub struct Extrinsic {} + impl serde::Serialize for Extrinsic + { + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + unimplemented!() + } + } + impl ExtrinsicT for Extrinsic { + fn is_signed(&self) -> Option { + unimplemented!() + } + } + pub type Header = runtime_primitives::generic::Header; + pub type Block = runtime_primitives::generic::Block; + + /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` + /// trait are done by the `construct_runtime!` macro in a real runtime. + struct Runtime {} + impl GetNodeBlockType for Runtime { + type NodeBlock = Block; + } + + decl_runtime_apis! { + pub trait Api { + fn test(data: u64); + } + } + + impl_runtime_apis! { + impl self::Api for Runtime { + fn test(data: &u64) { + unimplemented!() + } + } + } + + fn main() {} + ``` + */ +} + +mod impl_incorrect_method_signature { + /*! + ```compile_fail + #[macro_use] + extern crate substrate_client; + extern crate sr_primitives as runtime_primitives; + extern crate substrate_primitives as primitives; + #[macro_use] + extern crate parity_codec_derive; + extern crate serde; + extern crate core; + + use primitives::hash::H256; + use runtime_primitives::traits::{BlakeTwo256, GetNodeBlockType, Extrinsic as ExtrinsicT}; + + // All the stuff we need to declare our `Block` + pub type BlockNumber = u64; + pub type DigestItem = runtime_primitives::generic::DigestItem; + pub type Digest = runtime_primitives::generic::Digest; + #[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] + pub struct Extrinsic {} + impl serde::Serialize for Extrinsic + { + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + unimplemented!() + } + } + impl ExtrinsicT for Extrinsic { + fn is_signed(&self) -> Option { + unimplemented!() + } + } + pub type Header = runtime_primitives::generic::Header; + pub type Block = runtime_primitives::generic::Block; + + /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` + /// trait are done by the `construct_runtime!` macro in a real runtime. + struct Runtime {} + impl GetNodeBlockType for Runtime { + type NodeBlock = Block; + } + + decl_runtime_apis! { + pub trait Api { + fn test(data: u64); + } + } + + impl_runtime_apis! { + impl self::Api for Runtime { + fn test(data: String) {} + } + } + + fn main() {} + ``` + */ +} diff --git a/core/sr-api-macros/src/decl_runtime_apis.rs b/core/sr-api-macros/src/decl_runtime_apis.rs new file mode 100644 index 0000000000..1f723519e1 --- /dev/null +++ b/core/sr-api-macros/src/decl_runtime_apis.rs @@ -0,0 +1,278 @@ +// Copyright 2018 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 . + +use utils::{ + generate_crate_access, generate_hidden_includes, generate_runtime_mod_name_for_trait, + fold_fn_decl_for_client_side +}; + +use proc_macro; +use proc_macro2::TokenStream; + +use quote::quote; + +use syn::{ + spanned::Spanned, parse_macro_input, parse::{Parse, ParseStream, Result, Error}, + fold::{self, Fold}, FnDecl, parse_quote, ItemTrait, Generics, GenericParam, Attribute, + visit::{Visit, self}, FnArg, Pat, TraitBound, Type +}; + +/// Unique identifier used to make the hidden includes unique for this macro. +const HIDDEN_INCLUDES_ID: &str = "DECL_RUNTIME_APIS"; + +/// The structure used for parsing the runtime api declarations. +struct RuntimeApiDecls { + decls: Vec, +} + +impl Parse for RuntimeApiDecls { + fn parse(input: ParseStream) -> Result { + let mut decls = Vec::new(); + + while !input.is_empty() { + decls.push(ItemTrait::parse(input)?); + } + + Ok(Self { decls }) + } +} + +/// Extend the given generics with `Block: BlockT` as first generic parameter. +fn extend_generics_with_block(generics: &mut Generics) { + let c = generate_crate_access(HIDDEN_INCLUDES_ID); + + generics.lt_token = Some(parse_quote!(<)); + generics.params.insert(0, parse_quote!( Block: #c::runtime_api::BlockT )); + generics.gt_token = Some(parse_quote!(>)); +} + +// Check if `core_trait` attribute is present and remove it. Returns if the attribute was found. +fn remove_core_trait_attribute(attrs: &mut Vec) -> bool { + let mut found = false; + attrs.retain(|v| { + let res = v.path.is_ident("core_trait"); + found |= res; + !res + }); + found +} + +/// Generate the decleration of the trait for the runtime. +fn generate_runtime_decls(decls: &[ItemTrait]) -> TokenStream { + let mut result = Vec::new(); + + for decl in decls { + let mut decl = decl.clone(); + extend_generics_with_block(&mut decl.generics); + let mod_name = generate_runtime_mod_name_for_trait(&decl.ident); + remove_core_trait_attribute(&mut decl.attrs); + + result.push(quote!( + #[doc(hidden)] + pub mod #mod_name { + use super::*; + + #decl + } + )); + } + + quote!( #( #result )* ) +} + +/// Modify the given runtime api declaration to be usable on the client side. +struct ToClientSideDecl<'a> { + block_id: &'a TokenStream, + crate_: &'a TokenStream, +} + +impl<'a> Fold for ToClientSideDecl<'a> { + fn fold_fn_decl(&mut self, input: FnDecl) -> FnDecl { + let input = fold_fn_decl_for_client_side( + input, + &self.block_id, + &self.crate_ + ); + + fold::fold_fn_decl(self, input) + } + + fn fold_item_trait(&mut self, mut input: ItemTrait) -> ItemTrait { + extend_generics_with_block(&mut input.generics); + + // Check if this is the `Core` runtime api trait. + let is_core_trait = remove_core_trait_attribute(&mut input.attrs); + + if is_core_trait { + // Add all the supertraits we want to have for `Core`. + let crate_ = &self.crate_; + input.supertraits = parse_quote!( + 'static + + Send + + Sync + + #crate_::runtime_api::ConstructRuntimeApi + + #crate_::runtime_api::ApiExt + ); + } else { + // Add the `Core` runtime api as super trait. + let crate_ = &self.crate_; + input.supertraits.push(parse_quote!( #crate_::runtime_api::Core )); + } + + // The client side trait is only required when compiling with the feature `std` or `test`. + input.attrs.push(parse_quote!( #[cfg(any(feature = "std", test))] )); + + fold::fold_item_trait(self, input) + } +} + +/// Generate the decleration of the trait for the client side. +fn generate_client_side_decls(decls: &[ItemTrait]) -> TokenStream { + let mut result = Vec::new(); + + for decl in decls { + let mut decl = decl.clone(); + + let crate_ = generate_crate_access(HIDDEN_INCLUDES_ID); + let block_id = quote!( #crate_::runtime_api::BlockId ); + let mut to_client_side = ToClientSideDecl { crate_: &crate_, block_id: &block_id }; + + result.push(to_client_side.fold_item_trait(decl)); + } + + quote!( #( #result )* ) +} + +/// Checks that a trait declaration is in the format we expect. +struct CheckTraitDecl { + errors: Vec, +} + +impl<'ast> Visit<'ast> for CheckTraitDecl { + fn visit_fn_arg(&mut self, input: &'ast FnArg) { + match input { + FnArg::Captured(ref arg) => { + match arg.pat { + Pat::Ident(ref pat) if pat.ident == "at" => { + self.errors.push( + Error::new( + pat.span(), + "`decl_runtime_apis!` adds automatically a parameter \ + `at: &BlockId`. Please rename/remove your parameter." + ) + ) + }, + _ => {} + } + + match arg.ty { + Type::Reference(ref reference) => { + self.errors.push( + Error::new( + reference.span(), + "Do not use type references as arguments. The client side \ + declaration will take all arguments as reference automatically." + ) + ) + }, + _ => {}, + } + }, + FnArg::SelfRef(_) | FnArg::SelfValue(_) => { + self.errors.push(Error::new(input.span(), "Self values are not supported.")) + } + _ => { + self.errors.push( + Error::new( + input.span(), + "Only function arguments in the form `pat: type` are supported." + ) + ) + } + } + + visit::visit_fn_arg(self, input); + } + + fn visit_generic_param(&mut self, input: &'ast GenericParam) { + match input { + GenericParam::Type(ty) if &ty.ident == "Block" => { + self.errors.push( + Error::new( + input.span(), + "`Block: BlockT` generic parameter will be added automatically by the \ + `decl_runtime_apis!` macro!" + ) + ) + }, + _ => {} + } + + visit::visit_generic_param(self, input); + } + + fn visit_trait_bound(&mut self, input: &'ast TraitBound) { + if let Some(last_ident) = input.path.segments.last().map(|v| &v.value().ident) { + if last_ident == "BlockT" || last_ident == "Block" { + self.errors.push( + Error::new( + input.span(), + "`Block: BlockT` generic parameter will be added automatically by the \ + `decl_runtime_apis!` macro! If you try to use a different trait than the \ + substrate `Block` trait, please rename it locally." + ) + ) + } + } + + visit::visit_trait_bound(self, input) + } +} + +/// Check that the trait declarations are in the format we expect. +fn check_trait_decls(decls: &[ItemTrait]) -> Option { + let mut checker = CheckTraitDecl { errors: Vec::new() }; + decls.iter().for_each(|decl| visit::visit_item_trait(&mut checker, &decl)); + + if checker.errors.is_empty() { + None + } else { + let errors = checker.errors.into_iter().map(|e| e.to_compile_error()); + Some(quote!( #( #errors )* )) + } +} + +/// The implementation of the `decl_runtime_apis!` macro. +pub fn decl_runtime_apis_impl(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + // Parse all trait declarations + let RuntimeApiDecls { decls: api_decls } = parse_macro_input!(input as RuntimeApiDecls); + + if let Some(errors) = check_trait_decls(&api_decls) { + return errors.into(); + } + + let hidden_includes = generate_hidden_includes(HIDDEN_INCLUDES_ID); + let runtime_decls = generate_runtime_decls(&api_decls); + let client_side_decls = generate_client_side_decls(&api_decls); + + quote!( + #hidden_includes + + #runtime_decls + + #client_side_decls + ).into() +} diff --git a/core/sr-api-macros/src/impl_runtime_apis.rs b/core/sr-api-macros/src/impl_runtime_apis.rs new file mode 100644 index 0000000000..6817366def --- /dev/null +++ b/core/sr-api-macros/src/impl_runtime_apis.rs @@ -0,0 +1,528 @@ +// Copyright 2018 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 . + +use utils::{ + unwrap_or_error, generate_crate_access, generate_hidden_includes, + generate_runtime_mod_name_for_trait, fold_fn_decl_for_client_side +}; + +use proc_macro; +use proc_macro2::{Span, TokenStream}; + +use quote::quote; + +use syn::{ + spanned::Spanned, parse_macro_input, Ident, Type, ItemImpl, MethodSig, FnArg, Path, + ImplItem, parse::{Parse, ParseStream, Result, Error}, PathArguments, GenericArgument, TypePath, + fold::{self, Fold}, FnDecl, parse_quote, Pat +}; + +use std::iter; + +/// Unique identifier used to make the hidden includes unique for this macro. +const HIDDEN_INCLUDES_ID: &str = "IMPL_RUNTIME_APIS"; + +/// The structure used for parsing the runtime api implementations. +struct RuntimeApiImpls { + impls: Vec, +} + +impl Parse for RuntimeApiImpls { + fn parse(input: ParseStream) -> Result { + let mut impls = Vec::new(); + + while !input.is_empty() { + impls.push(ItemImpl::parse(input)?); + } + + Ok(Self { impls }) + } +} + +/// Generates the call to the implementation of the requested function. +/// The generated code includes decoding of the input arguments and encoding of the output. +fn generate_impl_call( + signature: &MethodSig, + runtime: &Type, + input: &Ident, + impl_trait: &Path +) -> Result { + let mut pnames = Vec::new(); + let mut ptypes = Vec::new(); + let mut generated_pattern_counter = 0; + for input in signature.decl.inputs.iter() { + match input { + FnArg::Captured(arg) => { + match &arg.ty { + Type::Reference(_) => { + return Err( + Error::new( + arg.ty.span(), + "No type references are allowed in the api traits!" + ) + ) + }, + _ => {}, + } + + pnames.push( + generate_unique_pattern(arg.pat.clone(), &mut generated_pattern_counter) + ); + ptypes.push(&arg.ty); + }, + _ => { + return Err( + Error::new( + input.span(), + "Only function arguments with the following \ + pattern are accepted: `name: type`!" + ) + ) + } + } + } + + let c = generate_crate_access(HIDDEN_INCLUDES_ID); + let c_iter = iter::repeat(&c); + let fn_name = &signature.ident; + let fn_name_str = iter::repeat(fn_name.to_string()); + let input = iter::repeat(input); + let pnames2 = pnames.clone(); + + Ok( + quote!( + #( + let #pnames : #ptypes = match #c_iter::runtime_api::Decode::decode(&mut #input) { + Some(input) => input, + None => panic!("Bad input data provided to {}", #fn_name_str), + }; + )* + + let output = <#runtime as #impl_trait>::#fn_name(#( #pnames2 ),*); + #c::runtime_api::Encode::encode(&output) + ).into() + ) +} + +/// Extract the trait that is implemented in the given `ItemImpl`. +fn extract_impl_trait<'a>(impl_: &'a ItemImpl) -> Result<&'a Path> { + impl_.trait_.as_ref().map(|v| &v.1).ok_or_else( + || Error::new(impl_.span(), "Only implementation of traits are supported!") + ).and_then(|p| { + if p.segments.len() > 1 { + Ok(p) + } else { + Err( + Error::new( + p.span(), + "The implemented trait has to be referenced with a path, \ + e.g. `impl client::Core for Runtime`." + ) + ) + } + }) +} + +/// Extracts the runtime block identifier. +fn extract_runtime_block_ident(trait_: &Path) -> Result<&TypePath> { + let span = trait_.span(); + let segment = trait_ + .segments + .last() + .ok_or_else( + || Error::new(span, "Empty path not supported") + )?; + let generics = segment.value(); + + match &generics.arguments { + PathArguments::AngleBracketed(ref args) => { + args.args.first().and_then(|v| match v.value() { + GenericArgument::Type(Type::Path(block)) => Some(block), + _ => None + }).ok_or_else(|| Error::new(args.span(), "Missing `Block` generic parameter.")) + }, + PathArguments::None => { + let span = trait_.segments.last().as_ref().unwrap().value().span(); + Err(Error::new(span, "Missing `Block` generic parameter.")) + }, + PathArguments::Parenthesized(_) => { + Err(Error::new(generics.arguments.span(), "Unexpected parentheses in path!")) + } + } +} + +/// Generate all the implementation calls for the given functions. +fn generate_impl_calls(impls: &[ItemImpl], input: &Ident) -> Result> { + let mut impl_calls = Vec::new(); + + for impl_ in impls { + let impl_trait = extend_with_runtime_decl_path(extract_impl_trait(impl_)?.clone()); + + for item in &impl_.items { + match item { + ImplItem::Method(method) => { + let impl_call = generate_impl_call( + &method.sig, + &impl_.self_ty, + input, + &impl_trait + )?; + + impl_calls.push((method.sig.ident.clone(), impl_call)); + }, + _ => {}, + } + } + } + + Ok(impl_calls) +} + +/// Generate the dispatch function that is used in native to call into the runtime. +fn generate_dispatch_function(impls: &[ItemImpl]) -> Result { + let data = Ident::new("data", Span::call_site()); + let impl_calls = generate_impl_calls(impls, &data)?.into_iter().map(|(fn_name, impl_)| { + let fn_name = fn_name.to_string(); + quote!( #fn_name => Some({ #impl_ }), ) + }); + + Ok(quote!( + #[cfg(feature = "std")] + pub fn dispatch(method: &str, mut #data: &[u8]) -> Option> { + match method { + #( #impl_calls )* + _ => None, + } + } + ).into()) +} + +/// Generate the interface functions that are used to call into the runtime in wasm. +fn generate_wasm_interface(impls: &[ItemImpl]) -> Result { + let input = Ident::new("input", Span::call_site()); + let c = generate_crate_access(HIDDEN_INCLUDES_ID); + let impl_calls = generate_impl_calls(impls, &input)?.into_iter().map(|(fn_name, impl_)| { + quote!( + #[cfg(not(feature = "std"))] + #[no_mangle] + pub fn #fn_name(input_data: *mut u8, input_len: usize) -> u64 { + let mut #input = if input_len == 0 { + &[0u8; 0] + } else { + unsafe { + #c::runtime_api::slice::from_raw_parts(input_data, input_len) + } + }; + + let output = { #impl_ }; + let res = output.as_ptr() as u64 + ((output.len() as u64) << 32); + + // Leak the output vector to avoid it being freed. + // This is fine in a WASM context since the heap + // will be discarded after the call. + ::core::mem::forget(output); + res + } + ) + }); + + Ok(quote!( #( #impl_calls )* )) +} + +fn generate_block_and_block_id_ty( + runtime: &Type, + trait_: &'static str, + assoc_type: &'static str, +) -> (TokenStream, TokenStream) { + let crate_ = generate_crate_access(HIDDEN_INCLUDES_ID); + let trait_ = Ident::new(trait_, Span::call_site()); + let assoc_type = Ident::new(assoc_type, Span::call_site()); + + let block = quote!( <#runtime as #crate_::runtime_api::#trait_>::#assoc_type ); + let block_id = quote!( #crate_::runtime_api::BlockId<#block> ); + + (block, block_id) +} + +fn generate_node_block_and_block_id_ty(runtime: &Type) -> (TokenStream, TokenStream) { + generate_block_and_block_id_ty(runtime, "GetNodeBlockType", "NodeBlock") +} + +fn generate_runtime_api_base_structures(impls: &[ItemImpl]) -> Result { + let crate_ = generate_crate_access(HIDDEN_INCLUDES_ID); + let runtime = &impls.get(0).ok_or_else(|| + Error::new(Span::call_site(), "No api implementation given!") + )?.self_ty; + let (block, block_id) = generate_node_block_and_block_id_ty(runtime); + + Ok(quote!( + /// Implements all runtime apis for the client side. + #[cfg(any(feature = "std", test))] + pub struct RuntimeApi { + call: ::std::ptr::NonNull<#crate_::runtime_api::CallApiAt<#block>>, + commit_on_success: ::std::cell::RefCell, + initialised_block: ::std::cell::RefCell>, + changes: ::std::cell::RefCell<#crate_::runtime_api::OverlayedChanges>, + } + + // `RuntimeApi` itself is not threadsafe. However, an instance is only available in a + // `ApiRef` object and `ApiRef` also has an associated lifetime. This lifetimes makes it + // impossible to move `RuntimeApi` into another thread. + #[cfg(any(feature = "std", test))] + unsafe impl Send for RuntimeApi {} + #[cfg(any(feature = "std", test))] + unsafe impl Sync for RuntimeApi {} + + #[cfg(any(feature = "std", test))] + impl #crate_::runtime_api::ApiExt for RuntimeApi { + fn map_api_result ::std::result::Result, R, E>( + &self, + map_call: F + ) -> ::std::result::Result { + *self.commit_on_success.borrow_mut() = false; + let res = map_call(self); + *self.commit_on_success.borrow_mut() = true; + + self.commit_on_ok(&res); + + res + } + } + + #[cfg(any(feature = "std", test))] + impl #crate_::runtime_api::ConstructRuntimeApi<#block> for RuntimeApi { + fn construct_runtime_api<'a, T: #crate_::runtime_api::CallApiAt<#block>>( + call: &'a T + ) -> #crate_::runtime_api::ApiRef<'a, Self> { + RuntimeApi { + call: unsafe { + ::std::ptr::NonNull::new_unchecked( + call as &#crate_::runtime_api::CallApiAt<#block> as *const _ as *mut _ + ) + }, + commit_on_success: true.into(), + initialised_block: None.into(), + changes: Default::default(), + }.into() + } + } + + #[cfg(any(feature = "std", test))] + impl RuntimeApi { + fn call_api_at( + &self, + at: &#block_id, + function: &'static str, + args: &A + ) -> #crate_::error::Result { + let res = unsafe { + self.call.as_ref().call_api_at( + at, + function, + args.encode(), + &mut *self.changes.borrow_mut(), + &mut *self.initialised_block.borrow_mut() + ).and_then(|r| + R::decode(&mut &r[..]) + .ok_or_else(|| + #crate_::error::ErrorKind::CallResultDecode(function).into() + ) + ) + }; + + self.commit_on_ok(&res); + res + } + + fn commit_on_ok(&self, res: &::std::result::Result) { + if *self.commit_on_success.borrow() { + if res.is_err() { + self.changes.borrow_mut().discard_prospective(); + } else { + self.changes.borrow_mut().commit_prospective(); + } + } + } + } + )) +} + +/// Extend the given trait path with module that contains the declaration of the trait for the +/// runtime. +fn extend_with_runtime_decl_path(mut trait_: Path) -> Path { + let runtime = { + let trait_name = &trait_ + .segments + .last() + .as_ref() + .expect("Trait path should always contain at least one item; qed") + .value() + .ident; + + generate_runtime_mod_name_for_trait(trait_name) + }; + + let pos = trait_.segments.len() - 1; + trait_.segments.insert(pos, runtime.clone().into()); + trait_ +} + +/// Generates the implementations of the apis for the runtime. +fn generate_api_impl_for_runtime(impls: &[ItemImpl]) -> Result { + let mut impls_prepared = Vec::new(); + + // We put `runtime` before each trait to get the trait that is intended for the runtime and + // we put the `RuntimeBlock` as first argument for the trait generics. + for impl_ in impls.iter() { + let mut impl_ = impl_.clone(); + let trait_ = extract_impl_trait(&impl_)?.clone(); + let trait_ = extend_with_runtime_decl_path(trait_); + + impl_.trait_.as_mut().unwrap().1 = trait_; + impls_prepared.push(impl_); + } + + Ok(quote!( #( #impls_prepared )* )) +} + +/// Generate an unique pattern based on the given counter, if the given pattern is a `_`. +fn generate_unique_pattern(pat: Pat, counter: &mut u32) -> Pat { + match pat { + Pat::Wild(_) => { + let generated_name = Ident::new( + &format!("impl_runtime_api_generated_name_{}", counter), + pat.span() + ); + *counter += 1; + + parse_quote!( #generated_name ) + }, + _ => pat, + } +} + +/// Auxilariy data structure that is used to convert `impl Api for Runtime` to +/// `impl Api for RuntimeApi`. +/// This requires us to replace the runtime `Block` with the node `Block`, +/// `impl Api for Runtime` with `impl Api for RuntimeApi` and replace the method implementations +/// with code that calls into the runtime. +struct ApiRuntimeImplToApiRuntimeApiImpl<'a> { + node_block: &'a TokenStream, + runtime_block: &'a TypePath, + node_block_id: &'a TokenStream, +} + +impl<'a> Fold for ApiRuntimeImplToApiRuntimeApiImpl<'a> { + fn fold_type_path(&mut self, input: TypePath) -> TypePath { + let new_ty_path = if input == *self.runtime_block { + let node_block = self.node_block; + parse_quote!( #node_block ) + } else { + input + }; + + fold::fold_type_path(self, new_ty_path) + } + + fn fold_fn_decl(&mut self, input: FnDecl) -> FnDecl { + let input = fold_fn_decl_for_client_side( + input, + &self.node_block_id, + &generate_crate_access(HIDDEN_INCLUDES_ID) + ); + + fold::fold_fn_decl(self, input) + } + + fn fold_impl_item_method(&mut self, mut input: syn::ImplItemMethod) -> syn::ImplItemMethod { + { + let mut generated_name_counter = 0; + let arg_names = input.sig.decl.inputs.iter_mut().filter_map(|i| match i { + FnArg::Captured(ref mut arg) => Some(&mut arg.pat), + _ => None, + }).map(|p| { + *p = generate_unique_pattern(p.clone(), &mut generated_name_counter); + p + }); + let name = input.sig.ident.to_string(); + + // Generate the new method implementation that calls into the runime. + input.block = parse_quote!( { self.call_api_at(at, #name, &( #( #arg_names ),* )) } ); + } + + fold::fold_impl_item_method(self, input) + } + + fn fold_item_impl(&mut self, mut input: ItemImpl) -> ItemImpl { + // Implement the trait for the `RuntimeApi` + input.self_ty = Box::new(parse_quote!( RuntimeApi )); + + // The implementation for the `RuntimeApi` is only required when compiling with the feature + // `std` or `test`. + input.attrs.push(parse_quote!( #[cfg(any(feature = "std", test))] )); + + fold::fold_item_impl(self, input) + } +} + +fn generate_api_impl_for_runtime_api(impls: &[ItemImpl]) -> Result { + let mut result = Vec::with_capacity(impls.len()); + + for impl_ in impls { + let runtime_block = extract_runtime_block_ident(extract_impl_trait(&impl_)?)?; + let (node_block, node_block_id) = generate_node_block_and_block_id_ty(&impl_.self_ty); + + let mut visitor = ApiRuntimeImplToApiRuntimeApiImpl { + runtime_block, + node_block: &node_block, + node_block_id: &node_block_id, + }; + + result.push(visitor.fold_item_impl(impl_.clone())); + } + + Ok(quote!( #( #result )* )) +} + +/// The implementation of the `impl_runtime_apis!` macro. +pub fn impl_runtime_apis_impl(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + // Parse all impl blocks + let RuntimeApiImpls { impls: api_impls } = parse_macro_input!(input as RuntimeApiImpls); + let dispatch_impl = unwrap_or_error(generate_dispatch_function(&api_impls)); + let wasm_interface = unwrap_or_error(generate_wasm_interface(&api_impls)); + let hidden_includes = generate_hidden_includes(HIDDEN_INCLUDES_ID); + let base_runtime_api = unwrap_or_error(generate_runtime_api_base_structures(&api_impls)); + let api_impls_for_runtime = unwrap_or_error(generate_api_impl_for_runtime(&api_impls)); + let api_impls_for_runtime_api = unwrap_or_error(generate_api_impl_for_runtime_api(&api_impls)); + + quote!( + #hidden_includes + + #base_runtime_api + + #api_impls_for_runtime + + #api_impls_for_runtime_api + + pub mod api { + use super::*; + + #dispatch_impl + + #wasm_interface + } + ).into() +} diff --git a/core/sr-api-macros/src/lib.rs b/core/sr-api-macros/src/lib.rs new file mode 100644 index 0000000000..371cbbef6f --- /dev/null +++ b/core/sr-api-macros/src/lib.rs @@ -0,0 +1,164 @@ +// Copyright 2018 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 . + +//! Macros for declaring and implementing runtime apis. + +#![recursion_limit = "128"] +extern crate proc_macro; +extern crate proc_macro2; +extern crate quote; +extern crate syn; + +use proc_macro::TokenStream; + +mod impl_runtime_apis; +mod decl_runtime_apis; +mod utils; +mod compile_fail_tests; + +/// Tags given trait implementations as runtime apis. +/// +/// All traits given to this macro, need to be declared with the `decl_runtime_apis!` macro. +/// The implementation of the trait should follow the declaration given to the `decl_runtime_apis!` +/// macro, besides the `Block` type that is required as first generic parameter for each runtime +/// api trait. When implementing a runtime api trait, it is required that the trait is referenced +/// by a path, e.g. `impl my_trait::MyTrait for Runtime`. The macro will use this path to access +/// the declaration of the trait for the runtime side. +/// +/// The macro also generates the implementation of the apis for the client side by generating the +/// `RuntimeApi` type. The `RuntimeApi` is hidden behind a `feature` called `std`. +/// +/// # Example +/// +/// ```rust +/// #[macro_use] +/// extern crate substrate_client; +/// # extern crate sr_primitives as runtime_primitives; +/// # extern crate substrate_primitives as primitives; +/// # #[macro_use] +/// # extern crate parity_codec_derive; +/// # extern crate serde; +/// # extern crate core; +/// # +/// # use primitives::hash::H256; +/// # use runtime_primitives::traits::{BlakeTwo256, GetNodeBlockType, Extrinsic as ExtrinsicT}; +/// # +/// # // All the stuff we need to declare our `Block` +/// # pub type BlockNumber = u64; +/// # pub type DigestItem = runtime_primitives::generic::DigestItem; +/// # pub type Digest = runtime_primitives::generic::Digest; +/// # #[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] +/// # pub struct Extrinsic {} +/// # +/// # impl serde::Serialize for Extrinsic { +/// # fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { +/// # unimplemented!() +/// # } +/// # } +/// # impl ExtrinsicT for Extrinsic { +/// # fn is_signed(&self) -> Option { +/// # unimplemented!() +/// # } +/// # } +/// # pub type Header = runtime_primitives::generic::Header; +/// # pub type Block = runtime_primitives::generic::Block; +/// # +/// # /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` +/// # /// trait are done by the `construct_runtime!` macro in a real runtime. +/// # struct Runtime {} +/// # impl GetNodeBlockType for Runtime { +/// # type NodeBlock = Block; +/// # } +/// # +/// # decl_runtime_apis! { +/// # /// Declare the api trait. +/// # pub trait Balance { +/// # /// Get the balance. +/// # fn get_balance() -> u64; +/// # /// Set the balance. +/// # fn set_balance(val: u64); +/// # } +/// # pub trait BlockBuilder { +/// # fn build_block() -> Block; +/// # } +/// # } +/// +/// /// All runtime api implementations need to be done in one call of the macro! +/// impl_runtime_apis! { +/// impl self::Balance for Runtime { +/// fn get_balance() -> u64 { +/// 1 +/// } +/// fn set_balance(_bal: u64) { +/// // Store the balance +/// } +/// } +/// +/// impl self::BlockBuilder for Runtime { +/// fn build_block() -> Block { +/// unimplemented!("Please implement me!") +/// } +/// } +/// } +/// +/// # fn main() {} +/// ``` +#[proc_macro] +pub fn impl_runtime_apis(input: TokenStream) -> TokenStream { + impl_runtime_apis::impl_runtime_apis_impl(input) +} + +/// Declares given traits as runtime apis. +/// +/// The macro will create two declarations, one for using on the client side and one for using +/// on the runtime side. The declaration for the runtime side is hidden in its own module. +/// The client side declaration gets two extra parameters per function, +/// `&self` and `at: &BlockId`. The runtime side declaration will match the given trait +/// declaration. Besides one exception, the macro adds an extra generic parameter `Block: BlockT` +/// to the client side and the runtime side. This generic parameter is usable by the user. +/// +/// For implementing these macros you should use the `impl_runtime_apis!` macro. +/// +/// # Example +/// +/// ```rust +/// #[macro_use] +/// extern crate substrate_client; +/// +/// decl_runtime_apis! { +/// /// Declare the api trait. +/// pub trait Balance { +/// /// Get the balance. +/// fn get_balance() -> u64; +/// /// Set the balance. +/// fn set_balance(val: u64); +/// } +/// +/// /// You can declare multiple api traits in one macro call. +/// /// In one module you can call the macro at maximum one time. +/// pub trait BlockBuilder { +/// /// The macro adds an explicit `Block: BlockT` generic parameter for you. +/// /// You can use this generic parameter as you would defined it manually. +/// fn build_block() -> Block; +/// } +/// } +/// +/// # fn main() {} +/// ``` +#[proc_macro] +pub fn decl_runtime_apis(input: TokenStream) -> TokenStream { + decl_runtime_apis::decl_runtime_apis_impl(input) +} diff --git a/core/sr-api-macros/src/utils.rs b/core/sr-api-macros/src/utils.rs new file mode 100644 index 0000000000..4c80adf16b --- /dev/null +++ b/core/sr-api-macros/src/utils.rs @@ -0,0 +1,97 @@ +// Copyright 2018 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 . + +use proc_macro2::{TokenStream, Span}; +use syn::{Result, Ident, FnDecl, parse_quote, Type, FnArg}; +use quote::quote; +use std::env; + +/// Unwrap the given result, if it is an error, `compile_error!` will be generated. +pub fn unwrap_or_error(res: Result) -> TokenStream { + res.unwrap_or_else(|e| e.to_compile_error()) +} + +fn generate_hidden_includes_mod_name(unique_id: &'static str) -> Ident { + Ident::new(&format!("sr_api_hidden_includes_{}", unique_id), Span::call_site()) +} + +/// Generates the hidden includes that are required to make the macro independent from its scope. +pub fn generate_hidden_includes(unique_id: &'static str) -> TokenStream { + if env::var("CARGO_PKG_NAME").unwrap() == "substrate-client" { + TokenStream::new() + } else { + let mod_name = generate_hidden_includes_mod_name(unique_id); + quote!( + #[doc(hidden)] + mod #mod_name { + pub extern crate substrate_client as sr_api_client; + } + ) + }.into() +} + +/// Generates the access to the `subtrate_client` crate. +pub fn generate_crate_access(unique_id: &'static str) -> TokenStream { + if env::var("CARGO_PKG_NAME").unwrap() == "substrate-client" { + quote!( crate ) + } else { + let mod_name = generate_hidden_includes_mod_name(unique_id); + quote!( self::#mod_name::sr_api_client ) + }.into() +} + +/// Generates the name of the module that contains the trait declaration for the runtime. +pub fn generate_runtime_mod_name_for_trait(trait_: &Ident) -> Ident { + Ident::new(&format!("runtime_decl_for_{}", trait_.to_string()), Span::call_site()) +} + +/// Fold the given `FnDecl` to make it usable on the client side. +pub fn fold_fn_decl_for_client_side( + mut input: FnDecl, + block_id: &TokenStream, + crate_: &TokenStream +) -> FnDecl { + // Add `&` to all parameter types. + input.inputs + .iter_mut() + .filter_map(|i| match i { + FnArg::Captured(ref mut arg) => Some(&mut arg.ty), + _ => None, + }) + .filter_map(|i| match i { + Type::Reference(_) => None, + r => Some(r), + }) + .for_each(|i| *i = parse_quote!( &#i )); + + // Add `&self, at:& BlockId` as parameters to each function at the beginning. + input.inputs.insert(0, parse_quote!( at: &#block_id )); + input.inputs.insert(0, parse_quote!( &self )); + + // Wrap the output in a `Result` + input.output = { + let generate_result = |ty: &Type| { + parse_quote!( -> ::std::result::Result<#ty, #crate_::error::Error> ) + }; + + match &input.output { + syn::ReturnType::Default => generate_result(&parse_quote!( () )), + syn::ReturnType::Type(_, ref ty) => generate_result(&ty), + } + }; + + input +} diff --git a/core/sr-api-macros/tests/decl_and_impl.rs b/core/sr-api-macros/tests/decl_and_impl.rs new file mode 100644 index 0000000000..97dc2f9189 --- /dev/null +++ b/core/sr-api-macros/tests/decl_and_impl.rs @@ -0,0 +1,93 @@ +#[macro_use] +extern crate substrate_client; +extern crate sr_primitives as runtime_primitives; +extern crate substrate_primitives as primitives; +#[macro_use] +extern crate parity_codec_derive; +extern crate serde; +extern crate core; + +use primitives::hash::H256; +use runtime_primitives::traits::{ + BlakeTwo256, GetNodeBlockType, Extrinsic as ExtrinsicT, Block as BlockT +}; +use runtime_primitives::generic::BlockId; +use substrate_client::runtime_api; +use primitives::AuthorityId; +use substrate_client::error::Result; + +// All the stuff we need to declare our `Block` +pub type BlockNumber = u64; +pub type DigestItem = runtime_primitives::generic::DigestItem; +pub type Digest = runtime_primitives::generic::Digest; +#[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] +pub struct Extrinsic {} + +impl serde::Serialize for Extrinsic { + fn serialize( + &self, + _: S + ) -> ::std::result::Result where S: ::serde::Serializer { + unimplemented!() + } +} +impl ExtrinsicT for Extrinsic { + fn is_signed(&self) -> Option { + unimplemented!() + } +} +pub type Header = runtime_primitives::generic::Header; +pub type Block = runtime_primitives::generic::Block; + +/// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` +/// trait are done by the `construct_runtime!` macro in a real runtime. +pub struct Runtime {} +impl GetNodeBlockType for Runtime { + type NodeBlock = Block; +} + +decl_runtime_apis! { + pub trait Api { + fn test(data: u64); + fn something_with_block(block: Block) -> Block; + fn function_with_two_args(data: u64, block: Block); + } +} + +impl_runtime_apis! { + impl self::Api for Runtime { + fn test(_: u64) { + unimplemented!() + } + + fn something_with_block(_: Block) -> Block { + unimplemented!() + } + + fn function_with_two_args(_: u64, _: Block) { + unimplemented!() + } + } + + impl runtime_api::Core for Runtime { + fn version() -> runtime_api::RuntimeVersion { + unimplemented!() + } + fn authorities() -> Vec { + unimplemented!() + } + fn execute_block(_: Block) { + unimplemented!() + } + fn initialise_block(_: ::Header) { + unimplemented!() + } + } +} + +#[test] +fn test_client_side_function_signature() { + let _test: fn(&RuntimeApi, &BlockId, &u64) -> Result<()> = RuntimeApi::test; + let _something_with_block: fn(&RuntimeApi, &BlockId, &Block) -> Result = + RuntimeApi::something_with_block; +} diff --git a/core/sr-primitives/src/generic/era.rs b/core/sr-primitives/src/generic/era.rs index 71ee8fa145..bccee778be 100644 --- a/core/sr-primitives/src/generic/era.rs +++ b/core/sr-primitives/src/generic/era.rs @@ -61,7 +61,7 @@ impl Era { Era::Mortal(period, quantized_phase) } - /// Create an "immortal" transaction. + /// Create an "immortal" transaction. pub fn immortal() -> Self { Era::Immortal } @@ -75,7 +75,7 @@ impl Era { } /// Get the block number of the start of the era whose properties this object - /// describes that `current` belongs to. + /// describes that `current` belongs to. pub fn birth(self, current: u64) -> u64 { match self { Era::Immortal => 0, @@ -189,10 +189,10 @@ mod tests { assert_ne!(e.birth(10), 6); assert_ne!(e.birth(5), 6); } - + #[test] fn current_less_than_phase() { // should not panic Era::mortal(4, 3).birth(1); } -} \ No newline at end of file +} diff --git a/core/sr-primitives/src/lib.rs b/core/sr-primitives/src/lib.rs index 9ad97cf28c..86c93ab3d7 100644 --- a/core/sr-primitives/src/lib.rs +++ b/core/sr-primitives/src/lib.rs @@ -462,6 +462,35 @@ macro_rules! impl_outer_log { }; } +//TODO: https://github.com/paritytech/substrate/issues/1022 +/// Inherent data to include in a block. +#[derive(Encode, Decode)] +pub struct InherentData { + /// Current timestamp. + pub timestamp: u64, + /// Indices of offline validators. + pub consensus: Vec, +} + +impl InherentData { + /// Create a new `InherentData` instance. + pub fn new(timestamp: u64, consensus: Vec) -> Self { + Self { + timestamp, + consensus, + } + } +} + +//TODO: https://github.com/paritytech/substrate/issues/1022 +/// Error type used while checking inherents. +#[derive(Encode)] +#[cfg_attr(feature = "std", derive(Decode))] +pub enum CheckInherentError { + TimestampInFuture(u64), + Other(RuntimeString), +} + #[cfg(test)] mod tests { use substrate_primitives::hash::H256; diff --git a/core/sr-primitives/src/traits.rs b/core/sr-primitives/src/traits.rs index 85ce07ff4b..0d33d7859f 100644 --- a/core/sr-primitives/src/traits.rs +++ b/core/sr-primitives/src/traits.rs @@ -582,8 +582,6 @@ pub trait DigestItem: Codec + Member + MaybeSerializeDebugButNotDeserialize { pub trait ProvideInherent { /// The inherent that is provided. type Inherent: Encode + MaybeDecode; - /// The error used by this trait. - type Error: Encode + MaybeDecode; /// The call for setting the inherent. type Call: Encode + MaybeDecode; @@ -597,7 +595,7 @@ pub trait ProvideInherent { /// Check that the given inherent is valid. fn check_inherent Option<&Self::Call>>( block: &Block, data: Self::Inherent, extract_function: &F - ) -> Result<(), Self::Error>; + ) -> Result<(), super::CheckInherentError>; } /// Auxiliary wrapper that holds an api instance and binds it to the given lifetime. @@ -629,3 +627,15 @@ pub trait ProvideRuntimeApi { /// storage, even on a `commit`. fn runtime_api<'a>(&'a self) -> ApiRef<'a, Self::Api>; } + +/// A marker trait for something that knows the type of the runtime block. +pub trait GetRuntimeBlockType { + /// The `RuntimeBlock` type. + type RuntimeBlock: self::Block; +} + +/// A marker trait for something that knows the type of the node block. +pub trait GetNodeBlockType { + /// The `NodeBlock` type. + type NodeBlock: self::Block; +} diff --git a/core/test-client/src/lib.rs b/core/test-client/src/lib.rs index ce504bd085..66b057350a 100644 --- a/core/test-client/src/lib.rs +++ b/core/test-client/src/lib.rs @@ -66,12 +66,12 @@ pub type Executor = client::LocalCallExecutor< >; /// Creates new client instance used for tests. -pub fn new() -> client::Client { +pub fn new() -> client::Client { new_with_backend(Arc::new(Backend::new()), false) } /// Creates new test client instance that suports changes trie creation. -pub fn new_with_changes_trie() -> client::Client { +pub fn new_with_changes_trie() -> client::Client { new_with_backend(Arc::new(Backend::new()), true) } @@ -80,7 +80,7 @@ pub fn new_with_changes_trie() -> client::Client( backend: Arc, support_changes_trie: bool -) -> client::Client>, runtime::Block, runtime::ClientWithApi> +) -> client::Client>, runtime::Block, runtime::RuntimeApi> where B: backend::LocalBackend, { diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index 65d122b498..50a0134e90 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -50,19 +50,17 @@ pub mod system; use rstd::prelude::*; use codec::{Encode, Decode}; -use client::{runtime_api::runtime::*, block_builder::api::runtime::*}; -#[cfg(feature = "std")] -use client::runtime_api::ApiExt; -use runtime_primitives::traits::{BlindCheckable, BlakeTwo256, Block as BlockT, Extrinsic as ExtrinsicT}; -#[cfg(feature = "std")] -use runtime_primitives::traits::ApiRef; -use runtime_primitives::{ApplyResult, Ed25519Signature, transaction_validity::TransactionValidity}; -#[cfg(feature = "std")] -use runtime_primitives::generic::BlockId; +use client::{runtime_api as client_api, block_builder::api as block_builder_api}; +use runtime_primitives::{ + ApplyResult, Ed25519Signature, transaction_validity::TransactionValidity, + traits::{ + BlindCheckable, BlakeTwo256, Block as BlockT, Extrinsic as ExtrinsicT, + GetNodeBlockType, GetRuntimeBlockType + }, InherentData, CheckInherentError +}; use runtime_version::RuntimeVersion; pub use primitives::hash::H256; use primitives::AuthorityId; -#[cfg(feature = "std")] use primitives::OpaqueMetadata; #[cfg(any(feature = "std", test))] use runtime_version::NativeVersion; @@ -172,170 +170,27 @@ pub fn changes_trie_config() -> primitives::ChangesTrieConfiguration { } pub mod test_api { + use super::AccountId; + decl_runtime_apis! { pub trait TestAPI { - fn balance_of(id: AccountId) -> u64; - } - } -} - -use test_api::runtime::TestAPI; - -#[cfg(feature = "std")] -pub struct ClientWithApi { - call: ::std::ptr::NonNull>, - commit_on_success: ::std::cell::RefCell, - initialised_block: ::std::cell::RefCell>>, - changes: ::std::cell::RefCell, -} - -#[cfg(feature = "std")] -unsafe impl Send for ClientWithApi {} -#[cfg(feature = "std")] -unsafe impl Sync for ClientWithApi {} - -#[cfg(feature = "std")] -impl ApiExt for ClientWithApi { - fn map_api_result Result, R, E>(&self, map_call: F) -> Result { - *self.commit_on_success.borrow_mut() = false; - let res = map_call(self); - *self.commit_on_success.borrow_mut() = true; - - self.commit_on_ok(&res); - - res - } -} - -#[cfg(feature = "std")] -impl client::runtime_api::ConstructRuntimeApi for ClientWithApi { - fn construct_runtime_api<'a, T: client::runtime_api::CallApiAt>(call: &'a T) -> ApiRef<'a, Self> { - ClientWithApi { - call: unsafe { - ::std::ptr::NonNull::new_unchecked( - ::std::mem::transmute( - call as &client::runtime_api::CallApiAt - ) - ) - }, - commit_on_success: true.into(), - initialised_block: None.into(), - changes: Default::default(), - }.into() - } -} - -#[cfg(feature = "std")] -impl ClientWithApi { - fn call_api_at( - &self, - at: &BlockId, - function: &'static str, - args: &A - ) -> client::error::Result { - let res = unsafe { - self.call.as_ref().call_api_at( - at, - function, - args.encode(), - &mut *self.changes.borrow_mut(), - &mut *self.initialised_block.borrow_mut() - ).and_then(|r| - R::decode(&mut &r[..]) - .ok_or_else(|| - client::error::ErrorKind::CallResultDecode(function).into() - ) - ) - }; - - self.commit_on_ok(&res); - res - } - - fn commit_on_ok(&self, res: &Result) { - if *self.commit_on_success.borrow() { - if res.is_err() { - self.changes.borrow_mut().discard_prospective(); - } else { - self.changes.borrow_mut().commit_prospective(); - } + fn balance_of(id: AccountId) -> u64; } } } -#[cfg(feature = "std")] -impl client::runtime_api::Core for ClientWithApi { - fn version(&self, at: &BlockId) -> Result { - self.call_api_at(at, "version", &()) - } - - fn authorities(&self, at: &BlockId) -> Result, client::error::Error> { - self.call_api_at(at, "authorities", &()) - } - - fn execute_block(&self, at: &BlockId, block: &Block) -> Result<(), client::error::Error> { - self.call_api_at(at, "execute_block", block) - } - - fn initialise_block(&self, at: &BlockId, header: &::Header) -> Result<(), client::error::Error> { - self.call_api_at(at, "initialise_block", header) - } -} - -#[cfg(feature = "std")] -impl client::block_builder::api::BlockBuilder for ClientWithApi { - fn apply_extrinsic(&self, at: &BlockId, extrinsic: &::Extrinsic) -> Result { - self.call_api_at(at, "apply_extrinsic", extrinsic) - } - - fn finalise_block(&self, at: &BlockId) -> Result<::Header, client::error::Error> { - self.call_api_at(at, "finalise_block", &()) - } - - fn inherent_extrinsics( - &self, at: &BlockId, inherent: &Inherent - ) -> Result, client::error::Error> { - self.call_api_at(at, "inherent_extrinsics", inherent) - } - - fn check_inherents(&self, at: &BlockId, block: &Block, inherent: &Inherent) -> Result, client::error::Error> { - self.call_api_at(at, "check_inherents", &(block, inherent)) - } - - fn random_seed(&self, at: &BlockId) -> Result<::Hash, client::error::Error> { - self.call_api_at(at, "random_seed", &()) - } -} - -#[cfg(feature = "std")] -impl client::runtime_api::TaggedTransactionQueue for ClientWithApi { - fn validate_transaction( - &self, - at: &BlockId, - utx: &::Extrinsic - ) -> Result { - self.call_api_at(at, "validate_transaction", utx) - } -} +pub struct Runtime; -#[cfg(feature = "std")] -impl client::runtime_api::Metadata for ClientWithApi { - fn metadata(&self, at: &BlockId) -> Result { - self.call_api_at(at, "metadata", &()) - } +impl GetNodeBlockType for Runtime { + type NodeBlock = Block; } -#[cfg(feature = "std")] -impl test_api::TestAPI for ClientWithApi { - fn balance_of(&self, at: &BlockId, id: &AccountId) -> Result { - self.call_api_at(at, "balance_of", id) - } +impl GetRuntimeBlockType for Runtime { + type RuntimeBlock = Block; } -struct Runtime; - impl_runtime_apis! { - impl Core for Runtime { + impl client_api::Core for Runtime { fn version() -> RuntimeVersion { version() } @@ -353,13 +208,19 @@ impl_runtime_apis! { } } - impl TaggedTransactionQueue for Runtime { + impl client_api::Metadata for Runtime { + fn metadata() -> OpaqueMetadata { + unimplemented!() + } + } + + impl client_api::TaggedTransactionQueue for Runtime { fn validate_transaction(utx: ::Extrinsic) -> TransactionValidity { system::validate_transaction(utx) } } - impl BlockBuilder for Runtime { + impl block_builder_api::BlockBuilder for Runtime { fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult { system::execute_transaction(extrinsic) } @@ -368,11 +229,11 @@ impl_runtime_apis! { system::finalise_block() } - fn inherent_extrinsics(_data: u32) -> Vec { + fn inherent_extrinsics(_data: InherentData) -> Vec<::Extrinsic> { unimplemented!() } - fn check_inherents(_block: Block, _data: u32) -> Result<(), u32> { + fn check_inherents(_block: Block, _data: InherentData) -> Result<(), CheckInherentError> { unimplemented!() } @@ -381,7 +242,7 @@ impl_runtime_apis! { } } - impl TestAPI for Runtime { + impl self::test_api::TestAPI for Runtime { fn balance_of(id: AccountId) -> u64 { system::balance_of(id) } diff --git a/core/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock index c268f0c400..ddba821e1f 100644 --- a/core/test-runtime/wasm/Cargo.lock +++ b/core/test-runtime/wasm/Cargo.lock @@ -768,7 +768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -835,6 +835,15 @@ dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "sr-api-macros" +version = "0.1.0" +dependencies = [ + "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "sr-io" version = "0.1.0" @@ -936,6 +945,7 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-api-macros 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", @@ -1095,7 +1105,7 @@ dependencies = [ [[package]] name = "syn" -version = "0.15.6" +version = "0.15.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1550,7 +1560,7 @@ dependencies = [ "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" -"checksum syn 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)" = "854b08a640fc8f54728fb95321e3ec485b365a97fe47609797c671addd1dde69" +"checksum syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)" = "ae8b29eb5210bc5cf63ed6149cbf9adfc82ac0be023d8735c176ee74a2db4da7" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 1e1603db25f1ae1270c264dafde73776dd0499cf..46d88c5cbc8134e9e4f3dbfafbff615f7de335d4 100644 GIT binary patch delta 7713 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 delta 7268 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 Default for NodeConfig where F: substrate_service::ServiceFactory { construct_service_factory! { struct Factory { Block = Block, - RuntimeApi = ClientWithApi, + RuntimeApi = RuntimeApi, NetworkProtocol = NodeProtocol { |config| Ok(NodeProtocol::new()) }, RuntimeDispatch = node_executor::Executor, - FullTransactionPoolApi = transaction_pool::ChainApi, FullExecutor, Block, ClientWithApi>, Block> + FullTransactionPoolApi = transaction_pool::ChainApi, FullExecutor, Block, RuntimeApi>, Block> { |config, client| Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(client))) }, - LightTransactionPoolApi = transaction_pool::ChainApi, LightExecutor, Block, ClientWithApi>, Block> + LightTransactionPoolApi = transaction_pool::ChainApi, LightExecutor, Block, RuntimeApi>, Block> { |config, client| Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(client))) }, Genesis = GenesisConfig, Configuration = NodeConfig, @@ -125,7 +125,7 @@ construct_service_factory! { { |config, executor| >::new(config, executor) }, FullImportQueue = AuraImportQueue, NothingExtra> { |config: &mut FactoryFullConfiguration , client: Arc>| { - let (block_import, link_half) = grandpa::block_import::<_, _, _, ClientWithApi, FullClient>(client.clone(), client)?; + let (block_import, link_half) = grandpa::block_import::<_, _, _, RuntimeApi, FullClient>(client.clone(), client)?; let block_import = Arc::new(block_import); config.custom.grandpa_import_setup = Some((block_import.clone(), link_half)); diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index a5f1fd96f7..6abd5c2b05 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -54,27 +54,21 @@ extern crate srml_upgrade_key as upgrade_key; extern crate sr_version as version; extern crate node_primitives; -#[cfg(feature = "std")] -use codec::{Encode, Decode}; use rstd::prelude::*; use substrate_primitives::u32_trait::{_2, _4}; use node_primitives::{ AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, SessionKey, Signature }; -use grandpa::fg_primitives::{runtime::GrandpaApi, ScheduledChange, id::*}; -#[cfg(feature = "std")] -use node_primitives::Block as GBlock; -use client::{block_builder::api::runtime::*, runtime_api::{runtime::*, id::*}}; -#[cfg(feature = "std")] -use client::runtime_api::ApiExt; -use runtime_primitives::ApplyResult; +use grandpa::fg_primitives::{self, ScheduledChange, id::*}; +use client::{ + block_builder::api as block_builder_api, runtime_api::{self as client_api, id::*} +}; +use runtime_primitives::{ApplyResult, CheckInherentError}; use runtime_primitives::transaction_validity::TransactionValidity; use runtime_primitives::generic; -use runtime_primitives::traits::{Convert, BlakeTwo256, Block as BlockT, DigestFor, NumberFor}; -#[cfg(feature = "std")] -use runtime_primitives::traits::ApiRef; -#[cfg(feature = "std")] -use substrate_primitives::AuthorityId; +use runtime_primitives::traits::{ + Convert, BlakeTwo256, Block as BlockT, DigestFor, NumberFor, ProvideInherent +}; use version::RuntimeVersion; use council::{motions as council_motions, voting as council_voting}; #[cfg(feature = "std")] @@ -215,7 +209,7 @@ impl grandpa::Trait for Runtime { construct_runtime!( pub enum Runtime with Log(InternalLog: DigestItem) where Block = Block, - UncheckedExtrinsic = UncheckedExtrinsic + NodeBlock = node_primitives::Block { System: system::{default, Log(ChangesTrieRoot)}, Timestamp: timestamp::{Module, Call, Storage, Config, Inherent}, @@ -237,6 +231,7 @@ construct_runtime!( /// The address format for describing accounts. pub use balances::address::Address as RawAddress; + /// The address format for describing accounts. pub type Address = balances::Address; /// Block header type as expected by this runtime. @@ -254,168 +249,8 @@ pub type CheckedExtrinsic = generic::CheckedExtrinsic; /// Executive: handles dispatch to the various modules. pub type Executive = executive::Executive, Balances, AllModules>; -#[cfg(feature = "std")] -pub struct ClientWithApi { - call: ::std::ptr::NonNull>, - commit_on_success: ::std::cell::RefCell, - initialised_block: ::std::cell::RefCell>, - changes: ::std::cell::RefCell, -} - -#[cfg(feature = "std")] -unsafe impl Send for ClientWithApi {} -#[cfg(feature = "std")] -unsafe impl Sync for ClientWithApi {} - -#[cfg(feature = "std")] -impl ApiExt for ClientWithApi { - fn map_api_result Result, R, E>(&self, map_call: F) -> Result { - *self.commit_on_success.borrow_mut() = false; - let res = map_call(self); - *self.commit_on_success.borrow_mut() = true; - - self.commit_on_ok(&res); - - res - } -} - -#[cfg(feature = "std")] -impl client::runtime_api::ConstructRuntimeApi for ClientWithApi { - fn construct_runtime_api<'a, T: client::runtime_api::CallApiAt>(call: &'a T) -> ApiRef<'a, Self> { - ClientWithApi { - call: unsafe { - ::std::ptr::NonNull::new_unchecked( - ::std::mem::transmute( - call as &client::runtime_api::CallApiAt - ) - ) - }, - commit_on_success: true.into(), - initialised_block: None.into(), - changes: Default::default(), - }.into() - } -} - -#[cfg(feature = "std")] -impl ClientWithApi { - fn call_api_at( - &self, - at: &GBlockId, - function: &'static str, - args: &A - ) -> client::error::Result { - let res = unsafe { - self.call.as_ref().call_api_at( - at, - function, - args.encode(), - &mut *self.changes.borrow_mut(), - &mut *self.initialised_block.borrow_mut() - ).and_then(|r| - R::decode(&mut &r[..]) - .ok_or_else(|| - client::error::ErrorKind::CallResultDecode(function).into() - ) - ) - }; - - self.commit_on_ok(&res); - res - } - - fn commit_on_ok(&self, res: &Result) { - if *self.commit_on_success.borrow() { - if res.is_err() { - self.changes.borrow_mut().discard_prospective(); - } else { - self.changes.borrow_mut().commit_prospective(); - } - } - } -} - -#[cfg(feature = "std")] -type GBlockId = generic::BlockId; - -#[cfg(feature = "std")] -impl client::runtime_api::Core for ClientWithApi { - fn version(&self, at: &GBlockId) -> Result { - self.call_api_at(at, "version", &()) - } - - fn authorities(&self, at: &GBlockId) -> Result, client::error::Error> { - self.call_api_at(at, "authorities", &()) - } - - fn execute_block(&self, at: &GBlockId, block: &GBlock) -> Result<(), client::error::Error> { - self.call_api_at(at, "execute_block", block) - } - - fn initialise_block(&self, at: &GBlockId, header: &::Header) -> Result<(), client::error::Error> { - self.call_api_at(at, "initialise_block", header) - } -} - -#[cfg(feature = "std")] -impl client::block_builder::api::BlockBuilder for ClientWithApi { - fn apply_extrinsic(&self, at: &GBlockId, extrinsic: &::Extrinsic) -> Result { - self.call_api_at(at, "apply_extrinsic", extrinsic) - } - - fn finalise_block(&self, at: &GBlockId) -> Result<::Header, client::error::Error> { - self.call_api_at(at, "finalise_block", &()) - } - - fn inherent_extrinsics( - &self, at: &GBlockId, inherent: &Inherent - ) -> Result, client::error::Error> { - self.call_api_at(at, "inherent_extrinsics", inherent) - } - - fn check_inherents(&self, at: &GBlockId, block: &GBlock, inherent: &Inherent) -> Result, client::error::Error> { - self.call_api_at(at, "check_inherents", &(block, inherent)) - } - - fn random_seed(&self, at: &GBlockId) -> Result<::Hash, client::error::Error> { - self.call_api_at(at, "random_seed", &()) - } -} - -#[cfg(feature = "std")] -impl client::runtime_api::TaggedTransactionQueue for ClientWithApi { - fn validate_transaction( - &self, - at: &GBlockId, - utx: &::Extrinsic - ) -> Result { - self.call_api_at(at, "validate_transaction", utx) - } -} - -#[cfg(feature = "std")] -impl client::runtime_api::Metadata for ClientWithApi { - fn metadata(&self, at: &GBlockId) -> Result { - self.call_api_at(at, "metadata", &()) - } -} - -#[cfg(feature = "std")] -impl substrate_finality_grandpa_primitives::GrandpaApi for ClientWithApi { - fn grandpa_pending_change(&self, at: &GBlockId, digest: &DigestFor) - -> Result>>, client::error::Error> { - self.call_api_at(at, "grandpa_pending_change", digest) - } - - fn grandpa_authorities(&self, at: &GBlockId) - -> Result, client::error::Error> { - self.call_api_at(at, "grandpa_authorities", &()) - } -} - impl_runtime_apis! { - impl Core for Runtime { + impl client_api::Core for Runtime { fn version() -> RuntimeVersion { VERSION } @@ -433,13 +268,13 @@ impl_runtime_apis! { } } - impl Metadata for Runtime { + impl client_api::Metadata for Runtime { fn metadata() -> OpaqueMetadata { Runtime::metadata().into() } } - impl BlockBuilder for Runtime { + impl block_builder_api::BlockBuilder for Runtime { fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult { Executive::apply_extrinsic(extrinsic) } @@ -448,12 +283,27 @@ impl_runtime_apis! { Executive::finalise_block() } - fn inherent_extrinsics(data: InherentData) -> Vec { - data.create_inherent_extrinsics() + fn inherent_extrinsics(data: runtime_primitives::InherentData) -> Vec<::Extrinsic> { + let mut inherent = Vec::new(); + + inherent.extend( + Timestamp::create_inherent_extrinsics(data.timestamp) + .into_iter() + .map(|v| (v.0, UncheckedExtrinsic::new_unsigned(Call::Timestamp(v.1)))) + ); + + inherent.extend( + Consensus::create_inherent_extrinsics(data.consensus) + .into_iter() + .map(|v| (v.0, UncheckedExtrinsic::new_unsigned(Call::Consensus(v.1)))) + ); + + inherent.as_mut_slice().sort_unstable_by_key(|v| v.0); + inherent.into_iter().map(|v| v.1).collect() } - fn check_inherents(block: Block, data: InherentData) -> Result<(), InherentError> { - data.check_inherents(block) + fn check_inherents(block: Block, data: runtime_primitives::InherentData) -> Result<(), CheckInherentError> { + InherentData::check_inherents(data, block) } fn random_seed() -> ::Hash { @@ -461,13 +311,13 @@ impl_runtime_apis! { } } - impl TaggedTransactionQueue for Runtime { + impl client_api::TaggedTransactionQueue for Runtime { fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity { Executive::validate_transaction(tx) } } - impl GrandpaApi for Runtime { + impl fg_primitives::GrandpaApi for Runtime { fn grandpa_pending_change(digest: DigestFor) -> Option>> { diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 83b4a4cc4a..55354c02e9 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -829,7 +829,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -896,6 +896,15 @@ dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "sr-api-macros" +version = "0.1.0" +dependencies = [ + "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "sr-io" version = "0.1.0" @@ -1240,6 +1249,7 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-api-macros 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", @@ -1394,7 +1404,7 @@ dependencies = [ [[package]] name = "syn" -version = "0.15.6" +version = "0.15.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1851,7 +1861,7 @@ dependencies = [ "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" -"checksum syn 0.15.6 (registry+https://github.com/rust-lang/crates.io-index)" = "854b08a640fc8f54728fb95321e3ec485b365a97fe47609797c671addd1dde69" +"checksum syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)" = "ae8b29eb5210bc5cf63ed6149cbf9adfc82ac0be023d8735c176ee74a2db4da7" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 56a3e347cea8854f841e6af0906632c55391fdd3..a12cd6a07e1ef6c060c673e11fd1af1cadbf66c5 100644 GIT binary patch delta 110544 zcmb@v2Ygh;_6NQ*_s(XMY?4jy$=xMDLhrp~DblNo^dcY-dJ{x3pa`g_zyb%6rqV<} z5OEO|0%Avvitk~^_5>Bd&Qp;8_src*0?GTm_y7F=Fq0s9*P8{?f^h(-X2W2C~9-x@imb*wmhoiGCpM6y!G*eSQtmFAJjff1s% zP=WhJ=bABN=gt~2ZN`Ktvqp>`JJ;djG#-wdIcw^SQRBvrm@#$gEQbi}lWA()*jbJ! zd}XCXak5xWcJriB6UR0h(Wq%NhslWo39?g0G=mc~mQhp2+&p#ehzV0}ojP%>!yT9= z^8=+KJs^$TzqwBpn9GwF(Th5nf?m+2CMBLrR*|C#uQu!%qEG6h~7lERcu zhDevtaE=s?SSei&{ErrK(&cd|DV-Akkl0QX5A3Fi5{elM|4WeZk_&W3N(Q-Hi7sUd zP9hSM5HHL~e7ao8$Qk~JLQ_&wTxP1vj1@8k0hdTgQ5+}ZTnKXxolEgQL#3&7{pCVV zmsHYJBTyPBcDu|B6k@timrOIum6+&qWoLm3yC@e|UQ-T&a$K>oK&to%ybOPrf6! z$zk8hH^p1xE%}8!AeW1$<)`u?aYDQyUze|mSH(Z%2l8L?Yk6F}Bwi6Oixcuqd0Kuh zpOO3JvI23x*emzRkL5@5KJkWlUA!tUi<9zwd0a+)_M-PQ`HeJO=*@z>1)^o(8|OH2 zHqa}g3!bYZZgakN*D;5u`~D=?1`%~uW>_wdaGTKqZ)$R&G_p{f-5(!i3dNAfz~)-1 zfril!Bj=mZNAY~XJpj-6sOtM8W9~KZ`FTQWpfuhcNQ=)7yzlWwh7l$Qj>cyqwq03F zs*af#-wwH+iywt&W&%Iw>*weC=}+XCzpJMPvXb0^R}wj`Nr&nm(5;p{^isx)Em-V53w)OG%qxz|;ao$&|aZIf| zeme~_XcXcjtWDUlXUz5`;tGN)**nIw;kv|7j{Vso>Kp?JfW*}JWJihuh z%nTf>y$N65?wR}N*J;4uk@YeIuh(6pzxIW~b?e*V%>AF&pU#Q;HROWQ8$A!SA2gcE zQJtF{MIfT-AP$Ub21p>gITyZ=pZmXQp2PqY6i9A)Se#wingSDBtrBOSZrw%#(6;SU zc%Ex}5YKJxE+fa5_EDVUslw;*oZ#nYwGN!<{SGexyu9N>3_jX5bARj3_vp{-_99|r zy|n%Jb!le9IQjH${PcF`=eyna=x0)3Rge3CB)4a4PS~$uQebMYt@ujrJsi(j{M`S3 zZw-v=`w5eqyFa?$9%cCAq66=~Ts`o`fbmG!{ia!X9=Rz^_-NrX7z%#6sS9$p95@qb z_wODAMRs=o(}SU6&jwx_0#Lv+bf;P`-6EQf?vzRU-yd4Qu*<_f!t>Pdt#Z8#6py&8 zcq8;)u_f}Q!z=ma@(Ih~$&`hb=p5s)5a(C3ioC)ov?LN)((fwbx5MMbw_ATpe^NLO z`J_LMLw?Z(`5k`g@gXWJl%N{Ets)=Lc8L*g8C?S@#D7fTh>ni_&MBP5)P9yoU2|AC zQT>R+VqIBBa#GvbB9*!x7I9R1Sai<_cVAburq>(cR`~K89v`(mEHbF~5z$?o4L*EC z6oMc0QHkh6v9}puafj3h|4yS3)i0Sy;J;)!39h5EJ4fqGA2mUqkCd9QH)fdl) zMiKa3^X4ans1bN~bZ0zM$K>GIY|MC3WB;Zxja=Dhr5CKUWHV{vC7LnQIOK|p_7ntu zoHPV@x=+p&1%X>8PZI_E|2a9=2y|Q(ADA}R3=CZr9Y~pe07*_v-wfd78Gnetkh#f$ z^Yfj7;#tEG_35mhkmvoi<}?(dF+KW(ksN5ZAY$d(h(Ph&{=oW=2fTq_=CXYCzilXs z$5ZoWaFtJ=GwTF;-_akqAHCyxL=^pq)H(CJA!7XeUXimM(UxgBJ+lM#@2iF~6G4zC zF#EoKDD&0(_OcYsUG^;i(*vasC`A6_fiD>S!G}7DxL=hip}5`nU(Mk!4fLAp)!FZ# z)ikj4zN~5mK(72QPdeVhZx(qY&^Qf>ATnN;{pAUW*@?xnkOi)Tqq)%l>0CuV`x=@a-{uu~w|V__|DAETZtgTc!pS`Qn)8vHpl&F~X7sMgy;DxfrFxinL$4 zXdsUb1?}=sRN}Q|Syo)Yvobj_ZMGV~SmXS;8mr&KwEL9hDljx=$uS<3ZADg$K_MP1 zHXNg=X>NEdR3Q`>Nz?bs#6a${>hAnIeeoTvrQ2gnD?ZS7SyED5=NP9IXE`lpMdMHP z$npcuscUr)7NtmzL*V)r4^(@aW3LXvX|N zW|=$6CBEQKw@?{fmv`)_74TkyLRwRpB zJ6UK&vs!d}1a}gnz~O4{a9AcYUYD9yRN!#fQDDE0@{~uR5u(cARuO828U%Jdn&&KW z6y-VM0u3HZF22WCd3_77+|FqKhu_9I}G7d6~m~o zGZf~RMit6xF)p8AYy#a(i*&I8k+NmF48I5osRjYRGn5~n=vP|qH3&taEi_g5G{Ycf zb76DCLM2$-ePB5>q2=W7Nd881^LG?~qkQC5mJS%)m7JDNWH3nO&ax319L2TL zII6&{%hc$=GA<{Y8_2<3BFg?kQ$^ZeX+_CE2e4s9GgbqQz%4^rUq#fc9S-TXx7oza z391!Rf^BwNBkT;sK9-(v@<}vUV^5(YdSQfO`F96C-RKRRUe`a+dsDT*O^;-|mi$%X z@W*=c0&6za&(Wfn=XG<7qs<|E7L*%nJYSr@B=Gtpbp!6ry<-x%!AvWG8_W!J-H;c! ze{)*(M5ZIg=0XyGYeptmp>HrU*-8xTUEi&y$4UVkI7z&f9Qul}5<*{^w}2KhW|P}3 zFl|GcumbmPc-|GRQK09>K8Z_L9z#F!Kr%79CE;~)XJF69T<3DcdnWDg_}H8XXou&Y zfc3rq#+|TnI_+Qa~FrirVyR?kJz)tDXt5c2f9jR?R}t**c`b1Kx5H0@YI2} zxyu(EbFhZ=baO=eUs?b@op3NO{igwd{U8186e)V_pLZ~W$E4NI-5|aTeD~b_qDSD? zLod`(KFEGwE_6P|Fs)MY2b_3+Mp^qug3@!Rp*U{cn*K#BEUDjIVlC> zeWYdin-p1Y|0)Ts48sX}`olLLM6&TG>fpKhL~lI5=I{OSZ)wx9>)S&)XLBo(bEfE= zZae3pw=;nHgSSs3&$I8;!1L30#^Twr^j16%mDa@b%hGXpc7OL6=!$tSk?Hcj-x$vu z-$&B@&%eK1h+Z^mrAXXA;)6F0Q5dNG;jO^>*oSW+$Fz_7DFlvvJ{ZsJ(^K$VcA5>u zabFZ9^o9UkFjWez{8a@xi#&bz5BwKN(Jye}Ogq%0{@DyXyPqAG0+FzKppSSJ ztX-g4>MUYOeD!P%xp!gU{Mn|Er|RD|itmRm)t9w*7HjVYp6dhSzZ(?|i^P)#3=y8| z_n-XkX%^BYKMW9J;Qr6fbrxb!VB7inf$Pu5<7@2sLLKJkxB5H(0)J1qP@2ZnCSV?# z#1vpm)~a841_k>4v_%XI{QgsJ${^jLV_2zFOi=sh!Z4`GHK2t*Gx}pcx5rcd;>WYo zF9U&X!!Oxl(EjItQ33*b^w(SfzWDVzJoA6k^!!!>iI)G?0nhh;Ylir!->=8B-%qK5 z*}orgg$QXGi2prtf1f|5$3-n)h^`jFT`l;AQ#{UQ;uM#dEqc(`E-?kK>mx;h=pURP zDcXqW3z&bSx2F|(#?$dAQ6pgjcS=O+!3n+9Q$UxZM9;*fce8@Pxa^1B%j5F;zi3Fb z$QP4nQMB-j5_%o=46HpV)5o!m(i6Ge5=l~yE*)-kLe=x(SAXoy1kFi{LhJXn^+fazcp(IH9H7hQuh zl0;&nxIVbJCOi_Tb3%bwf!CG-(GjmR1>%gjk>0H(7GcIPpteA_KN}oVN2EYI1aGe= zYH@g5ebJcTA2k3b zkV;#LdU#!FB}Rj)(XB-brzj1s_ltTm&K~?>@YS@8iJs}f4?BuP7y9SJl;?6G=OGbFQ&(`;0p+T6b41lfZ(s!3!Y^J z$K5Czahi1l#EaQC0Y!8xN2$cH>TD)YqI^i3jrOMCteeDAXsO`kfnuESu{uC;c$NrT zOK63&qnr*}JXkD>D&^6^geBH3m^4IuXrjy?M~Dc#>G#nBdX_qm5p|sx^;i*{I|i*2 zwVA~nM0mQ*n(IPov!oH1TNx6_vKq8O2R6GSUpyDLm| zLD&gsE0^DZcBferFpvC>4oncx>Gb6UQ5P>ykq)&j0xQna-XhVaAyj-kxQy%(6|zfj z0wR9^x(NSLRM6?42eZj98FThTF&DVjOhgCyj$WK7y5SWuNle6R<|F~-PmfFz*WvZ$ zBry-=44W*TLMUd6&d_8E=DFVmi>IJ%(0P_m6*=;?g|v4ndiPnnVVWlG)oJjtou%uh zqmQ2r9+)nk$8u zapJhFB7EFTwdSKfBdFhek?0-)tpo1?r?{D>%@-%5M_LXRd56EjBwBt;L=rt;ELzYb zccMR?rTPoR;3!7rW>jOTb+M?CGn{1*=DyF#9tb1aibR6EP`SeiiwN0bByA|xnxHBS zVmKXIAhPiK=K|4B`J`v9xY<537>)GJ=`^9@^-M#mqhr2Kmv&~qti0wpt zZ06X+P;7aC#w{0p6Zbyy5{48H%Eus;gck;>2fvOeaFzhznMD6y4y8PY@>htO)z<0( z4bwI~7vnjkwDbrErNT2$=@~~eR}*TKo=faoZ*orX`|SqL`m?a$5HXbGa5$&h#7{@ zCV1_7j?As1iE{yScM`SRiot3*J+@W!b?&vJE^ZYcJ8kCEhug%9^3)<)yIu5gE$uauw#-f11JN0YuhAgk7y!G?jiVMYsgbeXvQAVP#%1Uw(b#qIviX9nGpWd5n5DU zvqNt8HQctztUA8j@$P=u|M>%Oorim^fOF zI5r3u2wko4hYRu05dCTXUNJ(<4Su>;EHueV13Kl2{$LykDZKph7h&=itQl{bc zXC$18d6X3;TjDh!sw`A3&%Fait*Gk|@G2O7vz3GWX(qc`L#Ak1w%BNymXYV)rj6ye zaKiFrh0!t(*xyZ%)o7YqM&f&Av}{r_Dl5;DC`ZPi&7e*h2hV`vb`hRDigRmX^WBy3 z%yY}S74hKvgUV42Vk)J&KSnm^jES-iUPt3()95l1+#5-FWCnGQm5EoU;iR$GW<=!B zxGEz5s1#YDh;?=m&w8pTqHcT@*j}p?Spgf_*p?(zf$i^vDzH7Acx_|_Y^!W+1Cy%2 z_D<5Z8BzVB_`5AWfz>&2!(Y6TDhEfqSWj zyiplKZ`)ZH>jZCCPT;;rL*A_np{#V7o|)&qTPJwGiUfU;0AwxH2|lQtz`a02{!tl1 z8`E_UypvVKr&Yj90Uw*^zJuXkREE26XTX8KUW2OAK;Di+%p+|zB1fBg8>&R1L%^CcpAfhsRCXvQxi6Y;TNlbj|3b%n#Axw zE5qFr8E~lzKoJ8jR{@y7fWIpP=u?}NaSUG|Dhp^_mL_#9!|$pB?gtz^8qM%~D#P73 zGhj(&04=i-k7W1*RlpD1@Zk)9s0#Q6z`>)T3}0Cp?jFK`Kox+&3|LhKU=Rb=R0h!G zY|Vq47{0Cw_$C{EBg5BM0e=^8@aTGmZ>$V=_h-PS$^gpB(FONq_@h<8d)x5d4Bu7- zd;#F#QBQ{NtPFSeV8D}A0J<|^cNKtc4A@f{K$mS&x-fii74Z7Gx+zwCnMZ9H{(NP)yEOw|r~=T60WVeo zXvu)Xl>zhsib~IOH)l9p2DTA{?~rM6*pk&Sm{hb);=I}>s2DZDD+`for&l(>>tnCH z9rUP*WCEIY!6l%e*>z@Mf1>$SlNim%AqO`n4+b-l%*n zZ`B$8W@WfLj{zqt185gA!ou`1ytE4VXExko_^B%3o&qgzISl`}GTfcbfKRFbWHI2g zDgc=bI9(Y)51=TJn$GZlRRKR@!&4c4whH)9fTK?)GyJE@aN8gJTV(*Xsig}};EaD% z0iR;SJq%w|MMv2TIQnEP!X0j>1ziB3WRm}H@ zoo{M$*#^*E&1HAI{%9_5{@<$Dg5GN(XCuq~EoCdRT49H%{vM21L96m8d@n@Qlda^s z|IT9qk8h?kt-<{zRI3fMAUL^=JRSX;VmrtINIkZLybG^09b|vJT6dKF@Oq%5t`A-<$<;~5i=~v&Np`7N zW*xiC^__Gh?&_o)|9mIiCapSaKJV=;=KvUwLS3Bz7MP^iN;F`4XI>_DTF0$qS z!1;`>aud)W>Z;M>)tU;s$=eXsx4Vw|PcNNLQH>sQJQ6?DLnp?|jt^$^l=aYj)UB5W z;MJPm=_T7EDz3L2h}YkJWIMWY9rmGJ^W9r65PmA|BO6}}=_7CbzuM%%zPckG=qsE4 zU&-tq7p&D!J_pBJ@az6C1t4h2H-O?|b}_+Up*>8+mckwq?VjO}|0@=GOq~$Z)==IE z9mZNlD10sa+OSUFo)p#FxF~tim+B| zG7zqpt~6+%oS^q}MRNY&n**f>OIP&CVEG{D<|TVuC+6F^>)5#$4bi!u7$V2lJh_t{ zZ0yf!0_TqX)u!yL3<fbBzb1$s-5p|^gER-WUHJE| zriIUnJoQYuvD~irV=O)-?0!G+rtn6*6hhJEA7}OT~87_iU+XA9dz}ofFH%jouY4qw+1@ zP~>KMXTK{B$(@oKz9*LO`_Ox$x$~LtbOHWFGAS7Sz8KGIe6#*3TBe;`VbkKlBK}ud z$}E=HVP<06c>UF8ZEAnc>7-x(DfT6S8*sC)6evZDFmEfOk-f|$djFKj5vS?rQ)uJU z)b>MR;Whk2F$}L4J`~kN8lC=7BvIQnX02ML8@7|Qkp&nT+K0Egdm{))htyQr=M+h4oH9KbSwcxO($_`^Iob>0HS0|stmK~-}--!6+|6J!Bm%B+>sjInE?APN`Z6wt0 z8h1XZ1C1d?ApVSz@ANLcT3iH^lj~^jw0MP z{V~i0mu7;4>yyl3yUleto5R@s$9NcClf&=PuFpiR;uV5h4Mr@`3ZUh3lwD4Y-X39@ zdV7RT29~1W9c{&hbNa&8q6WS|2Jd=s+0;a6><*S6UcL{BpiQ1;wxNGq?V9iFalXvf6^g=@_`uBRX4*J9N*CF>8PYbJ0 z-)15TY;f|f*-(2KX{b0BrMUjFj1^hy3rB0g5xN+g480Xj%b(p|hQnQx;@%J`!bzhx zo4JK<&|nqiI~?8^d}(fYxqo6;JK_?sQ59o@z!aIA*BgsZNE?4@xpK>j$j1CH$XFE2 z){Ypw;`A;<3z`J-%*~E%GFAeQ&DiSN9BW*L1sSpMf&}pF9Xnj}>GGE%wG-&EV#~U4 zNX6JaB&22Z)>e?~;fi35lV{}INo?KWy49;_^P8d-E&fWhq}Mi?$#n87kywirj230h z1#m{%oYCy_Ik$V=mfo=Iby57+BH69{(cUO@Ey!3jwcc!2r@+@D<9aNrgMF-%Z00g& zZ05${%Vus2?*e9pfl6XMiP^!v3DgxnCkxUJ8wH6&6>!iGUyF1Ine!XbEROq{Zd={f z9_sy#NGn!;1zI3U;d(~zq6-Ra9&U&^sPzWc^_|pjqnTXHe6*RsBfx)_Fc)LDi)W6x{U&h7MEiH0 z3XQO(Fm`y$y#N2zkX`&=$82B>qvpxKmC(w8UD8$*y8yKEL1*G#7m`3|sjviESYot$ z9tOV%Tj;RKe3ljMzapm3(CVz3<=V~K!M%GCdM(e=B`YhK1hBF>v-F=1_W4#wL;M=- z|DEV!U|e5!PVXA&cOGXo8viJoAqwXc9>NPzS(I{K@6*9|r*PEM=dqdOEL}Q}t!ckf z%L}4IJR6|;2t)Wy%Pxpv2DU2E=5vBiKg3bZpTa0|>HeQY6QC&hNi4LndTI2}*qab4 zboN&q)Io@X(|&1Fxp zpZ9|`lLPUEVqeZOO&{t}~}M8|&@t1`}Ep`6vV2Ro_t{%co< z3;T*Y6nlOM;)F?xz&iH57sWkz#r<21i(*DPu;$^JO$+`ldWN?OV0g0}*n~zO{~KEb zd=&Mk-Yv8KPi!1IOYwh+`tdmQ!?ksxwpfwp+V=Yk+fYhr&R^oF^BKFg?Jl9VdVtj@ zF?4OmUaC-AY1bChlu&K4x5oD6glmhVJG4u2Xwa=^@?t$$-LPzfD9U?vAo{Vg^M`TMu4=VEPI z$0gA_LZ+>L4@>bE$t`37qMHeMlf3r`JtQz2Do-^?eszXw$*XhHA}L$SKhDq*Df25N z&ZcxjwvZbtVyR6#4VmxUcLc-RI0kXj2>- z;*Bflcj>hHM-vA^sNug=7XA67xhU=ocIeqw6;F_DNbrgCCJ8Z{{6Cq+;#=B#&P)lu zwMh0i#Y1#rqimV#v!FFS)sWM}JM3BiUBOW>%HAZs*$|)d=u3P;3{vFDwqt40GiFoQ zsiR;<9JU)Aea4&%PVD`UiFBR&c%y4G$%UIP^ye%VYBTWI!W^A_aWunt)VZ5qEr~fu51g5!?s6md3WR962chMCyL+(9Bo3EJlLvdNqR|UoemoK`5 zqkoL>FW6+4(&0=52KZ6&D#Q6QqfMvM@v6q^(JD!^;(Gb=vDI&>UU^jzbCpoS5|5#M z<5jxzGe#3*Q@2E@HesTE6DmV~e~jX#;@-9}QMI5sQe_!ej+IcK391ei#+Fy%vQ!P_ zHbMSm<#i$j_7gJ7np9}21X_;6;~`u=JLWS(MYsYlaSc4%>71eJhZvyYO`Io|qX9xx zol3^8a?Psi!@O*l0=BhQDo5^miOwt4EKK!FO4VXa72|Gls*dvLOSCsa)uy3In&@|( zYIyhm#-#rsr&VO5+agrcP#H`M(6^vmmuew?pn)#cMt=GdJ(!{j=!i?j0UjR-5vV^= zRU>Dly2G{bI2e%yal0>4^%gtm!$@prdV=~!sdTZEilS5#yf#ItneBH9i1I~@-jI%^ zY}_nWe6k95nB}%&JU_6dcE$!@WQzw$LtwbuJm;uiv`P_A()ehV1(f$hgTkG3I9hc9 zp-#8T5$CA7TeU`#QEpWokxSgFIX5iJiaZ~x1sc_b0fAy;)M2D~D@JvYE6z}SEYRu7 zH>UZqsw4F(R({huQ8?)#Zlc^tMMe2@Qy4N3v+&B{Q9Yb>dYY`Sfv`AFo=0 zDr9V##?FJQDS3-opTd;n&|#@!?34}Z?Uv9GQxa5!)9!k7dxEN2T%qaLhI%BJdHHxc3lT2sc6&{shiNcB(U?X<8(AB+>shn?PRpO9hXdn1*$r2Oje295Kss{`XE`$ zF_?Ni^SD)t>MtL9ndxE$QZC*yRSk%4VX5stgAWz9pwX#nx!6U&rm8$hUV54q?cQnX zQj-e2{hvSS&U95*KKe54PFIB}_{VfLNbIJr8PE)eU*-y>(47d_pvF|1p%z+IW8aIm zgL#PkhBQ4>O$f<)3jLg^`b9S_t3lIX?<^G%6+3i!Be==xBx2}DE#@G#4teR<61)>H;T8!0|^(Pt`p zG3)hg5nd?^ErU-D;g$(5mFKg|u^WNCBeB($ud%c|UPBfl!r3PV);-djmWR)0@*2D4 z`Ci6gm$}6J4=3!|G2u06baj;vdX^!7t)~QXIJpETSmSl-GJw)x%NaA^wN8E9Rd$Y{ zxXWf*a@bg?(3Dmr?W?K0_0e`bSBLJ^m4W5KmGMS^3WpB}aM+s9tZEk(yj4{4h?#T) zX7%A1oQQ;rDIAVKJwUdH<&tTPVj3g(?37&#%f*LpT_AfTcGF`kXmprR7kMt@YL_sj zn$uUCHTmFdByeiZGERI)TCQHqXRkC0H6{RE^iZBkjR|AYb*9$il$RO|QmQA*@-;08 z$Bk}5c=19l=mhQvrros5aaxkg!6I%Ma{-Q`2WzU-sIrm_?giCa=7o3}Mhj0hqjlLB zv2MTz2qYNcgTt}{3nHsv!H6>E&O|NHt()i&|#81duew*M&%#q?R@3K@b^=`Y9ZIW!edbFH6E3~UY8w6 zzK@e9Bl(;HD5oE2O@U7STmkGLSSsHYs1_OMY@sC)+b;GyLvM@f)KWEQa4igswq4Pf zo~@l~LgClFJj-tF@K3PXKDLeV9r6aeDHMZzp+YhN$U6mo)Q|G#> z7i{4`T?`ic=#9Fneb`!qS&l=UwoN;|p898ME0)h$d>|Qr5#2KFljW^wM19y6XX&2$ zYB$nEa2iM+{vweEu9&Vdt*BcAm5VeJ8mQ;w_Ph2Mcx_`n~)x`8EYgG4J= zYlH|I(@6PpUg4%=9bK-*@d-W28r@_ikl2UU7|<^~m=v=z&`JPO7H{_p)^Pr%_7D)d z3_;sPOPNnRRRPSyh8#~>pbuQsw-?5-ti~#`6;HyM!tnWX7#}bIaVk4>oq`?4L1RzI z%+YXAmQEuYD_?VcZduvqmf3t{x{*7f?9Ku^3J9RHL*6~pN~eR3RaRb_KA`MV+LF_Q z7}DW}AEd*9ZkTt{GU+0UiBI68+vwl^i#By0s@+6YA6$;pR^Uu$*`a4U3Zy1jS)r0) z>=qaoQQmS0M+Lj>8cwByMLV0Q8pTl+swCEisw|$>fx*2$t*pch%TqU$O;#>o2Q&=dn{dV+NuX9E zv|4qSDLbqoQ7N=)u~v8MomxuJJS;P7oj%-~!Ah@PSYfjwwc8I**18Av`x0t%xnef5W~`$eT`0T4pY>n&B%QjA3G;{1;!fDo3d&@B<6p%$d* zUUtUmb?KoN9A15F3VhLuqk0F&+2Cyabn0Y)u7;-YU2XJ)nq^o^wPZM4*2#994@4kR<-61jCY&_o*>J| z4C2K}ADbzR*z(#@4MI^U(z5KR{7{rdpS4jtTl&g116DA-<)Qo{AVQlCzk zd)1^_c*#W%(7H~l1L}^cQ#$?LNi~x60M+WOoj&2XG|D|(d9&6Fle%AM{j> z#d8$dON~cs&gi8+E;sgW?2V>|gXZ?$P$=3#yQG>-VbXy-Z<}Y-(kLp(E z7q&f?N?e7}K`i!pJBUR-%Sy#JBHAxq>WLJ~dvZ!%imGATouu?1^jq0nW07+?I zjVrld7}smq)0I>KS2E*D(zud=D>;nozJ4~YB;Y#OPjxP@fa z5Nsfgv0^nXSWof4#DtK$qmRsQ2}%RvgodFb3ZOV<7M@xn5=01D+dD zu)4vLnb0|Up&CgPP-sr^$}kE`vTIB4T@PQDm!fY_*g1>Bl2KR^3Tt(P>Yuoc$MA9q zF6ExE=?3`go~IXXfV6L;?-1gi>$*`*zB<@6LU$ie4Jy4+WygIIUcIzG=+ce4%lZev zuXvV*3{cq-ELjH97Y|S=#Wig?*OzlRJTHU@@tZTe`8G{{H3KHKtx9+njZc_w`F!JTX#8YBm56ufq9*3!?h6%W0;M$EOsFj zstmaBzpZEj8+5uMjHYI6Cc#|}69|@yHvc178QH}G9T>`Jumj)W(=&Y@@%28QkO3Wq zK`*q!26m4&o3#}j-cq7RFHQ?A2}m2>$Y2SKoyB~I)hWfAwm-Ct(+?}k+}#1!h$*d3 z+&mFWWFL&aScvD3I1LSTl7?wW64uAPX_$WV9|kF>KYx;cV39w6ijUnH*bM?bm1sHf zmk2$TSOISiGYU+ihjJNUJ#Qa$4M& zHhpxcrgD!!`JfHM2PR%lz{{f z;lQxs`H(qth~^Ae8O4COJcoq6^@bJR|9^zweH{1D+Zv9ZOlb zVXkvb0(nQM)Z`br>tb~aN!YZ5{&b-ez)_OSl4HlB$MS^FcErI|qLny$tn1ny3$Gt? zVDPYeERP9UBhf5cr?Y?9R-;;#g0>mlP!)Rt52rGt1FQb4d#T@EaztXgquN6Nh?O9= z;Ye8C+Ow5T<43AAio034dSgG~)%wK$BhO1ibi35QjAhb zJSa1TdeO~OMi&Mjt~Bj)!ZT*O+3LWd$jijMwegzjl#yarhikEGBn;FN`fL;|eXa#A zZ1vo%yrG!_(6h-Bo+(Jo6uRB48dMDxfUdY%)vk8eQPeojDda$+AX5T)o9~VUW z(xB1l^PANRq86^Cp-T`URR+y~dm>7H1?%O8uC;yh|P77U7}8^L2+k-8-f zx<^(R^{~eK!EQ)Kg1y>^Wp5|NP1H+{dKCRU1)|uJdQ4O|)z3kz+lqmGI6RU<33}^t zEUZT!BiV{%15;a-^zKA8Fyp8mq<2Jg5dCA=`bRFP>(gv3cbuf|5J#zG5+wXAeK<+Y z@LW2`w6F@|QOTQ2Lnf=bowA{m;UI=hmCZh9y`TVRF_c#(dyzA(Tq_&uCc?@N8BcKE zuR0!Bx|Z_ zi(T@=r>d0h2bRR3jcUq?kK!4`q@SeTS87#oe&`4$m>cwupAw7FaQC z0%h161#8pcshGcRqnK%`vv`oMpQaiaXjpnE1_e&0(L#P2p4sa@m{h4RjuDdYzx7P?Nqzk-Rt+(DV2F_Z5}Nj>Sy*AtIaAe zv$5%?%S`2kyldH=KU1a1*Cef;seXolEuE!a38gy~TTYC&MNUsMv&9$m_cSwK9)FPX zr<+~ESRM{aECve9IXn$$?R0Yt?%umR-8|i41H`$mV>1?3S%xqTci~nCZM%E?Zu^$l zhCFHl6b7J&VDc;c4ec1pooV(5Wiw`)jdAd5+f2+L5Ii%>oR8NnvrXPg`NV9q4QL8} zJKM~tur9RpZ8;1i_FHWv(VuV2`Q`jL{)`+6$bv0^v^*eFL<8!3K&FZ{H2#3>R-W#s zd1gBGyH#bCuSjp+X=czvx2gfiKeEKADVkI49OX}}z%87yV6&?MnU9;T%R9;NE!fKZ z`AAnR&3oMJ$i=^h8^+FVG3%|_f?t{lBcQx3W+T^|XCR80BM@@kS|M%s@^r1YnoTkv zQ>MZOGl8=zkcH4)$Z+U5JUeOO9M!VC_+xXBu!Ov~srod1u4+_{=*hXNdhT|pJm@R~ zM>p84LC@sAWALkiAO4o}*qml(U(fEBBe!9HZW+no6L!$O0^2AVBv;L%mTT@XUCH4r z4vdc>HWlTOYn~dBums%%lTEL|$_QfYSsJ`;o_fa=_XfKas|{{!hWPe=Rja{n9(Fx_ zpfRdj>AhfHMdHrk zIXF8p^ps9~0*U?j(}6`ejRb`WNHFms?4Y3cUXh0&e-FHh3ykRY6{;Z0-jl~tPn!;y zDRg{=N(O^;xB78~N)$~=u2hT5m#vqtR9V>-*Bngyj(i8MC+1tqJX`4XmFf-1^QwS) zk$3Z5ze){pmvhYTq?`B1At>aFKOwm9?UC)vo8Y+vvLI?Z8xgE{ZJJ^&w4v4t*o*Ej zAxAe>hvq)9Hz>ashiUymnFXqzJ1CFqdspqQ zEd0MZY=<7LcusORJo%j5gV)`MB<{qgw-3p?l2&4fsg!)o^KuqDI-i$TPI>M4+Elhn ztfbI|?l>SrvBS(3Hc;Adl*>mwhMNP?1-A@0XOvedXM~xe)+_v| z40%t;Hp;>42jnf0S;c%>hmCV5vqiH8%%A8t**U>m$+5ue=mup5b8D85oz)!9^g%AV zaxA+gFv@vg%sVi)V%Et7;fTE(AQW_E_>JmwGDeoaEbXyaNqQwM&IEnCMqZfLZ}@6bMSuK2Q>Ae zLOzh{e^oPH!lya?0kbaS-TZ*r6J6lk17`K&z3eZ~fF;Nh!xMTf&j^@U!^F$QQluq2 zf+ZX4m)&sBcO**@uVzMB(U77jmLkNmWJf`Ka3OsJ^eY?&P@`B#)*_9osCmaoBvwBl zG&uaiDmsRf!%2zx8kVYP!-J;P9BB9oNqAo1sN-=2zc9e!47VVz(}QgD&HAjMqcO&_ z`v6PD=mOMmtSh(J^dA&_BE}c#H>Udq?|F*!V;>9_SWzd9k8wqIK^dq8BaiF`<5t(m z4WgqhH)`bO8X=bZrshlxu65NFOGXL=bj94Ez8ZsmfvYHxu=uJXP}{O1@aqfAv}=k$ zY-e!p>LL>VLlI!owUv++N{GdGapfWq-8n|LB_Ejz)dJRTm9^k2b6F6g`38*87iO`c zFPu3G<;NW#xad~5kQJ>P1&xD@#a`wEzBOG80Do~d8*Ujs=ore4ZKqY{t~xUx(P8IZ zC^M5-Rnao_ zcqn(J89_NKO&4y>RP|lq?nui>-HbkZp0Hu6L{h<8RRh7kYt_xJH@M64V(+pehE8+D z;KkaIA-S}~Xi4WER_?mt(olVDDbgxV@6nJj&+;76%kTqg#oB0qiBc_4IEa60X7`}$ zsogfSkR}W=o0L*GnZlNYw9V7x8>tkNXv78ABpSa8xk(0> zB^!H0#J>AM&%XP~pNiwlFCPPzbOJTigS%6WM}+5X5LDN30W*v)F$4Xp&jkmj8#Scd zENMZek>`4{go{Pn?aDL)AgD0QcnPM5nQhd^LVJ^Jyb;ZdMR?lSV|+eXG`<39waU?JcK>io65rau&HUoix~e06ubt778(I6(fL zaDRVwwzCM@7#JD5>faL@HN>ZG6C*b+)Gk_B42>rM5^ulM2f*jItuRDX3H~ z=&eCJnj1}-w9lIxld#jJXA5Ig%vKl;xZ$UBOrd}ECOXu@xFO;1r%IT?$H1Bj6b@m> z!u*!TSf_oSgr&1C)m>vmP*y9$l~w`~#Oc!{a8dL6BjNrS7*120R>pdGLUtH@g$DG=6q?Tids*xFbu7fOn3W891%-J{8E4Bq|lQX3;LnptM}FW{FE zw$aaRjLTPH8yfm$i%U3b&U>=3Dr5LH(o5nB&1nxQ1G=xg_JW%y z^~NlGl=Aj5|E?dyoN+&kAaf}nf{UN|DdVrk-{?9cLh$zf)?JJyAY@t>O~~dhM(u=< zl)qP@O_0Yge>+ZASEGGJLUZY!u7=N9f>Qmd<*k(H@)&$>Il`S;-mburLkZoCUM{BJ z;s5q08rRLptI*|3x*5+2i=o2b8dQJ#6IX^i3N8|3IZliApV&bU_b{qsI6Bh9n9hgN z8uc{zFo@QR3wuJ}VCT%Co(7*3{8vw-SB5Qh*y^6?|K~>T&i)KO9L+-7tCx{q-l^vI zGDbiQKJ8`X)P4BhNa^$^Gw(XbB>Qz(xgUeQ=js4Q-5rBtj(|VU9O0QY<@bjEc=+G+ zL~mni91LbHK=8yR!A_={eT+Py?b!!ZKTk9I7!%BG!rh$u_66rQoM%N=&bcUTO?IyX z=ASlF=e|Z==V6wYl=1|$tFKYhx#2islWAXqQIl0asv6bL$i+#qVC{Ye?(g14ZTlN{ zhgjRt?m2(;|I)$31$3aVY8u zT`jZ7^E8dU5%Pv>L>{`)co8-0HNaSwVl&7uVwMQ^U7#O4_OJYr&JQrW*T{V5o3yCS zz6pYTmU<5~eBuw9KG0~5TIgbr4m6rO|6mP|g^_R2g{|pE6o54b8TVtC^3#Ki`^t}3 z4IB#1FnzGmR;;6^1{?Rw<>#r*5M#VZq^(1YYS>fr`VeDD`KZq6F{&>fioqn2z8q>a zDz^r*h8ZI=Spo1Qu^`(2)Fv%1KCg*OWBu=LqBX;?hKZvo2ZtH#1k%+0JM0Gb^)u`fkMP)K(w>`*Bskn(x*3D^SsF3gfL|;4`Do)r zglm_?6|T5}hW1Z127+hqNk%SSbtYjw_)**u@P z#fYSw$y&Bh8V~IQCmVy=>9~IiYFbJiry5?@0`B=dW)?0rI@7+X#%l%^x9G|?BblC` zWF%v61UP{CjCQ=Bk0#Tr)39f?yG<@YF|KOQW-Y^Re&omapi}KD4;|6+o7Hoqu`{btCMt8Ye(&Mv@f1qLJ-D=bU zmhHD1qcWcnpo_JT6$PIN|74ibOVm8YtTxA}mRbY)L9hn1JpPF3e$^$Wm)01=<`|pg z6O#U(qghyUF61YCWHvZzt}$H1gas%f+W-3xbmBJX?U0Lg?mQzCd|bt^VtXJ6*OBSb z>z!JQLrJ*@T(vTFLMs~h>Q3led+_mf_w!Cr^wwLLvPmGQ z3OtCt6sDyLFnw`{kvO0V0P-b={QT*mcZF0Lm7*+ckFnh%WmHi2`NmBZ+-hZj3Y5~3 z`9@|1k9AoZIyc`K`QI{6ywk`mpAJ2Er%}6I1tPcuQ4L!Z7sdr`@*KY z!+-D`9lqPhtDujoQ_Lcy4#{WzMJ%7xW05f%>fz`jc=f-hvx~IOh`L7$eB*ndX}_oG z_ZR~*KRZ{#qbaM$+I)KHH7xVm+HMzpd5`f9sD64ecIuT0JDa(wD>{e zlXMK!I20Fdpo*e%`$NVScX;8CD^Ghfq2N0&H`pf&k{i>{%Z(=Gm8!SGXj(;vdsmca zSi98p&~+;@#|oE7GgcaPBEI595L{`nb*0hSM&6y824Lyj`!`Jqpi2Axrl$i&f%A7> zh|CNdm!4I|sQPdJt;eujG!jm>hw)aZ2|jb6|8N~R7AYU2&8skco%@^KT4iLUXhY2g zS=g%S(TgKV^u=l;-MNB^(uPTO`e;~qYWhTlcx|z#h-1`gjqz=({yw;Ho#EuMYw07#*HNdS1mPCOj~vmh>y2ZG zZn?oYjG^%22IGsUZFu@3+GxBG6CO{%htmdKsf8i=*d~n67+EfCGUj4rnXnn+ zT{b1fw0LpIDDypvf%7o+e-wtuS-SO6V_4`1+c3WXIv&k=Cop~cD2yQZCLYr!VuQzw zsldAVF=IjsxTY_FMN(uyHakP^<3{~#T@CE$(PedTxKUG&g{%~KuHJ;+e%zQB z9^~OQ$fe0!j0C&$^DJcV7UMo}to2r71zvA$HEy|fAog!FYWeh1F5d%Fwv>yDi*z8| zxb(m_*he+!$Tp*GMIT0vZHTtmZsdlYARr@$jgL6GZ@V#9u9Rf%Feat1#Hs*1T`nj5Uwm+o%eddO+J%AiR!q z{be4a>8?%K$9#ld*aU)6jbAqD!|(Mrs~$|`?VGP6GB5bWW_6N9{n^LVQ_j1NpqFOR z^xX>6&EUGn75`>2{jo*8$8`t48q%e$s345u@@pXc&BHr)nqVQAq|@avL?;4Pme=$IZQYw<-bEqxPuA zAq>ehWhV~bEq@%x>|fub5;*avd-SrdmIB{XS_bki>1htu|G^Vjz&o{EC?4Qcm26j|?S6(1emW95IV zgt|Yi+BgrEpaGI~1K7rXIrAA^@cpO35P3k*#b;Dky8jt`v@T8g}k72Fj1GLB$-InMSkLynH$OmZG=E0L6 zsL4+8S+K(=YN!cawCS{J<~qwFngRpo)6>}T>Ba%@#{}*%_xjwAQt6k%tEri)d+BfKDD{vvo zH)z!D&==q627KcibvFn5{7daAUWQ%xkX!plRM%GwT>2*<_4sTL^n(saI{!l?sTr^)A><-64k{Q4~wf2&flnor-V?1q418<34RQvBbx*thb@5*Y8E#48n2m{FiC$2wjByjD_S@L3+An8;|MIb zHwbngDWw#fsn^X|yI(_3+>9HC*91#%#&SEx$h0vsOV7OpZ(Gg*7WPa?|MKvV*Jq6M z@h{%t(nrIcO;^U?R^-0#;_BIwF}MZ175!_BTnIc9W`*#WjOV(_cs7ldK0Qa1{!_fe z#wT}Uj?E~GdY%CnJFKuR8PLx=^B1* zo+W*JH`|)AGKZpON;jRKC0hVp{%m;{UQf=}{C{t@94kO{i#Z^=6%Cyu=fkJ)(Hzj% zAb5EWehLAS(Bw7*&(ck|$tO@TF;6$(uz9F^16ndqcEan#JfLepzwnDF<91m$s{zZ# zX3VldUB2AHms5mgV>6AuT`u^4czY8tDT<_TyzA(!nx5{Np8KAuZU&ecX1Fi8q);wF z0oMZ+6vPwpV)0lHdQfyxP(hSLL51}ISx{V+#tR0IU9VMiUB!D)RKN?BRa92~zlf~r z>48yszwiBj&pc4oRau#lkr9!R5s{Iq#A3h1QXQTxj5y+>Gz3uXyIemHHJ*2c-Vu#1 zx&oQCrHo#w{~emeTUY9xy!v6DgX0zTYg|9=A)>DoXV8CB zW!aN@gZ|tGdBl@Ctx$MQP{AU}^-t<93BR8<=#Rx(L^QkUvlSn5c!%OiIr!@!vb(`) zHAsHh>T1Cjf4c%^?*%yh` z_@iM=#(Ij4%ZNdO=wh?x zS~`8rMbv?u|CCuGmhOS%%$JkbA)>3@dNT(Nu}y5`db3y6+S@#vLt~>!sXh&gkU&k8 zzc3K}THdi9?#sJ$`H%HxCz$EJTW|KGpIsgU;JBXsnE5==*!^+yCVlB1`OM=8aQQ@* zKVgz?Jnso}6@K-3(wvkJecjtg&QV&+kiB7#{Oglu?^fL&HQvmW@u$p&fh}W_CL&!g za={y>{o{QdS})`P2Xfw1W`)1TLBBhN(69L|=B<1QB;TG^puK!*gISf+(kN%$Zr&?5 z{uC@PX}XK-Du_>^oP>xL2xN|;AJ4ST-CeT%Zoe3Ecf)$-Y@&5Q z#&F|{$DWpBi|zbg_{2mPw>{3)sEpiRmhP2Lq&))!RBry0^i1w-!dg0IYvE6m9e&vd6F00#QPt`%loi#-}af9>V)mF6F9Kl2a8 z0k)T)tu)Uj74hi%%{ny7F^{2DaG|ffANgQl4t?={utCdq-#d7<@W{-RFE1*fEHyb3Q*H{glUcYMZ*wWGbB7SZVsVs$%qqLfxu0~>R@`T(dXzf$XgY^ zhT|WhqfCQN6~wv7?xkSMixF`rVw!;(>4?@f)u#Bbhi=zJTdo~%PP}1O$ge?YpVpIS(-Eh_h8VQ)t@CHD*&FZZ=#2AOY z3<`$;5eA=KfrLkGz$<<1m=s}5E#Y(jL+_j3I(DEca>D;G&|!ds)I-|E2z0-vNV!Je z!ZCqGW;NeUGnlG35(QWzlro3^oIAz%=@Dwrz+oFEEa!R|DSCMYlZ zHq-lJJ$g5R0I;L);0CvB&R{k~_}v%4tk(__VMF9VXzb!=3HOU2!t{2l0=wuQ!+>b& z;g}DA^=4!y(TS@Ol?DdjYMIw!#5-XFukaFqRkRTj!J+{Q=0jK^2ae(%5OWC)@qKZa zLMXyds0cp_cf{6XVoXi}NjqWSlVkWIc*u9dBRbh=@InEeMNV?>KATgV2`4fJF?pz) zcIFAhI|86AC!1QLm<5(haDwA*DmEnq=|U%|V~ZqSC+LcFEodUA7O>DJ+HtVN8c2LX z$9@yCqG*xt5SQoyWAcj}21eaSVup*)$3%1xPzx{yfXQ*NJWB%x!Ep=)L6-nDXg-d; zy<;LqnDVV4P?Ppa1kfQg41LSXjg#p5fD>1cOC{_#}L5qcaWpj2;-7!8}cw-IoG-l?9$6@yf6jy5tv zJx9-|=Tw%50T#{x;h!H6-wDtPzEmA&f=H(aglGB$ftYKbAYd?ONEAUtxiWR16SIuL z4s>L|0;cgH(E$lIF1LaN(T#wKNPqz{Z~-9@T(|%(v|uoC20elZ`Xhtxv>F-8%@?M& z5M(+MlZ!Wv0NOa`#UidDA%*Su-VO`(8)Id8QH*qHB%z9O(GadAJP}fz!1hACq8jK4 z))awO4=}4+{sWr!8X;ci6W(?AWnE3<^xXmTjfO`w->8?EZy++fADC-M-ZHmm02$MO zlaMSJZ=c^6lae5^CqWQWvtGKG;pgcBf~bYQmqp|4a}&CI56@ppj4b1ORDy=r+E{1} z(U4eq_vcTupOz&CiTof18&mfUaD;n{_u75dzgg|yZ1Y^jyr#ia34D{jjxTRfw+Xt( zBb;M`ez1#oKHYx7w~TzeolS$F4lJ63Tl|2Uge~RX*tolW2k>66J(Qra#VUf84~50> zR2TW~sX;<8-XY|c+owqnFKNMnm-Ne9e&E-8=!#Nuppz;3PVISLDC~oC zOfsR}W(i7UP5X?5+H15c$Q#d4_w#JHc%Lx1MX4pI8WCEQb^+JTbjA!B$#lq7KpmV) z1N|N>?Ayo(38{IgI^<-j z2!2HSV?h@}bU65o3R9pz1$E&doW={TcA|;dWUQbk0E(4FfQx>p9-yj>KE?&8SM?)J z*HcwQuYfWdp&nqmR-z9r5DtkvXlVUG#q>bSElm9+&9FA3;~fHS0)x-YKsEvOS?UX% zyo|kr>U1t@pTpK+`BUTBf=QM}1Uq8HGqISN8Vg}WL(rNCANU0bN$-!aXtq~Sc?$hT z^MM3_LQR}P)F4@fiJ3mfvk+#%cmzrd%Ht<`iSa^}to!iB2{ro>f@#VCt|{9>rXs%( z`r}JVpaHkkV(WsKDMq1YUPNHwO$_37j)hoOn*9vT5<_k;HZ(9~HLV8cN6v{G)ldS7 z(4+1nH%fPp)y+?3`K4iZl6UX1a>d(}i9APkHSH?-&K|4QUQZ7w<5K327FpV+{b()H zcg~mQPgY-Av=92p>VUO5hZz3pCu<-*TmO?q>vev%=O^nBZM*FLv$a@%Q%k=5vsGs6 z`{v6XhV9ZO(R$PF+O>^EJOs>oKZTf=FO2)i-Ws{D+3MEl_4kIg>!k^%ZKiQy>y4{v`nYyk(-w3H)+dd)p8hncObdSCP@l?sCd-MuTG&hpmlONx!_Y|{lCPQAb;y!)0T2qAKm&F8+ z{RPqf@}U*_NO*OAUZLNu^_O?8)EA)2ZujeB@Nm}s`g^#Xyhx9VQ9+7;}?f}2j*aN-sx<$+CN zhbB*b$?5{5@Xaq-b@q=7FqE{j;Ki4%u5$NF)`|WgO?lZmrPb^8MYQTq0|$hReQ{{= zwtrgd(B#-xtP612^on&nE+wy8A0dEq@2gg=b00LJ=vMqkRtkiOVrFG~MH%K0lL&9< zW@~71YIrhTKOBg!a+7Hn*^k^vMCUfiX45X!@y%Y)BV8+kb~pW(g>r1rPTSZhgLZeK zsh5KGQ1Qz`d<#FOuq)->kewOQyj&N^ygyQ)nz!f6slq-4eYZn)jeJ?yci~y`T+2RF zqn*v?W!SZHpKX)L7S`(q+Wb5?!{*)5csH4-|FsO8Y^bQE&X zPcoKeFVX7K`q*+yM4Ylz1!$Q;SrXR&4Cmg_@|&NrC+$MIbd%Aw+TjPBAc7IW(J1^G z-N>z-?2aXB-p9j~aR*`z!~edF)!Sux%6`L-XcYI*D2}POi}inN^6Yy1wSKd)trZ#p z31X$*kjVhr4S5`tazjTWVXh+GrWiMtJ0vYg!6uG3DI^E%sA?M{Zlz{253af_F~ z!0_&;pXQ}78S1zR`ATQItoHerpJtl~Dtp<#Rj}a6W_qHEPnMH!*7D4tyZ2>T+r=hP zGp~z%GA^HYv2UL?1*NwHumzK54EF^@N4uo|ai1bygYGSqlz@_J#RR6Cp!>+HskYbq zx2d+9{3k*8S^rkOl;3pa_K)di57nQ4RW9jfABNOw&E4#2Ajc!SgIk(4x%_^_l3v-} zF7d{G7m)+n#sr6vxWBtyroAPf>uy(Jv;HUD?JoAbn*lUsX(;bulT2*vVUI<%ulKN* zu;78xtt=&wPC-~o2gAE?P$M~e9&S8MyX)cNS><4(hkIRh2QCZ$b+wEC3uceTqf=*>>wF{q^-+rNE`WOFPrS|Y{?$n z+wPcuH#U`}6>8L62(in1bE(IB+qblgz;S(Snr4%I>=~$`zOOw3j<<{Y+8YYUx;URk zlD2KK+8m9ZAx9iyH<3gN^|J@-?`U##Kf7LAD*x2a{<=d;7f2ytH+RdUln|0P_Qxkp z@`?U7@+Ziz``bgczR6w#>^}qf@~MFkkJ~hP@*w-#LvP^`Crg<(CZzlA} zc((f({(zygRixw0Rd~SwR$45;-hP=*j8j)8*`%SL|`5mIZQ-UZx8fR@=CrzEOK$3N~x>fR&9@3hT zrvtLg!oa1G(VN(fCNioLg|Ocl7ZdIT$}nb+jEBk+agPoh4IBK~ErR|8K)2A`X$Ww6eIe z`ulGyFbWtUw1Q<^=8yqbV3#*}mf3JERi@_M#sIRWsNZ)1?1%JM09saIxJl)G{4~ z+}-LH!WQRHezpmIi!#_asdHMHtIr_wC=&Aw$)}ZSE*`{@J1&D(Mfj8d9A=lmn30E` zhS6j=RzS}Un2el)bKLABfoIf%0UAc;T(rPOLjMOZpXf)(y?_=??4qHJW3Y}Dpt^ul zh))4AHl1gpQmk{4-qyW>%Mxi&vO*L5Nkt2kJ`g2W+W%9CXx+XaNc%%%|NjY5;$V=} z8X_PVX_tVi@PUB+%J7ALb@&oACciy?$mxN@azox2n!kxKE($9oeF1v}U0|ljp(9X` z0}lik%L6Gy!RjVi@U@x*2;u+ffbR$XQ4C272_jA_L>6X`Ze0iv7+i+J768Vjcesa^ z3$_K@>!4~EDGma-`9G8lC0r?ICZW6|;{Qg-xR3vJ69mhUQY7(3jX?^BLHIl+6rh1n z_Uxs!>Qh!r_=o*lJXx(loGxW8VkO-w#gQ$mc+19Cr9~{pTfARMTEsFc2`Nfigh{qX zS=wNiCAhSzi!1oewF^GqZ|y?sB{qgQI(hZUt^k>+1K;U?9_}4TZqjQ2Buy=|U=T}0 z`(T9x2M;n3u!Srd%cix-fhE0ylqJE{(Fl!XNEwJ=1c%RpGGI|Pn5{K5g2fm$auuIH z&4w?0imlF0_6mTESnn7v(QNN5WQ+q%Ofh->XuBe@--oD`yF^98nAvAeb*)j5?-^t} z)Las%NZ%3X3?CLJ_W<~qAOX{U$vt3^0%###6;g%{oB9fb5f)*%!wZ1#lx6n`=!}hJ zT8vHu$Ak}qDlCpj&Ghz>c00jFoRG{t%I-o-_QQ^{5s93<_$a7XEiqd!jKTWjSy?*P zuCGw5Tktt!pB9PF^I8OW@RvH5jI~R;kT#;b+j*%2fP5dXdWKzfq&cWBn>((NAlZ&P2!6$=&DG57a^FCiOtjW z6kYN4<{`(}_hLP^;~2XZm;7Vxa{x)>v39e*u29~$+3E(H!dTYp92TmEGg@*e8dZ&+_?w7qino7O%pC}+QAb)&6=uicI8 zdM~|YjUNz(%1OimZI=9WP-4iejHjNlopNq?K^eIyfgcXph&8e)%Tu;k?NI}KYm`ui zYM_KNP(P^##VIsPqc)hEA>ELI88zT*s)cK4LJc^U{?jei0A%kXB9NbNu`1-yx2>+w zc+{U#?TFl1VTg-!RB9vvmmNV)sgbxB=mGu&V8A)hlp0AHpa}-}g#iO#qSo<)dlB(c zz`!R;X>GtoAbBSqR-^9qY0jVk{_os$=kF zRLjVFu)ePR%(EGcdC#J(am(JfaMI{|R$A7$zVBOgdedj}wD&FA!Hg1T>F<6fLm#kt zm_IoE1FJW7t1bP&DyERkbsr$brB_$YhgL^@#dbOFL+dDt%3S`TRYrN`HhgGNj${73 zU9)u_JzLmp9ah`M+7?}E-$(sgt+?F(g-6dlB7Iq5jN z0VQrc&Mwiv)D~{NGC%p$arP~G-_^|8SRQz+?cfe%P>qXX>>B3lzTj(w{bC?}uDtRAY3~XUYmZ~1v&3gw_hg4`G0K1(n4XJl|N4Wv zoLnG&#_x%RV!hU$>?&S@SB}RO%AbG)%qq`J9qSlfR+A50U>#lhtw!quB)gA5xgdUbkO~hm z4DRM+>4nyN!Q>;`MV9w%seFH@_`5^}7bPnmFpt9l%9_0BL32rWNLOUr4NQ%GLpR{B zKoqB3(}~o)Qd2dz)DGK#9J1DYHTnI;))%mYBtO2?y3z#DldrV;BnSS%y4sLSP7@EMgg#Np^cx6?&`lsoryF+ux0`QquKuLe86aVB2wOpZ8HTt!xum(CLB z!NiUQTGX9K>q82Zfr!dSDtbBgY;g%bdH!rM0GHrY4ERoY##Av36|9*m?xPBhnI_Ka zPMirpEWQu%_cnje54Y=-$~olDCX1bW8T?t$i=#V|UriG_!Sl_zq8Bb5&l9KNGVeUG z6qnlbMHgI7IA5HBrkc(dWz_TcE)e7Blg`umlhdZtC&?G4i%JcgyZw)1EPN`5%n-eNCvcj zD$tWeT96!EM#LhSmBKKX`C#sw_ibXK#(P5iAD$0S8+)n$TIO!s*v6?w@_YhK~zrguOKY$p_5}exZIbGIYD!xR6rGFA*Faoeq=gXOY5+!JL@t?#% zW_^=Wr2@Smt8IT0S6Vm=1Zl2n$0XE;EPd7>FJ- z#n-@2yM#Cr194$Ow8t38gs8*ArxW7nvi)#89w{1u;z{ukFx;gP5@Lrut5F<^;wu}) zk!hU6>FLI+Tz!+GnaQkK;$#i^d6MT{C4${jb-{ zUZyyXBzM&50POrKg)0 zVxY3lFdw3U+H?jI$J`{(I@9b_qqucGq#sOx&}H!{jL{0HD0rKHVj7T7oQZ7}bLYw* z&NN4va`*vKoy~>=2g~n2&#^P`G2}v`~kyv z)NJrcdwJ7rQ3?`RHCt3yrsFpK-V*>{%oZ#0;jPz*QOMrD^%@bYOE2|n_j_2#$@**m zFTPIBSZGZ%%in|kg2+d<6gvj;|G1Rr7H&IAZM#=mKbnK?p`4EE}COqUB~CI*jRN2VSJtjUz%@&#+*U7G}9s1 z0^;;!<#krEd~S|a2d3FI$I1`y#5?w2=s>K` zZy`Y5f1R}kse$0ApqNp7OwD0?BiAF(yWZ*%$6Ep&(JFWd;4M`QpCIq6D)-Fw)-0+8 zCUpe@)j}yM2^u+Ju2tD4j@90A#CTcto%e2-D)3 zo-v;RM50dB+HLc!p4jCFyMeO!1AuqtAxL9~%)bH3_zpSh2CD}=hcKNXy(hlG0!Dqg z;09|D-fzCa8i7m6jaJ8B8&rAxjaI{N?z7+mgJW8H?! zArDwJ>S3w8;sNwlY}Nk3VP?kz)D!TK)`>A7e2rj)9y-q9A$ULl*W>@03{& zBUELlT(ZGBN+ut+#^77)5z8jfqK~4E9kS+8>n&~PqIK5UC^vPTbq6kX(mEfVxHM^< zKuew1AGgBv#fMK=1rW(taaW z0y|}H6F;2YWL<;WLz}D>UeRj#<}=*!PS09Y{?TWx+tKdW=U`!xRoCg0bmVB5b)DV; zxfvF|Hl+Z0TaZ>8c^Y0caqCfy#kdf1Z#Sigm zTM$*DnzSl&6?E-n$wIxWyl(-LXkra`1yt?x7V4IKeF3&LGXThMb2GNi#^tU>dT~32 zWQ+jt3=PB|K8jBF@TkePH)0!ZI`AGccHXR06pi1=DOs&6lkYCntMlVzfPz^q>R|`C z&y<4~BR-959Ei*Lx9HUcE#Feiqyp#$x$+jhs<7pi7A<2CnJC`BMXw*Mh7CgNji)>d zQR?Ok|4HiR5kK#if8*$j?$Zn9DYxoXfMfZsdQm2_gpqCB1&z{!Ug@LQe5+o7(fa;Y zJ&xifi}Zo%ZznC%3-=qSs~72YhY|Rx;Ur>Jrazqw>u{sIu|RFHbr2D*`^=yZ#bS{0sxi0SZ}u<5Qi?-EBV_NAml(I#H$wT<(=bbD$o!x6?YH; zVuXAkfoDQE?-5}FkuNW1TKH@+wwQCHWwP-$eQE($L)H#vGOrr>%~CxtFUDpNa5(jl zb|h)TWYz6R%FiQTaTJWDexqGIF6J|I(IE4-k^zt!APQ6uw=cFLFh!*hn?|m3`R#h~ z03WIDYUFib!(r-X=^fsa)XgJ)7BzLVaQQKL@~m6+!g1+@*A9&-o(RA)=JN&~)_6ab z($I29EC8p{{xGLg)P+m*ULK{%4NG((p5>G?^2H_05H!qqtu56ns=4neamKaRGhYPU zo*sY1m^DWcmF)8e%P=#yFH_nOM@IcwFTG91I^g5P>128Z4lP`1;xml}s5AGKrmsp@n zVAXE9ql-9R{?b)M<=C#GK>tybXLc1`vmV(!xQ{AT8(6bj-rH52AUAYFsjP0QRQqly z^-Nl+CwI#!-NZ>afNx_rQB4(n(hX*|9C=lD^>bx+(Ie|$y9f98>wRgre4>Xam%Y0S zN4D=FI?KYIXkkhZ)xu>xQ2zb2^8e=Yl&rI;r>b&bPZaqi4TukS%b9qF`RZ?8ku6l@ zyR;%-a*-0*y_XoN704@ksjB|c3+1lt2W>KK&TBJE31NkF#MXJQreMG0c5fqHFO^+e=iGosM z;c%VY*++~%h;OwKGSOEQ*qz|viD}^)xwNkss4bT7^o0SYb24~{*kprL{^5#e@O17F zF|nZ|M!OzCDzLsD1DgaHmT41sJ<`2u;d&&%RXbWJR495uvfwb$Nh>@Y3O!(}#?GQ} z0d3(z*hzk-+Vy?z;o|uG3G})g9vFDrGs5NQi5rk5eMQB=^W8{co;xJS+ZcCt4-_^=Js_rnUV;fkdynTc?2K$)59wE-bGUlX_Vtkg9>BPHebXt9T zWWSc1Mv8`ta;JSmAnH^$1j553_(7iOxKjy3F@DO-BS3|f^4KG=tSy%pA0eu6S%hDm z9d%9wTl4I=HY(ycFyPnd^>jy5Bf@OTqFL}yCWb{ExeedgRpp2NfpTZW}KKlS^*W!#_?u=&ZJXrLAEf1 zKoh70pp%mAv$)*$Z=veeYNm75zh|NL2I<)gd-o~SU!84m{9}DMJx%t z^;o-rVqhure3nsw2%U?zI)S!Ba?fxdKHIL4`m7EW+ve z@}F5a0nD1f9Y4!$$BVOS$UU2l7Bk%7jCebzofGxiBi=!KQB(q>Yo?qrUR>3Xjy#9~ z#DYT`2l9xt*TYCi+j)r2@DpM7?N1Qn$9k@eW_@bZA!0=C8%-aq4|a>4xWi8t>v5Pl zD1nY*kZ2U{4GcP5q3)Hm=@tw~^C^2rLozxEvqLt{fD|=GbvQ@fHAxJ|@6RTQ4n?*L zPYDq(cny?p`dQqkQXR%Apg*uznapOiTe9T!gs>Xgm-?fgasWa~`OU z#~A%4kr2%R7hX9GPV^8k{oF)R*C{)UQ#*XvVDOAC0d{J1!j)?RH^6c>1{P{lM80ye z=pP>n!4Tmya$G|>_So4++6SGNgFsU$PZnLp=3O)w%YU8>_eQqNK1CFWM_|3cqqi|A$Jq8F6 zJyo1mn$0g%=%E)ksVdG+uUKYJ5!q;@YKkauFi!29YRKj35$xiM{uV^N2LccP8BGnX zlL1R$3lBTkC}+_SvU5G+)=xv9vb}iAj`CY{3Sy$>G;w;_*G$YzA5KQ*lBYF6>IdZx zE0l>pi^EDm_vKKM)a*B&)TQ3~1Y9upZQUq3V*WDch<`4;!0stun3Wd_h!I@_-hKP zjy{Emk{W$HDQI|DqfdZzv@ebsa@O^tH1cwKNg10f3guJRi_8iNmBIH)$HR8O7uqf- z=Uy+Ok-xWk*>Jt+R&{6kqXQr?nU6$Hqvj zOo#Hx^siIBDT_ST>Ny&U$sgwe@CVv{-fmU;bBf5JM$GBdo{vg-);ux4XBP1nBqoYD zBntQhnm7imn8yjR$~gCldIX_7#3FL?t)jRhSjMAAmg&Zs7dk=2 z*Gxw&3PS5@!$^Mru{f@sF&Gt9jf!N!c#MPy6g>}e7*D^59IzSmcsY8Z7!bt1`j{=p zY!l@rW|`|(X>ygYUsIK(RAu?1n?+SF0RidHNf9)zU;gs0C@m~&1^uxK`eS70_e8%S zqGr&-q#Hyn3=h*|Fz=&MCkv-NA+@fmxE|3uTu*tcdX850jH7x67+&{l!|~8`7|*Ge z@D*+Lwp{ggOj>V`qTUWd9UQ_26QgvvA-=Pc|PXL1sDYS$iY#SIld=KL{EDe~UJbnh|S=lsSbczrS zWDp$pYslxfKVmCeA@(o@#}FS5rmNa4>I#fznC5VSI*!}(S{KZYVcmy>(8ROwWaN9Uvcn^KH2@BMD%MHf(a2d3sWO(>qO*TI#di)k9QFXkQYsFC~R8@71H{Lrj&>FfB zq@%RCI;N6?fHdCVRmUJ!)7}e+H3ko3fS|RDF)DX3DiF0gLcY2}ln{h8r?fExE_zP1 zbG#ZEvT6`M*C+s-8nQ_T)yPxL#`SMV&vpRgbV5e?ULeP`3NSxh>UFz)%|Be zJ_Rwk(j@A@r3&>2d2Ez|gZbAXry)Ctam*`e)ZUbhht;xigXo=o8GL$32y!W1j*L{u z=QfDGh3BNHPB;MZ99Eq!lM`MNwZGM0VkjtVProF_P&NoGOgJdtH4($AGzH`kBWtYE zOk$KVnkG%!k)U8EWg)60<^)Jn;0fy4u*j(N*Vkx{MJi6VlS`L;Dm4MqieLB$DxBc$ zY-yD-_PMf=Xpy!@!OjVs#tXdYO^S2JSTSq?w-M4AqoEI`Kh6+=uS|v$>Wnh8f)_pA zhE<&)u;!TOK#9c1kivAKh~SZtOUQ3Z-n1Z%4*ZQHIZ-XJKtMYfKxm`nb+c6l2Zl|7 zf)@x8ap1I_8aEM~p6L`&rvZPBK3Ykw5s+GWlog4ha6vW(L7JdP>{dXqDuww*MnXE7#3a9}*tKR^vfX>qSPS!^w!4%6Y*21SrW zFXmT3uai&2N*kJ-Y;}j-eModc&k&`=;Y|oXMb)u9)P)#kwYP$;)r6e{V(R#GH{hw7 zmQ{pkT5GZp#z;8k@W@#RydUCR>qOSfj^#kdv}fQomJ8Ekri=YpVTt(-xCAPoZD5(H zXczM+-~!RVnaC%NP{N5|oZ_I}$p9If(F|OmPZVJ=G5m!D56Xiq>H`5_ z5xRux9RjZ>&=)h1nD0VIn+|fK1GqF%CX zC!o4|Kbcrb`ZNS45F>g#bv(LdIxs8IiknHq9vOkb8b7c}4M^3TJdj8pryNuyg10`2 zT&GBcbEna;V|AMgyN89ZY^3{(W3NRTjo@4)2WR5=G=hD5IS8Vqd?^UlAo}n+fB94_ z@O>)y6Mm5OS3?3rC#)#r3XlomNze#TPy_&n0Q85SR1{(l&5?J0C@K>UvY}x?2cWRB zpXQi6+IGumTmEPVG1{2CFqA={1v`vDFf0ksOv{3g)gc3Pz?wc4P7_=_CcfxW(q;n5 zuG3Xb^goRnq!*&wD55@tE|7*Ky;_FlwARJv@Z`vHYl`|JPkkSi^Bxry2{I^f>?5*; zb67PgSPqMM2tOBG#y&qyJm9TA_H$as9%2rI zpF1>?hsco#5B~o00SCl78ukQu@&P7;T-ptVu?Nl5*oV~6vIHP0ks<(Cfgm!705FTO zX^194$5M;}(I9&FWQl+c0xeR44M!{`fDl^dl@s%^Z6N4m5v9oaABqA5)4j4v6oOBE z5`jRN<{-l+1VS2#M0^qnfkbX)60v|iCj1nM(AE`iPNRh*Wx=GxYP95}xtd?n|3m;A zA%|$>Ay08hU>aizXqmspwOzh|%lp$^ZisrG2wrH2g& z++>d5!tPAjSSfnpyJ29rBY!QJ) zh4Mz??BYVFXsW#60g;~|az=mh&_~h?vC1RXz`QUP)xbN6Hh99PG>2d-B$2|f;l~UN zu!g@vaCG6CAvJy)EWAY?EGX_HP>?5l-cL;oT|^Up5iNaD0p+5EoKB=>d|J0^I2Xv{ zXqZkg;}@#q&Y_F))J~v*Ydy9E*RuA>6MC*1OE9fB$zy7#9Q+uA01|{Hqbyo^L zr@M|CIN2W=Z1~BfbXGx17ZoJ6hVo`%0#n>w54l7l|4dBn#LpIqeBe$C-@+V>?s8T> zppwKnCqX3A*`HSx-A_>J7E|!K_!9b)3Y$TrnB+!At_3~_&+w_>k2X*x#F`=cwVq~$ z*ASi16GosUBbvv~2BLxSV&E3@FlvB{g2u^amjSpj4bM~-crF65#DI3hNqR~Uz$fvB z9g}oGc`9dOu0Ip9qPQK44#N|7Q1eO7LGuG%G{%bwykLC}1lT@ZDRG9$FHN##qku2j zNa>+mEp19R*n&yG@iHfUYJ-t4p=6WNpLr#)pQt(xTmVr;F?r0KyrNN}s*!q4a*EVl zCMPh=sK_ydQUA{|!1;#8$(%_d6M!Ui{eevI`k6;^D7pacgOX~pd%jgy{PHcuhe33C z#o1N=yTuK^xY``2pi%u#fzwj`Vc=n|o>`a`GK1(D>Vl_`A!U@WkmdV2JKln_Ad5$! zAXAo?%r+2*4nyhhfHPE(uXJ`})LGbfr~`pST8L&Q7B&=VfrVKiA`n9oanasA zx&sTd=4Fshp5b#<+~dN0;zCZ;iY4lSTnKLPXI0k*wcX6rmZwH7rEV!wAiD9XB!+3u z{UR_m27Q?)SZutn97(tjwZ4qRWhD%0S#sHOD6f=B!_ArFtWXj`! zsthT5Wn#my#|RO5m=rix714y@JhJ0)i~oz=N)UGZ6>qGJ;I59rVMAuE3hH5|Q-Pr` zhdx_|fu%^D)_-&g7j1D4O^sDTa%P+Z!zsxTwN51&l8wZ*p{bOc0>m2ufA!6C`(Um42!(>;78iLu3Q*qG^a=qaICwi(LrGDG| z8;Mw39q^REZ`y5&%?bS6z{&`u0a*-JpBoqnQPB)?LV^jR*G#7)7_kF@Xb)gQkOYW+ z~f-lO`1 zc!WZ*`x@ihzTGs^*c`yj#mz1 z%PWU8Zy*#3V5H~-|LWJLCA=3{Rd^qSJj$}X--^L!~Vq%vQ(Q*9Pn*=i{~or988lmg`k%T{q%#urH*@# z_;=2*P3p4CYr{h>jt~hm3Y`DYl?OSyu=f7I1j*Wf6?{`}HOm%~m-7UA(=ux zoL_Q@L^F*+}jFyt#C)~X7by?c0xGJ9D-y-lmnblMbPj} zO5Ox*I;f9kRp0~oBhwUzOi}VGa*dg!!4}8DoFOVz4TIfF4^UNMd>M&lU}@Nbr&zC` z3$IF$eIDR7tQM3#k}*b({|4&2M-qy2(#6t#9dlFaJuKa%-m|^Vfr=3XWSC6Q0Tt`I zZ{I%aLJE>f`AJ|z9vbP2DL@N%r8cQC-j4vVQ-llKGrv%lXkN@uU|fiynII;C=^aM) z@WKV>_ez*FL*n#iN;#p(fN>QCo8*CJZ4`te%(_i#bYV#au>6XBU})|@?jb$flc#VB zsA@0>WP^snfCEPiS{TTGBt;#z_{-QkqO$?L1i5}hj~?)RK?_10G#q?z;Zvt;5k#kj zYiY1s&;h~e!k9_kCHd7dQT;pWg$iuw&pJjkY&5``7t8@r*hU0X6M4`uBq4G#;W0c@ zBw^y@kwPmAmW$EykB4go1MvoyZjFoZW+pCxsAZxxnCl#@__-4pRwi5`#Rg2vL@sjk z55WRCx(R73w###xL|rW{h+rl5ytP;#WlV+IN>0lCypwW6ljx?;(&Vlt(W%5%YcjH^ zk!FNk#AK8*!b0}kB-&M`*otD^u>eM8P~gD2xWUAE(I(N6R-BZwi!E24*PLuVcsQC? zYq*X8%y1$gbA!qx0|G_}8rh`KRh@RyE3F;(HKaJQ!;4M+u#ReUEqDOf2#|Ah|B4LM4NyrFS5#1`uVaQ)riOSy_uK`}i z(p5Dce29%I9uKY(a{%RD0;iE@+P81X0h>fw+7x&0Uqp`~s8G3(NDPs$5MUGWTL2k1 z;62Qg%zI=hHb4NFzz1R2Kdn3D^H1Mk1udbkxE6o^=a{^Se3+6;(HuaY}-iWeQub{ESU>(F@9RzIWV11?0m_n>kd>7&Q_hjBN8%3w~-e{s-<_KyP+DrvqA)LY$ zgz^IH${KQpiX+$EtuS`NXXy5&fhD^UP2(`wQ=|>e>-@te( zi4K@(!&dYQObpm+T$E?gQbT@DX^(26sZ^<*nVZh22qTo zu3$c+s3h1r^J(rFNtziqipT<5I;x4J?^N$8!jZ7rhXf!=3s1%<%(n0-lj()FmyqoY z;0-_tT>4^l0f7yt7n&!LhY&9u!>UZf=(~-*DBid5#!?m7(nJ@Y0;+L=?ZENAwSf)} z@TG&=;43Bigy$ijexXhZATB@;l;1N84;xxp;17X0r-kUEPlWq0tLp5RpGv(Wq2@-ZFmZR7a#?4%=cb>PFV0#0-E-<{}&BB212kZ!YSVa$j^~ ze58y;g$QAV>ys?AaO_e%N}iK47FDtHqKX6y8J1wfEycV|wxTK`9>XbD=$;-gr&STg z6JaAv0MHW24PHS5TftF7;OI;b^W<0sqroK$U4TN0EMT>%5=#&v*7jwrIr`l8n4Ap{6ZtzY6R_dgn%%nP4 z!iB&g&^tICpqs_pmthrB02LND5qHOfO##QEdy8MgrJX_EWmJt|IDkj&m;w=IX2929 z8xJbP*ieH8RShL^WTXq-&pqbPnFzB3uT*ElDA4(h6z_qA@ z416@;%4d8e=mtwhM~mfBf2c4*M#?f_t%OFEOQHfXT!cGz8hg%um>3F)YuRaBtnLg9 zq@4D;=$P4&kO#WPMK&#idmNGjN_rIi$#=4;KQNn9z1brpo#}oCQmj#bg6I#TJc@lE zTIW=MI&*(8r=d-Nh|ON*r10aLY`1tC&<6yz;hUwh=Frj9ADGF>V408N)HFQy^mP@( z?o^P$5{Mv!CFSV$ITG$~I>8x>=6t8XiL&AHxHm+nT&I9%muxm%W@7f~FaP|8sL-J( z-}i=S*Lni4mfyc2@_W)O{yc^|74(IfTX|wf#CX}ta+G>Tf)rztkC@MX{}$bTOX2V~ z;*494jid#H9@8n1oBu6V$q$=_s0YS;m4hO?spjfPNf=D2`vxE)d)7Zv7O0j*Xr&Ck zEea@d+SgNPXnE#6Fj`hsUMz2VOB9!qr_fWZyy*+hBX*Op;#Jhv`}~OdxI?R#d67J_ z{`?Q%jsHHpa^w~f>ytr-UfO>K$`oz}QD&iwmGnM74$CQ`<(VDHBzu|gkq2LeT)st= z(op-xL=R!xwus){f4^;FYZ@t7a7j1I^>wqXY4nurH_&Gov@D0@X+A)Njt1kKx4Q8S z#UvH@5#4wW3eT<#M}}t(MxJX}M?uwmv=(tO+o4-p<;`zwH3Blw;VL=l9Z`@CJrO@V zhQZ#M#qWqEE`=oW@}D`;vuVH^5M-(D*;B~9$5x=001pfwYfS-p%DbY2{L{yxM5jF? z-OW<}d_2~JJtfK0iDNY3(F9CORzF}X3ls=`=NT3eLzE>A>IJ5EQVl2+7J7{zlz^#C z1uDU5&OTg7KL|%iKYx-nrpI9sO2F|%v#g+5mKuYo^8XxxumyjPrOZ;0WCq!+RGumP z(qSRR)Py0z%V7~Vis`9IKL<}Cw{s!Nm1o$W@X-uehsc&dJ8Mu8tf2@1;Ax>HJmMPU z4SpQ)lB5AL|MCpS<|+y*!n}h1L!cq1sF3dWiy=LPcr^7-W=ZK>`(tiAM~oV6ii2}R)56>wDQs$rUE&(S=?HQ&W3sAm2UYy zQ1FqdqiI%)Q=puf*=Z%QTQ+FOi?)hb8BBmM6@mp=K0%N5%xS-3)I0XKY6RN{NqY{f z%`I4xk^PD{iADCap23~$@h8r#h{&lQiJASOJNoR&gWJNMAS~LVr;Hn(5g+CO#y1;j z<>poJgPim+@|w2c0`(<{ax{4o1mvp}WpcWKM}d3pI#?Jfcw?lX5hooGhD)K*i@MoeZ0X)DN*is+XujpK>P<3TP#=;50h6hyHjA49g z+kt{eZ%R}|wo08hWv8YXwy1e?f}%F-TBkL+6_FLpl3CkDDO7tR(k#_a7*z=)aEdaK z25A+aBGRG=2mO#94$K%*dqLzw-KNjkB2IfD*-?cBYf7f1ea@!0co@;gL1lvCA_@9=lx}i?jx?eh}BmuRjyT5#EPE4C9wBlxwyNOZ!Xm zp3jA)Ye|{&i$I>XFOk17u~nQ))ydPoMrP+~`QF#!uef~h zJ(6%-E&sMl49cy>>JA~2WD~&2X0RSq%Z&|IJK6pl>~F7^pZ*{c@{w-@rC)p{&nlBy z-->0pfACw;T~&UBtp5&)WUJ-r--%<3suh{~z~}xm`C7JKST4%;uRhiJOu4+XRVe@UU!<>LG&KUe zn}6{!Tq?DF;#nWRTla}&Au=&#Kw=Eflo!5gJ4N8t(H>^BwDPN4;vOy)fa~46cd_ZwhsJ} z$cn5;K3P?pD3p}39IKO@V_HNrJ5B3ITn-?(GPx;eovB)m%TWSpEgzE$gf$X{-xWx1 z`Is!S_|wxZYYrZEi{LodYI#b;>g}Ys1bM*;*TMY(LE#FyECbHEYWYwG_v6QqbrgP$ z$g~cvtR~yr@Q6*RuwV-MKl|FEJXu&D{Lj7y2y-%#EVEUI@GBIyDi3&g;{gxTx~|B~ zYNL4{PpEHE#5&9$kzf{&2)H;V=VV!b%%^cY0Q~H1t1G0@;B2dh)}RE=ciEipl?Bd` zQHuo5S5d26-uNGp8-$_)X2y_TpOqRG;Ki}zV>#A5?QuCQ7inUd8sqYzTu@uJ%*eAm z0)7H@U7v4thLWSjNbN^p6V@ga8%owG?54rLT>LALZ|7TI7SPWEa#dk*S3)#TujRW1 z$a9(}gN4@69P(E}l^GW4hzl}O*2%%O*0KuheME?@pyJpkKvk?LwoVVCR}oE4F0zUW+V0fA66;)i_tz3+Sk05)mRM7R1>B{{rB)N301!tG zDYM=R5;7EE+(5oOq8ulptp5U~S(Vlkg}zj9c;XAh>@eX%k)1rhv-Q0Zx`ziK=F@VaNtPiR9itgqN_Es zfX5}h7To8{`?^|#k;sYnILlvpLLQ#q-?F9C4dc8+p4p8Ls(!JXbuxa{b_Y}Jkh8jD z1b4{o-K`jTN^xxA2(VF9=J&8Z#dt;ffcA2GTE|xBVYLiKq5mxUFQ5M7H8bKceQufC z(;AK1w)C{%Sag zO~JFI=x+@)5OT!=13Cn6=+L2}AouH;a_k^$7CwA^kaas{j5aAu0!sm`T`BwV4w*RA zD#82P4y81~$#sWX&uGw+E_1D0g2dc;GH;00fI|auOI@IUZ3%*cFE6B1q;}MjX#sddRnqu=)wcO`e=sWR-PI=fxmao75crw?8`ZNXed4M_JQN*aM^T z#$iZ1zH5|qs1{0g9c=|Q3{CGNtsb;<40PLXj)$K{4qEZ-Gn_L$j>F7 zua=X?S%oInlZd+*1`#U9S!0ZjVMB&TS|`cFkG6i4O~+YPc}<^f3gB2pvZK<<42N9x zkl!AMjKj6^wBxM?eTgm?9&gsYxA})4W!mlbW3XKI-4h(?-`}|>NNK?FysNZ-4A!Xo zn@t1(tdnb3>2r~4ao}HdI$Y-Szv_E2qT5&NjaqWntNIm0E5B^k?=-osoY(Xtk~{vb z-==GQl2>ohpUu>|$r0Od{5mprZ^Jh`k`9593tslw5*BF)ho>lU+HO8SCSI6Z@A4me4%bj8x``FM~yBM(oQjI`*!VJPs4Z$Hbn|@ z7vxU%%+$5*PyDB{YMs$Z+agD;GrDT`%PZCyy|h*GZ|jUvxcsutD94EgWl5u~{7YJV zz*tX<5F9&#A2nnK!p_O)7I}0MQ}L{4(VcQ&c1hA0tgV#qC5>T~t6_&E;|0Fr1D#3N z#Kt+p-3&|ZDmi$)(G3kvUvFHbD@?^@=3_?oe&`zYm@x;52;X?j_=C8Enkitc$x)9R z87O+}<3^Qu?rDFlD&^wGjd!&B^gNMg_~=jPuD`zmSJN1K-u>^7Lnn&f4e6Tb?mawbS{=krgi+ zwc@Ic0J&UV@V?O?tKKy-le1q2@1+-v%a>j;u1tU8$n#${68c?wa@VWIA+2~f9)-NE zfqCvy61%z!w*2@l;{y5mYsMD(VD;o> zI8MUnr#?r)ZT1d=vJi-UsLbps8{RZdYM;m3++lixEs^{Wh=~cg3qIzr&rN;3=1t>6 zzlCaQ0U1d@q%v-27!RSZBQyfF;ca8Qraz>hBivYW<2y!!{*`)? z#FIa3_M&D$MklMMAcI0N=zXJJzjLFU_P&9`59M9&Lmu>zufA{e6DyifK8Nt#UcMSN ziKHQGy2%eeG;De02S)9$)cB#%MPJY)&;QV%gU9_(O7(pk<+Gk zk5R}H#xZgN*2(VkAIYX2Mlb!rkL3?LjN?H1N9{CD)9}&5pBrC*DVKd=+#KD_gyJ@U zQjg7a|I;jod}$n8%G~7cVG?vp;B&HIPCgWeV|*kZ`qCJneI&aUn3ejfW_e+rStvJu zW#q{|Ul|c}Z0J|UAJboy&Y9xHZn>5x_y^%F_A^?H#|S^By>uyNt4j@ zZ;ZqAy`RYBH%4!KiKzoAxk}6`8T-~a48r#GZ;jsJmCzlC))=*W!wR)I^7U_xlUjW< z`8(t2@<+Aspv)lwa<|Zeh`xd68Hqik_v-T1?~Fbkf!50AZ@32lhbJN-AAjG-2TbSh zHogMXC;!KonRO>IU=}KQ9s>FSx${3p>3}cNGO)wFLjJfG>GnIfa`5*?S)%RYP~Ul~ zYWr>5PyKK9zowP0QJ%dtz&g5q@w8%X+)C{S<0yUkHaYGGqei?*sKD}!I2foi<;ow7 z9N@oYID5*SKN#)xb)U$bJrE`v<%xTYDImZNd%&ol%bk0SdR&TrGSqY!#!uwS zKO1-At8@0U+@Gf|YxWv7c=+aCqXDd7{?{lnx@^(iLNLwZPlSzLk`iJ z)WdSbmX-nMFt7r|W@~!5=WN*mtdd{P*dAi$DI6HoV^8Q&Q9v zQOItYI0|file{t$Cs?I3;%Av=-^jhJu=IsX$$jo)Ssyk#`_gq*rrBOz6K)ace-E2= zsd+28Cv4tE8uZOsW|5Y)k4T7&7K)pa**MZn3HJi&d;r#8`;L)090LJ^t%1EFe3oY# z`Ip*O* zH{lV4Ydr*HS*Ck~`UR??kO=bWXy+g#I@7(IUxbTVFqnqSfV^;|QQC%_$(NqkyFAxC zL|^=oT$gM1vyo#OB4o}-a!;-aVwD~8%u0~=&^#RchG`BWmquh|o=KDGmOS&RY?9Yx z=m#1>6d%ZY^3Azz2x*eVR~MMC>8o{lT%kF!=spduXvjwRhe%;nL=V05#X_@p_@(VY zMzJSlc>=@4bY6%SZZ1)gDeo#UyU2eQnbk-B^aEol4!q=2g*o72$_kRAr*v%m-cvcK z*zDF?$ouo>j5JcbiOx!Wu*59ZSL*VG67!KPbO%G>6NQ{xY97I|0yt^WOY&rOnR$)< zBiHz?hGcHJIY^7HyTA%1^qD$x+G_Y0l@lt=L*%6Qg(+o)d4gOv4y)pCE6hc$ zls!j2SY>w5uewHl(*YRCssr^8Ocpxkv#pBNYWy9j@&P=0l2h!_(!!l2b$H`_GXo~PF~R7tjuUnI$H** zn6kY&4f&GH4(6$JK=Q^0vp^1V&0Kj?2WCi~PM;iZmTOgVa|g4^1Gy`(8t-U!Ev=x% z%XsWyL;^;owPIK;w=NcxTicmawC-|qM{|O{OqZQ&%;m_Tzq!UNvhSS@*vbIg*EOKf zCQW`-Z=MLpxV)s+?3ROIzlOjTjg$xk)gn4tK2&8^>sS3*epqV`>e4;aOKI-Rsm7sHWjAnL`ZZ5L9TuDqwUSj>Y?2uBt=-KbJ4o!5#a#{JhSrsRr8wVCu+p zKT=;iUVRM|dO<2oG4jmz>11LRAkXLo4B_Z)I8lVXqjDWnkztk=muH(=9(8V=Gcc@RWr zv!V<12<#Ej&^_JT$IjJfIXNdnk$hKGnafqW2xF8Rs>~vBBf(cB8(g!)c=!p4=Se|K zaV3SdKspb>VeIc=*``Whg9a_()Wk+PvwPEmb3BFap$>q7E$CT&^wGFSOxpg8zVior%t z02#MLSo=C!;oynPmI3cWMvcQgD;c-hW0xS3m5pRUkn=$4*-CsKu3E=-l4Q;;r=l|v zi6+OuKOQV>6{N&bpB}M304MsR3?&DGokBHDKN$-hd zFg}5|&?Mk4Tl8frcCD*PSjlSPnpA-+CtA2xVnb|ONJAoi?XVjp#?dM%4m^qr!@Q^^ zDUJ?hDsAX&rV<^_pRq%YaPC{sADPP3=5fG~fsE}p{B;12Q%UKKz4Ehomo0C}Vd-*d zBe2m5gK!Lq`1V5V0O2pLw;C3~yC&eC1ss$`KLXx@o_8w4uw#=8o!rvT0fXIOD_=|k z5J%mzly7g-w? zfmWbzgV1vnhO!_>Tq|(}5vrcQIL@D6G>rOdqI19zr;A1_uIf;t(URQRFsplt?-My>`E`iG>(w7`ln^&U!P3LEP-v$v2rr+WOLVjw z9MLo!+x5e-0|zc_WMh|t6U4ep|D>_sShndVr{6Nw9jH6~V}U3)&IxkCb!$1U!MByZ z3(-$a--wPYDEL#)i3M0V$2;!<#yY#c2e_TS58V*Rj)p)&Yjgx76ODNh{fr&AX515l z$k>I>8+l}1XB0!j#XxD`vwysihh-O2+E_S^(J?tqTvG>ZeG4-SIn(9LB<#1tH&aC!LTA1l3z5g1!zp*7NlU4O_0AJ;)X zX>p#?Wmp&ns`3bILE`&um?UltRg#nRi$ghMF%F0B-4eu-;~_i9C5yNtmhX~Eh9-&E zYd_r4l77rnk`m(akst>q)o^j$DC8`Gxd4o0oZ_JLeB}^EA>ZUH@tE^hyDJCFc!e$5 zk>s%J_Y%fB^sU=1ajhA2W+c+~)l?vT{acja2(%p}BhENV9EpQ0aWG`LZ^O2JaDiv1 zTJu{1zoF-{RM-#d-I7E{dMYicy04OM-E zufaaW&<&?od63d*OBJLkyB|#4OZ0m` zWveP8)9wA0KH%e-{>ld-O~Y%b*Ffbe7?0k8$|%@kPYlGU_e(lEP`Nhj*QGp_Ok)Qr z8Cta7zhHMCtsA6t>cXO^VigtpUDc#WHuUdUal~((qRHdpIu6z?$VfUrNXf)VI&QEs zmMyPYgVDeFEiahAS37kFrM+v1D6OLfPfVPrJBKLk)Pu0s^Z^Jg_Y5tD?XI&})1$wKD9JG7 zlM9r8gM}XyD97;aDp+;xsc%;_gI9+ttz-2K`h4gYZAkA}@#&dn!De9l;GFXWjPHNj zejv!_qRtt&9H5!;j$yvnm3vo~O=LSkzpV>eB|&U)M%TywtTXhkQ*@GG3@XFQ>ohPL zT{Lo-axZH2r(sHRl)i;PKfA04+7D9daAi>*w5$dVrrW^WbH<=U(=9W@fzC+v_pmW+ zi!>DuIy+qX6|~f7U4LDC;%FoNvTTWLmzM=9A2t*ZX7QHo6p z3{K#@Gv59zbQ+uSkuKE{i7GPcFovERqr4tyd)u#3oRI$4u2GgpgXj2i4HDwo(i=-t znmJa<3AE|k$13^lZ~+sV8nm>2z?pZMSa_SJep+3&cckyfDnqRw?!(mEM5Pmzk5i&W z^GX>H34VN>a+UnbKB^n9r12#7VMqkVC`OwCMvisqLq}-(cqId0`n`3$k}YDtH(r^L zb{WGLT@?D^%yK`Ao!uB{1RPi*a!B@5GEJJGWLs|ssk#Zukg%UW=SEE*kHZYq)8mz9 zCZfqSaH2A;{e76y;I5p%>gP&MapFp(XpjXk(F*s){)prqcl*dcue01H^^~=pZ6hUGum zwGyL7d`rH`Y^95OXdlL)kr*TA&sJt&t$f>To z_f;#q**Rg3k`ep8ZsVN8U>&wX1KAyOl*E=l;|fHy++?Mne2qUioxfB6`Wz*i+AUIY zMHT;bv(nMd`WkxC>RM`yfa%&>uuibfr=-x^iUetqj{ z&(%s_s#vUS3e*U^`p|$S3a`@W6dzim^bK(GrzJ{f7KP?Zl~h`~NKrSv7}0`dJUACV zKh~H=r2EpgWlAnRvKT70hWH8&|^10Rcg=q6XUc2QusuAE`gZV($ELTQKuhL!1 zm20qk{Nr+LF88;&^{c`4!dn!c{|D3Ng=D@d^+wEZP7_xs%L1~j*Ff@0Wr#s6lMXLY zx&~_Cjg?9l@OH~8O!exi^{3^lFe{~drP8_;N^@$pT1jX`@ZLtXFrSLn==uS9?N5)a z`G@j;vPS9TFK^R(b(6JDsz{-fjY_WiKJUih`NNWpiU$+gFKk3J0=%$E`9+d8QpR%< zNt^0ld`=3JrOkBesI*nOjmnQn*GjlY;+S+p^HfMbmaCyx<16f`6nQ(QqEhL=acPgV zfyz!`9?!X5`Atf#@47>=g^d(nKXr)@VY?c>nR?|XiyOX8+wgtkhL6-5-&LhoUX^a4 zygg{2uTc3Or8`);dk<8=WxBXWX$#M=y_k}Qj&^jc0@&j25ee@^j60tr>RE35*8DjrYeJ+Iu2u(QuAyipCH1C2b2 z6n4_AqZp=ar4vV$RDf@fDgz9%X*A;)4A)Dv;g~X7cr`nY>C%T~$~cbvT%r-j^-Rn> zuC#}14f0|jjzDhyIIeWo^EyT3RZq3zgh8S1gic}a37x|66H5CC<_DB8mbxVSR{Hsb zGBUuTrG6Hby#UkSNw>X#nb%A7!wbrd0P|i{W&?ci68IMWl9GaQWV{5v?W9RBDa(uy z_Z2J|@iM}k^v26Lu8d8bCzbJVc}^h zcAL?UU>3#AM&m{OLVVY0+;S^nE7@DGC|&rYAK^tz^RWI^4ky`PRnm3e0`}#alI%Na z^s7oCsP21JIo;OD1Mt)OIcU6`wd(Up1|q7!&%h(Ef%n_!)7O-tS7hN4W_g_Fa(NTHo_s zs69CEI<2JXmDibB3Im?G{~kQ0i)4Kda-rv?4Gnk?LYGG~-UI8Lbklpva)hX7^mIC( z!2;J#8hS==75AP&WG9_EgFGX-_mP~FdNSBXCGTTJ%t;&G$54GI?R{Ta3Rl;&a5-tn zS)C8{XEC_kNgth679zsr50q}XdZnJi!AWE>Rep;vP{PS-td$|J?DK*MI?2lvvTL6n zw3QBhpyYw@FCQT7os{??7S){e;D>sKUjGouY@^>k1fRE2>PJ{Tx^&;nkFb#2k;={~ z15vt%&nb@q6o0I&0Qll#g-^+h`$PwaKEd*jlRBP9c`nkp^Lk@ma9$Y<&%=i2*M?_{ z3(9t=uZJ%vbD-0x-Dl_*omBRj(m9dkJCf((HQ2EjgWw8^LC8LTZj@_b|7Yk?F4b$F zE8{rkjEl;4A1@f=1d2X8@&6d|tOhUGV%E*LClXWrop`zf=9qE!rPUFqX9QzUKQtE5 zap|0Wp8gs2CoU;%GC9w~3&Yjg@%DK%;|t82&a0pQg_3V|+#b_3OkV_)m+(g}c`;DN!XS2}eQUw&Sqe|_ zCsCiT!kUo!y)sGFKT0aQdQjQ-O1rL32gb;0mh@bUgeDJ-CcAPgc*nB^Rv6aIE&64( zu*7g#gOwitUP;MK2M&fc=sBamEP|)2!(jtYDIs zEgZe2VLBB4Jcp@0l-!h;dYb98Jbce2=DV?q5XEUDTd-Zj`3^uHUh|Q||5gw=q6H=X zsKooQ2*7#fdvm}`J=si7E}bvuhi{sk#TmjiIxe&kndd(6($#<02M-GMx=Lq=8CBNU z$oTZIoMe_#>Iu9vYws8?xxQu7SvbsJrU zIxF~UYm|!*w&8fas}G-VlU>gPo$q5YJ`7?;QS6L!v|wjTy?*r> z68)HV7iMBI-_L~G>&^T`;rL5l2r$w#B_~z(kh24`D@Fw+; zASRr<(I}gYk7#fkb~Hr`=6NDaD?vf={Q}|qUW@Ybz3uS@2@fT=<|dz@H+d`$-iOoB zSf@$F_HIx?6U7t{+I>8K?jRm3L#(kd^Tun#`fcv?`Y%eHk3UH!Zs}~jjMtNK1cONe zmy3szpuIvux>}0SxG-6lW5EOfR&Okr!9xWY*VEV>vAGr|-7?n_4bUvtiWX<^+>!vq zcF@Lt1{mqt7bW3#Xdf337f~C_V9-&jzP%uzR2nrpzv#uF*>D{gvcxvV|Ftan^qZy{ zgb6xZ)RHbtys#^>t=DR>Ea}s;%!Gz$hF}EfTqz5B!`E9xSTi4zW_gDov*`0=uSv%k zZGsDEP!)+V&Bk)W#b5%4E^d@%p>B2Y=MKauBGiy8x`NZsX=vK6C@4j~qRD~^N99@4 zb1V_iFM7+3*K^7GRZm3Zg|!mqggJ3tTBz z=*3@^w#dZQQapbH51;V~@Df{epkmSBxTCkYQXoN091e^q^a%v(wcO1iUuYdNWF8{V zH(&sZdq)2hD<+p=j9c_i$p(V?rXhU>7Qr(b!g2ntDQ*`*>*MCb7p%HY^LNw}?S1{` z7j%VgG5M_@Hp}#Wgv~1MPt4H2AVqb9Y_U8r6q)e9H5~Gs2e>}G>71gW9&Gk zlQamu_c!L53)O^Hrww0(BM#5#h0Krj&o`f=VMS_!^};*P(c&UCTVI3GcTfGhNag9) z47cjRV%8S7T4Og&bm{AC)O?1m3g)uA2J0~!X4vkQpO(qJ5lb}%h58BBvO?Qxg#S=z zdk)~qBHJ#2iEi5locp}w)=$2M7317i3f)tTQ*bGymf+}QN_}35ZIUD{qYWP0uQ&#; zVcA*3EGJgzQG1w3+U~V|Oy4&NtAovcb68l3)P!xo7`kx=&c(@USTPO?)|aX{ZI1M8 zO~XzDoNF4!^8^{q!aCEUQrp`YOI$P4HVa;dX5xr6WLQg@*rvoA_OgDVpT3VlN7BI7GZnVZGOn}@n`NtR zi>#bw1JGc^VSYvNjxt2)HqOH7@ga0*mhGo#E?rZ!4y3_7990OloX8F(=ljA5*F6R4q4Y& zoR>B^mdWt^0G?s^;0NnSi|Zq}6zZ^FP7U9PD=>xl(^t>SucJ869+g)D3^^tr5IelL zKcOU2>T%ggtxw7a5cuv%`3%6LugEus9Xo`Hz*y38CcX-sBj4a$=6Y)WEe_r)H2hoJ z3h66)>suV@TeX_3-{FMmddmOK)*XSh-`NV}{r{n7zq9pOa)`dmHcfoAJG^Qo5C1{vI-Wiq`#T>%@x_D&G;!ixXXcu+_z#I>>tG zsNWlbxF5m3f!_SVw%&-^F8r{u=7}4|T%oB9qllku1^+;*zVatqPc*{%2Y$A-l-eAF z9&%m$jTf$=agW2Lk9sjkvbUmx7i<$u%PPx1wJnmQTkGY|ZDkUsd1qY&U$Ag;`$e1w z{$AR033{WBc3!gO`PWGzn^DqMV3|E~bNqpSuFb204 zG%=`XzS_>>`tt50hzXfv+Z7*CYE9K&*i!zHV3m2J1;x3DSsm$A zn}s(kGETK?^j({q5T5T4)`1F7*tS5||9rxBYs?l|?(1m6Ltf}&TnmW3d53A+3%K&2JH7ORt$#RJ z7-;mZUbOWOEHHUqwDB=L{Q$?M7j4mq^4E(tmuVKCmxX!jPCCs!Z|jei{N#DPC4YC` zmZxz;ctVn7A1yv_OQ-NJZB66X<6H+DCa{BG)^m{+W4WW-m$rUT0oQ(MYZcBB_3GTd z+o%Y6_hs5O-4-hcnHtgOE}J;d_lGsBq7yj4J1`lH*LP>4V^}5WUk8%yAv~?@iTMYh zwb!vElLs}wY|9B$!tl$s#bAfNHv7?6ILrL|Wt%fxC`_<1hI&1UC4_6fvUTLW=+}Q` z(^o61zP5Fs17F$vs}(VX$m@8u0s$qw_x{bV!F55062C!9eexUX2`DAd^^Id8or9b-Dp9Go^+b8S){7%esd-Oa8`e{V&|^|q$3Rg1CsNoeG7dS@J_T3u zETBtD*zgv5TR^Mewy^bgPLftesm_KoAS8sl1^phS_5g?H{EpS{p)J&!s{~WPT>pU% zRFpo?;9&KkmwMatN9geHO%mjze~}ceULhpb9V?%wkMqS=iKQn@DvN$v1i&X~(aCbe3vu3x>Z!!Uy)(^8{v;TEX z^6AbvRc#x{yU4SCl2y<18k$k4wzclq_&lADQ(b`rvRzuLMd(V`wN#U_XKG(dH3i`9 zmTLcC(U)J?Mx)}@HenZaU0&a+SnVoFU(?_cwYT&=gA{tOM7>M;zJ9nz?Iue<&<&;P zjA$IW#+75RmoTc~D{Zc||4@IqR85kk@2Gj1+MOcG)DDr&zP`hXZe;1w!c?ZU$1(l`USVDS=Rc;HmXgv`s3Tx zYvp>^o$7Nz-9!HIojlR?8B`&zU*b?ePxt zE}Un)70&W5tXWu7>zz%~z3LYF@vJ(mUH|HNRVC$>6RK+wv43@SWp!!kXz$$eYR?33 zNzYWuxL1v)_UF~;xY2W~=Tz6YD+NRp@7x;loCjOio>w#Ih4X56n|scjxz+Q%lypHo zL@D>6kmEm7r`M1ATpc7evG7BaSE(;ptK73GYQNg9{?2{soia)5)zW%;Ox+^IjO*Tg zh`Xk2;DXw@S;+SM*iws)vJF3@z!`ts;fNnkritFv^p!^ z@OD@Bt6tC(ghXC@*Drrs9WT@22i3azwR_YA*~Z12m)E=gzK7JsGVPj+Ql#utr%~=2 z)fql+uGd{NZ|*|J=;~U^-K}<}ZoAb!R&UjOn!Q_fQTkc6C$&1QuAz}1sNI^4o#Uv-{+v(PqNN)X3~v^)R-KwqF-fo$*hs{W*2+s7F4-QYRl()2hVkvc>R?P4i;2- zybBCL@Rw!(A+?i@Hh&D>ynjr6nYzBGcC5emxO!IQN}Ltn&t2)RD)H7h2F>+){SLi~ z_rHc_vFA1QYjUfMZVEnwb6(^sFWPGondbv=g$BwIisGV zE}yIIo4{K8`v`5jsCG#HWwG6Y8BEKOadyiHz!msu_yzpw+(q@BUWaS!@C`hU8|@Y; z;Is@4vs)tl?qJ+h`r(p#w;Vs6wtk@|GJNU_^-1Y)ef5{>bzxA5pMR%1eRub=TNFQq zt*Zj>?DZ?$vOi3KT5M7Y^E=eljq%Ii=2Gw@a=8&D74+N8vs=QAV9OTxqXqhOXEq!T zf55ob0V31!-p22L6W#@(Q`gunHu&EHzo90`sKZS0|2JKvzt9vx5N1N561*OzAB!-- z>sR1TGP%EodokO!Icl_T*P1{* z3rd!tSZaWcAhc6(b z5hkCv-Bc8-#rd8xCB%eZ2ceFDcLF*A#{(7s_6KYM$WPA^flNErHWn|zR0GraUjTej z>!X2h4FvicYJvSk$$mj%LI#s&1?2515K={CoZL(BznlHd98IXy6=TQqR zdb;TL8Wzai{3U?|zHOXSi@GjQog6g*88C=gENfqA%mup%_d(F)!U*^n+#GK*;!o$M zlZ+QkT{h^AC*kf3_a^)VN6MxLG8Vo*kYS)$y1*^)*!?r&8~viil7%qw&SBHwHfsal zA3zo?tqdYm8|1dOwOg7o6+FSXi-K@ZjSSFThA?xYn*+GM2DZHI7tm!cqjYb(4ME9D zv|A=4LBT!|E~-u73HSsu*$?=?0QLeD_{-qVfO`~Rc7s3oF90QCm=2Y$@j)4=0|gue`A_7BFl`~3x8OLns+z1?TGv=Vx5^y?gU%MhS#fiN`(EKjjpIsuArk3!sSl$K^)>947JQ|&(#dX}ZAs}mruRk9F*Q{DDyJ=UZ*0Mtg)XP8> zod?Ig?7qzos{2Bq{u+deq4}I zMlOm^nJ5cl-GFM=*XG_Y4`HI*r$fXY7?dmUWptd@(iepKSx38tb@d59d;l;J?i&Hw zym%gDW&kF^T?DuZ?sULvz!bmsT|p6^ zGPy-v#{pk(`miaS37$5&1 zg?GVh(PFQHpXe|(B*d*kJpTTz<4Fo|K@_4TaAO4`pul}A1a6lgx`wQzoehE79jGFU zOnoriHeCwSE`&fIiC}YE2%vYo90Gj`&;{q2y2$j8A#i5_S6Gyc>u+X%hCsa@s6qe& zsKv_GE7`UTs4>71Y&5rptq5z)@$rO*i2G&41SM=Cif^kONWW6*3xd@TX4Qe*rvXReernETD*sgXG1jzC709pA)19kv>qm$9eJ`4z@ z>$A+qOCAEc1NH>`3wdKJU=?63U^Sp<5Q~v1VT1+S#{+H;=siT!pPPU$EX!#K7yRJB zS{>i7!$rUmmbF0<%n1suyaD(^0CorAAAnon2}6B5@VQ~|bCSc&eaN5i5QuDl z@bic%LU6YdvprBE!IkI#3w|3Dz8JLn-bDlb-EYLC??Ws{^)%7|JaAFZlBjCQ8|(!WfG& zoeKDi-XduhEJk*G1>yq$GZ4roA3vcIWdDo673>z;x+nZ5AWUR@Biw`FjsxUD;1}KO zmM(z&m^ zUc9sE_6TUOA>!xbP|GoRjE6_-Ov8ei2gqZFHvqBDED$Xc2)N@8Te0_Z}z?N0?*$v9?wcJpI44Tsx^+;GKkGdd2Tj3T>DKg8b z%dNm?UVH_Z?5EKhVS=$&WcJR+nM=-sw2K7SzS=lYH6d4kD68BqfW7?*EyKHLPRgOi zaW|XdGWu%ZioR?I!bCxIi+Qiv1IT9U?Lbi2NfY74*+xGhhOeU2JCDSeD|rYX2q?nE z?7&up4}(9CMt!Mxc>;)i0J(W_9f@J;kA8n|kiQrfa(g!8J9CU-Ez3Xqi{WN4ec=!K zK0RTPfCvaq;DJ0t3krYkZn;0W5&m3&hsGN!ScG%wIXoNT!vTf=6u-Yn$C-or?+;Ir z<5~Fzq0xXm12hOwmk$(&OSAxP9^S14WGk2exvzN8?|vGPd$U&nxz!3zo`-ud+?)Yj zIC~kk!vPx8TDo9BOL)-S?4tI9O|mizrX z;e9RMS>kyb;eNa`w^-jF^5ZbakM*`^>Ity9^fm%GG1g(92O-_!{aqkzwu;3wM%Kf~dZdefgAE;7&I`9}Ea-w{5qH|_l$;i3>6-pdH@ z{s+RB_oiuoAY2rN!(B%B7aV?nZwmht;i6C+KF|oi{ZE7+>rDqZT$GK&3po5L8uXW% zB7feSD*sX^_4@B5_=z4GNKi1Qi4kPk2Afs*i0E^cZ>p$Os^4UC56eQK>T3ytB;XH7CGpA<3(Eg(DIoz9+=9#Iqy+Vj24n<`x3HDP)C?ySD&a~0CE-$p>1y_hxJLSo)*UWC*tpI@C1zfCQ1+NQ^q>Sp zK~^CHqJd=rU-;_=fH?uteAgj@5W3;!2tf&mCcP8*Vg};B;fqX&bq&4zherfP5+VTU zSj=@7Sl9^6YctN1NLUE08Gj%Ag=!G9ZjApD{J9I|=fEE59+4yVI2**uGeG8^gC8I_ z!o6(56*KX|1PX=&T*kUb8$j;0E`hESu#L-Sc+??a2t52V)s}N`4}|*})CbR)3ilzn zbKn;JYTtgwl0Y*2xK2gC8ti|nzcG{gEg+{OX2^%rV=-ESZ{J{Jl=Uqj2aAdIBEMTq z%-0PuCU74HWIHq$X$lGGSYW6FAzJ3SluU%Fz~{#-ZGPNnOLrg$oyACE4bP0s{`?F9 zF6(EJka?oUECJ@Y0(TPPnj5&ND5h&(T=mCgwgwXNBC=5G?5`)LYq5@@(y9i!kU&QF z>&Mhb0?kikYu-OnP76iZ2Xr&H{zpdE1!ZJYfxg}lGSfSPaQ{_6eOqdA-GZ}m0C@el zRCwB;#}=)G-JORT^pEbpvZPtS73!OD`wXSSpkI741a5`j5)fSK?00j#8oamT7d&s7 z;u=1f9YeV2aM{n_kDWE43bJYI#d)5{^q zz64xhad2k+xV|4l;Jyi5)?Xs`&zRCVk9Rh5`T5fn*YL4eB8N3@Ip(dwoJGQkaElr+_l@C3WRa%j@8QPu;YWZD_#OgG0$dKrGdp>JBLKeuy^(-V0cHZO z83x_h6)(l`NCR{MazuX2>-5TFjr+eWxJ4!nY^?F4hY@YDXHd8qU&Pb(2;N7q;0H&Vffw2?}jF9r&WZJZTDN{0n}!p1$aw%>AOdzw~cZ;dmCYpXBC| zMz6wt=6Kh_Uv%m>BLhO_*5W;$k@1Y4($GKp8Wxbh1OhK>^#_4&I$C4G<_w(zu4qml z;+@s)Za^{18Y| zXguGV!Z}UVG!-fmx&ipYunL|kO*P>wVr~3pL=gRNx(R_37-DjZ5%<7xfd(cFq|Web z%@Od}@h%wN9`Br)zGLl{F@PHYd8+JFz|NvE<-;LbtRR>OKc4R5Cl2o-@dUhcN#8}L z`{<#KC+kK0XAmy*+5>nO@gK%JtDp6NK2AV13bC(|?N@GO!oN8t^0=|A$IskYg8gp- zUT5Hli9Zp(1Ae-~o@n%KeF2BS5B79o!?b)IJcSS;%(4S+V==wszJCW)n2@2n5iB^& z=zjC$Fi-`GfKLKdR4$|XEzTE0pdJCLo>RudW6H#-5a`E%E@Y0;jZCDS4uN{bc05Fl z(3_z5TnKbAH6Y3$HcN3TUm~huf@6`#6qm#JiI@~nyzGvH+uz#1HK8-2LL_{$Ro4mfN6lGfb9TN0maOF$`nJa;BC41OrXZt9e+S)l#q7z z!ki%@2$@d@f+#D84KcZee;)8fhcX)B=8D>9!WUY@1$<#^KBb47(m!R2Aga*R$y3vQ=5`k>kO#>92`#}T>P6%tI4t{Ls@iPPO z++z9BMbdb+%!0q5A>wh+QuvFuWFF=F)*?XUUJ&XBKe1gm3Gbq*i2akFfQ@}Xv74<%Az< z9Crb51qWjgCaM(aTe>vh`s?2ZWT6a$31>ARb5tzS{g+JiG~tQ{I(~-HRS5$n0d8Ib z(8D=>5%Ay=Lz@3U0uK0}25b+w7H~MAP`)J~&=>B3_;E`RmP)XHk=szNc0j*!)vIAw zk>Tb!lzu!;{}vuxZvs)&n?Mw^8bGn^0x=~QX67q_YhFc(*S;jyeI@}Jy3<+ zYofX=1nSE{RK+H!wIOg%2a)v;Za0TO{T-<0-Xo&e7@O|^u4v^#?ff5%Zj(dK{dRmj zL=L(Iq52D!b|3_9ci@_9VKCh7jTx4sAu?QnV4)|Oz5c@a-U>mw2DsedMPbd;Q%g*A z&W4D)0^w|xg^GI{!o+;y1tX7BIWG;*JwRaX5Gr!SKO`(7??<>8w(5TVy{bQk$Yecm z&0^`_ht~1W5V%KxE6hx$E9%5NWD@y(4Y)$ZGVc3ur_#ss)tC-P8>=P`wUz|f!S3i1 zecB@}+=MGACj(dLV8-nVcRRyak1?Th(Egc*VO9;;5AH62{Q*BJHTsx3z)^4~15N>4 z1jr5VN3StpeHE}H+?xSeNu>jFHLU?;3Hruk(0>H5FK>eCj+a6NYy;#)l4L+0B8LHT zA94tJW#zLBkO>Y4N)-oAEBHO@wE{k5?H4z0p2+ z4Dd&Yz`Mw)xdd_W7xig2$;=rL1?W1a3S67VIY!<^QwvB`MZ1Vk4g3m&&;VU7j+_pLFSW)UE3L}6v& z)v~EJP;Kn?n@am$4lqxsiU)xz#_%T8r$V3}2u<~H2-FvWDyq;#^@R|qZ-quZ6$166 zAk;5v^-j)rIt1=-z-6r@%J~J{VytGKb3Yd%Zq&Sgwpn(8j_B?$A}&g4*c~FFR7B>4 zgxhTJm?QT+8IVSSn~S(1Dq|N=1&V+LAyIwz2cf=xgE5}I127A@8VfiSup3|pz)!C? zHWnQR%$(mifyr<)BOeE3jbgvf$f%$*1#XU457-q@_+NmVGiK071HKap z@Jz#0KsHs178%2qB7Zv(Ype*eyn-;%6{Wt?xRFnSTQHk(`FR`oLad7rF1kw&yPxre z0ud3-$6Qr(NokCUC)B`xI>NJ!;6~k-IbH^EL@#1i{^Q}#1<}(N0q2lgu4BQfpMb<_ z>;fQL4c{UA+>?lbU^@&L`@+2xKT&`}_z7{Ze6?|jm%%OY5XDly1Rc2OErONt<{)JA zxyT&|6QyE82TZs^uUEP}#AKrtK^a0w8*AfnK#SCsnF zUy_1@|6b|bU(!$XLaw$uDZ;y;wr~zk`qvhgc^5Rbv$LkQdaiq>w{UKCb!{_>%GX*- z;S6G8YP_`(%^9V*(ml(YS(urf(_9Z}QsuoaGJ!VaY0;ammQ~5Vsh1pI9MwW6=dSV; zS1%|mubN*y%iE%DV?SJ`fFtaMwO;pJPxWeok?Eeo0A*Ba6~EXtA`ohZY%C znw#&<$Sch$F7cEUmw1bl=(9p?s+3F_J+`&_Ij1Gknx0yk z+@Yu8c&n$Dh})DMy|gwI*-NuaSMhrnIdw9Jr%_QKEsPfT(mF|Lbbl{xj@&6Ipmhs( zMqWv=w>T#wJv}GGTawi|7=sS=2H`H0(MKCYjy`zr%I|Keo8ffr?MuP47BJb%m z(xY8P&$_gpbg(Z%GXkNVT4Xx&QRp0xH@7suG%qtZ(-cT6T%hl4h(BD;GKX&M4`SJ7 zpTF2A$K=z(lauc($t=#y%q`9IlzP*1&4FHTrZX!$E7wz;ota+jPR}z1(uo0}m2dXx zG7vu9JzTVSnlMlsF87$nj)}CdKxTJN=u+ULvSbFfI+l>yVjC?+ck~89-?)W2Vx85C~&-2f!10c6v$$tJa_;_ zt<{pLe1g`3l%b$Fgkpzk9i;;5IaJG)hEnZNNXIbRIaC`X4X5vhYJKGqJ!$4}h}xK8 zkgkz5XPCB09#u$pj@0nkkKvj_8cp8e+EIDTV(K

    q}LnMbV)+Acbq_ff3qt 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 Module { impl ProvideInherent for Module { type Inherent = Vec; type Call = Call; - type Error = RuntimeString; fn create_inherent_extrinsics(data: Self::Inherent) -> Vec<(u32, Self::Call)> { vec![(T::NOTE_OFFLINE_POSITION, Call::note_offline(data))] @@ -257,7 +256,7 @@ impl ProvideInherent for Module { fn check_inherent Option<&Self::Call>>( block: &Block, data: Self::Inherent, extract_function: &F - ) -> result::Result<(), Self::Error> { + ) -> result::Result<(), CheckInherentError> { let noted_offline = block .extrinsics().get(T::NOTE_OFFLINE_POSITION as usize) .and_then(|xt| match extract_function(&xt) { @@ -267,7 +266,7 @@ impl ProvideInherent for Module { noted_offline.iter().try_for_each(|n| if !data.contains(n) { - Err("Online node marked offline".into()) + Err(CheckInherentError::Other("Online node marked offline".into())) } else { Ok(()) } diff --git a/srml/support/src/inherent.rs b/srml/support/src/inherent.rs index f87a41806a..8be51f4224 100644 --- a/srml/support/src/inherent.rs +++ b/srml/support/src/inherent.rs @@ -17,7 +17,9 @@ #[doc(hidden)] pub use rstd::{result::Result, vec::Vec}; #[doc(hidden)] -pub use runtime_primitives::traits::ProvideInherent; +pub use runtime_primitives::{ + traits::{ProvideInherent, Block as BlockT}, CheckInherentError, InherentData +}; /// Implement the outer inherent. @@ -39,50 +41,43 @@ pub use runtime_primitives::traits::ProvideInherent; macro_rules! impl_outer_inherent { ( $(#[$attr:meta])* - pub struct $name:ident where Block = $block:ident, UncheckedExtrinsic = $unchecked:ident { - $( $module:ident: $module_ty:ident $(export Error as $error_name:ident)*, )* + pub struct $name:ident where Block = $block:ident { + $( $module:ident: $module_ty:ident, )* } ) => { impl_outer_inherent!( $( #[$attr] )* - pub struct $name where Block = $block, UncheckedExtrinsic = $unchecked, Error = InherentError, Call = Call { - $( $module: $module_ty $(export Error as $error_name)*, )* + pub struct $name where Block = $block, Call = Call { + $( $module: $module_ty, )* } ); }; ( $(#[$attr:meta])* - pub struct $name:ident where Block = $block:ident, UncheckedExtrinsic = $unchecked:ident, Error = $error:ident { - $( $module:ident: $module_ty:ident $(export Error as $error_name:ident)*, )* + pub struct $name:ident where Block = $block:ident { + $( $module:ident: $module_ty:ident, )* } ) => { impl_outer_inherent!( $( #[$attr] )* - pub struct $name where Block = $block, UncheckedExtrinsic = $unchecked, Error = $error, Call = Call { - $( $module: $module_ty $(export Error as $error_name)*, )* + pub struct $name where Block = $block, Call = Call { + $( $module: $module_ty, )* } ); }; ( $(#[$attr:meta])* - pub struct $name:ident where Block = $block:ident, UncheckedExtrinsic = $unchecked:ident, Error = $error:ident, Call = $call:ident { - $( $module:ident: $module_ty:ident $(export Error as $error_name:ident)*, )* + pub struct $name:ident where Block = $block:ident, Call = $call:ident { + $( $module:ident: $module_ty:ident, )* } ) => { $( #[$attr] )* - // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. #[derive(Encode, Decode)] /// Inherent data to include in a block. pub struct $name { $( $module: <$module_ty as $crate::inherent::ProvideInherent>::Inherent, )* } - $( - $( - pub type $error_name =<$module_ty as $crate::inherent::ProvideInherent>::Error; - )* - )* - impl $name { /// Create a new instance. pub fn new( $( $module: <$module_ty as $crate::inherent::ProvideInherent>::Inherent ),* ) -> Self { @@ -91,38 +86,19 @@ macro_rules! impl_outer_inherent { } } - fn create_inherent_extrinsics(self) -> Vec<$unchecked> { - let mut inherent = $crate::inherent::Vec::new(); - - $( - inherent.extend( - <$module_ty as $crate::inherent::ProvideInherent>::create_inherent_extrinsics(self.$module) - .into_iter() - .map(|v| (v.0, $unchecked::new_unsigned($call::$module_ty(v.1)))) - ); - )* - - inherent.as_mut_slice().sort_unstable_by_key(|v| v.0); - inherent.into_iter().map(|v| v.1).collect() - } - - fn check_inherents(self, block: $block) -> $crate::inherent::Result<(), $error> { + fn check_inherents( + data: $crate::inherent::InherentData, + block: $block + ) -> $crate::inherent::Result<(), $crate::inherent::CheckInherentError> { $( <$module_ty as $crate::inherent::ProvideInherent>::check_inherent( - &block, self.$module, &|xt| match xt.function { + &block, data.$module, &|xt| match xt.function { Call::$module_ty(ref data) => Some(data), _ => None, - }).map_err($error::$module_ty)?; + })?; )* Ok(()) } } - - // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. - #[derive(Encode)] - #[cfg_attr(feature = "std", derive(Decode))] - pub enum $error { - $( $module_ty(<$module_ty as $crate::inherent::ProvideInherent>::Error), )* - } }; } diff --git a/srml/support/src/lib.rs b/srml/support/src/lib.rs index 20cf57ca71..adccf997eb 100644 --- a/srml/support/src/lib.rs +++ b/srml/support/src/lib.rs @@ -122,4 +122,5 @@ pub enum Void {} pub use mashup::*; #[cfg(feature = "std")] +#[doc(hidden)] pub use serde_derive::*; diff --git a/srml/support/src/runtime.rs b/srml/support/src/runtime.rs index 86eaaf1b04..0376179e38 100644 --- a/srml/support/src/runtime.rs +++ b/srml/support/src/runtime.rs @@ -20,7 +20,10 @@ /// /// ```nocompile /// construct_runtime!( -/// pub enum Runtime with Log(interalIdent: DigestItem) { +/// pub enum Runtime with Log(interalIdent: DigestItem) where +/// Block = Block, +/// NodeBlock = runtime::Block +/// { /// System: system, /// Test: test::{default, Log(Test)}, /// Test2: test_with_long_module::{Module}, @@ -48,7 +51,9 @@ macro_rules! construct_runtime { ( pub enum $runtime:ident with Log ($log_internal:ident: DigestItem<$( $log_genarg:ty ),+>) - where Block = $block:ident, UncheckedExtrinsic = $unchecked:ident + where + Block = $block:ident, + NodeBlock = $node_block:ty { $( $rest:tt )* } @@ -56,7 +61,7 @@ macro_rules! construct_runtime { construct_runtime!( $runtime; $block; - $unchecked; + $node_block; $log_internal < $( $log_genarg ),* >; ; $( $rest )* @@ -65,7 +70,7 @@ macro_rules! construct_runtime { ( $runtime:ident; $block:ident; - $unchecked:ident; + $node_block:ty; $log_internal:ident <$( $log_genarg:ty ),+>; $( $expanded_name:ident: $expanded_module:ident::{ @@ -92,7 +97,7 @@ macro_rules! construct_runtime { construct_runtime!( $runtime; $block; - $unchecked; + $node_block; $log_internal < $( $log_genarg ),* >; $( $expanded_name: $expanded_module::{ @@ -119,7 +124,7 @@ macro_rules! construct_runtime { ( $runtime:ident; $block:ident; - $unchecked:ident; + $node_block:ty; $log_internal:ident <$( $log_genarg:ty ),+>; $( $expanded_name:ident: $expanded_module:ident::{ @@ -153,7 +158,7 @@ macro_rules! construct_runtime { construct_runtime!( $runtime; $block; - $unchecked; + $node_block; $log_internal < $( $log_genarg ),* >; $( $expanded_name: $expanded_module::{ @@ -186,7 +191,7 @@ macro_rules! construct_runtime { ( $runtime:ident; $block:ident; - $unchecked:ident; + $node_block:ty; $log_internal:ident <$( $log_genarg:ty ),+>; $( $expanded_name:ident: $expanded_module:ident::{ @@ -219,7 +224,7 @@ macro_rules! construct_runtime { construct_runtime!( $runtime; $block; - $unchecked; + $node_block; $log_internal < $( $log_genarg ),* >; $( $expanded_name: $expanded_module::{ @@ -251,7 +256,7 @@ macro_rules! construct_runtime { ( $runtime:ident; $block:ident; - $unchecked:ident; + $node_block:ty; $log_internal:ident <$( $log_genarg:ty ),+>; $( $name:ident: $module:ident::{ @@ -273,6 +278,12 @@ macro_rules! construct_runtime { #[derive(Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "std", derive(Debug))] pub struct $runtime; + impl $crate::runtime_primitives::traits::GetNodeBlockType for $runtime { + type NodeBlock = $node_block; + } + impl $crate::runtime_primitives::traits::GetRuntimeBlockType for $runtime { + type RuntimeBlock = $block; + } __decl_outer_event!( $runtime; $( @@ -326,7 +337,6 @@ macro_rules! construct_runtime { __decl_outer_inherent!( $runtime; $block; - $unchecked; ; $( $name: $module::{ $( $modules $( <$modules_generic> )* ),* } @@ -1052,7 +1062,6 @@ macro_rules! __decl_outer_inherent { ( $runtime:ident; $block:ident; - $unchecked:ident; $( $parsed_modules:ident :: $parsed_name:ident ),*; $name:ident: $module:ident::{ Inherent $(, $modules:ident $( <$modules_generic:ident> )* )* @@ -1064,7 +1073,6 @@ macro_rules! __decl_outer_inherent { __decl_outer_inherent!( $runtime; $block; - $unchecked; $( $parsed_modules :: $parsed_name, )* $module::$name; $( $rest_name: $rest_module::{ @@ -1076,7 +1084,6 @@ macro_rules! __decl_outer_inherent { ( $runtime:ident; $block:ident; - $unchecked:ident; $( $parsed_modules:ident :: $parsed_name:ident ),*; $name:ident: $module:ident::{ $ingore:ident $( <$ignor:ident> )* $(, $modules:ident $( <$modules_generic:ident> )* )* @@ -1088,7 +1095,6 @@ macro_rules! __decl_outer_inherent { __decl_outer_inherent!( $runtime; $block; - $unchecked; $( $parsed_modules :: $parsed_name ),*; $name: $module::{ $( $modules $( <$modules_generic> )* ),* } $( @@ -1101,7 +1107,6 @@ macro_rules! __decl_outer_inherent { ( $runtime:ident; $block:ident; - $unchecked:ident; $( $parsed_modules:ident :: $parsed_name:ident ),*; $name:ident: $module:ident::{} $(, $rest_name:ident : $rest_module:ident::{ @@ -1111,7 +1116,6 @@ macro_rules! __decl_outer_inherent { __decl_outer_inherent!( $runtime; $block; - $unchecked; $( $parsed_modules :: $parsed_name ),*; $( $rest_name: $rest_module::{ @@ -1123,15 +1127,14 @@ macro_rules! __decl_outer_inherent { ( $runtime:ident; $block:ident; - $unchecked:ident; $( $parsed_modules:ident :: $parsed_name:ident ),*; ; ) => { substrate_generate_ident_name! { impl_outer_inherent!( - pub struct InherentData where Block = $block, UncheckedExtrinsic = $unchecked { + pub struct InherentData where Block = $block { $( - $parsed_modules: $parsed_name export Error as "inherent-error-ident" $parsed_name, + $parsed_modules: $parsed_name, )* } ); diff --git a/srml/timestamp/src/lib.rs b/srml/timestamp/src/lib.rs index db1e2934db..422fd1faad 100644 --- a/srml/timestamp/src/lib.rs +++ b/srml/timestamp/src/lib.rs @@ -52,7 +52,7 @@ extern crate parity_codec_derive; use codec::HasCompact; use runtime_support::{StorageValue, Parameter}; use runtime_support::dispatch::Result; -use runtime_primitives::RuntimeString; +use runtime_primitives::CheckInherentError; use runtime_primitives::traits::{ As, SimpleArithmetic, Zero, ProvideInherent, Block as BlockT, Extrinsic }; @@ -131,17 +131,9 @@ impl Module { } } -#[derive(Encode)] -#[cfg_attr(feature = "std", derive(Decode))] -pub enum InherentError { - Other(RuntimeString), - TimestampInFuture(u64), -} - impl ProvideInherent for Module { type Inherent = T::Moment; type Call = Call; - type Error = InherentError; fn create_inherent_extrinsics(data: Self::Inherent) -> Vec<(u32, Self::Call)> { vec![(T::TIMESTAMP_SET_POSITION, Call::set(data.into()))] @@ -149,19 +141,19 @@ impl ProvideInherent for Module { fn check_inherent Option<&Self::Call>>( block: &Block, data: Self::Inherent, extract_function: &F - ) -> result::Result<(), Self::Error> { + ) -> result::Result<(), CheckInherentError> { const MAX_TIMESTAMP_DRIFT: u64 = 60; let xt = block.extrinsics().get(T::TIMESTAMP_SET_POSITION as usize) - .ok_or_else(|| InherentError::Other("No valid timestamp inherent in block".into()))?; + .ok_or_else(|| CheckInherentError::Other("No valid timestamp inherent in block".into()))?; let t = match (xt.is_signed(), extract_function(&xt)) { (Some(false), Some(Call::set(ref t))) => t.clone(), - _ => return Err(InherentError::Other("No valid timestamp inherent in block".into())), + _ => return Err(CheckInherentError::Other("No valid timestamp inherent in block".into())), }.into().as_(); if t > data.as_() + MAX_TIMESTAMP_DRIFT { - Err(InherentError::TimestampInFuture(t)) + Err(CheckInherentError::TimestampInFuture(t)) } else { Ok(()) } -- GitLab From f00d79553484be007aa1e513f1f694eceae1b948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 30 Nov 2018 16:52:48 +0100 Subject: [PATCH 083/243] Make `AuthorityId` serialize/deserialize to/from `ss58` (#1180) * Make `AuthorityId` serialize/deserialize to/from `ss58` * Updates the wasm files --- core/primitives/src/authority_id.rs | 15 ++---------- core/primitives/src/ed25519.rs | 22 ++++++++++++++++++ .../substrate_test_runtime.compact.wasm | Bin 46150 -> 46145 bytes .../release/node_runtime.compact.wasm | Bin 635745 -> 635276 bytes 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/core/primitives/src/authority_id.rs b/core/primitives/src/authority_id.rs index d2094d417a..9f5e3c26ac 100644 --- a/core/primitives/src/authority_id.rs +++ b/core/primitives/src/authority_id.rs @@ -23,16 +23,6 @@ use H256; #[derive(Clone, Copy, PartialEq, Eq, Default, Encode, Decode)] 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); - AuthorityId(r) - } -} - #[cfg(feature = "std")] impl ::std::fmt::Display for AuthorityId { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { @@ -94,14 +84,13 @@ impl Into for AuthorityId { #[cfg(feature = "std")] impl Serialize for AuthorityId { fn serialize(&self, serializer: S) -> Result where S: Serializer { - ::bytes::serialize(&self.0, serializer) + ::ed25519::serialize(&self, serializer) } } #[cfg(feature = "std")] impl<'de> Deserialize<'de> for AuthorityId { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { - ::bytes::deserialize_check_len(deserializer, ::bytes::ExpectedLen::Exact(32)) - .map(|x| AuthorityId::from_slice(&x)) + ::ed25519::deserialize(deserializer) } } diff --git a/core/primitives/src/ed25519.rs b/core/primitives/src/ed25519.rs index 2e30653e81..c6f28c64c1 100644 --- a/core/primitives/src/ed25519.rs +++ b/core/primitives/src/ed25519.rs @@ -24,6 +24,9 @@ use ring::{rand, signature}; use {hash::H512, AuthorityId}; use base58::{ToBase58, FromBase58}; +#[cfg(feature = "std")] +use serde::{de, Serializer, Deserializer, Deserialize}; + /// Alias to 512-bit hash when used in the context of a signature on the relay chain. pub type Signature = H512; @@ -278,6 +281,25 @@ impl Verifiable for LocalizedSignature { } } +/// Deserialize from `ss58` into something that can be constructed from `[u8; 32]`. +#[cfg(feature = "std")] +pub fn deserialize<'de, D, T: From<[u8; 32]>>(deserializer: D) -> Result where + D: Deserializer<'de>, +{ + let ss58 = String::deserialize(deserializer)?; + Public::from_ss58check(&ss58) + .map_err(|e| de::Error::custom(format!("{:?}", e))) + .map(|v| v.0.into()) +} + +/// Serializes something that implements `AsRef<[u8; 32]>` into `ss58`. +#[cfg(feature = "std")] +pub fn serialize>(data: &T, serializer: S) -> Result where + S: Serializer, +{ + serializer.serialize_str(&Public(*data.as_ref()).to_ss58check()) +} + #[cfg(test)] mod test { use super::*; diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 46d88c5cbc8134e9e4f3dbfafbff615f7de335d4..c9643519e97b7a7b59c399d69a27dd5f856bd84f 100644 GIT binary patch delta 3327 zcmaJ@dr(x@89(RTyUW7v!p*QSpad?mz#?xo%R71z9g|8B#Yn0NZ0HuDWLK8uk<273 z#Rp0Vj}Mg?G`5XGDn`Qj_k^ zy}$2#=brDJ?|HtTEwG<1u))mxg+L%c>J9h~1ZbdMFuh^ z-&9D9Ls!>jh6!#@M-=C`x$*IPeXd3~F>$VybC39%JpQ`F?k*w@Emp!Fy1mdO6c&hP z(P$I|BNf903l#|!DHTPl5&xoSG+RY0f2?MaT17L`W-Arp7xez{>A@Ld4iIG;?$GM8 z6tk<{f7t75@;ABLNGk5=ZfN(r>z-`!HhhbuOHCe}akVtHEwi#rPr3cBZ@By}k^=!2 zOY`6?Yo%MkB>aI+secwIWAmrrV}mdH=JPYe$xO1KFekGhESyvujb6&<=fbvH=CpZH zX3G32HO2HtWAuW)f(2JFTmjaoG`gg2iP~w1p6KTSC0szA%*NLphkjcUZhOs^A!d)_ zv>YJ|l8u;^-WO(w6wL|FwJmd32I{RX?UZhSYUe2X{22Vh=|%e-EJ%)+KQ%)X{7VKn zQ6N(Tj2G;~sk;T$>_QJbQuy_+`tGyBL;Q<jLk z)8!uIg-dDBnKZ`k_CbtX6?zDdoJS4n%W|=hwYrlOi5nXgDn%i7qy3d^eik`gXT8<~ z2767$s#TQ0PAfrYq9-g0O%`P;GaOo)6;U(Vx9yqiMlW2q=O^$*7yx)m869RphmF!^ ze4Cmj2Yg{aOEUmcJLyI+r?tc_@xw<-4Ckj!+UfnfL&9^E#X@aXpWWOUj1i(!G&? z;uZ+w7GTYi2;HShAE{lF6VKLScBvO@w`1W_KYr{ohu(vIjM~BW#BFLe+F`}$b}&mahC}dkJ?b#-G5Bb*0l71btB<0j44C!E>}(JG z)AM6g<8^Nds{N_=o7^w^kBlYGYFf;%YQb%fN+cj)EsJW6jaZ4TUdU~I%pE)p7D)8I zR+NJ2$9Vc-04=A5mU;@s+^EE4z!Q^XEVtUMWKt-qVG+yT#qk0gGXO+kSlCZrg@$yT26QE`KF`7q0tvA-&`;(iX-u%)rWa zg?n$X{cA}ZWdnxT25UJfAVfB3py&~8z-azgyFGL(M+e_(M~A&)^&7O1sadvW5KQY6V#PRD~PmXmR=Lw=zC;KHwyfOFo zmC*@xu->o2CkM;9Iti)BX!9J{c2c#SGxCbAGPc@DmA^bx+KL+`^ zA^ZlN|2^bqBE2lXff5pf<0L_o8z3SQ>yhy$Vg%w0KKKpE!ZANuDWVN=4`LKz9bz=1 zPak(9@^#}ne_77&ktco$|8Hyffz^#aT{E%DzoYY)Eror6W{EsRZm~PM#cmiR;>2+m z@*hXMix0PCFY?O}cOzooK%PdlARb2)xM`OcFbW4Q?TTE}s~d){$J81Bw@nXQ+o7B8 z;|+U5i`(T}Zsfxyt+Nky^>se4*B=oV%4s<4@-({Jv>7$|JAW79KjT$+alU@FBO)cN z!|iKp@_O(>ymBxyHMCVvgJ-W4O6hC+bqCzI@*9@ngtsPB;H~j!?5uu0o=Y>KY9co} z>z-ad8-^xcw&bid^tn^8cx}5Hc-2F(s}HakA^-bycp?rGuMVr}la*nxpzbto^VQjR R*FgT2SQt=iA?J;_{{napa_9g6 delta 3292 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 WVg61?SNKY6Nctb5t@ujC#QzUv45KUn -- GitLab From 9a661176aefdf2f42f5b032d2d0912530034173d Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Fri, 30 Nov 2018 18:26:24 +0200 Subject: [PATCH 084/243] Implement macro for session change trait over arbitrary tuples (limit 19) (#1177) * Implement macro for session change trait * Consolidate tuple macro into one --- srml/session/src/lib.rs | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/srml/session/src/lib.rs b/srml/session/src/lib.rs index 43eeaaad50..21bc04edb9 100644 --- a/srml/session/src/lib.rs +++ b/srml/session/src/lib.rs @@ -51,19 +51,36 @@ pub trait OnSessionChange { fn on_session_change(time_elapsed: T, should_reward: bool); } -impl OnSessionChange for () { - fn on_session_change(_: T, _: bool) {} +macro_rules! for_each_tuple { + ($m:ident) => { + for_each_tuple! { @IMPL $m !! A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, } + }; + (@IMPL $m:ident !!) => { $m! { } }; + (@IMPL $m:ident !! $h:ident, $($t:ident,)*) => { + $m! { $h $($t)* } + for_each_tuple! { @IMPL $m !! $($t,)* } + } } -impl OnSessionChange for (A, B) - where T: Clone, A: OnSessionChange, B: OnSessionChange -{ - fn on_session_change(time_elapsed: T, should_reward: bool) { - A::on_session_change(time_elapsed.clone(), should_reward); - B::on_session_change(time_elapsed, should_reward); +macro_rules! impl_session_change { + () => ( + impl OnSessionChange for () { + fn on_session_change(_: T, _: bool) {} + } + ); + + ( $($t:ident)* ) => { + impl),*> OnSessionChange for ($($t,)*) { + fn on_session_change(time_elapsed: T, should_reward: bool) { + $($t::on_session_change(time_elapsed.clone(), should_reward);)* + } + } } } +for_each_tuple!(impl_session_change); + + pub trait Trait: timestamp::Trait { type ConvertAccountIdToSessionKey: Convert; type OnSessionChange: OnSessionChange; -- GitLab From c313e7e40d9c4d35fc24f57b183d2efeee09bb76 Mon Sep 17 00:00:00 2001 From: Andrew Jones Date: Sat, 1 Dec 2018 08:47:40 +0000 Subject: [PATCH 085/243] Default boot_nodes to local node in build-spec (#1181) * Default to local bootnode with build-spec * Rexport libp2p stuff via network crate * Remove unused imports and fix where formatting * Remove spurious blank lines * Remove unnecessary else clause --- core/cli/src/lib.rs | 43 +++++++++++++++++++++++++++---- core/network-libp2p/src/lib.rs | 3 ++- core/network-libp2p/src/secret.rs | 2 +- core/network/src/lib.rs | 5 +++- core/service/src/chain_spec.rs | 5 ++++ node/cli/src/lib.rs | 2 +- 6 files changed, 51 insertions(+), 9 deletions(-) diff --git a/core/cli/src/lib.rs b/core/cli/src/lib.rs index 6220ceda87..e65d90d352 100644 --- a/core/cli/src/lib.rs +++ b/core/cli/src/lib.rs @@ -63,7 +63,10 @@ use service::{ ServiceFactory, FactoryFullConfiguration, RuntimeGenesis, FactoryGenesis, PruningMode, ChainSpec, }; -use network::{Protocol, config::NonReservedPeerMode}; +use network::{ + Protocol, config::{NetworkConfiguration, NonReservedPeerMode}, + multiaddr, +}; use primitives::H256; use std::io::{Write, Read, stdin, stdout}; @@ -325,7 +328,8 @@ where pub fn execute_default<'a, F, E>( spec: ChainSpec>, exit: E, - matches: &clap::ArgMatches<'a> + matches: &clap::ArgMatches<'a>, + config: &FactoryFullConfiguration ) -> error::Result> where E: IntoExit, @@ -339,7 +343,7 @@ where fdlimit::raise_fd_limit(); if let Some(matches) = matches.subcommand_matches("build-spec") { - build_spec::(matches, spec)?; + build_spec::(matches, spec, config)?; return Ok(Action::ExecutedInternally); } @@ -366,11 +370,40 @@ where Ok(Action::RunService(exit)) } -fn build_spec(matches: &clap::ArgMatches, spec: ChainSpec>) -> error::Result<()> - where F: ServiceFactory, +fn with_default_boot_node( + spec: &ChainSpec>, + config: &NetworkConfiguration +) -> error::Result>> +where + F: ServiceFactory +{ + let mut spec = spec.clone(); + if spec.boot_nodes().is_empty() { + let network_keys = + network::obtain_private_key(config) + .map_err(|err| format!("Error obtaining network key: {}", err))?; + let peer_id = network_keys.to_peer_id(); + let addr = multiaddr![ + Ip4([127, 0, 0, 1]), + Tcp(30333u16), + P2p(peer_id) + ]; + spec.add_boot_node(addr) + } + Ok(spec) +} + +fn build_spec( + matches: &clap::ArgMatches, + spec: ChainSpec>, + config: &FactoryFullConfiguration +) -> error::Result<()> +where + F: ServiceFactory { info!("Building chain spec"); let raw = matches.is_present("raw"); + let spec = with_default_boot_node::(&spec, &config.network)?; let json = service::chain_ops::build_spec::>(spec, raw)?; print!("{}", json); Ok(()) diff --git a/core/network-libp2p/src/lib.rs b/core/network-libp2p/src/lib.rs index 2bf6a0d490..8c5df15c49 100644 --- a/core/network-libp2p/src/lib.rs +++ b/core/network-libp2p/src/lib.rs @@ -53,7 +53,8 @@ mod transport; pub use custom_proto::RegisteredProtocol; pub use error::{Error, ErrorKind, DisconnectReason}; -pub use libp2p::{Multiaddr, multiaddr::Protocol, PeerId}; +pub use libp2p::{Multiaddr, multiaddr::{Protocol}, multiaddr, PeerId}; +pub use secret::obtain_private_key; pub use service_task::{start_service, Service, ServiceEvent}; pub use traits::{NetworkConfiguration, NodeIndex, NodeId, NonReservedPeerMode}; pub use traits::{ProtocolId, Secret, Severity}; diff --git a/core/network-libp2p/src/secret.rs b/core/network-libp2p/src/secret.rs index 26d800bdf9..1eec994ea1 100644 --- a/core/network-libp2p/src/secret.rs +++ b/core/network-libp2p/src/secret.rs @@ -25,7 +25,7 @@ use NetworkConfiguration; const SECRET_FILE: &str = "secret"; /// Obtains or generates the local private key using the configuration. -pub(crate) fn obtain_private_key( +pub fn obtain_private_key( config: &NetworkConfiguration ) -> Result { if let Some(ref secret) = config.use_secret { diff --git a/core/network/src/lib.rs b/core/network/src/lib.rs index de3a30402e..b6ba3f7883 100644 --- a/core/network/src/lib.rs +++ b/core/network/src/lib.rs @@ -68,7 +68,10 @@ pub use chain::Client as ClientHandle; pub use service::{Service, FetchFuture, TransactionPool, ManageNetwork, SyncProvider, ExHashT}; pub use protocol::{ProtocolStatus, PeerInfo, Context}; pub use sync::{Status as SyncStatus, SyncState}; -pub use network_libp2p::{NodeIndex, ProtocolId, Severity, Protocol}; +pub use network_libp2p::{ + NodeIndex, ProtocolId, Severity, Protocol, Multiaddr, + obtain_private_key, multiaddr, +}; pub use message::{generic as generic_message, RequestId, Status as StatusMessage}; pub use error::Error; pub use on_demand::{OnDemand, OnDemandService, RemoteResponse}; diff --git a/core/service/src/chain_spec.rs b/core/service/src/chain_spec.rs index bc3ebf63cb..dafae1501c 100644 --- a/core/service/src/chain_spec.rs +++ b/core/service/src/chain_spec.rs @@ -23,6 +23,7 @@ use primitives::storage::{StorageKey, StorageData}; use runtime_primitives::{BuildStorage, StorageMap, ChildrenStorageMap}; use serde_json as json; use components::RuntimeGenesis; +use network::Multiaddr; enum GenesisSource { File(PathBuf), @@ -139,6 +140,10 @@ impl ChainSpec { self.spec.properties.as_ref().unwrap_or(&json::map::Map::new()).clone() } + pub fn add_boot_node(&mut self, addr: Multiaddr) { + self.spec.boot_nodes.push(addr.to_string()) + } + /// Parse json content into a `ChainSpec` pub fn from_embedded(json: &'static [u8]) -> Result { let spec = json::from_slice(json).map_err(|e| format!("Error parsing spec file: {}", e))?; diff --git a/node/cli/src/lib.rs b/node/cli/src/lib.rs index 8d240face3..3a8b951b27 100644 --- a/node/cli/src/lib.rs +++ b/node/cli/src/lib.rs @@ -135,7 +135,7 @@ pub fn run(args: I, exit: E, version: cli::VersionInfo) -> error::Resul config.roles = ServiceRoles::AUTHORITY; } - match cli::execute_default::(spec, exit, &matches)? { + match cli::execute_default::(spec, exit, &matches, &config)? { cli::Action::ExecutedInternally => (), cli::Action::RunService(exit) => { info!("Substrate Node"); -- GitLab From 51cc773808edbdba3ae02a075308e2fff090803d Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 3 Dec 2018 02:47:09 +0100 Subject: [PATCH 086/243] make start_aura bounds more lenient (#1189) --- core/consensus/aura/src/lib.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index a871861d18..678cebc42a 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -155,10 +155,11 @@ pub fn start_aura( ) -> impl Future where B: Block, - C: Authorities + ChainHead, + C: Authorities + ChainHead, E: Environment, E::Proposer: Proposer, - I: BlockImport, + I: BlockImport, + Error: From + From, SO: SyncOracle + Send + Clone, DigestItemFor: CompatibleDigestItem, Error: ::std::error::Error + Send + 'static + From<::consensus_common::Error>, -- GitLab From 416fc686b622304814fd1e4e85aa798e241d378e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 3 Dec 2018 10:15:41 +0100 Subject: [PATCH 087/243] Make `sr-api-macros` require at least `syn-0.15.22` (#1195) --- core/sr-api-macros/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/sr-api-macros/Cargo.toml b/core/sr-api-macros/Cargo.toml index 05172e5bf8..7981281b27 100644 --- a/core/sr-api-macros/Cargo.toml +++ b/core/sr-api-macros/Cargo.toml @@ -8,7 +8,7 @@ proc-macro = true [dependencies] quote = "0.6" -syn = { version = "0.15", features = [ "full", "fold", "extra-traits", "visit" ] } +syn = { version = "^0.15.22", features = [ "full", "fold", "extra-traits", "visit" ] } proc-macro2 = "0.4" [dev-dependencies] -- GitLab From 1454330af6eb6c9c19769b72993ae1c4de470a93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 3 Dec 2018 10:16:06 +0100 Subject: [PATCH 088/243] Cleanup the cli interface (#1194) Parameters like `--dev`, `--base-path` or `--chain` were replicated for each subcommand and were also present in the "top". This pr removes these parameters from the subcommands. The subcommands also ignored stuff like `--dev` as it was only read in the top matcher, that did not look into the subcommand matchers. Now, if you specify one of the parameters for a subcommand, you will get an error instead of silently ignoring it. --- core/cli/src/lib.rs | 77 ++++++++++++++++-------------- core/cli/src/params.rs | 106 ++++++++++------------------------------- node/cli/src/lib.rs | 4 +- 3 files changed, 70 insertions(+), 117 deletions(-) diff --git a/core/cli/src/lib.rs b/core/cli/src/lib.rs index e65d90d352..f6a727931f 100644 --- a/core/cli/src/lib.rs +++ b/core/cli/src/lib.rs @@ -78,7 +78,7 @@ use std::path::{Path, PathBuf}; use std::str::FromStr; use names::{Generator, Name}; use regex::Regex; -use structopt::StructOpt; +use structopt::StructOpt; pub use params::{CoreParams, CoreCommands, ExecutionStrategy}; use futures::Future; @@ -116,7 +116,9 @@ pub trait IntoExit { fn load_spec(matches: &clap::ArgMatches, factory: F) -> Result, String> where G: RuntimeGenesis, F: FnOnce(&str) -> Result>, String>, { - let chain_key = matches.value_of("chain").unwrap_or_else(|| if matches.is_present("dev") { "dev" } else { "" }); + let chain_key = matches.value_of("chain").unwrap_or_else( + || if matches.is_present("dev") { "dev" } else { "" } + ); let spec = match factory(chain_key)? { Some(spec) => spec, None => ChainSpec::from_json_file(PathBuf::from(chain_key))? @@ -316,7 +318,7 @@ where Ok((spec, config)) } -// +// // IANA unassigned port ranges that we could use: // 6717-6766 Unassigned // 8504-8553 Unassigned @@ -342,28 +344,23 @@ where init_logger(log_pattern); fdlimit::raise_fd_limit(); + let base_path = base_path(matches); + let db_path = db_path(&base_path, spec.id()); + if let Some(matches) = matches.subcommand_matches("build-spec") { build_spec::(matches, spec, config)?; return Ok(Action::ExecutedInternally); - } - - if let Some(matches) = matches.subcommand_matches("export-blocks") { - export_blocks::(matches, spec, exit.into_exit())?; + } else if let Some(matches) = matches.subcommand_matches("export-blocks") { + export_blocks::(db_path, matches, spec, exit.into_exit())?; return Ok(Action::ExecutedInternally); - } - - if let Some(matches) = matches.subcommand_matches("import-blocks") { - import_blocks::(matches, spec, exit.into_exit())?; + } else if let Some(matches) = matches.subcommand_matches("import-blocks") { + import_blocks::(db_path, matches, spec, exit.into_exit())?; return Ok(Action::ExecutedInternally); - } - - if let Some(matches) = matches.subcommand_matches("revert") { - revert_chain::(matches, spec)?; + } else if let Some(matches) = matches.subcommand_matches("revert") { + revert_chain::(db_path, matches, spec)?; return Ok(Action::ExecutedInternally); - } - - if let Some(matches) = matches.subcommand_matches("purge-chain") { - purge_chain::(matches, spec)?; + } else if let Some(matches) = matches.subcommand_matches("purge-chain") { + purge_chain::(db_path)?; return Ok(Action::ExecutedInternally); } @@ -409,12 +406,16 @@ where Ok(()) } -fn export_blocks(matches: &clap::ArgMatches, spec: ChainSpec>, exit: E) -> error::Result<()> +fn export_blocks( + db_path: PathBuf, + matches: &clap::ArgMatches, + spec: ChainSpec>, + exit: E +) -> error::Result<()> where F: ServiceFactory, E: Future + Send + 'static, { - let base_path = base_path(matches); let mut config = service::Configuration::default_with_spec(spec); - config.database_path = db_path(&base_path, config.chain_spec.id()).to_string_lossy().into(); + config.database_path = db_path.to_string_lossy().into(); info!("DB path: {}", config.database_path); let from: u64 = match matches.value_of("from") { Some(v) => v.parse().map_err(|_| "Invalid --from argument")?, @@ -435,12 +436,16 @@ fn export_blocks(matches: &clap::ArgMatches, spec: ChainSpec(config, exit, file, As::sa(from), to.map(As::sa), json)?) } -fn import_blocks(matches: &clap::ArgMatches, spec: ChainSpec>, exit: E) -> error::Result<()> +fn import_blocks( + db_path: PathBuf, + matches: &clap::ArgMatches, + spec: ChainSpec>, + exit: E +) -> error::Result<()> where F: ServiceFactory, E: Future + Send + 'static, { - let base_path = base_path(matches); let mut config = service::Configuration::default_with_spec(spec); - config.database_path = db_path(&base_path, config.chain_spec.id()).to_string_lossy().into(); + config.database_path = db_path.to_string_lossy().into(); if let Some(s) = matches.value_of("execution") { config.block_execution_strategy = match s { @@ -468,12 +473,15 @@ fn import_blocks(matches: &clap::ArgMatches, spec: ChainSpec(config, exit, file)?) } -fn revert_chain(matches: &clap::ArgMatches, spec: ChainSpec>) -> error::Result<()> +fn revert_chain( + db_path: PathBuf, + matches: &clap::ArgMatches, + spec: ChainSpec> +) -> error::Result<()> where F: ServiceFactory, { - let base_path = base_path(matches); let mut config = service::Configuration::default_with_spec(spec); - config.database_path = db_path(&base_path, config.chain_spec.id()).to_string_lossy().into(); + config.database_path = db_path.to_string_lossy().into(); let blocks = match matches.value_of("num") { Some(v) => v.parse().map_err(|_| "Invalid block count specified")?, @@ -483,13 +491,12 @@ fn revert_chain(matches: &clap::ArgMatches, spec: ChainSpec Ok(service::chain_ops::revert_chain::(config, As::sa(blocks))?) } -fn purge_chain(matches: &clap::ArgMatches, spec: ChainSpec>) -> error::Result<()> +fn purge_chain( + db_path: PathBuf, +) -> error::Result<()> where F: ServiceFactory, { - let base_path = base_path(matches); - let database_path = db_path(&base_path, spec.id()); - - print!("Are you sure to remove {:?}? (y/n)", &database_path); + print!("Are you sure to remove {:?}? (y/n)", &db_path); stdout().flush().expect("failed to flush stdout"); let mut input = String::new(); @@ -498,8 +505,8 @@ fn purge_chain(matches: &clap::ArgMatches, spec: ChainSpec> match input.chars().nth(0) { Some('y') | Some('Y') => { - fs::remove_dir_all(&database_path)?; - println!("{:?} removed.", &database_path); + fs::remove_dir_all(&db_path)?; + println!("{:?} removed.", &db_path); }, _ => println!("Aborted"), } diff --git a/core/cli/src/params.rs b/core/cli/src/params.rs index 7211f206f8..d88e204691 100644 --- a/core/cli/src/params.rs +++ b/core/cli/src/params.rs @@ -40,7 +40,7 @@ pub struct CoreParams { /// Specify node secret key (64-character hex string) #[structopt(long = "node-key", value_name = "KEY")] node_key: Option, - + /// Enable validator mode #[structopt(long = "validator")] validator: bool, @@ -48,71 +48,71 @@ pub struct CoreParams { /// Run in light client mode #[structopt(long = "light")] light: bool, - + /// Run in development mode; implies --chain=dev --validator --key Alice #[structopt(long = "dev")] dev: bool, - + /// Listen on this multiaddress #[structopt(long = "listen-addr", value_name = "LISTEN_ADDR")] listen_addr: Vec, - + /// Specify p2p protocol TCP port. Only used if --listen-addr is not specified. #[structopt(long = "port", value_name = "PORT")] port: Option, - + /// Listen to all RPC interfaces (default is local) #[structopt(long = "rpc-external")] rpc_external: bool, - + /// Listen to all Websocket interfaces (default is local) #[structopt(long = "ws-external")] ws_external: bool, - + /// Specify HTTP RPC server TCP port #[structopt(long = "rpc-port", value_name = "PORT")] rpc_port: Option, - + /// Specify WebSockets RPC server TCP port #[structopt(long = "ws-port", value_name = "PORT")] ws_port: Option, - + /// Specify a list of bootnodes #[structopt(long = "bootnodes", value_name = "URL")] bootnodes: Vec, - + /// Specify a list of reserved node addresses #[structopt(long = "reserved-nodes", value_name = "URL")] reserved_nodes: Vec, - + /// Specify the number of outgoing connections we're trying to maintain #[structopt(long = "out-peers", value_name = "OUT_PEERS")] out_peers: Option, - + /// Specify the maximum number of incoming connections we're accepting #[structopt(long = "in-peers", value_name = "IN_PEERS")] in_peers: Option, - + /// Specify the chain specification (one of dev, local or staging) #[structopt(long = "chain", value_name = "CHAIN_SPEC")] chain: Option, - + /// Specify the pruning mode, a number of blocks to keep or 'archive'. Default is 256. #[structopt(long = "pruning", value_name = "PRUNING_MODE")] pruning: Option, - + /// The human-readable name for this node, as reported to the telemetry server, if enabled #[structopt(long = "name", value_name = "NAME")] name: Option, - + /// Should connect to the Substrate telemetry server (telemetry is off by default on local chains) #[structopt(short = "t", long = "telemetry")] telemetry: bool, - + /// Should not connect to the Substrate telemetry server (telemetry is on by default on global chains) #[structopt(long = "no-telemetry")] no_telemetry: bool, - + /// The URL of the telemetry server. Implies --telemetry #[structopt(long = "telemetry-url", value_name = "TELEMETRY_URL")] telemetry_url: Option, @@ -164,14 +164,6 @@ pub enum CoreCommands { /// Force raw genesis storage output. #[structopt(long = "raw")] raw: bool, - - /// Specify the chain specification (one of dev, local or staging) - #[structopt(long = "chain", value_name = "CHAIN_SPEC")] - chain: Option, - - /// Specify the development chain - #[structopt(long = "dev")] - dev: bool, }, /// Export blocks to a file @@ -180,27 +172,15 @@ pub enum CoreCommands { /// Output file name or stdout if unspecified. #[structopt(parse(from_os_str))] output: Option, - - /// Specify the chain specification. - #[structopt(long = "chain", value_name = "CHAIN_SPEC")] - chain: Option, - - /// Specify the development chain - #[structopt(long = "dev")] - dev: bool, - - /// Specify custom base path. - #[structopt(long = "base-path", short = "d", value_name = "PATH")] - base_path: Option, - + /// Specify starting block number. 1 by default. #[structopt(long = "from", value_name = "BLOCK")] from: Option, - + /// Specify last block number. Best block by default. #[structopt(long = "to", value_name = "BLOCK")] to: Option, - + /// Use JSON output rather than binary. #[structopt(long = "json")] json: bool, @@ -212,27 +192,15 @@ pub enum CoreCommands { /// Input file or stdin if unspecified. #[structopt(parse(from_os_str))] input: Option, - - /// Specify the chain specification. - #[structopt(long = "chain", value_name = "CHAIN_SPEC")] - chain: Option, - - /// Specify the development chain - #[structopt(long = "dev")] - dev: bool, - - /// Specify custom base path. - #[structopt(long = "base-path", short = "d", value_name = "PATH", parse(from_os_str))] - base_path: Option, - + /// The means of execution used when executing blocks. Can be either wasm, native or both. #[structopt(long = "execution", value_name = "STRATEGY")] execution: ExecutionStrategy, - + /// The means of execution used when calling into the runtime. Can be either wasm, native or both. #[structopt(long = "api-execution", value_name = "STRATEGY")] api_execution: ExecutionStrategy, - + /// The maximum number of 64KB pages to ever allocate for Wasm execution. Don't alter this unless you know what you're doing. #[structopt(long = "max-heap-pages", value_name = "COUNT")] max_heap_pages: Option, @@ -243,33 +211,9 @@ pub enum CoreCommands { Revert { /// Number of blocks to revert. Default is 256. num: Option, - - /// Specify the chain specification. - #[structopt(long = "chain", value_name = "CHAIN_SPEC")] - chain: Option, - - /// Specify the development chain - #[structopt(long = "dev")] - dev: bool, - - /// Specify custom base path. - #[structopt(long = "base-path", short = "d", value_name = "PATH", parse(from_os_str))] - base_path: Option, }, /// Remove the whole chain data. #[structopt(name = "purge-chain")] - PurgeChain { - /// Specify the chain specification. - #[structopt(long = "chain", value_name = "CHAIN_SPEC")] - chain: Option, - - /// Specify the development chain - #[structopt(long = "dev")] - dev: bool, - - /// Specify custom base path. - #[structopt(long = "base-path", short = "d", value_name = "PATH", parse(from_os_str))] - base_path: Option - } + PurgeChain {}, } diff --git a/node/cli/src/lib.rs b/node/cli/src/lib.rs index 3a8b951b27..b968286de1 100644 --- a/node/cli/src/lib.rs +++ b/node/cli/src/lib.rs @@ -122,7 +122,9 @@ pub fn run(args: I, exit: E, version: cli::VersionInfo) -> error::Resul Err(e) => e.exit(), }; - let (spec, mut config) = cli::parse_matches::(load_spec, version, "substrate-node", &matches)?; + let (spec, mut config) = cli::parse_matches::( + load_spec, version, "substrate-node", &matches + )?; if matches.is_present("grandpa_authority_only") { config.custom.grandpa_authority = true; -- GitLab From 266d597694f2700d05e0f19add5b20b17892648f Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 3 Dec 2018 11:49:30 +0100 Subject: [PATCH 089/243] make block builder and construct_runtime! generic over inherent-data (#1191) * make block builder generic over inherent-data * construct_runtime has you specify inherent data type * get all tests to compile --- core/client/src/block_builder/api.rs | 8 +-- .../client/src/block_builder/block_builder.rs | 13 ++-- core/client/src/client.rs | 12 ++-- core/consensus/rhd/src/lib.rs | 4 +- core/network/src/test/mod.rs | 2 +- core/service/src/consensus.rs | 22 +++--- core/service/test/src/lib.rs | 8 +-- core/sr-primitives/src/lib.rs | 8 +-- core/test-client/src/block_builder_ext.rs | 4 +- core/test-runtime/src/lib.rs | 8 +-- .../substrate_test_runtime.compact.wasm | Bin 46145 -> 225459 bytes node/cli/src/chain_spec.rs | 2 +- node/primitives/src/lib.rs | 2 + node/runtime/src/lib.rs | 13 ++-- .../release/node_runtime.compact.wasm | Bin 635276 -> 858430 bytes srml/support/src/inherent.rs | 63 ++++-------------- srml/support/src/runtime.rs | 36 +++++++--- 17 files changed, 96 insertions(+), 109 deletions(-) diff --git a/core/client/src/block_builder/api.rs b/core/client/src/block_builder/api.rs index 3b8ceb6305..d122909eaf 100644 --- a/core/client/src/block_builder/api.rs +++ b/core/client/src/block_builder/api.rs @@ -16,19 +16,19 @@ //! The runtime api for building blocks. -use runtime_primitives::{traits::Block as BlockT, ApplyResult, InherentData, CheckInherentError}; +use runtime_primitives::{traits::Block as BlockT, ApplyResult, CheckInherentError}; use rstd::vec::Vec; decl_runtime_apis! { /// The `BlockBuilder` api trait that provides required functions for building a block for a runtime. - pub trait BlockBuilder { + pub trait BlockBuilder { /// Apply the given extrinsics. fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult; /// Finish the current block. fn finalise_block() -> ::Header; - /// Generate inherent extrinsics. + /// Generate inherent extrinsics. The inherent data will vary from chain to chain. fn inherent_extrinsics(inherent: InherentData) -> Vec<::Extrinsic>; - /// Check that the inherents are valid. + /// Check that the inherents are valid. The inherent data will vary from chain to chain. fn check_inherents(block: Block, data: InherentData) -> Result<(), CheckInherentError>; /// Generate a random seed. fn random_seed() -> ::Hash; diff --git a/core/client/src/block_builder/block_builder.rs b/core/client/src/block_builder/block_builder.rs index 7d5b867e3a..8656bfed53 100644 --- a/core/client/src/block_builder/block_builder.rs +++ b/core/client/src/block_builder/block_builder.rs @@ -16,6 +16,7 @@ use super::api::BlockBuilder as BlockBuilderApi; use std::vec::Vec; +use std::marker::PhantomData; use codec::Encode; use blockchain::HeaderBackend; use runtime_primitives::traits::{ @@ -28,18 +29,19 @@ use error; use runtime_primitives::ApplyOutcome; /// Utility for building new (valid) blocks from a stream of extrinsics. -pub struct BlockBuilder<'a, Block, A: ProvideRuntimeApi> where Block: BlockT { +pub struct BlockBuilder<'a, Block, InherentData, A: ProvideRuntimeApi> where Block: BlockT { header: ::Header, extrinsics: Vec<::Extrinsic>, api: ApiRef<'a, A::Api>, block_id: BlockId, + _marker: PhantomData, } -impl<'a, Block, A> BlockBuilder<'a, Block, A> +impl<'a, Block, A, InherentData> BlockBuilder<'a, Block, InherentData, A> where Block: BlockT, A: ProvideRuntimeApi + HeaderBackend + 'a, - A::Api: BlockBuilderApi, + A::Api: BlockBuilderApi, { /// Create a new instance of builder from the given client, building on the latest block. pub fn new(api: &'a A) -> error::Result { @@ -72,6 +74,7 @@ where extrinsics: Vec::new(), api, block_id: *block_id, + _marker: PhantomData, }) } @@ -79,12 +82,12 @@ where /// can be validly executed (by executing it); if it is invalid, it'll be returned along with /// the error. Otherwise, it will return a mutable reference to self (in order to chain). pub fn push(&mut self, xt: ::Extrinsic) -> error::Result<()> { - fn impl_push<'a, T, Block: BlockT>( + fn impl_push<'a, T, Block: BlockT, InherentData>( api: &mut ApiRef<'a, T>, block_id: &BlockId, xt: Block::Extrinsic, extrinsics: &mut Vec - ) -> error::Result<()> where T: BlockBuilderApi { + ) -> error::Result<()> where T: BlockBuilderApi { api.map_api_result(|api| { match api.apply_extrinsic(block_id, &xt)? { Ok(ApplyOutcome::Success) | Ok(ApplyOutcome::Fail) => { diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 205827b6d4..60a68665ff 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -538,21 +538,21 @@ impl Client where } /// Create a new block, built on the head of the chain. - pub fn new_block( + pub fn new_block( &self - ) -> error::Result> where + ) -> error::Result> where E: Clone + Send + Sync, - RA: BlockBuilderAPI + RA: BlockBuilderAPI { block_builder::BlockBuilder::new(self) } /// Create a new block, built on top of `parent`. - pub fn new_block_at( + pub fn new_block_at( &self, parent: &BlockId - ) -> error::Result> where + ) -> error::Result> where E: Clone + Send + Sync, - RA: BlockBuilderAPI + RA: BlockBuilderAPI { block_builder::BlockBuilder::at_block(parent, &self) } diff --git a/core/consensus/rhd/src/lib.rs b/core/consensus/rhd/src/lib.rs index 449f9c3ffa..135fbd03a2 100644 --- a/core/consensus/rhd/src/lib.rs +++ b/core/consensus/rhd/src/lib.rs @@ -196,7 +196,7 @@ pub trait BlockBuilder { pub trait AuthoringApi: Send + Sync - + BlockBuilderAPI<::Block, Error=::Error> + + BlockBuilderAPI<::Block, InherentData, Error=::Error> + Core<::Block, AuthorityId, Error=::Error> + OldTxQueue<::Block, Error=::Error> { @@ -1174,7 +1174,7 @@ impl BaseProposer<::Block> for Proposer where let proposed_timestamp = match self.client.check_inherents( &self.parent_id, &unchecked_proposal, - &inherent + &inherent, ) { Ok(Ok(())) => None, Ok(Err(BlockBuilderError::TimestampInFuture(timestamp))) => Some(timestamp), diff --git a/core/network/src/test/mod.rs b/core/network/src/test/mod.rs index 603aaa9572..7f490a9459 100644 --- a/core/network/src/test/mod.rs +++ b/core/network/src/test/mod.rs @@ -234,7 +234,7 @@ impl, D> Peer { /// Add blocks to the peer -- edit the block before adding pub fn generate_blocks(&self, count: usize, origin: BlockOrigin, mut edit_block: F) - where F: FnMut(BlockBuilder) -> Block + where F: FnMut(BlockBuilder) -> Block { use blocks::BlockData; diff --git a/core/service/src/consensus.rs b/core/service/src/consensus.rs index 240ba7dc49..2a7b96f199 100644 --- a/core/service/src/consensus.rs +++ b/core/service/src/consensus.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! provide consensus service to substrate. +//! A consensus proposer for "basic" chains which use the primitive inherent-data. // FIXME: move this into substrate-consensus-common - https://github.com/paritytech/substrate/issues/1021 @@ -29,7 +29,7 @@ use consensus_common::{self, evaluation, offline_tracker::OfflineTracker}; use primitives::{H256, AuthorityId, ed25519, Blake2Hasher}; use runtime_primitives::traits::{Block as BlockT, Hash as HashT, Header as HeaderT, ProvideRuntimeApi}; use runtime_primitives::generic::BlockId; -use runtime_primitives::InherentData; +use runtime_primitives::BasicInherentData; use transaction_pool::txpool::{self, Pool as TransactionPool}; use parking_lot::RwLock; @@ -60,16 +60,18 @@ pub trait AuthoringApi: Send + Sync + ProvideRuntimeApi where fn build_block) -> ()>( &self, at: &BlockId, - inherent_data: InherentData, + inherent_data: BasicInherentData, build_ctx: F, ) -> Result; } -impl<'a, B, E, Block, RA> BlockBuilder for client::block_builder::BlockBuilder<'a, Block, SubstrateClient> where +impl<'a, B, E, Block, RA> BlockBuilder + for client::block_builder::BlockBuilder<'a, Block, BasicInherentData, SubstrateClient> +where B: client::backend::Backend + 'static, E: CallExecutor + Send + Sync + Clone + 'static, Block: BlockT, - RA: BlockBuilderApi, + RA: BlockBuilderApi, { fn push_extrinsic(&mut self, extrinsic: ::Extrinsic) -> Result<(), error::Error> { client::block_builder::BlockBuilder::push(self, extrinsic).map_err(Into::into) @@ -80,7 +82,7 @@ impl AuthoringApi for SubstrateClient where B: client::backend::Backend + Send + Sync + 'static, E: CallExecutor + Send + Sync + Clone + 'static, Block: BlockT, - RA: BlockBuilderApi, + RA: BlockBuilderApi, { type Block = Block; type Error = client::error::Error; @@ -88,7 +90,7 @@ impl AuthoringApi for SubstrateClient where fn build_block) -> ()>( &self, at: &BlockId, - inherent_data: InherentData, + inherent_data: BasicInherentData, mut build_ctx: F, ) -> Result { let runtime_version = self.runtime_version_at(at)?; @@ -119,7 +121,7 @@ pub struct ProposerFactory where A: txpool::ChainApi { impl consensus_common::Environment<::Block> for ProposerFactory where C: AuthoringApi, - ::Api: BlockBuilderApi<::Block>, + ::Api: BlockBuilderApi<::Block, BasicInherentData>, A: txpool::ChainApi::Block>, client::error::Error: From<::Error> { @@ -174,7 +176,7 @@ pub struct Proposer { impl consensus_common::Proposer<::Block> for Proposer where Block: BlockT, C: AuthoringApi, - ::Api: BlockBuilderApi, + ::Api: BlockBuilderApi, A: txpool::ChainApi, client::error::Error: From<::Error> { @@ -201,7 +203,7 @@ impl consensus_common::Proposer<::Block> for Pro ) } - let inherent_data = InherentData::new(timestamp, offline_indices); + let inherent_data = BasicInherentData::new(timestamp, offline_indices); let block = self.client.build_block( &self.parent_id, diff --git a/core/service/test/src/lib.rs b/core/service/test/src/lib.rs index 7ffa783e97..fdb39ed991 100644 --- a/core/service/test/src/lib.rs +++ b/core/service/test/src/lib.rs @@ -180,9 +180,9 @@ impl TestNet { } } -pub fn connectivity(spec: FactoryChainSpec) where +pub fn connectivity(spec: FactoryChainSpec) where ::RuntimeApi: - client::block_builder::api::BlockBuilder<::Block> + client::block_builder::api::BlockBuilder<::Block, Inherent> { const NUM_NODES: u32 = 10; { @@ -224,7 +224,7 @@ where B: Fn(&F::FullService) -> ImportBlock, E: Fn(&F::FullService) -> FactoryExtrinsic, ::RuntimeApi: - client::block_builder::api::BlockBuilder<::Block> + + client::block_builder::api::BlockBuilder<::Block, ()> + client::runtime_api::TaggedTransactionQueue<::Block> { const NUM_NODES: u32 = 10; @@ -263,7 +263,7 @@ pub fn consensus(spec: FactoryChainSpec, authorities: Vec) where F: ServiceFactory, ::RuntimeApi: - client::block_builder::api::BlockBuilder<::Block> + client::block_builder::api::BlockBuilder<::Block, ()> { const NUM_NODES: u32 = 20; const NUM_BLOCKS: u64 = 200; diff --git a/core/sr-primitives/src/lib.rs b/core/sr-primitives/src/lib.rs index 86c93ab3d7..e07711668c 100644 --- a/core/sr-primitives/src/lib.rs +++ b/core/sr-primitives/src/lib.rs @@ -463,17 +463,17 @@ macro_rules! impl_outer_log { } //TODO: https://github.com/paritytech/substrate/issues/1022 -/// Inherent data to include in a block. +/// Basic Inherent data to include in a block; used by simple runtimes. #[derive(Encode, Decode)] -pub struct InherentData { +pub struct BasicInherentData { /// Current timestamp. pub timestamp: u64, /// Indices of offline validators. pub consensus: Vec, } -impl InherentData { - /// Create a new `InherentData` instance. +impl BasicInherentData { + /// Create a new `BasicInherentData` instance. pub fn new(timestamp: u64, consensus: Vec) -> Self { Self { timestamp, diff --git a/core/test-client/src/block_builder_ext.rs b/core/test-client/src/block_builder_ext.rs index 3c334b07a1..651559114a 100644 --- a/core/test-client/src/block_builder_ext.rs +++ b/core/test-client/src/block_builder_ext.rs @@ -29,9 +29,9 @@ pub trait BlockBuilderExt { fn push_transfer(&mut self, transfer: runtime::Transfer) -> Result<(), client::error::Error>; } -impl<'a, A> BlockBuilderExt for client::block_builder::BlockBuilder<'a, runtime::Block, A> where +impl<'a, A> BlockBuilderExt for client::block_builder::BlockBuilder<'a, runtime::Block, (), A> where A: ProvideRuntimeApi + client::blockchain::HeaderBackend + 'a, - A::Api: BlockBuilder + A::Api: BlockBuilder { fn push_transfer(&mut self, transfer: runtime::Transfer) -> Result<(), client::error::Error> { self.push(sign_tx(transfer)) diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index 50a0134e90..e3228cae3c 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -56,7 +56,7 @@ use runtime_primitives::{ traits::{ BlindCheckable, BlakeTwo256, Block as BlockT, Extrinsic as ExtrinsicT, GetNodeBlockType, GetRuntimeBlockType - }, InherentData, CheckInherentError + }, CheckInherentError }; use runtime_version::RuntimeVersion; pub use primitives::hash::H256; @@ -220,7 +220,7 @@ impl_runtime_apis! { } } - impl block_builder_api::BlockBuilder for Runtime { + impl block_builder_api::BlockBuilder for Runtime { fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult { system::execute_transaction(extrinsic) } @@ -229,11 +229,11 @@ impl_runtime_apis! { system::finalise_block() } - fn inherent_extrinsics(_data: InherentData) -> Vec<::Extrinsic> { + fn inherent_extrinsics(_data: ()) -> Vec<::Extrinsic> { unimplemented!() } - fn check_inherents(_block: Block, _data: InherentData) -> Result<(), CheckInherentError> { + fn check_inherents(_block: Block, _data: ()) -> Result<(), CheckInherentError> { unimplemented!() } diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index c9643519e97b7a7b59c399d69a27dd5f856bd84f..62fa99174ff864ccc8ebd34f7f1b21a1bb41b74f 100644 GIT binary patch literal 225459 zcmd443xHi!eeb{bKKnf8oH;Wm4tMz`qzqR&0=S&j7 z*89JI!tA}?>$iTd^;^HS_Bz4Hrn@hw55go+ZbofsVr z3X1k9x@Thh?x{`trmkHR#7eBU5_j+06%>^=TWQygPHmc;8lM=sZgdk>#)Hzd;@d`V za82~8_++biP*%wqO5L(^bYvoH#+7bZY2Wa~`1q6qZccmhmTe=uuN$4*WZ4z9)~)QR zmyO@BY1#5ML6?#iD(RY?BRfWyZ(6=;^`=qaADtMP8r`~SYGV7St8AdmRLRk;%U7*h zwszC?qZ8Y&y)md3hF8b6xT~vB=nCUfp*xI&FpR@`7ysh8E3Vb!I)8D!UL%#L{)vcj zG29b&brlO?FrzfLus=)>95@=(_6O;MhuhxegHfZjYjoH6#EnrfcM~|=x_x4F3k2D> zd&|`J@!gxIMy}a88V0pZo3@RP?Adh9$mD1ttZv%0b!2LU(QGY5Wq_TeXwa;U?3>y) zKCyjj`{-n_5TcE4**7)H@W;382o^QA?4M6x(Ww!&6fB*6JvjtN!OO_* z$r0;4xTtqz&z_w(ZUQ&3#N_rZ!SbGKx9@ImWW}uQySI%_jKVN^smWltcgwcXEjt*H z%bN_=)o6F?_%4`WbZhXW>NO)fM|N)+-86n}@Z_$ZFi68%<%|VqKV@|?XKwY!_eHB8 z0@M4W^{szNkj7(!QNX*RcYpM>dXPkEIM!cCqK)-f;i>*ODey1e*w-JY!4*oqtR5x- z6`I8)ZUp^>%j!i+5J@8b#ZT{Rr1O$uBkYc9u3SMOU$j74Qdn)>#$!qBLIyxn<$=Xu zP�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 delta 6528 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 + service_test::connectivity::(integration_test_config()); } } diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs index e9b32db752..e2336acafd 100644 --- a/node/primitives/src/lib.rs +++ b/node/primitives/src/lib.rs @@ -38,6 +38,8 @@ use runtime_primitives::generic; use primitives::bytes; use runtime_primitives::traits::{BlakeTwo256, self}; +pub use runtime_primitives::BasicInherentData as InherentData; + /// An index to a block. pub type BlockNumber = u64; diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index 6abd5c2b05..b8ff92d1dd 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -63,7 +63,7 @@ use grandpa::fg_primitives::{self, ScheduledChange, id::*}; use client::{ block_builder::api as block_builder_api, runtime_api::{self as client_api, id::*} }; -use runtime_primitives::{ApplyResult, CheckInherentError}; +use runtime_primitives::{ApplyResult, CheckInherentError, BasicInherentData}; use runtime_primitives::transaction_validity::TransactionValidity; use runtime_primitives::generic; use runtime_primitives::traits::{ @@ -209,7 +209,8 @@ impl grandpa::Trait for Runtime { construct_runtime!( pub enum Runtime with Log(InternalLog: DigestItem) where Block = Block, - NodeBlock = node_primitives::Block + NodeBlock = node_primitives::Block, + InherentData = BasicInherentData { System: system::{default, Log(ChangesTrieRoot)}, Timestamp: timestamp::{Module, Call, Storage, Config, Inherent}, @@ -274,7 +275,7 @@ impl_runtime_apis! { } } - impl block_builder_api::BlockBuilder for Runtime { + impl block_builder_api::BlockBuilder for Runtime { fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult { Executive::apply_extrinsic(extrinsic) } @@ -283,7 +284,7 @@ impl_runtime_apis! { Executive::finalise_block() } - fn inherent_extrinsics(data: runtime_primitives::InherentData) -> Vec<::Extrinsic> { + fn inherent_extrinsics(data: BasicInherentData) -> Vec<::Extrinsic> { let mut inherent = Vec::new(); inherent.extend( @@ -302,8 +303,8 @@ impl_runtime_apis! { inherent.into_iter().map(|v| v.1).collect() } - fn check_inherents(block: Block, data: runtime_primitives::InherentData) -> Result<(), CheckInherentError> { - InherentData::check_inherents(data, block) + fn check_inherents(block: Block, data: BasicInherentData) -> Result<(), CheckInherentError> { + Runtime::check_inherents(block, data) } fn random_seed() -> ::Hash { diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index fb0d9a9d0403b5eee808701470d6b4e4cfb45428..7c0b3a2619d39db668ae46e4ac13a6af21c97737 100644 GIT binary patch literal 858430 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

    lpGH$?_Bb+@jkfsse;+3+XRMHF<{DO z1T(IS-zL3N8%cwvfJZ-Kxby#j&# z;>iEnvN$HZr#D8!=qd}I!fA$BZnTIhQz1$#yI9nA27O?3VKqjGC>PxD!4t=?25%^p zMjK>jV!t2z^5n+DwhlW9D-(LxAWVOl)>_#p+N1$A>+WRx4|x zPPZs~ea;A2LZ@7;r#p+%i95oOu2?foWRfXR@DQxoM}mVJNp}WYc4&3 zSDSem9}*7g=SmYSYmvfE?Z}Bdt5THH7~--CBhv}HvNnnx9@cW45Q@2o?!Y8f#eUeD z^K7+bwaPIJMh5C*EJyV+=>+AnDTcLe*VNRot?=NS;Xm_Js$P$H+fcHh}v=j$s zN{!)KXdg_U1>8BdFO$P~ZUiAHw#Ek&FJS}}S8%|kR5Wa3jVgf!eR9y1L+&u|%92Aa zM5bL?qLarz^9iI3zP#wu4F2%wzAJdV5-L)_-g^*u3!gBM`x0v-jX5iu3rU z$QUQtDXb3acq~b(l|z_Xe@r`zDfBsonc)*lyVI6^`$^M;Dt5DiQp>oSNWm_;VzqDz zx9{^}T`~MxTx?**@}QvEJ*+lYGxq*#Au<{MvDJ>~iSWW!8FL!~+k4158sHs47U7b?1Xvjh1X2k39j-wG)q5IvRRm-d`-jE6u3((xVyimdMIDvuC^-?G^3VDS%{t2`(N&H3%j$wKiCZxzsCD+fWi-hS~;PP}oFrMM#lquDD5Ak>`!wk;P)=V~+tqx44G! zR=!*K%{xVEP_SmBk#xOb{bN4BF?Q)gaSX4CV^=kA2{lg)3b%x*dBI%GvzY)xvG#?$ z3^i}1QS(F)mRl5?Q(bsV&C7-FRP#b=AXd~rL8C~WLR~84i5Gz3#K;U7WfWkvlTt6G z`ewjj%2@*BG-$hSXqTyihHg_1@i`;(0ZUxckYma@ko_Q(Mv`m~c7z&l;|=(}nD!{y zk|qlROx7L&0g4`*0#>$bk7+DkLVLvixl?<@#`9nU^slM*`0rM`v7dx_`QwChkmy3x z@4A=7${eUH_lm_`Bqv^a7s+#&eU9(8izJIb1kwMGc9XERQ^=cllc26*4?Ek25{2_? zHk8==&KpXkL13|z=AaEFSnu@pouEFVuDv{XLr3pfvQh7m z?f2A0>{5NH?I`z>pU;j<4g$*ixB$Z~$vye_VD^>jx&vasnnb05RDMr*27~3G1-(oR|=e@Pk7hvij%;5H2L%#FYzWp`)Ni9 zbISYyb;zI>3dYVKp`XwyqzL+)QO?q1C$^#L={1@m7%6eb$@4}(gsC9dfDxrz5d!SD z%SHVl;FS8WLZ1+m184KFo=}t16bXcoywDVyQ9V&&JERnFGBRXfYnduw*+v#1`8JSB z^XHk)Cz_4y6PqxrPsDYUU51u#ZMfxiLe1f>G#aP9Smhm4#38a5SlWgqQeP%JJ} z4NZ+bKmjbxYS2i+?KDlwOhET0!+`YUgqf6@{7X}iup8!qD>}%T4sA4grye5s4wZy5 zkz)^_>_{IaJdhqHgv997r{uJ>^4pz`S46Sy^$!*dr0fea;N7fwl8B$qDyw%+ z30)x@V(6QIL0u3uoLN6Z&E1*5l(=57xe}K#4UTj;Z>*Hl*#XU!ytzNUh+UO@^Tq@E zl3kTcVf(Vl#-|WUEWr7MP__oaH3WCITPnJS_gOYNmhGl!JbY4O+XKy}g-NMc`S~=A ztOj)F!-!ndF!tKR8013Vtdz|Mkq{!}B<_!{Vp#i+PF`&S)*zCkbtQ99pg(8n8r7~z zwl%uV$WHcjnY1hn49+XIx_MxJzP+CF@*Cd5z1(b2O&#^J7>cpP3k{CR8*}8qx~5&{ z&@OjEc~GOBbz4Kh4R0QfL*N&h{S$jIQKYb4r^-8KqYU!>s%b;wcFXg0bZ1Rng|YQP zqbo#HKm6rW#@!J-Ff5SGlGCc9!QXp7^Z9YL`qpa9lGBRThCxLK6KfZESySMXI|>}h z;2;+~t#8YBo=41sYpq9UY&|{da#+j4&N$h_MUkwq6xu1@1tbOBS|vMn|zdsr8If1UoF#^O;g_`bJsO$ zJ-zhmk%4?OPa8)W2y~2*HpHZ&rJCKA#T{S46pw8d3UW8n0Qc(-4q}Fxq?ys5Ype8LQtk2xV+9-Z)UC*Ts6 za>(1CybtrW+oTPmG)lxBw710vG3ZFz$??*2d5-c?x0slyYonS>+yE2t7{gDl1ScpI z9K$BZ(L@2`;1j6v9)rd+E$9%AqfRk6jk`j;fcI$YXESPIC^1OlAJICGbMNguQ3rb! zRP{;hUh=)o7_LE6)x!7Kt)Tj1w}N;ABMHSt5&R-CwLc+B{9|wc4V|5xc_#yeNc=kz z6#Z`9&dBYtt1oXD?y=_+2PdpqCW9?|_2>Rk324d*Yb|vew6i+h>Y}=aR^}d{mI-@= zf%MDxqx}!u%eF$dlCT)n$5Ajxirm9H50KgQh7v!W=7}23=RDG%YElF#(8X=gmcUUB zHl-&G2gsJ5G#H?exw*jxfn#O2VhlgfWn$Ec7?yKdgsV* zwCNCdCFHispK&nv%m`;P6-5VMGg1LvNw96=2({7un161eBzdvWrQ}>40xz0mL<-nr zMq^R8T?T;y<%NrjWII(p#pu^miD-BqK#{I5e#7iUOEp}s(*;fL>EcfK`Rk!}*(Q|# zd~nP5>Vm^ZNRkXO`zs3G>`_v%LqBtTQj1=c6!cQ4_JkQ$sl46ew+DkBYbe^(kyh`| z^dn{&!8Adh&g7?=L@6dQ-O+N<20_PJ+2;C`w@DuAK8fX3x&lGYwp7X=` zo%V2H=u!{-LCVSlyreUEt!-cm9!K%3v!%z_X7+UFf!VUxC}2ujqtMPOolr%0m{`L- ziM$cIG*F6V$1{B^OEoK9T8ROf+!@UgiEe^>9;$ur-p{Ce(RTVP>$#$>M1B^@!5Zf2 zWqlGpyjq`*x67N|Z-ciuif4R1|BgB$d&*p5SM#zeL;gtcPV6WU(Jge-$8W8(zQUoa zw;XtEHgR|3l-9mZ3Q!c5abEybmpP-BE)yG39&#&uBqCxm3g)cEn#{=2a7STH@Ua>z&g_0u(z5JYFa-BPbI;V}D1qoOY-WeZP&=1mxrPcl zlp$QvxaJXsNHrGBP&^UyDl^E+z+=1>+Io|@ARgF4%JbBTjYTh2y%&xM^cG_|2V<~1 znl2-OB4YT=lhI_u&`=1oas4P^AjV!z8a|@@v6ac_K|yv!=++1C1U>rtTF||!NQ~6N zEGltG=U}M>%>=d_X**j{xqRXI1Re=OuGB~`$E?M|iP6qN*oXu3dLVFGzm(8Q#%Xai7}Rz=`;Yd)It(%V2YiSw7)^oqmb}8i;y}S zsd+L0agX(#k+K-OBu#i+T%J_y8BmW*~jT zp~-XL4YmOfXR@djAc^abcLkoT3Y>#yCz1w&{R~0v$y&Z+hFup!ggWPi2D)alhc5uT zCK?yxPXfKl8`mQNmNwoFwY$>z8aLx46V8Q?JJ}S~G8p?w0CH-psOX zj2Z(8OU@XjQ3)t$kQq_9Po5f+cMRl+ zdXnI2!2(0-mkn>4-z80;fYDkP2%h~IHZ=5j{s)L~BE@PaT`&9k-~feCLpb4ST0M9S zEk%|{kinaT#HZ1s&Vb1Enao0M@WJB)pP5<2zJ+;(uLJ^L-mO7(tcr?@N`C?8uc8#b zd7-#llMGxx>izfB`~Q2XCLR0$8t zF+NCyl8Kw7J4QOJCemA&ul&}cl)s_2$PZK_|D5QAB~Q>GLNmMfn1E+&GYBpLG$2ZJ zt=97ftfKu)yu?xa8IoFQKSOk@?Ptic&3hN2&WX0-y$T!+7*7FKe(*?%5zvMJMKlh` z6N7~zi9opBN zuBfFP%ad~!S^60$=9Fx`BG(x(h)ZL)m&_z@0DNffg zr*QP*m^#oxi5e!2Vl!OOPK`fcJ!EwHmPPBZ7iI`aGQwyX28~p=UV3u~XwHH?m*%%= zP4k+D!o0Zz-9@Gi?wgTj)Kgi~*{kv!L}lmSYKgm87-r;5t`O!e+SaYYxKHG&qTDD7 z+AOQ{H`m|&;OxB3-dlL=X!fGAH-`^a=O5eb9k0&YTs=NJf3riz&RY*WFgw3G?=2Df zR01xLEpbkXtw6PuAc?1hjl3IgloFVd1@{%>QI4>@c*r9mY%?DBNLXaYr-(0irn6#( zGJx2oEFco<7zt=b5gemo6iPRvP5(MK%Zq8f{B=IYOZp z!_h?B^(wtpuhQL4rN{KtSgmxhGoxwK9;Jh)k$yO<53o0I( zw^%EC;SmK^PX61%+n3U{>uW$6`j`9*KsNA;5kgqRn^sTs25unE8Nh7XtT!+^AxVI< zc_Ws}8)1t&(1N4hP@3nIzFqhRMkM^vH?0=v8(OX5*P9kJ^#&G)_o&}&H1Ls#6F-zT zrEgjg)fHWuNj)vA=xZo1dfr^r?W-5PLuNK zw7@H;S+P`cfl*GA>IqZ|hufDS{OIOJbUwaNezLd35gv<%i{|R;%d4ip^Lv+rYLi&Z~_8djzfC`q41^qk7G&dFqV?hk{XI>Xt zY3dBGtPTyv=ZWpTruYHk%>FVwPE}6n-bV351F1!aioZL+!pHR|1~PkY6pv_k1lOM( z$jEzD@pA)Q-BkwP&$`!l1k;M^$H}GZFZJs#8$$k}&0;SO^ZQ#MNy@%KG7`}Pk~b%i z;P(H<@tfHRAU9}sg1ou-mK!&3`PQ4>^w;04fqh7GxiB3+gmHqeIE9c?rt0DMPM2uR zVD+Y#9{=6i;!O~=<)S=1b?=Sii)crGtzR72f5G|2EmRzu@O=Vgd77Cjx$84s@ks-- z`z!}9q|wy;kFF%x(@N%l%Kp)TR#dbNq<%PVk=z<64bN2?9sqr){Lp}fD8OHT#F;qj zNAO=mgV%M8z(%nKyE$Nc+F8Bu6?I%-#|a0lOank;g06JR8r~o`ftras(u@33J#bFi zNVnW(X++UN0U&oyFnBbMbD_2BC)$_R6x=VBeFlM&0eP1w!AZy=ff9hApQ!)dlb!S3 z=I9-egZs=&+zFL^ow27qhq|{D7Lt7hFG;1lpkqdXzm`$p26oUxp*IpIpkH%9DlZne zi-P)Ofgu)s%lQ4!KI4}rDch+Mgh^%Box3p}C}_z-fjimNOQCC(+bVRe61vVVy!bq$ ztL0nLb%Oru(=ZSZ?OfNPxvMvhDXBi?l^wDq#RkO$5sm%(M`RkcXBzu&tsKChLZ}PJ zS1_UDFR_i^Od@Nk4bM4Fm~jun<$u23;vSH=Ks|ip_~DNGyIj2XuYKb;Tyx#k z-{d|&;l_CN?g=zEeX_yX#j`yci7n1{zG3`dRC^c+IO&h`_!wM4#4v?Wd={C#KaoER zXm1rvyIdP$0v@-F-z~j|yCmC?a^_c{<9`(`^&SN;aIxYx^FAKAvdIMOuX(r!+m6mZ z*eA1wme}4+ztl6W`v_(B-7tP{r`m_S<}3X>jFK#h6NV+6#gvZ@J&34l*4O&%0AYcR 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 V(!X-k+v2NC@2}lwU Date: Fri, 16 Nov 2018 16:16:10 +0100 Subject: [PATCH 061/243] Introduce a `PhantomData` field in `GenesisConfig` (#1116) This makes it possible to support `GenesisConfig`s that to do not use generic parameter. --- node/cli/src/chain_spec.rs | 24 +++++++++++++++++++++++- node/executor/src/lib.rs | 3 +++ srml/balances/src/mock.rs | 1 + srml/consensus/src/mock.rs | 1 + srml/contract/src/tests.rs | 2 ++ srml/council/src/lib.rs | 4 ++++ srml/democracy/src/lib.rs | 2 ++ srml/example/src/lib.rs | 1 + srml/executive/src/lib.rs | 1 + srml/session/src/lib.rs | 3 +++ srml/staking/src/mock.rs | 7 ++++++- srml/support/src/storage/generator.rs | 3 +++ srml/system/src/lib.rs | 1 - srml/timestamp/src/lib.rs | 15 ++++++++++++--- srml/treasury/src/lib.rs | 2 ++ 15 files changed, 64 insertions(+), 6 deletions(-) diff --git a/node/cli/src/chain_spec.rs b/node/cli/src/chain_spec.rs index d8bc5bad5d..ea634ab06e 100644 --- a/node/cli/src/chain_spec.rs +++ b/node/cli/src/chain_spec.rs @@ -59,6 +59,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig { consensus: Some(ConsensusConfig { code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), // TODO change authorities: initial_authorities.clone(), + _genesis_phantom_data: Default::default(), }), system: None, balances: Some(BalancesConfig { @@ -69,10 +70,12 @@ fn staging_testnet_config_genesis() -> GenesisConfig { transfer_fee: 1 * CENTS, creation_fee: 1 * CENTS, reclaim_rebate: 1 * CENTS, + _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { validators: initial_authorities.iter().cloned().map(Into::into).collect(), session_length: 5 * MINUTES, + _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { current_era: 0, @@ -86,11 +89,13 @@ fn staging_testnet_config_genesis() -> GenesisConfig { bonding_duration: 1 * DAYS, offline_slash_grace: 4, minimum_validator_count: 4, + _genesis_phantom_data: Default::default(), }), democracy: Some(DemocracyConfig { launch_period: 5 * MINUTES, // 1 day per public referendum voting_period: 5 * MINUTES, // 3 days to discuss & vote on an active referendum minimum_deposit: 50 * DOLLARS, // 12000 as the minimum deposit for a referendum + _genesis_phantom_data: Default::default(), }), council_seats: Some(CouncilSeatsConfig { active_council: vec![], @@ -103,19 +108,23 @@ fn staging_testnet_config_genesis() -> GenesisConfig { term_duration: 28 * DAYS, desired_seats: 0, inactive_grace_period: 1, // one additional vote should go by before an inactive voter can be reaped. + _genesis_phantom_data: Default::default(), }), council_voting: Some(CouncilVotingConfig { cooloff_period: 4 * DAYS, voting_period: 1 * DAYS, + _genesis_phantom_data: Default::default(), }), timestamp: Some(TimestampConfig { period: SECS_PER_BLOCK, + _genesis_phantom_data: Default::default(), }), treasury: Some(TreasuryConfig { proposal_bond: Permill::from_percent(5), proposal_bond_minimum: 1 * DOLLARS, spend_period: 1 * DAYS, burn: Permill::from_percent(50), + _genesis_phantom_data: Default::default(), }), contract: Some(ContractConfig { contract_fee: 1 * CENTS, @@ -125,9 +134,11 @@ fn staging_testnet_config_genesis() -> GenesisConfig { max_depth: 1024, block_gas_limit: 10_000_000, current_schedule: Default::default(), + _genesis_phantom_data: Default::default(), }), upgrade_key: Some(UpgradeKeyConfig { key: endowed_accounts[0].clone(), + _genesis_phantom_data: Default::default(), }), } } @@ -175,6 +186,7 @@ pub fn testnet_genesis( consensus: Some(ConsensusConfig { code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), authorities: initial_authorities.clone(), + _genesis_phantom_data: Default::default(), }), system: None, balances: Some(BalancesConfig { @@ -185,10 +197,12 @@ pub fn testnet_genesis( creation_fee: 0, reclaim_rebate: 0, balances: endowed_accounts.iter().map(|&k| (k.into(), (1 << 60))).collect(), + _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { validators: initial_authorities.iter().cloned().map(Into::into).collect(), session_length: 10, + _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { current_era: 0, @@ -202,11 +216,13 @@ pub fn testnet_genesis( current_offline_slash: 0, current_session_reward: 0, offline_slash_grace: 0, + _genesis_phantom_data: Default::default(), }), democracy: Some(DemocracyConfig { launch_period: 9, voting_period: 18, minimum_deposit: 10, + _genesis_phantom_data: Default::default(), }), council_seats: Some(CouncilSeatsConfig { active_council: endowed_accounts.iter() @@ -221,19 +237,23 @@ pub fn testnet_genesis( term_duration: 1000000, desired_seats: (endowed_accounts.len() - initial_authorities.len()) as u32, inactive_grace_period: 1, + _genesis_phantom_data: Default::default(), }), council_voting: Some(CouncilVotingConfig { cooloff_period: 75, voting_period: 20, + _genesis_phantom_data: Default::default(), }), timestamp: Some(TimestampConfig { period: 5, // 5 second block time. + _genesis_phantom_data: Default::default(), }), treasury: Some(TreasuryConfig { proposal_bond: Permill::from_percent(5), proposal_bond_minimum: 1_000_000, spend_period: 12 * 60 * 24, burn: Permill::from_percent(50), + _genesis_phantom_data: Default::default(), }), contract: Some(ContractConfig { contract_fee: 21, @@ -243,9 +263,11 @@ pub fn testnet_genesis( max_depth: 1024, block_gas_limit: 10_000_000, current_schedule: Default::default(), + _genesis_phantom_data: Default::default(), }), upgrade_key: Some(UpgradeKeyConfig { key: upgrade_key, + _genesis_phantom_data: Default::default(), }), } } @@ -289,7 +311,7 @@ mod tests { fn local_testnet_genesis_instant() -> GenesisConfig { let mut genesis = local_testnet_genesis(); - genesis.timestamp = Some(TimestampConfig { period: 0 }); + genesis.timestamp = Some(TimestampConfig { period: 0, _genesis_phantom_data: Default::default() }); genesis } diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index 704f2d342f..aba525ca0e 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -230,10 +230,12 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { session_length: 2, validators: vec![One.to_raw_public().into(), Two.to_raw_public().into(), three], + _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { sessions_per_era: 2, @@ -247,6 +249,7 @@ mod tests { current_offline_slash: 0, current_session_reward: 0, offline_slash_grace: 0, + _genesis_phantom_data: Default::default(), }), democracy: Some(Default::default()), council_seats: Some(Default::default()), diff --git a/srml/balances/src/mock.rs b/srml/balances/src/mock.rs index 5fb6bb80dc..b3355636b3 100644 --- a/srml/balances/src/mock.rs +++ b/srml/balances/src/mock.rs @@ -104,6 +104,7 @@ impl ExtBuilder { transfer_fee: self.transfer_fee, creation_fee: self.creation_fee, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } diff --git a/srml/consensus/src/mock.rs b/srml/consensus/src/mock.rs index e3a13d4597..88eb669a84 100644 --- a/srml/consensus/src/mock.rs +++ b/srml/consensus/src/mock.rs @@ -54,6 +54,7 @@ pub fn new_test_ext(authorities: Vec) -> runtime_io::TestExternalities{ code: vec![], authorities, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } diff --git a/srml/contract/src/tests.rs b/srml/contract/src/tests.rs index 27d6e59a95..db339ecde1 100644 --- a/srml/contract/src/tests.rs +++ b/srml/contract/src/tests.rs @@ -131,6 +131,7 @@ impl ExtBuilder { transfer_fee: self.transfer_fee, creation_fee: self.creation_fee, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage() .unwrap().0, ); @@ -143,6 +144,7 @@ impl ExtBuilder { max_depth: 100, block_gas_limit: self.block_gas_limit, current_schedule: Default::default(), + _genesis_phantom_data: Default::default(), }.build_storage() .unwrap().0, ); diff --git a/srml/council/src/lib.rs b/srml/council/src/lib.rs index 26d88c6c7b..2ea0def3a5 100644 --- a/srml/council/src/lib.rs +++ b/srml/council/src/lib.rs @@ -122,11 +122,13 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(democracy::GenesisConfig::{ launch_period: 1, voting_period: 3, minimum_deposit: 1, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(seats::GenesisConfig:: { candidacy_bond: 9, @@ -143,10 +145,12 @@ mod tests { presentation_duration: 2, desired_seats: 2, term_duration: 5, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(voting::GenesisConfig:: { cooloff_period: 2, voting_period: 1, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/democracy/src/lib.rs b/srml/democracy/src/lib.rs index 0c589d5893..d2d2b6e4f9 100644 --- a/srml/democracy/src/lib.rs +++ b/srml/democracy/src/lib.rs @@ -358,11 +358,13 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ launch_period: 1, voting_period: 1, minimum_deposit: 1, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/example/src/lib.rs b/srml/example/src/lib.rs index 8dcbb7094b..9ad2f6fdb8 100644 --- a/srml/example/src/lib.rs +++ b/srml/example/src/lib.rs @@ -313,6 +313,7 @@ mod tests { t.extend(GenesisConfig::{ dummy: 42, foo: 24, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } diff --git a/srml/executive/src/lib.rs b/srml/executive/src/lib.rs index 005b8508db..c5aded4a68 100644 --- a/srml/executive/src/lib.rs +++ b/srml/executive/src/lib.rs @@ -327,6 +327,7 @@ mod tests { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); let xt = primitives::testing::TestXt(Some(1), 0, Call::transfer(2.into(), 69.into())); let mut t = runtime_io::TestExternalities::::new(t); diff --git a/srml/session/src/lib.rs b/srml/session/src/lib.rs index 99bf182cf8..33ac3dbabf 100644 --- a/srml/session/src/lib.rs +++ b/srml/session/src/lib.rs @@ -270,13 +270,16 @@ mod tests { t.extend(consensus::GenesisConfig::{ code: vec![], authorities: vec![1, 2, 3], + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(timestamp::GenesisConfig::{ period: 5, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ session_length: 2, validators: vec![1, 2, 3], + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/staking/src/mock.rs b/srml/staking/src/mock.rs index b22af1b1b5..bfef4653a6 100644 --- a/srml/staking/src/mock.rs +++ b/srml/staking/src/mock.rs @@ -88,10 +88,12 @@ pub fn new_test_ext( t.extend(consensus::GenesisConfig::{ code: vec![], authorities: vec![], + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(session::GenesisConfig::{ session_length, validators: vec![10, 20], + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(balances::GenesisConfig::{ balances: if monied { @@ -109,6 +111,7 @@ pub fn new_test_ext( transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ sessions_per_era, @@ -122,9 +125,11 @@ pub fn new_test_ext( current_session_reward: reward, current_offline_slash: 20, offline_slash_grace: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(timestamp::GenesisConfig::{ - period: 5 + period: 5, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); runtime_io::TestExternalities::new(t) } diff --git a/srml/support/src/storage/generator.rs b/srml/support/src/storage/generator.rs index 31d583d6c9..60e26e8aee 100644 --- a/srml/support/src/storage/generator.rs +++ b/srml/support/src/storage/generator.rs @@ -627,6 +627,8 @@ macro_rules! __generate_genesis_config { #[serde(rename_all = "camelCase")] #[serde(deny_unknown_fields)] pub struct GenesisConfig<$traitinstance: $traittype> { + #[serde(skip)] + pub _genesis_phantom_data: $crate::storage::generator::PhantomData<$traitinstance>, $(pub $fieldname : $fieldtype ,)* $( $(#[$attr])* pub $extrafieldname : $extrafieldty ,)* } @@ -635,6 +637,7 @@ macro_rules! __generate_genesis_config { impl<$traitinstance: $traittype> Default for GenesisConfig<$traitinstance> { fn default() -> Self { GenesisConfig { + _genesis_phantom_data: Default::default(), $($fieldname : $fielddefault ,)* $($extrafieldname : $extrafielddefault ,)* } diff --git a/srml/system/src/lib.rs b/srml/system/src/lib.rs index c3cffda04f..666348254f 100644 --- a/srml/system/src/lib.rs +++ b/srml/system/src/lib.rs @@ -201,7 +201,6 @@ decl_storage! { } add_extra_genesis { config(changes_trie_config): Option; - config(_phantom): ::std::marker::PhantomData; build(|storage: &mut primitives::StorageMap, _: &mut primitives::ChildrenStorageMap, config: &GenesisConfig| { use codec::Encode; diff --git a/srml/timestamp/src/lib.rs b/srml/timestamp/src/lib.rs index 35c82b532f..db1e2934db 100644 --- a/srml/timestamp/src/lib.rs +++ b/srml/timestamp/src/lib.rs @@ -211,7 +211,10 @@ mod tests { #[test] fn timestamp_works() { let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; - t.extend(GenesisConfig:: { period: 0 }.build_storage().unwrap().0); + t.extend(GenesisConfig:: { + period: 5, + _genesis_phantom_data: Default::default() + }.build_storage().unwrap().0); with_externalities(&mut TestExternalities::new(t), || { Timestamp::set_timestamp(42); @@ -224,7 +227,10 @@ mod tests { #[should_panic(expected = "Timestamp must be updated only once in the block")] fn double_timestamp_should_fail() { let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; - t.extend(GenesisConfig:: { period: 5 }.build_storage().unwrap().0); + t.extend(GenesisConfig:: { + period: 5, + _genesis_phantom_data: Default::default() + }.build_storage().unwrap().0); with_externalities(&mut TestExternalities::new(t), || { Timestamp::set_timestamp(42); @@ -237,7 +243,10 @@ mod tests { #[should_panic(expected = "Timestamp must increment by at least between sequential blocks")] fn block_period_is_enforced() { let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; - t.extend(GenesisConfig:: { period: 5 }.build_storage().unwrap().0); + t.extend(GenesisConfig:: { + period: 5, + _genesis_phantom_data: Default::default() + }.build_storage().unwrap().0); with_externalities(&mut TestExternalities::new(t), || { Timestamp::set_timestamp(42); diff --git a/srml/treasury/src/lib.rs b/srml/treasury/src/lib.rs index 340ab48a8c..2ec3deffce 100644 --- a/srml/treasury/src/lib.rs +++ b/srml/treasury/src/lib.rs @@ -330,12 +330,14 @@ mod tests { creation_fee: 0, existential_deposit: 0, reclaim_rebate: 0, + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.extend(GenesisConfig::{ proposal_bond: Permill::from_percent(5), proposal_bond_minimum: 1, spend_period: 2, burn: Permill::from_percent(50), + _genesis_phantom_data: Default::default(), }.build_storage().unwrap().0); t.into() } -- GitLab From 96cee792a34d14f040bf1bf88d86391567b474c0 Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Fri, 16 Nov 2018 17:16:42 +0100 Subject: [PATCH 062/243] Update wasmi (#1119) * Update wasmi to 0.4.2 * Add simple benchmarks. --- Cargo.lock | 17 +++++----------- core/executor/Cargo.toml | 2 +- core/primitives/Cargo.toml | 2 +- core/sr-sandbox/Cargo.toml | 2 +- core/test-runtime/wasm/Cargo.lock | 15 ++++---------- .../substrate_test_runtime.compact.wasm | Bin 45150 -> 45142 bytes node/executor/Cargo.toml | 3 +++ node/executor/src/lib.rs | 19 ++++++++++++++++++ node/runtime/wasm/Cargo.lock | 17 +++++----------- .../release/node_runtime.compact.wasm | Bin 612946 -> 620256 bytes 10 files changed, 39 insertions(+), 38 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 08ee2e5604..7a7ba66182 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1661,11 +1661,6 @@ dependencies = [ "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "nan-preserving-float" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "native-tls" version = "0.2.2" @@ -2609,7 +2604,7 @@ dependencies = [ "sr-std 0.1.0", "substrate-primitives 0.1.0", "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3177,7 +3172,7 @@ dependencies = [ "substrate-state-machine 0.1.0", "substrate-trie 0.4.0", "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3313,7 +3308,7 @@ dependencies = [ "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4156,12 +4151,11 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4473,7 +4467,6 @@ dependencies = [ "checksum multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" "checksum multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" "checksum names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" -"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" "checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" @@ -4650,7 +4643,7 @@ dependencies = [ "checksum wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "182ae543249ccf2705f324d233891c1176fca142e137b55ba43d9dbfe93f18a2" "checksum wabt-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ca77c6b934a2b32618941b2f565aac43b8cb7141378c3b4fba4d8fcdcd57da3" "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" -"checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" +"checksum wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8a60b9508cff2b7c27ed41200dd668806280740fadc8c88440e9c88625e84f1a" "checksum websocket 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c9faed2bff8af2ea6b9f8b917d3d00b467583f6781fe3def174a9e33c879703" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" diff --git a/core/executor/Cargo.toml b/core/executor/Cargo.toml index a3de26a3cb..c6cddf341c 100644 --- a/core/executor/Cargo.toml +++ b/core/executor/Cargo.toml @@ -14,7 +14,7 @@ substrate-state-machine = { path = "../state-machine" } sr-version = { path = "../sr-version" } serde = "1.0" serde_derive = "1.0" -wasmi = { version = "0.4.1" } +wasmi = { version = "0.4.2" } byteorder = "1.1" lazy_static = "1.0" parking_lot = "*" diff --git a/core/primitives/Cargo.toml b/core/primitives/Cargo.toml index 171841f1e2..5821a5fe94 100644 --- a/core/primitives/Cargo.toml +++ b/core/primitives/Cargo.toml @@ -15,7 +15,7 @@ serde_derive = { version = "1.0", optional = true } uint = { version = "0.5.0-beta", default-features = false } twox-hash = { version = "1.1.0", optional = true } byteorder = { version = "1.1", default-features = false } -wasmi = { version = "0.4.1", optional = true } +wasmi = { version = "0.4.2", optional = true } hash-db = { git = "https://github.com/paritytech/trie", default-features = false } hash256-std-hasher = { git = "https://github.com/paritytech/trie", default-features = false } ring = { version = "0.12", optional = true } diff --git a/core/sr-sandbox/Cargo.toml b/core/sr-sandbox/Cargo.toml index 8cb35aed79..daa9408296 100755 --- a/core/sr-sandbox/Cargo.toml +++ b/core/sr-sandbox/Cargo.toml @@ -8,7 +8,7 @@ build = "build.rs" rustc_version = "0.2" [dependencies] -wasmi = { version = "0.4.1", optional = true } +wasmi = { version = "0.4.2", optional = true } substrate-primitives = { path = "../primitives", default-features = false } sr-std = { path = "../sr-std", default-features = false } parity-codec = { version = "2.1", default-features = false } diff --git a/core/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock index f9c0964148..c268f0c400 100644 --- a/core/test-runtime/wasm/Cargo.lock +++ b/core/test-runtime/wasm/Cargo.lock @@ -472,11 +472,6 @@ dependencies = [ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "nan-preserving-float" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "net2" version = "0.2.33" @@ -985,7 +980,7 @@ dependencies = [ "substrate-serializer 0.1.0", "substrate-state-machine 0.1.0", "substrate-trie 0.4.0", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1019,7 +1014,7 @@ dependencies = [ "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.5.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1379,12 +1374,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wasmi" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1507,7 +1501,6 @@ dependencies = [ "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" @@ -1586,7 +1579,7 @@ dependencies = [ "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" +"checksum wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8a60b9508cff2b7c27ed41200dd668806280740fadc8c88440e9c88625e84f1a" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 6f1c85ae97645c8308ac087647b253a9f2ae111a..81ccaf36b1c3817530fb1368583010dd8c077d3f 100644 GIT binary patch delta 7384 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 Ef93X%5&!@I delta 7258 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 cUY}3TyuDeD#Fj}oV^W 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 delta 157546 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%0D$f*rfOn_#x%OF=~S&NB+TvQeX6>AH3 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 BUd8|b -- GitLab From 468d4698ad91385c385225215aa81290697e90cb Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Sat, 17 Nov 2018 20:04:53 +0300 Subject: [PATCH 063/243] Pruning changes trie without digests (#952) * pruning changes tries without digests * u64::max_value() --- Cargo.lock | 17 +- core/client/db/src/lib.rs | 160 +++++++++++------- core/client/src/runtime_api/macros.rs | 82 +-------- core/consensus/aura/src/lib.rs | 45 ++--- core/executor/Cargo.toml | 2 +- core/primitives/Cargo.toml | 2 +- core/primitives/src/changes_trie.rs | 27 +++ core/sr-sandbox/Cargo.toml | 2 +- core/state-machine/src/changes_trie/prune.rs | 83 ++++++--- core/test-runtime/wasm/Cargo.lock | 15 +- .../substrate_test_runtime.compact.wasm | Bin 45142 -> 223056 bytes node/cli/src/chain_spec.rs | 24 +-- node/cli/src/service.rs | 28 ++- node/executor/Cargo.toml | 3 - node/executor/src/lib.rs | 22 --- node/runtime/wasm/Cargo.lock | 17 +- .../release/node_runtime.compact.wasm | Bin 620256 -> 831981 bytes srml/balances/src/mock.rs | 1 - srml/consensus/src/mock.rs | 1 - srml/contract/src/tests.rs | 2 - srml/council/src/lib.rs | 4 - srml/democracy/src/lib.rs | 2 - srml/example/src/lib.rs | 1 - srml/executive/src/lib.rs | 1 - srml/session/src/lib.rs | 3 - srml/staking/src/mock.rs | 7 +- srml/support/src/storage/generator.rs | 3 - srml/system/src/lib.rs | 1 + srml/timestamp/src/lib.rs | 15 +- srml/treasury/src/lib.rs | 2 - 30 files changed, 257 insertions(+), 315 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7a7ba66182..08ee2e5604 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1661,6 +1661,11 @@ dependencies = [ "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "nan-preserving-float" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "native-tls" version = "0.2.2" @@ -2604,7 +2609,7 @@ dependencies = [ "sr-std 0.1.0", "substrate-primitives 0.1.0", "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3172,7 +3177,7 @@ dependencies = [ "substrate-state-machine 0.1.0", "substrate-trie 0.4.0", "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3308,7 +3313,7 @@ dependencies = [ "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4151,11 +4156,12 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.4.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4467,6 +4473,7 @@ dependencies = [ "checksum multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" "checksum multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" "checksum names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" +"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" "checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" @@ -4643,7 +4650,7 @@ dependencies = [ "checksum wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "182ae543249ccf2705f324d233891c1176fca142e137b55ba43d9dbfe93f18a2" "checksum wabt-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ca77c6b934a2b32618941b2f565aac43b8cb7141378c3b4fba4d8fcdcd57da3" "checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" -"checksum wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8a60b9508cff2b7c27ed41200dd668806280740fadc8c88440e9c88625e84f1a" +"checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" "checksum websocket 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c9faed2bff8af2ea6b9f8b917d3d00b467583f6781fe3def174a9e33c879703" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index c047c93989..bdc82bfc35 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -1277,63 +1277,7 @@ mod tests { } #[test] - fn changes_trie_storage_works_with_forks() { - let backend = Backend::::new_test(1000, 100); - - let changes0 = vec![(b"k0".to_vec(), b"v0".to_vec())]; - let changes1 = vec![(b"k1".to_vec(), b"v1".to_vec())]; - let changes2 = vec![(b"k2".to_vec(), b"v2".to_vec())]; - let block0 = insert_header(&backend, 0, Default::default(), changes0.clone(), Default::default()); - let block1 = insert_header(&backend, 1, block0, changes1.clone(), Default::default()); - let block2 = insert_header(&backend, 2, block1, changes2.clone(), Default::default()); - - let changes2_1_0 = vec![(b"k3".to_vec(), b"v3".to_vec())]; - let changes2_1_1 = vec![(b"k4".to_vec(), b"v4".to_vec())]; - let block2_1_0 = insert_header(&backend, 3, block2, changes2_1_0.clone(), Default::default()); - let block2_1_1 = insert_header(&backend, 4, block2_1_0, changes2_1_1.clone(), Default::default()); - - let changes2_2_0 = vec![(b"k5".to_vec(), b"v5".to_vec())]; - let changes2_2_1 = vec![(b"k6".to_vec(), b"v6".to_vec())]; - let block2_2_0 = insert_header(&backend, 3, block2, changes2_2_0.clone(), Default::default()); - let block2_2_1 = insert_header(&backend, 4, block2_2_0, changes2_2_1.clone(), Default::default()); - - // finalize block1 - backend.changes_tries_storage.meta.write().finalized_number = 1; - - // branch1: when asking for finalized block hash - let (changes1_root, _) = prepare_changes(changes1); - let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; - assert_eq!(backend.changes_tries_storage.root(&anchor, 1), Ok(Some(changes1_root))); - - // branch2: when asking for finalized block hash - let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_2_1, number: 4 }; - assert_eq!(backend.changes_tries_storage.root(&anchor, 1), Ok(Some(changes1_root))); - - // branch1: when asking for non-finalized block hash (search by traversal) - let (changes2_1_0_root, _) = prepare_changes(changes2_1_0); - let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; - assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_1_0_root))); - - // branch2: when asking for non-finalized block hash (search using canonicalized hint) - let (changes2_2_0_root, _) = prepare_changes(changes2_2_0); - let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_2_1, number: 4 }; - assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); - - // finalize first block of branch2 (block2_2_0) - backend.changes_tries_storage.meta.write().finalized_number = 3; - - // branch2: when asking for finalized block of this branch - assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); - - // branch1: when asking for finalized block of other branch - // => result is incorrect (returned for the block of branch1), but this is expected, - // because the other fork is abandoned (forked before finalized header) - let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; - assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); - } - - #[test] - fn changes_tries_are_pruned_on_finalization() { + fn changes_tries_with_digest_are_pruned_on_finalization() { let mut backend = Backend::::new_test(1000, 100); backend.changes_tries_storage.meta.write().finalized_number = 1000; backend.changes_tries_storage.min_blocks_to_keep = Some(8); @@ -1410,6 +1354,108 @@ mod tests { assert!(backend.changes_tries_storage.get(&root12).unwrap().is_some()); } + #[test] + fn changes_tries_without_digest_are_pruned_on_finalization() { + let mut backend = Backend::::new_test(1000, 100); + backend.changes_tries_storage.min_blocks_to_keep = Some(4); + let config = ChangesTrieConfiguration { + digest_interval: 0, + digest_levels: 0, + }; + + // insert some blocks + let block0 = insert_header(&backend, 0, Default::default(), vec![(b"key_at_0".to_vec(), b"val_at_0".to_vec())], Default::default()); + let block1 = insert_header(&backend, 1, block0, vec![(b"key_at_1".to_vec(), b"val_at_1".to_vec())], Default::default()); + let block2 = insert_header(&backend, 2, block1, vec![(b"key_at_2".to_vec(), b"val_at_2".to_vec())], Default::default()); + let block3 = insert_header(&backend, 3, block2, vec![(b"key_at_3".to_vec(), b"val_at_3".to_vec())], Default::default()); + let block4 = insert_header(&backend, 4, block3, vec![(b"key_at_4".to_vec(), b"val_at_4".to_vec())], Default::default()); + let block5 = insert_header(&backend, 5, block4, vec![(b"key_at_5".to_vec(), b"val_at_5".to_vec())], Default::default()); + let block6 = insert_header(&backend, 6, block5, vec![(b"key_at_6".to_vec(), b"val_at_6".to_vec())], Default::default()); + + // check that roots of all tries are in the columns::CHANGES_TRIE + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block6, number: 6 }; + fn read_changes_trie_root(backend: &Backend, num: u64) -> H256 { + backend.blockchain().header(BlockId::Number(num)).unwrap().unwrap().digest().logs().iter() + .find(|i| i.as_changes_trie_root().is_some()).unwrap().as_changes_trie_root().unwrap().clone() + } + let root1 = read_changes_trie_root(&backend, 1); assert_eq!(backend.changes_tries_storage.root(&anchor, 1).unwrap(), Some(root1)); + let root2 = read_changes_trie_root(&backend, 2); assert_eq!(backend.changes_tries_storage.root(&anchor, 2).unwrap(), Some(root2)); + let root3 = read_changes_trie_root(&backend, 3); assert_eq!(backend.changes_tries_storage.root(&anchor, 3).unwrap(), Some(root3)); + let root4 = read_changes_trie_root(&backend, 4); assert_eq!(backend.changes_tries_storage.root(&anchor, 4).unwrap(), Some(root4)); + let root5 = read_changes_trie_root(&backend, 5); assert_eq!(backend.changes_tries_storage.root(&anchor, 5).unwrap(), Some(root5)); + let root6 = read_changes_trie_root(&backend, 6); assert_eq!(backend.changes_tries_storage.root(&anchor, 6).unwrap(), Some(root6)); + + // now simulate finalization of block#5, causing prune of trie at #1 + let mut tx = DBTransaction::new(); + backend.changes_tries_storage.prune(Some(config.clone()), &mut tx, block5, 5); + backend.storage.db.write(tx).unwrap(); + assert!(backend.changes_tries_storage.get(&root1).unwrap().is_none()); + assert!(backend.changes_tries_storage.get(&root2).unwrap().is_some()); + + // now simulate finalization of block#6, causing prune of tries at #2 + let mut tx = DBTransaction::new(); + backend.changes_tries_storage.prune(Some(config.clone()), &mut tx, block6, 6); + backend.storage.db.write(tx).unwrap(); + assert!(backend.changes_tries_storage.get(&root2).unwrap().is_none()); + assert!(backend.changes_tries_storage.get(&root3).unwrap().is_some()); + } + + #[test] + fn changes_trie_storage_works_with_forks() { + let backend = Backend::::new_test(1000, 100); + + let changes0 = vec![(b"k0".to_vec(), b"v0".to_vec())]; + let changes1 = vec![(b"k1".to_vec(), b"v1".to_vec())]; + let changes2 = vec![(b"k2".to_vec(), b"v2".to_vec())]; + let block0 = insert_header(&backend, 0, Default::default(), changes0.clone(), Default::default()); + let block1 = insert_header(&backend, 1, block0, changes1.clone(), Default::default()); + let block2 = insert_header(&backend, 2, block1, changes2.clone(), Default::default()); + + let changes2_1_0 = vec![(b"k3".to_vec(), b"v3".to_vec())]; + let changes2_1_1 = vec![(b"k4".to_vec(), b"v4".to_vec())]; + let block2_1_0 = insert_header(&backend, 3, block2, changes2_1_0.clone(), Default::default()); + let block2_1_1 = insert_header(&backend, 4, block2_1_0, changes2_1_1.clone(), Default::default()); + + let changes2_2_0 = vec![(b"k5".to_vec(), b"v5".to_vec())]; + let changes2_2_1 = vec![(b"k6".to_vec(), b"v6".to_vec())]; + let block2_2_0 = insert_header(&backend, 3, block2, changes2_2_0.clone(), Default::default()); + let block2_2_1 = insert_header(&backend, 4, block2_2_0, changes2_2_1.clone(), Default::default()); + + // finalize block1 + backend.changes_tries_storage.meta.write().finalized_number = 1; + + // branch1: when asking for finalized block hash + let (changes1_root, _) = prepare_changes(changes1); + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 1), Ok(Some(changes1_root))); + + // branch2: when asking for finalized block hash + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_2_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 1), Ok(Some(changes1_root))); + + // branch1: when asking for non-finalized block hash (search by traversal) + let (changes2_1_0_root, _) = prepare_changes(changes2_1_0); + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_1_0_root))); + + // branch2: when asking for non-finalized block hash (search using canonicalized hint) + let (changes2_2_0_root, _) = prepare_changes(changes2_2_0); + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_2_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); + + // finalize first block of branch2 (block2_2_0) + backend.changes_tries_storage.meta.write().finalized_number = 3; + + // branch2: when asking for finalized block of this branch + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); + + // branch1: when asking for finalized block of other branch + // => result is incorrect (returned for the block of branch1), but this is expected, + // because the other fork is abandoned (forked before finalized header) + let anchor = state_machine::ChangesTrieAnchorBlockId { hash: block2_1_1, number: 4 }; + assert_eq!(backend.changes_tries_storage.root(&anchor, 3), Ok(Some(changes2_2_0_root))); + } + #[test] fn tree_route_works() { let backend = Backend::::new_test(1000, 100); diff --git a/core/client/src/runtime_api/macros.rs b/core/client/src/runtime_api/macros.rs index 1721fbd416..b58f2143c8 100644 --- a/core/client/src/runtime_api/macros.rs +++ b/core/client/src/runtime_api/macros.rs @@ -465,20 +465,14 @@ macro_rules! impl_runtime_apis { )* } impl_runtime_apis! { - @EXTEND_FUNCTIONS $runtime; - ; - $trait_name; - $( $( $generic ),* )*; - { $( $fn_name ( $( $arg_name: $arg_ty ),* ); )* } + $( $fn_name ( $( $arg_name: $arg_ty ),* ); )*; $( $rest )* } }; ( $runtime:ident; - $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( - $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); - )*; + $( $fn_name_parsed:ident ( $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); )*; impl $trait_name:ident $( < $( $generic:ident ),* > )* for $runtime_ignore:ident { $( fn $fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ) $( -> $return_ty:ty )* { @@ -496,73 +490,15 @@ macro_rules! impl_runtime_apis { )* } impl_runtime_apis! { - @EXTEND_FUNCTIONS $runtime; - $( - $trait_name_parsed $( < $( $parsed_generic ),* > )* - ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); - )*; - $trait_name; - $( $( $generic ),* )*; - { $( $fn_name ( $( $arg_name: $arg_ty ),* ); )* } - $( $rest )* - } - }; - (@EXTEND_FUNCTIONS - $runtime:ident; - $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( - $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); - )*; - $trait_name:ident; - $( $generic:ident ),*; - { - $fn_name_extend:ident ( $( $arg_name_extend:ident : $arg_ty_extend:ty ),* ); - $( $extend_rest:tt )* - } - $( $rest:tt )* - ) => { - impl_runtime_apis! { - @EXTEND_FUNCTIONS - $runtime; - $( - $trait_name_parsed $( < $( $parsed_generic ),* > )* - ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); - )* - $trait_name < $( $generic ),* > - ::$fn_name_extend ( $( $arg_name_extend: $arg_ty_extend ),* );; - $trait_name; - $( $generic ),*; - { - $( $extend_rest )* - } - $( $rest )* - } - }; - (@EXTEND_FUNCTIONS - $runtime:ident; - $( $trait_name_parsed:ident $( < $( $parsed_generic:ident ),* > )*::$fn_name_parsed:ident ( - $( $arg_name_parsed:ident : $arg_ty_parsed:ty ),* ); - )*; - $trait_name:ident; - $( $generic:ident ),*; - {} - $( $rest:tt )* - ) => { - impl_runtime_apis! { - $runtime; - $( - $trait_name_parsed $( < $( $parsed_generic ),* > )* - ::$fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); - )*; + $( $fn_name_parsed ( $( $arg_name_parsed: $arg_ty_parsed ),* ); )* + $( $fn_name ( $( $arg_name: $arg_ty ),* ); )*; $( $rest )* } }; ( $runtime:ident; - $( - $trait_name:ident $( < $( $generic:ident ),* > )* - ::$fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ); - )*; + $( $fn_name:ident ( $( $arg_name:ident : $arg_ty:ty ),* ); )*; ) => { pub mod api { use super::*; @@ -575,7 +511,6 @@ macro_rules! impl_runtime_apis { Some({impl_runtime_apis! { @GENERATE_IMPL_CALL $runtime; - $trait_name $( < $( $generic ),* > )*; $fn_name; $( $arg_name : $arg_ty ),*; data; @@ -601,7 +536,6 @@ macro_rules! impl_runtime_apis { let output = { impl_runtime_apis! { @GENERATE_IMPL_CALL $runtime; - $trait_name $( < $( $generic ),* > )*; $fn_name; $( $arg_name : $arg_ty ),*; input; @@ -619,7 +553,6 @@ macro_rules! impl_runtime_apis { }; (@GENERATE_IMPL_CALL $runtime:ident; - $trait_name:ident $( < $( $generic:ident ),* > )*; $fn_name:ident; $arg_name:ident : $arg_ty:ty; $input:ident; @@ -629,12 +562,11 @@ macro_rules! impl_runtime_apis { None => panic!("Bad input data provided to {}", stringify!($fn_name)), }; - let output = <$runtime as $trait_name $( < $( $generic ),* > )*>::$fn_name($arg_name); + let output = $runtime::$fn_name($arg_name); $crate::runtime_api::Encode::encode(&output) }; (@GENERATE_IMPL_CALL $runtime:ident; - $trait_name:ident $( < $( $generic:ident ),* > )*; $fn_name:ident; $( $arg_name:ident : $arg_ty:ty ),*; $input:ident; @@ -644,7 +576,7 @@ macro_rules! impl_runtime_apis { None => panic!("Bad input data provided to {}", stringify!($fn_name)), }; - let output = <$runtime as $trait_name $( < $( $generic ),* > )*>::$fn_name($( $arg_name ),*); + let output = $runtime::$fn_name($( $arg_name ),*); $crate::runtime_api::Encode::encode(&output) }; } diff --git a/core/consensus/aura/src/lib.rs b/core/consensus/aura/src/lib.rs index 1869eba5dd..babfef8dc1 100644 --- a/core/consensus/aura/src/lib.rs +++ b/core/consensus/aura/src/lib.rs @@ -286,6 +286,7 @@ enum CheckedHeader { Checked(H, u64, ed25519::Signature), } + /// check a header has been signed by the right key. If the slot is too far in the future, an error will be returned. /// if it's successful, returns the pre-header, the slot number, and the signat. // @@ -327,37 +328,15 @@ fn check_header(slot_now: u64, mut header: B::Header, hash: B::Hash, a } } -/// Extra verification for Aura blocks. -pub trait ExtraVerification: Send + Sync { - /// Future that resolves when the block is verified or fails with error if not. - type Verified: IntoFuture; - - /// Do additional verification for this block. - fn verify(&self, header: &B::Header, body: Option<&[B::Extrinsic]>) -> Self::Verified; -} - -/// No-op extra verification. -#[derive(Debug, Clone, Copy)] -pub struct NothingExtra; - -impl ExtraVerification for NothingExtra { - type Verified = Result<(), String>; - - fn verify(&self, _: &B::Header, _: Option<&[B::Extrinsic]>) -> Self::Verified { - Ok(()) - } -} /// A verifier for Aura blocks. -pub struct AuraVerifier { +pub struct AuraVerifier { config: Config, client: Arc, - extra: E, } -impl Verifier for AuraVerifier where +impl Verifier for AuraVerifier where C: Authorities + BlockImport + Send + Sync, DigestItemFor: CompatibleDigestItem, - E: ExtraVerification, { fn verify( &self, @@ -373,8 +352,6 @@ impl Verifier for AuraVerifier where let authorities = self.client.authorities(&BlockId::Hash(parent_hash)) .map_err(|e| format!("Could not fetch authorities at {:?}: {:?}", parent_hash, e))?; - let extra_verification = self.extra.verify(&header, body.as_ref().map(|x| &x[..])); - // we add one to allow for some small drift. // FIXME: in the future, alter this queue to allow deferring of headers // https://github.com/paritytech/substrate/issues/1019 @@ -385,7 +362,6 @@ impl Verifier for AuraVerifier where debug!(target: "aura", "Checked {:?}; importing.", pre_header); - extra_verification.into_future().wait()?; let import_block = ImportBlock { origin, header: pre_header, @@ -408,19 +384,20 @@ impl Verifier for AuraVerifier where } /// The Aura import queue type. -pub type AuraImportQueue = BasicQueue>; +pub type AuraImportQueue = BasicQueue>; /// Start an import queue for the Aura consensus algorithm. -pub fn import_queue(config: Config, client: Arc, extra: E) -> AuraImportQueue where +pub fn import_queue(config: Config, client: Arc) -> AuraImportQueue where B: Block, C: Authorities + BlockImport + Send + Sync, DigestItemFor: CompatibleDigestItem, - E: ExtraVerification, { - let verifier = Arc::new(AuraVerifier { config, client: client.clone(), extra, }); + let verifier = Arc::new(AuraVerifier { config, client: client.clone() }); BasicQueue::new(verifier, client) } + + #[cfg(test)] mod tests { use super::*; @@ -466,12 +443,12 @@ mod tests { const TEST_ROUTING_INTERVAL: Duration = Duration::from_millis(50); pub struct AuraTestNet { - peers: Vec, ()>>>, + peers: Vec, ()>>>, started: bool } impl TestNetFactory for AuraTestNet { - type Verifier = AuraVerifier; + type Verifier = AuraVerifier; type PeerData = (); /// Create new test network with peers and given config. @@ -486,7 +463,7 @@ mod tests { -> Arc { let config = Config { local_key: None, slot_duration: SLOT_DURATION }; - Arc::new(AuraVerifier { client, config, extra: NothingExtra }) + Arc::new(AuraVerifier { client, config }) } fn peer(&self, i: usize) -> &Peer { diff --git a/core/executor/Cargo.toml b/core/executor/Cargo.toml index c6cddf341c..a3de26a3cb 100644 --- a/core/executor/Cargo.toml +++ b/core/executor/Cargo.toml @@ -14,7 +14,7 @@ substrate-state-machine = { path = "../state-machine" } sr-version = { path = "../sr-version" } serde = "1.0" serde_derive = "1.0" -wasmi = { version = "0.4.2" } +wasmi = { version = "0.4.1" } byteorder = "1.1" lazy_static = "1.0" parking_lot = "*" diff --git a/core/primitives/Cargo.toml b/core/primitives/Cargo.toml index 5821a5fe94..171841f1e2 100644 --- a/core/primitives/Cargo.toml +++ b/core/primitives/Cargo.toml @@ -15,7 +15,7 @@ serde_derive = { version = "1.0", optional = true } uint = { version = "0.5.0-beta", default-features = false } twox-hash = { version = "1.1.0", optional = true } byteorder = { version = "1.1", default-features = false } -wasmi = { version = "0.4.2", optional = true } +wasmi = { version = "0.4.1", optional = true } hash-db = { git = "https://github.com/paritytech/trie", default-features = false } hash256-std-hasher = { git = "https://github.com/paritytech/trie", default-features = false } ring = { version = "0.12", optional = true } diff --git a/core/primitives/src/changes_trie.rs b/core/primitives/src/changes_trie.rs index 1bfde315ee..0211b57236 100644 --- a/core/primitives/src/changes_trie.rs +++ b/core/primitives/src/changes_trie.rs @@ -42,6 +42,25 @@ impl ChangesTrieConfiguration { && block % self.digest_interval == 0 } + /// Returns max digest interval. One if digests are not created at all. + /// Returns ::std::u64::MAX instead of panic in the case of overflow. + pub fn max_digest_interval(&self) -> u64 { + if !self.is_digest_build_enabled() { + return 1; + } + + // TODO: use saturating_pow when available + let mut max_digest_interval = self.digest_interval; + for _ in 1..self.digest_levels { + max_digest_interval = match max_digest_interval.checked_mul(self.digest_interval) { + Some(max_digest_interval) => max_digest_interval, + None => return u64::max_value(), + } + } + + max_digest_interval + } + /// Returns Some if digest must be built at given block number. /// The tuple is: /// ( @@ -124,4 +143,12 @@ mod tests { assert_eq!(config(8, 4).digest_level_at_block(4096), Some((4, 4096, 512))); assert_eq!(config(8, 4).digest_level_at_block(4112), Some((1, 8, 1))); } + + #[test] + fn max_digest_interval_works() { + assert_eq!(config(0, 0).max_digest_interval(), 1); + assert_eq!(config(2, 2).max_digest_interval(), 4); + assert_eq!(config(8, 4).max_digest_interval(), 4096); + assert_eq!(config(::std::u64::MAX, 1024).max_digest_interval(), ::std::u64::MAX); + } } diff --git a/core/sr-sandbox/Cargo.toml b/core/sr-sandbox/Cargo.toml index daa9408296..8cb35aed79 100755 --- a/core/sr-sandbox/Cargo.toml +++ b/core/sr-sandbox/Cargo.toml @@ -8,7 +8,7 @@ build = "build.rs" rustc_version = "0.2" [dependencies] -wasmi = { version = "0.4.2", optional = true } +wasmi = { version = "0.4.1", optional = true } substrate-primitives = { path = "../primitives", default-features = false } sr-std = { path = "../sr-std", default-features = false } parity-codec = { version = "2.1", default-features = false } diff --git a/core/state-machine/src/changes_trie/prune.rs b/core/state-machine/src/changes_trie/prune.rs index 70bae77b02..9886105115 100644 --- a/core/state-machine/src/changes_trie/prune.rs +++ b/core/state-machine/src/changes_trie/prune.rs @@ -39,15 +39,8 @@ pub fn prune, H: Hasher, F: FnMut(H::Out)>( where H::Out: HeapSizeOf, { - // we only CAN prune at block where max-level-digest is created - let digest_interval = match config.digest_level_at_block(current_block.number) { - Some((digest_level, digest_interval, _)) if digest_level == config.digest_levels => - digest_interval, - _ => return, - }; - // select range for pruning - let (first, last) = match pruning_range(min_blocks_to_keep, current_block.number, digest_interval) { + let (first, last) = match pruning_range(config, min_blocks_to_keep, current_block.number) { Some((first, last)) => (first, last), None => return, }; @@ -85,16 +78,34 @@ pub fn prune, H: Hasher, F: FnMut(H::Out)>( } /// Select blocks range (inclusive from both ends) for pruning changes tries in. -fn pruning_range(min_blocks_to_keep: u64, block: u64, max_digest_interval: u64) -> Option<(u64, u64)> { - // compute maximal number of high-level digests to keep - let max_digest_intervals_to_keep = max_digest_intervals_to_keep(min_blocks_to_keep, max_digest_interval); +fn pruning_range(config: &Configuration, min_blocks_to_keep: u64, block: u64) -> Option<(u64, u64)> { + // compute number of changes tries we actually want to keep + let (prune_interval, blocks_to_keep) = if config.is_digest_build_enabled() { + // we only CAN prune at block where max-level-digest is created + let max_digest_interval = match config.digest_level_at_block(block) { + Some((digest_level, digest_interval, _)) if digest_level == config.digest_levels => + digest_interval, + _ => return None, + }; - // number of blocks BEFORE current block where changes tries are not pruned - let blocks_to_keep = max_digest_intervals_to_keep.checked_mul(max_digest_interval); + // compute maximal number of high-level digests to keep + let max_digest_intervals_to_keep = max_digest_intervals_to_keep(min_blocks_to_keep, max_digest_interval); + + // number of blocks BEFORE current block where changes tries are not pruned + ( + max_digest_interval, + max_digest_intervals_to_keep.checked_mul(max_digest_interval) + ) + } else { + ( + 1, + Some(min_blocks_to_keep) + ) + }; // last block for which changes trie is pruned let last_block_to_prune = blocks_to_keep.and_then(|b| block.checked_sub(b)); - let first_block_to_prune = last_block_to_prune.clone().and_then(|b| b.checked_sub(max_digest_interval)); + let first_block_to_prune = last_block_to_prune.clone().and_then(|b| b.checked_sub(prune_interval)); last_block_to_prune .and_then(|last| first_block_to_prune.map(|first| (first + 1, last))) @@ -129,6 +140,13 @@ mod tests { use changes_trie::storage::InMemoryStorage; use super::*; + fn config(interval: u64, levels: u32) -> Configuration { + Configuration { + digest_interval: interval, + digest_levels: levels, + } + } + fn prune_by_collect, H: Hasher>( config: &Configuration, storage: &S, @@ -144,7 +162,6 @@ mod tests { pruned_trie_nodes } - #[test] fn prune_works() { fn prepare_storage() -> InMemoryStorage { @@ -213,24 +230,34 @@ mod tests { #[test] fn pruning_range_works() { - assert_eq!(pruning_range(2, 0, 100), None); - assert_eq!(pruning_range(2, 30, 100), None); - assert_eq!(pruning_range(::std::u64::MAX, 1024, 1), None); - assert_eq!(pruning_range(1, 1024, ::std::u64::MAX), None); - assert_eq!(pruning_range(::std::u64::MAX, 1024, ::std::u64::MAX), None); - assert_eq!(pruning_range(1024, 512, 512), None); - assert_eq!(pruning_range(1024, 1024, 512), None); + // DIGESTS ARE NOT CREATED + NO TRIES ARE PRUNED + assert_eq!(pruning_range(&config(10, 0), 2, 2), None); + + // DIGESTS ARE NOT CREATED + SOME TRIES ARE PRUNED + assert_eq!(pruning_range(&config(10, 0), 100, 110), Some((10, 10))); + assert_eq!(pruning_range(&config(10, 0), 100, 210), Some((110, 110))); + + // DIGESTS ARE CREATED + NO TRIES ARE PRUNED + + assert_eq!(pruning_range(&config(10, 2), 2, 0), None); + assert_eq!(pruning_range(&config(10, 2), 30, 100), None); + assert_eq!(pruning_range(&config(::std::u64::MAX, 2), 1, 1024), None); + assert_eq!(pruning_range(&config(::std::u64::MAX, 2), ::std::u64::MAX, 1024), None); + assert_eq!(pruning_range(&config(32, 2), 2048, 512), None); + assert_eq!(pruning_range(&config(32, 2), 2048, 1024), None); + + // DIGESTS ARE CREATED + SOME TRIES ARE PRUNED // when we do not want to keep any highest-level-digests // (system forces to keep at least one) - assert_eq!(pruning_range(0, 32, 16), Some((1, 16))); - assert_eq!(pruning_range(0, 64, 16), Some((33, 48))); + assert_eq!(pruning_range(&config(4, 2), 0, 32), Some((1, 16))); + assert_eq!(pruning_range(&config(4, 2), 0, 64), Some((33, 48))); // when we want to keep 1 (last) highest-level-digest - assert_eq!(pruning_range(16, 32, 16), Some((1, 16))); - assert_eq!(pruning_range(16, 64, 16), Some((33, 48))); + assert_eq!(pruning_range(&config(4, 2), 16, 32), Some((1, 16))); + assert_eq!(pruning_range(&config(4, 2), 16, 64), Some((33, 48))); // when we want to keep 1 (last) + 1 additional level digests - assert_eq!(pruning_range(1024, 1536, 512), Some((1, 512))); - assert_eq!(pruning_range(1024, 2048, 512), Some((513, 1024))); + assert_eq!(pruning_range(&config(32, 2), 4096, 5120), Some((1, 1024))); + assert_eq!(pruning_range(&config(32, 2), 4096, 6144), Some((1025, 2048))); } #[test] diff --git a/core/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock index c268f0c400..f9c0964148 100644 --- a/core/test-runtime/wasm/Cargo.lock +++ b/core/test-runtime/wasm/Cargo.lock @@ -472,6 +472,11 @@ dependencies = [ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "nan-preserving-float" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "net2" version = "0.2.33" @@ -980,7 +985,7 @@ dependencies = [ "substrate-serializer 0.1.0", "substrate-state-machine 0.1.0", "substrate-trie 0.4.0", - "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1014,7 +1019,7 @@ dependencies = [ "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.5.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1374,11 +1379,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wasmi" -version = "0.4.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1501,6 +1507,7 @@ dependencies = [ "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" @@ -1579,7 +1586,7 @@ dependencies = [ "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8a60b9508cff2b7c27ed41200dd668806280740fadc8c88440e9c88625e84f1a" +"checksum wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d184c4b7081f30316f74f8d73c197314dcb56ea7af9323522b42a2fa9cb19453" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 81ccaf36b1c3817530fb1368583010dd8c077d3f..142b7da402fa1faaaa0be775ace981e859448b25 100644 GIT binary patch literal 223056 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

  • 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 z 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

    +jGK;LUNTO>4^AL0%kSEcRM*<9 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 z Date: Wed, 14 Nov 2018 18:20:42 +0100 Subject: [PATCH 049/243] Fix overflow in srml-contract. (#1113) --- srml/contract/src/gas.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/srml/contract/src/gas.rs b/srml/contract/src/gas.rs index 9d1978f7a5..af94ae05c1 100644 --- a/srml/contract/src/gas.rs +++ b/srml/contract/src/gas.rs @@ -150,9 +150,12 @@ pub fn buy_gas( let cost = >::as_(gas_limit.clone()) .checked_mul(&gas_price) .ok_or("overflow multiplying gas limit by price")?; - if b < cost + >::existential_deposit() { + + let new_balance = b.checked_sub(&cost); + if new_balance < Some(>::existential_deposit()) { return Err("not enough funds for transaction fee"); } + >::set_free_balance(transactor, b - cost); >::decrease_total_stake_by(cost); Ok(GasMeter { -- GitLab From cd99ff7704fdf0c363edf3ff6eb5c878f9d8b74d Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Thu, 15 Nov 2018 06:28:07 -0500 Subject: [PATCH 050/243] Update https:// on getsubstrate.io (#1117) --- README.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.adoc b/README.adoc index d832b58313..a531deb3fe 100644 --- a/README.adoc +++ b/README.adoc @@ -124,7 +124,7 @@ To get going as fast as possible, there is a simple script that installs all req [source, shell] ---- -curl getsubstrate.io -sSf | bash +curl https://getsubstrate.io -sSf | bash ---- You can start a local Substrate development chain with running `substrate --dev`. -- GitLab From 3a9cb880b57dd7dca59e0856636f3d27113f8da4 Mon Sep 17 00:00:00 2001 From: azban Date: Thu, 15 Nov 2018 03:34:44 -0800 Subject: [PATCH 051/243] network-libp2p: add derive to ServiceEvent (#1118) --- core/network-libp2p/src/service_task.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/core/network-libp2p/src/service_task.rs b/core/network-libp2p/src/service_task.rs index f40170b00c..c11b7d8dbf 100644 --- a/core/network-libp2p/src/service_task.rs +++ b/core/network-libp2p/src/service_task.rs @@ -171,6 +171,7 @@ where TProtos: IntoIterator { } /// Event produced by the service. +#[derive(Debug)] pub enum ServiceEvent { /// Closed connection to a node. /// -- GitLab From 782363a1c275c5d4ec0aeabeee76d6f2fbf85a35 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 15 Nov 2018 16:36:28 +0100 Subject: [PATCH 052/243] start addressing basti comments --- core/client/src/client.rs | 3 +- core/finality-grandpa/primitives/src/lib.rs | 95 ++++++++++++++++----- core/finality-grandpa/src/lib.rs | 55 +++--------- 3 files changed, 88 insertions(+), 65 deletions(-) diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 4d4a438a08..f889a7045f 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -916,7 +916,8 @@ impl CallApiAt for Client where B: backend::Backend, E: CallExecutor + Clone + Send + Sync, Block: BlockT, - RA: Send + Sync, + RA: CoreAPI, // not strictly necessary at the moment + // but we want to bound to make sure the API is actually available. { fn call_api_at( &self, diff --git a/core/finality-grandpa/primitives/src/lib.rs b/core/finality-grandpa/primitives/src/lib.rs index 2f53523555..ed8ae408b7 100644 --- a/core/finality-grandpa/primitives/src/lib.rs +++ b/core/finality-grandpa/primitives/src/lib.rs @@ -54,27 +54,82 @@ pub mod id { pub const GRANDPA_API: ApiId = *b"fgrandpa"; } -/// APIs for integrating the GRANDPA finality gadget into runtimes. -/// This should be implemented on the runtime side. -/// -/// This is primarily used for negotiating authority-set changes for the -/// gadget. GRANDPA uses a signalling model of changing authority sets: -/// changes should be signalled with a delay of N blocks, and then automatically -/// applied in the runtime after those N blocks have passed. -/// -/// The consensus protocol will coordinate the handoff externally. -pub trait GrandpaApi { - /// Check a digest for pending changes. - /// Return `None` if there are no pending changes. +decl_runtime_apis! { + /// APIs for integrating the GRANDPA finality gadget into runtimes. + /// This should be implemented on the runtime side. /// - /// Precedence towards earlier or later digest items can be given - /// based on the rules of the chain. + /// This is primarily used for negotiating authority-set changes for the + /// gadget. GRANDPA uses a signalling model of changing authority sets: + /// changes should be signalled with a delay of N blocks, and then automatically + /// applied in the runtime after those N blocks have passed. /// - /// No change should be scheduled if one is already and the delay has not - /// passed completely. - fn grandpa_pending_change(digest: DigestFor) -> Option>>; + /// The consensus protocol will coordinate the handoff externally. + pub trait GrandpaApi { + /// Check a digest for pending changes. + /// Return `None` if there are no pending changes. + /// + /// Precedence towards earlier or later digest items can be given + /// based on the rules of the chain. + /// + /// No change should be scheduled if one is already and the delay has not + /// passed completely. + fn grandpa_pending_change(digest: DigestFor) + -> Option>>; - /// Get the current GRANDPA authorities and weights. This should not change except - /// for when changes are scheduled and the corresponding delay has passed. - fn grandpa_authorities() -> Vec<(AuthorityId, u64)>; + /// Get the current GRANDPA authorities and weights. This should not change except + /// for when changes are scheduled and the corresponding delay has passed. + fn grandpa_authorities() -> Vec<(AuthorityId, u64)>; + } +} + +#[cfg(feature = "std")] +mod implementation { + use super::{GrandpaApi, ScheduledChange}; + use sr_primitives::traits::{Block as BlockT, DigestFor, NumberFor}; + use sr_primitives::generic::BlockId; + use parity_codec::{Encode, Decode}; + use client::{Client, error::Error as ClientError, backend::Backend, CallExecutor}; + use client::runtime_api::{CallApiAt, Core as CoreAPI}; + use substrate_primitives::{AuthorityId, H256, Blake2Hasher}; + + // TODO [basti]: do this implementation in runtime. + impl, RA> GrandpaApi for Client where + B: Backend + 'static, + E: CallExecutor + 'static + Clone + Send + Sync, + DigestFor: Encode, + RA: CoreAPI, + { + fn grandpa_authorities(&self, at: &BlockId) -> Result, ClientError> { + let raw = self.call_api_at( + &at, + ::AUTHORITIES_CALL, + Encode::encode(&()), + &mut Default::default(), + &mut None, + ); + + // TODO [basti]: implement this in runtime with macro. + match Decode::decode(&mut &raw[..]) { + Some(x) => Ok(x), + None => Err(::client::error::ErrorKind::CallResultDecode(::AUTHORITIES_CALL).into()), + } + } + + fn grandpa_pending_change(&self, at: &BlockId, digest: DigestFor) + -> Result>>, ClientError> + { + let raw = self.call_api_at( + at, + ::PENDING_CHANGE_CALL, + digest.encode(), + &mut Default::default(), + &mut None, + ); + + match Decode::decode(&mut &raw[..]) { + Some(x) => Ok(x), + None => Err(::client::error::ErrorKind::CallResultDecode(::PENDING_CHANGE_CALL).into()), + } + } + } } diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index ba23383db2..1a0f10334a 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -84,12 +84,13 @@ use futures::stream::Fuse; use futures::sync::mpsc; use client::{Client, error::Error as ClientError, ImportNotifications, backend::Backend, CallExecutor}; use client::blockchain::HeaderBackend; -use client::runtime_api::{CallApiAt, TaggedTransactionQueue}; +use client::runtime_api::{CallApiAt, TaggedTransactionQueue, Core as CoreAPI}; use codec::{Encode, Decode}; use consensus_common::{BlockImport, ImportBlock, ImportResult}; use runtime_primitives::traits::{ NumberFor, Block as BlockT, Header as HeaderT, DigestFor, }; +use fg_primitives::GrandpaApi; use runtime_primitives::generic::BlockId; use substrate_primitives::{ed25519, H256, AuthorityId, Blake2Hasher}; use tokio::timer::Interval; @@ -765,46 +766,7 @@ impl, N, RA> voter::Environment> { - /// Get the genesis authorities for GRANDPA. - fn genesis_authorities(&self) -> Result, ClientError>; - /// Check a header's digest for a scheduled change. - fn scheduled_change(&self, header: &Block::Header) - -> Result>>, ClientError>; -} - -impl, RA> ApiClient for Arc> where - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, - DigestFor: Encode, - RA: Send + Sync, -{ - fn genesis_authorities(&self) -> Result, ClientError> { - use runtime_primitives::traits::Zero; - - self.call_api_at_strong( - &BlockId::Number(NumberFor::::zero()), - fg_primitives::AUTHORITIES_CALL, - &(), - &mut Default::default(), - &mut None, - ) - } - - fn scheduled_change(&self, header: &Block::Header) - -> Result>>, ClientError> - { - self.call_api_at_strong( - &BlockId::hash(header.parent_hash().clone()), - fg_primitives::PENDING_CHANGE_CALL, - header.digest(), - &mut Default::default(), - &mut None, - ) - } -} /// A block-import handler for GRANDPA. /// @@ -821,7 +783,7 @@ impl, Api, RA> BlockImport for GrandpaBloc B: Backend + 'static, E: CallExecutor + 'static + Clone + Send + Sync, DigestFor: Encode, - Api: ApiClient, + Api: GrandpaApi, RA: TaggedTransactionQueue + Send + Sync, // necessary for client to import `BlockImport`. { type Error = ClientError; @@ -831,7 +793,10 @@ impl, Api, RA> BlockImport for GrandpaBloc { use authorities::PendingChange; - let maybe_change = self.api_client.scheduled_change(&block.header)?; + let maybe_change = self.api_client.grandpa_pending_change( + &BlockId::hash(*block.header.parent_hash()), + &block.header.digest().clone(), + )?; // when we update the authorities, we need to hold the lock // until the block is written to prevent a race if we need to restore @@ -879,9 +844,10 @@ pub fn block_import, Api, RA>(client: Arc + 'static, E: CallExecutor + 'static, - Api: ApiClient, + Api: GrandpaApi, RA: Send + Sync, { + use runtime_primitives::traits::Zero; let authority_set = match client.backend().get_aux(AUTHORITY_SET_KEY)? { None => { info!(target: "afg", "Loading GRANDPA authorities \ @@ -890,7 +856,8 @@ pub fn block_import, Api, RA>(client: Arc = api_client.genesis_authorities()?; + let genesis_authorities = api_client + .grandpa_authorities(&BlockId::number(Zero::zero()))?; let authority_set = SharedAuthoritySet::genesis(genesis_authorities); let encoded = authority_set.inner().read().encode(); -- GitLab From 10a6781b22edbc2076ac30a34f49e9e0b131bd04 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 15 Nov 2018 17:03:39 +0100 Subject: [PATCH 053/243] special case equality in `ancestry` function --- core/finality-grandpa/src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 21f75f47f8..527d1afbea 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -393,6 +393,8 @@ impl, B, E, N, RA> grandpa::Chain for Envi NumberFor: As, { fn ancestry(&self, base: Block::Hash, block: Block::Hash) -> Result, GrandpaError> { + if base == block { return Err(NotDescendent) } + let tree_route_res = ::client::blockchain::tree_route( self.inner.backend().blockchain(), BlockId::Hash(block), -- GitLab From 23b075cda7c4dced1d825ee2de916805cad8ca7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Thu, 15 Nov 2018 17:34:55 +0100 Subject: [PATCH 054/243] Fixes `GrandpaApi` implementation and usage --- Cargo.lock | 2 + core/finality-grandpa/primitives/Cargo.toml | 2 + core/finality-grandpa/primitives/src/lib.rs | 55 +----------------- core/finality-grandpa/src/lib.rs | 29 +++++---- .../substrate_test_runtime.compact.wasm | Bin 45154 -> 45152 bytes node/runtime/Cargo.toml | 6 +- node/runtime/src/lib.rs | 29 ++++++++- node/runtime/wasm/Cargo.lock | 13 +++++ node/runtime/wasm/Cargo.toml | 2 + .../release/node_runtime.compact.wasm | Bin 618357 -> 622383 bytes 10 files changed, 67 insertions(+), 71 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 32eb742442..993b4bdd6b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1804,6 +1804,7 @@ dependencies = [ "srml-treasury 0.1.0", "srml-upgrade-key 0.1.0", "substrate-client 0.1.0", + "substrate-fg-primitives 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", ] @@ -3186,6 +3187,7 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-client 0.1.0", "substrate-primitives 0.1.0", ] diff --git a/core/finality-grandpa/primitives/Cargo.toml b/core/finality-grandpa/primitives/Cargo.toml index 2b2711fab8..8f9c6628b8 100644 --- a/core/finality-grandpa/primitives/Cargo.toml +++ b/core/finality-grandpa/primitives/Cargo.toml @@ -9,6 +9,7 @@ substrate-primitives = { path = "../../primitives", default-features = false } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } sr-primitives = { path = "../../sr-primitives", default-features = false } +sr-std = { path = "../../sr-std", default-features = false } [features] default = ["std"] @@ -18,4 +19,5 @@ std = [ "parity-codec/std", "parity-codec-derive/std", "sr-primitives/std", + "sr-std/std", ] diff --git a/core/finality-grandpa/primitives/src/lib.rs b/core/finality-grandpa/primitives/src/lib.rs index ed8ae408b7..aaca423ecd 100644 --- a/core/finality-grandpa/primitives/src/lib.rs +++ b/core/finality-grandpa/primitives/src/lib.rs @@ -28,8 +28,11 @@ extern crate parity_codec_derive; #[macro_use] extern crate substrate_client as client; +extern crate sr_std as rstd; + use substrate_primitives::AuthorityId; use sr_primitives::traits::{Block as BlockT, DigestFor, NumberFor}; +use rstd::vec::Vec; /// A scheduled change of authority set. #[cfg_attr(feature = "std", derive(Debug, PartialEq))] @@ -81,55 +84,3 @@ decl_runtime_apis! { fn grandpa_authorities() -> Vec<(AuthorityId, u64)>; } } - -#[cfg(feature = "std")] -mod implementation { - use super::{GrandpaApi, ScheduledChange}; - use sr_primitives::traits::{Block as BlockT, DigestFor, NumberFor}; - use sr_primitives::generic::BlockId; - use parity_codec::{Encode, Decode}; - use client::{Client, error::Error as ClientError, backend::Backend, CallExecutor}; - use client::runtime_api::{CallApiAt, Core as CoreAPI}; - use substrate_primitives::{AuthorityId, H256, Blake2Hasher}; - - // TODO [basti]: do this implementation in runtime. - impl, RA> GrandpaApi for Client where - B: Backend + 'static, - E: CallExecutor + 'static + Clone + Send + Sync, - DigestFor: Encode, - RA: CoreAPI, - { - fn grandpa_authorities(&self, at: &BlockId) -> Result, ClientError> { - let raw = self.call_api_at( - &at, - ::AUTHORITIES_CALL, - Encode::encode(&()), - &mut Default::default(), - &mut None, - ); - - // TODO [basti]: implement this in runtime with macro. - match Decode::decode(&mut &raw[..]) { - Some(x) => Ok(x), - None => Err(::client::error::ErrorKind::CallResultDecode(::AUTHORITIES_CALL).into()), - } - } - - fn grandpa_pending_change(&self, at: &BlockId, digest: DigestFor) - -> Result>>, ClientError> - { - let raw = self.call_api_at( - at, - ::PENDING_CHANGE_CALL, - digest.encode(), - &mut Default::default(), - &mut None, - ); - - match Decode::decode(&mut &raw[..]) { - Some(x) => Ok(x), - None => Err(::client::error::ErrorKind::CallResultDecode(::PENDING_CHANGE_CALL).into()), - } - } - } -} diff --git a/core/finality-grandpa/src/lib.rs b/core/finality-grandpa/src/lib.rs index 1a0f10334a..b107c3089e 100644 --- a/core/finality-grandpa/src/lib.rs +++ b/core/finality-grandpa/src/lib.rs @@ -84,11 +84,11 @@ use futures::stream::Fuse; use futures::sync::mpsc; use client::{Client, error::Error as ClientError, ImportNotifications, backend::Backend, CallExecutor}; use client::blockchain::HeaderBackend; -use client::runtime_api::{CallApiAt, TaggedTransactionQueue, Core as CoreAPI}; +use client::runtime_api::TaggedTransactionQueue; use codec::{Encode, Decode}; use consensus_common::{BlockImport, ImportBlock, ImportResult}; use runtime_primitives::traits::{ - NumberFor, Block as BlockT, Header as HeaderT, DigestFor, + NumberFor, Block as BlockT, Header as HeaderT, DigestFor, ProvideRuntimeApi }; use fg_primitives::GrandpaApi; use runtime_primitives::generic::BlockId; @@ -773,18 +773,16 @@ impl, N, RA> voter::Environment, Api, RA> { +pub struct GrandpaBlockImport, RA> { inner: Arc>, authority_set: SharedAuthoritySet>, - api_client: Api, } -impl, Api, RA> BlockImport for GrandpaBlockImport where +impl, RA> BlockImport for GrandpaBlockImport where B: Backend + 'static, E: CallExecutor + 'static + Clone + Send + Sync, DigestFor: Encode, - Api: GrandpaApi, - RA: TaggedTransactionQueue + Send + Sync, // necessary for client to import `BlockImport`. + RA: GrandpaApi + TaggedTransactionQueue, { type Error = ClientError; @@ -793,7 +791,7 @@ impl, Api, RA> BlockImport for GrandpaBloc { use authorities::PendingChange; - let maybe_change = self.api_client.grandpa_pending_change( + let maybe_change = self.inner.runtime_api().grandpa_pending_change( &BlockId::hash(*block.header.parent_hash()), &block.header.digest().clone(), )?; @@ -839,13 +837,12 @@ pub struct LinkHalf, RA> { /// Make block importer and link half necessary to tie the background voter /// to it. -pub fn block_import, Api, RA>(client: Arc>, api_client: Api) - -> Result<(GrandpaBlockImport, LinkHalf), ClientError> +pub fn block_import, RA>(client: Arc>) + -> Result<(GrandpaBlockImport, LinkHalf), ClientError> where - B: Backend + 'static, - E: CallExecutor + 'static, - Api: GrandpaApi, - RA: Send + Sync, + B: Backend + 'static, + E: CallExecutor + 'static + Clone + Send + Sync, + RA: GrandpaApi, { use runtime_primitives::traits::Zero; let authority_set = match client.backend().get_aux(AUTHORITY_SET_KEY)? { @@ -856,7 +853,7 @@ pub fn block_import, Api, RA>(client: Arc, Api, RA>(client: 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 E55f=$9{>OV diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 1f6ccad0c3..5865927893 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -14,7 +14,8 @@ parity-codec-derive = "2.1" sr-std = { path = "../../core/sr-std" } srml-support = { path = "../../srml/support" } substrate-primitives = { path = "../../core/primitives" } -substrate-client = { path = "../../core/client", optional = true } +substrate-fg-primitives = { path = "../../core/finality-grandpa/primitives" } +substrate-client = { path = "../../core/client" } substrate-keyring = { path = "../../core/keyring" } srml-balances = { path = "../../srml/balances" } srml-consensus = { path = "../../srml/consensus" } @@ -57,5 +58,6 @@ std = [ "serde_derive", "serde/std", "safe-mix/std", - "substrate-client", + "substrate-client/std", + "substrate-fg-primitives/std", ] diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index 84ffbb4ab0..dca769f4d4 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -56,6 +56,7 @@ extern crate srml_upgrade_key as upgrade_key; #[macro_use] extern crate sr_version as version; extern crate node_primitives; +extern crate substrate_fg_primitives; #[cfg(feature = "std")] use codec::{Encode, Decode}; @@ -72,7 +73,7 @@ use client::runtime_api::ApiExt; use runtime_primitives::ApplyResult; use runtime_primitives::transaction_validity::TransactionValidity; use runtime_primitives::generic; -use runtime_primitives::traits::{Convert, BlakeTwo256, Block as BlockT}; +use runtime_primitives::traits::{Convert, BlakeTwo256, Block as BlockT, DigestFor, NumberFor}; #[cfg(feature = "std")] use runtime_primitives::traits::ApiRef; #[cfg(feature = "std")] @@ -84,6 +85,7 @@ use council::seats as council_seats; #[cfg(any(feature = "std", test))] use version::NativeVersion; use substrate_primitives::OpaqueMetadata; +use substrate_fg_primitives::{runtime::GrandpaApi, ScheduledChange}; #[cfg(any(feature = "std", test))] pub use runtime_primitives::BuildStorage; @@ -395,6 +397,19 @@ impl client::runtime_api::Metadata for ClientWithApi { } } +#[cfg(feature = "std")] +impl substrate_fg_primitives::GrandpaApi for ClientWithApi { + fn grandpa_pending_change(&self, at: &GBlockId, digest: &DigestFor) + -> Result>>, client::error::Error> { + self.call_api_at(at, "grandpa_pending_change", digest) + } + + fn grandpa_authorities(&self, at: &GBlockId) + -> Result, client::error::Error> { + self.call_api_at(at, "grandpa_authorities", &()) + } +} + impl_runtime_apis! { impl Core for Runtime { fn version() -> RuntimeVersion { @@ -447,4 +462,16 @@ impl_runtime_apis! { Executive::validate_transaction(tx) } } + + + impl GrandpaApi for ClientWithApi { + fn grandpa_pending_change(digest: DigestFor) + -> Option>> { + unimplemented!("Robert, where is the impl?") + } + + fn grandpa_authorities() -> Vec<(SessionKey, u64)> { + unimplemented!("Robert, where is the impl?") + } + } } diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index bb067bc400..4eeae1fd9d 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -526,6 +526,7 @@ dependencies = [ "srml-treasury 0.1.0", "srml-upgrade-key 0.1.0", "substrate-client 0.1.0", + "substrate-fg-primitives 0.1.0", "substrate-primitives 0.1.0", ] @@ -1272,6 +1273,18 @@ dependencies = [ "wasmi 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "substrate-fg-primitives" +version = "0.1.0" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "substrate-client 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "substrate-keyring" version = "0.1.0" diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index 9e74ff9d5d..6e9cfd0910 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -12,6 +12,7 @@ safe-mix = { version = "1.0", default-features = false } parity-codec-derive = { version = "2.1" } parity-codec = { version = "2.1", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } +substrate-fg-primitives = { path = "../../../core/finality-grandpa/primitives", default-features = false } substrate-client = { path = "../../../core/client", default-features = false } sr-std = { path = "../../../core/sr-std", default-features = false } srml-support = { path = "../../../srml/support", default-features = false } @@ -38,6 +39,7 @@ std = [ "parity-codec/std", "substrate-primitives/std", "substrate-client/std", + "substrate-fg-primitives/std", "sr-std/std", "srml-support/std", "srml-balances/std", diff --git a/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 766de4bda344ef0120ad9430fe43fcc41ecdabd8..8a89da66f1660fb72501339dae6ce988eadd865a 100644 GIT binary patch delta 182072 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�JF%UzA%d13jZmLl{du+#;zl=o_P4A zT(zmSoQ&nApcAIMjpIGqIDQ^v#lG?LY_E>gU&m@)Ur0I-HEx0lDiti_TrobQ@lxSE zH8u-&K>N9NJJPI#X~_uv)SqnYy7g&}8c8MJoeE%8O6w zFYK0t`;HgPr7{7*goYsy@r~z?_mA~(GfXR0>>k#m;BCC8_gr?0jZ!@%r&cnoRIa z_<65EA@ksOXWrBe*H(uNlH%R07K)$MP`{_}+d#gF1{Md)$RGi1O}x0wf85Qe_lVku z79YBDY_vYSIJj(n$HZXE8BWrO@oI?|Q}#4#x7_$}X=s0?0kLW|Q{YOkpCc`UxGCz% z0BAGRqsh5od>}dI;nIizekqL)(fHU*s>%Rn%G*GF=9`$XQTwxORLHj-#M()#P~{9& zoymXG?=6E$vfDe0z1u^dGnQ1}?_e>{^>J+1{`w4PV8-Z}uy!6~Gh@^#I|d0eRfS~X zBJ>$;Bf&}SB)$@eWJ*C_Jxt#9H76`3W;3cVo0t>u3P&s#Se1db1HT|olb1;Jp4!G> zJgiV|}J^gY>pI zjHYI*&#eVw5=?zLpxu!4QM>JNf3Q0_(?E9l%DxQwf1Gj`bN}4KG$Mo;Ot=rGJ+`_;8_iG`zW&<+mQQeYH3#owm)_UupD^R-|K>KAZ4u zmp%&s7P>vthi((HZK2ylWNMSXXpY1-&y*^68t|DSx6PM}jd3tdii z@OMF>E4geuBPX&bA`nIVmOFDC+1-D0XV$UZT_J~|JW^2M%4i{hTYTV2$1WU=twM97 zgP~*9dchH-%ITiUwK!)FjC%Ee-uVxxJzS-A^_LlD ze<#Zq)6Icc4-l~9p(3m|ap*jAg*9*#XRukP>wP3utSL`sq@zU5ybRb9Z?o@|q)hu! zFk9n8T609k220!;+^=*<5SyZ7TfsC&^dI)cW4V$)xH@trxNV;lOi0h1&VnMVf7Y6X z%0Z}h;2BiFEV21)OE7E##16y5Nl;04;evoYQDo4#W)q91vKrF<(&~rAkmj(Cw`yB0 z(%`41;>rv1SlHZFW*gqxD8$aS_*t5;lsiIo?>Xqeiw^mh4yiL_j`mq-7VcXc-WO^S zbHEswbyV9S2s}k;I!E(^YWV*i#4&}viM@6hFH+Vb>Y|=z~sUO zPVkb{Jl<3(?6=RW6lvJH^FY{EH&rNQ#%LB#&-2i$v>L2lVKM|&Yu<0df~(bDoi>B(q!no4YLu+P?EnZWZkfYyhg}C}}CCFyZF& z!s^yVctn*PWq@1cv$RUjxY1D|68LsR^jgbstL6IDdQ1v3>NwKgTvA<7mu7+o`vbhL zn5R~L+bRCQlM2qp*Jx5@DG($@gz=Ul0Z0~W+QAy=MyYu$EI|9NSC6N`0jyqGZ~(f& z{dx--ZovUgHy|kBYFHN0%8j4?YJ-Haj;HgCgrxmpyM%eJ-A|Bml5WfqoYq|AS&1Pp zPKz-lR(?%9TUIgN-da{^vW&K*`aWtQVGE)MQWR+xA@1?+x~G&*(?226>Wx9=dU%3P z4NP%@3x}^MGxr)ePSg}5$KOtQVJ5cef12sK9??N~6pqjDIPZWIKMVNmGT7&(G#$!j$}i zFcgc2ZWsEU{(H}k3u6YjY+5V__tyO+slN=vs{%B;B(%t~{bc&)jb zW84-?qyo$5)2wi2OIFg@{Ob)O1o)~B^8^FmLaTMcq*!qj7xWAt|4gQQZPbgH+DLk2BWt3{e{+c$W z)bieUAWJ?7x5u_^gm7z`lfRFhRhG-ks2BH5pFY9qE;etlgwLc~w*^xJrqpvMIx(kG znrv&J4TLEKna&S11}FNQ26H|qm%KUKS;Hal##OxOmu{`8+kA?QmR51rnd!$;8~=>S zi=(S}Np(*pIdnLC^9b)J3 z3AM1p^VxOXTKED2wYaP&XQ|woo(S6K*C38JnOTe{BM*N@5akl1ty~0_n6ldT^XoFCWydUctW@+!rheY_cUaLany-Wkkkg z#bNt(E^navk7lq8mOc?G%bYXG9nCA;hu*PL+OOCY?n676#ock}rF*#`+Sc>QY%^8A zvVs}jI+aU@jAg00V$UzvaI68ly`Ed^y4`)8JL|38-O8Qy(C%E=vbBg8$Z=nTrMj~L zbq#(dBWn|}H>OcNR$RUxSG5PlZa26{2-8BUlISahHLm;*_xCFe2UW3*lkU7pGS~(Y+!fq;qo5NFIXZuhbZWBNNf49q?_b1 zWrLX2yy$Q(gfTXwAIsuRQ)GK|gQDLI;VvlM#{oLvwd#k13dewIfBFZ5ijJwQ zp!5*d#nDEtdABK^erzr>dh^_53eN{B=K>EIDPy%tlf#g_{Niv~lV7-L1UqpCIY4s! zW+N6vCcmQmzN!xS)wV?_m0vC9Yg^Y`19RFnm5ov3+uC7e(YRR)w(n@jDor^V)|3Sn z=uDVqx?Zi*L_5~24>CSx>(wVQD6b)cKc*q}vI6EX7O5;Xp$G6e)nObSZJcjB7FNn~ zat^-B+3@C6dFfx`^3C40i^I#b0T5N5$EfnudZaGF0#p(wXx_x@Sc!Zco{zxbKnTzM z**>eooqE8wm^rMt83Fm<0Q0J&Eu=HzOvttwq1W}Mc^}2foG45U{EkT>YyyE{Hl&cm zya1h{OqzJl22+2w-Pe|TG_bp#^iGAViaO)OSLZ*kOFctUYVnc0y^Z?P@!smOJQQ1k z#pb->Rs?U=j5{_fmSv1WFN1+1c0Fm=tj)^ ziG`2*Xqq*SRp;(t&szws!MIiBYh)YotF=lE{waE}xXHz4PR*t>@~oJSO4pUav0m>T z9q(;}1?#ZKSvM^9kPj7mXd2G+6s&gF0=eUVc{&tG(xz;)NS(IS9+rg8jEmKx7Jd(- zjDutj<9!c$uQ36!HaIf_TEbFOIVY%}f%NEv_8E|tYSh*gY?%Ss(H%1&ovdR9Y@QHl z0+%zc>$$tu3^?<=72M=!z~vffn}McHg>@wbiaK6{(m0tXB!4rI0Onc(CwHqsLY$4h zY4ew?Gz$rp=mt3jT%kq|LV5y(1P49IK}b&&QX=%#qZWu#1}d<+ab^JD=&BQ<=t-_R zJ)sNAG~~vgexq)#fdj4-0&;E1guEiq)F*5sO5aUMYEqVesK+S+26Kl^j55=g{j4** z^t7K89~su-`b{J*BetNPc(^5za<@X(<)z-KOZM6fcRRD78hia>#_>?#PVd= zCn^A^GQ~Gw|2Stn1cSy2KV^ zMg6XXB8RnSF+f)h(iKDjS9LlhPb*AeER-<(&rPDI8li;aI@w1a_L_JHfwm`Lm?qwV zqV0*zuY1zMNfn7aH4Yk((y4J~Gg}A~c96(^B^5Fx)Bmi0*SV*1mMxTX z$c%7$w2~fOC{?bhF%Us(n&wlGr~qs7+1@%L z`W&Z#6k5{)_}d*;QsbHySZhYG`HBGa3We-dR!F&&g9zOq9wq+}B*6ukDx;cCHN;Vhc-39j?C=pwM?_WDA8lKuTkv8|!5CFsJmOyMAy3IHZlZ%pK0Nw3a$NrBw|e z?@g@)k-q}v+N^}FM75%>3x9n=4^Mh{twefWC*VTp++xFCBk<)pnptCP$(Q#mXVuv0 zwd$&5(He0TUIN%=I-r1IIWP%9#o|D;pOkjBFZ55;z64#`2f)URhB9+NpQY8Nu5~0| zMe7e(IaAC*?TnnJdRmcYlEohw;U=L1-C9R1~g@w~Lu4 zFa0;>Ji(Cj3O%S`{M3-a>24TXI*J8q{3HcDw=Db=KvV7U05?z#DRjspCNN5_nXt2~E}DyIqe zex8Ms4qfPI;POndgYJCve@b_0ce|4@-E=Qxf&b`7X%WAs5~c2Yq9Ye;toV650{jiJuu=E4dwPgZ!X?dVAX^eA~Kw;>Apz<~tHgrLVOJ$Pc z{>{~Wj7;%9Me1XX6F-PtrRjDO)eFuY&swBHirgxcIgUw1YQl%GZcV(K?>6Dn-SuH} z)+T>4z1!v&H0p2d>oD zLqRqnd9*kJOA?V0hy{VQD3PPEbPskp%IpUzwT8-SJozY8r%6QUmO2)!wPof4uxpckcH=Mti>a;(S*eM2iD zs&wg9;`)w(@K#3XM&P#>ol>#NC4&MHtJOJ*T^74I>Ohogrs~e4`^3{X9j{&G2L7nWb zY_0p-4oeY8LG5RDkRhAyj5EpXHsV+6MeCOyIg9}9EJ^@ouPf%?P|<{dSU|cgMI@tP zH49N*T!t?c?YJ4J`AA-joBIN8CWqr@G7QKaH{&sY>Cp73!=_Di#{k}8>J0@}k>gv( zkn+C4_er6-acGOsg-!F|SDg{W~gMuM9>$HA@e zV_BhN_g46+tZ;hMTs>AwsH#c3Toe>0q>F;Oi!UrJ6s?5IG|MfR^GT41B`Pt!$`xGu z*aUbYx#8^K-7JrX5uhBU`-aCeYdSP{a#B7cuAXGpBESk8IxRQNK?B{HGb20!sHaDx zkl;ho$k^$)pH~C%=QB=Hu|wJ6(#fAkr5&4w>`FrjH{6x~EfR-_RC47PkEouQm7*I~ z-s;W+<`cLgGiZ!1?FUdwF%kQq9TSZW+Y2CLYh{ISm!<&@b*j(df^bemFev8H{H7PZX)hjVXZS(~nFIot7smUb>f(G_kn^8sUl%_!NPagnaN3an6b(7`*m zVr}3Dl1I1caxX9?*pjB?GMClWKoC4RrXu;7vp7+hm~3k4m0ul zW2zslPu8jmF{A>-WXz3s>qhG$T2+a$H+pjR#=FfjlD)xe7Vq!S^JtrHXD^IH`}Hul zppJSYJ#I2g3)%?X7q1sW%j~uZfU!nSyeQ#L8gS-=)7;=Rgn}19sVw$omWimPQ91Ib za@+b=Z0#)Ef=2kAf}-^%Izjn={5&D`}CE?0i);er@$?Wh8Q>+BYok^6o2Yc5c{ zaqk2E;-+W)#gk+ZQw(|I()7{I>BUVq`$so7Z~B^h>1H2s-gxxC{Igakx6rZH3t$LJ zK!bQ*2`d<5dKvi$-!<$bhB~0R#*=iyThZ)`=+?K>QRd!E!B%&bfE8a2sq@7TYiIjjwZ(RwT@L%E*v(>0aa*H%;3cI~v(a7p zNPcuCbGI_M8y;!;(Tz+PU46QgI;j-7aRNW5C~)CvGL0p0T7@rn8hYLb@7{+r{rfNi zg0L690b40o{}wJ&@Db*c$36*ayU#(I)65%v1gE~b-K3X!Fm&%`+8zBitzUk+^RN3k zZKRLz3 zI$5lh_rzK!!zht?M5)4T+9M4u&`_(@vK%ddprT9vMM*X$#<59qbR1+^uM`sLh#9}# zyl*R!wXMz=Z$*Zr`jlz6#Q#=gN(kCQA7D!N15HL%t zvoTfyNguMHl>=F&0)P*PAc~2&+djI_0GwE9qWRk3ryy4pJdRxPZ!>smmex$SxoQRZ z8Ru{L-pxew`4@DkU`CI~nUrh#LWclW=%VtPFS;}1Rg~F3=+Drvvw=A9W_>x0&cpo3 zJn=q`)_g^;JUXu#n%l#6SDH&bAD)N)m$PD-d_d$T5QPxeNM09^zX^Wh^krjMyeY$+ zsDEd;dMVjkL3w5Sh!NEw=|A#RmeIL#oN2SUsa#n`cBx!2__@C7RORZLk=-VO4zz1r zibL|oIvQ7f0JrA_-l^o3&-{?Lpmnv6e1fZ6qgUEhLp?1TfKyxASk)wUyKQF`QQMYl zh^TE#Q%2Obr4dha6S?SZJF*-W;%DO*mD$z4+LC^Q@kS!oa0qe&WJoegd}T@;R>WzZDdf!vFZg7* zsmBuqUkdwn!RNfzLS#8^oI&+KIXU#i;xJnjCGGkWMS|Rl8N@Ee_1Q zf@Bdsgf;|XnU;d8{$g0PmNmqpQq!~9mJH=pUDlx8Z8N{u zGLw-&u?_AgJ%?R|Ohr%fg`v_kC*ikXI2)_%G@PB?yuE8O6Yb`94$iy*^G?HgTZ52x z=2*A{jyLZRTsd_()tosf!bBL3c9UtrnATEx>Q1Rqf-96U2(Gn>a=s%c2hVmPyTv^B z?LBr&2JK7_kb7#&FP$XIXO;RoQi_No9kTh9B7KUd(qaekR3M##DiQ9^m&^Lb5LB|5 z%zFH9+v;w@k>*nP*FGoKdJ$?8+j>Q{H-|8Aes2m#*Dfx&{1VRx+TTfb3{}m$AQ81M z-f-!`ykS`;uA>4+0?OVOJs*q@Ytt|u#K!aK&IgJHPM~yP8O!aX<3sG^8?JLPK!PU? zeQtQ2h`;dz7b3yVCNvEy5R{MaaHnjH8jt8W0n0%Z<-=a_Ib=~(>WTw2^Vin~-u(8N z95nOs_6&9|UZb%-Nq_7XMY58#E3Z*a=tbAYHHLf};APbKD*oK2yjqr@uW>)OY!(Cb zo-3zOkGJsv9YYURbIIl~UEawhd&hP8_gtcE=yDyG>>$^rf?RAu@=RTEFs{(?bBoey ztjtPtyc~69m6ixU!$YUCP-`7`n0W$5z1x&HO>>(%g_jVRbUoKIKKahHo|}c75a!c(k>{AO;QexzP= z_Kkb9R|D}cr{b<<+zC7eF_vXyEZRDa?aMaBtmdR&V^un|rW@Ofj#((_z7zY#Iyy#( zt%}$i@AU)JawGHAs{vw{YicZhngODcXnXC^NCoxzu{J!`kG710P#JSke&U#zGdoZ z*j&^YVq%=il_@GiIUo7jCt$Ke6AZS@NA5(ut*@dA(7SCIZ0&l=VQ>dR0$zrd2Ang^ z8nKYYGrUo3Np+bjCR}Kjj}~vNT>{9*966JpN+THC0Wf156E>rxU`U!N#Ts|nKg=ra z>hzyi2o(5!2T;s<#ft3{Z74MxGFg=86}Y^3aj|cEyN9-ffzc8#tAGw0bOTk*{HOQPyP2p=yu6ay)>s;ys*AQea92lUdTJMPUM|g%SLSnRO9RR zR$~@A32YZcktWoA{C^b5w6eyzp&)0vj5s$=zA3P2qeensDRM4UX6ra@uLekGn?3?8 zg~}%|&Qw~B@2I;SHO{c{Q#S$~;ac1RLuxj5fC|iwT}y&-$N&&l>%#(JRUjnwl>;F& zdxECdf$(CM2=G*J*o>&hzSqc5d7SwzUMTKRCvnVu!grZVU4VBe0Y)De_PCrH+lMb| zDbESEiYutmrWdCuUUaxJDqJDM&xPZ&>ctZo=FAIq>kwg7h`>l;{!x9FSA4u8)NK@7 z8$?^c;RL^v3163RN_+#L*VYG0%AyB|6-yaqDM>Zg3K9@xe`8)GXNV!VT_O2xd89(8 z>DikXvn|J$W~=B?<8txsRyf1;sdC_yd{^Dav%*|;w`PU8+SvWLS<|b~X}^m{G1Zp) zim?2RT+ehHO*U}pclLNe*|wY_iHf}@@n`l}pROei^_v-ITu;u~Wjje!!nKgmmW4`R zp!rv3$s6H$ z?B&hvFNfYeCZBw_?huq5Gk=e4*dX382xGBhC8t%UldSi9uCzueOKC%uK>$>*Xy0cB z2gdKX27^XMZE?^Fff=;;R)(%+7I=_QWRTg>BdO9;4YVkp2HIry&ZVKIvT9o3wy6W) zBJIf0&<0#|brRa4lZxRRaJ4(Zz@>NnjRS7SyMpajUWV7_YZh>GZ>PZBQWK0)>GZ;S zjZU{iYRe-Kq~ubyaWoB7R062j-8f0fy1{d*wYThEWK;q8jsf8)OlNxH0$B=)iGD)y zFClBrwiNSf>JXW1h0I8AYJHkk$=Gu&htjmASPNXs;ivcmCFCgO7Rf9!o6Igp>NS}f zJ^_NpPkJjp#aB43KCNE!zCsbK>~X=>Ju-2$Inw>4u_~vD^5Yf5^pPxCHZLtb%+41fsYspVj?4~Jp(?qBe z(*uypOM8cERq0e$T$=S4uNaWZ&k6OwxX*gE}pZfFN z_ID=+L7QgzI26o6L#`6$jqFVIsViVGkl<0H_3~0fURl{AuCeF2^u57dp%eVn1+Brl z-qeW_wYZ-dE`UYRf99&fci>}B=?SP}W^S1PP{p2RNhNc!r)04cO0i*}6?kfaQsRC9 zkiTeW<~gyAOccw>!8SPUi}K)j()O7{*tnlYs(m;zjm2qEhBugX?J($=H#hAa^X4K@ zT_yvEGH8LFb4FZjK5JeYYYqKoMm?d{_LWpgg<3axX|6i!R!7``iw0FsPAp-&KDxKs zmto1WW`^u$%eI!P!4r&Efvm&u^UhhuuXfsX;Jn)#GYFJYwyE3EC#eT5f8TJGbW6s- z-&J^5?&TH3vfc*TgZi7T!ZhM@akYIr&1|Ut7Cun zeIgCgy)Olp=1JwSoW!Rn4vOoxoFF)7&}GvOq8MA36eTOhZI(oPmjddw%JP+9x8RCJ zL#SBfC?IkT)O)>o0bfdY05%PFDAALE(^PM9Akkq_z4gHrFx1uz!-EJqtxuH@m?Tsf zLI02zYR0H7-lL?djvfZmxakiM*=n=l{~FzBL0plhEgv$m3*KjJ@k>?*98no=oV{i0 z6P6b?rUIjO<$r4dS980eYP$f@UC_z_R~PRLevPl_=u+>j^v*n&X|F5RQcd0w%W|yR zq}2HcI_ThM4^y|0aVvDtQ6rH_jWM|is23+Yt^xg-;!GN@YPy=79KCmG&!CcAuy<+t zz~;cb1!$E7P4p+9*}F7vGX8>6ogO$cx&sOS$ceRSbkmbrR2L|d7toG_H1ghLsXup zXG^2jyfG3D}z`g&%$ zy{~iDeWzT0GzgwbZtpGMUHa|)I00uSZy74@!Kdpk?<=38XFuyN|FegJL2+jCOr?Ba z>6!<4dq8jRlpJ3zPgZMZRLgq+n~zk>r!4IX0l0@-W9j-d2dX+Takdz9>5Iv}1LfHv z66lnH^7+9n>oyIPKdpYfyH-9cy!nCTN44@h!+Re{j+k8DPyJ@d?+SyTCeII+_Y6Ln z)Q8IZ=eutceC<&At910Z;qqRkn>CQ>$x)NbyCioH11VGZd!SF6>pwaK1Oifb9&i;Zxi%^>E(r`9}BcY$@NE< zcTu%~c0n?!5*CvgGs;8#zkQIWlWK9}!3UH5W|R*~eo`tIgJB2TTV|B2`bL$lduT@a zT|sz9uj-lVDO{N^}#Cb{|u6teF>kbM0J9^bg`4@Z=Tg9`h3 zJ`*(ly)ZUjxi$If(sDgHWNCShFaEKLZ*j%fEG_RuCHF2ZpTtk)_2nP&^UUkZFMtC- zIjTG|@SNs(3XFpQv)XM*`DiHR;s=vMj%L!52a~IhF7GBdfBES0CAvT4nDQ6qJ^THK zbud-Y`2X+oH$T+P9`!+c^26^Z!^f6)o8(_F``44>jxA3U=DzdT@^Qnh$&yqxBX={I+s(*H!WS==)bZl>G22l48+|9j}h(1^Xml{YZTHx@)hF*9)@2$Kvs1`L*$t zs`7!4#XqC$GdIScY~4v*WAi<5OqT$19Ub?}|sMeYbb7D8}}yXoJSi^C0C!vu&!Kp&w26Rg*0`>d*chK?D6+ncY59ze}+2m zd|$i=&wlVegJba5@$2>K(eIDP`0`!vkKtDPB-IPz<^+h$nh23cE{Mm;X*7~F-VyJR zEV>}BB!d^m`>DbU<4YLdcP@-)^Ygn4>B&LKdpH$si|OY+$rbv!GWp`g@qF%na&bJOFaGCZy17sCx0l2t{M>j+ z{4RcqAB=a=!#zG2|23bi{$TuDN{mHVA#EV-Lvkr=Bh$}%X_jx+0CzoGXJTG|aqo?h7 zNOIr@ieIqH(WKZcUX(02v3zLw?3a@FoLK%#K6~uM^50V1x;LIw{!Faz|L-Z~(9b0M$@CkFW629w6?YHrOUAA)?i#LrB01*j;{4#oNU|=T}=mLChoo?R5mG zWozbw-zQ3~H+D*XbVG5+$*ubK23C#dS0;C_4rhipeJZ*B&E?_n@BcGtjQ7k8@B7c> z;??2sj19MHtC8NUFK@8Xs?cwr{n33kWBqOE;qp&U!xX9o48sY zS*aaaF(3Fg$o9M>1))@=CF0W2S$en>)v&0`G_dI z>5_HpP6G>dvEy6Imqlgk{!cDX7OY{^7p+U`Uo1@+b@;%#$GhLgM3gyrVF>#c$Q zLG_CmSoQbCd>MUH+2;G)dzXbl)SO))wt2;PIHwRUvQRR|6YIPSIV+M(iA-1u&C-H| zjRoe|!P7N2w5`%C7R-x!*owJ8D9vNrJ6n0Tz&ccf(7-UpZOx^Mzy!hTBTE&yS32hd53?^Eqm}| zYn$@+#UFZG0}z;jf^n7sS2vU4uilYeAXTrX!dwK5VqR2RSWr8g9Jo?YQZUH_Fs0ID z^&R27;JM_xcYt^>jr+%Xc1FowaA$aG{TbZASiqJlJgS$L;QA*Yt04+pZ}YE{wReVR zR-bdbDnc*-4Q=*a;jZE1kKA}kSWjwe!x&zA{$1hwgH6eEcZEA~_pVFB8Oa`N!;_?R ze|Rl#)9UVD2zO0>v=)54?$^mnYeQ4&C_Hs~+RrvqUcBqpFNC`X>yv-_g4O!M7sA!t z-F$br(+q+T!P|JuGz5Hea#Vp-bnXXthkG^GmN|n*)WcDMv8V^_GFImO@#3CAX}r|v zI||e;YD&tofGaFERn8*r9^18VdA+QNx-$A@&kBlbPooEwja2wUC1PbJ25mo7v2m5H z(D5D1Tbg6ijh2?HC1grgfzevjssL2bi8xeMNEsJ|V^%VQ+BaNKXFT?X*aF!LWRm;F znIkI4%X1)2kSQxPg3&$Ey#j#oB<9~dwm*Oc<0@Exb)tqh4d#Ls6p zK%)Xs$VKhji8)G-S2^^p*!W?PmDY>%!s8c4`{7RF>QQ_@bMfx*3Rx418hR5CL!t3E zz)(;fP!p4ATX52Qn^8loZ~$wvq%ri=%j#ZCW9nKZZC|U5`z?&L3uU@Jspg-|T^LO_ zGPfBF8YMTWrRB}BGR@HOUZ6$~Dw@}-Tu}V>*44Xukj+f5n$-08x>@WfQ%8HA4R?^q!R&$G6W08=nUwh(t@H#g;9*z);A2dEOt}!QULF9NIBDPrn{TD zDQY%$C!W(0fI8rD(By!hJ)mgq7aDVfWHxUevTPDIkg#&GfJYv0K~uM*^_!Joil}yT zd8<_G2)69kh}AO&qiL;|S5OGKHb*EkVU=^Dnxx7(QN5V*PE<|0bEg)WngwS8=EhBt z@PaI-IJ6C~jihO0f#V5SS-cTJB%aNOjg?lw4yLT+A}h&61gE6f-T)^Y@sMM%SwSWf z@J;)VJIMThATMJAg@R(VVH-|jFp#nph3M&s#dcMDQ-$AflbCZupiTM zD`u_+czsi@*c}AQ$$Z7ebrz9kwOCVBQlt2$j$+!JOfid49#*bn#Jo(QxVfgIe6H5@ zi;a6)#oTT5Jvd%`tg+HRJI7d=R-SCiQ%!<{n zam|V+bV5ErKWHeU^O7K)>tM!EeFw!*9i0zTv!nCP7wVIHE`$-+-&_`N?GbOKk*u4K z@k-WD5$z@`$kF*mE6CCL1}n(X`T7f!d%hkI6J=lV4B6;cvxHJ78iirn?(Bjlr09rz zcfTd0fa0iyQ4#*$o(C5Y;rhI;=_Vv5&ydj;#gMITeS<0~EHvaW?jc1}aPu0a)NY4^ z87C^(X}KQHJibZ~_wQw6El6eHTWZMO+MK>MH!Cydzu>GU+#fEL@}I_wOp%;!&kcuD zn!yL8>G!M{FJ)TWcp2%T87YCNrnd=|(Q``jXNddY;_wIn7+fiAL#C0#)2tK>uWE_N zp{t4=HgL`{-(lzjchk|cPP3ZpQ)ch4rMP30c7r&mush(084q(l!k;C{KVMF6q8&jx0zyME9FJR zm(GjsK@pUM?`@%>ODYK4k@Wrg5W`g6$z2 zP3*~dzqGra#_vnZwRbI|TpyRo{E0=Ds`peWH4cG2<-kCT(`0#IxG4W1jJD7c>eA17 z*DPsjp^8_vpDh!mxK5qUEs6oQUN36bzDu@c-4~xU$qQ;ssqEk!TtXZ-+ z>BJ{L>Vs*SLI#!ySCu6)gu&?7piz}^wZx~Df<^@qs%CiWZPisZd1U-oV0if8+fSweUdCra2P<{6HB29kd6D+3(Xd zGy9rm?6ur98(vIdXSGeU;|Fu47&vT&|GF{&(w9lwjG2_{LmB0YzW|5+`fytjFqrJp z!x?9R)rn{aGfF8nRK$nu>C8S<5uhGsmt$I%5{!%pP8T0|G$b^Wokak&)VRlmw94?+02tR$u-(dSPMNSA`P*o9%)_{ z&PXaxl-0rx$!afuP25AHLXU|^qg_LJq%rgXXG}{Ln!uqfhS_ii1-0K4R2Y$j7+E^< zIMYHCiEG>RQow_xc`*K(i#}J;#hazC_C#XKgpSl*TzlSt@u5kr~7(Q?3stteXT50`kd}t(p+V4ZBA>Oo0ieXlgFmhADq0% zAJgThJN~GE7(I*`HMIMT7f3P^{etSUztIv=}K&k*-wqxyftn2LM0i{z-%#q-<10DJ z;0DG!t1u7oIRCZtvH7oY)j$MC>g#GhP;99TECP zEn^5C51r};v6vH1ZZjwt=d7l%Qz^t3q={6=6(w&ycnT7Fr3L*CdU0TvIy!c2@|K*OXaYmTQ# zt0GU7+_AiX-pLLLDOyzz`JTpINSTUQTqRY)dYuwhtxtAJm~w;xRGTq?>iBOl4c z{i((~I5_9wsaxb)zizEP`wDkgDW$Oh};*qoFmTe)vO>pYZ zu4ZIIss(e0Bli#qS~f8IX9CFxi!?q+##2mL){rP>yw?eLkqfBogu7s(n~YMZ+X?s< zt+3%{U+^DNQBC8OOu|njmC(&_Mk&UB+bE@ylkf&v2C@xCq_}Smq{?P4g{(kj`WTR9 zksC+3fi^IoxrCE=1w=1Qjxx?-Vl+)b zBGLQpoflv8?1dqGXh2^XZvspFniB4NZtQ?_6P?`Doi86Pwlu$m+9qN>J*9IZjnt&l z26N3P`}{2Y4#5h=pND7gbLP*(Yr~HP$$$Smd>dgOZ}~;It72TPcq;rQKkt3oUi!h) z;a7t1to!&g;SNE#{*TFhzYO<_uDjuD>t6U}_+h<%!LP!TgQwU1>#xFnbld-2cpTwr zr#u(_ke~gY50~{`wM!J@5sI40t)Gm~o?4)HwtuD(jN#PO@^ny%liDZap?45!@&-75 zz+&xeg9LD>2es=kM!3=mH!%m7aNIrIUmIVn3Rj^DNpBEZodgC)+7SNe{SUijv*`u; zQdFD$(VOcd&Bh17zea?FLEc0IaUl*PHkhStn^%E83<<;OgLb<%%Cw=aX+a~j4o-MU z@2Kri@6b|i5EpW79u+n zICC1j)|(C39{Sp6+TVx_`m_-OrN*N^Rj>oPn7IB~+v5b)fCbha8g|nyQC$02zzYkc zaq+ufa_Y@-dE^>kNzLw?M#Ss`U@J<_xj7yd5-+`-(vKoM8Jh%IIObo-#?DatI4K2GPLF_%p+ppwF^1(S`O*2u&M=ePWw$BN6po@0D6I9{ z%WNkJ>c!;xPZ3a7OxAxYJ|ny?NG5-V__YH+9nU_|H_ptQ&w`{HFKJh)Yh3e`Hm(&R z8t=2lX;>ZDQsbrMi_ZqbK`EKEnn1l`@{3Q$bB{H6c>t3Bk7)j)0g%l1r3zcwQvfz@ zPw6hb5Z*{F7KrRuAf9te{1(j}Lm5iWSshoCr*Dr3lIE&-QgYU9@r>k$x5P8UYy1lX ztC(pw@S$Y?{LR}|#cw{9-IW4>?W(F50RY=Tj;vCe0YGu4g>k4y+eQQ^0ifssP|88y z$k)G1TDAtrdA>V4R z!)wHM^2OEh^rIm+(yiL4{4jeCuOg&-4fO0nDvF1E`zptT8(00n%kK1|jdyIgGv09+ zdB_YnSr^nqOY;kHavJ!S?74=MHE&D~S`#mDKw*qsfI{h?1}OirCLUYrN2~$*5raUC zxX(rmo)nqb+H?Y@UigF`YSD)!JyyQARhbw+(G2^jYg@HtTUMazb+ZRGk)EG74B!u zQb_fecgBa#K!a5Es!i25`W^9!W#1VeNp-z<#XFq%z<+u0KA&`6JexA<>>_(PL&a2) zx#Y1R>PM9|&(7u`89S`FSF+)P;Kk%SAB<)N?@xa9!RYYj8oaFN1-0)oDBLrJ&tuEm zPQ`|v;F{9HHO|fXg*5@z$H)=Yx7RrdhiC9R`9J*KkPq#NWFp+9%J8(U(J$-A_vp8@ zZ>YV()agE<(SHtJ>sswy7;Vx!dYU%+Jqm~jB@B{A-`oh;D@TM`<V#OTo&zgG{yMb8aMEHz_#3; zF;*whsNJOSqUK1G%@2{M@<|QBv(dWJSq;t|tD>`OT9Vb5MY|&F>Q_fQDE|L9mqjDJ zSp&)GS4TsyeH)dqe0drlXlmGMjXwyWu*c?KY&O9m8|ki;TDOzNWzi0~YX0`a(TuY# z;~yHPItogDllA2z>@wN_c49&($$q`!j05$pwkP#Dr_`9u0s}VgK>`V2`6&5S^t&m* zK=BPrG|TtapFDnt4d})@qg{fJCX3caQ~5dc&S-e@AkfoHDbh7Nr(I}e>FJ2$n z28mDK8SPu^Kd$;`ywIVGr_JXrWi}dCOcjcO`p$f>-7|!uyJ6ThJ0$(2pZLH@Xu8v;Yg|Qv_v1rF_awHvl zSp1W4r0X0gkp`3Ju8np$QyUV5 zODKmg1DDR=E0Dg84MCgYLK06-V3BU9F&BZQz3yioEZLAk&J3>}V@lXjGM)7V6v)Gp|GX|bkTZ2d z^cE-1fkP!HEpUaTj(tg;Xbqx9d?Sq?#RI~3#)I^D6OTE{ul*aAO6(K*sSoWh(&3-Dc2pOSAqHK#IQq*vWyfAf%|`N|E^oSX*r%ne&&W4kT9*Y;Bw(yLQB6$x2pDiX3xsNjtF=+C=Gavw+4bgV)^L>qGXp>zula)xmAi$c`P)jD?st!M`L%v~R~teyA)ksGr3N z#FO@&2ByyLbuu^KfnNAjZ)YPpQf}PJc09C;H{BZTG1AdCrW^$O9<`aQ;yL!KV=(w{ zj;QwN)TmTR$~XD{WtY_Tuda%Qw*vP+Iat((O}B2f5C6NlS1zwenX^0R=hZ?kvJKNf z=}*^yqDfiu_}@2>!`vU=h7-1@Wv%1fe;Fd-jr3=Gt#t`oDRs_TKc!<9Qf36t!BdOm z?{Es@Z5)ClnNtuA=6nd!_-0Q_&|s4F$t3Gf{&;(INT+0l47&i%ZNGEdL5;nl5!DAc zi|3FKH>kIOoNko54+$!l35527rDP_Mlo~UvO#dK(3JP1#>l^3bii2lp&d{qC@bhZ; z1}}Gt@8wSMWl^e|C0?9hi7&}1zLz>n{8F>T5y=vCnQyRf3uO! z$8fMAe?Tu)@bz*=m>JX>;iKxA0l>M-9kW6E6q2pR?-rduJ}8}XVD(rHnJ8&-QE)DQ zlRsV-Rdba3lQq$BiIhbIcP9V6CbH}|l6ARP4*PsGch?TW3elKYvUet-i(RRV5h+1N z!{lS1kM?SkbeSsU=C0OSF$Q#=2GlQx9r@?*_w_`Y3*P2%u%cS8HBEprc?__@@2~PS!s+M-c(!_ z3YIhxnK?E#T3A@+cmC}jjqF@l#0$>#f_z8R*rW@ITZAz$Hf>`lJ= zv1oK(LYVlMMe$r=d8ZkM#*QO_l?6+2B6)!Y%RdX_(OS~bVg4yOED3KC&5=YR<$AKX z=A$%?k^B-V0eR~Q))-5zn#WXfCrAA*8ckk$G@24P&&umAHv!|jkO`RL76go4R8rPMKDPappaqj1-a5lJ-` z^1n_G!HDEE#EY3zt}MQavFW$rf8p=0JXw2T*pvHn+rLD6EisfR8%lVCQ0@w(m9th^ zT#+!~cp1gSPjF`8PS8vy-@PxIiRPf&SCdmL6(qK=nX%fweI`bLyd12<**ovH{3Il>tbr$-5olxT0H5 zwpNa4$&p1~jG!7JF_J^?i{8{!f?(I3u591>p>~9O*{dDg3P1hf)!pj6G!Mou?psHW z7BVIb+ZPiS*$f&`Juo59Fj*ZN$$eL*>@f797Qtn&FGNi>90t5Z)qIer=rUcaI+p>otX~7%?Aeww&o)pi1IXN zQqc{D4Rsl=RnyTZk(r}O$DP#0&JlE<0OMZ@V$dfOyGpg4^V4ioE!5MzD#D;z)6>eu zLgk>O=BAJz64wS!p*FmF`NP`oQ8iJbayaLQB}tRbl!nFs8fvxjMy2%D z!W)XMY!)m8$0>&Pb(R7t01Y<>_YEK8c>{CA0iD0nEB?)>#Eeb(=jV#n8@Jg@&YnSn zDtU&ckeV0Ta(&~Igk61|B@StJsuB_*dRFSTg%2R$_ax#fH|R^ zNJI6W8!ea6ifz0hk%7x7R|PXPYCh}XGYl3POmb7<%uOvi2Nw=wp=nvsW7Fu-be*s> zJ?)mkRrOOzsw|I>>RmhlbHl@I4a+R!oI+ggDRO$WK208fI2vi5iMd4Z9Ofwh$^_4m zyy?g)r5=A50YW9IAjv6*4=@Sr6y#so$3JNjB{^o1ZXwxAd1}R%H%$IKVKWEg4s)g(Pb=Z$d0N!hYH+Za%>oWl4bc+=g z9#{krM+4M|PE2V$wXrf9UzCx!2qKxXDH_>F(PqTwFkXIdLGx8*0u<_z<+oDW2*WJN z8IRY=n>R&sX9=I(KR~3}bh8JBFRi{kS+yw|KJ4wn<-iOIK+Dcc84JAa4GQ_=5j-G7 zSx}6}Y+r^94DeeFNEn^GxG7rPe48|H?Y}T$V8)=nBde6Eex3S@j!oV=>PJV{vY1U3 zFjD<=&-VM-K9Es6lC)kNW7?pEwkI~NzBV?`wjK_S)Hx3m!ZTx!#%8_ng2 zfdBYz^l_pLul?ufux4L<2;3mddIXL*4W0K~jzeLqf^J823soDtm|yrBCWe^lLzozD zzVoc;5wRjoCn2An&5kLphfv(BJBy^X0aKVS9F4>(;i7|i!(z0Q%~0$~crLF>kAk(t z1R;Hph8~G`6<{%_<*X_U)9X^Q|M#N9_s7|z^p+Y2R$OZDr29%}%IqHDhxVJm0PP-2 zJh|$zXjXGQc zRd{{@?r#oMwlPl8d3wUB4+~xpZxrRXwRcr4tE}%oXP)6 zVb~UDd!mEhi4J;lpL8+36|0NLXRuX;nc+u(H?kwyaUMbuM8l^Ie;AZ>HuWB zygn1H6mdbhb|&B%Wx~JS%3+-V6iyKL*2<`{Lm(?CEK!5UC2`*i{^Icr_C&@k}eSC6$F?m%|8_G?DQcC*#O4uk6P3rm9-I@-;{TX>~X@S<{ziexbd-WhB z_Qx}rm(@zAKi!?q(k)(G&mw&jK80yF(*AM;?~>~L${xNuB+j4En@Pz%Uy9ZrXA3+)3yXl2Rdgb16Z%TR z3AM$iQyy;4lM3-grn7ag^gH)PpW-ZOz_zVQb&O%YBBC`4_0(lJ2~bgior2*{#Ax?z z^DvuWprnBhY1f`=Z0e+di34`pqz0qDWlA9TZ3C`wSV_KLZ91v%mmM6aphZy9!V#%Z zE2r4Wz%g0%`nZ^0{r^7N;jQd_7uI27Y-JvJ zmg;SqeE|SVvO2S}gJFx}wYNNqz8CCRK2@yRd-X?|8oF0+ zwI@&96RmFwkXhfhh2)9?v;J{hc85THdWKGdvbzjXsX+d za7b;5n|H-=%8kGAE4nIIIDkDr=H50!b-W~%fo2Zykx^9MGEGMXMU%Gy#|43^F7Ove zsB_eAGl0kWfKrqr(lhhRqTuCrfa22|l7H0u7rld&c@FI>%T`cE1Px16RF$q|BfWbKM^%XMnIRki$Gzb(&vbh8Oh|QqM6B0eh}R?G9$$) zJaMg;kWkZ;XMY$?&#J`}H7)t#lhH0C)A+)c#@oIi_GD`E;~(X|z$G`VhBl52cWr}p z)S;yIqi98P~8X zTjPtyoXWaw>2Su8O4dm-2i)r0KF`8WQ zBs-QjC!c#VTEx#Uo{VN^HGp~j2FK*bKg&%T2-j!xJfdMu1TT2dn@#wVtTv{ur#06} z8e#rN6JhmwJ(qVH$7#pL;?qPGpDwKJzJbYg1H zWT3gpWKPd~hFIIp$%mhbc9@-hl@X6pTC_WMlD~f@dRI~D2}{XWpO2;`2mdmuTU>AC0(WhA@*`RKyn-`4H_ zn`p;?GudAALUhasZe3-`y6L5dSVlUTE7GyOnV(1hC%Jf^c=vUWyb#qU1wTmsHHzQ2 zjh7d!yD^Rz2U~k9=tCR(r@cvSboOgGZ*ZqleBw4<-!plng#UOe-K5SvlVi*A!FuVS zEsW)u-gu|v`D5a8^4)TL)b>^2cs_Qij- zweOjzU6aH575jRB3$!O z^4Ur8$0$9p7XN`CmNBL#$4!pU=JN+9$LCY@+9~mOx7IMA-zix<$XSU$NG1)%JCNxv z*<&c)joUX3#RpK)$A;98B>aDgdlUF5iso;8=bqdfl0bj}vrEu~8@X>L$R&v24JwBc zfp7|lsNe=f6f^SX*x(oSOPPAh@Qc-W{m?ToZ=FXZccg4lyfFzw~TilJBB_=IKqT zf(>iyE6xTkTRIASvQ^Lpq)+~*e#7jW5gicL8>lLJXYf3|c2cZcMAzo)LODbHm~-?m z&k!#VUt8?xuIELcDbOdVXsU1ny$h&&T?758+Od3zqG$!Q1!%gPAGZA&ZP*ZZc>W_} zpu6efi!QnyUDQ~=EJ3nGqh|V7r&pLN){3NyOKI!QgXL(fGUB~f zdVciydAP{-Y(=0uH5FgC(C;`4P!vFUOxG2y^t$mPqA21r<)7%+sf|8Uq0aI~Tm5d( zoV(u0cKUzLQlj9_#xyPOuiIjJdwoM<^(9M*>pSR66Qe!;jW_q;j`|v6(bUfRQWX72 zXZ`4ZS1MZa0OkCitJk6mdp!K3tIuLWoE$F@-%$Ku>nYLgUG+i?KTEsm14uA*lL-3Y zvge50?)tRE+&#QEcGnlEZ$2LF(?j1*L)Zs>(D&Q+(x3nDaBgyeegfj5NpF2Qihidz zZh-wv9F@VjefaJ2KKe~E<8S_(JQtjWxK*Ot`+~Pn#DsnM|XDIE(Gc%MV`8*y${o9ob5lp#VnS$WQ+m#CtbeO4J z`w!I_EUMk1+z8mMcf|3;^FTz6ofVJ5^K?X2&Qf@&KMNV>ipH~*E`S|3TPaGc!&niT zp)`peoUPoUB*tG%@r}h(bCvhb(n3+RPMpup*CPo+{-M1puKo<8P-ROmMCKoU%r&%|1M}R1`_ZDp$r9Zon`oX>rw?X<|v-W zk}SAuIcI>Ny~w^#>6}=zT2!;<;-34Msn_1eknx~{h}_To8jtEEraz#xIa`~3@_=&n z+0xPZ&WVnDPOPDPB$iB3iZD;yIR%udh>p8isiugg z1N93i+p|cK0*8pNaRc(q~7j{7Xs497lv!D|gZN*)f?=fF}s6h6o^q z-dU}%Y`yYvC69&|2`8pKu6&aFxuGQSJ&L$T3wH)L4m}bsa6RlQy?J{^73VF|>jUv?7U@F~ytYWc3`^b=+!VVh z;5H8yiT-Q!kC0Gztv(yUnzi}{^Q{d?%Mz7Gl-kkxPwVeeD_*fqZ%*O7XZ8IE#pLJp z&k*!~L7#5E_zK{27+(DPg5JFPGEH8@Tz=~H!{WD6)rs)sZEWWTB`uxofg+htHK0Zg z)X?shZ;&DW1ywgfYHE!p>qRh*r$;&xBed<-jbS@oUx#YL8 zODRbE?8V88FSszW?ePxbgik^nhUWoss8kI{V7>;MSZTK>>q96omO)ak`5J$iD=E;? zdK)y@H6s-}eHoxF6w z45S;|o87LGr_v#_)vDsWQhB}my4zJ(L`#i4+y)>0wAARYB0&+u2c!nql;yi{oFIVMMAPK3awiFY+N4BUNyfDtg^+OamvpeY?>PfjZOJqhvb#}bQp!Zf zxAYH%xdat^LbO|A&>hc1mKYaP2M>)fvc%gwL+zD;CYf|79k8l1FV*pEN(=#DsqQHKXceW(@ zESkKU5G9eZyLbUQNqUerOq?Ly+>17#C;Cjb7-~w9^s)CSn*k==0rwb={?Sd;ptB1< zJfIE^8u|?bDoZ9q5?imr9)+k+R5C)?#`FJ?=`uAk$U?b<=$Y`~Gw*<;wxPyGMJr`a z^uVV5I&Q*sD>O>Nmk>K#kY1$q$3BN7G=J)UC<~#3?mCG;DhXfv-zoAFoLL|*hs2Kf zt1%bQF~pE9+vI)T7DMA~(Lvxy43zNSsW1lootIz-e?`WC)<~CQczI~vt=+N+$yz}O zU+8#fM0CjQK1^hZVfcm3dt-^@CKq3BHA+G_KQ76|q+?nU=4YgpN5xY~<<;BE$D=V* z22mh2b2sPE;QPd9BKeRF#%&~Fvr!-r4mhAXdNH2S3`h@1_nD^L!oYP4xJ;hd9S)2l)T`0`S;rnu1NYkA zb2{~SN4qGEI9R2L4!hvikYAbu|H#CDxUq|b8f~^=9)OP#L9QO)Glss@Qt7O1DxFY( zktMP~<{-Z8zPQrjso9&b0iPX|^AW=RBt+wgg#tj+l6$pqra+Pj>?OMc&ej4kQWPo< z#M=>S1Dph4QApj6p@JbIX{iF*NS?q~wCxv+&~7o3X0oKB^W02xqMgLWBUPL*EC@A; z3sDldz$^fQL!yA983pYuC~(QL;7CHr4pG3NqQhVUcI(YPpZ#{DOOw2I!xaE=>VyrJ z+_DKZ^7H9f3C#x4*DH;h4X3E7*+|NBvjJ^0LJh_-bg&);)29jThK_o2!%<_?&;UyX zTvbKwE1QAt;E=OM`Ho{KX5u>tZhP+(aPy!iMuN#+i(r=M-xnvF2vbD9Ee4X#Z!=sm zvJo^-_h}&+R}$M?#%8IH;&C4GtsK)&o(tFTDpE|!cw1X84k_m8U$ zyO{3P@$pD;w=s38>(lXBE>jv@U`vzmiybMZ&P4f$500z#QxkJpe7IIs61OW&d3DX^ zSEa{pW;n3m`&yWp5LbdgK)QQ3%4GLm56(U2$GqS@@NSeOcec0RFRKZ!YHa>5-;f4L zL|9ftFkB!J%*n5KL!$S#2IWYmB~t-nVqP1xQcH=n$ZsY^9X&!&6%bMM-9ZW;_%|t` zDy1OXOM4_8ExH4U3iIn0rgv{N9kJ{zh0mUUJs*>-Cj){74CECjQ9Iq zMJsYOnt$i>y>n^a4BSPbLHE9;;>PW2Gjq){EMw9{=xeos*s)!$qQ10D9N4b*QI{>l z=?e9FOhQ-gP?xIjE)#8bs%?Du4m;JFY%szrAu+U;nI+clR6D9`mWhKq)dnX*wzt*=#AeG;?HuhpgrGt1bL50%*KyZeVdB-M&r4RV8? zpP@OgMswb+SiWH`Ow6Emaf6ug`M2Sar!ln%7bTJU4ScqYY8u4S0Ad6eDabFtk!mu` zaRX0S( zp~G;q?nR;_s%~|TOpZk&Qxyv-f=uDb2vBoUZBm&?x3?ag#%B_1jL@b zYC(t(^=Rl!$Y-m!;7X*BC2p@&3p3@K95>Ekk~bUMN56}WmFhXD+TKdFQ?^W92r-XT zl_p?8=nZ~U&jrAsAJw|qf8e+Zi4iAk(fvy_m;O^M`BA+}-L+i&{*&4SD~0e+>d;s_ zFZ)RyoRC)dvwC;6Q*fY0*h&R`__O+N6g2CIIv&AqN7O42T=a|jHICSb=D(^1Ci!6w z9uq@aD-3-DrvT`mbuEZuc#vc06tU9U#7TTqUG{w+VvBR=7K$6*@$iejz4@ zxDmh!sl@y(ep8#N-`+2V|E6~C6JOe#NHb_Pqky@jswK9hqUjTjehI>Oiu)z;R3`c( zQiGVp;}D!!_@|OxIE9bC(mNCZK}`Bj`s~~L@flfw91VyY3bd@qso*RaW!DVCYb}I! z5T~mk>}*W6xit4BE;{%fb0>M|pCWlvmdPHy7x7X4ut|L8p+e(2)kJcjMJW&`5qG)- zwIygSRn>{VfH4_V!D^q>5;8}i6}XvlF9U`Ymy6LI`8O@`DofD57KA^w{S*SoC0L@5 zT>>{X3G^vb-1nD*K;(@O=}cEi{rE^nBq7fNQ)obsb!Az%(|JQ7G4Lp1$q=p7mGp$X z@pmOkh}?&FIwMP$d_!s%;$Sd_G#|bHJ$AA@<^YpcsWkam9ZIHIkPc&Dm}0^dr6>?_ zjGENG+%)e}!{+>N8g`CsM6anNX_4v4ZQCZXZSg{F8h}t*^JlI#oV9rAX)$ueuLfsGqSF)_)W}aG={9I?syUeQ!c>qBu42}U zf8=o|d2LbtZJ3pkmWB8?tkFqU^g5}U&@kpg@xZrw;0u+OR5)hoX!1ZST$u%dJB}tn zI1ntl7*@P+91cJfNe9oxt!=fWJ{XP&YmBKHsTvhhzr`Y;i{x3EA3=>Wg|wBL8$wc( zKpFec(%iZP_`3M0tyVRX+d7c#K%GhagO652zyOrhGAcp6iJKM^ zIDw%$P!#cDf>v}h^a?(6de{ZXJ(8o;^my2hm0th&hS_8>y`5HdAon;w+1<-IAua(4 zy6siLJ-6SOr*t~U`^aj3_YXvaw!+%L@eHJUS7Yo_2q(a7GrF#yh$4Z;Qmvz z8l+breKTTHmfoV(RNwqX)Vf8R-55iC5pHj!bGmUn7_Hf*-hAAfy1BS3QhaiYb_Y*U zc+@8DTd9}ii>phu<}`^|RH~6$_{$o0Rq=kQRz!H;@UxO7Qh!q#ii@Ueslj+DE)0-^ z)y2qLwRWUZ{@1NqeSEw1R_!YK?60X>V{z3~`0K{};qIw$=Y_~kQ?>S9;&AnwZ^ZCv z8qZi6`1NU8tC|O>7hqzC&gk`el>}5%_b>iBOWgK^T1B+EO{*0vE3^ z>3;x40d@vxvW;HLv(2XB?jQ6f+S|XDiA_J~EwoBJ9Q{FWtDeBD?XW&9mv76YfiwUI z2((m6Mo)8(yeghKtX~dovstMZE2Uy|rM^&^E{<2~k18|7!$0a5Xp4U<6Ni7)J0u^3 zFCkV||0r7igv&o~SH*30j2_B<@m3vUpoq3H`%rO4TeE|riK4dVolxMv+tzHPZ9*1* zv^85$a?^HZTO^mXGkd9T{vlp$XLii_`j1Tk%nj?XAaZNd5%!=ER(rEScseYmkkm*f z;Zf}ZK?X!f0=1cgw(?Vd5GC4ZAi^x96SG`iu6&So_w<8~Emq;jk( zgMF|znkC-sVx9}s4s|gHWPCK;CEI#TFq#BDobHOtT=Q}zU954M||(Wr1b#I;|VY;0dr9g zv!zm1+|fhk^Ay3XPk>nmm_t3xq2jylKxt4=%j|o0xG3NzCZSo+yToj)ogG%@`O@X)rP%#RzrxH^)O%DBy3#z4!pp8S zzoXvVaez6P!iNT!7gss*#HIi-awb>ZKO;?*A z0E_O|m|aw5YxK^+W?#K?np4}UjVp@Cp$V#nDQa5Ssg2Vw;S_f+<<}xu1U7t?9$TIM z7|kALmZ<7tRg_+D_DKKr31&;2)@u?t@`U*Gdb0t9kTTqyj9|)eb0$IlHQam|uP==- zhc)*;P~->1CSbcj7-}cFs2dt+Wc12!U5Lw&X+a?RTNlx9q&XGe|7WCmuaYLNEioTd za+i)WtAqb*j4~%8?ygbh1O&=x^D6}3j5dd=OH|Q)jJdJu#^1_t1rervI4bYLS**KG zEeU3b>SN9Bv^6%?d`#W&hOoz(SE(B|i{f!+Yvl0YIJ2e_6fcc4+u`l6@n%a=INsbQ zp9cn)s7_rc-wpJb02}tS;K_hHZ!oK>uRb9vZ!k9z7SB&Ghs3ueXHGPyDay>KdLzWO za)%f-*=&Tp$K{jFVx>}?m~5_4gjjKt*~Z&)tnjxSDBGhtOg%C73-qBdrJ*0O!1xT4iGc_~J4@4v)* zjg&&`aU?+fBaKnfbu4WHRuT{U}HHRM|!GfG1Dh{sV=yJfr(~& zP;7)sM)lDg^oor5t$^Oxu7l?O3MSx+4n;V8@v^=XtwZYxI4>shIna1Qoe8&VRcIl$C_Pqf6QU9(Mol?6ai|3+lYt@ zuy()$t!`t)r&w-bTH~G+%Zvc_^>y%Q2~Hn^EIiKT_ACIsVjp_!3)>R3s)L2&Nhw@B z5`clf5R5T0=LIDEb)igPB=80BsN!cucsR5b07N8%qx!Of5;X@Zz)0|Yr2CAGjT`h7 zEPiAsG-S7tFQk^nI$OR}L9@kH(3yCN^)8YmvE_IMUSb_I2`}*;j8zV0#oO*=FF;*A zRq|;X1)53?Mw}^mksJ+6tAG?rHl1_?U_zQ`F>_-5i3_PMO!OYNFo=K)X*bGA3gOsb zVl4JvF}rTBm=v_aMmItxACatd?n@B_CA~GS?H1Z2#5t-mOAa-AzKof;3WWd@0{6G#VY4%9G0RP}})lMQ*?lf@Q^*d(TYgo7Dn;_Z+0_81)7hK;K+I1c$(Z=)#t#PUz{^Ob$kFFw&{ z(6V~yr?BFy5L-XR#nctzyH8<|y-y6tpZw88#fvO5#xG~8RD^#W0X715cybd?ae^E16Af{mZ) z!w`f&*B?Oe+UI%`1cyJ@uSZdr@78P5qGQ4yy+3`j`3wH!k1zO>!C&fg(^e&E1`LoC z9_hu33cZF{^Am1IZ&t4N3La2h7;`wVOUo?^T#Qp~bIW1tmm~&#iz84U@6)U1HHEea zm*2Dr+rcW}u-kaq1=nbZYq9hz94|N^YJH`5h_r!P4ULS=5G>3cD_BS?O$RD*>`nl- zDf$&*hO^kTXeF_ss$Eq0 zJfzJ@8$tqO3P5-jOvk|?F5sDsti!=YtyDqFR@ThQrp zJ(*t%%3RinurHu!47i0VBsQu~N<9398JHJCXh1vWy%8Qn03W)Ni$vYM2yQ^GW`qzy z_P~|%MVad*>KawSs|{A(j3@pQ-giJ&qs{nJNGh*!e1xfKAeHEIY`m$X5n!nINJ>{D z$uIF2HH!oVD9fBi+(CRK_nkfZ@_sfeO1PzYAi!DzysxDtle-7Wc`#ZdAPr~N;cWpT zBH-d^AuXc*;kgF`tv|j=F8CYKqMuX%ehhE0L)5WJhfep^`KA=g=?rlYE9w$km0j^uRy00Yi79ArcuB#4gh;8S zl8qW94~_w`Lu zyWSF0e}cX00WtDteIoGP^D{*I0bw7(VaF=s#v>TzD#X)A^v;O<;RtkpRic;vq7PEk z2UYRHuQ-aiRNV2K-tzx;Enpyk9>_MVTp^pp6r@G|lCOl?~S~R{H8iS?cgPYAKF{Iyo zi`iFE{w22DYIf5$9xoHYsby>!1 z#YSW_0*ed6pz3~snbItgSJ%jZF$M_+_RyJPq(J3ucuYkwRFUw}-G#iomLnwZ;~?&VcpTo49V*B3`2v)q zyZ2(DPG!-|VkU!LM{_9mQMpo2#v}L@w1iYbkyEjXmANpwVOjvmWqAs%d>|{SUNpSH z4+|!Nvi=w-sQz$$IthMNu_6~a+w`#LmTzD%9#OFrfQ7ndgL2C^y?Kd%v z-T)2bSV6pcZO+onSOF&o|Km4x1g?o7yU8Q8mw~~HqF8RYJP8d+%?hgmuSu!B*&q>( zN`q6#rZI@w;N%9Bt4z#asgcoiXlL1?yp|98cTs=SQjevcjIgk_v07j4K= zc9>VwstzXpvYpYnr|>$SUw!sOw$efl3no~~iFvn~E%UJDM9bJ9G^E(4CyT0-ZxltP zDU&1q`c7{sPacq)4h$NY+_32)tQBc;qtoO@Mxbh>2{TAenV8&=9)Tnkmfr-3%ukug za64f#LJfswJ$;BLkG!ZXjDBdU8;B5TOfMcpB|$;63zmcaR-1w85c#^{iATAjm{6QS z9}&{fXLu$@rG)S`k&uoOxDn~Ym&7gDkLrLxVPN`W(<+1}V7($WVXQ0-*NIa?*bQ(M z%BF8xBMv}N^JB?Po8iF9bm6-TryJPg zR|?sQvK1dZs+EMaEbx&|Y(QKQ3NY`Bu2W2xw)$pG!M2qqzMNuKr_I8TZj;g35#9mp z8!_8Zw0jh8#lFD~;T=cyzS^Bf%f$AhdLJcI)cqan*i13|cl|{Ko&L~EDbun)^b%y+ z;7`3*jWsw?BpJ3$WeS6Jv0|ZZ&Aa~8uf|Au;7|PqY-?U~On(;Jni$#jjA*C;g?j*WLhDJ^s=!kb9tzcflXU{eJ1oMC^MD}FlJmw(@UQJe`A_D8?33fner4+rQx3r+=5P|1XrMsyE|1LE}+cC z^$)7l^=?(M0EX&hiwe@KZm9wOc6Y-Xa4#RISbW1pIT1clLW(H~;3eS&EU5%rQ+Al^ z^XQNow${Q{d8cw)IEigVFk@bg-cJi`GR8-BA@kwF21jqC0ysc|idMvx22<9xA)~-i z;1?Y5BD2H@G`D28p9U`GC=|Mq>LZaQ81G1e`~b^G^bT5?xGT|JQ=zP7RY;ON8^R|k z5bOjYfcYqp9E@Y_8K)#Ij=APEf{{uf zl#CWl#yJu00vO@a_ykoNTgKa~37!nbN&8Pc5*G-t5r;IP&k>j0C;*vDS+m@fk8E*H zYit;%liojtEYedbV|>Afcz6XK!;_9cvYrzf_X2z&K z=}t-Wj~)%-EZ?EBAstHWo#qqXI|WdC5}Y``SSX#QwLwDgznaKKiD8ttZv=`gjn6Y0|@dRbxSL1E-RZ*Ifw&{P}sPmaWYKGaj4-OI@r=H zjH@h?u(+M{mKy4T9*PRb6u)Q%iF<5!gd-qb()`*Jo>cSk5<$w+vBZ#f)M|rh`OH{h zctr_#Bb7nYD3aHt)JbC9gyq(`5L$;Av1x0~Yema1gc|}>C*3@yQ3K#$s8u5p-{bKS zSty&61mLqge_E%ICJ5OUsxQF19gTe4Br%OU$s^fDUU`HKMfe(ays{1>%+fG1A;Kv@ zhc>DttztOi6Yx&Dmk=wB`!t#7)AQT=0jNFG2}6E8h(vGtgOc~+jZeC88X3y*1_Hl9-$*6E?3eq8G?N2&_)Oqy zT)haazWg0634w-@5!axF3j;&}bew=cU~Tm>{6CFY+^T&Yr8P#{+{I(t-=I`1E^j|f zU93Fcy#p!TpTD-_g9z^F>>{P8b05Uq-MPQ6JiPd;t`H=P|LWQhQ4P*NS4k$`=P@r| z%o?eU5cl71w$%{1c+;54(FAnALfp;&KC4R+7b zVdskx^UaO`;BVfYZ`MbSzsxtULDVG+%;^X|U0{wuz_^aO3%Sh~v+pv`Q5J}2?t-C5 zYw_M)WXE6x6Kpa|ZUT|8bO&&D!qSxLFg%6Ngv;?+h6@uc#{v~D=ly-ax zmzKYjTX*DAwCDoy@>0OVJN{Cn&5s5JD0ouF@VPBkE;AnhOvmMD#RX#Ua&yEBQri~G$6@rq2lpW9d5Z-(*R%an#Kv-{1? z`23s)fJJNZ_ycAk6_i>?^uU-yf2frQLsRaTwyk<#dG1UIA1-^n`6_QI@X%c zuP`Hd46?-sd0(1ZU{%4G^<8O>MV1>^n&(on->o#K5Vck@eeYUj){vi zz4IMv#MYZvnQid-@l~>e)_d5Ti`R7zGoCvhM#o$rPCSgv7Kp}=kfts=<`HuwNrfGc z!icg$4E`5hE5ti8X#SWv9N*vn7z~cS7w(x(SL3u!MYQhY z=6K5O-Y3kSfZ6i|TI73?^d$NZTI5L+M|`5UJqg1#gr7WRHZq*;vo~RCr%Rzq6G*$H zC`rnBj7DiR3Ub zPVY1w&X;9l;?(U~8q@zIf^YcZ>v$Gye-(daHv{ok@Bz92Cen_L6SYvzsFQfTW`~(u za49VD4)#p{JGMpr|5tpQ*d#=uv$Czc&K$S%xid;P0eM>N(WWFYtxD@cUi0CAH!TeU zZVd-|rHw|p%GKISTmiJ8MCh%nwdP3pLk5knK?|OA5_7rpiJj`<_ z2<}69qnx*ot2ISdnBj&jLUY#3sz3 zz>r^ln`F=~TYj?96Tz5dwHYk%_Y8DiS!PI8_p%|4fI^AxywBjJhBhu^H`~B;rbql92u645M~KW(x&c zcw&oG=#NTRFs25_p_gzXR(MQ@W1FL88O9_%n`2Mmq-f7xvJ*Hk0aNrL`K<1Smvx8YSdE z*1S6=6o1fsCW}A6Hv5cF-PzD=LfK7={`C+lm{!m-A8VLU21IiZ;-76H$$}5(=U@oK za8d_T1+ISsJ;GV65Xp41dch|~s)L77VZKF`nj)(tjN5D%yZ2O&IGK=-FjUDQGtc!( zIMda7r;+%~OxFXtN{4z#VZ@VHXxn(wqXP=n$fj>?+&dTu!xw&4C)KC@0J94Bc+L zRv@>RJvD;N9C2d!cjldH6Nz@W#QL-gyiQ7PYI#|a>arp=s3J}-t`EWHlGozFRx}Hx zc7xtnbo`!=J?#444CUrHnW4N?xW*5JGCgq2vBO!Sbe~y6G^{X#uyW{FfrV7IxT3-w zl}hUg(jP@)ke%fW4~c}@+;lbWGApsZg6Ddb^uNcN+$ zmC!hJ5=qv@FTAaIt-?%)(ZrU0W;5XM$37EVpj_SD5|OvxtRCTe=J6pkXN6!&*qWm1 zIZjoST8%GV#Vf8&%4Uw|zJNkA!PuG98lX0AeW4x_u0{Nx28P0eM|x6Jq645ERNR5% zWL|{n0bL#nnu3dQjpo|0WspIEF;i52W8N+Hes5+~Lnlb%+B^pj9zZ2Kl!xhZni#U* ztPKK2_M3IvW_bjJVy(8XR^w{HJeO!f#Kog?Qd&VtI3zwtrIoPwWxsiD-5eK3*6 z036h;>lI97l$+K0qVoZ>UhAw_K8QxX=f=!p84wv4IH5$CrYOn@i~A3l%@xR`17=kv zUwn7K>~bZ8QA0U7Qk*z>@Sm$-)1r=4G4l=(7&2G}%o+uPBrdpWVahYb4O2g)rmlh) zr=&>$o5-NDxb2|XtZj}9k8Y%VBLd)quoLp29j8hYg+Xhh>yVXq04?SFugMk_2hG9= zBml`UI5eLGGGJ1?eFxH_CgJ1-_lRTgRJbb&CgI7$Xe7QV@(gUOjB z2j#{~reg)s*z6yPVIhCvpFfS7e51A>spbK^Px+PB7!#&dtl{k)g z{t(vK+0oAqL6=lW0t|x@L;!nY;r#@7iQ;3Fz@Nh`r&e%W^sdp?O$w>#;6u}@9X)5P zb(_ww)yG;FM1P!MEmxIx(Rnvo4`y-n!G%^$F=(b$KRSMnm7A2?PA)#NPg)aw1dBG< ze?v^Si>|!K+K?$)?Sa1H9Wi8&$)|o-?SYDGy*RPQY)(hR@Y+h0d|_s(zda!$U*P=M zD=#kn!YmZKzc5n>fPJ?d`@+1u5GP?ZG^nE%VOCWXfI+XL6$KJr$o3TzJVo64rP)$l z^rU$1OB}nzIoac1;xuMLUSTn!-0V$9WM3=?tzHu4)Pjc!wy6!}EB}^l+^+hXc?jldARYkvJ7CCL%_;2f4h$|;* zWe2C1^G9P&{^*9N^_-u(O}X3d=G|h@daDM?jsl~ed|-U@OV*W&x{9$VR=?n|O?2Zc zR;i-S+9SHWW|6l{uej|St%l}Zgh;v=@}kv94@4Q01#u-_!Hk@tV~{oxV}nWmcy|(0Zb@%&MXu-XQKRv-n8&rZO(1vdlV6 zr`x~UWWhGVE3NZ!qn2p+wiQgwqE@a$>)S1$V~YC;QwZxoI2P+IZn)2=?o)#`c$ZQKfGHMcq~s$js?ImO-jrRej4 z)j`=NKKR9|t=_jsWE`=oiiK}jSu|UPAulYDumMGl{?!N8ghYrus^**zt%sCvqXk>x zs}3l%{K%TD-nBuj{Rpj$WOhY*{3oj>Xr1=4)m1(CwLlN6Dn@*atu_F#wEE%`tB%-! zWaYrpPq5C1FMu|mFf~ViVqKF6c7ysP^t#)uTqP<>wpncwIJ2JUveVK<;UsE`br$y zVHNmJm${dMPB}3WapSZRvvykb)W^PtCol+!7sanTt?R&819w>s5X{6&++YygHOywdgeiuMd3_{l45iDu=e3~={^V*ye`{soul9Y&3>y7R)47ntacf@DTDf$UXVg(_bzeS0jqi8F^a^c zq#VgbK-b1EGmpL=aPf~{zzEMC0Fe=HIbiiuAKxfy90X&Z#PBl@T5Zyz7?W|{1d~_y z#d7h^L94MZ;%XnX>R~k)GB7Dh=!J0tUU$f@y1UTH@&+t@`GkFOYN1_*jts zlhrl&EFvMX8ba#eROWg;)!AQ)OMkZ7 z+3ZZ%J^F=M`m@!@Azp#vk1b+!tO4+>xy!J324ZO?!B53EKZ8CPPax5l@;#35cry8j zwK0P}CjAwJ0Mrg!MbR(TyfX+v7IEQUt*y$d;^$wjLDlY8urMwPgsMcb_M4RPEst7P^_X#lX%hx*s?fKY=s2u0JgFT(RQO9ji+B(_j#{lr zG(bDo|qs6l7*e>z?HO4(iyk(Ga3kkzt1{<#;cwvaK9l^Yz z28qV!hC<8vyf`@27>dZg*BW)WBIB=xhxMi6p=*t%%7@VpuQdiL-0BU7ajRcF%&4I} zB5oRHe0pkYESD12aWWVUNZ5kwjVnlGPQTs=b&GcnXj*ewO?bNSCEFnq&vD?y$45UC z-(PS1i}AU8IODl-xN$Af3-gi&n37yL!dOWq9v)%5i(0)r(pbjOmz5agiKw)MvA@5> z*mElO%u6lAU!#nh(8`lXgGT$sgQJZb6r2(nV~orpT^R1Sq|@?tD1*AZ z#u@dr+4Io(#>vh%&NzeyUNPP{S5cl5Z{J`X2D;G+#(B!~(ftz)oJH9$#3W-sh%n%`w+b3%;~unVlyVY{6<4 zC2!t>wdzuFc#FyRUi5y~Y$9%c2g_&_|MWX%F9^(|@4%}P*0G1)HS3A?@0#h<5CB~1 zMP3KN-~T=HeEQ^(Pt4BdU)UJN==abL*sY{)Gc#ii*L1sCTlCvzcC8g>M(DvYEMS}| z%BHgxnhT`XZNnD)Qn5+3bH!hZogs`*%{vI&Lp%J0T4KkiDAH#MaCN=j}H8DDR7%yUmL+=#k7@sVrG% zw}T>M$w9kqVkRjfSGV)UNX2HSVh<{Ibz-zr+GH`s#c>&OS`JyF?{>2hwMoC9%p9>y zvul~l_kuC1E~&H|itjc1B);HMOXCpv;&t6FJh_lu(cG|ypW0A}Yb~mqc3iOoX7DNj zN(99e(+-|OjwPnu)FTJ3$gFPJUDQqYimNQU1QOsa%jPrTU)%Oiiakq#?gXZRi-!)* z7M02NrS_c^gLYZ$UQ;)^?nUKs-@KAU-$x)OzIrIkpimD^7HB z(4Jtr+g|Z@Ju8Lx@TecN!GAb%pO^IbQn|iz5Bfo$2qOJsvt~LAOgdX3<>m7q zn=7biT>6PwlojuyvGGDYTMfK|hCf)%CaF;^*JdwtlXC4L)Y98??OvE#In^P6kWHuR zHml>1+*qutZjbjO>xnis>|XSNc+U*0vkr?_-ZNd#6;CcU%5eB84*^{9WV~+{CV8%S zQuaolyx!_Tqwi0{ttKIPe>#pDL-PvV><|Ryu#3b*i1vr*ys0|Us%K+QrBPr=8e9gB zw9aiPw=D>coFCHwM3yHebm#eaLL3z54tD0S8Ka6BBdzOeuq&4{=ihaN6{>?ZI^|DR zv6QU}YRXNEA>^wW{)$If#flN#Hxe>k{bP>kIoj$e7PmI5L~wcwezrY(A3X6GK7sMe3FVl-g8M7t>kcoszXl>o^lZ) z_htBkTpQ)L!G6;JDAS57sq!`wxmW=yP}z{q)0y}(75-p8g_+Of}G z7em5!_Nlg5Z6u{7?YNaBs(-+{@!uPE?f&w0@zoh})5^YmT{Nm|*EH9&$0;$VhTY_3 zXOI(}qfeclwRijgHe*{3ibYpr!F-C%m{VEFG~qVp6U-@Dgft`+S)VQZMI6twTl;#_ zRnMq-hJxv{N3cn?Z1xrTY%O~h^~koh?Yc^tcxJVlSA7GP>ohcz6|_rxt0}$d<<#=; zz5NXj3~~fsgaWdBoUfqrx6Kvb*0xus#dJzRsFcJ#b?m0*8mzb6EHM(3SG3>0I`%E3 z3@LVOnhVW!AnLK?{@JlF^dURX_FJ0o@L|7>EyT(hYTIt?CG(_NE~ZHs=*YetN8Y%_ z7k_&;@*bQ2hL~8>cFBR{ziZmpL(J65gZ0WIqDvkydPEfG*7IRmMt{t^-=X>e-{bfWRK3nhtKa$jD zfkijAQM=GVLYS1&xo6sgMvfZ*7`$Fw*a272pN=4o*?_DoRB=}atwteBa^OJt;ZyH+ z9#|T13=SkC9uBdBN5n@RwB?a)j6*45c2;ySPdf#jK+3`-|3)guKQ#mNfiwAU3A(Sr z@YAKeW-xl5OB{%YTJ8qe*6?vfYLN!iE<|O5K>)HM!p;nU#t3EerSfr&pjgvMYlSKQ z-cDKr1eu*-s}&UIbk^!e@O2$%?=5mnVf7#<`edkO;9wB#0dww&>0|(@xn*y?P8YzW zxMY37s2!ODjLDwY!v?bEeEM(fmcGMKzY!D-tZ}F{l;S}}c1o~22>+A8X1*H-TSw3N?tFqe z34eEY0@UpH7;4GsdA&d>UXkSz>H&hn>Fh+z=D!~YTTjpV?s@_v$5nCs_a;Cs{0~FD zO;9J(VgsdkMOH|t9j8M@?)@MRRz}bH?mhzZn2tCLZFw*OYT1Vj^%B;UB%l~Emz>1` z!&>gTX{2Cb3thvVj{%zb2*;KEN3SLZPa#Sg5tkY611G0a2K0|OIXf&10fUFdMP0ON zb;;lk``oZs!#@kw3>F_Kq%8)8z6gdik@km~+mJdmJoBXigDh?zK4 zoC_$=8}MRF;k(|-3=)n>K~kCGEa5jIwL5GcS1w-kXO3vsU8`}C6gV)6Pnw?-r8k>1)QT9B0V(RwHyqtErx7AthQN{_x;7v-p!-B+vCa49gu1zA82 z!am4D0?tUuH%cS_O8%?(sIT@=!VM~P)bsB*h`?KHi|}NcC9k=FYYvk*6Y1sDskrdm>j{)KAL~VR$8vLb*5q zj;aG0^j*R!*Tv>0{)c0+ep=mX$$b1QM84c$Yf_}rc>)D@6K(FNIW6JiiBN_)We7SS zI?7JQvoO}d9|(N(9}@pm1hKS((`%TkiH!bQH@bfag;8GYS_Eg@Tl-WYauiL+VO<n1l@Y#Nr%ixC1nbXAaJ_h0jU)-Mh+koFDjy>;p#sqO2fGShPEAm!!c~> zGEG$SFXulZ<`^pK?&S_hea!EHR4Jq~iR6TaYYn3y5(lLu4p3chPJ_`m*W0Zu2a}1m zmuPA5K*k4i0SJeHA&p6r1hS@v0xXg_D^S6k+b|2jrieud&DQwr2iBm>rv@DfC-hJ# zn@T5vHc3$~ss7y^+GCG6An#hdLmY}Qr7sUpWj%8&?;9;nE%(fh_Ap#~FAVpAF%QQypq$kYo8 z0qWwAXgF6Y&l3Y*WN?J{`Ak|ZVJn2%(4op_@R9WljGzEZAQQ+TG6rioLv;qg1~=qN zItFD@P3Cua}7qX%A|L}DW_ zuMwzn=w*<;j$Yibs9arcxob3yP<<(VIr4&BTym)8<|6MVgz``F_cI{JjQTF&7_W)>nk0C zGNaOzfLt9^Aaqep{5>fv)KL1H;(ALRJWkN#9!e6{7#a?$MfoAK7-9&gw&bQ;GKmL> zoFWysX1SO_(FpD&7r^~-P4AYvSgL~4SGdUo2gjVWq7GB9ga;pFgJ~W{O_(Z%6b+5$ zXpPv#!QuxCtGCN1&Qr*p0Y>N)g7(~VU_yn41kd<*SlnN!jmx>6h##G1PWo!T+ko9$ z`bqc-H9)@PnGZe}z@#xW#O`5Qml|9M-2riG?#Y}j&X^F+uznFQjnQgFXi|Ofl<61K z7;Fh&JO1>G$xm&_J&?IICi_9(^wvDWr}&FYd?)!iwaQA+|Qv)j&)BML&Zc=Z|QI?_jDXkf7Siz$1)g} zu8vg(f|xFn!CD4c()j`EvcxwuxKw~z$&46DYTyP*4cl-cIQjssVIa9$0*vJYh9QX0 zbeOHuDn=|EuC>A(f~UvRRh8~|!?d?jULc4ZFv`pO+`KFQNNru#(=3|SGKPA->|EI^Y=0*=wu+zWVR4-fkG;x zA5|N^*5o3~DdANH^z>Rz3zeSX7>4l1A1skpp+Q@!P0=C<3RtW|8i4|6H=;nwW^s6= z){s^owMt@ZwcaIK4a{t49pw)g5FXxCp5t1nWi&)=;Z;@{?h^b!+*_hG;`@7GWkqhW zC=pi-eq5q8ZZ-!?XY%2zxb%dZ%wW*~Q%ZCbS&K4W^Wih#42g?fh-Ra-hW4M3X^s;7 zBU(I4gZr&@su(d^yA~^^_eN{W=(Tu^c4NCEELgA}@n)68*EFjn2JzHno?r={B3Po? zW3^7SHFC)~tvvFmB2|3k6cv75)Gp}4gaEB%X&jXlrwIX(m_}5o0{{Rh{j4W|g8T*U zxIsF7+amUahz^K2#^|=elU#;6ctTQs1B7x8jOh}d+W^_72%#UAIz70e*#teY83?`} zy|Av0Gx>+a)O@>>@*@TL;>&z{mGWbBdOf?bs{AC@oof%u`WeF+F%A7Co(&d^Oa7#Tn}2kctW_g#CV8J*eF zept=AbmW-giIawo8Sk7wa@b|#hYg)nEY9hTL!t46zT<8ZqkG$KPCTk;^tkIr^(&q* za@?@!+TQjviWqvKJx4q-&K@oHUuZY6FKyTE!f|7Y$3}De+TW*WltuoH_R{FvH`+Uu z=!pULv$|MvvptDE$rI<@VrPqWgX~_S`z@%%SM}}A;zReU#x7ca5FB&^~ z%B7p5%-iGk$b2P?}Uctetc5xND0iOls)dG@^Jyu`_a_Gid|@Ky(&cufvs8A6{p- zPPuXHbt6Y#K5o*;vBRVKFng^MeWn51n}9gqxjy<0gq!Q&FvDQ|%%#e=Pod zH5U86p>g&c%L9t$jJL~FYv}m#6UI$0j=nzuTPI?0Q@ggf;bu_w_vUs_k@lEvi_BZ? zp3#?YvR_o9-DcZUmFUZJ><&u38=IfkZ$j}zP-!R?e*TRUI7D-D_4?j826Pk2^X$A- zNf?g_&Y5TL(8SLV+x4Tr-(~0OV%#kIoM^kn_8WTo<;B-^aId>=+>K)=^%~Ym92a(< z=*7$I*R+~NLq`uCdtLEFr~8EBV(*1o6F>38RJ+`ya)*uvLUEFo(=+UCZEW3?%(};0m^enqk3gzS#D4N}4=ZNLAY}c4P zbo7nI;@ZdT%Y=2OJt!C}%LgsK(=Hd!ug3OJK(^xVgX}wN51%k}?6C1e2ahivI}E%s z__`58#||$JxXX@j3Zxtq>f?4eoH8{SC_ud$bq)qDM0h9uPs0E4c+vfFdwb@V8-j?9 z|Bi}APuMl9oEjY{6$76@|DAo6`0EL~HifmHwEwMcxgom!Nqe%12hsOg`@G1;_Q8Pe zWjB6y{F$P*;$4jw#ZQA_cVT*Q<)^@RnGVy&hz5O;Mvcp+l9e^h4>o~cR@l(psfSP%{`f2jLuq%@KA%*b8A}gjEpIuWok7v6~Av_6yi@GNyrYy!!}Jj%J>pNg$xVbutwy5@26N zo>Un>d>ik??dRkBYuex;4G);|#$>}Pym!I-V*KwHxbvzwVteNUVe!?AcFo9F07bXs zU+RMRGexw(dt%Fc2Ux#u=OfL}nqd2!^8N#0Qz!wyQ(-TS!^-ZSeMvmyt4}F(bR0NF zfNqi<0~hs>glBFA6IgjL(3g%JKparl1=;HVrwUTp(tN;vg{ zpcn50R`cGUo)!$$1^g;8AZj;=_^+pyU+M${Jpr~9Y(t%PE8eRktn}jFM0O;02IL0= z4G_*m=pr13|EZrjcyEi)hpz!PAo#6yWxflMFXT`SLGgtvL|L0qAI~td9_54J zvETM{f`K}Ci+bU5gthU01HuA?&m*fr2s80M1mW#?Z;Eg*!hD3?5mIZ??-#(3ETCV% zMJJat0`F)z*~cVEAaD#H_^mbNln)jry!!~7=f>-`EFqopTbJ?~7+ircr^w z5=35!4-O&p#d4R9alj43WzE_lorXvHHNvw`W53^3L!3Xx{f_7OfRs2S3Hwz$JI5*r z26ALp{5L*ii4CvXsba$`ww;p)pu|k#ttO6ACiRi-BSE>e#=9j#ui5A3bi!jI)5;`f z+RftGSHSic03wkk;uye;k|C}FL`DLR3B^~u=HplbAiu>3HV&lh=4=Wl0U{eIew!t- z>TIORei{hum8Cv>N`?s?_MpsgjR$e23==ayA{K2#SNS)Api-fZ1o34$5f%*u4ZYXE5?;44A`ZQ3c z$?NB{5t*NlGzDoibD^JCAV2$XJRGhEu+KWad`v~$al-rfGaL?|a|--uu2+AK}zF=fCIf=bn43 zQWL$N?wt!FL2Kdn_Sr4NjAT6W4FQ?e)MA7lE1Bhi#(Q>JPP9@tbA-$knvnv_ITU0 z(G6|+nZR;TR0kbb#Ec}DsR9^R!=RN(y7h|T30}*!^WKctsfUmmwMshlWuUC*O>PbJ z;~}T5R!cr^E(LHTXfb}Mk9ZIEbX;yE$$4)>lUc>veb%0h#y`nvtXa<!twCb{a3+`#z4?s=@X8CO;U|jfV4+T+Hyo7to z-~bAer^w&HJ=JV6$Lz4X%Tm+K$zJ9KmuL?)++!q@UX)3BKE+Dgb(B+O9>grO3QH1;lQ=Hr^4JbJkwSQ`VUYV zqLq*j;=ST+5VBKcgI7V;9YDG+!aZkxIqs>Zqd;k5(xo^}8>cUTp1ZM!lD-e_X+CJ6 zEtCPzXg>NbL`TsA$MW+qfoLdRLy7Ri6C_#w0&s(%=LyI9^^no9>|Jc_ql-bufXAsw zi@6+fMpr;F8VZ_;)MQtVvL@UWXIo+1*Qhp?yclv?^H*bl^aR}so(yhB>2ehQi8#;r zJD@AV5A*j?|I<$YyHaaJ(k!gOJ!MWcS&Vz?7MjJE#_!30t;9XG5Cz|B<8oSF*W;cB zD%pGl_q5lfb^lr1lTDh$Z^iH3xc@v03=KRFe(3tHR6h1*`m~cKK+Z8nA+5!O{o+#D?QQ6}u%sVp>F<0S`jw^f1=4e&Nk7Wc&v*y=^`-K> zccACOlYX?NPu~muv!!z2Ug)_Jq#sZEJo)h6^j!V(Qn?rUmQtnsYF!9FP0V#2l6kfNtlqCXp z?pZFtUC5AK5;qnX{HLi{IGEwC=iYo330cRj$U(+_==lC~+|$UQpOGjCxt4*TCxia9 z+`_$yW}`|nzcFOhwm+o%6h^DHg`pD%Y;Ca+1XTTMyLIHSycfLolPx-4Eu%Q`9z{|m4 zH9-=dr_?;)`84g<@LULfq+{0qj>^PwFDs}fYTqTE>9l>Mb0IP&FHe_>KOb_QntXss zn6;4e(enCxF!#Acq}-00atjcD8^Gk1=>oV7_9X?&PbN5QPNp44TaSD`g}r>(dKi>E z`ln}N?vtPzfH9!)qkG#{@MYj1M``HrnfWKd)1wPs12e~1k4XALMt#kTZL)mTcx&Um z88o>oLI9cKc5X)0|Y8^T1nAVp5j<;w1Q$;JcYs zbtX6Ktx%mo^}}VKn3xvCcLE>JW#NOzR=GRW?6L{oAN(LQ7h_2ZcqLf_j9bjKPU&#X zgszu$Yg?hDjf-qcp+C;LbcF(E)0YCSwr=83dcdj_@LyT=a(5nE@9SWly$2QW7UHde zv@V792cYJ4KLOwQVS4A56zIo*CO^hiF^y9)TrWUJK`32!Drqf=&Gth)r&MXxHF9e_ zt?8s0{0kD(cxS#{MWRd8HS&?9j6a!Vofba>+8gO_1MLG^2TEsxy+9{`?t#6Dpc_Fc z0&c8;lcq3wECd5U^Fb*gUFy2I^`W-T`v7<@q=iOIgq4OT>t{)N70>Ccb=IsuOg!8+ z1Bb%HFPoP~S;~qPJt-H0XT$7MOM&NgbBUrS{3_-te_p24^-*0n<8SCtIvc-8GjFoB zx{ypwHv@8B+~=VHJnEWoPr)EvJ7y%-$rkR{*8rFS&n zHE8E}x>OlYg`PrIc0OMrAGBvbjjGGirvqErG01Xl?>LWB%03xw?dCGeB!@>RbRR|-0~|WX79)+a@W^e&CdRS zo1S^5+@%~z^g!WCQ1+qtp+U-#1j&c1iiK0H`MMQU4JFKaC^0aw=%Wu+}n0e1qv zSA;Y#^Q9NFrt*>Z(=*QEGV{)dd44&D5}l1K`&!9u)k+?5k!?BjJT*yn8Tj}?T#W)J z(_)5oOf(ymp6G0wo@tv5x)zkOs01wqJq?rs&+lQ1eCeB@y+GH2@?rG#utAfRuIfh< zy+-^h@MtAvLO{3~33zhd2>{oX66{cTmfs0H*Xudx)lSNPERmik=>x#?I_fa>O8#S% z1l)hB@3In5QLJkc@NAefPUSlZ{r=3vfa6D89>~U1{w=tn_39;1@>z5Z!9BMGJ7F7S zw0zO^%2|n~HHV`mw!I5E+h|P(-C@XiKB=3SmZMN`>DkbOkn!u6t8vd$Wj*fcvCm}C zk)XTLoYO(`zz+ho;k=AqSm6oHuOF?4oC^LtC>7!_pz#)Nv8gYt)jgi*GvI8^N&EpM zM4I#@FS7=0Q81@3}_DMQDj&S$`1B*$cw?#wvJ{3JJ@9T?x5vgSAeSi zH8alB7O{->C)E&8zcG;eje)$S1H_hz^BSJh#4Dcm;EqJ^@eJ(=xVi;W;NPWy=K;>k zdXn{{Dd0nstebm5Yn4b#5k`+mvTnJ3^SzK1=y^b^Yszx)@x4iBzvb{!)Mlv?n?;Tz)r>iDAEf0Nk7VZV zL{@Ic8jh^kBGWve)nRL)>6mdqa|*ZO~hXul27hS@0zOIYXD_$P0$VCd&!a~+IA#q`oyd#ZNFjd#@B<6g1iEB0s%lP zK-NSv&F3NqL1|`2K`CG#0oorl4V1jurik_A|L>qQl!BlopuIqgL0j$$XWD|e5fIQK zvIabD5zYmr#ijt1ywrCnG8xIbDOjKcD8F8y<2?vbuJi6_|t;Cbp^0zDSExTA;i zBM8{nbB|o4WRUT6Vmy$sT!rUJe=YFbC4&_`;Y-2uV#9P}tR*o*W+?zlutni{DZUpO z@NRB_wLm&OQdrTnrm`q1F-(Ep12p$qlJQjV_l^&Dq_F;J68szR*4bu@ zKLuQCvch_vaZ#=i=AkV@or-kgN&62pnFpBv^0MFKApEY%ms|Bv1S?y+^kWT~#&xdUvRyxfZ`{ z-%*zQh?g2NdmgKg7{O*E)EHf`xFM?psl#=l`Gza#^7=ZZ%5AREoSjPEWHfiSO1z}D zsktfG)V!cEG}k!!6f;Ycxz2CzkliJd1d%%A8C=+C#A=sxm79MfF5Z^&Q~JL4nz2?B z1LVuUq-QwsJM*!Ef>I(A7B%ONuF5SciV_#BU({SwR1*$)L*7^<77YhnZePUkTrZ;d zYgv2xh`hBcMY-m?UR22;n#jZ-j*kn6WyK7y%MtK}oMD&WRp<-&2{ghEPylyXQLiKH z2szy@hr{6yhXX~VPEUh+DBac5-7wsBiursV7dpog3VXedh+}wEo^uo*(Lb6d%JmV8 z8Cf8SpEV-_y$i&A1%Uk6E?LzrePjR+>ktRR?TlzS; z@idh4V!8D+5!5b`nY~2ReyKJ^mdq46a$${d*e}!O$jvjw$?~LG;#4`Sx9Baq<4aZA z<#KRuQEk6Mi&(~2)QR@;U@VTw_B*16FY0kb-JS>rNa#upUl*7pJeGyAeNe8ev?h5t zNA#EVeZ_G36hzw9a(5rmY+tEpCTPDUVN~|Y0pJ?x$Pr7lYo)^tTl+|~N*>A)i?!93 z=%!p)UZah&nq_CMI90Kio@sBv(AHt&?3{;&uCt+8Hw6BXZ?u0|frqm?k|z@hAJu+Gx4jA@by|{-U>i zy|zrgUm^@SAy0JGHpozkm@D@W6DMT*oh~m%T{skq`Mfcg^LJXMe6>L2%aiiO0Q*L5 ztSqU*NDk-2$|mGwa`)wnQ|+6fGm+oqkmi#VRtMP@p!gq)2QDDNzXtrNV`o|4-^6I_SRyxm+6B$6sA3(;ZNU~gBjzh ztL)fcEXy*YK4;h$3Amzux7X>2JlIZ(^B2Yn1F=Xr5(vZ`{)aVL zJX1`RWrX>ImFVjcqD$Hzl`_@IUn((jwxN2nBIu3b5rHqCBW0DCW`7j@aIha{#EOXM zlI`$0BlzcVIoyWZZG;}fXfw4t`ipkbQ7EQ?(9?}!DJT8~p5%Wg;exKhRb`(BE1G^O8{|52ON2BPqopRV3=u`zF1c)on1jE#^X?FFM0>Wi*6AJ5i)g{H*YA#o zT)yYz%LQVb{=6pdt`$>d!|5V3?FH>oT^<=FdS}qrO$rLeU=^t|OCOpD*h>I~7NXWP`}MkuBvG9iJs zkh17p!-SY_9!nQKoB|*3h`A$S3=f)YPJbly;{U};7$Lvka5`PCXgKWhMEoylPyCPd zM4z_JJQg3OX>179{TF)!zRu|i`2*o_EE9x8gtZ;QlC{o;5LP@-&E*IiWE-?fkx7HB|sIH>ou z^IMBHBW<5{bv)7hp<;pdSGlvhSe>?CyD?GBi|hw9w;W`k4o$;FHvaOm%QxVC#WOD+ z0k8Xk>6x?q{s8=?fwd&+4@ILf{Ou?#U2;+hARp2Fa_wVFRDK2u^NF&gw(sObJmC$; z!f@@*NHi4qRFheg#Wncyn%q2DjMYCk`DR%?MRe1@(B!fyqR{>&;*{d)qL1t_1uHZ1Hz(D}_8K%fquoCM~Ib<#eBzryZr( zAV-e%AfEgOY)lnp_J1PkGXu+;#v#ti8z;Khf6>mS`uDqGqVQ=eq<@-lA()&$O`LAO zNZ&}cyZ*jzGxe4frF0 z@Xd0>bg{+0o>Q$pOLVhu(BZXcyMSIT5ByGlRcoTHRc(E3bM3iCQ&G`eqXE0eNKsLI zYzD_pm{cAtEgMx)S{6LBVsg;@>X!UvD16jOKc{z)j^T*X3@^3WWSjXxN* zdajtPJudI671Lx<4H|hnMjMtqb6eYV^>LP+ztkYdr)Wky(st-@ zM}TL`dPD3^+o`W^XR;$FIuka@#bu}?E+Li}FP%W|sxee+4y}R$ z{;pd?)L5d#Te(&(sEuT0jp(e$YgAEY9raA9o!byQBJYWDB_rcVQ&v zcZU7$NYwa~e$D@P%zszMjQ`g=CbX!zWj*_(lpoZKYJ5os9$^OW6Up zKjLzDsT^)Jg7gn}Ha|j6S$ zibfH$XcMnsVuTotC?<=M=%U1s>kY}9gBVmyOvJ>4B))kuG5Y_0pX%=EnVkia&-?qk zGTmKWUG>y+KTlOxKmOs!|9NHP=*aA=E>)38M7^VOvs586D_STNRAH8uUkeun7T!7f zlCxQ~1UHsMW~ErXWQn=S3v(`yFIj@elf1>!$gCL8@F0#$@Ti4f9?=heV+Ax4x%012 zsaW?~b)M_|GuhPrdwo=0&77+jp8uKov**qE*!dqjbW$YtMcvboW#I+$=ghwH`~_Fe zxoGaykz{vE)IQ~x`oDFuCYemeG@C_%8y;_!v55>*guT{L?W@qi!rt$fL1jGuo)B z8I(@O2IF}&h9SmU@YC8b1V9aC`&BY@JjPoM$z%(A;s1C*fK~Xf75@zzW)B+{v(y50 z$|+V%qOAqxbanMcstXZk+3FXH$Heuzw)>UXw8FPl_3Y0syyWsL=PsN(=c-7L z%FMZX&IO-cI0sa_{DOIrjVe3$GTfUzf9_R&+4CxS>70eLFPyz_cH{+BJA1)``PZBe znqE2gva9A^5c!^}xoGZX;Rn928s=Vh$($?aT(+=S@2bdFRa>~=k~tU5JKw*1Rpf`N z`pVgtU3mGW=U+8v&V`X5sm9NtC3H3C{Dru2)$9uv&b|Dy$WK(&3Z){Bsy=znw9`L- z;Z+Mici!D<(Q36>U46}8)qCpiYLEJd`au0leW*TCUHU8fc|HH)OXgmBm;RFO)~*PC^({<>bLx9R`V-%yXJ$JC?h zxB4ah3oz>K`Zj&Dx=B5!pVc?2$JIAgYV(Wsf9pT!XcBUwx}9Gi-u=h;#p;#rQxa40 zdw1fR==P5`ch@JEsaH0*$=fsvM^s;p-}|cJ z+@&Wdr~ByakT2R-;A+`OH3QXOuwB$RCwEf{huf6IN?Ase8hd1>L7jyb%T4C!ULbHyk?YN)>%Y4|WSn)ZyK~pL{GD zAAQ&-@O#~1SK{}b!_FM?1Moj^lOTTBMVD3VgH1MfAJdVJwr^M6w;g^+q08zV5vi?q zlDW7Y%|xr6NUjS1Qt4=Qc3h;|wwz>k5RTf}t~#APkI;$0Cwh{v7a!6Zvi-Bcc| zr`T0?YHB88C+#Xnb>^$>YCActC7*f><5`kVx7*9tW@2`FZ5{(TArs>R9jIQNjpQ>O znYf*?<9NivU-k4B^nXsS+Ky+HU7d@k645mz+|97gS!D=Y;qK>5f8YT z^x?9Tj_%AQfh-^?XBpV4y6-!_<7Wz-uMj41$1U*+K66i{itCQCi(Y7soFJ%YAim{6hV(?x|W5 zZvo5nj4Z_O$I*SEEAHT6EsdXq($kj4XU2xE1=`#6ZUvCF)2lhA-Jo*pO6SKQj=TBB z_<^YV&W-WWDrG3SCe}Hk`?$l0tBLLtH>(EspvCb-_lJihH{5!-rj*=%@z1wEzvoAKuEhfbV@)~)H2boA@j zZ|?s1$usrNKWw=35s{&4y3USd>6l zzx~vg(8OoYd`+vDH+<@x0ZEM-mtAn6THk%|1y`sw-I)uU_3nRd7=7XGkn`?uU3|KF zbwlcs_Xy@kbI-!XS)CVZ9G;zjQ5?N@kGg8cfNkIHMXx(!cC12zS8~vH7ihU`Lze)_gmMVg5TJ6INvbgx=94;l11n8$;sd=JULLFOq(ZPS~M6H z{%6rnJoBr?qwxE$#dGj`!IID6_oXGH@v93Ld;};Qq?xGkNj5+t0@D(JL;)@1rYT!tc#@9D(2G@3_5@>=SiXLh_?dm+o|K zQy9SoD~Gev%2AbXZ(ezC$&KAm4f5QAJE_Xwx$_$G)FrDHM@g$U+)=vs!wt2oPXswP zoc-mS27tJ)J@qJXv0=rxr)$;K{nEyX(cQ2Pbx(h)VRaW7A_;KxB%Q`#)t>I_p6(>y zyz%r67AZLYxeIyu^XDE`4IBTp8P(fN^#gH0k6+llrD1DO9-X9FzG}~g&piLrMvUuY zzrGW{TYe2Cy&<{%Qo`}M-+;icY*_ZvKtg`+j;^DuVj;XGXU+Mzt$ z^SjAB{QUQy#i9EjuT1J*@`sO5u;h<&`>8jMWclu02cc}(oA<@lwhf!!JxCMmxBhZp z@{n~8J4Zw!cFc(!9C`R*=g3IJi9*L&9niQIl$H}27kTaNDXas1esJW~x2JSJ^AFIp z`<8!x6>X0D;9^kLy-O*Wvz~-j1@zZ*b5wnd$M3|{Zy^ls-AT1d@BCNKfmP}?*utKg z8kNA&9ayixmhPN-HBK$>>8@83m0I7kwLz^_YMZ-YfC6{8-x#3&h)Q1^sKE8^mVxNv z75BI%b%f!2%V{Lf{1_TH=|sWz?y4p=1vP)!q`>X2Zbsv;y5pPW>bzzJJLqm}R!2<$ z^VeZicsvn$T<7Xh_!gQ=Q2W|(=i1JE%+YN5=t1ggwDs*l3NqooJV;H$Vf0`%4~Oo- z3S!|tGguvugKkmRqMyYra7tcv$F<4>r?;vT)vG;UZdC^>z5TM1SGwN)*Kl=K!&|Ff5S0}nhc?1=tlH!L z`M~&?=m)D_aPJzS&PuNn9;Qj%`3LtOBh)SE%(xuxFGs3-(C30tYB)hyHCo+^!}vCJ zx$1J)w5eGQ8$AKgMgTOMKXkkrrMGtV963h45pUSuUyWT|J?D*AQx({(=iv$J8LM{Z zA2vsv2Uhihjanw@W-$&uH%wL;)v!le84n(WgiOTYtq0w&9tKue>25zvU82^w&f#i? z?p^A3AFf{2+m^Zuk5HTSuBGneBh{&DWzWq=sv)uJ09D(T_B?)!dPSwz0B7h6qX*<) za?~k$+x7074o0wRnOoPcCg`oVxyQAuQxD&|0@zi~&V(R+ySe&dM6Pz3t1c~9d%UZd zTrKbUal1O!Qd``=e>3)>TGI3P$79E&4_EM`!xtor) zrVWP4p9r9~eMpT#-v}1xI2?Mv+%xPrYkG_o&aGU*edlEB{PbVN*f)2=p<3#`dxABG zPo(>KqHvKl${l}^m2~f$W*w!Ly62y09pSz@(@OR|KM_TboM@en!$&7t({Y$S-TE{R z?@qUlbZ4DyRhjbzILtc9IvIy=o@8B(!|0Q(6Vpo--GydHP0g%w>rS-}b{{?2YTL(f zeu1asrxroN`PnF%eJZdgha=oqPPL}ueAEoZKU zlywH`?);Q>eHhdU1odF|{xhv+-2L{M)=V5uJj*)VrxwmnRM)$Aoh9ga`7CQ1DvUl` z5Y>5hKmZx{Sku_MXIn?2(gEjK*W&P(bI?GA!^hq4oofxoot@`e3-^JR@$LiXfuonY zU7rR|EcmolYtEm-VfL(I(SDwyoG>jl=CI2?4L z)Gi*5a=&$#)5MqUs{++`ZiIf!MrC6L$V3)_8Kv%DL7bX`DVk&l;iJ z+IH(7eEO(B=xm%pjz{3o`(=0cWmcOz{aEXYp7jf?8rX98xht&|e1fi}k^DCE#DV6C zi?6b7AKm+9sszRZ6Fb=&&yEVtf~Vbe8XyI-y2*{k&Ul>}mW};vJ=K>&bpfEsr}t{%+n5_qrJhcLb>(P1YU=1jDT&fO?f8wdvtm_;~lc>lA`Kcj)Z+V0X)PpwlbvKd)1F_(fk^q!4YG+iw?C z!i_G5m*5pRi`8_T-@X`i-gJMsSgn_KCtRlvbicktA=h9YY$~Y3aXz!4mik3#3x24% zJ*i6_2kyA83s0czr%T0OI`MjSD?GnnUaz+3_wI4;y+IABNl^}>&iGDvYEHHL;tk3^ zbO)$4NuPkQNln%#;V%7)N%~Bjq54D|Uf*tvf0SNDD+=IMv@8QF-sa9&roJ@zcL;55 zJtmsXCv3P(k$kd!_Y;NoLiV+u=#A=ZddTkiH!FC$?zrU&*&g>R%hepfmb?Yd$Ci8C zAKe1j(ndyo*#3S?2sUkCqwi&4(+;ZB^82u91Dhsn({EK1_3QWaEWK6Tsp31I?Tt9i z?zS7Oq3)#H)DS{bcc*IXnR}ahK>~3v&MR$jXWgNi-3wL#;d|WsS3oLIed`K! zhQ8%F*SS*Z@w_m?zuTKtLU0N_9a z;H!72D({i8?xs7{*FX96gYfna$+m-s|L;!SAKj-8Ra;$kzZ$9Tbw}S1DjBqlbsxK5 zjn^N%>Arfu89Z<`)}8o(sypb{&jV0+op$1k7NoH%gH!7$3fv9atvf-Dbl<(#SEG)5 z-F@n`>6P#U$hy1S93C)?;2;-3eQap57&i}CUW^+3m zr-vDHdmmAasV-}BbZ4v`>8|dd4QQ=Gd8d=5lMcWekkFEYA~w2X3A-e>eu z`>sR|iLd^~`W5y*$lUhFI$>?Jp&&!G5o0d4t?P4E2{d36{9$Z`?nj>Dw@%eKHgZe*#v|#G8HL4 zAXP>kv#lApM7pyw!xT$F!-UsPU;5v&dUK@K$(Z{-Qpf;R0Ry;ynV}9LR!a!9e=NYX zYiRUfxMxU&M)oHx(BQK`dHbK}gXJ)b0lUItiTXYS#cxwz3RcRpyr>{`a@%z4LSecm_+ccRRKu4|P8?qtaE?EQT`m%1+B9!-TYx zMoHlSdH#T$)M{|$=?_t6a9pU&+@se<6ZM|Rp;n0wY1#;FN%c^M9(Mt}g~G~Tz7fz7Wo}3}Fy}?6q%itqq4d`*++J^i&V8*Od_9olvYL8@J6Lq*vw`Z5*{&r2g zftcfOS_bN(+VWi0xG)7vHS+2$pkTcjt8W2{X3GV*KC-C2^-;09^lG{akgzN13&>_y&9Zc2mIM}Kwdtc zi`tDj9i74val*_zgj4g79a|*B(S(al)aaS5&cMfWA8DbWO3-l{f{2Yv?SY*aHBbFj<;w63qRTypOux zeKeSr;0TX)@fNC?TiLImYXfGSV8%HEi3&TBB^Trn7AiR^cNChZa?s_le=0W+><1~s zaB`8fE{L%CPwr!|Xm49-d)v?+Tj)g#1MLCy??q6Z^(Y`&gjD`B#1aPun)pQpkPY?L z!_hF3Lu58`8Z`?Jsb2(ELBf3z8YY1_^el#+*EviP+BLA`GW0d*4O7i_<}rH927;~N zqAF41A|6@PC|+So7(On#KGKPnc{BZJ!$&Ay6%@#s#;-0a{ml^yb5@IU48T0}3zx1@ z*jIt!SgF95}(R&Ti z%9KWT27$uwB}jA|?^M~n`)uHPA$P1@K}(5SP!?tFj5*sWl5|l)AmP5_l*~o2;%J-ezq#)U6dQ%L6GBijED?Ek_E4Qm67~M}%)Uj2Dpe=_=NjhjwO^<)(=XTxJ_#JG zT?s^HRCjw%C{zN3R%gHQR@7gDx1#v{KM2Q*LN9$y>yNfv+UKPT%5@Pq_J^e$8!)WN z>LHqFqM9vH9=^5mJ&pYfVbUEL2)u+a&5i{xIuyO6TVS2xTx&msNjn8pam3;A?@0&) zL-5&r(_`)98E$i}AKd-5dDJ`sXI$9AMSfg0mv)qmW}&<~^C`QU*++H(x7M*fmm6ef z5R+6h`tgLIxijAg53sp&OoV|q-Dfdgo%tFRXZ>PNVmkA+C`FWDD#Le_GvP|`xM?%{ zRq+laJIQzhqRjAzaR-(&`jsAJC0w#KKjxT~i(p}!jhHL~D{d_Ww(7i?V;dgyVh)^| zhrF0$#y%nrc)oP*vm_>?GPcgZ3jMEvodO25-3S=O!WE<}%UG|*FOwoDy*i280z=5C zZ%xdOQ@D~iNCR=F4S;%2#?fzJ!Q<%3uJi9uP}ktWEXXsy6GX|%`p)WtJqY=5;0%0| zOeYxE;ye@QX+@p9&r*b5W+iJg2VT85H)O~6da;yy2oM8ehSM@7Ip(4lVnk$bLc+<{ zJ~|7FvfwJfdyG-f3wx}Oo(dU2=uyy4Y+5G8aU*O87epM}))&vqK7^D{*l~`Ad<)3) z`;_NW$C+FbU?1EDx3zCZsZ6My`n~|WOJBAcFbcPJv&t1R0mEj1+41wiDWEAJ1Db`C zlXiv$m}Z6~XCa!1UEf=u#vgt!W=tZ0GmZ1(_p$t z(y`Helree~bA6CW+#wj?DI=q-iABCqvR+c|+KI^#$y1nlop>o0E5u}iMNT9dzApr5 zr1)~~1+Ck#q|vMb%~BdF2vi$CADV6arI4biou1y37v5`rtlhfF(_b)2p8f)O7zKP} z)Wiy8OjS54NBTE|@1wZns$a)8II;^KvbdnR)6P)8u{Y#&e8rW+a$f|q)leQ8KVboD zPqD<0KM>J!kWLK|Ehz)0G}WOQa2yv z&eJoD!h)s)qb$?3qDq8LqIQIkh_FR3`BW9S@h>~=k zU}4y65~7mVKgN%o{$?kBGQ2LfJGEKp`Ncdr9Q6dMTnv=*cs9E7$S4JQ0rmUT?SHF zz)M)d!64ilaDwzJ^d}05PDf7zP#!MfZiR6?e zu=&;o1{^OYunWO}`?5TFT4EpO&&%`Iln0OD&B$RWyu@`J)o~X+XTPQZ6Ij+bQRI;} zEb!+wPIkt!>Hx}RY0?*?c?^ob1&*tQu*AA)Z63LTlQLHKrUP=wm~yOmDFtIhihq)% z;B72#q36KsjZr61O@LlN@DT&MW2eAW8iEA;R@rSmEM?oA+;nYkO4NIL9 z&uJ%4+nK3Kr(kfNe$ZX?1JzdGn?E6k3geLV69OL$nsK62b}bYw>qECt8yj;R1&*W?7NXAhi-8Z?2#a2j3P3U+gZ~}a9Twpk2yaOdT-Umy z>uSThfj_Ez*Ak*dOJ<&l&`!djNSks2H^DbGAiU&t3Ub3EofwcH9}X12u!Jxt@(0`P z@m)NmwD2YhdXtHh` z#X)KKI7Vl`1-w}W9G?oe!=%BDsDKov%VdevP&tWjOO{+qsgQ{aPM5G}09q?N zqBy(M8xw|u+=SIr8P;Ij;(|6vq2ZjG3SugV14O+*Ld?TlV3ZimQC6ebbpb?@{rASI zO>_~^wc5x5f(;O-&>uBDut-fI(0)-xB+Ut#;V$wP8*a#HM@2MQ#nAgl_WhLC{4 z$o(;xEr15Q3_WZ7aVQd_74f)H{K8;x-eI+BX}XlN6*2mEUxe?{nEg709=<6u?x1U% zKFR4_b~H~;XnD+^S%M!9y)fQBj}@saF+19|>d!l(sKD7RG+=w>CO^;WwkLg_tdtsL z=V$CZNDZR_FEd=(I3rh&D!l;uEj~BE01b8N0ezfv6hWR6fJ^{@H)zz#;K~?^u)_E9 ze1-v3@$|(IvliC_NG5A|#Y`4KL-d5KO;)Aj?&aIm*hBwwPu`@r=-PqJjZzB|`2V&q z-_ntROo%U!{B&-J-Qp;_r6o5MEeA97Eg@gN1sXOtgf1MN$DugEUx_c@Y!A&f(nLcY z(4B*uPmAVH&xc*(rQi2lV`E5QF`=3~=O$0lE;l&z&_I51=tTeoczDahIEXIM3}RW( zRG6E@MMYiS3(bn;n}R%#n6;wcjH-RTX4)R~zXnPhW_yqqIQZVc;P5s2x4ml~XwyxD zIP!Vh0jcse%tKmmA%~qz4^T#qmJtmFJ^}?8ZbPj-*egQ%!1nKwh1d8dj6#HmbK(*( zZB1ZVh{yAi_R0eiv7UH74^IP1n+^x-0WYjK-1lgBjmAd6qv3sagtZ*F*cqFHOPq*L z-)pL+?GZjmV$#r3#vWc$1cbn+^o!UYk=+abCWNLCncNB6R6~JvN`eQ>#R4IKEM=$t z#-s>cj+Cs884qir%TacTe49PeD{8Vw75uw=cqMX$ zGHEu<_hjspJ=&`=(r)w4M%hi_r*>mG9lNya_%5wj0_b9z$GzGiXm7B8p`8DHzk%c_ z`VFwiMj3=Gb-t-2zK0#MYYe7q%^{pNf?`XVAkbrKkCzK&Je;+gfV?&6-0*J``L_!3 zKlr!GF0yTiTPream`C@PZW{6I_75{TvZOK$umD97WK9NHQt?Slq!C zl%3D&a7Bev3h<=pG{BSMt#-I9TyZ5*O%Gk12H5qmrYx~QVb}cim~j{2TGs@gdDeI4 zYH0M~ILjh#GAo@X&zXbb{EtBZv{VuvvjPTjJ^=&Lasb<40gf)?1M~t9rICSWBOJIP zodskkni*d=XEYW(o5~PeuhC*2&Qk$ic_?dV^nh3HS#*y=o-!y(bEspl-vT;j6agz4 zv0M2w)c8hgye$z7DFmSPqL&ai8Uid~&g*ZXdo zko^C;A9vhqYET1mt@1`sF<u^#P?8>F}KrG}3N=~381 zVboxKtcCS@xr}?+V134kRdyBV3B3Rp)8Wj%h+E?#xJ6G7kl0D*U9+=C)?L}68yom;zjTA&37vA&?P<}c z;iZ~XtG35vxgrWsvpoXiJ)Lph!)#Wq83$L?)VQB$)xU2_*$E^>6J{wd>e~_7g2O#| zh@OzhNDd?8-Z(@bI5Op6g=P!py|_=wp2&O-(A(Gp`-;F(L~xsNe>FrO3Q*ERfxQ~{ zl%aZBAu|<%LWuBoP-a@Df#(Zh4-@!HaX%5xD56wWMG9IlF9km=L01n!3al2pO35A~ zgQ=1DY5@@V5LA_ru(X5v(hkn>dO)$Ht@f{nxby%zBt(wop#)}Be8}SN?xS>*JM?(n zG`M`LkQtKtksSOpir39#Z}q{<-Quv9|mU@BYgqto=5LUs~ZA_U~gnFJzE^H+vP z!#ajgWZ=GpLTM4KfKUXh5~08os@_8$&ONePMZ7c!UPwkxoRg-xgxT%n^EsU<03UlL zZkV>Bs6}$TZivuIK!JPuv|Cqku&1K90@L)@@V=O)Dj0WDv+QdF7Zb}LQ=EkKU`_;8 z>PLAjgZ*zzy#yANlT~DoApe+g$IaDED%JB*USF&WnVM829*wC)(yGF%pJn8&;V3;h zd_q?oGK)Jhd5`Y`0zaesLFVw1J}B&%j0`$iU%3+&cVw`5r&Jif)n6wKC7tZ04=_xi zQcNe3Q4e!Pznu)&TPNSFJP;OlWH1Np4W!_avENRb_SVT`l{;Z^M+UFH?HgMKQICWE z<4#~(_T7o}(Nf+Aw34Hs1x3k!qw+{t+>w#kH%yXm_eXcw8o(3M^U{ge$0HT`C_r(t zyd#qf{NJjt1owW7oq`yAKU@3zkUxFINKjmUZ zA!;IBTRg2Ro*L-_K@w>r19ECORZa~*$?4GIV<3*l?O%avmr0X{+&xF>T3W^Wf(1u} zHpZ@YVx6#%uximO9EF?&%HT^eIf0_7#u*CHctS{jJWv_^Ebhp-svI>xETX1R>M^Wl zim-&04hnU1f8}mi+>u$?rkb6@3dSlp5M;{JEjUF^o|<>1g@ z?v-9n?c-vxyb{v3_BR^h%%kucU9?N?-wwbl4`p_FuR}YcoKBDS*X5DrR0?~JW?*Jq z=YbH}li#&Wp@${%*un&X=TZ=afd^SdYCgDCmK@UepOH3SGuxT0B zBPu(MNP%>ce1-h?^KXyj*1Jd&1x)Jvw_T zi?j{^jZQa8t0oqS>1ZD~4+z1zsxq7`?#MjY2Tp{0#z%#^Dpe(4=_BK#Lk!XFbyLQ4 zEbhpx^1BJRZgYPOahKmqAqb_sZp4i573+8V-2@VcZYq1+uHQ}2%a{<(?gZ3@3ZVwe zDA69 z$ch>0v&R< zhv8?B*Tirbi7-KQA^d>mR*$}A`isRfqf_eGLTy*(Rlcg@xl6@xf0cMR?t4e+2IJkt zjW)BeMXT_15WV`jZO`j5FRFw8f-qKi@s`TG$l{L7LFH(IaV_J-0<;;!{)2(1^0t>( zZkxp&neqE>+iQA)kB3zHpyKIxLl_Ix{9=*!>kD42Dj7>zJ|WBw?lu{kc~0_FAr|#2 zt>!Wei5y>+^kA{Kczq2`xtH~T`XsSR(;n33eBGPGs)g^$;Mn9nR)!#Rdk@vkSV6lF z9i9s@5`YjzQN~Ct?#RGVHS7^+z3=wNNnZ=JUct{(4Gwj4L*;H*+>!Z0pKf5(D>LkE zK{tLcp6eipmR<^d^EjrPFZJnWV}IS;v)68}uRItQ1811zFGJch{dH4Bnm?MMA)Iwp z?uNx3nTPxB1x=Kh*R@3*z9Pgeg(}}mLAa8ma8ti<35h6o>UD4HiIP~t^HRZ~(=tmv z5b5M)?JBrx*yH&GDelM|;NhVb(kqKF;az2sI7VEHzpCj4?vp&2D;m-V3TubrqHrfZ z9?Ci~co?^jPKtd5f}KqtAl=oifz+k(3ce?Jw`ryjhYm_g;u_e%I&Urk4zgG7?89{< zgMnj0RC-@P?Gu2oxFhqOK2&S05@{0? zN$Fg_G?l*0KTV_;nA7t~qbrNWpD&(X_@(>iuLg%;O+%qSCai2IE z+pIFz-&T!%e9g=X*JuY~FcmRKIJ9^-c%=R_8B$5b=rGY6qe z5l%g*{=ENC$?z&cH*Eastn?<42bXSABdjjd{aQgK8}JoAh06hpprer zrHY6vfi_65pSDe^}(H84oYq#qpVGdT@=I1ab}xam;x?sSE~-i(r6fj92wWf8_CC`@MlH6*oLRQh|smp8&! zOJE)!M%9+eFtfNATm-1v*&ocM!G+iD%l&t|xpKEGuF&l(|5mrZm2QW5j1h>zGb&9h z=)v|IspL%|@>2|EDr%!jKTSUK0;NU8(cr)J^}yqm zfn;$o7f7`ISIzgR^u0xjZ%px~tNhz3@=}oFEXUu!4_8&k89)u@u>`rO3mCGSIKF-8v&M!p2gf+PlD{?SW&c+^h;Wz01p^uoad`n&xB zJ)8gN8L>sRIJr7>YHxPnTygIW|vGf7>W( zBsiP!s+hd*lgk>H9$BDDF8vq8h#ma&{uwc^o2LSMz$ivGP6*n@(nN>%$dkb% z^##s@K?DqVSoqbZx!bdeMTS7LfWfIr@E%gFNr=K9ChfTIgUOzt5~w`Sv8i)XSnP)9 zQ`0iHdOD{p+s5MJLZd`MV8ZvMZc~V2sGlfj{+h4^1c(`0K`y>p1@(zbjsj2IN;YC- zCDM<8VT~7Ip_N?L*dYLe3K2F9urNw68giLf9EnjU;5XupQg2nH6kugz2J1Tg3Rs$J zs%E$rG=q1bXL;{H17(fkmH=f=E6<8pBhKdUC(i0ik#-BPT(`fca*BVpOrus2*HqwB*2SSAyj;>A|NO&0usbU{i3225D)B! zg^WYW$+#eWMF8tV0jy2#!VcXkPHqKkT~QH8ly+pW3xH?-yl&z7R(5d*7qNv?4_jXe zAgEU{cR`1?`*XA}s|W*1E5Pu`{=wie^P0ZQZ02(-B$2!Tr5~3Nd?qd-7A(^xgkv+$ z_iZI_1dmV_r=qk7b*=CjhOy50gBfV%5nw*gyP-oEpf1Hz4|NX|QFnl6UP@&>FiRJv zkrnjFbDwyEhwiT@I6M8B;L&?Z7^+m0;G0(=rk-7qRw%8&)G#NNGi#+x?G1W$Fz6<1 znN~X95JWJRVm<>8D?HQrX{g!0{uN4#(7`qu*?+)rQeU^HvD#l685aJ#1Muqo6&oQK z_X^dy6`?|D1*q=pA1Y5A5dalc(kcTLU8GUvNDG+clj$=8N`LX+W0KR-p9mgZDUa@V zq;YB**>bWbSYw6Aq3=S%q3}HoqwJ7!VnvBM)cEQl?}%UQjT;R3>nzTu`w5V&=@SF#y*1#Jx+aX|dl4?| zF-~HsftXfNmQY&3R>E(oEK3z_&-DXrpk*bU=K*_#0Gpwnkep4mQ|0AskZ%cc zHp45jBuYE5;L7({y|G=}4@b6&OoY-j5R9OMe4h?v8W+VK8N4-Hni9IYpB|dad*HtJ ze%dM5rw3-8P}+gTZ)F`^gARsOlBywrFkfDo$gSyOl}jsE8APYk!~Q&}qO$I)3-qW$ zaeY$R3|(tQa-+1Us)O+AGC@w?=&GWoo)3%#HptyLP1o$p)yRsLmXu3#Y4YGdOSlX% z{zH&&DVR6#P+S}vQX?jLlKXeFEyFmze=FHi=$mZ;k@sSJ8`bgx<}2`$^Y<2nOEMbFjFCK!e!m>&c*A# zJJ@1{p9w*|vNz}aawsg*j(>E2f;Z~izvp!=mU7AKbwx<4g4*W2yE0f(=Go#9f5E{P zp^_WLGG2PakuLo6VvVv#kE(#S3+L%9zP#>!Zl1n??>qnHek@XbXP#cn!b|7ti&*H4 zi8i>q=IeoY6Z)h1cwz8Px9L(njaBZyN)L0FUaDL1F~tWi1-b5ZKe|evhNteTi;Yr8 zy2o6m9agOSdt!j=UZyAOuRrW=yG)NTH3zt<%k{DBWWo-s!F}!~>mYaK<+_!ReDiXB zSbXbRy!qekPPoak@kC~UKC`s)x&@~4iwpGW3SSnyLLbf^&bUI4Mg65$=yO&8#_SU2k@b*q$OgIg(GgDTvCMlM!P^ahm&F;h%7&vZUvI1|kAK~7yLf;g{whC_Z9oWnYTPL_j-Ju65 zVD1k6L%f8YTdBV*&%L%%pG|}veW!kr&s$&Ar`7q*d*3d7`>XD>zv2_88}D;B|0UYz zE2V>Wu6bT|w}~Lb%}*_QkNwj;HfZ}-{M-1jKfhZk;B^X|u_X?Cu8YPSWFT-Htte_$^6n1ogu=daOF+pY9L-uDNB?Ta*bpE6ogn#p<>*i8!CD7b(5jn!DNWeXkf z6Sq!{atjiLKC!C{c6Maf!R`T7Nd>+e=2h1{WLJkPK!l@<#1 zSU;jrP=&Rca>2WGohRC{;A)V!Nim+l*3>b+;trl<1D0%D5#G}w*wTSJNob(5bA4yPKo2#`xCfd$HS4 zxW^Bov9~_tgzD}GM-Fr?D+cZV zzlk9O9{Cz{AZVIxb-u|{>}Zm0b(h{7YjQ{KNt^{~E$m4=jKiq+6Zpir``z~wt8qBv zABj~s{P`b=$8h-4KNI)iu=HPvkGl&$NL*f0#0m$0nE0+}gm*to#9Giuu|qUUV3Y*#(&kHj37`-Wu>38oopDR9*W*dO1Sn>gyrFuenm%?0;oZ7KT z`f3aUd*Bon;LbAK!53t`$8sFaTPVVIHF(a3p2K9Zfsn^73}~|7!ReUjf;_$!=p({v zFD%Mpb+G|WIkLwiZ{p(^#5LR_Z6_aVPcOk2jktrpWm|={dBre@=-DOJz(@*iC^S+P zcKg__<^zREC%VwN8jALFNPR?eDhiYkuAS5sLIYwhyGdaN7VfjbL1?Q;Apu9DFiMOs zf_6L6QOwD&TLR^RU1IDi1Zp`2*$2KA*;Y9t=Ch9bZcB1f!EAs@Rz~w%fMV|(+N7p; zio@#!X!X-nw*p(2oNgq!aCZ}r=0n`QIK>5^o}{;W)O41kcJ`tOH%Lu7*lGty=?=Bp zZEgt&@aK1CF?cg*?6VoogGAVVGn$=c_~dm_LHtzg zCdi>uL6Bq2Mn(~*`*w(TO_r;X>@2^+WNuc;u!T?j+90Oz2}ld72!GJ+K<<1QW%V0@u?d%pEOA1l%C@M`O-i+KwFd|0U+6l58|O_lw-&4U%d%8a82q6<^)v)rw^(MqKpg{%W*~NHMn9!9*zxS z1@QrXJe+W(K`rx0WrW7EWBmbP1AW<76T`=P1aJUQmwgsJkBRP4+2;rXTFUm~1gBsg zH~`ciaFBisYM9$z8Ki2PDf_VnQTl~B-^O!LE@k7xsNg`+#Nc-Hh>S%6A|uV3)f?E* zI+uy!p8tov!!nTlJdhtj5+4o;XaOyObHI%@qUNO+d|6B2!iPZ28D45bTMFt$X2