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 fea26da599..a7de97ffb9 100644 Binary files a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm and b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm differ diff --git a/substrate/node/runtime/src/lib.rs b/substrate/node/runtime/src/lib.rs index 8da9a32c77..b6d4738572 100644 --- a/substrate/node/runtime/src/lib.rs +++ b/substrate/node/runtime/src/lib.rs @@ -58,8 +58,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("node"), impl_name: create_runtime_str!("substrate-node"), authoring_version: 10, - spec_version: 45, - impl_version: 45, + spec_version: 46, + impl_version: 46, apis: RUNTIME_API_VERSIONS, }; 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 9c1fbdd2ec..4ff22ed0e8 100644 Binary files a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm and b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm differ diff --git a/substrate/srml/balances/src/lib.rs b/substrate/srml/balances/src/lib.rs index 8c03c08894..a6b64927f9 100644 --- a/substrate/srml/balances/src/lib.rs +++ b/substrate/srml/balances/src/lib.rs @@ -312,7 +312,7 @@ decl_storage! { // <= begin it should be >= balance // >= begin+length it should be <= 0 - let per_block = balance / length; + let per_block = balance / length.max(primitives::traits::One::one()); let offset = begin * per_block + balance; (who.clone(), VestingSchedule { offset, per_block }) diff --git a/substrate/srml/indices/src/address.rs b/substrate/srml/indices/src/address.rs index fd8f0249de..c7709e3bec 100644 --- a/substrate/srml/indices/src/address.rs +++ b/substrate/srml/indices/src/address.rs @@ -54,7 +54,7 @@ impl From for Address(a: T, b: T) -> Option { - if a < b { Some(a) } else { None } + if a < b { Some(b) } else { None } } impl Decode for Address where @@ -108,3 +108,31 @@ impl Default for Address where Address::Id(Default::default()) } } + +#[cfg(test)] +mod tests { + use crate::{Encode, Decode}; + + type Address = super::Address<[u8; 8], u32>; + fn index(i: u32) -> Address { super::Address::Index(i) } + fn id(i: [u8; 8]) -> Address { super::Address::Id(i) } + + fn compare(a: Option
, d: &[u8]) { + if let Some(ref a) = a { + assert_eq!(d, &a.encode()[..]); + } + assert_eq!(Address::decode(&mut &d[..]), a); + } + + #[test] + fn it_should_work() { + compare(Some(index(2)), &[2][..]); + compare(None, &[240][..]); + compare(None, &[252, 239, 0][..]); + compare(Some(index(240)), &[252, 240, 0][..]); + compare(Some(index(304)), &[252, 48, 1][..]); + compare(None, &[253, 255, 255, 0, 0][..]); + compare(Some(index(0x10000)), &[253, 0, 0, 1, 0][..]); + compare(Some(id([42, 69, 42, 69, 42, 69, 42, 69])), &[255, 42, 69, 42, 69, 42, 69, 42, 69][..]); + } +}