From 7edba45d133102bf5124c4311075080151c4aa25 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Mon, 23 Sep 2024 10:48:59 +0800 Subject: [PATCH 01/23] remove related func from integration-tests --- Cargo.lock | 10 ++- .../assets/asset-hub-rococo/Cargo.toml | 5 +- .../assets/asset-hub-rococo/src/genesis.rs | 10 +-- .../assets/asset-hub-westend/Cargo.toml | 5 +- .../assets/asset-hub-westend/src/genesis.rs | 12 +-- .../bridges/bridge-hub-rococo/Cargo.toml | 5 +- .../bridges/bridge-hub-rococo/src/genesis.rs | 9 ++- .../bridges/bridge-hub-westend/Cargo.toml | 5 +- .../bridges/bridge-hub-westend/src/genesis.rs | 9 ++- .../parachains/testing/penpal/Cargo.toml | 1 + .../parachains/testing/penpal/src/genesis.rs | 7 +- .../emulated/chains/relays/rococo/Cargo.toml | 1 + .../chains/relays/rococo/src/genesis.rs | 9 +-- .../emulated/common/Cargo.toml | 1 + .../emulated/common/src/lib.rs | 77 ++++--------------- .../tests/assets/asset-hub-rococo/Cargo.toml | 1 + .../tests/assets/asset-hub-rococo/src/lib.rs | 4 +- .../src/tests/reserve_transfer.rs | 8 +- .../tests/assets/asset-hub-westend/Cargo.toml | 1 - .../tests/assets/asset-hub-westend/src/lib.rs | 4 +- .../src/tests/reserve_transfer.rs | 8 +- .../assets/asset-hub-rococo/Cargo.toml | 7 +- .../src/genesis_config_presets.rs | 35 +++------ 23 files changed, 108 insertions(+), 126 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7b3e54ff1fc23..ee7da2c28c5d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -812,6 +812,7 @@ dependencies = [ "parachains-common", "rococo-emulated-chain", "sp-core 28.0.0", + "sp-keyring", "staging-xcm", "testnet-parachains-constants", ] @@ -837,6 +838,7 @@ dependencies = [ "polkadot-runtime-common", "rococo-runtime-constants", "rococo-system-emulated-network", + "sp-core 28.0.0", "sp-runtime 31.0.1", "staging-xcm", "staging-xcm-executor", @@ -911,6 +913,7 @@ dependencies = [ "sp-core 28.0.0", "sp-genesis-builder", "sp-inherents", + "sp-keyring", "sp-offchain", "sp-runtime 31.0.1", "sp-session", @@ -938,6 +941,7 @@ dependencies = [ "frame-support", "parachains-common", "sp-core 28.0.0", + "sp-keyring", "staging-xcm", "testnet-parachains-constants", "westend-emulated-chain", @@ -967,7 +971,6 @@ dependencies = [ "parity-scale-codec", "polkadot-runtime-common", "sp-core 28.0.0", - "sp-keyring", "sp-runtime 31.0.1", "staging-xcm", "staging-xcm-executor", @@ -2193,6 +2196,7 @@ dependencies = [ "frame-support", "parachains-common", "sp-core 28.0.0", + "sp-keyring", "testnet-parachains-constants", ] @@ -2379,6 +2383,7 @@ dependencies = [ "frame-support", "parachains-common", "sp-core 28.0.0", + "sp-keyring", "testnet-parachains-constants", ] @@ -5555,6 +5560,7 @@ dependencies = [ "sp-consensus-babe", "sp-consensus-beefy", "sp-core 28.0.0", + "sp-keyring", "sp-runtime 31.0.1", "staging-xcm", "xcm-emulator", @@ -13450,6 +13456,7 @@ dependencies = [ "parachains-common", "penpal-runtime", "sp-core 28.0.0", + "sp-keyring", "staging-xcm", ] @@ -17664,6 +17671,7 @@ dependencies = [ "sp-consensus-babe", "sp-consensus-beefy", "sp-core 28.0.0", + "sp-keyring", ] [[package]] diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml index 51ce5b1800568..9767e59222683 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml @@ -14,6 +14,7 @@ workspace = true # Substrate sp-core = { workspace = true } +sp-keyring = { workspace = true } frame-support = { workspace = true } # Cumulus @@ -22,7 +23,9 @@ cumulus-primitives-core = { workspace = true } emulated-integration-tests-common = { workspace = true } asset-hub-rococo-runtime = { workspace = true, default-features = true } rococo-emulated-chain = { workspace = true } -testnet-parachains-constants = { features = ["rococo"], workspace = true, default-features = true } +testnet-parachains-constants = { features = [ + "rococo", +], workspace = true, default-features = true } # Polkadot xcm = { workspace = true } diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/src/genesis.rs b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/src/genesis.rs index 5b70ed490c633..606d04060b6b4 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/src/genesis.rs +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/src/genesis.rs @@ -15,13 +15,13 @@ // Substrate use frame_support::parameter_types; -use sp_core::{sr25519, storage::Storage}; +use sp_core::storage::Storage; +use sp_keyring::Sr25519Keyring as Keyring; // Cumulus use emulated_integration_tests_common::{ - accounts, build_genesis_storage, collators, get_account_id_from_seed, - PenpalSiblingSovereignAccount, PenpalTeleportableAssetLocation, RESERVABLE_ASSET_ID, - SAFE_XCM_VERSION, USDT_ID, + accounts, build_genesis_storage, collators, PenpalSiblingSovereignAccount, + PenpalTeleportableAssetLocation, RESERVABLE_ASSET_ID, SAFE_XCM_VERSION, USDT_ID, }; use parachains_common::{AccountId, Balance}; @@ -29,7 +29,7 @@ pub const PARA_ID: u32 = 1000; pub const ED: Balance = testnet_parachains_constants::rococo::currency::EXISTENTIAL_DEPOSIT; parameter_types! { - pub AssetHubRococoAssetOwner: AccountId = get_account_id_from_seed::("Alice"); + pub AssetHubRococoAssetOwner: AccountId = Keyring::Alice.to_account_id(); } pub fn genesis() -> Storage { diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml index d32f983217069..1770c01bb3fd5 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml @@ -14,6 +14,7 @@ workspace = true # Substrate sp-core = { workspace = true } +sp-keyring = { workspace = true } frame-support = { workspace = true } # Cumulus @@ -22,7 +23,9 @@ cumulus-primitives-core = { workspace = true } emulated-integration-tests-common = { workspace = true } asset-hub-westend-runtime = { workspace = true } westend-emulated-chain = { workspace = true, default-features = true } -testnet-parachains-constants = { features = ["westend"], workspace = true, default-features = true } +testnet-parachains-constants = { features = [ + "westend", +], workspace = true, default-features = true } # Polkadot xcm = { workspace = true } diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/src/genesis.rs b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/src/genesis.rs index a9cfcda0dacdd..30e7279a383f4 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/src/genesis.rs +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/src/genesis.rs @@ -15,14 +15,14 @@ // Substrate use frame_support::parameter_types; -use sp_core::{sr25519, storage::Storage}; +use sp_core::storage::Storage; +use sp_keyring::Sr25519Keyring as Keyring; // Cumulus use emulated_integration_tests_common::{ - accounts, build_genesis_storage, collators, get_account_id_from_seed, - PenpalBSiblingSovereignAccount, PenpalBTeleportableAssetLocation, - PenpalSiblingSovereignAccount, PenpalTeleportableAssetLocation, RESERVABLE_ASSET_ID, - SAFE_XCM_VERSION, USDT_ID, + accounts, build_genesis_storage, collators, PenpalBSiblingSovereignAccount, + PenpalBTeleportableAssetLocation, PenpalSiblingSovereignAccount, + PenpalTeleportableAssetLocation, RESERVABLE_ASSET_ID, SAFE_XCM_VERSION, USDT_ID, }; use parachains_common::{AccountId, Balance}; @@ -31,7 +31,7 @@ pub const ED: Balance = testnet_parachains_constants::westend::currency::EXISTEN pub const USDT_ED: Balance = 70_000; parameter_types! { - pub AssetHubWestendAssetOwner: AccountId = get_account_id_from_seed::("Alice"); + pub AssetHubWestendAssetOwner: AccountId = Keyring::Alice.to_account_id(); } pub fn genesis() -> Storage { diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml index f3c0799ad0f6a..5f671f2cd470d 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml @@ -14,6 +14,7 @@ workspace = true # Substrate sp-core = { workspace = true } +sp-keyring = { workspace = true } frame-support = { workspace = true } # Cumulus @@ -21,4 +22,6 @@ parachains-common = { workspace = true, default-features = true } emulated-integration-tests-common = { workspace = true } bridge-hub-rococo-runtime = { workspace = true, default-features = true } bridge-hub-common = { workspace = true } -testnet-parachains-constants = { features = ["rococo"], workspace = true, default-features = true } +testnet-parachains-constants = { features = [ + "rococo", +], workspace = true, default-features = true } diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/src/genesis.rs b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/src/genesis.rs index 3786d529ea650..a4e009ac0202a 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/src/genesis.rs +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/src/genesis.rs @@ -14,11 +14,12 @@ // limitations under the License. // Substrate -use sp_core::{sr25519, storage::Storage}; +use sp_core::storage::Storage; +use sp_keyring::Sr25519Keyring as Keyring; // Cumulus use emulated_integration_tests_common::{ - accounts, build_genesis_storage, collators, get_account_id_from_seed, SAFE_XCM_VERSION, + accounts, build_genesis_storage, collators, SAFE_XCM_VERSION, }; use parachains_common::Balance; @@ -59,11 +60,11 @@ pub fn genesis() -> Storage { ..Default::default() }, bridge_westend_grandpa: bridge_hub_rococo_runtime::BridgeWestendGrandpaConfig { - owner: Some(get_account_id_from_seed::(accounts::BOB)), + owner: Some(Keyring::Bob.to_account_id()), ..Default::default() }, bridge_westend_messages: bridge_hub_rococo_runtime::BridgeWestendMessagesConfig { - owner: Some(get_account_id_from_seed::(accounts::BOB)), + owner: Some(Keyring::Bob.to_account_id()), ..Default::default() }, ethereum_system: bridge_hub_rococo_runtime::EthereumSystemConfig { diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml index ebcec9641e7d9..de2c7f360a6a7 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml @@ -14,6 +14,7 @@ workspace = true # Substrate sp-core = { workspace = true } +sp-keyring = { workspace = true } frame-support = { workspace = true } # Cumulus @@ -21,4 +22,6 @@ parachains-common = { workspace = true, default-features = true } emulated-integration-tests-common = { workspace = true } bridge-hub-westend-runtime = { workspace = true, default-features = true } bridge-hub-common = { workspace = true } -testnet-parachains-constants = { features = ["westend"], workspace = true, default-features = true } +testnet-parachains-constants = { features = [ + "westend", +], workspace = true, default-features = true } diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/src/genesis.rs b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/src/genesis.rs index f38f385db6506..a4947db3a6b94 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/src/genesis.rs +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/src/genesis.rs @@ -14,11 +14,12 @@ // limitations under the License. // Substrate -use sp_core::{sr25519, storage::Storage}; +use sp_core::storage::Storage; +use sp_keyring::Sr25519Keyring as Keyring; // Cumulus use emulated_integration_tests_common::{ - accounts, build_genesis_storage, collators, get_account_id_from_seed, SAFE_XCM_VERSION, + accounts, build_genesis_storage, collators, SAFE_XCM_VERSION, }; use parachains_common::Balance; @@ -59,11 +60,11 @@ pub fn genesis() -> Storage { ..Default::default() }, bridge_rococo_grandpa: bridge_hub_westend_runtime::BridgeRococoGrandpaConfig { - owner: Some(get_account_id_from_seed::(accounts::BOB)), + owner: Some(Keyring::Bob.to_account_id()), ..Default::default() }, bridge_rococo_messages: bridge_hub_westend_runtime::BridgeRococoMessagesConfig { - owner: Some(get_account_id_from_seed::(accounts::BOB)), + owner: Some(Keyring::Bob.to_account_id()), ..Default::default() }, ethereum_system: bridge_hub_westend_runtime::EthereumSystemConfig { diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/testing/penpal/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/testing/penpal/Cargo.toml index 9e6b14b585984..743cd7dc54a28 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/testing/penpal/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/testing/penpal/Cargo.toml @@ -14,6 +14,7 @@ workspace = true # Substrate sp-core = { workspace = true } +sp-keyring = { workspace = true } frame-support = { workspace = true } # Polkadot diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/testing/penpal/src/genesis.rs b/cumulus/parachains/integration-tests/emulated/chains/parachains/testing/penpal/src/genesis.rs index 2c34b7e96f5ea..63510d233d2c4 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/testing/penpal/src/genesis.rs +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/testing/penpal/src/genesis.rs @@ -15,11 +15,12 @@ // Substrate use frame_support::parameter_types; -use sp_core::{sr25519, storage::Storage}; +use sp_core::storage::Storage; +use sp_keyring::Sr25519Keyring as Keyring; // Cumulus use emulated_integration_tests_common::{ - accounts, build_genesis_storage, collators, get_account_id_from_seed, SAFE_XCM_VERSION, + accounts, build_genesis_storage, collators, SAFE_XCM_VERSION, }; use parachains_common::{AccountId, Balance}; use penpal_runtime::xcm_config::{LocalReservableFromAssetHub, RelayLocation, UsdtFromAssetHub}; @@ -30,7 +31,7 @@ pub const ED: Balance = penpal_runtime::EXISTENTIAL_DEPOSIT; pub const USDT_ED: Balance = 70_000; parameter_types! { - pub PenpalSudoAccount: AccountId = get_account_id_from_seed::("Alice"); + pub PenpalSudoAccount: AccountId = Keyring::Alice.to_account_id(); pub PenpalAssetOwner: AccountId = PenpalSudoAccount::get(); } diff --git a/cumulus/parachains/integration-tests/emulated/chains/relays/rococo/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/relays/rococo/Cargo.toml index 9376687947e6c..6db1263df8c73 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/relays/rococo/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/relays/rococo/Cargo.toml @@ -14,6 +14,7 @@ workspace = true # Substrate sp-core = { workspace = true } +sp-keyring = { workspace = true } sp-authority-discovery = { workspace = true } sp-consensus-babe = { workspace = true } sp-consensus-beefy = { workspace = true, default-features = true } diff --git a/cumulus/parachains/integration-tests/emulated/chains/relays/rococo/src/genesis.rs b/cumulus/parachains/integration-tests/emulated/chains/relays/rococo/src/genesis.rs index 9cb25b403600f..3d8b5b1a500f2 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/relays/rococo/src/genesis.rs +++ b/cumulus/parachains/integration-tests/emulated/chains/relays/rococo/src/genesis.rs @@ -18,14 +18,15 @@ use sc_consensus_grandpa::AuthorityId as GrandpaId; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; -use sp_core::{sr25519, storage::Storage}; +use sp_core::storage::Storage; +use sp_keyring::Sr25519Keyring as Keyring; // Polkadot use polkadot_primitives::{AssignmentId, ValidatorId}; // Cumulus use emulated_integration_tests_common::{ - accounts, build_genesis_storage, get_account_id_from_seed, get_host_config, validators, + accounts, build_genesis_storage, get_host_config, validators, }; use parachains_common::Balance; use rococo_runtime_constants::currency::UNITS as ROC; @@ -82,9 +83,7 @@ pub fn genesis() -> Storage { epoch_config: rococo_runtime::BABE_GENESIS_EPOCH_CONFIG, ..Default::default() }, - sudo: rococo_runtime::SudoConfig { - key: Some(get_account_id_from_seed::("Alice")), - }, + sudo: rococo_runtime::SudoConfig { key: Some(Keyring::Alice.to_account_id()) }, configuration: rococo_runtime::ConfigurationConfig { config: get_host_config() }, registrar: rococo_runtime::RegistrarConfig { next_free_para_id: polkadot_primitives::LOWEST_PUBLIC_ID, diff --git a/cumulus/parachains/integration-tests/emulated/common/Cargo.toml b/cumulus/parachains/integration-tests/emulated/common/Cargo.toml index 981ee5c88b4e2..23edaf6bfe655 100644 --- a/cumulus/parachains/integration-tests/emulated/common/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/common/Cargo.toml @@ -21,6 +21,7 @@ sp-runtime = { workspace = true, default-features = true } frame-support = { workspace = true, default-features = true } sp-core = { workspace = true, default-features = true } sp-consensus-babe = { workspace = true, default-features = true } +sp-keyring = { workspace = true, default-features = true } pallet-assets = { workspace = true, default-features = true } pallet-balances = { workspace = true, default-features = true } pallet-message-queue = { workspace = true, default-features = true } diff --git a/cumulus/parachains/integration-tests/emulated/common/src/lib.rs b/cumulus/parachains/integration-tests/emulated/common/src/lib.rs index c6b8889730e51..54050fdae5ace 100644 --- a/cumulus/parachains/integration-tests/emulated/common/src/lib.rs +++ b/cumulus/parachains/integration-tests/emulated/common/src/lib.rs @@ -25,11 +25,9 @@ use sc_consensus_grandpa::AuthorityId as GrandpaId; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; -use sp_core::{sr25519, storage::Storage, Pair, Public}; -use sp_runtime::{ - traits::{AccountIdConversion, IdentifyAccount, Verify}, - BuildStorage, MultiSignature, -}; +use sp_core::storage::Storage; +use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; +use sp_runtime::{traits::AccountIdConversion, BuildStorage}; // Polakdot use parachains_common::BlockNumber; @@ -49,8 +47,6 @@ pub const PROOF_SIZE_THRESHOLD: u64 = 33; /// The default XCM version to set in genesis config. pub const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; -type AccountPublic = ::Signer; - // (trust-backed) Asset registered on AH and reserve-transferred between Parachain and AH pub const RESERVABLE_ASSET_ID: u32 = 1; // ForeignAsset registered on AH and teleported between Penpal and AH @@ -82,21 +78,6 @@ parameter_types! { pub PenpalBSiblingSovereignAccount: AccountId = Sibling::from(PENPAL_B_ID).into_account_truncating(); } -/// Helper function to generate a crypto pair from seed -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -/// Helper function to generate an account ID from seed. -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - pub fn get_host_config() -> HostConfiguration { HostConfiguration { max_upward_queue_count: 10, @@ -130,34 +111,10 @@ pub mod accounts { use super::*; pub const ALICE: &str = "Alice"; pub const BOB: &str = "Bob"; - pub const CHARLIE: &str = "Charlie"; - pub const DAVE: &str = "Dave"; - pub const EVE: &str = "Eve"; - pub const FERDIE: &str = "Ferdie"; - pub const ALICE_STASH: &str = "Alice//stash"; - pub const BOB_STASH: &str = "Bob//stash"; - pub const CHARLIE_STASH: &str = "Charlie//stash"; - pub const DAVE_STASH: &str = "Dave//stash"; - pub const EVE_STASH: &str = "Eve//stash"; - pub const FERDIE_STASH: &str = "Ferdie//stash"; - pub const FERDIE_BEEFY: &str = "Ferdie//stash"; pub const DUMMY_EMPTY: &str = "JohnDoe"; pub fn init_balances() -> Vec { - vec![ - get_account_id_from_seed::(ALICE), - get_account_id_from_seed::(BOB), - get_account_id_from_seed::(CHARLIE), - get_account_id_from_seed::(DAVE), - get_account_id_from_seed::(EVE), - get_account_id_from_seed::(FERDIE), - get_account_id_from_seed::(ALICE_STASH), - get_account_id_from_seed::(BOB_STASH), - get_account_id_from_seed::(CHARLIE_STASH), - get_account_id_from_seed::(DAVE_STASH), - get_account_id_from_seed::(EVE_STASH), - get_account_id_from_seed::(FERDIE_STASH), - ] + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect() } } @@ -166,16 +123,15 @@ pub mod collators { pub fn invulnerables() -> Vec<(AccountId, AuraId)> { vec![ - ( - get_account_id_from_seed::("Alice"), - get_from_seed::("Alice"), - ), - (get_account_id_from_seed::("Bob"), get_from_seed::("Bob")), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ] } } pub mod validators { + use sp_consensus_beefy::test_utils::Keyring; + use super::*; pub fn initial_authorities() -> Vec<( @@ -188,16 +144,15 @@ pub mod validators { AuthorityDiscoveryId, BeefyId, )> { - let seed = "Alice"; vec![( - get_account_id_from_seed::(&format!("{}//stash", seed)), - get_account_id_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), + Sr25519Keyring::AliceStash.to_account_id(), + Sr25519Keyring::Alice.to_account_id(), + BabeId::from(Sr25519Keyring::Alice.public()), + GrandpaId::from(Ed25519Keyring::Alice.public()), + ValidatorId::from(Sr25519Keyring::Alice.public()), + AssignmentId::from(Sr25519Keyring::Alice.public()), + AuthorityDiscoveryId::from(Sr25519Keyring::Alice.public()), + BeefyId::from(Keyring::::Alice.public()), )] } } diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/Cargo.toml index f66a5f1d5fe7e..3d40db6b03ab5 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/Cargo.toml @@ -16,6 +16,7 @@ assert_matches = { workspace = true } # Substrate sp-runtime = { workspace = true } +sp-core = { workspace = true } frame-support = { workspace = true } pallet-balances = { workspace = true } pallet-assets = { workspace = true } diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/lib.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/lib.rs index f4fe1478f3ed1..ec5b829faccad 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/lib.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/lib.rs @@ -36,8 +36,8 @@ mod imports { pub use asset_test_utils::xcm_helpers; pub use emulated_integration_tests_common::{ accounts::DUMMY_EMPTY, - get_account_id_from_seed, test_parachain_is_trusted_teleporter, - test_parachain_is_trusted_teleporter_for_relay, test_relay_is_trusted_teleporter, + test_parachain_is_trusted_teleporter, test_parachain_is_trusted_teleporter_for_relay, + test_relay_is_trusted_teleporter, xcm_emulator::{ assert_expected_events, bx, Chain, Parachain as Para, RelayChain as Relay, Test, TestArgs, TestContext, TestExt, diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs index faff5f7660c20..3dc3633e820b2 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs @@ -13,6 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +use sp_core::Pair; + use crate::imports::*; fn relay_to_para_sender_assertions(t: RelayToParaTest) { @@ -1042,7 +1044,11 @@ fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { ); // Beneficiary is a new (empty) account - let receiver = get_account_id_from_seed::(DUMMY_EMPTY); + let receiver: sp_runtime::AccountId32 = + sp_core::sr25519::Pair::from_string(&format!("//{}", DUMMY_EMPTY), None) + .expect("static values are valid") + .public() + .into(); // Init values for Asset Hub let penpal_location_as_seen_by_ahr = AssetHubRococo::sibling_location_of(PenpalA::para_id()); let sov_penpal_on_ahr = AssetHubRococo::sovereign_account_id_of(penpal_location_as_seen_by_ahr); diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/Cargo.toml index 6b50b6f473ed0..872a8ffa6a8a5 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/Cargo.toml @@ -16,7 +16,6 @@ assert_matches = { workspace = true } # Substrate sp-runtime = { workspace = true } -sp-keyring = { workspace = true } sp-core = { workspace = true } frame-metadata-hash-extension = { workspace = true, default-features = true } frame-support = { workspace = true } diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/lib.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/lib.rs index f568fb4101db1..b5bc9632cd160 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/lib.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/lib.rs @@ -33,8 +33,8 @@ mod imports { pub use asset_test_utils::xcm_helpers; pub use emulated_integration_tests_common::{ accounts::DUMMY_EMPTY, - get_account_id_from_seed, test_parachain_is_trusted_teleporter, - test_parachain_is_trusted_teleporter_for_relay, test_relay_is_trusted_teleporter, + test_parachain_is_trusted_teleporter, test_parachain_is_trusted_teleporter_for_relay, + test_relay_is_trusted_teleporter, xcm_emulator::{ assert_expected_events, bx, Chain, Parachain as Para, RelayChain as Relay, Test, TestArgs, TestContext, TestExt, diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs index 53b6939298da3..0bbe320a254dc 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs @@ -13,6 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +use sp_core::Pair; + use crate::imports::*; fn relay_to_para_sender_assertions(t: RelayToParaTest) { @@ -1043,7 +1045,11 @@ fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { ); // Beneficiary is a new (empty) account - let receiver = get_account_id_from_seed::(DUMMY_EMPTY); + let receiver: sp_runtime::AccountId32 = + sp_core::sr25519::Pair::from_string(&format!("//{}", DUMMY_EMPTY), None) + .expect("static values are valid") + .public() + .into(); // Init values for Asset Hub let penpal_location_as_seen_by_ahr = AssetHubWestend::sibling_location_of(PenpalA::para_id()); let sov_penpal_on_ahr = diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml index 47e0983a41506..044c6f286490d 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml @@ -49,6 +49,7 @@ sp-api = { workspace = true } sp-block-builder = { workspace = true } sp-consensus-aura = { workspace = true } sp-core = { workspace = true } +sp-keyring = { workspace = true } sp-inherents = { workspace = true } sp-genesis-builder = { workspace = true } sp-offchain = { workspace = true } @@ -59,7 +60,11 @@ sp-transaction-pool = { workspace = true } sp-version = { workspace = true } sp-weights = { workspace = true } # num-traits feature needed for dex integer sq root: -primitive-types = { features = ["codec", "num-traits", "scale-info"], workspace = true } +primitive-types = { features = [ + "codec", + "num-traits", + "scale-info", +], workspace = true } # Polkadot rococo-runtime-constants = { workspace = true } diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs index 41b7e622b1b2a..c2f904abc55ad 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs @@ -19,8 +19,9 @@ use alloc::{vec, vec::Vec}; use cumulus_primitives_core::ParaId; use hex_literal::hex; use parachains_common::{genesis_config_helpers::*, AccountId, AuraId, Balance as AssetHubBalance}; -use sp_core::{crypto::UncheckedInto, sr25519}; +use sp_core::crypto::UncheckedInto; use sp_genesis_builder::PresetId; +use sp_keyring::Sr25519Keyring; use testnet_parachains_constants::rococo::xcm_version::SAFE_XCM_VERSION; const ASSET_HUB_ROCOCO_ED: AssetHubBalance = crate::ExistentialDeposit::get(); @@ -122,42 +123,26 @@ pub fn get_preset(id: &PresetId) -> Option> { // initial collators. vec![ ( - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), get_collator_keys_from_seed::("Alice"), ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Bob.to_account_id(), get_collator_keys_from_seed::("Bob")), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), testnet_parachains_constants::rococo::currency::UNITS * 1_000_000, 1000.into(), ), Ok(PRESET_DEVELOPMENT) => asset_hub_rococo_genesis( // initial collators. vec![( - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), get_collator_keys_from_seed::("Alice"), )], vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), + Sr25519Keyring::Alice.to_account_id(), + Sr25519Keyring::Bob.to_account_id(), + Sr25519Keyring::AliceStash.to_account_id(), + Sr25519Keyring::BobStash.to_account_id(), ], testnet_parachains_constants::rococo::currency::UNITS * 1_000_000, 1000.into(), From 533f8ddfdfb9e63a97b07d0428c3c4d0d827ae2d Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Mon, 23 Sep 2024 19:50:50 +0800 Subject: [PATCH 02/23] remove more and add from_str for ed25519 --- Cargo.lock | 3 + .../common/src/genesis_config_helpers.rs | 46 -------------- cumulus/parachains/common/src/lib.rs | 1 - .../src/genesis_config_presets.rs | 29 ++------- .../assets/asset-hub-westend/Cargo.toml | 7 ++- .../src/genesis_config_presets.rs | 43 ++++--------- .../bridge-hubs/bridge-hub-rococo/Cargo.toml | 19 +++--- .../src/genesis_config_presets.rs | 58 +++-------------- .../bridge-hubs/bridge-hub-westend/Cargo.toml | 9 ++- .../src/genesis_config_presets.rs | 58 +++-------------- .../collectives-westend/Cargo.toml | 1 + .../src/genesis_config_presets.rs | 42 +++---------- cumulus/polkadot-parachain/Cargo.toml | 6 +- .../src/chain_spec/coretime.rs | 40 +++++------- .../src/chain_spec/glutton.rs | 21 ++----- .../polkadot-parachain/src/chain_spec/mod.rs | 13 ++-- .../src/chain_spec/penpal.rs | 31 ++-------- .../src/chain_spec/people.rs | 62 +++---------------- .../src/chain_spec/rococo_parachain.rs | 25 +++----- .../src/chain_spec/seedling.rs | 9 +-- .../src/chain_spec/shell.rs | 5 +- cumulus/test/service/src/chain_spec.rs | 61 ++---------------- polkadot/node/service/src/chain_spec.rs | 19 ------ polkadot/node/test/service/src/chain_spec.rs | 38 +++++------- polkadot/runtime/common/Cargo.toml | 1 + polkadot/runtime/common/src/purchase.rs | 28 ++------- .../xcm-executor/integration-tests/src/lib.rs | 5 +- substrate/primitives/keyring/src/ed25519.rs | 29 ++++++++- substrate/primitives/keyring/src/sr25519.rs | 16 ++--- 29 files changed, 197 insertions(+), 528 deletions(-) delete mode 100644 cumulus/parachains/common/src/genesis_config_helpers.rs diff --git a/Cargo.lock b/Cargo.lock index 48ec86f774f3f..f74575ae2f0ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1046,6 +1046,7 @@ dependencies = [ "sp-core 28.0.0", "sp-genesis-builder", "sp-inherents", + "sp-keyring", "sp-offchain", "sp-runtime 31.0.1", "sp-session", @@ -3173,6 +3174,7 @@ dependencies = [ "sp-genesis-builder", "sp-inherents", "sp-io 30.0.0", + "sp-keyring", "sp-offchain", "sp-runtime 31.0.1", "sp-session", @@ -14908,6 +14910,7 @@ dependencies = [ "shell-runtime", "sp-core 28.0.0", "sp-genesis-builder", + "sp-keyring", "staging-xcm", "substrate-build-script-utils", "testnet-parachains-constants", diff --git a/cumulus/parachains/common/src/genesis_config_helpers.rs b/cumulus/parachains/common/src/genesis_config_helpers.rs deleted file mode 100644 index cd98c3a729d26..0000000000000 --- a/cumulus/parachains/common/src/genesis_config_helpers.rs +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! Some common helpers for declaring runtime's presets - -use crate::{AccountId, Signature}; -#[cfg(not(feature = "std"))] -use alloc::format; -use sp_core::{Pair, Public}; -use sp_runtime::traits::{IdentifyAccount, Verify}; - -/// Helper function to generate a crypto pair from seed. -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{seed}"), None) - .expect("static values are valid; qed") - .public() -} - -type AccountPublic = ::Signer; - -/// Helper function to generate an account id from seed. -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - -/// Generate collator keys from seed. -/// -/// This function's return type must always match the session keys of the chain in tuple format. -pub fn get_collator_keys_from_seed(seed: &str) -> ::Public { - get_from_seed::(seed) -} diff --git a/cumulus/parachains/common/src/lib.rs b/cumulus/parachains/common/src/lib.rs index 60040fda9928a..3cffb69daac3f 100644 --- a/cumulus/parachains/common/src/lib.rs +++ b/cumulus/parachains/common/src/lib.rs @@ -17,7 +17,6 @@ extern crate alloc; -pub mod genesis_config_helpers; pub mod impls; pub mod message_queue; pub mod xcm_config; diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs index 9e9c9450b87ec..0adf1ee4cc9c6 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs @@ -19,7 +19,7 @@ use crate::*; use alloc::{vec, vec::Vec}; use cumulus_primitives_core::ParaId; use hex_literal::hex; -use parachains_common::{genesis_config_helpers::*, AccountId, AuraId}; +use parachains_common::{AccountId, AuraId}; use sp_core::crypto::UncheckedInto; use sp_genesis_builder::PresetId; use sp_keyring::Sr25519Keyring; @@ -110,35 +110,16 @@ pub fn get_preset(id: &PresetId) -> Option> { Ok(sp_genesis_builder::LOCAL_TESTNET_RUNTIME_PRESET) => asset_hub_rococo_genesis( // initial collators. vec![ - ( - Sr25519Keyring::Alice.to_account_id(), - get_collator_keys_from_seed::("Alice"), - ), - (Sr25519Keyring::Bob.to_account_id(), get_collator_keys_from_seed::("Bob")), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], + Sr25519Keyring::iter().map(|x| x.to_account_id()).collect(), testnet_parachains_constants::rococo::currency::UNITS * 1_000_000, 1000.into(), ), Ok(sp_genesis_builder::DEV_RUNTIME_PRESET) => asset_hub_rococo_genesis( // initial collators. - vec![( - Sr25519Keyring::Alice.to_account_id(), - get_collator_keys_from_seed::("Alice"), - )], + vec![(Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into())], vec![ Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Bob.to_account_id(), diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml index 1434c3e3b6016..64bde189425a7 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml @@ -49,6 +49,7 @@ sp-api = { workspace = true } sp-block-builder = { workspace = true } sp-consensus-aura = { workspace = true } sp-core = { workspace = true } +sp-keyring = { workspace = true } sp-genesis-builder = { workspace = true } sp-inherents = { workspace = true } sp-offchain = { workspace = true } @@ -59,7 +60,11 @@ sp-storage = { workspace = true } sp-transaction-pool = { workspace = true } sp-version = { workspace = true } # num-traits feature needed for dex integer sq root: -primitive-types = { features = ["codec", "num-traits", "scale-info"], workspace = true } +primitive-types = { features = [ + "codec", + "num-traits", + "scale-info", +], workspace = true } # Polkadot pallet-xcm = { workspace = true } diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs index b287dcd56219a..15ab66e5208d6 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs @@ -19,9 +19,10 @@ use crate::*; use alloc::{vec, vec::Vec}; use cumulus_primitives_core::ParaId; use hex_literal::hex; -use parachains_common::{genesis_config_helpers::*, AccountId, AuraId}; -use sp_core::{crypto::UncheckedInto, sr25519}; +use parachains_common::{AccountId, AuraId}; +use sp_core::crypto::UncheckedInto; use sp_genesis_builder::PresetId; +use sp_keyring::Sr25519Keyring; use testnet_parachains_constants::westend::{ currency::UNITS as WND, xcm_version::SAFE_XCM_VERSION, }; @@ -107,43 +108,21 @@ pub fn get_preset(id: &PresetId) -> Option> { Ok(sp_genesis_builder::LOCAL_TESTNET_RUNTIME_PRESET) => asset_hub_westend_genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), WND * 1_000_000, 1000.into(), ), Ok(sp_genesis_builder::DEV_RUNTIME_PRESET) => asset_hub_westend_genesis( // initial collators. - vec![( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - )], + vec![(Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into())], vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), + Sr25519Keyring::Alice.to_account_id(), + Sr25519Keyring::Bob.to_account_id(), + Sr25519Keyring::AliceStash.to_account_id(), + Sr25519Keyring::BobStash.to_account_id(), ], WND * 1_000_000, 1000.into(), diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml index 9a76e61ecb20c..1738d7db53d08 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml @@ -13,15 +13,13 @@ workspace = true substrate-wasm-builder = { optional = true, workspace = true, default-features = true } [dependencies] -codec = { features = [ - "derive", -], workspace = true } +codec = { features = ["derive"], workspace = true } hex-literal = { workspace = true, default-features = true } log = { workspace = true } -scale-info = { features = [ +scale-info = { features = ["derive"], workspace = true } +serde = { optional = true, features = [ "derive", -], workspace = true } -serde = { optional = true, features = ["derive"], workspace = true, default-features = true } +], workspace = true, default-features = true } serde_json = { features = ["alloc"], workspace = true } # Substrate @@ -47,6 +45,7 @@ sp-api = { workspace = true } sp-block-builder = { workspace = true } sp-consensus-aura = { workspace = true } sp-core = { workspace = true } +sp-keyring = { workspace = true } sp-genesis-builder = { workspace = true } sp-inherents = { workspace = true } sp-io = { workspace = true } @@ -74,9 +73,7 @@ cumulus-pallet-aura-ext = { workspace = true } cumulus-pallet-parachain-system = { workspace = true } cumulus-pallet-session-benchmarking = { workspace = true } cumulus-pallet-xcm = { workspace = true } -cumulus-pallet-xcmp-queue = { features = [ - "bridging", -], workspace = true } +cumulus-pallet-xcmp-queue = { features = ["bridging"], workspace = true } cumulus-primitives-aura = { workspace = true } cumulus-primitives-core = { workspace = true } cumulus-primitives-storage-weight-reclaim = { workspace = true } @@ -124,7 +121,9 @@ bridge-hub-common = { workspace = true } [dev-dependencies] bridge-hub-test-utils = { workspace = true, default-features = true } -bridge-runtime-common = { features = ["integrity-test"], workspace = true, default-features = true } +bridge-runtime-common = { features = [ + "integrity-test", +], workspace = true, default-features = true } pallet-bridge-relayers = { features = ["integrity-test"], workspace = true } sp-keyring = { workspace = true, default-features = true } snowbridge-runtime-test-common = { workspace = true, default-features = true } diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs index e5d615985646b..16873515e6380 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs @@ -18,9 +18,9 @@ use crate::*; use alloc::{vec, vec::Vec}; use cumulus_primitives_core::ParaId; -use parachains_common::{genesis_config_helpers::*, AccountId, AuraId}; -use sp_core::sr25519; +use parachains_common::{AccountId, AuraId}; use sp_genesis_builder::PresetId; +use sp_keyring::Sr25519Keyring; use testnet_parachains_constants::rococo::xcm_version::SAFE_XCM_VERSION; const BRIDGE_HUB_ROCOCO_ED: Balance = ExistentialDeposit::get(); @@ -88,61 +88,23 @@ pub fn get_preset(id: &sp_genesis_builder::PresetId) -> Option bridge_hub_rococo_genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), 1013.into(), - Some(get_account_id_from_seed::("Bob")), + Some(Sr25519Keyring::Bob.to_account_id()), rococo_runtime_constants::system_parachain::ASSET_HUB_ID.into(), ), Ok(sp_genesis_builder::DEV_RUNTIME_PRESET) => bridge_hub_rococo_genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), 1013.into(), - Some(get_account_id_from_seed::("Bob")), + Some(Sr25519Keyring::Bob.to_account_id()), rococo_runtime_constants::system_parachain::ASSET_HUB_ID.into(), ), _ => return None, diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml index a0233bf2ea452..07633ebc30588 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml @@ -17,7 +17,9 @@ codec = { features = ["derive"], workspace = true } hex-literal = { workspace = true, default-features = true } log = { workspace = true } scale-info = { features = ["derive"], workspace = true } -serde = { optional = true, features = ["derive"], workspace = true, default-features = true } +serde = { optional = true, features = [ + "derive", +], workspace = true, default-features = true } serde_json = { features = ["alloc"], workspace = true } # Substrate @@ -43,6 +45,7 @@ sp-api = { workspace = true } sp-block-builder = { workspace = true } sp-consensus-aura = { workspace = true } sp-core = { workspace = true } +sp-keyring = { workspace = true } sp-genesis-builder = { workspace = true } sp-inherents = { workspace = true } sp-io = { workspace = true } @@ -117,7 +120,9 @@ snowbridge-runtime-common = { workspace = true } [dev-dependencies] bridge-hub-test-utils = { workspace = true, default-features = true } -bridge-runtime-common = { features = ["integrity-test"], workspace = true, default-features = true } +bridge-runtime-common = { features = [ + "integrity-test", +], workspace = true, default-features = true } pallet-bridge-relayers = { features = ["integrity-test"], workspace = true } sp-keyring = { workspace = true, default-features = true } snowbridge-runtime-test-common = { workspace = true, default-features = true } diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/genesis_config_presets.rs index 4c948656d9f80..5ab17e019ecab 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/genesis_config_presets.rs @@ -18,9 +18,9 @@ use crate::*; use alloc::{vec, vec::Vec}; use cumulus_primitives_core::ParaId; -use parachains_common::{genesis_config_helpers::*, AccountId, AuraId}; -use sp_core::sr25519; +use parachains_common::{AccountId, AuraId}; use sp_genesis_builder::PresetId; +use sp_keyring::Sr25519Keyring; use testnet_parachains_constants::westend::xcm_version::SAFE_XCM_VERSION; const BRIDGE_HUB_WESTEND_ED: Balance = ExistentialDeposit::get(); @@ -88,61 +88,23 @@ pub fn get_preset(id: &sp_genesis_builder::PresetId) -> Option bridge_hub_westend_genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), 1002.into(), - Some(get_account_id_from_seed::("Bob")), + Some(Sr25519Keyring::Bob.to_account_id()), westend_runtime_constants::system_parachain::ASSET_HUB_ID.into(), ), Ok(sp_genesis_builder::DEV_RUNTIME_PRESET) => bridge_hub_westend_genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), 1002.into(), - Some(get_account_id_from_seed::("Bob")), + Some(Sr25519Keyring::Bob.to_account_id()), westend_runtime_constants::system_parachain::ASSET_HUB_ID.into(), ), _ => return None, diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml index 170d6d2260574..70c7612cd41df 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml @@ -50,6 +50,7 @@ sp-arithmetic = { workspace = true } sp-block-builder = { workspace = true } sp-consensus-aura = { workspace = true } sp-core = { workspace = true } +sp-keyring = { workspace = true } sp-genesis-builder = { workspace = true } sp-inherents = { workspace = true } sp-offchain = { workspace = true } diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/genesis_config_presets.rs index 30a23d7aaea45..d00f568b2844e 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/genesis_config_presets.rs @@ -18,9 +18,9 @@ use crate::*; use alloc::{vec, vec::Vec}; use cumulus_primitives_core::ParaId; -use parachains_common::{genesis_config_helpers::*, AccountId, AuraId}; -use sp_core::sr25519; +use parachains_common::{AccountId, AuraId}; use sp_genesis_builder::PresetId; +use sp_keyring::Sr25519Keyring; use testnet_parachains_constants::westend::xcm_version::SAFE_XCM_VERSION; const COLLECTIVES_WESTEND_ED: Balance = ExistentialDeposit::get(); @@ -73,42 +73,20 @@ pub fn get_preset(id: &sp_genesis_builder::PresetId) -> Option collectives_westend_genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), 1001.into(), ), Ok(sp_genesis_builder::DEV_RUNTIME_PRESET) => collectives_westend_genesis( // initial collators. - vec![( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - )], + vec![(Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into())], vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), + Sr25519Keyring::Alice.to_account_id(), + Sr25519Keyring::Bob.to_account_id(), + Sr25519Keyring::AliceStash.to_account_id(), + Sr25519Keyring::BobStash.to_account_id(), ], 1001.into(), ), diff --git a/cumulus/polkadot-parachain/Cargo.toml b/cumulus/polkadot-parachain/Cargo.toml index ad88be60d747b..3898c74ebf4b9 100644 --- a/cumulus/polkadot-parachain/Cargo.toml +++ b/cumulus/polkadot-parachain/Cargo.toml @@ -22,7 +22,10 @@ serde = { features = ["derive"], workspace = true, default-features = true } serde_json = { workspace = true, default-features = true } # Local -polkadot-parachain-lib = { features = ["rococo-native", "westend-native"], workspace = true } +polkadot-parachain-lib = { features = [ + "rococo-native", + "westend-native", +], workspace = true } rococo-parachain-runtime = { workspace = true } shell-runtime = { workspace = true } glutton-westend-runtime = { workspace = true } @@ -46,6 +49,7 @@ testnet-parachains-constants = { features = [ # Substrate sp-core = { workspace = true, default-features = true } +sp-keyring = { workspace = true, default-features = true } sc-cli = { workspace = true, default-features = true } sc-service = { workspace = true, default-features = true } sc-chain-spec = { workspace = true, default-features = true } diff --git a/cumulus/polkadot-parachain/src/chain_spec/coretime.rs b/cumulus/polkadot-parachain/src/chain_spec/coretime.rs index fec3f56e6d352..60153e2da125a 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/coretime.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/coretime.rs @@ -146,13 +146,11 @@ pub fn chain_type_name(chain_type: &ChainType) -> Cow { /// Sub-module for Rococo setup. pub mod rococo { use super::{chain_type_name, CoretimeRuntimeType, ParaId}; - use crate::chain_spec::{ - get_account_id_from_seed, get_collator_keys_from_seed, SAFE_XCM_VERSION, - }; + use crate::chain_spec::SAFE_XCM_VERSION; use parachains_common::{AccountId, AuraId, Balance}; use polkadot_parachain_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_chain_spec::ChainType; - use sp_core::sr25519; + use sp_keyring::Sr25519Keyring; pub(crate) const CORETIME_ROCOCO: &str = "coretime-rococo"; pub(crate) const CORETIME_ROCOCO_LOCAL: &str = "coretime-rococo-local"; @@ -187,15 +185,12 @@ pub mod rococo { .with_chain_type(chain_type) .with_genesis_config_patch(genesis( // initial collators. - vec![( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - )], + vec![(Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into())], vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), + Sr25519Keyring::Alice.to_account_id(), + Sr25519Keyring::Bob.to_account_id(), + Sr25519Keyring::AliceStash.to_account_id(), + Sr25519Keyring::BobStash.to_account_id(), ], para_id, )) @@ -235,7 +230,7 @@ pub mod rococo { "safeXcmVersion": Some(SAFE_XCM_VERSION), }, "sudo": { - "key": Some(get_account_id_from_seed::("Alice")), + "key": Some(Sr25519Keyring::Alice.to_account_id()), }, }) } @@ -244,12 +239,10 @@ pub mod rococo { /// Sub-module for Westend setup. pub mod westend { use super::{chain_type_name, CoretimeRuntimeType, GenericChainSpec, ParaId}; - use crate::chain_spec::{ - get_account_id_from_seed, get_collator_keys_from_seed, SAFE_XCM_VERSION, - }; + use crate::chain_spec::SAFE_XCM_VERSION; use parachains_common::{AccountId, AuraId, Balance}; use polkadot_parachain_lib::chain_spec::Extensions; - use sp_core::sr25519; + use sp_keyring::Sr25519Keyring; pub(crate) const CORETIME_WESTEND: &str = "coretime-westend"; pub(crate) const CORETIME_WESTEND_LOCAL: &str = "coretime-westend-local"; @@ -277,15 +270,12 @@ pub mod westend { .with_chain_type(chain_type) .with_genesis_config_patch(genesis( // initial collators. - vec![( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - )], + vec![(Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into())], vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), + Sr25519Keyring::Alice.to_account_id(), + Sr25519Keyring::Bob.to_account_id(), + Sr25519Keyring::AliceStash.to_account_id(), + Sr25519Keyring::BobStash.to_account_id(), ], para_id, )) diff --git a/cumulus/polkadot-parachain/src/chain_spec/glutton.rs b/cumulus/polkadot-parachain/src/chain_spec/glutton.rs index 136411b93e8bc..25a106897b7ce 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/glutton.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/glutton.rs @@ -14,14 +14,11 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . -use crate::chain_spec::get_account_id_from_seed; use cumulus_primitives_core::ParaId; use parachains_common::AuraId; use polkadot_parachain_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_service::ChainType; -use sp_core::sr25519; - -use super::get_collator_keys_from_seed; +use sp_keyring::Sr25519Keyring; fn glutton_genesis(parachain_id: ParaId, collators: Vec) -> serde_json::Value { serde_json::json!( { @@ -29,7 +26,7 @@ fn glutton_genesis(parachain_id: ParaId, collators: Vec) -> serde_json:: "parachainId": parachain_id }, "sudo": { - "key": Some(get_account_id_from_seed::("Alice")), + "key": Some(Sr25519Keyring::Alice.to_account_id()), }, "aura": { "authorities": collators }, }) @@ -45,7 +42,7 @@ pub fn glutton_westend_development_config(para_id: ParaId) -> GenericChainSpec { .with_chain_type(ChainType::Local) .with_genesis_config_patch(glutton_genesis( para_id, - vec![get_collator_keys_from_seed::("Alice")], + vec![Sr25519Keyring::Alice.public().into()], )) .build() } @@ -60,10 +57,7 @@ pub fn glutton_westend_local_config(para_id: ParaId) -> GenericChainSpec { .with_chain_type(ChainType::Local) .with_genesis_config_patch(glutton_genesis( para_id, - vec![ - get_collator_keys_from_seed::("Alice"), - get_collator_keys_from_seed::("Bob"), - ], + vec![Sr25519Keyring::Alice.public().into(), Sr25519Keyring::Bob.public().into()], )) .build() } @@ -81,10 +75,7 @@ pub fn glutton_westend_config(para_id: ParaId) -> GenericChainSpec { .with_chain_type(ChainType::Live) .with_genesis_config_patch(glutton_westend_genesis( para_id, - vec![ - get_collator_keys_from_seed::("Alice"), - get_collator_keys_from_seed::("Bob"), - ], + vec![Sr25519Keyring::Alice.public().into(), Sr25519Keyring::Bob.public().into()], )) .with_protocol_id(format!("glutton-westend-{}", para_id).as_str()) .with_properties(properties) @@ -97,7 +88,7 @@ fn glutton_westend_genesis(parachain_id: ParaId, collators: Vec) -> serd "parachainId": parachain_id }, "sudo": { - "key": Some(get_account_id_from_seed::("Alice")), + "key": Some(Sr25519Keyring::Alice.to_account_id()), }, "aura": { "authorities": collators }, }) diff --git a/cumulus/polkadot-parachain/src/chain_spec/mod.rs b/cumulus/polkadot-parachain/src/chain_spec/mod.rs index adb3eb2c0e04a..95c21ca6d9fd9 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/mod.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/mod.rs @@ -15,9 +15,6 @@ // along with Cumulus. If not, see . use cumulus_primitives_core::ParaId; -pub(crate) use parachains_common::genesis_config_helpers::{ - get_account_id_from_seed, get_collator_keys_from_seed, get_from_seed, -}; use polkadot_parachain_lib::{ chain_spec::{GenericChainSpec, LoadSpec}, runtime::{ @@ -287,7 +284,7 @@ mod tests { use super::*; use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup, ChainType, Extension}; use serde::{Deserialize, Serialize}; - use sp_core::sr25519; + use sp_keyring::Sr25519Keyring; #[derive( Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension, Default, @@ -323,12 +320,12 @@ mod tests { .with_id(id) .with_chain_type(ChainType::Local) .with_genesis_config_patch(crate::chain_spec::rococo_parachain::testnet_genesis( - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), vec![ - get_from_seed::("Alice"), - get_from_seed::("Bob"), + rococo_parachain_runtime::AuraId::from(Sr25519Keyring::Alice.public()), + rococo_parachain_runtime::AuraId::from(Sr25519Keyring::Bob.public()), ], - vec![get_account_id_from_seed::("Alice")], + vec![Sr25519Keyring::Bob.to_account_id()], 1000.into(), )) .build() diff --git a/cumulus/polkadot-parachain/src/chain_spec/penpal.rs b/cumulus/polkadot-parachain/src/chain_spec/penpal.rs index 5645bf06b67b2..860258647bd9f 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/penpal.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/penpal.rs @@ -14,12 +14,12 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . -use crate::chain_spec::{get_account_id_from_seed, get_collator_keys_from_seed, SAFE_XCM_VERSION}; +use crate::chain_spec::SAFE_XCM_VERSION; use cumulus_primitives_core::ParaId; use parachains_common::{AccountId, AuraId}; use polkadot_parachain_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_service::ChainType; -use sp_core::sr25519; +use sp_keyring::Sr25519Keyring; pub fn get_penpal_chain_spec(id: ParaId, relay_chain: &str) -> GenericChainSpec { // Give your base currency a unit name and decimal places @@ -41,29 +41,10 @@ pub fn get_penpal_chain_spec(id: ParaId, relay_chain: &str) -> GenericChainSpec .with_genesis_config_patch(penpal_testnet_genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), id, )) .build() @@ -105,7 +86,7 @@ fn penpal_testnet_genesis( "safeXcmVersion": Some(SAFE_XCM_VERSION), }, "sudo": { - "key": Some(get_account_id_from_seed::("Alice")), + "key": Some(Sr25519Keyring::Alice.to_account_id()), }, }) } diff --git a/cumulus/polkadot-parachain/src/chain_spec/people.rs b/cumulus/polkadot-parachain/src/chain_spec/people.rs index 3c1150d95422b..eb721941049ef 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/people.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/people.rs @@ -120,13 +120,11 @@ fn ensure_id(id: &str) -> Result<&str, String> { /// Sub-module for Rococo setup. pub mod rococo { use super::{ParaId, PeopleBalance}; - use crate::chain_spec::{ - get_account_id_from_seed, get_collator_keys_from_seed, SAFE_XCM_VERSION, - }; + use crate::chain_spec::SAFE_XCM_VERSION; use parachains_common::{AccountId, AuraId}; use polkadot_parachain_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_chain_spec::ChainType; - use sp_core::sr25519; + use sp_keyring::Sr25519Keyring; pub(crate) const PEOPLE_ROCOCO: &str = "people-rococo"; pub(crate) const PEOPLE_ROCOCO_LOCAL: &str = "people-rococo-local"; @@ -155,29 +153,10 @@ pub mod rococo { .with_genesis_config_patch(genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), para_id, )) .with_properties(properties) @@ -230,13 +209,11 @@ pub mod rococo { /// Sub-module for Westend setup. pub mod westend { use super::{ParaId, PeopleBalance}; - use crate::chain_spec::{ - get_account_id_from_seed, get_collator_keys_from_seed, SAFE_XCM_VERSION, - }; + use crate::chain_spec::SAFE_XCM_VERSION; use parachains_common::{AccountId, AuraId}; use polkadot_parachain_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_chain_spec::ChainType; - use sp_core::sr25519; + use sp_keyring::Sr25519Keyring; pub(crate) const PEOPLE_WESTEND: &str = "people-westend"; pub(crate) const PEOPLE_WESTEND_LOCAL: &str = "people-westend-local"; @@ -265,29 +242,10 @@ pub mod westend { .with_genesis_config_patch(genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), para_id, )) .with_properties(properties) diff --git a/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs b/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs index 251926838d246..89b631337e508 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs @@ -16,14 +16,15 @@ //! ChainSpecs dedicated to Rococo parachain setups (for testing and example purposes) -use crate::chain_spec::{get_from_seed, SAFE_XCM_VERSION}; +use crate::chain_spec::SAFE_XCM_VERSION; use cumulus_primitives_core::ParaId; use hex_literal::hex; -use parachains_common::{genesis_config_helpers::get_account_id_from_seed, AccountId}; +use parachains_common::AccountId; use polkadot_parachain_lib::chain_spec::{Extensions, GenericChainSpec}; use rococo_parachain_runtime::AuraId; use sc_chain_spec::ChainType; -use sp_core::{crypto::UncheckedInto, sr25519}; +use sp_core::crypto::UncheckedInto; +use sp_keyring::Sr25519Keyring; pub fn rococo_parachain_local_config() -> GenericChainSpec { GenericChainSpec::builder( @@ -34,22 +35,12 @@ pub fn rococo_parachain_local_config() -> GenericChainSpec { .with_id("local_testnet") .with_chain_type(ChainType::Local) .with_genesis_config_patch(testnet_genesis( - get_account_id_from_seed::("Alice"), - vec![get_from_seed::("Alice"), get_from_seed::("Bob")], + Sr25519Keyring::Alice.to_account_id(), vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + AuraId::from(Sr25519Keyring::Alice.public()), + AuraId::from(Sr25519Keyring::Bob.public()), ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), 1000.into(), )) .build() diff --git a/cumulus/polkadot-parachain/src/chain_spec/seedling.rs b/cumulus/polkadot-parachain/src/chain_spec/seedling.rs index a104b58db5d2f..a8bb2d7e5cfb4 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/seedling.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/seedling.rs @@ -14,14 +14,11 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . -use crate::chain_spec::get_account_id_from_seed; use cumulus_primitives_core::ParaId; use parachains_common::{AccountId, AuraId}; use polkadot_parachain_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_service::ChainType; -use sp_core::sr25519; - -use super::get_collator_keys_from_seed; +use sp_keyring::Sr25519Keyring; pub fn get_seedling_chain_spec() -> GenericChainSpec { GenericChainSpec::builder( @@ -32,9 +29,9 @@ pub fn get_seedling_chain_spec() -> GenericChainSpec { .with_id("seedling_local_testnet") .with_chain_type(ChainType::Local) .with_genesis_config_patch(seedling_testnet_genesis( - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), 2000.into(), - vec![get_collator_keys_from_seed::("Alice")], + vec![Sr25519Keyring::Alice.public().into()], )) .with_boot_nodes(Vec::new()) .build() diff --git a/cumulus/polkadot-parachain/src/chain_spec/shell.rs b/cumulus/polkadot-parachain/src/chain_spec/shell.rs index 0a7816ab31932..561a89400153f 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/shell.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/shell.rs @@ -18,8 +18,7 @@ use cumulus_primitives_core::ParaId; use parachains_common::AuraId; use polkadot_parachain_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_service::ChainType; - -use super::get_collator_keys_from_seed; +use sp_keyring::Sr25519Keyring; pub fn get_shell_chain_spec() -> GenericChainSpec { GenericChainSpec::builder( @@ -31,7 +30,7 @@ pub fn get_shell_chain_spec() -> GenericChainSpec { .with_chain_type(ChainType::Local) .with_genesis_config_patch(shell_testnet_genesis( 1000.into(), - vec![get_collator_keys_from_seed::("Alice")], + vec![Sr25519Keyring::Alice.public().into()], )) .with_boot_nodes(Vec::new()) .build() diff --git a/cumulus/test/service/src/chain_spec.rs b/cumulus/test/service/src/chain_spec.rs index ae71028ad486a..adfb94bcd7a48 100644 --- a/cumulus/test/service/src/chain_spec.rs +++ b/cumulus/test/service/src/chain_spec.rs @@ -17,24 +17,16 @@ #![allow(missing_docs)] use cumulus_primitives_core::ParaId; -use cumulus_test_runtime::{AccountId, Signature}; +use cumulus_test_runtime::AccountId; use parachains_common::AuraId; use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup}; use sc_service::ChainType; use serde::{Deserialize, Serialize}; -use sp_core::{sr25519, Pair, Public}; -use sp_runtime::traits::{IdentifyAccount, Verify}; +use sp_keyring::Sr25519Keyring; /// Specialized `ChainSpec` for the normal parachain runtime. pub type ChainSpec = sc_service::GenericChainSpec; -/// Helper function to generate a crypto pair from seed -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - /// The extensions for the [`ChainSpec`]. #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)] #[serde(deny_unknown_fields)] @@ -50,16 +42,6 @@ impl Extensions { } } -type AccountPublic = ::Signer; - -/// Helper function to generate an account ID from seed. -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - /// Get the chain spec for a specific parachain ID. /// The given accounts are initialized with funds in addition /// to the default known accounts. @@ -106,42 +88,11 @@ pub fn testnet_genesis_with_default_endowed( mut extra_endowed_accounts: Vec, self_para_id: Option, ) -> serde_json::Value { - let mut endowed = vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ]; + let mut endowed = Sr25519Keyring::iter().map(|k| k.to_account_id()).collect::>(); endowed.append(&mut extra_endowed_accounts); - let invulnerables = vec![ - get_collator_keys_from_seed::("Alice"), - get_collator_keys_from_seed::("Bob"), - get_collator_keys_from_seed::("Charlie"), - get_collator_keys_from_seed::("Dave"), - get_collator_keys_from_seed::("Eve"), - get_collator_keys_from_seed::("Ferdie"), - ]; - testnet_genesis( - get_account_id_from_seed::("Alice"), - invulnerables, - endowed, - self_para_id, - ) -} - -/// Generate collator keys from seed. -/// -/// This function's return type must always match the session keys of the chain in tuple format. -pub fn get_collator_keys_from_seed(seed: &str) -> ::Public { - get_from_seed::(seed) + let invulnerables = + Sr25519Keyring::iter().take(6).map(|k| k.public().into()).collect::>(); + testnet_genesis(Sr25519Keyring::Alice.to_account_id(), invulnerables, endowed, self_para_id) } /// Creates a local testnet genesis with endowed accounts. diff --git a/polkadot/node/service/src/chain_spec.rs b/polkadot/node/service/src/chain_spec.rs index fe360e7b8c769..3866c6950e091 100644 --- a/polkadot/node/service/src/chain_spec.rs +++ b/polkadot/node/service/src/chain_spec.rs @@ -27,10 +27,6 @@ use serde::{Deserialize, Serialize}; #[cfg(feature = "westend-native")] use westend_runtime as westend; -use polkadot_primitives::{AccountId, AccountPublic}; -use sp_core::{Pair, Public}; -use sp_runtime::traits::IdentifyAccount; - #[cfg(feature = "westend-native")] const WESTEND_STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; #[cfg(feature = "rococo-native")] @@ -257,18 +253,3 @@ pub fn versi_local_testnet_config() -> Result { .with_protocol_id("versi") .build()) } - -/// Helper function to generate a crypto pair from seed -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -/// Helper function to generate an account ID from seed -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} diff --git a/polkadot/node/test/service/src/chain_spec.rs b/polkadot/node/test/service/src/chain_spec.rs index 00d62af0b2734..076e420acaf73 100644 --- a/polkadot/node/test/service/src/chain_spec.rs +++ b/polkadot/node/test/service/src/chain_spec.rs @@ -16,18 +16,19 @@ //! Chain specifications for the test runtime. +use std::str::FromStr; + use pallet_staking::Forcing; use polkadot_primitives::{ AccountId, AssignmentId, SchedulerParams, ValidatorId, MAX_CODE_SIZE, MAX_POV_SIZE, }; use polkadot_service::chain_spec::Extensions; -pub use polkadot_service::chain_spec::{get_account_id_from_seed, get_from_seed}; use polkadot_test_runtime::BABE_GENESIS_EPOCH_CONFIG; use sc_chain_spec::{ChainSpec, ChainType}; use sc_consensus_grandpa::AuthorityId as GrandpaId; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; -use sp_core::sr25519; +use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; use sp_runtime::Perbill; use test_runtime_constants::currency::DOTS; @@ -65,7 +66,7 @@ pub fn polkadot_local_testnet_config() -> PolkadotChainSpec { pub fn polkadot_local_testnet_genesis() -> serde_json::Value { polkadot_testnet_genesis( vec![get_authority_keys_from_seed("Alice"), get_authority_keys_from_seed("Bob")], - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), None, ) } @@ -74,32 +75,21 @@ pub fn polkadot_local_testnet_genesis() -> serde_json::Value { fn get_authority_keys_from_seed( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { + let sr25519_keyring = Sr25519Keyring::from_str(seed).expect("Parse keyring error"); + let ed25519_keyring = Ed25519Keyring::from_str(seed).expect("Parse keyring error"); ( - get_account_id_from_seed::(&format!("{}//stash", seed)), - get_account_id_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), + sr25519_keyring.to_account_id(), + sr25519_keyring.to_account_id(), + BabeId::from(sr25519_keyring.public()), + GrandpaId::from(ed25519_keyring.public()), + ValidatorId::from(sr25519_keyring.public()), + AssignmentId::from(sr25519_keyring.public()), + AuthorityDiscoveryId::from(sr25519_keyring.public()), ) } fn testnet_accounts() -> Vec { - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ] + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect() } /// Helper function to create polkadot `RuntimeGenesisConfig` for testing diff --git a/polkadot/runtime/common/Cargo.toml b/polkadot/runtime/common/Cargo.toml index cda6f3240dd2e..ad082f179b2f0 100644 --- a/polkadot/runtime/common/Cargo.toml +++ b/polkadot/runtime/common/Cargo.toml @@ -27,6 +27,7 @@ sp-runtime = { features = ["serde"], workspace = true } sp-session = { workspace = true } sp-staking = { features = ["serde"], workspace = true } sp-core = { features = ["serde"], workspace = true } +sp-keyring = { workspace = true } sp-npos-elections = { features = ["serde"], workspace = true } pallet-authorship = { workspace = true } diff --git a/polkadot/runtime/common/src/purchase.rs b/polkadot/runtime/common/src/purchase.rs index 9cbb907536d94..88a5a2f745360 100644 --- a/polkadot/runtime/common/src/purchase.rs +++ b/polkadot/runtime/common/src/purchase.rs @@ -479,7 +479,8 @@ where mod tests { use super::*; - use sp_core::{crypto::AccountId32, ed25519, Pair, Public, H256}; + use sp_core::{crypto::AccountId32, H256}; + use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; // The testing primitives are very useful for avoiding having to work with signatures // or public keys. `u64` is used as the `AccountId` and no `Signature`s are required. use crate::purchase; @@ -488,7 +489,7 @@ mod tests { traits::{Currency, WithdrawReasons}, }; use sp_runtime::{ - traits::{BlakeTwo256, Dispatchable, IdentifyAccount, Identity, IdentityLookup, Verify}, + traits::{BlakeTwo256, Dispatchable, Identity, IdentityLookup, Verify}, ArithmeticError, BuildStorage, DispatchError::BadOrigin, MultiSignature, @@ -602,33 +603,16 @@ mod tests { Balances::make_free_balance_be(&payment_account(), 100_000); } - type AccountPublic = ::Signer; - - /// Helper function to generate a crypto pair from seed - fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() - } - - /// Helper function to generate an account ID from seed - fn get_account_id_from_seed(seed: &str) -> AccountId - where - AccountPublic: From<::Public>, - { - AccountPublic::from(get_from_seed::(seed)).into_account() - } - fn alice() -> AccountId { - get_account_id_from_seed::("Alice") + Sr25519Keyring::Alice.to_account_id() } fn alice_ed25519() -> AccountId { - get_account_id_from_seed::("Alice") + Ed25519Keyring::Alice.to_account_id() } fn bob() -> AccountId { - get_account_id_from_seed::("Bob") + Sr25519Keyring::Bob.to_account_id() } fn alice_signature() -> [u8; 64] { diff --git a/polkadot/xcm/xcm-executor/integration-tests/src/lib.rs b/polkadot/xcm/xcm-executor/integration-tests/src/lib.rs index 6f44cc0a75d55..020a4a54285e9 100644 --- a/polkadot/xcm/xcm-executor/integration-tests/src/lib.rs +++ b/polkadot/xcm/xcm-executor/integration-tests/src/lib.rs @@ -23,8 +23,7 @@ use polkadot_test_client::{ TestClientBuilder, TestClientBuilderExt, }; use polkadot_test_runtime::{pallet_test_notifier, xcm_config::XcmConfig}; -use polkadot_test_service::{chain_spec::get_account_id_from_seed, construct_extrinsic}; -use sp_core::sr25519; +use polkadot_test_service::construct_extrinsic; use sp_runtime::traits::Block; use sp_state_machine::InspectState; use xcm::{latest::prelude::*, VersionedResponse, VersionedXcm}; @@ -342,7 +341,7 @@ fn deposit_reserve_asset_works_for_any_xcm_sender() { let weight_limit = Unlimited; let reserve = Location::parent(); let dest = Location::new(1, [Parachain(2000)]); - let beneficiary_id = get_account_id_from_seed::("Alice"); + let beneficiary_id = sp_keyring::Sr25519Keyring::Alice.to_account_id(); let beneficiary = Location::new(0, [AccountId32 { network: None, id: beneficiary_id.into() }]); // spends up to half of fees for execution on reserve and other half for execution on diff --git a/substrate/primitives/keyring/src/ed25519.rs b/substrate/primitives/keyring/src/ed25519.rs index 98ca368e53caa..2f398d3d5d8c9 100644 --- a/substrate/primitives/keyring/src/ed25519.rs +++ b/substrate/primitives/keyring/src/ed25519.rs @@ -27,7 +27,7 @@ use sp_core::{ use sp_runtime::AccountId32; extern crate alloc; -use alloc::{format, string::String, vec::Vec}; +use alloc::{fmt, format, str::FromStr, string::String, vec::Vec}; /// Set of test accounts. #[derive( @@ -134,6 +134,33 @@ impl From for sp_runtime::MultiSigner { } } +#[derive(Debug)] +pub struct ParseKeyringError; + +impl fmt::Display for ParseKeyringError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "ParseKeyringError") + } +} + +impl FromStr for Keyring { + type Err = ParseKeyringError; + + fn from_str(s: &str) -> Result::Err> { + match s { + "Alice" => Ok(Keyring::Alice), + "Bob" => Ok(Keyring::Bob), + "Charlie" => Ok(Keyring::Charlie), + "Dave" => Ok(Keyring::Dave), + "Eve" => Ok(Keyring::Eve), + "Ferdie" => Ok(Keyring::Ferdie), + "One" => Ok(Keyring::One), + "Two" => Ok(Keyring::Two), + _ => Err(ParseKeyringError), + } + } +} + impl From for Public { fn from(k: Keyring) -> Self { Public::from_raw(k.into()) diff --git a/substrate/primitives/keyring/src/sr25519.rs b/substrate/primitives/keyring/src/sr25519.rs index a3a506152d7d6..8e13c39af0056 100644 --- a/substrate/primitives/keyring/src/sr25519.rs +++ b/substrate/primitives/keyring/src/sr25519.rs @@ -159,14 +159,14 @@ impl FromStr for Keyring { fn from_str(s: &str) -> Result::Err> { match s { - "alice" => Ok(Keyring::Alice), - "bob" => Ok(Keyring::Bob), - "charlie" => Ok(Keyring::Charlie), - "dave" => Ok(Keyring::Dave), - "eve" => Ok(Keyring::Eve), - "ferdie" => Ok(Keyring::Ferdie), - "one" => Ok(Keyring::One), - "two" => Ok(Keyring::Two), + "Alice" => Ok(Keyring::Alice), + "Bob" => Ok(Keyring::Bob), + "Charlie" => Ok(Keyring::Charlie), + "Dave" => Ok(Keyring::Dave), + "Eve" => Ok(Keyring::Eve), + "Ferdie" => Ok(Keyring::Ferdie), + "One" => Ok(Keyring::One), + "Two" => Ok(Keyring::Two), _ => Err(ParseKeyringError), } } From 12d0b3a17202d9a4eb1fdf884d2ea11935dca0a1 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Wed, 2 Oct 2024 21:00:58 +0800 Subject: [PATCH 03/23] remove all --- Cargo.lock | 5 + cumulus/xcm/xcm-emulator/Cargo.toml | 1 + cumulus/xcm/xcm-emulator/src/lib.rs | 21 ++-- polkadot/node/test/service/src/chain_spec.rs | 4 +- polkadot/runtime/common/src/purchase.rs | 3 +- polkadot/runtime/rococo/Cargo.toml | 1 + .../rococo/src/genesis_config_presets.rs | 96 ++++++++++--------- polkadot/runtime/westend/Cargo.toml | 1 + .../westend/src/genesis_config_presets.rs | 95 ++++++++++-------- substrate/bin/node/cli/Cargo.toml | 39 +++++--- substrate/bin/node/cli/src/chain_spec.rs | 96 +++++++++---------- substrate/bin/node/testing/src/bench.rs | 23 +---- substrate/bin/node/testing/src/keyring.rs | 42 +++++--- substrate/primitives/keyring/src/sr25519.rs | 8 +- templates/parachain/runtime/Cargo.toml | 9 +- .../runtime/src/genesis_config_presets.rs | 58 ++--------- templates/solochain/node/src/chain_spec.rs | 60 ++++-------- 17 files changed, 264 insertions(+), 298 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bed10ab78d771..1e3606b2a142c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2390,6 +2390,8 @@ dependencies = [ "frame-support", "parachains-common", "sp-core 28.0.0", + "sp-keyring", + "staging-xcm", "testnet-parachains-constants", ] @@ -13158,6 +13160,7 @@ dependencies = [ "sp-core 28.0.0", "sp-genesis-builder", "sp-inherents", + "sp-keyring", "sp-offchain", "sp-runtime 31.0.1", "sp-session", @@ -23444,6 +23447,7 @@ dependencies = [ "serde", "serde_json", "soketto 0.8.0", + "sp-keyring", "staging-node-inspect", "substrate-cli-test-utils", "tempfile", @@ -27027,6 +27031,7 @@ dependencies = [ "sp-core 28.0.0", "sp-crypto-hashing 0.1.0", "sp-io 30.0.0", + "sp-keyring", "sp-runtime 31.0.1", "sp-std 14.0.0", "sp-tracing 16.0.0", diff --git a/cumulus/xcm/xcm-emulator/Cargo.toml b/cumulus/xcm/xcm-emulator/Cargo.toml index 8598481fae767..94feb487a3a78 100644 --- a/cumulus/xcm/xcm-emulator/Cargo.toml +++ b/cumulus/xcm/xcm-emulator/Cargo.toml @@ -21,6 +21,7 @@ frame-support = { workspace = true, default-features = true } frame-system = { workspace = true, default-features = true } sp-io = { workspace = true, default-features = true } sp-core = { workspace = true, default-features = true } +sp-keyring = { workspace = true, default-features = true } sp-crypto-hashing = { workspace = true, default-features = true } sp-std = { workspace = true, default-features = true } sp-runtime = { workspace = true, default-features = true } diff --git a/cumulus/xcm/xcm-emulator/src/lib.rs b/cumulus/xcm/xcm-emulator/src/lib.rs index bb2945dc267db..1e87bf7aeb717 100644 --- a/cumulus/xcm/xcm-emulator/src/lib.rs +++ b/cumulus/xcm/xcm-emulator/src/lib.rs @@ -52,6 +52,7 @@ pub use sp_arithmetic::traits::Bounded; pub use sp_core::{parameter_types, sr25519, storage::Storage, Pair}; pub use sp_crypto_hashing::blake2_256; pub use sp_io::TestExternalities; +pub use sp_keyring::Sr25519Keyring; pub use sp_runtime::BoundedSlice; pub use sp_tracing; @@ -226,7 +227,12 @@ pub trait Chain: TestExt { type OriginCaller; fn account_id_of(seed: &str) -> AccountId { - helpers::get_account_id_from_seed::(seed) + use sp_runtime::traits::IdentifyAccount; + use std::str::FromStr; + sp_runtime::MultiSigner::from( + Sr25519Keyring::from_str(seed).expect("should parse str seed to keyring"), + ) + .into_account() } fn account_data_of(account: AccountIdOf) -> AccountData; @@ -1608,17 +1614,4 @@ pub mod helpers { ref_time_within && proof_size_within } - - /// Helper function to generate an account ID from seed. - pub fn get_account_id_from_seed(seed: &str) -> AccountId - where - sp_runtime::MultiSigner: - From<<::Pair as sp_core::Pair>::Public>, - { - use sp_runtime::traits::IdentifyAccount; - let pubkey = TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public(); - sp_runtime::MultiSigner::from(pubkey).into_account() - } } diff --git a/polkadot/node/test/service/src/chain_spec.rs b/polkadot/node/test/service/src/chain_spec.rs index 076e420acaf73..e32a53548680c 100644 --- a/polkadot/node/test/service/src/chain_spec.rs +++ b/polkadot/node/test/service/src/chain_spec.rs @@ -75,8 +75,8 @@ pub fn polkadot_local_testnet_genesis() -> serde_json::Value { fn get_authority_keys_from_seed( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { - let sr25519_keyring = Sr25519Keyring::from_str(seed).expect("Parse keyring error"); - let ed25519_keyring = Ed25519Keyring::from_str(seed).expect("Parse keyring error"); + let sr25519_keyring = Sr25519Keyring::from_str(seed).expect("should parse str seed to keyring"); + let ed25519_keyring = Ed25519Keyring::from_str(seed).expect("should parse str seed to keyring"); ( sr25519_keyring.to_account_id(), sr25519_keyring.to_account_id(), diff --git a/polkadot/runtime/common/src/purchase.rs b/polkadot/runtime/common/src/purchase.rs index 88a5a2f745360..cec92540654cc 100644 --- a/polkadot/runtime/common/src/purchase.rs +++ b/polkadot/runtime/common/src/purchase.rs @@ -489,10 +489,9 @@ mod tests { traits::{Currency, WithdrawReasons}, }; use sp_runtime::{ - traits::{BlakeTwo256, Dispatchable, Identity, IdentityLookup, Verify}, + traits::{BlakeTwo256, Dispatchable, Identity, IdentityLookup}, ArithmeticError, BuildStorage, DispatchError::BadOrigin, - MultiSignature, }; type Block = frame_system::mocking::MockBlock; diff --git a/polkadot/runtime/rococo/Cargo.toml b/polkadot/runtime/rococo/Cargo.toml index 4aaaf94da5865..7becf6376c349 100644 --- a/polkadot/runtime/rococo/Cargo.toml +++ b/polkadot/runtime/rococo/Cargo.toml @@ -42,6 +42,7 @@ sp-storage = { workspace = true } sp-version = { workspace = true } sp-transaction-pool = { workspace = true } sp-block-builder = { workspace = true } +sp-keyring = { workspace = true } pallet-authority-discovery = { workspace = true } pallet-authorship = { workspace = true } diff --git a/polkadot/runtime/rococo/src/genesis_config_presets.rs b/polkadot/runtime/rococo/src/genesis_config_presets.rs index c237dfd967f67..3d4888d31cb06 100644 --- a/polkadot/runtime/rococo/src/genesis_config_presets.rs +++ b/polkadot/runtime/rococo/src/genesis_config_presets.rs @@ -23,30 +23,15 @@ use crate::{ #[cfg(not(feature = "std"))] use alloc::format; use alloc::{vec, vec::Vec}; -use polkadot_primitives::{AccountId, AccountPublic, AssignmentId, SchedulerParams, ValidatorId}; +use polkadot_primitives::{AccountId, AssignmentId, SchedulerParams, ValidatorId}; use rococo_runtime_constants::currency::UNITS as ROC; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; use sp_consensus_grandpa::AuthorityId as GrandpaId; -use sp_core::{sr25519, Pair, Public}; +use sp_core::Pair; use sp_genesis_builder::PresetId; -use sp_runtime::traits::IdentifyAccount; - -/// Helper function to generate a crypto pair from seed -fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -/// Helper function to generate an account ID from seed -fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} +use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; /// Helper function to generate stash, controller and session key from seed fn get_authority_keys_from_seed( @@ -62,39 +47,64 @@ fn get_authority_keys_from_seed( BeefyId, ) { let keys = get_authority_keys_from_seed_no_beefy(seed); - (keys.0, keys.1, keys.2, keys.3, keys.4, keys.5, keys.6, get_from_seed::(seed)) + ( + keys.0, + keys.1, + keys.2, + keys.3, + keys.4, + keys.5, + keys.6, + BeefyId::from( + sp_consensus_beefy::ecdsa_crypto::Pair::from_string(&format!("//{}", seed), None) + .expect("should parse str seed to keyring") + .public(), + ), + ) } /// Helper function to generate stash, controller and session key from seed fn get_authority_keys_from_seed_no_beefy( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { + use core::str::FromStr; ( - get_account_id_from_seed::(&format!("{}//stash", seed)), - get_account_id_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), + Sr25519Keyring::from_str(&format!("{}//stash", seed)) + .expect("should parse str seed to keyring") + .to_account_id(), + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .to_account_id(), + BabeId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + GrandpaId::from( + Ed25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + ValidatorId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + AssignmentId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + AuthorityDiscoveryId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), ) } fn testnet_accounts() -> Vec { - Vec::from([ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ]) + Sr25519Keyring::iter().map(|x| x.to_account_id()).collect() } fn rococo_session_keys( @@ -478,7 +488,7 @@ fn rococo_staging_testnet_config_genesis() -> serde_json::Value { fn rococo_development_config_genesis() -> serde_json::Value { rococo_testnet_genesis( Vec::from([get_authority_keys_from_seed("Alice")]), - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), None, ) } @@ -487,7 +497,7 @@ fn rococo_development_config_genesis() -> serde_json::Value { fn rococo_local_testnet_genesis() -> serde_json::Value { rococo_testnet_genesis( Vec::from([get_authority_keys_from_seed("Alice"), get_authority_keys_from_seed("Bob")]), - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), None, ) } @@ -502,7 +512,7 @@ fn versi_local_testnet_genesis() -> serde_json::Value { get_authority_keys_from_seed("Charlie"), get_authority_keys_from_seed("Dave"), ]), - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), None, ) } diff --git a/polkadot/runtime/westend/Cargo.toml b/polkadot/runtime/westend/Cargo.toml index 28ffd9fb150a0..5dbe77f6eb775 100644 --- a/polkadot/runtime/westend/Cargo.toml +++ b/polkadot/runtime/westend/Cargo.toml @@ -42,6 +42,7 @@ sp-version = { workspace = true } sp-transaction-pool = { workspace = true } sp-block-builder = { workspace = true } sp-npos-elections = { workspace = true } +sp-keyring = { workspace = true } frame-election-provider-support = { workspace = true } frame-executive = { workspace = true } diff --git a/polkadot/runtime/westend/src/genesis_config_presets.rs b/polkadot/runtime/westend/src/genesis_config_presets.rs index f59bacce31bd1..5549e419141da 100644 --- a/polkadot/runtime/westend/src/genesis_config_presets.rs +++ b/polkadot/runtime/westend/src/genesis_config_presets.rs @@ -24,31 +24,17 @@ use crate::{ use alloc::format; use alloc::{vec, vec::Vec}; use pallet_staking::{Forcing, StakerStatus}; -use polkadot_primitives::{AccountId, AccountPublic, AssignmentId, SchedulerParams, ValidatorId}; +use polkadot_primitives::{AccountId, AssignmentId, SchedulerParams, ValidatorId}; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; use sp_consensus_grandpa::AuthorityId as GrandpaId; -use sp_core::{sr25519, Pair, Public}; +use sp_core::Pair; use sp_genesis_builder::PresetId; -use sp_runtime::{traits::IdentifyAccount, Perbill}; +use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; +use sp_runtime::Perbill; use westend_runtime_constants::currency::UNITS as WND; -/// Helper function to generate a crypto pair from seed -fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -/// Helper function to generate an account ID from seed -fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - /// Helper function to generate stash, controller and session key from seed fn get_authority_keys_from_seed( seed: &str, @@ -63,39 +49,64 @@ fn get_authority_keys_from_seed( BeefyId, ) { let keys = get_authority_keys_from_seed_no_beefy(seed); - (keys.0, keys.1, keys.2, keys.3, keys.4, keys.5, keys.6, get_from_seed::(seed)) + ( + keys.0, + keys.1, + keys.2, + keys.3, + keys.4, + keys.5, + keys.6, + BeefyId::from( + sp_consensus_beefy::ecdsa_crypto::Pair::from_string(&format!("//{}", seed), None) + .expect("should parse str seed to keyring") + .public(), + ), + ) } /// Helper function to generate stash, controller and session key from seed fn get_authority_keys_from_seed_no_beefy( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { + use core::str::FromStr; ( - get_account_id_from_seed::(&format!("{}//stash", seed)), - get_account_id_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), + Sr25519Keyring::from_str(&format!("{}//stash", seed)) + .expect("should parse str seed to keyring") + .to_account_id(), + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .to_account_id(), + BabeId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + GrandpaId::from( + Ed25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + ValidatorId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + AssignmentId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + AuthorityDiscoveryId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), ) } fn testnet_accounts() -> Vec { - Vec::from([ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ]) + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect() } fn westend_session_keys( @@ -420,7 +431,7 @@ fn westend_staging_testnet_config_genesis() -> serde_json::Value { fn westend_development_config_genesis() -> serde_json::Value { westend_testnet_genesis( Vec::from([get_authority_keys_from_seed("Alice")]), - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), None, ) } @@ -429,7 +440,7 @@ fn westend_development_config_genesis() -> serde_json::Value { fn westend_local_testnet_genesis() -> serde_json::Value { westend_testnet_genesis( Vec::from([get_authority_keys_from_seed("Alice"), get_authority_keys_from_seed("Bob")]), - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), None, ) } diff --git a/substrate/bin/node/cli/Cargo.toml b/substrate/bin/node/cli/Cargo.toml index 6e734a723cd36..3aac1310dba49 100644 --- a/substrate/bin/node/cli/Cargo.toml +++ b/substrate/bin/node/cli/Cargo.toml @@ -48,7 +48,9 @@ rand = { workspace = true, default-features = true } serde_json = { workspace = true, default-features = true } # The Polkadot-SDK: -polkadot-sdk = { features = ["node"], workspace = true, default-features = true } +polkadot-sdk = { features = [ + "node", +], workspace = true, default-features = true } # Shared code between the staging node and kitchensink runtime: kitchensink-runtime = { workspace = true } @@ -64,13 +66,23 @@ nix = { features = ["signal"], workspace = true } regex = { workspace = true } platforms = { workspace = true } soketto = { workspace = true } -criterion = { features = ["async_tokio"], workspace = true, default-features = true } -tokio = { features = ["macros", "parking_lot", "time"], workspace = true, default-features = true } +criterion = { features = [ + "async_tokio", +], workspace = true, default-features = true } +tokio = { features = [ + "macros", + "parking_lot", + "time", +], workspace = true, default-features = true } tokio-util = { features = ["compat"], workspace = true } wait-timeout = { workspace = true } wat = { workspace = true } serde_json = { workspace = true, default-features = true } -scale-info = { features = ["derive", "serde"], workspace = true, default-features = true } +scale-info = { features = [ + "derive", + "serde", +], workspace = true, default-features = true } +sp-keyring = { workspace = true } pretty_assertions.workspace = true # These testing-only dependencies are not exported by the Polkadot-SDK crate: @@ -84,16 +96,16 @@ clap_complete = { optional = true, workspace = true } node-inspect = { optional = true, workspace = true, default-features = true } -polkadot-sdk = { features = ["frame-benchmarking-cli", "sc-cli", "sc-storage-monitor", "substrate-build-script-utils"], optional = true, workspace = true, default-features = true } +polkadot-sdk = { features = [ + "frame-benchmarking-cli", + "sc-cli", + "sc-storage-monitor", + "substrate-build-script-utils", +], optional = true, workspace = true, default-features = true } [features] default = ["cli"] -cli = [ - "clap", - "clap_complete", - "node-inspect", - "polkadot-sdk", -] +cli = ["clap", "clap_complete", "node-inspect", "polkadot-sdk"] runtime-benchmarks = [ "kitchensink-runtime/runtime-benchmarks", "node-inspect?/runtime-benchmarks", @@ -104,10 +116,7 @@ try-runtime = [ "polkadot-sdk/try-runtime", "substrate-cli-test-utils/try-runtime", ] -riscv = [ - "kitchensink-runtime/riscv", - "polkadot-sdk/riscv", -] +riscv = ["kitchensink-runtime/riscv", "polkadot-sdk/riscv"] [[bench]] name = "transaction_pool" diff --git a/substrate/bin/node/cli/src/chain_spec.rs b/substrate/bin/node/cli/src/chain_spec.rs index bc7821bfcf304..84fa688ed0d20 100644 --- a/substrate/bin/node/cli/src/chain_spec.rs +++ b/substrate/bin/node/cli/src/chain_spec.rs @@ -32,18 +32,14 @@ use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; use sp_consensus_grandpa::AuthorityId as GrandpaId; -use sp_core::{crypto::UncheckedInto, sr25519, Pair, Public}; +use sp_core::{crypto::UncheckedInto, Pair}; +use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; use sp_mixnet::types::AuthorityId as MixnetId; -use sp_runtime::{ - traits::{IdentifyAccount, Verify}, - Perbill, -}; +use sp_runtime::Perbill; pub use kitchensink_runtime::RuntimeGenesisConfig; pub use node_primitives::{AccountId, Balance, Signature}; -type AccountPublic = ::Signer; - const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; const ENDOWMENT: Balance = 10_000_000 * DOLLARS; const STASH: Balance = ENDOWMENT / 1000; @@ -246,35 +242,49 @@ pub fn staging_testnet_config() -> ChainSpec { .build() } -/// Helper function to generate a crypto pair from seed. -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -/// Helper function to generate an account ID from seed. -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - /// Helper function to generate stash, controller and session key from seed. pub fn authority_keys_from_seed( seed: &str, ) -> (AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId, MixnetId, BeefyId) { + use core::str::FromStr; ( - get_account_id_from_seed::(&format!("{}//stash", seed)), - get_account_id_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), + Sr25519Keyring::from_str(&format!("{}//stash", seed)) + .expect("should parse str seed to keyring") + .to_account_id(), + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .to_account_id(), + GrandpaId::from( + Ed25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + BabeId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + ImOnlineId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + AuthorityDiscoveryId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + MixnetId::from( + Sr25519Keyring::from_str(seed) + .expect("should parse str seed to keyring") + .public(), + ), + BeefyId::from( + sp_consensus_beefy::ecdsa_crypto::Pair::from_string(&format!("//{}", seed), None) + .expect("should parse str seed to keyring") + .public(), + ), ) } @@ -307,22 +317,8 @@ fn configure_accounts( usize, Vec<(AccountId, AccountId, Balance, StakerStatus)>, ) { - let mut endowed_accounts: Vec = endowed_accounts.unwrap_or_else(|| { - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ] - }); + let mut endowed_accounts: Vec = endowed_accounts + .unwrap_or_else(|| Sr25519Keyring::iter().map(|k| k.to_account_id()).collect()); // endow all authorities and nominators. initial_authorities .iter() @@ -429,7 +425,7 @@ pub fn testnet_genesis( "society": { "pot": 0 }, "assets": { // This asset is used by the NIS pallet as counterpart currency. - "assets": vec![(9, get_account_id_from_seed::("Alice"), true, 1)], + "assets": vec![(9, Sr25519Keyring::Alice.to_account_id(), true, 1)], }, "nominationPools": { "minCreateBond": 10 * DOLLARS, @@ -442,7 +438,7 @@ fn development_config_genesis_json() -> serde_json::Value { testnet_genesis( vec![authority_keys_from_seed("Alice")], vec![], - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), None, ) } @@ -461,7 +457,7 @@ fn local_testnet_genesis() -> serde_json::Value { testnet_genesis( vec![authority_keys_from_seed("Alice"), authority_keys_from_seed("Bob")], vec![], - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), None, ) } @@ -492,7 +488,7 @@ pub(crate) mod tests { .with_genesis_config_patch(testnet_genesis( vec![authority_keys_from_seed("Alice")], vec![], - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), None, )) .build() diff --git a/substrate/bin/node/testing/src/bench.rs b/substrate/bin/node/testing/src/bench.rs index 007d314684cf1..65f6d63257dc5 100644 --- a/substrate/bin/node/testing/src/bench.rs +++ b/substrate/bin/node/testing/src/bench.rs @@ -47,7 +47,7 @@ use sc_executor::{WasmExecutionMethod, WasmtimeInstantiationStrategy}; use sp_api::ProvideRuntimeApi; use sp_block_builder::BlockBuilder; use sp_consensus::BlockOrigin; -use sp_core::{ed25519, sr25519, traits::SpawnNamed, Pair, Public}; +use sp_core::{ed25519, sr25519, traits::SpawnNamed, Pair}; use sp_crypto_hashing::blake2_256; use sp_inherents::InherentData; use sp_runtime::{ @@ -283,15 +283,15 @@ impl<'a> Iterator for BlockContentIterator<'a> { type Item = OpaqueExtrinsic; fn next(&mut self) -> Option { + use core::str::FromStr; if self.content.size.map(|size| size <= self.iteration).unwrap_or(false) { return None } let sender = self.keyring.at(self.iteration); - let receiver = get_account_id_from_seed::(&format!( - "random-user//{}", - self.iteration - )); + let receiver = sr25519::Public::from_str(&format!("random-user//{}", self.iteration)) + .expect("should parse str seed to sr25519 public") + .into(); let signed = self.keyring.sign( CheckedExtrinsic { @@ -630,19 +630,6 @@ pub struct BenchContext { type AccountPublic = ::Signer; -fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - impl BenchContext { /// Import some block. pub fn import_block(&mut self, block: Block) { diff --git a/substrate/bin/node/testing/src/keyring.rs b/substrate/bin/node/testing/src/keyring.rs index eab088d9100ef..8f76441ee904a 100644 --- a/substrate/bin/node/testing/src/keyring.rs +++ b/substrate/bin/node/testing/src/keyring.rs @@ -20,52 +20,64 @@ use codec::Encode; use kitchensink_runtime::{CheckedExtrinsic, SessionKeys, SignedExtra, UncheckedExtrinsic}; -use node_cli::chain_spec::get_from_seed; use node_primitives::{AccountId, Balance, Nonce}; use sp_core::{ecdsa, ed25519, sr25519}; use sp_crypto_hashing::blake2_256; -use sp_keyring::AccountKeyring; +use sp_keyring::Sr25519Keyring; use sp_runtime::generic::Era; +use std::str::FromStr; /// Alice's account id. pub fn alice() -> AccountId { - AccountKeyring::Alice.into() + Sr25519Keyring::Alice.into() } /// Bob's account id. pub fn bob() -> AccountId { - AccountKeyring::Bob.into() + Sr25519Keyring::Bob.into() } /// Charlie's account id. pub fn charlie() -> AccountId { - AccountKeyring::Charlie.into() + Sr25519Keyring::Charlie.into() } /// Dave's account id. pub fn dave() -> AccountId { - AccountKeyring::Dave.into() + Sr25519Keyring::Dave.into() } /// Eve's account id. pub fn eve() -> AccountId { - AccountKeyring::Eve.into() + Sr25519Keyring::Eve.into() } /// Ferdie's account id. pub fn ferdie() -> AccountId { - AccountKeyring::Ferdie.into() + Sr25519Keyring::Ferdie.into() } /// Convert keyrings into `SessionKeys`. pub fn session_keys_from_seed(seed: &str) -> SessionKeys { SessionKeys { - grandpa: get_from_seed::(seed).into(), - babe: get_from_seed::(seed).into(), - im_online: get_from_seed::(seed).into(), - authority_discovery: get_from_seed::(seed).into(), - mixnet: get_from_seed::(seed).into(), - beefy: get_from_seed::(seed).into(), + grandpa: ed25519::Public::from_str(seed) + .expect("should parse str seed to sr25519 public") + .into(), + babe: sr25519::Public::from_str(seed) + .expect("should parse str seed to sr25519 public") + .into(), + im_online: sr25519::Public::from_str(seed) + .expect("should parse str seed to sr25519 public") + .into(), + authority_discovery: sr25519::Public::from_str(seed) + .expect("should parse str seed to sr25519 public") + .into(), + mixnet: sr25519::Public::from_str(seed) + .expect("should parse str seed to sr25519 public") + .into(), + beefy: ecdsa::Public::from_str(seed) + .expect("should parse str seed to ecdsa public") + .into(), } } @@ -105,7 +117,7 @@ pub fn sign( genesis_hash, metadata_hash, ); - let key = AccountKeyring::from_account_id(&signed).unwrap(); + let key = Sr25519Keyring::from_account_id(&signed).unwrap(); let signature = payload .using_encoded(|b| { diff --git a/substrate/primitives/keyring/src/sr25519.rs b/substrate/primitives/keyring/src/sr25519.rs index 8e13c39af0056..44b330b2911d9 100644 --- a/substrate/primitives/keyring/src/sr25519.rs +++ b/substrate/primitives/keyring/src/sr25519.rs @@ -165,8 +165,12 @@ impl FromStr for Keyring { "Dave" => Ok(Keyring::Dave), "Eve" => Ok(Keyring::Eve), "Ferdie" => Ok(Keyring::Ferdie), - "One" => Ok(Keyring::One), - "Two" => Ok(Keyring::Two), + "Alice//stash" => Ok(Keyring::AliceStash), + "Bob//stash" => Ok(Keyring::BobStash), + "Charlie//stash" => Ok(Keyring::CharlieStash), + "Dave//stash" => Ok(Keyring::DaveStash), + "Eve//stash" => Ok(Keyring::EveStash), + "Ferdie//stash" => Ok(Keyring::FerdieStash), _ => Err(ParseKeyringError), } } diff --git a/templates/parachain/runtime/Cargo.toml b/templates/parachain/runtime/Cargo.toml index 45c77d18e8167..8c80d5953b8e5 100644 --- a/templates/parachain/runtime/Cargo.toml +++ b/templates/parachain/runtime/Cargo.toml @@ -17,14 +17,10 @@ substrate-wasm-builder = { optional = true, workspace = true, default-features = docify = { workspace = true } [dependencies] -codec = { features = [ - "derive", -], workspace = true } +codec = { features = ["derive"], workspace = true } hex-literal = { optional = true, workspace = true, default-features = true } log = { workspace = true } -scale-info = { features = [ - "derive", -], workspace = true } +scale-info = { features = ["derive"], workspace = true } smallvec = { workspace = true, default-features = true } docify = { workspace = true } serde_json = { workspace = true, default-features = false } @@ -58,6 +54,7 @@ sp-api = { workspace = true } sp-block-builder = { workspace = true } sp-consensus-aura = { workspace = true } sp-core = { workspace = true } +sp-keyring = { workspace = true } sp-genesis-builder = { workspace = true } sp-inherents = { workspace = true } sp-offchain = { workspace = true } diff --git a/templates/parachain/runtime/src/genesis_config_presets.rs b/templates/parachain/runtime/src/genesis_config_presets.rs index fec53d17394ca..0652d072135ed 100644 --- a/templates/parachain/runtime/src/genesis_config_presets.rs +++ b/templates/parachain/runtime/src/genesis_config_presets.rs @@ -5,10 +5,10 @@ use crate::{ RuntimeGenesisConfig, SessionConfig, SessionKeys, SudoConfig, EXISTENTIAL_DEPOSIT, }; use alloc::{vec, vec::Vec}; -use parachains_common::{genesis_config_helpers::*, AuraId}; +use parachains_common::AuraId; use serde_json::Value; -use sp_core::sr25519; use sp_genesis_builder::PresetId; +use sp_keyring::Sr25519Keyring; /// The default XCM version to set in genesis config. const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; @@ -68,30 +68,11 @@ fn local_testnet_genesis() -> Value { testnet_genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ], - get_account_id_from_seed::("Alice"), + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), + Sr25519Keyring::Alice.to_account_id(), 1000.into(), ) } @@ -100,30 +81,11 @@ fn development_config_genesis() -> Value { testnet_genesis( // initial collators. vec![ - ( - get_account_id_from_seed::("Alice"), - get_collator_keys_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_collator_keys_from_seed::("Bob"), - ), - ], - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), + (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), + (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - get_account_id_from_seed::("Alice"), + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), + Sr25519Keyring::Alice.to_account_id(), 1000.into(), ) } diff --git a/templates/solochain/node/src/chain_spec.rs b/templates/solochain/node/src/chain_spec.rs index 651025e68ded9..f52f510916545 100644 --- a/templates/solochain/node/src/chain_spec.rs +++ b/templates/solochain/node/src/chain_spec.rs @@ -1,9 +1,9 @@ use sc_service::ChainType; -use solochain_template_runtime::{AccountId, Signature, WASM_BINARY}; +use solochain_template_runtime::{AccountId, WASM_BINARY}; use sp_consensus_aura::sr25519::AuthorityId as AuraId; use sp_consensus_grandpa::AuthorityId as GrandpaId; -use sp_core::{sr25519, Pair, Public}; -use sp_runtime::traits::{IdentifyAccount, Verify}; +use sp_core::{ed25519, sr25519}; +use sp_keyring::Sr25519Keyring; // The URL for the telemetry server. // const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; @@ -11,26 +11,17 @@ use sp_runtime::traits::{IdentifyAccount, Verify}; /// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type. pub type ChainSpec = sc_service::GenericChainSpec; -/// Generate a crypto pair from seed. -pub fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -type AccountPublic = ::Signer; - -/// Generate an account ID from seed. -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - /// Generate an Aura authority key. pub fn authority_keys_from_seed(s: &str) -> (AuraId, GrandpaId) { - (get_from_seed::(s), get_from_seed::(s)) + use core::str::FromStr; + ( + sr25519::Public::from_str(s) + .expect("should parse str seed to sr25519 public") + .into(), + ed25519::Public::from_str(s) + .expect("should parse str seed to ed25519 public") + .into(), + ) } pub fn development_config() -> Result { @@ -45,13 +36,13 @@ pub fn development_config() -> Result { // Initial PoA authorities vec![authority_keys_from_seed("Alice")], // Sudo account - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), // Pre-funded accounts vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), + Sr25519Keyring::Alice.to_account_id(), + Sr25519Keyring::Bob.to_account_id(), + Sr25519Keyring::AliceStash.to_account_id(), + Sr25519Keyring::BobStash.to_account_id(), ], true, )) @@ -70,22 +61,9 @@ pub fn local_testnet_config() -> Result { // Initial PoA authorities vec![authority_keys_from_seed("Alice"), authority_keys_from_seed("Bob")], // Sudo account - get_account_id_from_seed::("Alice"), + Sr25519Keyring::Alice.to_account_id(), // Pre-funded accounts - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ], + Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), true, )) .build()) From 81bf41c8be754d2dbf638315ae70f2186c352815 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Mon, 7 Oct 2024 13:52:13 +0800 Subject: [PATCH 04/23] simplify some code --- .../src/tests/reserve_transfer.rs | 6 +-- .../src/tests/reserve_transfer.rs | 6 +-- .../rococo/src/genesis_config_presets.rs | 44 ++++++------------- .../westend/src/genesis_config_presets.rs | 44 ++++++------------- substrate/bin/node/cli/src/chain_spec.rs | 44 ++++++------------- substrate/bin/node/testing/src/keyring.rs | 29 ++++++------ 6 files changed, 61 insertions(+), 112 deletions(-) diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs index 9b92be704cc8f..9b4d38f8dec1d 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use sp_core::Pair; +use sp_core::sr25519; use crate::imports::*; @@ -1009,6 +1009,7 @@ fn reserve_transfer_multiple_assets_from_asset_hub_to_para() { /// we should do equivalent test with USDT instead of DOT. #[test] fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { + use core::str::FromStr; // Init values for Parachain let destination = PenpalA::sibling_location_of(AssetHubRococo::para_id()); let sender = PenpalASender::get(); @@ -1045,9 +1046,8 @@ fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { // Beneficiary is a new (empty) account let receiver: sp_runtime::AccountId32 = - sp_core::sr25519::Pair::from_string(&format!("//{}", DUMMY_EMPTY), None) + sr25519::Public::from_str(&format!("//{}", DUMMY_EMPTY)) .expect("static values are valid") - .public() .into(); // Init values for Asset Hub let penpal_location_as_seen_by_ahr = AssetHubRococo::sibling_location_of(PenpalA::para_id()); diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs index e598574850805..aa7a6791171b4 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use sp_core::Pair; +use sp_core::sr25519; use crate::imports::*; @@ -1010,6 +1010,7 @@ fn reserve_transfer_multiple_assets_from_asset_hub_to_para() { /// we should do equivalent test with USDT instead of DOT. #[test] fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { + use core::str::FromStr; // Init values for Parachain let destination = PenpalA::sibling_location_of(AssetHubWestend::para_id()); let sender = PenpalASender::get(); @@ -1046,9 +1047,8 @@ fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { // Beneficiary is a new (empty) account let receiver: sp_runtime::AccountId32 = - sp_core::sr25519::Pair::from_string(&format!("//{}", DUMMY_EMPTY), None) + sr25519::Public::from_str(&format!("//{}", DUMMY_EMPTY)) .expect("static values are valid") - .public() .into(); // Init values for Asset Hub let penpal_location_as_seen_by_ahr = AssetHubWestend::sibling_location_of(PenpalA::para_id()); diff --git a/polkadot/runtime/rococo/src/genesis_config_presets.rs b/polkadot/runtime/rococo/src/genesis_config_presets.rs index 3d4888d31cb06..698bc118526e6 100644 --- a/polkadot/runtime/rococo/src/genesis_config_presets.rs +++ b/polkadot/runtime/rococo/src/genesis_config_presets.rs @@ -29,9 +29,9 @@ use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; use sp_consensus_grandpa::AuthorityId as GrandpaId; -use sp_core::Pair; +use sp_core::{ed25519, sr25519, Pair}; use sp_genesis_builder::PresetId; -use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; +use sp_keyring::Sr25519Keyring; /// Helper function to generate stash, controller and session key from seed fn get_authority_keys_from_seed( @@ -68,38 +68,22 @@ fn get_authority_keys_from_seed_no_beefy( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { use core::str::FromStr; + let sr25519_seed = sr25519::Pair::from_string(&format!("//{}", seed), None) + .expect("should generate key from seed") + .public(); + let ed25519_seed = ed25519::Pair::from_string(&format!("//{}", seed), None) + .expect("should generate key from seed") + .public(); ( Sr25519Keyring::from_str(&format!("{}//stash", seed)) .expect("should parse str seed to keyring") .to_account_id(), - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .to_account_id(), - BabeId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - GrandpaId::from( - Ed25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - ValidatorId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - AssignmentId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - AuthorityDiscoveryId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), + sr25519_seed.into(), + BabeId::from(sr25519_seed), + GrandpaId::from(ed25519_seed), + ValidatorId::from(sr25519_seed), + AssignmentId::from(sr25519_seed), + AuthorityDiscoveryId::from(sr25519_seed), ) } diff --git a/polkadot/runtime/westend/src/genesis_config_presets.rs b/polkadot/runtime/westend/src/genesis_config_presets.rs index 5549e419141da..bf9ba8df8d037 100644 --- a/polkadot/runtime/westend/src/genesis_config_presets.rs +++ b/polkadot/runtime/westend/src/genesis_config_presets.rs @@ -29,9 +29,9 @@ use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; use sp_consensus_grandpa::AuthorityId as GrandpaId; -use sp_core::Pair; +use sp_core::{ed25519, sr25519, Pair}; use sp_genesis_builder::PresetId; -use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; +use sp_keyring::Sr25519Keyring; use sp_runtime::Perbill; use westend_runtime_constants::currency::UNITS as WND; @@ -70,38 +70,22 @@ fn get_authority_keys_from_seed_no_beefy( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { use core::str::FromStr; + let sr25519_seed = sr25519::Pair::from_string(&format!("//{}", seed), None) + .expect("should generate key from seed") + .public(); + let ed25519_seed = ed25519::Pair::from_string(&format!("//{}", seed), None) + .expect("should generate key from seed") + .public(); ( Sr25519Keyring::from_str(&format!("{}//stash", seed)) .expect("should parse str seed to keyring") .to_account_id(), - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .to_account_id(), - BabeId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - GrandpaId::from( - Ed25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - ValidatorId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - AssignmentId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - AuthorityDiscoveryId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), + sr25519_seed.into(), + BabeId::from(sr25519_seed), + GrandpaId::from(ed25519_seed), + ValidatorId::from(sr25519_seed), + AssignmentId::from(sr25519_seed), + AuthorityDiscoveryId::from(sr25519_seed), ) } diff --git a/substrate/bin/node/cli/src/chain_spec.rs b/substrate/bin/node/cli/src/chain_spec.rs index 84fa688ed0d20..aae8884a27d7b 100644 --- a/substrate/bin/node/cli/src/chain_spec.rs +++ b/substrate/bin/node/cli/src/chain_spec.rs @@ -32,8 +32,8 @@ use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; use sp_consensus_grandpa::AuthorityId as GrandpaId; -use sp_core::{crypto::UncheckedInto, Pair}; -use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; +use sp_core::{crypto::UncheckedInto, ed25519, sr25519, Pair}; +use sp_keyring::Sr25519Keyring; use sp_mixnet::types::AuthorityId as MixnetId; use sp_runtime::Perbill; @@ -248,38 +248,22 @@ pub fn authority_keys_from_seed( ) -> (AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId, MixnetId, BeefyId) { use core::str::FromStr; + let sr25519_seed = sr25519::Pair::from_string(&format!("//{}", seed), None) + .expect("should generate key from seed") + .public(); + let ed25519_seed = ed25519::Pair::from_string(&format!("//{}", seed), None) + .expect("should generate key from seed") + .public(); ( Sr25519Keyring::from_str(&format!("{}//stash", seed)) .expect("should parse str seed to keyring") .to_account_id(), - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .to_account_id(), - GrandpaId::from( - Ed25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - BabeId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - ImOnlineId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - AuthorityDiscoveryId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), - MixnetId::from( - Sr25519Keyring::from_str(seed) - .expect("should parse str seed to keyring") - .public(), - ), + sr25519_seed.into(), + GrandpaId::from(ed25519_seed), + BabeId::from(sr25519_seed), + ImOnlineId::from(sr25519_seed), + AuthorityDiscoveryId::from(sr25519_seed), + MixnetId::from(sr25519_seed), BeefyId::from( sp_consensus_beefy::ecdsa_crypto::Pair::from_string(&format!("//{}", seed), None) .expect("should parse str seed to keyring") diff --git a/substrate/bin/node/testing/src/keyring.rs b/substrate/bin/node/testing/src/keyring.rs index 8f76441ee904a..e1fa8b18e54d9 100644 --- a/substrate/bin/node/testing/src/keyring.rs +++ b/substrate/bin/node/testing/src/keyring.rs @@ -21,11 +21,10 @@ use codec::Encode; use kitchensink_runtime::{CheckedExtrinsic, SessionKeys, SignedExtra, UncheckedExtrinsic}; use node_primitives::{AccountId, Balance, Nonce}; -use sp_core::{ecdsa, ed25519, sr25519}; +use sp_core::{ecdsa, ed25519, sr25519, Pair}; use sp_crypto_hashing::blake2_256; use sp_keyring::Sr25519Keyring; use sp_runtime::generic::Era; -use std::str::FromStr; /// Alice's account id. pub fn alice() -> AccountId { @@ -59,24 +58,22 @@ pub fn ferdie() -> AccountId { /// Convert keyrings into `SessionKeys`. pub fn session_keys_from_seed(seed: &str) -> SessionKeys { + // use std::str::FromStr; + let sr25519_seed = sr25519::Pair::from_string(&format!("//{}", seed), None) + .expect("should parse str seed to sr25519 public") + .public(); SessionKeys { - grandpa: ed25519::Public::from_str(seed) + grandpa: ed25519::Pair::from_string(&format!("//{}", seed), None) .expect("should parse str seed to sr25519 public") + .public() .into(), - babe: sr25519::Public::from_str(seed) - .expect("should parse str seed to sr25519 public") - .into(), - im_online: sr25519::Public::from_str(seed) - .expect("should parse str seed to sr25519 public") - .into(), - authority_discovery: sr25519::Public::from_str(seed) - .expect("should parse str seed to sr25519 public") - .into(), - mixnet: sr25519::Public::from_str(seed) - .expect("should parse str seed to sr25519 public") - .into(), - beefy: ecdsa::Public::from_str(seed) + babe: sr25519_seed.into(), + im_online: sr25519_seed.into(), + authority_discovery: sr25519_seed.into(), + mixnet: sr25519_seed.into(), + beefy: ecdsa::Pair::from_string(&format!("//{}", seed), None) .expect("should parse str seed to ecdsa public") + .public() .into(), } } From a5fcf926c829e92688910fd714d8e7213688c3c2 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Mon, 7 Oct 2024 17:13:41 +0800 Subject: [PATCH 05/23] fix some errors --- .../assets/asset-hub-rococo/Cargo.toml | 2 +- .../assets/asset-hub-westend/Cargo.toml | 2 +- .../bridges/bridge-hub-rococo/Cargo.toml | 2 +- .../bridges/bridge-hub-westend/Cargo.toml | 2 +- .../src/tests/reserve_transfer.rs | 6 +-- .../src/tests/reserve_transfer.rs | 6 +-- .../assets/asset-hub-rococo/Cargo.toml | 1 + .../assets/asset-hub-westend/Cargo.toml | 1 + .../collectives-westend/Cargo.toml | 1 + prdoc/pr_5804.prdoc | 40 +++++++++++++++++++ templates/parachain/runtime/Cargo.toml | 5 ++- 11 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 prdoc/pr_5804.prdoc diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml index 9767e59222683..0c729fffec66c 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml @@ -24,7 +24,7 @@ emulated-integration-tests-common = { workspace = true } asset-hub-rococo-runtime = { workspace = true, default-features = true } rococo-emulated-chain = { workspace = true } testnet-parachains-constants = { features = [ - "rococo", + "rococo", ], workspace = true, default-features = true } # Polkadot diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml index 1770c01bb3fd5..7c70892fb3d6a 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml @@ -24,7 +24,7 @@ emulated-integration-tests-common = { workspace = true } asset-hub-westend-runtime = { workspace = true } westend-emulated-chain = { workspace = true, default-features = true } testnet-parachains-constants = { features = [ - "westend", + "westend", ], workspace = true, default-features = true } # Polkadot diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml index 36319d2528d35..43d4c608fda0c 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml @@ -29,5 +29,5 @@ emulated-integration-tests-common = { workspace = true } bridge-hub-rococo-runtime = { workspace = true, default-features = true } bridge-hub-common = { workspace = true } testnet-parachains-constants = { features = [ - "rococo", + "rococo", ], workspace = true, default-features = true } diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml index 96e149adfca70..e5ea9b4e28bad 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml @@ -29,5 +29,5 @@ emulated-integration-tests-common = { workspace = true } bridge-hub-westend-runtime = { workspace = true, default-features = true } bridge-hub-common = { workspace = true } testnet-parachains-constants = { features = [ - "westend", + "westend", ], workspace = true, default-features = true } diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs index 9b4d38f8dec1d..ba410e595ac9b 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use sp_core::sr25519; +use sp_core::{sr25519, Pair}; use crate::imports::*; @@ -1009,7 +1009,6 @@ fn reserve_transfer_multiple_assets_from_asset_hub_to_para() { /// we should do equivalent test with USDT instead of DOT. #[test] fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { - use core::str::FromStr; // Init values for Parachain let destination = PenpalA::sibling_location_of(AssetHubRococo::para_id()); let sender = PenpalASender::get(); @@ -1046,8 +1045,9 @@ fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { // Beneficiary is a new (empty) account let receiver: sp_runtime::AccountId32 = - sr25519::Public::from_str(&format!("//{}", DUMMY_EMPTY)) + sr25519::Pair::from_string(&format!("//{}", DUMMY_EMPTY), None) .expect("static values are valid") + .public() .into(); // Init values for Asset Hub let penpal_location_as_seen_by_ahr = AssetHubRococo::sibling_location_of(PenpalA::para_id()); diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs index aa7a6791171b4..e45142a36f7b2 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use sp_core::sr25519; +use sp_core::{sr25519, Pair}; use crate::imports::*; @@ -1010,7 +1010,6 @@ fn reserve_transfer_multiple_assets_from_asset_hub_to_para() { /// we should do equivalent test with USDT instead of DOT. #[test] fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { - use core::str::FromStr; // Init values for Parachain let destination = PenpalA::sibling_location_of(AssetHubWestend::para_id()); let sender = PenpalASender::get(); @@ -1047,8 +1046,9 @@ fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { // Beneficiary is a new (empty) account let receiver: sp_runtime::AccountId32 = - sr25519::Public::from_str(&format!("//{}", DUMMY_EMPTY)) + sr25519::Pair::from_string(&format!("//{}", DUMMY_EMPTY), None) .expect("static values are valid") + .public() .into(); // Init values for Asset Hub let penpal_location_as_seen_by_ahr = AssetHubWestend::sibling_location_of(PenpalA::para_id()); diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml index 044c6f286490d..43e4efd390382 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml @@ -251,6 +251,7 @@ std = [ "sp-transaction-pool/std", "sp-version/std", "sp-weights/std", + "sp-keyring/std", "substrate-wasm-builder", "testnet-parachains-constants/std", "xcm-builder/std", diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml index 64bde189425a7..e52165876adf4 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml @@ -254,6 +254,7 @@ std = [ "sp-storage/std", "sp-transaction-pool/std", "sp-version/std", + "sp-keyring/std", "substrate-wasm-builder", "testnet-parachains-constants/std", "westend-runtime-constants/std", diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml index 70c7612cd41df..fe0dd251ac9e2 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml @@ -236,6 +236,7 @@ std = [ "sp-storage/std", "sp-transaction-pool/std", "sp-version/std", + "sp-keyring/std", "substrate-wasm-builder", "testnet-parachains-constants/std", "westend-runtime-constants/std", diff --git a/prdoc/pr_5804.prdoc b/prdoc/pr_5804.prdoc new file mode 100644 index 0000000000000..833068ab0cd18 --- /dev/null +++ b/prdoc/pr_5804.prdoc @@ -0,0 +1,40 @@ +# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0 +# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json + +title: Refactor get_account_id_from_seed / get_from_seed to one common place + +doc: + - audience: Runtime Dev + description: | + `get_account_id_from_seed / get_from_seed` are copied all over the place, causing code being bloated. + `Keyring::iter()` give the same so it replace all these functions. + +crates: + - name: polkadot-runtime-common + bump: patch + - name: polkadot-service + bump: patch + - name: sp-keyring + bump: minor + - name: rococo-runtime + bump: patch + - name: westend-runtime + bump: patch + - name: parachains-common + bump: patch + - name: emulated-integration-tests-common + bump: patch + - name: xcm-emulator + bump: patch + - name: asset-hub-rococo-runtime + bump: patch + - name: asset-hub-westend-runtime + bump: patch + - name: bridge-hub-rococo-runtime + bump: patch + - name: bridge-hub-westend-runtime + bump: patch + - name: collectives-westend-runtime + bump: patch + - name: polkadot-parachain-bin + bump: patch diff --git a/templates/parachain/runtime/Cargo.toml b/templates/parachain/runtime/Cargo.toml index 34c5974026185..1b4abcc3842e9 100644 --- a/templates/parachain/runtime/Cargo.toml +++ b/templates/parachain/runtime/Cargo.toml @@ -23,7 +23,9 @@ log = { workspace = true } scale-info = { features = ["derive"], workspace = true } smallvec = { workspace = true, default-features = true } docify = { workspace = true } -serde_json = { workspace = true, default-features = false, features = ["alloc"] } +serde_json = { workspace = true, default-features = false, features = [ + "alloc", +] } # Local pallet-parachain-template = { workspace = true } @@ -136,6 +138,7 @@ std = [ "sp-session/std", "sp-transaction-pool/std", "sp-version/std", + "sp-keyring/std", "substrate-wasm-builder", "xcm-builder/std", "xcm-executor/std", From 9db4b08be8efa8526698f238f9f3c389984a7738 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Mon, 7 Oct 2024 18:28:40 +0800 Subject: [PATCH 06/23] make ci happy --- .../runtimes/assets/asset-hub-rococo/Cargo.toml | 2 +- .../runtimes/assets/asset-hub-westend/Cargo.toml | 2 +- .../collectives/collectives-westend/Cargo.toml | 2 +- prdoc/pr_5804.prdoc | 10 +++++----- templates/parachain/runtime/Cargo.toml | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml index 43e4efd390382..3a37b5997f283 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml @@ -244,6 +244,7 @@ std = [ "sp-core/std", "sp-genesis-builder/std", "sp-inherents/std", + "sp-keyring/std", "sp-offchain/std", "sp-runtime/std", "sp-session/std", @@ -251,7 +252,6 @@ std = [ "sp-transaction-pool/std", "sp-version/std", "sp-weights/std", - "sp-keyring/std", "substrate-wasm-builder", "testnet-parachains-constants/std", "xcm-builder/std", diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml index e52165876adf4..e3309c27ccc14 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml @@ -247,6 +247,7 @@ std = [ "sp-core/std", "sp-genesis-builder/std", "sp-inherents/std", + "sp-keyring/std", "sp-offchain/std", "sp-runtime/std", "sp-session/std", @@ -254,7 +255,6 @@ std = [ "sp-storage/std", "sp-transaction-pool/std", "sp-version/std", - "sp-keyring/std", "substrate-wasm-builder", "testnet-parachains-constants/std", "westend-runtime-constants/std", diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml index fe0dd251ac9e2..8a47af18524d9 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml @@ -229,6 +229,7 @@ std = [ "sp-core/std", "sp-genesis-builder/std", "sp-inherents/std", + "sp-keyring/std", "sp-offchain/std", "sp-runtime/std", "sp-session/std", @@ -236,7 +237,6 @@ std = [ "sp-storage/std", "sp-transaction-pool/std", "sp-version/std", - "sp-keyring/std", "substrate-wasm-builder", "testnet-parachains-constants/std", "westend-runtime-constants/std", diff --git a/prdoc/pr_5804.prdoc b/prdoc/pr_5804.prdoc index 833068ab0cd18..f27a40db7eccb 100644 --- a/prdoc/pr_5804.prdoc +++ b/prdoc/pr_5804.prdoc @@ -13,19 +13,19 @@ crates: - name: polkadot-runtime-common bump: patch - name: polkadot-service - bump: patch + bump: major - name: sp-keyring - bump: minor + bump: patch - name: rococo-runtime bump: patch - name: westend-runtime bump: patch - name: parachains-common - bump: patch + bump: major - name: emulated-integration-tests-common - bump: patch + bump: major - name: xcm-emulator - bump: patch + bump: major - name: asset-hub-rococo-runtime bump: patch - name: asset-hub-westend-runtime diff --git a/templates/parachain/runtime/Cargo.toml b/templates/parachain/runtime/Cargo.toml index 1b4abcc3842e9..dda1983623514 100644 --- a/templates/parachain/runtime/Cargo.toml +++ b/templates/parachain/runtime/Cargo.toml @@ -133,12 +133,12 @@ std = [ "sp-core/std", "sp-genesis-builder/std", "sp-inherents/std", + "sp-keyring/std", "sp-offchain/std", "sp-runtime/std", "sp-session/std", "sp-transaction-pool/std", "sp-version/std", - "sp-keyring/std", "substrate-wasm-builder", "xcm-builder/std", "xcm-executor/std", From e85bdbe022839e8ea858dd5d4cb5e06d71ac9302 Mon Sep 17 00:00:00 2001 From: Joseph Zhao <65984904+programskillforverification@users.noreply.github.com> Date: Tue, 8 Oct 2024 20:44:37 +0800 Subject: [PATCH 07/23] Update prdoc/pr_5804.prdoc Co-authored-by: Iulian Barbu <14218860+iulianbarbu@users.noreply.github.com> --- prdoc/pr_5804.prdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prdoc/pr_5804.prdoc b/prdoc/pr_5804.prdoc index f27a40db7eccb..fffe23cfd22fc 100644 --- a/prdoc/pr_5804.prdoc +++ b/prdoc/pr_5804.prdoc @@ -7,7 +7,7 @@ doc: - audience: Runtime Dev description: | `get_account_id_from_seed / get_from_seed` are copied all over the place, causing code being bloated. - `Keyring::iter()` give the same so it replace all these functions. + `Keyring::iter()` provides the same functionality and is used instead. crates: - name: polkadot-runtime-common From ef21eefa9c544a8df67715bc577446a0ab13cf86 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Fri, 11 Oct 2024 00:56:08 +0800 Subject: [PATCH 08/23] reuse get_from_seed --- Cargo.lock | 1 + .../emulated/common/src/lib.rs | 2 +- .../src/tests/reserve_transfer.rs | 6 +--- .../src/tests/reserve_transfer.rs | 6 +--- .../src/genesis_config_presets.rs | 2 +- .../src/genesis_config_presets.rs | 2 +- .../src/genesis_config_presets.rs | 4 +-- .../src/genesis_config_presets.rs | 4 +-- .../src/genesis_config_presets.rs | 2 +- .../polkadot-parachain/src/chain_spec/mod.rs | 2 +- .../src/chain_spec/penpal.rs | 2 +- .../src/chain_spec/people.rs | 4 +-- .../src/chain_spec/rococo_parachain.rs | 4 +-- cumulus/test/service/src/chain_spec.rs | 3 +- polkadot/node/test/service/src/chain_spec.rs | 23 ++++++------- .../rococo/src/genesis_config_presets.rs | 33 ++++++------------- .../westend/src/genesis_config_presets.rs | 33 ++++++------------- substrate/bin/node/cli/src/chain_spec.rs | 33 ++++++------------- substrate/bin/node/testing/src/keyring.rs | 22 ++++--------- substrate/primitives/core/src/crypto.rs | 7 ++++ substrate/primitives/keyring/src/ed25519.rs | 6 ++++ substrate/primitives/keyring/src/sr25519.rs | 2 ++ .../runtime/src/genesis_config_presets.rs | 4 +-- 23 files changed, 82 insertions(+), 125 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c007873c31ab9..385ede137ee36 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14981,6 +14981,7 @@ dependencies = [ "serde_json", "sp-core 28.0.0", "sp-genesis-builder", + "sp-keyring", "staging-xcm", "substrate-build-script-utils", ] diff --git a/cumulus/parachains/integration-tests/emulated/common/src/lib.rs b/cumulus/parachains/integration-tests/emulated/common/src/lib.rs index 54050fdae5ace..ec1715523f061 100644 --- a/cumulus/parachains/integration-tests/emulated/common/src/lib.rs +++ b/cumulus/parachains/integration-tests/emulated/common/src/lib.rs @@ -114,7 +114,7 @@ pub mod accounts { pub const DUMMY_EMPTY: &str = "JohnDoe"; pub fn init_balances() -> Vec { - Sr25519Keyring::iter().map(|k| k.to_account_id()).collect() + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect() } } diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs index ba410e595ac9b..8e83ff80f05ff 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs @@ -1044,11 +1044,7 @@ fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { ); // Beneficiary is a new (empty) account - let receiver: sp_runtime::AccountId32 = - sr25519::Pair::from_string(&format!("//{}", DUMMY_EMPTY), None) - .expect("static values are valid") - .public() - .into(); + let receiver: sp_runtime::AccountId32 = sr25519::Pair::get_from_seed(DUMMY_EMPTY).into(); // Init values for Asset Hub let penpal_location_as_seen_by_ahr = AssetHubRococo::sibling_location_of(PenpalA::para_id()); let sov_penpal_on_ahr = AssetHubRococo::sovereign_account_id_of(penpal_location_as_seen_by_ahr); diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs index e45142a36f7b2..3c28aad083982 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs @@ -1045,11 +1045,7 @@ fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { ); // Beneficiary is a new (empty) account - let receiver: sp_runtime::AccountId32 = - sr25519::Pair::from_string(&format!("//{}", DUMMY_EMPTY), None) - .expect("static values are valid") - .public() - .into(); + let receiver: sp_runtime::AccountId32 = sr25519::Pair::get_from_seed(DUMMY_EMPTY).into(); // Init values for Asset Hub let penpal_location_as_seen_by_ahr = AssetHubWestend::sibling_location_of(PenpalA::para_id()); let sov_penpal_on_ahr = diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs index 0adf1ee4cc9c6..b475d4d95f099 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs @@ -113,7 +113,7 @@ pub fn get_preset(id: &PresetId) -> Option> { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().map(|x| x.to_account_id()).collect(), + Sr25519Keyring::iter().take(12).map(|x| x.to_account_id()).collect(), testnet_parachains_constants::rococo::currency::UNITS * 1_000_000, 1000.into(), ), diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs index 15ab66e5208d6..83c06ee2ce2a9 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs @@ -111,7 +111,7 @@ pub fn get_preset(id: &PresetId) -> Option> { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), WND * 1_000_000, 1000.into(), ), diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs index 0dfe58d4767d8..0df16dbf9a72f 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs @@ -96,7 +96,7 @@ pub fn get_preset(id: &sp_genesis_builder::PresetId) -> Option Option Option Option Option collectives_westend_genesis( diff --git a/cumulus/polkadot-parachain/src/chain_spec/mod.rs b/cumulus/polkadot-parachain/src/chain_spec/mod.rs index 5c6072a0c43f0..be3257f097c09 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/mod.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/mod.rs @@ -15,7 +15,7 @@ // along with Cumulus. If not, see . use cumulus_primitives_core::ParaId; -use polkadot_parachain_lib::{ +use polkadot_omni_node_lib::{ chain_spec::{GenericChainSpec, LoadSpec}, runtime::{ AuraConsensusId, BlockNumber, Consensus, Runtime, RuntimeResolver as RuntimeResolverT, diff --git a/cumulus/polkadot-parachain/src/chain_spec/penpal.rs b/cumulus/polkadot-parachain/src/chain_spec/penpal.rs index 72d7860089809..8fd8524b81979 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/penpal.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/penpal.rs @@ -44,7 +44,7 @@ pub fn get_penpal_chain_spec(id: ParaId, relay_chain: &str) -> GenericChainSpec (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), id, )) .build() diff --git a/cumulus/polkadot-parachain/src/chain_spec/people.rs b/cumulus/polkadot-parachain/src/chain_spec/people.rs index 4db8602d0b02c..1d8d30dbb0540 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/people.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/people.rs @@ -156,7 +156,7 @@ pub mod rococo { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), para_id, )) .with_properties(properties) @@ -245,7 +245,7 @@ pub mod westend { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), para_id, )) .with_properties(properties) diff --git a/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs b/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs index 89b631337e508..f77d8737b27d8 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs @@ -20,7 +20,7 @@ use crate::chain_spec::SAFE_XCM_VERSION; use cumulus_primitives_core::ParaId; use hex_literal::hex; use parachains_common::AccountId; -use polkadot_parachain_lib::chain_spec::{Extensions, GenericChainSpec}; +use polkadot_omni_node_lib::chain_spec::{Extensions, GenericChainSpec}; use rococo_parachain_runtime::AuraId; use sc_chain_spec::ChainType; use sp_core::crypto::UncheckedInto; @@ -40,7 +40,7 @@ pub fn rococo_parachain_local_config() -> GenericChainSpec { AuraId::from(Sr25519Keyring::Alice.public()), AuraId::from(Sr25519Keyring::Bob.public()), ], - Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), 1000.into(), )) .build() diff --git a/cumulus/test/service/src/chain_spec.rs b/cumulus/test/service/src/chain_spec.rs index adfb94bcd7a48..cefe4862a8443 100644 --- a/cumulus/test/service/src/chain_spec.rs +++ b/cumulus/test/service/src/chain_spec.rs @@ -88,7 +88,8 @@ pub fn testnet_genesis_with_default_endowed( mut extra_endowed_accounts: Vec, self_para_id: Option, ) -> serde_json::Value { - let mut endowed = Sr25519Keyring::iter().map(|k| k.to_account_id()).collect::>(); + let mut endowed = + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect::>(); endowed.append(&mut extra_endowed_accounts); let invulnerables = Sr25519Keyring::iter().take(6).map(|k| k.public().into()).collect::>(); diff --git a/polkadot/node/test/service/src/chain_spec.rs b/polkadot/node/test/service/src/chain_spec.rs index e32a53548680c..09a47a1bc8eca 100644 --- a/polkadot/node/test/service/src/chain_spec.rs +++ b/polkadot/node/test/service/src/chain_spec.rs @@ -16,8 +16,6 @@ //! Chain specifications for the test runtime. -use std::str::FromStr; - use pallet_staking::Forcing; use polkadot_primitives::{ AccountId, AssignmentId, SchedulerParams, ValidatorId, MAX_CODE_SIZE, MAX_POV_SIZE, @@ -28,7 +26,8 @@ use sc_chain_spec::{ChainSpec, ChainType}; use sc_consensus_grandpa::AuthorityId as GrandpaId; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; -use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; +use sp_core::{ed25519, sr25519, Pair}; +use sp_keyring::Sr25519Keyring; use sp_runtime::Perbill; use test_runtime_constants::currency::DOTS; @@ -75,21 +74,19 @@ pub fn polkadot_local_testnet_genesis() -> serde_json::Value { fn get_authority_keys_from_seed( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { - let sr25519_keyring = Sr25519Keyring::from_str(seed).expect("should parse str seed to keyring"); - let ed25519_keyring = Ed25519Keyring::from_str(seed).expect("should parse str seed to keyring"); ( - sr25519_keyring.to_account_id(), - sr25519_keyring.to_account_id(), - BabeId::from(sr25519_keyring.public()), - GrandpaId::from(ed25519_keyring.public()), - ValidatorId::from(sr25519_keyring.public()), - AssignmentId::from(sr25519_keyring.public()), - AuthorityDiscoveryId::from(sr25519_keyring.public()), + sr25519::Pair::get_from_seed(&format!("{}//stash", seed)).into(), + sr25519::Pair::get_from_seed(seed).into(), + BabeId::from(sr25519::Pair::get_from_seed(seed)), + GrandpaId::from(ed25519::Pair::get_from_seed(seed)), + ValidatorId::from(sr25519::Pair::get_from_seed(seed)), + AssignmentId::from(sr25519::Pair::get_from_seed(seed)), + AuthorityDiscoveryId::from(sr25519::Pair::get_from_seed(seed)), ) } fn testnet_accounts() -> Vec { - Sr25519Keyring::iter().map(|k| k.to_account_id()).collect() + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect() } /// Helper function to create polkadot `RuntimeGenesisConfig` for testing diff --git a/polkadot/runtime/rococo/src/genesis_config_presets.rs b/polkadot/runtime/rococo/src/genesis_config_presets.rs index 698bc118526e6..61f46efb9f70c 100644 --- a/polkadot/runtime/rococo/src/genesis_config_presets.rs +++ b/polkadot/runtime/rococo/src/genesis_config_presets.rs @@ -27,7 +27,7 @@ use polkadot_primitives::{AccountId, AssignmentId, SchedulerParams, ValidatorId} use rococo_runtime_constants::currency::UNITS as ROC; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; -use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; +use sp_consensus_beefy::ecdsa_crypto::{self, AuthorityId as BeefyId}; use sp_consensus_grandpa::AuthorityId as GrandpaId; use sp_core::{ed25519, sr25519, Pair}; use sp_genesis_builder::PresetId; @@ -55,11 +55,7 @@ fn get_authority_keys_from_seed( keys.4, keys.5, keys.6, - BeefyId::from( - sp_consensus_beefy::ecdsa_crypto::Pair::from_string(&format!("//{}", seed), None) - .expect("should parse str seed to keyring") - .public(), - ), + BeefyId::from(ecdsa_crypto::Pair::get_from_seed(seed)), ) } @@ -67,28 +63,19 @@ fn get_authority_keys_from_seed( fn get_authority_keys_from_seed_no_beefy( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { - use core::str::FromStr; - let sr25519_seed = sr25519::Pair::from_string(&format!("//{}", seed), None) - .expect("should generate key from seed") - .public(); - let ed25519_seed = ed25519::Pair::from_string(&format!("//{}", seed), None) - .expect("should generate key from seed") - .public(); ( - Sr25519Keyring::from_str(&format!("{}//stash", seed)) - .expect("should parse str seed to keyring") - .to_account_id(), - sr25519_seed.into(), - BabeId::from(sr25519_seed), - GrandpaId::from(ed25519_seed), - ValidatorId::from(sr25519_seed), - AssignmentId::from(sr25519_seed), - AuthorityDiscoveryId::from(sr25519_seed), + sr25519::Pair::get_from_seed(&format!("{}//stash", seed)).into(), + sr25519::Pair::get_from_seed(seed).into(), + BabeId::from(sr25519::Pair::get_from_seed(seed)), + GrandpaId::from(ed25519::Pair::get_from_seed(seed)), + ValidatorId::from(sr25519::Pair::get_from_seed(seed)), + AssignmentId::from(sr25519::Pair::get_from_seed(seed)), + AuthorityDiscoveryId::from(sr25519::Pair::get_from_seed(seed)), ) } fn testnet_accounts() -> Vec { - Sr25519Keyring::iter().map(|x| x.to_account_id()).collect() + Sr25519Keyring::iter().take(12).map(|x| x.to_account_id()).collect() } fn rococo_session_keys( diff --git a/polkadot/runtime/westend/src/genesis_config_presets.rs b/polkadot/runtime/westend/src/genesis_config_presets.rs index bf9ba8df8d037..55ea362e1ec1c 100644 --- a/polkadot/runtime/westend/src/genesis_config_presets.rs +++ b/polkadot/runtime/westend/src/genesis_config_presets.rs @@ -27,7 +27,7 @@ use pallet_staking::{Forcing, StakerStatus}; use polkadot_primitives::{AccountId, AssignmentId, SchedulerParams, ValidatorId}; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; -use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; +use sp_consensus_beefy::ecdsa_crypto::{self, AuthorityId as BeefyId}; use sp_consensus_grandpa::AuthorityId as GrandpaId; use sp_core::{ed25519, sr25519, Pair}; use sp_genesis_builder::PresetId; @@ -57,11 +57,7 @@ fn get_authority_keys_from_seed( keys.4, keys.5, keys.6, - BeefyId::from( - sp_consensus_beefy::ecdsa_crypto::Pair::from_string(&format!("//{}", seed), None) - .expect("should parse str seed to keyring") - .public(), - ), + BeefyId::from(ecdsa_crypto::Pair::get_from_seed(seed)), ) } @@ -69,28 +65,19 @@ fn get_authority_keys_from_seed( fn get_authority_keys_from_seed_no_beefy( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { - use core::str::FromStr; - let sr25519_seed = sr25519::Pair::from_string(&format!("//{}", seed), None) - .expect("should generate key from seed") - .public(); - let ed25519_seed = ed25519::Pair::from_string(&format!("//{}", seed), None) - .expect("should generate key from seed") - .public(); ( - Sr25519Keyring::from_str(&format!("{}//stash", seed)) - .expect("should parse str seed to keyring") - .to_account_id(), - sr25519_seed.into(), - BabeId::from(sr25519_seed), - GrandpaId::from(ed25519_seed), - ValidatorId::from(sr25519_seed), - AssignmentId::from(sr25519_seed), - AuthorityDiscoveryId::from(sr25519_seed), + sr25519::Pair::get_from_seed(&format!("{}//stash", seed)).into(), + sr25519::Pair::get_from_seed(seed).into(), + BabeId::from(sr25519::Pair::get_from_seed(seed)), + GrandpaId::from(ed25519::Pair::get_from_seed(seed)), + ValidatorId::from(sr25519::Pair::get_from_seed(seed)), + AssignmentId::from(sr25519::Pair::get_from_seed(seed)), + AuthorityDiscoveryId::from(sr25519::Pair::get_from_seed(seed)), ) } fn testnet_accounts() -> Vec { - Sr25519Keyring::iter().map(|k| k.to_account_id()).collect() + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect() } fn westend_session_keys( diff --git a/substrate/bin/node/cli/src/chain_spec.rs b/substrate/bin/node/cli/src/chain_spec.rs index aae8884a27d7b..ea3b1aad5ce79 100644 --- a/substrate/bin/node/cli/src/chain_spec.rs +++ b/substrate/bin/node/cli/src/chain_spec.rs @@ -30,7 +30,7 @@ use sc_telemetry::TelemetryEndpoints; use serde::{Deserialize, Serialize}; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; -use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; +use sp_consensus_beefy::ecdsa_crypto::{self, AuthorityId as BeefyId}; use sp_consensus_grandpa::AuthorityId as GrandpaId; use sp_core::{crypto::UncheckedInto, ed25519, sr25519, Pair}; use sp_keyring::Sr25519Keyring; @@ -247,28 +247,15 @@ pub fn authority_keys_from_seed( seed: &str, ) -> (AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId, MixnetId, BeefyId) { - use core::str::FromStr; - let sr25519_seed = sr25519::Pair::from_string(&format!("//{}", seed), None) - .expect("should generate key from seed") - .public(); - let ed25519_seed = ed25519::Pair::from_string(&format!("//{}", seed), None) - .expect("should generate key from seed") - .public(); ( - Sr25519Keyring::from_str(&format!("{}//stash", seed)) - .expect("should parse str seed to keyring") - .to_account_id(), - sr25519_seed.into(), - GrandpaId::from(ed25519_seed), - BabeId::from(sr25519_seed), - ImOnlineId::from(sr25519_seed), - AuthorityDiscoveryId::from(sr25519_seed), - MixnetId::from(sr25519_seed), - BeefyId::from( - sp_consensus_beefy::ecdsa_crypto::Pair::from_string(&format!("//{}", seed), None) - .expect("should parse str seed to keyring") - .public(), - ), + sr25519::Pair::get_from_seed(&format!("{}//stash", seed)).into(), + sr25519::Pair::get_from_seed(seed).into(), + GrandpaId::from(ed25519::Pair::get_from_seed(seed)), + BabeId::from(sr25519::Pair::get_from_seed(seed)), + ImOnlineId::from(sr25519::Pair::get_from_seed(seed)), + AuthorityDiscoveryId::from(sr25519::Pair::get_from_seed(seed)), + MixnetId::from(sr25519::Pair::get_from_seed(seed)), + BeefyId::from(ecdsa_crypto::Pair::get_from_seed(seed)), ) } @@ -302,7 +289,7 @@ fn configure_accounts( Vec<(AccountId, AccountId, Balance, StakerStatus)>, ) { let mut endowed_accounts: Vec = endowed_accounts - .unwrap_or_else(|| Sr25519Keyring::iter().map(|k| k.to_account_id()).collect()); + .unwrap_or_else(|| Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect()); // endow all authorities and nominators. initial_authorities .iter() diff --git a/substrate/bin/node/testing/src/keyring.rs b/substrate/bin/node/testing/src/keyring.rs index e1fa8b18e54d9..6932796ccaa25 100644 --- a/substrate/bin/node/testing/src/keyring.rs +++ b/substrate/bin/node/testing/src/keyring.rs @@ -58,23 +58,13 @@ pub fn ferdie() -> AccountId { /// Convert keyrings into `SessionKeys`. pub fn session_keys_from_seed(seed: &str) -> SessionKeys { - // use std::str::FromStr; - let sr25519_seed = sr25519::Pair::from_string(&format!("//{}", seed), None) - .expect("should parse str seed to sr25519 public") - .public(); SessionKeys { - grandpa: ed25519::Pair::from_string(&format!("//{}", seed), None) - .expect("should parse str seed to sr25519 public") - .public() - .into(), - babe: sr25519_seed.into(), - im_online: sr25519_seed.into(), - authority_discovery: sr25519_seed.into(), - mixnet: sr25519_seed.into(), - beefy: ecdsa::Pair::from_string(&format!("//{}", seed), None) - .expect("should parse str seed to ecdsa public") - .public() - .into(), + grandpa: ed25519::Pair::get_from_seed(seed).into(), + babe: sr25519::Pair::get_from_seed(seed).into(), + im_online: sr25519::Pair::get_from_seed(seed).into(), + authority_discovery: sr25519::Pair::get_from_seed(seed).into(), + mixnet: sr25519::Pair::get_from_seed(seed).into(), + beefy: ecdsa::Pair::get_from_seed(seed).into(), } } diff --git a/substrate/primitives/core/src/crypto.rs b/substrate/primitives/core/src/crypto.rs index fd7fe77672040..9cb4da1ad89ae 100644 --- a/substrate/primitives/core/src/crypto.rs +++ b/substrate/primitives/core/src/crypto.rs @@ -958,6 +958,13 @@ pub trait Pair: CryptoType + Sized { /// Return a vec filled with raw data. fn to_raw_vec(&self) -> Vec; + + /// Interprets the string `s` in order to generate a public key without password. + fn get_from_seed(s: &str) -> Self::Public { + Self::from_string(&format!("//{}", s), None) + .expect("static values are valid; qed") + .public() + } } /// One type is wrapped by another. diff --git a/substrate/primitives/keyring/src/ed25519.rs b/substrate/primitives/keyring/src/ed25519.rs index 2f398d3d5d8c9..ed0925d449bb1 100644 --- a/substrate/primitives/keyring/src/ed25519.rs +++ b/substrate/primitives/keyring/src/ed25519.rs @@ -154,6 +154,12 @@ impl FromStr for Keyring { "Dave" => Ok(Keyring::Dave), "Eve" => Ok(Keyring::Eve), "Ferdie" => Ok(Keyring::Ferdie), + "Alice//stash" => Ok(Keyring::AliceStash), + "Bob//stash" => Ok(Keyring::BobStash), + "Charlie//stash" => Ok(Keyring::CharlieStash), + "Dave//stash" => Ok(Keyring::DaveStash), + "Eve//stash" => Ok(Keyring::EveStash), + "Ferdie//stash" => Ok(Keyring::FerdieStash), "One" => Ok(Keyring::One), "Two" => Ok(Keyring::Two), _ => Err(ParseKeyringError), diff --git a/substrate/primitives/keyring/src/sr25519.rs b/substrate/primitives/keyring/src/sr25519.rs index 44b330b2911d9..86bfa9c37d319 100644 --- a/substrate/primitives/keyring/src/sr25519.rs +++ b/substrate/primitives/keyring/src/sr25519.rs @@ -171,6 +171,8 @@ impl FromStr for Keyring { "Dave//stash" => Ok(Keyring::DaveStash), "Eve//stash" => Ok(Keyring::EveStash), "Ferdie//stash" => Ok(Keyring::FerdieStash), + "One" => Ok(Keyring::One), + "Two" => Ok(Keyring::Two), _ => Err(ParseKeyringError), } } diff --git a/templates/parachain/runtime/src/genesis_config_presets.rs b/templates/parachain/runtime/src/genesis_config_presets.rs index 0652d072135ed..7e658d10a8115 100644 --- a/templates/parachain/runtime/src/genesis_config_presets.rs +++ b/templates/parachain/runtime/src/genesis_config_presets.rs @@ -71,7 +71,7 @@ fn local_testnet_genesis() -> Value { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), Sr25519Keyring::Alice.to_account_id(), 1000.into(), ) @@ -84,7 +84,7 @@ fn development_config_genesis() -> Value { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().map(|k| k.to_account_id()).collect(), + Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), Sr25519Keyring::Alice.to_account_id(), 1000.into(), ) From ee39c0d67049420940ea0d6a4b9fb258f2aaca95 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Fri, 11 Oct 2024 12:02:56 +0800 Subject: [PATCH 09/23] fix format not found --- prdoc/pr_5804.prdoc | 2 ++ substrate/primitives/core/src/crypto.rs | 1 + 2 files changed, 3 insertions(+) diff --git a/prdoc/pr_5804.prdoc b/prdoc/pr_5804.prdoc index fffe23cfd22fc..eb2a0c56a5df6 100644 --- a/prdoc/pr_5804.prdoc +++ b/prdoc/pr_5804.prdoc @@ -38,3 +38,5 @@ crates: bump: patch - name: polkadot-parachain-bin bump: patch + - name: sp-core + bump: minor diff --git a/substrate/primitives/core/src/crypto.rs b/substrate/primitives/core/src/crypto.rs index 9cb4da1ad89ae..67e603c8439ec 100644 --- a/substrate/primitives/core/src/crypto.rs +++ b/substrate/primitives/core/src/crypto.rs @@ -960,6 +960,7 @@ pub trait Pair: CryptoType + Sized { fn to_raw_vec(&self) -> Vec; /// Interprets the string `s` in order to generate a public key without password. + #[cfg(feature = "serde")] fn get_from_seed(s: &str) -> Self::Public { Self::from_string(&format!("//{}", s), None) .expect("static values are valid; qed") From 38d3abad54e978814cbf1c836776b8050b699c30 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Fri, 11 Oct 2024 12:52:18 +0800 Subject: [PATCH 10/23] fix prdoc --- prdoc/pr_5804.prdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prdoc/pr_5804.prdoc b/prdoc/pr_5804.prdoc index eb2a0c56a5df6..a6fc71149317c 100644 --- a/prdoc/pr_5804.prdoc +++ b/prdoc/pr_5804.prdoc @@ -39,4 +39,4 @@ crates: - name: polkadot-parachain-bin bump: patch - name: sp-core - bump: minor + bump: patch From 41b0d6ba5b2c72ed3910a39c5c63228be53c5932 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Fri, 11 Oct 2024 23:20:49 +0800 Subject: [PATCH 11/23] keep lowercase str --- substrate/primitives/keyring/src/sr25519.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/substrate/primitives/keyring/src/sr25519.rs b/substrate/primitives/keyring/src/sr25519.rs index 86bfa9c37d319..70a35dcc43e38 100644 --- a/substrate/primitives/keyring/src/sr25519.rs +++ b/substrate/primitives/keyring/src/sr25519.rs @@ -159,20 +159,20 @@ impl FromStr for Keyring { fn from_str(s: &str) -> Result::Err> { match s { - "Alice" => Ok(Keyring::Alice), - "Bob" => Ok(Keyring::Bob), - "Charlie" => Ok(Keyring::Charlie), - "Dave" => Ok(Keyring::Dave), - "Eve" => Ok(Keyring::Eve), - "Ferdie" => Ok(Keyring::Ferdie), + "Alice" | "alice" => Ok(Keyring::Alice), + "Bob" | "bob" => Ok(Keyring::Bob), + "Charlie" | "charlie" => Ok(Keyring::Charlie), + "Dave" | "dave" => Ok(Keyring::Dave), + "Eve" | "eve" => Ok(Keyring::Eve), + "Ferdie" | "ferdie" => Ok(Keyring::Ferdie), "Alice//stash" => Ok(Keyring::AliceStash), "Bob//stash" => Ok(Keyring::BobStash), "Charlie//stash" => Ok(Keyring::CharlieStash), "Dave//stash" => Ok(Keyring::DaveStash), "Eve//stash" => Ok(Keyring::EveStash), "Ferdie//stash" => Ok(Keyring::FerdieStash), - "One" => Ok(Keyring::One), - "Two" => Ok(Keyring::Two), + "One" | "one" => Ok(Keyring::One), + "Two" | "two" => Ok(Keyring::Two), _ => Err(ParseKeyringError), } } From ae96dfebe79be6cf419fedb96e22d08d7c6a62b6 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Mon, 14 Oct 2024 21:48:56 +0800 Subject: [PATCH 12/23] rewirte helper func --- Cargo.lock | 1 - .../src/tests/reserve_transfer.rs | 5 ++-- .../src/tests/reserve_transfer.rs | 5 ++-- cumulus/xcm/xcm-emulator/Cargo.toml | 1 - cumulus/xcm/xcm-emulator/src/lib.rs | 12 ++++------ polkadot/node/test/service/src/chain_spec.rs | 16 ++++++------- .../rococo/src/genesis_config_presets.rs | 20 ++++++++-------- .../westend/src/genesis_config_presets.rs | 20 ++++++++-------- substrate/bin/node/cli/src/chain_spec.rs | 23 +++++++++++-------- substrate/bin/node/testing/src/bench.rs | 13 +++++++---- substrate/bin/node/testing/src/keyring.rs | 14 +++++------ substrate/primitives/core/src/crypto.rs | 18 ++++++++------- 12 files changed, 76 insertions(+), 72 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c54301f943c22..e67866cdd6edf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -26941,7 +26941,6 @@ dependencies = [ "sp-core 28.0.0", "sp-crypto-hashing 0.1.0", "sp-io 30.0.0", - "sp-keyring", "sp-runtime 31.0.1", "sp-std 14.0.0", "sp-tracing 16.0.0", diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs index 8e83ff80f05ff..247b88c2f8450 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use sp_core::{sr25519, Pair}; +use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; use crate::imports::*; @@ -1044,7 +1044,8 @@ fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { ); // Beneficiary is a new (empty) account - let receiver: sp_runtime::AccountId32 = sr25519::Pair::get_from_seed(DUMMY_EMPTY).into(); + let receiver: sp_runtime::AccountId32 = + get_public_from_string_or_panic::(DUMMY_EMPTY).into(); // Init values for Asset Hub let penpal_location_as_seen_by_ahr = AssetHubRococo::sibling_location_of(PenpalA::para_id()); let sov_penpal_on_ahr = AssetHubRococo::sovereign_account_id_of(penpal_location_as_seen_by_ahr); diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs index 3c28aad083982..8bbeb0706c8fc 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use sp_core::{sr25519, Pair}; +use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; use crate::imports::*; @@ -1045,7 +1045,8 @@ fn reserve_transfer_multiple_assets_from_para_to_asset_hub() { ); // Beneficiary is a new (empty) account - let receiver: sp_runtime::AccountId32 = sr25519::Pair::get_from_seed(DUMMY_EMPTY).into(); + let receiver: sp_runtime::AccountId32 = + get_public_from_string_or_panic::(DUMMY_EMPTY).into(); // Init values for Asset Hub let penpal_location_as_seen_by_ahr = AssetHubWestend::sibling_location_of(PenpalA::para_id()); let sov_penpal_on_ahr = diff --git a/cumulus/xcm/xcm-emulator/Cargo.toml b/cumulus/xcm/xcm-emulator/Cargo.toml index 94feb487a3a78..8598481fae767 100644 --- a/cumulus/xcm/xcm-emulator/Cargo.toml +++ b/cumulus/xcm/xcm-emulator/Cargo.toml @@ -21,7 +21,6 @@ frame-support = { workspace = true, default-features = true } frame-system = { workspace = true, default-features = true } sp-io = { workspace = true, default-features = true } sp-core = { workspace = true, default-features = true } -sp-keyring = { workspace = true, default-features = true } sp-crypto-hashing = { workspace = true, default-features = true } sp-std = { workspace = true, default-features = true } sp-runtime = { workspace = true, default-features = true } diff --git a/cumulus/xcm/xcm-emulator/src/lib.rs b/cumulus/xcm/xcm-emulator/src/lib.rs index 1e87bf7aeb717..b91246a7bda22 100644 --- a/cumulus/xcm/xcm-emulator/src/lib.rs +++ b/cumulus/xcm/xcm-emulator/src/lib.rs @@ -49,10 +49,11 @@ pub use frame_system::{ pub use pallet_balances::AccountData; pub use pallet_message_queue; pub use sp_arithmetic::traits::Bounded; -pub use sp_core::{parameter_types, sr25519, storage::Storage, Pair}; +pub use sp_core::{ + crypto::get_public_from_string_or_panic, parameter_types, sr25519, storage::Storage, Pair, +}; pub use sp_crypto_hashing::blake2_256; pub use sp_io::TestExternalities; -pub use sp_keyring::Sr25519Keyring; pub use sp_runtime::BoundedSlice; pub use sp_tracing; @@ -227,12 +228,7 @@ pub trait Chain: TestExt { type OriginCaller; fn account_id_of(seed: &str) -> AccountId { - use sp_runtime::traits::IdentifyAccount; - use std::str::FromStr; - sp_runtime::MultiSigner::from( - Sr25519Keyring::from_str(seed).expect("should parse str seed to keyring"), - ) - .into_account() + get_public_from_string_or_panic::(seed).into() } fn account_data_of(account: AccountIdOf) -> AccountData; diff --git a/polkadot/node/test/service/src/chain_spec.rs b/polkadot/node/test/service/src/chain_spec.rs index 09a47a1bc8eca..26eb0c6ef9337 100644 --- a/polkadot/node/test/service/src/chain_spec.rs +++ b/polkadot/node/test/service/src/chain_spec.rs @@ -26,7 +26,7 @@ use sc_chain_spec::{ChainSpec, ChainType}; use sc_consensus_grandpa::AuthorityId as GrandpaId; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; -use sp_core::{ed25519, sr25519, Pair}; +use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; use sp_keyring::Sr25519Keyring; use sp_runtime::Perbill; use test_runtime_constants::currency::DOTS; @@ -75,13 +75,13 @@ fn get_authority_keys_from_seed( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { ( - sr25519::Pair::get_from_seed(&format!("{}//stash", seed)).into(), - sr25519::Pair::get_from_seed(seed).into(), - BabeId::from(sr25519::Pair::get_from_seed(seed)), - GrandpaId::from(ed25519::Pair::get_from_seed(seed)), - ValidatorId::from(sr25519::Pair::get_from_seed(seed)), - AssignmentId::from(sr25519::Pair::get_from_seed(seed)), - AuthorityDiscoveryId::from(sr25519::Pair::get_from_seed(seed)), + get_public_from_string_or_panic::(&format!("{}//stash", seed)).into(), + get_public_from_string_or_panic::(seed).into(), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), ) } diff --git a/polkadot/runtime/rococo/src/genesis_config_presets.rs b/polkadot/runtime/rococo/src/genesis_config_presets.rs index 61f46efb9f70c..3107652215731 100644 --- a/polkadot/runtime/rococo/src/genesis_config_presets.rs +++ b/polkadot/runtime/rococo/src/genesis_config_presets.rs @@ -27,9 +27,9 @@ use polkadot_primitives::{AccountId, AssignmentId, SchedulerParams, ValidatorId} use rococo_runtime_constants::currency::UNITS as ROC; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; -use sp_consensus_beefy::ecdsa_crypto::{self, AuthorityId as BeefyId}; +use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; use sp_consensus_grandpa::AuthorityId as GrandpaId; -use sp_core::{ed25519, sr25519, Pair}; +use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; use sp_genesis_builder::PresetId; use sp_keyring::Sr25519Keyring; @@ -55,7 +55,7 @@ fn get_authority_keys_from_seed( keys.4, keys.5, keys.6, - BeefyId::from(ecdsa_crypto::Pair::get_from_seed(seed)), + get_public_from_string_or_panic::(seed), ) } @@ -64,13 +64,13 @@ fn get_authority_keys_from_seed_no_beefy( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { ( - sr25519::Pair::get_from_seed(&format!("{}//stash", seed)).into(), - sr25519::Pair::get_from_seed(seed).into(), - BabeId::from(sr25519::Pair::get_from_seed(seed)), - GrandpaId::from(ed25519::Pair::get_from_seed(seed)), - ValidatorId::from(sr25519::Pair::get_from_seed(seed)), - AssignmentId::from(sr25519::Pair::get_from_seed(seed)), - AuthorityDiscoveryId::from(sr25519::Pair::get_from_seed(seed)), + get_public_from_string_or_panic::(&format!("{}//stash", seed)).into(), + get_public_from_string_or_panic::(seed).into(), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), ) } diff --git a/polkadot/runtime/westend/src/genesis_config_presets.rs b/polkadot/runtime/westend/src/genesis_config_presets.rs index 55ea362e1ec1c..8858951ac765f 100644 --- a/polkadot/runtime/westend/src/genesis_config_presets.rs +++ b/polkadot/runtime/westend/src/genesis_config_presets.rs @@ -27,9 +27,9 @@ use pallet_staking::{Forcing, StakerStatus}; use polkadot_primitives::{AccountId, AssignmentId, SchedulerParams, ValidatorId}; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; -use sp_consensus_beefy::ecdsa_crypto::{self, AuthorityId as BeefyId}; +use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; use sp_consensus_grandpa::AuthorityId as GrandpaId; -use sp_core::{ed25519, sr25519, Pair}; +use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; use sp_genesis_builder::PresetId; use sp_keyring::Sr25519Keyring; use sp_runtime::Perbill; @@ -57,7 +57,7 @@ fn get_authority_keys_from_seed( keys.4, keys.5, keys.6, - BeefyId::from(ecdsa_crypto::Pair::get_from_seed(seed)), + get_public_from_string_or_panic::(seed), ) } @@ -66,13 +66,13 @@ fn get_authority_keys_from_seed_no_beefy( seed: &str, ) -> (AccountId, AccountId, BabeId, GrandpaId, ValidatorId, AssignmentId, AuthorityDiscoveryId) { ( - sr25519::Pair::get_from_seed(&format!("{}//stash", seed)).into(), - sr25519::Pair::get_from_seed(seed).into(), - BabeId::from(sr25519::Pair::get_from_seed(seed)), - GrandpaId::from(ed25519::Pair::get_from_seed(seed)), - ValidatorId::from(sr25519::Pair::get_from_seed(seed)), - AssignmentId::from(sr25519::Pair::get_from_seed(seed)), - AuthorityDiscoveryId::from(sr25519::Pair::get_from_seed(seed)), + get_public_from_string_or_panic::(&format!("{}//stash", seed)).into(), + get_public_from_string_or_panic::(seed).into(), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), ) } diff --git a/substrate/bin/node/cli/src/chain_spec.rs b/substrate/bin/node/cli/src/chain_spec.rs index ea3b1aad5ce79..c2e2b919d3ffa 100644 --- a/substrate/bin/node/cli/src/chain_spec.rs +++ b/substrate/bin/node/cli/src/chain_spec.rs @@ -30,9 +30,12 @@ use sc_telemetry::TelemetryEndpoints; use serde::{Deserialize, Serialize}; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; -use sp_consensus_beefy::ecdsa_crypto::{self, AuthorityId as BeefyId}; +use sp_consensus_beefy::ecdsa_crypto::AuthorityId as BeefyId; use sp_consensus_grandpa::AuthorityId as GrandpaId; -use sp_core::{crypto::UncheckedInto, ed25519, sr25519, Pair}; +use sp_core::{ + crypto::{get_public_from_string_or_panic, UncheckedInto}, + sr25519, +}; use sp_keyring::Sr25519Keyring; use sp_mixnet::types::AuthorityId as MixnetId; use sp_runtime::Perbill; @@ -248,14 +251,14 @@ pub fn authority_keys_from_seed( ) -> (AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId, MixnetId, BeefyId) { ( - sr25519::Pair::get_from_seed(&format!("{}//stash", seed)).into(), - sr25519::Pair::get_from_seed(seed).into(), - GrandpaId::from(ed25519::Pair::get_from_seed(seed)), - BabeId::from(sr25519::Pair::get_from_seed(seed)), - ImOnlineId::from(sr25519::Pair::get_from_seed(seed)), - AuthorityDiscoveryId::from(sr25519::Pair::get_from_seed(seed)), - MixnetId::from(sr25519::Pair::get_from_seed(seed)), - BeefyId::from(ecdsa_crypto::Pair::get_from_seed(seed)), + get_public_from_string_or_panic::(&format!("{}//stash", seed)).into(), + get_public_from_string_or_panic::(seed).into(), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), + get_public_from_string_or_panic::(seed), ) } diff --git a/substrate/bin/node/testing/src/bench.rs b/substrate/bin/node/testing/src/bench.rs index 65f6d63257dc5..fb0504f8fadef 100644 --- a/substrate/bin/node/testing/src/bench.rs +++ b/substrate/bin/node/testing/src/bench.rs @@ -47,7 +47,9 @@ use sc_executor::{WasmExecutionMethod, WasmtimeInstantiationStrategy}; use sp_api::ProvideRuntimeApi; use sp_block_builder::BlockBuilder; use sp_consensus::BlockOrigin; -use sp_core::{ed25519, sr25519, traits::SpawnNamed, Pair}; +use sp_core::{ + crypto::get_public_from_string_or_panic, ed25519, sr25519, traits::SpawnNamed, Pair, +}; use sp_crypto_hashing::blake2_256; use sp_inherents::InherentData; use sp_runtime::{ @@ -283,15 +285,16 @@ impl<'a> Iterator for BlockContentIterator<'a> { type Item = OpaqueExtrinsic; fn next(&mut self) -> Option { - use core::str::FromStr; if self.content.size.map(|size| size <= self.iteration).unwrap_or(false) { return None } let sender = self.keyring.at(self.iteration); - let receiver = sr25519::Public::from_str(&format!("random-user//{}", self.iteration)) - .expect("should parse str seed to sr25519 public") - .into(); + let receiver = get_public_from_string_or_panic::(&format!( + "random-user//{}", + self.iteration + )) + .into(); let signed = self.keyring.sign( CheckedExtrinsic { diff --git a/substrate/bin/node/testing/src/keyring.rs b/substrate/bin/node/testing/src/keyring.rs index 6932796ccaa25..1b1cc9851831f 100644 --- a/substrate/bin/node/testing/src/keyring.rs +++ b/substrate/bin/node/testing/src/keyring.rs @@ -21,7 +21,7 @@ use codec::Encode; use kitchensink_runtime::{CheckedExtrinsic, SessionKeys, SignedExtra, UncheckedExtrinsic}; use node_primitives::{AccountId, Balance, Nonce}; -use sp_core::{ecdsa, ed25519, sr25519, Pair}; +use sp_core::{crypto::get_public_from_string_or_panic, ecdsa, ed25519, sr25519}; use sp_crypto_hashing::blake2_256; use sp_keyring::Sr25519Keyring; use sp_runtime::generic::Era; @@ -59,12 +59,12 @@ pub fn ferdie() -> AccountId { /// Convert keyrings into `SessionKeys`. pub fn session_keys_from_seed(seed: &str) -> SessionKeys { SessionKeys { - grandpa: ed25519::Pair::get_from_seed(seed).into(), - babe: sr25519::Pair::get_from_seed(seed).into(), - im_online: sr25519::Pair::get_from_seed(seed).into(), - authority_discovery: sr25519::Pair::get_from_seed(seed).into(), - mixnet: sr25519::Pair::get_from_seed(seed).into(), - beefy: ecdsa::Pair::get_from_seed(seed).into(), + grandpa: get_public_from_string_or_panic::(seed).into(), + babe: get_public_from_string_or_panic::(seed).into(), + im_online: get_public_from_string_or_panic::(seed).into(), + authority_discovery: get_public_from_string_or_panic::(seed).into(), + mixnet: get_public_from_string_or_panic::(seed).into(), + beefy: get_public_from_string_or_panic::(seed).into(), } } diff --git a/substrate/primitives/core/src/crypto.rs b/substrate/primitives/core/src/crypto.rs index 67e603c8439ec..9cbc0dcd3d959 100644 --- a/substrate/primitives/core/src/crypto.rs +++ b/substrate/primitives/core/src/crypto.rs @@ -419,6 +419,16 @@ pub fn set_default_ss58_version(new_default: Ss58AddressFormat) { DEFAULT_VERSION.store(new_default.into(), core::sync::atomic::Ordering::Relaxed); } +/// Interprets the string `s` in order to generate a public key without password. +#[cfg(feature = "serde")] +pub fn get_public_from_string_or_panic( + s: &str, +) -> ::Public { + TPublic::Pair::from_string(&format!("//{}", s), None) + .expect("static values are valid; qed") + .public() +} + #[cfg(feature = "std")] impl + AsRef<[u8]> + Public + Derive> Ss58Codec for T { fn from_string(s: &str) -> Result { @@ -958,14 +968,6 @@ pub trait Pair: CryptoType + Sized { /// Return a vec filled with raw data. fn to_raw_vec(&self) -> Vec; - - /// Interprets the string `s` in order to generate a public key without password. - #[cfg(feature = "serde")] - fn get_from_seed(s: &str) -> Self::Public { - Self::from_string(&format!("//{}", s), None) - .expect("static values are valid; qed") - .public() - } } /// One type is wrapped by another. From 009fd5b93c050d9a5aaeba33901c0eb812167946 Mon Sep 17 00:00:00 2001 From: Joseph Zhao <65984904+programskillforverification@users.noreply.github.com> Date: Tue, 15 Oct 2024 21:07:39 +0800 Subject: [PATCH 13/23] Update cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com> --- .../tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs index 247b88c2f8450..5cc13f6740966 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs @@ -14,7 +14,6 @@ // limitations under the License. use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; - use crate::imports::*; fn relay_to_para_sender_assertions(t: RelayToParaTest) { From f2be49416f5dd34942c8402dbb71565bd385c6c7 Mon Sep 17 00:00:00 2001 From: Joseph Zhao <65984904+programskillforverification@users.noreply.github.com> Date: Tue, 15 Oct 2024 21:07:50 +0800 Subject: [PATCH 14/23] Update cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com> --- .../tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs index 8bbeb0706c8fc..eaa9696826aab 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs @@ -14,7 +14,6 @@ // limitations under the License. use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; - use crate::imports::*; fn relay_to_para_sender_assertions(t: RelayToParaTest) { From eeb298b5e97d4c2651d008a556012e77dd925fe3 Mon Sep 17 00:00:00 2001 From: Joseph Zhao <65984904+programskillforverification@users.noreply.github.com> Date: Tue, 15 Oct 2024 21:08:24 +0800 Subject: [PATCH 15/23] Update substrate/primitives/core/src/crypto.rs Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com> --- substrate/primitives/core/src/crypto.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/primitives/core/src/crypto.rs b/substrate/primitives/core/src/crypto.rs index 9cbc0dcd3d959..9f4ba02a9318d 100644 --- a/substrate/primitives/core/src/crypto.rs +++ b/substrate/primitives/core/src/crypto.rs @@ -425,7 +425,7 @@ pub fn get_public_from_string_or_panic( s: &str, ) -> ::Public { TPublic::Pair::from_string(&format!("//{}", s), None) - .expect("static values are valid; qed") + .expect("Function expects valid argument; qed") .public() } From e9eb64b4ad7192fc69443759a48fa4fbd9b27006 Mon Sep 17 00:00:00 2001 From: Joseph Zhao <65984904+programskillforverification@users.noreply.github.com> Date: Tue, 15 Oct 2024 21:08:40 +0800 Subject: [PATCH 16/23] Update substrate/primitives/core/src/crypto.rs Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com> --- substrate/primitives/core/src/crypto.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/substrate/primitives/core/src/crypto.rs b/substrate/primitives/core/src/crypto.rs index 9f4ba02a9318d..0904668fe19b1 100644 --- a/substrate/primitives/core/src/crypto.rs +++ b/substrate/primitives/core/src/crypto.rs @@ -420,6 +420,8 @@ pub fn set_default_ss58_version(new_default: Ss58AddressFormat) { } /// Interprets the string `s` in order to generate a public key without password. +/// +/// Function will panic when invalid string is provided. #[cfg(feature = "serde")] pub fn get_public_from_string_or_panic( s: &str, From a161d07060d2378beeb87d4878cbe23275019f67 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Wed, 16 Oct 2024 22:39:41 +0800 Subject: [PATCH 17/23] adjust --- .../assets/asset-hub-rococo/Cargo.toml | 4 +-- .../assets/asset-hub-westend/Cargo.toml | 4 +-- .../bridges/bridge-hub-rococo/Cargo.toml | 4 +-- .../bridges/bridge-hub-westend/Cargo.toml | 4 +-- .../src/tests/reserve_transfer.rs | 2 +- .../src/tests/reserve_transfer.rs | 2 +- .../assets/asset-hub-rococo/Cargo.toml | 6 +--- .../assets/asset-hub-westend/Cargo.toml | 6 +--- .../bridge-hubs/bridge-hub-rococo/Cargo.toml | 6 ++-- .../bridge-hubs/bridge-hub-westend/Cargo.toml | 6 ++-- cumulus/polkadot-parachain/Cargo.toml | 5 +--- .../polkadot-parachain/src/chain_spec/mod.rs | 5 +--- prdoc/pr_5804.prdoc | 2 +- substrate/bin/node/cli/Cargo.toml | 15 ++-------- substrate/primitives/core/src/crypto.rs | 5 ++-- .../primitives/keyring/src/bandersnatch.rs | 12 ++------ substrate/primitives/keyring/src/ed25519.rs | 28 +++++++------------ substrate/primitives/keyring/src/lib.rs | 12 ++++++++ substrate/primitives/keyring/src/sr25519.rs | 12 ++------ templates/parachain/runtime/Cargo.toml | 4 +-- 20 files changed, 47 insertions(+), 97 deletions(-) diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml index 0c729fffec66c..25796e7d64b45 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo/Cargo.toml @@ -23,9 +23,7 @@ cumulus-primitives-core = { workspace = true } emulated-integration-tests-common = { workspace = true } asset-hub-rococo-runtime = { workspace = true, default-features = true } rococo-emulated-chain = { workspace = true } -testnet-parachains-constants = { features = [ - "rococo", -], workspace = true, default-features = true } +testnet-parachains-constants = { features = ["rococo"], workspace = true, default-features = true } # Polkadot xcm = { workspace = true } diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml index 7c70892fb3d6a..8e423ebbf9c27 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-westend/Cargo.toml @@ -23,9 +23,7 @@ cumulus-primitives-core = { workspace = true } emulated-integration-tests-common = { workspace = true } asset-hub-westend-runtime = { workspace = true } westend-emulated-chain = { workspace = true, default-features = true } -testnet-parachains-constants = { features = [ - "westend", -], workspace = true, default-features = true } +testnet-parachains-constants = { features = ["westend"], workspace = true, default-features = true } # Polkadot xcm = { workspace = true } diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml index 43d4c608fda0c..231265085edad 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo/Cargo.toml @@ -28,6 +28,4 @@ parachains-common = { workspace = true, default-features = true } emulated-integration-tests-common = { workspace = true } bridge-hub-rococo-runtime = { workspace = true, default-features = true } bridge-hub-common = { workspace = true } -testnet-parachains-constants = { features = [ - "rococo", -], workspace = true, default-features = true } +testnet-parachains-constants = { features = ["rococo"], workspace = true, default-features = true } diff --git a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml index e5ea9b4e28bad..8292e132809c4 100644 --- a/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend/Cargo.toml @@ -28,6 +28,4 @@ parachains-common = { workspace = true, default-features = true } emulated-integration-tests-common = { workspace = true } bridge-hub-westend-runtime = { workspace = true, default-features = true } bridge-hub-common = { workspace = true } -testnet-parachains-constants = { features = [ - "westend", -], workspace = true, default-features = true } +testnet-parachains-constants = { features = ["westend"], workspace = true, default-features = true } diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs index 5cc13f6740966..302f71f89f838 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs @@ -13,8 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; use crate::imports::*; +use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; fn relay_to_para_sender_assertions(t: RelayToParaTest) { type RuntimeEvent = ::RuntimeEvent; diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs index eaa9696826aab..10c27c338ec7f 100644 --- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs @@ -13,8 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; use crate::imports::*; +use sp_core::{crypto::get_public_from_string_or_panic, sr25519}; fn relay_to_para_sender_assertions(t: RelayToParaTest) { type RuntimeEvent = ::RuntimeEvent; diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml index 3a37b5997f283..00f2cf8f636f2 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml @@ -60,11 +60,7 @@ sp-transaction-pool = { workspace = true } sp-version = { workspace = true } sp-weights = { workspace = true } # num-traits feature needed for dex integer sq root: -primitive-types = { features = [ - "codec", - "num-traits", - "scale-info", -], workspace = true } +primitive-types = { features = ["codec", "num-traits", "scale-info"], workspace = true } # Polkadot rococo-runtime-constants = { workspace = true } diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml index e3309c27ccc14..72a125cee2ad5 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml @@ -60,11 +60,7 @@ sp-storage = { workspace = true } sp-transaction-pool = { workspace = true } sp-version = { workspace = true } # num-traits feature needed for dex integer sq root: -primitive-types = { features = [ - "codec", - "num-traits", - "scale-info", -], workspace = true } +primitive-types = { features = ["codec", "num-traits", "scale-info"], workspace = true } # Polkadot pallet-xcm = { workspace = true } diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml index 1738d7db53d08..1fe500b4d2de5 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml @@ -17,9 +17,7 @@ codec = { features = ["derive"], workspace = true } hex-literal = { workspace = true, default-features = true } log = { workspace = true } scale-info = { features = ["derive"], workspace = true } -serde = { optional = true, features = [ - "derive", -], workspace = true, default-features = true } +serde = { optional = true, features = ["derive"], workspace = true, default-features = true } serde_json = { features = ["alloc"], workspace = true } # Substrate @@ -125,7 +123,6 @@ bridge-runtime-common = { features = [ "integrity-test", ], workspace = true, default-features = true } pallet-bridge-relayers = { features = ["integrity-test"], workspace = true } -sp-keyring = { workspace = true, default-features = true } snowbridge-runtime-test-common = { workspace = true, default-features = true } [features] @@ -209,6 +206,7 @@ std = [ "sp-genesis-builder/std", "sp-inherents/std", "sp-io/std", + "sp-keyring/std", "sp-offchain/std", "sp-runtime/std", "sp-session/std", diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml index 07633ebc30588..ac80a5949d6ee 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml @@ -17,9 +17,7 @@ codec = { features = ["derive"], workspace = true } hex-literal = { workspace = true, default-features = true } log = { workspace = true } scale-info = { features = ["derive"], workspace = true } -serde = { optional = true, features = [ - "derive", -], workspace = true, default-features = true } +serde = { optional = true, features = ["derive"], workspace = true, default-features = true } serde_json = { features = ["alloc"], workspace = true } # Substrate @@ -124,7 +122,6 @@ bridge-runtime-common = { features = [ "integrity-test", ], workspace = true, default-features = true } pallet-bridge-relayers = { features = ["integrity-test"], workspace = true } -sp-keyring = { workspace = true, default-features = true } snowbridge-runtime-test-common = { workspace = true, default-features = true } [features] @@ -205,6 +202,7 @@ std = [ "sp-genesis-builder/std", "sp-inherents/std", "sp-io/std", + "sp-keyring/std", "sp-offchain/std", "sp-runtime/std", "sp-session/std", diff --git a/cumulus/polkadot-parachain/Cargo.toml b/cumulus/polkadot-parachain/Cargo.toml index 9c52eeaf657d1..5520126d0742a 100644 --- a/cumulus/polkadot-parachain/Cargo.toml +++ b/cumulus/polkadot-parachain/Cargo.toml @@ -22,10 +22,7 @@ serde = { features = ["derive"], workspace = true, default-features = true } serde_json = { workspace = true, default-features = true } # Local -polkadot-omni-node-lib = { features = [ - "rococo-native", - "westend-native", -], workspace = true } +polkadot-omni-node-lib = { features = ["rococo-native", "westend-native"], workspace = true } rococo-parachain-runtime = { workspace = true } glutton-westend-runtime = { workspace = true } asset-hub-rococo-runtime = { workspace = true, default-features = true } diff --git a/cumulus/polkadot-parachain/src/chain_spec/mod.rs b/cumulus/polkadot-parachain/src/chain_spec/mod.rs index be3257f097c09..00dceabb00694 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/mod.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/mod.rs @@ -308,10 +308,7 @@ mod tests { .with_chain_type(ChainType::Local) .with_genesis_config_patch(crate::chain_spec::rococo_parachain::testnet_genesis( Sr25519Keyring::Alice.to_account_id(), - vec![ - rococo_parachain_runtime::AuraId::from(Sr25519Keyring::Alice.public()), - rococo_parachain_runtime::AuraId::from(Sr25519Keyring::Bob.public()), - ], + vec![Sr25519Keyring::Alice.public().into(), Sr25519Keyring::Bob.public().into()], vec![Sr25519Keyring::Bob.to_account_id()], 1000.into(), )) diff --git a/prdoc/pr_5804.prdoc b/prdoc/pr_5804.prdoc index a6fc71149317c..4fb16df0e9ce1 100644 --- a/prdoc/pr_5804.prdoc +++ b/prdoc/pr_5804.prdoc @@ -15,7 +15,7 @@ crates: - name: polkadot-service bump: major - name: sp-keyring - bump: patch + bump: major - name: rococo-runtime bump: patch - name: westend-runtime diff --git a/substrate/bin/node/cli/Cargo.toml b/substrate/bin/node/cli/Cargo.toml index 39f145185fa7c..432655ac9646f 100644 --- a/substrate/bin/node/cli/Cargo.toml +++ b/substrate/bin/node/cli/Cargo.toml @@ -148,22 +148,13 @@ nix = { features = ["signal"], workspace = true } regex = { workspace = true } platforms = { workspace = true } soketto = { workspace = true } -criterion = { features = [ - "async_tokio", -], workspace = true, default-features = true } -tokio = { features = [ - "macros", - "parking_lot", - "time", -], workspace = true, default-features = true } +criterion = { features = ["async_tokio"], workspace = true, default-features = true } +tokio = { features = ["macros", "parking_lot", "time"], workspace = true, default-features = true } tokio-util = { features = ["compat"], workspace = true } wait-timeout = { workspace = true } wat = { workspace = true } serde_json = { workspace = true, default-features = true } -scale-info = { features = [ - "derive", - "serde", -], workspace = true, default-features = true } +scale-info = { features = ["derive", "serde"], workspace = true, default-features = true } sp-keyring = { workspace = true } pretty_assertions.workspace = true diff --git a/substrate/primitives/core/src/crypto.rs b/substrate/primitives/core/src/crypto.rs index 0904668fe19b1..b04d94e2bf40d 100644 --- a/substrate/primitives/core/src/crypto.rs +++ b/substrate/primitives/core/src/crypto.rs @@ -18,9 +18,9 @@ //! Cryptographic utilities. use crate::{ed25519, sr25519}; +use alloc::{format, str, vec::Vec}; #[cfg(all(not(feature = "std"), feature = "serde"))] -use alloc::{format, string::String, vec}; -use alloc::{str, vec::Vec}; +use alloc::{string::String, vec}; use bip39::{Language, Mnemonic}; use codec::{Decode, Encode, MaxEncodedLen}; use core::hash::Hash; @@ -422,7 +422,6 @@ pub fn set_default_ss58_version(new_default: Ss58AddressFormat) { /// Interprets the string `s` in order to generate a public key without password. /// /// Function will panic when invalid string is provided. -#[cfg(feature = "serde")] pub fn get_public_from_string_or_panic( s: &str, ) -> ::Public { diff --git a/substrate/primitives/keyring/src/bandersnatch.rs b/substrate/primitives/keyring/src/bandersnatch.rs index 67fc5c47df643..0958dae90d128 100644 --- a/substrate/primitives/keyring/src/bandersnatch.rs +++ b/substrate/primitives/keyring/src/bandersnatch.rs @@ -17,6 +17,7 @@ //! A set of well-known keys used for testing. +use crate::ParseKeyringError; pub use sp_core::bandersnatch; #[cfg(feature = "std")] use sp_core::bandersnatch::Signature; @@ -27,7 +28,7 @@ use sp_core::{ }; extern crate alloc; -use alloc::{fmt, format, str::FromStr, string::String, vec::Vec}; +use alloc::{format, str::FromStr, string::String, vec::Vec}; /// Set of test accounts. #[derive( @@ -107,15 +108,6 @@ impl From for &'static str { } } -#[derive(Debug)] -pub struct ParseKeyringError; - -impl fmt::Display for ParseKeyringError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "ParseKeyringError") - } -} - impl FromStr for Keyring { type Err = ParseKeyringError; diff --git a/substrate/primitives/keyring/src/ed25519.rs b/substrate/primitives/keyring/src/ed25519.rs index ed0925d449bb1..5ded902e3a87f 100644 --- a/substrate/primitives/keyring/src/ed25519.rs +++ b/substrate/primitives/keyring/src/ed25519.rs @@ -17,6 +17,7 @@ //! Support code for the runtime. A set of test accounts. +use crate::ParseKeyringError; pub use sp_core::ed25519; #[cfg(feature = "std")] use sp_core::ed25519::Signature; @@ -27,7 +28,7 @@ use sp_core::{ use sp_runtime::AccountId32; extern crate alloc; -use alloc::{fmt, format, str::FromStr, string::String, vec::Vec}; +use alloc::{format, str::FromStr, string::String, vec::Vec}; /// Set of test accounts. #[derive( @@ -134,34 +135,25 @@ impl From for sp_runtime::MultiSigner { } } -#[derive(Debug)] -pub struct ParseKeyringError; - -impl fmt::Display for ParseKeyringError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "ParseKeyringError") - } -} - impl FromStr for Keyring { type Err = ParseKeyringError; fn from_str(s: &str) -> Result::Err> { match s { - "Alice" => Ok(Keyring::Alice), - "Bob" => Ok(Keyring::Bob), - "Charlie" => Ok(Keyring::Charlie), - "Dave" => Ok(Keyring::Dave), - "Eve" => Ok(Keyring::Eve), - "Ferdie" => Ok(Keyring::Ferdie), + "Alice" | "alice" => Ok(Keyring::Alice), + "Bob" | "bob" => Ok(Keyring::Bob), + "Charlie" | "charlie" => Ok(Keyring::Charlie), + "Dave" | "dave" => Ok(Keyring::Dave), + "Eve" | "eve" => Ok(Keyring::Eve), + "Ferdie" | "ferdie" => Ok(Keyring::Ferdie), "Alice//stash" => Ok(Keyring::AliceStash), "Bob//stash" => Ok(Keyring::BobStash), "Charlie//stash" => Ok(Keyring::CharlieStash), "Dave//stash" => Ok(Keyring::DaveStash), "Eve//stash" => Ok(Keyring::EveStash), "Ferdie//stash" => Ok(Keyring::FerdieStash), - "One" => Ok(Keyring::One), - "Two" => Ok(Keyring::Two), + "One" | "one" => Ok(Keyring::One), + "Two" | "two" => Ok(Keyring::Two), _ => Err(ParseKeyringError), } } diff --git a/substrate/primitives/keyring/src/lib.rs b/substrate/primitives/keyring/src/lib.rs index f753bf4b0dd68..e8939b49b6d8b 100644 --- a/substrate/primitives/keyring/src/lib.rs +++ b/substrate/primitives/keyring/src/lib.rs @@ -19,6 +19,9 @@ #![cfg_attr(not(feature = "std"), no_std)] +extern crate alloc; +use alloc::fmt; + /// Test account crypto for sr25519. pub mod sr25519; @@ -42,3 +45,12 @@ pub mod test { /// The keyring for use with accounts when using the test runtime. pub use super::ed25519::Keyring as AccountKeyring; } + +#[derive(Debug)] +pub struct ParseKeyringError; + +impl fmt::Display for ParseKeyringError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "ParseKeyringError") + } +} diff --git a/substrate/primitives/keyring/src/sr25519.rs b/substrate/primitives/keyring/src/sr25519.rs index 70a35dcc43e38..6e3ad28a62487 100644 --- a/substrate/primitives/keyring/src/sr25519.rs +++ b/substrate/primitives/keyring/src/sr25519.rs @@ -17,6 +17,7 @@ //! Support code for the runtime. A set of test accounts. +use crate::ParseKeyringError; pub use sp_core::sr25519; #[cfg(feature = "std")] use sp_core::sr25519::Signature; @@ -28,7 +29,7 @@ use sp_core::{ use sp_runtime::AccountId32; extern crate alloc; -use alloc::{fmt, format, str::FromStr, string::String, vec::Vec}; +use alloc::{format, str::FromStr, string::String, vec::Vec}; /// Set of test accounts. #[derive( @@ -145,15 +146,6 @@ impl From for sp_runtime::MultiSigner { } } -#[derive(Debug)] -pub struct ParseKeyringError; - -impl fmt::Display for ParseKeyringError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "ParseKeyringError") - } -} - impl FromStr for Keyring { type Err = ParseKeyringError; diff --git a/templates/parachain/runtime/Cargo.toml b/templates/parachain/runtime/Cargo.toml index 0541a35a03f72..f1d33b4143e44 100644 --- a/templates/parachain/runtime/Cargo.toml +++ b/templates/parachain/runtime/Cargo.toml @@ -23,9 +23,7 @@ log = { workspace = true } scale-info = { features = ["derive"], workspace = true } smallvec = { workspace = true, default-features = true } docify = { workspace = true } -serde_json = { workspace = true, default-features = false, features = [ - "alloc", -] } +serde_json = { workspace = true, default-features = false, features = ["alloc"] } # Local pallet-parachain-template = { workspace = true } From f0e37bc5bdbe45b462384034ecc11a83973e61de Mon Sep 17 00:00:00 2001 From: Joseph Zhao <65984904+programskillforverification@users.noreply.github.com> Date: Thu, 17 Oct 2024 00:42:09 +0800 Subject: [PATCH 18/23] Update prdoc/pr_5804.prdoc Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com> --- prdoc/pr_5804.prdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prdoc/pr_5804.prdoc b/prdoc/pr_5804.prdoc index 4fb16df0e9ce1..beef83860cc51 100644 --- a/prdoc/pr_5804.prdoc +++ b/prdoc/pr_5804.prdoc @@ -6,7 +6,7 @@ title: Refactor get_account_id_from_seed / get_from_seed to one common place doc: - audience: Runtime Dev description: | - `get_account_id_from_seed / get_from_seed` are copied all over the place, causing code being bloated. + `get_account_id_from_seed / get_from_seed` were copied all over the place. This PR removes unnecessary code duplication. `Keyring::iter()` provides the same functionality and is used instead. crates: From c7b31afbb401a58486068cb8bb9cf232ee717b33 Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Thu, 17 Oct 2024 01:08:52 +0800 Subject: [PATCH 19/23] fix nit --- .../runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml | 4 +--- .../runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml | 4 +--- substrate/bin/node/cli/Cargo.toml | 7 +------ substrate/primitives/keyring/src/bandersnatch.rs | 3 ++- substrate/primitives/keyring/src/ed25519.rs | 3 ++- substrate/primitives/keyring/src/sr25519.rs | 3 ++- 6 files changed, 9 insertions(+), 15 deletions(-) diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml index 1fe500b4d2de5..fd5782d68e434 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml @@ -119,9 +119,7 @@ bridge-hub-common = { workspace = true } [dev-dependencies] bridge-hub-test-utils = { workspace = true, default-features = true } -bridge-runtime-common = { features = [ - "integrity-test", -], workspace = true, default-features = true } +bridge-runtime-common = { features = ["integrity-test"], workspace = true, default-features = true } pallet-bridge-relayers = { features = ["integrity-test"], workspace = true } snowbridge-runtime-test-common = { workspace = true, default-features = true } diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml index ac80a5949d6ee..471158d9645d7 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml @@ -118,9 +118,7 @@ snowbridge-runtime-common = { workspace = true } [dev-dependencies] bridge-hub-test-utils = { workspace = true, default-features = true } -bridge-runtime-common = { features = [ - "integrity-test", -], workspace = true, default-features = true } +bridge-runtime-common = { features = ["integrity-test"], workspace = true, default-features = true } pallet-bridge-relayers = { features = ["integrity-test"], workspace = true } snowbridge-runtime-test-common = { workspace = true, default-features = true } diff --git a/substrate/bin/node/cli/Cargo.toml b/substrate/bin/node/cli/Cargo.toml index 432655ac9646f..2e53c18645f56 100644 --- a/substrate/bin/node/cli/Cargo.toml +++ b/substrate/bin/node/cli/Cargo.toml @@ -169,12 +169,7 @@ clap_complete = { optional = true, workspace = true } node-inspect = { optional = true, workspace = true, default-features = true } -polkadot-sdk = { features = [ - "frame-benchmarking-cli", - "sc-cli", - "sc-storage-monitor", - "substrate-build-script-utils", -], optional = true, workspace = true, default-features = true } +polkadot-sdk = { features = ["frame-benchmarking-cli", "sc-cli", "sc-storage-monitor", "substrate-build-script-utils"], optional = true, workspace = true, default-features = true } [features] default = ["cli"] diff --git a/substrate/primitives/keyring/src/bandersnatch.rs b/substrate/primitives/keyring/src/bandersnatch.rs index 0958dae90d128..64d3c314124d5 100644 --- a/substrate/primitives/keyring/src/bandersnatch.rs +++ b/substrate/primitives/keyring/src/bandersnatch.rs @@ -17,8 +17,9 @@ //! A set of well-known keys used for testing. -use crate::ParseKeyringError; pub use sp_core::bandersnatch; + +use crate::ParseKeyringError; #[cfg(feature = "std")] use sp_core::bandersnatch::Signature; use sp_core::{ diff --git a/substrate/primitives/keyring/src/ed25519.rs b/substrate/primitives/keyring/src/ed25519.rs index 5ded902e3a87f..c06c8090a006b 100644 --- a/substrate/primitives/keyring/src/ed25519.rs +++ b/substrate/primitives/keyring/src/ed25519.rs @@ -17,8 +17,9 @@ //! Support code for the runtime. A set of test accounts. -use crate::ParseKeyringError; pub use sp_core::ed25519; + +use crate::ParseKeyringError; #[cfg(feature = "std")] use sp_core::ed25519::Signature; use sp_core::{ diff --git a/substrate/primitives/keyring/src/sr25519.rs b/substrate/primitives/keyring/src/sr25519.rs index 6e3ad28a62487..199577d688811 100644 --- a/substrate/primitives/keyring/src/sr25519.rs +++ b/substrate/primitives/keyring/src/sr25519.rs @@ -17,8 +17,9 @@ //! Support code for the runtime. A set of test accounts. -use crate::ParseKeyringError; pub use sp_core::sr25519; + +use crate::ParseKeyringError; #[cfg(feature = "std")] use sp_core::sr25519::Signature; use sp_core::{ From 341c68922b2178521c45702e466dee2b0c1af41c Mon Sep 17 00:00:00 2001 From: Joseph Zhao Date: Thu, 17 Oct 2024 18:29:23 +0800 Subject: [PATCH 20/23] remove magic number --- .../emulated/common/src/lib.rs | 2 +- .../src/genesis_config_presets.rs | 2 +- .../src/genesis_config_presets.rs | 2 +- .../src/genesis_config_presets.rs | 4 +- .../src/genesis_config_presets.rs | 4 +- .../src/genesis_config_presets.rs | 2 +- .../src/chain_spec/penpal.rs | 2 +- .../src/chain_spec/people.rs | 4 +- .../src/chain_spec/rococo_parachain.rs | 2 +- cumulus/test/service/src/chain_spec.rs | 5 +- polkadot/node/test/service/src/chain_spec.rs | 2 +- .../rococo/src/genesis_config_presets.rs | 2 +- .../westend/src/genesis_config_presets.rs | 2 +- substrate/bin/node/cli/src/chain_spec.rs | 2 +- substrate/bin/node/testing/src/keyring.rs | 4 ++ substrate/primitives/keyring/src/ed25519.rs | 56 ++++++++++++++++-- substrate/primitives/keyring/src/sr25519.rs | 57 +++++++++++++++++-- .../runtime/src/genesis_config_presets.rs | 4 +- 18 files changed, 125 insertions(+), 33 deletions(-) diff --git a/cumulus/parachains/integration-tests/emulated/common/src/lib.rs b/cumulus/parachains/integration-tests/emulated/common/src/lib.rs index ec1715523f061..07fde111d3dc9 100644 --- a/cumulus/parachains/integration-tests/emulated/common/src/lib.rs +++ b/cumulus/parachains/integration-tests/emulated/common/src/lib.rs @@ -114,7 +114,7 @@ pub mod accounts { pub const DUMMY_EMPTY: &str = "JohnDoe"; pub fn init_balances() -> Vec { - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect() + Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect() } } diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs index b475d4d95f099..dc98d00f8f63a 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/genesis_config_presets.rs @@ -113,7 +113,7 @@ pub fn get_preset(id: &PresetId) -> Option> { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().take(12).map(|x| x.to_account_id()).collect(), + Sr25519Keyring::well_known().map(|x| x.to_account_id()).collect(), testnet_parachains_constants::rococo::currency::UNITS * 1_000_000, 1000.into(), ), diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs index 83c06ee2ce2a9..758ce3f40609f 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/genesis_config_presets.rs @@ -111,7 +111,7 @@ pub fn get_preset(id: &PresetId) -> Option> { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), + Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect(), WND * 1_000_000, 1000.into(), ), diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs index 0df16dbf9a72f..d1b599967bf36 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs @@ -96,7 +96,7 @@ pub fn get_preset(id: &sp_genesis_builder::PresetId) -> Option Option Option Option Option collectives_westend_genesis( diff --git a/cumulus/polkadot-parachain/src/chain_spec/penpal.rs b/cumulus/polkadot-parachain/src/chain_spec/penpal.rs index 8fd8524b81979..b60b9982c49e9 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/penpal.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/penpal.rs @@ -44,7 +44,7 @@ pub fn get_penpal_chain_spec(id: ParaId, relay_chain: &str) -> GenericChainSpec (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), + Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect(), id, )) .build() diff --git a/cumulus/polkadot-parachain/src/chain_spec/people.rs b/cumulus/polkadot-parachain/src/chain_spec/people.rs index 1d8d30dbb0540..1735a904b8eac 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/people.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/people.rs @@ -156,7 +156,7 @@ pub mod rococo { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), + Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect(), para_id, )) .with_properties(properties) @@ -245,7 +245,7 @@ pub mod westend { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), + Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect(), para_id, )) .with_properties(properties) diff --git a/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs b/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs index f77d8737b27d8..68383ac5c233d 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs @@ -40,7 +40,7 @@ pub fn rococo_parachain_local_config() -> GenericChainSpec { AuraId::from(Sr25519Keyring::Alice.public()), AuraId::from(Sr25519Keyring::Bob.public()), ], - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), + Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect(), 1000.into(), )) .build() diff --git a/cumulus/test/service/src/chain_spec.rs b/cumulus/test/service/src/chain_spec.rs index cefe4862a8443..3abffcff794f9 100644 --- a/cumulus/test/service/src/chain_spec.rs +++ b/cumulus/test/service/src/chain_spec.rs @@ -88,11 +88,10 @@ pub fn testnet_genesis_with_default_endowed( mut extra_endowed_accounts: Vec, self_para_id: Option, ) -> serde_json::Value { - let mut endowed = - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect::>(); + let mut endowed = Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect::>(); endowed.append(&mut extra_endowed_accounts); let invulnerables = - Sr25519Keyring::iter().take(6).map(|k| k.public().into()).collect::>(); + Sr25519Keyring::invulnerable().map(|k| k.public().into()).collect::>(); testnet_genesis(Sr25519Keyring::Alice.to_account_id(), invulnerables, endowed, self_para_id) } diff --git a/polkadot/node/test/service/src/chain_spec.rs b/polkadot/node/test/service/src/chain_spec.rs index 26eb0c6ef9337..ae4e84b7725e5 100644 --- a/polkadot/node/test/service/src/chain_spec.rs +++ b/polkadot/node/test/service/src/chain_spec.rs @@ -86,7 +86,7 @@ fn get_authority_keys_from_seed( } fn testnet_accounts() -> Vec { - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect() + Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect() } /// Helper function to create polkadot `RuntimeGenesisConfig` for testing diff --git a/polkadot/runtime/rococo/src/genesis_config_presets.rs b/polkadot/runtime/rococo/src/genesis_config_presets.rs index 3107652215731..d609548aed27c 100644 --- a/polkadot/runtime/rococo/src/genesis_config_presets.rs +++ b/polkadot/runtime/rococo/src/genesis_config_presets.rs @@ -75,7 +75,7 @@ fn get_authority_keys_from_seed_no_beefy( } fn testnet_accounts() -> Vec { - Sr25519Keyring::iter().take(12).map(|x| x.to_account_id()).collect() + Sr25519Keyring::well_known().map(|x| x.to_account_id()).collect() } fn rococo_session_keys( diff --git a/polkadot/runtime/westend/src/genesis_config_presets.rs b/polkadot/runtime/westend/src/genesis_config_presets.rs index 8858951ac765f..621ef38f0b75c 100644 --- a/polkadot/runtime/westend/src/genesis_config_presets.rs +++ b/polkadot/runtime/westend/src/genesis_config_presets.rs @@ -77,7 +77,7 @@ fn get_authority_keys_from_seed_no_beefy( } fn testnet_accounts() -> Vec { - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect() + Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect() } fn westend_session_keys( diff --git a/substrate/bin/node/cli/src/chain_spec.rs b/substrate/bin/node/cli/src/chain_spec.rs index c2e2b919d3ffa..6cd9adfd7f258 100644 --- a/substrate/bin/node/cli/src/chain_spec.rs +++ b/substrate/bin/node/cli/src/chain_spec.rs @@ -292,7 +292,7 @@ fn configure_accounts( Vec<(AccountId, AccountId, Balance, StakerStatus)>, ) { let mut endowed_accounts: Vec = endowed_accounts - .unwrap_or_else(|| Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect()); + .unwrap_or_else(|| Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect()); // endow all authorities and nominators. initial_authorities .iter() diff --git a/substrate/bin/node/testing/src/keyring.rs b/substrate/bin/node/testing/src/keyring.rs index 1b1cc9851831f..312fba8319b5c 100644 --- a/substrate/bin/node/testing/src/keyring.rs +++ b/substrate/bin/node/testing/src/keyring.rs @@ -57,6 +57,10 @@ pub fn ferdie() -> AccountId { } /// Convert keyrings into `SessionKeys`. +/// +/// # Panics +/// +/// Function will panic when invalid string is provided. pub fn session_keys_from_seed(seed: &str) -> SessionKeys { SessionKeys { grandpa: get_public_from_string_or_panic::(seed).into(), diff --git a/substrate/primitives/keyring/src/ed25519.rs b/substrate/primitives/keyring/src/ed25519.rs index c06c8090a006b..201caea50b1de 100644 --- a/substrate/primitives/keyring/src/ed25519.rs +++ b/substrate/primitives/keyring/src/ed25519.rs @@ -107,6 +107,14 @@ impl Keyring { pub fn to_seed(self) -> String { format!("//{}", self) } + + pub fn well_known() -> impl Iterator { + Self::iter().take(12) + } + + pub fn invulnerable() -> impl Iterator { + Self::iter().take(6) + } } impl From for &'static str { @@ -147,12 +155,12 @@ impl FromStr for Keyring { "Dave" | "dave" => Ok(Keyring::Dave), "Eve" | "eve" => Ok(Keyring::Eve), "Ferdie" | "ferdie" => Ok(Keyring::Ferdie), - "Alice//stash" => Ok(Keyring::AliceStash), - "Bob//stash" => Ok(Keyring::BobStash), - "Charlie//stash" => Ok(Keyring::CharlieStash), - "Dave//stash" => Ok(Keyring::DaveStash), - "Eve//stash" => Ok(Keyring::EveStash), - "Ferdie//stash" => Ok(Keyring::FerdieStash), + "Alice//stash" | "alice//stash" => Ok(Keyring::AliceStash), + "Bob//stash" | "bob//stash" => Ok(Keyring::BobStash), + "Charlie//stash" | "charlie//stash" => Ok(Keyring::CharlieStash), + "Dave//stash" | "dave//stash" => Ok(Keyring::DaveStash), + "Eve//stash" | "eve//stash" => Ok(Keyring::EveStash), + "Ferdie//stash" | "ferdie//stash" => Ok(Keyring::FerdieStash), "One" | "one" => Ok(Keyring::One), "Two" | "two" => Ok(Keyring::Two), _ => Err(ParseKeyringError), @@ -247,4 +255,40 @@ mod tests { fn verify_static_public_keys() { assert!(Keyring::iter().all(|k| { k.pair().public().as_ref() == <[u8; 32]>::from(k) })); } + + #[test] + fn verfity_well_known() { + assert_eq!( + Keyring::well_known().collect::>(), + vec![ + Keyring::Alice, + Keyring::Bob, + Keyring::Charlie, + Keyring::Dave, + Keyring::Eve, + Keyring::Ferdie, + Keyring::AliceStash, + Keyring::BobStash, + Keyring::CharlieStash, + Keyring::DaveStash, + Keyring::EveStash, + Keyring::FerdieStash + ] + ); + } + + #[test] + fn verify_invulnerable() { + assert_eq!( + Keyring::invulnerable().collect::>(), + vec![ + Keyring::Alice, + Keyring::Bob, + Keyring::Charlie, + Keyring::Dave, + Keyring::Eve, + Keyring::Ferdie + ] + ); + } } diff --git a/substrate/primitives/keyring/src/sr25519.rs b/substrate/primitives/keyring/src/sr25519.rs index 199577d688811..0e88c413f81d5 100644 --- a/substrate/primitives/keyring/src/sr25519.rs +++ b/substrate/primitives/keyring/src/sr25519.rs @@ -118,6 +118,14 @@ impl Keyring { pub fn numeric_id(idx: usize) -> AccountId32 { (*Self::numeric(idx).public().as_array_ref()).into() } + + pub fn well_known() -> impl Iterator { + Self::iter().take(12) + } + + pub fn invulnerable() -> impl Iterator { + Self::iter().take(6) + } } impl From for &'static str { @@ -158,12 +166,12 @@ impl FromStr for Keyring { "Dave" | "dave" => Ok(Keyring::Dave), "Eve" | "eve" => Ok(Keyring::Eve), "Ferdie" | "ferdie" => Ok(Keyring::Ferdie), - "Alice//stash" => Ok(Keyring::AliceStash), - "Bob//stash" => Ok(Keyring::BobStash), - "Charlie//stash" => Ok(Keyring::CharlieStash), - "Dave//stash" => Ok(Keyring::DaveStash), - "Eve//stash" => Ok(Keyring::EveStash), - "Ferdie//stash" => Ok(Keyring::FerdieStash), + "Alice//stash" | "alice//stash" => Ok(Keyring::AliceStash), + "Bob//stash" | "bob//stash" => Ok(Keyring::BobStash), + "Charlie//stash" | "charlie//stash" => Ok(Keyring::CharlieStash), + "Dave//stash" | "dave//stash" => Ok(Keyring::DaveStash), + "Eve//stash" | "eve//stash" => Ok(Keyring::EveStash), + "Ferdie//stash" | "ferdie//stash" => Ok(Keyring::FerdieStash), "One" | "one" => Ok(Keyring::One), "Two" | "two" => Ok(Keyring::Two), _ => Err(ParseKeyringError), @@ -253,8 +261,45 @@ mod tests { &Keyring::Bob.public(), )); } + #[test] fn verify_static_public_keys() { assert!(Keyring::iter().all(|k| { k.pair().public().as_ref() == <[u8; 32]>::from(k) })); } + + #[test] + fn verfity_well_known() { + assert_eq!( + Keyring::well_known().collect::>(), + vec![ + Keyring::Alice, + Keyring::Bob, + Keyring::Charlie, + Keyring::Dave, + Keyring::Eve, + Keyring::Ferdie, + Keyring::AliceStash, + Keyring::BobStash, + Keyring::CharlieStash, + Keyring::DaveStash, + Keyring::EveStash, + Keyring::FerdieStash + ] + ); + } + + #[test] + fn verify_invulnerable() { + assert_eq!( + Keyring::invulnerable().collect::>(), + vec![ + Keyring::Alice, + Keyring::Bob, + Keyring::Charlie, + Keyring::Dave, + Keyring::Eve, + Keyring::Ferdie + ] + ); + } } diff --git a/templates/parachain/runtime/src/genesis_config_presets.rs b/templates/parachain/runtime/src/genesis_config_presets.rs index c84de52790837..322c91f4f136a 100644 --- a/templates/parachain/runtime/src/genesis_config_presets.rs +++ b/templates/parachain/runtime/src/genesis_config_presets.rs @@ -74,7 +74,7 @@ fn local_testnet_genesis() -> Value { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), + Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect(), Sr25519Keyring::Alice.to_account_id(), 1000.into(), ) @@ -87,7 +87,7 @@ fn development_config_genesis() -> Value { (Sr25519Keyring::Alice.to_account_id(), Sr25519Keyring::Alice.public().into()), (Sr25519Keyring::Bob.to_account_id(), Sr25519Keyring::Bob.public().into()), ], - Sr25519Keyring::iter().take(12).map(|k| k.to_account_id()).collect(), + Sr25519Keyring::well_known().map(|k| k.to_account_id()).collect(), Sr25519Keyring::Alice.to_account_id(), 1000.into(), ) From b1fcb7fdeb8dc260f18f16ec4fe7535327275611 Mon Sep 17 00:00:00 2001 From: Joseph Zhao <65984904+programskillforverification@users.noreply.github.com> Date: Thu, 17 Oct 2024 18:54:24 +0800 Subject: [PATCH 21/23] Update substrate/primitives/keyring/src/ed25519.rs Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com> --- substrate/primitives/keyring/src/ed25519.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/primitives/keyring/src/ed25519.rs b/substrate/primitives/keyring/src/ed25519.rs index 201caea50b1de..235b5d5c9931c 100644 --- a/substrate/primitives/keyring/src/ed25519.rs +++ b/substrate/primitives/keyring/src/ed25519.rs @@ -257,7 +257,7 @@ mod tests { } #[test] - fn verfity_well_known() { + fn verify_well_known() { assert_eq!( Keyring::well_known().collect::>(), vec![ From d9ca423579dc3045deb8c3e7ae1fb076f648b5f7 Mon Sep 17 00:00:00 2001 From: Joseph Zhao <65984904+programskillforverification@users.noreply.github.com> Date: Thu, 17 Oct 2024 18:54:35 +0800 Subject: [PATCH 22/23] Update substrate/primitives/keyring/src/sr25519.rs Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com> --- substrate/primitives/keyring/src/sr25519.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/primitives/keyring/src/sr25519.rs b/substrate/primitives/keyring/src/sr25519.rs index 0e88c413f81d5..5ff9056566bc7 100644 --- a/substrate/primitives/keyring/src/sr25519.rs +++ b/substrate/primitives/keyring/src/sr25519.rs @@ -268,7 +268,7 @@ mod tests { } #[test] - fn verfity_well_known() { + fn verify_well_known() { assert_eq!( Keyring::well_known().collect::>(), vec![ From 5860e2d7de26641d0763d540bb3f8b800dfd69e8 Mon Sep 17 00:00:00 2001 From: Joseph Zhao <65984904+programskillforverification@users.noreply.github.com> Date: Thu, 17 Oct 2024 18:54:47 +0800 Subject: [PATCH 23/23] Update substrate/primitives/keyring/src/lib.rs Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com> --- substrate/primitives/keyring/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/substrate/primitives/keyring/src/lib.rs b/substrate/primitives/keyring/src/lib.rs index e8939b49b6d8b..008c01b150f00 100644 --- a/substrate/primitives/keyring/src/lib.rs +++ b/substrate/primitives/keyring/src/lib.rs @@ -47,6 +47,7 @@ pub mod test { } #[derive(Debug)] +/// Represents an error that occurs when parsing a string into a `KeyRing`. pub struct ParseKeyringError; impl fmt::Display for ParseKeyringError {