Restore a runtime which compiles

Adds BABE, GRANDPA, to the runtime definition and a few stubs for not yet
implemented interfaces.
This commit is contained in:
Luke Parker
2025-09-21 13:16:43 -04:00
parent d373d2a4c9
commit e63acf3f67
23 changed files with 517 additions and 1136 deletions

View File

@@ -21,10 +21,10 @@ workspace = true
[dependencies]
scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] }
sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "16336c737dbe833e9d138a256af99698aba637c7", default-features = false }
sp-core = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "ef18bfc7029d4a3d7c27e1d0b84da5091628a7d9", default-features = false }
frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "16336c737dbe833e9d138a256af99698aba637c7", default-features = false }
frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "16336c737dbe833e9d138a256af99698aba637c7", default-features = false }
frame-system = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "ef18bfc7029d4a3d7c27e1d0b84da5091628a7d9", default-features = false }
frame-support = { git = "https://github.com/serai-dex/patch-polkadot-sdk", rev = "ef18bfc7029d4a3d7c27e1d0b84da5091628a7d9", default-features = false }
serai-abi = { path = "../abi", default-features = false, features = ["substrate"] }

View File

@@ -36,13 +36,13 @@ pub mod pallet {
}
#[pallet::genesis_config]
#[derive(Debug, Encode, Decode)]
#[derive(Clone, Debug)]
pub struct GenesisConfig<T: Config> {
_config: PhantomData<T>,
}
impl<T: Config> Default for GenesisConfig<T> {
fn default() -> Self {
GenesisConfig { _config: PhantomData }
Self { _config: PhantomData }
}
}
#[pallet::genesis_build]
@@ -221,20 +221,16 @@ pub mod pallet {
fn revoke_favor_internal(
validator: T::AccountId,
signal: Signal,
for_network: NetworkId,
with_network: NetworkId,
) -> DispatchResult {
if !Favors::<T>::contains_key((signal, for_network), validator) {
if !Favors::<T>::contains_key((signal, with_network), validator) {
Err::<(), _>(Error::<T>::RevokingNonExistentFavor)?;
}
Favors::<T>::remove((signal, for_network), validator);
Core::<T>::emit_event(Event::FavorRevoked {
signal,
by: validator.into(),
with_network: for_network,
});
Favors::<T>::remove((signal, with_network), validator);
Core::<T>::emit_event(Event::FavorRevoked { signal, by: validator.into(), with_network });
// Update the tally for this network
Self::tally_for_network(signal, for_network);
Self::tally_for_network(signal, with_network);
Ok(())
}
@@ -342,7 +338,7 @@ pub mod pallet {
/// Favor a signal.
#[pallet::call_index(2)]
#[pallet::weight((0, DispatchClass::Normal))] // TODO
pub fn favor(origin: OriginFor<T>, signal: Signal, for_network: NetworkId) -> DispatchResult {
pub fn favor(origin: OriginFor<T>, signal: Signal, with_network: NetworkId) -> DispatchResult {
let validator = ensure_signed(origin)?;
// Perform the relevant checks for this class of signal
@@ -373,21 +369,17 @@ pub mod pallet {
Signal::Halt { .. } => {}
}
if Favors::<T>::contains_key((signal, for_network), validator) {
if Favors::<T>::contains_key((signal, with_network), validator) {
Err::<(), _>(Error::<T>::AlreadyInFavor)?;
}
// Set the validator as in favor
Favors::<T>::set((signal, for_network), validator, Some(()));
Favors::<T>::set((signal, with_network), validator, Some(()));
Core::<T>::emit_event(Event::SignalFavored {
signal,
by: validator.into(),
with_network: for_network,
});
Core::<T>::emit_event(Event::SignalFavored { signal, by: validator.into(), with_network });
// Check if the network is in favor
let network_in_favor = Self::tally_for_network(signal, for_network);
let network_in_favor = Self::tally_for_network(signal, with_network);
// If this network is in favor, check if enough networks are
if network_in_favor && Self::tally_for_all_networks(signal) {
@@ -416,7 +408,7 @@ pub mod pallet {
pub fn revoke_favor(
origin: OriginFor<T>,
signal: Signal,
for_network: NetworkId,
with_network: NetworkId,
) -> DispatchResult {
match signal {
Signal::Retire { .. } => {
@@ -428,7 +420,7 @@ pub mod pallet {
}
let validator = ensure_signed(origin)?;
Self::revoke_favor_internal(validator, signal, for_network)
Self::revoke_favor_internal(validator, signal, with_network)
}
/// Emit an event standing against the signal.
@@ -442,7 +434,7 @@ pub mod pallet {
pub fn stand_against(
origin: OriginFor<T>,
signal: Signal,
for_network: NetworkId,
with_network: NetworkId,
) -> DispatchResult {
match signal {
Signal::Retire { .. } => {
@@ -455,8 +447,8 @@ pub mod pallet {
let validator = ensure_signed(origin)?;
// If currently in favor, revoke the favor
if Favors::<T>::contains_key((signal, for_network), validator) {
Self::revoke_favor_internal(validator, signal, for_network)?;
if Favors::<T>::contains_key((signal, with_network), validator) {
Self::revoke_favor_internal(validator, signal, with_network)?;
} else {
// Check this Signal exists (which would've been implied by `Favors` for it existing)
match signal {
@@ -472,7 +464,7 @@ pub mod pallet {
Core::<T>::emit_event(Event::AgainstSignal {
signal,
account: validator.into(),
with_network: for_network,
with_network,
});
Ok(())