INNER CODE UNIT · Rust
withdraw_bond
AstarNetwork/Astar · pallets/collator-selection/src/lib.rs:454
pub fn withdraw_bond(origin: OriginFor<T>) -> DispatchResult {
let who = ensure_signed(origin)?;
<NonCandidates<T>>::try_mutate_exists(&who, |maybe| -> DispatchResult {
if let Some((index, deposit)) = maybe.take() {
ensure!(
T::ValidatorSet::session_index() >= index,
Error::<T>::BondStillLocked
);
T::Currency::unreserve(&who, deposit);
<LastAuthoredBlock<T>>::remove(&who);
Ok(())
} else {
Err(Error::<T>::NoCandidacyBond.into())
}
})?;
Ok(())