From 50e3535956146815247f11e771be69d0ab8fce3a Mon Sep 17 00:00:00 2001 From: Gav Date: Thu, 9 Aug 2018 12:44:18 +0200 Subject: [PATCH] Remove safe-mix --- Cargo.lock | 20 ++-- Cargo.toml | 1 - demo/runtime/Cargo.toml | 2 +- demo/runtime/wasm/Cargo.toml | 2 +- polkadot/runtime/Cargo.toml | 2 +- polkadot/runtime/wasm/Cargo.toml | 2 +- safe-mix/Cargo.toml | 14 --- safe-mix/build.rs | 14 --- safe-mix/src/lib.rs | 145 ------------------------- substrate/runtime/council/Cargo.toml | 2 +- substrate/runtime/democracy/Cargo.toml | 2 +- substrate/runtime/session/Cargo.toml | 2 +- substrate/runtime/staking/Cargo.toml | 2 +- substrate/runtime/system/Cargo.toml | 2 +- 14 files changed, 20 insertions(+), 192 deletions(-) delete mode 100644 safe-mix/Cargo.toml delete mode 100644 safe-mix/build.rs delete mode 100644 safe-mix/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index b92aaafd62aba..e54920c7207dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -512,7 +512,7 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", @@ -1989,7 +1989,7 @@ dependencies = [ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", @@ -2404,7 +2404,8 @@ dependencies = [ [[package]] name = "safe-mix" -version = "0.1.0" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2760,7 +2761,7 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", @@ -2976,7 +2977,7 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "safe-mix 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", @@ -2999,7 +3000,7 @@ name = "substrate-runtime-democracy" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", @@ -3086,7 +3087,7 @@ name = "substrate-runtime-session" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", @@ -3106,7 +3107,7 @@ name = "substrate-runtime-staking" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", @@ -3152,7 +3153,7 @@ name = "substrate-runtime-system" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safe-mix 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", @@ -4164,6 +4165,7 @@ dependencies = [ "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" "checksum rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a54aa04a10c68c1c4eacb4337fd883b435997ede17a9385784b990777686b09a" "checksum rw-stream-sink 0.1.0 (git+https://github.com/tomaka/libp2p-rs?branch=polkadot-2)" = "" +"checksum safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347" "checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" "checksum schannel 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "85fd9df495640643ad2d00443b3d78aae69802ad488debab4f1dd52fc1806ade" "checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" diff --git a/Cargo.toml b/Cargo.toml index 97df56d615aa2..dbe5fde1a9e3f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,7 +77,6 @@ members = [ "demo/executor", "demo/primitives", "demo/runtime", - "safe-mix", "subkey", ] exclude = [ diff --git a/demo/runtime/Cargo.toml b/demo/runtime/Cargo.toml index e541dcb029e4c..1e3252285d586 100644 --- a/demo/runtime/Cargo.toml +++ b/demo/runtime/Cargo.toml @@ -9,7 +9,7 @@ hex-literal = "0.1.0" log = { version = "0.3", optional = true } serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -safe-mix = { path = "../../safe-mix", default_features = false} +safe-mix = { version = "1.0", default_features = false} substrate-codec = { path = "../../substrate/codec" } substrate-runtime-std = { path = "../../substrate/runtime-std" } substrate-runtime-io = { path = "../../substrate/runtime-io" } diff --git a/demo/runtime/wasm/Cargo.toml b/demo/runtime/wasm/Cargo.toml index 8490777097eef..430f880cd2bc5 100644 --- a/demo/runtime/wasm/Cargo.toml +++ b/demo/runtime/wasm/Cargo.toml @@ -8,7 +8,7 @@ crate-type = ["cdylib"] [dependencies] integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } -safe-mix = { path = "../../../safe-mix", default-features = false } +safe-mix = { version = "1.0", default_features = false} substrate-codec = { path = "../../../substrate/codec", default-features = false } substrate-primitives = { path = "../../../substrate/primitives", default-features = false } substrate-runtime-std = { path = "../../../substrate/runtime-std", default-features = false } diff --git a/polkadot/runtime/Cargo.toml b/polkadot/runtime/Cargo.toml index 40685956016c9..3a595fef7ca83 100644 --- a/polkadot/runtime/Cargo.toml +++ b/polkadot/runtime/Cargo.toml @@ -8,7 +8,7 @@ rustc-hex = "1.0" log = { version = "0.3", optional = true } serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -safe-mix = { path = "../../safe-mix", default_features = false} +safe-mix = { version = "1.0", default_features = false} polkadot-primitives = { path = "../primitives", default_features = false } substrate-codec = { path = "../../substrate/codec" } substrate-serializer = { path = "../../substrate/serializer" } diff --git a/polkadot/runtime/wasm/Cargo.toml b/polkadot/runtime/wasm/Cargo.toml index 3a73d894001e0..ba21f37d11007 100644 --- a/polkadot/runtime/wasm/Cargo.toml +++ b/polkadot/runtime/wasm/Cargo.toml @@ -9,7 +9,7 @@ crate-type = ["cdylib"] [dependencies] integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } polkadot-primitives = { path = "../../primitives", default-features = false } -safe-mix = { path = "../../../safe-mix", default-features = false } +safe-mix = { version = "1.0", default-features = false } substrate-codec = { path = "../../../substrate/codec", default-features = false } substrate-primitives = { path = "../../../substrate/primitives", default-features = false } substrate-runtime-std = { path = "../../../substrate/runtime-std", default-features = false } diff --git a/safe-mix/Cargo.toml b/safe-mix/Cargo.toml deleted file mode 100644 index 23a40f81ce505..0000000000000 --- a/safe-mix/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "safe-mix" -version = "0.1.0" -authors = ["Parity Technologies "] -build = "build.rs" - -[build-dependencies] -rustc_version = "0.2" - -[features] -default = ["std"] -std = [] -nightly = [] -strict = [] diff --git a/safe-mix/build.rs b/safe-mix/build.rs deleted file mode 100644 index 55688bad9cc51..0000000000000 --- a/safe-mix/build.rs +++ /dev/null @@ -1,14 +0,0 @@ -//! Set a nightly feature - -extern crate rustc_version; -use rustc_version::{version, version_meta, Channel}; - -fn main() { - // Assert we haven't travelled back in time - assert!(version().unwrap().major >= 1); - - // Set cfg flags depending on release channel - if let Channel::Nightly = version_meta().unwrap().channel { - println!("cargo:rustc-cfg=feature=\"nightly\""); - } -} diff --git a/safe-mix/src/lib.rs b/safe-mix/src/lib.rs deleted file mode 100644 index 05e8bad95a7aa..0000000000000 --- a/safe-mix/src/lib.rs +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. - -// Substrate Demo 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 Demo 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 Demo. If not, see . - -//! Means of mixing a series of hashes to create a single secure hash. -//! -//! Described in http://www.cs.huji.ac.il/~nati/PAPERS/coll_coin_fl.pdf - -#![cfg_attr(not(feature = "std"), no_std)] -#![cfg_attr(not(feature = "std"), feature(core_intrinsics))] - -#[cfg(feature = "std")] -use std::ops::{BitAnd, BitOr}; - -#[cfg(not(feature = "std"))] -use core::ops::{BitAnd, BitOr}; - -pub const MAX_DEPTH: usize = 17; - -fn sub_mix(seeds: &[T]) -> T where - T: BitAnd + BitOr + Copy -{ - (seeds[0] & seeds[1]) | (seeds[1] & seeds[2]) | (seeds[0] & seeds[2]) -} - -/// Mix a slice. -pub fn triplet_mix(seeds: &[T]) -> Result where - T: BitAnd + BitOr, - T: Default + Copy -{ - Ok(seeds.iter().cloned().triplet_mix()) -} - -/// The mixed trait for mixing a sequence. -pub trait TripletMix { - /// The items in the sequence and simultaneously the return of the mixing. - type Item; - /// The output of the mixing algorithm on the sequence. Items in the sequence beyond - /// the largest power of three that fits within the the sequence up until `3 ** MAX_DEPTH` - /// are ignored. - fn triplet_mix(self) -> Self::Item; -} - -impl TripletMix for I where - I: Iterator, - T: BitAnd + BitOr + Default + Copy -{ - type Item = T; - fn triplet_mix(self) -> Self::Item { - let mut accum = [[T::default(); 3]; MAX_DEPTH]; - let mut result = T::default(); - for (i, seed) in self.enumerate() { - accum[0][i % 3] = seed; - let mut index_at_depth = i; - for depth in 0..MAX_DEPTH { - if index_at_depth % 3 != 2 { - break; - } - index_at_depth /= 3; - result = sub_mix(&accum[depth]); - - // end of the threesome at depth. - if depth == MAX_DEPTH - 1 { - // end of our stack - bail with result. - break; - } else { - // save in the stack for parent computation - accum[depth + 1][index_at_depth % 3] = result; - } - } - } - result - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn sub_mix_works() { - assert_eq!(sub_mix(&[0, 0, 0][..]), 0); - assert_eq!(sub_mix(&[0, 0, 1][..]), 0); - assert_eq!(sub_mix(&[0, 1, 0][..]), 0); - assert_eq!(sub_mix(&[0, 1, 1][..]), 1); - assert_eq!(sub_mix(&[1, 0, 0][..]), 0); - assert_eq!(sub_mix(&[1, 0, 1][..]), 1); - assert_eq!(sub_mix(&[1, 1, 0][..]), 1); - assert_eq!(sub_mix(&[1, 1, 1][..]), 1); - - assert_eq!(sub_mix(&[0, 0, 0][..]), 0); - assert_eq!(sub_mix(&[0, 0, 2][..]), 0); - assert_eq!(sub_mix(&[0, 2, 0][..]), 0); - assert_eq!(sub_mix(&[0, 2, 2][..]), 2); - assert_eq!(sub_mix(&[2, 0, 0][..]), 0); - assert_eq!(sub_mix(&[2, 0, 2][..]), 2); - assert_eq!(sub_mix(&[2, 2, 0][..]), 2); - assert_eq!(sub_mix(&[2, 2, 2][..]), 2); - } - - #[test] - fn triplet_mix_works_on_first_level() { - assert_eq!(triplet_mix(&[0, 0, 0][..]).unwrap(), 0); - assert_eq!(triplet_mix(&[0, 0, 1][..]).unwrap(), 0); - assert_eq!(triplet_mix(&[0, 1, 0][..]).unwrap(), 0); - assert_eq!(triplet_mix(&[0, 1, 1][..]).unwrap(), 1); - assert_eq!(triplet_mix(&[1, 0, 0][..]).unwrap(), 0); - assert_eq!(triplet_mix(&[1, 0, 1][..]).unwrap(), 1); - assert_eq!(triplet_mix(&[1, 1, 0][..]).unwrap(), 1); - assert_eq!(triplet_mix(&[1, 1, 1][..]).unwrap(), 1); - - assert_eq!(triplet_mix(&[0, 0, 0][..]).unwrap(), 0); - assert_eq!(triplet_mix(&[0, 0, 2][..]).unwrap(), 0); - assert_eq!(triplet_mix(&[0, 2, 0][..]).unwrap(), 0); - assert_eq!(triplet_mix(&[0, 2, 2][..]).unwrap(), 2); - assert_eq!(triplet_mix(&[2, 0, 0][..]).unwrap(), 0); - assert_eq!(triplet_mix(&[2, 0, 2][..]).unwrap(), 2); - assert_eq!(triplet_mix(&[2, 2, 0][..]).unwrap(), 2); - assert_eq!(triplet_mix(&[2, 2, 2][..]).unwrap(), 2); - } - - #[test] - fn triplet_mix_works_on_second_level() { - assert_eq!(triplet_mix(&[0, 0, 0, 0, 0, 1, 0, 1, 0][..]).unwrap(), 0); - assert_eq!(triplet_mix(&[0, 1, 1, 1, 0, 0, 1, 0, 1][..]).unwrap(), 1); - assert_eq!(triplet_mix(&[1, 1, 0, 1, 1, 1, 0, 0, 0][..]).unwrap(), 1); - } - - #[test] - fn triplet_mix_works_on_third_level() { - assert_eq!(triplet_mix(&[0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0][..]).unwrap(), 1); - } -} diff --git a/substrate/runtime/council/Cargo.toml b/substrate/runtime/council/Cargo.toml index 5bfda8899e149..aaffa4ba1af96 100644 --- a/substrate/runtime/council/Cargo.toml +++ b/substrate/runtime/council/Cargo.toml @@ -8,7 +8,7 @@ hex-literal = "0.1.0" integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -safe-mix = { path = "../../../safe-mix", default_features = false} +safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } substrate-codec = { path = "../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } diff --git a/substrate/runtime/democracy/Cargo.toml b/substrate/runtime/democracy/Cargo.toml index 0cf92f0b18701..bf144eece6346 100644 --- a/substrate/runtime/democracy/Cargo.toml +++ b/substrate/runtime/democracy/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -safe-mix = { path = "../../../safe-mix", default_features = false} +safe-mix = { version = "1.0", default_features = false} substrate-codec = { path = "../../codec", default_features = false } substrate-codec-derive = { path = "../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } diff --git a/substrate/runtime/session/Cargo.toml b/substrate/runtime/session/Cargo.toml index 74edc88b10219..13244273c623f 100644 --- a/substrate/runtime/session/Cargo.toml +++ b/substrate/runtime/session/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -safe-mix = { path = "../../../safe-mix", default_features = false} +safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } substrate-codec = { path = "../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } diff --git a/substrate/runtime/staking/Cargo.toml b/substrate/runtime/staking/Cargo.toml index 410667aaec6c7..4ca513a1f0c9d 100644 --- a/substrate/runtime/staking/Cargo.toml +++ b/substrate/runtime/staking/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -safe-mix = { path = "../../../safe-mix", default_features = false} +safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } substrate-codec = { path = "../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } diff --git a/substrate/runtime/system/Cargo.toml b/substrate/runtime/system/Cargo.toml index 38fb97b582f5c..11d470ffd203c 100644 --- a/substrate/runtime/system/Cargo.toml +++ b/substrate/runtime/system/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -safe-mix = { path = "../../../safe-mix", default_features = false} +safe-mix = { version = "1.0", default_features = false} substrate-codec = { path = "../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false }