From ccc11974ee48d71b53727b9d72dfe093db083759 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 6 Mar 2019 12:46:17 +0100 Subject: [PATCH] Aggregate all liquidity restrictions in a single place (#1921) * Clean up session key rotation * Fix build * Bump version * Introduce feature to balances. * Move staking locking logic over to central point * ^^^ rest * First part of assimilation * More assimilation * More assimilation * Fix most tests * Fix build * Move Balances to new locking system * :q! * Bump runtime version * Build runtime * Convenience function * Test fix. * Whitespace * Improve type legibility. * Fix comment. * More tests. * More tests. * Bump version * Caps * Whitespace * Whitespace * Remove unneeded function. --- substrate/Cargo.lock | 11 +- substrate/core/executor/wasm/Cargo.lock | 1 - substrate/core/primitives/Cargo.toml | 4 +- substrate/core/serializer/Cargo.toml | 2 +- substrate/core/sr-io/with_std.rs | 39 +++- substrate/core/sr-primitives/Cargo.toml | 2 +- substrate/core/sr-primitives/src/lib.rs | 40 ++-- substrate/core/sr-primitives/src/traits.rs | 17 +- substrate/core/sr-version/Cargo.toml | 4 +- substrate/core/state-machine/src/basic.rs | 183 ++++++++++++++++++ substrate/core/state-machine/src/lib.rs | 4 +- substrate/core/test-runtime/wasm/Cargo.lock | 7 + .../substrate_test_runtime.compact.wasm | Bin 55951 -> 55903 bytes substrate/core/trie/src/node_header.rs | 1 - substrate/node-template/runtime/Cargo.toml | 4 +- substrate/node-template/runtime/src/lib.rs | 2 - .../node-template/runtime/wasm/Cargo.lock | 10 +- substrate/node/executor/src/lib.rs | 16 +- substrate/node/primitives/Cargo.toml | 4 +- substrate/node/runtime/Cargo.toml | 2 +- substrate/node/runtime/src/lib.rs | 9 +- substrate/node/runtime/wasm/Cargo.lock | 11 +- .../release/node_runtime.compact.wasm | Bin 876964 -> 889279 bytes substrate/srml/assets/Cargo.toml | 4 +- substrate/srml/aura/Cargo.toml | 5 +- substrate/srml/balances/Cargo.toml | 4 +- substrate/srml/balances/src/lib.rs | 147 ++++++++++++-- substrate/srml/balances/src/mock.rs | 1 - substrate/srml/balances/src/tests.rs | 133 ++++++++++++- substrate/srml/consensus/Cargo.toml | 4 +- substrate/srml/contract/Cargo.toml | 4 +- substrate/srml/contract/src/exec.rs | 4 +- substrate/srml/contract/src/tests.rs | 1 - substrate/srml/council/Cargo.toml | 3 +- substrate/srml/council/src/lib.rs | 1 - substrate/srml/democracy/Cargo.toml | 4 +- substrate/srml/democracy/src/lib.rs | 56 ++---- substrate/srml/example/Cargo.toml | 4 +- substrate/srml/example/src/lib.rs | 1 - substrate/srml/executive/Cargo.toml | 4 +- substrate/srml/executive/src/lib.rs | 1 - substrate/srml/fees/Cargo.toml | 4 +- substrate/srml/grandpa/Cargo.toml | 4 +- substrate/srml/indices/Cargo.toml | 4 +- substrate/srml/indices/src/lib.rs | 3 + substrate/srml/session/Cargo.toml | 4 +- substrate/srml/session/src/lib.rs | 2 +- substrate/srml/staking/Cargo.toml | 7 +- substrate/srml/staking/src/lib.rs | 131 ++++++------- substrate/srml/staking/src/mock.rs | 23 ++- substrate/srml/staking/src/tests.rs | 20 +- substrate/srml/sudo/Cargo.toml | 4 +- substrate/srml/support/Cargo.toml | 6 +- .../procedural/src/storage/transformation.rs | 21 +- substrate/srml/support/src/lib.rs | 3 + substrate/srml/support/src/traits.rs | 117 +++++------ substrate/srml/system/Cargo.toml | 4 +- substrate/srml/timestamp/Cargo.toml | 6 +- substrate/srml/timestamp/src/lib.rs | 15 +- substrate/srml/treasury/Cargo.toml | 4 +- substrate/srml/treasury/src/lib.rs | 1 - substrate/srml/upgrade-key/Cargo.toml | 4 +- 62 files changed, 795 insertions(+), 346 deletions(-) create mode 100644 substrate/core/state-machine/src/basic.rs diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index 7b7cdd9021..1ad583f7fa 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -212,6 +212,11 @@ name = "bitflags" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "bitmask" +version = "0.5.0" +source = "git+https://github.com/paritytech/bitmask#c2d8d196e30b018d1385be8357fdca61b978facf" + [[package]] name = "blake2" version = "0.8.0" @@ -3052,6 +3057,7 @@ dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -3343,6 +3349,7 @@ dependencies = [ name = "srml-support" version = "0.1.0" dependencies = [ + "bitmask 0.5.0 (git+https://github.com/paritytech/bitmask)", "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3415,7 +3422,6 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "srml-consensus 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", "substrate-inherents 0.1.0", @@ -4608,7 +4614,7 @@ name = "twox-hash" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand 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]] @@ -4954,6 +4960,7 @@ dependencies = [ "checksum bigint 4.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ebecac13b3c745150d7b6c3ea7572d372f09d627c2077e893bf26c5c7f70d282" "checksum bindgen 0.43.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d52d263eacd15d26cbcf215d254b410bd58212aaa2d3c453a04b2d3b3adcf41" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum bitmask 0.5.0 (git+https://github.com/paritytech/bitmask)" = "" "checksum blake2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "91721a6330935673395a0607df4d49a9cb90ae12d259f1b3e0a3f6e1d486872e" "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" "checksum block-buffer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1339a1042f5d9f295737ad4d9a6ab6bf81c84a933dba110b9200cd6d1448b814" diff --git a/substrate/core/executor/wasm/Cargo.lock b/substrate/core/executor/wasm/Cargo.lock index 27c80a723e..dc1159e8d0 100644 --- a/substrate/core/executor/wasm/Cargo.lock +++ b/substrate/core/executor/wasm/Cargo.lock @@ -189,7 +189,6 @@ dependencies = [ "parity-codec 3.1.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)", - "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0", ] diff --git a/substrate/core/primitives/Cargo.toml b/substrate/core/primitives/Cargo.toml index ad42502ddc..579264cc9a 100644 --- a/substrate/core/primitives/Cargo.toml +++ b/substrate/core/primitives/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" rstd = { package = "sr-std", path = "../sr-std", default-features = false } parity-codec = { version = "3.1", default-features = false, features = ["derive"] } rustc-hex = { version = "2.0", default-features = false } -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } twox-hash = { version = "1.1.0", optional = true } byteorder = { version = "1.1", default-features = false } @@ -46,7 +46,7 @@ std = [ "hash256-std-hasher/std", "hash-db/std", "rstd/std", - "serde/std", + "serde", "rustc-hex/std", "twox-hash", "blake2-rfc", diff --git a/substrate/core/serializer/Cargo.toml b/substrate/core/serializer/Cargo.toml index d25c8ce074..8788f776e5 100644 --- a/substrate/core/serializer/Cargo.toml +++ b/substrate/core/serializer/Cargo.toml @@ -5,5 +5,5 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -serde = { version = "1.0", default-features = false } +serde = "1.0" serde_json = "1.0" diff --git a/substrate/core/sr-io/with_std.rs b/substrate/core/sr-io/with_std.rs index 562e349ced..f7db1825d3 100644 --- a/substrate/core/sr-io/with_std.rs +++ b/substrate/core/sr-io/with_std.rs @@ -17,19 +17,29 @@ #[doc(hidden)] pub use parity_codec as codec; // re-export hashing functions. -pub use primitives::{blake2_256, twox_128, twox_256, ed25519, Blake2Hasher, sr25519}; +pub use primitives::{ + blake2_256, twox_128, twox_256, ed25519, Blake2Hasher, sr25519 +}; pub use tiny_keccak::keccak256 as keccak_256; // Switch to this after PoC-3 // pub use primitives::BlakeHasher; -pub use substrate_state_machine::{Externalities, TestExternalities}; +pub use substrate_state_machine::{Externalities, BasicExternalities, TestExternalities}; use environmental::{environmental, thread_local_impl}; -use primitives::hexdisplay::HexDisplay; -use primitives::H256; +use primitives::{hexdisplay::HexDisplay, H256}; use hash_db::Hasher; +#[cfg(feature = "std")] +use std::collections::HashMap; + environmental!(ext: trait Externalities); +/// A set of key value pairs for storage. +pub type StorageOverlay = HashMap, Vec>; + +/// A set of key value pairs for children storage; +pub type ChildrenStorageOverlay = HashMap, StorageOverlay>; + /// Get `key` from storage and return a `Vec`, empty if there's a problem. pub fn storage(key: &[u8]) -> Option> { ext::with(|ext| ext.storage(key).map(|s| s.to_vec())) @@ -196,7 +206,7 @@ pub fn sr25519_verify>(sig: &[u8; 64], msg: &[u8], pubkey: P) -> /// Verify and recover a SECP256k1 ECDSA signature. /// - `sig` is passed in RSV format. V should be either 0/1 or 27/28. -/// - returns `Err` if the signatue is bad, otherwise the 64-byte pubkey (doesn't include the 0x04 prefix). +/// - returns `Err` if the signature is bad, otherwise the 64-byte pubkey (doesn't include the 0x04 prefix). pub fn secp256k1_ecdsa_recover(sig: &[u8; 65], msg: &[u8; 32]) -> Result<[u8; 64], EcdsaVerifyError> { let rs = secp256k1::Signature::parse_slice(&sig[0..64]).map_err(|_| EcdsaVerifyError::BadRS)?; let v = secp256k1::RecoveryId::parse(if sig[64] > 26 { sig[64] - 27 } else { sig[64] } as u8).map_err(|_| EcdsaVerifyError::BadV)?; @@ -213,6 +223,17 @@ pub fn with_externalities R>(ext: &mut Externalities R>(storage: &mut StorageOverlay, f: F) -> R { + let mut alt_storage = Default::default(); + rstd::mem::swap(&mut alt_storage, storage); + let mut ext: BasicExternalities = alt_storage.into(); + let r = ext::using(&mut ext, f); + *storage = ext.into(); + r +} + /// Trait for things which can be printed. pub trait Printable { fn print(self); @@ -248,7 +269,7 @@ mod std_tests { #[test] fn storage_works() { - let mut t = TestExternalities::::default(); + let mut t = BasicExternalities::default(); assert!(with_externalities(&mut t, || { assert_eq!(storage(b"hello"), None); set_storage(b"hello", b"world"); @@ -258,7 +279,7 @@ mod std_tests { true })); - t = TestExternalities::new(map![b"foo".to_vec() => b"bar".to_vec()]); + t = BasicExternalities::new(map![b"foo".to_vec() => b"bar".to_vec()]); assert!(!with_externalities(&mut t, || { assert_eq!(storage(b"hello"), None); @@ -269,7 +290,7 @@ mod std_tests { #[test] fn read_storage_works() { - let mut t = TestExternalities::::new(map![ + let mut t = BasicExternalities::new(map![ b":test".to_vec() => b"\x0b\0\0\0Hello world".to_vec() ]); @@ -285,7 +306,7 @@ mod std_tests { #[test] fn clear_prefix_works() { - let mut t = TestExternalities::::new(map![ + let mut t = BasicExternalities::new(map![ b":a".to_vec() => b"\x0b\0\0\0Hello world".to_vec(), b":abcd".to_vec() => b"\x0b\0\0\0Hello world".to_vec(), b":abc".to_vec() => b"\x0b\0\0\0Hello world".to_vec(), diff --git a/substrate/core/sr-primitives/Cargo.toml b/substrate/core/sr-primitives/Cargo.toml index 2a971c3941..4ef85b4989 100644 --- a/substrate/core/sr-primitives/Cargo.toml +++ b/substrate/core/sr-primitives/Cargo.toml @@ -13,7 +13,7 @@ parity-codec = { version = "3.1", default-features = false, features = ["derive" substrate-primitives = { path = "../primitives", default-features = false } rstd = { package = "sr-std", path = "../sr-std", default-features = false } runtime_io = { package = "sr-io", path = "../sr-io", default-features = false } -log = {version = "0.4", optional = true } +log = { version = "0.4", optional = true } [dev-dependencies] serde_json = "1.0" diff --git a/substrate/core/sr-primitives/src/lib.rs b/substrate/core/sr-primitives/src/lib.rs index 7a5739d8f1..b2491c57a1 100644 --- a/substrate/core/sr-primitives/src/lib.rs +++ b/substrate/core/sr-primitives/src/lib.rs @@ -27,7 +27,7 @@ pub use parity_codec as codec; pub use serde_derive; #[cfg(feature = "std")] -use std::collections::HashMap; +pub use runtime_io::{StorageOverlay, ChildrenStorageOverlay}; use rstd::prelude::*; use substrate_primitives::hash::{H256, H512}; @@ -87,17 +87,9 @@ pub use serde::{Serialize, de::DeserializeOwned}; #[cfg(feature = "std")] use serde_derive::{Serialize, Deserialize}; -/// A set of key value pairs for storage. -#[cfg(feature = "std")] -pub type StorageOverlay = HashMap, Vec>; - -/// A set of key value pairs for children storage; -#[cfg(feature = "std")] -pub type ChildrenStorageOverlay = HashMap, StorageOverlay>; - /// Complex storage builder stuff. #[cfg(feature = "std")] -pub trait BuildStorage { +pub trait BuildStorage: Sized { /// Hash given slice. /// /// Default to xx128 hashing. @@ -107,7 +99,21 @@ pub trait BuildStorage { r } /// Build the storage out of this builder. - fn build_storage(self) -> Result<(StorageOverlay, ChildrenStorageOverlay), String>; + fn build_storage(self) -> Result<(StorageOverlay, ChildrenStorageOverlay), String> { + let mut storage = Default::default(); + let mut child_storage = Default::default(); + self.assimilate_storage(&mut storage, &mut child_storage)?; + Ok((storage, child_storage)) + } + /// Assimilate the storage for this module into pre-existing overlays. + fn assimilate_storage(self, storage: &mut StorageOverlay, child_storage: &mut ChildrenStorageOverlay) -> Result<(), String> { + let (s, cs) = self.build_storage()?; + storage.extend(s); + for (other_child_key, other_child_map) in cs { + child_storage.entry(other_child_key).or_default().extend(other_child_map); + } + Ok(()) + } } #[cfg(feature = "std")] @@ -115,6 +121,10 @@ impl BuildStorage for StorageOverlay { fn build_storage(self) -> Result<(StorageOverlay, ChildrenStorageOverlay), String> { Ok((self, Default::default())) } + fn assimilate_storage(self, storage: &mut StorageOverlay, _child_storage: &mut ChildrenStorageOverlay) -> Result<(), String> { + storage.extend(self); + Ok(()) + } } /// Permill is parts-per-million (i.e. after multiplying by this, divide by 1000000). @@ -411,6 +421,14 @@ macro_rules! impl_outer_config { } #[cfg(any(feature = "std", test))] impl $crate::BuildStorage for $main { + fn assimilate_storage(self, top: &mut $crate::StorageOverlay, children: &mut $crate::ChildrenStorageOverlay) -> ::std::result::Result<(), String> { + $( + if let Some(extra) = self.$snake { + extra.assimilate_storage(top, children)?; + } + )* + Ok(()) + } fn build_storage(self) -> ::std::result::Result<($crate::StorageOverlay, $crate::ChildrenStorageOverlay), String> { let mut top = $crate::StorageOverlay::new(); let mut children = $crate::ChildrenStorageOverlay::new(); diff --git a/substrate/core/sr-primitives/src/traits.rs b/substrate/core/sr-primitives/src/traits.rs index 8050451b38..4ff1ad3115 100644 --- a/substrate/core/sr-primitives/src/traits.rs +++ b/substrate/core/sr-primitives/src/traits.rs @@ -23,8 +23,7 @@ use runtime_io; #[cfg(feature = "std")] use serde::{Serialize, de::DeserializeOwned}; #[cfg(feature = "std")] use serde_derive::{Serialize, Deserialize}; -use substrate_primitives; -use substrate_primitives::Blake2Hasher; +use substrate_primitives::{self, Hasher, Blake2Hasher}; use crate::codec::{Codec, Encode, HasCompact}; pub use integer_sqrt::IntegerSquareRoot; pub use num_traits::{ @@ -84,6 +83,8 @@ pub trait StaticLookup { type Target; /// Attempt a lookup. fn lookup(s: Self::Source) -> result::Result; + /// Convert from Target back to Source. + fn unlookup(t: Self::Target) -> Self::Source; } /// A lookup implementation returning the input value. @@ -93,6 +94,7 @@ impl StaticLookup for IdentityLookup< type Source = T; type Target = T; fn lookup(x: T) -> result::Result { Ok(x) } + fn unlookup(x: T) -> T { x } } impl Lookup for IdentityLookup { type Source = T; @@ -184,7 +186,7 @@ pub trait SimpleArithmetic: CheckedMul + CheckedDiv + Saturating + - PartialOrd + Ord + + PartialOrd + Ord + Bounded + HasCompact {} impl + Ord + + PartialOrd + Ord + Bounded + HasCompact > SimpleArithmetic for T {} @@ -298,7 +300,10 @@ tuple_impl!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, pub trait Hash: 'static + MaybeSerializeDebug + Clone + Eq + PartialEq { // Stupid bug in the Rust compiler believes derived // traits must be fulfilled by all type parameters. /// The hash type produced. - type Output: Member + MaybeSerializeDebug + AsRef<[u8]> + AsMut<[u8]>; + type Output: Member + MaybeSerializeDebug + rstd::hash::Hash + AsRef<[u8]> + AsMut<[u8]> + Copy + Default; + + /// The associated hash_db Hasher type. + type Hasher: Hasher; /// Produce the hash of some byte-slice. fn hash(s: &[u8]) -> Self::Output; @@ -338,6 +343,7 @@ pub struct BlakeTwo256; impl Hash for BlakeTwo256 { type Output = substrate_primitives::H256; + type Hasher = Blake2Hasher; fn hash(s: &[u8]) -> Self::Output { runtime_io::blake2_256(s).into() } @@ -480,6 +486,7 @@ pub trait MaybeHash {} #[cfg(not(feature = "std"))] impl MaybeHash for T {} + /// A type that can be used in runtime structures. pub trait Member: Send + Sync + Sized + MaybeDebug + Eq + PartialEq + Clone + 'static {} impl Member for T {} diff --git a/substrate/core/sr-version/Cargo.toml b/substrate/core/sr-version/Cargo.toml index 3ad1ac299e..5a1e6162f1 100644 --- a/substrate/core/sr-version/Cargo.toml +++ b/substrate/core/sr-version/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] impl-serde = { version = "0.1", optional = true } -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false, features = ["derive"] } rstd = { package = "sr-std", path = "../sr-std", default-features = false } @@ -16,7 +16,7 @@ runtime_primitives = { package = "sr-primitives", path = "../sr-primitives", def default = ["std"] std = [ "impl-serde", - "serde/std", + "serde", "serde_derive", "parity-codec/std", "rstd/std", diff --git a/substrate/core/state-machine/src/basic.rs b/substrate/core/state-machine/src/basic.rs new file mode 100644 index 0000000000..cb9f5d33d0 --- /dev/null +++ b/substrate/core/state-machine/src/basic.rs @@ -0,0 +1,183 @@ +// Copyright 2017-2018 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Basic implementation for Externalities. + +use std::collections::HashMap; +use std::iter::FromIterator; +use hash_db::Hasher; +use heapsize::HeapSizeOf; +use trie::trie_root; +use primitives::storage::well_known_keys::{CHANGES_TRIE_CONFIG, CODE, HEAP_PAGES}; +use parity_codec::Encode; +use super::{Externalities, OverlayedChanges}; + +/// Simple HashMap-based Externalities impl. +pub struct BasicExternalities { + inner: HashMap, Vec>, + changes: OverlayedChanges, + code: Option>, +} + +impl BasicExternalities { + /// Create a new instance of `BasicExternalities` + pub fn new(inner: HashMap, Vec>) -> Self { + Self::new_with_code(&[], inner) + } + + /// Create a new instance of `BasicExternalities` + pub fn new_with_code(code: &[u8], mut inner: HashMap, Vec>) -> Self { + let mut overlay = OverlayedChanges::default(); + super::set_changes_trie_config( + &mut overlay, + inner.get(&CHANGES_TRIE_CONFIG.to_vec()).cloned(), + false, + ).expect("changes trie configuration is correct in test env; qed"); + + inner.insert(HEAP_PAGES.to_vec(), 8u64.encode()); + + BasicExternalities { + inner, + changes: overlay, + code: Some(code.to_vec()), + } + } + + /// Insert key/value + pub fn insert(&mut self, k: Vec, v: Vec) -> Option> { + self.inner.insert(k, v) + } +} + +impl ::std::fmt::Debug for BasicExternalities { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + write!(f, "{:?}", self.inner) + } +} + +impl PartialEq for BasicExternalities { + fn eq(&self, other: &BasicExternalities) -> bool { + self.inner.eq(&other.inner) + } +} + +impl FromIterator<(Vec, Vec)> for BasicExternalities { + fn from_iter, Vec)>>(iter: I) -> Self { + let mut t = Self::new(Default::default()); + t.inner.extend(iter); + t + } +} + +impl Default for BasicExternalities { + fn default() -> Self { Self::new(Default::default()) } +} + +impl From for HashMap, Vec> { + fn from(tex: BasicExternalities) -> Self { + tex.inner.into() + } +} + +impl From< HashMap, Vec> > for BasicExternalities { + fn from(hashmap: HashMap, Vec>) -> Self { + BasicExternalities { + inner: hashmap, + changes: Default::default(), + code: None, + } + } +} + +impl Externalities for BasicExternalities where H::Out: Ord + HeapSizeOf { + fn storage(&self, key: &[u8]) -> Option> { + match key { + CODE => self.code.clone(), + _ => self.inner.get(key).cloned(), + } + } + + fn child_storage(&self, _storage_key: &[u8], _key: &[u8]) -> Option> { + None + } + + fn place_storage(&mut self, key: Vec, maybe_value: Option>) { + self.changes.set_storage(key.clone(), maybe_value.clone()); + match key.as_ref() { + CODE => self.code = maybe_value, + _ => { + match maybe_value { + Some(value) => { self.inner.insert(key, value); } + None => { self.inner.remove(&key); } + } + } + } + } + + fn place_child_storage(&mut self, _storage_key: Vec, _key: Vec, _value: Option>) -> bool { + false + } + + fn kill_child_storage(&mut self, _storage_key: &[u8]) { } + + fn clear_prefix(&mut self, prefix: &[u8]) { + self.changes.clear_prefix(prefix); + self.inner.retain(|key, _| !key.starts_with(prefix)); + } + + fn chain_id(&self) -> u64 { 42 } + + fn storage_root(&mut self) -> H::Out { + trie_root::(self.inner.clone()) + } + + fn child_storage_root(&mut self, _storage_key: &[u8]) -> Option> { + None + } + + fn storage_changes_root(&mut self, _parent: H::Out, _parent_num: u64) -> Option { + None + } +} + +#[cfg(test)] +mod tests { + use super::*; + use primitives::{Blake2Hasher, H256}; + use hex_literal::{hex, hex_impl}; + + #[test] + fn commit_should_work() { + let mut ext = BasicExternalities::default(); + let ext = &mut ext as &mut Externalities; + ext.set_storage(b"doe".to_vec(), b"reindeer".to_vec()); + ext.set_storage(b"dog".to_vec(), b"puppy".to_vec()); + ext.set_storage(b"dogglesworth".to_vec(), b"cat".to_vec()); + const ROOT: [u8; 32] = hex!("0b33ed94e74e0f8e92a55923bece1ed02d16cf424e124613ddebc53ac3eeeabe"); + assert_eq!(ext.storage_root(), H256::from(ROOT)); + } + + #[test] + fn set_and_retrieve_code() { + let mut ext = BasicExternalities::default(); + let ext = &mut ext as &mut Externalities; + + let code = vec![1, 2, 3]; + ext.set_storage(CODE.to_vec(), code.clone()); + + assert_eq!(&ext.storage(CODE).unwrap(), &code); + } +} diff --git a/substrate/core/state-machine/src/lib.rs b/substrate/core/state-machine/src/lib.rs index 3b9e482e82..6ba376d046 100644 --- a/substrate/core/state-machine/src/lib.rs +++ b/substrate/core/state-machine/src/lib.rs @@ -29,6 +29,7 @@ pub mod backend; mod changes_trie; mod ext; mod testing; +mod basic; mod overlayed_changes; mod proving_backend; mod trie_backend; @@ -37,6 +38,7 @@ mod trie_backend_essence; use overlayed_changes::OverlayedChangeSet; pub use trie::{TrieMut, TrieDBMut, DBValue, MemoryDB}; pub use testing::TestExternalities; +pub use basic::BasicExternalities; pub use ext::Ext; pub use backend::Backend; pub use changes_trie::{ @@ -625,7 +627,7 @@ where /// differs from previous OR config decode has failed. pub(crate) fn set_changes_trie_config(overlay: &mut OverlayedChanges, config: Option>, final_check: bool) -> Result<(), Box> { let config = match config { - Some(v) => Some(changes_trie::Configuration::decode(&mut &v[..]) + Some(v) => Some(Decode::decode(&mut &v[..]) .ok_or_else(|| Box::new("Failed to decode changes trie configuration".to_owned()) as Box)?), None => None, }; diff --git a/substrate/core/test-runtime/wasm/Cargo.lock b/substrate/core/test-runtime/wasm/Cargo.lock index 1dae80fcba..ff712a4aef 100644 --- a/substrate/core/test-runtime/wasm/Cargo.lock +++ b/substrate/core/test-runtime/wasm/Cargo.lock @@ -44,6 +44,11 @@ name = "bitflags" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "bitmask" +version = "0.5.0" +source = "git+https://github.com/paritytech/bitmask#c2d8d196e30b018d1385be8357fdca61b978facf" + [[package]] name = "blake2-rfc" version = "0.2.18" @@ -1221,6 +1226,7 @@ dependencies = [ name = "srml-support" version = "0.1.0" dependencies = [ + "bitmask 0.5.0 (git+https://github.com/paritytech/bitmask)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1863,6 +1869,7 @@ dependencies = [ "checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" "checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum bitmask 0.5.0 (git+https://github.com/paritytech/bitmask)" = "" "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" "checksum block-buffer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1339a1042f5d9f295737ad4d9a6ab6bf81c84a933dba110b9200cd6d1448b814" "checksum block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49665c62e0e700857531fa5d3763e91b539ff1abeebd56808d378b495870d60d" diff --git a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 13b55df5d1434798d967fb35a1e13737b982c3fd..15ed8aabd2faf73ab308f4e7de30c0f9eac3f67d 100644 GIT binary patch delta 3722 zcmb7Hdvp}l8J|15gbhhHvxJaU9&Q53=AC)%?5sTEkc!xz;)_>64D(uKg+xi93QD3x z2#=7&4=bdIV6_KZtKa~KC~8Dc8s!xUrK#GIT2AGtJxXmYRZrXR?j|9Mf3&-2_V?ZI z-uu1o_kFXs<&f+ALD&8xrL@`y~OK=Gek+=(bmbN)HB)+ z@Uim>inxlJm3EcBs_yQZmCNdu*|kjZ=s3&1-!@m(*;U5!8uK2e6k6G=Ov(3SyH2Wx|l&JDz1!2)c5}_3%ya1ZSzMlw1?>-*M}0qt0Ane>8&O zyiCd{M*F;_li@_?1^2cLvdfv~e}yIc;9u7U$q~pN_dIzLPK~R<-|6F(@34x4j0C+AnkDb1kE>WVM>5#7dJW2Oz2N%|I-K?N($M_ zTj8aW0@4H@lq^i$(b~xcrbE&{+7>3 z=BW*xjE35|Jnal6Qz!|(g=3t5-lnpo-{I#J5)8#;e-HN!Y~@SFOAi@ zV9lK!Oz};1)q!3P47021_^SYa9xc9gM>s=V`4eUI8b9;5X!5UP&@ZlAIjV`w9Fq13@x~)=BC7gQuwfDCfNi9 z_f8~1n04=+gY2{So}D->zTZPa*L?@jr2AJY1mo~xZ3o>NtD8fivu-~51Nc|XCKq7o zs%fMPo?Ufr%*A+A8Zam{PN`^ZPcyWv9-B277ObC8ynb5a^#ey&7g1?T8uH=AUz9rK zKlzBD_rV8t7JnWW)juHWyCLsqW5YrYpFSXwPav>nJi0h-jg@dQ!#TWW5+Re|y|t&w zB86-%cG+}-Izs6;MR@T zmS8L3(r7!l5p7E2#tv@?SM>;ZVq*~|V?wmw$KF7{=t(PyX&gN-w&??M!8zabXPV9P zw-mx(H^+D`@oCb_b4u^JVS5@yzTT4e|@1W&Qs~p$GTUNXw zw9@R{K~Jk2ZfPqoy|{^1az9Cw#aTpcfBYDGC^u|;uX6N9juLX{_MaU87%eL!j zz6#*D@>0F9Zu@j6cl#{bGpiq8nZ)+D!iPV5pTg_AKF#yv}`Bie4@Pt;@+s}43E6PP58b62wo|vU zGkpEbH8&4-2IPz%p6t)lHQ(Nr=qJ=t`htp=tit+{z*k#ev$OcwN4-h=5`E>OqftAG z4g$8m*AHf4U-;d@J1A>!bq16ls=V^f*>fl>*cvwv^PXBKqr`;&=yiZq;#tH~74XMH zg;d6x~%XADaqE$8x|rR^V(s79nu* z%>~Jqx1xqU?u%|HeQRQU8sQj)VVG)$V-_Md6NVXq*n{I~!}!|=_;=y@G~`zxjzjEn zCH61Cc^8iFK|Y7L7I6$>3t~FrZo~}40|Vnu#8C`W&%A?#4=3J7^do+OI2N%G1y4qN zo8_1Y;_djb^g(|9F#cTw{B~T2|I~)o-#x(JhwCRIJ!t4!q?7Ua2KgDNe`sO_dXO|U zafQEWfS>OEwxAaV_)CzF|4W!=#8kwch%^$fAyUUqBW59fjMmf0Uc_+#(KCW$Mx%aa zBtGt4Y{4b=>rqAG>MmSTm%koWc)&WxHNRnU3MGA-4R3}^q_ zDI`M>l~6<%Bt8@orHE*be}Vw%^TS`>so{7zEXx+p>lEck80_N#j<-cwmrcQpqGT&- zz~jf?f+HvLe5Ro2VM!JwC2Co!ZBByEPJ}agK^ASnj+nYCNuq8}o-uXN9OyY&=F>yE zh+9-CgzklOB^TD7EcY3LVM`%1!b@R3B!!GTIDS(0g-t0e**0%mqN>P>5(Mtllng;N zR9;s?VZ$`!s1nM*5|<1^koBk{n2MlCMmS;>EE$YhE~K4Ie(ZFrPl~FBZdtk+37a}E z$%QcCbh!{UWZkl5-L_TTQbI;iYWya&8tZ>qO?B~ASEUkYK3$es`aSohGI;lN&=*pa zupmpKB$`$eIYWvlm^rEujmoO5Snx#e9L_X(K8%NHDXJia<&g7r?>WLLA~HjG7J@G8 elFB=O`t4knQx(e=R5@zeQC%^kf-|%4X7;~I)f@)^ delta 3669 zcma)94RjRM6`nV{ImtmRdYm>#2HLd$68zdf)z-RO~r!&g}Q* zzPa~(@4NTi?ELANXYX;(vnR=9FXPX^kJszX&h}<|GrVcp*}m-TY?2MbM9J*i*UR|Y z7`+by?CoWh-2CPiXQi>RwV}CXb?a(p15-6VZgMs|*2Y$6rPA^R7Bu7cwNpB$o!ZsQ#A+C3 z7Q+O+`n|DWy8cL8V=yhIlUDr{T%6KGPQfix^}whHeLf2d;xV*x8gDicjw%YG?7k549Awv)CkC7pF&Hj9!`z`TJLQ0@mF2nC7 za;UTb-7}NP2(mcHKmuGz&=VvI`=!OpmB6F&G*aTeAaC=LGSJf|z`gn3ai5&` zG0DBu(aY$#Di_lKMu$E+bbnrZ6H6|;|GuuAkY1Rvpsw)1PMpj{ZV33t5xs4JpFy@r zdLBDZKLA||K4p>meG6w0Qtm!^!*p`}xlVjq;;I=R)mTqMcHM5Vr8$KxXKV%@8RhngxTzfezI5H~ zmv_@_bbEqqEs3xbFlPH6YQgA<_zD}u0T zFl9bczo2>_?p9${WRan;vk^*TSYnr%7!K7KR~lqXS-ueSS<03cdcd&rz-MMbtx<_l z+;s*^rloix>8}|=mw6Nk)>;ZdWwzKobamNTMq!t82YDafbC!^gK#0yEgU}p3r~fFf zQ9DXRRm(ym3DsyV;+TyoY(5UKOjD}i=~LpTuQx6VbgZhN;mg;T!ZS})yO|A_2#WLR z>H`zH1%Adzos?Fx)=^Mo*~6CJ zK|^9@F0kx8thj^g%ZUgB>kERsp3Vh|$n}0apE_13Q_B2#=R5^_2%+P5A*1D55`u*- zKSnvDOa3@pE~j3-PL^ z0LJDDtT!6&7n^fvxc<#=#|?SzOIrqLl@@Npxvk^qT;J9TJl6l*N{@BnwjH4nHFcLZ zo+8?K^sCS4>)Wcwr1jzX=OnnYeKHw>Njv6Fpp6f6in*nw{U*)v1!&xn&vte}#}18r z;P&pANsH`@`&<%opV`?-yP(?9lE!xJgCjrqBZUWdf0WaW|LcO8K`*z2wu-pcZs(ry z@sfIEZ$2r4<9j8H^Vhv{&a?3h;}NH87UPobdw}oCO-m%$-TssP1nK2H-a+^K*yHQb znL8-rzl-??f6C^bjC&tWQr=G~qyHC&Cf%4S5VTAgT~d@BZ2S z*=gq!XZHhFr#vc-0k*7{j!neF_|~yosj2dKV@67T=srF%)ElQpYXmnY$B9vSdDLo@^}`1IPJDiZ*_9*>^%k7x(mu>1@tW+y^@$ z^+~o2(vwSDMt+Y;X28~-TSMo+Vc^et`qDm0?DUmiULq&mr=EY6Wc@zCGI~4KlkW*X zeDB5Pu?@{lPK~kFZgJqV7ni#Wenr@8Mr<{AG`FlVowZg&%{l{r+-zxetOmHP_W^jP zchxs|t`Ii79D_-xir}4>XTz*hWv+8dCFxA!1CP9NXXarnU0=7C8v|Efnbwv|I7Y$Q zwG7AHg}9qA%oxP;ct2;9eSgv(#pnHKUxZkI_^yXz79uXkc@N?Sv~!5}Ax=Pi7;zlp z6Nov8J<0n%#IX$1#th>ifD?Z~%t!nJF%NM*1};W?gXNey#9Q!U@hU)j=_vb(r2Qa1 zhd;T#e7+%R@5Se*;W$NfD~>bqn&G8{+D0ata0h8$PK?+eOxjg+7#-;8r2Q$h<1Yy2 zJYp8&MMSE^B}BTh%ZL*ZKScIaS#Au+1QB_}@wh&d$_~b3GVm%&ODLcsQmMxxQe`$E zZ5kko_Z5iy5OWdlL`RBC@t!KT%*(_VPTk*t_f#>uF#V+bveEA5zdDzUQ&q( zQ+C24M1OlIM^YoQq^WXP69vuG!ra}n;b?y@TpWmSVL2j24M7!c!Hk%O16%r{6hRZL5X>Hs0}g6oTc$0jie|~8Rtnn(X5o&sh~Y?TR8k^Q z#}Ud#)XGt#Vpx#vs9W&k@eF4I{!kvg}xzAxXA-^mn(h9M4-}Q!&Dd7_oT8 LP~5!pH?sc)5jz3a diff --git a/substrate/core/trie/src/node_header.rs b/substrate/core/trie/src/node_header.rs index 99b1241cab..6324a6e353 100644 --- a/substrate/core/trie/src/node_header.rs +++ b/substrate/core/trie/src/node_header.rs @@ -72,7 +72,6 @@ impl Decode for NodeHeader { BRANCH_NODE_NO_VALUE => NodeHeader::Branch(false), // 254 BRANCH_NODE_WITH_VALUE => NodeHeader::Branch(true), // 255 - _ => unreachable!(), }) } } diff --git a/substrate/node-template/runtime/Cargo.toml b/substrate/node-template/runtime/Cargo.toml index 986b12ce94..066e9da79d 100644 --- a/substrate/node-template/runtime/Cargo.toml +++ b/substrate/node-template/runtime/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false } parity-codec = { version = "3.1", default-features = false, features = ["derive"] } @@ -47,7 +47,7 @@ std = [ "sudo/std", "version/std", "serde_derive", - "serde/std", + "serde", "safe-mix/std", "consensus-aura/std", ] diff --git a/substrate/node-template/runtime/src/lib.rs b/substrate/node-template/runtime/src/lib.rs index 9caef856fd..fd696e9500 100644 --- a/substrate/node-template/runtime/src/lib.rs +++ b/substrate/node-template/runtime/src/lib.rs @@ -158,8 +158,6 @@ impl balances::Trait for Runtime { type OnFreeBalanceZero = (); /// What to do if a new account is created. type OnNewAccount = Indices; - /// Restrict whether an account can transfer funds. We don't place any further restrictions. - type EnsureAccountLiquid = (); /// The uniquitous event type. type Event = Event; } diff --git a/substrate/node-template/runtime/wasm/Cargo.lock b/substrate/node-template/runtime/wasm/Cargo.lock index f1b317903e..421d9cdcad 100644 --- a/substrate/node-template/runtime/wasm/Cargo.lock +++ b/substrate/node-template/runtime/wasm/Cargo.lock @@ -50,6 +50,11 @@ name = "bitflags" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "bitmask" +version = "0.5.0" +source = "git+https://github.com/paritytech/bitmask#c2d8d196e30b018d1385be8357fdca61b978facf" + [[package]] name = "blake2-rfc" version = "0.2.18" @@ -1276,6 +1281,7 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -1401,6 +1407,7 @@ dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", "srml-consensus 0.1.0", @@ -1429,6 +1436,7 @@ dependencies = [ name = "srml-support" version = "0.1.0" dependencies = [ + "bitmask 0.5.0 (git+https://github.com/paritytech/bitmask)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1499,7 +1507,6 @@ dependencies = [ "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", - "srml-consensus 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", "substrate-inherents 0.1.0", @@ -2079,6 +2086,7 @@ dependencies = [ "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum bitmask 0.5.0 (git+https://github.com/paritytech/bitmask)" = "" "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" "checksum block-buffer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1339a1042f5d9f295737ad4d9a6ab6bf81c84a933dba110b9200cd6d1448b814" "checksum block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49665c62e0e700857531fa5d3763e91b539ff1abeebd56808d378b495870d60d" diff --git a/substrate/node/executor/src/lib.rs b/substrate/node/executor/src/lib.rs index 5b100c3a93..8b67e98834 100644 --- a/substrate/node/executor/src/lib.rs +++ b/substrate/node/executor/src/lib.rs @@ -318,9 +318,9 @@ mod tests { sudo: Some(Default::default()), grandpa: Some(GrandpaConfig { authorities: vec![ // set these so no GRANDPA events fire when session changes - (keyring::ed25519::Keyring::Alice.to_raw_public().into(), 1), - (keyring::ed25519::Keyring::Bob.to_raw_public().into(), 1), (keyring::ed25519::Keyring::Charlie.to_raw_public().into(), 1), + (keyring::ed25519::Keyring::Bob.to_raw_public().into(), 1), + (keyring::ed25519::Keyring::Alice.to_raw_public().into(), 1), ], }), fees: Some(FeesConfig { @@ -449,9 +449,9 @@ mod tests { let mut digest = generic::Digest::::default(); digest.push(Log::from(::grandpa::RawLog::AuthoritiesChangeSignal(0, vec![ - (Keyring::One.to_raw_public().into(), 1), - (Keyring::Two.to_raw_public().into(), 1), - ([3u8; 32].into(), 1), + (Keyring::Charlie.to_raw_public().into(), 1), + (Keyring::Alice.to_raw_public().into(), 1), + (Keyring::Bob.to_raw_public().into(), 1), ]))); assert_eq!(Header::decode(&mut &block2.0[..]).unwrap().digest, digest); @@ -592,9 +592,9 @@ mod tests { EventRecord { phase: Phase::Finalization, event: Event::grandpa(::grandpa::RawEvent::NewAuthorities(vec![ - (Keyring::One.to_raw_public().into(), 1), - (Keyring::Two.to_raw_public().into(), 1), - ([3u8; 32].into(), 1), + (Keyring::Charlie.to_raw_public().into(), 1), + (Keyring::Alice.to_raw_public().into(), 1), + (Keyring::Bob.to_raw_public().into(), 1), ])), }, EventRecord { diff --git a/substrate/node/primitives/Cargo.toml b/substrate/node/primitives/Cargo.toml index bdb1fd64cd..724eb7d0ab 100644 --- a/substrate/node/primitives/Cargo.toml +++ b/substrate/node/primitives/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false } parity-codec-derive = { version = "3.1", default-features = false } @@ -26,5 +26,5 @@ std = [ "rstd/std", "runtime_primitives/std", "serde_derive", - "serde/std", + "serde", ] diff --git a/substrate/node/runtime/Cargo.toml b/substrate/node/runtime/Cargo.toml index d009a544d5..0c695f5ef1 100644 --- a/substrate/node/runtime/Cargo.toml +++ b/substrate/node/runtime/Cargo.toml @@ -65,7 +65,7 @@ std = [ "fees/std", "version/std", "node-primitives/std", - "serde/std", + "serde", "safe-mix/std", "client/std", "consensus_aura/std", diff --git a/substrate/node/runtime/src/lib.rs b/substrate/node/runtime/src/lib.rs index d9089f6b0a..16ace6f280 100644 --- a/substrate/node/runtime/src/lib.rs +++ b/substrate/node/runtime/src/lib.rs @@ -60,8 +60,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("node"), impl_name: create_runtime_str!("substrate-node"), authoring_version: 10, - spec_version: 33, - impl_version: 33, + spec_version: 34, + impl_version: 34, apis: RUNTIME_API_VERSIONS, }; @@ -101,9 +101,8 @@ impl indices::Trait for Runtime { impl balances::Trait for Runtime { type Balance = Balance; - type OnFreeBalanceZero = (((Staking, Contract), Democracy), Session); + type OnFreeBalanceZero = ((Staking, Contract), Session); type OnNewAccount = Indices; - type EnsureAccountLiquid = (Staking, Democracy); type Event = Event; } @@ -116,7 +115,7 @@ impl consensus::Trait for Runtime { type Log = Log; type SessionKey = SessionKey; - // the aura module handles offline-reports internally + // The Aura module handles offline-reports internally // rather than using an explicit report system. type InherentOfflineReport = (); } diff --git a/substrate/node/runtime/wasm/Cargo.lock b/substrate/node/runtime/wasm/Cargo.lock index 5bb473efb1..0d6c80edea 100644 --- a/substrate/node/runtime/wasm/Cargo.lock +++ b/substrate/node/runtime/wasm/Cargo.lock @@ -44,6 +44,11 @@ name = "bitflags" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "bitmask" +version = "0.5.0" +source = "git+https://github.com/paritytech/bitmask#c2d8d196e30b018d1385be8357fdca61b978facf" + [[package]] name = "blake2-rfc" version = "0.2.18" @@ -1300,7 +1305,7 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", "srml-session 0.1.0", @@ -1513,6 +1518,7 @@ dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", "srml-consensus 0.1.0", @@ -1541,6 +1547,7 @@ dependencies = [ name = "srml-support" version = "0.1.0" dependencies = [ + "bitmask 0.5.0 (git+https://github.com/paritytech/bitmask)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1611,7 +1618,6 @@ dependencies = [ "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", - "srml-consensus 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", "substrate-inherents 0.1.0", @@ -2224,6 +2230,7 @@ dependencies = [ "checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" "checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum bitmask 0.5.0 (git+https://github.com/paritytech/bitmask)" = "" "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" "checksum block-buffer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1339a1042f5d9f295737ad4d9a6ab6bf81c84a933dba110b9200cd6d1448b814" "checksum block-buffer 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49665c62e0e700857531fa5d3763e91b539ff1abeebd56808d378b495870d60d" diff --git a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 7c6e43a51622bdd2c89c0dc1f1c19f0efae79cd4..da9604c4eba33a1705709d8d679edef9e30230ba 100644 GIT binary patch delta 307618 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 DCrp*& delta 294859 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�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 diff --git a/substrate/srml/assets/Cargo.toml b/substrate/srml/assets/Cargo.toml index 7dfc8fd04d..621d4a1ac4 100644 --- a/substrate/srml/assets/Cargo.toml +++ b/substrate/srml/assets/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false } # Needed for various traits. In our case, `OnFinalise`. primitives = { package = "sr-primitives", path = "../../core/sr-primitives", default-features = false } @@ -23,7 +23,7 @@ runtime_io = { package = "sr-io", path = "../../core/sr-io" } [features] default = ["std"] std = [ - "serde/std", + "serde", "parity-codec/std", "primitives/std", "srml-support/std", diff --git a/substrate/srml/aura/Cargo.toml b/substrate/srml/aura/Cargo.toml index 49c371cd45..bb8af29e8d 100644 --- a/substrate/srml/aura/Cargo.toml +++ b/substrate/srml/aura/Cargo.toml @@ -7,7 +7,8 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" parity-codec = { version = "3.1", default-features = false, features = ["derive"] } -serde = { version = "1.0", default-features = false } +parity-codec-derive = { version = "3.1", default-features = false } +serde = { version = "1.0", optional = true } inherents = { package = "substrate-inherents", path = "../../core/inherents", default-features = false } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } primitives = { package = "sr-primitives", path = "../../core/sr-primitives", default-features = false } @@ -27,7 +28,7 @@ consensus = { package = "srml-consensus", path = "../consensus" } [features] default = ["std"] std = [ - "serde/std", + "serde", "parity-codec/std", "rstd/std", "srml-support/std", diff --git a/substrate/srml/balances/Cargo.toml b/substrate/srml/balances/Cargo.toml index 1cb75c94ed..c8d5d152a3 100644 --- a/substrate/srml/balances/Cargo.toml +++ b/substrate/srml/balances/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "3.1", default-features = false, features = ["derive"] } substrate-keyring = { path = "../../core/keyring", optional = true } @@ -22,7 +22,7 @@ substrate-primitives = { path = "../../core/primitives" } [features] default = ["std"] std = [ - "serde/std", + "serde", "safe-mix/std", "substrate-keyring", "parity-codec/std", diff --git a/substrate/srml/balances/src/lib.rs b/substrate/srml/balances/src/lib.rs index f5168240a7..2fe797de2d 100644 --- a/substrate/srml/balances/src/lib.rs +++ b/substrate/srml/balances/src/lib.rs @@ -29,7 +29,8 @@ use rstd::{cmp, result}; use parity_codec::{Codec, Encode, Decode}; use srml_support::{StorageValue, StorageMap, Parameter, decl_event, decl_storage, decl_module, ensure}; use srml_support::traits::{ - UpdateBalanceOutcome, Currency, EnsureAccountLiquid, OnFreeBalanceZero, TransferAsset, WithdrawReason, ArithmeticType + UpdateBalanceOutcome, Currency, OnFreeBalanceZero, TransferAsset, + WithdrawReason, WithdrawReasons, ArithmeticType, LockIdentifier, LockableCurrency }; use srml_support::dispatch::Result; use primitives::traits::{ @@ -53,9 +54,6 @@ pub trait Trait: system::Trait { /// Handler for when a new account is created. type OnNewAccount: OnNewAccount; - /// A function that returns true iff a given account can transfer its funds to another account. - type EnsureAccountLiquid: EnsureAccountLiquid; - /// The overarching event type. type Event: From> + Into<::Event>; } @@ -99,6 +97,15 @@ impl> VestingSchedule { } } +#[derive(Encode, Decode, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct BalanceLock { + pub id: LockIdentifier, + pub amount: Balance, + pub until: BlockNumber, + pub reasons: WithdrawReasons, +} + decl_storage! { trait Store for Module as Balances { /// The total amount of stake on the system. @@ -160,6 +167,9 @@ decl_storage! { /// `system::AccountNonce` is also deleted if `FreeBalance` is also zero (it also gets /// collapsed to zero if it ever becomes less than `ExistentialDeposit`. pub ReservedBalance get(reserved_balance): map T::AccountId => T::Balance; + + /// Any liquidity locks on some account balances. + pub Locks get(locks): map T::AccountId => Vec>; } add_extra_genesis { config(balances): Vec<(T::AccountId, T::Balance)>; @@ -285,16 +295,14 @@ impl Module { None => return Err("got overflow after adding a fee to value"), }; - let vesting_balance = Self::vesting_balance(transactor); let new_from_balance = match from_balance.checked_sub(&liability) { None => return Err("balance too low to send value"), - Some(b) if b < vesting_balance => return Err("vesting balance too high to send value"), Some(b) => b, }; if would_create && value < Self::existential_deposit() { return Err("value too low to create account"); } - T::EnsureAccountLiquid::ensure_account_can_withdraw(transactor, value, WithdrawReason::Transfer)?; + Self::ensure_account_can_withdraw(transactor, value, WithdrawReason::Transfer, new_from_balance)?; // NOTE: total stake being stored in the same type means that this could never overflow // but better to be safe than sorry. @@ -313,7 +321,6 @@ impl Module { Ok(()) } - /// Register a new account (with existential balance). fn new_account(who: &T::AccountId, balance: T::Balance) { T::OnNewAccount::on_new_account(&who); @@ -329,6 +336,7 @@ impl Module { fn on_free_too_low(who: &T::AccountId) { Self::decrease_total_stake_by(Self::free_balance(who)); >::remove(who); + >::remove(who); T::OnFreeBalanceZero::on_free_balance_zero(who); @@ -359,6 +367,35 @@ impl Module { >::put(v); } } + + /// Returns `Ok` iff the account is able to make a withdrawal of the given amount + /// for the given reason. + /// + /// `Err(...)` with the reason why not otherwise. + pub fn ensure_account_can_withdraw( + who: &T::AccountId, + _amount: T::Balance, + reason: WithdrawReason, + new_balance: T::Balance, + ) -> Result { + match reason { + WithdrawReason::Reserve | WithdrawReason::Transfer if Self::vesting_balance(who) > new_balance => + return Err("vesting balance too high to send value"), + _ => {} + } + let locks = Self::locks(who); + if locks.is_empty() { + return Ok(()) + } + let now = >::block_number(); + if Self::locks(who).into_iter() + .all(|l| now >= l.until || new_balance >= l.amount || !l.reasons.contains(reason)) + { + Ok(()) + } else { + Err("account liquidity restrictions prevent withdrawal") + } + } } impl Currency for Module @@ -376,11 +413,11 @@ where } fn can_reserve(who: &T::AccountId, value: Self::Balance) -> bool { - if T::EnsureAccountLiquid::ensure_account_can_withdraw(who, value, WithdrawReason::Reserve).is_ok() { - Self::free_balance(who) >= value - } else { - false - } + Self::free_balance(who) + .checked_sub(&value) + .map_or(false, |new_balance| + Self::ensure_account_can_withdraw(who, value, WithdrawReason::Reserve, new_balance).is_ok() + ) } fn total_issuance() -> Self::Balance { @@ -429,9 +466,10 @@ where if b < value { return Err("not enough free funds") } - T::EnsureAccountLiquid::ensure_account_can_withdraw(who, value, WithdrawReason::Reserve)?; + let new_balance = b - value; + Self::ensure_account_can_withdraw(who, value, WithdrawReason::Reserve, new_balance)?; Self::set_reserved_balance(who, Self::reserved_balance(who) + value); - Self::set_free_balance(who, b - value); + Self::set_free_balance(who, new_balance); Ok(()) } @@ -479,6 +517,80 @@ where } } +impl LockableCurrency for Module +where + T::Balance: MaybeSerializeDebug +{ + type Moment = T::BlockNumber; + + fn set_lock( + id: LockIdentifier, + who: &T::AccountId, + amount: T::Balance, + until: T::BlockNumber, + reasons: WithdrawReasons, + ) { + let now = >::block_number(); + let mut new_lock = Some(BalanceLock { id, amount, until, reasons }); + let mut locks = Self::locks(who).into_iter().filter_map(|l| + if l.id == id { + new_lock.take() + } else if l.until > now { + Some(l) + } else { + None + }).collect::>(); + if let Some(lock) = new_lock { + locks.push(lock) + } + >::insert(who, locks); + } + + fn extend_lock( + id: LockIdentifier, + who: &T::AccountId, + amount: T::Balance, + until: T::BlockNumber, + reasons: WithdrawReasons, + ) { + let now = >::block_number(); + let mut new_lock = Some(BalanceLock { id, amount, until, reasons }); + let mut locks = Self::locks(who).into_iter().filter_map(|l| + if l.id == id { + new_lock.take().map(|nl| { + BalanceLock { + id: l.id, + amount: l.amount.max(nl.amount), + until: l.until.max(nl.until), + reasons: l.reasons | nl.reasons, + } + }) + } else if l.until > now { + Some(l) + } else { + None + }).collect::>(); + if let Some(lock) = new_lock { + locks.push(lock) + } + >::insert(who, locks); + } + + fn remove_lock( + id: LockIdentifier, + who: &T::AccountId, + ) { + let now = >::block_number(); + let locks = Self::locks(who).into_iter().filter_map(|l| + if l.until > now && l.id != id { + Some(l) + } else { + None + }).collect::>(); + >::insert(who, locks); + } +} + impl TransferAsset for Module { type Amount = T::Balance; @@ -487,10 +599,11 @@ impl TransferAsset for Module { } fn withdraw(who: &T::AccountId, value: T::Balance, reason: WithdrawReason) -> Result { - T::EnsureAccountLiquid::ensure_account_can_withdraw(who, value, reason)?; let b = Self::free_balance(who); ensure!(b >= value, "account has too few funds"); - Self::set_free_balance(who, b - value); + let new_balance = b - value; + Self::ensure_account_can_withdraw(who, value, reason, new_balance)?; + Self::set_free_balance(who, new_balance); Self::decrease_total_stake_by(value); Ok(()) } diff --git a/substrate/srml/balances/src/mock.rs b/substrate/srml/balances/src/mock.rs index 6dcff18c6e..85ae7a131e 100644 --- a/substrate/srml/balances/src/mock.rs +++ b/substrate/srml/balances/src/mock.rs @@ -49,7 +49,6 @@ impl Trait for Runtime { type Balance = u64; type OnFreeBalanceZero = (); type OnNewAccount = (); - type EnsureAccountLiquid = (); type Event = (); } diff --git a/substrate/srml/balances/src/tests.rs b/substrate/srml/balances/src/tests.rs index 272e4f5f10..1aa76a62c7 100644 --- a/substrate/srml/balances/src/tests.rs +++ b/substrate/srml/balances/src/tests.rs @@ -21,7 +21,136 @@ use super::*; use mock::{Balances, ExtBuilder, Runtime, System}; use runtime_io::with_externalities; -use srml_support::{assert_noop, assert_ok, assert_err}; +use srml_support::{ + assert_noop, assert_ok, assert_err, + traits::{LockableCurrency, LockIdentifier, WithdrawReason, WithdrawReasons, Currency, TransferAsset} +}; + +const ID_1: LockIdentifier = *b"1 "; +const ID_2: LockIdentifier = *b"2 "; +const ID_3: LockIdentifier = *b"3 "; + +#[test] +fn basic_locking_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + assert_eq!(Balances::free_balance(&1), 10); + Balances::set_lock(ID_1, &1, 9, u64::max_value(), WithdrawReasons::all()); + assert_noop!(>::transfer(&1, &2, 5), "account liquidity restrictions prevent withdrawal"); + }); +} + +#[test] +fn partial_locking_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1)); + }); +} + +#[test] +fn lock_removal_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + Balances::set_lock(ID_1, &1, u64::max_value(), u64::max_value(), WithdrawReasons::all()); + Balances::remove_lock(ID_1, &1); + assert_ok!(>::transfer(&1, &2, 1)); + }); +} + +#[test] +fn lock_replacement_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + Balances::set_lock(ID_1, &1, u64::max_value(), u64::max_value(), WithdrawReasons::all()); + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1)); + }); +} + +#[test] +fn double_locking_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + Balances::set_lock(ID_2, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1)); + }); +} + +#[test] +fn combination_locking_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + Balances::set_lock(ID_1, &1, u64::max_value(), 0, WithdrawReasons::none()); + Balances::set_lock(ID_2, &1, 0, u64::max_value(), WithdrawReasons::none()); + Balances::set_lock(ID_3, &1, 0, 0, WithdrawReasons::all()); + assert_ok!(>::transfer(&1, &2, 1)); + }); +} + +#[test] +fn lock_value_extension_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + Balances::set_lock(ID_1, &1, 5, u64::max_value(), WithdrawReasons::all()); + assert_noop!(>::transfer(&1, &2, 6), "account liquidity restrictions prevent withdrawal"); + Balances::extend_lock(ID_1, &1, 2, u64::max_value(), WithdrawReasons::all()); + assert_noop!(>::transfer(&1, &2, 6), "account liquidity restrictions prevent withdrawal"); + Balances::extend_lock(ID_1, &1, 8, u64::max_value(), WithdrawReasons::all()); + assert_noop!(>::transfer(&1, &2, 3), "account liquidity restrictions prevent withdrawal"); + }); +} + +#[test] +fn lock_reasons_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + Balances::set_lock(ID_1, &1, 10, u64::max_value(), WithdrawReason::Transfer.into()); + assert_noop!(>::transfer(&1, &2, 1), "account liquidity restrictions prevent withdrawal"); + assert_ok!(>::reserve(&1, 1)); + assert_ok!(>::withdraw(&1, 1, WithdrawReason::TransactionPayment)); + + Balances::set_lock(ID_1, &1, 10, u64::max_value(), WithdrawReason::Reserve.into()); + assert_ok!(>::transfer(&1, &2, 1)); + assert_noop!(>::reserve(&1, 1), "account liquidity restrictions prevent withdrawal"); + assert_ok!(>::withdraw(&1, 1, WithdrawReason::TransactionPayment)); + + Balances::set_lock(ID_1, &1, 10, u64::max_value(), WithdrawReason::TransactionPayment.into()); + assert_ok!(>::transfer(&1, &2, 1)); + assert_ok!(>::reserve(&1, 1)); + assert_noop!(>::withdraw(&1, 1, WithdrawReason::TransactionPayment), "account liquidity restrictions prevent withdrawal"); + }); +} + +#[test] +fn lock_block_number_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + Balances::set_lock(ID_1, &1, 10, 2, WithdrawReasons::all()); + assert_noop!(>::transfer(&1, &2, 1), "account liquidity restrictions prevent withdrawal"); + + System::set_block_number(2); + assert_ok!(>::transfer(&1, &2, 1)); + }); +} + +#[test] +fn lock_block_number_extension_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + Balances::set_lock(ID_1, &1, 10, 2, WithdrawReasons::all()); + assert_noop!(>::transfer(&1, &2, 6), "account liquidity restrictions prevent withdrawal"); + Balances::extend_lock(ID_1, &1, 10, 1, WithdrawReasons::all()); + assert_noop!(>::transfer(&1, &2, 6), "account liquidity restrictions prevent withdrawal"); + System::set_block_number(2); + Balances::extend_lock(ID_1, &1, 10, 8, WithdrawReasons::all()); + assert_noop!(>::transfer(&1, &2, 3), "account liquidity restrictions prevent withdrawal"); + }); +} + +#[test] +fn lock_reasons_extension_should_work() { + with_externalities(&mut ExtBuilder::default().monied(true).build(), || { + Balances::set_lock(ID_1, &1, 10, 10, WithdrawReason::Transfer.into()); + assert_noop!(>::transfer(&1, &2, 6), "account liquidity restrictions prevent withdrawal"); + Balances::extend_lock(ID_1, &1, 10, 10, WithdrawReasons::none()); + assert_noop!(>::transfer(&1, &2, 6), "account liquidity restrictions prevent withdrawal"); + Balances::extend_lock(ID_1, &1, 10, 10, WithdrawReason::Reserve.into()); + assert_noop!(>::transfer(&1, &2, 6), "account liquidity restrictions prevent withdrawal"); + }); +} #[test] fn default_indexing_on_new_accounts_should_not_work2() { @@ -464,4 +593,4 @@ fn extra_balance_should_transfer() { assert_ok!(Balances::transfer(Some(1).into(), 2, 256 * 5)); // Account 1 can send extra units gained } ); -} \ No newline at end of file +} diff --git a/substrate/srml/consensus/Cargo.toml b/substrate/srml/consensus/Cargo.toml index 075980fc5f..105f978c63 100644 --- a/substrate/srml/consensus/Cargo.toml +++ b/substrate/srml/consensus/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false, features = ["derive"] } substrate-primitives = { path = "../../core/primitives", default-features = false } @@ -22,7 +22,7 @@ runtime_io = { package = "sr-io", path = "../../core/sr-io" } [features] default = ["std"] std = [ - "serde/std", + "serde", "serde_derive", "parity-codec/std", "substrate-primitives/std", diff --git a/substrate/srml/contract/Cargo.toml b/substrate/srml/contract/Cargo.toml index 05d9a8e616..d0c851e26e 100644 --- a/substrate/srml/contract/Cargo.toml +++ b/substrate/srml/contract/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } pwasm-utils = { version = "0.6.1", default-features = false } parity-codec = { version = "3.1", default-features = false, features = ["derive"] } @@ -30,7 +30,7 @@ consensus = { package = "srml-consensus", path = "../consensus" } [features] default = ["std"] std = [ - "serde/std", + "serde", "serde_derive", "parity-codec/std", "substrate-primitives/std", diff --git a/substrate/srml/contract/src/exec.rs b/substrate/srml/contract/src/exec.rs index 046d107533..615fdc51e2 100644 --- a/substrate/srml/contract/src/exec.rs +++ b/substrate/srml/contract/src/exec.rs @@ -20,8 +20,8 @@ use crate::gas::{GasMeter, Token, approx_gas_for_balance}; use rstd::prelude::*; use runtime_primitives::traits::{CheckedAdd, CheckedSub, Zero}; +use srml_support::traits::WithdrawReason; use timestamp; -use srml_support::traits::EnsureAccountLiquid; pub type BalanceOf = ::Balance; pub type AccountIdOf = ::AccountId; @@ -520,7 +520,7 @@ fn transfer<'a, T: Trait, V: Vm, L: Loader>( if would_create && value < ctx.config.existential_deposit { return Err("value too low to create account"); } - ::EnsureAccountLiquid::ensure_account_liquid(transactor)?; + >::ensure_account_can_withdraw(transactor, value, WithdrawReason::Transfer, new_from_balance)?; let new_to_balance = match to_balance.checked_add(&value) { Some(b) => b, diff --git a/substrate/srml/contract/src/tests.rs b/substrate/srml/contract/src/tests.rs index 1d1141c2f4..7a7137c675 100644 --- a/substrate/srml/contract/src/tests.rs +++ b/substrate/srml/contract/src/tests.rs @@ -77,7 +77,6 @@ impl balances::Trait for Test { type Balance = u64; type OnFreeBalanceZero = Contract; type OnNewAccount = (); - type EnsureAccountLiquid = (); type Event = MetaEvent; } impl timestamp::Trait for Test { diff --git a/substrate/srml/council/Cargo.toml b/substrate/srml/council/Cargo.toml index 3e6f41d2a9..868ec3bcff 100644 --- a/substrate/srml/council/Cargo.toml +++ b/substrate/srml/council/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "3.1", default-features = false } parity-codec-derive = { version = "3.1", default-features = false } @@ -29,6 +29,7 @@ std = [ "parity-codec-derive/std", "substrate-primitives/std", "rstd/std", + "serde", "runtime_io/std", "srml-support/std", "primitives/std", diff --git a/substrate/srml/council/src/lib.rs b/substrate/srml/council/src/lib.rs index 20c95b2bd9..5f5709656d 100644 --- a/substrate/srml/council/src/lib.rs +++ b/substrate/srml/council/src/lib.rs @@ -76,7 +76,6 @@ mod tests { type Balance = u64; type OnFreeBalanceZero = (); type OnNewAccount = (); - type EnsureAccountLiquid = (); type Event = Event; } impl democracy::Trait for Test { diff --git a/substrate/srml/democracy/Cargo.toml b/substrate/srml/democracy/Cargo.toml index 23ca4221cf..29b70938f2 100644 --- a/substrate/srml/democracy/Cargo.toml +++ b/substrate/srml/democracy/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "3.1", default-features = false, features = ["derive"] } @@ -23,7 +23,7 @@ balances = { package = "srml-balances", path = "../balances" } [features] default = ["std"] std = [ - "serde/std", + "serde", "serde_derive", "safe-mix/std", "parity-codec/std", diff --git a/substrate/srml/democracy/src/lib.rs b/substrate/srml/democracy/src/lib.rs index e421fdeb0a..1c06a43ff9 100644 --- a/substrate/srml/democracy/src/lib.rs +++ b/substrate/srml/democracy/src/lib.rs @@ -20,17 +20,19 @@ use rstd::prelude::*; use rstd::result; -use primitives::traits::{Zero, As}; +use primitives::traits::{Zero, As, Bounded}; use parity_codec::{Encode, Decode}; use srml_support::{StorageValue, StorageMap, Parameter, Dispatchable, IsSubType}; use srml_support::{decl_module, decl_storage, decl_event, ensure}; -use srml_support::traits::{Currency, OnFreeBalanceZero, EnsureAccountLiquid, WithdrawReason, ArithmeticType}; +use srml_support::traits::{Currency, LockableCurrency, WithdrawReason, ArithmeticType, LockIdentifier}; use srml_support::dispatch::Result; use system::ensure_signed; mod vote_threshold; pub use vote_threshold::{Approved, VoteThreshold}; +const DEMOCRACY_ID: LockIdentifier = *b"democrac"; + /// A proposal index. pub type PropIndex = u32; /// A referendum index. @@ -68,7 +70,7 @@ impl Vote { type BalanceOf = <::Currency as ArithmeticType>::Type; pub trait Trait: system::Trait + Sized { - type Currency: ArithmeticType + Currency<::AccountId, Balance=BalanceOf>; + type Currency: ArithmeticType + LockableCurrency<::AccountId, Moment=Self::BlockNumber, Balance=BalanceOf>; type Proposal: Parameter + Dispatchable + IsSubType>; @@ -208,9 +210,6 @@ decl_storage! { /// Queue of successful referenda to be dispatched. pub DispatchQueue get(dispatch_queue): map T::BlockNumber => Vec>; - /// The block at which the `who`'s funds become liquid. - pub Bondage get(bondage): map T::AccountId => T::BlockNumber; - /// Get the voters for the current proposal. pub VotersFor get(voters_for): map ReferendumIndex => Vec; @@ -371,7 +370,7 @@ impl Module { // lock should they win... let locked_until = now + lock_period * T::BlockNumber::sa((vote.multiplier()) as u64); // ...extend their bondage until at least then. - >::mutate(a, |b| if *b < locked_until { *b = locked_until }); + T::Currency::extend_lock(DEMOCRACY_ID, &a, Bounded::max_value(), locked_until, WithdrawReason::Transfer.into()); } Self::clear_referendum(index); @@ -409,35 +408,6 @@ impl Module { } } -impl OnFreeBalanceZero for Module { - fn on_free_balance_zero(who: &T::AccountId) { - >::remove(who); - } -} - -impl EnsureAccountLiquid> for Module { - fn ensure_account_liquid(who: &T::AccountId) -> Result { - if Self::bondage(who) > >::block_number() { - Err("stash accounts are not liquid") - } else { - Ok(()) - } - } - fn ensure_account_can_withdraw( - who: &T::AccountId, - _value: BalanceOf, - reason: WithdrawReason, - ) -> Result { - if reason == WithdrawReason::TransactionPayment - || Self::bondage(who) <= >::block_number() - { - Ok(()) - } else { - Err("cannot transfer voting funds") - } - } -} - #[cfg(test)] mod tests { use super::*; @@ -447,6 +417,7 @@ mod tests { use primitives::BuildStorage; use primitives::traits::{BlakeTwo256, IdentityLookup}; use primitives::testing::{Digest, DigestItem, Header}; + use balances::BalanceLock; const AYE: Vote = Vote(-1); const NAY: Vote = Vote(0); @@ -482,7 +453,6 @@ mod tests { type Balance = u64; type OnFreeBalanceZero = (); type OnNewAccount = (); - type EnsureAccountLiquid = (); type Event = (); } impl Trait for Test { @@ -790,12 +760,12 @@ mod tests { assert_eq!(Democracy::end_block(System::block_number()), Ok(())); - assert_eq!(Democracy::bondage(1), 0); - assert_eq!(Democracy::bondage(2), 6); - assert_eq!(Democracy::bondage(3), 5); - assert_eq!(Democracy::bondage(4), 4); - assert_eq!(Democracy::bondage(5), 3); - assert_eq!(Democracy::bondage(6), 0); + assert_eq!(Balances::locks(1), vec![]); + assert_eq!(Balances::locks(2), vec![BalanceLock { id: DEMOCRACY_ID, amount: u64::max_value(), until: 6, reasons: WithdrawReason::Transfer.into() }]); + assert_eq!(Balances::locks(3), vec![BalanceLock { id: DEMOCRACY_ID, amount: u64::max_value(), until: 5, reasons: WithdrawReason::Transfer.into() }]); + assert_eq!(Balances::locks(4), vec![BalanceLock { id: DEMOCRACY_ID, amount: u64::max_value(), until: 4, reasons: WithdrawReason::Transfer.into() }]); + assert_eq!(Balances::locks(5), vec![BalanceLock { id: DEMOCRACY_ID, amount: u64::max_value(), until: 3, reasons: WithdrawReason::Transfer.into() }]); + assert_eq!(Balances::locks(6), vec![]); System::set_block_number(2); assert_eq!(Democracy::end_block(System::block_number()), Ok(())); diff --git a/substrate/srml/example/Cargo.toml b/substrate/srml/example/Cargo.toml index beaafbeb21..c1cf286346 100644 --- a/substrate/srml/example/Cargo.toml +++ b/substrate/srml/example/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false } srml-support = { path = "../support", default-features = false } system = { package = "srml-system", path = "../system", default-features = false } @@ -20,7 +20,7 @@ sr-primitives = { path = "../../core/sr-primitives" } [features] default = ["std"] std = [ - "serde/std", + "serde", "parity-codec/std", "sr-primitives/std", "srml-support/std", diff --git a/substrate/srml/example/src/lib.rs b/substrate/srml/example/src/lib.rs index 4f4e0b96a0..8ab4513296 100644 --- a/substrate/srml/example/src/lib.rs +++ b/substrate/srml/example/src/lib.rs @@ -280,7 +280,6 @@ mod tests { type Balance = u64; type OnFreeBalanceZero = (); type OnNewAccount = (); - type EnsureAccountLiquid = (); type Event = (); } impl Trait for Test { diff --git a/substrate/srml/executive/Cargo.toml b/substrate/srml/executive/Cargo.toml index fe195acc21..04f6526666 100644 --- a/substrate/srml/executive/Cargo.toml +++ b/substrate/srml/executive/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } runtime_io = { package = "sr-io", path = "../../core/sr-io", default-features = false } @@ -26,7 +26,7 @@ default = ["std"] std = [ "rstd/std", "srml-support/std", - "serde/std", + "serde", "parity-codec/std", "primitives/std", "runtime_io/std", diff --git a/substrate/srml/executive/src/lib.rs b/substrate/srml/executive/src/lib.rs index c6817c2554..567c157f1e 100644 --- a/substrate/srml/executive/src/lib.rs +++ b/substrate/srml/executive/src/lib.rs @@ -319,7 +319,6 @@ mod tests { type Balance = u64; type OnFreeBalanceZero = (); type OnNewAccount = (); - type EnsureAccountLiquid = (); type Event = MetaEvent; } impl fees::Trait for Runtime { diff --git a/substrate/srml/fees/Cargo.toml b/substrate/srml/fees/Cargo.toml index 7f49956167..d29d77c748 100644 --- a/substrate/srml/fees/Cargo.toml +++ b/substrate/srml/fees/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false } parity-codec-derive = { version = "3.1", default-features = false } primitives = { package = "substrate-primitives", path = "../../core/primitives", default-features = false } @@ -19,7 +19,7 @@ system = { package = "srml-system", path = "../system", default-features = false [features] default = ["std"] std = [ - "serde/std", + "serde", "parity-codec/std", "parity-codec-derive/std", "primitives/std", diff --git a/substrate/srml/grandpa/Cargo.toml b/substrate/srml/grandpa/Cargo.toml index e7a1b70105..ac4ea857de 100644 --- a/substrate/srml/grandpa/Cargo.toml +++ b/substrate/srml/grandpa/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] #hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false, features = ["derive"] } substrate-primitives = { path = "../../core/primitives", default-features = false } @@ -24,7 +24,7 @@ runtime_io = { package = "sr-io", path = "../../core/sr-io" } [features] default = ["std"] std = [ - "serde/std", + "serde", "serde_derive", "parity-codec/std", "substrate-primitives/std", diff --git a/substrate/srml/indices/Cargo.toml b/substrate/srml/indices/Cargo.toml index 7182514b07..399c7b1bd0 100644 --- a/substrate/srml/indices/Cargo.toml +++ b/substrate/srml/indices/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "3.1", default-features = false } parity-codec-derive = { version = "3.1", default-features = false } @@ -24,7 +24,7 @@ ref_thread_local = "0.0" [features] default = ["std"] std = [ - "serde/std", + "serde", "safe-mix/std", "substrate-keyring", "parity-codec/std", diff --git a/substrate/srml/indices/src/lib.rs b/substrate/srml/indices/src/lib.rs index c63f819d35..fc9f6a66dd 100644 --- a/substrate/srml/indices/src/lib.rs +++ b/substrate/srml/indices/src/lib.rs @@ -198,4 +198,7 @@ impl StaticLookup for Module { fn lookup(a: Self::Source) -> result::Result { Self::lookup_address(a).ok_or("invalid account index") } + fn unlookup(a: Self::Target) -> Self::Source { + address::Address::Id(a) + } } diff --git a/substrate/srml/session/Cargo.toml b/substrate/srml/session/Cargo.toml index 8fdd08f1ae..8412505d32 100644 --- a/substrate/srml/session/Cargo.toml +++ b/substrate/srml/session/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "3.1", default-features = false } parity-codec-derive = { version = "3.1", default-features = false } @@ -24,7 +24,7 @@ runtime_io = { package = "sr-io", path = "../../core/sr-io" } [features] default = ["std"] std = [ - "serde/std", + "serde", "safe-mix/std", "parity-codec/std", "parity-codec-derive/std", diff --git a/substrate/srml/session/src/lib.rs b/substrate/srml/session/src/lib.rs index 13f2a4cd0a..63188d5bf6 100644 --- a/substrate/srml/session/src/lib.rs +++ b/substrate/srml/session/src/lib.rs @@ -50,7 +50,7 @@ macro_rules! impl_session_change { for_each_tuple!(impl_session_change); -pub trait Trait: timestamp::Trait { +pub trait Trait: timestamp::Trait + consensus::Trait { type ConvertAccountIdToSessionKey: Convert; type OnSessionChange: OnSessionChange; type Event: From> + Into<::Event>; diff --git a/substrate/srml/staking/Cargo.toml b/substrate/srml/staking/Cargo.toml index 5fc70e27ea..c548b3a2ef 100644 --- a/substrate/srml/staking/Cargo.toml +++ b/substrate/srml/staking/Cargo.toml @@ -6,11 +6,12 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "3.1", default-features = false, features = ["derive"] } substrate-keyring = { path = "../../core/keyring", optional = true } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } +runtime_io = { package = "sr-io", path = "../../core/sr-io", default-features = false } primitives = { package = "sr-primitives", path = "../../core/sr-primitives", default-features = false } srml-support = { path = "../support", default-features = false } consensus = { package = "srml-consensus", path = "../consensus", default-features = false } @@ -19,18 +20,18 @@ session = { package = "srml-session", path = "../session", default-features = fa [dev-dependencies] substrate-primitives = { path = "../../core/primitives" } -runtime_io = { package = "sr-io", path = "../../core/sr-io" } timestamp = { package = "srml-timestamp", path = "../timestamp" } balances = { package = "srml-balances", path = "../balances" } [features] default = ["std"] std = [ - "serde/std", + "serde", "safe-mix/std", "substrate-keyring", "parity-codec/std", "rstd/std", + "runtime_io/std", "srml-support/std", "primitives/std", "session/std", diff --git a/substrate/srml/staking/src/lib.rs b/substrate/srml/staking/src/lib.rs index 71a7f27ce1..fb2076af81 100644 --- a/substrate/srml/staking/src/lib.rs +++ b/substrate/srml/staking/src/lib.rs @@ -20,18 +20,20 @@ #![cfg_attr(not(feature = "std"), no_std)] +#[cfg(feature = "std")] +use runtime_io::with_storage; use rstd::{prelude::*, result}; use parity_codec::{HasCompact, Encode, Decode}; use srml_support::{StorageValue, StorageMap, EnumerableStorageMap, dispatch::Result}; use srml_support::{decl_module, decl_event, decl_storage, ensure}; use srml_support::traits::{ - Currency, OnDilution, EnsureAccountLiquid, OnFreeBalanceZero, WithdrawReason, ArithmeticType + Currency, OnDilution, OnFreeBalanceZero, ArithmeticType, + LockIdentifier, LockableCurrency, WithdrawReasons }; use session::OnSessionChange; use primitives::Perbill; -use primitives::traits::{Zero, One, As, StaticLookup, Saturating}; +use primitives::traits::{Zero, One, As, StaticLookup, Saturating, Bounded}; use system::ensure_signed; - mod mock; mod tests; @@ -111,7 +113,11 @@ pub struct StakingLedger>, } -impl StakingLedger { +impl< + AccountId, + Balance: HasCompact + Copy + Saturating, + BlockNumber: HasCompact + PartialOrd +> StakingLedger { /// Remove entries from `unlocking` that are sufficiently old and reduce the /// total by the sum of their balances. fn consolidate_unlocked(self, current_era: BlockNumber) -> Self { @@ -157,7 +163,10 @@ type BalanceOf = <::Currency as ArithmeticType>::Type; pub trait Trait: system::Trait + session::Trait { /// The staking balance. - type Currency: ArithmeticType + Currency>; + type Currency: + ArithmeticType + + Currency> + + LockableCurrency; /// Some tokens minted. type OnRewardMinted: OnDilution>; @@ -166,6 +175,8 @@ pub trait Trait: system::Trait + session::Trait { type Event: From> + Into<::Event>; } +const STAKING_ID: LockIdentifier = *b"staking "; + decl_storage! { trait Store for Module as Staking { @@ -192,21 +203,9 @@ decl_storage! { pub Invulnerables get(invulnerables) config(): Vec; /// Map from all locked "stash" accounts to the controller account. - pub Bonded get(bonded) build(|config: &GenesisConfig| { - config.stakers.iter().map(|(stash, controller, _)| (stash.clone(), controller.clone())).collect::>() - }): map T::AccountId => Option; + pub Bonded get(bonded): map T::AccountId => Option; /// Map from all (unlocked) "controller" accounts to the info regarding the staking. - pub Ledger get(ledger) build(|config: &GenesisConfig| { - config.stakers.iter().map(|(stash, controller, value)| ( - controller.clone(), - StakingLedger { - stash: stash.clone(), - total: *value, - active: *value, - unlocking: Vec::, T::BlockNumber>>::new(), - }, - )).collect::>() - }): map T::AccountId => Option, T::BlockNumber>>; + pub Ledger get(ledger): map T::AccountId => Option, T::BlockNumber>>; /// Where the reward payment should be made. pub Payee get(payee): map T::AccountId => RewardDestination; @@ -214,12 +213,7 @@ decl_storage! { /// The set of keys are all controllers that want to validate. /// /// The values are the preferences that a validator has. - pub Validators get(validators) build(|config: &GenesisConfig| { - config.stakers.iter().map(|(_stash, controller, _value)| ( - controller.clone(), - ValidatorPrefs::>::default(), - )).collect::>() - }): linked_map T::AccountId => ValidatorPrefs>; + pub Validators get(validators): linked_map T::AccountId => ValidatorPrefs>; /// The set of keys are all controllers that want to nominate. /// @@ -228,16 +222,7 @@ decl_storage! { /// Nominators for a particular account that is in action right now. You can't iterate through validators here, /// but you can find them in the `sessions` module. - pub Stakers get(stakers) build(|config: &GenesisConfig| { - config.stakers.iter().map(|(_stash, controller, value)| ( - controller.clone(), - Exposure { - total: *value, - own: *value, - others: Vec::>::new(), - }, - )).collect::>() - }): map T::AccountId => Exposure>; + pub Stakers get(stakers): map T::AccountId => Exposure>; // The historical validators and their nominations for a given era. Stored as a trie root of the mapping // `T::AccountId` => `Exposure>`, which is just the contents of `Stakers`, @@ -282,7 +267,16 @@ decl_storage! { } add_extra_genesis { config(stakers): Vec<(T::AccountId, T::AccountId, BalanceOf)>; - } + build(|storage: &mut primitives::StorageOverlay, _: &mut primitives::ChildrenStorageOverlay, config: &GenesisConfig| { + with_storage(storage, || { + for &(ref stash, ref controller, balance) in &config.stakers { + let _ = >::bond(T::Origin::from(Some(stash.clone()).into()), T::Lookup::unlookup(controller.clone()), balance, RewardDestination::Staked); + let _ = >::validate(T::Origin::from(Some(controller.clone()).into()), Default::default()); + } + >::select_validators(); + }); + }); + } } decl_module! { @@ -307,7 +301,7 @@ decl_module! { let stash_balance = T::Currency::free_balance(&stash); let value = value.min(stash_balance); - >::insert(&controller, StakingLedger { stash, total: value, active: value, unlocking: vec![] }); + Self::update_ledger(&controller, StakingLedger { stash, total: value, active: value, unlocking: vec![] }); >::insert(&controller, payee); } @@ -326,7 +320,7 @@ decl_module! { let extra = (stash_balance - ledger.total).min(max_additional); ledger.total += extra; ledger.active += extra; - >::insert(&controller, ledger); + Self::update_ledger(&controller, ledger); } } @@ -358,7 +352,7 @@ decl_module! { let era = Self::current_era() + Self::bonding_duration(); ledger.unlocking.push(UnlockChunk { value, era }); - >::insert(&controller, ledger); + Self::update_ledger(&controller, ledger); } } @@ -373,7 +367,8 @@ decl_module! { fn withdraw_unbonded(origin) { let controller = ensure_signed(origin)?; let ledger = Self::ledger(&controller).ok_or("not a controller")?; - >::insert(&controller, ledger.consolidate_unlocked(Self::current_era())); + let ledger = ledger.consolidate_unlocked(Self::current_era()); + Self::update_ledger(&controller, ledger); } /// Declare the desire to validate for the origin controller. @@ -503,8 +498,14 @@ impl Module { Self::stakers(who).total } - // PUBLIC MUTABLES (DANGEROUS) - + // MUTABLES (DANGEROUS) + + /// Update the ledger for a controller. This will also update the stash lock. + fn update_ledger(controller: &T::AccountId, ledger: StakingLedger, T::BlockNumber>) { + T::Currency::set_lock(STAKING_ID, &ledger.stash, ledger.total, T::BlockNumber::max_value(), WithdrawReasons::all()); + >::insert(controller, ledger); + } + /// Slash a given validator by a specific amount. Removes the slash from their balance by preference, /// and reduces the nominators' balance if needed. fn slash_validator(v: &T::AccountId, slash: BalanceOf) { @@ -540,13 +541,13 @@ impl Module { RewardDestination::Stash => { let _ = Self::ledger(who).map(|l| T::Currency::reward(&l.stash, amount)); } - RewardDestination::Staked => >::mutate(who, |ml| { - if let Some(l) = ml.as_mut() { + RewardDestination::Staked => + if let Some(mut l) = Self::ledger(who) { l.active += amount; l.total += amount; let _ = T::Currency::reward(&l.stash, amount); - } - }), + Self::update_ledger(who, l); + }, } } @@ -626,7 +627,17 @@ impl Module { } // Reassign all Stakers. + let slot_stake = Self::select_validators(); + // Update the balances for slashing/rewarding according to the stakes. + >::put(Self::offline_slash() * slot_stake); + >::put(Self::session_reward() * slot_stake); + } + + /// Select a new validator set from the assembled stakers and their role preferences. + /// + /// @returns the new SlotStake value. + fn select_validators() -> BalanceOf { // Map of (would-be) validator account to amount of stake backing it. // First, we pull all validators, together with their stash balance into a Vec (cpu=O(V), mem=O(V)) @@ -658,6 +669,7 @@ impl Module { // cpu=O(V.log(s)) average, O(V.s) worst. let count = Self::validator_count() as usize; let candidates = if candidates.len() <= count { + candidates.sort_unstable_by(|a, b| b.1.total.cmp(&a.1.total)); candidates } else { candidates.into_iter().fold(vec![], |mut winners: Vec<(T::AccountId, Exposure>)>, entry| { @@ -700,9 +712,7 @@ impl Module { &candidates.into_iter().map(|i| i.0).collect::>() ); - // Update the balances for slashing/rewarding according to the stakes. - >::put(Self::offline_slash() * slot_stake); - >::put(Self::session_reward() * slot_stake); + slot_stake } /// Call when a validator is determined to be offline. `count` is the @@ -769,29 +779,6 @@ impl OnSessionChange for Module { } } -impl EnsureAccountLiquid> for Module { - fn ensure_account_liquid(who: &T::AccountId) -> Result { - if >::exists(who) { - Err("stash accounts are not liquid") - } else { - Ok(()) - } - } - fn ensure_account_can_withdraw( - who: &T::AccountId, - amount: BalanceOf, - _reason: WithdrawReason, - ) -> Result { - if let Some(controller) = Self::bonded(who) { - let ledger = Self::ledger(&controller).ok_or("stash without controller")?; - let free_balance = T::Currency::free_balance(&who); - ensure!(free_balance.saturating_sub(ledger.total) > amount, - "stash with too much under management"); - } - Ok(()) - } -} - impl OnFreeBalanceZero for Module { fn on_free_balance_zero(who: &T::AccountId) { if let Some(controller) = >::take(who) { diff --git a/substrate/srml/staking/src/mock.rs b/substrate/srml/staking/src/mock.rs index 244c3c18c2..3ac827ecf8 100644 --- a/substrate/srml/staking/src/mock.rs +++ b/substrate/srml/staking/src/mock.rs @@ -54,7 +54,6 @@ impl balances::Trait for Test { type Balance = u64; type OnFreeBalanceZero = Staking; type OnNewAccount = (); - type EnsureAccountLiquid = Staking; type Event = (); } impl session::Trait for Test { @@ -120,22 +119,22 @@ impl ExtBuilder { self } pub fn build(self) -> runtime_io::TestExternalities { - let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; + let (mut t, mut c) = system::GenesisConfig::::default().build_storage().unwrap(); let balance_factor = if self.existential_deposit > 0 { 256 } else { 1 }; - t.extend(consensus::GenesisConfig::{ + let _ = consensus::GenesisConfig::{ code: vec![], authorities: vec![], - }.build_storage().unwrap().0); - t.extend(session::GenesisConfig::{ + }.assimilate_storage(&mut t, &mut c); + let _ = session::GenesisConfig::{ session_length: self.session_length, validators: vec![10, 20], keys: vec![], - }.build_storage().unwrap().0); - t.extend(balances::GenesisConfig::{ + }.assimilate_storage(&mut t, &mut c); + let _ = balances::GenesisConfig::{ balances: if self.monied { if self.reward > 0 { vec![(1, 10 * balance_factor), (2, 20 * balance_factor), (3, 300 * balance_factor), (4, 400 * balance_factor), (10, balance_factor), (11, balance_factor * 1000), (20, balance_factor), (21, balance_factor * 2000)] @@ -149,8 +148,8 @@ impl ExtBuilder { transfer_fee: 0, creation_fee: 0, vesting: vec![], - }.build_storage().unwrap().0); - t.extend(GenesisConfig::{ + }.assimilate_storage(&mut t, &mut c); + let _ = GenesisConfig::{ sessions_per_era: self.sessions_per_era, current_era: self.current_era, stakers: vec![(11, 10, balance_factor * 1000), (21, 20, balance_factor * 2000)], @@ -163,10 +162,10 @@ impl ExtBuilder { current_offline_slash: 20, offline_slash_grace: 0, invulnerables: vec![], - }.build_storage().unwrap().0); - t.extend(timestamp::GenesisConfig::{ + }.assimilate_storage(&mut t, &mut c); + let _ = timestamp::GenesisConfig::{ period: 5, - }.build_storage().unwrap().0); + }.assimilate_storage(&mut t, &mut c); t.into() } } diff --git a/substrate/srml/staking/src/tests.rs b/substrate/srml/staking/src/tests.rs index 5ca7a46801..4deaee08d5 100644 --- a/substrate/srml/staking/src/tests.rs +++ b/substrate/srml/staking/src/tests.rs @@ -332,7 +332,7 @@ fn staking_should_work() { assert_eq!(Staking::era_length(), 3); assert_eq!(Staking::validator_count(), 2); // remember + compare this along with the test. - assert_eq!(Session::validators(), vec![10, 20]); + assert_eq!(Session::validators(), vec![20, 10]); assert_ok!(Staking::set_bonding_duration(2)); assert_eq!(Staking::bonding_duration(), 2); @@ -347,7 +347,7 @@ fn staking_should_work() { Session::check_rotate_session(System::block_number()); assert_eq!(Staking::current_era(), 0); // No effects will be seen so far.s - assert_eq!(Session::validators(), vec![10, 20]); + assert_eq!(Session::validators(), vec![20, 10]); // --- Block 2: @@ -359,7 +359,7 @@ fn staking_should_work() { Session::check_rotate_session(System::block_number()); assert_eq!(Staking::current_era(), 0); // No effects will be seen so far. Era has not been yet triggered. - assert_eq!(Session::validators(), vec![10, 20]); + assert_eq!(Session::validators(), vec![20, 10]); // --- Block 3: the validators will now change. @@ -413,7 +413,7 @@ fn nominating_and_rewards_should_work() { assert_eq!(Staking::era_length(), 1); assert_eq!(Staking::validator_count(), 2); assert_eq!(Staking::bonding_duration(), 3); - assert_eq!(Session::validators(), vec![10, 20]); + assert_eq!(Session::validators(), vec![20, 10]); // Set payee to controller assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); @@ -447,7 +447,7 @@ fn nominating_and_rewards_should_work() { Session::check_rotate_session(System::block_number()); assert_eq!(Staking::current_era(), 1); // validators will not change, since selection currently is actually not dependent on nomination and votes, only stake. - assert_eq!(Session::validators(), vec![10, 20]); + assert_eq!(Session::validators(), vec![20, 10]); // avalidators must have already received some rewards. assert_eq!(Balances::total_balance(&10), initial_balance + session_reward); assert_eq!(Balances::total_balance(&20), initial_balance + session_reward); @@ -487,7 +487,7 @@ fn nominators_also_get_slashed() { // Account 10 has not been reported offline assert_eq!(Staking::slash_count(&10), 0); // initial validators - assert_eq!(Session::validators(), vec![10, 20]); + assert_eq!(Session::validators(), vec![20, 10]); // Set payee to controller assert_ok!(Staking::set_payee(Origin::signed(10), RewardDestination::Controller)); @@ -500,7 +500,7 @@ fn nominators_also_get_slashed() { // 2 will nominate for 10 let nominator_stake = 500; assert_ok!(Staking::bond(Origin::signed(1), 2, nominator_stake, RewardDestination::default())); - assert_ok!(Staking::nominate(Origin::signed(2), vec![10, 20])); + assert_ok!(Staking::nominate(Origin::signed(2), vec![20, 10])); // new era, pay rewards, System::set_block_number(2); @@ -628,7 +628,7 @@ fn cannot_transfer_staked_balance() { // Confirm account 11 (via controller 10) is totally staked assert_eq!(Staking::stakers(&10).total, 1000); // Confirm account 11 cannot transfer as a result - assert_noop!(Balances::transfer(Origin::signed(11), 20, 1), "stash with too much under management"); + assert_noop!(Balances::transfer(Origin::signed(11), 20, 1), "account liquidity restrictions prevent withdrawal"); // Give account 11 extra free balance Balances::set_free_balance(&11, 10000); @@ -637,8 +637,6 @@ fn cannot_transfer_staked_balance() { }); } - - #[test] fn cannot_reserve_staked_balance() { // Checks that a bonded account cannot reserve balance from free balance @@ -650,7 +648,7 @@ fn cannot_reserve_staked_balance() { // Confirm account 11 (via controller 10) is totally staked assert_eq!(Staking::stakers(&10).total, 1000); // Confirm account 11 cannot transfer as a result - assert_noop!(Balances::reserve(&11, 1), "stash with too much under management"); + assert_noop!(Balances::reserve(&11, 1), "account liquidity restrictions prevent withdrawal"); // Give account 11 extra free balance Balances::set_free_balance(&11, 10000); diff --git a/substrate/srml/sudo/Cargo.toml b/substrate/srml/sudo/Cargo.toml index f607385131..8473d2fb44 100644 --- a/substrate/srml/sudo/Cargo.toml +++ b/substrate/srml/sudo/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false } parity-codec-derive = { version = "3.1", default-features = false } sr-std = { path = "../../core/sr-std", default-features = false } @@ -22,7 +22,7 @@ substrate-primitives = { path = "../../core/primitives" } [features] default = ["std"] std = [ - "serde/std", + "serde", "parity-codec/std", "parity-codec-derive/std", "sr-std/std", diff --git a/substrate/srml/support/Cargo.toml b/substrate/srml/support/Cargo.toml index cda9aaa904..2cc4cfa0c8 100644 --- a/substrate/srml/support/Cargo.toml +++ b/substrate/srml/support/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = { version = "0.1.0", optional = true } -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false, features = ["derive"] } srml-metadata = { path = "../metadata", default-features = false } @@ -17,6 +17,7 @@ inherents = { package = "substrate-inherents", path = "../../core/inherents", de srml-support-procedural = { path = "./procedural" } paste = "0.1" once_cell = { version = "0.1.6", default-features = false, optional = true } +bitmask = { git = "https://github.com/paritytech/bitmask", default-features = false } [dev-dependencies] pretty_assertions = "0.5.1" @@ -26,7 +27,8 @@ default = ["std"] std = [ "hex-literal", "once_cell", - "serde/std", + "bitmask/std", + "serde", "serde_derive", "runtime_io/std", "parity-codec/std", diff --git a/substrate/srml/support/procedural/src/storage/transformation.rs b/substrate/srml/support/procedural/src/storage/transformation.rs index 017a217f1c..6bc15ea2f6 100644 --- a/substrate/srml/support/procedural/src/storage/transformation.rs +++ b/substrate/srml/support/procedural/src/storage/transformation.rs @@ -232,9 +232,9 @@ fn decl_store_extra_genesis( use #scrate::rstd::{cell::RefCell, marker::PhantomData}; use #scrate::codec::{Encode, Decode}; - let storage = (RefCell::new(&mut r), PhantomData::::default()); let v = (#builder)(&self); <#name<#traitinstance> as #scrate::storage::generator::StorageValue<#typ>>::put(&v, &storage); + }} }, DeclStorageTypeInfosKind::Map { key_type, .. } => { @@ -242,7 +242,6 @@ fn decl_store_extra_genesis( use #scrate::rstd::{cell::RefCell, marker::PhantomData}; use #scrate::codec::{Encode, Decode}; - let storage = (RefCell::new(&mut r), PhantomData::::default()); let data = (#builder)(&self); for (k, v) in data.into_iter() { <#name<#traitinstance> as #scrate::storage::generator::StorageMap<#key_type, #typ>>::insert(&k, &v, &storage); @@ -382,12 +381,28 @@ fn decl_store_extra_genesis( let mut r: #scrate::runtime_primitives::StorageOverlay = Default::default(); let mut c: #scrate::runtime_primitives::ChildrenStorageOverlay = Default::default(); - #builders + { + use #scrate::rstd::{cell::RefCell, marker::PhantomData}; + let storage = (RefCell::new(&mut r), PhantomData::::default()); + #builders + } #scall(&mut r, &mut c, &self); Ok((r, c)) } + fn assimilate_storage(self, r: &mut #scrate::runtime_primitives::StorageOverlay, c: &mut #scrate::runtime_primitives::ChildrenStorageOverlay) -> ::std::result::Result<(), String> { + use #scrate::rstd::{cell::RefCell, marker::PhantomData}; + let storage = (RefCell::new(r), PhantomData::::default()); + + #builders + + let r = storage.0.into_inner(); + + #scall(r, c, &self); + + Ok(()) + } } } } else { diff --git a/substrate/srml/support/src/lib.rs b/substrate/srml/support/src/lib.rs index a7bbf32938..ccfa2603a0 100644 --- a/substrate/srml/support/src/lib.rs +++ b/substrate/srml/support/src/lib.rs @@ -19,6 +19,9 @@ #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), feature(alloc))] +#[macro_use] +extern crate bitmask; + #[cfg(feature = "std")] pub use serde; #[doc(hidden)] diff --git a/substrate/srml/support/src/traits.rs b/substrate/srml/support/src/traits.rs index 81d0239e5c..37290d4ef1 100644 --- a/substrate/srml/support/src/traits.rs +++ b/substrate/srml/support/src/traits.rs @@ -17,7 +17,7 @@ //! Traits for SRML use crate::rstd::result; -use crate::codec::Codec; +use crate::codec::{Codec, Encode, Decode}; use crate::runtime_primitives::traits::{ MaybeSerializeDebug, SimpleArithmetic, As }; @@ -53,61 +53,6 @@ impl OnDilution for () { fn on_dilution(_minted: Balance, _portion: Balance) {} } -/// Determinator for whether a given account is able to use its **free** balance. -/// -/// By convention, `ensure_account_liquid` overrules `ensure_account_can_withdraw`. If a -/// caller gets `Ok` from the former, then they do not need to call the latter. -/// -/// This implies that if you define the latter away from its default of replicating the -/// former, then ensure you also redefine the former to return an `Err` in corresponding -/// situations, otherwise you'll end up giving inconsistent information. -// TODO: Remove in favour of explicit functionality in balances module: #1896 -pub trait EnsureAccountLiquid { - /// Ensures that the account is completely unencumbered. If this is `Ok` then there's no need to - /// check any other items. If it's an `Err`, then you must use one pair of the other items. - fn ensure_account_liquid(who: &AccountId) -> result::Result<(), &'static str>; - - /// Returns `Ok` iff the account is able to make a withdrawal of the given amount - /// for the given reason. - /// - /// `Err(...)` with the reason why not otherwise. - /// - /// By default this just reflects the results of `ensure_account_liquid`. - /// - /// @warning If you redefine this away from the default, ensure that you define - /// `ensure_account_liquid` in accordance. - fn ensure_account_can_withdraw( - who: &AccountId, - _amount: Balance, - _reason: WithdrawReason - ) -> result::Result<(), &'static str> { - Self::ensure_account_liquid(who) - } -} -impl< - AccountId, - Balance: Copy, - X: EnsureAccountLiquid, - Y: EnsureAccountLiquid, -> EnsureAccountLiquid for (X, Y) { - fn ensure_account_liquid(who: &AccountId) -> result::Result<(), &'static str> { - X::ensure_account_liquid(who)?; - Y::ensure_account_liquid(who) - } - - fn ensure_account_can_withdraw( - who: &AccountId, - amount: Balance, - reason: WithdrawReason - ) -> result::Result<(), &'static str> { - X::ensure_account_can_withdraw(who, amount, reason)?; - Y::ensure_account_can_withdraw(who, amount, reason) - } -} -impl EnsureAccountLiquid for () { - fn ensure_account_liquid(_who: &AccountId) -> result::Result<(), &'static str> { Ok(()) } -} - /// Outcome of a balance update. pub enum UpdateBalanceOutcome { /// Account balance was simply updated. @@ -227,6 +172,41 @@ pub trait Currency { ) -> result::Result, &'static str>; } +/// An identifier for a lock. Used for disambiguating different locks so that +/// they can be individually replaced or removed. +pub type LockIdentifier = [u8; 8]; + +/// A currency whose accounts can have liquidity restructions. +pub trait LockableCurrency: Currency { + /// The quantity used to denote time; usually just a `BlockNumber`. + type Moment; + + /// Introduce a new lock or change an existing one. + fn set_lock( + id: LockIdentifier, + who: &AccountId, + amount: Self::Balance, + until: Self::Moment, + reasons: WithdrawReasons, + ); + + /// Change any existing lock so that it becomes strictly less liquid in all + /// respects to the given parameters. + fn extend_lock( + id: LockIdentifier, + who: &AccountId, + amount: Self::Balance, + until: Self::Moment, + reasons: WithdrawReasons, + ); + + /// Remove an existing lock. + fn remove_lock( + id: LockIdentifier, + who: &AccountId, + ); +} + /// Charge bytes fee trait pub trait ChargeBytesFee { /// Charge fees from `transactor` for an extrinsic (transaction) of encoded length @@ -246,16 +226,21 @@ pub trait ChargeFee: ChargeBytesFee { fn refund_fee(transactor: &AccountId, amount: Self::Amount) -> Result<(), &'static str>; } -/// Reason for moving funds out of an account. -#[derive(Copy, Clone, Eq, PartialEq)] -#[cfg_attr(feature = "std", derive(Debug))] -pub enum WithdrawReason { - /// In order to pay for (system) transaction costs. - TransactionPayment, - /// In order to transfer ownership. - Transfer, - /// In order to reserve some funds for a later return or repatriation - Reserve, +bitmask! { + /// Reasons for moving funds out of an account. + #[derive(Encode, Decode)] + pub mask WithdrawReasons: i8 where + + /// Reason for moving funds out of an account. + #[derive(Encode, Decode)] + flags WithdrawReason { + /// In order to pay for (system) transaction costs. + TransactionPayment = 0b00000001, + /// In order to transfer ownership. + Transfer = 0b00000010, + /// In order to reserve some funds for a later return or repatriation + Reserve = 0b00000100, + } } /// Transfer fungible asset trait diff --git a/substrate/srml/system/Cargo.toml b/substrate/srml/system/Cargo.toml index f1f3692aa3..ea2628a3a2 100644 --- a/substrate/srml/system/Cargo.toml +++ b/substrate/srml/system/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} parity-codec = { version = "3.1", default-features = false, features = ["derive"] } @@ -19,7 +19,7 @@ srml-support = { path = "../support", default-features = false } [features] default = ["std"] std = [ - "serde/std", + "serde", "serde_derive", "safe-mix/std", "parity-codec/std", diff --git a/substrate/srml/timestamp/Cargo.toml b/substrate/srml/timestamp/Cargo.toml index d2133daebb..0c089b60e6 100644 --- a/substrate/srml/timestamp/Cargo.toml +++ b/substrate/srml/timestamp/Cargo.toml @@ -6,14 +6,13 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false, features = ["derive"] } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } runtime_primitives = { package = "sr-primitives", path = "../../core/sr-primitives", default-features = false } inherents = { package = "substrate-inherents", path = "../../core/inherents", default-features = false } srml-support = { path = "../support", default-features = false } system = { package = "srml-system", path = "../system", default-features = false } -consensus = { package = "srml-consensus", path = "../consensus", default-features = false } [dev-dependencies] runtime_io = { package = "sr-io", path = "../../core/sr-io" } @@ -25,8 +24,7 @@ std = [ "rstd/std", "srml-support/std", "runtime_primitives/std", - "consensus/std", - "serde/std", + "serde", "parity-codec/std", "system/std", "inherents/std", diff --git a/substrate/srml/timestamp/src/lib.rs b/substrate/srml/timestamp/src/lib.rs index a7fa9e9663..a1414f94de 100644 --- a/substrate/srml/timestamp/src/lib.rs +++ b/substrate/srml/timestamp/src/lib.rs @@ -32,17 +32,17 @@ #![cfg_attr(not(feature = "std"), no_std)] +use parity_codec::Encode; #[cfg(feature = "std")] use parity_codec::Decode; -use parity_codec::Encode; +#[cfg(feature = "std")] +use inherents::ProvideInherentData; use srml_support::{StorageValue, Parameter, decl_storage, decl_module}; use srml_support::for_each_tuple; use runtime_primitives::traits::{As, SimpleArithmetic, Zero}; use system::ensure_inherent; use rstd::{result, ops::{Mul, Div}, cmp}; use inherents::{RuntimeString, InherentIdentifier, ProvideInherent, IsFatalError, InherentData}; -#[cfg(feature = "std")] -use inherents::ProvideInherentData; /// The identifier for the `timestamp` inherent. pub const INHERENT_IDENTIFIER: InherentIdentifier = *b"timstap0"; @@ -144,7 +144,7 @@ macro_rules! impl_timestamp_set { for_each_tuple!(impl_timestamp_set); -pub trait Trait: consensus::Trait + system::Trait { +pub trait Trait: system::Trait { /// Type used for expressing timestamp. type Moment: Parameter + Default + SimpleArithmetic + Mul @@ -259,7 +259,7 @@ mod tests { use substrate_primitives::H256; use runtime_primitives::BuildStorage; use runtime_primitives::traits::{BlakeTwo256, IdentityLookup}; - use runtime_primitives::testing::{Digest, DigestItem, Header, UintAuthorityId}; + use runtime_primitives::testing::{Digest, DigestItem, Header}; impl_outer_origin! { pub enum Origin for Test {} @@ -280,11 +280,6 @@ mod tests { type Event = (); type Log = DigestItem; } - impl consensus::Trait for Test { - type Log = DigestItem; - type SessionKey = UintAuthorityId; - type InherentOfflineReport = (); - } impl Trait for Test { type Moment = u64; type OnTimestampSet = (); diff --git a/substrate/srml/treasury/Cargo.toml b/substrate/srml/treasury/Cargo.toml index d417a0e7e2..9bfb4b1725 100644 --- a/substrate/srml/treasury/Cargo.toml +++ b/substrate/srml/treasury/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false, features = ["derive"] } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } @@ -22,7 +22,7 @@ substrate-primitives = { path = "../../core/primitives" } [features] default = ["std"] std = [ - "serde/std", + "serde", "serde_derive", "parity-codec/std", "rstd/std", diff --git a/substrate/srml/treasury/src/lib.rs b/substrate/srml/treasury/src/lib.rs index 2087846233..429bd24ecb 100644 --- a/substrate/srml/treasury/src/lib.rs +++ b/substrate/srml/treasury/src/lib.rs @@ -287,7 +287,6 @@ mod tests { type Balance = u64; type OnNewAccount = (); type OnFreeBalanceZero = (); - type EnsureAccountLiquid = (); type Event = (); } impl Trait for Test { diff --git a/substrate/srml/upgrade-key/Cargo.toml b/substrate/srml/upgrade-key/Cargo.toml index 14f4bc4de5..c548798dec 100644 --- a/substrate/srml/upgrade-key/Cargo.toml +++ b/substrate/srml/upgrade-key/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -serde = { version = "1.0", default-features = false } +serde = { version = "1.0", optional = true } parity-codec = { version = "3.1", default-features = false } sr-std = { path = "../../core/sr-std", default-features = false } sr-primitives = { path = "../../core/sr-primitives", default-features = false } @@ -16,7 +16,7 @@ consensus = { package = "srml-consensus", path = "../consensus", default-feature [features] default = ["std"] std = [ - "serde/std", + "serde", "parity-codec/std", "sr-std/std", "sr-primitives/std",