Merge pull request #3 from paritytech/bkchr-validate_block

Adds first version of `validate_block`
This commit is contained in:
Robert Habermeier
2019-04-17 14:26:20 +02:00
committed by GitHub
19 changed files with 3449 additions and 1641 deletions
Generated
+1824 -1622
View File
File diff suppressed because it is too large Load Diff
+6 -1
View File
@@ -1,2 +1,7 @@
[workspace]
members = [ "consensus" ]
members = [
"consensus",
"runtime",
"test/runtime",
"test/client",
]
+10 -10
View File
@@ -2,23 +2,23 @@
name = "cumulus-consensus"
description = "Proxy Polkadot's consensus as a consensus engine for Substrate"
version = "0.1.0"
authors = ["Parity Technologies"]
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
[dependencies]
# substrate deps
substrate-client = { git = "https://github.com/paritytech/substrate" }
substrate-consensus-common = { git = "https://github.com/paritytech/substrate" }
substrate-primitives = { git = "https://github.com/paritytech/substrate" }
sr-primitives = { git = "https://github.com/paritytech/substrate" }
substrate-client = { git = "https://github.com/paritytech/substrate", branch = "bkchr-cumulus-branch" }
substrate-consensus-common = { git = "https://github.com/paritytech/substrate", branch = "bkchr-cumulus-branch" }
substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "bkchr-cumulus-branch" }
sr-primitives = { git = "https://github.com/paritytech/substrate", branch = "bkchr-cumulus-branch" }
# polkadot deps
polkadot-service = { git = "https://github.com/paritytech/polkadot" }
polkadot-primitives = { git = "https://github.com/paritytech/polkadot" }
polkadot-runtime = { git = "https://github.com/paritytech/polkadot" }
polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "bkchr-cumulus-branch" }
polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "bkchr-cumulus-branch" }
polkadot-runtime = { git = "https://github.com/paritytech/polkadot", branch = "bkchr-cumulus-branch" }
# other deps
futures = "0.1.21"
tokio = "0.1.8"
parity-codec = "3.0"
log = "0.4"
parity-codec = "3.1"
log = "0.4"
+8 -8
View File
@@ -57,7 +57,7 @@ pub enum Error<P> {
/// A parachain head update.
pub struct HeadUpdate {
/// The relay-chain's block hash where the parachain head updated.
pub relay_hash: PHash,
pub relay_hash: PHash,
/// The parachain head-data.
pub head_data: Vec<u8>,
}
@@ -80,9 +80,9 @@ pub trait PolkadotClient: Clone {
}
/// Spawns a future that follows the Polkadot relay chain for the given parachain.
pub fn follow_polkadot<'a, L: 'a, P: 'a>(para_id: ParaId, local: Arc<L>, polkadot: P)
pub fn follow_polkadot<'a, L: 'a, P: 'a>(para_id: ParaId, local: Arc<L>, polkadot: P)
-> impl Future<Item=(),Error=()> + Send + 'a
where
where
L: LocalClient + Send + Sync,
P: PolkadotClient + Send + Sync,
{
@@ -169,23 +169,23 @@ impl<B, E, RA> PolkadotClient for Arc<Client<B, E, PBlock, RA>> where
{
type Error = ClientError;
type HeadUpdates = Box<Stream<Item=HeadUpdate,Error=Self::Error> + Send>;
type Finalized = Box<Stream<Item=Vec<u8>,Error=Self::Error> + Send>;
type HeadUpdates = Box<Stream<Item=HeadUpdate, Error=Self::Error> + Send>;
type Finalized = Box<Stream<Item=Vec<u8>, Error=Self::Error> + Send>;
fn head_updates(&self, para_id: ParaId) -> Self::HeadUpdates {
let parachain_key = parachain_key(para_id);
let stream = stream::once(self.storage_changes_notification_stream(Some(&[parachain_key.clone()])))
.map(|s| s.map_err(|()| panic!("unbounded receivers never yield errors; qed")))
.flatten();
let s = stream.filter_map(move |(hash, changes)| {
let head_data = changes.iter()
.filter_map(|(k, v)| if k == &parachain_key { Some(v) } else { None })
.next();
match head_data {
Some(Some(head_data)) => Some(HeadUpdate {
relay_hash: hash,
Some(Some(head_data)) => Some(HeadUpdate {
relay_hash: hash,
head_data: head_data.0.clone(),
}),
Some(None) | None => None,
+44
View File
@@ -0,0 +1,44 @@
[package]
name = "cumulus-runtime"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
[dependencies]
codec = { package = "parity-codec", version = "3.1", default-features = false, features = [ "derive" ] }
rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", default-features = false, branch = "bkchr-cumulus-branch" }
runtime-primitives = { package = "sr-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "bkchr-cumulus-branch" }
primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "bkchr-cumulus-branch" }
rio = { package = "sr-io", git = "https://github.com/paritytech/substrate", default-features = false, branch = "bkchr-cumulus-branch" }
executive = { package = "srml-executive", git = "https://github.com/paritytech/substrate", default-features = false, branch = "bkchr-cumulus-branch" }
substrate-trie = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "bkchr-cumulus-branch" }
memory-db = { version = "0.12.2", default-features = false }
hash-db = { version = "0.12.2", default-features = false }
trie-db = { version = "0.12.2", default-features = false }
hashbrown = "0.1"
[dev-dependencies]
keyring = { package = "substrate-keyring", git = "https://github.com/paritytech/substrate", branch = "bkchr-cumulus-branch" }
primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", branch = "bkchr-cumulus-branch" }
executor = { package = "substrate-executor", git = "https://github.com/paritytech/substrate", branch = "bkchr-cumulus-branch" }
test-client = { package = "cumulus-test-client", path = "../test/client" }
[features]
default = ["std"]
std = [
"codec/std",
"rstd/std",
"rio/std",
"runtime-primitives/std",
"primitives/std",
"executive/std",
"memory-db/std",
"hash-db/std",
"trie-db/std",
"test-client/std",
"substrate-trie/std",
]
wasm = [
"hashbrown/nightly",
"rio/wasm-nice-panic-message",
]
+61
View File
@@ -0,0 +1,61 @@
// Copyright 2019 Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus 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.
// Cumulus 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 Cumulus. If not, see <http://www.gnu.org/licenses/>.
#![cfg_attr(not(feature = "std"), no_std)]
///! The Cumulus runtime to make a runtime a parachain.
use rstd::vec::Vec;
use codec::{Encode, Decode};
use runtime_primitives::traits::Block as BlockT;
#[cfg(not(feature = "std"))]
#[doc(hidden)]
pub use rstd::slice;
#[macro_use]
pub mod validate_block;
/// The witness data type.
type WitnessData = Vec<Vec<u8>>;
/// The parachain block that is created on a collator and validated by a validator.
#[derive(Encode, Decode)]
pub struct ParachainBlockData<B: BlockT> {
/// The header of the parachain block.
header: <B as BlockT>::Header,
/// The extrinsics of the parachain block without the `PolkadotInherent`.
extrinsics: Vec<<B as BlockT>::Extrinsic>,
/// The data that is required to emulate the storage accesses executed by all extrinsics.
witness_data: WitnessData,
witness_data_storage_root: <B as BlockT>::Hash,
}
impl<B: BlockT> ParachainBlockData<B> {
pub fn new(
header: <B as BlockT>::Header,
extrinsics: Vec<<B as BlockT>::Extrinsic>,
witness_data: WitnessData,
witness_data_storage_root: <B as BlockT>::Hash,
) -> Self {
Self {
header,
extrinsics,
witness_data,
witness_data_storage_root,
}
}
}
@@ -0,0 +1,231 @@
// Copyright 2019 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 Cumulus. If not, see <http://www.gnu.org/licenses/>.
//! The actual implementation of the validate block functionality.
use crate::WitnessData;
use runtime_primitives::traits::{
Block as BlockT, Header as HeaderT, Hash as HashT
};
use executive::ExecuteBlock;
use substrate_trie::{MemoryDB, read_trie_value, delta_trie_root};
use rstd::{slice, ptr, cmp, vec::Vec, boxed::Box, mem};
use hash_db::HashDB;
static mut STORAGE: Option<Box<Storage>> = None;
/// The message to use as expect message while accessing the `STORAGE`.
const STORAGE_SET_EXPECT: &str =
"`STORAGE` needs to be set before calling this function.";
const STORAGE_ROOT_LEN: usize = 32;
/// Extract the hashing algorithm type from the given block type.
type HashingOf<B> = <<B as BlockT>::Header as HeaderT>::Hashing;
/// Abstract the storage into a trait without `Block` generic.
trait Storage {
/// Retrieve the value for the given key.
fn get(&self, key: &[u8]) -> Option<Vec<u8>>;
/// Insert the given key and value.
fn insert(&mut self, key: &[u8], value: &[u8]);
/// Remove key and value.
fn remove(&mut self, key: &[u8]);
/// Calculate the storage root.
fn storage_root(&mut self) -> [u8; STORAGE_ROOT_LEN];
}
/// Validate a given parachain block on a validator.
#[cfg(not(feature = "std"))]
#[doc(hidden)]
pub fn validate_block<B: BlockT, E: ExecuteBlock<B>>(
mut block_data: &[u8],
) {
use codec::Decode;
let block_data = crate::ParachainBlockData::<B>::decode(&mut block_data)
.expect("Could not decode parachain block.");
// TODO: Add `PolkadotInherent`.
let block = B::new(block_data.header, block_data.extrinsics);
let storage = WitnessStorage::<B>::new(
block_data.witness_data,
block_data.witness_data_storage_root,
).expect("Witness data and storage root always match; qed");
let _guard = unsafe {
STORAGE = Some(Box::new(storage));
(
// Replace storage calls with our own implementations
rio::ext_get_allocated_storage.replace_implementation(ext_get_allocated_storage),
rio::ext_get_storage_into.replace_implementation(ext_get_storage_into),
rio::ext_set_storage.replace_implementation(ext_set_storage),
rio::ext_exists_storage.replace_implementation(ext_exists_storage),
rio::ext_clear_storage.replace_implementation(ext_clear_storage),
rio::ext_storage_root.replace_implementation(ext_storage_root),
)
};
E::execute_block(block);
}
/// The storage implementation used when validating a block that is using the
/// witness data as source.
struct WitnessStorage<B: BlockT> {
witness_data: MemoryDB<<HashingOf<B> as HashT>::Hasher>,
overlay: hashbrown::HashMap<Vec<u8>, Option<Vec<u8>>>,
storage_root: B::Hash,
}
impl<B: BlockT> WitnessStorage<B> {
/// Initialize from the given witness data and storage root.
///
/// Returns an error if given storage root was not found in the witness data.
fn new(
data: WitnessData,
storage_root: B::Hash,
) -> Result<Self, &'static str> {
let mut db = MemoryDB::default();
data.into_iter().for_each(|i| { db.insert(&[], &i); });
if !db.contains(&storage_root, &[]) {
return Err("Witness data does not contain given storage root.")
}
Ok(Self {
witness_data: db,
overlay: Default::default(),
storage_root,
})
}
}
impl<B: BlockT> Storage for WitnessStorage<B> {
fn get(&self, key: &[u8]) -> Option<Vec<u8>> {
self.overlay.get(key).cloned().or_else(|| {
read_trie_value(
&self.witness_data,
&self.storage_root,
key,
).ok()
}).unwrap_or(None)
}
fn insert(&mut self, key: &[u8], value: &[u8]) {
self.overlay.insert(key.to_vec(), Some(value.to_vec()));
}
fn remove(&mut self, key: &[u8]) {
self.overlay.insert(key.to_vec(), None);
}
fn storage_root(&mut self) -> [u8; STORAGE_ROOT_LEN] {
let root = match delta_trie_root(
&mut self.witness_data,
self.storage_root.clone(),
self.overlay.drain()
) {
Ok(root) => root,
Err(_) => return [0; STORAGE_ROOT_LEN],
};
assert!(root.as_ref().len() <= STORAGE_ROOT_LEN);
let mut res = [0; STORAGE_ROOT_LEN];
res.copy_from_slice(root.as_ref());
res
}
}
unsafe fn ext_get_allocated_storage(
key_data: *const u8,
key_len: u32,
written_out: *mut u32,
) -> *mut u8 {
let key = slice::from_raw_parts(key_data, key_len as usize);
match STORAGE.as_mut().expect(STORAGE_SET_EXPECT).get(key) {
Some(value) => {
let mut out_value: Vec<_> = value.clone();
*written_out = out_value.len() as u32;
let ptr = out_value.as_mut_ptr();
mem::forget(out_value);
ptr
},
None => {
*written_out = u32::max_value();
ptr::null_mut()
}
}
}
unsafe fn ext_set_storage(
key_data: *const u8,
key_len: u32,
value_data: *const u8,
value_len: u32,
) {
let key = slice::from_raw_parts(key_data, key_len as usize);
let value = slice::from_raw_parts(value_data, value_len as usize);
STORAGE.as_mut().expect(STORAGE_SET_EXPECT).insert(key, value);
}
unsafe fn ext_get_storage_into(
key_data: *const u8,
key_len: u32,
value_data: *mut u8,
value_len: u32,
value_offset: u32,
) -> u32 {
let key = slice::from_raw_parts(key_data, key_len as usize);
let out_value = slice::from_raw_parts_mut(value_data, value_len as usize);
match STORAGE.as_mut().expect(STORAGE_SET_EXPECT).get(key) {
Some(value) => {
let value = &value[value_offset as usize..];
let len = cmp::min(value_len as usize, value.len());
out_value[..len].copy_from_slice(&value[..len]);
len as u32
},
None => {
u32::max_value()
}
}
}
unsafe fn ext_exists_storage(key_data: *const u8, key_len: u32) -> u32 {
let key = slice::from_raw_parts(key_data, key_len as usize);
if STORAGE.as_mut().expect(STORAGE_SET_EXPECT).get(key).is_some() {
1
} else {
0
}
}
unsafe fn ext_clear_storage(key_data: *const u8, key_len: u32) {
let key = slice::from_raw_parts(key_data, key_len as usize);
STORAGE.as_mut().expect(STORAGE_SET_EXPECT).remove(key);
}
unsafe fn ext_storage_root(result: *mut u8) {
let res = STORAGE.as_mut().expect(STORAGE_SET_EXPECT).storage_root();
let result = slice::from_raw_parts_mut(result, STORAGE_ROOT_LEN);
result.copy_from_slice(&res);
}
+82
View File
@@ -0,0 +1,82 @@
// Copyright 2019 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 Cumulus. If not, see <http://www.gnu.org/licenses/>.
//! A module that enables a runtime to work as parachain.
#[cfg(test)]
mod tests;
#[cfg(not(feature = "std"))]
#[doc(hidden)]
pub mod implementation;
/// Register the `validate_block` function that is used by parachains to validate blocks on a validator.
///
/// Does *nothing* when `std` feature is enabled.
///
/// Expects as parameters the block and the block executor.
///
/// # Example
///
/// ```
/// struct Block;
/// struct BlockExecutor;
///
/// cumulus_runtime::register_validate_block!(Block, BlockExecutor);
///
/// # fn main() {}
/// ```
#[macro_export]
macro_rules! register_validate_block {
($block:ty, $block_executor:ty) => {
$crate::register_validate_block_impl!($block, $block_executor);
};
}
/// The actual implementation of `register_validate_block` for `no_std`.
#[cfg(not(feature = "std"))]
#[doc(hidden)]
#[macro_export]
macro_rules! register_validate_block_impl {
($block:ty, $block_executor:ty) => {
#[doc(hidden)]
mod parachain_validate_block {
use super::*;
#[no_mangle]
unsafe fn validate_block(
block_data: *const u8,
block_data_len: u64,
) {
let block_data = $crate::slice::from_raw_parts(
block_data,
block_data_len as usize,
);
$crate::validate_block::implementation::validate_block::<
$block, $block_executor
>(block_data);
}
}
};
}
/// The actual implementation of `register_validate_block` for `std`.
#[cfg(feature = "std")]
#[doc(hidden)]
#[macro_export]
macro_rules! register_validate_block_impl {
($block:ty, $block_executor:ty) => {};
}
+154
View File
@@ -0,0 +1,154 @@
// Copyright 2019 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 Cumulus. If not, see <http://www.gnu.org/licenses/>.
use crate::{ParachainBlockData, WitnessData};
use rio::TestExternalities;
use keyring::AccountKeyring;
use primitives::{storage::well_known_keys};
use runtime_primitives::traits::{Block as BlockT, Header as HeaderT};
use executor::{WasmExecutor, error::Result, wasmi::RuntimeValue::{I64, I32}};
use test_client::{
TestClientBuilder, TestClient,
runtime::{Block, Transfer}, TestClientBuilderExt,
};
use std::collections::HashMap;
use codec::Encode;
const WASM_CODE: &[u8] =
include_bytes!("../../../test/runtime/wasm/target/wasm32-unknown-unknown/release/cumulus_test_runtime.compact.wasm");
fn call_validate_block(block_data: ParachainBlockData<Block>) -> Result<()> {
let mut ext = TestExternalities::default();
WasmExecutor::new().call_with_custom_signature(
&mut ext,
1024,
&WASM_CODE,
"validate_block",
|alloc| {
let block_data = block_data.encode();
let block_data_offset = alloc(&block_data)?;
Ok(
vec![
I32(block_data_offset as i32),
I64(block_data.len() as i64),
]
)
},
|res, _| {
if res.is_none() {
Ok(Some(()))
} else {
Ok(None)
}
}
)
}
fn create_extrinsics() -> Vec<<Block as BlockT>::Extrinsic> {
vec![
Transfer {
from: AccountKeyring::Alice.into(),
to: AccountKeyring::Bob.into(),
amount: 69,
nonce: 0,
}.into_signed_tx(),
Transfer {
from: AccountKeyring::Alice.into(),
to: AccountKeyring::Charlie.into(),
amount: 100,
nonce: 1,
}.into_signed_tx(),
Transfer {
from: AccountKeyring::Bob.into(),
to: AccountKeyring::Charlie.into(),
amount: 100,
nonce: 0,
}.into_signed_tx(),
Transfer {
from: AccountKeyring::Charlie.into(),
to: AccountKeyring::Alice.into(),
amount: 500,
nonce: 0,
}.into_signed_tx(),
]
}
fn create_test_client() -> TestClient {
let mut genesis_extension = HashMap::new();
genesis_extension.insert(well_known_keys::CODE.to_vec(), WASM_CODE.to_vec());
TestClientBuilder::new()
.set_genesis_extension(genesis_extension)
.build_cumulus()
}
fn build_block_with_proof(
client: &TestClient,
extrinsics: Vec<<Block as BlockT>::Extrinsic>,
) -> (Block, WitnessData) {
let mut builder = client.new_block().expect("Initializes new block");
builder.record_proof();
extrinsics.into_iter().for_each(|e| builder.push(e).expect("Pushes an extrinsic"));
let (block, proof) = builder
.bake_and_extract_proof()
.expect("Finalizes block");
(block, proof.expect("We enabled proof recording before."))
}
#[test]
fn validate_block_with_no_extrinsics() {
let client = create_test_client();
let witness_data_storage_root = *client
.best_block_header()
.expect("Best block exists")
.state_root();
let (block, witness_data) = build_block_with_proof(&client, Vec::new());
let (header, extrinsics) = block.deconstruct();
let block_data = ParachainBlockData::new(
header,
extrinsics,
witness_data,
witness_data_storage_root
);
call_validate_block(block_data).expect("Calls `validate_block`");
}
#[test]
fn validate_block_with_extrinsics() {
let client = create_test_client();
let witness_data_storage_root = *client
.best_block_header()
.expect("Best block exists")
.state_root();
let (block, witness_data) = build_block_with_proof(&client, create_extrinsics());
let (header, extrinsics) = block.deconstruct();
let block_data = ParachainBlockData::new(
header,
extrinsics,
witness_data,
witness_data_storage_root
);
call_validate_block(block_data).expect("Calls `validate_block`");
}
+28
View File
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
# This script assumes that all pre-requisites are installed.
set -e
PROJECT_ROOT=`git rev-parse --show-toplevel`
source `dirname "$0"`/common.sh
export CARGO_INCREMENTAL=0
# Save current directory.
pushd .
cd $ROOT
for SRC in "${SRCS[@]}"
do
echo "*** Building wasm binaries in $SRC"
cd "$PROJECT_ROOT/$SRC"
./build.sh
cd - >> /dev/null
done
# Restore initial directory.
popd
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
ROOT=`dirname "$0"`
# A list of directories which contain wasm projects.
SRCS=(
"test/runtime/wasm"
)
# Make pushd/popd silent.
pushd () {
command pushd "$@" > /dev/null
}
popd () {
command popd "$@" > /dev/null
}
+14
View File
@@ -0,0 +1,14 @@
[package]
name = "cumulus-test-client"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
[dependencies]
substrate-test-client = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "bkchr-cumulus-branch" }
[features]
default = ["std"]
std = [
"substrate-test-client/std",
]
+56
View File
@@ -0,0 +1,56 @@
// Copyright 2019 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 Cumulus. If not, see <http://www.gnu.org/licenses/>.
//! A Cumulus test client.
pub use substrate_test_client::*;
mod local_executor {
#![allow(missing_docs)]
use substrate_test_client::runtime;
use substrate_test_client::executor::native_executor_instance;
native_executor_instance!(
pub LocalExecutor,
runtime::api::dispatch,
runtime::native_version,
include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/cumulus_test_runtime.compact.wasm")
);
}
/// Native executor used for tests.
pub use local_executor::LocalExecutor;
/// Test client executor.
pub type Executor = client::LocalCallExecutor<
Backend,
executor::NativeExecutor<LocalExecutor>,
>;
/// Test client type.
pub type TestClient = client::Client<
Backend, Executor, runtime::Block, runtime::RuntimeApi
>;
/// An extension to the `TestClientBuilder` for building a cumulus test-client.
pub trait TestClientBuilderExt {
fn build_cumulus(self) -> TestClient;
}
impl TestClientBuilderExt for TestClientBuilder {
fn build_cumulus(self) -> TestClient {
self.build_with_native_executor(NativeExecutor::<LocalExecutor>::new(None))
}
}
+17
View File
@@ -0,0 +1,17 @@
[package]
name = "cumulus-test-runtime"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
[dependencies]
runtime = { package = "cumulus-runtime", path = "../../runtime", default-features = false }
substrate-test-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "bkchr-cumulus-branch" }
[features]
default = ["std"]
std = [
"runtime/std",
"substrate-test-runtime/std",
]
wasm = ["runtime/wasm"]
+23
View File
@@ -0,0 +1,23 @@
// Copyright 2019 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 Cumulus. If not, see <http://www.gnu.org/licenses/>.
//! A Cumulus test runtime.
#![cfg_attr(not(feature = "std"), no_std)]
pub use substrate_test_runtime::*;
runtime::register_validate_block!(Block, system::BlockExecutor);
+816
View File
@@ -0,0 +1,816 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "arrayvec"
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "autocfg"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "bitmask"
version = "0.5.0"
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.10 (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 = "byteorder"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "cfg-if"
version = "0.1.7"
source = "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 = "crunchy"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "cumulus-runtime"
version = "0.1.0"
dependencies = [
"hash-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"memory-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-io 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"srml-executive 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-trie 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"trie-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "cumulus-test-runtime"
version = "0.1.0"
dependencies = [
"cumulus-runtime 0.1.0",
"substrate-test-runtime 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "cumulus-test-runtime-wasm"
version = "0.1.0"
dependencies = [
"cumulus-test-runtime 0.1.0",
]
[[package]]
name = "elastic-array"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "fixed-hash"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "hash-db"
version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "hash256-std-hasher"
version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "hashbrown"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"byteorder 1.3.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 = "hashmap_core"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "hex-literal"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hex-literal-impl 0.1.2 (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.2"
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 = "impl-codec"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"parity-codec 3.4.0 (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 = "libc"
version = "0.2.51"
source = "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.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "memory-db"
version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hash-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "nodrop"
version = "0.1.13"
source = "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 = "parity-codec"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec-derive 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "parity-codec-derive"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro-crate 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "paste"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"paste-impl 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro-hack 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "paste-impl"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro-hack 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "primitive-types"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"impl-codec 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"uint 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "proc-macro-crate"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"toml 0.4.10 (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"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 0.15.30 (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.27"
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 = "quote"
version = "0.6.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_core 0.4.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.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_chacha"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_core"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_core"
version = "0.4.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.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_isaac"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_jitter"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_pcg"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rand_xorshift"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"rand_core 0.3.1 (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_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 = "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 = "scopeguard"
version = "0.3.3"
source = "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.90"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "sr-api-macros"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro-crate 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "sr-io"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"hash-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec 3.4.0 (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 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "sr-primitives"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"integer-sqrt 0.1.2 (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 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-io 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "sr-std"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "sr-version"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "srml-executive"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-io 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"srml-support 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"srml-system 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "srml-metadata"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "srml-support"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"paste 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-io 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"srml-metadata 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"srml-support-procedural 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-inherents 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "srml-support-procedural"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-api-macros 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"srml-support-procedural-tools 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "srml-support-procedural-tools"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"proc-macro-crate 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
"srml-support-procedural-tools-derive 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "srml-support-procedural-tools-derive"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "srml-system"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"hex-literal 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec 3.4.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-io 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"srml-support 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "static_assertions"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "substrate-client"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"hash-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-api-macros 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-version 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-inherents 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "substrate-consensus-aura-primitives"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-client 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "substrate-consensus-authorities"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-io 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-version 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"srml-support 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-client 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "substrate-inherents"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "substrate-offchain-primitives"
version = "0.1.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-client 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "substrate-primitives"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"hash-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hash256-std-hasher 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"primitive-types 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)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
]
[[package]]
name = "substrate-test-runtime"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
"memory-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-io 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"sr-version 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"srml-executive 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"srml-support 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-client 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-consensus-aura-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-consensus-authorities 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-inherents 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-offchain-primitives 0.1.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"substrate-trie 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"trie-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "substrate-trie"
version = "1.0.0"
source = "git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch#7bdf1e90acbb495c3e2dd4f30ad981b1d3c989c3"
dependencies = [
"hash-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"memory-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)",
"trie-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"trie-root 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "syn"
version = "0.15.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.12 (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 = "toml"
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "trie-db"
version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hash-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "trie-root"
version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hash-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "uint"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"byteorder 1.3.1 (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)",
]
[[package]]
name = "unicode-xid"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "winapi"
version = "0.3.7"
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-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[metadata]
"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71"
"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799"
"checksum bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687ead"
"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400"
"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb"
"checksum cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "11d43355396e872eefb45ce6342e4374ed7bc2b3a502d1b28e36d6e23c05d1f4"
"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
"checksum crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c240f247c278fa08a6d4820a6a222bfc6e0d999e51ba67be94f44c905b2161f2"
"checksum elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "073be79b6538296faf81c631872676600616073817dd9a440c477ad09b408983"
"checksum fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a557e80084b05c32b455963ff565a9de6f2866da023d6671705c6aff6f65e01c"
"checksum hash-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ba7fb417e5c470acdd61068c79767d0e65962e70836cf6c9dfd2409f06345ce0"
"checksum hash256-std-hasher 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f8b2027c19ec91eb304999abae7307d225cf93be42af53b0039f76e98ed5af86"
"checksum hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da"
"checksum hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "8e04cb7a5051270ef3fa79f8c7604d581ecfa73d520e74f554e45541c4b5881a"
"checksum hex-literal 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ddc2928beef125e519d69ae1baa8c37ea2e0d3848545217f6db0179c5eb1d639"
"checksum hex-literal-impl 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "520870c3213943eb8d7803e80180d12a6c7ceb4ae74602544529d1643dc4ddda"
"checksum impl-codec 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2050d823639fbeae26b2b5ba09aca8907793117324858070ade0673c49f793b"
"checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903"
"checksum libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "bedcc7a809076656486ffe045abeeac163da1b558e963a31e29fbfbeba916917"
"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6"
"checksum memory-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7623b01a4f1b7acb7cf8e3f678f05e15e6ae26cb0b738dfeb5cc186fd6b82ef4"
"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"
"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1"
"checksum parity-codec 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2edd80cdaf3b9c7b7f524299586bb4eae43cc5eb20c7b41aa0cd741200000e38"
"checksum parity-codec-derive 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "00a486fd383382ddcb2de928364b1f82571c1e48274fc43b7667a4738ee4056c"
"checksum paste 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1f4a4a1c555c6505821f9d58b8779d0f630a6b7e4e1be24ba718610acf01fa79"
"checksum paste-impl 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "26e796e623b8b257215f27e6c80a5478856cae305f5b59810ff9acdaa34570e6"
"checksum primitive-types 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "edb92f1ebfc177432c03287b15d48c202e6e2c95993a7af3ba039abb43b1492e"
"checksum proc-macro-crate 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4c6cf4e5b00300d151dfffae39f529dfa5188f42eeb14201229aa420d6aad10c"
"checksum proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c725b36c99df7af7bf9324e9c999b9e37d92c8f8caf106d82e1d7953218d2d8"
"checksum proc-macro-hack 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3e90aa19cd73dedc2d0e1e8407473f073d735fef0ab521438de6da8ee449ab66"
"checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a"
"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915"
"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db"
"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0"
"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
"checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832"
"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
"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 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.90 (registry+https://github.com/rust-lang/crates.io-index)" = "aa5f7c20820475babd2c077c3ab5f8c77a31c15e16ea38687b4c02d3e48680f4"
"checksum sr-api-macros 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum sr-io 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum sr-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum sr-std 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum sr-version 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum srml-executive 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum srml-metadata 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum srml-support 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum srml-support-procedural 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum srml-support-procedural-tools 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum srml-support-procedural-tools-derive 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum srml-system 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5"
"checksum substrate-client 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum substrate-consensus-aura-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum substrate-consensus-authorities 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum substrate-inherents 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum substrate-offchain-primitives 0.1.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum substrate-primitives 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum substrate-test-runtime 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum substrate-trie 1.0.0 (git+https://github.com/paritytech/substrate?branch=bkchr-cumulus-branch)" = "<none>"
"checksum syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)" = "66c8865bf5a7cbb662d8b011950060b3c8743dca141b054bf7195b20d314d8e2"
"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"
"checksum trie-db 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1ba73747fd3a64ab531274c04cb588dfa9d30d972d62990831e63fbce2cfec59"
"checksum trie-root 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cfa2e20c4f1418ac2e71ddc418e35e1b56e34022e2146209ffdbf1b2de8b1bd9"
"checksum uint 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e7780bb27fd8a22295e0d9d53ae3be253f715a0dccb1808527f478f1c2603708"
"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
"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"
+23
View File
@@ -0,0 +1,23 @@
[package]
name = "cumulus-test-runtime-wasm"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
[lib]
name = "cumulus_test_runtime"
crate-type = ["cdylib"]
[dependencies]
cumulus-test-runtime = { path = "..", default-features = false }
[features]
default = ["wasm"]
wasm = ["cumulus-test-runtime/wasm"]
[profile.release]
panic = "abort"
lto = true
[workspace]
members = []
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -e
if cargo --version | grep -q "nightly"; then
CARGO_CMD="cargo"
else
CARGO_CMD="cargo +nightly"
fi
CARGO_INCREMENTAL=0 RUSTFLAGS="-C link-arg=--export-table" $CARGO_CMD build --target=wasm32-unknown-unknown --release
for i in cumulus_test_runtime
do
wasm-gc target/wasm32-unknown-unknown/release/$i.wasm target/wasm32-unknown-unknown/release/$i.compact.wasm
done
+21
View File
@@ -0,0 +1,21 @@
// Copyright 2019 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 Cumulus. If not, see <http://www.gnu.org/licenses/>.
//! The Cumulus test runtime reexported for WebAssembly compile.
#![cfg_attr(not(feature = "std"), no_std)]
pub use cumulus_test_runtime::*;