INNER CODE UNIT · Rust

try_remove_candidate

AstarNetwork/Astar · pallets/collator-selection/src/lib.rs:710

        fn try_remove_candidate(who: &T::AccountId) -> Result<usize, DispatchError> {
            let current_count =
                <Candidates<T>>::try_mutate(|candidates| -> Result<usize, DispatchError> {
                    let index = candidates
                        .iter()
                        .position(|candidate| candidate.who == *who)
                        .ok_or(Error::<T>::NotCandidate)?;

                    let candidate = candidates.remove(index);
                    // start un-bonding period, 1 session
                    let session_index = T::ValidatorSet::session_index().saturating_add(1);
                    <NonCandidates<T>>::insert(who, (session_index, candidate.deposit));
                    Ok(candidates.len())
                })?;
            Self::deposit_event(Event::CandidateRemoved(who.clone()));
            Ok(current_count)
        }

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…