diff --git a/substrate/core/primitives/src/crypto.rs b/substrate/core/primitives/src/crypto.rs index 82b36d8a97..cbe9fe208d 100644 --- a/substrate/core/primitives/src/crypto.rs +++ b/substrate/core/primitives/src/crypto.rs @@ -25,11 +25,11 @@ use regex::Regex; #[cfg(feature = "std")] use base58::{FromBase58, ToBase58}; -/// The root phrase for our publically known keys. +/// The root phrase for our publicly known keys. pub const DEV_PHRASE: &str = "bottom drive obey lake curtain smoke basket hold race lonely fit walk"; -/// The address of the associated root phrase for our publically known keys. -pub const DEV_ADDRESS: &str = "5DfhGyQdFobKM8NsWvEeAKk5EQQgYe9AydgJ7rMB6E1EqAS7"; +/// The address of the associated root phrase for our publicly known keys. +pub const DEV_ADDRESS: &str = "5DfhGyQdFobKM8NsWvEeAKk5EQQgYe9AydgJ7rMB6E1EqRzV"; /// The infallible type. #[derive(Debug)] @@ -218,6 +218,16 @@ pub trait Derive: Sized { fn derive>(&self, _path: Iter) -> Option { None } } +const PREFIX: &[u8] = b"SS58PRE"; + +#[cfg(feature = "std")] +fn ss58hash(data: &[u8]) -> blake2_rfc::blake2b::Blake2bResult { + let mut context = blake2_rfc::blake2b::Blake2b::new(64); + context.update(PREFIX); + context.update(data); + context.finalize() +} + #[cfg(feature = "std")] impl + AsRef<[u8]> + Default + Derive> Ss58Codec for T { fn from_ss58check(s: &str) -> Result { @@ -232,7 +242,8 @@ impl + AsRef<[u8]> + Default + Derive> Ss58Codec for T { // Invalid version. return Err(PublicError::UnknownVersion); } - if d[len+1..len+3] != blake2_rfc::blake2b::blake2b(64, &[], &d[0..len+1]).as_bytes()[0..2] { + + if d[len+1..len+3] != ss58hash(&d[0..len+1]).as_bytes()[0..2] { // Invalid checksum. return Err(PublicError::InvalidChecksum); } @@ -243,7 +254,7 @@ impl + AsRef<[u8]> + Default + Derive> Ss58Codec for T { fn to_ss58check(&self) -> String { let mut v = vec![42u8]; v.extend(self.as_ref()); - let r = blake2_rfc::blake2b::blake2b(64, &[], &v); + let r = ss58hash(&v); v.extend(&r.as_bytes()[0..2]); v.to_base58() } diff --git a/substrate/core/primitives/src/ed25519.rs b/substrate/core/primitives/src/ed25519.rs index 295c23b378..937cc19a89 100644 --- a/substrate/core/primitives/src/ed25519.rs +++ b/substrate/core/primitives/src/ed25519.rs @@ -608,11 +608,4 @@ mod test { let cmp = Public::from_ss58check(&s).unwrap(); assert_eq!(cmp, public); } - - #[test] - fn ss58check_known_works() { - let k = "5CGavy93sZgPPjHyziRohwVumxiHXMGmQLyuqQP4ZFx5vRU9"; - let enc = hex!["090fa15cb5b1666222fff584b4cc2b1761fe1e238346b340491b37e25ea183ff"]; - assert_eq!(Public::from_ss58check(k).unwrap(), Public::from_raw(enc)); - } } diff --git a/substrate/core/primitives/src/sr25519.rs b/substrate/core/primitives/src/sr25519.rs index a60ee94b7f..aa17447a24 100644 --- a/substrate/core/primitives/src/sr25519.rs +++ b/substrate/core/primitives/src/sr25519.rs @@ -632,13 +632,6 @@ mod test { assert_eq!(cmp, public); } - #[test] - fn ss58check_known_works() { - let k = "5CGavy93sZgPPjHyziRohwVumxiHXMGmQLyuqQP4ZFx5vRU9"; - let enc = hex!["090fa15cb5b1666222fff584b4cc2b1761fe1e238346b340491b37e25ea183ff"]; - assert_eq!(Public::from_ss58check(k).unwrap(), Public::from_raw(enc)); - } - #[test] fn verify_from_wasm_works() { // The values in this test case are compared to the output of `node-test.js` in schnorrkel-js. 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 cd36b9f405..956fa2bf27 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 cb128aa184..5f6e3f7415 100644 --- a/substrate/node/runtime/src/lib.rs +++ b/substrate/node/runtime/src/lib.rs @@ -59,7 +59,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_name: create_runtime_str!("substrate-node"), authoring_version: 10, spec_version: 50, - impl_version: 50, + impl_version: 51, 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 8aa08585ec..79a0010e94 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