extend networks pallet with avg_block_speed
Signed-off-by: Uncle Stretch <uncle.stretch@ghostchain.io>
This commit is contained in:
parent
954ae66294
commit
c3ef933c20
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "ghost-networks"
|
name = "ghost-networks"
|
||||||
version = "0.1.16"
|
version = "0.1.18"
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
|
|||||||
@ -43,6 +43,7 @@ fn prepare_network<T: Config>(
|
|||||||
gatekeeper,
|
gatekeeper,
|
||||||
topic_name,
|
topic_name,
|
||||||
network_type: NetworkType::Evm,
|
network_type: NetworkType::Evm,
|
||||||
|
avg_block_speed: 12,
|
||||||
finality_delay: 69,
|
finality_delay: 69,
|
||||||
rate_limit_delay: 69,
|
rate_limit_delay: 69,
|
||||||
block_distance: 69,
|
block_distance: 69,
|
||||||
@ -239,6 +240,20 @@ benchmarks! {
|
|||||||
assert_ne!(GhostNetworks::<T>::networks(chain_id.clone()), prev_network);
|
assert_ne!(GhostNetworks::<T>::networks(chain_id.clone()), prev_network);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_avg_block_speed {
|
||||||
|
let avg_block_speed = 420;
|
||||||
|
let (chain_id, network) = prepare_network::<T>(1, 1, 1);
|
||||||
|
let authority = T::UpdateOrigin::try_successful_origin()
|
||||||
|
.map_err(|_| BenchmarkError::Weightless)?;
|
||||||
|
let prev_network = create_network::<T>(chain_id.clone(), network.clone())?;
|
||||||
|
}: _<T::RuntimeOrigin>(authority, chain_id.clone(), avg_block_speed)
|
||||||
|
verify {
|
||||||
|
assert_last_event::<T>(Event::NetworkAvgBlockSpeedUpdated {
|
||||||
|
chain_id: chain_id.clone(), avg_block_speed,
|
||||||
|
}.into());
|
||||||
|
assert_ne!(GhostNetworks::<T>::networks(chain_id.clone()), prev_network);
|
||||||
|
}
|
||||||
|
|
||||||
remove_network {
|
remove_network {
|
||||||
let (chain_id, network) = prepare_network::<T>(1, 1, 1);
|
let (chain_id, network) = prepare_network::<T>(1, 1, 1);
|
||||||
let authority = T::RemoveOrigin::try_successful_origin()
|
let authority = T::RemoveOrigin::try_successful_origin()
|
||||||
|
|||||||
@ -38,7 +38,7 @@ mod tests;
|
|||||||
pub type BalanceOf<T> =
|
pub type BalanceOf<T> =
|
||||||
<<T as Config>::Currency as Inspect<<T as frame_system::Config>::AccountId>>::Balance;
|
<<T as Config>::Currency as Inspect<<T as frame_system::Config>::AccountId>>::Balance;
|
||||||
|
|
||||||
#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)]
|
#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)]
|
||||||
pub enum NetworkType {
|
pub enum NetworkType {
|
||||||
Evm = 0,
|
Evm = 0,
|
||||||
Utxo = 1,
|
Utxo = 1,
|
||||||
@ -61,6 +61,7 @@ pub struct NetworkData {
|
|||||||
pub finality_delay: u64,
|
pub finality_delay: u64,
|
||||||
pub rate_limit_delay: u64,
|
pub rate_limit_delay: u64,
|
||||||
pub block_distance: u64,
|
pub block_distance: u64,
|
||||||
|
pub avg_block_speed: u64,
|
||||||
pub incoming_fee: u32,
|
pub incoming_fee: u32,
|
||||||
pub outgoing_fee: u32,
|
pub outgoing_fee: u32,
|
||||||
}
|
}
|
||||||
@ -220,6 +221,10 @@ pub mod module {
|
|||||||
chain_id: T::NetworkId,
|
chain_id: T::NetworkId,
|
||||||
outgoing_fee: u32,
|
outgoing_fee: u32,
|
||||||
},
|
},
|
||||||
|
NetworkAvgBlockSpeedUpdated {
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
avg_block_speed: u64,
|
||||||
|
},
|
||||||
NetworkRemoved {
|
NetworkRemoved {
|
||||||
chain_id: T::NetworkId,
|
chain_id: T::NetworkId,
|
||||||
},
|
},
|
||||||
@ -433,6 +438,17 @@ pub mod module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::call_index(11)]
|
#[pallet::call_index(11)]
|
||||||
|
#[pallet::weight(T::WeightInfo::update_avg_block_speed())]
|
||||||
|
pub fn update_avg_block_speed(
|
||||||
|
origin: OriginFor<T>,
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
avg_block_speed: u64,
|
||||||
|
) -> DispatchResult {
|
||||||
|
T::UpdateOrigin::ensure_origin_or_root(origin)?;
|
||||||
|
Self::do_update_avg_block_speed(chain_id, avg_block_speed)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[pallet::call_index(12)]
|
||||||
#[pallet::weight(T::WeightInfo::remove_network())]
|
#[pallet::weight(T::WeightInfo::remove_network())]
|
||||||
pub fn remove_network(origin: OriginFor<T>, chain_id: T::NetworkId) -> DispatchResult {
|
pub fn remove_network(origin: OriginFor<T>, chain_id: T::NetworkId) -> DispatchResult {
|
||||||
T::RemoveOrigin::ensure_origin_or_root(origin)?;
|
T::RemoveOrigin::ensure_origin_or_root(origin)?;
|
||||||
@ -589,7 +605,7 @@ impl<T: Config> Pallet<T> {
|
|||||||
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
||||||
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
||||||
let net = maybe_network.as_mut().unwrap();
|
let net = maybe_network.as_mut().unwrap();
|
||||||
net.network_type = network_type.clone();
|
net.network_type = network_type;
|
||||||
*maybe_network = Some(net.clone());
|
*maybe_network = Some(net.clone());
|
||||||
Ok(())
|
Ok(())
|
||||||
})?;
|
})?;
|
||||||
@ -653,7 +669,7 @@ impl<T: Config> Pallet<T> {
|
|||||||
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
||||||
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
||||||
let net = maybe_network.as_mut().unwrap();
|
let net = maybe_network.as_mut().unwrap();
|
||||||
net.incoming_fee = incoming_fee.clone();
|
net.incoming_fee = incoming_fee;
|
||||||
*maybe_network = Some(net.clone());
|
*maybe_network = Some(net.clone());
|
||||||
Ok(())
|
Ok(())
|
||||||
})?;
|
})?;
|
||||||
@ -671,7 +687,7 @@ impl<T: Config> Pallet<T> {
|
|||||||
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
||||||
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
||||||
let net = maybe_network.as_mut().unwrap();
|
let net = maybe_network.as_mut().unwrap();
|
||||||
net.outgoing_fee = outgoing_fee.clone();
|
net.outgoing_fee = outgoing_fee;
|
||||||
*maybe_network = Some(net.clone());
|
*maybe_network = Some(net.clone());
|
||||||
Ok(())
|
Ok(())
|
||||||
})?;
|
})?;
|
||||||
@ -681,6 +697,25 @@ impl<T: Config> Pallet<T> {
|
|||||||
});
|
});
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn do_update_avg_block_speed(
|
||||||
|
chain_id: T::NetworkId,
|
||||||
|
avg_block_speed: u64,
|
||||||
|
) -> DispatchResult {
|
||||||
|
Networks::<T>::try_mutate(&chain_id, |maybe_network| -> DispatchResult {
|
||||||
|
ensure!(maybe_network.is_some(), Error::<T>::NetworkDoesNotExist);
|
||||||
|
let net = maybe_network.as_mut().unwrap();
|
||||||
|
net.avg_block_speed = avg_block_speed;
|
||||||
|
*maybe_network = Some(net.clone());
|
||||||
|
Ok(())
|
||||||
|
})?;
|
||||||
|
Self::deposit_event(Event::<T>::NetworkAvgBlockSpeedUpdated {
|
||||||
|
chain_id,
|
||||||
|
avg_block_speed,
|
||||||
|
});
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: Config> NetworkDataBasicHandler for Pallet<T> {
|
impl<T: Config> NetworkDataBasicHandler for Pallet<T> {
|
||||||
|
|||||||
@ -98,7 +98,7 @@ impl ghost_networks::Config for Test {
|
|||||||
type RegisterOrigin = EnsureSignedBy<RegistererAccount, AccountId>;
|
type RegisterOrigin = EnsureSignedBy<RegistererAccount, AccountId>;
|
||||||
type UpdateOrigin = EnsureSignedBy<UpdaterAccount, AccountId>;
|
type UpdateOrigin = EnsureSignedBy<UpdaterAccount, AccountId>;
|
||||||
type RemoveOrigin = EnsureSignedBy<RemoverAccount, AccountId>;
|
type RemoveOrigin = EnsureSignedBy<RemoverAccount, AccountId>;
|
||||||
type WeightInfo = crate::weights::SubstrateWeight<Test>;
|
type WeightInfo = ();
|
||||||
}
|
}
|
||||||
|
|
||||||
type Block = frame_system::mocking::MockBlock<Test>;
|
type Block = frame_system::mocking::MockBlock<Test>;
|
||||||
|
|||||||
@ -19,6 +19,7 @@ fn prepare_network_data() -> (u32, NetworkData) {
|
|||||||
finality_delay: 69,
|
finality_delay: 69,
|
||||||
rate_limit_delay: 69,
|
rate_limit_delay: 69,
|
||||||
block_distance: 69,
|
block_distance: 69,
|
||||||
|
avg_block_speed: 12_000,
|
||||||
network_type: NetworkType::Evm,
|
network_type: NetworkType::Evm,
|
||||||
gatekeeper: b"0x1234567891234567891234567891234567891234".to_vec(),
|
gatekeeper: b"0x1234567891234567891234567891234567891234".to_vec(),
|
||||||
topic_name: b"0x12345678912345678912345678912345678912345678912345678912345678"
|
topic_name: b"0x12345678912345678912345678912345678912345678912345678912345678"
|
||||||
|
|||||||
@ -60,6 +60,7 @@ pub trait WeightInfo {
|
|||||||
fn update_network_topic_name() -> Weight;
|
fn update_network_topic_name() -> Weight;
|
||||||
fn update_incoming_network_fee() -> Weight;
|
fn update_incoming_network_fee() -> Weight;
|
||||||
fn update_outgoing_network_fee() -> Weight;
|
fn update_outgoing_network_fee() -> Weight;
|
||||||
|
fn update_avg_block_speed() -> Weight;
|
||||||
fn remove_network() -> Weight;
|
fn remove_network() -> Weight;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,6 +210,18 @@ impl WeightInfo for () {
|
|||||||
}
|
}
|
||||||
/// Storage: `GhostNetworks::Networks` (r:1 w:1)
|
/// Storage: `GhostNetworks::Networks` (r:1 w:1)
|
||||||
/// Proof: `GhostNetworks::Networks` (`max_values`: None, `max_size`: None, mode: `Measured`)
|
/// Proof: `GhostNetworks::Networks` (`max_values`: None, `max_size`: None, mode: `Measured`)
|
||||||
|
fn update_avg_block_speed() -> Weight {
|
||||||
|
// Proof Size summary in bytes:
|
||||||
|
// Measured: `302`
|
||||||
|
// Estimated: `3767`
|
||||||
|
// Minimum execution time: 49_579_000 picoseconds.
|
||||||
|
Weight::from_parts(51_126_000, 0)
|
||||||
|
.saturating_add(Weight::from_parts(0, 3767))
|
||||||
|
.saturating_add(RocksDbWeight::get().reads(1))
|
||||||
|
.saturating_add(RocksDbWeight::get().writes(1))
|
||||||
|
}
|
||||||
|
/// Storage: `GhostNetworks::Networks` (r:1 w:1)
|
||||||
|
/// Proof: `GhostNetworks::Networks` (`max_values`: None, `max_size`: None, mode: `Measured`)
|
||||||
fn remove_network() -> Weight {
|
fn remove_network() -> Weight {
|
||||||
// Proof Size summary in bytes:
|
// Proof Size summary in bytes:
|
||||||
// Measured: `302`
|
// Measured: `302`
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user