Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit 0046337

Browse files
frame: Enable GenesisConfig in no_std (#14108)
* frame: Default for GenesisConfig in no_std `Default` for `GenesisConfig` will be required for no_std in no native runtime world. It must be possible to instantiate default GenesisConfig for pallets and runtime. * ".git/.scripts/commands/fmt/fmt.sh" * hash69 in no_std reverted * derive(DefaultNoBound) for GenesisConfig used when possible * treasury: derive(Default) * Cargo.lock update * genesis_config: compiler error improved When std feature is not enabled for pallet, the GenesisConfig will be defined, but serde::{Serialize,Deserialize} traits will not be implemented. The compiler error indicates the reason of latter errors. This is temporary and serde traits will be enabled with together with `serde` support in frame. --------- Co-authored-by: command-bot <>
1 parent 2c3b923 commit 0046337

File tree

31 files changed

+149
-173
lines changed

31 files changed

+149
-173
lines changed

frame/alliance/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -401,19 +401,13 @@ pub mod pallet {
401401
}
402402

403403
#[pallet::genesis_config]
404+
#[derive(frame_support::DefaultNoBound)]
404405
pub struct GenesisConfig<T: Config<I>, I: 'static = ()> {
405406
pub fellows: Vec<T::AccountId>,
406407
pub allies: Vec<T::AccountId>,
407408
pub phantom: PhantomData<(T, I)>,
408409
}
409410

