mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-11 14:11:09 +00:00
Remove safe-mix (#521)
This commit is contained in:
Generated
+11
-9
@@ -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)" = "<none>"
|
||||
"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"
|
||||
|
||||
@@ -77,7 +77,6 @@ members = [
|
||||
"demo/executor",
|
||||
"demo/primitives",
|
||||
"demo/runtime",
|
||||
"safe-mix",
|
||||
"subkey",
|
||||
]
|
||||
exclude = [
|
||||
|
||||
@@ -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" }
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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" }
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
[package]
|
||||
name = "safe-mix"
|
||||
version = "0.1.0"
|
||||
authors = ["Parity Technologies <admin@parity.io>"]
|
||||
build = "build.rs"
|
||||
|
||||
[build-dependencies]
|
||||
rustc_version = "0.2"
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
std = []
|
||||
nightly = []
|
||||
strict = []
|
||||
@@ -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\"");
|
||||
}
|
||||
}
|
||||
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! 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<T>(seeds: &[T]) -> T where
|
||||
T: BitAnd<Output = T> + BitOr<Output = T> + Copy
|
||||
{
|
||||
(seeds[0] & seeds[1]) | (seeds[1] & seeds[2]) | (seeds[0] & seeds[2])
|
||||
}
|
||||
|
||||
/// Mix a slice.
|
||||
pub fn triplet_mix<T>(seeds: &[T]) -> Result<T, ()> where
|
||||
T: BitAnd<Output = T> + BitOr<Output = T>,
|
||||
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<I, T> TripletMix for I where
|
||||
I: Iterator<Item = T>,
|
||||
T: BitAnd<Output = T> + BitOr<Output = T> + 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);
|
||||
}
|
||||
}
|
||||
@@ -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 }
|
||||
|
||||
@@ -7,7 +7,7 @@ authors = ["Parity Technologies <admin@parity.io>"]
|
||||
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 }
|
||||
|
||||
@@ -7,7 +7,7 @@ authors = ["Parity Technologies <admin@parity.io>"]
|
||||
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 }
|
||||
|
||||
@@ -7,7 +7,7 @@ authors = ["Parity Technologies <admin@parity.io>"]
|
||||
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 }
|
||||
|
||||
@@ -7,7 +7,7 @@ authors = ["Parity Technologies <admin@parity.io>"]
|
||||
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 }
|
||||
|
||||
Reference in New Issue
Block a user