mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 04:09:23 +00:00
Most of coordinator Tributary retiry
Adds Event::SetRetired to validator-sets. Emit TributaryRetired. Replaces is_active_set, which made multiple network requests, with is_retired_tributary, a DB read. Performs most of the removals necessary upon TributaryRetired. Still needs to clean up the actual Tributary/Tendermint tasks.
This commit is contained in:
@@ -33,6 +33,13 @@ impl<'a> SeraiValidatorSets<'a> {
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn set_retired_events(&self) -> Result<Vec<ValidatorSetsEvent>, SeraiError> {
|
||||
self
|
||||
.0
|
||||
.events::<ValidatorSets, _>(|event| matches!(event, ValidatorSetsEvent::SetRetired { .. }))
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn session(&self, network: NetworkId) -> Result<Option<Session>, SeraiError> {
|
||||
self.0.storage(PALLET, "CurrentSession", Some(vec![scale_value(network)])).await
|
||||
}
|
||||
|
||||
@@ -174,7 +174,10 @@ pub mod pallet {
|
||||
// key is publishing `Batch`s. This should only happen once the current key has verified all
|
||||
// `Batch`s published by the prior key, meaning they are accepting the hand-over.
|
||||
if prior.is_some() && (!valid_by_prior) {
|
||||
ValidatorSets::<T>::retire_session(network, Session(current_session.0 - 1));
|
||||
ValidatorSets::<T>::retire_set(ValidatorSet {
|
||||
network,
|
||||
session: Session(current_session.0 - 1),
|
||||
});
|
||||
}
|
||||
|
||||
// check that this validator set isn't publishing a batch more than once per block
|
||||
|
||||
@@ -13,7 +13,10 @@ pub mod pallet {
|
||||
|
||||
use serai_primitives::{NetworkId, Amount, PublicKey};
|
||||
|
||||
use validator_sets_pallet::{primitives::Session, Config as VsConfig, Pallet as VsPallet};
|
||||
use validator_sets_pallet::{
|
||||
primitives::{Session, ValidatorSet},
|
||||
Config as VsConfig, Pallet as VsPallet,
|
||||
};
|
||||
use pallet_session::{Config as SessionConfig, SessionManager};
|
||||
|
||||
#[pallet::error]
|
||||
@@ -183,7 +186,12 @@ pub mod pallet {
|
||||
Some(VsPallet::<T>::select_validators(NetworkId::Serai))
|
||||
}
|
||||
|
||||
fn end_session(_end_index: u32) {}
|
||||
fn end_session(end_index: u32) {
|
||||
VsPallet::<T>::retire_set(ValidatorSet {
|
||||
network: NetworkId::Serai,
|
||||
session: Session(end_index),
|
||||
})
|
||||
}
|
||||
|
||||
fn start_session(_start_index: u32) {}
|
||||
}
|
||||
|
||||
@@ -235,6 +235,7 @@ pub mod pallet {
|
||||
pub enum Event<T: Config> {
|
||||
NewSet { set: ValidatorSet },
|
||||
KeyGen { set: ValidatorSet, key_pair: KeyPair },
|
||||
SetRetired { set: ValidatorSet },
|
||||
}
|
||||
|
||||
impl<T: Config> Pallet<T> {
|
||||
@@ -592,10 +593,10 @@ pub mod pallet {
|
||||
Self::participants(network).into()
|
||||
}
|
||||
|
||||
pub fn retire_session(network: NetworkId, session: Session) {
|
||||
let set = ValidatorSet { network, session };
|
||||
pub fn retire_set(set: ValidatorSet) {
|
||||
MuSigKeys::<T>::remove(set);
|
||||
Keys::<T>::remove(set);
|
||||
Pallet::<T>::deposit_event(Event::SetRetired { set });
|
||||
}
|
||||
|
||||
/// Take the amount deallocatable.
|
||||
|
||||
Reference in New Issue
Block a user