410-
#[cfg(feature = "std")]
411-
impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I> {
412-
fn default() -> Self {
413-
Self { fellows: Vec::new(), allies: Vec::new(), phantom: Default::default() }
414-
}
415-
}
416-
417411
#[pallet::genesis_build]
418412
impl<T: Config<I>, I: 'static> GenesisBuild<T, I> for GenesisConfig<T, I> {
419413
fn build(&self) {

frame/assets/src/lib.rs

+1-11
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,7 @@ pub mod pallet {
369369
>;
370370

371371
#[pallet::genesis_config]
372+
#[derive(frame_support::DefaultNoBound)]
372373
pub struct GenesisConfig<T: Config<I>, I: 'static = ()> {
373374
/// Genesis assets: id, owner, is_sufficient, min_balance
374375
pub assets: Vec<(T::AssetId, T::AccountId, bool, T::Balance)>,
@@ -378,17 +379,6 @@ pub mod pallet {
378379
pub accounts: Vec<(T::AssetId, T::AccountId, T::Balance)>,
379380
}
380381

381-
#[cfg(feature = "std")]
382-
impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I> {
383-
fn default() -> Self {
384-
Self {
385-
assets: Default::default(),
386-
metadata: Default::default(),
387-
accounts: Default::default(),
388-
}
389-
}
390-
}
391-
392382
#[pallet::genesis_build]
393383
impl<T: Config<I>, I: 'static> GenesisBuild<T, I> for GenesisConfig<T, I> {
394384
fn build(&self) {

frame/aura/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -129,17 +129,11 @@ pub mod pallet {
129129
pub(super) type CurrentSlot<T: Config> = StorageValue<_, Slot, ValueQuery>;
130130

131131
#[pallet::genesis_config]
132+
#[derive(frame_support::DefaultNoBound)]
132133
pub struct GenesisConfig<T: Config> {
133134
pub authorities: Vec<T::AuthorityId>,
134135
}
135136

136-
#[cfg(feature = "std")]
137-
impl<T: Config> Default for GenesisConfig<T> {
138-
fn default() -> Self {
139-
Self { authorities: Vec::new() }
140-
}
141-
}
142-
143137
#[pallet::genesis_build]
144138
impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
145139
fn build(&self) {

frame/authority-discovery/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ pub mod pallet {
5959
pub(super) type NextKeys<T: Config> =
6060
StorageValue<_, WeakBoundedVec<AuthorityId, T::MaxAuthorities>, ValueQuery>;
6161

62-
#[cfg_attr(feature = "std", derive(Default))]
62+
#[derive(Default)]
6363
#[pallet::genesis_config]
6464
pub struct GenesisConfig {
6565
pub keys: Vec<AuthorityId>,

frame/babe/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ pub mod pallet {
314314
pub(super) type SkippedEpochs<T> =
315315
StorageValue<_, BoundedVec<(u64, SessionIndex), ConstU32<100>>, ValueQuery>;
316316

317-
#[cfg_attr(feature = "std", derive(Default))]
317+
#[derive(Default)]
318318
#[pallet::genesis_config]
319319
pub struct GenesisConfig {
320320
pub authorities: Vec<(AuthorityId, BabeAuthorityWeight)>,

frame/balances/src/lib.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,6 @@ pub mod pallet {
456456
pub balances: Vec<(T::AccountId, T::Balance)>,
457457
}
458458

459-
#[cfg(feature = "std")]
460459
impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I> {
461460
fn default() -> Self {
462461
Self { balances: Default::default() }
@@ -483,7 +482,7 @@ pub mod pallet {
483482
.iter()
484483
.map(|(x, _)| x)
485484
.cloned()
486-
.collect::<std::collections::BTreeSet<_>>();
485+
.collect::<sp_std::collections::btree_set::BTreeSet<_>>();
487486

488487
assert!(
489488
endowed_accounts.len() == self.balances.len(),

frame/beefy/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,6 @@ pub mod pallet {
166166
pub genesis_block: Option<BlockNumberFor<T>>,
167167
}
168168

169-
#[cfg(feature = "std")]
170169
impl<T: Config> Default for GenesisConfig<T> {
171170
fn default() -> Self {
172171
// BEEFY genesis will be first BEEFY-MANDATORY block,

frame/collective/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -224,18 +224,12 @@ pub mod pallet {
224224
}
225225

226226
#[pallet::genesis_config]
227+
#[derive(frame_support::DefaultNoBound)]
227228
pub struct GenesisConfig<T: Config<I>, I: 'static = ()> {
228229
pub phantom: PhantomData<I>,
229230
pub members: Vec<T::AccountId>,
230231
}
231232

232-
#[cfg(feature = "std")]
233-
impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I> {
234-
fn default() -> Self {
235-
Self { phantom: Default::default(), members: Default::default() }
236-
}
237-
}
238-
239233
#[pallet::genesis_build]
240234
impl<T: Config<I>, I: 'static> GenesisBuild<T, I> for GenesisConfig<T, I> {
241235
fn build(&self) {

frame/democracy/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -439,17 +439,11 @@ pub mod pallet {
439439
pub type MetadataOf<T: Config> = StorageMap<_, Blake2_128Concat, MetadataOwner, PreimageHash>;
440440

441441
#[pallet::genesis_config]
442+
#[derive(frame_support::DefaultNoBound)]
442443
pub struct GenesisConfig<T: Config> {
443444
_phantom: sp_std::marker::PhantomData<T>,
444445
}
445446

446-
#[cfg(feature = "std")]
447-
impl<T: Config> Default for GenesisConfig<T> {
448-
fn default() -> Self {
449-
GenesisConfig { _phantom: Default::default() }
450-
}
451-
}
452-
453447
#[pallet::genesis_build]
454448
impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
455449
fn build(&self) {

frame/elections-phragmen/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -711,17 +711,11 @@ pub mod pallet {
711711
StorageMap<_, Twox64Concat, T::AccountId, Voter<T::AccountId, BalanceOf<T>>, ValueQuery>;
712712

713713
#[pallet::genesis_config]
714+
#[derive(frame_support::DefaultNoBound)]
714715
pub struct GenesisConfig<T: Config> {
715716
pub members: Vec<(T::AccountId, BalanceOf<T>)>,
716717
}
717718

718-
#[cfg(feature = "std")]
719-
impl<T: Config> Default for GenesisConfig<T> {
720-
fn default() -> Self {
721-
Self { members: Default::default() }
722-
}
723-
}
724-
725719
#[pallet::genesis_build]
726720
impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
727721
fn build(&self) {

frame/examples/basic/src/lib.rs

+1-8
Original file line numberDiff line numberDiff line change
@@ -618,20 +618,13 @@ pub mod pallet {
618618

619619
// The genesis config type.
620620
#[pallet::genesis_config]
621+
#[derive(frame_support::DefaultNoBound)]
621622
pub struct GenesisConfig<T: Config> {
622623
pub dummy: T::Balance,
623624
pub bar: Vec<(T::AccountId, T::Balance)>,
624625
pub foo: T::Balance,
625626
}
626627

627-
// The default value for the genesis config type.
628-
#[cfg(feature = "std")]
629-
impl<T: Config> Default for GenesisConfig<T> {
630-
fn default() -> Self {
631-
Self { dummy: Default::default(), bar: Default::default(), foo: Default::default() }
632-
}
633-
}
634-
635628
// The build of genesis for the pallet.
636629
#[pallet::genesis_build]
637630
impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {

frame/grandpa/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ pub mod pallet {
333333
#[pallet::getter(fn session_for_set)]
334334
pub(super) type SetIdSession<T: Config> = StorageMap<_, Twox64Concat, SetId, SessionIndex>;
335335

336-
#[cfg_attr(feature = "std", derive(Default))]
336+
#[derive(Default)]
337337
#[pallet::genesis_config]
338338
pub struct GenesisConfig {
339339
pub authorities: AuthorityList,

frame/im-online/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -442,17 +442,11 @@ pub mod pallet {
442442
>;
443443

444444
#[pallet::genesis_config]
445+
#[derive(frame_support::DefaultNoBound)]
445446
pub struct GenesisConfig<T: Config> {
446447
pub keys: Vec<T::AuthorityId>,
447448
}
448449

449-
#[cfg(feature = "std")]
450-
impl<T: Config> Default for GenesisConfig<T> {
451-
fn default() -> Self {
452-
GenesisConfig { keys: Default::default() }
453-
}
454-
}
455-
456450
#[pallet::genesis_build]
457451
impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
458452
fn build(&self) {

frame/indices/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -263,17 +263,11 @@ pub mod pallet {
263263
StorageMap<_, Blake2_128Concat, T::AccountIndex, (T::AccountId, BalanceOf<T>, bool)>;
264264

265265
#[pallet::genesis_config]
266+
#[derive(frame_support::DefaultNoBound)]
266267
pub struct GenesisConfig<T: Config> {
267268
pub indices: Vec<(T::AccountIndex, T::AccountId)>,
268269
}
269270

270-
#[cfg(feature = "std")]
271-
impl<T: Config> Default for GenesisConfig<T> {
272-
fn default() -> Self {
273-
Self { indices: Default::default() }
274-
}
275-
}
276-
277271
#[pallet::genesis_build]
278272
impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
279273
fn build(&self) {

frame/membership/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -105,18 +105,12 @@ pub mod pallet {
105105
pub type Prime<T: Config<I>, I: 'static = ()> = StorageValue<_, T::AccountId, OptionQuery>;
106106

107107
#[pallet::genesis_config]
108+
#[derive(frame_support::DefaultNoBound)]
108109
pub struct GenesisConfig<T: Config<I>, I: 'static = ()> {
109110
pub members: BoundedVec<T::AccountId, T::MaxMembers>,
110111
pub phantom: PhantomData<I>,
111112
}
112113

113-
#[cfg(feature = "std")]
114-
impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I> {
115-
fn default() -> Self {
116-
Self { members: Default::default(), phantom: Default::default() }
117-
}
118-
}
119-
120114
#[pallet::genesis_build]
121115
impl<T: Config<I>, I: 'static> GenesisBuild<T, I> for GenesisConfig<T, I> {
122116
fn build(&self) {

frame/node-authorization/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -109,17 +109,11 @@ pub mod pallet {
109109
StorageMap<_, Blake2_128Concat, PeerId, BTreeSet<PeerId>, ValueQuery>;
110110

111111
#[pallet::genesis_config]
112+
#[derive(frame_support::DefaultNoBound)]
112113
pub struct GenesisConfig<T: Config> {
113114
pub nodes: Vec<(PeerId, T::AccountId)>,
114115
}
115116

116-
#[cfg(feature = "std")]
117-
impl<T: Config> Default for GenesisConfig<T> {
118-
fn default() -> Self {
119-
Self { nodes: Vec::new() }
120-
}
121-
}
122-
123117
#[pallet::genesis_build]
124118
impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
125119
fn build(&self) {

frame/nomination-pools/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1659,7 +1659,6 @@ pub mod pallet {
16591659
pub global_max_commission: Option<Perbill>,
16601660
}
16611661

1662-
#[cfg(feature = "std")]
16631662
impl<T: Config> Default for GenesisConfig<T> {
16641663
fn default() -> Self {
16651664
Self {

frame/scored-pool/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -249,18 +249,12 @@ pub mod pallet {
249249
pub(crate) type MemberCount<T, I = ()> = StorageValue<_, u32, ValueQuery>;
250250

251251
#[pallet::genesis_config]
252+
#[derive(frame_support::DefaultNoBound)]
252253
pub struct GenesisConfig<T: Config<I>, I: 'static = ()> {
253254
pub pool: PoolT<T, I>,
254255
pub member_count: u32,
255256
}
256257

257-
#[cfg(feature = "std")]
258-
impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I> {
259-
fn default() -> Self {
260-
Self { pool: Default::default(), member_count: Default::default() }
261-
}
262-
}
263-
264258
#[pallet::genesis_build]
265259
impl<T: Config<I>, I: 'static> GenesisBuild<T, I> for GenesisConfig<T, I> {
266260
fn build(&self) {

frame/session/src/lib.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -414,17 +414,11 @@ pub mod pallet {
414414
}
415415

416416
#[pallet::genesis_config]
417+
#[derive(frame_support::DefaultNoBound)]
417418
pub struct GenesisConfig<T: Config> {
418419
pub keys: Vec<(T::AccountId, T::ValidatorId, T::Keys)>,
419420
}
420421

421-
#[cfg(feature = "std")]
422-
impl<T: Config> Default for GenesisConfig<T> {
423-
fn default() -> Self {
424-
Self { keys: Default::default() }
425-
}
426-
}
427-
428422
#[pallet::genesis_build]
429423
impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
430424
fn build(&self) {

frame/society/src/lib.rs

+1-11
Original file line numberDiff line numberDiff line change
@@ -643,23 +643,13 @@ pub mod pallet {
643643
}
644644

645645
#[pallet::genesis_config]
646+
#[derive(frame_support::DefaultNoBound)]
646647
pub struct GenesisConfig<T: Config<I>, I: 'static = ()> {
647648
pub pot: BalanceOf<T, I>,
648649
pub members: Vec<T::AccountId>,
649650
pub max_members: u32,
650651
}
651652

652-
#[cfg(feature = "std")]
653-
impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I> {
654-
fn default() -> Self {
655-
Self {
656-
pot: Default::default(),
657-
members: Default::default(),
658-
max_members: Default::default(),
659-
}
660-
}
661-
}
662-
663653
#[pallet::genesis_build]
664654
impl<T: Config<I>, I: 'static> GenesisBuild<T, I> for GenesisConfig<T, I> {
665655
fn build(&self) {

frame/staking/src/pallet/mod.rs

+1-19
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,7 @@ pub mod pallet {
579579
pub(crate) type ChillThreshold<T: Config> = StorageValue<_, Percent, OptionQuery>;
580580

581581
#[pallet::genesis_config]
582+
#[derive(frame_support::DefaultNoBound)]
582583
pub struct GenesisConfig<T: Config> {
583584
pub validator_count: u32,
584585
pub minimum_validator_count: u32,
@@ -594,25 +595,6 @@ pub mod pallet {
594595
pub max_nominator_count: Option<u32>,
595596
}
596597

597-
#[cfg(feature = "std")]
598-
impl<T: Config> Default for GenesisConfig<T> {
599-
fn default() -> Self {
600-
GenesisConfig {
601-
validator_count: Default::default(),
602-
minimum_validator_count: Default::default(),
603-
invulnerables: Default::default(),
604-
force_era: Default::default(),
605-
slash_reward_fraction: Default::default(),
606-
canceled_payout: Default::default(),
607-
stakers: Default::default(),
608-
min_nominator_bond: Default::default(),
609-
min_validator_bond: Default::default(),
610-
max_validator_count: None,
611-
max_nominator_count: None,
612-
}
613-
}
614-
}
615-
616598
#[pallet::genesis_build]
617599
impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
618600
fn build(&self) {

0 commit comments

Comments
 (0)