Substrate.from() (#426)

* Substrate.from()

* Fix some transaction validation code

* must be more specific for matching now.

* Update `wasm-builder` and add `build-only-wasm` script

* Update to latest service builder interfaces

* ANother substrate update

* Another update
This commit is contained in:
Gavin Wood
2019-09-11 13:14:20 +02:00
committed by GitHub
parent 5590ba2fbe
commit 28e23d07ef
25 changed files with 1471 additions and 1230 deletions
+1254 -1074
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -10,7 +10,7 @@ polkadot-primitives = { path = "../primitives" }
parking_lot = "0.9.0" parking_lot = "0.9.0"
log = "0.4.6" log = "0.4.6"
codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] }
substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
kvdb = { git = "https://github.com/paritytech/parity-common", rev="616b40150ded71f57f650067fcbc5c99d7c343e6" } kvdb = { git = "https://github.com/paritytech/parity-common", rev="616b40150ded71f57f650067fcbc5c99d7c343e6" }
kvdb-rocksdb = { git = "https://github.com/paritytech/parity-common", rev="616b40150ded71f57f650067fcbc5c99d7c343e6" } kvdb-rocksdb = { git = "https://github.com/paritytech/parity-common", rev="616b40150ded71f57f650067fcbc5c99d7c343e6" }
kvdb-memorydb = { git = "https://github.com/paritytech/parity-common", rev="616b40150ded71f57f650067fcbc5c99d7c343e6" } kvdb-memorydb = { git = "https://github.com/paritytech/parity-common", rev="616b40150ded71f57f650067fcbc5c99d7c343e6" }
+1 -1
View File
@@ -11,5 +11,5 @@ tokio = "0.1.7"
futures = "0.1.17" futures = "0.1.17"
exit-future = "0.1" exit-future = "0.1"
structopt = "0.2" structopt = "0.2"
cli = { package = "substrate-cli", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } cli = { package = "substrate-cli", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
service = { package = "polkadot-service", path = "../service" } service = { package = "polkadot-service", path = "../service" }
+5 -5
View File
@@ -8,10 +8,10 @@ edition = "2018"
[dependencies] [dependencies]
futures = "0.1.17" futures = "0.1.17"
futures03 = { package = "futures-preview", version = "0.3.0-alpha.17", features = ["compat"] } futures03 = { package = "futures-preview", version = "0.3.0-alpha.17", features = ["compat"] }
client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
substrate-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
consensus_common = { package = "substrate-consensus-common", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } consensus_common = { package = "substrate-consensus-common", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
polkadot-runtime = { path = "../runtime" } polkadot-runtime = { path = "../runtime" }
polkadot-primitives = { path = "../primitives" } polkadot-primitives = { path = "../primitives" }
polkadot-cli = { path = "../cli" } polkadot-cli = { path = "../cli" }
@@ -22,4 +22,4 @@ log = "0.4"
tokio = "0.1.7" tokio = "0.1.7"
[dev-dependencies] [dev-dependencies]
keyring = { package = "substrate-keyring", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } keyring = { package = "substrate-keyring", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
+2 -2
View File
@@ -8,5 +8,5 @@ edition = "2018"
primitives = { package = "polkadot-primitives", path = "../primitives" } primitives = { package = "polkadot-primitives", path = "../primitives" }
reed_solomon = { package = "reed-solomon-erasure", git = "https://github.com/paritytech/reed-solomon-erasure" } reed_solomon = { package = "reed-solomon-erasure", git = "https://github.com/paritytech/reed-solomon-erasure" }
codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] }
substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
trie = { package = "substrate-trie", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } trie = { package = "substrate-trie", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
+1 -1
View File
@@ -6,5 +6,5 @@ description = "Polkadot node implementation in Rust."
edition = "2018" edition = "2018"
[dependencies] [dependencies]
substrate-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
polkadot-runtime = { path = "../runtime" } polkadot-runtime = { path = "../runtime" }
+5 -5
View File
@@ -12,13 +12,13 @@ av_store = { package = "polkadot-availability-store", path = "../availability-st
polkadot-validation = { path = "../validation" } polkadot-validation = { path = "../validation" }
polkadot-primitives = { path = "../primitives" } polkadot-primitives = { path = "../primitives" }
codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] }
substrate-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
sr-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } sr-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
futures = "0.1" futures = "0.1"
log = "0.4" log = "0.4"
exit-future = "0.1.4" exit-future = "0.1.4"
substrate-client = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-client = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
[dev-dependencies] [dev-dependencies]
substrate-keyring = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-keyring = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
+1 -1
View File
@@ -10,7 +10,7 @@ codec = { package = "parity-scale-codec", version = "1.0.5", default-features =
wasmi = { version = "0.4.3", optional = true } wasmi = { version = "0.4.3", optional = true }
derive_more = { version = "0.14", optional = true } derive_more = { version = "0.14", optional = true }
serde = { version = "1.0", default-features = false, features = [ "derive" ] } serde = { version = "1.0", default-features = false, features = [ "derive" ] }
rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", branch = "polkadot-master", default-features = false } rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing", default-features = false }
lazy_static = { version = "1.3.0", optional = true } lazy_static = { version = "1.3.0", optional = true }
parking_lot = { version = "0.7.1", optional = true } parking_lot = { version = "0.7.1", optional = true }
log = { version = "0.4.6", optional = true } log = { version = "0.4.6", optional = true }
+8 -8
View File
@@ -7,18 +7,18 @@ edition = "2018"
[dependencies] [dependencies]
serde = { version = "1.0", optional = true, features = ["derive"] } serde = { version = "1.0", optional = true, features = ["derive"] }
parity-scale-codec = { version = "1.0.5", default-features = false, features = ["bit-vec", "derive"] } parity-scale-codec = { version = "1.0.5", default-features = false, features = ["bit-vec", "derive"] }
primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
application-crypto = { package = "substrate-application-crypto", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } application-crypto = { package = "substrate-application-crypto", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
substrate-client = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } substrate-client = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
sr-version = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } sr-version = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
runtime_primitives = { package = "sr-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } runtime_primitives = { package = "sr-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
polkadot-parachain = { path = "../parachain", default-features = false } polkadot-parachain = { path = "../parachain", default-features = false }
bitvec = { version = "0.14.0", default-features = false, features = ["alloc"] } bitvec = { version = "0.14.0", default-features = false, features = ["alloc"] }
babe = { package = "srml-babe", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } babe = { package = "srml-babe", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
[dev-dependencies] [dev-dependencies]
substrate-serializer = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-serializer = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
pretty_assertions = "0.5.1" pretty_assertions = "0.5.1"
[features] [features]
+17
View File
@@ -72,3 +72,20 @@ pub type BlockId = generic::BlockId<Block>;
/// Opaque, encoded, unchecked extrinsic. /// Opaque, encoded, unchecked extrinsic.
pub use runtime_primitives::OpaqueExtrinsic as UncheckedExtrinsic; pub use runtime_primitives::OpaqueExtrinsic as UncheckedExtrinsic;
/// Custom validity errors used in Polkadot while validating transactions.
#[repr(u8)]
pub enum ValidityError {
/// The ethereum signature is invalid.
InvalidEthereumSignature = 0,
/// The signer has no claim.
SignerHasNoClaim = 1,
/// No permission to execute the call.
NoPermission = 2,
}
impl From<ValidityError> for u8 {
fn from(err: ValidityError) -> Self {
err as u8
}
}
+41 -38
View File
@@ -7,57 +7,60 @@ build = "build.rs"
[dependencies] [dependencies]
bitvec = { version = "0.14.0", default-features = false, features = ["alloc"] } bitvec = { version = "0.14.0", default-features = false, features = ["alloc"] }
rustc-hex = { version = "2.0.1", default-features = false } codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] }
log = { version = "0.3", optional = true } log = { version = "0.3", optional = true }
rustc-hex = { version = "2.0.1", default-features = false }
safe-mix = { version = "1.0", default-features = false}
serde = { version = "1.0", default-features = false } serde = { version = "1.0", default-features = false }
serde_derive = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true }
safe-mix = { version = "1.0", default-features = false}
babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
inherents = { package = "substrate-inherents", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
offchain-primitives = { package = "substrate-offchain-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
sr-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
sr-primitives = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
sr-staking-primitives = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
substrate-primitives = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
substrate-serializer = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
substrate-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
version = { package = "sr-version", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
authorship = { package = "srml-authorship", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
babe = { package = "srml-babe", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
balances = { package = "srml-balances", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
collective = { package = "srml-collective", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
democracy = { package = "srml-democracy", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
elections = { package = "srml-elections", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
executive = { package = "srml-executive", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
finality-tracker = { package = "srml-finality-tracker", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
grandpa = { package = "srml-grandpa", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
im-online = { package = "srml-im-online", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
indices = { package = "srml-indices", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
membership = { package = "srml-membership", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
offences = { package = "srml-offences", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
session = { package = "srml-session", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
srml-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
staking = { package = "srml-staking", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
sudo = { package = "srml-sudo", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
system = { package = "srml-system", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
timestamp = { package = "srml-timestamp", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
treasury = { package = "srml-treasury", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
primitives = { package = "polkadot-primitives", path = "../primitives", default-features = false } primitives = { package = "polkadot-primitives", path = "../primitives", default-features = false }
codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] }
substrate-serializer = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
sr-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
srml-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
substrate-primitives = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
inherents = { package = "substrate-inherents", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
offchain-primitives = { package = "substrate-offchain-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
authorship = { package = "srml-authorship", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
balances = { package = "srml-balances", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
collective = { package = "srml-collective", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
elections = { package = "srml-elections", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
democracy = { package = "srml-democracy", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
executive = { package = "srml-executive", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
finality-tracker = { package = "srml-finality-tracker", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
grandpa = { package = "srml-grandpa", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
im-online = { package = "srml-im-online", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
indices = { package = "srml-indices", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
membership = { package = "srml-membership", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
offences = { package = "srml-offences", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
sr-primitives = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
sr-staking-primitives = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
session = { package = "srml-session", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
staking = { package = "srml-staking", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
sudo = { package = "srml-sudo", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
system = { package = "srml-system", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
timestamp = { package = "srml-timestamp", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
treasury = { package = "srml-treasury", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
version = { package = "sr-version", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
babe = { package = "srml-babe", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
substrate-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" }
[dev-dependencies] [dev-dependencies]
hex-literal = "0.2.0" hex-literal = "0.2.0"
libsecp256k1 = "0.2.1" libsecp256k1 = "0.2.1"
tiny-keccak = "1.4.2" tiny-keccak = "1.4.2"
keyring = { package = "substrate-keyring", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } keyring = { package = "substrate-keyring", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
substrate-trie = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-trie = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
trie-db = "0.15" trie-db = "0.15"
serde_json = "1.0" serde_json = "1.0"
[build-dependencies] [build-dependencies]
wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.1" } wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.2" }
[features] [features]
default = ["std"] default = ["std"]
+2 -2
View File
@@ -17,5 +17,5 @@
use wasm_builder_runner::{build_current_project, WasmBuilderSource}; use wasm_builder_runner::{build_current_project, WasmBuilderSource};
fn main() { fn main() {
build_current_project("wasm_binary.rs", WasmBuilderSource::Crates("1.0.3")); build_current_project("wasm_binary.rs", WasmBuilderSource::Crates("1.0.5"));
} }
+20 -16
View File
@@ -29,8 +29,11 @@ use sr_primitives::traits::Zero;
use sr_primitives::{ use sr_primitives::{
weights::SimpleDispatchInfo, weights::SimpleDispatchInfo,
traits::ValidateUnsigned, traits::ValidateUnsigned,
transaction_validity::{TransactionLongevity, TransactionValidity, ValidTransaction}, transaction_validity::{
TransactionLongevity, TransactionValidity, ValidTransaction, InvalidTransaction
},
}; };
use primitives::ValidityError;
use system; use system;
type BalanceOf<T> = <<T as Trait>::Currency as Currency<<T as system::Trait>::AccountId>>::Balance; type BalanceOf<T> = <<T as Trait>::Currency as Currency<<T as system::Trait>::AccountId>>::Balance;
@@ -194,11 +197,6 @@ impl<T: Trait> ValidateUnsigned for Module<T> {
type Call = Call<T>; type Call = Call<T>;
fn validate_unsigned(call: &Self::Call) -> TransactionValidity { fn validate_unsigned(call: &Self::Call) -> TransactionValidity {
// Note errors > 0 are from ApplyError
const INVALID_ETHEREUM_SIGNATURE: i8 = -10;
const SIGNER_HAS_NO_CLAIM: i8 = -20;
const INVALID_CALL: i8 = -30;
const PRIORITY: u64 = 100; const PRIORITY: u64 = 100;
match call { match call {
@@ -208,14 +206,18 @@ impl<T: Trait> ValidateUnsigned for Module<T> {
let signer = if let Some(s) = maybe_signer { let signer = if let Some(s) = maybe_signer {
s s
} else { } else {
return TransactionValidity::Invalid(INVALID_ETHEREUM_SIGNATURE); return InvalidTransaction::Custom(
ValidityError::InvalidEthereumSignature.into(),
).into();
}; };
if !<Claims<T>>::exists(&signer) { if !<Claims<T>>::exists(&signer) {
return TransactionValidity::Invalid(SIGNER_HAS_NO_CLAIM); return Err(InvalidTransaction::Custom(
ValidityError::SignerHasNoClaim.into(),
).into());
} }
TransactionValidity::Valid(ValidTransaction { Ok(ValidTransaction {
priority: PRIORITY, priority: PRIORITY,
requires: vec![], requires: vec![],
provides: vec![("claims", signer).encode()], provides: vec![("claims", signer).encode()],
@@ -223,7 +225,7 @@ impl<T: Trait> ValidateUnsigned for Module<T> {
propagate: true, propagate: true,
}) })
} }
_ => TransactionValidity::Invalid(INVALID_CALL) _ => Err(InvalidTransaction::Call.into()),
} }
} }
} }
@@ -387,8 +389,10 @@ mod tests {
fn origin_signed_claiming_fail() { fn origin_signed_claiming_fail() {
with_externalities(&mut new_test_ext(), || { with_externalities(&mut new_test_ext(), || {
assert_eq!(Balances::free_balance(&42), 0); assert_eq!(Balances::free_balance(&42), 0);
assert_err!(Claims::claim(Origin::signed(42), 42, alice_sig(&42u64.encode())), assert_err!(
"bad origin: expected to be no origin"); Claims::claim(Origin::signed(42), 42, alice_sig(&42u64.encode())),
"RequireNoOrigin",
);
}); });
} }
@@ -434,7 +438,7 @@ mod tests {
with_externalities(&mut new_test_ext(), || { with_externalities(&mut new_test_ext(), || {
assert_eq!( assert_eq!(
<Module<Test>>::validate_unsigned(&Call::claim(1, alice_sig(&1u64.encode()))), <Module<Test>>::validate_unsigned(&Call::claim(1, alice_sig(&1u64.encode()))),
TransactionValidity::Valid(ValidTransaction { Ok(ValidTransaction {
priority: 100, priority: 100,
requires: vec![], requires: vec![],
provides: vec![("claims", alice_eth()).encode()], provides: vec![("claims", alice_eth()).encode()],
@@ -444,15 +448,15 @@ mod tests {
); );
assert_eq!( assert_eq!(
<Module<Test>>::validate_unsigned(&Call::claim(0, EcdsaSignature([0; 65]))), <Module<Test>>::validate_unsigned(&Call::claim(0, EcdsaSignature([0; 65]))),
TransactionValidity::Invalid(-10) InvalidTransaction::Custom(ValidityError::InvalidEthereumSignature.into()).into(),
); );
assert_eq!( assert_eq!(
<Module<Test>>::validate_unsigned(&Call::claim(1, bob_sig(&1u64.encode()))), <Module<Test>>::validate_unsigned(&Call::claim(1, bob_sig(&1u64.encode()))),
TransactionValidity::Invalid(-20) InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()).into(),
); );
assert_eq!( assert_eq!(
<Module<Test>>::validate_unsigned(&Call::claim(0, bob_sig(&1u64.encode()))), <Module<Test>>::validate_unsigned(&Call::claim(0, bob_sig(&1u64.encode()))),
TransactionValidity::Invalid(-20) InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()).into(),
); );
}); });
} }
+13 -9
View File
@@ -31,16 +31,17 @@ use codec::{Encode, Decode};
use substrate_primitives::u32_trait::{_1, _2, _3, _4}; use substrate_primitives::u32_trait::{_1, _2, _3, _4};
use primitives::{ use primitives::{
AccountId, AccountIndex, Balance, BlockNumber, Hash, Nonce, Signature, Moment, AccountId, AccountIndex, Balance, BlockNumber, Hash, Nonce, Signature, Moment,
parachain, parachain, ValidityError,
}; };
use client::{ use client::{
block_builder::api::{self as block_builder_api, InherentData, CheckInherentsResult}, block_builder::api::{self as block_builder_api, InherentData, CheckInherentsResult},
runtime_api as client_api, impl_runtime_apis, runtime_api as client_api, impl_runtime_apis,
}; };
use sr_primitives::{ use sr_primitives::{
ApplyResult, generic, transaction_validity::{ValidTransaction, TransactionValidity}, ApplyResult, generic,
transaction_validity::{TransactionValidity, InvalidTransaction, TransactionValidityError},
impl_opaque_keys, weights::{Weight, DispatchInfo}, create_runtime_str, key_types, traits::{ impl_opaque_keys, weights::{Weight, DispatchInfo}, create_runtime_str, key_types, traits::{
BlakeTwo256, Block as BlockT, DigestFor, StaticLookup, DispatchError, SignedExtension, BlakeTwo256, Block as BlockT, DigestFor, StaticLookup, SignedExtension,
}, },
}; };
use version::RuntimeVersion; use version::RuntimeVersion;
@@ -55,6 +56,7 @@ use srml_support::{
parameter_types, construct_runtime, traits::{SplitTwoWays, Currency} parameter_types, construct_runtime, traits::{SplitTwoWays, Currency}
}; };
use im_online::sr25519::{AuthorityId as ImOnlineId}; use im_online::sr25519::{AuthorityId as ImOnlineId};
use system::offchain::TransactionSubmitter;
#[cfg(feature = "std")] #[cfg(feature = "std")]
pub use staking::StakerStatus; pub use staking::StakerStatus;
@@ -98,7 +100,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
spec_name: create_runtime_str!("kusama"), spec_name: create_runtime_str!("kusama"),
impl_name: create_runtime_str!("parity-kusama"), impl_name: create_runtime_str!("parity-kusama"),
authoring_version: 1, authoring_version: 1,
spec_version: 1002, spec_version: 1003,
impl_version: 0, impl_version: 0,
apis: RUNTIME_API_VERSIONS, apis: RUNTIME_API_VERSIONS,
}; };
@@ -124,14 +126,14 @@ impl SignedExtension for OnlyStakingAndClaims {
type Call = Call; type Call = Call;
type AdditionalSigned = (); type AdditionalSigned = ();
type Pre = (); type Pre = ();
fn additional_signed(&self) -> rstd::result::Result<(), &'static str> { Ok(()) } fn additional_signed(&self) -> rstd::result::Result<(), TransactionValidityError> { Ok(()) }
fn validate(&self, _: &Self::AccountId, call: &Self::Call, _: DispatchInfo, _: usize) fn validate(&self, _: &Self::AccountId, call: &Self::Call, _: DispatchInfo, _: usize)
-> Result<ValidTransaction, DispatchError> -> TransactionValidity
{ {
match call { match call {
Call::Staking(_) | Call::Claims(_) | Call::Sudo(_) | Call::Session(_) => Call::Staking(_) | Call::Claims(_) | Call::Sudo(_) | Call::Session(_) =>
Ok(Default::default()), Ok(Default::default()),
_ => Err(DispatchError::NoPermission), _ => Err(InvalidTransaction::Custom(ValidityError::NoPermission.into()).into()),
} }
} }
} }
@@ -413,11 +415,13 @@ impl offences::Trait for Runtime {
type OnOffenceHandler = Staking; type OnOffenceHandler = Staking;
} }
type SubmitTransaction = TransactionSubmitter<ImOnlineId, Runtime, UncheckedExtrinsic>;
impl im_online::Trait for Runtime { impl im_online::Trait for Runtime {
type AuthorityId = ImOnlineId; type AuthorityId = ImOnlineId;
type Call = Call;
type Event = Event; type Event = Event;
type UncheckedExtrinsic = UncheckedExtrinsic; type Call = Call;
type SubmitTransaction = SubmitTransaction;
type ReportUnresponsiveness = (); type ReportUnresponsiveness = ();
type CurrentElectedSet = staking::CurrentElectedStashAccounts<Runtime>; type CurrentElectedSet = staking::CurrentElectedStashAccounts<Runtime>;
} }
+2 -2
View File
@@ -22,7 +22,7 @@ use codec::{Encode, Decode, HasCompact};
use srml_support::{decl_storage, decl_module, fail, ensure}; use srml_support::{decl_storage, decl_module, fail, ensure};
use sr_primitives::traits::{ use sr_primitives::traits::{
Hash as HashT, BlakeTwo256, Member, CheckedConversion, Saturating, One, Zero, Hash as HashT, BlakeTwo256, Member, CheckedConversion, Saturating, One, Zero, Dispatchable,
}; };
use sr_primitives::weights::SimpleDispatchInfo; use sr_primitives::weights::SimpleDispatchInfo;
use primitives::{Hash, Balance, parachain::{ use primitives::{Hash, Balance, parachain::{
@@ -31,7 +31,7 @@ use primitives::{Hash, Balance, parachain::{
}}; }};
use {system, session}; use {system, session};
use srml_support::{ use srml_support::{
StorageValue, StorageMap, Parameter, Dispatchable, dispatch::Result, StorageValue, StorageMap, Parameter, dispatch::Result,
traits::{Currency, Get, WithdrawReason, ExistenceRequirement} traits::{Currency, Get, WithdrawReason, ExistenceRequirement}
}; };
+29
View File
@@ -0,0 +1,29 @@
#!/usr/bin/env sh
# Script for building only the WASM binary of the given project.
set -e
PROJECT_ROOT=`git rev-parse --show-toplevel`
if [ "$#" -lt 1 ]; then
echo "You need to pass the name of the crate you want to compile!"
exit 1
fi
WASM_BUILDER_RUNNER="$PROJECT_ROOT/target/release/wbuild-runner/$1"
if [ -z "$2" ]; then
export WASM_TARGET_DIRECTORY=$(pwd)
else
export WASM_TARGET_DIRECTORY=$2
fi
if [ -d $WASM_BUILDER_RUNNER ]; then
export DEBUG=false
export OUT_DIR="$PROJECT_ROOT/target/release/build"
cargo run --release --manifest-path="$WASM_BUILDER_RUNNER/Cargo.toml" \
| grep -vE "cargo:rerun-if-|Executing build command"
else
cargo build --release -p $1
fi
+20 -20
View File
@@ -18,23 +18,23 @@ polkadot-primitives = { path = "../primitives" }
polkadot-runtime = { path = "../runtime" } polkadot-runtime = { path = "../runtime" }
polkadot-executor = { path = "../executor" } polkadot-executor = { path = "../executor" }
polkadot-network = { path = "../network" } polkadot-network = { path = "../network" }
sr-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } sr-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
sr-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } sr-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
client-db = { package = "substrate-client-db", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } client-db = { package = "substrate-client-db", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
substrate-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
substrate-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
consensus_common = { package = "substrate-consensus-common", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } consensus_common = { package = "substrate-consensus-common", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
grandpa = { package = "substrate-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } grandpa = { package = "substrate-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
grandpa_primitives = { package = "substrate-finality-grandpa-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } grandpa_primitives = { package = "substrate-finality-grandpa-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
inherents = { package = "substrate-inherents", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } inherents = { package = "substrate-inherents", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
service = { package = "substrate-service", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } service = { package = "substrate-service", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
telemetry = { package = "substrate-telemetry", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } telemetry = { package = "substrate-telemetry", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
transaction_pool = { package = "substrate-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } transaction_pool = { package = "substrate-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
substrate-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
srml-babe = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } srml-babe = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
srml-staking = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } srml-staking = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
im-online = { package = "srml-im-online", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } im-online = { package = "srml-im-online", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
babe = { package = "substrate-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } babe = { package = "substrate-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-testing" }
+26 -21
View File
@@ -84,9 +84,8 @@ macro_rules! new_full_start {
let builder = service::ServiceBuilder::new_full::< let builder = service::ServiceBuilder::new_full::<
Block, RuntimeApi, polkadot_executor::Executor Block, RuntimeApi, polkadot_executor::Executor
>($config)? >($config)?
.with_select_chain(|_config, client| { .with_select_chain(|_, backend| {
#[allow(deprecated)] Ok(client::LongestChain::new(backend.clone()))
Ok(client::LongestChain::new(client.backend().clone()))
})? })?
.with_transaction_pool(|config, client| .with_transaction_pool(|config, client|
Ok(transaction_pool::txpool::Pool::new(config, transaction_pool::ChainApi::new(client))) Ok(transaction_pool::txpool::Pool::new(config, transaction_pool::ChainApi::new(client)))
@@ -137,12 +136,20 @@ pub fn new_full(config: Configuration<CustomConfiguration, GenesisConfig>)
CallExecutor = impl CallExecutor<Block, Blake2Hasher> + Clone + Send + Sync + 'static, CallExecutor = impl CallExecutor<Block, Blake2Hasher> + Clone + Send + Sync + 'static,
>, ServiceError> >, ServiceError>
{ {
let is_authority = config.roles.is_authority();
let is_collator = config.custom.collating_for.is_some();
let force_authoring = config.force_authoring;
let max_block_data_size = config.custom.max_block_data_size;
let db_path = config.database_path.clone();
let disable_grandpa = config.disable_grandpa;
let name = config.name.clone();
let (builder, mut import_setup, inherent_data_providers, mut tasks_to_spawn) = new_full_start!(config); let (builder, mut import_setup, inherent_data_providers, mut tasks_to_spawn) = new_full_start!(config);
let service = builder let service = builder
.with_network_protocol(|config| Ok(PolkadotProtocol::new(config.custom.collating_for.clone())))? .with_network_protocol(|config| Ok(PolkadotProtocol::new(config.custom.collating_for.clone())))?
.with_finality_proof_provider(|client| .with_finality_proof_provider(|client, backend|
Ok(Arc::new(GrandpaFinalityProofProvider::new(client.clone(), client)) as _) Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, client)) as _)
)? )?
.build()?; .build()?;
@@ -160,7 +167,7 @@ pub fn new_full(config: Configuration<CustomConfiguration, GenesisConfig>)
} }
} }
if service.config().custom.collating_for.is_some() { if is_collator {
info!( info!(
"The node cannot start as an authority because it is also configured to run as a collator." "The node cannot start as an authority because it is also configured to run as a collator."
); );
@@ -201,11 +208,11 @@ pub fn new_full(config: Configuration<CustomConfiguration, GenesisConfig>)
(is_known, client.clone()), (is_known, client.clone()),
); );
if service.config().roles.is_authority() { if is_authority {
let availability_store = { let availability_store = {
use std::path::PathBuf; use std::path::PathBuf;
let mut path = PathBuf::from(service.config().database_path.clone()); let mut path = PathBuf::from(db_path);
path.push("availability"); path.push("availability");
av_store::Store::new(::av_store::Config { av_store::Store::new(::av_store::Config {
@@ -239,7 +246,7 @@ pub fn new_full(config: Configuration<CustomConfiguration, GenesisConfig>)
service.keystore(), service.keystore(),
availability_store, availability_store,
polkadot_runtime::constants::time::SLOT_DURATION, polkadot_runtime::constants::time::SLOT_DURATION,
service.config().custom.max_block_data_size, max_block_data_size,
); );
let client = service.client(); let client = service.client();
@@ -254,7 +261,7 @@ pub fn new_full(config: Configuration<CustomConfiguration, GenesisConfig>)
env: proposer, env: proposer,
sync_oracle: service.network(), sync_oracle: service.network(),
inherent_data_providers: inherent_data_providers.clone(), inherent_data_providers: inherent_data_providers.clone(),
force_authoring: service.config().force_authoring, force_authoring: force_authoring,
time_source: babe_link, time_source: babe_link,
}; };
@@ -269,11 +276,11 @@ pub fn new_full(config: Configuration<CustomConfiguration, GenesisConfig>)
// FIXME substrate#1578 make this available through chainspec // FIXME substrate#1578 make this available through chainspec
gossip_duration: Duration::from_millis(333), gossip_duration: Duration::from_millis(333),
justification_period: 4096, justification_period: 4096,
name: Some(service.config().name.clone()), name: Some(name),
keystore: Some(service.keystore()), keystore: Some(service.keystore()),
}; };
match (service.config().roles.is_authority(), service.config().disable_grandpa) { match (is_authority, disable_grandpa) {
(false, false) => { (false, false) => {
// start the lightweight GRANDPA observer // start the lightweight GRANDPA observer
service.spawn_task(Box::new(grandpa::run_grandpa_observer( service.spawn_task(Box::new(grandpa::run_grandpa_observer(
@@ -319,21 +326,19 @@ pub fn new_light(config: Configuration<CustomConfiguration, GenesisConfig>)
let inherent_data_providers = InherentDataProviders::new(); let inherent_data_providers = InherentDataProviders::new();
ServiceBuilder::new_light::<Block, RuntimeApi, polkadot_executor::Executor>(config)? ServiceBuilder::new_light::<Block, RuntimeApi, polkadot_executor::Executor>(config)?
.with_select_chain(|_config, client| { .with_select_chain(|_, backend| {
#[allow(deprecated)] Ok(LongestChain::new(backend.clone()))
Ok(LongestChain::new(client.backend().clone()))
})? })?
.with_transaction_pool(|config, client| .with_transaction_pool(|config, client|
Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(client))) Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(client)))
)? )?
.with_import_queue_and_fprb(|_config, client, _select_chain, transaction_pool| { .with_import_queue_and_fprb(|_config, client, backend, _select_chain, transaction_pool| {
#[allow(deprecated)] let fetch_checker = backend.blockchain().fetcher()
let fetch_checker = client.backend().blockchain().fetcher()
.upgrade() .upgrade()
.map(|fetcher| fetcher.checker().clone()) .map(|fetcher| fetcher.checker().clone())
.ok_or_else(|| "Trying to start light import queue without active fetch checker")?; .ok_or_else(|| "Trying to start light import queue without active fetch checker")?;
let block_import = grandpa::light_block_import::<_, _, _, RuntimeApi, _>( let block_import = grandpa::light_block_import::<_, _, _, RuntimeApi, _>(
client.clone(), Arc::new(fetch_checker), client.clone() client.clone(), backend, Arc::new(fetch_checker), client.clone()
)?; )?;
let finality_proof_import = block_import.clone(); let finality_proof_import = block_import.clone();
@@ -355,8 +360,8 @@ pub fn new_light(config: Configuration<CustomConfiguration, GenesisConfig>)
Ok((import_queue, finality_proof_request_builder)) Ok((import_queue, finality_proof_request_builder))
})? })?
.with_network_protocol(|config| Ok(PolkadotProtocol::new(config.custom.collating_for.clone())))? .with_network_protocol(|config| Ok(PolkadotProtocol::new(config.custom.collating_for.clone())))?
.with_finality_proof_provider(|client| .with_finality_proof_provider(|client, backend|
Ok(Arc::new(GrandpaFinalityProofProvider::new(client.clone(), client)) as _) Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, client)) as _)
)? )?
.build() .build()
} }
+1 -1
View File
@@ -6,5 +6,5 @@ edition = "2018"
[dependencies] [dependencies]
codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] }
substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
primitives = { package = "polkadot-primitives", path = "../primitives" } primitives = { package = "polkadot-primitives", path = "../primitives" }
+1 -1
View File
@@ -13,7 +13,7 @@ tiny-keccak = "1.5.0"
dlmalloc = { version = "0.1.3", features = ["global"], optional = true } dlmalloc = { version = "0.1.3", features = ["global"], optional = true }
# We need to make sure the global allocator is disabled until we have support of full substrate externalities # We need to make sure the global allocator is disabled until we have support of full substrate externalities
rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", branch = "polkadot-master", default-features = false } rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing", default-features = false }
[build-dependencies] [build-dependencies]
wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.2" } wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.2" }
+2 -2
View File
@@ -19,7 +19,7 @@ use wasm_builder_runner::{build_current_project_with_rustflags, WasmBuilderSourc
fn main() { fn main() {
build_current_project_with_rustflags( build_current_project_with_rustflags(
"wasm_binary.rs", "wasm_binary.rs",
WasmBuilderSource::Crates("1.0.4"), WasmBuilderSource::Crates("1.0.5"),
"-C link-arg=--import-memory", "-C link-arg=--import-memory",
); );
} }
@@ -9,7 +9,7 @@ adder = { path = ".." }
parachain = { package = "polkadot-parachain", path = "../../../parachain" } parachain = { package = "polkadot-parachain", path = "../../../parachain" }
collator = { package = "polkadot-collator", path = "../../../collator" } collator = { package = "polkadot-collator", path = "../../../collator" }
primitives = { package = "polkadot-primitives", path = "../../../primitives" } primitives = { package = "polkadot-primitives", path = "../../../primitives" }
substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
parking_lot = "0.9.0" parking_lot = "0.9.0"
ctrlc = { version = "3.0", features = ["termination"] } ctrlc = { version = "3.0", features = ["termination"] }
futures = "0.1" futures = "0.1"
+2 -2
View File
@@ -19,7 +19,7 @@ use wasm_builder_runner::{build_current_project_with_rustflags, WasmBuilderSourc
fn main() { fn main() {
build_current_project_with_rustflags( build_current_project_with_rustflags(
"wasm_binary.rs", "wasm_binary.rs",
WasmBuilderSource::Crates("1.0.4"), WasmBuilderSource::Crates("1.0.5"),
"-C link-arg=--import-memory", "-C link-arg=--import-memory",
); );
} }
+12 -12
View File
@@ -19,18 +19,18 @@ parachain = { package = "polkadot-parachain", path = "../parachain" }
polkadot-primitives = { path = "../primitives" } polkadot-primitives = { path = "../primitives" }
polkadot-runtime = { path = "../runtime" } polkadot-runtime = { path = "../runtime" }
table = { package = "polkadot-statement-table", path = "../statement-table" } table = { package = "polkadot-statement-table", path = "../statement-table" }
grandpa = { package = "substrate-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } grandpa = { package = "substrate-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
inherents = { package = "substrate-inherents", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } inherents = { package = "substrate-inherents", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
consensus = { package = "substrate-consensus-common", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } consensus = { package = "substrate-consensus-common", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
transaction_pool = { package = "substrate-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } transaction_pool = { package = "substrate-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
trie = { package = "substrate-trie", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } trie = { package = "substrate-trie", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
runtime_primitives = { package = "sr-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } runtime_primitives = { package = "sr-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
bitvec = { version = "0.14.0", default-features = false, features = ["alloc"] } bitvec = { version = "0.14.0", default-features = false, features = ["alloc"] }
runtime_babe = { package = "srml-babe", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } runtime_babe = { package = "srml-babe", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
keystore = { package = "substrate-keystore", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } keystore = { package = "substrate-keystore", git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
[dev-dependencies] [dev-dependencies]
substrate-keyring = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-keyring = { git = "https://github.com/paritytech/substrate", branch = "polkadot-testing" }
+4 -5
View File
@@ -35,6 +35,7 @@ use babe_primitives::BabeApi;
use client::{BlockchainEvents, BlockBody}; use client::{BlockchainEvents, BlockBody};
use client::blockchain::HeaderBackend; use client::blockchain::HeaderBackend;
use client::block_builder::api::BlockBuilder as BlockBuilderApi; use client::block_builder::api::BlockBuilder as BlockBuilderApi;
use client::error as client_error;
use codec::Encode; use codec::Encode;
use consensus::SelectChain; use consensus::SelectChain;
use availability_store::Store as AvailabilityStore; use availability_store::Store as AvailabilityStore;
@@ -46,9 +47,7 @@ use polkadot_primitives::parachain::{
Collation, PoVBlock, ValidatorSignature, ValidatorPair, ValidatorId Collation, PoVBlock, ValidatorSignature, ValidatorPair, ValidatorId
}; };
use primitives::Pair; use primitives::Pair;
use runtime_primitives::{ use runtime_primitives::traits::{ProvideRuntimeApi, DigestFor};
traits::{ProvideRuntimeApi, DigestFor}, ApplyError
};
use futures_timer::{Delay, Interval}; use futures_timer::{Delay, Interval};
use transaction_pool::txpool::{Pool, ChainApi as PoolChainApi}; use transaction_pool::txpool::{Pool, ChainApi as PoolChainApi};
@@ -719,7 +718,7 @@ impl<C, TxApi> CreateProposal<C, TxApi> where
for ready in ready_iter.take(MAX_TRANSACTIONS) { for ready in ready_iter.take(MAX_TRANSACTIONS) {
let encoded_size = ready.data.encode().len(); let encoded_size = ready.data.encode().len();
if pending_size + encoded_size >= MAX_TRANSACTIONS_SIZE { if pending_size + encoded_size >= MAX_TRANSACTIONS_SIZE {
break break;
} }
if Instant::now() > self.deadline { if Instant::now() > self.deadline {
debug!("Consensus deadline reached when pushing block transactions, proceeding with proposing."); debug!("Consensus deadline reached when pushing block transactions, proceeding with proposing.");
@@ -731,7 +730,7 @@ impl<C, TxApi> CreateProposal<C, TxApi> where
debug!("[{:?}] Pushed to the block.", ready.hash); debug!("[{:?}] Pushed to the block.", ready.hash);
pending_size += encoded_size; pending_size += encoded_size;
} }
Err(client::error::Error::ApplyExtrinsicFailed(ApplyError::FullBlock)) => { Err(client_error::Error::ApplyExtrinsicFailed(e)) if e.exhausted_resources() => {
debug!("Block is full, proceed with proposing."); debug!("Block is full, proceed with proposing.");
break; break;
} }