From 6ff2d721906598921b3604f11ee5ac7f80fcd52b Mon Sep 17 00:00:00 2001 From: grw-ms Date: Tue, 8 Aug 2023 08:47:25 -0700 Subject: [PATCH 1/2] feat: stub IdentityConfig --- bin/node/cli/src/chain_spec.rs | 7 ++++--- bin/node/testing/src/genesis.rs | 1 + frame/identity/src/lib.rs | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/bin/node/cli/src/chain_spec.rs b/bin/node/cli/src/chain_spec.rs index 5a91d9c0f5920..9eae2a5ab7288 100644 --- a/bin/node/cli/src/chain_spec.rs +++ b/bin/node/cli/src/chain_spec.rs @@ -22,9 +22,9 @@ use grandpa_primitives::AuthorityId as GrandpaId; use kitchensink_runtime::{ constants::currency::*, wasm_binary_unwrap, AuthorityDiscoveryConfig, BabeConfig, BalancesConfig, Block, CouncilConfig, DemocracyConfig, ElectionsConfig, GluttonConfig, - GrandpaConfig, ImOnlineConfig, IndicesConfig, MaxNominations, NominationPoolsConfig, - SessionConfig, SessionKeys, SocietyConfig, StakerStatus, StakingConfig, SudoConfig, - SystemConfig, TechnicalCommitteeConfig, + GrandpaConfig, IdentityConfig, ImOnlineConfig, IndicesConfig, MaxNominations, + NominationPoolsConfig, SessionConfig, SessionKeys, SocietyConfig, StakerStatus, StakingConfig, + SudoConfig, SystemConfig, TechnicalCommitteeConfig, }; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; use sc_chain_spec::ChainSpecExtension; @@ -299,6 +299,7 @@ pub fn testnet_genesis( balances: BalancesConfig { balances: endowed_accounts.iter().cloned().map(|x| (x, ENDOWMENT)).collect(), }, + identity: IdentityConfig { identities: vec![] }, indices: IndicesConfig { indices: vec![] }, session: SessionConfig { keys: initial_authorities diff --git a/bin/node/testing/src/genesis.rs b/bin/node/testing/src/genesis.rs index f91070017c0f8..f136535d1fc17 100644 --- a/bin/node/testing/src/genesis.rs +++ b/bin/node/testing/src/genesis.rs @@ -50,6 +50,7 @@ pub fn config_endowed(code: Option<&[u8]>, extra_endowed: Vec) -> Gen system: SystemConfig { code: code.map(|x| x.to_vec()).unwrap_or_else(|| wasm_binary_unwrap().to_vec()), }, + identity: Default::default(), indices: IndicesConfig { indices: vec![] }, balances: BalancesConfig { balances: endowed }, session: SessionConfig { diff --git a/frame/identity/src/lib.rs b/frame/identity/src/lib.rs index f192ee2b461b3..42d3b044658bf 100644 --- a/frame/identity/src/lib.rs +++ b/frame/identity/src/lib.rs @@ -201,6 +201,25 @@ pub mod pallet { ValueQuery, >; + #[pallet::genesis_config] + pub struct GenesisConfig { + pub identities: Vec, + } + + #[cfg(feature = "std")] + impl Default for GenesisConfig { + fn default() -> Self { + GenesisConfig { identities: Default::default() } + } + } + + #[pallet::genesis_build] + impl GenesisBuild for GenesisConfig { + fn build(&self) { + // todo: insert genesis accounts + } + } + #[pallet::error] pub enum Error { /// Too many subs-accounts. From 83fe407ecb9aa2749e54901ac4cb18f0a515add3 Mon Sep 17 00:00:00 2001 From: grw-ms Date: Wed, 9 Aug 2023 03:30:26 -0700 Subject: [PATCH 2/2] feat: register identities in GenesisBuild --- bin/node/testing/src/genesis.rs | 9 ++++++--- frame/identity/src/lib.rs | 24 ++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/bin/node/testing/src/genesis.rs b/bin/node/testing/src/genesis.rs index f136535d1fc17..a2a6c77133c1a 100644 --- a/bin/node/testing/src/genesis.rs +++ b/bin/node/testing/src/genesis.rs @@ -21,8 +21,9 @@ use crate::keyring::*; use kitchensink_runtime::{ constants::currency::*, wasm_binary_unwrap, AccountId, AssetsConfig, BabeConfig, - BalancesConfig, GenesisConfig, GluttonConfig, GrandpaConfig, IndicesConfig, SessionConfig, - SocietyConfig, StakerStatus, StakingConfig, SystemConfig, BABE_GENESIS_EPOCH_CONFIG, + BalancesConfig, GenesisConfig, GluttonConfig, GrandpaConfig, IdentityConfig, IndicesConfig, + SessionConfig, SocietyConfig, StakerStatus, StakingConfig, SystemConfig, + BABE_GENESIS_EPOCH_CONFIG, }; use sp_keyring::{Ed25519Keyring, Sr25519Keyring}; use sp_runtime::Perbill; @@ -50,7 +51,9 @@ pub fn config_endowed(code: Option<&[u8]>, extra_endowed: Vec) -> Gen system: SystemConfig { code: code.map(|x| x.to_vec()).unwrap_or_else(|| wasm_binary_unwrap().to_vec()), }, - identity: Default::default(), + identity: IdentityConfig { + identities: vec![(alice(), "Alice".to_string()), (bob(), "Bob".to_string())], + }, indices: IndicesConfig { indices: vec![] }, balances: BalancesConfig { balances: endowed }, session: SessionConfig { diff --git a/frame/identity/src/lib.rs b/frame/identity/src/lib.rs index 42d3b044658bf..081b598602d51 100644 --- a/frame/identity/src/lib.rs +++ b/frame/identity/src/lib.rs @@ -79,6 +79,7 @@ mod types; pub mod weights; use frame_support::traits::{BalanceStatus, Currency, OnUnbalanced, ReservableCurrency}; +use scale_info::prelude::string::String; use sp_runtime::traits::{AppendZerosInput, Hash, Saturating, StaticLookup, Zero}; use sp_std::prelude::*; pub use weights::WeightInfo; @@ -203,7 +204,7 @@ pub mod pallet { #[pallet::genesis_config] pub struct GenesisConfig { - pub identities: Vec, + pub identities: Vec<(T::AccountId, String)>, } #[cfg(feature = "std")] @@ -216,7 +217,26 @@ pub mod pallet { #[pallet::genesis_build] impl GenesisBuild for GenesisConfig { fn build(&self) { - // todo: insert genesis accounts + for (account, name) in &self.identities { + >::insert( + account, + Registration { + info: IdentityInfo { + display: Data::Raw(BoundedVec::try_from(name.encode()).unwrap()), + twitter: Data::None, + riot: Data::None, + email: Data::None, + pgp_fingerprint: None, + image: Data::None, + legal: Data::None, + web: Data::None, + additional: BoundedVec::default(), + }, + judgements: BoundedVec::default(), + deposit: Zero::zero(), + }, + ); + } } }