diff --git a/pallets/authority-members/src/lib.rs b/pallets/authority-members/src/lib.rs index 6858083e14ce180092307546059eb318b0fd36d3..16ff0eb48ff810cdfbc21323fa06d2247f8e8eba 100644 --- a/pallets/authority-members/src/lib.rs +++ b/pallets/authority-members/src/lib.rs @@ -116,7 +116,6 @@ pub mod pallet { .collect::<Vec<T::MemberId>>(); members_ids.sort(); - AuthoritiesCounter::<T>::put(members_ids.len() as u32); OnlineAuthorities::<T>::put(members_ids.clone()); } } @@ -129,11 +128,6 @@ pub mod pallet { pub type AccountIdOf<T: Config> = StorageMap<_, Twox64Concat, T::MemberId, T::AccountId, OptionQuery>; - /// count the number of authorities - #[pallet::storage] - #[pallet::getter(fn authorities_counter)] - pub type AuthoritiesCounter<T: Config> = StorageValue<_, u32, ValueQuery>; - /// list incoming authorities #[pallet::storage] #[pallet::getter(fn incoming)] @@ -270,7 +264,7 @@ pub mod pallet { if Self::is_online(member_id) && !is_outgoing { return Err(Error::<T>::AlreadyOnline.into()); } - if AuthoritiesCounter::<T>::get() >= T::MaxAuthorities::get() { + if Self::authorities_counter() >= T::MaxAuthorities::get() { return Err(Error::<T>::TooManyAuthorities.into()); } @@ -377,6 +371,12 @@ pub mod pallet { Ok(().into()) } + + pub fn authorities_counter() -> u32 { + let count = OnlineAuthorities::<T>::get().len() + IncomingAuthorities::<T>::get().len() + - OutgoingAuthorities::<T>::get().len(); + count as u32 + } } // INTERNAL FUNCTIONS // @@ -420,7 +420,6 @@ pub mod pallet { } }); if not_already_inserted { - AuthoritiesCounter::<T>::mutate(|counter| *counter += 1); Self::deposit_event(Event::MemberGoOnline { member: member_id }); } not_already_inserted @@ -436,11 +435,6 @@ pub mod pallet { } }); if not_already_inserted { - AuthoritiesCounter::<T>::mutate(|counter| { - if *counter > 0 { - *counter -= 1 - } - }); Self::deposit_event(Event::MemberGoOffline { member: member_id }); } not_already_inserted @@ -469,7 +463,6 @@ pub mod pallet { } /// perform removal from incoming authorities fn remove_in(member_id: T::MemberId) { - AuthoritiesCounter::<T>::mutate(|counter| counter.saturating_sub(1)); IncomingAuthorities::<T>::mutate(|members_ids| { if let Ok(index) = members_ids.binary_search(&member_id) { members_ids.remove(index); @@ -478,7 +471,6 @@ pub mod pallet { } /// perform removal from online authorities fn remove_online(member_id: T::MemberId) { - AuthoritiesCounter::<T>::mutate(|counter| counter.saturating_add(1)); OnlineAuthorities::<T>::mutate(|members_ids| { if let Ok(index) = members_ids.binary_search(&member_id) { members_ids.remove(index); diff --git a/resources/metadata.scale b/resources/metadata.scale index 919f543f21a57970a0b67040b2ff16e6d54034ec..6f5b7249e7b9c59c5bc79fbd697f8dac01b34ef1 100644 Binary files a/resources/metadata.scale and b/resources/metadata.scale differ